*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app{min-height:100vh;padding:20px}.container{margin:0 auto;max-width:900px}.header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border-radius:20px;margin-bottom:40px;padding:30px 20px;text-align:center}.header h1{font-size:2.5em;margin-bottom:10px;text-shadow:2px 2px 4px #0000004d}.header p{font-size:1.1em;opacity:.9}.card{background:#fffffff2;border-radius:15px;box-shadow:0 10px 30px #0003;color:#333;padding:25px}.card,.card h2{margin-bottom:20px}.card h2{color:#667eea}.btn{border:none;border-radius:25px;cursor:pointer;font-size:16px;font-weight:600;letter-spacing:1px;padding:12px 24px;text-transform:uppercase;transition:all .3s ease}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-primary:hover{box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.btn-success{background:#1db954;color:#fff}.btn-success:hover{background:#1ed760;transform:translateY(-2px)}.btn-secondary{background:#e0e0e0;color:#666}.btn-secondary:hover{background:#d0d0d0}input[type=password],input[type=text]{border:2px solid #e0e0e0;border-radius:10px;font-size:16px;padding:12px 16px;transition:border-color .3s ease;width:100%}input[type=password]:focus,input[type=text]:focus{border-color:#667eea;outline:none}.error{background:#f44336}.error,.success{border-radius:8px;color:#fff;margin-top:10px;padding:12px;text-align:center}.success{background:#4caf50}.login-container{align-items:center;display:flex;justify-content:center;min-height:100vh}.login-card{background:#fffffff2;border-radius:20px;box-shadow:0 20px 60px #0000004d;color:#333;max-width:450px;padding:50px 40px;text-align:center;width:100%}.login-card h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;background-clip:text;font-size:2.5em;margin-bottom:10px}.subtitle{color:#666;font-size:1.1em;margin-bottom:30px}.login-card form{display:flex;flex-direction:column;gap:15px}.login-card input{font-size:1.2em;font-weight:600;letter-spacing:2px;text-align:center}.info{border-top:1px solid #e0e0e0;color:#999;font-size:.9em;margin-top:30px;padding-top:20px}.spotify-auth-container{align-items:center;display:flex;justify-content:center;min-height:100vh}.spotify-auth-card{background:#fffffff2;border-radius:20px;box-shadow:0 20px 60px #0000004d;color:#333;max-width:500px;padding:50px 40px;text-align:center;width:100%}.spotify-icon{margin-bottom:20px}.spotify-auth-card h1{color:#333;font-size:2em;margin-bottom:10px}.spotify-auth-card .subtitle{color:#666;font-size:1em;line-height:1.5;margin-bottom:30px}.spotify-auth-card .btn{font-size:1.1em;padding:15px;width:100%}.spotify-auth-card .info{border-top:1px solid #e0e0e0;color:#999;font-size:.9em;margin-top:30px;padding-top:20px}.spotify-auth-card .info p{margin:8px 0}.search-form{display:flex;gap:10px;margin-bottom:20px}.search-form input{flex:1 1}.search-form button{white-space:nowrap}.search-results{margin-top:20px;max-height:400px;overflow-y:auto}.song-item{align-items:center;background:#f8f9fa;border-radius:10px;display:flex;gap:15px;margin-bottom:10px;padding:12px;transition:all .2s ease}.song-item:hover{background:#e9ecef;transform:translateX(5px)}.album-art{border-radius:8px;height:60px;object-fit:cover;width:60px}.song-info{flex:1 1;min-width:0}.song-name{color:#333;font-size:1em;font-weight:600;margin-bottom:4px}.song-artist,.song-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-artist{color:#666;font-size:.9em}.song-item .btn{font-size:.9em;padding:8px 16px}.empty-queue{color:#999;padding:40px 20px;text-align:center}.empty-queue p{margin:10px 0}.empty-queue .subtitle{font-size:.9em}.queue-list{max-height:500px;overflow-y:auto}.queue-item{align-items:center;background:#f8f9fa;border-radius:10px;display:flex;gap:15px;margin-bottom:10px;padding:15px;transition:all .2s ease}.queue-item:hover{background:#e9ecef}.queue-position{color:#667eea;font-size:1.2em;font-weight:700;min-width:30px;text-align:center}.queue-item .album-art{border-radius:8px;height:60px;object-fit:cover;width:60px}.queue-item .song-info{flex:1 1;min-width:0}.queue-item .song-name{color:#333;font-size:1em;font-weight:600;margin-bottom:4px}.queue-item .song-artist,.queue-item .song-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-item .song-artist{color:#666;font-size:.9em}.vote-section{align-items:center;display:flex;flex-direction:column;gap:5px}.vote-btn{background:none;border:none;cursor:pointer;font-size:1.8em;padding:5px;transition:transform .2s ease}.vote-btn:hover{transform:scale(1.2)}.vote-btn.voted{animation:pulse .3s ease}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}.vote-count{color:#667eea;font-size:1.1em;font-weight:600}.now-playing{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.now-playing h2{color:#fff}.not-playing{color:#fffc;padding:40px 20px;text-align:center}.not-playing .subtitle{font-size:.9em;margin-top:10px}.now-playing-content{align-items:center;display:flex;gap:25px}.now-playing-art{border-radius:12px;box-shadow:0 10px 30px #0000004d;height:150px;object-fit:cover;width:150px}.now-playing-info{flex:1 1}.now-playing-name{color:#fff;font-size:1.8em;font-weight:700;margin-bottom:8px}.now-playing-artist{color:#ffffffe6;font-size:1.2em;margin-bottom:20px}.progress-bar{background:#ffffff4d;border-radius:3px;height:6px;margin-bottom:20px;overflow:hidden;width:100%}.progress-fill{background:#fff;border-radius:3px;height:100%;transition:width .3s ease}.now-playing-info .btn{background:#fff;color:#667eea}.now-playing-info .btn:hover{background:#ffffffe6}@media (max-width:768px){.now-playing-content{flex-direction:column;text-align:center}.now-playing-art{height:200px;width:200px}}