/* Live features — Expressive Pop skin. Tokens + base + signature elements come from
   /engine/melo.css (linked first); this file is layout + the live-specific components.
   All class names are preserved so experiment.js / cascade.js / jump.js keep working. */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--font-ui);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}
.wrap{max-width:var(--page-w,1080px);margin:0 auto;padding:22px 28px 70px}
h1{font-family:var(--font-serif);font-weight:600;font-size:34px;letter-spacing:-.02em;margin:0 0 6px}
h1 em{font-style:italic;color:var(--orange)}
h2{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--eyebrow);margin:24px 0 10px}
.sub{color:var(--sub);margin:0 0 16px;font-size:14.5px;line-height:1.6}
a{color:var(--cobalt);font-weight:600;text-decoration:none}
a:hover{text-decoration:underline}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:10px 0}
.note{background:#fff3cd;border:1px solid #ffe08a;color:#7a5a00;border-radius:var(--r-md);padding:9px 13px;font-weight:600}
.hidden{display:none!important}
.muted{color:var(--muted)}
select,input[type=range]{accent-color:var(--orange)}
select{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:8px 11px;font-family:var(--font-ui);font-weight:600;color:var(--ink)}
label.fld{display:flex;flex-direction:column;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--label);gap:3px}

/* buttons (pill, design language) */
.btn{border:none;border-radius:var(--r-pill);padding:11px 20px;font-family:var(--font-ui);font-weight:600;cursor:pointer;font-size:14.5px;transition:transform .15s var(--ease-out),box-shadow .15s,background .15s,border-color .15s}
.btn.primary{background:var(--orange);color:#fff;box-shadow:0 4px 14px rgba(255,90,31,.32)}
.btn.primary:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(255,90,31,.42)}
.btn.ghost{background:var(--card);border:1.5px solid var(--line);color:var(--ink)}
.btn.ghost:hover{transform:translateY(-2px);border-color:var(--orange);background:var(--hover)}
.btn.sel{outline:3px solid var(--orange-l)}
.btn.sm{padding:8px 14px;font-size:13.5px}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}
.status{color:var(--muted);font-weight:600;font-size:14px;display:inline-flex;align-items:center;gap:7px}
.status.live{color:var(--orange)}
.status.live::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--orange);animation:pulse 2.4s ease-in-out infinite}
.status.err{color:var(--red)}

/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;box-shadow:var(--soft)}
.now{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.chord{font-family:var(--font-serif);font-weight:700;font-size:38px;line-height:1;letter-spacing:-.01em}
.chord.dim{color:var(--muted);font-style:italic;font-size:24px}
.rn{font-family:var(--font-serif);font-size:18px;color:var(--orange);font-weight:600}
.conf{margin-left:auto;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--label)}

