*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #121212;--surface: #181818;--surface-elevated: #1f1f1f;--surface-hover: #252525;--border: #282828;--accent: #e63946;--accent-dim: rgba(230, 57, 70, .15);--green: #1db954;--green-bright: #1ed760;--amber: #ffa42b;--blue: #539df5;--text: #ffffff;--text-secondary: #b3b3b3;--text-muted: #727272;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--radius-pill: 500px;--radius-full: 9999px;--max-width: 960px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .6)}html{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}body{min-height:100dvh}header{position:sticky;top:0;z-index:10;background:#121212e6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.header-inner{max-width:var(--max-width);margin:0 auto;padding:14px 16px 0;display:flex;align-items:baseline;gap:12px}header h1{font-size:1.3rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:#fff}header h1 span{color:var(--accent)}.header-tagline{font-size:.65rem;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}.top-nav{max-width:var(--max-width);margin:0 auto;display:flex;gap:8px;padding:10px 16px}.nav-item{display:flex;align-items:center;gap:6px;padding:8px 18px;border:none;border-radius:var(--radius-full);background:transparent;color:var(--text-secondary);font-size:.8rem;font-weight:700;cursor:pointer;transition:all .2s ease}.nav-item:hover{color:var(--text);background:var(--surface-elevated)}.nav-item.active{color:var(--bg);background:var(--text)}.nav-icon{font-size:1rem}.nav-label{font-weight:700;text-transform:uppercase;letter-spacing:.05em}#page-content{max-width:var(--max-width);margin:0 auto;padding:20px 16px 40px}.filters{display:flex;gap:8px;padding:0 0 20px;overflow-x:auto;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filter-btn{flex-shrink:0;padding:8px 16px;border:none;border-radius:var(--radius-full);background:var(--surface-elevated);color:var(--text-secondary);font-size:.78rem;font-weight:600;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.03em}.filter-btn:hover{background:var(--surface-hover);color:var(--text)}.filter-btn.active{background:var(--accent);color:#fff}.install-banner{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 44px 16px 20px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.install-text strong{font-size:.9rem}.install-text p{font-size:.8rem;color:var(--text-secondary);margin-top:4px}.install-text details{margin-top:10px}.install-text summary{font-size:.8rem;color:var(--green-bright);cursor:pointer;font-weight:600}.install-steps{margin-top:10px;display:flex;flex-direction:column;gap:12px}.install-platform strong{font-size:.78rem;display:block;margin-bottom:4px}.install-platform ol{padding-left:20px;font-size:.75rem;color:var(--text-secondary);line-height:1.6}.install-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--text-muted);font-size:1.2rem;cursor:pointer;line-height:1;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .15s}.install-close:hover{color:var(--text);background:var(--surface-elevated)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}@media (min-width: 600px){.grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}}.card{background:var(--surface);border-radius:var(--radius);overflow:hidden;transition:all .3s ease;cursor:default}.card:hover{background:var(--surface-hover);box-shadow:var(--shadow-md);transform:translateY(-4px)}.card:active{transform:scale(.97)}.card img{width:100%;aspect-ratio:1;object-fit:cover;display:block;border-radius:var(--radius) var(--radius) 0 0}.card-body{padding:12px 14px 10px}.card-body .album-name{font-size:.85rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.card-body .artist-name{font-size:.75rem;color:var(--text-secondary);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-body .release-date{font-size:.65rem;color:var(--text-muted);margin-top:4px}.card-body .genres-tag{display:inline-block;font-size:.6rem;font-weight:700;color:var(--accent);background:var(--accent-dim);padding:3px 8px;border-radius:var(--radius-full);margin-top:8px;text-transform:uppercase;letter-spacing:.03em}.card-links{display:flex;gap:8px;padding:0 14px 14px}.card-links a{flex:1;text-align:center;padding:7px 0;border-radius:var(--radius-pill);font-size:.7rem;font-weight:700;text-decoration:none;transition:all .2s ease;text-transform:uppercase;letter-spacing:.03em}.card-links a:hover{transform:scale(1.03);filter:brightness(1.1)}.card-links a:active{transform:scale(.97)}.link-spotify{background:var(--green);color:#000}.link-apple{background:#fc3c44;color:#fff}.status{text-align:center;padding:60px 20px;color:var(--text-muted)}.status .spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}@keyframes spin{to{transform:rotate(360deg)}}.status.error{color:#f3727f}.lives-filters{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.filter-row{display:flex;align-items:center;gap:10px}.filter-label{font-size:.65rem;font-weight:700;color:var(--text-muted);min-width:42px;text-transform:uppercase;letter-spacing:.05em}.filter-group{display:flex;gap:6px;flex-wrap:wrap}.filter-group .filter-btn{padding:6px 12px;font-size:.7rem}.lives-count{font-size:.65rem;color:var(--text-muted);margin-bottom:10px;text-transform:uppercase;letter-spacing:.05em}.news-list{display:flex;flex-direction:column;gap:2px;border-radius:var(--radius-lg);overflow:hidden}.news-item{display:flex;gap:14px;align-items:flex-start;background:var(--surface);padding:16px 18px;text-decoration:none;color:var(--text);transition:background .2s ease}.news-item:hover{background:var(--surface-hover)}.news-item:active{background:#2a2a2a}.news-date-block{flex-shrink:0;width:44px;text-align:center;padding-top:2px}.news-date-month{font-size:.55rem;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.06em}.news-date-day{font-size:1.2rem;font-weight:800;color:#fff;line-height:1.2}.news-date-weekday{font-size:.55rem;color:var(--text-muted)}.news-body{flex:1;min-width:0}.news-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px}.news-date{font-size:.65rem;color:var(--text-muted)}.news-tag{font-size:.55rem;font-weight:800;padding:2px 8px;border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.04em}.news-tag.overseas{background:var(--accent);color:#fff}.news-title{font-size:.88rem;font-weight:600;line-height:1.4}.news-venue{font-size:.72rem;color:var(--text-secondary);margin-top:4px}.news-item.pinned{border-left:3px solid var(--accent)}.event-banner{display:block;background:var(--surface);border-radius:var(--radius-lg);overflow:hidden;margin:24px auto;max-width:var(--max-width);text-decoration:none;color:var(--text);transition:all .3s ease;box-shadow:var(--shadow-sm)}.event-banner:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.event-banner:active{transform:scale(.99)}.event-banner img{width:100%;aspect-ratio:3 / 4;object-fit:cover;object-position:top;max-height:280px}.event-banner-info{padding:14px 18px 16px}.event-banner-tag{display:inline-block;font-size:.55rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;background:var(--accent);color:#fff;padding:3px 10px;border-radius:var(--radius-full);margin-bottom:8px}.event-banner-title{font-size:1.05rem;font-weight:800}.event-banner-sub{font-size:.82rem;font-weight:600;color:var(--text-secondary);margin-top:3px}.event-banner-details{font-size:.72rem;color:var(--text-muted);margin-top:8px}.user-bar{display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:var(--radius-lg);padding:14px 18px;margin:16px 0;box-shadow:var(--shadow-sm)}.user-bar img{width:40px;height:40px;border-radius:50%}.user-bar .name{flex:1;font-size:.88rem;font-weight:700}.user-bar button{font-size:.75rem;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:6px 12px;border-radius:var(--radius-full);transition:all .2s}.user-bar button:hover{color:var(--text);background:var(--surface-elevated)}.form-section{background:var(--surface);border-radius:var(--radius-lg);padding:24px;margin:16px 0;box-shadow:var(--shadow-sm)}.form-group{margin-bottom:24px}.form-group:last-child{margin-bottom:0}.form-group label{display:block;font-size:.88rem;font-weight:700;margin-bottom:10px}.form-group .hint{font-size:.72rem;color:var(--text-muted);margin-top:6px}.duration-input{display:flex;align-items:center;gap:14px}.duration-input input[type=range]{flex:1;accent-color:var(--accent);height:4px}.duration-input .value{font-size:1.5rem;font-weight:800;color:var(--accent);min-width:70px;text-align:right}.bpm-presets{display:flex;gap:8px;flex-wrap:wrap}.bpm-btn{padding:10px 18px;border:none;border-radius:var(--radius-full);background:var(--surface-elevated);color:var(--text-secondary);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .2s ease}.bpm-btn:hover{background:var(--surface-hover);color:var(--text)}.bpm-btn.active{background:var(--accent);color:#fff}.btn-generate{width:100%;padding:16px;border:none;border-radius:var(--radius-pill);background:var(--accent);color:#fff;font-size:.95rem;font-weight:700;cursor:pointer;margin-top:24px;text-transform:uppercase;letter-spacing:.05em;transition:all .2s ease;box-shadow:0 4px 12px #e639464d}.btn-generate:hover{transform:scale(1.02);filter:brightness(1.1);box-shadow:0 6px 20px #e6394666}.btn-generate:active{transform:scale(.98)}.btn-generate:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.btn-login{width:100%;padding:16px;border:none;border-radius:var(--radius-pill);background:var(--green);color:#000;font-size:.95rem;font-weight:700;cursor:pointer;margin-top:24px;text-transform:uppercase;letter-spacing:.05em;transition:all .2s ease;box-shadow:0 4px 12px #1db9544d}.btn-login:hover{background:var(--green-bright);transform:scale(1.02);box-shadow:0 6px 20px #1db95466}.btn-login:active{transform:scale(.98)}.login-screen{text-align:center;padding:80px 20px}.login-screen h2{font-size:1.4rem;font-weight:800;margin-bottom:10px}.login-screen p{color:var(--text-secondary);font-size:.88rem;margin-bottom:28px;line-height:1.6}.generating{text-align:center;padding:48px 20px}.generating .spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 20px}.generating p{color:var(--text-secondary);font-size:.88rem}.result{background:var(--surface);border-radius:var(--radius-lg);padding:24px;margin:16px 0;text-align:center;box-shadow:var(--shadow-sm)}.result h2{font-size:1.2rem;font-weight:800;margin-bottom:8px}.result .stats{color:var(--text-secondary);font-size:.82rem;margin-bottom:20px}.result .btn-open{display:inline-block;padding:14px 40px;background:var(--green);color:#000;font-weight:700;font-size:.9rem;border-radius:var(--radius-pill);text-decoration:none;text-transform:uppercase;letter-spacing:.05em;transition:all .2s ease;box-shadow:0 4px 12px #1db9544d}.result .btn-open:hover{background:var(--green-bright);transform:scale(1.03)}.result .btn-again{display:block;margin-top:14px;background:none;border:none;color:var(--text-muted);font-size:.82rem;cursor:pointer;text-decoration:underline;transition:color .15s}.result .btn-again:hover{color:var(--text)}.track-list{margin-top:20px;text-align:left}.track-item{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:var(--radius);transition:background .15s}.track-item:hover{background:var(--surface-elevated)}.track-item img{width:44px;height:44px;border-radius:var(--radius-sm)}.track-item .track-info{flex:1;overflow:hidden}.track-item .track-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.track-item .track-artist{font-size:.72rem;color:var(--text-secondary);margin-top:2px}.track-item .track-duration{font-size:.72rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.privacy{background:var(--surface);border-radius:var(--radius-lg);padding:24px;margin:16px 0;line-height:1.7}.privacy h2{font-size:1.3rem;font-weight:800;margin-bottom:4px}.privacy .updated{font-size:.72rem;color:var(--text-muted);margin-bottom:24px}.privacy section{margin-bottom:24px}.privacy h3{font-size:.92rem;font-weight:700;margin-bottom:8px}.privacy p,.privacy li{font-size:.82rem;color:var(--text-secondary)}.privacy ul,.privacy ol{padding-left:20px}.privacy li{margin-bottom:4px}.privacy a{color:var(--green-bright);text-decoration:none}.privacy a:hover{text-decoration:underline}.privacy code{background:var(--surface-elevated);padding:2px 6px;border-radius:var(--radius-sm);font-size:.75rem}.btn-back{width:100%;padding:14px;border:1px solid var(--border);border-radius:var(--radius-pill);background:transparent;color:var(--text);font-size:.88rem;font-weight:700;cursor:pointer;margin-top:12px;transition:all .2s ease}.btn-back:hover{background:var(--surface-elevated);border-color:var(--text-muted)}.privacy-link{display:block;text-align:center;margin-top:12px;font-size:.72rem;color:var(--text-muted);cursor:pointer;background:none;border:none;text-decoration:none;transition:color .15s}.privacy-link:hover{color:var(--text-secondary)}footer{text-align:center;padding:40px 16px 28px;color:var(--text-muted);font-size:.72rem;max-width:var(--max-width);margin:0 auto}footer a{color:var(--text-secondary);text-decoration:none;font-weight:600;transition:color .15s}footer a:hover{color:#fff}.footer-joke{margin-top:8px;font-size:.65rem;color:#444;font-style:italic}
