@font-face{font-family:"Anthropic Sans";src:url("/static/vendor/fonts/AnthropicSans-Roman-Variable-CFxw3nG7.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Anthropic Sans";src:url("/static/vendor/fonts/AnthropicSans-Italic-Variable-BI1hrwN4.woff2") format("woff2");font-weight:100 900;font-style:italic;font-display:swap}
@font-face{font-family:"Anthropic Serif";src:url("/static/vendor/fonts/AnthropicSerif-Roman-Variable-C-BHYa_K.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:"Anthropic Mono";src:url("/static/vendor/fonts/AnthropicMono-Roman-Web-B88FVziN.woff2") format("woff2");font-weight:400 700;font-style:normal;font-display:swap}

:root{
  /* fonts */
  --sans:"Anthropic Sans",system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --serif:"Anthropic Serif",Georgia,"Times New Roman",serif;
  --mono:"Anthropic Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* surfaces (cds bg-*) */
  --bg:#fdfdfc; --bg-000:#fff; --bg-100:#fdfdfc; --bg-200:#f3f3f0; --bg-300:#efeeeb;
  --bg-1:var(--bg-000); --bg-2:var(--bg-200);
  --panel:#fff; --card:#fff; --hover:#f3f3f0;
  --surface-0:#fff; --surface-2:var(--bg-200);
  /* text (cds text-*) — --text-400 is #6f6d68 so body-on-bg contrast ≥4.5:1 */
  --ink:#121212; --fg:var(--ink); --fg-2:var(--text-400);
  --text-000:#121212; --text-100:#1f1f1c; --text-200:#373734; --text-300:#5c5a55; --text-400:#6f6d68;
  --muted:#6f6d68; --faint:#6f6d68;
  /* accents */
  --clay:hsl(14.8 63.1% 59.6%); --clay-em:hsl(15.1 54.2% 51.2%);
  --accent:#184f95; --accent-fill:#2a78d6; --accent-line:#86b6ef;
  --success:#009300; --danger:#8e2626; --danger-bg:#fad6d6; --success-bg:#caeac7; --success-text:#006300;
  --warn:#b8860b;
  /* lines */
  --line:rgba(11,11,11,.1); --line2:rgba(31,31,30,.15); --border:rgba(11,11,11,.1);
  --border-card:rgba(31,31,30,.15); --border-btn:rgba(31,31,30,.3);
  /* geometry */
  --radius:6px; --radius-card:12px; --radius-lg:16px;
  --shadow-card:0 0 0 1px hsl(0 0% 4%/.06),0 4px 24px hsl(0 0% 4%/.04);
  --shadow-pop:0 4px 16px hsl(0 0% 4%/.1),0 1px 3px hsl(0 0% 4%/.06);
  /* layered depth (reference :8765 — soft, stacked shadows + hairline ring) */
  --shadow-soft:0 0 0 .5px hsl(0 0% 4%/.05),0 1px 2px hsl(0 0% 4%/.04),0 2px 8px hsl(0 0% 4%/.03);
  --shadow-raise:0 0 0 .5px hsl(0 0% 4%/.07),0 2px 6px hsl(0 0% 4%/.05),0 8px 28px hsl(0 0% 4%/.07);
  --hair:.5px solid var(--line);
  /* shared centered content column — keep every block (messages, cards,
     composer, plan/permission cards) on the SAME left/right gutters */
  --col:768px;
  /* layout knobs written from JS; defaults match the var() fallbacks */
  --side-w:272px; --dock-w:680px;
  --exec-indent:0px; --step-child-indent:0px; --delegation-indent:0px;
  --timeline-row-height:46px;
  /* per-tool accent hues (color-coded activity/step cards) */
  --k-search:#2a6fd6; --k-fetch:#0e7aa0; --k-plan:#5145d6; --k-env:#b4791a;
  --k-skill:#0d9488; --k-bash:#526277; --k-code:#7c4ddb; --k-write:#2e9e6b;
  --k-read:#647587; --k-edit:#c2603f; --k-files:#647587; --k-artifact:#c15a34;
  --k-delegate:#9333ea; --k-mcp:#0d9488;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--sans);font-size:15px;line-height:1.6;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
button{font:inherit;cursor:pointer}
.hidden{display:none!important}
.serif{font-family:var(--serif)}
.ic-svg{flex:none;display:inline-block;vertical-align:middle;stroke:currentColor}

/* buttons */
.outline-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:.5px solid var(--border-btn);border-radius:var(--radius);padding:0 12px;height:32px;font-size:12px;font-weight:500;color:var(--text-000)}
.outline-btn:hover{background:var(--bg-200)}
.outline-btn.small{height:26px;padding:0 10px;font-size:12px}
.solid-btn{display:inline-flex;align-items:center;gap:6px;background:var(--ink);color:#fff;border:0;border-radius:var(--radius);padding:0 14px;height:32px;font-weight:500;font-size:13px}
.solid-btn:hover{opacity:.9}
.icon-ghost{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--text-200);border-radius:8px;width:32px;height:32px;padding:0}
.icon-ghost:hover{background:var(--bg-200);color:var(--text-000)}
.icon-ghost.lg{width:36px;height:36px}

/* ============ DASHBOARD ============ */
.dashboard{max-width:1080px;margin:0 auto;padding:28px 32px 64px;display:flex;flex-direction:column;gap:28px}
.dash-head{display:flex;align-items:center;justify-content:space-between;gap:14px}
.wordmark{display:flex;flex-direction:column;align-items:flex-start;gap:3px;line-height:1}
.wm-title{font-family:var(--serif);font-size:26px;font-weight:500;letter-spacing:-.015em;color:var(--text-000);line-height:1}
.wm-beta{font-size:10.5px;color:var(--text-400);line-height:1}
.dash-actions{display:flex;align-items:center;gap:8px}
/* The project filter is a bare <input type=search>; without this it wore the
   browser's default inset border next to the dashboard's cards. */
#dash-project-search{appearance:none;-webkit-appearance:none;border:.5px solid var(--border-card);border-radius:9px;padding:8px 10px;font:inherit;font-size:13px;background:var(--panel);color:var(--ink)}
#dash-project-search::placeholder{color:var(--text-400)}
.lang-seg{display:inline-flex;gap:2px;padding:2px;background:var(--bg-200);border:.5px solid var(--border);border-radius:8px;flex:none}
.lang-btn{background:transparent;border:0;border-radius:6px;padding:4px 9px;font-size:11.5px;font-weight:600;color:var(--text-400);cursor:pointer;line-height:1.2;min-width:32px;text-align:center}
.lang-btn:hover{color:var(--text-000)}
.lang-btn.active{background:var(--panel,#fff);color:var(--text-000);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.side-foot .lang-seg{margin-left:auto}
.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px}
.dash-col{display:flex;flex-direction:column;gap:14px;min-width:0}
.dash-col.sessions{gap:10px}
.col-title{display:flex;align-items:center;gap:8px;font-weight:550;font-size:17px;letter-spacing:-.01em;color:var(--text-000)}
.col-title .ci{color:var(--text-000);display:inline-flex}
.dash-card{background:var(--card);border:.5px solid var(--border-card);border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card)}
.dash-empty{padding:20px;color:var(--text-400);font-size:13px;text-align:center}
/* The offered example analysis. Sits under the empty-sessions line; the hint is
   deliberately not a tooltip, because what it says (this makes outbound API
   calls and runs code) has to be readable before the click, not after. */
.dash-example{padding:0 20px 20px;text-align:center}
.dash-example .btn{margin:0 auto}
.dash-example-hint{margin-top:8px;color:var(--text-400);font-size:12px;line-height:1.5;max-width:46em;margin-left:auto;margin-right:auto}
.d-row{display:flex;align-items:center;gap:12px;padding:13px 16px;cursor:pointer;border-bottom:.5px solid var(--border)}
.d-row:last-child{border-bottom:0}
.d-row:hover{background:var(--bg-200)}
.d-row .d-main{flex:1;min-width:0;display:flex;align-items:baseline;gap:8px}
.d-row .d-name{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-000)}
.d-row .d-sub{font-size:12.5px;color:var(--text-400);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.d-row .d-meta{font-size:12.5px;color:var(--text-400);white-space:nowrap}
.d-row .d-tag{font-size:11px;color:var(--text-400);background:var(--bg-200);border:.5px solid var(--border);border-radius:6px;padding:1px 6px}
/* recent-session cards: each its own bordered card */
.dash-col.sessions .dash-card{background:transparent;border:0;box-shadow:none;overflow:visible;display:flex;flex-direction:column;gap:10px}
.dash-col.sessions .d-row{border:.5px solid var(--border-card);border-radius:var(--radius-card);background:var(--card);box-shadow:var(--shadow-card)}
.dash-col.sessions .d-main{flex-direction:column;align-items:stretch;gap:2px}
.d-dot{width:7px;height:7px;border-radius:50%;border:1.5px solid var(--text-400);flex:none}
.d-dot.live{border-color:var(--success);background:var(--success);box-shadow:0 0 0 3px var(--success-bg);animation:os-pulse 1.4s ease-in-out infinite}
.d-run{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--success-text);background:var(--success-bg);border-radius:10px;padding:1px 8px;white-space:nowrap;flex:none}
.d-run .d-run-dot{width:6px;height:6px;border-radius:50%;background:var(--success);animation:os-pulse 1.4s ease-in-out infinite}

/* running count next to the wordmark */
.dash-brand{display:flex;align-items:center;gap:14px}
.running-count{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-400)}
.running-count::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px var(--success-bg);animation:os-pulse 1.4s ease-in-out infinite}

/* running hero — prominent cards for background turns still executing */
.dash-running{display:flex;flex-direction:column;gap:12px}
.run-card{background:var(--card);border:.5px solid var(--border-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:18px 20px;cursor:pointer;display:flex;flex-direction:column;gap:8px;transition:box-shadow .15s,transform .15s}
.run-card:hover{box-shadow:var(--shadow-pop);transform:translateY(-1px)}
.run-card .run-title{font-family:var(--serif);font-size:19px;font-weight:500;letter-spacing:-.01em;color:var(--text-000);line-height:1.25}
.run-card .run-sub{font-size:13.5px;color:var(--text-400);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.run-card .run-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px}
.run-card .run-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--success-text);background:var(--success-bg);border-radius:10px;padding:3px 10px}
.run-card .run-badge .run-dot{width:7px;height:7px;border-radius:50%;background:var(--success);animation:os-pulse 1.4s ease-in-out infinite}
.run-card .run-when{font-size:12.5px;color:var(--text-400);white-space:nowrap}

/* ============ WORKSPACE ============ */
.workspace{display:grid;grid-template-columns:var(--side-w,272px) minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);height:100vh}
body.sidebar-collapsed .workspace{grid-template-columns:0 minmax(0,1fr) auto}
/* keep #sidebar in the grid (width 0) so #main / #rightdock stay in their
   columns — display:none would shift the remaining items left and collapse main */
body.sidebar-collapsed #sidebar{width:0;min-width:0;padding:0;overflow:hidden;border:0}
#sidebar{background:var(--bg);border-right:.5px solid var(--border);display:flex;flex-direction:column;padding:12px 12px;min-width:0;height:100vh;overflow:hidden}
.side-top{display:flex;align-items:center;gap:2px;margin-bottom:10px}
.proj-name{flex:1;min-width:0;display:flex;align-items:center;gap:6px;text-align:left;background:transparent;border:0;font-weight:600;font-size:14px;color:var(--text-000);white-space:nowrap;overflow:hidden;padding:4px 6px;border-radius:var(--radius)}
.proj-name #proj-current{overflow:hidden;text-overflow:ellipsis}
.proj-name:hover{background:var(--bg-200)}
.chev{color:var(--text-400);display:inline-flex;flex:none}
.proj-menu{background:var(--bg-000);border:.5px solid var(--border-btn);border-radius:var(--radius-card);margin-bottom:8px;overflow:hidden;box-shadow:var(--shadow-pop);padding:6px}
.proj-item{padding:6px 8px;border-radius:8px;font-size:14px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;color:var(--text-000)}
.proj-item:hover{background:var(--bg-200)}
.proj-item .del{opacity:0;color:var(--text-400);display:inline-flex}.proj-item:hover .del{opacity:1}
.side-nav{display:flex;flex-direction:column;gap:1px;margin-bottom:6px}
.side-nav-item{display:flex;align-items:center;gap:6px;text-align:left;background:transparent;border:0;border-radius:var(--radius);padding:4px 8px;height:28px;font-size:14px;color:var(--text-000)}
.side-nav-item .ic{color:var(--text-000);display:inline-flex}
.side-nav-item:hover{background:var(--bg-200)}
.side-label{font-size:11px;color:var(--text-400);font-weight:500;padding:14px 8px 5px}
.session-list{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:1px}
.session{display:flex;align-items:center;gap:6px;padding:6px 8px;border-radius:var(--radius);font-size:14px;color:var(--text-000);cursor:pointer;white-space:nowrap;overflow:hidden}
.session:hover{background:var(--bg-200)} .session.active{background:var(--bg-300)}
.session .s-dot{width:6px;height:6px;border-radius:50%;border:1.5px solid var(--text-400);flex:none}
.session .s-name{overflow:hidden;text-overflow:ellipsis;flex:1}
.session .s-menu{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--text-400);padding:0;opacity:0;flex:none;line-height:1}
.session:hover .s-menu,.session.active .s-menu{opacity:.85}
.session .s-menu:hover{opacity:1;color:var(--text-000)}
.side-foot{display:flex;align-items:center;justify-content:flex-start;padding-top:8px;margin-top:6px}
.side-foot .icon-ghost{color:var(--text-200)}

#main{min-width:0;display:flex;flex-direction:column;height:100vh;position:relative}
#conv-view{flex:1;display:flex;flex-direction:column;min-height:0}
.conv-head{display:flex;align-items:center;gap:6px;padding:10px 16px 10px 20px}
.tabbar{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:auto}
.tab{display:inline-flex;align-items:center;gap:6px;height:32px;padding:6px 12px;border:0;background:transparent;border-radius:var(--radius);font-size:14px;color:var(--text-200);white-space:nowrap;max-width:340px}
.tab:hover{background:var(--bg-200);color:var(--text-000)}
.tab.active{background:var(--bg-300);color:var(--text-000)}
.tab .t-name{overflow:hidden;text-overflow:ellipsis}
/* Tabs are flex items, whose min-width:auto refused to shrink below their
   text: a narrow column scrolled the tab bar and cut "New session" mid-word
   instead of ending it in the ellipsis .t-name already asks for. The session
   tab gives up width first -- its title is an input that clips on its own and
   is also listed in the sidebar -- and "New session" ellipsizes after it. */
