/* ══ Jarvis — the assistant panel. Reads the app's own tokens (v3.css / v2.css); no colours of its own except the galaxy's star palette. ══ */
#jv-host{position:relative;z-index:1200}
.jv-scrim{position:fixed;inset:0;background:hsl(222 30% 11% / .28);z-index:1200}
.jv-panel{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:100vw;background:var(--v2-panel);border-left:1px solid var(--v2-line);box-shadow:var(--v2-shadow-overlay);z-index:1201;display:flex;flex-direction:column;color:var(--v2-ink);font-size:var(--v2-t-body);transition:width var(--v2-mid) var(--v3-ease,var(--v2-ease))}
.jv-panel.wide{width:min(960px,100vw)}
.jv-head{display:flex;align-items:center;gap:var(--v2-s2);padding:var(--v2-s3) var(--v2-s3);border-bottom:1px solid var(--v2-line)}
.jv-head b{font-size:var(--v2-t-entity,14px);font-weight:600}
.jv-head .sp{flex:1}
.jv-stat{font-size:var(--v2-t-label);color:var(--v2-sub);text-transform:uppercase;letter-spacing:.06em}
.jv-stat[data-s=listening]{color:var(--v2-bad)}.jv-stat[data-s=thinking]{color:var(--v2-accent-ink)}.jv-stat[data-s=speaking]{color:var(--v2-ok)}
.jv-orb{width:12px;height:12px;border-radius:999px;background:var(--v2-accent);box-shadow:0 0 0 3px var(--v2-accent-soft);transition:transform var(--v2-mid)}
.jv-orb.listening{background:var(--v2-bad);box-shadow:0 0 0 4px var(--v2-bad-soft);animation:jv-pulse 1.1s infinite}
.jv-orb.thinking{animation:jv-spin 1s linear infinite;background:var(--v2-accent-ink)}
.jv-orb.speaking{background:var(--v2-ok);animation:jv-pulse .7s infinite}
@keyframes jv-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}
@keyframes jv-spin{to{transform:rotate(360deg)}}
.jv-tabs{display:flex;gap:var(--v2-s0);padding:var(--v2-s1h) var(--v2-s2) 0;border-bottom:1px solid var(--v2-line)}
.jv-tabs button{border:none;background:none;font:inherit;font-size:var(--v2-t-body);color:var(--v2-sub);padding:var(--v2-s2) var(--v2-s2);border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-var(--v2-s0)}
.jv-tabs button.on{color:var(--v2-ink);border-color:var(--v2-accent);font-weight:600}
.jv-body{flex:1;min-height:0;display:flex;flex-direction:column}
.jv-log{flex:1;overflow:auto;padding:var(--v2-s3);display:flex;flex-direction:column;gap:var(--v2-s2)}
.jv-hi{display:flex;flex-direction:column;gap:var(--v2-s1h);color:var(--v2-sub);padding:var(--v2-s2) 0}
.jv-hi b{color:var(--v2-ink);font-size:var(--v2-t-title,16px)}
.jv-starters{display:flex;flex-wrap:wrap;gap:var(--v2-s1h);margin-top:var(--v2-s1h)}
.jv-starters button,.jv-src button{border:1px solid var(--v2-line);background:var(--v2-bg);color:var(--v2-ink);border-radius:999px;padding:var(--v2-s1) var(--v2-s2);font:inherit;font-size:var(--v2-t-label);cursor:pointer}
.jv-starters button:hover,.jv-src button:hover{border-color:var(--v2-accent);background:var(--v2-accent-soft)}
.jv-m{max-width:92%;padding:var(--v2-s2) var(--v2-s3);border-radius:var(--v2-r-surface);line-height:1.5;white-space:normal}
.jv-m.user{align-self:flex-end;background:var(--v2-accent-soft);color:var(--v2-ink);border:1px solid var(--v2-accent-line)}
.jv-m.assistant{align-self:flex-start;background:var(--v2-line2);border:1px solid var(--v2-line)}
.jv-m.err{border-color:var(--v2-bad);background:var(--v2-bad-soft)}
.jv-mic{font-style:normal;margin-right:var(--v2-s1);opacity:.7}
.jv-did{display:flex;flex-wrap:wrap;gap:var(--v2-s1);margin-top:var(--v2-s1h)}
.jv-did i{font-style:normal;font-size:var(--v2-t-label);padding:var(--v2-s0) var(--v2-s1h);border-radius:999px;background:var(--v2-ok-soft);color:var(--v2-ok)}
.jv-did i.no{background:var(--v2-bad-soft);color:var(--v2-bad)}
.jv-src{display:flex;flex-wrap:wrap;gap:var(--v2-s1);margin-top:var(--v2-s1h)}
.jv-card{margin-top:var(--v2-s2);border:1px solid var(--v2-warn-dot,var(--v2-warn));background:var(--v2-warn-soft);border-radius:var(--v2-r-control);padding:var(--v2-s2) var(--v2-s2);display:flex;flex-direction:column;gap:var(--v2-s1h)}
.jv-card b{font-size:var(--v2-t-label);text-transform:uppercase;letter-spacing:.06em}
.jv-cmd{display:flex;flex-direction:column}.jv-cmd span{font-weight:600}.jv-cmd small{color:var(--v2-sub)}
.jv-cardb{display:flex;gap:var(--v2-s1h)}
.jv-decided{display:block;margin-top:var(--v2-s1);color:var(--v2-sub)}
.jv-typing{display:flex;gap:var(--v2-s1)}.jv-typing i{width:6px;height:6px;border-radius:999px;background:var(--v2-sub);animation:jv-pulse 1s infinite}.jv-typing i:nth-child(2){animation-delay:.15s}.jv-typing i:nth-child(3){animation-delay:.3s}
.jv-live{min-height:0;padding:0 var(--v2-s3);color:var(--v2-sub);font-style:italic;font-size:var(--v2-t-label)}
.jv-live:empty{display:none}
.jv-in{display:flex;gap:var(--v2-s2);align-items:flex-end;padding:var(--v2-s2) var(--v2-s3) var(--v2-s3);border-top:1px solid var(--v2-line)}
.jv-in textarea{flex:1;resize:none;min-height:34px;max-height:120px;border:1px solid var(--v2-line);border-radius:var(--v2-r-control);padding:var(--v2-s1h) var(--v2-s2);font:inherit;font-size:var(--v2-t-body);background:var(--v2-bg);color:var(--v2-ink)}
.jv-in textarea:focus{outline:2px solid var(--v2-accent);outline-offset:1px}
.jv-micbtn{width:34px;height:34px;border-radius:999px;border:1px solid var(--v2-line);background:var(--v2-bg);cursor:pointer;font-size:var(--v2-t-entity);display:grid;place-items:center}
.jv-micbtn.on{background:var(--v2-bad);color:#fff;border-color:var(--v2-bad);animation:jv-pulse 1.2s infinite}
.jv-clear{align-self:flex-start;margin:0 var(--v2-s3) var(--v2-s2)}
.jv-mem{flex:1;overflow:auto;padding:var(--v2-s3) var(--v2-s3);display:flex;flex-direction:column;gap:var(--v2-s2)}
.jv-memadd{display:flex;gap:var(--v2-s1h)}.jv-memadd input{flex:1;border:1px solid var(--v2-line);border-radius:var(--v2-r-control);padding:var(--v2-s1h) var(--v2-s2);font:inherit;background:var(--v2-bg);color:var(--v2-ink)}
.jv-memrow{border:1px solid var(--v2-line);border-radius:var(--v2-r-surface);padding:var(--v2-s2) var(--v2-s2);display:flex;flex-direction:column;gap:var(--v2-s0)}
.jv-memrow b{font-weight:600}.jv-memrow p{margin:0;color:var(--v2-ink)}.jv-memrow small{color:var(--v2-sub)}
.jv-memact{display:flex;gap:var(--v2-s2)}
.jv-note{color:var(--v2-sub);margin:var(--v2-s2) 0}
.jv-gal{flex:1;min-height:0;display:grid;grid-template-rows:1fr auto auto}
.jv-galaxy{min-height:320px;background:#0b1220;position:relative}
.jv-galaxy canvas{display:block}
.jv-galaxy .jv-note{position:absolute;inset:0;display:grid;place-items:center;color:#cbd5e1;margin:0}
.jv-side{padding:var(--v2-s2) var(--v2-s3);border-top:1px solid var(--v2-line);display:flex;flex-direction:column;gap:var(--v2-s0);max-height:160px;overflow:auto}
.jv-side:empty{display:none}.jv-side b{font-weight:600}.jv-side small{color:var(--v2-sub);text-transform:uppercase;letter-spacing:.06em;font-size:var(--v2-t-label)}.jv-side p{margin:0;color:var(--v2-ink)}
.jv-legend{display:flex;flex-wrap:wrap;gap:var(--v2-s2);align-items:center;padding:var(--v2-s1h) var(--v2-s3) var(--v2-s2);font-size:var(--v2-t-label);color:var(--v2-sub);border-top:1px solid var(--v2-line)}
.jv-legend i{display:inline-block;width:8px;height:8px;border-radius:999px;margin-right:var(--v2-s1)}
.jv-pf{padding:var(--v2-s3) var(--v2-s3);display:flex;flex-direction:column;gap:var(--v2-s2);overflow:auto}
.jv-pfsum{font-weight:600;padding:var(--v2-s1h) var(--v2-s2);border-radius:var(--v2-r-control);background:var(--v2-ok-soft);color:var(--v2-ok)}
.jv-pfsum.no{background:var(--v2-bad-soft);color:var(--v2-bad)}
.jv-pfl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--v2-s1)}
.jv-pfl li{display:grid;grid-template-columns:18px 1fr;gap:var(--v2-s1) var(--v2-s2);padding:var(--v2-s1h) var(--v2-s2);border:1px solid var(--v2-line);border-radius:var(--v2-r-control)}
.jv-pfl li i{font-style:normal;color:var(--v2-ok)}.jv-pfl li.no i{color:var(--v2-bad)}
.jv-pfl li small{grid-column:2;color:var(--v2-sub)}
.jv-btn.on{border-color:var(--v2-accent)}
.jv-btn .jv-orb{width:10px;height:10px}
@media (max-width:767px){.jv-panel,.jv-panel.wide{width:100vw}.jv-scrim{display:none}}
.jv-mail{display:flex;flex-direction:column;gap:var(--v2-s0);margin-top:var(--v2-s1)}.jv-mail pre{white-space:pre-wrap;font:inherit;margin:var(--v2-s1) 0 0;padding:var(--v2-s2);background:var(--v2-panel);border:1px solid var(--v2-line);border-radius:var(--v2-r-control);max-height:220px;overflow:auto}
