/* ══════════════════════════════════════════════════════════════════════
   VELYRON · Artifacts — a shared live canvas for generated files.
   The model emits ```velyron-file {json}``` blocks; these render as cards
   in the conversation and open a right-side canvas that coexists with the
   chat (side-by-side on desktop) and live-updates as the agent works.
   Relies on host CSS vars: --signal, --fg, --fg-dim, --fg-mute, --bg,
   --bg-1, --rule, --rule-2, --scrim. Both AUGUR and Agents define these.
   ══════════════════════════════════════════════════════════════════════ */
:root{ --vlrcw: min(720px, 46vw); }
@media(max-width:900px){ :root{ --vlrcw: 100vw; } }

/* ── cards in the conversation ── */
.vlr-cards{display:flex;flex-direction:column;gap:8px;margin-top:12px;white-space:normal}
.vlr-card{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid var(--rule-2);background:rgba(255,255,255,0.02);border-radius:12px;padding:11px 14px;cursor:pointer;transition:border-color .18s,background .18s;max-width:420px;font-family:inherit}
:root[data-theme="light"] .vlr-card{background:rgba(11,13,16,0.02)}
.vlr-card:hover{border-color:var(--signal);background:rgba(255,255,255,0.045)}
.vlr-card.open{border-color:var(--signal);background:color-mix(in oklab,var(--signal) 8%,transparent)}
.vlr-card .vi{width:34px;height:34px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(255,255,255,0.05);font-size:15px}
:root[data-theme="light"] .vlr-card .vi{background:rgba(11,13,16,0.05)}
.vlr-card .vi svg{width:26px;height:26px}
.vlr-card .vmeta{flex:1;min-width:0;display:flex;flex-direction:column}
.vlr-card .vn{font-size:13.5px;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vlr-card .vl{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10px;letter-spacing:.05em;color:var(--fg-mute);margin-top:3px}
.vlr-card .vpv,.vlr-card .vdl{background:none;border:none;cursor:pointer;color:var(--fg-dim);font-size:15px;flex:0 0 auto;padding:3px 6px;border-radius:7px;transition:color .15s,background .15s}
.vlr-card .vpv:hover,.vlr-card .vdl:hover{color:var(--signal);background:rgba(255,255,255,.05)}
.vlr-card .vdl.busy{animation:vlrspin 1s linear infinite;pointer-events:none}
.vlr-card.done{border-color:color-mix(in oklab,var(--signal) 55%,transparent)}
.vlr-card.done .vdl{color:var(--signal)}
@keyframes vlrspin{to{transform:rotate(360deg)}}

/* ── the canvas: side-by-side on desktop, no blocking scrim ── */
.vlr-scrim{position:fixed;inset:0;z-index:62;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .25s}
.vlr-scrim.on{opacity:1;pointer-events:auto}
.vlr-canvas{position:fixed;top:0;right:0;height:100%;width:var(--vlrcw);z-index:63;background:var(--bg-1);border-left:1px solid var(--rule-2);box-shadow:-24px 0 70px rgba(0,0,0,.55);transform:translateX(101%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}
.vlr-canvas.on{transform:none}
@keyframes vlrflash{0%{box-shadow:-24px 0 70px rgba(0,0,0,.55), inset 3px 0 0 var(--signal)}100%{box-shadow:-24px 0 70px rgba(0,0,0,.55), inset 3px 0 0 transparent}}
.vlr-canvas.flash{animation:vlrflash 1s ease}
/* host marks what shifts with [data-vlr-shift]; both stay interactive */
[data-vlr-shift]{transition:margin-right .3s cubic-bezier(.4,0,.2,1)}
@media(min-width:901px){
  body.vlr-canvasopen [data-vlr-shift]{margin-right:var(--vlrcw)}
  body.vlr-canvasopen .vlr-scrim{display:none}
}

.vc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid var(--rule);flex-shrink:0}
.vc-name{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:13px;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vc-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.vc-updated{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--signal);opacity:0;transition:opacity .2s;margin-right:2px}
.vc-updated.show{opacity:1}
.vc-dl{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;letter-spacing:.08em;color:var(--signal);border:1px solid var(--rule-2);border-radius:8px;padding:7px 12px;cursor:pointer;background:none;transition:border-color .15s,background .15s}
.vc-dl:hover{border-color:var(--signal);background:color-mix(in oklab,var(--signal) 10%,transparent)}
.vc-dl.busy{opacity:.6;pointer-events:none}
.vc-x{background:none;border:none;color:var(--fg-mute);font-size:15px;cursor:pointer;padding:4px 6px}
.vc-x:hover{color:var(--fg)}
.vc-body{flex:1;min-height:0;overflow:auto;padding:26px;background:var(--bg)}

/* ── document preview (pdf/docx) ── */
.vc-body .pv-doc{background:#fff;color:#1a1a1a;padding:44px 52px;font-family:Georgia,'Times New Roman',serif;line-height:1.66;max-width:none;box-shadow:0 10px 46px rgba(0,0,0,.35);border-radius:6px;font-size:15px}
.pv-title{font-size:26px;font-weight:700;margin-bottom:4px;color:#111}
.pv-sub{font-size:16px;color:#555;font-style:italic;margin-bottom:18px}
.pv-h{font-size:18px;font-weight:700;margin:20px 0 8px;color:#111}
.pv-p{font-size:15px;margin:0 0 11px}
.pv-body{font-size:15px}
.pv-ul{margin:0 0 12px;padding-left:22px;font-size:15px}
.pv-ul li{margin:3px 0}
.pv-doc .pv-table{font-size:13px}
.pv-doc .pv-table th,.pv-doc .pv-table td{border-color:#ccc;color:#222}
.pv-doc .pv-table th{background:#f0f0f0;color:#111}
.pv-tablewrap{overflow-x:auto;padding:0 0 14px}
.pv-table{border-collapse:collapse;font-size:13px;width:100%}
.pv-table th,.pv-table td{border:1px solid var(--rule-2);padding:5px 9px;text-align:left;color:var(--fg-dim);white-space:nowrap}
.pv-table th{background:rgba(255,255,255,.05);color:var(--fg);font-weight:600}
.pv-slide{background:#12161c;border:1px solid var(--rule);border-radius:10px;margin:0 0 14px;padding:18px 20px;position:relative}
.pv-slide-n{position:absolute;top:9px;right:12px;font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10px;color:var(--fg-mute)}
.pv-slide-t{font-size:16px;font-weight:600;color:var(--fg);margin-bottom:9px}
.pv-empty{padding:22px;text-align:center;color:var(--fg-mute);font-size:12.5px}

/* ── spreadsheet grid with sheet tabs ── */
.xl-gridwrap{overflow:auto}
.xl-grid{border-collapse:separate;border-spacing:0;font-size:12.5px;font-family:'JetBrains Mono',ui-monospace,monospace}
.xl-grid th,.xl-grid td{border-right:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);padding:5px 11px;white-space:nowrap;color:var(--fg-dim)}
.xl-grid .xl-colh,.xl-grid .xl-rowh,.xl-grid .xl-corner{background:rgba(255,255,255,.055);color:var(--fg-mute);text-align:center;font-weight:500}
.xl-grid .xl-colh{position:sticky;top:0;min-width:78px;z-index:1}
.xl-grid .xl-rowh{position:sticky;left:0;min-width:38px}
.xl-grid .xl-corner{position:sticky;top:0;left:0;z-index:3;min-width:38px}
.xl-grid td.xl-hd{color:var(--fg);font-weight:600;background:color-mix(in oklab,var(--signal) 9%,transparent)}
.xl-grid td.xl-num{text-align:right;color:var(--fg)}
.xl-tabs{position:sticky;bottom:0;display:flex;gap:3px;padding:8px 14px;margin:8px -26px -26px;background:var(--bg-1);border-top:1px solid var(--rule);overflow-x:auto}
.xl-tab{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;color:var(--fg-dim);background:none;border:1px solid transparent;border-radius:7px 7px 0 0;padding:6px 15px;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s}
.xl-tab:hover{color:var(--fg);background:rgba(255,255,255,.04)}
.xl-tab.on{color:var(--fg);background:color-mix(in oklab,var(--signal) 14%,transparent);border-color:var(--rule-2);border-bottom-color:transparent}

/* ── chart preview ── */
.pv-chart{display:flex;flex-direction:column;gap:14px}
.pv-chart .ch-title{font-size:17px;font-weight:600;color:var(--fg)}
.pv-chart .ch-sub{font-size:13px;color:var(--fg-mute);margin-top:-8px}
.pv-chart svg{width:100%;height:auto;overflow:visible}
.pv-chart .ch-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:2px}
.pv-chart .ch-lg{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--fg-dim)}
.pv-chart .ch-sw{width:12px;height:12px;border-radius:3px;flex:0 0 auto}
