*{touch-action:pan-x pan-y}:root{--bg0: #0e1116;--bg1: #161a22;--gold: #ffd76a;--gold-dim: rgba(255, 215, 106, .4);--text: #d7dbe2;--text-dim: #8a909b;--font: "Hiragino Maru Gothic ProN", "Hiragino Sans", "Noto Sans CJK JP", "Noto Sans JP", "Yu Gothic UI", "Yu Gothic", system-ui, sans-serif}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;background:var(--bg0);color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}button{font-family:var(--font);cursor:pointer;outline:none}button:focus-visible{outline:2px solid var(--gold-dim);outline-offset:1px}#app{position:relative;display:flex;flex-direction:column;height:100dvh;background:radial-gradient(120% 90% at 50% 0%,#1a1f29 0%,var(--bg0) 70%)}#topbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;height:46px;padding:0 12px;background:linear-gradient(to bottom,#1f242e,#171b23);border-bottom:1px solid rgba(0,0,0,.6);box-shadow:inset 0 1px #ffffff0d,0 2px 8px #00000059;user-select:none;-webkit-user-select:none;z-index:10}.brand{display:flex;align-items:baseline;gap:7px;white-space:nowrap}.brand-mark{color:var(--gold);font-size:17px;text-shadow:0 0 10px rgba(255,215,106,.45)}.brand-name{font-size:17px;font-weight:700;letter-spacing:.14em;background:linear-gradient(to bottom,#f4e9c8,#cfa84e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.grow{flex:1}.seg{display:flex;background:#00000059;border:1px solid rgba(255,255,255,.08);border-radius:9px;padding:2px;box-shadow:inset 0 1px 3px #00000073}.seg-btn{border:none;background:transparent;color:var(--text-dim);font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:7px;letter-spacing:.04em;transition:color .15s,background .15s;white-space:nowrap}.seg-btn.active{color:#1a1408;background:linear-gradient(to bottom,#f3dc9a,#d9ab4e);box-shadow:0 1px 3px #00000080,inset 0 1px #ffffff80}.seg.small .seg-btn{font-size:11.5px;padding:5px 10px}.bar-btn{background:linear-gradient(to bottom,#272d39,#1d222c);border:1px solid rgba(255,255,255,.09);border-radius:8px;color:#c8cdd6;font-size:12.5px;font-weight:600;padding:7px 12px;letter-spacing:.04em;box-shadow:0 1px 2px #0006,inset 0 1px #ffffff0f;transition:filter .12s,box-shadow .12s,color .12s,border-color .12s;white-space:nowrap;touch-action:pan-x pan-y}.bar-btn:active{filter:brightness(.85)}.bar-btn.toggle.active{color:var(--gold);border-color:var(--gold-dim);box-shadow:inset 0 0 10px #ffd76a24,0 1px 2px #0006;text-shadow:0 0 8px rgba(255,215,106,.5)}.octave{display:flex;align-items:center;gap:6px}.oct-btn{padding:7px 9px;font-size:10px}#rangeLabel{font-size:11.5px;font-weight:700;color:var(--text-dim);letter-spacing:.06em;min-width:58px;text-align:center;font-variant-numeric:tabular-nums}#stage{flex:1 1 0;position:relative;min-height:60px;overflow:hidden}#freePanel{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(80% 100% at 50% 110%,rgba(255,215,106,.05) 0%,transparent 60%),linear-gradient(to bottom,#101319,#161a22 75%,#1b202a)}.free-hero{text-align:center;user-select:none;-webkit-user-select:none}.free-mark{font-size:64px;color:#ffd76a1f;line-height:1}.free-hint{margin-top:14px;font-size:13px;letter-spacing:.22em;color:#d7dbe257}#lane{position:absolute;inset:0}#noteCanvas{position:absolute;top:46px;left:0;width:100%;height:calc(100% - 46px);pointer-events:none;z-index:6;display:block}#laneHud{position:absolute;top:8px;left:10px;display:flex;align-items:center;gap:10px;z-index:7}#songTitle{font-size:13px;font-weight:700;color:#ffffff8c;letter-spacing:.08em}#keyboard{flex:0 0 auto;position:relative;height:240px;min-height:250px;background:#060708;box-shadow:0 -8px 24px #0000008c;touch-action:none;user-select:none;-webkit-user-select:none;z-index:5}.kb-fallboard{position:absolute;top:0;left:0;right:0;height:12px;background:linear-gradient(to bottom,#100b07,#2e2114 35%,#3b2b18 55%,#241910 85%,#0c0805),repeating-linear-gradient(93deg,rgba(255,255,255,.012) 0 3px,transparent 3px 8px);border-bottom:1px solid rgba(0,0,0,.8);box-shadow:inset 0 1px #ffe8b412}.kb-felt{position:absolute;top:12px;left:0;right:0;height:4px;background:linear-gradient(to bottom,#c0272e,#8e1418 60%,#6e0d10);box-shadow:0 1px 2px #0009}.kb-keys{position:absolute;inset:16px 0 0;perspective:900px;perspective-origin:50% 0%}.key{position:absolute;top:0;transform:translateZ(0);touch-action:none;-webkit-user-select:none;user-select:none}.key:before{content:"";position:absolute;inset:0;border-radius:0 0 4px 4px;opacity:0;transition:opacity 50ms ease-out;pointer-events:none}.key.white{height:100%;background:linear-gradient(to bottom,#b5b5b5,#fff 1.5% 89%,#f4f4f4 91%,#e0e0e0 92%,#fff 97.5% 100%);border-left:1px solid rgba(32,32,32,.25);border-right:1px solid rgba(32,32,32,.25);border-bottom:1px solid rgba(32,32,32,.35);border-radius:0 0 4px 4px;box-shadow:0 5px 1px #20202033;transition:transform 50ms ease-out;z-index:1}.key.white:before{background:linear-gradient(to bottom,#1c1e221f,#1c1e2212 55%,#1c1e2229)}.key.white.pressed{transform:translateY(4px) translateZ(0);box-shadow:0 1px #20202033}.key.white.pressed:before{opacity:1}.key.black{height:50%;background:linear-gradient(to bottom,#383838,#121212 4%,#272727 9%,#585858 85%,#141414 88%,#343434 89%,#2b2b2b);border-radius:0 0 4px 4px;box-shadow:0 5px 4px #00000080,-1px 0 1px #ffffff12 inset,1px 0 1px #0009 inset;transform-origin:50% 0%;transition:transform 50ms ease-out;z-index:2}.key.black:before{background:#0000004d}.key.black.pressed{transform:rotateX(-4.5deg) translateY(1px) translateZ(0);box-shadow:0 2px 2px #0000008c,-1px 0 1px #ffffff0d inset,1px 0 1px #0009 inset}.key.black.pressed:before{opacity:1}.key:after{content:"";position:absolute;inset:0;border-radius:inherit;opacity:0;pointer-events:none}.key.flash-r:after{background:linear-gradient(to top,#52eb8fcc,#52eb8f00 75%);animation:keyflash .3s ease-out}.key.flash-l:after{background:linear-gradient(to top,#6cb4ffcc,#6cb4ff00 75%);animation:keyflash .3s ease-out}@keyframes keyflash{0%{opacity:1}to{opacity:0}}.key-label{position:absolute;bottom:7px;left:0;right:0;text-align:center;font-size:clamp(10px,1.5vw,14px);font-weight:600;color:#79808c;pointer-events:none;letter-spacing:-.02em}.key-oct{font-size:.68em;color:#9aa1ad;vertical-align:-.12em;margin-left:1px}.kb-keys.hide-labels .key-label{display:none}#songCards{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:visible;background:radial-gradient(80% 100% at 50% 110%,rgba(255,215,106,.04) 0%,transparent 60%),linear-gradient(to bottom,#101319,#161a22 75%,#1b202a);z-index:3}#songCardsScroll{display:flex;gap:14px;padding:16px 24px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;width:100%;height:100%;align-items:center;touch-action:pan-x;scrollbar-width:none;-ms-overflow-style:none}#songCardsScroll::-webkit-scrollbar{display:none}.song-card{flex:0 0 auto;width:180px;display:flex;flex-direction:column;gap:8px;text-align:left;background:linear-gradient(to bottom,#232936d9,#1a1f29d9);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:16px 14px;color:var(--text);transition:border-color .15s,box-shadow .15s,transform .1s;touch-action:pan-x pan-y;user-select:none;-webkit-user-select:none}.song-card:active{transform:scale(.97)}.song-card .sc-title{font-size:15px;font-weight:700;letter-spacing:.06em;line-height:1.3}.song-card .sc-meta{margin-top:2px;font-size:11px;color:var(--text-dim);line-height:1.4}.song-card .sc-stars{color:var(--gold);font-size:12px;letter-spacing:2px;text-shadow:0 0 6px rgba(255,215,106,.4);white-space:nowrap}.song-card .sc-stars .off{color:#ffffff24;text-shadow:none}#startOverlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:50;background:radial-gradient(90% 70% at 50% 30%,#232a38,#11141a 60%,#0a0c10);cursor:pointer;transition:opacity .5s ease;user-select:none;-webkit-user-select:none}#startOverlay.fade-out{opacity:0;pointer-events:none}.start-inner{text-align:center}.start-ring{width:86px;height:86px;margin:0 auto 22px;border:1.5px solid rgba(255,215,106,.55);border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 28px #ffd76a2e,inset 0 0 18px #ffd76a1a}.start-ring span{font-size:36px;color:var(--gold);text-shadow:0 0 14px rgba(255,215,106,.6)}.start-title{font-size:42px;font-weight:700;letter-spacing:.3em;margin-left:.3em;background:linear-gradient(to bottom,#f7ecca 20%,#d2a84e 85%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.start-sub{margin-top:8px;font-size:12px;letter-spacing:.34em;color:#d7dbe273}.start-tap{margin-top:42px;font-size:14.5px;letter-spacing:.18em;color:#ffffffbf;animation:tap-pulse 1.8s ease-in-out infinite}@keyframes tap-pulse{0%,to{opacity:.85}50%{opacity:.3}}.start-progress{width:240px;height:4px;margin:42px auto 0;background:#ffffff17;border-radius:2px;overflow:hidden}.start-progress-bar{height:100%;width:0%;background:linear-gradient(to right,#d9a94a,#ffd76a);border-radius:2px;box-shadow:0 0 10px #ffd76a99;transition:width .18s ease-out}.start-loading{margin-top:14px;font-size:12px;letter-spacing:.14em;color:#d7dbe280}[hidden]{display:none!important}
