:root{--stage-h:min(100svh, 62.5vw);--stage-w:min(100vw, 160svh);--u:calc(var(--stage-h) / 100);--tu:calc(5px + var(--stage-h) / 267);--fs-2xs:clamp(8px, calc(var(--tu) * 1.4), 15px);--fs-xs:clamp(9px, calc(var(--tu) * 1.7), 18px);--fs-sm:clamp(10px, calc(var(--tu) * 2), 20px);--fs-md:clamp(11px, calc(var(--tu) * 2.3), 22px);--fs-lg:clamp(12px, calc(var(--tu) * 2.6), 26px);--fs-xl:clamp(16px, calc(var(--tu) * 3.6), 36px);--fs-2xl:clamp(24px, calc(var(--tu) * 6), 60px);--fs-3xl:clamp(30px, calc(var(--tu) * 9), 88px);--fs-4xl:clamp(56px, calc(var(--tu) * 20), 200px);--sp-1:clamp(2px, calc(var(--u) * .5), 6px);--sp-2:clamp(4px, calc(var(--u) * 1), 10px);--sp-3:clamp(6px, calc(var(--u) * 1.5), 15px);--sp-4:clamp(8px, calc(var(--u) * 2.25), 22px);--sp-5:clamp(10px, calc(var(--u) * 3), 30px);--sp-6:clamp(12px, calc(var(--u) * 4), 40px);--sp-7:clamp(16px, calc(var(--u) * 5.5), 56px);--r-sm:clamp(4px, calc(var(--u) * .75), 9px);--r-md:clamp(8px, calc(var(--u) * 2), 20px);--r-lg:clamp(10px, calc(var(--u) * 3), 30px);--r-pill:999px;--icon-sm:clamp(16px, calc(var(--u) * 2.75), 30px);--icon-md:clamp(24px, calc(var(--u) * 5.5), 60px);--hit-min:clamp(34px, calc(var(--u) * 5.5), 52px);--key-cap-height:clamp(18px, calc(var(--u) * 3.25), 38px);--hairline:1px;--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font-family:var(--sans);font-size:var(--fs-md);letter-spacing:.01em;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:145%}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}}#root{text-align:center;box-sizing:border-box;flex-direction:column;width:100%;min-height:100svh;margin:0;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{font-size:var(--fs-2xl);letter-spacing:-.03em;margin:var(--sp-6) 0}h2{font-size:var(--fs-xl);letter-spacing:-.01em;margin:0 0 var(--sp-2);line-height:118%}p{margin:0}.key-cap{height:var(--key-cap-height);aspect-ratio:377/207;image-rendering:pixelated;vertical-align:middle;background-image:url(/assets/key_space-YR3iJr_0.png);background-position:0 0;background-repeat:no-repeat;background-size:100% 200%;flex:none;display:inline-block}.title-screen{cursor:pointer;background:#fff;justify-content:center;align-items:center;width:100%;height:100%;min-height:100svh;display:flex;position:relative;overflow:hidden}.title-bg{object-fit:cover;opacity:.35;filter:saturate(1.1);width:100%;height:100%;position:absolute;inset:0}.title-screen:after{content:"";background:radial-gradient(#ffffff8c 0%,#ffffffeb 70%);position:absolute;inset:0}.title-content{z-index:1;align-items:center;gap:var(--sp-5);padding:var(--sp-6);text-align:center;flex-direction:column;display:flex;position:relative}.title-logo{filter:drop-shadow(0 8px 20px #c8282840);opacity:0;width:min(60vw,480px);transform:translateY(var(--sp-5)) scale(.94);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}.title-logo-in{opacity:1;transform:translateY(0)scale(1)}.title-tip{min-height:1.6em;font-size:var(--fs-lg);color:#b31b1b;border:var(--hairline) solid #d32f2f40;border-radius:var(--r-pill);padding:var(--sp-2) var(--sp-5);opacity:0;transform:translateY(var(--sp-4));background:#ffffffd9;margin:0;font-weight:600;transition:opacity .6s .25s,transform .6s .25s}.title-tip-in{opacity:1;transform:translateY(0)}.title-prompt{align-items:center;gap:var(--sp-2);color:#555;font-size:var(--fs-sm);opacity:0;transition:opacity .6s .5s;display:flex}.title-prompt-in{opacity:1}.title-prompt-key{--key-cap-height:clamp(24px, calc(var(--u) * 4.25), 50px);image-rendering:pixelated;animation:1.6s ease-in-out infinite title-prompt-pulse}@keyframes title-prompt-pulse{0%,to{opacity:.55}50%{opacity:1}}.new-floor{width:100%;height:clamp(112px, calc(var(--u) * 27.5), 220px);align-items:stretch;gap:2%;display:flex}.new-floor-box{appearance:none;font:inherit;color:inherit;border-radius:var(--r-md);cursor:pointer;background:0 0;border:none;flex:0 0 40%;padding:0;transition:flex-basis .2s cubic-bezier(0,0,.2,1),box-shadow .2s cubic-bezier(0,0,.2,1);position:relative;overflow:hidden;box-shadow:0 6px 18px #0000001f}.new-floor-box-selected{flex-basis:58%;box-shadow:0 10px 26px #d32f2f59}.new-floor-box-bg{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.new-floor-box:after{content:"";border-radius:var(--r-md);border:calc(var(--hairline) * 3) solid transparent;transition:border-color .2s cubic-bezier(0,0,.2,1);position:absolute;inset:0}.new-floor-box-selected:after{border-color:#e53e3e}.new-floor-box-content{z-index:1;justify-content:center;align-items:center;gap:var(--sp-2);height:100%;padding:var(--sp-3);text-align:center;flex-direction:column;display:flex;position:relative}.new-floor-icon{width:clamp(28px, calc(var(--u) * 5.5), 60px);height:clamp(28px, calc(var(--u) * 5.5), 60px);object-fit:contain;image-rendering:pixelated;opacity:.55;transition:opacity .2s,transform .2s}.new-floor-box-selected .new-floor-icon{width:clamp(34px, calc(var(--u) * 7), 76px);height:clamp(34px, calc(var(--u) * 7), 76px);opacity:1;transform:translateY(calc(var(--sp-1) * -.5))}.new-floor-icon-mask{background-color:#666;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.new-floor-box-selected .new-floor-icon-mask{background-color:#b91c1c}.new-floor-label{font-size:var(--fs-sm);color:#444;white-space:nowrap;font-weight:700;transition:color .2s,font-size .2s}.new-floor-box-selected .new-floor-label{font-size:var(--fs-lg);color:#b91c1c}.new-floor-sub{font-size:var(--fs-2xs);color:#888;white-space:nowrap}.howto-overlay{z-index:10;justify-content:center;align-items:center;gap:var(--sp-4);padding:var(--sp-5);box-sizing:border-box;background:#140c0cb8;flex-direction:column;animation:.25s ease-out howto-fade-in;display:flex;position:absolute;inset:0}@keyframes howto-fade-in{0%{opacity:0}to{opacity:1}}.howto-panel{aspect-ratio:16/10;background:#fff;border-radius:16px;width:min(880px,92vw);overflow:hidden;box-shadow:0 20px 60px #00000080;container-type:inline-size}.howto-pages{width:300%;height:100%;transition:transform .3s cubic-bezier(.16,1,.3,1);display:flex}.howto-page{box-sizing:border-box;text-align:left;color:#333;background:linear-gradient(#fff5f5 0%,#ffe4e4 100%);flex-direction:column;flex-shrink:0;justify-content:center;gap:clamp(8px,1.6cqw,16px);width:33.3333%;height:100%;padding:3cqw 4cqw;display:flex;overflow:hidden}.howto-title{color:#b91c1c;margin:0;font-size:clamp(18px,3.4cqw,28px);line-height:1.2}.howto-lead,.howto-note{color:#6b5555;margin:0;font-size:clamp(10px,1.6cqw,14px);line-height:1.6}.howto-flow{gap:clamp(6px,1.2cqw,12px);margin:0;padding:0;list-style:none;display:flex}.howto-flow li{background:#ffffffbf;border:1px solid #b91c1c26;border-radius:10px;flex:1;align-items:flex-start;gap:clamp(4px,.9cqw,8px);padding:clamp(6px,1.4cqw,14px);display:flex}.howto-flow-num{color:#fff;background:#b91c1c;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:clamp(16px,2.4cqw,22px);height:clamp(16px,2.4cqw,22px);font-size:clamp(9px,1.4cqw,13px);font-weight:700;display:flex}.howto-flow-body{color:#6b5555;flex-direction:column;gap:clamp(1px,.3cqw,4px);font-size:clamp(9px,1.4cqw,12px);line-height:1.5;display:flex}.howto-flow-body b{color:#333;font-size:clamp(11px,1.8cqw,15px)}.howto-inputs{gap:clamp(6px,1.2cqw,12px);display:flex}.howto-input{background:#ffffffbf;border:1px solid #b91c1c26;border-radius:10px;flex:1;padding:clamp(6px,1.4cqw,14px)}.howto-input-name{color:#b91c1c;margin:0 0 clamp(2px,.6cqw,6px);font-size:clamp(11px,1.8cqw,15px);font-weight:700}.howto-input-desc{color:#6b5555;flex-wrap:wrap;align-items:center;gap:clamp(2px,.6cqw,6px);margin:0;font-size:clamp(9px,1.4cqw,12px);line-height:1.6;display:flex}.howto-inline-key{--key-cap-height:clamp(14px, 2.2cqw, 20px);image-rendering:pixelated}.howto-screen{flex:1;justify-content:center;min-height:0;display:flex}.howto-screen-frame{aspect-ratio:2304/1320;border:1px solid #b91c1c33;border-radius:10px;max-width:100%;height:100%;position:relative;overflow:hidden;container-type:inline-size}.howto-screen-img{object-fit:fill;background:#e9e9e9;width:100%;height:100%;display:block}.howto-screen-mark{color:#fff;background:#b91c1c;border-radius:50%;justify-content:center;align-items:center;width:clamp(12px,3.4cqw,26px);height:clamp(12px,3.4cqw,26px);font-size:clamp(7px,2.1cqw,15px);font-weight:700;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #fff}.howto-legend{color:#6b5555;grid-template-columns:repeat(3,1fr);gap:4px clamp(6px,1.2cqw,12px);margin:0;padding:0;font-size:clamp(8px,1.3cqw,12px);line-height:1.4;list-style:none;display:grid}.howto-legend li{align-items:center;gap:clamp(3px,.8cqw,8px);display:flex}.howto-legend-num{color:#fff;background:#b91c1c;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:clamp(13px,2cqw,18px);height:clamp(13px,2cqw,18px);font-size:clamp(8px,1.2cqw,11px);font-weight:700;display:flex}.howto-scores{flex-direction:column;gap:clamp(4px,.8cqw,8px);margin:0;padding:0;list-style:none;display:flex}.howto-scores li{background:#ffffffbf;border:1px solid #b91c1c26;border-radius:8px;grid-template-columns:clamp(56px,9cqw,90px) clamp(34px,5cqw,48px) 1fr;align-items:center;gap:clamp(4px,1cqw,10px);padding:clamp(5px,1.1cqw,11px) clamp(6px,1.4cqw,14px);display:grid}.howto-score-bonus{background:#b91c1c14}.howto-score-label{color:#333;font-size:clamp(10px,1.6cqw,14px);font-weight:700}.howto-score-point{color:#b91c1c;text-align:right;font-size:clamp(11px,1.8cqw,16px);font-weight:700}.howto-score-detail{color:#6b5555;font-size:clamp(8px,1.3cqw,12px);line-height:1.4}.howto-footer{align-items:center;gap:var(--sp-2);flex-direction:column;display:flex}.howto-dots{gap:var(--sp-2);display:flex}.howto-dot{width:clamp(6px, var(--u), 12px);height:clamp(6px, var(--u), 12px);background:#ffffff59;border-radius:50%;transition:background .2s,transform .2s}.howto-dot-active{background:#f87171;transform:scale(1.3)}.howto-hint{align-items:center;gap:var(--sp-2);color:#fff;font-size:var(--fs-xs);opacity:.85;display:flex}.howto-hint-arrow{width:clamp(30px, calc(var(--u) * 5.25), 60px);aspect-ratio:42/20;image-rendering:pixelated}.howto-hint-key{--key-cap-height:clamp(20px, calc(var(--u) * 3.5), 40px);image-rendering:pixelated;margin-left:var(--sp-3)}.howto-page-tap{appearance:none;cursor:pointer;background:0 0;border:none;position:absolute;inset:0}.howto-close-btn{top:var(--sp-4);right:var(--sp-4);z-index:2;appearance:none;min-height:var(--hit-min);padding:var(--sp-2) var(--sp-5);border-radius:var(--r-pill);border:var(--hairline) solid #fff6;color:#fff;font:inherit;font-size:var(--fs-xs);cursor:pointer;background:#141418b3;font-weight:700;position:absolute}.howto-close-btn:active{background:#f4616a;border-color:#f4616a}.serial-status{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);font-size:var(--fs-xs);background:#ffffffd9;font-weight:600;display:flex;box-shadow:0 2px 8px #0000001a}.serial-status-dot{width:clamp(6px, calc(var(--u) * 1.125), 14px);height:clamp(6px, calc(var(--u) * 1.125), 14px);border-radius:50%;box-shadow:0 0 6px}.menu-screen{background:#fff9f9;flex-direction:column;width:100%;height:100%;min-height:100svh;display:flex;position:relative;overflow:hidden}.menu-bg{object-fit:cover;opacity:.18;width:100%;height:100%;position:absolute;inset:0}.menu-topbar{z-index:1;padding:var(--sp-5) var(--sp-6) 0;justify-content:space-between;align-items:center;display:flex;position:relative}.menu-logo{height:var(--icon-md);object-fit:contain}.menu-body{z-index:1;padding:var(--sp-5);flex:1;justify-content:center;align-items:center;display:flex;position:relative}.menu-float{opacity:0;width:min(920px,92vw);transform:translateY(var(--sp-7));transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}.menu-float-shown{opacity:1;transform:translateY(0)}.menu-selector-frame{padding:var(--sp-7) var(--sp-6);border-radius:var(--r-lg);background:#ffffffb3;position:relative;box-shadow:0 20px 50px #00000014}.menu-selector-frame-img{object-fit:fill;opacity:.25;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.menu-footer{z-index:1;justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-4);color:#777;font-size:var(--fs-xs);display:flex;position:relative}.menu-footer-key{--key-cap-height:clamp(22px, calc(var(--u) * 3.75), 44px);image-rendering:pixelated}.menu-camera-note{z-index:1;margin:calc(var(--sp-2) * -1) 0 0;padding:0 var(--sp-4) var(--sp-4);text-align:center;color:#b45309;font-size:var(--fs-xs);line-height:1.6;position:relative}.menu-input-source{align-items:center;gap:var(--sp-3);display:flex}.menu-input-select{padding:var(--sp-1) var(--sp-2);font-size:max(16px, var(--fs-xs));border:var(--hairline) solid #d8c8c8;border-radius:var(--r-sm);color:#444;cursor:pointer;background:#fff}@media (height<=560px),(width<=820px){.menu-input-source .serial-status{display:none}}.calib-screen{gap:var(--sp-3);width:100%;height:100%;min-height:100svh;padding:var(--sp-5) var(--sp-6);box-sizing:border-box;color:#333;background:#fff9f9;flex-direction:column;display:flex;position:relative;overflow:hidden}.calib-title{font-size:var(--fs-xl);margin:0;font-weight:700}.calib-lead{font-size:var(--fs-xs);color:#666;margin:0;line-height:1.6}.calib-body{gap:var(--sp-5);flex:1;min-height:0;display:flex}.calib-preview{border-radius:var(--r-md);background:#000;flex:60%;min-width:0;display:flex;position:relative;overflow:hidden}.calib-video,.calib-skeleton{width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.calib-video{object-fit:contain}.calib-skeleton{pointer-events:none}.calib-overlay-msg{text-align:center;color:#fff;font-size:var(--fs-md);background:#0000008c;justify-content:center;align-items:center;line-height:1.6;display:flex;position:absolute;inset:0}.calib-error{color:#ff8c8c}.calib-side{gap:var(--sp-3);flex-direction:column;flex:40%;min-width:min(320px,45vw);display:flex}.calib-readouts{gap:var(--sp-1);flex-direction:column;display:flex}.calib-readout{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;font-weight:700}.calib-sub{font-size:var(--fs-xs);color:#888;font-weight:400}.calib-wave{width:100%;height:clamp(90px, calc(var(--u) * 22.5), 240px);border:var(--hairline) solid #e3d5d5;border-radius:var(--r-sm);background:#fff}.calib-peak{font-size:var(--fs-sm);font-variant-numeric:tabular-nums;font-weight:700}.calib-control{align-items:center;gap:var(--sp-2);font-size:var(--fs-xs);display:flex}.calib-control input[type=range]{flex:1}.calib-check{color:#666}.calib-actions{justify-content:flex-end;gap:var(--sp-3);display:flex}.calib-btn{min-height:var(--hit-min);padding:var(--sp-3) var(--sp-5);font-size:var(--fs-sm);border-radius:var(--r-sm);color:#fff;cursor:pointer;background:#dc3c5a;border:none;font-weight:700}.calib-btn:disabled{cursor:not-allowed;background:#ccc}.calib-btn-sub{color:#666;border:var(--hairline) solid #ccc;background:0 0}.posture-warning{z-index:40;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-5);border-radius:var(--r-pill);color:#fff;font-size:var(--fs-xl);letter-spacing:.05em;white-space:nowrap;pointer-events:none;background:#e64d4deb;font-weight:700;animation:1s ease-in-out infinite posture-warning-pulse;display:flex;position:absolute;top:3%;left:50%;transform:translate(-50%)}.posture-warning-angle{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;opacity:.85;font-weight:400}@keyframes posture-warning-pulse{0%,to{opacity:1}50%{opacity:.62}}.option-panel{z-index:1;align-items:center;gap:var(--sp-4);padding:var(--sp-6) var(--sp-6);border-radius:var(--r-lg);border:var(--hairline) solid #00000014;color:#333;background:#fff;flex-direction:column;display:flex;position:relative;box-shadow:0 12px 36px #00000038}.option-panel-title{font-size:var(--fs-md);letter-spacing:.05em;margin:0;font-weight:700}.option-panel-columns{gap:var(--sp-5);display:flex}.option-column{align-items:center;gap:var(--sp-1);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);flex-direction:column;transition:background .2s,transform .2s;display:flex}.option-column-active{background:#f4616a29;transform:scale(1.08)}.option-arrow{width:var(--icon-sm);height:var(--icon-sm);transition:opacity .2s}.option-value{font-size:var(--fs-xl);font-variant-numeric:tabular-nums;text-align:center;color:#1f2024;min-width:2.4em;font-weight:800}.option-label{font-size:var(--fs-2xs);color:#666}.option-panel-hint{font-size:var(--fs-xs);color:#777;margin:0}.option-arrow-btn{appearance:none;padding:var(--sp-1) var(--sp-3);cursor:pointer;background:0 0;border:none;line-height:0}.option-arrow-btn:active .option-arrow{transform:scale(.85)}.option-panel-decide{appearance:none;min-height:var(--hit-min);padding:var(--sp-2) var(--sp-6);border-radius:var(--r-pill);color:#fff;font:inherit;font-size:var(--fs-sm);cursor:pointer;background:#f4616a;border:none;font-weight:800}.option-panel-decide:active{background:#d94a53}.call-panel{z-index:1;align-items:center;gap:var(--sp-4);padding:var(--sp-6) var(--sp-7);border-radius:var(--r-lg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#2b2b2b;background:#fffffff2;flex-direction:column;transition:background .15s,box-shadow .15s;display:flex;position:relative;box-shadow:0 10px 30px #0000002e}.call-panel-collect{box-shadow:0 0 0 6px #4cd9648c,0 10px 30px #0000002e}.call-panel-wrong{animation:.35s call-panel-shake;box-shadow:0 0 0 6px #ff525299,0 10px 30px #0000002e}@keyframes call-panel-shake{0%,to{transform:translate(0)}25%{transform:translateX(calc(var(--u) * -1))}75%{transform:translateX(var(--u))}}.call-panel-title{font-size:var(--fs-lg);margin:0;font-weight:800}.call-panel-keys{width:min(68vw, clamp(320px, calc(var(--u) * 70), 560px));aspect-ratio:1282/207;image-rendering:pixelated;background-image:url(/assets/key119-BROUvKQ0.png);background-repeat:no-repeat;background-size:100% 662.8%;transition:background-position 80ms step-end;position:relative}.call-panel-hint{font-size:var(--fs-xs);color:#6b6b6b;margin:0}.call-panel-key-hit{appearance:none;cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;height:100%;padding:0;position:absolute;top:0}.call-panel-key-hit:active{background:#f4616a40}.countdown-overlay{z-index:5;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.countdown-number{font-size:var(--fs-4xl);color:#fff;text-shadow:0 0 40px #d32f2fcc;font-weight:900;animation:1s cubic-bezier(.2,.9,.3,1) countdown-pop}@keyframes countdown-pop{0%{opacity:0;transform:scale(1.8)}15%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.85)}}.compression-view{z-index:1;width:100%;height:100%;padding:var(--sp-5) var(--sp-5) var(--sp-6);color:#fff;box-sizing:border-box;flex-direction:column;justify-content:space-between;align-items:center;display:flex;position:relative}.comp-stage{width:var(--stage-w);height:var(--stage-h);pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.comp-depth-band{width:100%;height:100%;position:absolute;inset:0}.comp-depth-band-fill{fill:none;stroke:url(#comp-depth-fill);stroke-linecap:butt}.comp-depth-flash{aspect-ratio:1;border-radius:50%;width:10%;position:absolute;left:64.48%;transform:translate(-50%,-50%)}.comp-depth-flash-0{background:radial-gradient(circle,#4cd964bf 0%,#4cd96400 70%);top:13.72%}.comp-depth-flash-5{background:radial-gradient(circle,#ffd54fcc 0%,#ffd54f00 70%);top:85.27%}.comp-depth-pointer{transform-origin:0;filter:drop-shadow(0 0 6px #f4616a80);width:auto;height:3.6%;position:absolute}.comp-heart{width:24%;height:auto;transition:transform 50ms linear;position:absolute;top:49.53%;left:51.94%}.comp-depth-value{font-size:calc(var(--stage-h) * .05);font-variant-numeric:tabular-nums;color:#fff;text-shadow:0 2px 10px #000c;font-weight:800;position:absolute;top:70%;left:51.94%;transform:translate(-50%,-50%)}.comp-rate-needle{transform-origin:50% 93%;filter:drop-shadow(0 2px 4px #00000040);width:auto;height:20.16%;transition:transform 80ms linear;position:absolute}.comp-rate-value{font-size:calc(var(--stage-h) * .04);font-variant-numeric:tabular-nums;color:#3a3a3a;font-weight:800;position:absolute;top:88.1%;left:24.75%;transform:translate(-50%,-50%)}.comp-depth-value small,.comp-rate-value small{margin-left:.1em;font-size:55%}.comp-time-row{justify-content:center;align-items:baseline;column-gap:var(--sp-4);row-gap:var(--sp-1);max-width:90%;font-size:clamp(10px, calc(var(--stage-h) * .0225), 18px);color:#3a3a3a;text-shadow:0 1px 2px #ffffffe6;flex-wrap:wrap;display:flex;position:relative}.comp-time-text{font-variant-numeric:tabular-nums;font-weight:700}.comp-popups{justify-content:center;align-items:center;width:40%;height:12%;display:flex;position:absolute;top:23%;left:51.94%;transform:translate(-50%,-50%)}.rank-popup{font-size:calc(var(--stage-h) * .05);font-weight:900;animation:.65s cubic-bezier(.2,.9,.3,1) rank-pop;position:absolute}.rank-popup-S{color:#ffd54f;text-shadow:0 0 18px #ffd54fe6}.rank-popup-A{color:#4cd964;text-shadow:0 0 14px #4cd964cc}.rank-popup-B{color:#64b5f6;text-shadow:0 0 12px #64b5f6b3}.rank-popup-C{color:#ff5252;text-shadow:0 0 12px #ff5252b3}@keyframes rank-pop{0%{opacity:0;transform:scale(.4) translateY(var(--sp-3))}20%{opacity:1;transform:scale(1.15)translateY(0)}70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.95) translateY(calc(var(--sp-3) * -1))}}.combo-popup{justify-content:center;align-items:center;animation:1.1s combo-pop;display:flex;position:absolute}.combo-popup-bg{width:calc(var(--stage-h) * .17);object-fit:contain;opacity:.9;height:auto;position:absolute}.combo-popup-text{font-size:calc(var(--stage-h) * .028);color:#fff;text-shadow:0 2px 8px #000000b3;font-weight:900;position:relative}.combo-popup-sub{font-size:calc(var(--stage-h) * .015);margin-left:.3em}@keyframes combo-pop{0%{opacity:0;transform:scale(.7)}15%{opacity:1;transform:scale(1.08)}80%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.comp-comments{gap:var(--sp-3);min-height:var(--sp-6);display:flex;position:relative}.comp-comment{padding:var(--sp-1) var(--sp-4);border-radius:var(--r-pill);font-size:var(--fs-xs);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:center;background:#1212169e;min-width:4em;font-weight:700}.comp-comment-power{color:#ff8a65}.comp-comment-tempo{color:#4fc3f7}.finish-overlay{z-index:6;background:#00000059;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.finish-overlay-text{font-size:var(--fs-3xl);color:#fff;letter-spacing:.08em;text-shadow:0 0 30px #ffd54fe6;font-weight:900;animation:2s forwards finish-pop}@keyframes finish-pop{0%{opacity:0;transform:scale(.6)}20%{opacity:1;transform:scale(1.08)}35%{transform:scale(1)}85%{opacity:1}to{opacity:0}}.game-screen{background:#101014;width:100%;height:100%;min-height:100svh;position:relative;overflow:hidden}.game-bg{object-fit:contain;width:100%;height:100%;position:absolute;inset:0}.game-screen-content{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.game-screen-panel-layer{justify-content:center;align-items:center;display:flex;position:relative}.game-screen-panel-fade{inset:calc(var(--u) * -25);z-index:4;pointer-events:none;background:#000;transition:none;position:absolute}.game-switch-btn:active{background:#f4616a;border-color:#f4616a}.radar-chart{width:min(52vw,34vh,320px);height:min(52vw,34vh,320px);overflow:visible}.radar-chart-grid{fill:none;stroke:#ffffff2e;stroke-width:1px}.radar-chart-axis{stroke:#ffffff2e;stroke-width:1px}.radar-chart-data{fill:#ff8a9473;stroke:#ff8a94;stroke-width:2.5px;stroke-linejoin:round;transition:fill .1s linear}.radar-chart-label{fill:#ff8a94;paint-order:stroke;stroke:#2a1417;stroke-width:3px;stroke-linejoin:round;font-size:13px;font-weight:700}.score-breakdown{gap:var(--sp-4);flex-direction:column;width:100%;display:flex}.score-breakdown-wave{align-self:center;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);color:#4a2226;background:#ffbec3e6;display:flex;box-shadow:0 6px 16px #00000040}.score-breakdown-wave-label{font-size:var(--fs-xs);font-weight:700;line-height:1.2}.score-breakdown-wave-value{font-size:var(--fs-lg);font-variant-numeric:tabular-nums;font-weight:800}.score-breakdown-wave-max{font-size:var(--fs-xs);opacity:.75;margin-left:.15em;font-weight:600}.score-breakdown-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.score-breakdown-row{border-bottom:var(--hairline) solid #ffffff38;padding-bottom:var(--sp-1);color:#fff;justify-content:space-between;align-items:baseline;display:flex}.score-breakdown-row-label{font-size:var(--fs-sm);font-weight:700}.score-breakdown-row-value{font-size:var(--fs-md);font-variant-numeric:tabular-nums;font-weight:800}.score-breakdown-row-max{font-size:var(--fs-xs);opacity:.7;margin-left:.15em;font-weight:600}.comment-bubble{width:100%;padding:var(--sp-5) var(--sp-5);box-sizing:border-box;position:relative}.comment-bubble-fill,.comment-bubble-frame{object-fit:fill;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.comment-bubble-fill{opacity:.92}.comment-bubble-text{z-index:1;color:#3a1f22;font-size:var(--fs-sm);text-align:justify;word-break:break-word;margin:0;line-height:1.9;position:relative}.result-screen{cursor:default;background:radial-gradient(120% 120% at 12% 10%,#4a2228 0%,#6f2f34 28%,#a8474e 55%,#d8878b 78%,#f4d6d4 100%);flex-direction:column;width:100%;height:100%;min-height:100svh;display:flex;position:relative;overflow:hidden auto}.result-bg{object-fit:cover;opacity:.12;mix-blend-mode:overlay;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.result-direction{z-index:10;justify-content:center;align-items:center;gap:var(--sp-4);opacity:1;pointer-events:none;background:#2a1417;flex-direction:column;transition:opacity .8s ease-in 2.2s;display:flex;position:fixed;inset:0}.result-direction:not(.result-direction-active){opacity:0}.result-direction-heart{width:clamp(54px, calc(var(--u) * 11), 120px);height:clamp(54px, calc(var(--u) * 11), 120px);object-fit:contain;filter:drop-shadow(0 0 24px #ff8a9499);animation:.9s ease-in-out infinite result-heartbeat}.result-direction-text{color:#fff;font-size:var(--fs-xl);letter-spacing:.1em;margin:0;font-weight:800}@keyframes result-heartbeat{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.result-content{z-index:1;align-items:center;gap:var(--sp-4);padding:var(--sp-5) var(--sp-5) var(--sp-6);opacity:0;transform:translateY(var(--sp-5));flex-direction:column;flex:1;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);display:flex;position:relative}.result-content-shown{opacity:1;transform:translateY(0)}.result-header{align-self:flex-start;align-items:center;gap:var(--sp-3);display:flex}.result-logo{height:clamp(22px, calc(var(--u) * 4.5), 48px);object-fit:contain}.result-header-title{color:#fff;font-size:var(--fs-sm);opacity:.9;font-weight:700}.result-main{gap:var(--sp-4);flex-wrap:wrap;justify-content:center;width:min(1000px,100%);display:flex}.result-panel{border-radius:var(--r-lg);padding:var(--sp-5);box-sizing:border-box;background:#2a1417b8;box-shadow:0 20px 50px #0000004d}.result-panel-chart{align-items:center;gap:var(--sp-4);flex-direction:column;flex:min(480px,100%);display:flex}.result-overall-score{align-items:baseline;gap:var(--sp-2);color:#fff;display:flex}.result-overall-score-value{font-size:var(--fs-2xl);font-variant-numeric:tabular-nums;font-weight:800}.result-overall-score-frac{font-size:var(--fs-lg);opacity:.8;font-weight:700}.result-overall-score-max{font-size:var(--fs-sm);opacity:.8;font-weight:600}.result-comment-wrap{width:min(1000px,100%)}.result-footer{align-items:center;gap:var(--sp-2);color:#fff;font-size:var(--fs-xs);opacity:0;transition:opacity .6s;display:flex}.result-footer-shown{opacity:.9}.result-footer-key{--key-cap-height:clamp(20px, calc(var(--u) * 3.5), 40px);image-rendering:pixelated}.result-panel-side{display:contents}@media (height<=560px){.result-screen{touch-action:pan-y;overflow-y:auto}.result-content{box-sizing:border-box;min-height:100%}.result-panel-chart{flex-direction:row;align-items:center}.result-panel-side{align-items:center;gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex}.result-comment-wrap{flex:none;max-height:16vh;overflow:hidden}}.rotate-hint{display:none}@media (orientation:portrait) and (pointer:coarse){.rotate-hint{z-index:2000;color:#fff;text-align:center;background:#16171d;flex-direction:column;justify-content:center;align-items:center;gap:clamp(10px,3.5vmin,22px);padding:clamp(20px,8vmin,48px);display:flex;position:fixed;inset:0}}.rotate-hint-icon{color:#f4616a;width:clamp(72px,24vmin,140px);height:clamp(72px,24vmin,140px);animation:2.4s ease-in-out infinite rotate-hint-tilt}@keyframes rotate-hint-tilt{0%,40%{transform:rotate(0)}60%,90%{transform:rotate(-90deg)}to{transform:rotate(0)}}.rotate-hint-title{margin:0;font-size:clamp(18px,5vmin,28px);font-weight:800}.rotate-hint-text{opacity:.8;max-width:22em;margin:0;font-size:clamp(13px,3.4vmin,18px);line-height:1.6}.sound-toggle[aria-pressed=true]{color:#9a9aa2}.screen-controls{left:var(--sp-3);bottom:var(--sp-3);z-index:900;gap:var(--sp-2);display:flex;position:fixed}.screen-control-btn{appearance:none;width:var(--hit-min);height:var(--hit-min);border-radius:var(--r-pill);border:var(--hairline) solid #0000001f;color:#444;cursor:pointer;background:#ffffffd9;justify-content:center;align-items:center;padding:0;display:flex;box-shadow:0 2px 8px #0000001f}.screen-control-btn:active{color:#fff;background:#f4616a;border-color:#f4616a}.screen-control-btn svg{width:var(--icon-sm);height:var(--icon-sm)}.app-root{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100vw;height:100svh;position:relative;overflow:hidden}.scene-fade{pointer-events:none;z-index:1000;background:#000;transition:opacity 1s linear;position:fixed;inset:0}