/* shared keyboard (keyboard.js) */
.kbd-wrap{overflow-x:auto;padding:24px 2px 8px}
.kbd{position:relative;user-select:none;white-space:nowrap;margin:0 auto}
.kk{position:absolute;top:0;cursor:pointer;transition:background .06s,transform .06s}
.wk{background:linear-gradient(#fff,#f6f0e6);border:1px solid var(--line-2);border-radius:0 0 7px 7px}
.bk{background:linear-gradient(#3a2d22,var(--ink));border:1px solid #160f0a;border-radius:0 0 5px 5px;z-index:2}
.wk.lit{background:linear-gradient(var(--orange-soft),var(--orange));border-color:var(--orange)}
.bk.lit{background:linear-gradient(var(--orange-soft),var(--orange))}
.kk.lit{box-shadow:0 0 16px 1px rgba(255,90,31,.5)}
.kk.hit{outline:3px solid var(--green)}
.kl{position:absolute;bottom:4px;width:100%;text-align:center;font-size:9px;color:#b8a78f;pointer-events:none;font-family:var(--font-mono)}
.ktag{position:absolute;top:-20px;left:50%;transform:translateX(-50%);font-family:var(--font-mono);font-size:10px;font-weight:700;background:var(--ink);color:#fff;padding:2px 7px;border-radius:7px;white-space:nowrap;z-index:4}
.kfinger{position:absolute;transform:translateX(-50%);width:20px;height:20px;border-radius:50%;background:var(--orange);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center;border:2px solid #fff;z-index:3;pointer-events:none}
.kfinger.on-black{background:var(--gold);color:#222}

/* suggestions (legend chips, legacy) */
.suggs{display:flex;gap:10px;flex-wrap:wrap}
.sugg{border:1.5px solid var(--line);border-radius:var(--r-md);padding:10px 14px;cursor:pointer;background:#fff;font-weight:700;display:flex;flex-direction:column;gap:2px;min-width:90px;transition:transform .12s var(--ease-out)}
.sugg:hover{transform:translateY(-2px)}
.sugg .s{font-family:var(--font-serif);font-size:20px} .sugg .l{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#fff;border-radius:7px;padding:2px 7px;align-self:flex-start}
.prog{display:flex;gap:8px;flex-wrap:wrap;min-height:30px;align-items:center}
.chip{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 11px;font-family:var(--font-serif);font-weight:700;text-align:center}
.chip .crn{font-family:var(--font-mono);font-size:10px;color:var(--orange);font-weight:400}
.challenges{display:flex;gap:8px;flex-wrap:wrap}
.ch{border:1.5px solid var(--line);border-radius:var(--r-pill);padding:8px 15px;cursor:pointer;background:#fff;font-weight:600;transition:transform .12s var(--ease-out),border-color .15s,background .15s}
.ch:hover{transform:translateY(-2px)}
.ch.active{border-color:var(--orange);background:var(--hover)}
.ch.done{border-color:var(--green);background:var(--green-bg);color:var(--green-d)}

/* level meter (mic) */
.meter{position:relative;height:14px;background:var(--line);border-radius:var(--r-pill);overflow:hidden;flex:1;min-width:120px}
.meter-fill{height:100%;width:0;background:#cdb89f;transition:width .1s}
.meter-fill.hot{background:var(--orange)}

/* current-chord card */
.now-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--label);font-weight:400;align-self:center}
.badge{font-family:var(--font-mono);background:var(--surface-2);color:var(--sub);border-radius:var(--r-pill);padding:4px 11px;font-size:11px;font-weight:400;letter-spacing:.03em}
.badge.warn{background:#fff3cd;color:#7a5a00}

/* hero keyboard (the destination) */
.hero{margin-top:12px;padding-top:14px}
.hero-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.hero-kicker{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--label)}
.hero-sym{font-family:var(--font-serif);font-size:32px;font-weight:700;line-height:1;letter-spacing:-.01em}
.hero-sym.dim{color:var(--muted);font-style:italic;font-size:22px}
.hero-fn{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:#fff;border-radius:8px;padding:3px 9px}
.hero-deg{font-family:var(--font-serif);font-size:17px;color:var(--orange);font-weight:600}
.hero-how{font-size:13px;color:var(--muted);font-weight:500}
.hero-actions{margin-left:auto;display:flex;gap:8px}
.hero-reason{margin:8px 0 2px;font-size:14px;color:var(--sub)}
.kbd-legend{display:flex;gap:16px;margin-top:6px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--label)}
.lg-cur{color:var(--orange)} .lg-dest{color:var(--cobalt)}
.kk.ghost{box-shadow:inset 0 0 0 3px rgba(255,90,31,.6)}
.bk.ghost{box-shadow:inset 0 0 0 3px rgba(255,138,77,.9)}

/* self-explaining alternative cards */
.cards{display:flex;gap:12px;flex-wrap:wrap}
.acard{position:relative;border:1px solid var(--line);border-radius:var(--r-lg);padding:14px;background:#fff;width:212px;display:flex;flex-direction:column;gap:6px;text-align:left;box-shadow:var(--shadow);transition:transform .14s var(--ease-out),box-shadow .14s}
.acard:hover{transform:translateY(-2px);box-shadow:var(--lift)}
.acard .top{display:flex;align-items:baseline;gap:8px}
.acard .sym{font-family:var(--font-serif);font-size:23px;font-weight:700}
.acard .deg{font-family:var(--font-serif);font-size:13px;color:var(--orange);font-weight:600}
.acard .fn{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:#fff;border-radius:7px;padding:2px 7px;font-weight:700;margin-left:auto}
.acard .how{font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.acard .desc{font-size:13.5px;font-weight:600}
.acard .why{font-size:12.5px;color:var(--muted);display:none;border-top:1px dashed var(--line);padding-top:6px;line-height:1.5}
.acard.open .why{display:block}
.acard .actions{display:flex;gap:6px;margin-top:2px}
.acard .mini{border:1px solid var(--line);background:#fff;border-radius:var(--r-sm);padding:5px 9px;font-family:var(--font-ui);font-weight:600;font-size:12px;cursor:pointer;transition:background .12s,border-color .12s}
.acard .mini:hover{border-color:var(--orange);background:var(--hover)}
.acard .load{flex:1;cursor:pointer}
.acard.sel{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-l)}
.acard .spicy{position:absolute;top:-9px;right:10px;background:linear-gradient(var(--orange),var(--purple));color:#fff;font-family:var(--font-mono);font-size:9px;font-weight:700;padding:3px 9px;border-radius:var(--r-pill);letter-spacing:.04em;text-transform:uppercase}

/* games (jump + cascade canvases) */
#scene{display:block;width:100%;max-width:920px;background:linear-gradient(var(--warm),#fff);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow)}
.jump-hud{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:10px 0;font-family:var(--font-ui)}
.jump-hud b{font-family:var(--font-serif);font-weight:700}
.jump-target{font-family:var(--font-serif);font-size:30px;font-weight:700}
.jump-ctx{color:var(--muted);font-weight:500}
.lives{color:var(--red);font-weight:700;letter-spacing:2px}
.minilabel{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--label);margin-top:8px}

/* themed game header (back-to-dashboard + title) shared by experiment/cascade/jump */
.game-head{display:flex;align-items:center;gap:14px;margin:4px 0 6px;flex-wrap:wrap}
.game-head .back{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;gap:6px;padding:8px 13px;border:1px solid var(--line);border-radius:var(--r-pill);background:#fff;transition:transform .12s var(--ease-out),border-color .15s}
.game-head .back:hover{transform:translateY(-1px);border-color:var(--orange);color:var(--ink)}
.game-head h1{margin:0}
/* collapsible dev/tuning controls */
.ctrl-toggle{font-family:var(--font-ui);font-weight:600;font-size:13px;border:1px solid var(--line);background:#fff;border-radius:var(--r-pill);padding:8px 15px;cursor:pointer;color:var(--ink);transition:transform .12s var(--ease-out),border-color .15s}
.ctrl-toggle:hover{transform:translateY(-1px);border-color:var(--orange)}
.ctrl-toggle[aria-expanded="true"]{background:var(--hover);border-color:var(--orange)}
.ctrl-panel{margin:8px 0 6px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;animation:none}
.ctrl-panel.hidden{display:none!important}
.ctrl-panel .ctrl-title{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--label)}
