:root{--u:min(1vw, 1.78vh);--bg:#1a0b2e;--bg-2:#2a1248;--ink:#fff6fb;--ink-soft:#d9c8f0;--pink:#ff4fa3;--pink-2:#ff8cc6;--purple:#8b5cf6;--gold:#ffd166;--card:#fff8fc;--card-ink:#22103d;--f-pink:#3d9bff;--f-ring:#ff4d6a;--f-mid:#2ed47a;--f-idx:#a45cff;--f-thumb:#c8c0dc;--font-head:"Baloo 2", "Trebuchet MS", system-ui, sans-serif;--font-text:"Lexend", "Segoe UI", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-text);font-size:calc(var(--u) * 1.6);overflow:hidden}.stage{background:radial-gradient(ellipse 40% 60% at 12% -10%, #ff4fa359, transparent 70%), radial-gradient(ellipse 40% 60% at 88% -10%, #8b5cf666, transparent 70%), radial-gradient(ellipse 70% 30% at 50% 110%, #ff4fa340, transparent 70%), linear-gradient(180deg, var(--bg) 0%, var(--bg-2) 100%);min-height:100dvh}.center{place-items:center;padding:16px;display:grid}h1,h2{font-family:var(--font-head);margin:0;font-weight:800;line-height:1.1}.btn{font:800 calc(var(--u) * 1.7) var(--font-head);color:#fff;background:linear-gradient(135deg, var(--pink), var(--purple));padding:calc(var(--u) * .7) calc(var(--u) * 2.4);cursor:pointer;border:0;border-radius:999px;transition:transform .12s,box-shadow .12s;box-shadow:0 0 0 3px #ffffff26,0 8px 24px #ff4fa359}.btn:hover{transform:translateY(-2px);box-shadow:0 0 0 3px #ffffff4d,0 10px 30px #ff4fa380}.btn:focus-visible{outline:4px solid var(--gold);outline-offset:3px}.btn-big{font-size:calc(var(--u) * 2.3);padding:calc(var(--u) * .9) calc(var(--u) * 3.2)}.btn-ghost{box-shadow:inset 0 0 0 3px var(--pink-2);background:0 0}.panel{border-radius:calc(var(--u) * 2);padding:calc(var(--u) * 2.5) calc(var(--u) * 3);text-align:center;background:#241040d9;border:2px solid #ff8cc680;box-shadow:0 0 40px #ff4fa340}.panel p{color:var(--ink-soft);line-height:1.5}.coin{background:radial-gradient(circle at 35% 35%, #fff3b0, var(--gold) 55%, #e09b1a);vertical-align:-.12em;border-radius:50%;width:1em;height:1em;display:inline-block;box-shadow:inset 0 0 0 2px #b8740f}.home{place-items:center;padding:16px;display:grid}.home-card{text-align:center;justify-items:center;gap:calc(var(--u) * 1.2);display:grid}.logo{font-size:calc(var(--u) * 9);background:linear-gradient(90deg, var(--pink-2), #fff, #c9a8ff);color:#0000;text-shadow:0 0 40px #ff4fa373;-webkit-background-clip:text;background-clip:text}.home-sub{font-size:calc(var(--u) * 2);color:var(--ink-soft);margin:0}.home-actions{gap:calc(var(--u) * 1.5);margin-top:calc(var(--u) * 1);flex-wrap:wrap;justify-content:center;display:flex}.coins{font-size:calc(var(--u) * 1.8);color:var(--gold);margin:0}.koppel{justify-items:center;gap:calc(var(--u) * 1);max-width:640px;display:grid}.koppel h1{font-size:calc(var(--u) * 4)}.koppel.is-ok h1{color:var(--pink-2)}.cat{width:calc(var(--u) * 8);height:auto}.cat-big{width:calc(var(--u) * 14);filter:drop-shadow(0 0 24px #ff4fa380)}.cat-head,.cat-ear{fill:#ffe9f4;stroke:#22103d;stroke-width:3px}.cat-ear-in{fill:var(--pink-2)}.cat-eye{fill:#22103d}.cat-shine{fill:#fff}.cat-nose{fill:var(--pink)}.cat-mouth{fill:none;stroke:#22103d;stroke-width:2.5px;stroke-linecap:round}.cat-blush{fill:var(--pink-2);opacity:.6}.cat-star{fill:var(--gold);stroke:#22103d;stroke-width:2px}.mascot{right:calc(var(--u) * 1.5);top:calc(var(--u) * 6);pointer-events:none;flex-direction:row-reverse;align-items:center;gap:8px;display:flex;position:fixed}.mascot .bubble{font:800 calc(var(--u) * 1.8) var(--font-head);color:var(--card-ink);opacity:0;background:#fff;border-radius:18px;padding:6px 16px;transition:opacity .2s,transform .2s;transform:scale(.8)}.mascot.is-talking .bubble{opacity:1;transform:none}.mascot.is-talking .cat{animation:.5s 2 bop}@keyframes bop{50%{transform:translateY(-8px)rotate(-4deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.f-pink{--fc:var(--f-pink)}.f-ring{--fc:var(--f-ring)}.f-mid{--fc:var(--f-mid)}.f-idx{--fc:var(--f-idx)}.f-thumb{--fc:var(--f-thumb)}.kb{--k:calc(var(--u) * 4.4);gap:calc(var(--u) * .5);justify-content:center;display:grid}.kb-row{gap:calc(var(--u) * .5);display:flex}.kb-row-1{padding-left:calc(var(--k) * .3)}.kb-row-2{padding-left:calc(var(--k) * .8)}.kb-row-3{padding-left:calc(var(--k) * .6);justify-content:center}.kb-key{width:var(--k);height:var(--k);border-radius:calc(var(--k) * .22);font:600 calc(var(--k) * .42) var(--font-text);color:#6d5a8c;background:#22123a;border:2px solid #33204f;place-items:center;transition:background .15s,transform .15s,box-shadow .15s;display:grid;position:relative}.kb-space{width:calc(var(--k) * 6.2)}.kb-key.is-known{color:#fff;background:color-mix(in srgb, var(--fc) 28%, #22123a);border-color:var(--fc)}.kb-key.is-next{color:#fff;background:var(--fc);box-shadow:0 0 0 3px #ffffff59, 0 0 22px var(--fc);border-color:#fff;animation:1.2s ease-in-out infinite glow;transform:translateY(-3px)scale(1.08)}.kb-bump:after{content:"";opacity:.8;background:currentColor;border-radius:2px;width:28%;height:3px;position:absolute;bottom:16%}.kb-key.is-nudge{animation:.4s shake}@keyframes glow{50%{box-shadow:0 0 0 6px var(--gold), 0 0 40px #ffd166cc}}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.hands{justify-content:center;align-items:center;gap:calc(var(--u) * 2);display:flex}.hand{width:calc(var(--u) * 7.2);height:auto}.hand-palm{fill:#3a2160;stroke:#5b3a8a;stroke-width:2px}.hand-finger{fill:color-mix(in srgb, var(--fc) 30%, #3a2160);stroke:#5b3a8a;stroke-width:2px;transition:fill .15s}.hand-finger.is-on{fill:var(--fc);stroke:#fff;stroke-width:3px;filter:drop-shadow(0 0 6px var(--fc))}.hands-text{min-width:calc(var(--u) * 26);text-align:center;font-size:calc(var(--u) * 1.8);color:var(--ink-soft);margin:0}.hands-text strong{color:#fff}.hands-key{background:var(--fc);color:#fff;border-radius:.4em;min-width:1.8em;padding:0 .4em;font-weight:600;display:inline-block}@media (prefers-reduced-motion:reduce){.kb-key.is-next{transform:none}.kb-key.is-nudge{animation:.4s flash!important}}@keyframes flash{50%{color:var(--card-ink);background:#fff}}.lesson{height:100dvh;padding:calc(var(--u) * 1.2) 16px calc(var(--u) * 1.4);gap:calc(var(--u) * .8);grid-template-rows:auto 1fr auto;display:grid;overflow:hidden}.lesson-top{justify-content:space-between;align-items:center;gap:16px;display:flex}.steps{gap:calc(var(--u) * .6);counter-reset:step;margin:0;padding:0;list-style:none;display:flex}.steps li{counter-increment:step;font:800 calc(var(--u) * 1.5) var(--font-head);padding:calc(var(--u) * .35) calc(var(--u) * 1.2);color:var(--ink-soft);background:#ffffff0f;border:2px solid #ffffff1a;border-radius:999px}.steps li:before{content:counter(step) ". ";opacity:.7}.steps li.is-done{color:var(--pink-2)}.steps li.is-done:before{content:"✓ "}.steps li.is-now{color:#fff;background:linear-gradient(135deg, var(--pink), var(--purple));border-color:#0000;box-shadow:0 0 18px #ff4fa380}.clock{font:800 calc(var(--u) * 1.8) var(--font-head);align-items:center;gap:10px;display:flex}.clock-bar{width:calc(var(--u) * 14);height:calc(var(--u) * .9);background:#ffffff1f;border-radius:999px;overflow:hidden}.clock-bar span{background:linear-gradient(90deg, var(--pink), var(--gold));width:0;height:100%;transition:width .2s linear;display:block}.lesson-body{align-content:center;justify-items:center;gap:calc(var(--u) * 1.2);min-height:0;display:grid}.part-head{text-align:center}.part-title{font-size:calc(var(--u) * 3.4);color:#fff;text-shadow:0 0 24px #ff4fa399}.part-hint{color:var(--ink-soft);font-size:calc(var(--u) * 1.7);margin:4px 0 0}.textcard{width:min(100%, calc(var(--u) * 90));background:var(--card);color:var(--card-ink);border-radius:calc(var(--u) * 1.8);padding:calc(var(--u) * 1.6) calc(var(--u) * 2.4);box-shadow:0 0 0 4px #ff8cc699,0 0 50px #ff4fa359}.line{font:600 calc(var(--u) * 4.2) var(--font-text);letter-spacing:.04em;white-space:pre;text-align:center;min-height:1.4em;overflow:hidden}.line-next{font:400 calc(var(--u) * 2) var(--font-text);letter-spacing:.06em;text-align:center;color:#a08bbf;min-height:1.4em;margin-top:calc(var(--u) * .6);white-space:pre;overflow:hidden}.ch{border-radius:.15em;padding:0 .02em;display:inline-block;position:relative}.ch.is-space{min-width:.55em}.ch.is-space:after{content:"";background:#c9b5e6;border-radius:50%;width:.14em;height:.14em;margin-left:-.07em;position:absolute;bottom:.32em;left:50%}.ch.is-done{color:#c4b2dd}.ch.is-done.is-space:after{opacity:.4}.ch.is-current{color:var(--card-ink);box-shadow:inset 0 -.12em 0 var(--pink);background:#ffd9ec}.ch.is-current.is-space:after{background:var(--pink);width:.2em;height:.2em;margin-left:-.1em}.ch.is-nudge{background:#ffe7a8;animation:.4s shake}.lesson-bottom{justify-items:center;gap:calc(var(--u) * .6);display:grid}.lesson .mascot{top:auto;bottom:calc(var(--u) * 1.5);right:calc(var(--u) * 2);flex-direction:column-reverse;align-items:flex-end}.lesson .mascot .cat{width:calc(var(--u) * 6)}.game-slot{width:min(100%, calc(var(--u) * 70))}.minigame h2{font-size:calc(var(--u) * 4);color:var(--pink-2)}.minigame p{font-size:calc(var(--u) * 2)}.banner{font:800 calc(var(--u) * 3.4) var(--font-head);padding:calc(var(--u) * 1.4) calc(var(--u) * 3);background:linear-gradient(135deg, var(--pink), var(--purple));white-space:nowrap;border-radius:999px;animation:.35s pop;position:fixed;top:42%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 60px #ff4fa399}@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%)scale(.6)}}.overlay{background:#10061ebf;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.overlay-card{justify-items:center;gap:calc(var(--u) * .8);background:#26113f;max-width:640px;display:grid}.overlay-card h2{font-size:calc(var(--u) * 4.4);color:var(--pink-2)}.overlay-card p{font-size:calc(var(--u) * 2);margin:0}.overlay-card .small{font-size:calc(var(--u) * 1.5)}.newkey{min-width:calc(var(--u) * 10);height:calc(var(--u) * 10);padding:0 calc(var(--u) * 1.5);border-radius:calc(var(--u) * 2);font:800 calc(var(--u) * 6) var(--font-head);background:var(--fc);color:#fff;box-shadow:0 0 0 4px #fff, 0 0 50px var(--fc);place-items:center;animation:.5s pop-key;display:grid}@keyframes pop-key{0%{transform:scale(.3)rotate(-12deg)}}.review{width:min(100%, calc(var(--u) * 70))}.review-card{justify-items:center;gap:calc(var(--u) * 1);display:grid}.review-card h2{font-size:calc(var(--u) * 4.4)}.stars{gap:calc(var(--u) * 1.2);display:flex}.star svg{width:calc(var(--u) * 8);fill:#3b2560;stroke:#5b3a8a;stroke-width:1px;height:auto}.star.is-on svg{fill:var(--gold);stroke:#fff;filter:drop-shadow(0 0 14px #ffd166cc);animation:.5s both star-in;animation-delay:calc(var(--i) * .25s)}@keyframes star-in{0%{transform:scale(0)rotate(-90deg)}}.review-stats{gap:calc(var(--u) * .6);font-size:calc(var(--u) * 2);margin:0;padding:0;list-style:none;display:grid}.review-stats .big,.review-stats b{font:800 calc(var(--u) * 2.8) var(--font-head);color:var(--pink-2)}.review-empty{font-size:calc(var(--u) * 2)}.better{font:800 calc(var(--u) * 2.2) var(--font-head);background:var(--gold);border-radius:999px;margin:0;padding:4px 18px;color:var(--card-ink)!important}.review-new{font-size:calc(var(--u) * 1.9);margin:0}.keycap{background:var(--purple);color:#fff;border-radius:.3em;padding:0 .5em;font-weight:600;display:inline-block}.review-actions{gap:calc(var(--u) * 1.5);margin-top:calc(var(--u) * .8);display:flex}@media (prefers-reduced-motion:reduce){.ch.is-nudge{animation:.4s flash!important}}.figure{width:100%;height:auto;display:block;overflow:visible}.item-thumb{width:100%;height:100%;display:block;overflow:visible}.item-thumb.is-silhouette *{fill:#4a2f72!important;stroke:#4a2f72!important;fill-opacity:1!important;opacity:1!important}.map-top{padding:calc(var(--u) * 1.2) calc(var(--u) * 2.5);grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;display:grid}.map-top>:first-child{justify-self:start}.map-top>:last-child{justify-self:end}.map-top-right{align-items:center;gap:calc(var(--u) * 1.6);display:flex}.map-logo{font-size:calc(var(--u) * 4.2);color:var(--pink-2);text-shadow:0 0 30px #ff4fa373}.artist{justify-items:start;line-height:1.15;display:grid}.artist-label{font-size:calc(var(--u) * 1.3);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}.artist-name{font:800 calc(var(--u) * 2.6) var(--font-head);color:var(--pink-2);overflow-wrap:anywhere}.link-btn{cursor:pointer;color:var(--ink-soft);font:600 calc(var(--u) * 1.3) var(--font-text);background:0 0;border:0;padding:2px 0;text-decoration:underline}.link-btn:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.map{grid-template-rows:auto 1fr auto;height:100dvh;display:grid;overflow:auto}.tour{padding:0 calc(var(--u) * 3);grid-template-rows:auto 1fr auto;min-height:0;display:grid}.tour-title{text-align:center;font-size:calc(var(--u) * 2.6);color:var(--ink)}.route{min-height:calc(var(--u) * 18);margin:calc(var(--u) * 2) calc(var(--u) * 4) calc(var(--u) * 3);position:relative}.route-line{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.route-line path{fill:none;stroke:#ff8cc68c;stroke-width:6px;stroke-dasharray:2 16;stroke-linecap:round;vector-effect:non-scaling-stroke}.station{left:var(--x);top:var(--y);color:var(--ink);font:inherit;background:0 0;border:0;justify-items:center;gap:4px;padding:0;display:grid;position:absolute;transform:translate(-50%,-50%)}button.station{cursor:pointer}.station-dot{min-width:calc(var(--u) * 7);height:calc(var(--u) * 7);padding:0 calc(var(--u) * .8);background:linear-gradient(135deg, var(--pink), var(--purple));font:800 calc(var(--u) * 2) var(--font-head);border-radius:999px;justify-content:center;align-items:center;gap:4px;transition:transform .15s;display:flex;box-shadow:0 0 0 4px #ffffffd9,0 8px 24px #ff4fa373}.station.is-locked .station-dot{min-width:0;width:calc(var(--u) * 7);padding:0;position:relative}.station-dot .keycap{background:#ffffff38}button.station:hover .station-dot{transform:scale(1.08)}button.station:focus-visible .station-dot{outline:4px solid var(--gold);outline-offset:4px}.station.is-next .station-dot{animation:1.6s ease-in-out infinite glow}.station-label{font:800 calc(var(--u) * 1.5) var(--font-head)}.station.is-locked .station-dot{color:#7c62a3;background:#2f1a4d;box-shadow:0 0 0 3px #4a2f72}.station-lock{width:calc(var(--u) * 2.6);height:calc(var(--u) * 2.6);color:#c7b5e6;background:#4a2f72;border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-4px;right:-4px}.station-lock svg{fill:currentColor;width:60%;height:60%}.station.is-locked .station-label{color:#8b74ad}.mini-stars{gap:2px;display:flex}.mini-stars svg{width:calc(var(--u) * 1.8);fill:#3b2560;stroke:#6a4a9a;stroke-width:1.5px;height:auto}.mini-stars .is-on svg{fill:var(--gold);stroke:#fff}.map-actions{justify-content:center;align-items:flex-end;gap:calc(var(--u) * 3);display:flex}.map-star{width:calc(var(--u) * 10);filter:drop-shadow(0 0 18px #ff4fa366)}.map-star[data-figure=pom]{transform:scaleX(-1)}.map-buttons{justify-items:center;gap:calc(var(--u) * 1);padding-bottom:calc(var(--u) * 2);display:grid}.worlds{padding:calc(var(--u) * 1) calc(var(--u) * 3) calc(var(--u) * 1.6)}.world-strip{gap:calc(var(--u) * .8);grid-template-columns:repeat(12,1fr);margin:0;padding:0;list-style:none;display:grid}.world{padding:calc(var(--u) * .6) 4px;border-radius:calc(var(--u) * 1.2);justify-items:center;gap:2px;display:grid}.world-n{font:800 calc(var(--u) * 2.4) var(--font-head);line-height:1}.world-name{font-size:calc(var(--u) * 1.15)}.world.is-open{background:linear-gradient(135deg, var(--pink), var(--purple));box-shadow:0 0 0 3px #fff}.world.is-soon{color:#6f5596;background:#241240;box-shadow:inset 0 0 0 2px #3a2360}.world.is-soon .world-n{color:#0000;-webkit-text-stroke:2px #5b3f86}.name-screen{height:100dvh;overflow:auto}.name-card{justify-items:center;gap:calc(var(--u) * .8);width:min(100%,720px);padding-block:calc(var(--u) * 1.8);display:grid}.name-card h1{font-size:calc(var(--u) * 3.6);color:var(--pink-2)}.name-card>p{font-size:calc(var(--u) * 1.8);margin:0}.name-stars{gap:12px;display:flex}.name-stars .figure{width:calc(var(--u) * 8)}.name-stars .figure-pom{transform:scaleX(-1)}.name-label{font:800 calc(var(--u) * 1.8) var(--font-head);margin-top:calc(var(--u) * .5)}.name-field{width:min(100%,480px);position:relative}.name-field input{width:100%;font:800 calc(var(--u) * 3) var(--font-head);text-align:center;padding:calc(var(--u) * .6) calc(var(--u) * 5) calc(var(--u) * .6) calc(var(--u) * 5);border:3px solid var(--pink-2);color:var(--card-ink);background:#fff;border-radius:999px}.name-field input:focus{outline:4px solid var(--gold);outline-offset:2px}.name-count{right:calc(var(--u) * 1.6);color:#8a78a8;font-size:calc(var(--u) * 1.4);position:absolute;top:50%;transform:translateY(-50%)}.name-count.is-full{color:var(--pink);font-weight:600}.name-ideas{font-size:calc(var(--u) * 1.5);color:var(--ink-soft);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.chip{font:600 calc(var(--u) * 1.5) var(--font-text);color:var(--ink);cursor:pointer;background:#ffffff14;border:2px solid #ff8cc680;border-radius:999px;padding:4px 14px}.chip:hover{background:#ff8cc633}.chip:focus-visible{outline:3px solid var(--gold)}.name-msg{min-height:1.5em;font:800 calc(var(--u) * 1.8) var(--font-head);margin:0;color:var(--gold)!important}.name-actions{gap:calc(var(--u) * 1.5);display:flex}.btn:disabled{opacity:.6;cursor:wait;transform:none}.is-shake{animation:.4s shake}.review-main{justify-items:center;gap:calc(var(--u) * 1);display:grid}.review:has(.has-items){width:min(100%, calc(var(--u) * 100))}.review-card.has-items{align-items:center;column-gap:calc(var(--u) * 3);grid-template-columns:minmax(0,1fr) auto}.review-card.has-items .review-actions{grid-column:1/-1;justify-self:center}.review-card.has-items .star svg{width:calc(var(--u) * 6.5)}.review-card.has-items .new-items-row{gap:calc(var(--u) * 1);flex-direction:column}.new-items{border:2px dashed var(--gold);border-radius:calc(var(--u) * 1.5);padding:calc(var(--u) * .8) calc(var(--u) * 2);background:#ffd1661f;justify-items:center;gap:6px;display:grid}.new-items h3{font:800 calc(var(--u) * 2.6) var(--font-head);color:var(--gold);margin:0}.new-items-row{gap:calc(var(--u) * 2);display:flex}.new-item{justify-items:center;gap:2px;display:grid}.new-item .item-thumb{width:calc(var(--u) * 8);height:calc(var(--u) * 6.5);animation:.6s pop-key}.new-item .item-name{font:800 calc(var(--u) * 1.8) var(--font-head)}.new-item .item-for{font-size:calc(var(--u) * 1.3);color:var(--ink-soft)}@media (width<=700px){.map-top{grid-template-columns:1fr auto}.map-top .map-logo{display:none}.world-strip{grid-template-columns:repeat(6,1fr)}.map-star{width:22vw}}.parent-link{right:calc(16px + env(safe-area-inset-right,0px));bottom:calc(10px + env(safe-area-inset-bottom,0px));opacity:.6;font-size:.85rem;position:fixed}.parent-link:hover,.parent-link:focus-visible{opacity:1}.wardrobe{grid-template-rows:auto 1fr;height:100dvh;display:grid;overflow:hidden}.wardrobe-body{gap:calc(var(--u) * 2.5);padding:0 calc(var(--u) * 2.5) calc(var(--u) * 2);grid-template-columns:minmax(0,5fr) minmax(0,6fr);min-height:0;display:grid}.dressing{justify-content:center;align-items:flex-end;gap:calc(var(--u) * 1);padding-bottom:calc(var(--u) * 4);display:flex;position:relative}.dress-star{z-index:1;justify-items:center;width:46%;margin:0;display:grid;position:relative}.dress-figure{filter:drop-shadow(0 0 22px #ff4fa359);width:100%}.dress-figure .item-layer{animation:.35s pop-key}.dress-star figcaption{font:800 calc(var(--u) * 2.2) var(--font-head);background:#ffffff1a;border-radius:999px;margin-top:4px;padding:2px 18px}.podium{left:4%;right:4%;bottom:calc(var(--u) * 1);height:calc(var(--u) * 9);background:radial-gradient(at 50% 30%,#ff8cc68c,#8b5cf640 60%,#0000 72%);border-radius:50%;position:absolute}.shelf{gap:calc(var(--u) * 1);grid-template-rows:auto auto 1fr;min-height:0;display:grid;position:relative}.tabs{gap:8px;display:flex}.tabs button{font:800 calc(var(--u) * 2) var(--font-head);color:var(--ink-soft);padding:calc(var(--u) * .4) calc(var(--u) * 2.4);cursor:pointer;background:#ffffff0f;border:2px solid #0000;border-radius:999px}.tabs button[aria-selected=true]{color:#fff;background:linear-gradient(135deg, var(--pink), var(--purple))}.tabs button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.shelf-hint{color:var(--ink-soft);font-size:calc(var(--u) * 1.5);margin:0}.item-grid{gap:calc(var(--u) * 1.2);grid-template-columns:repeat(4,minmax(0,1fr));align-content:start;min-height:0;padding:6px;display:grid;overflow:auto}.item{padding:calc(var(--u) * 1) calc(var(--u) * .6);border-radius:calc(var(--u) * 1.4);color:var(--ink);font:inherit;text-align:center;background:#241040d9;border:2px solid #ff8cc659;align-content:start;justify-items:center;gap:2px;display:grid;position:relative}.item .item-thumb{width:80%;height:calc(var(--u) * 7)}.item-name{font:800 calc(var(--u) * 1.65) var(--font-head);line-height:1.1}.item-for{font-size:calc(var(--u) * 1.2);color:var(--ink-soft)}button.item{cursor:pointer;transition:transform .12s,border-color .12s}button.item:hover{border-color:var(--pink-2);transform:translateY(-3px)}button.item:focus-visible{outline:4px solid var(--gold);outline-offset:2px}.item.is-on{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold), 0 0 22px #ffd16666}.item-badge{font:800 calc(var(--u) * 1.2) var(--font-head);background:var(--gold);color:var(--card-ink);border-radius:999px;padding:0 10px;position:absolute;top:6px;right:6px}.item-key{min-width:1.8em;font:800 calc(var(--u) * 1.3) var(--font-head);background:var(--purple);color:#fff;border-radius:6px;padding:0 6px;position:absolute;top:6px;left:6px}.item.is-locked{background:#1c0c32cc;border-style:dashed;border-color:#4a2f72}.item.is-locked .item-name{color:#9b85c0}.item.is-locked .item-key{background:#4a2f72}.btn-buy{font-size:calc(var(--u) * 1.6);padding:calc(var(--u) * .3) calc(var(--u) * 1.6);margin-top:4px}.is-short .btn-buy{background:#3b2560;box-shadow:inset 0 0 0 2px #6a4a9a}.item-short{font-size:calc(var(--u) * 1.15);color:var(--gold)}.toast{z-index:5;width:max-content;max-width:100%;font:800 calc(var(--u) * 1.8) var(--font-head);color:var(--card-ink);background:#fff;border-radius:18px;margin:0;padding:10px 22px;animation:.3s pop-key;position:absolute;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #00000059}.toast[data-kind=ok]{background:var(--gold)}@media (width<=800px){.wardrobe{height:auto;min-height:100dvh;overflow:auto}.wardrobe-body{grid-template-columns:1fr}.item-grid{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}}.lesson[data-part=game] .lesson-body{align-content:stretch}.lesson[data-part=game] .game-slot{width:min(100%, calc(var(--u) * 120));height:100%;min-height:0;display:grid}.lesson[data-part=game] .mascot{display:none}.mg{border-radius:calc(var(--u) * 2);background:radial-gradient(at 50% 110%,#ff4fa359,#0000 60%),linear-gradient(#12051f 0%,#2a0f4a 70%,#3a1560 100%);grid-template-rows:auto 1fr auto;min-height:0;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 3px #ff8cc659,0 0 50px #8b5cf64d}.mg-head{text-align:center;padding:calc(var(--u) * 1) 16px 0;z-index:2;position:relative}.mg-title{font-size:calc(var(--u) * 3.2);color:#fff;text-shadow:0 0 24px #ff4fa3b3}.mg-hint{color:var(--ink-soft);font-size:calc(var(--u) * 1.6);margin:2px 0 0}.mg-sky{min-height:0;position:relative}.mg-notes{inset:calc(var(--u) * 1) 0 calc(var(--u) * 6);position:absolute}.mg-score{top:calc(var(--u) * .6);right:calc(var(--u) * 1.4);z-index:3;font:800 calc(var(--u) * 1.8) var(--font-head);padding:calc(var(--u) * .3) calc(var(--u) * 1.2);color:var(--ink);background:#ffffff1a;border-radius:999px;position:absolute}.mg-score b{color:var(--gold);font-size:1.3em}.mg-score-note{color:var(--pink-2)}.mg-beam{clip-path:polygon(45% 0,55% 0,100% 100%,0 100%);transform-origin:50% 0;pointer-events:none;background:linear-gradient(#ffffff29,#0000 85%);width:28%;height:120%;animation:7s ease-in-out infinite alternate mg-sweep;position:absolute;top:-10%}.mg-beam-1{--a:-14deg;--b:10deg;background:linear-gradient(#ff8cc64d,#0000 85%);left:4%}.mg-beam-2{--a:8deg;--b:-8deg;animation-duration:9s;left:36%}.mg-beam-3{--a:14deg;--b:-10deg;background:linear-gradient(#a45cff52,#0000 85%);animation-duration:8s;right:4%}@keyframes mg-sweep{0%{transform:rotate(var(--a))}to{transform:rotate(var(--b))}}.mg-note{width:calc(var(--u) * 7.4);height:calc(var(--u) * 7.4);background:radial-gradient(circle at 35% 30%, #fff, hsl(var(--hue) 95% 82%) 45%, hsl(var(--hue) 85% 62%));box-shadow:0 0 0 4px #fff, 0 0 30px hsl(var(--hue) 95% 70% / .9);color:var(--card-ink);will-change:transform;z-index:2;border-radius:50%;place-items:center;display:grid;position:absolute;top:0}.mg-note:after{content:"♪";font-size:calc(var(--u) * 2.4);color:#fff;text-shadow:0 0 8px hsl(var(--hue) 95% 70%);position:absolute;top:-.45em;right:-.35em}.mg-letter{font:800 calc(var(--u) * 4.4) var(--font-text);line-height:1;animation:1.4s ease-in-out infinite mg-bob;display:block}@keyframes mg-bob{50%{transform:translateY(-4px)rotate(-5deg)}}.mg-note.is-nudge .mg-letter{animation:.4s shake}.mg-note.is-nudge{box-shadow:0 0 0 5px var(--gold), 0 0 34px var(--gold)}.mg-note.is-caught{opacity:0;transition:opacity .45s,scale .45s;scale:1.6}.mg-note.is-drift{opacity:0;translate:0 calc(var(--u) * 3);transition:opacity .85s,translate .85s}.mg-sparkle{top:calc(var(--u) * 3.7);z-index:3;pointer-events:none;width:0;height:0;position:absolute}.mg-sparkle i{background:var(--gold);clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);width:12px;height:12px;animation:.7s ease-out forwards mg-burst;position:absolute;top:-6px;left:-6px}.mg-sparkle i:first-child{--dx:0;--dy:-60px}.mg-sparkle i:nth-child(2){--dx:52px;--dy:-30px;background:var(--pink-2)}.mg-sparkle i:nth-child(3){--dx:52px;--dy:30px}.mg-sparkle i:nth-child(4){--dx:0;--dy:60px;background:#c9a8ff}.mg-sparkle i:nth-child(5){--dx:-52px;--dy:30px}.mg-sparkle i:nth-child(6){--dx:-52px;--dy:-30px;background:var(--pink-2)}@keyframes mg-burst{0%{opacity:1;transform:translate(0)scale(.4)}to{transform:translate(var(--dx), var(--dy)) scale(1.4) rotate(90deg);opacity:0}}.mg-stage{height:calc(var(--u) * 13);justify-content:center;align-items:flex-end;gap:calc(var(--u) * 22);display:flex;position:relative}.mg-floor{height:calc(var(--u) * 3.4);background:linear-gradient(#ff8cc6,#8b5cf6);border-top:3px solid #fff;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -6px 30px #ff4fa399}.mg-dancer{z-index:1;margin-bottom:calc(var(--u) * 1.4);position:relative}.mg-dancer .figure{width:calc(var(--u) * 10);filter:drop-shadow(0 0 16px #ffffff40);height:auto;display:block}.mg-dancer.is-dancing{animation:.6s mg-dance}.mg-pom.is-dancing{animation-name:mg-dance-2}@keyframes mg-dance{30%{transform:translateY(-18px)rotate(-8deg)}65%{transform:translateY(-6px)rotate(6deg)}}@keyframes mg-dance-2{30%{transform:translateY(-18px)rotate(8deg)}65%{transform:translateY(-6px)rotate(-6deg)}}.mg-dancer.is-bowing{animation:1.2s .2s both mg-bow}@keyframes mg-bow{40%,70%{transform:rotate(0)translateY(6px)scaleY(.9)}}.mg-cheer{left:50%;bottom:calc(var(--u) * 5);font:800 calc(var(--u) * 2.6) var(--font-head);color:var(--gold);text-shadow:0 0 18px #ffd166b3;z-index:2;position:absolute;transform:translate(-50%)}.mg-end{z-index:5;background:#10061e8c;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.mg-end-card{justify-items:center;gap:calc(var(--u) * .8);text-align:center;background:#26113f;animation:.45s pop-key;display:grid}.mg-end-card h2{font-size:calc(var(--u) * 5);color:var(--pink-2);text-shadow:0 0 24px #ff4fa399}.mg-end-count{font-size:calc(var(--u) * 2.2);margin:0}.mg-end-count b{font:800 calc(var(--u) * 3.2) var(--font-head);color:var(--gold)}.mg-end-sub{font-size:calc(var(--u) * 1.7);margin:0}.mg.is-over .mg-beam{animation-duration:2.5s}.mg.is-calm .mg-letter,.mg.is-calm .mg-beam{animation:none}.mg.is-calm .mg-dancer.is-dancing{filter:drop-shadow(0 0 18px var(--gold));animation:none}.mg.is-calm .mg-dancer.is-bowing{animation:none}.mg.is-calm .mg-sparkle i{animation-duration:.5s;--dx:0!important;--dy:0!important}.mg.is-calm .mg-note.is-drift{translate:none}.mg.is-calm .mg-note.is-nudge .mg-letter{animation:.4s flash}@media (prefers-reduced-motion:reduce){.mg-letter,.mg-beam,.mg-dancer.is-dancing,.mg-dancer.is-bowing{animation:none!important}.mg-note.is-nudge .mg-letter{animation:.4s flash!important}}.parent{--p-surface:#241040e0;--p-line:#d9c8f02e;--p-muted:#b9a8d6;--p-speed:#ff8cc6;--p-acc:#ffd166;--h0:#ffffff0a;--h1:#164e57;--h2:#1d7480;--h3:#33a8a8;--h4:#7fe3cf;height:100dvh;font-size:16px;line-height:1.45;overflow-y:auto}.parent .muted{color:var(--p-muted)}.parent h1{font-size:30px}.parent h2{margin-bottom:4px;font-size:22px}.parent p{margin:4px 0 12px}.btn-small{padding:8px 18px;font-size:16px}.parent[data-state=pin],.parent[data-state=unlinked]{place-items:center;padding:16px;display:grid}.parent-pin{justify-items:center;gap:8px;width:min(360px,100%);display:grid}.parent-pin p{margin:0}.pin-dots{gap:12px;margin:12px 0 4px;display:flex}.pin-dots span{border:2px solid var(--pink-2);border-radius:50%;width:16px;height:16px}.pin-dots span.is-on{background:var(--pink-2)}.pin-msg{min-height:3em;font-size:15px;color:var(--ink)!important}.pin-msg[data-kind=wait]{color:var(--gold)!important}.pin-pad{grid-template-columns:repeat(3,72px);gap:10px;display:grid}.pin-key{height:60px;color:var(--ink);font:800 24px var(--font-head);cursor:pointer;background:#ffffff0f;border:2px solid #ff8cc666;border-radius:16px}.pin-key:hover:not(:disabled){background:#ffffff24}.pin-key:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.pin-key:disabled{opacity:.4;cursor:default}.pin-key-soft{font-size:20px}.pin-key-ok{background:linear-gradient(135deg, var(--pink), var(--purple));border-color:#0000}.parent-pin .link-btn{margin-top:8px}.parent-wrap{grid-template-columns:minmax(0,1fr);gap:20px;max-width:1040px;margin:0 auto;padding:24px 16px 48px;display:grid}.psec,.tile{min-width:0}.parent-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.parent-head p{margin:4px 0 0}.parent-actions{flex-wrap:wrap;gap:10px;display:flex}.tiles{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.tile,.psec{background:var(--p-surface);border:1px solid var(--p-line);border-radius:16px;padding:16px 18px}.tile{align-content:start;gap:4px;display:grid}.tile-label{color:var(--p-muted);font-size:14px}.tile-num{font:800 32px var(--font-head)}.tile-keys{flex-wrap:wrap;align-items:center;gap:8px;min-height:40px;display:flex}.weak-key{border:2px solid var(--gold);background:#ffffff14;border-radius:10px;padding:2px 10px}.weak-key b{font-family:var(--font-head);margin-right:4px;font-size:20px}.delta{color:var(--ink);margin-left:4px;display:inline-block}.chart-pair{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.chart-box{margin:0}.chart-box figcaption{margin-bottom:4px;font-weight:600}.line-chart{width:100%;height:auto;display:block;overflow:visible}.line-chart .grid{stroke:var(--p-line);stroke-width:1px}.line-chart .axis{stroke:#d9c8f073;stroke-width:1px}.line-chart .tick,.line-chart .axis-title{fill:var(--p-muted);font-size:15px;font-family:var(--font-text)}.line-chart .value{fill:var(--ink);font-size:16px;font-weight:600;font-family:var(--font-text)}.line-chart .line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.line-chart .dot{stroke:#2a1248;stroke-width:2px}.line-chart .dot.is-active{r:6.5}.line-chart .cross{stroke:#ffffff59;stroke-width:1px;stroke-dasharray:3 3}.line-chart .hit{fill:#0000;cursor:crosshair;outline:none}.line-chart .hit:focus-visible{fill:#ffd1661f}#chart-speed .line{stroke:var(--p-speed)}#chart-speed .dot{fill:var(--p-speed)}#chart-acc .line{stroke:var(--p-acc)}#chart-acc .dot{fill:var(--p-acc)}.table-view{margin-top:10px}.table-view summary{cursor:pointer;color:var(--p-muted)}.table-view table{border-collapse:collapse;width:100%;margin-top:8px;font-size:14px}.table-view th,.table-view td{text-align:right;border-bottom:1px solid var(--p-line);padding:4px 10px}.table-view th:first-child,.table-view td:first-child{text-align:left}.empty{padding:16px 0}.heatmap{gap:6px;padding:4px 2px 8px;display:grid;overflow-x:auto}.hrow{gap:6px;display:flex}.hrow-1{padding-left:22px}.hrow-2{padding-left:40px}.hrow-3{padding-left:60px}.hrow-4{padding-left:170px}.hrow-extra{align-items:center;margin-top:6px}.hkey{cursor:default;width:56px;height:56px;font-family:var(--font-text);color:var(--ink);border:1px solid #0000;border-radius:10px;flex:none;place-content:center;gap:0;display:grid}.hkey:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.hk-label{font:800 18px var(--font-head);line-height:1}.hk-num{font-size:12px;line-height:1.2}.hkey-space{width:300px}.lv-x{background:var(--h0);color:#d9c8f066;border:1px dashed #d9c8f040}.lv-0{background:#ffffff1a;border-color:#d9c8f04d}.lv-1{background:var(--h1)}.lv-2{background:var(--h2)}.lv-3{background:var(--h3);color:#0d1f24}.lv-4{background:var(--h4);color:#0d1f24}.hkey.is-weak{box-shadow:0 0 0 3px var(--gold)}.legend{color:var(--p-muted);flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:13px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.sw{border-radius:4px;width:16px;height:16px;display:inline-block}.sw-weak{box-shadow:inset 0 0 0 3px var(--gold)}.cal{gap:4px;display:grid;overflow-x:auto}.cal-row{grid-template-columns:64px repeat(7,40px) 72px;align-items:center;gap:4px;display:grid}.cal-head span{color:var(--p-muted);text-align:center;font-size:13px}.cal-head span:first-child{text-align:left}.cal-week{color:var(--p-muted);font-size:13px}.cal-day{background:#ffffff0d;border-radius:8px;outline:none;place-items:center;height:32px;font-size:13px;font-weight:600;display:grid}.cal-day.is-played{background:var(--purple);color:#fff}.cal-day.is-future{background:0 0}.cal-day.is-today{box-shadow:inset 0 0 0 2px var(--gold)}.cal-day:focus-visible{outline:3px solid var(--gold);outline-offset:1px}.cal-total{text-align:right;color:var(--p-muted);font-size:13px}.ptip{z-index:10;pointer-events:none;color:#22103d;background:#fff8fc;border-radius:10px;max-width:320px;padding:8px 12px;font-size:14px;line-height:1.35;position:fixed;box-shadow:0 6px 24px #0006}@media (width<=720px){.hkey{width:44px;height:48px}.hk-label{font-size:15px}.hkey-space{width:220px}.hrow-1{padding-left:14px}.hrow-2{padding-left:26px}.hrow-3{padding-left:40px}.hrow-4{padding-left:120px}}.sound-ctl{--s:max(40px, calc(var(--u) * 4.2));z-index:20;left:calc(max(12px, var(--u) * 1.2) + env(safe-area-inset-left,0px));bottom:calc(var(--u) * 11);gap:calc(var(--u) * .8);flex-direction:column;display:flex;position:fixed}.sound-btn{width:var(--s);height:var(--s);color:#fff;cursor:pointer;background:#241040d9;border:0;border-radius:50%;place-items:center;padding:0;transition:transform .12s,background .12s;display:grid;box-shadow:inset 0 0 0 2px #ff8cc699,0 4px 14px #0000004d}.sound-btn:hover{transform:scale(1.08)}.sound-btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.sound-btn svg{fill:currentColor;width:56%;height:56%}.sound-btn .sound-slash{stroke:#0000;stroke-width:2.6px;stroke-linecap:round;fill:none}.sound-btn .sound-wave{stroke:currentColor;stroke-width:2px;stroke-linecap:round}.sound-btn[aria-pressed=true]{background:linear-gradient(135deg, var(--pink), var(--purple))}.sound-btn.is-off{color:var(--ink-soft);opacity:.75}.sound-btn.is-off .sound-slash{stroke:var(--pink-2)}.sound-btn.is-off .sound-wave{stroke:#0000}.sound-btn[aria-expanded=true]{box-shadow:inset 0 0 0 3px var(--gold)}.sound-panel{text-align:left;width:max-content;min-width:230px;font-size:max(15px, calc(var(--u) * 1.4));background:#241040f5;flex-direction:column;gap:10px;padding:14px 18px;display:flex;position:absolute;bottom:0;left:calc(100% + 12px)}.sound-panel h2{font-size:1.25em}.sound-row{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;display:flex}.sound-vol{flex-direction:column;align-items:stretch;gap:4px}.sound-vol b{color:var(--gold);font-weight:600}.sound-vol input{width:100%;accent-color:var(--pink)}.sound-vol input:disabled{opacity:.4}.sound-switch{appearance:none;cursor:pointer;background:#ffffff2e;border-radius:999px;flex:none;width:46px;height:26px;margin:0;transition:background .15s;position:relative}.sound-switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.sound-switch:checked{background:var(--pink)}.sound-switch:checked:after{transform:translate(20px)}.sound-switch:focus-visible{outline:3px solid var(--gold);outline-offset:2px}@media (prefers-reduced-motion:reduce){.sound-btn,.sound-switch,.sound-switch:after{transition:none}}
