:root{font-family:Arial,Helvetica,sans-serif;color:#17352f;background:#b8e4dd;font-synthesis:none;--red:#ed383b;--ink:#193930;--cream:#fffdf1;--gold:#ffc64c;--shadow:0 14px 42px #123d2926}
*{box-sizing:border-box}body{margin:0;min-height:100svh;overflow:hidden}button,select,a{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #0b756b;outline-offset:4px}button{color:inherit}button:disabled{cursor:default}button svg{width:23px;height:23px}button:not(:disabled){transition:transform .16s,background .16s,box-shadow .16s}button:not(:disabled):active{transform:translateY(2px)}.hidden{display:none!important}#stage{position:fixed;inset:0;background:linear-gradient(#9ed8df,#dce9bd)}#stage canvas{display:block;width:100%;height:100%;touch-action:none}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,#e7f1dfeb 0%,#e7f1dfda 24%,#e7f1df75 40%,transparent 64%);transition:opacity .6s}body.playing .vignette{opacity:0}
.topbar{position:fixed;top:0;left:0;right:0;z-index:5;padding:22px 34px;display:flex;align-items:center;gap:24px;pointer-events:none}.brand,.tools{pointer-events:auto}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}.brand-mark{background:var(--red);color:white;width:46px;height:46px;border-radius:12px;display:grid;place-content:center;font-size:23px;font-weight:900;letter-spacing:-6px;padding-right:6px;transform:rotate(-6deg);box-shadow:0 3px 0 #b2222b}.brand-mark span{color:var(--gold)}.brand-word{font-size:18px;line-height:.95;font-weight:950;letter-spacing:-.9px;font-style:italic}.brand-word span{display:block;color:var(--red);font-size:24px;letter-spacing:1.3px}.festival{margin-left:28px;display:flex;align-items:center;gap:11px;font-size:12px;letter-spacing:1.6px;font-weight:800}.flag{display:inline-block;width:26px;height:17px;background:linear-gradient(var(--red) 50%,white 50%);border-radius:2px;box-shadow:0 1px 3px #16332720}.festival-divider{opacity:.35}.tools{display:flex;gap:8px;margin-left:auto}.icon-button{border:1px solid #fff9;background:#fffdf1d9;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;font-weight:900;font-size:23px;backdrop-filter:blur(12px);box-shadow:0 3px 8px #15372a10}.icon-button:hover{background:white}.icon-button svg{width:22px;height:22px}
.menu{position:absolute;left:clamp(24px,4.1vw,76px);top:50%;transform:translateY(-43%);width:min(440px,37vw);z-index:3}.eyebrow{font-size:12px;letter-spacing:2px;font-weight:900;display:flex;align-items:center;gap:8px}.tiny-checker{height:14px;width:18px;background:repeating-conic-gradient(var(--ink) 0% 25%,transparent 0% 50%) 0 0/8px 8px}h1{font-size:clamp(42px,5.2vw,76px);line-height:.98;font-weight:950;letter-spacing:-3px;margin:17px 0 16px;font-style:italic}h1>span{color:var(--red)}.intro{font-size:16px;line-height:1.55;margin:0 0 22px;color:#3b5549}.field-label{display:flex;align-items:center;gap:9px;font-size:12px;letter-spacing:1.4px;font-weight:900;margin:17px 0 10px}.field-label>span{font-size:12px;color:#748e73;font-weight:800;letter-spacing:0}.character-options{display:flex;gap:8px}.character{position:relative;display:flex;flex:1;align-items:center;gap:8px;border:1.5px solid #a2baa17d;border-radius:13px;background:#fffdf17d;padding:10px 8px;text-align:left;min-width:0}.character.selected{border-color:var(--red);background:#fffdf1;box-shadow:0 4px 0 #ed383b12}.character:hover{background:#fffdf1}.character i{width:30px;height:36px;display:grid;place-items:center;background:var(--shirt);color:white;font-style:italic;font-size:21px;font-weight:900;border-radius:7px;flex-shrink:0;box-shadow:inset 0 -4px #00000013}.character b{font-size:14px;display:block}.character small{display:block;font-size:12px;margin-top:3px;color:#63715d;white-space:nowrap}.chosen{display:none;position:absolute;right:-4px;top:-5px;background:var(--red);color:white;border-radius:50%;width:17px;height:17px;font-size:12px;text-align:center;line-height:17px}.selected .chosen{display:block}.arena-options{display:flex;gap:8px}.arena{flex:1;background:#fffdf17d;border:1.5px solid #a2baa17d;border-radius:10px;padding:10px 9px;text-align:left}.arena b{display:block;font-size:14px}.arena small{display:block;font-size:12px;color:#677d65;margin-top:4px}.arena.selected{border-color:var(--ink);background:var(--ink);color:white}.arena.selected small{color:#c9d9ca}.settings-row{display:flex;justify-content:space-between;gap:18px;margin:17px 0}.settings-row label{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:#52705b}.settings-row select{font-size:13px;font-weight:700;border:0;border-bottom:1px solid #9cae92;background:transparent;color:var(--ink);padding:4px 15px 4px 2px;max-width:115px}.primary{display:flex;align-items:center;justify-content:center;gap:18px;background:var(--red);color:white;border:none;border-radius:13px;padding:18px 20px;font-size:16px;letter-spacing:1.4px;font-weight:900;width:100%;box-shadow:0 5px 0 #b5202c,0 12px 24px #b1292820}.primary:disabled{background:#aeaaa0;box-shadow:none;opacity:.7}.primary:hover:not(:disabled){background:#d92933;box-shadow:0 5px 0 #a51d26,0 12px 25px #b1292830}.primary>span{font-size:24px;line-height:.7}.start-hint{font-size:12px;color:#496c56;text-align:center;margin:15px -12px 0;line-height:1.8}.start-hint>span{padding:0 5px;color:#8c9a7f}kbd{display:inline-block;font:700 12px Arial;border:1px solid currentColor;border-radius:4px;padding:3px 5px;opacity:.75;line-height:1.1}.best-record{font-size:12px;color:#5a7962;text-align:center;margin-top:9px;font-weight:600}.arena-tag{position:absolute;right:38px;bottom:39px;display:flex;align-items:center;gap:14px;background:#fffdf1ed;box-shadow:var(--shadow);border-radius:14px;padding:17px 21px;border:1px solid #fff}.arena-number{font-size:36px;font-weight:900;color:var(--red);font-style:italic;letter-spacing:-1px}.arena-tag div>span{display:block;font-size:12px;letter-spacing:1.4px;font-weight:800;margin-bottom:6px}.arena-tag b{display:block;font-size:12px;letter-spacing:1px;color:#67816c}.arena-tag b>span{margin:0 7px}.tag-checker{width:30px;height:30px;opacity:.15;background:repeating-conic-gradient(var(--ink) 0% 25%,transparent 0% 50%) 0 0/14px 14px;margin-left:12px}.scene-caption{position:absolute;bottom:24px;left:4.1vw;display:flex;align-items:center;gap:8px;font-size:12px;color:#4b6e55;font-weight:600}.red-line{width:19px;height:3px;background:var(--red)}
.hud{position:fixed;inset:0;z-index:4;pointer-events:none}.hud button{pointer-events:auto}.race-stats{position:absolute;top:100px;left:30px;display:flex;align-items:center;gap:25px;background:#fffdf1ee;box-shadow:var(--shadow);border:1px solid white;padding:17px 22px;border-radius:17px}.race-stats div>span{display:block;font-size:12px;font-weight:800;letter-spacing:1.5px;margin-bottom:5px;color:#60806c}.race-stats strong{font-size:27px;font-variant-numeric:tabular-nums;letter-spacing:-1px}.race-stats small{font-size:16px;color:#819180;letter-spacing:0}.position-stat{border-right:1px solid #d7e2d0;padding-right:24px}.position-stat strong{color:var(--red);font-size:37px;line-height:.95}.race-progress{position:absolute;top:103px;left:50%;transform:translateX(-25%);width:min(26vw,360px)}.progress-track{height:8px;background:#fffdf1c4;border-radius:10px;position:relative;margin-top:17px;box-shadow:0 2px 8px #183c2920}.progress-dot{position:absolute;top:50%;width:19px;height:19px;transform:translate(-50%,-50%);background:var(--dot);border:3px solid #fffdf1;border-radius:50%;box-shadow:0 2px 6px #0002;transition:left .1s linear}.progress-dot.player{width:24px;height:24px;z-index:2;border:3px solid white;outline:2px solid #193930}.finish-mark{position:absolute;right:-5px;top:-12px;background:repeating-conic-gradient(#24432f 0% 25%,white 0% 50%) 0 0/10px 10px;height:30px;width:9px}.progress-labels{display:flex;justify-content:space-between;font-size:12px;font-weight:900;letter-spacing:1.1px;margin-top:14px}.rivals{position:absolute;right:30px;top:100px;width:175px;padding:7px 13px;background:#fffdf1df;border:1px solid white;border-radius:14px;box-shadow:var(--shadow)}.rival{display:flex;align-items:center;gap:8px;font-size:13px;line-height:29px;color:#536e59}.rival b{font-size:12px;width:13px}.rival i{width:8px;height:8px;border-radius:50%;background:var(--dot)}.rival em{font-size:12px;font-style:normal;margin-left:auto}.rival.you{color:var(--red);font-weight:800}.race-controls{position:absolute;top:198px;left:32px;display:flex;gap:6px}.race-controls button{background:#fffdf1ce;border:0;border-radius:6px;padding:7px 10px;font-size:12px;font-weight:900;letter-spacing:.5px}.race-controls kbd{font-size:12px;padding:1px 3px;margin-left:4px}.jump-feedback{position:absolute;top:29%;left:50%;transform:translateX(-50%) rotate(-5deg);font-size:38px;letter-spacing:-1.5px;font-weight:950;font-style:italic;color:#fffbed;text-shadow:0 3px 0 #2b5941,0 6px 22px #17412560;white-space:nowrap;opacity:0;transition:opacity .13s}.jump-feedback.show{opacity:1;animation:pop .2s ease-out}.jump-feedback.perfect{color:var(--gold);text-shadow:0 3px 0 #72491c,0 6px 22px #17412560}.jump-feedback.early{color:#fffdf1;text-shadow:0 3px 0 #bc3536}.combo{position:absolute;top:calc(29% + 48px);left:50%;transform:translateX(-50%);font-size:14px;font-weight:900;color:#fffbe6;text-shadow:0 2px 6px #144329;letter-spacing:1.2px}.rhythm-panel{position:absolute;bottom:164px;left:50%;transform:translateX(-50%);width:min(350px,40vw);padding:15px 18px 12px;border:1px solid #fff8;border-radius:15px;background:#14382beb;box-shadow:var(--shadow);color:white}.rhythm-label{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:12px}.rhythm-label b{letter-spacing:1.1px}.rhythm-label span{font-size:12px;color:#c4d5bf}.rhythm-track{height:15px;position:relative;background:#ffffff20;border-radius:5px;margin:12px 0 8px;overflow:visible}.rhythm-zone{position:absolute;left:77%;right:0;top:0;bottom:0;background:var(--gold);border-radius:0 5px 5px 0}.rhythm-zone:after{content:'';position:absolute;inset:2px;border:1px dashed #a57c21;border-radius:3px}#rhythm-fill{height:100%;width:0;background:#cbe5ce66;border-radius:5px}#rhythm-pointer{position:absolute;left:0;top:-4px;width:5px;height:23px;border-radius:3px;background:#fff;box-shadow:0 0 0 2px #224630}.rhythm-legend{display:flex;justify-content:space-between;font-size:12px;font-weight:700;letter-spacing:1px;color:#b7cbb0}.rhythm-legend span:last-child{color:var(--gold)}.action-pad{position:absolute;bottom:61px;left:50%;transform:translateX(-50%);display:flex;gap:15px;align-items:center}.jump-button{display:grid;grid-template-columns:1fr 34px;gap:5px 18px;background:var(--red);border:2px solid #ff8a76;border-radius:18px;box-shadow:0 6px 0 #a82a2c,0 10px 24px #142e2850;color:white;text-align:left;padding:19px 24px;min-width:212px;touch-action:none;user-select:none;-webkit-user-select:none}.jump-button>span{font-size:23px;font-weight:950;letter-spacing:.5px;line-height:1}.jump-button small{font-size:12px;font-weight:800;letter-spacing:1px;color:#ffd2be}.jump-button svg{grid-column:2;grid-row:1/3;align-self:center;width:31px;height:31px}.jump-button.held{background:#ce2836;transform:translateY(4px);box-shadow:0 2px 0 #a82a2c}.boost-button{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;gap:8px;min-width:176px;height:67px;border:1px solid #fffa;border-radius:14px;background:#fffdf1ef;text-align:left;padding:12px 14px;box-shadow:0 4px 0 #668a6b66;touch-action:none;user-select:none}.boost-button:disabled{color:#79866b;background:#f3f1d5da}.boost-button>span:nth-child(2){font-size:12px;font-weight:900;letter-spacing:1px}.boost-button small{display:block;font-size:12px;letter-spacing:0;font-weight:700;margin-top:5px}.boost-icon{font-size:30px;line-height:1}.boost-button kbd{font-size:12px;padding:3px;margin-left:3px}.boost-fill{position:absolute;bottom:0;left:0;height:4px;background:#f1b534;width:0;transition:width .15s}.boost-button.ready{background:#ffdb62;animation:glow 1s infinite alternate}.boost-button.active{background:#ffda51;border-color:#ffeaba}.race-tip{position:absolute;bottom:13px;left:0;right:0;text-align:center;font-size:12px;color:white;font-weight:700;text-shadow:0 1px 4px #163a22;pointer-events:none;padding:0 15px}
.countdown{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:8;background:#19392f24;pointer-events:none;color:white;text-shadow:0 6px 0 #203e35,0 10px 50px #16322b80}.countdown small{font-size:14px;font-weight:900;letter-spacing:2.2px}.countdown b{font-size:160px;line-height:1.1;font-weight:950;font-style:italic;color:var(--gold);animation:pop .3s}.result{position:absolute;left:50%;top:50%;transform:translate(-50%,-46%);z-index:6;width:min(510px,calc(100vw - 36px));border-radius:25px;border:2px solid white;padding:25px 34px;background:#fffdf1f2;box-shadow:0 25px 80px #1a3e3970;text-align:center;backdrop-filter:blur(14px)}.result-badge{font-size:12px;letter-spacing:2px;font-weight:900;color:#789074}.result-medal{font-size:43px;font-style:italic;font-weight:950;width:74px;height:74px;margin:16px auto 10px;display:grid;place-items:center;background:var(--gold);border:5px solid #edb743;color:#76472a;border-radius:50%;box-shadow:0 5px 0 #d59937;transform:rotate(-8deg)}.result h2{font-size:32px;letter-spacing:-1.4px;line-height:1;margin:18px 0 9px;font-style:italic;font-weight:950;color:var(--red)}.result p{font-size:14px;color:#72826d;margin:0 0 17px}.result-summary{display:flex;justify-content:space-around;gap:10px;border-top:1px solid #d9e1cb;border-bottom:1px solid #d9e1cb;padding:15px 0;margin:13px 0}.result-summary span{display:block;font-size:12px;letter-spacing:.8px;font-weight:800;color:#829275;margin-bottom:7px}.result-summary b{font-size:21px;font-variant-numeric:tabular-nums}.result-table{margin:12px 0}.result-row{display:flex;align-items:center;gap:12px;font-size:14px;padding:8px 10px;border-radius:8px;text-align:left}.result-row.you{background:#f9e4d5;color:#c02c30;font-weight:800}.result-row b{width:16px}.result-row .person-dot{width:8px;height:8px;border-radius:50%;background:var(--dot)}.result-row time{margin-left:auto;font-size:13px;font-variant-numeric:tabular-nums}.record-message{font-size:12px;color:#b88222;min-height:16px;font-weight:800;margin:9px 0 15px}.result .primary{padding:15px}.secondary{background:transparent;border:0;color:#5e7a60;font-size:13px;padding:15px 10px 0;font-weight:800}.secondary:hover{color:var(--red)}
dialog{border:0;border-radius:22px;padding:35px;background:var(--cream);color:var(--ink);width:min(540px,calc(100vw - 32px));max-height:calc(100svh - 32px);box-shadow:0 30px 100px #122f3970}dialog::backdrop{background:#0b352b88;backdrop-filter:blur(5px)}dialog h2{font-size:37px;letter-spacing:-1.5px;font-style:italic;font-weight:950;line-height:1.03;margin:16px 0 24px}.dialog-close:not(.primary){position:absolute;right:16px;top:13px;width:32px;height:32px;border:0;border-radius:50%;background:#e1e9d3;font-size:26px}.instructions{padding:0 0 0 22px;margin:0}.instructions li{padding-left:7px;margin:17px 0;font-size:14px}.instructions li::marker{color:var(--red);font-weight:900}.instructions b{display:block;font-size:15px;margin-bottom:5px}.instructions span{display:block;font-size:14px;color:#68745e;line-height:1.5}.help-keys{display:flex;gap:20px;font-size:12px;margin:25px 0}.help-keys kbd{font-size:12px}dialog .primary{font-size:13px}.error-panel{position:fixed;z-index:30;background:var(--cream);box-shadow:var(--shadow);padding:35px;border-radius:20px;left:50%;top:50%;transform:translate(-50%,-50%);width:min(430px,calc(100vw - 30px))}.error-panel p{line-height:1.6;font-size:16px}.error-panel h2{font-size:25px}#loading{position:fixed;inset:0;z-index:25;background:#e2edda;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:17px;color:var(--ink);transition:opacity .4s}#loading strong{font-size:16px}#load-detail{font-size:13px;color:#6e886f}.loader-mark{width:70px;height:70px;display:grid;place-content:center;font-size:38px;font-weight:900;letter-spacing:-9px;padding-right:9px;color:white;background:var(--red);border-radius:18px;transform:rotate(-6deg);position:relative;display:block;line-height:70px;text-align:center;animation:bob .6s alternate infinite}.loader-mark span{color:var(--gold)}@keyframes bob{to{transform:translateY(-12px) rotate(5deg)}}@keyframes pop{from{scale:.75}to{scale:1}}@keyframes glow{to{box-shadow:0 4px 0 #a57c3d,0 0 23px #ffdc6a80}}
@media(min-width:1500px){.menu{width:470px}.character{padding:14px 12px}.arena{padding:12px}.intro{margin-bottom:28px}.field-label{margin-top:23px}h1{font-size:83px}}
@media(max-height:770px) and (min-width:761px){.topbar{padding-top:15px}.menu{top:88px;transform:none;width:410px}.eyebrow{font-size:12px}h1{font-size:53px;margin:11px 0}.intro{font-size:14px;line-height:1.4;margin-bottom:10px}.field-label{margin:12px 0 7px}.character{padding:8px}.arena{padding:8px}.settings-row{margin:10px 0}.primary{padding:14px}.start-hint{margin-top:12px}.scene-caption{display:none}.best-record{margin-top:3px}.result{transform:translate(-50%,-47%);padding:17px 30px}.result-medal{width:55px;height:55px;font-size:33px;margin:10px auto}.result h2{font-size:29px;margin:14px 0 8px}.result-summary{padding:11px 0;margin:10px 0}.result-row{padding:6px 10px}.result p{margin-bottom:10px}.record-message{margin:7px 0 11px}}
@media(max-width:1000px) and (min-width:761px){.menu{width:365px;left:26px}.character{gap:5px}.character i{width:24px;height:31px;font-size:18px}.character small{font-size:12px}.festival{font-size:12px;letter-spacing:1px;margin-left:0}.race-progress{width:24vw;transform:translateX(-10%)}.race-stats{gap:15px;padding:15px}.race-stats strong{font-size:23px}.rivals{width:150px}.race-stats small{font-size:14px}}
@media(max-width:760px){body:not(.playing){overflow-y:auto;min-height:950px}#stage{height:100svh}.topbar{padding:16px 18px;gap:10px}.brand-mark{width:38px;height:38px;font-size:20px}.brand-word{font-size:15px}.brand-word span{font-size:20px}.festival{display:none}.icon-button{height:36px;width:36px}.tools{gap:6px}.vignette{background:linear-gradient(0deg,#e3edda 0%,#e3eddaf5 43%,#e3edda44 66%,transparent 85%)}.menu{left:20px;right:20px;width:auto;top:clamp(245px,34svh,340px);transform:none;padding:0 4px 35px}.eyebrow{font-size:12px;letter-spacing:1.3px}h1{font-size:50px;line-height:.94;letter-spacing:-2px;margin:12px 0}.intro{font-size:14px;line-height:1.5;margin-bottom:19px}.field-label{font-size:12px;margin:17px 0 9px}.character{padding:11px 8px}.character small{font-size:12px}.character b{font-size:13px}.character i{height:33px;width:27px;font-size:19px}.arena{padding:10px}.arena b{font-size:13px}.settings-row{margin:17px 0}.settings-row label{font-size:12px}.settings-row select{font-size:13px}.primary{padding:17px}.arena-tag{top:86px;right:18px;bottom:auto;padding:10px 12px;gap:9px;border-radius:11px;background:#fffdf1d9}.arena-number{font-size:25px}.arena-tag div>span{font-size:12px;letter-spacing:1px;margin-bottom:4px}.arena-tag b{font-size:12px}.tag-checker{display:none}.scene-caption{display:none}.start-hint{font-size:12px;margin:15px 0 0}.best-record{font-size:12px}.hud .race-stats{top:78px;left:14px;right:14px;gap:18px;padding:13px 17px;justify-content:space-between;border-radius:14px}.race-stats strong{font-size:25px}.race-stats div>span{font-size:12px;letter-spacing:1px}.position-stat{padding-right:20px}.position-stat strong{font-size:33px}.race-stats small{font-size:14px}.race-progress{top:166px;left:24px;width:calc(100% - 48px);transform:none}.progress-track{height:6px;margin-top:6px}.progress-dot{width:14px;height:14px;border-width:2px}.progress-dot.player{width:18px;height:18px;border-width:2px;outline-width:1px}.finish-mark{height:25px;top:-9px}.progress-labels{font-size:12px;margin-top:10px}.rivals{top:207px;right:14px;width:113px;padding:5px 8px;border-radius:10px;background:#fffdf1cb}.rival{font-size:12px;line-height:24px;gap:5px}.rival b{width:10px;font-size:12px}.rival em{display:none}.rival i{height:6px;width:6px}.race-controls{top:207px;left:14px;flex-direction:column;gap:6px}.race-controls button{font-size:12px;padding:6px 8px;text-align:left}.jump-feedback{top:37%;font-size:31px}.combo{top:calc(37% + 38px);font-size:12px}.rhythm-panel{bottom:151px;width:min(320px,calc(100vw - 45px));padding:12px 15px 10px}.rhythm-label{font-size:12px}.rhythm-label span{font-size:12px}.rhythm-track{height:13px;margin:10px 0 7px}#rhythm-pointer{height:21px}.rhythm-legend{font-size:12px}.action-pad{bottom:50px;gap:11px;width:calc(100% - 32px);justify-content:center}.jump-button{padding:18px 16px;min-width:0;width:52%;max-width:235px;gap:4px 6px;border-radius:15px}.jump-button>span{font-size:23px}.jump-button small{font-size:12px}.jump-button svg{width:27px}.boost-button{min-width:0;padding:12px 10px;gap:6px;width:43%;max-width:185px;height:68px}.boost-button>span:nth-child(2){font-size:12px}.boost-button small{font-size:12px}.boost-button kbd{display:none}.boost-icon{font-size:25px}.race-tip{font-size:12px;bottom:8px;padding:0 20px;line-height:1.4}.countdown small{font-size:12px}.countdown b{font-size:125px}.result{position:fixed;top:50%;max-height:calc(100svh - 100px);overflow-y:auto;transform:translate(-50%,-43%);padding:22px}.result h2{font-size:29px}.result-medal{width:58px;height:58px;font-size:35px;margin:14px auto}.result-summary{gap:5px}.result-summary span{font-size:12px;letter-spacing:.3px}.result-summary b{font-size:19px}.result-row{font-size:13px}.result .primary{font-size:14px}dialog{padding:27px 23px}dialog h2{font-size:32px}.help-keys{gap:12px;font-size:12px}body.playing{height:100svh;overflow:hidden}}
@media(max-height:580px) and (orientation:landscape){body:not(.playing){overflow-y:auto;min-height:690px}.menu{top:82px;transform:none;width:380px}.topbar{padding:12px 20px}.arena-tag{bottom:22px}.race-stats{top:67px;padding:9px 13px;gap:15px;left:18px}.race-stats strong{font-size:22px}.race-stats div>span{font-size:12px}.position-stat strong{font-size:28px}.race-progress{top:70px}.rivals{top:67px;right:18px;width:140px}.race-controls{top:144px;left:19px}.rhythm-panel{bottom:114px;width:290px;padding:8px 12px}.rhythm-label{font-size:12px}.rhythm-legend{font-size:12px}.rhythm-track{height:11px;margin:8px 0 6px}#rhythm-pointer{height:19px}.action-pad{bottom:32px}.jump-button{padding:12px 20px;min-width:186px}.jump-button>span{font-size:20px}.boost-button{height:57px}.race-tip{font-size:12px;bottom:0}.jump-feedback{font-size:28px;top:29%}.combo{top:calc(29% + 33px);font-size:12px}.result{position:fixed;top:70px;transform:translateX(-50%);max-height:calc(100svh - 82px);overflow-y:auto}.result-medal{display:none}.result-summary{margin:10px 0}.countdown b{font-size:110px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

@media(max-width:400px){.character{padding:10px 6px;gap:6px}.character i{width:22px;height:30px;font-size:17px}.character small{font-size:12px}.start-hint>span{padding:0 2px}.rhythm-label{flex-wrap:wrap}.race-controls kbd{display:none}}