.tabbar>.tab{min-width:0}
.tabbar>#tab-session{flex-shrink:4;min-width:96px}
.tab .t-name{min-width:0}
.tab .t-close{display:inline-flex;color:var(--text-400);opacity:0}
.tab.active .t-close{opacity:.7}.tab .t-close:hover{opacity:1;color:var(--text-000)}
.tab .conv-title{width:auto;min-width:40px;background:transparent;border:0;padding:0;font:inherit;font-size:14px;color:inherit}
.conv-title{flex:1;min-width:0;background:transparent;border:1px solid transparent;border-radius:8px;padding:5px 8px;font:inherit;font-size:14px;font-weight:400;color:var(--text-000)}
.conv-head-actions{display:flex;align-items:center;gap:2px;flex:none}
.messages{flex:1;overflow:auto;padding:0 24px 20px;position:relative}
.msg{max-width:var(--col);margin:0 auto 18px;width:100%}
.msg.user{display:flex;justify-content:flex-end}
.msg.user .bubble{background:var(--bg-100);border:.5px solid var(--border-card);border-radius:16px 16px 5px 16px;box-shadow:var(--shadow-soft);padding:11px 16px;max-width:82%;width:fit-content;white-space:pre-wrap;font-size:15px;color:var(--text-000)}
.msg.assistant .role{font-size:12px;color:var(--text-400);margin-bottom:4px}
.md{white-space:normal;word-break:break-word;line-height:1.625;font-size:15px;color:var(--text-000)}
.md h1{font-family:var(--sans);font-size:20px;font-weight:600;line-height:1.3;margin:1.2em 0 .5em}
.md h2{font-family:var(--sans);font-size:17px;font-weight:600;line-height:1.3;margin:1.2em 0 .45em}
.md h3{font-family:var(--sans);font-size:15.5px;font-weight:600;margin:1em 0 .4em}
.md h4{font-family:var(--sans);font-size:14px;font-weight:600;margin:1em 0 .35em}
.md h5{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--text-200);margin:.9em 0 .3em}
.md h6{font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--text-400);text-transform:uppercase;letter-spacing:.03em;margin:.9em 0 .3em}
.md h1:first-child,.md h2:first-child,.md h3:first-child,.md h4:first-child,.md h5:first-child,.md h6:first-child,.md p:first-child,.md .codeblock:first-child,.md blockquote:first-child{margin-top:0}
.md p{margin:0 0 12px}
.md li{margin:.2em 0}
.md strong{font-weight:600}
.md em{font-style:italic}
.md del{color:var(--text-400)}
.md a{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(24,79,149,.28)}
.md a:hover{border-bottom-color:var(--accent)}
.md img{max-width:100%;border-radius:8px;margin:6px 0}
/* inline code — excludes code inside fenced blocks */
.md :not(pre)>code{background:rgba(31,31,30,.055);color:var(--text-000);padding:.1em .38em;border-radius:5px;border:.5px solid var(--border);font-family:var(--mono);font-size:.86em;word-break:break-word}
/* fenced code block chrome */
.md .codeblock{margin:12px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg-200)}
.md .cb-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 7px 5px 12px;background:rgba(31,31,30,.03);border-bottom:1px solid var(--border)}
.md .cb-lang{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.02em;color:var(--text-400);text-transform:lowercase}
.md .cb-copy{display:inline-flex;align-items:center;gap:5px;background:transparent;border:0;color:var(--text-400);border-radius:6px;padding:3px 7px;font-size:11.5px;font-weight:500;line-height:1;cursor:pointer}
.md .cb-copy:hover{background:rgba(31,31,30,.07);color:var(--text-200)}
.md .cb-copy .ic-svg{width:13px;height:13px}
.md .cb-copy.copied{color:var(--success-text)}
.md .codeblock pre{margin:0;padding:12px 14px;overflow-x:auto;background:transparent;font-family:var(--mono);font-size:12.5px;line-height:1.6}
.md .codeblock pre code{background:transparent;color:var(--text-000);padding:0;border:0;font-size:inherit;font-family:inherit;white-space:pre}
/* fallback for any bare <pre> */
.md>pre{background:var(--bg-200);padding:12px 14px;border-radius:10px;overflow:auto;font-family:var(--mono);font-size:12.5px;border:1px solid var(--border)}
/* syntax tokens (Atom One Light palette on warm surface) */
.md .tok-kw{color:#a626a4}
.md .tok-str{color:#3f833b}
.md .tok-com{color:#9b9ca3;font-style:italic}
.md .tok-num{color:#986801}
.md .tok-fn{color:#3d6fe0}
/* tables — wrap so a wide grid scrolls instead of clipping columns */
.md-table-wrap{display:block;max-width:100%;overflow-x:auto;margin:12px 0}
.md table{border-collapse:separate;border-spacing:0;margin:0;font-size:13.5px;border:1px solid var(--border);border-radius:8px;overflow:hidden;width:max-content;min-width:100%}
.md thead th{background:rgba(31,31,30,.03)}
.md th{padding:7px 12px;text-align:left;font-weight:600;color:var(--text-200);border-bottom:1px solid var(--border)}
.md td{padding:7px 12px;text-align:left;border-bottom:1px solid var(--border)}
.md tbody tr:last-child td{border-bottom:0}
.md tbody tr:nth-child(even){background:rgba(31,31,30,.02)}
/* blockquote + hr */
.md blockquote{margin:12px 0;padding:2px 14px;border-left:3px solid var(--border-btn);color:var(--text-200)}
.md blockquote>:last-child{margin-bottom:0}
.md hr{border:0;border-top:1px solid var(--border);margin:18px 0}
/* lists */
.md ul,.md ol{padding-left:22px;margin:0 0 12px}
.md li>ul,.md li>ol{margin:.2em 0}
.cursor::after{content:"▌";color:var(--clay);animation:blink 1s steps(2) infinite}
@keyframes blink{0%,50%{opacity:1}50.01%,100%{opacity:0}}

/* ---- tool call cards (tinted rounded groups) ---- */
.activity{width:100%;max-width:var(--col);background:rgba(18,18,18,.03);border-radius:14px;padding:4px 6px;margin:10px auto;overflow:hidden;font-size:13px}
.activity .a-head{display:flex;align-items:center;gap:8px;padding:5px 8px;cursor:pointer;border-radius:8px}
.activity .a-head:hover{background:rgba(18,18,18,.03)}
.activity .a-head .ic{color:var(--success);display:inline-flex;flex:none}
.activity.subagent .a-head .ic{color:var(--clay)}
.activity .a-head .lbl{flex:1;min-width:0;color:var(--text-200);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.activity .a-head .meta{color:var(--text-400);font-size:12.5px;font-variant-numeric:tabular-nums;flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.activity .a-head .chev-t{display:inline-flex;color:var(--text-400);transition:transform .15s;flex:none}
.activity.open .a-head .chev-t{transform:rotate(180deg)}
.activity pre{margin:2px 6px 6px 30px;padding:0;white-space:pre-wrap;word-break:break-word;color:var(--text-400);font-family:var(--mono);font-size:12px;max-height:280px;overflow:auto;display:none}
.activity.open pre{display:block}

/* inline GENERATED artifact tiles */
.generated,.uploaded{max-width:var(--col);margin:14px auto 18px;width:100%}
.gen-label{font-size:10.5px;font-weight:500;color:var(--text-400);letter-spacing:.02em;margin-bottom:6px}
.gen-tiles{display:flex;flex-wrap:wrap;gap:12px}
.tile{width:180px;display:flex;flex-direction:column;border-radius:var(--radius-card);overflow:hidden;cursor:pointer;background:var(--bg-000);box-shadow:var(--shadow-card)}
.tile:hover{box-shadow:0 0 0 1px hsl(0 0% 4%/.12),0 4px 24px hsl(0 0% 4%/.06)}
.tile .thumb{height:104px;background:var(--bg-000);display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:.5px solid var(--border)}
.tile .thumb img{max-width:100%;max-height:100%}
.tile .thumb .data{align-self:stretch;text-align:left;color:var(--text-400);font-size:11px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;width:100%}
.tile .thumb .data .rc{font-size:10px;font-weight:500;color:var(--text-200)}
.tile .thumb .data .col{display:flex;align-items:center;gap:6px;color:var(--text-200);font-size:11px}
.tile .thumb .data .col .ic{color:var(--text-400);display:inline-flex}
.tile.tile-more{align-items:center;justify-content:center;min-height:132px;background:var(--bg-100,rgba(127,127,127,.09));box-shadow:inset 0 0 0 .5px var(--border)}
.tile.tile-more:hover{background:var(--bg-200,rgba(127,127,127,.16));box-shadow:inset 0 0 0 .5px var(--border)}
.tile-more-n{color:var(--text-300);font-weight:600;font-size:14px}
.tile .thumb .big{display:inline-flex;align-items:center;justify-content:center;color:var(--text-400)}
.tile .tfn{padding:8px 10px;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-000)}
/* content-derived thumbnails (shared by conversation tiles + files grid) */
.thumb .txt,.a-thumb .txt{align-self:stretch;width:100%;height:100%;box-sizing:border-box;padding:9px 11px;text-align:left;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:7.5px;line-height:1.55;color:var(--text-400);white-space:pre-wrap;word-break:break-word;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}
.thumb .molmini,.a-thumb .molmini{align-self:stretch;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 42%,#fff,var(--bg-200))}
/* files-grid variants of the tabular + icon previews (were only scoped to .tile .thumb) */
.a-thumb .data{align-self:stretch;text-align:left;color:var(--text-400);font-size:11px;padding:10px 12px;display:flex;flex-direction:column;gap:4px;width:100%}
.a-thumb .data .rc{font-size:10px;font-weight:500;color:var(--text-200)}
.a-thumb .data .col{display:flex;align-items:center;gap:6px;color:var(--text-200);font-size:11px}
.a-thumb .data .col .ic{color:var(--text-400);display:inline-flex}
.a-thumb .big{display:inline-flex;align-items:center;justify-content:center;color:var(--text-400)}

/* ---- message actions ---- */
.msg-actions{max-width:var(--col);margin:0 auto 20px;display:flex;gap:6px;color:var(--text-400)}
.msg-actions button{display:inline-flex;align-items:center;justify-content:center;background:0;border:0;color:var(--text-400);width:28px;height:28px;border-radius:8px;position:relative}
.msg-actions button:hover{color:var(--text-000);background:var(--bg-200)}
.msg-actions button .copied{position:absolute;inset:0;display:none;align-items:center;justify-content:center}
.msg .msg-actions{max-width:none;margin:5px 0 0;opacity:0;transition:opacity .12s}
.msg:hover .msg-actions,.msg .msg-actions:focus-within{opacity:1}
.msg .msg-actions button.on{color:var(--clay)}
.jump-pill{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);display:inline-flex;align-items:center;justify-content:center;background:var(--bg-000);color:var(--text-200);border:.5px solid var(--border-card);border-radius:50%;width:34px;height:34px;box-shadow:var(--shadow-pop);z-index:5}
.jump-pill:hover{background:var(--bg-200);color:var(--text-000)}
.composer-wrap{position:relative}
.plan-card{border:.5px solid var(--clay);border-radius:var(--radius-card);padding:14px;margin:10px auto;max-width:var(--col);background:var(--panel)}
.plan-card .pa{display:flex;gap:8px;margin-top:10px}
.approve-btn{display:inline-flex;align-items:center;gap:6px;background:var(--success);color:#fff;border:0;border-radius:8px;padding:7px 14px;font-weight:600}
/* ---- structured plan review card ---- */
.plan-card.rich{padding:0;overflow:hidden}
.plan-card.rich .pc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 18px 12px}
.pc-title-wrap{min-width:0}
.pc-eyebrow{font-size:10.5px;letter-spacing:.09em;font-weight:700;color:var(--text-400);text-transform:uppercase}
.pc-title{font-size:16px;font-weight:650;line-height:1.32;color:var(--text-000);margin-top:3px}
.pc-conf{flex:none;display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:650;white-space:nowrap;border:.5px solid var(--border)}
.pc-conf::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.9}
.pc-conf.high{color:var(--success);background:color-mix(in srgb,var(--success) 12%,transparent)}
.pc-conf.medium{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.pc-conf.low{color:var(--clay);background:color-mix(in srgb,var(--clay) 14%,transparent)}
.pc-steps{display:flex;flex-direction:column;border-top:.5px solid var(--border)}
.pc-step{display:flex;align-items:flex-start;gap:10px;padding:11px 18px;border-bottom:.5px solid var(--border)}
.pc-step:last-child{border-bottom:0}
.pc-check{flex:none;display:inline-flex;margin-top:1px;color:var(--text-400)}
.pc-step.completed .pc-check{color:var(--success)}
.pc-step.in_progress .pc-check{color:var(--accent)}
.pc-step.in_progress .pc-check .ic-svg{animation:os-pulse 1.4s ease-in-out infinite}
.pc-step.failed .pc-check{color:var(--danger)}
.pc-step-body{min-width:0;flex:1}
.pc-step-t{font-size:13.5px;font-weight:600;color:var(--text-000);line-height:1.35}
.pc-step.completed .pc-step-t{color:var(--text-200)}
.pc-step-d{font-size:12.5px;color:var(--text-200);line-height:1.5;margin-top:3px}
.pc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.pc-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;font-size:11px;font-family:var(--mono);color:var(--text-200);background:var(--bg-200);border:.5px solid var(--border)}
.pc-chip .ic-svg{color:var(--text-400)}
.pc-revise{padding:12px 18px 0}
.pc-revise-input{width:100%;box-sizing:border-box;resize:none;border:.5px solid var(--border-btn);border-radius:8px;padding:8px 10px;font:inherit;font-size:12.5px;background:var(--bg-100);color:var(--text-000);min-height:34px}
.pc-revise-input:focus{outline:none;border-color:var(--accent)}
.plan-card.rich .pa{padding:12px 18px 16px}
.pc-status{padding:12px 18px 16px;font-size:12.5px;font-weight:600;color:var(--text-200)}
.pc-status.executing{color:var(--accent)}
.pc-status.completed{color:var(--success)}
.pc-status.failed{color:var(--danger)}

/* Notebook composer (layered tray + white card) */
.composer-wrap{padding:8px 24px 18px}
.notebook{max-width:var(--col);margin:0 auto}
.nb-tray{background:var(--bg-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:8px 12px 40px;margin-bottom:-32px;cursor:pointer;transition:background .12s}
.nb-tray:hover{background:var(--bg-300,var(--bg-200))}
.nb-tray:hover .nb-head{color:var(--text-200,var(--text-300))}
.nb-head{font-size:12px;color:var(--text-400);display:flex;align-items:center;gap:6px;user-select:none}
.nb-head .ic{display:inline-flex}
.nb-card{position:relative;background:var(--bg-000);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:8px 12px;display:flex;flex-direction:column;gap:8px}
#composer{width:100%;border:0;outline:0;resize:none;font:inherit;font-size:15px;line-height:1.6;background:transparent;color:var(--text-000);min-height:36px;max-height:220px;padding:6px 0}
#composer::placeholder{color:var(--text-400)}
.nb-foot{display:flex;align-items:center;justify-content:space-between}
.nb-left,.nb-right{display:flex;align-items:center;gap:2px}
.nb-icon{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:0;color:var(--text-400);width:32px;height:32px;border-radius:8px}
.nb-icon:hover{background:var(--bg-200);color:var(--text-000)} .nb-icon.on{background:var(--clay);color:#fff}
.nb-model{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 10px;border:0;background:transparent;color:var(--text-400);border-radius:var(--radius);font-size:14px}
.nb-model:hover{background:var(--bg-200);color:var(--text-000)}
.nb-model select{border:0;background:transparent;color:inherit;font:inherit;font-size:14px;max-width:150px;outline:0;appearance:none;-webkit-appearance:none;padding:0;cursor:pointer}
.nb-model .ic{color:inherit;display:inline-flex;pointer-events:none}
.composer-hint{max-width:var(--col);margin:6px auto 0;font-size:11px;color:var(--text-400);text-align:center;min-height:14px}
.spin{display:inline-block;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}

/* Files view */
.files-head{display:flex;align-items:center;gap:10px;font-weight:550;font-size:15px;margin-bottom:14px}
.count{background:var(--bg-200);border-radius:12px;padding:1px 9px;font-size:12px;color:var(--text-400);font-weight:400}
.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.files-empty{color:var(--text-400);grid-column:1/-1;text-align:center;padding:30px}
.art{display:flex;flex-direction:column;border-radius:var(--radius-card);overflow:hidden;cursor:pointer;background:var(--bg-000);box-shadow:var(--shadow-card)}
.art:hover{box-shadow:0 0 0 1px hsl(0 0% 4%/.12),0 4px 24px hsl(0 0% 4%/.06)}
.art .a-thumb{height:120px;background:var(--bg-000);display:flex;align-items:center;justify-content:center;overflow:hidden;border-bottom:.5px solid var(--border)}
.art .a-thumb img{max-width:100%;max-height:100%}
.art .a-name{padding:9px 12px 2px;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-000)}
.art .a-meta{padding:0 12px 9px;font-size:11px;color:var(--text-400)}
.files-scope{margin-left:auto}
.art .a-src{padding:0 12px 9px;margin-top:-4px;font-size:11px;color:var(--text-400);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notes-block{margin-top:22px}
.notes-add{display:flex;gap:8px;margin-bottom:12px}
.notes-add textarea{flex:1;border:.5px solid var(--border-card);border-radius:9px;padding:8px;font:inherit;resize:vertical;background:var(--panel)}
.note{border:.5px solid var(--border-card);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:13px;position:relative}
.note .nt-time{font-size:11px;color:var(--text-400);margin-top:5px}
.note .nt-del{position:absolute;top:8px;right:10px;opacity:0;color:var(--text-400);cursor:pointer;display:inline-flex}.note:hover .nt-del{opacity:1}

/* modals */
.modal{position:fixed;inset:0;background:rgba(20,18,14,.34);display:flex;align-items:center;justify-content:center;z-index:60}
.modal-box{background:var(--panel);border-radius:var(--radius-lg);width:min(980px,92vw);height:min(800px,88vh);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-pop)}
.small-box{width:min(460px,92vw);height:auto}
.cust-box{width:min(920px,94vw);height:min(680px,86vh)}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:13px 18px;border-bottom:.5px solid var(--border);font-weight:600;font-size:14px}
.modal-actions{display:flex;align-items:center;gap:8px}.modal-actions a{text-decoration:none}
.modal-body{flex:1;overflow:auto;padding:0}
.modal-body iframe{width:100%;height:100%;border:0}.modal-body img{max-width:100%;display:block;margin:auto}
.modal-body pre{padding:16px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:13px}
.modal-body table.sheet{border-collapse:collapse;width:100%;font-size:14px}
.modal-body table.sheet th,.modal-body table.sheet td{border-bottom:.5px solid var(--border);padding:8px 12px;text-align:left}
.modal-body table.sheet th{font-weight:500;position:sticky;top:0;background:var(--bg-000)}
.modal-body .mol{width:100%;height:100%}
.cust-body{flex:1;display:flex;min-height:0}
.cust-tabs{width:160px;border-right:.5px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:2px}
.cust-tab{text-align:left;background:transparent;border:0;border-radius:8px;padding:6px 8px;font-size:14px;color:var(--text-000)}
.cust-tab:hover{background:var(--bg-200)}.cust-tab.active{background:var(--bg-300)}
.cust-content{flex:1;overflow:auto;padding:18px 22px}
.cust-h{font-family:var(--serif);font-weight:500;font-size:20px;margin-bottom:6px}
.cust-sub{color:var(--text-400);font-size:12.5px;margin-bottom:14px}
.cust-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:.5px solid var(--border);gap:12px}
.cust-row .info{min-width:0}.cust-row .nm{font-weight:600;font-size:13px}
.cust-row .ds{font-size:12px;color:var(--text-400);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cust-row.prof-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;justify-content:start}
.toggle{width:38px;height:22px;border-radius:12px;background:rgba(31,31,30,.25);border:0;position:relative;flex:none;transition:background .15s}
.toggle.on{background:var(--clay)}
.toggle::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}.toggle.on::after{left:18px}
.seg{display:inline-flex;flex:none;gap:2px;padding:2px;background:var(--bg-200);border:.5px solid var(--border);border-radius:9px}
.seg-btn{background:transparent;border:0;border-radius:7px;padding:5px 12px;font-size:12px;font-weight:500;color:var(--text-400);cursor:pointer}
.seg-btn:hover{color:var(--text-000)}
.seg-btn.active{background:var(--panel,#fff);color:var(--text-000);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.pill{display:inline-block;background:var(--bg-200);border:.5px solid var(--border);border-radius:12px;padding:2px 9px;font-size:11px;margin:2px}
.form{padding:16px;display:flex;flex-direction:column;gap:6px}
.form label{font-size:12px;color:var(--text-400);margin-top:6px}
.form input,.form textarea{border:.5px solid var(--border-card);border-radius:9px;padding:9px;font:inherit;background:var(--panel);color:var(--ink)}
.form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.form-actions-spacer{flex:1}
.outline-btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 45%,var(--border-btn))}
.outline-btn.danger:hover{background:color-mix(in srgb,var(--danger) 8%,transparent)}

/* ============ RIGHT DOCK ============ */
.rightdock{width:var(--dock-w,680px);border-left:.5px solid var(--border);background:var(--bg);display:flex;flex-direction:column;height:100vh;min-width:0;position:relative}
.rightdock.collapsed{display:none}
.rightdock.wide{width:min(900px,64vw)}
.dock-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px}
.dock-tabs{display:flex;gap:4px;flex:1;min-width:0;overflow:auto;align-items:center}
.dock-tab{display:inline-flex;align-items:center;gap:6px;background:transparent;border:0;padding:6px 12px;height:32px;font-size:14px;color:var(--text-200);white-space:nowrap;border-radius:var(--radius);max-width:240px;flex:none}
.dock-tab .ic{display:inline-flex;color:var(--text-400);flex:none}
.dock-tab .t-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dock-tab:hover{background:var(--bg-200);color:var(--text-000)}
.dock-tab.active{background:var(--bg-300);color:var(--text-000)}
.dock-tab .t-close{display:inline-flex;color:var(--text-400);opacity:0}
.dock-tab.active .t-close{opacity:.7}.dock-tab .t-close:hover{opacity:1;color:var(--text-000)}
.dock-head-actions{display:flex;align-items:center;gap:1px;flex:none}
.dock-body{flex:1;overflow:auto;min-height:0}
.dock-pane{padding:14px 14px 22px}
#dock-viewer{padding:0;display:flex;flex-direction:column;height:100%}
.dock-empty{color:var(--text-400);font-size:12.5px;text-align:center;padding:26px 10px}

/* dock Files grid */
#dock-files .files-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
#dock-files .files-head{margin-bottom:12px}

/* Notebook cells */
.kernel-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.kchip{display:inline-flex;align-items:center;gap:6px;background:transparent;border:0;border-radius:var(--radius);padding:4px 8px;font-size:12px;color:var(--text-200)}
.kchip:hover{background:var(--bg-200);color:var(--text-000)}
.kchip.on{background:var(--bg-300);color:var(--text-000)}
.nb-live-badge{display:inline-flex;align-items:center;gap:6px;margin-left:auto;border:.5px solid var(--border-btn);border-radius:var(--radius);padding:4px 8px;font-size:12px;color:var(--text-200)}
.nb-live-badge .ld{width:7px;height:7px;border-radius:50%;background:var(--text-400);transition:background .2s ease}
.nb-live-badge.live{border-color:var(--success);color:var(--success-text)}
.nb-live-badge.live .ld{background:var(--success);box-shadow:0 0 0 3px var(--success-bg);animation:os-pulse 1.4s ease-in-out infinite}
.nb-live-badge.ready{border-color:color-mix(in srgb,var(--success) 45%,var(--border-btn));color:var(--success-text)}
.nb-live-badge.ready .ld{background:var(--success);box-shadow:none}
.nb-live-badge.idle .ld{background:var(--text-400);opacity:.55}
.notebook-cell{margin-bottom:14px}
.notebook-cell.live .os-code{box-shadow:inset 0 0 0 1.5px var(--clay)}
.notebook-cell.draft{border-style:dashed;opacity:.9}
.notebook-cell.draft .os-code{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 65%,var(--clay))}
.notebook-cell.flash .os-code{animation:nbflash 1.4s ease}
@keyframes nbflash{0%,40%{background:hsl(14.8 63.1% 59.6%/.12)}100%{background:var(--bg-000)}}
.nbc-status{font-size:11px;padding:2px 6px;border-radius:8px;background:var(--success-bg);color:var(--success-text)}
.nbc-status.error,.nbc-status.timeout,.nbc-status.blocked,.nbc-status.interrupted{background:var(--danger-bg);color:var(--danger)}
.nbc-status.running{background:hsl(14.8 63.1% 59.6%/.16);color:var(--clay-em)}
.notebook-cell pre{margin:0;padding:12px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:13px;max-height:320px;overflow:auto}
.nbc-disclosure{margin-top:6px;border-top:.5px solid var(--border)}
.nbc-disclosure>summary{list-style:none;cursor:pointer;padding:7px 2px;color:var(--text-400);font-family:var(--mono);font-size:11px;user-select:none}
.nbc-disclosure>summary::-webkit-details-marker{display:none}
.nbc-disclosure>summary::before{content:"▸";display:inline-block;margin-right:4px;color:var(--text-200)}
.nbc-disclosure[open]>summary::before{content:"▾"}
.nbc-disclosure .nbc-out,.nbc-disclosure .nbc-err{margin-top:0}
.nbc-out{background:var(--bg-000);border:.5px solid var(--border);border-radius:8px;color:var(--text-000);margin-top:6px}
.nbc-err{background:#fbf1ee;border:.5px solid var(--border);border-radius:8px;color:var(--danger);margin-top:6px}
.nbc-error{background:var(--danger-bg);border:.5px solid var(--danger);border-radius:8px;margin-top:6px;overflow:hidden}
.nbc-error-head{display:flex;align-items:center;gap:6px;padding:8px 10px;color:var(--danger);font-family:var(--mono);font-size:12.5px;font-weight:600}
.nbc-error-head.clickable{cursor:pointer}
.nbc-error-head .ic-svg{flex:none}
.nbc-error-chev{margin-left:auto;opacity:.65;transition:transform .15s ease}
.nbc-error:not(.open) .nbc-error-chev{transform:rotate(-90deg)}
.nbc-error-tb{color:var(--danger);border-top:.5px solid var(--danger);background:hsl(0 0% 0%/.02)}
.nbc-error:not(.open) .nbc-error-tb{display:none}
.nbc-fig{display:block;max-width:100%;border-radius:8px;margin-top:6px}
.nbc-table-wrap{margin-top:6px;border:.5px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg-000)}
.nbc-table-name{font-family:var(--mono);font-size:11px;color:var(--text-400);padding:6px 10px;border-bottom:.5px solid var(--border);background:var(--bg-200)}
.nbc-table-scroll{overflow-x:auto;max-height:340px;overflow-y:auto}
.nbc-table{border-collapse:collapse;font-size:12px;font-family:var(--mono);width:max-content;min-width:100%}
.nbc-table th,.nbc-table td{padding:4px 10px;border-bottom:.5px solid var(--border);border-right:.5px solid var(--border);text-align:left;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.nbc-table thead th{position:sticky;top:0;background:var(--bg-200);color:var(--text-200);font-weight:600;z-index:1}
.nbc-table tbody tr:nth-child(even){background:var(--bg-100)}
.nbc-table-more{font-size:11px;color:var(--text-400);padding:5px 10px;border-top:.5px solid var(--border)}
.nbc-io{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.nbc-io span{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-family:var(--mono);border-radius:6px;padding:2px 7px}
.nbc-io .io-w{background:var(--success-bg);color:var(--success-text)}
.nbc-io .io-r{background:var(--bg-200);color:var(--text-400)}
/* Executed code (execution history: root + delegated frames) */
.nb-exec{margin-top:8px}
.nb-exec-head{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.nb-exec-title{font-size:12.5px;font-weight:650;color:var(--text-200)}
.nb-exec-note{font-size:11px;line-height:1.45;color:var(--text-400)}
.nb-exec-frames{display:flex;flex-direction:column;gap:4px;margin:6px 0 10px}
.nb-exec-frame{display:inline-flex;align-items:center;gap:7px;margin-left:var(--exec-indent,0px);
  padding:4px 9px;border:var(--hair);border-radius:8px;background:var(--bg-100);
  color:var(--text-200);font-size:11.5px;cursor:pointer;text-align:left;width:fit-content}
.nb-exec-frame:hover{background:var(--bg-200)}
.nb-exec-frame.on{border-color:var(--accent);color:var(--text-000);background:var(--bg-300)}
.nb-exec-frame-name{font-weight:600}
.nb-exec-frame-count{color:var(--text-400);font-size:10.5px}
.nb-exec-frame-fail{color:var(--danger);font-size:10.5px;font-weight:600}
.nb-exec-toggle.on{background:var(--bg-300);color:var(--text-000)}
/* REPL console */
.nb-repl{border-top:.5px solid var(--border);margin-top:14px;padding-top:10px}
.nb-repl-head{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--text-400);margin-bottom:6px}
.nb-owners{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.nb-owner-chip{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--border,#ccc);color:var(--text-400)}
.nb-owner-chip.active{border-color:var(--accent);color:var(--accent)}
.wb-table-controls{display:flex;gap:8px;align-items:center;margin:8px 0}
.wb-filter{flex:1;min-width:8rem}
.wb-table-meta{font-size:12px;color:var(--text-400);margin-bottom:6px}
.wb-sorted{text-decoration:underline}
.wb-ketcher-bar{margin-bottom:8px}
.wb-locator{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.wb-locator-preview{max-height:8rem;overflow:auto;font-size:11px}
.wb-pdf-page-controls{display:flex;align-items:end;gap:6px;flex-wrap:wrap}.wb-pdf-page-label{display:flex;flex-direction:column;gap:3px;color:var(--text-400);font-size:11px}.wb-pdf-page{width:6.5rem}
.nb-repl-body{font-family:var(--mono);font-size:12px;color:var(--text-400);white-space:pre-wrap}
/* read-only Notebook status strip (replaces the REPL when repl_enabled is off) */
.nb-status{border-top:.5px solid var(--border);margin-top:14px;padding-top:10px;font-size:12px}
.nb-status-line{font-weight:500;color:var(--text-300)}
.nb-status-line.ready{color:var(--success-text)}
.nb-status-line.ended{color:var(--muted,#888)}
.nb-status-hint{margin-top:4px;font-size:11px;color:var(--muted,#888);line-height:1.5}
.nb-variables{margin-top:12px;padding:11px;border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft)}
.nb-variables-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.nb-variables-title{font-size:11.5px;font-weight:650;color:var(--text-200)}
.nb-variables-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.nb-variables-language{display:flex;align-items:center;gap:5px;color:var(--text-400);font-size:10.5px}.nb-variables-select{height:28px;border:var(--hair);border-radius:7px;background:var(--bg-100);color:var(--text-200);font-size:11px;padding:0 7px}
.nb-variables-empty,.nb-variables-truncated{padding:10px 2px 2px;color:var(--text-400);font-size:11px;line-height:1.45}.nb-variables-meta{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.variable-stale{color:#8a5b08;background:#fbf0d4}
.local-model-results{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.local-model-row{grid-template-columns:minmax(180px,1fr) minmax(150px,.8fr) auto}.local-model-select{min-width:0;max-width:320px}
.nb-variable-list{display:flex;flex-direction:column;margin-top:7px}
.nb-variable-row{display:grid;grid-template-columns:minmax(105px,.65fr) minmax(0,1.35fr);align-items:center;gap:8px;padding:7px 0;border-top:var(--hair)}
.nb-variable-identity,.nb-variable-details{display:flex;align-items:center;gap:5px;min-width:0;flex-wrap:wrap}
.nb-variable-name{font:11px/1.35 var(--mono);font-weight:650;color:var(--text-100);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-variable-type{color:var(--text-400);font:10px/1.3 var(--mono)}
.nb-variable-preview{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-200);font:10.5px/1.35 var(--mono)}

/* Viewer */
.viewer-head{display:flex;align-items:center;gap:8px;padding:12px 14px 8px}
.viewer-head .vh-name{font-weight:500;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1;color:var(--text-000)}
.viewer-head .vh-acts{display:flex;gap:1px;flex:none}
.viewer-body{flex:1;overflow:auto;min-height:0}
.viewer-body>img{max-width:100%;display:block;margin:auto}
.viewer-body iframe{width:100%;height:100%;min-height:420px;border:0}
.viewer-body pre{padding:14px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:12px}
.viewer-body table.sheet{border-collapse:collapse;width:100%;font-size:14px}
.viewer-body table.sheet th,.viewer-body table.sheet td{border-bottom:.5px solid var(--border);padding:8px 12px;text-align:left;white-space:nowrap}
.viewer-body table.sheet td{color:var(--text-200)}
.viewer-body table.sheet th{font-weight:500;position:sticky;top:0;background:var(--bg-000)}
.mol-wrap{display:flex;flex-direction:column;height:100%}
.mol-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 14px;font-size:12px}
.mol-tag{color:var(--text-400);font-size:12px}
.mol-lbl{color:var(--text-200);font-size:12px;margin-right:2px}
.mol-style{border:0;border-radius:8px;padding:4px 10px;font:inherit;font-size:12px;font-weight:500;background:var(--bg-200);color:var(--text-200);cursor:pointer}
.mol-style:hover{background:var(--bg-300);color:var(--text-000)}
.mol-style.on{background:var(--accent-fill);color:#fff}
.mol-count{color:var(--text-200);font-size:12px;margin-left:auto}
.mol-view{flex:1;min-height:340px;position:relative}
.mol-foot{padding:6px 12px;border-top:.5px solid var(--border);background:var(--bg-100);font-size:12px;color:var(--text-200)}
.modal-body .mol-view{min-height:520px}

/* Artifact renderer registry: the server selects a renderer/version descriptor;
   these components only visualize bytes and never execute artifact content. */
.renderer-loading{min-height:180px;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--text-400);font-size:13px}
.renderer-shell{display:flex;flex-direction:column;min-height:100%;height:100%}
.renderer-meta{display:flex;align-items:center;gap:8px;min-height:32px;padding:5px 12px;border-bottom:.5px solid var(--border);background:var(--bg-100);font-size:11px;flex:none}
.renderer-name{font-weight:650;color:var(--text-200)}
.renderer-detail,.renderer-version{color:var(--text-400)}
.renderer-version{margin-left:auto;font-family:var(--mono)}
.renderer-content{position:relative;flex:1;min-height:0;overflow:auto}
.renderer-content>iframe{width:100%;height:100%;min-height:420px;border:0}
.renderer-content>.mol-wrap{min-height:420px}
.renderer-markdown{padding:18px}
.renderer-source{box-sizing:border-box;width:100%;margin:0;padding:16px;white-space:pre-wrap;word-break:break-word;font:12.5px/1.58 var(--mono);color:var(--text-200)}
.renderer-fallback,.download-artifact{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;color:var(--text-400)}
.renderer-fallback-text{max-width:420px;line-height:1.5}
.renderer-fallback a,.download-artifact a{text-decoration:none}
.download-artifact strong{color:var(--text-000);word-break:break-word}
.download-artifact span{max-width:420px;line-height:1.5}
.renderer-note{margin:10px 14px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-100);font-size:12px;line-height:1.45;color:var(--text-400)}
.bio-summary{position:sticky;top:0;z-index:3;padding:8px 14px;border-bottom:.5px solid var(--border);background:color-mix(in srgb,var(--bg-000) 94%,transparent);backdrop-filter:blur(8px);font:600 12px var(--sans);color:var(--text-200)}

/* FASTA/FASTQ and alignment views. Residue classes are deterministic and
   shared between the sequence and MSA renderers. */
.sequence-list{display:flex;flex-direction:column;gap:10px;padding:12px}
.sequence-record{border:.5px solid var(--border-card);border-radius:10px;overflow:hidden;background:var(--bg-000)}
.sequence-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;background:var(--bg-100);font-size:12px}
.sequence-head strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-000)}
.sequence-head span,.sequence-description{color:var(--text-400)}
.sequence-description{padding:6px 10px 0;font-size:11.5px;line-height:1.4;word-break:break-word}
.bio-sequence,.msa-sequence{font:12px/1.72 var(--mono);letter-spacing:0;tab-size:4;font-variant-ligatures:none}
.bio-sequence{padding:10px;overflow-wrap:anywhere}
.bio-residue{display:inline-block;min-width:.72em;text-align:center;border-radius:2px}
.bio-residue.hydrophobic{background:#dbeafe;color:#1e3a8a}.bio-residue.aromatic{background:#ede9fe;color:#5b21b6}
.bio-residue.positive{background:#fee2e2;color:#991b1b}.bio-residue.negative{background:#dcfce7;color:#166534}
.bio-residue.polar{background:#fef3c7;color:#92400e}.bio-residue.special{background:#fce7f3;color:#9d174d}
.bio-residue.base-a{background:#dcfce7;color:#166534}.bio-residue.base-c{background:#dbeafe;color:#1e40af}
.bio-residue.base-g{background:#fef3c7;color:#92400e}.bio-residue.base-t,.bio-residue.base-u{background:#fee2e2;color:#991b1b}
.bio-residue.gap{color:var(--text-400);background:transparent}.bio-residue.other{color:var(--text-200)}
.msa-viewport{overflow:auto;padding:10px 0;background:var(--bg-000)}
.msa-row{display:flex;width:max-content;min-width:100%;border-bottom:.5px solid color-mix(in srgb,var(--border) 55%,transparent)}
.msa-row:last-child{border-bottom:0}
.msa-label{position:sticky;left:0;z-index:2;width:150px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 8px;background:var(--bg-100);border-right:.5px solid var(--border);font:11.5px/1.72 var(--mono);color:var(--text-200)}
.msa-sequence{white-space:nowrap;padding:2px 10px}

/* BED/GFF/VCF summary tracks and their inspectable source descriptors. */
.genome-tracks{display:flex;flex-direction:column;gap:8px;padding:12px}
.genome-row{border:.5px solid var(--border-card);border-radius:10px;overflow:hidden;background:var(--bg-000)}
.genome-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px;background:var(--bg-100);font-size:11.5px}
.genome-head strong{font-family:var(--mono);color:var(--text-000)}.genome-head span{color:var(--text-400)}
.genome-row svg{display:block;width:100%;height:62px;background:var(--bg-000)}
.genome-axis{stroke:var(--text-400);stroke-width:1;opacity:.55}
.genome-feature{fill:var(--accent-fill);opacity:.78}.genome-feature:hover{opacity:1;stroke:var(--text-000);stroke-width:1}
.genome-variant{fill:var(--clay)}.genome-signal{fill:var(--success)}
.genome-descriptors{margin:0 12px 14px;border:.5px solid var(--border);border-radius:9px;overflow:hidden;font-size:12px}
.genome-descriptors summary{cursor:pointer;padding:8px 10px;background:var(--bg-100);font-weight:600;color:var(--text-200)}
.genome-descriptor{display:grid;grid-template-columns:minmax(130px,1fr) 90px minmax(100px,2fr);gap:9px;padding:6px 10px;border-top:.5px solid var(--border);align-items:baseline}
.genome-descriptor code{overflow:hidden;text-overflow:ellipsis;color:var(--text-200)}
.genome-type{color:var(--clay);overflow:hidden;text-overflow:ellipsis}.genome-label{color:var(--text-400);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* V2000 molfile drawing. Unparseable/V3000/SMILES files degrade to a visible,
   copyable source representation instead of pretending to depict chemistry. */
.chemistry-view{min-height:100%;display:flex;flex-direction:column}
.chemistry-view>svg{width:100%;min-height:340px;max-height:560px;background:#fff}
.chem-bond{stroke:#334155;stroke-width:3;stroke-linecap:round}.chem-atom-bg{fill:#fff;stroke:#e2e8f0;stroke-width:1}
.chem-atom{font:600 18px var(--sans);paint-order:stroke;stroke:#fff;stroke-width:2px;stroke-linejoin:round}
.chem-source{margin:10px 12px 14px;border:.5px solid var(--border);border-radius:9px;overflow:hidden}
.chem-source summary{cursor:pointer;padding:8px 10px;background:var(--bg-100);font-size:12px;font-weight:600;color:var(--text-200)}
.chem-source pre{margin:0;max-height:320px;overflow:auto}
.smiles-list{display:flex;flex-direction:column;gap:6px;padding:2px 14px 10px}
.smiles-row{display:grid;grid-template-columns:minmax(110px,.6fr) minmax(200px,2fr);gap:10px;padding:7px 9px;border:.5px solid var(--border);border-radius:8px;align-items:baseline}
.smiles-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-400);font-size:12px}
.smiles-code{overflow:auto;color:var(--text-200);font-size:12px}

/* LaTeX is shown as source plus a deliberately limited text-only preview. */
.latex-view{min-height:100%;display:flex;flex-direction:column}
.latex-tabs{display:flex;gap:4px;padding:8px 12px;border-bottom:.5px solid var(--border);background:var(--bg-100)}
.latex-tab{border:0;border-radius:7px;padding:4px 10px;background:transparent;color:var(--text-400);font:500 12px var(--sans);cursor:pointer}
.latex-tab:hover{color:var(--text-000);background:var(--bg-200)}.latex-tab.active{color:#fff;background:var(--accent-fill)}
.latex-preview{max-width:760px;width:calc(100% - 32px);box-sizing:border-box;margin:16px auto;padding:24px 28px;border:.5px solid var(--border-card);border-radius:10px;background:var(--bg-000);box-shadow:var(--shadow-card);font-family:var(--serif);line-height:1.65}
.latex-preview h2,.latex-preview h3,.latex-preview h4{margin:1.1em 0 .45em;font-family:var(--serif);color:var(--text-000)}
.latex-preview h2:first-child,.latex-preview h3:first-child,.latex-preview p:first-child{margin-top:0}
.latex-preview p{color:var(--text-200)}
.latex-math{margin:14px 0;padding:12px;text-align:center;overflow:auto;border-radius:8px;background:var(--bg-100);font:italic 17px/1.5 Georgia,var(--serif);white-space:pre-wrap;color:var(--text-000)}
.latex-source{flex:1;overflow:auto}
@media(max-width:600px){.renderer-meta{flex-wrap:wrap}.renderer-version{margin-left:0}.genome-descriptor{grid-template-columns:1fr}.msa-label{width:110px}.latex-preview{padding:18px}.smiles-row{grid-template-columns:1fr}}

/* Provenance (sub-tabbed) */
.prov-subtabs{display:flex;gap:0;align-items:center;padding:0 4px}
.prov-subtab{background:transparent;border:0;border-bottom:2px solid transparent;padding:8px 12px;font-size:12px;font-weight:500;color:var(--text-200);white-space:nowrap}
.prov-subtab:hover{color:var(--text-000)}
.prov-subtab.active{color:var(--accent);border-bottom-color:var(--accent-line)}
.prov-body{padding:14px}
/* Split download: the default action keeps its old one-click behaviour and the
   two formats that were previously unreachable live behind the chevron. */
.prov-dl{position:relative;display:inline-flex;align-items:stretch;margin-bottom:12px}
.prov-dl .prov-dlbtn{margin-bottom:0;border-radius:8px 0 0 8px}
.prov-dlmore{display:inline-flex;align-items:center;padding:0 8px;background:var(--accent-fill);color:#fff;border:0;border-left:1px solid rgba(255,255,255,.25);border-radius:0 8px 8px 0;cursor:pointer}
.prov-dlmenu{position:absolute;top:calc(100% + 4px);right:0;z-index:20;min-width:230px;background:var(--bg-1);border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:0 6px 20px rgba(0,0,0,.18)}
.prov-dlmenu.hidden{display:none}
.prov-dlitem{display:block;padding:7px 10px;border-radius:6px;font-size:13px;color:var(--text-200);text-decoration:none}
.prov-dlitem:hover{background:var(--bg-2)}
.prov-dlbtn{display:inline-flex;align-items:center;gap:6px;background:var(--accent-fill);color:#fff;border:0;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:500;margin-bottom:12px;text-decoration:none}
.prov-card{border:.5px solid var(--border-card);border-radius:var(--radius-card);padding:14px;background:var(--panel)}
.prov-h{font-weight:600;font-size:14px;margin-bottom:4px}
.prov-meta{font-size:12px;color:var(--text-400);font-family:var(--mono);margin-bottom:10px}
.prov-row{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.prov-lbl{font-size:11px;color:var(--text-400);font-weight:500}
.prov-files{display:flex;flex-wrap:wrap;gap:5px}
.prov-pill{background:var(--bg-200);border:.5px solid var(--border);border-radius:7px;padding:2px 8px;font-size:11.5px;font-family:var(--mono)}
.prov-link{display:inline-flex;align-items:center;gap:4px;margin-top:4px;color:var(--accent);cursor:pointer;font-size:12.5px}
.prov-link:hover{text-decoration:underline}
/* provenance → environment (full package manifest) */
.env-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.env-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-200);border:.5px solid var(--border);border-radius:8px;padding:4px 10px}
.env-chip-k{font-size:11px;color:var(--text-400);font-weight:500}
.env-chip-v{font-size:12px;color:var(--text-000);font-weight:600;font-family:var(--mono)}
.env-plat{font-size:11.5px;color:var(--text-400);font-family:var(--mono);margin-bottom:8px;word-break:break-word}
.env-src{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:4px 9px;border-radius:8px;margin-bottom:12px}
.env-src .ic-svg{flex:0 0 auto}
.env-src.ok{background:var(--success-bg,rgba(34,160,90,.10));color:var(--success,#1f9d55)}
.env-src.warn{background:var(--bg-200);color:var(--text-200)}
.env-tbl-wrap{border:.5px solid var(--border-card);border-radius:var(--radius-card);overflow:auto;max-height:520px}
.env-table{width:100%;border-collapse:collapse;font-size:12.5px}
.env-table thead th{position:sticky;top:0;background:var(--panel);text-align:left;font-weight:600;color:var(--text-200);padding:8px 12px;border-bottom:.5px solid var(--border);z-index:1}
.env-table td{padding:6px 12px;border-bottom:.5px solid var(--border)}
.env-table tbody tr:last-child td{border-bottom:0}
.env-table tbody tr:hover{background:var(--bg-200)}
.env-pk{font-weight:500;color:var(--text-000)}
.env-pv{font-family:var(--mono);color:var(--text-200);white-space:nowrap}
/* provenance → messages */
.prov-msg{border:.5px solid var(--border-card);border-radius:var(--radius-card);padding:10px 12px;background:var(--panel);margin-bottom:10px}
.prov-msg.user{background:var(--bg-200)}
.prov-msg-h{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.prov-msg-role{font-size:11px;font-weight:600;color:var(--text-200);text-transform:uppercase;letter-spacing:.04em}
.prov-msg-t{font-size:11px;color:var(--text-400);font-family:var(--mono)}
.prov-msg-b{font-size:13px;line-height:1.5}

/* context menu */
.ctx-menu{position:fixed;z-index:80;background:var(--bg-000);border:.5px solid var(--border-btn);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:6px;min-width:180px;max-height:calc(100vh - 16px);overflow-y:auto}
.ctx-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:transparent;border:0;border-radius:8px;padding:6px 8px;font-size:14px;color:var(--text-000)}
.ctx-item .ic{color:var(--text-200);display:inline-flex}
.ctx-item:hover{background:var(--bg-200)}
.ctx-sep{height:.5px;background:var(--border);margin:4px 0}
.ctx-item.danger{color:var(--danger)}.ctx-item.danger .ic{color:var(--danger)}.ctx-item.danger:hover{background:var(--danger-bg)}

/* composer autocomplete */
.composer-ac{position:absolute;left:0;right:0;margin:0 auto;bottom:88px;width:min(var(--col),calc(100% - 48px));max-height:240px;overflow:auto;background:var(--bg-000);border:.5px solid var(--border-btn);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);z-index:9;padding:6px}
.ac-item{display:flex;align-items:baseline;gap:10px;padding:6px 8px;border-radius:8px;cursor:pointer}
.ac-item.on,.ac-item:hover{background:var(--bg-200)}
.ac-item .ac-lbl{font-weight:500;font-size:14px;white-space:nowrap}
.ac-item .ac-sub{font-size:11.5px;color:var(--text-400);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}

/* ---- artifact editor (edit function) ---- */
.edit-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border-bottom:.5px solid var(--border);background:var(--bg-100)}
.edit-label{font:600 13px var(--sans);color:var(--text-200)}
.edit-acts{display:flex;gap:8px}
.edit-area{width:100%;flex:1;min-height:0;box-sizing:border-box;border:0;outline:0;resize:none;padding:16px;font:13px/1.55 var(--mono);color:var(--ink);background:var(--bg)}
.viewer-body:has(.edit-area){display:flex;flex-direction:column;padding:0}
/* editor code-autocomplete popup (rows reuse .ac-item/.ac-lbl/.ac-sub); .ed-mirror measures the caret offscreen */
.edit-ac{position:fixed;z-index:20;min-width:180px;max-width:340px;max-height:260px;overflow:auto;background:var(--bg-000);border:.5px solid var(--border-btn);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:6px}
.edit-ac.hidden{display:none}
.ed-mirror{position:fixed;top:0;left:0;visibility:hidden;pointer-events:none;overflow:hidden;white-space:pre-wrap;word-wrap:break-word;z-index:-1}
.solid-btn.small,.outline-btn.small{padding:5px 12px;font-size:12px}

/* --- added: kernel actions, customize inputs, layout density --- */
.nb-repl-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nb-repl-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nb-repl-actions .kchip{cursor:pointer}
.nb-repl-actions .kchip:disabled{opacity:.45;cursor:default}
.nb-kernel-title{font-family:var(--mono);font-size:11px;color:var(--text-300)}
.nb-env-select{font:inherit;font-size:11px;padding:3px 6px;border:1px solid var(--line,#8883);border-radius:6px;background:var(--bg-100,transparent);color:var(--text-200);cursor:pointer;max-width:220px}
.nb-env-select:disabled{opacity:.5;cursor:default}
.nb-revive{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0;padding:8px 10px;border:1px dashed var(--line,#8884);border-radius:8px;background:var(--bg-200,#8881);font-size:12px;color:var(--text-300)}
.nb-revive.hidden{display:none}
.nb-revive .solid-btn{cursor:pointer}
.cust-input{flex:1;min-width:180px;padding:6px 10px;border:1px solid var(--line,#8883);border-radius:8px;background:var(--bg,transparent);color:var(--ink,inherit);font:inherit}
.cust-row .ds{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:4px}
.cust-row .ds .cust-checks{flex-basis:100%;margin:0;white-space:pre-wrap;font-family:var(--mono);font-size:11px;line-height:1.5}
.cust-row .prof-warn{color:var(--danger)}
.cust-row .prof-probe.ok{color:var(--success-text)}
.cust-row .prof-probe.bad{color:var(--danger)}
body.layout-compact{font-size:13px}
body.layout-compact .messages{padding-top:6px}
body.layout-compact .cust-row{padding-top:8px;padding-bottom:8px}
body.layout-wide{--col:1080px}

/* --- added: running/live session badges + kernel state chip --- */
.s-badge{margin-left:auto;font-size:10px;padding:1px 7px;border-radius:10px;white-space:nowrap;flex:none}
.s-badge.run{background:#e8552022;color:#e85520;font-weight:600;animation:os-pulse 1.4s ease-in-out infinite}
.s-badge.live{width:7px;height:7px;padding:0;border-radius:50%;background:#3aa76d}
.session.running .s-dot{background:#e85520}
@keyframes os-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.kstate{font-size:11px;padding:1px 8px;border-radius:9px;background:#8881;color:var(--muted,#888)}
.kstate.running{background:#3aa76d22;color:#3aa76d}
.kstate.run{background:#e8552022;color:#e85520;font-weight:600;animation:os-pulse 1.4s ease-in-out infinite}
.kstate.stopped{background:#8881;color:var(--muted,#888)}
.kstate.none{background:transparent;color:var(--muted,#999)}

/* --- added: ⌘K command palette --- */
.palette-ov{position:fixed;inset:0;background:rgba(0,0,0,.28);display:flex;align-items:flex-start;justify-content:center;z-index:1000;padding-top:12vh}
.palette{width:min(620px,92vw);max-height:64vh;display:flex;flex-direction:column;background:var(--bg-100,#fff);border:1px solid var(--line,#8883);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.28);overflow:hidden}
.palette-input{border:0;outline:0;padding:16px 18px;font-size:15px;background:transparent;color:var(--ink,inherit);border-bottom:1px solid var(--line,#8882)}
.palette-list{overflow-y:auto;padding:6px}
.palette-group{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#999);padding:8px 12px 3px}
.palette-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer}
.palette-item.on{background:var(--bg-300,#8881)}
.pi-ic{display:inline-flex;color:var(--muted,#888);flex:none}
.pi-txt{min-width:0}
.pi-label{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pi-sub{font-size:12px;color:var(--muted,#999);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.palette-empty{padding:20px;text-align:center;color:var(--muted,#999);font-size:13px}

/* --- added: artifact version history --- */
.ver-list{display:flex;flex-direction:column;gap:8px;padding:4px 2px}
.ver-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:.5px solid var(--border,#8883);border-radius:10px}
.ver-row.current{border-color:var(--clay,#d0704e);background:var(--bg-200,#f3f3f0)}
.ver-info{min-width:0}
.ver-title{display:flex;align-items:center;gap:8px}
.ver-ord{font-weight:600;font-size:13px}
.ver-badge{font-size:10px;color:#fff;background:var(--clay,#d0704e);border-radius:8px;padding:1px 7px}
.ver-meta{font-size:12px;color:var(--muted,#888);margin-top:2px}
.ver-acts{display:flex;align-items:center;gap:8px;flex:none}
.ver-diff{margin-top:12px;border:.5px solid var(--border,#8883);border-radius:10px;background:var(--bg-100);overflow:hidden}.ver-diff-title{padding:9px 12px;border-bottom:.5px solid var(--border,#8883);color:var(--text-200);font-size:12px;font-weight:650}.ver-diff-body{max-height:45vh;margin:0;padding:12px;overflow:auto;background:var(--bg-000);color:var(--text-100);font:11px/1.5 var(--mono);white-space:pre;tab-size:4}.ver-diff-note{padding:7px 12px;border-top:.5px solid var(--border,#8883);color:var(--text-400);font-size:11px}

/* --- added: skill authoring editor --- */
.cust-actrow{display:flex;gap:8px;margin-top:6px}
.skill-form{display:flex;flex-direction:column;gap:6px;padding:4px 2px}
.skill-lbl{font-size:12px;color:var(--muted,#888);margin-top:6px}
.skill-body{min-height:220px;resize:vertical;padding:10px 12px;border:.5px solid var(--border,#8883);border-radius:10px;background:var(--bg,transparent);color:var(--ink,inherit);font:13px/1.5 var(--mono,monospace)}
.connector-edit-area{resize:vertical;padding:8px 10px;border:.5px solid var(--border,#8883);border-radius:9px;background:var(--bg,transparent);color:var(--ink,inherit);font:13px/1.45 var(--sans)}
.connector-json{font-family:var(--mono,monospace)}
.connector-env-state{padding:8px 10px;border-radius:8px;background:var(--surface-2,#8881);color:var(--text-400);font:12px/1.45 var(--mono,monospace);overflow-wrap:anywhere}
.skill-version-list{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.skill-version-card{padding:11px 12px;border:.5px solid var(--border,#8883);border-radius:10px;background:var(--panel,#fff)}
.skill-version-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.skill-version-head .info{min-width:0}

/* --- Volcengine account and plan connection --- */
.volc-panel{min-height:72px;padding:10px 2px 14px;border-bottom:.5px solid var(--border);transition:opacity .14s}
.volc-panel.busy{opacity:.62;pointer-events:none}
.volc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.volc-head .info{min-width:0}
.volc-head .nm{font-size:14px;font-weight:650;color:var(--text-000)}
.volc-head .ds{margin-top:3px;color:var(--text-400);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.volc-status{flex:none;padding:2px 7px;border:1px solid var(--border);border-radius:8px;color:var(--text-400);font-size:11px;line-height:1.35}
.volc-status.ok{border-color:var(--success);background:var(--success-bg);color:var(--success-text)}
.volc-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:11px}
.volc-actions button{display:inline-flex;align-items:center;justify-content:center;gap:5px}
.volc-actions .icon-ghost{width:28px;height:28px;padding:0}
.volc-login-prep{max-width:680px;margin-top:9px;color:var(--text-400);font-size:12px;line-height:1.55}
.volc-project-hint{margin:7px 0 0 27px;color:var(--text-400);font-size:11px;line-height:1.45}
.volc-notice{display:grid;grid-template-columns:18px minmax(0,1fr);gap:9px;margin-top:11px;padding:10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-100)}
.volc-notice>.ic-svg{margin-top:1px;color:var(--text-400)}
.volc-notice.warn{border-color:color-mix(in srgb,var(--clay) 55%,var(--border));background:color-mix(in srgb,var(--clay) 9%,var(--bg-100))}
.volc-notice.warn>.ic-svg{color:var(--clay-em)}
.volc-notice.ok{border-color:var(--success);background:var(--success-bg)}
.volc-notice.ok>.ic-svg{color:var(--success-text)}
.volc-notice-title{color:var(--text-100);font-size:12.5px;font-weight:650;line-height:1.4}
.volc-notice-body{margin-top:3px;color:var(--text-300);font-size:11.5px;line-height:1.55}
.volc-code{flex:1 1 180px;min-width:140px;max-width:280px}
.volc-plan-row{display:grid;grid-template-columns:minmax(64px,auto) minmax(0,1fr);align-items:center;gap:10px;margin-top:12px}
.volc-plan-row .skill-lbl{margin:0}
.volc-plan-row .cust-input{min-width:0;width:100%}
.volc-quota-title{padding-top:14px}
.volc-quotas{display:grid;gap:10px;margin-top:5px}
.volc-quota{min-width:0}
.volc-quota-labels{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--text-200);font-size:12px}
.volc-progress{height:6px;margin-top:5px;overflow:hidden;border-radius:3px;background:var(--bg-300)}
.volc-progress span{display:block;height:100%;max-width:100%;border-radius:inherit;background:var(--success)}
.volc-reset{margin-top:3px;color:var(--text-400);font-size:10.5px;text-align:right}
.volc-ready{display:inline-flex;align-items:center;min-height:28px;color:var(--success-text);font-size:12px;font-weight:600}
.volc-key-wait{display:inline-flex;align-items:center;min-height:28px;color:var(--text-300);font-size:12px}
@media(max-width:600px){.volc-head{align-items:center}.volc-actions{align-items:stretch;flex-direction:column}.volc-actions button:not(.icon-ghost),.volc-code{box-sizing:border-box;width:100%;max-width:none}.volc-actions .icon-ghost{align-self:flex-end}.volc-plan-row{grid-template-columns:1fr;gap:5px}.volc-project-hint{margin-left:0}}

/* --- Volcengine DataPro: dedicated connector workflow --- */
.datapro-card{display:flex;flex-direction:column;gap:12px;margin:4px 0 14px;padding:14px;border:.5px solid var(--border-card,var(--border));border-radius:12px;background:var(--bg-100,var(--panel))}
.datapro-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.datapro-title{font-size:14px;font-weight:650;color:var(--text-000)}
.datapro-desc{margin-top:3px;color:var(--text-400);font-size:12px;line-height:1.45}
.datapro-head .outline-btn{flex:none}
.datapro-field{display:flex;flex-direction:column;gap:6px}
.datapro-input-row{display:flex;align-items:center;gap:8px}
.datapro-input-row .cust-input{min-width:0}
.datapro-credential-state{font-size:11.5px;color:var(--success-text)}
.datapro-credential-state.bad{color:var(--danger)}
.datapro-query{box-sizing:border-box;width:100%;min-height:74px;resize:vertical;padding:9px 10px;border:1px solid var(--line,#8883);border-radius:8px;background:var(--bg,transparent);color:var(--ink,inherit);font:13px/1.5 var(--sans)}
.datapro-query-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:28px}
.datapro-status{min-width:0;font-size:12px;color:var(--text-400);line-height:1.4;overflow-wrap:anywhere}
.datapro-status.ok{color:var(--success-text);font-weight:600}
.datapro-status.bad{color:var(--danger)}
.datapro-output{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.datapro-index-status{font-size:12px;line-height:1.4;color:var(--text-400);overflow-wrap:anywhere}
.datapro-index-status.ok{color:var(--success-text)}
.datapro-card .datapro-result{box-sizing:border-box;width:100%;max-height:260px;overflow:auto;margin:0;padding:10px 12px;border:.5px solid var(--border);border-radius:8px;background:var(--bg-000);color:var(--text-200);white-space:pre-wrap;word-break:break-word;font:12px/1.5 var(--mono)}
.datapro-artifact{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:600px){.datapro-head{flex-direction:column}.datapro-head .outline-btn{align-self:stretch}.datapro-input-row{align-items:stretch;flex-direction:column}.datapro-query-actions{align-items:stretch;flex-direction:column}.datapro-query-actions .solid-btn{align-self:stretch}}

/* --- added: compute jobs --- */
.job-submit{display:flex;gap:8px;margin-top:6px}
.job-submit .cust-input{flex:1}
.job-list{display:flex;flex-direction:column;gap:0}
.job-badge{font-size:10px;padding:1px 7px;border-radius:8px;text-transform:uppercase}
.job-badge.running,.job-badge.queued{background:#e8552022;color:#e85520}
.job-badge.done{background:#3aa76d22;color:#3aa76d}
.job-badge.failed{background:#8e262622;color:#8e2626}
.job-badge.cancelled{background:#8881;color:var(--muted,#888)}
/* `timeout` and `abandoned` are terminal statuses jobs.py declares and the
   deadline and adoption paths reach; unstyled, they rendered as bare text
   beside four styled siblings and read as a rendering bug. */
.job-badge.timeout{background:#b4770022;color:#b47700}
.job-badge.abandoned{background:#6b21a822;color:#6b21a8}
.job-cmd{font-family:var(--mono,monospace);font-size:12px;color:var(--text-200,#333)}
.job-output{white-space:pre-wrap;word-break:break-word;background:#0b0b0b;color:#e6e6e6;padding:14px;border-radius:10px;font:12px/1.5 var(--mono,monospace);max-height:52vh;overflow:auto;margin:0}

/* --- added: memory categories subhead --- */
.cust-subhead{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#999);padding:12px 2px 2px;font-weight:600}

/* --- added: project folders / session grouping --- */
.folder-head{display:flex;align-items:center;gap:5px;padding:5px 8px;border-radius:var(--radius,6px);cursor:pointer;font-size:13px;font-weight:550;color:var(--text-200,#333)}
.folder-head:hover{background:var(--bg-200)}
.folder-head .folder-chev{display:inline-flex;color:var(--text-400)}
.folder-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.folder-count{font-size:11px;color:var(--text-400);background:var(--bg-200);border-radius:8px;padding:0 6px}
.folder-head .s-menu{opacity:0}
.folder-head:hover .s-menu{opacity:1}

/* --- added: empty-session starters, drag-drop, repl stop --- */
.empty-session{max-width:640px;margin:8vh auto 0;text-align:center;padding:0 20px}
.es-title{font-family:var(--serif);font-size:22px;color:var(--text-000);margin-bottom:8px}
.es-sub{font-size:13px;color:var(--text-400);margin-bottom:20px;line-height:1.6}
.es-chips{display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:left}
.es-chip{background:var(--card,#fff);border:.5px solid var(--border-card,#8883);border-radius:12px;padding:12px 14px;cursor:pointer;transition:background .12s}
.es-chip:hover{background:var(--bg-200)}
.es-chip-t{font-weight:600;font-size:13px;color:var(--text-000);margin-bottom:3px}
.es-chip-p{font-size:12px;color:var(--text-400);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.composer-wrap.dragover{outline:2px dashed var(--clay,#d0704e);outline-offset:4px;border-radius:16px}
.repl-stop{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:7px;background:#e8552022;color:#e85520;flex:none}
.repl-stop:hover{background:#e8552033}
@media(max-width:560px){.es-chips{grid-template-columns:1fr}}

/* --- added: no-api-key banner --- */
.key-banner{position:fixed;top:0;left:0;right:0;z-index:900;display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;background:#e8552018;color:#b53f16;font-size:13px;border-bottom:1px solid #e8552040}
.key-banner .kb-link{background:#e85520;color:#fff;border:0;border-radius:7px;padding:2px 10px;font-size:12px;margin-left:6px}
body.has-key-banner .dashboard{padding-top:52px}
body.has-key-banner #sidebar,body.has-key-banner #main,body.has-key-banner #rightdock{padding-top:34px}

/* Standard scientific environment readiness. The same persistent projection
   appears on the dashboard and above the conversation; flag-off keeps both
   static shells hidden. */
.environment-readiness-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--clay) 42%,var(--border));border-radius:10px;background:color-mix(in srgb,var(--clay) 10%,var(--panel));color:var(--text-200)}
.environment-readiness-copy{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:12.5px;line-height:1.45}
.environment-readiness-copy strong{flex:none;color:var(--text-000);font-size:13px}
.environment-readiness-copy span{min-width:0}
#conv-view>.environment-readiness-banner{flex:none;margin:0 20px 8px}

.standard-readiness-card{margin:0 0 14px;padding:14px;border:1px solid var(--border-card);border-left:3px solid var(--clay);border-radius:12px;background:var(--bg-100)}
.standard-readiness-card.state-ready{border-left-color:var(--success)}
.standard-readiness-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.standard-readiness-title{font-size:14px;font-weight:650;color:var(--text-000)}
.standard-readiness-summary{margin-top:3px;font-size:12px;line-height:1.45;color:var(--text-400)}
.standard-readiness-gap,.standard-readiness-remediation{margin-top:12px;padding-top:10px;border-top:.5px solid var(--border)}
.standard-readiness-label{font-size:11px;font-weight:650;letter-spacing:.03em;color:var(--text-200)}
.standard-readiness-gap ul{display:flex;flex-wrap:wrap;gap:5px;margin:7px 0 0;padding:0;list-style:none}
.standard-readiness-gap li{padding:2px 7px;border:.5px solid var(--border);border-radius:7px;background:var(--panel);font:11px/1.45 var(--mono);color:var(--text-200)}
.standard-readiness-explicit{margin-top:3px;font-size:11.5px;color:var(--text-400)}
.standard-readiness-command{display:flex;align-items:center;gap:8px;margin-top:8px}
.standard-readiness-command code{min-width:0;flex:1;overflow:auto;padding:7px 9px;border:.5px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text-000);white-space:pre;font:11.5px/1.4 var(--mono);user-select:all}
.standard-readiness-command .outline-btn{flex:none}
@media(max-width:640px){.environment-readiness-banner,.environment-readiness-copy,.standard-readiness-command{align-items:stretch;flex-direction:column}.environment-readiness-copy{gap:2px}.environment-readiness-banner .outline-btn,.standard-readiness-command .outline-btn{align-self:flex-start}}

/* --- image annotations (figure review) --- */
.annot-stage{position:relative;display:block;width:max-content;max-width:100%;margin:16px auto}
.annot-img{display:block;max-width:100%;height:auto;-webkit-user-select:none;user-select:none}
.annot-layer{position:absolute;inset:0;cursor:crosshair}
.annot-pin{position:absolute;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:var(--clay);color:#fff;box-shadow:0 2px 6px hsl(0 0% 4%/.28),0 0 0 2px #fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;line-height:1;cursor:pointer;z-index:2}
.annot-pin.draft{background:var(--accent-fill);animation:annotPop .18s ease}
.annot-pin.sent{background:var(--success)}
.annot-pin.resolved{background:var(--text-400)}
.annot-pin:hover{filter:brightness(1.06)}
@keyframes annotPop{0%{transform:scale(.4)}100%{transform:scale(1)}}
.annot-pop{position:absolute;z-index:5;width:270px;max-width:78%;background:var(--bg-000);border:1px solid var(--border-card);border-radius:12px;box-shadow:var(--shadow-pop);padding:12px;cursor:auto}
.annot-input{width:100%;box-sizing:border-box;border:1px solid var(--accent-line);border-radius:8px;padding:9px 10px;font:14px/1.4 var(--sans);color:var(--text-000);resize:vertical;min-height:52px;outline:none;background:var(--bg-000)}
.annot-input:focus{border-color:var(--accent-fill);box-shadow:0 0 0 3px hsl(211 60% 45%/.14)}
.annot-foot{display:flex;align-items:center;gap:8px;margin-top:10px}
.annot-foot-l{flex:1}
.annot-btn{border:0;border-radius:8px;padding:6px 14px;font-size:13px;cursor:pointer;font-weight:500}
.annot-btn.ghost{background:transparent;color:var(--text-200)}
.annot-btn.ghost:hover{background:var(--hover)}
.annot-btn.ghost.danger{color:var(--danger)}
.annot-btn.solid{background:var(--clay);color:#fff}
.annot-btn.solid:hover{background:var(--clay-em)}
.annot-btn:disabled{opacity:.5;cursor:default}
.annot-pop-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.annot-pop-num{font-weight:700;color:var(--clay-em)}
.annot-pop-status{font-size:11px;padding:1px 8px;border-radius:8px;background:var(--bg-200);color:var(--text-400)}
.annot-pop-status.sent{background:var(--success-bg);color:var(--success-text)}
.annot-pop-body{font-size:14px;line-height:1.45;color:var(--text-000);white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto}
/* composer chip */
.annot-bar{position:relative;padding:2px 2px 8px}
.annot-bar.hidden{display:none}
.annot-chip{display:inline-flex;align-items:center;gap:0;background:var(--bg-200);border:1px solid var(--border);color:var(--text-200);border-radius:20px;padding:0;font-size:12.5px;overflow:hidden}
.annot-chip:hover{background:var(--hover)}
.annot-chip .ic-svg{color:var(--clay-em)}
.annot-chip-main{display:inline-flex;align-items:center;gap:4px;border:0;background:transparent;color:inherit;font:inherit;padding:4px 7px 4px 10px;cursor:pointer}
.annot-chip-x{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-right:3px;border:0;border-radius:50%;background:transparent;color:var(--text-400);cursor:pointer}
.annot-chip-x .ic-svg{color:currentColor}
.annot-chip-x:hover{background:var(--bg-300);color:var(--danger)}
.annot-chip-x:disabled{opacity:.45;cursor:default}
.annot-list-pop{position:absolute;bottom:calc(100% + 6px);left:0;z-index:60;width:340px;max-width:88vw;background:var(--bg-000);border:1px solid var(--border-card);border-radius:12px;box-shadow:var(--shadow-pop);padding:10px;max-height:320px;overflow:auto}
.annot-list-head{font-size:12px;color:var(--text-400);margin:2px 4px 8px}
.annot-list-row{padding:8px;border-radius:9px}
.annot-list-row:hover{background:var(--bg-100)}
.annot-list-row+.annot-list-row{border-top:.5px solid var(--border)}
.annot-list-t{display:flex;align-items:center;gap:7px;margin-bottom:3px}
.annot-list-pin{background:var(--clay);color:#fff;border-radius:50%;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600}
.annot-list-file{font-size:12px;color:var(--text-400)}
.annot-list-body{font-size:13px;color:var(--text-000);line-height:1.4;margin-bottom:6px;word-break:break-word}
.annot-list-acts{display:flex;gap:6px}
.annot-mini{border:1px solid var(--border-btn);background:var(--bg-000);border-radius:7px;padding:2px 10px;font-size:12px;cursor:pointer;color:var(--text-200)}
.annot-mini:hover{background:var(--hover)}
.annot-mini.danger{color:var(--danger)}
/* attachment under a user message bubble */
.annot-attach{margin-top:6px;background:var(--bg-200);border:.5px solid var(--border);border-radius:10px;padding:8px 10px;max-width:520px}
.annot-attach>.ic{color:var(--clay-em);vertical-align:middle}
.annot-attach-t{font-size:12px;color:var(--text-400)}
.annot-attach-list{margin-top:5px;display:flex;flex-direction:column;gap:3px}
.annot-attach-row{display:flex;align-items:baseline;gap:6px;font-size:12.5px;color:var(--text-200)}
.annot-attach-pin{background:var(--clay);color:#fff;border-radius:50%;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:600}
.annot-attach-file{color:var(--text-400)}
.annot-attach-body{color:var(--text-000)}

/* ---------- semantic activity steps (plan / search / env / skill / bash / edit …) ---------- */
.step{width:100%;max-width:var(--col);background:var(--bg-100,rgba(18,18,18,.03));border:1px solid var(--border-card,rgba(18,18,18,.06));border-radius:14px;margin:9px auto;overflow:hidden;font-size:13px}
.step .s-head{display:flex;align-items:center;gap:9px;padding:8px 11px;cursor:pointer;border-radius:13px}
.step .s-head:hover{background:var(--hover,rgba(18,18,18,.03))}
.step .s-ic{color:var(--success);display:inline-flex;flex:none;width:16px;height:16px}
.step.running .s-ic{color:var(--text-400)}
.step.err .s-ic{color:var(--danger)}
.step.warn .s-ic{color:var(--warn,#b8860b)}
/* a step forwarded from a delegated child: nested + tagged, never root-shaped */
.step.step-child{border-left:3px solid var(--k-delegate,#9333ea)}
.step.step-child .s-head{padding-left:calc(11px + var(--step-child-indent,0px))}
.step .s-child-tag{flex:none;max-width:30%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;font-weight:600;color:var(--text-300);background:var(--bg-200,rgba(18,18,18,.04));border-radius:9px;padding:1px 7px}
.step .s-lbl{flex:1;min-width:0;color:var(--text-200);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
.step .s-meta{color:var(--text-400);font-size:12px;font-variant-numeric:tabular-nums;flex:none;max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.step .s-chev{display:inline-flex;color:var(--text-400);transition:transform .15s;flex:none}
.step.open .s-chev{transform:rotate(180deg)}
.step .s-body{display:none;padding:2px 12px 11px 36px}
.step.open .s-body{display:block}
.step .s-inner{display:flex;flex-direction:column;gap:7px;min-width:0}
.step .s-pre{margin:0;padding:8px 10px;background:var(--bg-200,rgba(18,18,18,.04));border-radius:9px;white-space:pre-wrap;word-break:break-word;color:var(--text-300);font-family:var(--mono);font-size:12px;max-height:340px;overflow:auto}
.step .s-pre.s-cmd{color:var(--text-200)}
/* inline figure previews inside a "Saving …" artifact step: the figure stays at
   its point of production; the end-of-turn GENERATED gallery is the recap. */
.step .s-figs{display:flex;flex-wrap:wrap;gap:10px}
.step .s-fig{margin:0;max-width:340px;border-radius:10px;overflow:hidden;cursor:pointer;background:var(--bg-000);box-shadow:var(--shadow-card);border:.5px solid var(--border)}
.step .s-fig:hover{box-shadow:0 0 0 1px hsl(0 0% 4%/.12),0 4px 24px hsl(0 0% 4%/.06)}
.step .s-fig img{display:block;max-width:100%;max-height:340px;object-fit:contain;background:#fff}
.step .s-fig-cap{padding:6px 9px;font-size:11px;color:var(--text-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step .s-q{color:var(--text-300);font-style:italic}
.step .s-note{color:var(--text-400);font-size:12.5px}
/* search results */
.step .s-res{display:flex;flex-direction:column;gap:1px;padding:5px 0;border-top:1px solid var(--border,rgba(18,18,18,.05))}
.step .s-res:first-child{border-top:none}
.step .s-res-t{color:var(--accent,#2d6cdf);font-weight:500;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step .s-res-t:hover{text-decoration:underline}
.step .s-res-u{color:var(--success-text,#3a7a3a);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step .s-res-s{color:var(--text-400);font-size:12px;line-height:1.4}
/* plan checklist */
.step .s-plan{display:flex;flex-direction:column;gap:4px}
.step .s-todo{display:flex;align-items:flex-start;gap:8px;color:var(--text-200)}
.step .s-todo .s-check{flex:none;display:inline-flex;margin-top:2px;color:var(--text-400)}
.step .s-todo.completed .s-check{color:var(--success)}
.step .s-todo.in_progress .s-check{color:var(--accent,#2d6cdf)}
.step .s-todo.completed .s-todo-t{color:var(--text-400);text-decoration:line-through}
/* env table */
.step .s-env{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.step .s-env-n{color:var(--text-200);font-weight:500;font-family:var(--mono);font-size:12px}
.step .s-env-m{color:var(--clay,#b5651d);font-size:12px}
.step .s-env-ok{color:var(--success);font-size:12px}
/* skill markdown */
.step .s-skill{font-size:12.5px;max-height:420px;overflow:auto;line-height:1.5}
.step .s-skill h1,.step .s-skill h2,.step .s-skill h3{font-size:13.5px;margin:8px 0 4px}
.step .s-skill pre{font-size:11.5px}
/* saved-artifact card (files / environment / output metadata) */
.step .s-kv{display:flex;gap:10px;align-items:baseline}
.step .s-kv .s-k{flex:none;width:92px;color:var(--text-400);font-size:12.5px}
.step .s-kv .s-v{flex:1;min-width:0;color:var(--text-200);font-size:12.5px;word-break:break-word}
.step .s-files{font-family:var(--mono);font-size:12px;color:var(--text-300);line-height:1.55}
.step .s-files .s-brk{color:var(--text-400)}

/* ---------- permission gate: inline approval card ---------- */
.perm-card{width:100%;background:var(--bg-000);border:1px solid var(--accent-line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:12px 14px;margin:10px 0;font-size:13px}
.perm-head{display:flex;align-items:center;gap:8px}
.perm-ic{color:var(--clay-em);flex:none}
.perm-title{font-weight:600;color:var(--text-000);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.perm-badge{flex:none;background:var(--bg-200);color:var(--text-400);font-size:11px;padding:1px 8px;border-radius:999px}
.perm-badge.danger{background:var(--danger-bg);color:var(--danger)}
.perm-sub{color:var(--text-400);font-size:12.5px;margin:3px 0 9px}
.perm-detail{font-size:12.5px;color:var(--text-200);background:var(--bg-200);border-radius:8px;padding:7px 10px;margin-bottom:10px;white-space:pre-wrap;word-break:break-word;max-height:180px;overflow:auto}
.perm-detail.mono{font-family:var(--mono);font-size:12px}
.perm-lbl{font-size:11.5px;color:var(--text-400);margin:6px 0 4px;font-weight:500}
.perm-scope{display:flex;gap:6px;flex-wrap:wrap}
.perm-seg{border:.5px solid var(--border-btn);background:transparent;border-radius:999px;padding:3px 12px;font-size:12px;color:var(--text-200)}
.perm-seg:hover{background:var(--bg-200)}
.perm-seg.active{background:var(--accent);border-color:var(--accent);color:#fff}
.perm-pat{margin-top:8px}
.perm-in{width:100%;border:.5px solid var(--border-btn);border-radius:var(--radius);padding:5px 9px;font-size:12px;font-family:var(--mono);background:var(--bg-000);color:var(--text-000)}
.perm-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.perm-chip{border:.5px solid var(--border);background:var(--bg-200);border-radius:6px;padding:2px 8px;font-size:11.5px;font-family:var(--mono);color:var(--text-200)}
.perm-chip:hover{background:var(--bg-300)}
.perm-fb{width:100%;border:.5px solid var(--border);border-radius:var(--radius);padding:5px 9px;font-size:12px;margin-top:8px;background:var(--bg-000);color:var(--text-000);font-family:var(--sans)}
.perm-btns{display:flex;gap:8px;margin-top:11px}
.perm-allow{flex:1;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);height:32px;font-weight:600;font-size:13px}
.perm-allow:hover{background:var(--accent-fill)}
.perm-deny{background:transparent;border:.5px solid var(--border-btn);border-radius:var(--radius);height:32px;padding:0 16px;color:var(--text-000);font-size:13px}
.perm-deny:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}
.perm-card button:disabled{opacity:.55;cursor:default}
.perm-card.resolved .perm-scope,.perm-card.resolved .perm-pat,.perm-card.resolved .perm-fb,.perm-card.resolved .perm-btns,.perm-card.resolved .perm-lbl{display:none}
.perm-card.allowed{border-color:var(--success)}
.perm-card.denied{border-color:var(--danger)}
.perm-status{margin-top:8px;font-size:12.5px;font-weight:600}
.perm-card.allowed .perm-status{color:var(--success-text)}
.perm-card.denied .perm-status{color:var(--danger)}
.perm-continue{width:100%;margin-top:10px;background:var(--accent);color:#fff;border:0;border-radius:var(--radius);height:32px;font-weight:600;font-size:13px}
.perm-continue:hover{background:var(--accent-fill)}
/* permissions settings tab */
.perm-sec{margin:14px 0}
.perm-sec-h{font-weight:600;font-size:13px;color:var(--text-000);margin-bottom:4px}
.perm-rule{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--border)}
.perm-rtool{font-weight:500;font-size:12.5px;color:var(--text-000);min-width:104px}
.perm-rpat{flex:1;min-width:0;font-size:12px;color:var(--text-400);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.perm-dec{border:.5px solid var(--border-btn);border-radius:var(--radius);height:26px;font-size:12px;padding:0 6px;background:var(--bg-000);color:var(--text-000)}
.perm-add{border-top:1px dashed var(--border)}
.perm-add .perm-in{flex:1;font-family:var(--sans)}
.cust-note{color:var(--text-400);font-size:12.5px;padding:4px 0}
.step .s-frow{padding-left:14px;display:flex;gap:2px}
.step .s-fn{color:var(--text-200)}
.step .s-fn.clk{color:var(--accent,#2d6cdf);cursor:pointer}
.step .s-fn.clk:hover{text-decoration:underline}
.step .s-comma{color:var(--text-400)}
.step .s-out{display:flex;flex-direction:column;gap:6px;margin-top:2px}
.step .s-out-tgl{align-self:flex-start;background:transparent;border:0;padding:2px 0;color:var(--text-400);font-size:12px;cursor:pointer;font-family:var(--sans)}
.step .s-out-tgl:hover{color:var(--text-200)}
.step .s-json{margin:0;padding:9px 11px;background:var(--bg-200,rgba(18,18,18,.04));border-radius:9px;white-space:pre;overflow:auto;max-height:340px;color:var(--text-300);font-family:var(--mono);font-size:11.5px;line-height:1.5}
/* edit diff */
.step .s-diff{display:flex;flex-direction:column;gap:0}
.step .s-diff .d-del{background:var(--danger-bg,rgba(200,40,40,.07));color:var(--danger,#b23);border-radius:9px 9px 0 0}
.step .s-diff .d-add{background:var(--success-bg,rgba(40,160,40,.08));color:var(--success-text,#3a7a3a);border-radius:0 0 9px 9px}
.step .s-diff .d-del div,.step .s-diff .d-add div{white-space:pre-wrap;word-break:break-word}
/* running spinner + demoted redundant code card */
.spin{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.activity.has-steps{opacity:.5;margin:4px 0}
.activity.has-steps .a-head{padding:3px 8px}
.activity.has-steps .a-head .lbl{font-size:11.5px;color:var(--text-400)}

/* ============================================================
   Code / command block — Claude-Science styling shared by step
   cards (bash / write / read / edit / code), the notebook panel
   and provenance. A framed block with a header strip (language +
   environment), light syntax accents, and an optional output
   reveal. Class names are global (not scoped to .step) so any
   surface can reuse the same treatment.
   ============================================================ */
.os-code{border:.5px solid var(--border-card);border-radius:11px;overflow:hidden;background:var(--bg-000);box-shadow:0 1px 2px hsl(0 0% 4%/.03)}
.os-code .oc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 12px;background:var(--bg-100);border-bottom:.5px solid var(--border)}
.os-code .oc-lang{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--text-400);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.os-code .oc-lang .ic-svg{color:var(--text-400);opacity:.85;flex:none}
.os-code .oc-right{display:inline-flex;align-items:center;gap:8px;flex:none}
.os-code .oc-env{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-400);flex:none}
.os-code .oc-env .oc-env-k{font-size:9.5px;font-weight:600;letter-spacing:.08em;color:var(--text-400);opacity:.7;border:.5px solid var(--border);border-radius:5px;padding:1px 5px;text-transform:uppercase}
.os-code .oc-env .oc-env-v{font-family:var(--mono);color:var(--text-300)}
.os-code .oc-src{margin:0;padding:12px 14px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:12.5px;line-height:1.62;color:var(--text-200);max-height:440px;overflow:auto;background:var(--bg-000)}
.os-code .oc-src code{font-family:inherit;color:inherit;background:none;padding:0;font-size:inherit}
.os-code.term .oc-src{color:var(--text-200)}
/* syntax accents — reuse the shared highlightCode() .tok-* classes so tool-call
   code blocks match the markdown code blocks elsewhere in the app */
.oc-src .tok-kw{color:#a626a4}
.oc-src .tok-str{color:#3f833b}
.oc-src .tok-com{color:#9b9ca3;font-style:italic}
.oc-src .tok-num{color:#986801}
.oc-src .tok-fn{color:#3d6fe0}
/* output reveal ("Show output" toggle + result block) */
.oc-out-tgl{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;background:transparent;border:0;padding:2px 0;color:var(--text-400);font-size:12px;font-family:var(--sans);cursor:pointer}
.oc-out-tgl:hover{color:var(--text-200)}
.oc-out-tgl .ic-svg{transition:transform .15s}
.oc-out-tgl.open .ic-svg{transform:rotate(180deg)}
.oc-out{margin:0;padding:10px 13px;background:var(--bg-200);border:.5px solid var(--border);border-radius:9px;white-space:pre-wrap;word-break:break-word;font-family:var(--mono);font-size:12px;line-height:1.55;color:var(--text-300);max-height:360px;overflow:auto}
.oc-out.err{background:#fbf1ee;color:var(--danger);border-color:var(--danger-bg)}

/* ============================================================
   Accessibility & responsiveness (keyboard focus, reduced motion,
   tablet/mobile layout). Additive — nothing above is overridden
   except inside media queries.
   ============================================================ */

/* ---- keyboard focus rings (only for keyboard nav, not mouse clicks) ---- */
:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
.icon-ghost:focus-visible,.nb-icon:focus-visible,.side-nav-item:focus-visible,.session:focus-visible,
.tab:focus-visible,.dock-tab:focus-visible,.seg-btn:focus-visible,.cust-tab:focus-visible,
.d-row:focus-visible,.run-card:focus-visible,.tile:focus-visible,.art:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
textarea:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent-fill);outline-offset:1px}
:focus:not(:focus-visible){outline:none}

/* ---- respect users who prefer no motion ---- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ---- mobile drawer backdrop (created lazily by app.js) ---- */
.mobile-scrim{position:fixed;inset:0;background:rgba(20,18,14,.34);z-index:70}
.mobile-scrim.hidden{display:none}

/* ---- tablet: give the chat more room; slim the right dock ---- */
@media (max-width:1180px){
  .rightdock{width:min(var(--dock-w,520px),60vw)}
  .rightdock.wide{width:min(680px,58vw)}
}

/* ---- narrow / mobile: single column; sidebar & dock become overlays ---- */
@media (max-width:900px){
  .workspace,body.sidebar-collapsed .workspace{grid-template-columns:minmax(0,1fr)}
  body{overflow-x:hidden}

  /* sidebar → fixed slide-in drawer */
  #sidebar{position:fixed;top:0;left:0;height:100dvh;width:min(300px,86vw);min-width:0;
    z-index:71;background:var(--bg-000);border-right:.5px solid var(--border);padding:12px;
    box-shadow:2px 0 28px hsl(0 0% 4%/.18);transform:translateX(0);transition:transform .22s ease}
  body.sidebar-collapsed #sidebar{width:min(300px,86vw);min-width:0;padding:12px;border-right:.5px solid var(--border);
    overflow:hidden;transform:translateX(-100%)}

  /* right dock → full-screen overlay when open */
  .rightdock,.rightdock.wide{position:fixed;inset:0;width:100%;z-index:72;border-left:0}

  /* denser chrome + comfortable tap targets (≥40px) */
  .conv-head{padding:8px 12px}
  .tab{max-width:190px;min-height:40px;height:40px}
  .messages{padding:0 14px 16px}
  .composer-wrap{padding:8px 12px 14px}
  .msg.user .bubble{max-width:88%}
  .side-nav-item{height:40px;min-height:40px}
  .session{padding:9px 8px;min-height:40px}
  .outline-btn,.solid-btn,.icon-ghost,.nb-icon,.dock-tab,.lang-btn,.seg-btn,
  .cust-tab,.kchip,.approve-btn,.nb-model,.proj-name,.jump-pill,.msg-actions button,
  .zoom-bar button,.d-row,.run-card,.tile,.art,.toggle{
    min-height:40px
  }
  .icon-ghost,.nb-icon,.lang-btn,.jump-pill,.msg-actions button,.toggle{
    min-width:40px
  }
  .icon-ghost,.nb-icon{width:40px;height:40px}

  /* dashboard → single column, tighter gutters */
  .dashboard{padding:20px 16px 48px;gap:20px}
  /* The header row (wordmark + language, theme, settings, Import, New
     project) needs ~505px; unwrapped it pushed New project off a 375px
     screen, where body{overflow-x:hidden} left no way to scroll to it. */
  .dash-head{flex-wrap:wrap;row-gap:10px}
  .dash-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0;max-width:100%}
  .dash-grid{grid-template-columns:minmax(0,1fr);gap:22px}
  .wm-title{font-size:22px}

  /* modals fill the small screen; settings tabs run horizontally */
  .modal-box,.cust-box{width:96vw;height:92vh}
  .cust-body{flex-direction:column;min-height:0}
  .cust-tabs{width:auto;flex-direction:row;overflow-x:auto;border-right:0;
    border-bottom:.5px solid var(--border);padding:8px;gap:4px;flex:none}
  .cust-tab{white-space:nowrap;flex:none}
  .composer-ac{width:calc(100% - 24px)}
}

/* ============================================================
   BEAUTIFY PASS (2026-07-05) — reference :8765 depth & hairlines.
   Adds layered shadows, per-tool accent colours, a groomed
   notebook, and richer error framing. Appended last so these win
   over the equal-specificity base rules above.
   ============================================================ */

/* ---- activity (⚙ tool-call) cards: give them a body, a hairline
   ring, a soft shadow and a coloured left rail so the transcript
   reads as distinct stacked cards, not one flat monotone column ---- */
.activity{background:var(--card);border:var(--hair);border-left:3px solid color-mix(in srgb,var(--success) 46%,var(--line));
  box-shadow:var(--shadow-soft);border-radius:12px;padding:3px 5px}
.activity .a-head{padding:6px 9px}
.activity .a-head .ic{color:var(--success)}
.activity.subagent{border-left-color:color-mix(in srgb,var(--clay) 60%,var(--line))}
.activity.subagent .a-head .ic{color:var(--clay)}
.activity.has-steps{opacity:.55;box-shadow:none;border-color:transparent;border-left-color:color-mix(in srgb,var(--text-400) 30%,transparent);background:transparent}

/* ---- semantic step cards: soft depth + per-kind colour ---- */
.step{background:var(--card);border:var(--hair);border-left:3px solid var(--k,var(--border-card));
  box-shadow:var(--shadow-soft);border-radius:12px}
.step .s-head{border-radius:11px 11px 0 0}
.step:not(.open) .s-head{border-radius:11px}
/* faint kind wash on the header strip so each tool reads as its own colour */
.step .s-head::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(90deg,color-mix(in srgb,var(--k,transparent) 8%,transparent),transparent 55%);opacity:.9}
.step .s-head{position:relative}
.step .s-head>*{position:relative}
.step .s-ic{color:var(--k,var(--success))}
.step-search{--k:var(--k-search)} .step-fetch{--k:var(--k-fetch)} .step-plan{--k:var(--k-plan)}
.step-env{--k:var(--k-env)} .step-skill{--k:var(--k-skill)} .step-bash{--k:var(--k-bash)}
.step-code{--k:var(--k-code)} .step-write{--k:var(--k-write)} .step-read{--k:var(--k-read)}
.step-edit{--k:var(--k-edit)} .step-files{--k:var(--k-files)} .step-artifact{--k:var(--k-artifact)}
.step-delegate{--k:var(--k-delegate)} .step-mcp{--k:var(--k-mcp)}
.step-review{--k:var(--clay)}
.step-review.review-pass{background:var(--bg-100)}
.step-review.review-pass .s-chev{visibility:hidden}
.step-review.review-issues{border-left-color:#b7791f}
.review-issue{padding:9px 10px;border-radius:9px;background:var(--bg-200);display:flex;flex-direction:column;gap:5px}
.review-issue-head{display:flex;align-items:center;gap:7px;color:var(--text-200)}
.review-severity{font-size:10px;line-height:1;text-transform:uppercase;padding:3px 5px;border-radius:999px;background:#f4dfb8;color:#7a4d00}
.review-issue.high .review-severity{background:var(--danger-bg);color:var(--danger)}
.review-issue.low .review-severity{background:var(--success-bg);color:var(--success-text)}
.review-detail{color:var(--text-200);line-height:1.45}
.review-evidence{color:var(--text-400);font-size:12px;line-height:1.45}
/* status still wins over the kind colour: running = muted, error = red rail+icon */
.step.running .s-ic{color:var(--text-400)}
.step.running{border-left-color:color-mix(in srgb,var(--text-400) 40%,var(--line))}
.step.err{border-left-color:var(--danger)}
.step.err .s-ic{color:var(--danger)}
.step.err .s-head::before{background:linear-gradient(90deg,color-mix(in srgb,var(--danger) 9%,transparent),transparent 55%)}

/* ---- notebook: cluster each code cell + its outputs into one card ---- */
.kernel-chips{position:sticky;top:0;z-index:3;margin:-14px -14px 14px;padding:12px 14px;
  background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(6px);
  border-bottom:var(--hair)}
.notebook-cell{border:var(--hair);border-radius:12px;overflow:hidden;background:var(--card);
  box-shadow:var(--shadow-soft);margin-bottom:16px}
.notebook-cell .os-code{border:0;border-radius:0;box-shadow:none;background:transparent}
.notebook-cell .os-code .oc-head{background:linear-gradient(90deg,color-mix(in srgb,var(--k-code) 7%,var(--bg-100)),var(--bg-100) 60%)}
.notebook-cell.live .os-code{box-shadow:inset 3px 0 0 var(--clay)}
.notebook-cell>.nbc-out,.notebook-cell>.nbc-err,.notebook-cell>.nbc-error,
.notebook-cell>.nbc-table-wrap,.notebook-cell>.nbc-io,.notebook-cell>.nbc-fig{margin:0;border-radius:0;border-left:0;border-right:0}
.notebook-cell>.nbc-out,.notebook-cell>.nbc-err{border-top:var(--hair)}
.notebook-cell>.nbc-out::before,.notebook-cell>.nbc-err::before{content:"OUT";display:block;
  font:600 9px/1 var(--mono);letter-spacing:.12em;color:var(--text-400);opacity:.6;margin-bottom:6px}
.notebook-cell>.nbc-fig{padding:10px;background:var(--bg-100);border-top:var(--hair)}
.notebook-cell>.nbc-io{padding:8px 12px;border-top:var(--hair);background:var(--bg-100)}
.nbc-revisions{border-bottom:var(--hair);background:var(--bg-100)}
.nbc-revisions>summary{cursor:pointer;list-style:none;padding:9px 12px;color:var(--text-300);font-size:11px;font-weight:600}
.nbc-revisions>summary::-webkit-details-marker{display:none}
.nbc-revisions>summary::before{content:"▸";display:inline-block;margin-right:6px;color:var(--text-400)}
.nbc-revisions[open]>summary::before{content:"▾"}
.nbc-revision-list{padding:0 10px 10px}
.nbc-revision-list>.notebook-cell{margin:8px 0 0;box-shadow:none;border-color:color-mix(in srgb,var(--danger) 28%,var(--line));opacity:.88}
.nbc-revision-list>.notebook-cell .oc-head{background:color-mix(in srgb,var(--danger) 5%,var(--bg-100))}
.nb-live-badge{border-radius:999px}
.nb-repl{background:var(--card);border:var(--hair);border-radius:12px;padding:12px;margin-top:16px;box-shadow:var(--shadow-soft)}

/* ---- runtime identity shared by Notebook + Action Timeline ---- */
.runtime-summary{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:10px 12px;border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft)}
.runtime-summary.compact{width:100%;padding:0 0 9px;border:0;border-bottom:var(--hair);border-radius:0;background:transparent;box-shadow:none}
.runtime-state{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:650;background:var(--bg-200);color:var(--text-300)}
.runtime-state::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.72}
.runtime-state.live{color:var(--success-text);background:var(--success-bg)}
.runtime-state.busy,.runtime-state.restoring{color:var(--clay-em);background:color-mix(in srgb,var(--clay) 12%,var(--bg-000))}
.runtime-state.busy::before,.runtime-state.restoring::before{animation:os-pulse 1.4s ease-in-out infinite}
.runtime-state.partial{color:#8a5b08;background:#fbf0d4}
.runtime-state.failed{color:var(--danger);background:var(--danger-bg)}
.runtime-state.ended{color:var(--text-400);background:var(--bg-200)}
.runtime-chip{display:inline-flex;align-items:baseline;gap:5px;min-width:0;border-left:var(--hair);padding-left:8px;font-size:11px}
.runtime-key{color:var(--text-400)}
.runtime-val{color:var(--text-200);font-family:var(--mono);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nb-live-badge.busy,.nb-live-badge.restoring{border-color:var(--clay);color:var(--clay-em)}
.nb-live-badge.busy .ld,.nb-live-badge.restoring .ld{background:var(--clay);animation:os-pulse 1.4s ease-in-out infinite}
.nb-live-badge.partial{border-color:#c58b25;color:#8a5b08}.nb-live-badge.partial .ld{background:#c58b25}
.nb-live-badge.failed{border-color:var(--danger);color:var(--danger)}.nb-live-badge.failed .ld{background:var(--danger)}
.nb-live-badge.ended .ld{background:var(--text-400);opacity:.55}

/* ---- immutable Cell metadata + append-only actions ---- */
.nbc-cell-meta{display:flex;align-items:center;gap:6px;padding:7px 11px;background:var(--bg-100);border-bottom:var(--hair);font:11px/1.2 var(--mono);color:var(--text-400)}
.nbc-state{border-radius:999px;padding:3px 7px;background:var(--bg-200)}
.nbc-state.current{background:var(--success-bg);color:var(--success-text)}
.nbc-state.drafting{background:color-mix(in srgb,var(--accent-fill) 70%,var(--bg-200));color:var(--accent)}
.nbc-state.stale{background:#fbf0d4;color:#8a5b08}
.nbc-state.non-replayable,.nbc-state.historical{background:var(--danger-bg);color:var(--danger)}
.nbc-revision,.nbc-generation{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nbc-generation{margin-left:auto;max-width:145px}
.nbc-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:7px 9px;border-top:var(--hair);background:var(--bg-100)}
.nbc-action{display:inline-flex;align-items:center;gap:5px;border:0;border-radius:7px;padding:4px 7px;background:transparent;color:var(--text-300);font:11px/1.2 var(--sans);cursor:pointer}
.nbc-action:hover:not(:disabled){background:var(--bg-300);color:var(--text-000)}
.nbc-action:disabled{opacity:.38;cursor:not-allowed}
.nbc-revision-list>.notebook-cell .nbc-actions .nbc-action:not(:first-child){display:none}

/* ---- explicit multiline Python/R live input (developer mode only) ---- */
.nb-live-input{margin-top:9px;border:var(--hair);border-radius:10px;overflow:hidden;background:var(--bg-000)}
.nb-live-input-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 8px;background:var(--bg-100);border-bottom:var(--hair)}
.nb-language-label{display:inline-flex;align-items:center;gap:6px;color:var(--text-400);font-size:11px}
.nb-language-select{border:var(--hair);border-radius:6px;padding:3px 20px 3px 6px;background:var(--bg-000);color:var(--text-200);font:11px var(--mono)}
.nb-live-input-actions{display:flex;align-items:center;gap:5px}
.nb-repl-input{display:block;width:100%;min-height:132px;resize:vertical;border:0;outline:0;padding:11px 12px;background:var(--bg-000);color:var(--text-000);font:12.5px/1.55 var(--mono);tab-size:4}
.nb-repl-input:disabled{opacity:.62}

/* ---- Action Timeline: bounded, researcher-facing ledger projection ---- */
#dock-timeline{min-height:100%}
.timeline-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.timeline-title{font:600 18px/1.25 var(--serif);color:var(--text-000)}
.timeline-subtitle{max-width:620px;margin-top:3px;color:var(--text-400);font-size:11.5px;line-height:1.45}
.workbench-layout{display:grid;grid-template-columns:minmax(210px,.72fr) minmax(290px,1.28fr);gap:12px;margin-top:12px;align-items:start}
.workbench-side,.timeline-actions{display:flex;flex-direction:column;gap:10px;min-width:0}
.workbench-panel,.timeline-card{border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft);overflow:hidden}
.workbench-panel{padding:10px}
.workbench-panel-title{font-size:11px;font-weight:650;letter-spacing:.03em;color:var(--text-300);margin-bottom:8px}
.workbench-empty{padding:12px 6px;color:var(--text-400);font-size:11.5px;line-height:1.5;text-align:left}
.timeline-empty{border:var(--hair);border-radius:12px;background:var(--card);padding:22px 16px}
.timeline-ledger-region{display:flex;flex-direction:column;gap:10px;min-width:0}
.timeline-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;min-width:0;padding:8px 9px;border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft)}
.timeline-search-field{display:flex;flex:1 1 260px;flex-direction:column;gap:4px;min-width:0}.timeline-search-label{color:var(--text-200);font-size:10.5px;font-weight:700;letter-spacing:.035em}
.timeline-search-controls{display:flex;align-items:center;gap:5px;min-width:0}.timeline-search-input{width:100%;min-width:0;height:30px;border:var(--hair);border-radius:8px;padding:5px 8px;background:var(--bg-000);color:var(--text-000);font:11.5px/1.3 var(--sans)}
.timeline-search-input:focus{border-color:var(--accent-line)}.timeline-search-input:focus-visible{outline:2px solid var(--accent-fill);outline-offset:1px}.timeline-search-input::placeholder{color:var(--text-400)}
.timeline-search-clear{flex:0 0 auto;height:30px;border:var(--hair);border-radius:8px;padding:4px 8px;background:var(--bg-100);color:var(--text-200);font:10.5px/1 var(--sans);cursor:pointer}.timeline-search-clear:hover{background:var(--bg-200);color:var(--text-000)}
.timeline-search-meta{display:flex;flex:1 1 300px;flex-direction:column;align-items:flex-end;gap:2px;min-width:0;text-align:right}.timeline-search-status{color:var(--text-200);font:600 10.5px/1.3 var(--mono)}.timeline-search-scope{max-width:420px;color:var(--text-200);font-size:10px;line-height:1.35}
.timeline-overview{position:relative;min-width:0;overflow:visible;border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft);user-select:none}
.timeline-overview:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
.timeline-overview-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px 3px}
.timeline-overview-label{color:var(--text-200);font-size:10.5px;font-weight:700;letter-spacing:.045em;text-transform:uppercase}
.timeline-overview-help{padding:0 9px 5px;color:var(--text-200);font-size:10px;line-height:1.35}
.timeline-overview-selection-status{min-height:12px;padding:0 9px 4px;overflow:hidden;color:var(--text-200);font:10px/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap}
.timeline-overview-legend{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;color:var(--text-200);font-size:10px}
.timeline-overview-legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.timeline-overview-legend-item i{display:inline-block;width:11px;height:5px;border:1px solid currentColor;border-radius:2px}
.timeline-overview-legend-item.queue i{background:#68717d;border-style:dashed}.timeline-overview-legend-item.ttft i{background:var(--clay);border-style:dotted}.timeline-overview-legend-item.decode i{background:var(--accent)}
.timeline-overview-plot{position:relative;height:112px;overflow:visible;border-top:var(--hair)}
.timeline-overview svg{display:block;width:100%;height:112px;overflow:hidden;cursor:crosshair;touch-action:pan-y}
.timeline-overview-background{fill:var(--bg-100)}
.timeline-overview-phase,.timeline-overview-point,.timeline-overview-running,.timeline-overview-highlight{pointer-events:none}
.timeline-overview-selection{fill:color-mix(in srgb,var(--accent-fill) 16%,transparent);stroke:var(--accent-fill);stroke-width:1;pointer-events:none;vector-effect:non-scaling-stroke}
.timeline-overview-prefix{position:absolute;top:50%;z-index:7;display:inline-flex;align-items:center;justify-content:center;width:26px;height:24px;border:var(--hair);border-radius:999px;background:var(--card);box-shadow:var(--shadow-soft);color:var(--text-200);font:700 15px/1 var(--mono);cursor:pointer;transform:translate(-50%,-50%)}.timeline-overview-prefix:hover{background:var(--bg-200);color:var(--text-000)}.timeline-overview-prefix:disabled{cursor:wait;opacity:.6}
.timeline-overview-phase{stroke-width:.35;vector-effect:non-scaling-stroke}.timeline-overview-phase.queue{fill:#68717d;stroke:#3f4650;stroke-dasharray:1 1}.timeline-overview-phase.ttft{fill:var(--clay);stroke:var(--clay-em);stroke-dasharray:2 1}.timeline-overview-phase.decode{fill:var(--accent);stroke:var(--accent-fill)}
.timeline-overview-running{fill:none;stroke:var(--clay-em);stroke-width:1.5;vector-effect:non-scaling-stroke}
.timeline-overview-point{fill:none;stroke:var(--text-400);stroke-width:1.25;vector-effect:non-scaling-stroke}
.timeline-overview-highlight{fill:none;vector-effect:non-scaling-stroke}.timeline-overview-highlight.selected{stroke:var(--text-000);stroke-width:2.5}.timeline-overview-highlight.hover{stroke:var(--accent-fill);stroke-width:2}
.timeline-overview-tooltip{position:absolute;z-index:8;min-width:220px;max-width:min(360px,calc(100% - 16px));padding:8px 9px;border:var(--hair);border-radius:8px;background:var(--card);box-shadow:var(--shadow-pop);pointer-events:auto;user-select:text}
.timeline-overview-tooltip-title{max-width:100%;margin-bottom:6px;overflow:hidden;color:var(--text-000);font-size:11px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}
.timeline-overview-tooltip-grid{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;align-items:baseline;font-size:10px}.timeline-overview-tooltip-key{color:var(--text-200)}.timeline-overview-tooltip code{overflow:hidden;color:var(--text-200);font:10px/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap}.timeline-overview-tooltip .timeline-overview-running{grid-column:1/-1;color:var(--text-200);font-size:10px;font-weight:650}
.timeline-overview-empty .timeline-overview-plot{opacity:.55}
.timeline-overview-axis{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:3px 8px 5px;border-top:var(--hair);color:var(--text-200);font:10px/1.2 var(--mono)}
.timeline-overview-nav{display:inline-flex;align-items:center;gap:2px}.timeline-overview-nav-button{display:inline-flex;align-items:center;justify-content:center;width:24px;height:22px;padding:0;border:var(--hair);border-radius:6px;background:var(--bg-100);color:var(--text-200);font:12px/1 var(--sans)}.timeline-overview-nav-button:hover{background:var(--bg-200);color:var(--text-000)}
.timeline-overview-clear{flex:0 0 auto;border:var(--hair);border-radius:999px;padding:2px 7px;background:var(--bg-100);color:var(--text-200);font:10px/1.3 var(--sans);cursor:pointer}.timeline-overview-clear:hover{background:var(--bg-200);color:var(--text-000)}
.timeline-overview-keyboard-help,.timeline-ledger-keyboard-help{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.timeline-filter-empty{padding:10px 12px;border:var(--hair);border-radius:9px;background:var(--bg-100)}
.timeline-inspector-host:empty{display:none}
.timeline-history-state{display:flex;flex-direction:column;gap:10px}
.timeline-ledger-scroll{max-height:clamp(280px,62vh,720px);min-width:0;overflow:auto;overscroll-behavior-x:contain;overflow-anchor:none;border:var(--hair);border-radius:12px;background:var(--card);box-shadow:var(--shadow-soft)}
.timeline-ledger-scroll:focus-visible{outline:2px solid var(--accent-fill);outline-offset:2px}
.timeline-ledger{display:block;width:100%;min-width:410px;border-collapse:separate;border-spacing:0;color:var(--text-200)}
.timeline-ledger thead{position:sticky;top:0;z-index:3;display:block;background:var(--bg-100)}
.timeline-ledger thead tr,.timeline-ledger-row{display:grid;grid-template-columns:62px 44px minmax(0,1fr) 68px 62px;width:100%}
.timeline-ledger th{box-sizing:border-box;min-width:0;overflow:hidden;padding:7px 8px;border-bottom:var(--hair);background:var(--bg-100);color:var(--text-200);font-size:10px;font-weight:700;letter-spacing:.045em;text-align:left;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}
.timeline-ledger th.timeline-ledger-duration,.timeline-ledger th.timeline-ledger-tokens{text-align:right}
.timeline-ledger-body{position:relative;display:block;width:100%}
.timeline-ledger-row{position:absolute;inset:0 0 auto;height:var(--timeline-row-height,46px);cursor:pointer;will-change:transform}
.timeline-ledger-row td{box-sizing:border-box;display:flex;align-items:center;min-width:0;height:var(--timeline-row-height,46px);overflow:hidden;padding:7px 8px;border-top:var(--hair);background:var(--card);font-size:11.5px;transition:background .12s ease}
.timeline-ledger-row.timeline-first-row td{border-top:0}
.timeline-ledger-row:hover td,.timeline-ledger-row.selected td{background:var(--bg-100)}
.timeline-ledger-row.search-match td{background:color-mix(in srgb,var(--k-search) 9%,var(--card))}.timeline-ledger-row.search-match:hover td,.timeline-ledger-row.search-match.selected td{background:color-mix(in srgb,var(--k-search) 14%,var(--card))}
.timeline-ledger-row.search-match td:first-child{box-shadow:inset 3px 0 0 var(--k-search)}
.timeline-ledger-row.selected td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.timeline-ledger-row.turn-boundary td{border-top:3px solid var(--text-400)}
.timeline-ledger-ordinal,.timeline-ledger-duration,.timeline-ledger-tokens{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.timeline-ledger-row td.timeline-ledger-ordinal{align-items:flex-start;justify-content:center;flex-direction:column;padding-top:4px;padding-bottom:4px}
.timeline-ledger-row td.timeline-ledger-kind{justify-content:center}
.timeline-ledger-row td.timeline-ledger-duration,.timeline-ledger-row td.timeline-ledger-tokens{justify-content:flex-end;text-align:right;color:var(--text-200)}
.timeline-ledger-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-000);font-weight:550}
.timeline-ledger-row td.timeline-ledger-title .timeline-row-button{flex:1 1 auto;min-width:0}
.timeline-ledger-status{flex:0 0 auto;max-width:42%;margin-right:6px;overflow:hidden;font-weight:650;text-overflow:ellipsis;white-space:nowrap}
.timeline-row-button{display:block;width:100%;overflow:hidden;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.timeline-row-button:focus-visible{border-radius:3px;outline:2px solid var(--accent-fill);outline-offset:2px}
.timeline-ledger-kind{text-align:center}.timeline-kind-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--text-400)}
.timeline-kind-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.timeline-ledger-row.kind-native_tool .timeline-kind-icon{color:var(--k-files)}
.timeline-ledger-row.kind-python .timeline-kind-icon,.timeline-ledger-row.kind-r .timeline-kind-icon{color:var(--k-code)}
.timeline-ledger-row.kind-dynamic_tool .timeline-kind-icon{color:var(--k-mcp)}
.timeline-ledger-row.kind-delegate .timeline-kind-icon{color:var(--k-delegate)}
.timeline-ledger-row.kind-permission .timeline-kind-icon{color:var(--clay)}
.timeline-ledger-row.kind-recovery .timeline-kind-icon{color:#b7791f}
.timeline-ledger-row.kind-finalize .timeline-kind-icon{color:var(--success)}
.timeline-ledger-row.status-failed .timeline-kind-icon,.timeline-ledger-row.status-error .timeline-kind-icon{color:var(--danger)}
.timeline-turn-toggle{display:flex;align-items:center;gap:2px;max-width:100%;min-width:0;min-height:24px;border:0;padding:0;background:transparent;color:var(--text-200);font:700 9px/1 var(--sans);letter-spacing:.035em;text-transform:uppercase;cursor:pointer}.timeline-turn-toggle:focus-visible{border-radius:3px;outline:2px solid var(--accent-fill);outline-offset:1px}.timeline-turn-chevron{flex:0 0 auto;font-size:10px}
.timeline-turn-marker{display:block;max-width:100%;margin-bottom:2px;overflow:hidden;color:var(--text-200);font:700 9px/1 var(--sans);letter-spacing:.035em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.timeline-turn-toggle .timeline-turn-marker{margin-bottom:0}
.timeline-ordinal-value{display:block;color:var(--text-200)}
.timeline-turn-summary{cursor:pointer}.timeline-turn-summary td{background:var(--bg-100);font-style:italic}.timeline-turn-summary:hover td{background:var(--bg-200)}.timeline-turn-summary .timeline-turn-toggle{min-height:28px}.timeline-turn-summary .timeline-ledger-title{color:var(--text-200);font-weight:650}.timeline-turn-summary-icon{color:var(--text-200);font:700 13px/1 var(--mono)}
.timeline-inspector{position:sticky;top:6px;z-index:4;padding:10px 11px 11px;border:var(--hair);border-left:3px solid var(--text-400);border-radius:12px;background:var(--card);box-shadow:var(--shadow-pop);overflow:hidden}
.timeline-inspector.kind-native_tool{border-left-color:var(--k-files)}
.timeline-inspector.kind-python,.timeline-inspector.kind-r{border-left-color:var(--k-code)}
.timeline-inspector.kind-dynamic_tool{border-left-color:var(--k-mcp)}
.timeline-inspector.kind-delegate{border-left-color:var(--k-delegate)}
.timeline-inspector.kind-permission{border-left-color:var(--clay)}
.timeline-inspector.kind-recovery{border-left-color:#b7791f}
.timeline-inspector.kind-finalize{border-left-color:var(--success)}
.timeline-inspector.status-failed,.timeline-inspector.status-error{border-left-color:var(--danger)}
.timeline-inspector-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-3px -4px 7px 0;padding-bottom:6px;border-bottom:var(--hair)}
.timeline-inspector-label{color:var(--text-200);font-size:10.5px;font-weight:700;letter-spacing:.045em;text-transform:uppercase}
.timeline-card{position:relative;padding:10px 11px 11px;border-left:3px solid var(--text-400)}
.timeline-card.kind-native_tool{border-left-color:var(--k-files)}
.timeline-card.kind-python,.timeline-card.kind-r{border-left-color:var(--k-code)}
.timeline-card.kind-dynamic_tool{border-left-color:var(--k-mcp)}
.timeline-card.kind-delegate{border-left-color:var(--k-delegate)}
.timeline-card.kind-permission{border-left-color:var(--clay)}
.timeline-card.kind-recovery{border-left-color:#b7791f}
.timeline-card.kind-finalize{border-left-color:var(--success)}
.timeline-card.status-failed,.timeline-card.status-error{border-left-color:var(--danger)}
.timeline-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.timeline-kind{display:inline-flex;align-items:center;gap:6px;color:var(--text-200);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.timeline-status{border-radius:999px;padding:2px 7px;background:var(--bg-200);color:var(--text-200);font-size:10px;text-transform:lowercase}
.timeline-status.running,.timeline-status.queued,.timeline-status.finalizing{background:color-mix(in srgb,var(--clay) 12%,var(--bg-000));color:var(--text-200)}
.timeline-status.failed,.timeline-status.error,.timeline-status.cancelled{background:var(--danger-bg);color:var(--danger)}
.timeline-status.completed,.timeline-status.success{background:var(--success-bg);color:var(--success-text)}
.timeline-card-title{margin:7px 0 5px;color:var(--text-000);font-size:12.5px;font-weight:550;line-height:1.38;word-break:break-word}
.timeline-meta{display:grid;grid-template-columns:70px minmax(0,1fr);gap:6px;padding-top:5px;color:var(--text-200);font-size:10.5px}
.timeline-meta-key{white-space:nowrap}.timeline-meta-value{display:flex;gap:4px;flex-wrap:wrap;min-width:0}
.timeline-pill{display:inline-flex;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:var(--hair);border-radius:999px;padding:2px 6px;background:var(--bg-100);color:var(--text-200);font:10.5px/1.25 var(--mono)}
.timeline-error{margin-top:7px;padding:7px 8px;border-radius:7px;background:var(--danger-bg);color:var(--danger);font:11px/1.4 var(--mono);white-space:pre-wrap;word-break:break-word}
.recovery-progress{height:5px;margin:7px 0;border-radius:999px;background:var(--bg-300);overflow:hidden}.recovery-progress>span{display:block;height:100%;border-radius:inherit;background:var(--clay);transition:width .2s ease}
.recovery-checkpoint{margin:6px 0;color:var(--text-400);font:10.5px/1.4 var(--mono)}
.recovery-action-list{display:flex;flex-direction:column;gap:5px;margin:8px 0}.recovery-action-row{display:grid;grid-template-columns:minmax(112px,.42fr) minmax(0,1fr);align-items:center;gap:7px}.recovery-action-row .outline-btn{justify-content:center;font-size:10.5px}.recovery-action-reason{color:var(--text-400);font-size:10.5px;line-height:1.35;word-break:break-word}
.recovery-log-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:6px;padding:5px 0;border-top:var(--hair);font-size:10.5px}.recovery-log-message{color:var(--text-300);line-height:1.4;word-break:break-word}
.workbench-controls{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:7px}.workbench-controls .outline-btn:disabled{opacity:.42}
.branch-current-summary{margin:1px 0 7px;color:var(--text-400);font:10.5px/1.4 var(--mono)}
.branch-row{border-top:var(--hair);padding-top:8px;margin-top:8px}.branch-row.current{border-left:2px solid var(--accent);padding-left:7px}
.branch-head{display:flex;align-items:center;gap:5px;min-width:0}.branch-name{font-size:11.5px;font-weight:600;color:var(--text-200);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.branch-head-id{margin-left:auto;color:var(--text-400);font:10px var(--mono)}
.checkpoint-list{display:flex;flex-direction:column;gap:4px;margin-top:6px}.checkpoint-row{display:grid;grid-template-columns:minmax(46px,.6fr) minmax(60px,1fr) auto;align-items:center;gap:5px;font-size:10.5px}.checkpoint-id{font-family:var(--mono);color:var(--text-400)}.checkpoint-reason{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-300)}
.checkpoint-actions{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.checkpoint-row .outline-btn{font-size:10px;padding:3px 6px;height:auto}.checkpoint-row .outline-btn:disabled{opacity:.35}
.revert-preview{margin-top:9px;padding:8px;border:var(--hair);border-radius:8px;background:var(--bg-100)}.revert-preview-title{font-size:11px;font-weight:650;color:var(--text-200)}.revert-diff{margin:5px 0;color:var(--text-400);font-size:10.5px;line-height:1.45}
.context-summary{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px}
.context-layer{display:flex;align-items:center;gap:5px;padding:5px 0;border-top:var(--hair);font-size:11px}
.context-layer-name{flex:1;min-width:0;color:var(--text-200);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.context-layer-tokens{color:var(--text-400);font:10px var(--mono)}
.context-history{margin-top:6px;border-top:var(--hair);padding-top:5px}
.context-history>summary{cursor:pointer;color:var(--text-300);font-size:11px}
.context-history-row{display:flex;align-items:center;gap:5px;padding:5px 0;border-top:var(--hair);font-size:10px}
.context-history-id{flex:1;min-width:0;color:var(--text-200);font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.project-research-tabs{display:flex;gap:4px;margin-bottom:10px}
.project-research-tabs .seg-btn.active{background:var(--text-100);color:var(--surface-0)}
.project-research-content{display:flex;flex-direction:column;gap:8px}
.project-research-summary{color:var(--text-300);font-size:12px}
.project-timeline-entry{display:flex;flex-direction:column;gap:3px}
.project-session-label{color:var(--text-400);font:10px var(--mono)}
.project-lineage-node{display:flex;align-items:center;gap:7px;padding:7px 9px;border:var(--hair);border-radius:7px}
.project-lineage-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.project-lineage-cell{color:var(--text-400);font:10px var(--mono)}
.project-lineage-edges{border-top:var(--hair);padding-top:7px}
.project-lineage-edges>summary{cursor:pointer;color:var(--text-300);font-size:12px}
.project-lineage-edge{padding:5px 0;border-top:var(--hair);color:var(--text-300);font:10px var(--mono);overflow-wrap:anywhere}
.security-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:5px 0;border-top:var(--hair)}.security-label{min-width:66px;color:var(--text-400);font-size:10.5px}.security-row.ok .timeline-pill{color:var(--success-text);background:var(--success-bg)}.security-row.warn .timeline-pill{color:#8a5b08;background:#fbf0d4}.security-detail{margin-top:5px;color:var(--text-400);font-size:10.5px;line-height:1.45;word-break:break-word}
/* structured delegate step card + truthful task_status chips (green ONLY for
   completed; amber for partial/blocked/stopped; red for failed/error) */
.dlg-chip{display:inline-flex;align-items:center;flex:none;font-size:10.5px;font-weight:600;border-radius:9px;padding:1px 7px;white-space:nowrap}
.dlg-chip.completed{color:var(--success-text);background:var(--success-bg)}
.dlg-chip.warning{color:#8a5b08;background:#fbf0d4}
.dlg-chip.failed{color:var(--danger);background:var(--danger-bg)}
.dlg-chip.neutral{color:var(--text-300);background:var(--bg-200,rgba(18,18,18,.04))}
.dlg-card{display:flex;flex-direction:column;gap:7px;min-width:0}
.dlg-child{display:flex;flex-direction:column;gap:5px;min-width:0}
.dlg-child.compact{border-top:var(--hair);padding-top:6px}
.dlg-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dlg-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-200);font-size:12px;font-weight:600}
.dlg-pill{display:inline-flex;align-items:center;flex:none;font-size:10.5px;color:var(--text-400);background:var(--bg-200,rgba(18,18,18,.04));border-radius:9px;padding:1px 7px;white-space:nowrap}
.dlg-frame-ref{font-family:var(--mono)}
.dlg-summary{color:var(--text-300);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.dlg-error{color:var(--danger);font-size:11.5px;line-height:1.45;word-break:break-word}
.dlg-meta{color:var(--text-400);font-size:11px}
.dlg-limits{display:flex;flex-direction:column;gap:2px}
.dlg-limit{color:var(--text-300);font-size:11px;line-height:1.45;word-break:break-word}
.delegation-summary{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:7px}
.delegation-child{margin-left:var(--delegation-indent,0px);padding:7px 8px;border-top:var(--hair);border-left:2px solid var(--k-delegate)}
.delegation-child.status-failed{border-left-color:var(--danger)}
.delegation-child.status-stopped{border-left-color:var(--text-400)}
.delegation-child.status-done{border-left-color:var(--success)}
.delegation-child-head{display:flex;align-items:center;justify-content:space-between;gap:7px}
.delegation-child-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-100);font-size:11.5px;font-weight:600}
.delegation-child-details{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
.delegation-child-message{margin-top:5px;color:var(--danger);font:10px/1.4 var(--mono);overflow-wrap:anywhere}

@media (max-width:760px){
  .workbench-layout{grid-template-columns:1fr}
  .timeline-toolbar{align-items:stretch;flex-direction:column}.timeline-search-meta{align-items:flex-start;text-align:left}
  .timeline-ledger-scroll{max-height:clamp(240px,52vh,560px)}
  .timeline-inspector{position:relative;top:auto}
  .recovery-action-row{grid-template-columns:1fr}.recovery-action-row .outline-btn{justify-self:start}
  .nb-variables-head{align-items:flex-start;flex-direction:column}.nb-variables-controls{justify-content:flex-start}.nb-variable-row{grid-template-columns:1fr}
  .local-model-row{grid-template-columns:1fr}.local-model-select{max-width:none;width:100%}
  .runtime-chip{max-width:48%}
  .nbc-actions{gap:2px}.nbc-action span{display:none}
}

/* ---- richer error framing: type pill + message + file/line accents ---- */
.nbc-error{border-radius:10px;border-color:color-mix(in srgb,var(--danger) 40%,var(--line));
  background:linear-gradient(180deg,color-mix(in srgb,var(--danger) 7%,var(--bg-000)),var(--bg-000))}
.nbc-error-head{padding:9px 11px;align-items:center}
.nbc-err-type{font:700 11px/1 var(--mono);letter-spacing:.02em;color:#fff;background:var(--danger);
  border-radius:6px;padding:3px 7px;flex:none}
.nbc-err-text{flex:1;min-width:0;color:var(--danger);font-family:var(--mono);font-size:12.5px;
  white-space:pre-wrap;word-break:break-word}
.nbc-error-tb .tb-loc{color:var(--accent)} .nbc-error-tb .tb-final{color:var(--danger);font-weight:600}
/* binary-elided placeholder */
.bin-elide{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-400);
  background:var(--bg-200);border:var(--hair);border-radius:8px;padding:5px 10px;font-family:var(--mono)}
.bin-elide .ic-svg{opacity:.7}

/* ---- misc depth polish ---- */
.tile,.art{box-shadow:var(--shadow-soft)}
.tile:hover,.art:hover{box-shadow:var(--shadow-raise)}
.perm-card,.plan-card{box-shadow:var(--shadow-soft)}
.dash-card{box-shadow:var(--shadow-soft)}

/* ---- last-message / scroll-to-bottom pill: label it like :8765 ---- */
.jump-pill{width:auto;height:32px;border-radius:999px;padding:0 12px 0 10px;gap:5px;font-size:12px;font-weight:500}
.jump-pill .jp-lbl{white-space:nowrap}

/* ============================================================
   DRAGGABLE COLUMN RESIZERS — thin grab strips straddling the
   sidebar|main and main|dock dividers. Widths persist via the
   --side-w / --dock-w CSS vars (set on :root by app.js).
   ============================================================ */
.col-resizer{position:absolute;top:0;bottom:0;width:9px;z-index:40;cursor:col-resize;touch-action:none;background:transparent}
.col-resizer-side{left:0;margin-left:-5px}     /* on #main's left edge */
.col-resizer-dock{left:0;margin-left:-5px}     /* on #rightdock's left edge */
.col-resizer::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translateX(-50%);
  background:transparent;border-radius:2px;transition:background .12s}
.col-resizer:hover::after,body.col-resizing .col-resizer.active::after{background:var(--accent-line)}
body.col-resizing{cursor:col-resize;user-select:none}
body.col-resizing *{cursor:col-resize!important}
body.sidebar-collapsed .col-resizer-side{display:none}

/* ============================================================
   IMAGE ZOOM VIEWER — width-based zoom (image physically grows,
   so annotation pin fractions + popups stay pixel-correct), pan
   via native scroll, floating zoom toolbar. Used by the dock
   viewer AND the fullscreen modal.
   ============================================================ */
.annot-wrap{position:relative;width:100%;height:100%;min-height:0;overflow:hidden;background:var(--bg-100)}
.annot-zoom{position:absolute;inset:0;overflow:auto}
.annot-zoom .annot-stage{margin:16px auto;max-width:100%}       /* z=1: CSS fits the image to the pane */
.annot-zoom.zoomed .annot-stage{max-width:none}                /* zoomed: grow past the pane → scroll to pan */
/* when zoomed, the drag-to-pan affordance takes over the cursor (annotation is
   still available on a plain click); default is the annotation crosshair */
.annot-zoom.zoomed .annot-layer{cursor:grab}
.annot-zoom.grabbing,.annot-zoom.grabbing .annot-layer{cursor:grabbing}
.zoom-bar{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:6;display:inline-flex;
  align-items:center;gap:2px;background:var(--bg-000);border:.5px solid var(--border-btn);border-radius:999px;
  box-shadow:var(--shadow-pop);padding:3px}
.zoom-bar button{display:inline-flex;align-items:center;justify-content:center;width:30px;height:28px;border:0;
  background:transparent;color:var(--text-200);border-radius:999px;cursor:pointer}
.zoom-bar button:hover{background:var(--bg-200);color:var(--text-000)}
.zoom-bar button:disabled{opacity:.4;cursor:default}
.zoom-bar .zoom-lvl{min-width:46px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;
  color:var(--text-200);font-weight:500;padding:0 2px;cursor:pointer;user-select:none}
.zoom-bar .zoom-lvl:hover{color:var(--text-000)}
.zoom-hint{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:6;font-size:11px;color:var(--text-400);
  background:var(--bg-000);border:.5px solid var(--border);border-radius:999px;padding:3px 10px;box-shadow:var(--shadow-soft);
  opacity:0;transition:opacity .2s;pointer-events:none}
.annot-wrap:hover .zoom-hint{opacity:.9}

@media (max-width:900px){
  .col-resizer{display:none}
  .zoom-bar button{width:40px;height:40px;min-width:40px;min-height:40px}
}

/* ============================================================
   THEME · SEND · A11Y · MOBILE POLISH (2026-07-09)
   Dark mode via data-theme on <html>; send button; skip-link;
   safe-area insets; skeleton placeholders; modal focus ring.
   ============================================================ */

/* ---- skip link (keyboard first stop) ---- */
.skip-link{position:absolute;left:12px;top:-48px;z-index:200;background:var(--ink);color:var(--bg-000);
  padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;text-decoration:none;
  transition:top .15s}
.skip-link:focus{top:12px;outline:2px solid var(--accent-fill);outline-offset:2px}

/* ---- dark theme tokens ---- */
html[data-theme="dark"]{
  color-scheme:dark;
  --bg:#141412; --bg-000:#1c1c19; --bg-100:#1a1a17; --bg-200:#242421; --bg-300:#2c2c28;
  --bg-1:var(--bg-000); --bg-2:var(--bg-200);
  --panel:#1c1c19; --card:#1c1c19; --hover:#242421;
  --surface-0:#1c1c19; --surface-2:var(--bg-200);
  --ink:#f0efe9; --fg:var(--ink); --fg-2:var(--text-400);
  --text-000:#f0efe9; --text-100:#e8e6dc; --text-200:#c8c6bc; --text-300:#a8a69c; --text-400:#8e8c82;
  --muted:#8e8c82; --faint:#8e8c82;
  --clay:hsl(16 62% 58%); --clay-em:hsl(16 58% 52%);
  --accent:#6ba3e8; --accent-fill:#4a8fd9; --accent-line:#3a6fa8;
  --success:#3db83d; --danger:#e07070; --danger-bg:#3a1f1f; --success-bg:#1c3320; --success-text:#7ddea0;
  --warn:#d4a017;
  --line:rgba(255,255,255,.08); --line2:rgba(255,255,255,.12); --border:rgba(255,255,255,.09);
  --border-card:rgba(255,255,255,.12); --border-btn:rgba(255,255,255,.22);
  --shadow-card:0 0 0 1px hsl(0 0% 100%/.05),0 4px 24px hsl(0 0% 0%/.35);
  --shadow-pop:0 8px 28px hsl(0 0% 0%/.45),0 1px 3px hsl(0 0% 0%/.3);
  --shadow-soft:0 0 0 .5px hsl(0 0% 100%/.05),0 1px 2px hsl(0 0% 0%/.25),0 2px 8px hsl(0 0% 0%/.2);
  --shadow-raise:0 0 0 .5px hsl(0 0% 100%/.07),0 2px 6px hsl(0 0% 0%/.3),0 8px 28px hsl(0 0% 0%/.4);
  --k-search:#6ba3e8; --k-fetch:#4db8d4; --k-plan:#9b8ef5; --k-env:#d4a84b;
  --k-skill:#2dd4bf; --k-bash:#94a3b8; --k-code:#a78bfa; --k-write:#4ade80;
  --k-read:#94a3b8; --k-edit:#fb923c; --k-files:#94a3b8; --k-artifact:#f0a070;
  --k-delegate:#c084fc; --k-mcp:#2dd4bf;
}
html[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
html[data-theme="dark"] .solid-btn{background:var(--ink);color:var(--bg)}
html[data-theme="dark"] .approve-btn{color:#fff}
html[data-theme="dark"] .nb-icon.on{color:#fff}
html[data-theme="dark"] .md .tok-kw{color:#c678dd}
html[data-theme="dark"] .md .tok-str{color:#98c379}
html[data-theme="dark"] .md .tok-com{color:#7f848e;font-style:italic}
html[data-theme="dark"] .md .tok-num{color:#d19a66}
html[data-theme="dark"] .md .tok-fn{color:#61afef}
html[data-theme="dark"] .md :not(pre)>code{background:rgba(255,255,255,.06);border-color:var(--border)}
html[data-theme="dark"] .md .codeblock{background:var(--bg-200);border-color:var(--border)}
html[data-theme="dark"] .md .cb-head{background:rgba(255,255,255,.03)}
html[data-theme="dark"] .md a{border-bottom-color:rgba(107,163,232,.35)}
html[data-theme="dark"] .msg.user .bubble{background:var(--bg-200)}
html[data-theme="dark"] .activity{background:rgba(255,255,255,.03)}
html[data-theme="dark"] .activity .a-head:hover{background:rgba(255,255,255,.04)}
html[data-theme="dark"] .toggle{background:rgba(255,255,255,.18)}
html[data-theme="dark"] .toggle.on{background:var(--clay)}
html[data-theme="dark"] .modal{background:rgba(0,0,0,.55)}
html[data-theme="dark"] .mobile-scrim{background:rgba(0,0,0,.55)}
html[data-theme="dark"] .lang-btn.active,html[data-theme="dark"] .seg-btn.active{background:var(--bg-300);box-shadow:0 1px 2px rgba(0,0,0,.35)}
html[data-theme="dark"] .thumb .molmini,html[data-theme="dark"] .a-thumb .molmini{background:radial-gradient(circle at 50% 42%,var(--bg-000),var(--bg-300))}
html[data-theme="dark"] .thumb .txt,html[data-theme="dark"] .a-thumb .txt{-webkit-mask-image:linear-gradient(180deg,#fff 62%,transparent);mask-image:linear-gradient(180deg,#fff 62%,transparent)}
html[data-theme="dark"] .nbc-err-type{color:#fff}
html[data-theme="dark"] .run-card:hover{box-shadow:var(--shadow-raise)}
html[data-theme="dark"] .tile:hover,html[data-theme="dark"] .art:hover{box-shadow:var(--shadow-raise)}
/* smooth theme flips without janking reduced-motion users */
html:not([data-theme-instant]) body,html:not([data-theme-instant]) .dashboard,html:not([data-theme-instant]) .workspace,
html:not([data-theme-instant]) .modal-box,html:not([data-theme-instant]) .nb-card,html:not([data-theme-instant]) .dash-card{
  transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease}

/* ---- skeleton loaders (dashboard / lists) ---- */
.skeleton{position:relative;overflow:hidden;background:var(--bg-200);border-radius:8px;color:transparent!important;pointer-events:none;user-select:none}
.skeleton::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--bg-000) 55%,transparent),transparent);
  animation:skel 1.2s ease-in-out infinite}
@keyframes skel{0%{transform:translateX(-60%)}100%{transform:translateX(60%)}}
.d-row.skeleton-row{cursor:default;pointer-events:none}
.d-row.skeleton-row .d-name,.d-row.skeleton-row .d-sub,.d-row.skeleton-row .d-meta{height:12px;border-radius:6px;background:var(--bg-300);color:transparent}
.d-row.skeleton-row .d-name{width:42%}
.d-row.skeleton-row .d-sub{width:68%;margin-top:6px}
.d-row.skeleton-row .d-meta{width:48px}

/* ---- modal a11y polish ---- */
.modal.hidden{display:none!important}
.modal:not(.hidden){animation:modalIn .14s ease}
@keyframes modalIn{from{opacity:0}to{opacity:1}}
.modal-box{animation:modalBoxIn .16s ease}
@keyframes modalBoxIn{from{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){
  .modal:not(.hidden),.modal-box{animation:none}
  .skeleton::after{animation:none}
  html:not([data-theme-instant]) body,html:not([data-theme-instant]) .dashboard,html:not([data-theme-instant]) .workspace,
  html:not([data-theme-instant]) .modal-box,html:not([data-theme-instant]) .nb-card,html:not([data-theme-instant]) .dash-card{transition:none}
}

/* ---- mobile safe-area + denser chrome ---- */
@supports (padding: max(0px)) {
  .dashboard{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));
    padding-bottom:max(48px,env(safe-area-inset-bottom))}
  .composer-wrap{padding-bottom:max(14px,env(safe-area-inset-bottom))}
  #sidebar{padding-bottom:max(12px,env(safe-area-inset-bottom))}
  .side-foot{padding-bottom:max(0px,env(safe-area-inset-bottom))}
  .rightdock .dock-body{padding-bottom:max(0px,env(safe-area-inset-bottom))}
  .modal{padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right))
    max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
}
@media (max-width:900px){
  .nb-icon{width:40px;height:40px;min-width:40px;min-height:40px}
  .composer-wrap{padding-bottom:max(12px,env(safe-area-inset-bottom))}
  .workspace,#main{height:100dvh}
  #sidebar{height:100dvh}
  /* prevent iOS zoom on focus: inputs >= 16px */
  #composer,input,textarea,select{font-size:16px}
  .nb-model select{font-size:15px;max-width:120px}
}

/* ---- content-visibility for long transcripts (perf) ---- */
.msg.assistant > .activity,
.msg.assistant > .step,
.msg.assistant > .plan-card,
.msg.assistant > .perm-card{content-visibility:auto;contain-intrinsic-size:auto 72px}

/* ---- sticky composer elevation when scrolled ---- */
.composer-wrap{position:relative;z-index:5;background:linear-gradient(180deg,transparent,var(--bg) 28%)}
html[data-theme="dark"] .composer-wrap{background:linear-gradient(180deg,transparent,var(--bg) 28%)}

/* ---- theme toggle active affordance ---- */
#dash-theme,#ws-theme{position:relative}
html[data-theme="dark"] #dash-theme,html[data-theme="dark"] #ws-theme{color:var(--accent-fill)}

/* Unresolved @references. Deliberately not styled as an error: the turn ran,
   and referencing four files with one typo should answer about the other
   three. It is a note, and a note the old code never showed at all. */
/* Chips under a restored user message: the artifact references it was sent
   with, drawn from the stored record rather than re-parsed out of the prose. */
.msg-refs{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;justify-content:flex-end}
.msg-ref-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border:1px solid var(--border);border-radius:9px;background:var(--bg-2);color:var(--text-400);font-size:11px;max-width:100%}
.msg-ref-chip.clickable{cursor:pointer}
.msg-ref-chip.clickable:hover{color:var(--text-200)}
/* The composer's copy of the message chips, drawn before the send. Same
   element so the two cannot drift apart visually; the row is what is new. */
.composer-refs{display:flex;flex-wrap:wrap;gap:6px;padding:6px 12px 0}
.composer-refs.hidden{display:none}
.msg-ref-chip.unresolved{border-color:var(--warn,#b8860b);color:var(--warn,#b8860b)}
.msg-ref-chip.elsewhere{border-style:dashed}
.ref-problems{margin:8px 20px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-2)}
.ref-problems-head{font-size:12px;color:var(--text-400);margin-bottom:6px}
.ref-problem{display:flex;gap:8px;align-items:baseline;font-size:12px;line-height:1.5}
.ref-problem-ref{color:var(--text-300);white-space:nowrap}
.ref-problem-msg{color:var(--text-400)}

/* Read-only retrieval provenance under an artifact version. */
.ver-src{margin:4px 0 10px 12px;padding:8px 10px;border-left:2px solid var(--border);font-size:12px}
.ver-src-head{color:var(--text-300);margin-bottom:5px}
.ver-src-row{display:flex;gap:8px;line-height:1.6}
.ver-src-k{color:var(--text-400);min-width:130px;flex:none}
.ver-src-v{color:var(--text-200);word-break:break-all}
.ver-src-note{color:var(--text-400);margin-top:5px;font-style:italic}

/* ---- queued follow-ups ----------------------------------------------------
   The composer stays usable while a turn runs, so what is waiting behind that
   turn has to be visible. Sits between the composer card and the hint line, so
   it reads as "what your next Enter joins" rather than as transcript. */
.queue-strip{margin:6px auto 0;width:min(var(--col),calc(100% - 48px));border:.5px solid var(--border-btn);border-radius:var(--radius-card);background:var(--bg-000);padding:6px 8px}
.queue-head{font-size:11px;color:var(--text-400);margin:0 2px 4px}
.queue-row{display:flex;align-items:baseline;gap:8px;padding:3px 2px;font-size:12px;min-width:0}
.queue-pos{color:var(--text-400);flex:none;font-variant-numeric:tabular-nums}
.queue-preview{color:var(--text-200);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.queue-meta{color:var(--text-400);font-size:11px;flex:none;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.queue-cancel{flex:none}
/* A message typed while a turn was running: shown in the transcript in the
   order it will run, but visibly not yet the live one. */
.msg.user.queued .bubble{opacity:.72}
/* A message that was queued and then dropped stays legible on purpose: the
   user can re-send it, which they cannot do with a bubble that vanished. */
.msg.user.cancelled .bubble{opacity:.5;text-decoration:line-through}
#composer.queueing::placeholder{font-style:italic}

/* The stored identity of a failed turn, inline on the message it belongs to.
   Muted: it is a support id and a warning, not part of the conversation. */
.msg-failure-meta { margin-top: 6px; font-size: 12px; opacity: .72; line-height: 1.5; }
.msg-failure-meta:empty { display: none; }
.review-badge { margin-top: 6px; display: inline-block; font-size: 12px; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border, #ccc); }
.review-badge-candidate { opacity: .8; }
.review-badge-verified { border-color: #2e7d32; color: #2e7d32; }
.review-badge-completed_with_issues, .review-badge-review_unavailable { border-color: #ef6c00; color: #ef6c00; }

/* ---- Team mode (M1-9): user chip + team files panel ---- */
.team-files-crumbs{padding:10px 18px;border-bottom:.5px solid var(--border);font-size:13px;color:var(--text-300)}
.team-files-crumbs a{color:var(--text-100);text-decoration:none;font-weight:600}
.team-files-list{padding:6px 0}
.team-files-row{display:flex;align-items:center;justify-content:space-between;padding:7px 18px;font-size:14px;border-bottom:.5px solid var(--border)}
.team-files-row a{color:var(--text-100);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-files-row a:hover{text-decoration:underline}
.team-files-size{color:var(--text-300);font-size:12px;margin-left:12px;flex:none}

/* ---- Team admin panel (M2-7) ---- */
.team-admin-body{padding:6px 18px 18px}
.team-admin-h{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-300);margin:18px 0 6px}
.team-admin-table{border-collapse:collapse;width:100%;font-size:13px}
.team-admin-table th{font-weight:600;text-align:left;border-bottom:.5px solid var(--border);padding:5px 8px}
.team-admin-table td{border-bottom:.5px solid var(--border);padding:5px 8px;font-family:var(--mono);font-size:12px}
.team-admin-empty{color:var(--text-300);font-size:12px;padding:4px 8px}

/* ---- where a session runs (M3b-6) ---- */
.compute-badge { display:inline-flex; align-items:center; gap:6px; height:26px; padding:0 9px;
  border-radius:999px; border:1px solid var(--line); background:var(--panel); color:var(--fg-2);
  font-size:12px; cursor:pointer; white-space:nowrap; max-width:220px; }
.compute-badge:hover { border-color:var(--accent); color:var(--fg); }
.compute-badge .cb-label { overflow:hidden; text-overflow:ellipsis; }
/* Waiting reads as in-progress, ready reads as settled. Deliberately not red:
   queueing for a node is the system working, not a fault. */
.compute-badge.waiting { color:var(--warn, #b8860b); border-style:dashed; }
.compute-badge.ready { color:var(--fg-2); }

.compute-lost { display:flex; align-items:flex-start; gap:10px; margin:10px 16px 0;
  padding:11px 13px; border-radius:10px; border:1px solid var(--danger);
  background:color-mix(in srgb, var(--danger) 8%, transparent); font-size:13px; }
.compute-lost .cl-text { flex:1; min-width:0; }
.compute-lost .cl-body { margin-top:3px; color:var(--fg-2); line-height:1.5; }
.compute-lost .cl-dismiss { flex:none; align-self:center; height:28px; padding:0 12px;
  border-radius:8px; border:1px solid var(--line); background:var(--panel); cursor:pointer; }

.run-location { display:flex; flex-direction:column; gap:8px; padding:4px 2px; }
.run-location .rl-option { text-align:left; padding:11px 13px; border-radius:10px;
  border:1px solid var(--line); background:var(--panel); cursor:pointer; }
.run-location .rl-option:hover { border-color:var(--accent); }
.run-location .rl-option.current { border-color:var(--accent);
  background:color-mix(in srgb, var(--accent) 8%, transparent); }
.run-location .rl-name { font-weight:600; }
.run-location .rl-hint { margin-top:3px; font-size:12px; color:var(--fg-2); }
.run-location .rl-empty { padding:10px 2px; font-size:13px; color:var(--fg-2); }
.run-location .rl-release { margin-top:4px; height:32px; border-radius:8px;
  border:1px solid var(--line); background:var(--panel); color:var(--danger); cursor:pointer; }
