*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}:root{--bg:#0e1015;--card:#181b23;--card-glass:#181b23b8;--border:#2a2f3c;--text:#e8eaf0;--muted:#9aa1b2;--accent:#3fe;--accent-dark:#0dbfb0;--error:#ff5d73;--warning:#ffc857;--success:#4ade80}body{background:var(--bg);color:var(--text);font-family:Segoe UI,system-ui,-apple-system,sans-serif;overflow-x:hidden}.collage{z-index:-1;position:fixed;inset:0;overflow:hidden}.collage-inner{flex-direction:column;justify-content:center;gap:clamp(.6rem,2vw,1.2rem);display:flex;position:absolute;inset:-35%;transform:rotate(-14deg)}.collage-row{gap:clamp(.6rem,2vw,1.2rem);width:max-content;animation:90s linear infinite collage-slide;display:flex}.collage-row.reverse{animation-duration:110s;animation-direction:reverse}.collage-row:nth-child(3){animation-duration:75s}.collage-track{gap:clamp(.6rem,2vw,1.2rem);display:flex}.collage-tile{object-fit:cover;opacity:.8;-webkit-user-select:none;user-select:none;border-radius:12px;width:clamp(72px,14vw,132px);height:clamp(72px,14vw,132px)}.collage-overlay{background:radial-gradient(at 50% 25%,#0e101566 0%,#0e1015bf 75%),linear-gradient(#0e101573,#0e1015d9);position:absolute;inset:0}@keyframes collage-slide{0%{transform:translate(0)}to{transform:translate(-50%)}}.topbar{z-index:10;-webkit-backdrop-filter:blur(14px);background:#0e1015b3;border-bottom:1px solid #2a2f3c99;position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:.8rem;max-width:760px;margin:0 auto;padding:.6rem 1rem;display:flex}.brand{align-items:center;gap:.7rem;min-width:0;display:flex}.logo{object-fit:cover;border-radius:12px;flex-shrink:0;width:44px;height:44px}.brand-text{flex-direction:column;min-width:0;display:flex}.brand-name{letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;font-size:1.1rem;font-weight:700;line-height:1.2;overflow:hidden}.brand-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;line-height:1.3;overflow:hidden}.app{max-width:760px;margin:0 auto;padding:1.5rem 1rem 4rem}.hero{text-align:center;padding:1.8rem 0 1.6rem}h1{letter-spacing:-.02em;margin:0 0 .6rem;font-size:clamp(1.9rem,6vw,2.8rem);line-height:1.15}.accent{color:var(--accent)}.subtitle{color:var(--muted);margin:0;font-size:clamp(.95rem,3vw,1.1rem)}.card{background:var(--card-glass);-webkit-backdrop-filter:blur(14px);border:1px solid #2a2f3ccc;border-radius:18px;margin-bottom:1.1rem;padding:clamp(1.1rem,4vw,1.6rem);box-shadow:0 12px 40px #00000059}.card.center{text-align:center}.card h2{margin-top:0;font-size:1.25rem}.row{align-items:center;display:flex}.space-between{justify-content:space-between}.wrap{flex-wrap:wrap;gap:.6rem}.gap{gap:.6rem}.muted{color:var(--muted);font-size:.93rem}.chips{flex-wrap:wrap;gap:.5rem;margin:.9rem 0 1.2rem;display:flex}.chip{border:1px solid var(--accent-dark);color:var(--accent);background:#33ffee14;border-radius:999px;padding:.28rem .85rem;font-size:.85rem;transition:background .2s,box-shadow .2s,transform .2s}.chip:hover{background:#33ffee29;transform:translateY(-1px);box-shadow:0 0 14px #33ffee40}button{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:12px;padding:.7rem 1.4rem;transition:filter .15s,transform .15s,box-shadow .2s}button:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(0)}button:disabled{opacity:.5;cursor:default}button.primary{background:linear-gradient(120deg, var(--accent), var(--accent-dark));color:#04231f;font-weight:700}button.primary.glow{box-shadow:0 4px 24px #33ffee59}button.primary.glow:hover:not(:disabled){box-shadow:0 6px 32px #33ffee80}button.ghost{color:var(--muted);border-color:var(--border);background:#181b2399}button.small{padding:.45rem .95rem;font-size:.88rem}.banner{-webkit-backdrop-filter:blur(10px);border-radius:12px;margin-bottom:1rem;padding:.85rem 1rem;font-size:.95rem}.banner.error{border:1px solid var(--error);color:var(--error);background:#ff5d731f}.banner.warning{border:1px solid var(--warning);color:var(--warning);background:#ffc8571a}.banner.notice{border:1px solid var(--success);color:var(--success);background:#4ade801a}.success{color:var(--success)}.progress{color:var(--muted);align-items:center;gap:.7rem;padding:.8rem .3rem;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.tracklist{counter-reset:track;margin:1rem 0 0;padding:0;list-style:none}.tracklist li{counter-increment:track;border-bottom:1px solid #2a2f3c99;border-radius:8px;align-items:center;gap:.8rem;padding:.65rem .4rem;transition:background .15s;display:flex}.tracklist li:hover{background:#33ffee0a}.tracklist li:before{content:counter(track);color:var(--muted);text-align:right;font-variant-numeric:tabular-nums;min-width:1.6rem}.tracklist li:last-child{border-bottom:none}.tracklist a{color:inherit;flex-direction:column;flex:1;min-width:0;text-decoration:none;display:flex}.tracklist a:hover .track-title{color:var(--accent)}.track-title{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.track-artist{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;overflow:hidden}.track-meta{color:var(--muted);flex-shrink:0;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.tag{background:var(--border);border-radius:6px;padding:.1rem .45rem;font-size:.75rem}code{background:#22262f;border-radius:5px;padding:.12rem .35rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em}a{color:var(--accent)}.footer{text-align:center;color:var(--muted);opacity:.85;margin-top:2.5rem;font-size:.78rem;line-height:1.5}button.linklike{color:var(--accent);font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.rise{animation:.55s cubic-bezier(.22,1,.36,1) both rise}.pop{animation:.4s cubic-bezier(.22,1,.36,1) both pop}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width>=700px){.app{padding-top:2.2rem}.hero{padding:3rem 0 2.4rem}.collage-tile{border-radius:14px}}@media (prefers-reduced-motion:reduce){.collage-row,.rise,.pop,.spinner{animation-duration:.01ms!important;animation-iteration-count:1!important}.chip,button,.tracklist li{transition:none}}
