/* Notenschule: Farben, Schriften und Formen wie in v1 */
:root{
  --paper:#EEF3FA; --card:#FFFFFF; --ink:#18223B; --muted:#5A6684; --staff:#2B3656;
  --soft:#DCE5F2; --accent:#FFB627; --accent-ink:#18223B;
  --good:#23945F; --good-bg:#DDF3E7; --bad:#D6452F; --bad-bg:#FBE3DE;
  --key-w:#FFFFFF; --key-b:#18223B;
  --nC:#D7262E; --nD:#6B3E26; --nE:#F7D417; --nF:#4C9A2A; --nG:#3A86D4; --nA:#141414; --nH:#FAFAF7; --nC2:#6B2C91;
  --tierB:#FFB627; --tierA:#5B8DEF; --tierE:#B05BD6; --tier:var(--tierB);
  --display:"Fredoka","Baloo 2","Trebuchet MS",system-ui,sans-serif;
  --body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;
  --music:"Noto Music","Bravura","Segoe UI Symbol","Apple Symbols",serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --paper:#10172A; --card:#19223A; --ink:#EAF0FA; --muted:#9DA9C6; --staff:#C7D2EA;
  --soft:#26304B; --accent:#FFC247; --accent-ink:#18223B;
  --good:#4CC38A; --good-bg:#1D3A30; --bad:#FF7A64; --bad-bg:#43241F;
  --key-w:#E9EEF7; --key-b:#0B1020; color-scheme:dark;}}
:root[data-theme="dark"]{
  --paper:#10172A; --card:#19223A; --ink:#EAF0FA; --muted:#9DA9C6; --staff:#C7D2EA;
  --soft:#26304B; --accent:#FFC247; --accent-ink:#18223B;
  --good:#4CC38A; --good-bg:#1D3A30; --bad:#FF7A64; --bad-bg:#43241F;
  --key-w:#E9EEF7; --key-b:#0B1020; color-scheme:dark;}
body[data-tier="A"]{--tier:var(--tierA)} body[data-tier="E"]{--tier:var(--tierE)}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:8px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Grundgerüst (schmal: alles untereinander) ---------- */
.wrap{max-width:820px;margin:0 auto;padding-block:16px 32px;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));
  display:flex;flex-direction:column;gap:14px}
.side,.mainc{display:contents}
.brand{order:1} .tiers{order:2} .extras{order:2} .levels{order:3} .stage{order:4} .inst{order:5} .settings{order:6} .side footer{order:7}

.brand{display:flex;align-items:center;justify-content:space-between;gap:12px}
h1{font-family:var(--display);font-weight:700;font-size:clamp(28px,6vw,38px);line-height:1.05;margin:0;letter-spacing:-.01em}
h1 .clef{font-family:var(--music);font-weight:400;color:var(--accent);margin-right:4px}
.sync{font-size:12px;color:var(--muted);white-space:nowrap}
.sync.off::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--bad);margin-right:6px;vertical-align:middle}

