*{box-sizing:border-box}html,body,#root{background:#000;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Hiragino Sans,Noto Sans JP,sans-serif;overflow:hidden}.app{touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}canvas{display:block}.hud{pointer-events:none;color:#fff;text-shadow:0 1px 3px #000c;position:absolute;inset:0}.hud-top{justify-content:space-between;padding:10px 14px;font-weight:700;display:flex}.hud-top .step{opacity:.7;margin-left:8px;font-size:.8em;font-weight:400}.hud-top .mode{background:#0006;border-radius:6px;padding:2px 10px;position:absolute;top:104px;right:14px}.hud-top .fps{opacity:.75;font-variant-numeric:tabular-nums;font-size:12px;position:absolute;top:152px;right:14px}.hint{white-space:nowrap;background:#00000080;border-radius:8px;padding:8px 16px;font-size:15px;position:absolute;bottom:22%;left:50%;transform:translate(-50%)}.hint-ready{color:#222;text-shadow:none;background:#ffc828d9;font-weight:700}.stick{pointer-events:auto;background:#ffffff1f;border:2px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;width:130px;height:130px;display:flex;position:absolute;bottom:24px;left:24px}.knob{background:#ffffffb3;border-radius:50%;width:56px;height:56px}.buttons{pointer-events:auto;align-items:flex-end;gap:14px;display:flex;position:absolute;bottom:24px;right:24px}.btn{color:#fff;touch-action:none;border:2px solid #ffffff80;border-radius:50%;width:70px;height:70px;font-size:15px;font-weight:800}.btn-a{background:#e64646bf;width:84px;height:84px}.btn-b{background:#3c78e6bf}@media (hover:hover) and (pointer:fine){.stick,.buttons{opacity:.45}}.menu-btn{color:#fff;pointer-events:auto;touch-action:none;z-index:5;background:#00000073;border:2px solid #ffffff80;border-radius:10px;width:44px;height:44px;font-size:24px;font-weight:800;line-height:1;position:absolute;top:8px;left:10px}@media (pointer:coarse){.hud-top{padding-left:62px}.credits{left:62px}.tune{width:min(340px,100% - 24px);max-height:calc(100% - 70px);top:58px}}.tune-head .tune-resume{background:#2f9e44}.gpu-note{opacity:.6;overflow-wrap:anywhere;max-width:90vw;margin-top:-8px;margin-bottom:8px;font-size:11px}.loading{background:#0009;border-radius:8px;padding:12px 24px;font-size:18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tune{color:#eee;pointer-events:auto;width:340px;max-height:calc(100% - 60px);text-shadow:none;background:#14161eeb;border-radius:10px;flex-direction:column;font-size:12px;display:flex;position:absolute;top:44px;right:12px;box-shadow:0 4px 24px #00000080}.tune-head{border-bottom:1px solid #ffffff1f;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;display:flex}.tune-note{opacity:.6;flex:100%;font-size:11px}.tune-head button{color:#fff;cursor:pointer;background:#3b5bdb;border:0;border-radius:6px;padding:5px 10px;font-size:12px}.tune-body{padding:8px 12px;overflow-y:auto}.tune-group{margin-bottom:10px}.tune-title{color:#ffd166;margin:6px 0 4px;font-weight:700}.tune-row{grid-template-columns:110px 1fr 64px;align-items:center;gap:6px;margin:3px 0;display:grid}.tune-row input[type=range]{width:100%}.tune-row input[type=number]{color:#eee;background:#111;border:1px solid #444;border-radius:4px;width:64px;padding:2px 4px;font-size:11px}.credits{opacity:.7;font-size:11px;position:absolute;top:40px;left:12px}.tune-row-select{grid-template-columns:110px 1fr}.tune-row-select select{color:#eee;background:#111;border:1px solid #444;border-radius:4px;width:100%;padding:3px 4px;font-size:12px}.score{font-size:16px;font-weight:800;position:absolute;top:132px;right:14px}.combo{color:#ffd166;text-shadow:0 2px #7a1040,0 0 18px #ff783ccc;font-size:40px;font-weight:900;animation:.5s ease-out combo-pop;position:absolute;top:30%;left:50%;transform:translate(-50%)}@keyframes combo-pop{0%{opacity:0;transform:translate(-50%)scale(.4)}60%{opacity:1;transform:translate(-50%)scale(1.15)}to{transform:translate(-50%)scale(1)}}.reticle-layer{pointer-events:none;position:absolute;inset:0}.reticle-layer.hidden{display:none}.reticle-sight{will-change:transform;position:absolute;inset:0}.reticle-ring{border:2px solid #50ff8c99;border-radius:50%;transition:border-color .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.reticle-layer.charging .reticle-ring{border-width:4px;border-color:#ff9a1f;box-shadow:0 0 16px #ff9a1fcc,inset 0 0 12px #ff9a1f66}.reticle-layer.charging .reticle-dot{background:#ffc04d}.reticle-layer.target .reticle-ring{border-width:5px;border-color:#ff3b3b;box-shadow:0 0 18px #ff3b3bd9,inset 0 0 14px #ff3b3b73}.reticle-layer.target .reticle-dot{background:#ff6b6b}.reticle-layer.roof .reticle-ring{border-width:4px;border-color:#ffd23f;box-shadow:0 0 14px #ffd23fb3,inset 0 0 10px #ffd23f59}.reticle-layer.roof .reticle-dot{background:#ffe680}.reticle-layer.mount .reticle-ring{border-width:4px;border-color:#ff5fb0;box-shadow:0 0 14px #ff5fb0b3,inset 0 0 10px #ff5fb059}.reticle-layer.mount .reticle-dot{background:#ffb3dc}.reticle-dot{background:#9dffbe;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;position:absolute;top:50%;left:50%}.lock-marker{color:#eafff0;text-align:center;text-shadow:0 1px 2px #000;border:3px solid #4dff8a;border-radius:50%;width:36px;height:36px;font-size:13px;font-weight:900;line-height:30px;animation:.15s ease-out lock-in;position:absolute;top:0;left:0;box-shadow:0 0 8px #4dff8acc,inset 0 0 6px #4dff8a59}@keyframes lock-in{0%{opacity:0;transform:scale(2.2)}}.lock-count{color:#4dff8a;letter-spacing:.1em;font-size:15px;font-weight:900;position:absolute;top:50%;left:50%;transform:translate(-50%,60px)}.dest-marker{color:#ffd166;text-shadow:0 2px #7a1040,0 0 10px #0009;will-change:transform;flex-direction:column;align-items:center;font-weight:900;display:flex;position:absolute;top:0;left:0}.dest-marker .tri{font-size:34px;line-height:1;animation:1s ease-in-out infinite dest-bob}.dest-marker .name{color:#fff;text-shadow:none;background:#00000073;border-radius:6px;padding:1px 8px;font-size:14px}.dest-marker.locked{color:#ff4d7a}.dest-marker.imouto-marker{color:#ff7fc8}.dest-marker.imouto-marker .name{background:#ff2d8a8c}.dest-marker.locked .name{background:#ff4d7a}.dest-marker.offscreen .tri{animation:none}@keyframes dest-bob{50%{transform:translateY(-8px)}}.radar{pointer-events:none;border-radius:50%;position:absolute;top:172px;right:14px}.pause-badge{letter-spacing:.2em;color:#fff;text-shadow:0 3px #7a1040,0 0 24px #0009;font-size:54px;font-weight:900;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.speech{color:#222;white-space:nowrap;will-change:transform;text-shadow:none;background:#fff;border:4px solid #222;border-radius:26px;padding:12px 28px;font-size:44px;font-weight:900;animation:.18s ease-out speech-pop;display:none;position:absolute;top:0;left:0}.speech-imouto{color:#7a1040;background:#ffe3ef;border-color:#ff4d7a;border-radius:40px}.speech-imouto:after{border-top-color:#ff4d7a}.speech:after{content:"";border:12px solid #0000;border-top:14px solid #222;border-bottom:0;margin-left:-12px;position:absolute;bottom:-20px;left:50%}@keyframes speech-pop{0%{opacity:0;scale:.6}}.skillbar{pointer-events:auto;align-items:flex-end;gap:10px;display:flex;position:absolute;bottom:26px;right:210px}.skill-hint{opacity:.7;white-space:nowrap;font-size:11px;position:absolute;top:-20px;right:0}.skill.selected{border-color:#ffd166;transform:translateY(-6px);box-shadow:0 0 0 3px #ffd16673}.skill{color:#fff;cursor:pointer;touch-action:none;background:#14161ea6;border:2px solid #fff9;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:74px;height:74px;font-weight:800;display:flex;position:relative;overflow:hidden}.skill .key{color:#ffd166;font-size:18px}.skill .label{font-size:11px}.skill .time{opacity:.8;font-size:11px;position:absolute;top:4px;right:6px}.skill.cd{color:#ffffff80;border-color:#ffffff40}.skill.cd:after{content:"";height:var(--cd);background:#ffffff2e;position:absolute;bottom:0;left:0;right:0}.skill.active{border-color:#ff4d7a;box-shadow:0 0 12px #ff4d7ab3}.timer{text-align:right;font-variant-numeric:tabular-nums;position:absolute;top:4px;right:14px}.timer .t{letter-spacing:.04em;text-shadow:0 3px #7a1040,0 0 18px #000000b3;font-size:76px;font-weight:900;line-height:1}.timer .d{opacity:.9;margin-top:2px;font-size:15px}.area-title{white-space:nowrap;letter-spacing:.12em;color:#ffe066;text-shadow:4px 4px #ff4d7a,-4px 4px #ff4d7a,4px -4px #ff4d7a,-4px -4px #ff4d7a,0 10px #7a1040,0 0 30px #0009;font-family:"M PLUS Rounded 1c","Rounded Mplus 1c",Hiragino Maru Gothic ProN,Yu Gothic UI,Meiryo,Noto Sans JP,system-ui,sans-serif;font-size:min(11vw,96px);font-weight:900;animation:3s ease-out both area-in;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}@keyframes area-in{0%{opacity:0;transform:translate(-50%,-50%)scale(1.6)}12%{opacity:1;transform:translate(-50%,-50%)scale(1)}80%{opacity:1}to{opacity:0}}.timer.urgent .t{color:#ff5c7a;animation:1s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.4}}.overlay{pointer-events:auto;text-align:center;background:#0a0c148c;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:20px;display:flex;position:absolute;inset:0}.overlay.title-screen{text-align:left;cursor:default;background:linear-gradient(90deg,#0a0c14bf 0%,#0a0c148c 45%,#0a0c1400 75%);justify-content:flex-start;align-items:flex-start;padding-top:4vh;padding-left:4%}.overlay.title-screen .big{font-size:40px}.overlay .big{color:#ffd166;text-shadow:0 3px #7a1040,0 0 24px #ff783c99;font-size:44px;font-weight:900}.overlay .sub{opacity:.9;font-size:16px}.overlay .howto{background:#00000059;border-radius:10px;padding:10px 18px;font-size:13px;line-height:1.8}.overlay .stats{font-size:20px;font-weight:800}.overlay .start{color:#fff;cursor:pointer;background:#ff4d7a;border:0;border-radius:12px;margin-top:8px;padding:12px 28px;font-size:20px;font-weight:900;box-shadow:0 4px #a41f47}.overlay .start:disabled{box-shadow:none;cursor:default;background:#666}.overlay.late .big{color:#9ad0ff;text-shadow:0 3px #1a3a6a}.logo{color:#ffe066;letter-spacing:.03em;text-shadow:3px 3px #ff4d7a,-3px 3px #ff4d7a,3px -3px #ff4d7a,-3px -3px #ff4d7a,0 8px #7a1040,0 0 30px #ff783c99;flex-direction:column;width:92vw;font-family:"M PLUS Rounded 1c","Rounded Mplus 1c",Hiragino Maru Gothic ProN,Yu Gothic UI,Meiryo,Noto Sans JP,system-ui,sans-serif;font-weight:900;line-height:1;display:flex}.logo span:first-child{font-size:min(15vw,13.5vh)}.logo span:nth-child(2){font-size:min(12.6vw,11.4vh)}.logo .subtitle{color:#fff;letter-spacing:.06em;text-shadow:3px 3px #ff4d7a,-3px 3px #ff4d7a,3px -3px #ff4d7a,-3px -3px #ff4d7a,0 7px #7a1040,0 0 24px #ff508c99;margin-top:3vh;font-size:min(7vw,6.4vh)}.hud-top.hidden{display:none}.overlay.title-screen{-webkit-overflow-scrolling:touch;overflow-y:auto}@media (pointer:coarse){.overlay.title-screen .howto{display:none}.overlay.title-screen .howto-touch{display:block}}html.rotated .app{transform-origin:0 0;width:100dvh;height:100dvw;inset:0 auto auto 0;transform:rotate(90deg)translateY(-100%)}.howto-touch{background:#00000073;border-radius:8px;margin:6px 0 4px;padding:8px 12px;font-size:13px;line-height:1.5;display:none}@media (height<=520px){.overlay.title-screen{gap:6px;padding-top:2vh}.logo span:first-child{font-size:min(8vw,12.5vh)}.logo span:nth-child(2){font-size:min(6.8vw,10.5vh)}.logo .subtitle{margin-top:.6vh;font-size:min(4vw,6.5vh)}.overlay .story{margin-top:4px;font-size:13px;line-height:1.4}.overlay.title-screen .howto{padding:6px 10px;font-size:11px}.quality-pick{margin:6px 0 8px}.quality-pick button{padding:6px 10px;font-size:13px}.overlay .start{padding:8px 22px;font-size:16px}}.quality-pick{pointer-events:auto;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 12px;font-size:14px;font-weight:700;display:flex}.quality-pick button{color:#fff;cursor:pointer;touch-action:manipulation;background:#0006;border:2px solid #ffffff80;border-radius:8px;min-width:52px;padding:8px 14px;font-size:15px;font-weight:800}.quality-pick button.on{background:#ff4d7a;border-color:#ffd166}.quality-pick .q-note{opacity:.85;font-size:12px;font-weight:500}.overlay .story{text-shadow:0 2px #000;margin-top:10px;font-size:min(2.6vw,20px);font-weight:800;line-height:1.6}.app,.app canvas{cursor:default}@media (pointer:coarse){.skill-hint{display:none}.skillbar{gap:8px;bottom:126px;right:24px}.skill{width:62px;height:62px}.skill .key{font-size:15px}.skill .label{font-size:10px}}@media (pointer:fine){.skillbar{right:24px}}.onoma-layer{pointer-events:none;z-index:2;position:absolute;inset:0;overflow:hidden}.onoma{transform:translate(-50%, -50%) rotate(var(--rot,0deg));white-space:nowrap;letter-spacing:-.02em;paint-order:stroke fill;-webkit-text-stroke:.14em #1a1008;text-shadow:.06em .08em #1a1008;font-weight:400;line-height:1;animation:.9s ease-out forwards onoma-pop;position:absolute}@keyframes onoma-pop{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--rot,0deg)) scale(.3)}12%{opacity:1;transform:translate(-50%, -50%) rotate(var(--rot,0deg)) scale(1.25)}22%{transform:translate(-50%, -50%) rotate(var(--rot,0deg)) scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%, -62%) rotate(var(--rot,0deg)) scale(1.05)}}.overlay.title-screen{cursor:pointer}.overlay .story{background:#00000073;border-radius:8px;padding:4px 12px;font-size:max(18px,min(2.6vw,24px))}.overlay .start{font-size:24px}.overlay .start:focus-visible,.settings-btn:focus-visible,.quality-pick button:focus-visible{outline-offset:3px;outline:4px solid #ffe066}.overlay .start.pending{background:#c23a62}.title-tap{color:#fff;background:#0000008c;border-radius:8px;margin-top:10px;padding:4px 12px;font-size:18px;font-weight:800;animation:1.6s ease-in-out infinite tap-blink}@keyframes tap-blink{50%{opacity:.55}}.settings-btn{color:#fff;cursor:pointer;pointer-events:auto;background:#0009;border:2px solid #fff9;border-radius:10px;margin-top:14px;padding:6px 14px;font-size:18px;font-weight:800}.settings-panel{cursor:default;pointer-events:auto;background:#0a0c14e6;border:2px solid #ffffff59;border-radius:12px;max-width:min(92%,720px);margin-top:8px;padding:12px 16px;font-size:18px;line-height:1.5}.settings-panel .quality-pick{margin:0 0 4px;font-size:18px}.settings-panel .quality-pick button{font-size:18px}.quality-pick button.on{border-width:4px;border-color:#ffe066}.settings-panel .q-note{opacity:.95;font-size:16px}.settings-panel .comfort{cursor:pointer;align-items:center;gap:8px;margin:8px 0;font-weight:700;display:flex}.settings-panel .comfort input{width:22px;height:22px}.settings-panel .gpu-note{opacity:.85;margin:4px 0;font-size:14px}.credit-list{opacity:.95;margin-top:6px;font-size:16px}.credit-list>div:first-child{font-weight:800}.credit-list.small{background:#00000080;border-radius:6px;max-width:90%;margin-top:12px;padding:4px 10px;font-size:14px}.timer .t .left{vertical-align:middle;letter-spacing:0;margin-right:8px;font-size:22px}.hint-line{text-align:center;color:#fff;pointer-events:none;z-index:5;background:#000000b8;border:2px solid #ffe066cc;border-radius:12px;max-width:92%;padding:8px 18px;font-size:20px;font-weight:800;animation:.35s ease-out hint-in;position:absolute;bottom:120px;left:50%;transform:translate(-50%)}@keyframes hint-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.skill-hint{background:#0000008c;border-radius:6px;padding:2px 8px;font-size:14px}@media (height<=520px){.hint-line{font-size:18px;bottom:96px}.overlay .start{font-size:20px}}html.rotated .logo{width:92vh}html.rotated .logo span:first-child{font-size:min(8vh,12.5vw)}html.rotated .logo span:nth-child(2){font-size:min(6.8vh,10.5vw)}html.rotated .logo .subtitle{margin-top:.6vw;font-size:min(4vh,6.5vw)}html.rotated .overlay.title-screen{gap:6px;padding-top:2vw}html.rotated .area-title{font-size:min(11vh,96px)}html.rotated .overlay .story{font-size:max(18px,min(2.6vh,24px))}.settings-panel{z-index:3;width:min(46%,560px);max-height:92%;margin-top:0;position:absolute;top:50%;right:3%;overflow-y:auto;transform:translateY(-50%)}.settings-panel .volume{align-items:center;gap:10px;margin:8px 0 0;font-weight:700;display:flex}.settings-panel .volume input{accent-color:#ff4d7a;flex:1;max-width:260px;height:22px}
