:root{--bg: #f2f4f6;--surface: #ffffff;--surface-2: #e8ecf0;--ink: #12161c;--muted: #5b6673;--line: #d5dbe1;--accent: #2b4fd8;--accent-ink: #ffffff;--ok: #1f7a4d;--warn: #9a6200;--bad: #b3261e;--stage: #0d1020;--stage-ink: #e9ecf7;--stage-dim: #7c84a8;--sing: #ffd84d;--font-display: "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--font-body: "Inter Tight", "Segoe UI", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0f1216;--surface: #171b21;--surface-2: #1f252d;--ink: #e6eaef;--muted: #93a0ad;--line: #2a313a;--accent: #7d97ff;--accent-ink: #0f1216;--ok: #5fd39a;--warn: #f0b45a;--bad: #ff8a80;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font-body)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.center-screen{height:100%;display:grid;place-items:center;padding:16px}.signin{max-width:360px;display:grid;gap:14px;text-align:left}.brand{font:700 22px/1 var(--font-display);letter-spacing:-.02em}.btn-primary{background:var(--accent);color:var(--accent-ink);border:0;border-radius:8px;padding:10px 16px;font-weight:600;cursor:pointer}.btn-primary:disabled{opacity:.45;cursor:default}.btn-small{background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:4px 10px;font-size:13px;cursor:pointer}.btn-small:disabled{opacity:.4;cursor:default}.btn-small.is-on{background:var(--sing);color:#1a1500;border-color:transparent}.btn-link{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:3px}.icon-btn{background:none;border:0;color:inherit;font-size:26px;line-height:1;cursor:pointer;padding:4px 8px}.shell{height:100%;display:grid;grid-template-columns:230px minmax(0,1fr)}.shell.has-panel{grid-template-columns:230px minmax(320px,.9fr) minmax(0,1.1fr)}.threads{border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:14px;min-width:0;background:var(--surface)}.threads nav{display:grid;gap:2px;overflow-y:auto;flex:1}.thread{text-align:left;background:none;border:0;padding:7px 10px;border-radius:6px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.thread.is-active{background:var(--surface-2);color:var(--ink);font-weight:500}.btn-new{border:1px dashed var(--line);background:none;border-radius:8px;padding:8px;cursor:pointer}.chat{display:flex;flex-direction:column;min-width:0;min-height:0}.messages{flex:1;overflow-y:auto;padding:24px max(16px,4vw) 12px;display:flex;flex-direction:column;gap:14px}.empty-thread{margin:auto 0}.empty-thread h1{font:700 clamp(26px,3vw,34px)/1.1 var(--font-display);letter-spacing:-.02em;margin:0 0 8px;text-wrap:balance}.empty-thread p{color:var(--muted);margin:0}.msg{display:grid;gap:8px;max-width:760px}.msg-user{align-self:flex-end}.msg-user .msg-text{background:var(--accent);color:var(--accent-ink);padding:8px 12px;border-radius:12px 12px 2px}.msg-text{margin:0;white-space:pre-wrap}.msg-error{margin:0;color:var(--bad)}.typing{color:var(--muted)}.composer{position:relative;display:flex;gap:8px;padding:12px max(16px,4vw) 18px;border-top:1px solid var(--line);background:var(--bg)}.composer textarea{flex:1;resize:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:10px 12px;font:inherit;min-height:44px}.palette{position:absolute;bottom:calc(100% - 4px);left:max(16px,4vw);right:max(16px,4vw);list-style:none;margin:0;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #0000001f}.palette button{width:100%;text-align:left;background:none;border:0;padding:6px 8px;border-radius:6px;cursor:pointer}.palette button:hover{background:var(--surface-2)}.palette .cmd{font-family:var(--font-mono);font-size:13px}.palette .hint{color:var(--muted);font-size:13px}.widget{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;overflow-x:auto}.widget.empty{color:var(--muted)}.widget-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.song-list{list-style:none;margin:0;padding:0;display:grid}.song-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}.song-list li:first-child{border-top:0}.song-main{display:grid;min-width:0}.song-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-artist{color:var(--muted);font-size:13px}.chip{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--surface-2);white-space:nowrap}.chip-ready,.chip-done{color:var(--ok)}.chip-processing,.chip-running,.chip-queued,.chip-awaiting_upload{color:var(--warn)}.chip-failed{color:var(--bad)}.job-table{width:100%;border-collapse:collapse;font-size:14px;min-width:520px}.job-table th{text-align:left;font-size:12px;color:var(--muted);font-weight:500;padding:4px 8px 6px 0}.job-table td{padding:6px 8px 6px 0;border-top:1px solid var(--line);vertical-align:top}.job-table .num{text-align:right;font-variant-numeric:tabular-nums}.job-error{color:var(--bad);font-size:12px;font-family:var(--font-mono);max-width:36ch;overflow-wrap:anywhere}.side-panel{min-width:0;min-height:0;border-left:1px solid var(--line)}.stage{height:100%;background:var(--stage);color:var(--stage-ink);display:flex;flex-direction:column;padding:20px 24px;gap:16px}.stage-head{display:flex;justify-content:space-between;align-items:flex-start}.stage-eyebrow{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--sing)}.stage h2{font:700 26px/1.1 var(--font-display);margin:4px 0 0;letter-spacing:-.02em}.stage-artist{color:var(--stage-dim)}.stage-error{color:#ff8a80}.lyrics{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;overflow:hidden}.lyrics-empty,.countdown{color:var(--stage-dim);text-align:center}.countdown{font:700 48px/1 var(--font-display);color:var(--sing)}.lyric-line{margin:0;cursor:pointer;transition:opacity .25s,transform .25s;text-wrap:balance}.lyric-line.is-past{opacity:.35;font-size:18px}.lyric-line.is-next{opacity:.55;font-size:20px}.lyric-line.is-current{font:700 clamp(24px,2.6vw,34px)/1.25 var(--font-display)}.lyric-line.is-looped{box-shadow:inset 3px 0 0 var(--sing);padding-left:10px}.lyric-word{background:linear-gradient(90deg,var(--sing) var(--p, 0%),currentColor var(--p, 0%));-webkit-background-clip:text;background-clip:text;color:transparent}.lyric-line:not(.is-current) .lyric-word{background:none;color:inherit}.transport{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:12px;align-items:center}.play-btn{width:48px;height:48px;border-radius:50%;border:0;background:var(--sing);color:#1a1500;font-size:18px;cursor:pointer}.time{font:13px var(--font-mono);color:var(--stage-dim);font-variant-numeric:tabular-nums}.seek{width:100%;accent-color:var(--sing)}.stage-controls{display:flex;flex-wrap:wrap;gap:16px;align-items:center;color:var(--stage-dim);font-size:13px}.stage-controls label{display:flex;gap:8px;align-items:center}.stage-controls input{accent-color:var(--sing)}.stage .btn-small{background:transparent;color:var(--stage-ink);border-color:#2c3352}@media (max-width: 900px){.shell,.shell.has-panel{grid-template-columns:minmax(0,1fr)}.threads{display:none}.side-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;border:0}}@media (prefers-reduced-motion: reduce){.lyric-line{transition:none}}
