:root{--bg: #07070c;--bg-raised: #12121c;--line: #23233a;--text: #f4f4fb;--muted: #8b8ba7;--accent: #00e5a0;--accent-2: #7c5cff;--danger: #ff4d6d;--warn: #ffc857;--radius: 18px;--tap: 52px;--font: "Heebo", "Assistant", "Rubik", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);overscroll-behavior:none;background-image:radial-gradient(circle at 15% 0%,rgba(124,92,255,.22),transparent 55%),radial-gradient(circle at 85% 100%,rgba(0,229,160,.16),transparent 55%);background-attachment:fixed}#root{min-height:100%}.app{min-height:100dvh;max-width:520px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 20px max(16px,env(safe-area-inset-bottom))}.screen{min-height:calc(100dvh - 32px);display:flex;flex-direction:column;gap:20px}.screen--center{justify-content:center;text-align:center}.screen--stage{align-items:center;justify-content:center}.screen--stage .stage-head{margin-bottom:auto}.screen--stage .guess{margin-top:auto}.btn{min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border:1px solid transparent;border-radius:var(--radius);background:var(--bg-raised);color:var(--text);font-family:inherit;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .12s ease,opacity .15s ease,box-shadow .2s ease}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.38;cursor:not-allowed}.btn:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.btn--primary{background:linear-gradient(135deg,var(--accent),#35f5c0);color:#04120d;box-shadow:0 10px 34px #00e5a052}.btn--xl{width:100%;min-height:60px;font-size:1.15rem}.btn--ghost{flex:1;flex-direction:column;gap:2px;background:transparent;border-color:var(--line);color:var(--muted);font-size:.95rem}.btn--ghost small{font-size:.72rem;opacity:.75;font-weight:500}.btn--danger{color:var(--danger);border-color:#ff4d6d59}.btn--listen{width:100%;min-height:66px;font-size:1.2rem;background:linear-gradient(135deg,var(--accent-2),#a58bff);color:#fff;box-shadow:0 12px 38px #7c5cff66}.btn__icon{font-size:1.1rem;transform:scaleX(-1)}.btn--submit{min-width:92px;background:var(--bg-raised);border-color:var(--line)}.hero__badge{display:inline-block;padding:6px 14px;border:1px solid var(--line);border-radius:999px;font-size:.8rem;color:var(--muted);letter-spacing:.04em}.hero__title{margin:14px 0 8px;font-size:clamp(2.6rem,13vw,3.6rem);font-weight:900;line-height:1.05;letter-spacing:-.02em}.hero__accent{background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.hero__subtitle{margin:0;color:var(--muted);font-size:1.05rem}.rules{margin:0;padding:18px 38px 18px 18px;list-style:none;counter-reset:rule;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);text-align:right}.rules li{position:relative;padding:9px 0;color:var(--muted);font-size:.95rem;line-height:1.5;counter-increment:rule}.rules li:before{content:counter(rule);position:absolute;right:-26px;top:11px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:#00e5a024;color:var(--accent);font-size:.7rem;font-weight:700}.rules strong{color:var(--text)}.stage-head{width:100%;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.9rem}.stage-head__score{font-weight:800;font-size:1.1rem;color:var(--accent);font-variant-numeric:tabular-nums}.timer-ring{position:relative;width:min(56vw,210px);aspect-ratio:1}.timer-ring svg{width:100%;height:100%;transform:rotate(-90deg) scaleX(-1)}.timer-ring__track{fill:none;stroke:var(--line)}.timer-ring__progress{fill:none;stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .1s linear,stroke .3s ease}.timer-ring--urgent .timer-ring__progress{stroke:var(--danger)}.timer-ring--urgent{animation:pulse .9s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.035)}}.timer-ring__content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.timer-ring__label{font-size:2.5rem;font-weight:900;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.timer-ring__sublabel{font-size:.85rem;color:var(--muted)}.replays{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.82rem}.replays__dot{width:8px;height:8px;border-radius:50%;background:var(--line)}.replays__dot.is-left{background:var(--accent-2);box-shadow:0 0 9px #7c5cffbf}.replays__text{margin-inline-start:4px}.guess{width:100%;display:flex;gap:10px}.guess__input{flex:1;min-width:0;min-height:var(--tap);padding:12px 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-raised);color:var(--text);font-family:inherit;font-size:16px;text-align:right}.guess__input::placeholder{color:var(--muted)}.guess__input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #00e5a029}.guess__input.is-wrong{border-color:var(--danger);animation:shake .4s ease}@keyframes shake{20%,60%{transform:translate(-7px)}40%,80%{transform:translate(7px)}}.stage-actions{width:100%;display:flex;gap:10px}.reveal{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:#040409d1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade .2s ease}@keyframes fade{0%{opacity:0}}.reveal__card{width:100%;max-width:380px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:30px 24px;border:1px solid var(--line);border-radius:26px;background:var(--bg-raised);text-align:center;animation:rise .28s cubic-bezier(.2,.9,.3,1.2)}@keyframes rise{0%{opacity:0;transform:translateY(22px) scale(.96)}}.reveal__card--solved{border-color:#00e5a073;box-shadow:0 0 60px #00e5a029}.reveal__card--failed{border-color:#ff4d6d66;box-shadow:0 0 60px #ff4d6d21}.reveal__verdict{font-size:1.25rem;font-weight:800}.reveal__title{font-size:1.65rem;font-weight:900;line-height:1.2}.reveal__meta{color:var(--muted)}.reveal__score{margin-bottom:12px;color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.reveal__card .btn{width:100%}.screen--results{align-items:center;text-align:center;padding-bottom:20px}.results__eyebrow{color:var(--muted);letter-spacing:.08em;font-size:.85rem}.results__score{font-size:clamp(3.4rem,20vw,5rem);font-weight:900;line-height:1;font-variant-numeric:tabular-nums;background:linear-gradient(135deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.results__ceiling,.results__solved{color:var(--muted);font-size:.95rem}.results__grid{display:flex;flex-wrap:wrap;justify-content:center;gap:5px;font-size:1.5rem;letter-spacing:2px}.results__list{width:100%;margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.results__row{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);border-radius:14px;background:var(--bg-raised);text-align:right}.results__row-mark{width:24px;height:24px;flex:none;display:grid;place-items:center;border-radius:50%;font-size:.8rem;font-weight:800}.results__row.is-solved .results__row-mark{background:#00e5a029;color:var(--accent)}.results__row.is-failed .results__row-mark{background:#ff4d6d29;color:var(--danger)}.results__row-song{flex:1;min-width:0;display:flex;flex-direction:column}.results__row-song strong{font-size:.98rem}.results__row-song small{color:var(--muted);font-size:.8rem}.results__row-score{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.results__actions{width:100%;display:flex;flex-direction:column;gap:10px;margin-top:auto;padding-top:8px}.results__note{margin:0;color:var(--accent);font-size:.88rem}.toast{position:fixed;inset-inline:20px;bottom:max(20px,env(safe-area-inset-bottom));max-width:480px;margin:0 auto;padding:14px 18px;border:1px solid rgba(255,200,87,.4);border-radius:14px;background:#261e08f5;color:var(--warn);font-size:.9rem;text-align:center;cursor:pointer;animation:rise .25s ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
