:root{
 --bg:var(--t-bg);--panel:var(--t-panel);--surface-2:var(--t-panel-deep);--surface-3:var(--t-panel);--text:var(--t-ink);--muted:var(--t-muted);--dim:var(--t-dim);
 --line:var(--t-line);--line-strong:var(--t-line-strong);--cyan:#6bd5e4;--violet:#a391e6;--amber:#e3ad68;--coral:#e77e78;
 --lane0:#6bd5e4;--lane1:#a391e6;--lane2:#e3ad68;--lane3:#e77e78;--accent:var(--t-accent);--hitY:82%;--game-dim:.72;
}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;background:var(--bg);color:var(--text);font-family:Inter,"Segoe UI",system-ui,-apple-system,sans-serif;font-feature-settings:"tnum" 1,"ss01" 1}button,input{font:inherit;color:inherit}button{border:0}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(rgba(255,255,255,.017) 1px,transparent 1px);background-size:100% 32px;opacity:.45}body:after{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 0 14%,rgba(255,255,255,.018) 14% 14.08%,transparent 14.08% 86%,rgba(255,255,255,.018) 86% 86.08%,transparent 86%);z-index:0}.screen{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:1}.screen.active{opacity:1;pointer-events:auto}.signal-label{font:700 10px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.14em;color:var(--dim)}.signal-line{height:1px;background:linear-gradient(90deg,var(--accent),rgba(255,255,255,.12) 20%,rgba(255,255,255,.04));position:relative;overflow:hidden}.signal-line:after{content:"";position:absolute;width:70px;inset:0 auto 0 -70px;background:#fff;opacity:.45;animation:scan 4s ease-in-out infinite}@keyframes scan{0%,60%{transform:translateX(0)}90%,100%{transform:translateX(900px)}}.btn{height:46px;border-radius:8px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;font-weight:760;letter-spacing:-.01em;transition:transform .13s ease,background .13s ease,border-color .13s ease}.btn:active{transform:scale(.985)}.btn.primary{background:var(--text);color:#0a0b0e}.btn.primary:after{content:"->";font-family:ui-monospace,monospace}.btn.secondary{background:var(--t-panel-deep);border:1px solid var(--line-strong)}.btn.tertiary{height:38px;background:transparent;color:var(--muted);padding:0 8px}.icon-btn{width:auto;min-width:38px;height:38px;padding:0 11px;white-space:nowrap;border-radius:8px;border:1px solid var(--line-strong);background:rgba(255,255,255,.025);cursor:pointer}.btn:focus-visible,.icon-btn:focus-visible,.nav-btn:focus-visible,.song-card:focus-visible,.diff:focus-visible,.shelf-item:focus-visible,.bind-btn:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* GLOBAL / MENU */
#menu{overflow:auto;background:var(--bg)}.app-shell{width:min(1600px,calc(100% - 64px));min-height:100%;margin:0 auto;display:flex;flex-direction:column}.global-header{height:66px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);position:sticky;top:0;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(14px);z-index:20}.brand-nav{display:flex;align-items:center;gap:20px}.games-home-link{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font:650 10px/1 ui-monospace,monospace;letter-spacing:.06em;text-decoration:none;white-space:nowrap}.games-home-link:hover,.games-home-link:focus-visible{color:var(--text);outline:none}.wordmark{display:flex;align-items:center;gap:13px;font-weight:850;letter-spacing:-.04em}.wordmark-mark{width:28px;height:18px;display:flex;align-items:center;gap:3px}.wordmark-mark i{display:block;width:2px;background:var(--text)}.wordmark-mark i:nth-child(1){height:7px}.wordmark-mark i:nth-child(2){height:15px}.wordmark-mark i:nth-child(3){height:10px}.wordmark-mark i:nth-child(4){height:18px}.wordmark small{font:650 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.13em;margin-left:4px}.global-nav{display:flex;height:100%}.nav-btn{background:none;color:var(--muted);padding:0 20px;position:relative;cursor:pointer;font-size:14px}.nav-btn.active{color:var(--text)}.nav-btn.active:after{content:"";position:absolute;height:2px;left:20px;right:20px;bottom:-1px;background:var(--text)}.header-actions{justify-self:end;display:flex;align-items:center;gap:10px}.header-status{font:650 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.menu-main{padding:46px 0 64px;flex:1}.menu-view{display:none}.menu-view.active{display:block;animation:viewIn .22s ease both}@keyframes viewIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.view-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.view-heading h1{font-size:clamp(34px,4vw,54px);line-height:.96;letter-spacing:-.055em;margin:8px 0 0;max-width:760px}.view-heading p{max-width:500px;color:var(--muted);line-height:1.55;margin:0;font-size:14px;padding-right:48px}

/* HOME */
.continue-stage{min-height:485px;display:grid;grid-template-columns:minmax(320px,.86fr) minmax(480px,1.14fr);gap:64px;align-items:center;border-bottom:1px solid var(--line);padding:18px 0 50px;position:relative}.continue-stage:before{content:"";position:absolute;left:42%;right:0;top:14%;height:1px;background:linear-gradient(90deg,var(--accent),transparent);opacity:.45}.hero-art{width:min(430px,36vw);aspect-ratio:1;margin-left:auto;position:relative;background:#11141a;border:1px solid var(--line-strong);overflow:hidden;box-shadow:0 28px 80px rgba(0,0,0,.35)}.hero-art:before,.cover:before,.row-art:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 25px,rgba(255,255,255,.035) 25px 26px),linear-gradient(135deg,transparent 0 54%,color-mix(in srgb,var(--songAccent) 28%,transparent) 54.3% 54.8%,transparent 55%),radial-gradient(circle at 72% 31%,color-mix(in srgb,var(--songAccent) 18%,transparent),transparent 28%)}.hero-art:after,.cover:after{content:"";position:absolute;left:9%;right:9%;top:50%;height:36px;background:linear-gradient(90deg,transparent 0 4%,var(--songAccent) 4% 4.4%,transparent 4.4% 13%,rgba(255,255,255,.45) 13% 13.25%,transparent 13.25% 22%,var(--songAccent) 22% 22.3%,transparent 22.3% 39%,rgba(255,255,255,.28) 39% 39.25%,transparent 39.25% 58%,var(--songAccent) 58% 58.35%,transparent 58.35% 78%,rgba(255,255,255,.32) 78% 78.2%,transparent 78.2%);clip-path:polygon(0 45%,6% 45%,8% 7%,10% 88%,13% 45%,23% 45%,25% 24%,27% 70%,29% 45%,42% 45%,45% 2%,47% 96%,50% 45%,62% 45%,65% 29%,68% 68%,71% 45%,80% 45%,83% 16%,86% 80%,89% 45%,100% 45%,100% 55%,89% 55%,86% 88%,83% 24%,80% 55%,71% 55%,68% 75%,65% 35%,62% 55%,50% 55%,47% 100%,45% 8%,42% 55%,29% 55%,27% 78%,25% 31%,23% 55%,13% 55%,10% 96%,8% 13%,6% 55%,0 55%)}.hero-art .art-code{position:absolute;left:24px;bottom:20px;font:700 11px ui-monospace,monospace;letter-spacing:.12em;color:rgba(255,255,255,.64)}.continue-copy .signal-label{margin-bottom:16px}.continue-copy h2{font-size:clamp(43px,5vw,70px);line-height:.92;letter-spacing:-.06em;margin:0 0 13px}.continue-copy .artist{font-size:18px;color:var(--muted);margin-bottom:30px}.hero-meta{display:flex;gap:34px;margin-bottom:34px}.hero-meta span{display:grid;gap:6px}.hero-meta small{font:700 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.13em}.hero-meta b{font-size:20px;font-weight:680}.hero-actions{display:flex;gap:10px}.collections{padding-top:34px}.collection{display:grid;grid-template-columns:180px 1fr;gap:24px;padding:20px 0;border-bottom:1px solid var(--line)}.collection-title b{display:block;font-size:14px;margin-bottom:7px}.collection-title small{color:var(--dim);font-size:11px}.shelf{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.shelf-item{display:grid;grid-template-columns:54px 1fr;align-items:center;gap:13px;text-align:left;background:transparent;border:1px solid transparent;padding:6px;cursor:pointer;transition:.16s}.shelf-item:hover{background:rgba(255,255,255,.025);border-color:var(--line)}.shelf-item .row-art{width:54px;height:54px}.shelf-item b{display:block;font-size:13px}.shelf-item small{display:block;color:var(--dim);font-size:10px;margin-top:5px}

/* LIBRARY */
.library-grid{display:grid;grid-template-columns:minmax(520px,1fr) minmax(360px,470px);gap:44px;align-items:start}.library-pane{min-width:0}.library-toolbar{display:grid;grid-template-columns:1fr auto;gap:12px;margin-bottom:20px}.search-wrap{height:44px;border-bottom:1px solid var(--line-strong);display:flex;align-items:center;gap:10px}.search-wrap span{font-family:ui-monospace,monospace;color:var(--dim)}.search-wrap input{width:100%;border:0;background:transparent;outline:0;font-size:14px}.search-wrap input::placeholder{color:var(--t-dim)}.filter-btn{height:42px;border-radius:7px;border:1px solid var(--line-strong);background:var(--surface);padding:0 14px;color:var(--muted)}.library-caption{display:grid;grid-template-columns:1fr 180px 88px 26px;gap:16px;padding:0 14px 9px 86px;border-bottom:1px solid var(--line);font:650 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.11em}.song-list{display:flex;flex-direction:column}.song-card{position:relative;display:grid;grid-template-columns:58px 1fr 180px 88px 26px;align-items:center;gap:16px;min-height:78px;text-align:left;background:transparent;border-bottom:1px solid var(--line);padding:10px 14px 10px 8px;cursor:pointer;overflow:hidden}.song-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--songAccent);transform:scaleY(0);transition:transform .17s}.song-card:after{content:"";position:absolute;height:1px;width:120px;right:100%;top:50%;background:linear-gradient(90deg,transparent,var(--songAccent));transition:right .4s ease}.song-card:hover{background:rgba(255,255,255,.02)}.song-card:hover:after{right:-120px}.song-card.selected{background:rgba(255,255,255,.035)}.song-card.selected:before{transform:scaleY(1)}.row-art{position:relative;width:58px;height:58px;display:block;background:#11141a;border:1px solid var(--line);overflow:hidden}.row-art i{position:absolute;inset:auto 7px 7px;height:1px;background:var(--songAccent);box-shadow:7px -8px 0 rgba(255,255,255,.22),18px -3px 0 var(--songAccent),29px -12px 0 rgba(255,255,255,.22)}.row-art em{position:absolute;top:7px;right:7px;font:700 8px ui-monospace,monospace;color:rgba(255,255,255,.55);font-style:normal}.song-copy b{display:block;font-size:15px;line-height:1.2}.song-copy small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.song-tech{display:grid;grid-template-columns:65px 1fr;gap:12px}.song-tech span{display:grid;gap:2px}.song-tech b{font-size:11px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.song-tech small{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.08em}.song-diffs{display:flex;gap:5px}.song-diffs i{width:22px;height:22px;border:1px solid var(--line);display:grid;place-items:center;font:700 8px ui-monospace,monospace;font-style:normal;color:var(--muted)}.song-chevron{font-family:ui-monospace,monospace;color:var(--dim)}.empty-state{display:none;place-items:center;min-height:180px;border-bottom:1px solid var(--line);color:var(--muted)}
.selected-panel{position:sticky;top:96px;border-left:1px solid var(--line);padding-left:34px}.cover{width:100%;aspect-ratio:1;max-height:390px;position:relative;background:#11141a;border:1px solid var(--line-strong);overflow:hidden;margin-bottom:25px}.cover .cover-index{position:absolute;left:20px;top:18px;font:700 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.12em}.cover .cover-bpm{position:absolute;right:20px;bottom:16px;font-size:62px;font-weight:760;letter-spacing:-.07em}.cover .cover-bpm small{font:700 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.13em;margin-left:8px}.now-title{font-size:30px;font-weight:760;letter-spacing:-.04em;line-height:1.02}.now-artist{color:var(--muted);font-size:13px;margin-top:8px}.selected-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.selected-meta div{padding:14px 10px 13px 0}.selected-meta div+div{border-left:1px solid var(--line);padding-left:12px}.selected-meta b{display:block;font-size:15px}.selected-meta span{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.detail-section{margin-top:22px}.detail-section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.detail-section-head b{font-size:12px}.diff-row{display:grid;grid-template-columns:repeat(3,1fr);position:relative;background:var(--surface);border:1px solid var(--line-strong)}.diff{min-height:66px;background:transparent;color:var(--muted);cursor:pointer;text-align:left;padding:11px 10px;position:relative;border-right:1px solid var(--line)}.diff:last-child{border-right:0}.diff span{display:block;font-size:11px;font-weight:700}.diff small{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.08em;margin-top:5px;display:block}.diff .diff-level{position:absolute;right:9px;top:10px;font-size:18px;color:#737985;font-weight:640}.diff.selected{background:rgba(255,255,255,.045);color:var(--text)}.diff.selected:after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:2px;background:var(--accent)}.diff.selected .diff-level{color:var(--accent)}.density{height:18px;position:relative;margin-top:9px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.08) 0 1px,transparent 1px 8px);overflow:hidden}.density span{position:absolute;inset:0 auto 0 0;width:60%;background:repeating-linear-gradient(90deg,var(--accent) 0 1px,transparent 1px 8px);transition:width .2s ease;opacity:.7}.best-strip{display:grid;grid-template-columns:1.3fr 1fr .55fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.best-strip div{padding:13px 0}.best-strip div+div{padding-left:14px;border-left:1px solid var(--line)}.best-strip b{display:block;font-size:14px}.best-strip span{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.keys{display:flex;gap:7px}.kbd{width:36px;height:36px;border:1px solid var(--line-strong);background:var(--surface);display:grid;place-items:center;font:750 12px ui-monospace,monospace}.kbd:nth-child(1){border-bottom-color:var(--lane0)}.kbd:nth-child(2){border-bottom-color:var(--lane1)}.kbd:nth-child(3){border-bottom-color:var(--lane2)}.kbd:nth-child(4){border-bottom-color:var(--lane3)}.menu-actions{display:grid;grid-template-columns:1fr auto;gap:9px;margin-top:23px}.source-link{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.08em;margin-top:14px}.source-link a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line-strong)}

/* SCORES */
.scores-shell{max-width:980px;overflow-x:auto;-webkit-overflow-scrolling:touch}.score-head{display:grid;grid-template-columns:1fr 180px 140px 70px;min-width:560px;padding:0 16px 10px;border-bottom:1px solid var(--line);font:650 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.score-row{display:grid;grid-template-columns:1fr 180px 140px 70px;min-width:560px;align-items:center;min-height:68px;padding:0 16px;border-bottom:1px solid var(--line)}.score-row span b{display:block;font-size:14px}.score-row span small{display:block;margin-top:4px;color:var(--dim);font-size:10px}.score-row strong{font-size:16px}.score-row em{font-style:normal;color:var(--muted)}.score-row i{font-style:normal;font-size:28px;font-weight:800}.no-scores{display:grid;place-items:center;min-height:320px;border-bottom:1px solid var(--line);color:var(--muted);text-align:center}.no-scores b{display:block;color:var(--text);font-size:18px;margin-bottom:8px}

/* GAMEPLAY */
#game{background:#06070a}.game-backdrop{position:absolute;inset:0;background:linear-gradient(rgba(6,7,10,var(--game-dim)),rgba(6,7,10,.96)),repeating-linear-gradient(90deg,transparent 0 89px,rgba(255,255,255,.018) 89px 90px);pointer-events:none}.performance-hud{position:absolute;z-index:8;left:30px;right:30px;top:22px;height:72px;display:grid;grid-template-columns:1fr minmax(250px,560px) 1fr;align-items:start;gap:24px}.track-hud b{display:block;font-size:14px}.track-hud span{display:block;color:var(--muted);font-size:10px;margin-top:5px}.track-hud em{font:700 8px ui-monospace,monospace;color:var(--accent);font-style:normal;letter-spacing:.1em;display:block;margin-top:6px}.timeline-hud{padding-top:6px}.progress{height:2px;background:rgba(255,255,255,.10);position:relative}.progress div{height:100%;width:0;background:var(--text);position:relative}.progress div:after{content:"";position:absolute;right:-2px;top:-2px;width:5px;height:5px;background:var(--accent)}.meta-row{display:flex;justify-content:space-between;font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.08em;margin-top:8px}.score-hud{text-align:right;display:grid;grid-template-columns:1fr auto;gap:18px;justify-content:end}.score-block span,.accuracy-block span{display:block;font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.11em}.score{font-size:26px;font-weight:690;letter-spacing:-.035em}.accuracy{font-size:16px;font-weight:650;margin-top:4px}.performance-stage{position:absolute;inset:98px 0 22px;display:grid;place-items:center}.playfield-wrap{width:min(600px,46vw);height:100%;position:relative}.playfield{position:absolute;inset:0;background:#0b0d11;border-left:1px solid var(--line-strong);border-right:1px solid var(--line-strong);overflow:hidden;box-shadow:0 28px 100px rgba(0,0,0,.42)}.playfield:before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(to bottom,transparent 0 51px,rgba(255,255,255,.025) 51px 52px);opacity:.55}.playfield:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:rgba(255,255,255,.035)}.lanes{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr)}.lane{position:relative;border-left:1px solid rgba(255,255,255,.055);background:linear-gradient(to bottom,transparent 84%,color-mix(in srgb,var(--lc) 3%,transparent));transition:background .045s}.lane:last-child{border-right:1px solid rgba(255,255,255,.055)}.lane:nth-child(1){--lc:var(--lane0)}.lane:nth-child(2){--lc:var(--lane1)}.lane:nth-child(3){--lc:var(--lane2)}.lane:nth-child(4){--lc:var(--lane3)}.lane.pressed{background:linear-gradient(to top,color-mix(in srgb,var(--lc) 24%,transparent),transparent 15%)}.lane.pressed:after{content:"";position:absolute;left:0;right:0;bottom:7%;height:18%;background:linear-gradient(to top,color-mix(in srgb,var(--lc) 15%,transparent),transparent);animation:impulse .16s ease-out}@keyframes impulse{from{transform:translateY(20%);opacity:1}to{transform:translateY(-42%);opacity:0}}#notes{position:absolute;inset:0;pointer-events:none}.note-head{position:absolute;width:calc(25% - 16px);height:14px;left:calc(var(--lane)*25% + 8px);background:var(--nc);border:1px solid color-mix(in srgb,var(--nc) 65%,white 30%);transform:translateY(-50%);z-index:3}.note-head:before{content:"";position:absolute;left:6px;right:6px;top:3px;height:2px;background:rgba(8,9,12,.48)}.note-head:after{content:"";position:absolute;right:4px;top:3px;width:4px;height:6px;border-left:1px solid rgba(255,255,255,.55);border-right:1px solid rgba(255,255,255,.55)}.note-head.hold-active{height:18px;outline:1px solid #fff;outline-offset:1px}.hold-tail{position:absolute;width:calc(25% - 28px);left:calc(var(--lane)*25% + 14px);background:linear-gradient(to bottom,color-mix(in srgb,var(--nc) 34%,#111 66%),color-mix(in srgb,var(--nc) 80%,#111 20%));border-left:2px solid var(--nc);border-right:2px solid var(--nc);opacity:.88;z-index:2}.hold-tail:before{content:"";position:absolute;left:32%;right:32%;top:0;bottom:0;background:rgba(255,255,255,.12)}.hold-tail:after{content:"";position:absolute;left:-2px;right:-2px;top:0;height:4px;background:var(--nc)}.hitline{position:absolute;left:0;right:0;top:var(--hitY);height:2px;background:rgba(255,255,255,.9);z-index:5}.hitline:after{content:"";position:absolute;left:-32px;right:-32px;top:6px;height:1px;background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5}.receptors{position:absolute;left:0;right:0;top:calc(var(--hitY) + 10px);height:48px;display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:0 8px;z-index:6}.receptor{display:grid;place-items:center;border-top:1px solid var(--rc);border-bottom:1px solid var(--line);background:#0d0f13;color:var(--text);font:750 13px ui-monospace,monospace;transition:.05s}.receptor:nth-child(1){--rc:var(--lane0)}.receptor:nth-child(2){--rc:var(--lane1)}.receptor:nth-child(3){--rc:var(--lane2)}.receptor:nth-child(4){--rc:var(--lane3)}.receptor.active{background:color-mix(in srgb,var(--rc) 18%,#0d0f13);transform:translateY(2px)}#judgement{position:absolute;left:50%;top:69%;transform:translate(-50%,-50%);font-size:20px;font-weight:800;letter-spacing:.11em;opacity:0;z-index:12}#judgement.show{animation:judge .24s ease-out}@keyframes judge{0%{opacity:1;transform:translate(-50%,-50%) translateY(5px)}40%{opacity:1;transform:translate(-50%,-50%)}100%{opacity:0;transform:translate(-50%,-60%)}}#beatGlow{position:absolute;left:20%;right:20%;bottom:17%;height:1px;background:var(--accent);opacity:0;z-index:4}#beatGlow.pulse{animation:beat .18s ease-out}@keyframes beat{from{opacity:.7;transform:scaleX(.4)}to{opacity:0;transform:scaleX(1)}}.combo-float{position:absolute;z-index:9;left:calc(50% - min(300px,23vw) - 125px);top:42%;text-align:right;width:100px}.combo{font-size:46px;font-weight:700;letter-spacing:-.055em;line-height:.9}.combo-label{font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.13em;margin-top:8px}.run-micro{position:absolute;z-index:9;right:calc(50% - min(300px,23vw) - 150px);top:44%;width:125px;font:650 9px ui-monospace,monospace;color:var(--dim);line-height:1.9}.run-micro b{color:var(--text);font-weight:650}.timing-legend{position:absolute;left:30px;bottom:23px;z-index:9;font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.07em;color:var(--art-muted,var(--t-muted));}.offset-hud{position:absolute;right:30px;bottom:23px;z-index:9;font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.07em}.flash{position:fixed;inset:0;pointer-events:none;z-index:80;opacity:0;border:1px solid var(--flashColor,#fff)}.flash.go{animation:flash .15s ease-out}@keyframes flash{from{opacity:.18}to{opacity:0}}
.start-curtain{position:absolute;inset:0;z-index:60;display:grid;place-items:center;background:#08090cf2;opacity:0;pointer-events:none;transition:.18s}.start-curtain.show{opacity:1}.start-card{text-align:center;width:min(420px,calc(100% - 32px));min-width:0}.start-card .signal-line{margin:18px 0}.start-card h2{font-size:30px;margin:0;letter-spacing:-.04em}.start-card p{color:var(--muted);margin:8px 0 24px}.start-count{font-size:92px;line-height:1;font-weight:700;letter-spacing:-.07em}

/* OVERLAYS / SETTINGS / CALIBRATION / RESULTS */
.overlay{position:fixed;inset:0;z-index:70;background:var(--t-scrim,rgba(5,6,8,.88));backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:.17s;display:grid;place-items:center}.overlay.show{opacity:1;pointer-events:auto}.modal{width:min(560px,92vw);background:var(--t-panel);border:1px solid var(--line-strong);box-shadow:0 30px 100px rgba(0,0,0,.5);padding:30px}.modal h2{font-size:28px;letter-spacing:-.04em;margin:8px 0 10px}.modal p{color:var(--muted);line-height:1.55;font-size:13px}.actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:25px}.pause-modal{width:min(520px,92vw)}.pause-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:24px 0}.pause-stats div{padding:13px 0}.pause-stats div+div{padding-left:14px;border-left:1px solid var(--line)}.pause-stats b{display:block;font-size:16px}.pause-stats span{font:650 8px ui-monospace,monospace;color:var(--dim)}.countdown{font-size:84px;font-weight:720;letter-spacing:-.07em;text-align:center;margin:12px 0}.countdown-note{text-align:center;color:var(--accent);font:650 9px ui-monospace,monospace;letter-spacing:.1em}.settings-shell{width:min(1120px,94vw);height:min(760px,92vh);background:var(--t-panel);border:1px solid var(--line-strong);display:grid;grid-template-columns:230px 1fr;overflow:hidden}.settings-side{border-right:1px solid var(--line);padding:28px 20px;display:flex;flex-direction:column}.settings-side h2{font-size:25px;letter-spacing:-.04em;margin:10px 0 26px}.settings-tabs{display:grid;gap:4px}.settings-tabs button{height:38px;text-align:left;background:transparent;color:var(--muted);padding:0 10px}.settings-tabs button.active{background:var(--surface-2);color:var(--text);border-left:2px solid var(--accent)}.settings-close{margin-top:auto}.settings-main{overflow:auto;padding:36px 44px;scroll-padding:16px 0}.setting-section{margin-bottom:38px}.setting-section h3{font-size:15px;margin:0 0 4px}.setting-section>p{font-size:11px;color:var(--dim);margin:0 0 18px}.setting-row{min-height:68px;display:grid;grid-template-columns:1fr minmax(220px,330px);align-items:center;gap:22px;border-top:1px solid var(--line)}.setting-row:last-child{border-bottom:1px solid var(--line)}.setting-copy b{display:block;font-size:13px}.setting-copy small{display:block;color:var(--dim);font-size:10px;margin-top:5px}.range-control{display:grid;grid-template-columns:1fr 64px;gap:12px;align-items:center}.range-control input{width:100%;accent-color:var(--accent)}.range-control output{text-align:right;font:700 10px ui-monospace,monospace;color:var(--muted)}.switch{justify-self:end;width:46px;height:25px;position:relative}.switch input{opacity:0;position:absolute}.switch span{position:absolute;inset:0;border:1px solid var(--line-strong);background:var(--t-panel-deep)}.switch span:after{content:"";position:absolute;left:4px;top:4px;width:15px;height:15px;background:var(--t-ink);transition:.15s}.switch input:checked+span:after{left:25px;background:var(--accent)}.bind-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.bind-btn{height:66px;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;cursor:pointer}.bind-btn strong{font:760 18px ui-monospace,monospace}.bind-btn small{font:650 7px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.bind-btn.listening{border-color:var(--accent)}
.cal-shell{width:min(1180px,95vw);height:min(760px,92vh);background:var(--t-panel);border:1px solid var(--line-strong);display:grid;grid-template-columns:360px 1fr;overflow:hidden}.cal-copy{padding:42px;border-right:1px solid var(--line);display:flex;flex-direction:column}.cal-copy h2{font-size:34px;letter-spacing:-.05em;margin:12px 0}.cal-copy p{color:var(--muted);font-size:13px;line-height:1.6}.offset-val{font-size:52px;font-weight:690;letter-spacing:-.05em;margin-top:auto}.offset-help{font-size:10px;color:var(--dim);line-height:1.5;margin-top:8px}.offset-row{display:grid;grid-template-columns:40px 1fr 40px;gap:9px;align-items:center;margin-top:14px}.square{height:38px;background:var(--surface-2);border:1px solid var(--line-strong);cursor:pointer}.cal-main{padding:42px;display:flex;flex-direction:column}.cal-instrument{flex:1;min-height:360px;position:relative;border-left:1px solid var(--line);border-right:1px solid var(--line);background:repeating-linear-gradient(to bottom,transparent 0 47px,rgba(255,255,255,.025) 47px 48px)}.cal-lanes{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,1fr)}.cal-lanes i{border-left:1px solid var(--line);position:relative}.cal-lanes i:last-child{border-right:1px solid var(--line)}.cal-lanes i:after{content:attr(data-key);position:absolute;bottom:20px;left:50%;transform:translateX(-50%);font:750 13px ui-monospace,monospace;color:var(--muted)}.cal-center-line{position:absolute;left:0;right:0;top:50%;height:1px;background:#fff}.orb-wrap{position:absolute;left:50%;top:50%;width:80px;height:80px;transform:translate(-50%,-50%);display:grid;place-items:center}.orb{width:14px;height:14px;background:var(--accent);transform:rotate(45deg)}.orb.beat{animation:calBeat .2s ease-out}@keyframes calBeat{0%{transform:rotate(45deg) scale(.5);box-shadow:0 0 0 var(--accent)}30%{transform:rotate(45deg) scale(1.7);box-shadow:0 0 22px var(--accent)}100%{transform:rotate(45deg) scale(1)}}.orb-ring{position:absolute;width:64px;height:64px;border:1px solid rgba(255,255,255,.13)}.cal-statusbar{display:flex;justify-content:space-between;align-items:center;padding-top:18px}.sample-dots{display:flex;gap:7px}.sample-dot{width:18px;height:3px;background:#313640}.sample-dot.on{background:var(--accent)}#calStatus{font-size:12px}.cal-actions{display:flex;gap:8px;margin-top:18px}
.results-shell{width:min(1120px,94vw);max-height:100vh;max-height:100dvh;overflow-y:auto;background:var(--t-panel);border:1px solid var(--line-strong);padding:36px}.results-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:20px;border-bottom:1px solid var(--line)}.results-top b{font-size:14px}.new-best{display:none;align-items:center;padding:6px 9px;border:1px solid var(--accent);color:var(--accent);font:700 8px ui-monospace,monospace;letter-spacing:.11em}.results-grid{display:grid;grid-template-columns:220px 1fr 320px;gap:34px;padding:30px 0}.grade{font-size:150px;line-height:.82;font-weight:760;letter-spacing:-.09em}.grade-caption{font:650 9px ui-monospace,monospace;color:var(--dim);letter-spacing:.11em;margin-top:20px}.result-score{font-size:46px;font-weight:690;letter-spacing:-.045em}.result-acc{font-size:24px;color:var(--muted);margin-top:5px}.result-line{color:var(--muted);font-size:12px;line-height:1.55;margin-top:18px;max-width:420px}.result-deltas{display:grid;grid-template-columns:1fr 1fr;margin-top:26px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.result-deltas div{padding:12px 0}.result-deltas div+div{border-left:1px solid var(--line);padding-left:14px}.result-deltas b{display:block;font-size:13px}.result-deltas span{font:650 8px ui-monospace,monospace;color:var(--dim)}.judge-list{border-top:1px solid var(--line)}.judge-row{height:38px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:11px}.judge-row b{font-size:14px}.timing-card{margin-top:20px}.timing-head{display:flex;justify-content:space-between;font:650 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.08em}.timing-plot{height:76px;position:relative;margin-top:8px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgba(107,213,228,.03),transparent 45% 55%,rgba(231,126,120,.03))}.timing-plot i{position:absolute;width:3px;height:3px;background:var(--text);opacity:.45}.timing-center{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line-strong)}.results-actions{display:flex;gap:9px;border-top:1px solid var(--line);padding-top:20px}
.credits{position:fixed;left:18px;bottom:10px;z-index:2;font:600 7px ui-monospace,monospace;color:var(--t-muted);letter-spacing:.07em}#menu.active~.credits{display:none}

.high-contrast .note-head{outline:2px solid #fff;outline-offset:1px}.high-contrast .hold-tail{border-left-width:4px;border-right-width:4px}.reduced-motion *, .reduced-motion *:before,.reduced-motion *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
@media(max-width:1180px){.app-shell{width:calc(100% - 34px)}.library-grid{grid-template-columns:minmax(480px,1fr) 360px;gap:24px}.selected-panel{padding-left:22px}.performance-hud{left:18px;right:18px}.playfield-wrap{width:min(560px,54vw)}.combo-float{left:18px}.run-micro{right:18px}.continue-stage{grid-template-columns:360px 1fr;gap:36px}.hero-art{width:340px}.settings-shell{grid-template-columns:190px 1fr}}
@media(max-width:900px){body{overflow:auto}.global-header{grid-template-columns:auto 1fr auto}.global-nav{display:flex;align-items:center;min-width:0}.nav-btn:not([data-view="scores"]){display:none}.nav-btn[data-view="scores"]{display:inline-flex;align-items:center;height:34px;padding:0 12px;border:1px solid var(--line-strong);border-radius:8px;font:700 10px/1 ui-monospace,monospace;letter-spacing:.08em;white-space:nowrap}.nav-btn[data-view="scores"].active:after{left:12px;right:12px}.header-status{display:none}.wordmark small{display:none}.library-grid{grid-template-columns:1fr}.selected-panel{position:relative;top:auto;border-left:0;border-top:1px solid var(--line);padding:28px 0 0}.continue-stage{grid-template-columns:1fr}.hero-art{margin:0;width:min(420px,80vw)}.shelf{grid-template-columns:1fr}.collection{grid-template-columns:1fr}.performance-hud{grid-template-columns:1fr 1fr}.timeline-hud{position:absolute;left:0;right:0;top:66px}.playfield-wrap{width:min(560px,78vw)}.score-hud{grid-column:2}.combo-float,.run-micro{display:none}.settings-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:94vh}.cal-shell{grid-template-columns:1fr;height:94vh}.settings-side,.cal-copy{border-right:0;border-bottom:1px solid var(--line)}.settings-side{display:none}.cal-copy{padding:24px}.results-grid{grid-template-columns:160px 1fr}.results-grid>div:last-child{grid-column:1/-1}}


/* MUSIC LIBRARY V4 */
.cover,.hero-art,.row-art{background-size:cover;background-position:center;background-repeat:no-repeat;isolation:isolate}.cover.has-art:before,.cover.has-art:after,.hero-art.has-art:before,.hero-art.has-art:after,.row-art.has-art:before{opacity:0}.cover.has-art .cover-index,.cover.has-art .cover-bpm{z-index:2;text-shadow:0 2px 14px #000}.row-art.has-art i,.row-art.has-art em{display:none}.song-card{transition:background .16s ease,transform .16s ease}.song-card.selected{transform:translateX(4px)}.song-card.prototype .song-copy:after,.song-card.licensed .song-copy:after{display:inline-block;margin-top:6px;padding:3px 5px;border:1px solid var(--line-strong);font:700 7px ui-monospace,monospace;letter-spacing:.09em;color:var(--dim)}.song-card.prototype .song-copy:after{content:"TEST AUDIO"}.song-card.licensed .song-copy:after{content:attr(data-license);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.song-card.audio-ready .song-copy:after{content:"LOCAL AUDIO READY";color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.selected-panel.switching .cover{transform:translateY(3px);opacity:.68}.selected-panel.switching .now-title,.selected-panel.switching .now-artist{opacity:.35;transform:translateY(3px)}.cover,.now-title,.now-artist{transition:opacity .16s ease,transform .16s ease,background-image .18s ease}.source-link{line-height:1.65}.source-link button{font:inherit;letter-spacing:inherit;color:var(--text);background:transparent;border:0;border-bottom:1px solid var(--accent);padding:0;cursor:pointer}.prototype-note{margin-top:10px;padding:9px 10px;border-left:2px solid var(--accent);background:rgba(255,255,255,.025);font:650 9px/1.45 ui-monospace,monospace;color:var(--muted);letter-spacing:.04em}.preview-pill{display:inline-flex;align-items:center;gap:6px;margin-left:8px;color:var(--muted)}.preview-pill:before{content:"";width:20px;height:1px;background:var(--accent);animation:previewPulse 1s ease-in-out infinite}@keyframes previewPulse{50%{width:32px;opacity:.45}}body.reduced-motion .preview-pill:before{animation:none}.menu-actions .btn.need-audio{background:var(--surface-2);color:var(--text);border:1px solid var(--accent)}

/* Local-media app shell + real artwork handling */
.row-art img{width:100%;height:100%;display:block;object-fit:cover;position:relative;z-index:1}
.row-art.no-art,.cover.no-art,.hero-art.no-art{background:#101218;background-image:none!important}
.row-art.no-art:before,.cover.no-art:before,.hero-art.no-art:before{opacity:.28;background:repeating-linear-gradient(0deg,transparent 0 15px,rgba(255,255,255,.035) 15px 16px),linear-gradient(90deg,transparent 0 49.8%,var(--songAccent) 50%,transparent 50.2%)}
.row-art.no-art:after,.cover.no-art:after,.hero-art.no-art:after{display:none}
.no-cover-mark{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:flex-end;padding:6px;color:#8d949f;font:700 6px/1.25 ui-monospace,monospace;letter-spacing:.06em;background:linear-gradient(180deg,transparent 45%,rgba(8,9,12,.9))}
.no-cover-mark b{font-size:6px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-cover-mark small{font-size:6px!important;color:#626974!important;margin-top:2px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cover.no-art .cover-index:after,.hero-art.no-art .art-code:after{content:" / NO OFFICIAL COVER";color:var(--songAccent)}
.boot-overlay{position:fixed;inset:0;z-index:999;background:#08090cf5;display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .18s ease}.boot-overlay.show{opacity:1;pointer-events:all}.boot-card{width:min(560px,calc(100vw - 48px));padding:34px;border:1px solid var(--line-strong);background:#101218}.boot-card h2{font-size:34px;letter-spacing:-.045em;margin:14px 0 10px}.boot-card p{color:var(--muted);line-height:1.55;min-height:48px}.boot-track{height:2px;background:#242831;margin:28px 0 12px;overflow:hidden}.boot-track i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--lane0),var(--lane1),var(--lane2),var(--lane3));transition:width .18s linear}.boot-count{font:700 11px ui-monospace,monospace;letter-spacing:.12em;color:var(--dim);font-variant-numeric:tabular-nums}.boot-overlay.error .boot-track i{background:#e77e78}.boot-overlay.error .boot-card{border-color:#5f3338}

/* SONG SELECT V5 */
.library-toolbar{grid-template-columns:minmax(220px,1fr) 170px;margin-bottom:12px}.sort-control{height:44px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;border-bottom:1px solid var(--line-strong);font:700 8px ui-monospace,monospace;color:var(--dim);letter-spacing:.1em}.sort-control select{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);font:650 11px Inter,"Segoe UI",sans-serif;cursor:pointer}.sort-control option{background:#101218}.library-filters{display:flex;align-items:center;gap:7px;min-height:38px;margin-bottom:9px}.library-filter{height:27px;padding:0 10px;border:1px solid var(--line-strong);background:transparent;color:var(--dim);font:700 8px ui-monospace,monospace;letter-spacing:.08em;cursor:pointer}.library-filter:hover{color:var(--text);border-color:var(--line-strong)}.library-filter.active{color:#090a0d;background:var(--text);border-color:var(--text)}#libraryResults{margin-left:auto;color:var(--dim);font:700 8px ui-monospace,monospace;letter-spacing:.09em}.library-caption{grid-template-columns:1fr 170px 100px 38px;padding-left:86px}.song-card{grid-template-columns:58px minmax(140px,1fr) 170px 100px 38px;border:1px solid transparent;border-bottom-color:var(--line);padding-right:10px}.song-card[hidden]{display:none}.song-card:hover{border-color:var(--line);background:rgba(255,255,255,.025)}.song-card.selected{border-color:color-mix(in srgb,var(--songAccent) 38%,var(--line));background:linear-gradient(90deg,color-mix(in srgb,var(--songAccent) 8%,transparent),rgba(255,255,255,.025))}.song-card.selected:before{width:3px}.song-tech{grid-template-columns:72px 1fr}.song-diffs i{width:27px;height:25px;font-size:9px}.song-diffs i.active{border-color:color-mix(in srgb,var(--songAccent) 55%,var(--line));background:color-mix(in srgb,var(--songAccent) 10%,transparent);color:var(--text)}.song-grade{font-size:20px;font-weight:800;text-align:center;color:var(--muted)}.selected-heading{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:start}.favorite-btn{width:42px;height:42px;border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);font-size:24px;line-height:1;cursor:pointer}.favorite-btn:hover,.favorite-btn.active{color:var(--accent);border-color:var(--accent)}.selected-meta{grid-template-columns:repeat(3,1fr);margin:20px 0}.selected-meta div:nth-child(4){border-left:0}.selected-meta div:nth-child(n+4){border-top:1px solid var(--line)}.cover{aspect-ratio:16/10;max-height:300px;margin-bottom:20px}.cover .cover-bpm{font-size:48px}.empty-state{border:1px solid var(--line);background:rgba(255,255,255,.015);font:700 10px ui-monospace,monospace;letter-spacing:.08em}
@media(max-width:1180px){.library-caption{grid-template-columns:1fr 120px 100px 38px}.song-card{grid-template-columns:58px minmax(120px,1fr) 120px 100px 38px}.song-tech{grid-template-columns:1fr}.song-tech span:last-child{display:none}}
@media(max-width:680px){.view-heading{display:grid;gap:16px;align-items:start}.view-heading h1{font-size:40px;max-width:none}.view-heading p{font-size:12px}.library-toolbar{grid-template-columns:1fr}.library-caption{display:none}.library-filters{overflow:auto}.song-card{grid-template-columns:54px minmax(120px,1fr) auto 32px;gap:11px}.song-card .row-art{width:54px;height:54px}.song-tech{display:none}.song-diffs{gap:3px}.song-diffs i{width:23px}.song-grade{display:none}.selected-meta{grid-template-columns:repeat(3,1fr)}}
.score-tabs{display:flex;gap:7px}.score-tabs button{border:1px solid var(--line-strong);background:transparent;color:var(--muted);padding:9px 12px;font:700 8px ui-monospace,monospace;letter-spacing:.1em;cursor:pointer}.score-tabs button.active{color:#07080a;background:var(--text)}.signal-account{width:min(720px,94vw);max-height:88vh;overflow:auto;background:var(--t-panel);border:1px solid var(--line-strong);padding:30px}.signal-account form{display:grid;gap:10px;padding:28px 0}.signal-account input{padding:13px;border:1px solid var(--line-strong);background:var(--t-panel-deep);color:var(--text)}.signal-account .account-actions,.signal-account .account-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.signal-account .account-item{display:grid;grid-template-columns:1fr auto;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.signal-account .account-item span{color:var(--muted)}.account-error{color:#e77e78;min-height:20px}.signal-account a.google{color:inherit;text-decoration:none}
/* --- dark stage identity: the gameplay screen and boot screen are the "stage" and
     stay dark in BOTH themes, so their ink/muted/dim/line tokens keep light values in
     both themes. Menu/header/dialog chrome follows the user's theme; text on album art
     (always dark) is pinned light below. --- */
:root{--art-ink:#f0efe9;--art-muted:#9d9a91;--art-dim:#85827a;--art-line:#2f302c}
#game,.boot-overlay{--text:var(--art-ink);--muted:var(--art-muted);--dim:var(--art-dim);--line:var(--art-line);color:var(--art-ink)}
#game .btn,.boot-overlay .btn{color:var(--art-ink)}
.btn.primary{background:#f0efe9;color:#0c0d10;border-color:#f0efe9}
#game .btn.primary,.boot-overlay .btn.primary{background:#f0efe9;color:#0c0d10;border-color:#f0efe9}
#menu .nav-btn.active:after,.global-header .nav-btn.active:after{background:var(--text)}
/* text pinned light because it sits on always-dark album art */
.diff .diff-level{color:var(--dim)}
.cover .cover-index{color:var(--art-dim)}
.cover .cover-bpm{color:var(--art-ink)}
.cover .cover-bpm small{color:var(--art-dim)}
.no-cover-mark small{color:#8d949f !important}
.search-wrap input::placeholder{color:#80858e}
/* view transitions: 200ms crossfade, 8px rise (game-over included), off in reduced motion */
.screen{transform:translateY(8px);transition:opacity .2s ease,transform .2s ease}
.screen.active{transform:none}
.overlay{transform:translateY(8px);visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s}
.overlay.show{transform:none;visibility:visible;transition:opacity .2s ease,transform .2s ease,visibility 0s linear 0s}
@media (prefers-reduced-motion: reduce){.screen,.overlay{transform:none;transition:none}.bpm-dot,.signal-line:after,.preview-pill:before{animation:none !important}}
/* metronome dot on the cover BPM readout; period is set from the song (60000/BPM ms) */
.cover .cover-bpm{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-variant-numeric:tabular-nums;white-space:nowrap}
.cover .bpm-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);margin:0 9px 0 4px;align-self:none;vertical-align:middle;transform-origin:50% 60%;animation:bpmPulse var(--bpmPeriod,600ms) ease-in-out infinite}
@keyframes bpmPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.window-spark{margin-top:14px;color:var(--text)}.spark-label{font:650 8px ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--dim);letter-spacing:.08em;margin-top:6px}
/* hover consistency: every clickable card lifts 2px and picks up the accent border */
.song-card,.shelf-item,.diff,.bind-btn{transition:transform .16s ease,background .16s ease,border-color .16s ease}
.song-card:hover,.shelf-item:hover,.diff:hover,.bind-btn:hover{transform:translateY(-2px);border-color:var(--accent)}
.song-card.selected:hover{transform:translateX(4px) translateY(-2px)}
/* small widths: BPM readout + header buttons + hero meta must not wrap or clip */
@media(max-width:560px){.icon-btn{width:auto;min-width:38px;padding:0 11px;font:700 9px ui-monospace,monospace;letter-spacing:.06em;white-space:nowrap}.header-actions{gap:7px}.wordmark{font-size:13px}.hero-meta{gap:14px}.hero-meta b{font-size:15px;white-space:nowrap}.hero-meta small{font-size:8px}.hero-actions{flex-wrap:wrap}.cover .cover-bpm{font-size:30px;max-width:calc(100% - 32px);overflow:hidden;text-overflow:ellipsis}.cover .cover-bpm small{margin-left:6px}.cover .cover-index{left:12px;top:12px;max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-art .art-code{left:12px;bottom:12px;max-width:calc(100% - 24px);font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
@media(max-width:480px){.results-actions{flex-wrap:wrap}.results-actions .btn{flex:1 1 auto;white-space:normal;text-align:center;padding:10px 8px}.timing-legend{left:12px;bottom:46px;max-width:calc(100% - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.offset-hud{right:12px;bottom:28px;max-width:55%;white-space:nowrap}.credits{left:12px;bottom:10px;max-width:calc(100% - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.setting-row{grid-template-columns:1fr;min-height:0;gap:8px;padding:12px 0}.settings-main{padding:22px 18px}.bind-grid{grid-template-columns:repeat(2,1fr)}.results-shell{padding-bottom:52px}}
@media(max-width:420px){.cover.no-art .cover-index:after,.hero-art.no-art .art-code:after{display:none}}
.settings-mobilehead{display:none}
@media(max-width:900px){.settings-mobilehead{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label close" "title close";gap:5px 12px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.settings-mobilehead .signal-label{grid-area:label}.settings-mobilehead b{grid-area:title;font-size:16px;font-weight:760;letter-spacing:-.02em}.settings-mobilehead .btn{grid-area:close;height:34px;padding:0 14px;font-size:11px}}
.pause-modal .actions{display:grid;grid-template-columns:1fr 1fr}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media(max-width:360px){.global-header{height:60px}.brand-nav{gap:10px}.games-home-link{gap:5px;font-size:8px}.wordmark{gap:8px;font-size:10px}.wordmark-mark{width:22px}.nav-btn[data-view="scores"]{padding:0 9px;font-size:8px}.header-actions{gap:5px}.icon-btn{min-width:26px;padding:0 7px;font-size:8px}.header-status{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
