:root{--bg:#0b0b0d;--s1:#131316;--s2:#1a1a1f;--line:#26262d;--ink:#f4f3ef;--mute:#9a9aa5;--dim:#8a8a95;--acc:#ffb020;--acc2:#ffd27a;--r:16px}
*{box-sizing:border-box;margin:0}
html{background:var(--bg)}
body{font:16px/1.5 ui-sans-serif,-apple-system,"SF Pro Text",Inter,system-ui,sans-serif;color:var(--ink);background:radial-gradient(900px 500px at 20% -10%,#1d1608 0,transparent 60%),var(--bg);min-height:100vh;overflow-x:hidden;-webkit-tap-highlight-color:transparent}
button,input,select{font:inherit;color:inherit}
.top{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;max-width:1120px;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.02em}
.mark{width:14px;height:14px;border-radius:4px;background:var(--acc);box-shadow:0 0 18px #ffb02088}
.pay{background:var(--acc);color:#1a1100;font-weight:600;font-size:14px;padding:8px 16px;border-radius:999px;text-decoration:none}
.pay:hover{background:var(--acc2)}
.wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;max-width:1120px;margin:0 auto;padding:8px 20px 48px}
.stage,.list{background:var(--s1);border:1px solid var(--line);border-radius:24px;padding:28px}
.stage{display:flex;flex-direction:column;align-items:center;text-align:center;position:sticky;top:12px;align-self:start}
.eyebrow{font-size:13px;color:var(--mute);letter-spacing:.06em;text-transform:uppercase}
.song{font-size:clamp(26px,5vw,40px);letter-spacing:-.03em;line-height:1.1;margin:8px 0 14px;max-width:100%;overflow-wrap:anywhere}
.bpmrow{display:flex;align-items:center;gap:18px}
.bpm{min-width:150px}
.bpm>span{display:block;font-size:clamp(76px,22vw,112px);font-weight:700;letter-spacing:-.05em;line-height:1;font-variant-numeric:tabular-nums;color:var(--acc)}
.bpm small{color:var(--mute);font-size:14px}
.nudge{width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--s2);font-size:24px;cursor:pointer}
.nudge:active{background:var(--line)}
.dots{display:flex;gap:10px;margin:22px 0 8px;min-height:22px;flex-wrap:wrap;justify-content:center}
.dot{width:20px;height:20px;border-radius:50%;background:var(--s2);border:1px solid var(--line);transition:background .06s,transform .06s}
.dot.on{background:var(--ink);transform:scale(1.2)}
.dot.on.first{background:var(--acc);box-shadow:0 0 18px #ffb020aa}
.bars{color:var(--mute);font-size:14px;min-height:21px}
.transport{display:flex;gap:12px;align-items:center;margin:18px 0 10px;width:100%;justify-content:center}
.t{width:56px;height:56px;border-radius:50%;border:1px solid var(--line);background:var(--s2);font-size:20px;cursor:pointer}
.go{flex:1;max-width:240px;height:56px;border-radius:999px;border:0;background:var(--acc);color:#1a1100;font-weight:700;font-size:18px;cursor:pointer}
.go.run{background:var(--ink)}
.hint{color:var(--dim);font-size:13px;min-height:20px}
.listhead{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.setbar{display:flex;gap:8px}
select,input{background:var(--s2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-width:0}
#setPick{flex:1;font-weight:600}
.ghost{background:transparent;border:1px solid var(--line);border-radius:12px;padding:9px 12px;color:var(--mute);cursor:pointer;font-size:14px;white-space:nowrap}
.ghost:hover{color:var(--ink);border-color:var(--dim)}
.meta{color:var(--dim);font-size:13px}
.songs{list-style:none;padding:0;display:flex;flex-direction:column;gap:6px}
.row{display:grid;grid-template-columns:28px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--s2);cursor:pointer}
.row.cur{border-color:var(--acc);background:#201808}
.row .n{color:var(--dim);font-variant-numeric:tabular-nums;font-size:14px}
.row .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.row .sub{display:block;color:var(--mute);font-size:12px;font-weight:400}
.row .b{font-weight:700;font-variant-numeric:tabular-nums;color:var(--acc)}
.row .x{background:none;border:0;color:var(--dim);cursor:pointer;font-size:20px;line-height:1;padding:6px 10px;min-height:36px;min-width:36px;border-radius:8px}
.row .x:hover{color:var(--ink)}
.add{display:grid;grid-template-columns:minmax(0,1fr) 72px 76px 64px;gap:8px;margin-top:14px}
.add input[type=text],#fName{grid-column:1 / -1}
.add-btn{grid-column:1 / -1;background:var(--s2);border:1px solid var(--acc);color:var(--acc);border-radius:12px;padding:10px;font-weight:600;cursor:pointer}
.tools{display:flex;gap:8px;margin-top:12px}
.note{color:var(--dim);font-size:12px;margin-top:10px}
.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%,30px);opacity:0;background:var(--ink);color:#111;padding:10px 16px;border-radius:999px;font-size:14px;pointer-events:none;transition:.2s;max-width:90vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
@media (max-width:860px){.wrap{grid-template-columns:minmax(0,1fr);padding:4px 14px 40px}.stage{position:static;padding:22px 16px}.list{padding:20px 14px}.top{padding:12px 14px}}
:focus-visible{outline:2px solid var(--acc2);outline-offset:2px}

.lock{position:fixed;inset:0;background:#000a;display:none;align-items:center;justify-content:center;padding:20px;z-index:50}
.lock.show{display:flex}
.lock>div{background:var(--s1);border:1px solid var(--line);border-radius:20px;padding:22px;max-width:360px;width:100%}
.lock p{margin-bottom:16px}.lock .row2{display:flex;gap:8px}
.lock a{flex:1;text-align:center;background:var(--acc);color:#1a1100;font-weight:700;border-radius:999px;padding:11px;text-decoration:none}
.lock button{background:transparent;border:1px solid var(--line);border-radius:999px;padding:11px 16px;cursor:pointer;color:var(--mute)}
.payg{display:flex;align-items:center;gap:10px}
.restore{background:none;border:0;color:#9a9aa3;font:inherit;font-size:12px;text-decoration:underline;cursor:pointer;padding:4px}
.foot{text-align:center;color:#8a8a93;font-size:12px;padding:20px 12px 28px}
.foot a{color:inherit}
.faq{max-width:560px;margin:24px auto 0;padding:0 16px;font-size:14px;color:var(--mute)}
.faq h2{font-size:18px;color:var(--ink);margin:0 0 6px}
.faq details{border-top:1px solid var(--line);padding:10px 0}
.faq summary{cursor:pointer;min-height:24px;padding:6px 0;color:var(--ink);font-weight:600}
.faq details p,.faq .priv{margin:6px 0 8px}
