@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--bg-base:#121212;--bg-elevated:#1e1e1e;--bg-highlight:#282828;--bg-hover:#2a2a2a;--bg-card:#181818;--bg-sidebar:#000;--green:#1db954;--green-hover:#1ed760;--white:#fff;--text-primary:#fff;--text-secondary:#b3b3b3;--text-subdued:#6a6a6a;--border:#2a2a2a;--sidebar-width:240px;--player-height:90px;--topbar-height:64px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--font:"Inter", -apple-system, BlinkMacSystemFont, sans-serif;--transition:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{font-family:var(--font);background:var(--bg-base);color:var(--text-primary);height:100vh;overflow:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}img{max-width:100%;display:block}ul,ol{list-style:none}input,textarea{font-family:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#606060}.app-shell{grid-template-columns:var(--sidebar-width) 1fr;grid-template-rows:1fr var(--player-height);background:#000;gap:8px;height:100vh;padding:8px 8px 0;display:grid}.main-area{background:var(--bg-elevated);border-radius:var(--radius-lg);flex-direction:column;grid-area:1/2;display:flex;overflow:hidden}.page-content{flex:1;padding:24px 32px;overflow-y:auto}.sidebar{background:var(--bg-sidebar);border-radius:var(--radius-lg);flex-direction:column;grid-area:1/1;padding:8px;display:flex;overflow:hidden}.sidebar-logo{padding:16px 12px 8px}.sidebar-logo img{height:36px}.sidebar-logo span{letter-spacing:-.5px;color:var(--white);font-size:24px;font-weight:800}.sidebar-nav{flex-direction:column;gap:4px;padding:8px 0;display:flex}.sidebar-nav a{border-radius:var(--radius-md);color:var(--text-secondary);transition:color var(--transition), background var(--transition);align-items:center;gap:12px;padding:10px 12px;font-size:14px;font-weight:600;display:flex}.sidebar-nav a:hover{color:var(--white);background:var(--bg-hover)}.sidebar-nav a.active{color:var(--white)}.sidebar-nav .icon{flex-shrink:0;width:24px;height:24px}.sidebar-divider{background:var(--border);height:1px;margin:8px 0}.sidebar-library{flex:1;padding:0 4px;overflow-y:auto}.sidebar-library-header{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em;justify-content:space-between;align-items:center;padding:8px;font-size:13px;font-weight:700;display:flex}.sidebar-playlist-item{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:color var(--transition);white-space:nowrap;text-overflow:ellipsis;padding:10px 8px;font-size:13px;overflow:hidden}.sidebar-playlist-item:hover{color:var(--white)}.sidebar-user{border-top:1px solid var(--border);align-items:center;gap:10px;margin-top:auto;padding:12px;display:flex}.sidebar-avatar{background:var(--green);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:13px;font-weight:700;display:flex}.sidebar-username{text-overflow:ellipsis;flex:1;font-size:13px;font-weight:600;overflow:hidden}.sidebar-logout{color:var(--text-secondary);cursor:pointer;font-size:12px}.sidebar-logout:hover{color:var(--white)}.topbar{height:var(--topbar-height);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:10;background:#1e1e1ee6;align-items:center;gap:16px;padding:0 32px;display:flex;position:sticky;top:0}.topbar-nav-btn{width:32px;height:32px;color:var(--white);transition:background var(--transition);background:#000000b3;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex}.topbar-nav-btn:hover{background:#ffffff1a}.topbar-search{flex:1;max-width:380px;position:relative}.topbar-search input{background:var(--bg-highlight);border-radius:var(--radius-full);width:100%;color:var(--white);transition:border-color var(--transition);border:2px solid #0000;outline:none;padding:8px 16px 8px 40px;font-size:14px}.topbar-search input:focus{border-color:var(--white)}.topbar-search input::placeholder{color:var(--text-secondary)}.topbar-search-icon{color:var(--text-secondary);position:absolute;top:50%;left:12px;transform:translateY(-50%)}.player{background:var(--bg-elevated);border-top:1px solid var(--border);height:var(--player-height);border-radius:var(--radius-lg);grid-area:2/1/auto/-1;grid-template-columns:1fr 2fr 1fr;align-items:center;margin:0 8px 8px;padding:0 16px;display:grid}.player-song-info{align-items:center;gap:12px;min-width:0;display:flex}.player-cover{border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-highlight);flex-shrink:0;width:56px;height:56px}.player-cover-placeholder{border-radius:var(--radius-sm);background:var(--bg-highlight);width:56px;height:56px;color:var(--text-subdued);flex-shrink:0;justify-content:center;align-items:center;font-size:22px;display:flex}.player-song-text{min-width:0}.player-song-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.player-song-artist{color:var(--text-secondary);font-size:12px}.player-like-btn{color:var(--text-secondary);margin-left:8px;font-size:18px}.player-like-btn.liked{color:var(--green)}.player-controls{flex-direction:column;align-items:center;gap:8px;display:flex}.player-buttons{align-items:center;gap:16px;display:flex}.player-btn{color:var(--text-secondary);transition:color var(--transition), transform var(--transition);font-size:16px}.player-btn:hover{color:var(--white)}.player-play-btn{background:var(--white);color:#000;width:36px;height:36px;transition:transform var(--transition), background var(--transition);border-radius:50%;justify-content:center;align-items:center;font-size:16px;display:flex}.player-play-btn:hover{background:var(--green-hover);transform:scale(1.06)}.player-progress{align-items:center;gap:8px;width:100%;max-width:500px;display:flex}.player-time{color:var(--text-secondary);flex-shrink:0;width:36px;font-size:11px}.player-time.right{text-align:right}.progress-bar{background:var(--border);cursor:pointer;border-radius:2px;flex:1;height:4px;position:relative}.progress-bar:hover .progress-fill{background:var(--green)}.progress-fill{background:var(--white);height:100%;transition:background var(--transition);pointer-events:none;border-radius:2px}.player-right{justify-content:flex-end;align-items:center;gap:12px;display:flex}.volume-control{align-items:center;gap:8px;display:flex}.volume-btn{color:var(--text-secondary);font-size:18px}.volume-slider{background:var(--border);cursor:pointer;border-radius:2px;width:80px;height:4px;position:relative}.volume-fill{background:var(--white);border-radius:2px;height:100%}input[type=range]{appearance:none;background:var(--border);cursor:pointer;border-radius:2px;outline:none;width:100%;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--white);opacity:0;width:12px;height:12px;transition:opacity var(--transition);border-radius:50%}input[type=range]:hover::-webkit-slider-thumb{opacity:1}.cards-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:24px;display:grid}.card{background:var(--bg-card);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition);padding:16px;position:relative}.card:hover{background:var(--bg-highlight)}.card-image-wrap{margin-bottom:12px;position:relative}.card-img{aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-highlight);width:100%}.card-img.round{border-radius:50%}.card-play-btn{background:var(--green);color:#000;opacity:0;width:40px;height:40px;transition:opacity var(--transition), transform var(--transition);border-radius:50%;justify-content:center;align-items:center;font-size:16px;display:flex;position:absolute;bottom:8px;right:8px;transform:translateY(8px);box-shadow:0 8px 24px #00000080}.card:hover .card-play-btn{opacity:1;transform:translateY(0)}.card-title{white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;font-size:14px;font-weight:700;overflow:hidden}.card-sub{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.song-list{flex-direction:column;display:flex}.song-list-header{border-bottom:1px solid var(--border);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;grid-template-columns:40px 1fr 1fr 80px 40px;gap:16px;padding:8px 16px;font-size:12px;font-weight:600;display:grid}.song-row{border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);grid-template-columns:40px 1fr 1fr 80px 40px;align-items:center;gap:16px;padding:8px 16px;display:grid}.song-row:hover{background:var(--bg-hover)}.song-row.playing{color:var(--green)}.song-num{color:var(--text-secondary);text-align:center;font-size:14px}.song-info{align-items:center;gap:12px;min-width:0;display:flex}.song-cover{object-fit:cover;background:var(--bg-highlight);border-radius:4px;flex-shrink:0;width:40px;height:40px}.song-title-text{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.song-artist-text,.song-album-text{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.song-duration{color:var(--text-secondary);text-align:right;font-size:13px}.like-btn{color:var(--text-secondary);opacity:0;transition:opacity var(--transition), color var(--transition);font-size:16px}.song-row:hover .like-btn{opacity:1}.like-btn.liked{color:var(--green);opacity:1}.auth-page{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:var(--bg-elevated);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:40px;box-shadow:0 32px 64px #00000080}.auth-logo{text-align:center;margin-bottom:32px}.auth-logo span{font-size:28px;font-weight:800}.auth-logo span em{color:var(--green);font-style:normal}.auth-title{text-align:center;margin-bottom:8px;font-size:22px;font-weight:700}.auth-sub{color:var(--text-secondary);text-align:center;margin-bottom:32px;font-size:14px}.form-group{margin-bottom:20px}.form-label{color:var(--text-primary);margin-bottom:8px;font-size:13px;font-weight:600;display:block}.form-input{background:var(--bg-highlight);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;color:var(--white);transition:border-color var(--transition);outline:none;padding:12px 16px;font-size:14px}.form-input:focus{border-color:var(--white)}.form-input::placeholder{color:var(--text-subdued)}.btn-primary{background:var(--green);color:#000;border-radius:var(--radius-full);width:100%;transition:background var(--transition), transform var(--transition);padding:14px;font-size:15px;font-weight:700}.btn-primary:hover{background:var(--green-hover);transform:scale(1.01)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.auth-switch{text-align:center;color:var(--text-secondary);margin-top:24px;font-size:14px}.auth-switch a{color:var(--white);font-weight:600}.auth-error{color:#ff6060;border-radius:var(--radius-md);background:#ff505026;border:1px solid #ff50504d;margin-bottom:16px;padding:12px;font-size:13px}.page-hero{background:linear-gradient(#0000,#00000080);align-items:flex-end;gap:24px;margin:-24px -32px 24px;padding:40px 32px 24px;display:flex}.page-hero-img{object-fit:cover;border-radius:var(--radius-md);width:220px;height:220px;box-shadow:0 24px 64px #00000080}.page-hero-info{min-width:0}.page-hero-type{text-transform:uppercase;letter-spacing:.1em;margin-bottom:8px;font-size:12px;font-weight:700}.page-hero-title{margin-bottom:12px;font-size:52px;font-weight:900;line-height:1.1}.page-hero-sub{color:var(--text-secondary);font-size:14px}.play-all-btn{background:var(--green);color:#000;border-radius:var(--radius-full);transition:background var(--transition), transform var(--transition);margin:8px 0 24px;padding:14px 32px;font-size:15px;font-weight:700}.play-all-btn:hover{background:var(--green-hover);transform:scale(1.02)}.section{margin-bottom:40px}.section-title{justify-content:space-between;align-items:center;margin-bottom:20px;font-size:22px;font-weight:700;display:flex}.section-see-all{color:var(--text-secondary);font-size:13px;font-weight:600}.section-see-all:hover{color:var(--white)}.greeting-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-bottom:40px;display:grid}.greeting-card{border-radius:var(--radius-sm);cursor:pointer;height:64px;transition:background var(--transition);background:#ffffff12;align-items:center;gap:16px;display:flex;overflow:hidden}.greeting-card:hover{background:#ffffff1f}.greeting-card img{object-fit:cover;flex-shrink:0;width:64px;height:64px}.greeting-card-placeholder{background:var(--green);flex-shrink:0;justify-content:center;align-items:center;width:64px;height:64px;font-size:24px;display:flex}.greeting-card span{font-size:14px;font-weight:700}.search-hero{margin-bottom:32px}.search-hero h1{margin-bottom:16px;font-size:28px;font-weight:800}.search-input-wrap{max-width:480px;position:relative}.search-input{background:var(--white);color:#000;border-radius:var(--radius-full);border:none;outline:none;width:100%;padding:14px 20px 14px 48px;font-size:15px;font-weight:500}.search-input::placeholder{color:#666}.search-icon-big{color:#333;font-size:20px;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.skeleton{background:linear-gradient(90deg, var(--bg-highlight) 25%, var(--bg-hover) 50%, var(--bg-highlight) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty-state{text-align:center;color:var(--text-secondary);padding:64px 24px}.empty-state-icon{margin-bottom:16px;font-size:48px}.empty-state h3{color:var(--white);margin-bottom:8px;font-size:22px}.spinner{border:3px solid var(--bg-highlight);border-top-color:var(--green);border-radius:50%;width:48px;height:48px;margin:64px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.text-green{color:var(--green)}.text-secondary{color:var(--text-secondary)}.mt-8{margin-top:8px}.mb-4{margin-bottom:4px}
