.modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:var(--bg-secondary);border-radius:12px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;position:relative;padding:2rem}.modal-close{position:absolute;top:1rem;right:1rem;background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer;padding:.25rem .5rem;line-height:1;transition:color .15s}.modal-close:hover{color:var(--text)}.modal-title{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem;font-size:1.25rem}.modal-icon{color:var(--accent)}.modal-steps{display:flex;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.step{display:flex;align-items:center;gap:.5rem;opacity:.4;transition:opacity .15s}.step.active{opacity:1}.step-number{width:24px;height:24px;border-radius:50%;background:var(--bg-hover);display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600}.step.active .step-number{background:var(--accent);color:var(--bg)}.step-label{font-size:.875rem;font-weight:500}.step-content{display:flex;flex-direction:column;gap:1rem}.step-description{color:var(--text-muted);font-size:.875rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.875rem;color:var(--text-muted)}.form-group input,.form-group select,.form-group textarea{padding:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.875rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent)}.form-group textarea{resize:vertical;min-height:120px;font-family:monospace}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.prompt-box{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:1rem;position:relative}.prompt-box pre{font-size:.75rem;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto;margin:0;padding-right:4rem}.copy-btn{position:absolute;top:.75rem;right:.75rem;padding:.5rem 1rem;background:var(--accent);border:none;border-radius:4px;color:var(--bg);font-size:.75rem;font-weight:600;cursor:pointer;transition:opacity .15s}.copy-btn:hover{opacity:.9}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem}.btn{padding:.75rem 1.5rem;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s;border:none}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover:not(:disabled){opacity:.9}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-secondary:hover{background:var(--bg-hover)}.error-message{color:var(--error);font-size:.875rem;padding:.75rem;background:#ef44441a;border-radius:6px}.sidebar{width:280px;background:var(--bg-secondary);display:flex;flex-direction:column;border-right:1px solid var(--border)}.sidebar-header{padding:1.5rem;display:flex;align-items:center;gap:.5rem;border-bottom:1px solid var(--border)}.logo{font-size:1.5rem;font-weight:700;letter-spacing:2px;color:var(--accent);margin:0}.logo-icon{color:var(--accent);font-size:1.25rem}.sidebar-content{flex:1;overflow-y:auto;padding:1rem}.sidebar-title{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:1rem}.empty-message{color:var(--text-muted);font-size:.875rem;text-align:center;padding:2rem 1rem}.playlist-list{display:flex;flex-direction:column;gap:.25rem}.playlist-item{display:flex;align-items:center;padding:.75rem;border-radius:6px;cursor:pointer;transition:background .15s;position:relative}.playlist-item:hover{background:var(--bg-hover)}.playlist-item.active{background:var(--bg-active);border-left:3px solid var(--accent)}.playlist-name{flex:1;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-count{font-size:.75rem;color:var(--text-muted);margin-right:.5rem}.delete-btn{opacity:0;background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;padding:0 .25rem;transition:opacity .15s,color .15s}.playlist-item:hover .delete-btn{opacity:1}.delete-btn:hover{color:var(--error)}.add-playlist-btn{margin:1rem;padding:.875rem;background:transparent;border:1px dashed var(--border);border-radius:8px;color:var(--text-muted);font-size:.875rem;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5rem;transition:all .15s}.add-playlist-btn:hover{border-color:var(--accent);color:var(--accent);background:#1db9541a}.add-playlist-btn span{font-size:1.25rem}.search-container{position:relative;width:100%}.search-input-wrapper{display:flex;align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:0 1rem;transition:border-color .15s}.search-input-wrapper:focus-within{border-color:var(--accent)}.search-icon{font-size:1rem;margin-right:.75rem}.search-input-wrapper input{flex:1;background:transparent;border:none;padding:1rem 0;font-size:.9375rem;color:var(--text)}.search-input-wrapper input:focus{outline:none}.search-input-wrapper input::placeholder{color:var(--text-muted)}.search-input-wrapper input:disabled{opacity:.5;cursor:not-allowed}.search-results{position:absolute;bottom:100%;left:0;right:0;background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-bottom:.5rem;max-height:300px;overflow-y:auto;list-style:none;padding:.5rem;z-index:100;box-shadow:0 -4px 20px #0000004d}.search-result{display:flex;flex-direction:column;padding:.75rem;border-radius:6px;cursor:pointer;transition:background .1s}.search-result:hover,.search-result.selected{background:var(--bg-hover)}.result-title{font-weight:500;font-size:.9375rem}.result-artist{color:var(--text-muted);font-size:.8125rem;margin-top:.125rem}.settings-modal{max-width:480px}.settings-section{margin-bottom:2rem}.settings-section h3{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:1rem}.setting-item{display:flex;justify-content:space-between;align-items:center;padding:1rem 0;border-bottom:1px solid var(--border)}.setting-item:last-child{border-bottom:none}.setting-info label{display:block;font-weight:500;margin-bottom:.25rem}.setting-info p{font-size:.8125rem;color:var(--text-muted);margin:0}.setting-control{display:flex;align-items:center;gap:1rem}.setting-control input[type=range]{width:120px;accent-color:var(--accent)}.setting-value{min-width:3rem;text-align:right;font-weight:500;font-size:.9375rem}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.stat-card{background:var(--bg);padding:1rem;border-radius:8px;text-align:center}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:var(--accent)}.stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.win-rate{text-align:center;color:var(--text-muted);font-size:.875rem}.game-area{flex:1;display:flex;flex-direction:column;min-height:0}.game-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border)}.header-left{display:flex;align-items:center;gap:1rem}.playlist-badge{background:var(--bg-secondary);padding:.5rem 1rem;border-radius:20px;font-size:.875rem;font-weight:500}.header-right{display:flex;align-items:center;gap:1rem}.streak-display{display:flex;align-items:center;gap:.5rem;background:var(--bg-secondary);padding:.5rem 1rem;border-radius:20px}.streak-icon{font-size:1rem}.streak-count{font-weight:600}.settings-btn{background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer;padding:.5rem;transition:color .15s}.settings-btn:hover{color:var(--text)}.game-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;gap:1.5rem}.empty-state,.loading-state{text-align:center;color:var(--text-muted)}.empty-state h2{color:var(--text);margin-bottom:.5rem}.empty-state .hint{font-size:.875rem;margin-top:1rem}.loading-state{display:flex;flex-direction:column;align-items:center;gap:1rem}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.welcome-card{background:var(--bg-secondary);border-radius:12px;padding:2rem;max-width:400px;text-align:center;position:relative}.close-welcome{position:absolute;top:.75rem;right:.75rem;background:none;border:none;color:var(--text-muted);font-size:1.25rem;cursor:pointer}.welcome-card h2{margin-bottom:.5rem;color:var(--accent)}.welcome-card p{color:var(--text-muted);font-size:.9375rem}.how-to-play{display:flex;justify-content:center;gap:1.5rem;margin:1.5rem 0;padding:1rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.instruction{display:flex;flex-direction:column;align-items:center;gap:.5rem;font-size:.8125rem;color:var(--text-muted)}.instruction-icon{font-size:1.25rem}.attempts-info{font-size:.8125rem;margin-bottom:1.5rem!important}.start-btn{width:100%}.progress-bar{display:flex;gap:.5rem;width:100%;max-width:400px}.progress-segment{flex:1;height:6px;background:var(--bg-secondary);border-radius:3px;transition:background .2s}.progress-segment.filled{background:var(--text-muted)}.progress-segment.correct{background:var(--accent)}.progress-segment.skipped{background:var(--text-muted)}.status-display{font-size:1.125rem;font-weight:500;color:var(--text-muted)}.result-card{display:flex;align-items:center;gap:1rem;background:var(--bg-secondary);padding:1rem;border-radius:12px;max-width:400px;width:100%}.album-art{width:80px;height:80px;border-radius:8px;object-fit:cover}.song-info h3{font-size:1.125rem;margin-bottom:.25rem}.song-info p{color:var(--text-muted);font-size:.875rem;margin:0}.album-name{font-size:.75rem!important;margin-top:.25rem!important}.audio-progress{width:100%;max-width:400px}.progress-track{height:4px;background:var(--bg-secondary);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);transition:width .1s linear}.time-display{display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-muted);margin-top:.5rem}.game-controls{padding:1.5rem;border-top:1px solid var(--border);background:var(--bg-secondary)}.control-buttons{display:flex;align-items:center;gap:1rem;margin-top:1rem}.play-btn{width:56px;height:56px;border-radius:50%;background:var(--text);border:none;color:var(--bg);font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,opacity .15s}.play-btn:hover:not(:disabled){transform:scale(1.05)}.play-btn:disabled{opacity:.5;cursor:not-allowed}.btn-icon{display:flex;align-items:center;justify-content:center}.action-buttons{display:flex;gap:.75rem;flex:1}.skip-btn,.giveup-btn{flex:1;padding:.875rem 1.5rem;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s}.skip-btn{background:var(--bg-hover);border:none;color:var(--text)}.skip-btn:hover{background:var(--bg-active)}.giveup-btn{background:transparent;border:1px solid var(--error);color:var(--error)}.giveup-btn:hover{background:#ef44441a}:root{--bg: #121212;--bg-secondary: #181818;--bg-hover: #282828;--bg-active: #333333;--text: #ffffff;--text-muted: #a0a0a0;--accent: #1db954;--accent-hover: #1ed760;--border: #282828;--error: #ef4444}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Space Grotesk,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{display:flex;height:100%;overflow:hidden}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--bg-active)}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button{font-family:inherit}@media(max-width:768px){.app{flex-direction:column}.sidebar{width:100%;max-height:40vh;border-right:none;border-bottom:1px solid var(--border)}}
