*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}button{cursor:pointer;font-family:inherit}a{text-decoration:none;color:inherit}input{font-family:inherit}:root{--bg-base: #121212;--bg-elevated: #242424;--bg-elevated-hl: #2a2a2a;--bg-sidebar: #000;--bg-player: #181818;--text-base: #fff;--text-sub: #a7a7a7;--text-muted: #535353;--accent: #1ed760;--accent-hl: #1fdf64;--border: #282828;--sidebar-w: 232px;--player-h: 90px;--r-sm: 4px;--r-md: 8px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-base);color:var(--text-base);overflow:hidden;-webkit-font-smoothing:antialiased}.app-layout{display:grid;grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:1fr var(--player-h);height:100vh;overflow:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#535353;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#727272}.sidebar{grid-row:1;grid-column:1;background:var(--bg-sidebar);display:flex;flex-direction:column;gap:8px;padding:8px;overflow:hidden}.sidebar-top{background:var(--bg-elevated);border-radius:var(--r-md);padding:8px;flex-shrink:0}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:10px 8px 12px;font-size:16px;font-weight:700;cursor:pointer;border-radius:var(--r-sm)}.sidebar-logo:hover{background:#ffffff0d}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-nav-item{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:var(--r-sm);color:var(--text-sub);font-size:14px;font-weight:600;transition:color .1s,background .1s}.sidebar-nav-item:hover{color:var(--text-base);background:#ffffff0d}.sidebar-nav-item.active{color:var(--text-base)}.sidebar-library-panel{background:var(--bg-elevated);border-radius:var(--r-md);padding:8px;flex:1;overflow-y:auto;overflow-x:hidden}.sidebar-library-header{padding:8px 8px 12px}.library-label{display:flex;align-items:center;gap:10px;color:var(--text-sub);font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.sidebar-library-item{display:flex;align-items:center;gap:12px;padding:8px;border-radius:var(--r-sm);cursor:pointer;transition:background .1s}.sidebar-library-item:hover{background:#ffffff0d}.sidebar-library-art{width:44px;height:44px;border-radius:var(--r-sm);background:var(--bg-elevated-hl);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;color:var(--text-sub)}.sidebar-library-art-img{width:100%;height:100%;object-fit:cover}.liked-art{background:linear-gradient(135deg,#4a235a,#2980b9)}.sidebar-library-text{min-width:0}.sidebar-library-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-library-meta{font-size:12px;color:var(--text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main-content{grid-row:1;grid-column:2;overflow-y:auto;background:var(--bg-base);position:relative}.home-page{min-height:100%;padding-bottom:40px}.home-banner{padding:80px 24px 32px}.home-greeting{font-size:28px;font-weight:800;margin-bottom:20px}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.quick-item{display:flex;align-items:center;gap:0;background:#ffffff1a;border-radius:var(--r-sm);overflow:hidden;cursor:pointer;transition:background .1s;position:relative}.quick-item:hover{background:#fff3}.quick-item-art{width:56px;height:56px;object-fit:cover;flex-shrink:0}.quick-item-art-placeholder{width:56px;height:56px;background:#ffffff1a;display:flex;align-items:center;justify-content:center;flex-shrink:0}.quick-item-title{flex:1;font-size:13px;font-weight:700;padding:0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quick-item-play{position:absolute;right:12px;width:40px;height:40px;border-radius:50%;background:var(--accent);border:none;color:#000;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(4px);transition:opacity .2s,transform .2s;box-shadow:0 4px 16px #0006}.quick-item:hover .quick-item-play{opacity:1;transform:translateY(0)}.section{padding:24px 24px 0}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-title{font-size:22px;font-weight:700}.scroll-row{display:flex;gap:16px;overflow-x:auto;padding-bottom:16px;scrollbar-width:none}.scroll-row::-webkit-scrollbar{display:none}.track-card{flex-shrink:0;width:176px;background:var(--bg-elevated);border-radius:var(--r-md);padding:16px;cursor:pointer;transition:background .2s;position:relative}.track-card:hover,.track-card.active{background:var(--bg-elevated-hl)}.track-card-art-wrapper{position:relative;margin-bottom:16px}.track-card-img{width:100%;aspect-ratio:1;border-radius:var(--r-sm);object-fit:cover;display:block;background:var(--bg-elevated-hl)}.track-card-img.circular{border-radius:50%}.track-card-img-placeholder{width:100%;aspect-ratio:1;border-radius:var(--r-sm);background:var(--bg-elevated-hl);display:flex;align-items:center;justify-content:center}.track-card-img-placeholder.circular{border-radius:50%}.track-card-play-btn{position:absolute;bottom:8px;right:8px;width:48px;height:48px;border-radius:50%;background:var(--accent);border:none;color:#000;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);transition:opacity .2s,transform .2s;box-shadow:0 8px 24px #00000080}.track-card:hover .track-card-play-btn{opacity:1;transform:translateY(0)}.track-card-title{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.track-card-subtitle{font-size:13px;color:var(--text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-list{width:100%}.track-list-header{display:grid;grid-template-columns:40px 1fr 80px;padding:0 16px 8px;color:var(--text-sub);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--border);margin-bottom:4px}.track-row{display:grid;grid-template-columns:40px 1fr 100px;align-items:center;padding:6px 16px;border-radius:var(--r-sm);cursor:pointer;transition:background .1s}.track-row:hover{background:#ffffff12}.track-row:hover .row-num-text{display:none}.track-row:hover .row-play-icon{display:block!important}.track-row-num{display:flex;align-items:center;justify-content:center;color:var(--text-sub);font-size:14px;font-variant-numeric:tabular-nums;position:relative;height:16px}.row-play-icon{display:none;color:var(--text-base)}.track-row.playing .row-num-text{display:none}.track-row.playing .row-play-icon{display:block!important;color:var(--accent)}.track-row.playing .track-row-title{color:var(--accent)}.track-row-info{display:flex;align-items:center;gap:12px;min-width:0}.track-row-art{width:40px;height:40px;border-radius:var(--r-sm);object-fit:cover;flex-shrink:0;background:var(--bg-elevated-hl);display:flex;align-items:center;justify-content:center}.track-row-art-placeholder{width:40px;height:40px;border-radius:var(--r-sm);background:var(--bg-elevated-hl);display:flex;align-items:center;justify-content:center;flex-shrink:0}.track-row-text{min-width:0}.track-row-title{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-row-artist{font-size:12px;color:var(--text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.row-like-btn{background:none;border:none;color:var(--text-muted);display:flex;align-items:center;padding:4px;opacity:0;transition:color .1s,opacity .1s}.track-row:hover .row-like-btn{opacity:1}.row-like-btn.liked{color:var(--accent);opacity:1}.row-like-btn:hover{color:var(--text-base)}.track-row-duration{font-size:13px;color:var(--text-sub);font-variant-numeric:tabular-nums}.player-bar{grid-row:2;grid-column:1 / -1;background:var(--bg-player);border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;padding:0 16px;gap:8px;-webkit-user-select:none;user-select:none}.player-left{display:flex;align-items:center;gap:12px;min-width:0}.player-empty{width:56px;height:56px}.player-art{width:56px;height:56px;border-radius:var(--r-sm);object-fit:cover;flex-shrink:0}.player-art-placeholder{width:56px;height:56px;border-radius:var(--r-sm);background:var(--bg-elevated);display:flex;align-items:center;justify-content:center;flex-shrink:0}.player-meta{min-width:0;cursor:pointer}.player-meta:hover .player-track-title{text-decoration:underline}.player-track-title{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-track-artist{font-size:12px;color:var(--text-sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-icon-btn{background:none;border:none;color:var(--text-sub);display:flex;align-items:center;justify-content:center;padding:4px;border-radius:50%;flex-shrink:0;transition:color .1s,transform .1s}.player-icon-btn:hover{color:var(--text-base);transform:scale(1.04)}.player-icon-btn.active{color:var(--accent)}.player-icon-btn.active:hover{color:var(--accent-hl)}.like-btn.liked{color:var(--accent)}.player-center{display:flex;flex-direction:column;align-items:center;gap:6px}.player-buttons{display:flex;align-items:center;gap:4px}.player-play-btn{width:32px;height:32px;border-radius:50%;background:var(--text-base);border:none;color:#000;display:flex;align-items:center;justify-content:center;transition:transform .1s;flex-shrink:0}.player-play-btn:hover{transform:scale(1.06);background:#e0e0e0}.player-progress{display:flex;align-items:center;gap:8px;width:100%;max-width:560px}.player-time{font-size:11px;color:var(--text-sub);min-width:36px;font-variant-numeric:tabular-nums}.player-time.right{text-align:right}.player-right{display:flex;align-items:center;justify-content:flex-end;gap:8px}.vol-wrap{width:90px}.range-wrap{flex:1;display:flex;align-items:center;position:relative}.progress-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:linear-gradient(to right,var(--accent) var(--fill, 0%),#535353 var(--fill, 0%));outline:none;cursor:pointer}.progress-input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;opacity:0;transition:opacity .1s}.range-wrap:hover .progress-input::-webkit-slider-thumb{opacity:1}.progress-input::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fff;cursor:pointer;border:none;opacity:0}.range-wrap:hover .progress-input::-moz-range-thumb{opacity:1}.progress-input:hover{background:linear-gradient(to right,var(--accent-hl) var(--fill, 0%),#535353 var(--fill, 0%))}.search-page{padding:80px 24px 40px}.search-input-wrapper{position:relative;margin-bottom:32px}.search-input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:#000;pointer-events:none}.search-input{width:100%;max-width:360px;padding:13px 16px 13px 46px;border-radius:50px;background:#fff;border:none;font-size:15px;font-weight:500;color:#000;outline:none;caret-color:#000}.search-input::placeholder{color:#757575}.genre-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:16px}.genre-tile{aspect-ratio:16 / 9;border-radius:var(--r-md);padding:16px;font-size:16px;font-weight:700;cursor:pointer;overflow:hidden;transition:transform .15s;position:relative}.genre-tile:hover{transform:scale(1.02)}.search-results{display:flex;flex-direction:column;gap:32px}.search-top-result{background:var(--bg-elevated);border-radius:var(--r-md);padding:20px;cursor:pointer;transition:background .1s}.search-top-result:hover{background:var(--bg-elevated-hl)}.search-top-art{width:92px;height:92px;border-radius:var(--r-sm);object-fit:cover;margin-bottom:16px;box-shadow:0 8px 24px #00000080;display:block;background:var(--bg-elevated-hl)}.search-top-art-placeholder{width:92px;height:92px;border-radius:var(--r-sm);background:var(--bg-elevated-hl);display:flex;align-items:center;justify-content:center;margin-bottom:16px}.search-top-title{font-size:24px;font-weight:800;margin-bottom:8px}.search-top-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search-top-badge{background:#ffffff1a;border-radius:50px;padding:3px 12px;font-size:12px;font-weight:700;text-transform:capitalize}.artist-page{padding-bottom:40px}.artist-header{padding:20px 24px 24px;min-height:300px;display:flex;flex-direction:column;gap:16px;position:relative}.back-btn{align-self:flex-start;width:32px;height:32px;border-radius:50%;background:#00000080;border:none;color:#fff;display:flex;align-items:center;justify-content:center;transition:background .1s}.back-btn:hover{background:#000c}.artist-header-content{display:flex;align-items:flex-end;gap:24px;margin-top:auto}.artist-avatar{width:192px;height:192px;border-radius:50%;object-fit:cover;box-shadow:0 4px 60px #00000080;flex-shrink:0}.artist-avatar-placeholder{width:192px;height:192px;border-radius:50%;background:var(--bg-elevated);display:flex;align-items:center;justify-content:center;flex-shrink:0}.artist-verified{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-sub);margin-bottom:8px}.artist-name{font-size:clamp(28px,5vw,64px);font-weight:900;letter-spacing:-.04em;line-height:1;margin-bottom:12px}.artist-stats{font-size:14px;color:var(--text-sub)}.artist-actions{padding:24px;display:flex;align-items:center;gap:24px}.btn-play{width:56px;height:56px;border-radius:50%;background:var(--accent);border:none;color:#000;display:flex;align-items:center;justify-content:center;transition:transform .1s,background .1s}.btn-play:hover{transform:scale(1.06);background:var(--accent-hl)}.artist-bio{font-size:14px;color:var(--text-sub);line-height:1.5;max-width:480px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.liked-songs-cover{width:192px;height:192px;border-radius:var(--r-sm);background:linear-gradient(135deg,#4a235a,#2980b9);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 60px #00000080}.skeleton{background:linear-gradient(90deg,var(--bg-elevated) 25%,var(--bg-elevated-hl) 50%,var(--bg-elevated) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--r-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}