/* Stufenwahl */
.tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;background:var(--card);padding:6px;border-radius:16px}
.tier{border:0;background:transparent;border-radius:12px;padding:8px 6px;display:flex;flex-direction:column;align-items:center;min-width:0;position:relative}
.tier b{font-family:var(--display);font-weight:600;font-size:17px;line-height:1.2}
.tier span{font-size:12px;color:var(--muted)}
.tier i{position:absolute;left:10px;top:50%;width:10px;height:10px;border-radius:50%;transform:translateY(-50%);display:none}
.tier:hover{background:var(--soft)}
.tier[aria-pressed="true"]{background:var(--tc);color:#fff}
.tier[data-t="B"][aria-pressed="true"]{color:var(--accent-ink)}
.tier[aria-pressed="true"] span{color:inherit;opacity:.85}

/* Levelliste */
.levels{background:var(--card);border-radius:16px;min-height:0}
.levels summary{list-style:none;cursor:pointer;padding:10px 14px;display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:600;border-radius:16px}
.levels summary::-webkit-details-marker{display:none}
.levels summary::after{content:"";margin-left:auto;width:10px;height:10px;border-right:2.5px solid var(--muted);border-bottom:2.5px solid var(--muted);transform:rotate(45deg) translateY(-3px);transition:transform .2s}
.levels[open] summary::after{transform:rotate(225deg)}
.levels summary .pill{background:var(--tier);color:var(--accent-ink);border-radius:999px;padding:1px 10px;font-size:14px}
body:not([data-tier="B"]) .levels summary .pill{color:#fff}
.lvlist{list-style:none;margin:0;padding:4px 6px 8px;display:flex;flex-direction:column;gap:2px}
.chap{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:8px 10px 2px}
.lv{width:100%;border:0;background:transparent;border-radius:12px;padding:6px 10px;display:flex;align-items:center;gap:10px;text-align:left}
.lv:hover:not(:disabled){background:var(--soft)}
.lv .num{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-weight:600;font-size:14px;background:var(--soft)}
.lv .lt{flex:1;min-width:0;font-family:var(--display);font-weight:500;font-size:15px;line-height:1.2}
.lv .st{flex:none;display:flex;gap:1px}
.lv .st svg{width:15px;height:15px}
.lv[aria-current="true"]{background:var(--soft);box-shadow:inset 3px 0 0 var(--tier)}
.lv[aria-current="true"] .num{background:var(--tier);color:var(--accent-ink)}
body:not([data-tier="B"]) .lv[aria-current="true"] .num{color:#fff}
.lv.pass .num{background:var(--good);color:#fff}
.lv:disabled{cursor:default;color:var(--muted)}
.lv:disabled .num{background:transparent;box-shadow:inset 0 0 0 2px var(--soft)}
.lock{width:15px;height:15px;color:var(--muted)}
.star .on{fill:var(--accent)} .star .offs{fill:var(--soft)}

/* Einstellungen */
.settings{display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--muted)}
.set-row{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}
.chips{display:inline-flex;flex-wrap:wrap;gap:4px;background:var(--card);border-radius:999px;padding:3px}
.chip{border:0;background:transparent;border-radius:999px;padding:4px 12px;font-family:var(--display);font-weight:600;font-size:14px;color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.toggle{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;padding:4px 0;color:var(--ink)}
.toggle i{width:38px;height:22px;border-radius:999px;background:var(--soft);position:relative;transition:background .2s;flex:none}
.toggle i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--card);box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .2s}
.toggle[aria-pressed="true"] i{background:var(--good)}
.toggle[aria-pressed="true"] i::after{transform:translateX(16px)}
.rainbow{display:inline-flex;gap:2px}
.rainbow u{width:6px;height:12px;border-radius:2px;text-decoration:none}
.parents summary{cursor:pointer;color:var(--muted);font-size:13px}
.parents p{margin:6px 0;font-size:13px}
.rbtn{border:1.5px solid var(--soft);background:var(--card);color:var(--ink);border-radius:10px;padding:6px 12px;font-family:var(--display);font-weight:600;font-size:14px}
.rbtn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
footer{font-size:13px;color:var(--muted);text-align:center}

/* ---------- Bühne ---------- */
.stage{background:var(--card);border-radius:24px;padding:16px clamp(14px,4vw,28px) 18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 1px 0 var(--soft),0 10px 30px -18px rgba(24,34,59,.35);min-width:0}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:28px;flex-wrap:wrap}
.crumb{font-family:var(--display);font-weight:600;font-size:14px;color:var(--muted);white-space:nowrap}
.crumb b{color:var(--ink)}
.crumb .dotc{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--tier);margin-right:6px}
.dots{display:flex;gap:5px;flex-wrap:wrap}
.dots i{width:12px;height:12px;border-radius:50%;background:var(--soft)}
.dots i.ok{background:var(--good)} .dots i.no{background:var(--bad)} .dots i.now{box-shadow:0 0 0 2px var(--accent) inset;background:transparent}
.streak{font-family:var(--display);font-weight:600;font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.streak strong{color:var(--ink)}

.prompt{display:flex;align-items:center;gap:16px;justify-content:center;min-height:88px;text-align:left}
.bubble{box-shadow:0 0 0 2px var(--soft);min-width:88px;height:88px;padding:0 10px;flex:none;border-radius:44px;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:52px;line-height:1;background:var(--ink);color:var(--paper)}
.bubble.wide{font-size:34px;padding:0 22px}
.prompt p{margin:0;font-family:var(--display);font-weight:500;font-size:clamp(20px,4.5vw,26px);line-height:1.2;text-wrap:balance}
.prompt small{display:block;font-family:var(--body);font-size:14px;color:var(--muted);font-weight:400;margin-top:4px}
.big-btn{border:0;background:var(--accent);color:var(--accent-ink);font-family:var(--display);font-weight:600;font-size:18px;border-radius:14px;padding:11px 20px;display:inline-flex;align-items:center;gap:8px}
.big-btn.ghost{background:var(--soft);color:var(--ink)}
.big-btn:active{transform:translateY(1px)}
.big-btn:disabled{opacity:.5;cursor:default}
.big-btn[hidden]{display:none}
.ear{width:88px;height:88px;flex:none;border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center}
.ear svg{width:44px;height:44px}
.ear.playing{animation:pulse .5s ease}

/* Notenzeile */
.staff-box{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.staff-row{width:100%;min-width:0}
.staff{display:block;width:100%;height:auto;max-height:260px;margin:0 auto;touch-action:manipulation;overflow:visible}
.staff.single{max-width:300px}
.staff .line{stroke:var(--staff);stroke-width:2}
.staff .clef,.staff .acc{fill:var(--staff);font-family:var(--music)}
.staff .tsig{fill:var(--staff);font-family:var(--display);font-weight:700;font-size:38px;text-anchor:middle;dominant-baseline:central}
.staff .ink{fill:var(--staff)} .staff .stroke{stroke:var(--staff)}
.staff .head{stroke:var(--staff);stroke-width:3} .staff .hole{fill:var(--card)}
.staff .ledger{stroke:var(--staff);stroke-width:2}
.staff .lbl{font-family:var(--display);font-weight:600;font-size:22px;text-anchor:middle;fill:var(--muted)}
.staff .count{font-family:var(--display);font-weight:600;font-size:17px;text-anchor:middle;fill:var(--muted)}
.staff .count.und{font-size:13px;font-weight:500}
.staff .vis{pointer-events:none}
.staff .hitg{cursor:pointer;outline:none}
.staff .hit{fill:transparent;transition:fill .15s}
.staff .hitg:hover .hit,.staff .hitg:focus-visible .hit{fill:var(--soft)}
.staff .hitg:focus-visible .hit{stroke:var(--accent);stroke-width:3}
.staff .hitg.ok .hit{fill:var(--good-bg)} .staff .vis.ok .lbl{fill:var(--good)}
.staff .hitg.no .hit{fill:var(--bad-bg)} .staff .vis.no{animation:shake .4s} .staff .vis.no .lbl{fill:var(--bad)}
.staff .hitg.show .hit{fill:var(--good-bg)} .staff .vis.show .hw{animation:pop .6s ease 2} .staff .vis.show .lbl{fill:var(--good)}
.staff .hitg.lit .hit{fill:var(--soft)} .staff .vis.lit .hw{animation:pop .45s ease}
.staff .vis.lit .head:not([style*="fill:#"]){stroke:var(--accent)}
.staff .vis.lit .head[style*="fill:var(--staff)"]{fill:var(--accent)} .staff .vis.lit .stroke{stroke:var(--accent)}
.staff.locked .hitg{cursor:default}
.staff.locked .hitg:hover .hit{fill:transparent}
.staff.locked .hitg.ok:hover .hit,.staff.locked .hitg.show:hover .hit{fill:var(--good-bg)}
.staff.locked .hitg.no:hover .hit{fill:var(--bad-bg)}
.staff .hw{transform-box:fill-box;transform-origin:center}
.staff.rhythm .vis.lit .ink,.staff.rhythm .vis.lit .head{fill:var(--accent)}
.staff.rhythm .vis.lit .stroke,.staff.rhythm .vis.lit .head{stroke:var(--accent)}
.staff .tap.ok{fill:var(--good)} .staff .tap.no{fill:var(--bad)}

/* Antwortknöpfe */
.answers{display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:8px;width:100%;max-width:860px;margin:0 auto}
.ans{border:0;border-radius:14px;background:var(--soft);font-family:var(--display);font-weight:700;font-size:28px;padding:8px 0;color:var(--ink);border-bottom:4px solid rgba(0,0,0,.12);min-width:0}
.ans.txt{font-size:19px;font-weight:600;padding:12px 6px;line-height:1.15}
.ans:hover:not(:disabled){filter:brightness(.97)}
.ans.ok{background:var(--good);color:#fff} .ans.no{background:var(--bad);color:#fff;animation:shake .4s} .ans.show{box-shadow:0 0 0 3px var(--good) inset}
.ans:disabled{cursor:default}
@media (max-width:640px){.answers{grid-template-columns:repeat(var(--nn,4),minmax(0,1fr))}.ans{font-size:24px}.ans.txt{font-size:16px}}

.feedback{min-height:50px;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;text-align:center}
.feedback p{margin:0;font-size:17px;max-width:62ch}
.feedback .yay{font-family:var(--display);font-weight:600;font-size:22px;color:var(--good)}
.feedback .yay small{display:block;font-family:var(--body);font-weight:400;font-size:16px;color:var(--ink)}
.feedback .oops{color:var(--ink)} .feedback .oops b{color:var(--bad)}

/* Rhythmus */
.rh-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.tap-pad{border:0;width:100%;max-width:560px;margin:0 auto;min-height:110px;border-radius:24px;background:var(--soft);color:var(--ink);font-family:var(--display);font-weight:700;font-size:44px;display:grid;place-items:center;touch-action:manipulation;user-select:none;-webkit-user-select:none;transition:background .1s}
.tap-pad small{display:block;font-size:15px;font-weight:500;color:var(--muted)}
.tap-pad.armed{background:var(--accent);color:var(--accent-ink)} .tap-pad.armed small{color:var(--accent-ink)}
.tap-pad.hit{background:var(--good);color:#fff}
.tap-pad:disabled{cursor:default}

/* Intro */
.intro{display:flex;flex-direction:column;gap:10px;min-width:0}
.intro h2{font-family:var(--display);font-weight:700;font-size:30px;margin:0;line-height:1.1}
.intro-text{font-size:17px;max-width:70ch}
.intro-text p{margin:0}
.intro-text .tip{display:inline-block;margin-top:6px;background:var(--paper);border-radius:10px;padding:4px 12px;font-family:var(--display);font-weight:500;font-size:16px}
.intro .prompt{min-height:72px;justify-content:flex-start}
.intro .prompt .bubble{min-width:64px;height:64px;font-size:38px}
/* Lernphase */
.lesson{display:flex;flex-direction:column;gap:10px;min-width:0}
.lesson h2{font-family:var(--display);font-weight:700;font-size:30px;margin:0;line-height:1.1}
.lesson-text{font-size:18px;max-width:70ch;line-height:1.45}
.lesson-text p{margin:0 0 6px}
.lesson .prompt{justify-content:flex-start;min-height:0}
.lesson .prompt p{font-family:var(--body);font-size:18px;font-weight:400;line-height:1.45}
.lesson .prompt .bubble{min-width:64px;height:64px;font-size:34px}
.crumb.lern{background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:2px 10px}
.feedback .task{font-family:var(--display);font-weight:500;font-size:19px;flex-basis:100%}
.feedback .answers{width:min(520px,100%)}
.staff .note.known{opacity:.4}
.beats{display:grid;grid-template-columns:repeat(var(--n),1fr);gap:6px;width:min(360px,100%);margin:8px auto 0;position:relative;padding-bottom:16px}
.beats span{background:var(--soft);border-radius:10px;padding:8px 0;text-align:center;font-family:var(--display);font-weight:700;font-size:20px;transition:background .1s}
.beats span.on{background:var(--accent);color:var(--accent-ink)}
.beats .dur{position:absolute;left:0;bottom:0;height:8px;border-radius:4px;background:var(--good);width:calc(var(--w) * 100%)}
.count{font-family:var(--display);font-size:22px;font-weight:600;text-align:center;min-height:30px;margin:4px 0}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;align-items:center}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--cw,132px),1fr));gap:8px}
.card{border:0;background:var(--paper);border-radius:14px;padding:6px 6px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;color:var(--ink);text-align:center}
.card:hover{background:var(--soft)}
.card .staff{max-height:96px}
.card b{font-family:var(--display);font-weight:600;font-size:16px;line-height:1.15}
.card span{font-size:13px;color:var(--muted);line-height:1.2}
.card.lit{box-shadow:inset 0 0 0 3px var(--accent)}
.keycard{cursor:default}
.keycard .names{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.keycard .names button{border:0;border-radius:999px;background:var(--card);padding:2px 10px;font-family:var(--display);font-weight:600;font-size:14px}
.keycard .names button:hover{background:var(--accent);color:var(--accent-ink)}

/* Wiederholen und Meine Noten */
.extras{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.xbtn{border:0;background:var(--card);border-radius:14px;padding:8px 12px;min-height:52px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;text-align:left;color:var(--ink);min-width:0}
.xbtn:hover:not(:disabled){background:var(--soft)}
.xbtn:disabled{opacity:.5;cursor:default}
.xbtn b{font-family:var(--display);font-weight:600;font-size:16px;line-height:1.2;display:flex;align-items:center;gap:6px}
.xbtn b em{font-style:normal;background:var(--accent);color:var(--accent-ink);border-radius:999px;min-width:22px;padding:0 7px;font-size:13px;line-height:20px;text-align:center}
.xbtn span{font-size:12px;color:var(--muted)}
.xbtn[aria-pressed="true"]{box-shadow:inset 0 0 0 2.5px var(--tier)}
.mhead h2{font-family:var(--display);font-weight:700;font-size:26px;margin:0}
.mhead p{margin:2px 0 0;color:var(--muted);font-size:15px;max-width:80ch}
.mapv{display:flex;flex-direction:column;gap:12px;min-height:0}
.msec h3{font-family:var(--display);font-weight:600;font-size:17px;margin:0 0 6px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}
.mgrid.words{grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}
.mcell{border:0;background:var(--paper);border-radius:12px;padding:4px 4px 7px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--ink);min-width:0}
.mcell:hover{background:var(--soft)}
.mcell .staff{width:100%;height:62px;max-height:none}
.mcell b{font-family:var(--display);font-weight:600;font-size:15px;line-height:1.15}
.mcell.new b{color:var(--muted)}
.pips{display:flex;gap:3px}
.pips i{width:8px;height:8px;border-radius:50%;background:var(--soft);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.pips i.on{background:var(--good)}
.oops .dia{font-weight:700}
.result .pause{background:var(--paper);border-radius:12px;padding:8px 14px;color:var(--ink)}

/* Ergebnis */
.result{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:4px 0}
.stars{display:flex;gap:6px}
.stars svg{width:52px;height:52px}
.stars .on{fill:var(--accent)} .stars .offs{fill:var(--soft)}
.result h2{font-family:var(--display);font-weight:700;font-size:30px;margin:0}
.result p{margin:0;color:var(--muted);max-width:56ch}
.result .need{color:var(--ink);font-weight:700}
.tips{list-style:none;padding:0;margin:2px 0;display:flex;flex-direction:column;gap:6px;text-align:left;max-width:680px;width:100%}
.tips li{display:flex;gap:10px;align-items:center;background:var(--paper);border-radius:12px;padding:6px 12px;font-size:15px;line-height:1.35}
.tips .bubble{min-width:38px;height:38px;font-size:18px;padding:0 8px}

/* Instrument */
.inst{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.inst[hidden]{display:none}
.piano{display:flex;justify-content:center;max-width:100%}
.piano svg{display:block;max-width:100%;height:auto;overflow:visible}
.piano text{font-family:var(--display);font-weight:600;font-size:15px;text-anchor:middle;fill:#4A4A4A;pointer-events:none}
.piano .k{cursor:pointer;transition:fill .12s}
.piano .ill .k.w{fill:#FBFAF6;stroke:#2A2A2A;stroke-width:1}
.piano .ill .k.w.dim{fill:#DCD8CD}
.piano .ill .k.b{fill:#151515}
.piano .ill .k.b.dim{fill:#5A5A5A}
.piano .ill .k.lit,.piano .ill .k.on{fill:var(--accent)}
.piano .ill .k.sel{fill:var(--good)}
.piano .ill .k.no{fill:var(--bad)}
.piano .bar{transform-box:fill-box;transform-origin:center;transition:transform .15s}
.piano .bar.dim{opacity:.35}
.piano .bar .barr{stroke:var(--staff);stroke-width:1.5}
.piano .bar text{font-size:20px}
.piano .bar.lit,.piano .bar.on,.piano .bar.sel{transform:translateY(-8px)}
.piano .bar.lit .barr,.piano .bar.on .barr{stroke:var(--accent);stroke-width:5}
.piano .bar.sel .barr{stroke:var(--good);stroke-width:5}
.piano .bar.no .barr{stroke:var(--bad);stroke-width:5}
.piano-cap{text-align:center;font-size:13px;color:var(--muted);margin:0}

/* ---------- Breiter Bildschirm: links 320 px, rechts Bühne oben, Instrument mittig darunter ---------- */
@media (min-width:1100px){
  html,body{height:100%;overflow:hidden}
  .wrap{max-width:none;height:100%;display:grid;grid-template-columns:320px minmax(0,1fr);column-gap:28px;padding:18px 28px 12px}
  .side{display:flex;flex-direction:column;gap:12px;min-height:0}
  .mainc{display:flex;flex-direction:column;gap:10px;min-height:0;min-width:0}
  .levels{flex:1 1 auto;display:flex;flex-direction:column;overflow:hidden}
  .levels summary{display:none}
  .lvlist{flex:1;overflow-y:auto;overscroll-behavior:contain}
  .side footer{text-align:left}
  h1{font-size:34px}
  .tiers{grid-template-columns:1fr;gap:4px}
  .tier{flex-direction:row;justify-content:space-between;align-items:baseline;padding:9px 14px;text-align:left}
  .tier span{font-size:13px}
  .stage{flex:none;padding:16px 28px 16px;gap:10px;max-height:100%}
  .stage.grow{flex:1 1 auto}
  .stage.grow .rhythm{max-height:min(320px,36vh)}
  .stage.grow .tap-pad{min-height:170px;max-width:720px}
  .stage.grow .single{max-width:380px}
  .stage.grow .staff.single{max-height:min(320px,34vh)}
  .staff{max-height:min(260px,27vh)}
  .staff.two{max-height:min(200px,19vh)}
  .rhythm{max-height:min(240px,26vh)}
  .card .staff{max-height:min(90px,10vh)}
  .inst{flex:1 1 0;min-height:0;justify-content:center;overflow:hidden}
  .mapv{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding-right:4px}
}
@media (min-width:1100px) and (max-height:860px){
  .bubble,.ear{min-width:72px;width:auto;height:72px;font-size:44px}
  .ear{width:72px}
  .prompt{min-height:72px}
  .ans{font-size:24px;padding:5px 0}
  .ans.txt{font-size:17px;padding:9px 6px}
  .intro h2{font-size:26px}
  .intro-text{font-size:16px}
  .stars svg{width:44px;height:44px}
}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes pop{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
