:root{--bg: #0a0a0a;--surface: #141414;--card: #1a1a1a;--border: rgba(255, 255, 255, .08);--text: #f0f0f0;--text-secondary: rgba(255, 255, 255, .55);--text-muted: rgba(255, 255, 255, .3);--rose: #e8457c;--rose-dim: rgba(232, 69, 124, .15);--violet: #9c5bd2;--amber: #e8a034;--emerald: #3dba8a;--sky: #4ca4e8;--radius: 12px;--radius-full: 999px;font-family:DM Sans,system-ui,-apple-system,sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}.shell{display:flex;flex-direction:column;min-height:100vh}.bottomnav{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:10px 24px;background:#0a0a0aeb;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border-top:1px solid var(--border);z-index:100}.bottomnav-tabs{display:flex;gap:4px}.bottomnav-tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:8px 20px;border-radius:var(--radius-full);color:var(--text-muted);font-family:inherit;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.bottomnav-tab:hover{color:var(--text);background:#ffffff0f}.bottomnav-tab.active{color:var(--rose);background:var(--rose-dim);font-weight:600}.bottomnav-user{display:flex;align-items:center;gap:10px;font-size:.8rem;color:var(--text-secondary)}.bottomnav-logout{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--text-muted);font-family:inherit;font-size:.75rem;cursor:pointer;padding:4px 10px;border-radius:var(--radius-full)}.bottomnav-logout:hover{color:var(--rose)}.main-full{flex:1;padding:24px 24px 80px;width:100%}.page-header{margin-bottom:28px}.page-title{font-family:Playfair Display,serif;font-size:1.8rem;font-weight:700;margin-bottom:4px}.page-subtitle{color:var(--text-secondary);font-size:.88rem}button{font-family:inherit}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 22px;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:active:not(:disabled){transform:scale(.97)}.btn-primary{background:var(--rose);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(1.1)}.btn-ghost{background:#ffffff0f;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:#ffffff1a;color:var(--text)}.btn-sm{padding:6px 14px;font-size:.8rem}.input{width:100%;padding:10px 16px;border:1px solid var(--border);border-radius:var(--radius-full);background:#ffffff0a;color:var(--text);font-family:inherit;font-size:.88rem;outline:none}.input::placeholder{color:var(--text-muted)}.input:focus{border-color:#e8457c66}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.4)' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}select.input option{background:#1a1a1a;color:#fff}.card{background:var(--card);border-radius:var(--radius);padding:20px;border:1px solid var(--border)}.track-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius);transition:background .15s}.track-row:hover{background:#ffffff0a}.track-rank{width:24px;text-align:center;font-size:.82rem;font-weight:600;color:var(--text-muted)}.track-art{width:44px;height:44px;border-radius:6px;object-fit:cover;flex-shrink:0}.track-art-placeholder{width:44px;height:44px;border-radius:6px;background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--text-muted)}.track-info{flex:1;min-width:0}.track-name{font-size:.9rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.track-artist{font-size:.78rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.track-duration{font-size:.78rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.stats-columns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px}.stats-column{min-width:0}.stats-column-header{font-family:Playfair Display,serif;font-size:1.1rem;font-weight:700;color:var(--rose);margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--border)}.stats-column .track-art{width:36px;height:36px}.stats-column .track-row{padding:6px 8px}.stats-column .track-name{font-size:.82rem}.stats-column .track-artist{font-size:.72rem}.stats-column .track-rank{font-size:.75rem;width:20px}.loading{display:flex;justify-content:center;padding:48px;gap:6px}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}.loading-dot{width:6px;height:6px;border-radius:var(--radius-full);background:var(--text-secondary);animation:blink 1.4s infinite both}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}.empty{text-align:center;padding:64px 24px;color:var(--text-secondary)}.empty-icon{font-size:3rem;display:block;margin-bottom:12px;opacity:.3}.error-box{padding:12px 16px;border-radius:var(--radius);background:#e8457c1a;color:var(--rose);font-size:.85rem;margin-bottom:16px}.login-shell{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px}.login-logo{font-family:Playfair Display,serif;font-size:3rem;font-weight:700;color:var(--rose);margin-bottom:4px}.login-tagline{color:var(--text-secondary);font-size:.95rem;margin-bottom:32px}.login-card{background:var(--card);border:1px solid var(--border);border-radius:20px;padding:48px 40px;max-width:380px;display:flex;flex-direction:column;align-items:center;gap:16px}.login-icon{font-size:2.5rem;opacity:.6}.row{display:flex;align-items:center;gap:12px}.row-between{display:flex;align-items:center;justify-content:space-between}@media(max-width:900px){.stats-columns{grid-template-columns:1fr}.main-full{padding:16px 16px 80px}}
