* { box-sizing: border-box; }
html { color-scheme: dark; }
body { margin: 0; color: var(--text); background: var(--bg); font: 400 15px/1.6 var(--font); -webkit-font-smoothing: antialiased; }
button, input, select { font: inherit; }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
button { color: inherit; cursor: pointer; transition: background .18s, border-color .18s, box-shadow .18s, transform .18s; }
button:disabled { cursor: not-allowed; }
button:active:not(:disabled) { transform: translateY(1px); }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
[hidden] { display: none!important; }
svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0; }
a { color: inherit; }
h1, h2, h3, p { overflow-wrap: break-word; }
.full-width { width: 100%; }
.icon-button { border: 0; background: transparent; width: 44px; height: 44px; display: grid; place-items: center; }
.play-button svg { fill: currentColor; stroke: none; width: 20px; height: 20px; }
.search-wrap { position: relative; }
.search-icon { position: absolute; top: 18px; left: 18px; width: 19px; height: 19px; pointer-events: none; }
#song-search { width: 100%; height: 56px; padding: 15px 46px; }
.search-shortcut { position: absolute; top: 17px; right: 18px; padding: 0 6px; font: 12px var(--font); }
.suggestions { position: absolute; top: calc(100% + 7px); left: 0; right: 0; z-index: 5; max-height: 270px; overflow: auto; padding: 6px; box-shadow: 0 16px 45px #0008; }
.suggestion { width: 100%; display: flex; align-items: center; gap: 12px; padding: 11px; text-align: left; border: 0; background: transparent; }
.suggestion>div { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.suggestion strong { font-size: 14px; font-weight: 600; }
.suggestion small { font-size: 12px; }
.suggestion>span, .no-suggestion { font-size: 12px; color: var(--muted); }
.no-suggestion { margin: 8px; }
.button { display: flex; justify-content: center; align-items: center; gap: 9px; min-height: 48px; padding: 12px 18px; border: 1px solid transparent; font-size: 14px; font-weight: 600; }
.button svg { width: 16px; height: 16px; }
.game-actions { display: flex; gap: 12px; margin: 14px 0 4px; }
.game-actions .button { flex: 1; }
.status-message, .start-error { font-size: 13px; color: var(--negative); line-height: 1.65; margin: 12px 0 0; }
.status-message:empty, .start-error:empty { display: none; }
.guesses { display: flex; flex-direction: column; gap: 7px; margin-top: 24px; }
.guess-row { display: flex; align-items: center; min-height: 42px; gap: 11px; padding: 8px 13px; font-size: 12px; }
.guess-number { width: 13px; flex-shrink: 0; font-size: 11px; color: var(--muted); }
.guess-track { display: flex; flex: 1; flex-wrap: wrap; align-items: center; gap: 7px; min-width: 0; }
.guess-track strong { font-size: 13px; font-weight: 600; }
.guess-track small, .guess-state { font-size: 11px; color: var(--muted); }
.guess-row svg { width: 16px; height: 16px; }
.revealed-track { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 20px 0; text-align: left; }
.revealed-track img { width: 58px; height: 58px; border-radius: 14px; }
.revealed-track>div { display: flex; flex-direction: column; }
.revealed-track strong { font-size: 16px; }
.revealed-track span { font-size: 13px; color: var(--muted); }
.track-link { font-size: 12px; color: var(--accent); margin-top: 5px; text-underline-offset: 4px; }
.result-buttons { display: flex; justify-content: center; gap: 10px; }
.result-buttons .button { flex: 1; }
.result-countdown { font-size: 12px!important; margin: 16px 0 0!important; }
dialog { color: var(--text); width: min(480px, calc(100% - 32px)); max-height: calc(100% - 40px); padding: 36px 28px; }
dialog::backdrop { background: #080409d9; backdrop-filter: blur(8px); }
.dialog-close { position: absolute; top: 10px; right: 10px; font-size: 25px; }
dialog h2 { font: 700 27px/1.25 var(--display); letter-spacing: -.9px; margin: 15px 0; }
dialog h3 { font-size: 14px; font-weight: 600; margin-top: 26px; }
dialog>p { color: var(--muted); font-size: 14px; }
.dialog-note { color: var(--muted); font-size: 12px; line-height: 1.7; margin-top: 20px; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 26px 0; }
.stat { text-align: center; }
.stat strong { font: 700 31px var(--display); color: var(--accent); display: block; }
.stat span { font-size: 11px; color: var(--muted); }
.distribution { display: flex; flex-direction: column; gap: 7px; }
.distribution-row { display: flex; align-items: center; gap: 12px; font-size: 13px; }
.distribution-row>span { width: 12px; color: var(--muted); }
.distribution-bar { min-width: 26px; height: 26px; padding: 3px 9px; border-radius: 8px; text-align: right; font-size: 12px; }
.toast { position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%); z-index: 10; max-width: calc(100% - 32px); padding: 13px 22px; font-size: 14px; text-align: center; box-shadow: 0 10px 40px #0006; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none!important; animation: none!important; scroll-behavior: auto!important; } }
