:root{font-family:Inter,Segoe UI,sans-serif;color:#f4f5f7;background:#08090b;font-synthesis:none;text-rendering:optimizeLegibility;font-weight:400;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-width:320px}button{font:inherit;cursor:pointer}button:focus-visible{outline:2px solid #fff;outline-offset:5px}button{-webkit-tap-highlight-color:transparent}.title-screen{min-height:100svh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 48%,#16212466,transparent 52%)}.eyebrow{position:absolute;top:36px;font-size:10px;letter-spacing:3px;color:#747b85}.title-content{text-align:center}.beat-mark{height:38px;display:flex;align-items:center;justify-content:center;gap:5px;margin-bottom:22px}.beat-mark i{width:5px;background:#bfff59;border-radius:2px;height:18px}.beat-mark i:nth-child(2){height:36px}.beat-mark i:nth-child(3){height:26px}.beat-mark i:nth-child(4){height:12px}h1{font-size:clamp(64px,10vw,112px);letter-spacing:-6px;line-height:1;margin:0;font-weight:800}h1 span,.game-brand>span{color:#bfff59}.tagline{font-size:14px;color:#818791;letter-spacing:2px;margin:24px 0 44px}.start-button{width:220px;padding:18px 25px;border:0;border-radius:4px;background:#bfff59;color:#12170a;font-size:13px;font-weight:800;letter-spacing:3px;display:flex;justify-content:space-between;align-items:center;transition:background .15s,transform .15s}.start-button{margin:auto}.start-button:hover{background:#d4ff93;transform:translateY(-2px)}.start-button span{font-size:21px;line-height:1}.start-hint{font-size:9px;letter-spacing:2px;color:#5b626c;margin-top:20px}footer{font-size:10px;letter-spacing:1px;color:#666d78}.title-screen footer{position:absolute;bottom:26px;left:36px;right:36px;display:flex;justify-content:space-between}.game-screen{height:100svh;min-height:320px;display:flex;flex-direction:column;max-width:1440px;margin:auto;padding:0 5vw}.game-header{height:95px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}.back-button{background:none;border:1px solid #2a2d34;color:#9299a3;border-radius:4px;padding:10px 14px;font-size:16px}.back-button span{font-size:9px;letter-spacing:2px;margin-left:8px}.game-brand{font-size:22px;letter-spacing:-1px;font-weight:800;text-align:center}.game-brand small{display:block;font-weight:400;font-size:8px;letter-spacing:2px;color:#666d78;margin-top:7px}.hit-count{display:flex;align-items:center;gap:12px}.hit-count>span{font-size:9px;color:#848b96;letter-spacing:2px}.hit-count strong{font-family:Barlow Condensed,sans-serif;font-size:32px;font-weight:600;font-variant-numeric:tabular-nums}.playfield{flex:1;min-height:0;position:relative;display:grid;grid-template-columns:repeat(6,1fr);width:min(100%,880px);margin:auto;border:1px solid #292e35;border-radius:6px;overflow:hidden;background:linear-gradient(#0c0e12,#12171b)}.lane{position:relative;border-right:1px solid #252a31;overflow:hidden;transition:background .08s}.lane:last-of-type{border:0}.lane.active{background:#bfff5918}.lane-number{position:absolute;top:18px;left:18px;font-size:10px;color:#414954;letter-spacing:2px}.note{position:absolute;left:12%;width:76%;height:19px;background:#bfff59;border:1px solid #d7ff9e;border-radius:3px;box-shadow:0 0 20px #bfff5922;z-index:3;touch-action:none;transform:translateY(-50%)}.note:hover{background:#e1ffb9}.receptor{position:absolute;top:84%;height:13%;left:12%;width:76%;transform:translateY(-50%);border:1px solid #52613b;border-radius:4px;background:#bfff5908;color:#a6b28f;z-index:2;touch-action:none}.receptor span{font-size:13px;letter-spacing:2px}.active .receptor{border-color:#bfff59;color:#bfff59;background:#bfff5920;box-shadow:0 0 25px #bfff5915}.judgment-line{position:absolute;top:84%;width:100%;height:1px;background:#bfff5960;pointer-events:none;z-index:1}.game-footer{height:52px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;font-size:9px}.live-dot{display:inline-block;width:5px;height:5px;background:#bfff59;border-radius:50%;margin-right:7px}@media(max-height:500px){.game-header{height:60px}.game-footer{height:33px}.game-brand{font-size:18px}.game-brand small{display:none}.note{height:15px}.lane-number{top:10px}.title-content{transform:scale(.8)}.eyebrow{top:18px}.title-screen footer{bottom:14px}}@media(orientation:portrait){.game-screen{justify-content:center;padding:0 16px}.playfield{flex:none;aspect-ratio:16/9;width:100%}.game-header{height:85px}.game-footer{font-size:8px;gap:8px;letter-spacing:0}.game-footer>span:last-child{display:none}.lane-number{top:10px;left:10px}.receptor span{font-size:10px}.note{height:14px}.title-screen footer{left:20px;right:20px;font-size:8px}h1{letter-spacing:-4px}}.select-button{background:#171d23;border:1px solid #465138;border-radius:4px;color:#d5e6bd;padding:12px 24px;min-height:44px}.track-name{font-size:12px;color:#aab49c;max-width:320px;margin:12px auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clear-button{display:block;margin:0 auto 12px;background:transparent;color:#8b929b;border:0;text-decoration:underline;font-size:11px;min-height:28px}.status-message{font-size:12px;color:#d5e6bd;max-width:320px;min-height:18px;margin:8px auto}.start-button:disabled,.select-button:disabled,.clear-button:disabled{opacity:.5;cursor:wait}.playing-track{max-width:28%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-screen{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:env(safe-area-inset-bottom);user-select:none;-webkit-user-select:none}.receptor{min-height:44px;left:6%;width:88%}.note{left:6%;width:88%;height:24px}.note:before{content:"";position:absolute;inset:-10px 0}.playfield{width:min(100%,1040px);touch-action:none}@media(orientation:landscape)and (max-height:500px){.title-screen{min-height:100svh;padding:26px 0 38px}.title-content{transform:none}.beat-mark,.tagline,.start-hint,.eyebrow{display:none}h1{font-size:46px;letter-spacing:-2px;margin-bottom:12px}.select-button{padding:8px 20px}.track-name{margin:8px auto}.start-button{padding:12px 25px;min-height:44px}.title-screen footer{bottom:10px}.game-header{height:52px}.game-footer{height:30px}.playfield{flex:1}.lane-number{top:8px}.note{height:22px}.status-message:empty{display:none}}.scoreboard{display:flex;gap:20px}.scoreboard .hit-count{gap:6px}.judgment{position:absolute;top:62%;left:0;right:0;text-align:center;pointer-events:none;font-size:clamp(9px,1.5vw,16px);font-weight:800;letter-spacing:1px;z-index:4}.grade-perfect{color:#d8ff98}.grade-great{color:#6be0ff}.grade-good{color:#ffe08a}.grade-miss{color:#ff7b88}.note{pointer-events:none}.receptor{top:84%;height:32%;left:0;width:100%;min-height:44px;border-radius:0;background:#bfff5905}.judgment-line{height:2px;background:#bfff59;z-index:4;box-shadow:0 0 10px #bfff5944}.game-screen{touch-action:none;overscroll-behavior:none}.game-screen button{touch-action:none}.receptor span{position:relative;top:10px}@media(max-width:900px){.scoreboard{gap:12px}.scoreboard .hit-count{flex-direction:column;gap:0}.scoreboard .hit-count strong{font-size:22px}.scoreboard .hit-count>span{font-size:8px;letter-spacing:1px}.game-footer{font-size:8px}}.countdown{position:absolute;top:8%;left:0;right:0;text-align:center;color:#d8ff98;font-size:12px;letter-spacing:3px;z-index:5;pointer-events:none}.countdown strong{display:block;font-size:32px;line-height:1.2}.status-message{line-height:1.6}.title-content{padding-left:16px;padding-right:16px}html{-webkit-text-size-adjust:100%}body.is-playing{overflow:hidden;overscroll-behavior:none}.game-screen{height:100vh;height:100svh;height:100dvh;min-height:0;overflow:hidden;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);-webkit-touch-callout:none}.game-header,.game-footer{gap:12px}.game-header>*,.game-footer>*{min-width:0}.back-button{min-height:44px;flex-shrink:0}.playfield{flex:1;min-height:0;min-width:0}.lane{min-width:0}.receptor{min-height:44px}.game-screen button{-webkit-touch-callout:none}.orientation-hint{display:none}.file-hint{font-size:11px;color:#929b89;margin:10px auto;line-height:1.5}.title-screen{min-height:100vh;min-height:100svh;flex-direction:column;gap:16px;padding:max(24px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.title-content{transform:none;flex-shrink:0;padding:20px 0}.title-screen .eyebrow{position:static;text-align:center}.title-screen footer{position:static;width:100%;gap:16px;flex-shrink:0}.clear-button{min-height:44px;margin-bottom:8px}.status-message{overflow-wrap:anywhere}@media(orientation:landscape)and (max-height:500px){.title-screen{gap:4px;padding-top:12px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.title-content{padding:0}.title-screen footer{font-size:8px}.file-hint{margin:4px auto;font-size:10px}.track-name{margin:4px auto}.clear-button{display:inline-block;min-height:44px;margin:0 0 4px}.game-header{height:50px}.game-footer{height:26px}.game-brand{font-size:16px}.scoreboard{gap:12px}.scoreboard .hit-count{flex-direction:column;gap:0}.scoreboard .hit-count strong{font-size:22px}.scoreboard .hit-count>span{font-size:8px}}@media(orientation:portrait){.orientation-hint{display:block;margin:8px 0 0;text-align:center;font-size:11px;color:#bfff59;flex-shrink:0}.game-header{height:76px}.playfield{flex:1;aspect-ratio:auto}.game-footer{height:40px}}@media(max-height:280px)and (orientation:landscape){.game-footer{display:none}.game-header{height:46px}}
