*,*: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-wrap{display:flex;align-items:stretch;background:var(--surface)}.news-item-wrap .news-item{flex:1;min-width:0}.report-btn{flex-shrink:0;width:36px;background:transparent;border:none;border-left:1px solid var(--border);color:var(--text-muted);font-size:.8rem;cursor:pointer;transition:background .15s,color .15s;display:flex;align-items:center;justify-content:center}.report-btn:hover{background:var(--surface-elevated);color:var(--accent)}.news-tag.corrected{background:#00e67626;color:#00e676;font-size:.55rem;padding:1px 5px;border-radius:3px;font-weight:700}.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}.streams-intro{padding:16px var(--gutter);max-width:var(--max-width);margin:0 auto;font-size:.8rem;color:var(--text-secondary);line-height:1.6}.streams-intro strong{color:var(--accent)}.streams-hint{font-size:.7rem;color:var(--text-muted);margin-top:4px}.streams-live-banner{display:flex;align-items:center;gap:8px;padding:10px var(--gutter);max-width:var(--max-width);margin:0 auto 12px;font-size:.75rem;font-weight:700;color:#00e676;background:#00e67614;border-radius:var(--radius)}.live-dot-stream{width:8px;height:8px;background:#00e676;border-radius:50%;display:inline-block;animation:pulse-stream 1.5s ease-in-out infinite}@keyframes pulse-stream{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}.streams-list{padding:0 var(--gutter);max-width:var(--max-width);margin:0 auto;display:flex;flex-direction:column;gap:10px;padding-bottom:24px}.streams-date-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);margin-top:8px}.stream-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:6px;transition:border-color .15s}.stream-card:hover{border-color:#444}.stream-card.stream-live{border-color:#00e676;box-shadow:0 0 12px #00e6761a}.stream-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.stream-festival{font-size:.9rem;font-weight:700}.stream-live-badge{display:inline-flex;align-items:center;gap:4px;background:#00e676;color:#000;font-size:.6rem;font-weight:800;padding:2px 8px;border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.5px}.stream-name{font-size:.78rem;color:var(--text-secondary)}.stream-time{font-family:SF Mono,Menlo,monospace;font-size:.75rem;color:var(--accent)}.stream-location{font-size:.7rem;color:var(--text-muted)}.stream-desc{font-size:.72rem;color:var(--text-secondary);line-height:1.4}.stream-actions{display:flex;gap:8px;margin-top:4px}.btn-watch{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border-radius:var(--radius-pill);font-size:.72rem;font-weight:700;background:var(--accent);color:#fff;text-decoration:none;transition:opacity .15s}.btn-watch:hover{opacity:.85}.stream-set-details{border-top:1px solid var(--border);margin-top:6px;padding-top:2px}.stream-set-toggle{font-size:.75rem;color:var(--accent);cursor:pointer;padding:6px 0;-webkit-user-select:none;user-select:none;list-style:none;font-weight:700}.stream-set-toggle::-webkit-details-marker{display:none}.stream-set-toggle:before{content:"▸ ";font-size:.6rem}.stream-set-details[open] .stream-set-toggle:before{content:"▾ "}.stream-sets{display:flex;flex-direction:column;gap:8px;padding:6px 0}.stream-stage-name{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:2px;padding-bottom:2px;border-bottom:1px solid var(--border)}.stream-set-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:.75rem}.stream-set-row.stream-set-live{background:#00e67614;border-radius:4px;padding:3px 6px}.stream-set-time{font-family:SF Mono,Menlo,monospace;font-size:.68rem;color:var(--accent);min-width:38px}.stream-set-artist{color:var(--text)}.stream-set-now{font-size:.55rem;font-weight:800;color:#00e676;background:#00e67626;padding:1px 5px;border-radius:3px}.stream-set-cal{margin-left:auto;text-decoration:none;font-size:.8rem;opacity:.3;transition:opacity .15s;flex-shrink:0}.stream-set-cal:hover{opacity:.9}
