*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#fff;background:#121212;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#535353;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#737373}::selection{color:#fff;background:#1db9544d}.album-sidebar{background:#000;border-right:1px solid #282828;flex-direction:column;width:300px;min-width:300px;height:100%;display:flex}.sidebar-label{text-transform:uppercase;letter-spacing:1.5px;color:#b3b3b3;padding:8px 20px;font-size:11px;font-weight:600}.album-list{flex:1;padding:0 8px 100px;overflow-y:auto}.album-list::-webkit-scrollbar{width:8px}.album-list::-webkit-scrollbar-track{background:0 0}.album-list::-webkit-scrollbar-thumb{background:#535353;border-radius:4px}.album-list::-webkit-scrollbar-thumb:hover{background:#737373}.album-card{cursor:pointer;border-radius:8px;align-items:center;gap:14px;padding:8px 12px;transition:background-color .2s;display:flex}.album-card:hover{background-color:#1a1a1a}.album-card.active{background-color:#282828}.album-card.active .album-name{color:#1db954}.album-cover{object-fit:cover;border-radius:6px;flex-shrink:0;width:52px;height:52px;box-shadow:0 2px 8px #0000004d}.album-info{min-width:0}.album-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;transition:color .2s;overflow:hidden}.album-artist{color:#a7a7a7;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.album-card:hover .album-name{color:#fff}.album-card.active:hover .album-name{color:#1db954}.song-main{background:linear-gradient(#1a1a2e 0%,#121212 300px);flex:1;padding-bottom:100px;overflow-y:auto}.song-main.empty-state{justify-content:center;align-items:center;display:flex}.empty-content{text-align:center;color:#b3b3b3}.empty-icon{opacity:.3;margin-bottom:16px;font-size:72px}.empty-content h2{color:#fff;margin-bottom:8px;font-size:28px;font-weight:700}.empty-content p{color:#a7a7a7;font-size:15px}.album-hero{align-items:flex-end;gap:28px;padding:48px 32px 28px;display:flex}.hero-cover{object-fit:cover;border-radius:8px;flex-shrink:0;width:220px;height:220px;box-shadow:0 8px 40px #00000080}.hero-details{flex-direction:column;gap:8px;min-width:0;display:flex}.hero-label{text-transform:uppercase;letter-spacing:1px;color:#fff;font-size:12px;font-weight:600}.hero-title{color:#fff;letter-spacing:-1px;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:48px;font-weight:900;line-height:1.1;display:-webkit-box;overflow:hidden}.hero-meta{color:#b3b3b3;align-items:center;gap:6px;margin-top:4px;font-size:14px;display:flex}.hero-artist{color:#fff;font-weight:600}.hero-dot{color:#535353}.song-list-header{color:#a7a7a7;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #ffffff14;grid-template-columns:40px 1fr;align-items:center;height:36px;margin-bottom:4px;padding:0 32px;font-size:12px;font-weight:500;display:grid}.song-index-header{text-align:center}.song-list-body{padding:0 20px}.song-row{cursor:pointer;border-radius:6px;grid-template-columns:40px 1fr;align-items:center;padding:8px 12px;transition:background-color .15s;display:grid}.song-row:hover{background-color:#ffffff14}.song-row.current{background-color:#1db95414}.song-index{color:#a7a7a7;justify-content:center;align-items:center;font-size:14px;display:flex;position:relative}.song-index .index-number{transition:opacity .15s}.song-row:hover .index-number{opacity:0}.hover-play-icon{opacity:0;color:#fff;transition:opacity .15s;position:absolute}.song-row:hover .hover-play-icon{opacity:1}.playing-icon{color:#1db954}.song-title{min-width:0;overflow:hidden}.song-title-text{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:400;transition:color .15s;display:block;overflow:hidden}.song-title-text.active{color:#1db954}.song-artist-text{color:#a7a7a7;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:13px;display:block;overflow:hidden}.song-row:hover .song-title-text:not(.active){color:#fff}.song-main::-webkit-scrollbar{width:8px}.song-main::-webkit-scrollbar-track{background:0 0}.song-main::-webkit-scrollbar-thumb{background:#535353;border-radius:4px}.song-main::-webkit-scrollbar-thumb:hover{background:#737373}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;top:24px;left:50%;transform:translate(-50%)}.toast-item{color:#fff;pointer-events:auto;background:#e91429;border-radius:8px;align-items:center;gap:10px;padding:12px 20px;font-size:14px;font-weight:500;animation:.3s toast-in;display:flex;box-shadow:0 4px 24px #0006}.toast-icon{flex-shrink:0}@keyframes toast-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.player-bar{z-index:100;background:#181818;border-top:1px solid #282828;grid-template-columns:1fr 2fr 1fr;align-items:center;height:80px;padding:0 16px;display:grid;position:fixed;bottom:0;left:0;right:0}.player-left{align-items:center;gap:14px;min-width:0;display:flex}.player-cover{object-fit:cover;border-radius:6px;flex-shrink:0;width:56px;height:56px;box-shadow:0 2px 8px #0000004d}.player-song-info{flex-direction:column;min-width:0;display:flex}.player-song-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.player-song-title:hover{cursor:pointer;text-decoration:underline}.player-song-artist{color:#a7a7a7;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.player-song-artist:hover{color:#fff;cursor:pointer;text-decoration:underline}.player-no-song{color:#535353;align-items:center;gap:10px;font-size:14px;display:flex}.player-center{flex-direction:column;align-items:center;gap:8px;display:flex}.player-controls{align-items:center;gap:16px;display:flex}.player-btn{cursor:pointer;color:#b3b3b3;background:0 0;border:none;justify-content:center;align-items:center;padding:0;line-height:1;transition:all .15s;display:flex}.player-btn:hover{color:#fff;transform:scale(1.05)}.player-btn:disabled{color:#535353;cursor:not-allowed;transform:none}.player-btn.primary{color:#000;background:#fff;border-radius:50%;width:36px;height:36px}.player-btn.primary:hover{color:#000;background:#fff;transform:scale(1.08)}.player-btn.primary:disabled{color:#282828;background:#535353}.player-btn.primary.loading{color:#000;cursor:wait;background:#fff}.player-btn.primary.loading:hover{transform:none}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin-icon{animation:1s linear infinite spin}.player-btn.secondary{width:auto;height:auto}.player-progress-bar{align-items:center;gap:8px;width:100%;max-width:600px;display:flex}.progress-time{color:#a7a7a7;text-align:center;font-variant-numeric:tabular-nums;min-width:35px;font-size:11px}.progress-track{cursor:pointer;background:#535353;border-radius:2px;flex:1;height:4px;transition:height .1s;position:relative}.progress-track:hover{height:6px}.progress-fill{background:#fff;border-radius:2px;height:100%;transition:background-color .15s}.progress-track:hover .progress-fill{background:#1db954}.progress-thumb{opacity:0;pointer-events:none;background:#fff;border-radius:50%;width:12px;height:12px;transition:opacity .15s;position:absolute;top:50%;transform:translate(-50%,-50%)}.progress-track:hover .progress-thumb{opacity:1}.player-right{justify-content:flex-end;align-items:center;display:flex}.volume-control{color:#a7a7a7;align-items:center;gap:8px;display:flex}.volume-track{cursor:pointer;background:#535353;border-radius:2px;width:93px;height:4px;position:relative}.volume-track:hover{height:6px}.volume-fill{background:#fff;border-radius:2px;height:100%;transition:background-color .15s}.volume-track:hover .volume-fill{background:#1db954}.volume-thumb{opacity:0;background:#fff;border-radius:50%;width:12px;height:12px;transition:opacity .15s;position:absolute;top:50%;transform:translate(-50%,-50%)}.volume-track:hover .volume-thumb{opacity:1}.app-container{background:#121212;flex-direction:column;height:100vh;display:flex;overflow:hidden}.app-body{flex:1;display:flex;overflow:hidden}
