:root{--bg: #120d1f;--bg-glow: #2a1440;--surface: #1c1530;--surface-2: #251c3d;--line: #352a52;--text: #f6efe6;--muted: #a99cbf;--accent: #ff4d3d;--accent-ink: #1a0905;--easy: #4fd6a3;--hard: #ffb23e;--veryeasy: #5ec8f2;--impossible: #ff4d8d;--ok: #4fd6a3;--warn: #ffb23e;--bad: #ff6b6b;--spotify: #1ed760;--radius: 18px;--display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg)}body{font-family:var(--display);color:var(--text);font-size:16px;line-height:1.4;background:radial-gradient(120% 70% at 50% -10%,var(--bg-glow),var(--bg) 60%) fixed;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}code{font-family:var(--mono);font-size:.85em;background:var(--surface-2);padding:1px 6px;border-radius:6px}.app{max-width:560px;margin:0 auto;min-height:100dvh;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom))}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{font-size:.85rem}.stack{display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center}.row.between{justify-content:space-between}.row.gap{gap:8px}.row.wrap{flex-wrap:wrap}.center{text-align:center;justify-content:center}.hero{padding:28px 4px 20px}.hero h1{font-size:clamp(3rem,15vw,4.6rem);line-height:.88;letter-spacing:-.04em;font-weight:800;margin:14px 0 12px;text-transform:uppercase}.hero h1 em{font-style:normal;color:var(--accent)}.tagline{margin:0;color:var(--muted);font-size:1.1rem}.onair{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.75rem;letter-spacing:.18em;color:var(--accent);border:1.5px solid var(--accent);padding:5px 10px;border-radius:6px}.onair .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:blink 1.4s ease-in-out infinite}@keyframes blink{50%{opacity:.25}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:12px}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.card-head h2{margin:0;font-size:1.15rem;font-weight:700}.card-head .right{margin-left:auto}.step{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:.75rem;background:var(--surface-2);color:var(--muted)}.label{display:block;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:14px 0 8px}.uri{display:block;padding:10px;word-break:break-all;-webkit-user-select:all;user-select:all}.ok-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-right:4px}.btn{border:1px solid var(--line);background:var(--surface-2);padding:11px 16px;border-radius:12px;font-weight:600;transition:transform .08s ease}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:800}.btn.spotify{background:var(--spotify);border-color:var(--spotify);color:#04130a;font-weight:800;padding:14px}.btn.huge{width:100%;padding:18px;font-size:1.2rem;border-radius:16px}.link{background:none;border:none;padding:4px 0;color:var(--muted);text-decoration:underline;text-underline-offset:3px;font-size:.9rem}.link.danger{color:var(--bad)}.chip{border:1px solid var(--line);background:transparent;padding:8px 14px;border-radius:999px;font-weight:600}.chip.on{background:var(--text);color:var(--bg);border-color:var(--text)}.chip.big{border-radius:12px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px}.chip.big span{font-size:.75rem;font-weight:400;opacity:.75}.chip.ghost{border-style:dashed}.outputs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.lists{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px}.lists .chip.big{padding:6px 10px;border-radius:10px;gap:0;font-size:.85rem;line-height:1.25}.lists .chip.big span{font-size:.7rem}.field{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--text);padding:11px 12px;border-radius:10px;font:inherit;font-size:16px}.deck{display:flex;flex-direction:column;gap:8px}.progress{position:relative;background:var(--bg);border-radius:8px;overflow:hidden;padding:8px 10px;font-size:.85rem}.progress .bar{position:absolute;inset:0 auto 0 0;background:color-mix(in srgb,var(--accent) 35%,transparent);transition:width .3s}.progress span{position:relative}.diffs{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.diff{--c: var(--easy);position:relative;border:1.5px solid var(--line);background:transparent;border-radius:14px;padding:12px 10px 10px;text-align:left;display:flex;flex-direction:column;gap:4px;min-height:104px}.diff.hard{--c: var(--hard)}.diff.veryeasy{--c: var(--veryeasy)}.diff.impossible{--c: var(--impossible)}.diff.on{border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent)}.diff-name{font-weight:800;color:var(--c)}.diff-hint{font-size:.72rem;color:var(--muted);line-height:1.25}.diff-count{margin-top:auto;font-family:var(--mono);font-size:.8rem}.seg{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg);padding:5px;border-radius:14px}.seg button{border:none;background:transparent;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:2px;text-align:left}.seg button span{font-size:.75rem;color:var(--muted)}.seg button.on{background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line)}.seg.small{display:inline-grid;grid-template-columns:auto auto}.seg.small button{padding:6px 12px;font-size:.85rem}.start-bar{position:sticky;bottom:0;padding:12px 0 4px;background:linear-gradient(transparent,var(--bg) 35%)}.toast{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;transform:translate(-50%);width:min(528px,calc(100% - 32px));background:#3a1420;border:1px solid var(--bad);color:var(--text);border-radius:12px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;z-index:10;font-size:.9rem}.toast span{flex:1}.toast-x{background:none;border:none;font-size:1.2rem;line-height:1;padding:0}.game{min-height:calc(100dvh - 32px);display:flex;flex-direction:column}.game.center{justify-content:center;align-items:center;gap:16px}.hud{display:flex;align-items:center;justify-content:space-between;padding:4px 0 8px}.hud-round{font-family:var(--mono);color:var(--muted)}.hud-score{font-family:var(--mono);font-weight:500;font-size:1.1rem;display:flex;gap:8px}.streak{color:var(--hard)}.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:12px 0;text-align:center}.badges{display:flex;gap:6px}.cats{margin:0;text-align:center;font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.badge{--c: var(--easy);font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--c);border:1px solid color-mix(in srgb,var(--c) 60%,transparent);padding:3px 8px;border-radius:6px;white-space:nowrap}.badge.hard{--c: var(--hard)}.badge.veryeasy{--c: var(--veryeasy)}.badge.impossible{--c: var(--impossible)}.badge.unsung{--c: var(--accent)}.countdown{min-height:220px;display:grid;place-items:center}.count-num{font-size:9rem;font-weight:800;line-height:1;animation:pop .75s ease-out both}@keyframes pop{0%{transform:scale(1.6);opacity:0}30%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:.3}}.error-text{color:var(--bad);max-width:34ch}.listening{display:flex;flex-direction:column;align-items:center;gap:12px}.time{font-size:2.6rem;letter-spacing:-.02em}.listening{align-self:stretch}.bomb{width:min(100%,420px);height:auto;overflow:visible}.fuse path,.fuse-ash{fill:none;stroke-linecap:round;stroke-linejoin:round}.fuse-base{stroke:#b07a3c;stroke-width:7}.fuse-braid{stroke:#6b431f;stroke-width:7;stroke-linecap:butt!important;stroke-dasharray:2.5 3.5}.fuse-shine{stroke:#f0c98c;stroke-width:1.6;stroke-dasharray:2.5 3.5;stroke-dashoffset:3;transform:translate(-.8px,-1.4px);opacity:.8}.fuse-ash{stroke:#4c4560;stroke-width:2.4;stroke-dasharray:1.5 3;opacity:.75}.bomb-heat{fill:var(--accent);opacity:0}.bomb-body{transform-box:fill-box;transform-origin:60% 65%}.bomb.danger .bomb-body{animation:tremble .14s linear infinite}.bomb.danger .bomb-heat{animation:heat .6s ease-in-out infinite alternate}@keyframes tremble{0%,to{transform:rotate(0)}25%{transform:rotate(-2deg) translate(-1px)}75%{transform:rotate(2deg) translate(1px)}}@keyframes heat{to{opacity:.4}}.spark-glow{transform-box:fill-box;transform-origin:center;animation:flicker .16s steps(2) infinite alternate}.spark-core{fill:#fffbe6}.ember{fill:#ffd23e;animation:ember .6s ease-out infinite}.bomb.paused .spark-glow,.bomb.paused .ember{animation-play-state:paused}.bomb.paused .spark{opacity:.55}@keyframes flicker{0%{transform:scale(.82);opacity:.8}to{transform:scale(1.12);opacity:1}}@keyframes ember{0%{transform:translate(0);opacity:1}to{transform:translate(var(--dx),var(--dy));opacity:0}}.stage{position:relative}.boom{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:2;animation:boom-out 1.4s ease-in both}.boom svg{grid-area:1 / 1;width:min(92vw,420px);overflow:visible}.boom-word{grid-area:1 / 1;font-weight:800;font-size:clamp(3rem,16vw,5rem);letter-spacing:-.04em;color:#fffbe6;-webkit-text-stroke:3px var(--accent-ink);paint-order:stroke fill;animation:boom-word .9s cubic-bezier(.2,1.6,.4,1) both}.boom-flash,.boom-ring,.boom-burst{transform-box:fill-box;transform-origin:center}.boom-flash{animation:boom-flash .7s ease-out both}.boom-ring{fill:none;stroke:#ffd23e;stroke-width:6;animation:boom-ring .8s ease-out both}.boom-burst{fill:#ff7a2b;stroke:#ffd23e;stroke-width:4;stroke-linejoin:round;animation:boom-burst .7s ease-out both}.boom-debris{fill:#2a2440;stroke:#ff9a3e;stroke-width:1;animation:ember .9s cubic-bezier(.1,.7,.3,1) both}@keyframes boom-flash{0%{transform:scale(.1);opacity:1}to{transform:scale(1.3);opacity:0}}@keyframes boom-ring{0%{transform:scale(.2);opacity:1;stroke-width:14}to{transform:scale(1.8);opacity:0;stroke-width:1}}@keyframes boom-burst{0%{transform:scale(.2) rotate(-20deg)}35%{transform:scale(1.15) rotate(0);opacity:1}to{transform:scale(1.3) rotate(8deg);opacity:0}}@keyframes boom-word{0%{transform:scale(.3);opacity:0}25%{transform:scale(1.15);opacity:1}75%{transform:scale(1);opacity:1}to{transform:scale(1.05);opacity:0}}@keyframes boom-out{0%,70%{opacity:1}to{opacity:0;visibility:hidden}}.game.boomed{animation:quake .5s ease-out}.game.boomed .reveal{animation-delay:.7s}@keyframes quake{10%,50%{transform:translate(-6px,3px)}30%,70%{transform:translate(6px,-3px)}90%{transform:translate(-2px,1px)}}.prompt{margin:0;color:var(--muted);font-size:1.1rem}.reveal{display:flex;flex-direction:column;align-items:center;gap:6px;animation:rise .35s ease-out both}@keyframes rise{0%{transform:translateY(16px);opacity:0}}.verdict{font-family:var(--mono);text-transform:uppercase;letter-spacing:.2em;font-size:.85rem;padding:6px 12px;border-radius:8px}.reveal.win .verdict{background:var(--ok);color:#04130a}.reveal.lose .verdict{background:var(--surface-2);color:var(--bad)}.song-title{font-size:clamp(2.2rem,11vw,3.4rem);line-height:.95;letter-spacing:-.03em;font-weight:800;margin:10px 0 0;text-wrap:balance}.song-artist{margin:0 0 6px;color:var(--muted);font-size:1.1rem}.margin{margin:0 0 12px}.misses{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;padding-bottom:10px}.miss{font-size:.85rem;padding:4px 10px;border-radius:999px;background:var(--surface);color:var(--muted);text-decoration:line-through;text-decoration-color:var(--bad)}.answer{position:sticky;bottom:0;padding:10px 0 4px;background:linear-gradient(transparent,var(--bg) 25%);display:flex;flex-direction:column;gap:10px}.controls{display:flex;gap:8px;justify-content:center}.ctl{border:1px solid var(--line);background:var(--surface);border-radius:12px;min-width:48px;height:46px;padding:0 10px;font-weight:600}.ctl.main{min-width:62px;background:var(--surface-2)}.guess{display:flex;gap:8px}.guess-input{flex:1;min-width:0;background:var(--surface);border:2px solid var(--line);border-radius:16px;padding:16px;color:var(--text);font:inherit;font-size:1.3rem;font-weight:600}.guess-input:focus{outline:none;border-color:var(--accent)}.btn.go{padding:0 22px;border-radius:16px;font-size:1.1rem}.shake{animation:shake .35s}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.hero.small{text-align:center}.big-score{font-size:4rem;font-weight:800;line-height:1;margin:6px 0 4px;letter-spacing:-.04em}.summary .tagline{margin:0 0 4px}.summary .cats{margin-bottom:6px}.results{list-style:none;padding:0;margin:0;flex:1}.results li{display:grid;grid-template-columns:20px 1fr auto auto auto;gap:6px;padding:3px 4px;font-size:.9rem;line-height:1.2;border-bottom:1px solid var(--line);align-items:center}.res-mark{font-weight:800}.results .win .res-mark{color:var(--ok)}.results .lose .res-mark{color:var(--bad)}.cal-head{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.cal-head h1{margin:0;font-size:1.4rem}.cal-intro{margin:8px 0 14px}.cal-tools{margin-bottom:10px;gap:10px}.cal-list{list-style:none;padding:0;margin:0}.cal-row{border:1px solid var(--line);border-radius:14px;margin-bottom:8px;background:var(--surface);overflow:hidden}.cal-row.open{border-color:var(--muted)}.cal-summary{width:100%;background:none;border:none;text-align:left;padding:12px 14px;display:flex;flex-direction:column;gap:6px}.cal-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.8rem}.status{font-size:.78rem}.status.ok{color:var(--ok)}.status.warn{color:var(--warn)}.status.bad{color:var(--bad)}.status.muted{color:var(--muted)}.cal-body{padding:0 14px 14px;display:flex;flex-direction:column;gap:10px}.cal-body .label{margin:6px 0 0}.cal-clock{display:flex;align-items:baseline;gap:10px}.mono.big{font-size:1.8rem}.btn.tap{margin-top:4px}.cal-foot{margin-top:6px;gap:10px;flex-wrap:wrap}.lyric-line{margin:0;padding:10px 12px;background:var(--bg);border-radius:10px;font-style:italic;color:var(--muted)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}.usage{margin:4px 0 12px}.usage summary{cursor:pointer}.usage ul{margin:6px 0 0;padding-left:18px}.res-btn{border:1px solid var(--line);background:transparent;color:var(--text);border-radius:8px;width:30px;height:30px;flex:none;font-size:.95rem}.res-btn.on{background:var(--surface-2)}.res-btn.star.on{color:var(--hard);border-color:color-mix(in srgb,var(--hard) 60%,transparent)}.start-bar .btn.huge:not(.grow){width:auto;flex:none}.grow{flex:1}
