:root{--bg-primary: #121212;--bg-secondary: #1e1e1e;--bg-card: #282828;--bg-hover: #333333;--text-primary: #ffffff;--text-secondary: #b3b3b3;--text-muted: #727272;--accent: #bd1ed7;--accent-hover: #d042e8;--accent-dim: rgba(189, 30, 215, .1);--danger: #e74c3c;--warning: #f39c12;--border: #333333;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 12px rgba(0, 0, 0, .4);--max-width: 430px;--nav-height: 64px}*{margin:0;padding:0;box-sizing:border-box}html,body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;background:var(--bg-primary);color:var(--text-primary);height:100%;overflow:hidden;-webkit-font-smoothing:antialiased}#root{height:100%;display:flex;justify-content:center}.app-shell{width:100%;max-width:var(--max-width);height:100%;display:flex;flex-direction:column;position:relative;background:var(--bg-primary);overflow:hidden}.page-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px;padding-bottom:calc(var(--nav-height) + 16px);-webkit-overflow-scrolling:touch}.bottom-nav{position:absolute;bottom:0;left:0;right:0;height:var(--nav-height);background:var(--bg-secondary);border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-around;padding:0 8px;z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 12px;border-radius:var(--radius-sm);text-decoration:none;color:var(--text-muted);font-size:10px;font-weight:500;transition:color .2s}.nav-item.active{color:var(--accent)}.nav-item svg{width:24px;height:24px}.card{background:var(--bg-card);border-radius:var(--radius);padding:16px;margin-bottom:12px}.album-card{display:flex;gap:12px;align-items:center;padding:12px;background:var(--bg-card);border-radius:var(--radius);margin-bottom:8px;cursor:pointer;transition:background .2s}.album-card:hover{background:var(--bg-hover)}.album-art{width:56px;height:56px;border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-hover)}.album-art-large{width:100%;aspect-ratio:1;border-radius:var(--radius);object-fit:cover;background:var(--bg-hover)}.album-info{flex:1;min-width:0}.album-title{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-artist{font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.album-rank{font-size:12px;color:var(--text-muted);font-weight:700;min-width:28px}.album-score{font-size:14px;font-weight:700;color:var(--accent)}.album-current{border:2px solid var(--accent);background:#1db95414}.album-current .album-rank{color:var(--accent)}.album-played{opacity:.65}.album-played .album-art{border:2px solid var(--accent)}.album-played-badge{font-size:16px;font-weight:700;color:var(--accent);min-width:24px;text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:500px;font-size:14px;font-weight:700;border:none;cursor:pointer;transition:all .2s;text-decoration:none}.btn-primary{background:var(--accent);color:#000}.btn-primary:hover{background:var(--accent-hover);transform:scale(1.02)}.btn-secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--text-primary)}.btn-spotify{background:var(--accent);color:#000;width:100%;padding:14px;font-size:16px}.btn-danger{background:var(--danger);color:#fff}.btn-small{padding:8px 16px;font-size:12px}.btn-block{width:100%}input,textarea,select{width:100%;padding:12px 16px;background:var(--bg-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;outline:none;transition:border-color .2s}input:focus,textarea:focus,select:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:80px}label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}.score-slider{-webkit-appearance:none;width:100%;height:6px;border-radius:3px;background:var(--bg-hover);outline:none;border:none;padding:0}.score-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--accent);cursor:pointer}.track-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);max-height:200px;overflow-y:auto;z-index:100;list-style:none;padding:4px 0;margin:4px 0 0;box-shadow:0 4px 16px #0000004d}.track-dropdown li{padding:10px 12px;cursor:pointer;font-size:14px;display:flex;gap:8px;align-items:center}.track-dropdown li:hover{background:var(--bg-hover)}.track-dropdown .track-num{color:var(--text-muted);font-size:12px;min-width:20px}.tracklist{list-style:none;padding:0;margin:0}.tracklist-item{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--border);font-size:14px}.tracklist-item:last-child{border-bottom:none}.tracklist-num{color:var(--text-muted);font-size:12px;min-width:20px;text-align:right}.tracklist-name{flex:1;color:var(--text)}.tracklist-duration{color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums}.page-header{margin-bottom:20px}.page-header h1{font-size:24px;font-weight:800}.page-header p{color:var(--text-secondary);font-size:14px;margin-top:4px}.search-bar{position:relative;margin-bottom:16px}.search-bar input{padding-left:40px}.search-bar svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-muted);width:18px;height:18px}.rating-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700}.rating-badge.high{background:#38d71e33;color:#38d71e}.rating-badge.mid{background:#f39c1233;color:var(--warning)}.rating-badge.low{background:#e74c3c33;color:var(--danger)}.avatar{width:32px;height:32px;border-radius:50%;object-fit:cover;background:var(--bg-hover)}.avatar-large{width:64px;height:64px}.comment-card{padding:12px;background:var(--bg-secondary);border-radius:var(--radius-sm);margin-bottom:8px}.comment-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.comment-user{font-size:13px;font-weight:600}.comment-text{font-size:13px;color:var(--text-secondary);line-height:1.4}.loading{display:flex;align-items:center;justify-content:center;padding:40px}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-state svg{width:48px;height:48px;margin-bottom:12px;opacity:.5}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px 20px;font-size:14px;z-index:9999;box-shadow:var(--shadow);display:flex;align-items:center;gap:8px;animation:slideDown .3s ease}@keyframes slideDown{0%{transform:translate(-50%) translateY(-20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.update-banner{position:fixed;bottom:calc(var(--nav-height) + 16px);left:50%;transform:translate(-50%);background:var(--accent);color:#000;border-radius:var(--radius);padding:12px 20px;font-size:14px;font-weight:600;z-index:9999;box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;gap:8px;animation:slideUp .3s ease;max-width:calc(var(--max-width) - 32px)}@keyframes slideUp{0%{transform:translate(-50%) translateY(20px);opacity:0}to{transform:translate(-50%) translateY(0);opacity:1}}.install-banner{position:fixed;bottom:calc(var(--nav-height) + 16px);left:50%;transform:translate(-50%);background:var(--bg-card);border:2px solid var(--accent);border-radius:var(--radius);padding:16px;z-index:9999;box-shadow:0 8px 32px #0006;animation:slideUp .3s ease;width:calc(100% - 32px);max-width:calc(var(--max-width) - 32px)}.install-banner-content{display:flex;align-items:center;gap:12px;margin-bottom:12px}.install-banner-icon{font-size:28px}.install-banner-text{display:flex;flex-direction:column;gap:2px}.install-banner-text strong{font-size:15px;color:var(--text-primary)}.install-banner-text span{font-size:13px;color:var(--text-secondary)}.install-banner-actions{display:flex;gap:8px}.install-btn-primary{flex:1;padding:10px;border:none;border-radius:var(--radius);background:var(--accent);color:#000;font-weight:700;font-size:14px;cursor:pointer}.install-btn-dismiss{padding:10px 16px;border:1px solid var(--border);border-radius:var(--radius);background:transparent;color:var(--text-secondary);font-size:14px;cursor:pointer}.leaderboard-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.leaderboard-rank{font-size:16px;font-weight:800;color:var(--text-muted);min-width:24px}.leaderboard-info{flex:1}.leaderboard-name{font-size:14px;font-weight:600}.leaderboard-stat{font-size:12px;color:var(--text-secondary)}.tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:1px solid var(--border)}.tab{padding:10px 16px;font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;transition:all .2s}.tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.login-page{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px;max-width:var(--max-width);margin:0 auto;text-align:center}.login-logo{font-size:48px;margin-bottom:16px}.today-hero{background:var(--bg-card);border-radius:16px;padding:20px;text-align:center;cursor:pointer;transition:transform .15s;border:1px solid var(--border)}.today-hero:active{transform:scale(.98)}.today-label{font-size:13px;font-weight:600;color:var(--accent);margin-bottom:12px;letter-spacing:.5px}.today-art{width:200px;height:200px;border-radius:12px;object-fit:cover;margin:0 auto 16px;display:block;box-shadow:0 8px 24px #0000004d}.today-info{margin-bottom:16px}.today-rank{font-size:12px;font-weight:700;color:var(--text-muted);background:var(--bg-hover);padding:2px 8px;border-radius:10px;display:inline-block;margin-bottom:8px}.today-title{font-size:20px;font-weight:700;color:var(--text-primary);margin:4px 0}.today-artist{font-size:14px;color:var(--text-secondary);margin:0}.today-actions{display:flex;gap:10px;margin-top:16px}.today-actions .btn{padding:12px 16px;font-size:14px;border-radius:10px}.stats-row{display:flex;gap:10px;margin-top:20px}.stat-card{flex:1;background:var(--bg-card);border-radius:12px;padding:14px 8px;text-align:center;border:1px solid var(--border)}.stat-value{display:block;font-size:22px;font-weight:700;color:var(--text-primary)}.stat-label{display:block;font-size:11px;color:var(--text-muted);margin-top:2px}.search-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg);z-index:1000;display:flex;flex-direction:column;max-width:430px;margin:0 auto}.search-overlay-header{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}.search-overlay-results{flex:1;overflow-y:auto;padding:8px 16px}.login-title{font-size:28px;font-weight:800;margin-bottom:8px}.login-subtitle{color:var(--text-secondary);font-size:14px;margin-bottom:32px;line-height:1.5}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-title{font-size:18px;font-weight:700}.section-link{font-size:12px;color:var(--accent);text-decoration:none;font-weight:600}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border)}.toggle-label{font-size:14px;font-weight:500}.toggle-desc{font-size:12px;color:var(--text-muted);margin-top:2px}.toggle{position:relative;width:44px;height:24px;background:var(--bg-hover);border-radius:12px;cursor:pointer;transition:background .2s}.toggle.active{background:var(--accent)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .2s}.toggle.active:after{transform:translate(20px)}.page-content::-webkit-scrollbar{width:4px}.page-content::-webkit-scrollbar-track{background:transparent}.page-content::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}@supports (padding-top: env(safe-area-inset-top)){.app-shell{padding-top:env(safe-area-inset-top)}.bottom-nav{padding-bottom:env(safe-area-inset-bottom);height:calc(var(--nav-height) + env(safe-area-inset-bottom))}}.form-group{margin-bottom:16px}.error-msg{background:#e74c3c26;color:var(--danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:16px}
