@sergeychuvayev/claude-fleet 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/styles.css CHANGED
@@ -1,562 +1,2594 @@
1
- :root{--bg:#111313;--panel:#181b1b;--raised:#202424;--line:#2d3332;--text:#edf0e9;--muted:#a0aaa5;--faint:#89958e;--accent:#deb68a;--busy:#9dccac;--idle:#a6bbd6;--stale:#e5bb78;--dead:#bf9696;color-scheme:dark;font:14px "Avenir Next","Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button:disabled{opacity:.5;cursor:wait}[hidden]{display:none!important}.topbar{height:76px;border-bottom:1px solid var(--line);padding:0 3.6%;display:flex;align-items:center;justify-content:space-between;background:#151818}.brand{font-size:28px;letter-spacing:-1px;font-weight:700;display:flex;align-items:center;gap:12px}.brandmark{color:var(--accent);font-size:36px;font-weight:400}.brand-sub{font-size:10px;letter-spacing:1.8px;color:var(--muted);font-weight:500;margin-left:12px}.connection{display:flex;align-items:center;gap:9px;font-size:12px}.local{border-left:1px solid var(--line);margin-left:12px;padding-left:20px;font-size:10px;letter-spacing:1px;color:var(--muted)}main{max-width:1700px;margin:auto;padding:38px 3.6% 0}.intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.eyebrow{color:var(--accent);font-size:10px;letter-spacing:2px;font-weight:650}h1{font-size:clamp(26px,3vw,38px);letter-spacing:-1.3px;font-weight:550;margin:10px 0 8px}p{color:var(--muted);line-height:1.7;margin:0}.refresh-info{display:flex;align-items:center;gap:16px;font-size:11px;color:var(--muted)}.button{border:1px solid var(--line);background:var(--raised);padding:9px 13px;border-radius:6px;font-size:12px}.button:hover{background:#303634}.overview{display:grid;grid-template-columns:1.1fr 1fr;border:1px solid var(--line);border-radius:9px;background:var(--panel);margin-bottom:30px}.fleet-health,.pressure{padding:22px 26px}.pressure{border-left:1px solid var(--line)}.section-label{font-weight:600;display:flex;justify-content:space-between;gap:10px;font-size:12px}.section-label>span{font-weight:400;color:var(--faint);font-size:11px}.status-stats{display:flex;justify-content:space-between;gap:15px;margin:20px 0}.stat{border:0;padding:0;background:none;text-align:left}.stat strong{display:block;font-size:28px;font-weight:500;font-variant-numeric:tabular-nums;margin-bottom:3px}.stat span{font-size:11px;color:var(--muted)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:6px}.busy{color:var(--busy)}.idle{color:var(--idle)}.stale{color:var(--stale)}.dead{color:var(--dead)}.distribution{height:5px;display:flex;gap:4px;border-radius:3px;overflow:hidden;background:var(--raised)}.distribution i{background:currentColor;min-width:3px}.pressure-chart{display:flex;align-items:end;gap:4px;height:73px;margin-top:14px;border-bottom:1px solid var(--line);position:relative;background:linear-gradient(to top,transparent 74%,#ffffff08 74%,#ffffff08 76%,transparent 76%)}.pressure-chart .column{flex:1;height:100%;display:flex;align-items:end;max-width:42px;border:0;padding:0;background:transparent}.column i{display:block;width:100%;background:#8fa997;border-radius:2px 2px 0 0;min-height:2px}.column:hover i{filter:brightness(1.25)}.chart-caption{display:flex;justify-content:space-between;font-size:10px;color:var(--faint);margin-top:8px}.workspace{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(340px,1fr);border:1px solid var(--line);border-radius:9px;overflow:hidden;min-height:510px}.sessions-pane{min-width:0;background:#151818}.section-heading{padding:21px 23px 16px;display:flex;align-items:center;justify-content:space-between}h2{font-size:15px;margin:0;font-weight:600}.section-heading h2 span{font-size:11px;background:var(--raised);border:1px solid var(--line);padding:2px 6px;border-radius:4px;margin-left:7px;color:var(--muted)}.subtle{color:var(--faint);font-size:10px}.toolbar{display:flex;gap:10px;padding:0 23px}.search{display:flex;align-items:center;gap:9px;flex:1;min-width:0;border:1px solid var(--line);border-radius:6px;padding:9px 11px;background:var(--bg);color:var(--muted)}.search input{width:100%;min-width:0;border:0;background:none;color:var(--text);font-size:12px;outline:none}.search:focus-within{border-color:var(--accent)}input::placeholder{color:var(--faint)}kbd{border:1px solid var(--line);padding:0 4px;border-radius:3px;font-size:10px}select{max-width:145px;height:100%;background:var(--panel);border:1px solid var(--line);border-radius:6px;color:var(--muted);padding:0 9px;font-size:11px}.filters{display:flex;gap:5px;padding:17px 23px 15px;flex-wrap:wrap}.filter{border:1px solid transparent;background:transparent;color:var(--muted);border-radius:5px;padding:6px 9px;font-size:11px}.filter[aria-pressed=true]{color:var(--text);border-color:var(--line);background:var(--raised)}.filter span{opacity:.65;margin-left:6px}.filter:hover{color:var(--text)}.list-head{display:flex;justify-content:space-between;padding:10px 23px;border-block:1px solid var(--line);color:var(--faint);font-size:9px;letter-spacing:1px}.session-list{max-height:650px;overflow:auto;scrollbar-color:var(--line) transparent}.session{display:grid;grid-template-columns:minmax(0,1fr) 83px;gap:20px;width:100%;text-align:left;border:0;border-bottom:1px solid #272c2b;background:transparent;padding:19px 23px;position:relative}.session:hover{background:#1c2120}.session[aria-pressed=true]{background:#232b27;box-shadow:inset 2px 0 var(--busy)}.session-top{display:flex;gap:9px;align-items:center;margin-bottom:8px}.session-name{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{font-size:9px;white-space:nowrap;background:color-mix(in srgb,currentColor 8%,transparent);padding:3px 6px;border-radius:4px}.session-title{font-size:13px;font-weight:550;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin-bottom:8px}.session-meta{display:flex;gap:9px;color:var(--faint);font-size:10px;min-width:0}.branch{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-context{text-align:right;align-self:center;font-size:12px;font-variant-numeric:tabular-nums}.mini-bar{display:block;height:3px;background:var(--line);margin:8px 0 7px;border-radius:2px;overflow:hidden}.mini-bar i{display:block;background:var(--busy);height:100%}.session-context small{color:var(--faint);font-size:10px}.detail{border-left:1px solid var(--line);background:var(--panel);padding:25px;min-width:0}.detail-empty{padding:85px 20px;text-align:center}.detail-empty p{font-size:12px;margin-top:10px}.empty-symbol{display:block;font-size:36px;color:var(--faint);margin-bottom:20px}.detail-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.detail h2{font-size:21px;line-height:1.4;letter-spacing:-.4px;overflow-wrap:anywhere}.detail-name{color:var(--muted);font-size:11px;margin:10px 0 23px}.detail-section{border-top:1px solid var(--line);padding-top:18px;margin-top:20px}.detail-section h3{font-size:10px;text-transform:uppercase;letter-spacing:1.2px;font-weight:500;color:var(--muted);margin:0 0 12px;display:flex;justify-content:space-between;gap:10px}.detail-section h3 span{font-size:10px;letter-spacing:0;text-transform:none;color:var(--faint)}.response{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;font-size:12px;max-height:300px;overflow:auto;color:#cbd3cd}.response.missing{color:var(--faint);font-style:italic}.links{display:flex;gap:8px;flex-wrap:wrap}.work-link{padding:7px 10px;border:1px solid var(--line);border-radius:5px;font-size:11px;color:var(--accent)}.work-link:hover{border-color:var(--accent)}.note{font-size:11px;color:var(--faint);line-height:1.6}.facts{display:grid;grid-template-columns:80px minmax(0,1fr);gap:10px;font-size:11px}.facts dt{color:var(--faint)}.facts dd{margin:0;overflow-wrap:anywhere;color:var(--muted)}.context-label{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}.detail .mini-bar{display:block;height:5px;margin:11px 0}.detail-actions{margin-top:23px;display:flex;justify-content:space-between;align-items:center}.resume{background:var(--accent);color:#201b16;border:0;font-weight:600}.resume:hover{background:#e9c49e}.empty{padding:65px 25px;text-align:center;color:var(--muted);font-size:12px;line-height:1.8}.error{border:1px solid #6b5032;background:#292217;padding:12px 16px;margin-bottom:20px;border-radius:6px;color:var(--stale);font-size:12px}footer{display:flex;justify-content:space-between;gap:20px;padding:23px 0;color:var(--faint);font-size:10px}.tiny-dot{display:inline-block;width:5px;height:5px;background:var(--busy);border-radius:50%;margin-right:6px}.footer-divider{margin:0 8px;color:var(--line)}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);border-radius:6px;padding:12px 20px;box-shadow:0 8px 30px #0005;font-size:12px;z-index:3}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.warn{color:var(--stale)}.hot{color:#e69a8e}.mini-bar i.warn,.column i.warn{background:var(--stale)}.mini-bar i.hot,.column i.hot{background:#e69a8e}@media(max-width:1000px){.brand-sub,.local{display:none}.workspace{grid-template-columns:minmax(0,1fr) minmax(300px,.9fr)}.toolbar{flex-wrap:wrap}.sort-label{height:34px}.refresh-info{flex-direction:column;align-items:end}.session{gap:10px;padding-inline:16px}.detail{padding:20px}}@media(max-width:720px){main{padding:25px 16px 0}.topbar{padding:0 20px;height:65px}.intro{align-items:start;gap:10px}.intro p{font-size:12px;max-width:260px}.refresh-info #updated{display:none}.overview{grid-template-columns:1fr}.pressure{border-left:0;border-top:1px solid var(--line)}.fleet-health,.pressure{padding:20px}.workspace{grid-template-columns:1fr}.detail{border-left:0;border-top:1px solid var(--line)}.session-list{max-height:490px}.section-heading,.toolbar{padding-inline:16px}.filters{padding-inline:13px}.brand{font-size:24px}footer{flex-direction:column;gap:8px}.session-title{font-size:12px}.connection{font-size:10px}h1{font-size:27px}.button{white-space:nowrap}}@media(prefers-reduced-motion:no-preference){.session,.button,.work-link{transition:background .15s,border-color .15s}}
2
- /* Managed conversations */
3
- .launch-panel{border:1px solid #485045;background:var(--panel);border-radius:9px;margin-bottom:28px}.launch-panel .section-heading{padding:23px 26px}.launch-panel h2{font-size:20px;margin-top:9px}.launch-panel form{padding:0 26px 24px}.launch-fields{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;margin-bottom:18px}.launch-panel label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--muted)}.launch-panel input,.launch-panel textarea,.composer textarea,.other-answer input{border:1px solid var(--line);border-radius:6px;padding:12px;background:var(--bg);color:var(--text);width:100%;font:inherit;resize:vertical}.launch-panel input:read-only{color:var(--faint)}.launch-panel textarea,.composer textarea{min-height:95px;font-size:13px;line-height:1.6}.launch-footer{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-top:16px}.launch-footer p{max-width:550px}.form-error{font-size:12px;line-height:1.6;color:#e6aa9c;overflow-wrap:anywhere;margin:12px 0 0}.refresh-info{flex-wrap:wrap;justify-content:end}.conversation-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:26px 0 16px;padding-top:22px;border-top:1px solid var(--line)}.conversation-header h3{font-size:13px;margin:0}.conversation{max-height:520px;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--line) transparent;padding-right:8px}.chat-message{padding:17px 0;border-bottom:1px solid var(--line)}.chat-message:first-child{padding-top:0}.chat-message.user{color:var(--accent)}.chat-label{display:flex;align-items:center;gap:10px;font-size:9px;letter-spacing:1px;margin-bottom:10px;color:var(--faint)}.chat-label time{letter-spacing:0;font-size:10px}.chat-message.user .chat-label{color:var(--accent)}.chat-text{font-size:12px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.chat-message.assistant .chat-text{color:#d3dad4}.composer{margin-top:20px}.composer textarea:focus{outline:1px solid var(--accent);outline-offset:0}.composer-footer{display:flex;gap:8px;align-items:center;justify-content:end;margin-top:9px}.composer-footer .note{margin-right:auto;font-size:10px;max-width:240px}.stop{color:var(--stale)}.external-note{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.external-note strong{font-size:12px;color:var(--muted)}.external-note p{font-size:12px;margin:8px 0 14px}.approval{background:#29271e;border:1px solid #61563c;border-radius:7px;padding:17px;margin-top:20px}.approval .eyebrow{color:var(--stale);font-size:9px}.approval h4{font-size:13px;font-weight:500;margin:12px 0;overflow-wrap:anywhere}.tool-input{white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;overflow:auto;font:11px/1.7 ui-monospace,monospace;background:#181a17;padding:12px;border-radius:5px}.approval-actions{display:flex;justify-content:end;gap:8px;margin-top:15px}.approval fieldset{border:0;padding:0;margin:18px 0}.approval legend{font-size:13px;line-height:1.6;margin-bottom:10px}.answer-option{display:flex;align-items:start;gap:8px;font-size:12px;padding:8px 0}.answer-option input{accent-color:var(--accent);margin-top:3px}.answer-option small{display:block;font-size:11px;color:var(--muted);line-height:1.6;margin-top:3px}.other-answer{display:block;font-size:11px;color:var(--muted);margin-top:8px}.other-answer input{margin-top:6px}.detail:has(#composer){display:flex;flex-direction:column}.detail:has(#composer) #control-panel{order:-1}.detail:has(#composer) #detail-content{margin-top:25px;padding-top:22px;border-top:1px solid var(--line)}.detail:has(#composer) .conversation-header{margin-top:0;padding-top:0;border:0}@media(max-width:720px){.launch-fields{grid-template-columns:1fr}.launch-footer{flex-direction:column;align-items:stretch;gap:14px}.launch-panel .section-heading{padding:20px}.launch-panel form{padding:0 20px 20px}.refresh-info{gap:8px}.intro .refresh-info .button{padding:8px 9px;font-size:11px}.conversation{max-height:460px}.composer-footer{flex-wrap:wrap}.composer-footer .note{max-width:170px}}
1
+ :root {
2
+ /* ── The terminal palette ───────────────────────────────────────────────────
3
+ /theme.css is generated from the operator's Warp theme and loads first. Each
4
+ alias repeats the default the server itself falls back to, so a theme.css that
5
+ never arrives degrades to the built-in palette instead of leaving every colour
6
+ an invalid value and the app unpainted. Nothing below should reference --w-*
7
+ directly: that name cannot carry a fallback, because this file loads after it. */
8
+ --term-bg:var(--w-bg,#0c1014);
9
+ --term-fg:var(--w-fg,#99d1ce);
10
+ --term-accent:var(--w-accent,#2aa889);
11
+ --term-red:var(--w-red,#c23127);
12
+ --term-green:var(--w-green,#2aa889);
13
+ --term-yellow:var(--w-yellow,#edb443);
14
+ --term-blue:var(--w-blue,#195466);
15
+ --term-magenta:var(--w-magenta,#4e5166);
16
+ --term-cyan:var(--w-cyan,#33859e);
4
17
 
5
- /* ── Warp console ─────────────────────────────────────────────────────────────
6
- Everything below derives from /theme.css, which the server generates from the
7
- local Warp theme. Surfaces and muted text are mixed from the terminal's own
8
- background and foreground so any Warp theme produces a coherent dashboard. */
9
- :root{--bg:var(--w-bg);--panel:color-mix(in oklab,var(--w-bg) 94%,var(--w-fg));--raised:color-mix(in oklab,var(--w-bg) 89%,var(--w-fg));--line:color-mix(in oklab,var(--w-bg) 80%,var(--w-fg));--text:color-mix(in oklab,var(--w-fg) 92%,white);--muted:color-mix(in oklab,var(--w-fg) 68%,var(--w-bg));--faint:color-mix(in oklab,var(--w-fg) 48%,var(--w-bg));--accent:var(--w-accent);--busy:var(--w-green);--idle:color-mix(in oklab,var(--w-cyan) 70%,var(--w-fg));--stale:var(--w-yellow);--dead:color-mix(in oklab,var(--w-red) 72%,var(--w-fg));--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;--code:var(--w-font-size,13px)}
10
- .topbar{background:color-mix(in oklab,var(--w-bg) 96%,var(--w-fg))}
18
+ /* ── Surfaces and text ──────────────────────────────────────────────────────
19
+ Mixed from the terminal's own background and foreground, so any Warp theme
20
+ yields a coherent dashboard rather than a palette fighting the console. */
21
+ --bg:var(--term-bg);
22
+ --panel:color-mix(in oklab,var(--term-bg) 94%,var(--term-fg));
23
+ --raised:color-mix(in oklab,var(--term-bg) 89%,var(--term-fg));
24
+ --line:color-mix(in oklab,var(--term-bg) 80%,var(--term-fg));
25
+ --text:color-mix(in oklab,var(--term-fg) 92%,white);
26
+ --muted:color-mix(in oklab,var(--term-fg) 68%,var(--term-bg));
27
+ --faint:color-mix(in oklab,var(--term-fg) 48%,var(--term-bg));
28
+ /* One step above the page, for the list pane and the bar above it. */
29
+ --pane:color-mix(in oklab,var(--term-bg) 96%,var(--term-fg));
30
+ /* The row states. A pointer lifts a row off the pane; the current row is washed
31
+ with the working colour, which is also what its accent bar is made of. */
32
+ --hover:color-mix(in oklab,var(--term-bg) 91%,var(--term-fg));
33
+ --hover-strong:color-mix(in oklab,var(--term-bg) 84%,var(--term-fg));
34
+ --selected:color-mix(in oklab,var(--term-bg) 88%,var(--term-green));
35
+ --divider:color-mix(in oklab,var(--term-bg) 84%,var(--term-fg));
11
36
 
12
- /* Console shell */
13
- .conversation{max-height:min(62vh,680px);background:var(--w-bg);border:1px solid var(--line);border-radius:8px;padding:10px;font-family:var(--mono);font-feature-settings:"liga" 1,"calt" 1}
14
- .conversation .note{font-family:inherit;padding:14px}
15
- #agent-state{font-family:var(--mono);font-size:11px}
37
+ /* ── Status ─────────────────────────────────────────────────────────────────
38
+ One colour per agent state, used by badges, dots and context bars alike. */
39
+ --accent:var(--term-accent);
40
+ --busy:var(--term-green);
41
+ --idle:color-mix(in oklab,var(--term-cyan) 70%,var(--term-fg));
42
+ --stale:var(--term-yellow);
43
+ --dead:color-mix(in oklab,var(--term-red) 72%,var(--term-fg));
44
+ /* Context pressure, one step hotter than an offline agent. */
45
+ --hot:color-mix(in oklab,var(--term-red) 62%,var(--term-fg));
46
+ /* A surface tinted by a status, for the cards that carry one. */
47
+ --warn-surface:color-mix(in oklab,var(--term-bg) 88%,var(--term-yellow));
48
+ --warn-line:color-mix(in oklab,var(--term-yellow) 42%,var(--term-bg));
16
49
 
17
- /* Blocks */
18
- .block{position:relative;background:var(--panel);border:1px solid var(--line);border-left:2px solid var(--line);border-radius:6px;margin-bottom:8px;overflow:hidden}
19
- .block:last-child{margin-bottom:0}
20
- .block[data-role="user"]{border-left-color:var(--w-accent);background:color-mix(in oklab,var(--w-bg) 90%,var(--w-accent))}
21
- .block[data-role="assistant"]{border-left-color:color-mix(in oklab,var(--w-cyan) 70%,var(--w-bg))}
22
- .block[data-role="tool"]{border-left-color:color-mix(in oklab,var(--w-fg) 34%,var(--w-bg))}
23
- .block[data-status="running"]{border-left-color:var(--w-yellow)}
24
- .block[data-status="error"]{border-left-color:var(--w-red)}
25
- .block-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:9px;padding:7px 10px;background:color-mix(in oklab,var(--panel) 88%,var(--w-bg));border-bottom:1px solid var(--line);backdrop-filter:blur(6px);font-size:11px;line-height:1.4}
26
- .block-icon{color:var(--w-accent);width:13px;text-align:center;flex:none}
27
- .block[data-role="tool"] .block-icon{color:color-mix(in oklab,var(--w-cyan) 75%,var(--w-fg))}
28
- .block-tool{color:var(--text);font-weight:600;letter-spacing:.4px;flex:none}
29
- .block[data-role="user"] .block-tool,.block[data-role="user"] .block-icon{color:var(--w-accent)}
30
- .block-target{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1 1 auto}
31
- .block-meta{color:var(--faint);font-size:10px;margin-left:auto;flex:none;font-variant-numeric:tabular-nums}
32
- .block-target+.block-meta{margin-left:0}
33
- .block-state{font-size:9px;letter-spacing:.8px;text-transform:uppercase;flex:none}
34
- .block-state:empty{display:none}
35
- .block-state{background:none;border:0;padding:0;margin:0;border-radius:0}
36
- .block-state.is-running{color:var(--w-yellow)}
37
- .block-state.is-failed{color:color-mix(in oklab,var(--w-red) 70%,var(--w-fg))}
38
- .block-state.is-interrupted{color:var(--faint)}
39
- .block-actions{display:flex;gap:2px;flex:none;opacity:0;transition:opacity .12s ease}
40
- .block:hover .block-actions,.block:focus-within .block-actions{opacity:1}
41
- @media (hover:none){.block-actions{opacity:1}}
42
- .block-button{background:none;border:0;padding:2px 5px;border-radius:4px;color:var(--faint);font-size:12px;line-height:1}
43
- .block-button:hover{color:var(--text);background:var(--raised)}
44
- .block-body{padding:2px 0}
45
- .block.collapsed .block-body{display:none}
46
- .block.collapsed .block-head{border-bottom:0}
47
- .block.collapsed [data-collapse]{transform:rotate(-90deg)}
50
+ /* ── Type ───────────────────────────────────────────────────────────────────
51
+ The UI face carries the chrome; the mono face carries anything the agent
52
+ produced, at the terminal's own size. */
53
+ --ui:14px "Avenir Next","Segoe UI",sans-serif;
54
+ --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
55
+ --code:var(--w-font-size,13px);
56
+ --text-2xs:9px;
57
+ --text-xs:10px;
58
+ --text-sm:11px;
59
+ --text-md:12px;
60
+ --text-lg:13px;
48
61
 
49
- /* Code, results, prose */
50
- .block-code{margin:0;padding:9px 12px;overflow:auto;max-height:420px;font:var(--code)/1.65 var(--mono);scrollbar-color:var(--line) transparent}
51
- .block-code code{background:none;padding:0;font:inherit;white-space:pre}
52
- .block-code.is-command code::before{content:"$ ";color:var(--w-green);user-select:none}
53
- .block-plain{margin:0;padding:9px 12px;font:var(--code)/1.7 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text)}
54
- .block-result{border-top:1px dashed var(--line)}
55
- .block-result .block-code{color:var(--muted);max-height:360px}
56
- .block-result.is-error .block-code{color:color-mix(in oklab,var(--w-red) 60%,var(--w-fg))}
57
- .block-note{margin:0;padding:4px 12px 8px;font-size:10px;color:var(--faint)}
58
- .block-todos{margin:0;padding:9px 14px;list-style:none;font:var(--code)/1.9 var(--mono)}
59
- .block-todos li{display:flex;gap:8px;color:var(--muted)}
60
- .block-todos li span{color:var(--faint);flex:none}
61
- .block-todos .todo-completed{color:var(--faint);text-decoration:line-through}
62
- .block-todos .todo-in_progress{color:var(--w-yellow)}
63
- .block-todos .todo-in_progress span{color:var(--w-yellow)}
64
- .block-prose{padding:10px 13px;font:var(--code)/1.75 var(--mono);color:var(--text);overflow-wrap:anywhere}
65
- .block-prose>:first-child{margin-top:0}
66
- .block-prose>:last-child{margin-bottom:0}
67
- .block-prose p,.block-prose ul,.block-prose ol,.block-prose blockquote{margin:0 0 .75em}
68
- .block-prose h1,.block-prose h2,.block-prose h3,.block-prose h4{margin:1.1em 0 .5em;font-size:1em;font-weight:700;color:var(--w-accent);letter-spacing:.3px}
69
- .block-prose ul,.block-prose ol{padding-left:1.4em}
70
- .block-prose li{margin:.15em 0}
71
- .block-prose a{color:color-mix(in oklab,var(--w-cyan) 70%,var(--w-fg));text-decoration:underline;text-underline-offset:2px}
72
- .block-prose code{background:var(--raised);padding:1px 5px;border-radius:3px;font-size:.94em;color:var(--w-yellow)}
73
- .block-prose pre{margin:.7em 0;background:var(--w-bg);border:1px solid var(--line);border-radius:5px}
74
- .block-prose pre code{background:none;padding:0;color:inherit}
75
- .block-prose blockquote{border-left:2px solid var(--line);padding-left:12px;color:var(--muted)}
76
- .block-prose hr{border:0;border-top:1px solid var(--line);margin:1em 0}
77
- .block-prose table{border-collapse:collapse;font-size:.94em;margin:.6em 0;display:block;overflow:auto}
78
- .block-prose th,.block-prose td{border:1px solid var(--line);padding:4px 9px;text-align:left}
79
- .block-prose th{color:var(--w-accent);font-weight:600}
80
- .block-prose img{max-width:100%}
62
+ /* ── Radius ─────────────────────────────────────────────────────────────────
63
+ Six steps, from the tick marks inside a row up to a modal. The file used to
64
+ carry thirteen ad-hoc radii, several of them a pixel apart and none of them
65
+ meaning anything different from its neighbour. */
66
+ --radius-xs:2px;
67
+ --radius-sm:4px;
68
+ --radius-md:6px;
69
+ --radius-lg:8px;
70
+ --radius-xl:12px;
71
+ --radius-2xl:20px;
81
72
 
82
- /* Syntax theme, mixed from the terminal palette so it follows the active Warp theme. */
83
- .hljs{color:var(--text);background:none}
84
- .hljs-comment,.hljs-quote{color:var(--faint);font-style:italic}
85
- .hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-doctag,.hljs-name{color:color-mix(in oklab,var(--w-green) 80%,var(--w-fg))}
86
- .hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:var(--w-yellow)}
87
- .hljs-number,.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-selector-attr,.hljs-template-variable{color:color-mix(in oklab,var(--w-magenta) 45%,var(--w-fg))}
88
- .hljs-title,.hljs-section,.hljs-title.function_,.hljs-title.class_{color:color-mix(in oklab,var(--w-cyan) 62%,var(--w-fg))}
89
- .hljs-type,.hljs-class .hljs-title,.hljs-built_in,.hljs-builtin-name{color:color-mix(in oklab,var(--w-cyan) 80%,var(--w-fg))}
90
- .hljs-attr,.hljs-variable,.hljs-property,.hljs-selector-id,.hljs-selector-class{color:color-mix(in oklab,var(--w-blue) 40%,var(--w-fg))}
91
- .hljs-params{color:var(--text)}
92
- .hljs-meta,.hljs-tag{color:var(--muted)}
93
- .hljs-emphasis{font-style:italic}
94
- .hljs-strong{font-weight:700}
95
- .hljs-addition{color:var(--w-green);background:color-mix(in oklab,var(--w-bg) 88%,var(--w-green));display:inline-block;width:100%}
96
- .hljs-deletion{color:color-mix(in oklab,var(--w-red) 70%,var(--w-fg));background:color-mix(in oklab,var(--w-bg) 88%,var(--w-red));display:inline-block;width:100%}
73
+ color-scheme:dark;
74
+ font:var(--ui);
75
+ }
97
76
 
77
+ * { box-sizing:border-box }
78
+ input { font:inherit }
79
+ button {
80
+ font:inherit;
81
+ cursor:pointer;
82
+ color:inherit;
83
+ }
84
+ a { color:inherit; text-decoration:none }
85
+ :focus-visible { outline:2px solid var(--accent); outline-offset:4px }
86
+ button:disabled { opacity:.5; cursor:wait }
87
+ [hidden] { display:none!important }
88
+ .brandmark {
89
+ color:var(--accent);
90
+ font-size:36px;
91
+ font-weight:400;
92
+ }
93
+ .brand-sub {
94
+ font-size:var(--text-xs);
95
+ letter-spacing:1.8px;
96
+ color:var(--muted);
97
+ font-weight:500;
98
+ margin-left:12px;
99
+ }
100
+ .connection {
101
+ display:flex;
102
+ align-items:center;
103
+ gap:9px;
104
+ font-size:var(--text-md);
105
+ }
106
+ .local {
107
+ border-left:1px solid var(--line);
108
+ margin-left:12px;
109
+ padding-left:20px;
110
+ font-size:var(--text-xs);
111
+ letter-spacing:1px;
112
+ color:var(--muted);
113
+ }
114
+ .eyebrow {
115
+ color:var(--accent);
116
+ font-size:var(--text-xs);
117
+ letter-spacing:2px;
118
+ font-weight:650;
119
+ }
120
+ p {
121
+ color:var(--muted);
122
+ line-height:1.7;
123
+ margin:0;
124
+ }
125
+ .button {
126
+ border:1px solid var(--line);
127
+ background:var(--raised);
128
+ padding:9px 13px;
129
+ border-radius:var(--radius-md);
130
+ font-size:var(--text-md);
131
+ }
132
+ .button:hover { background:var(--hover-strong) }
133
+ .dot {
134
+ display:inline-block;
135
+ width:6px;
136
+ height:6px;
137
+ border-radius:50%;
138
+ background:currentColor;
139
+ margin-right:6px;
140
+ }
141
+ .busy { color:var(--busy) }
142
+ .idle { color:var(--idle) }
143
+ .stale { color:var(--stale) }
144
+ .dead { color:var(--dead) }
145
+ .section-heading {
146
+ padding:21px 23px 16px;
147
+ display:flex;
148
+ align-items:center;
149
+ justify-content:space-between;
150
+ }
151
+ h2 {
152
+ font-size:15px;
153
+ margin:0;
154
+ font-weight:600;
155
+ }
156
+ .section-heading h2 span {
157
+ font-size:var(--text-sm);
158
+ background:var(--raised);
159
+ border:1px solid var(--line);
160
+ padding:2px 6px;
161
+ border-radius:var(--radius-sm);
162
+ margin-left:7px;
163
+ color:var(--muted);
164
+ }
165
+ .subtle { color:var(--faint); font-size:var(--text-xs) }
166
+ input::placeholder { color:var(--faint) }
167
+ kbd {
168
+ border:1px solid var(--line);
169
+ padding:0 4px;
170
+ border-radius:var(--radius-sm);
171
+ font-size:var(--text-xs);
172
+ }
173
+ select {
174
+ font:inherit;
175
+ max-width:145px;
176
+ height:100%;
177
+ background:var(--panel);
178
+ border:1px solid var(--line);
179
+ border-radius:var(--radius-md);
180
+ color:var(--muted);
181
+ padding:0 9px;
182
+ font-size:var(--text-sm);
183
+ }
184
+ .filter {
185
+ border:1px solid transparent;
186
+ background:transparent;
187
+ color:var(--muted);
188
+ border-radius:var(--radius-md);
189
+ padding:6px 9px;
190
+ font-size:var(--text-sm);
191
+ }
192
+ .filter[aria-pressed=true] {
193
+ color:var(--text);
194
+ border-color:var(--line);
195
+ background:var(--raised);
196
+ }
197
+ .filter span { opacity:.65; margin-left:6px }
198
+ .filter:hover { color:var(--text) }
199
+ .session {
200
+ display:grid;
201
+ grid-template-columns:minmax(0,1fr) 83px;
202
+ gap:20px;
203
+ width:100%;
204
+ text-align:left;
205
+ border:0;
206
+ border-bottom:1px solid var(--divider);
207
+ background:transparent;
208
+ padding:19px 23px;
209
+ position:relative;
210
+ }
211
+ .session:hover { background:var(--hover) }
212
+ .session[aria-pressed=true] { background:var(--selected); box-shadow:inset 2px 0 var(--busy) }
213
+ .session-name {
214
+ font-size:var(--text-xs);
215
+ color:var(--muted);
216
+ overflow:hidden;
217
+ text-overflow:ellipsis;
218
+ white-space:nowrap;
219
+ }
220
+ .badge {
221
+ font-size:var(--text-2xs);
222
+ white-space:nowrap;
223
+ background:color-mix(in srgb,currentColor 8%,transparent);
224
+ padding:3px 6px;
225
+ border-radius:var(--radius-sm);
226
+ }
227
+ .session-title {
228
+ font-size:var(--text-lg);
229
+ font-weight:550;
230
+ display:block;
231
+ white-space:nowrap;
232
+ text-overflow:ellipsis;
233
+ overflow:hidden;
234
+ margin-bottom:8px;
235
+ }
236
+ .session-meta {
237
+ display:flex;
238
+ gap:9px;
239
+ color:var(--faint);
240
+ font-size:var(--text-xs);
241
+ min-width:0;
242
+ }
243
+ .branch {
244
+ overflow:hidden;
245
+ text-overflow:ellipsis;
246
+ white-space:nowrap;
247
+ }
248
+ .session-context {
249
+ text-align:right;
250
+ align-self:center;
251
+ font-size:var(--text-md);
252
+ font-variant-numeric:tabular-nums;
253
+ }
254
+ .mini-bar {
255
+ display:block;
256
+ height:3px;
257
+ background:var(--line);
258
+ margin:8px 0 7px;
259
+ border-radius:var(--radius-xs);
260
+ overflow:hidden;
261
+ }
262
+ .mini-bar i {
263
+ display:block;
264
+ background:var(--busy);
265
+ height:100%;
266
+ }
267
+ .session-context small { color:var(--faint); font-size:var(--text-xs) }
268
+ .detail-empty { padding:85px 20px; text-align:center }
269
+ .detail-empty p { font-size:var(--text-md); margin-top:10px }
270
+ .empty-symbol {
271
+ display:block;
272
+ font-size:36px;
273
+ color:var(--faint);
274
+ margin-bottom:20px;
275
+ }
276
+ .detail-top {
277
+ display:flex;
278
+ align-items:center;
279
+ justify-content:space-between;
280
+ margin-bottom:17px;
281
+ }
282
+ .detail h2 {
283
+ font-size:21px;
284
+ line-height:1.4;
285
+ letter-spacing:-.4px;
286
+ overflow-wrap:anywhere;
287
+ }
288
+ .detail-section h3 {
289
+ font-size:var(--text-xs);
290
+ text-transform:uppercase;
291
+ letter-spacing:1.2px;
292
+ font-weight:500;
293
+ color:var(--muted);
294
+ margin:0 0 12px;
295
+ display:flex;
296
+ justify-content:space-between;
297
+ gap:10px;
298
+ }
299
+ .detail-section h3 span {
300
+ font-size:var(--text-xs);
301
+ letter-spacing:0;
302
+ text-transform:none;
303
+ color:var(--faint);
304
+ }
305
+ .response {
306
+ white-space:pre-wrap;
307
+ overflow-wrap:anywhere;
308
+ line-height:1.8;
309
+ font-size:var(--text-md);
310
+ max-height:300px;
311
+ overflow:auto;
312
+ color:color-mix(in oklab,var(--text) 88%,var(--term-bg));
313
+ }
314
+ .response.missing { color:var(--faint); font-style:italic }
315
+ .links {
316
+ display:flex;
317
+ gap:8px;
318
+ flex-wrap:wrap;
319
+ }
320
+ .work-link {
321
+ padding:7px 10px;
322
+ border:1px solid var(--line);
323
+ border-radius:var(--radius-md);
324
+ font-size:var(--text-sm);
325
+ color:var(--accent);
326
+ }
327
+ .work-link:hover { border-color:var(--accent) }
328
+ .note {
329
+ font-size:var(--text-sm);
330
+ color:var(--faint);
331
+ line-height:1.6;
332
+ }
333
+ .facts {
334
+ display:grid;
335
+ grid-template-columns:80px minmax(0,1fr);
336
+ gap:10px;
337
+ font-size:var(--text-sm);
338
+ }
339
+ .facts dt { color:var(--faint) }
340
+ .facts dd {
341
+ margin:0;
342
+ overflow-wrap:anywhere;
343
+ color:var(--muted);
344
+ }
345
+ .context-label {
346
+ display:flex;
347
+ justify-content:space-between;
348
+ font-size:var(--text-sm);
349
+ color:var(--muted);
350
+ }
351
+ .detail .mini-bar {
352
+ display:block;
353
+ height:5px;
354
+ margin:11px 0;
355
+ }
356
+ .detail-actions {
357
+ margin-top:23px;
358
+ display:flex;
359
+ justify-content:space-between;
360
+ align-items:center;
361
+ }
362
+ .resume {
363
+ background:var(--accent);
364
+ color:var(--term-bg);
365
+ border:0;
366
+ font-weight:600;
367
+ }
368
+ .resume:hover { background:color-mix(in oklab,var(--term-accent) 82%,white) }
369
+ .empty {
370
+ padding:65px 25px;
371
+ text-align:center;
372
+ color:var(--muted);
373
+ font-size:var(--text-md);
374
+ line-height:1.8;
375
+ }
376
+ .error {
377
+ border:1px solid var(--warn-line);
378
+ background:var(--warn-surface);
379
+ padding:12px 16px;
380
+ margin-bottom:20px;
381
+ border-radius:var(--radius-md);
382
+ color:var(--stale);
383
+ font-size:var(--text-md);
384
+ }
385
+ .toast {
386
+ position:fixed;
387
+ bottom:25px;
388
+ left:50%;
389
+ transform:translateX(-50%);
390
+ background:var(--text);
391
+ color:var(--bg);
392
+ border-radius:var(--radius-md);
393
+ padding:12px 20px;
394
+ box-shadow:0 8px 30px #0005;
395
+ font-size:var(--text-md);
396
+ z-index:3;
397
+ }
398
+ .sr-only {
399
+ position:absolute;
400
+ width:1px;
401
+ height:1px;
402
+ overflow:hidden;
403
+ clip:rect(0,0,0,0);
404
+ }
405
+ .warn { color:var(--stale) }
406
+ .hot { color:var(--hot) }
407
+ .mini-bar i.warn { background:var(--stale) }
408
+ .mini-bar i.hot { background:var(--hot) }
409
+ @media(max-width:1000px) {
410
+ .brand-sub, .local { display:none }
411
+ .refresh-info { flex-direction:column; align-items:end }
412
+ .session { gap:10px; padding-inline:16px }
413
+ .detail { padding:20px }
414
+ }
415
+ @media(max-width:720px) {
416
+ .refresh-info #updated { display:none }
417
+ .section-heading { padding-inline:16px }
418
+ .filters { padding-inline:13px }
419
+ .brand { font-size:24px }
420
+ .session-title { font-size:var(--text-md) }
421
+ .connection { font-size:var(--text-xs) }
422
+ .button { white-space:nowrap }
423
+ }
424
+ @media(prefers-reduced-motion:no-preference) {
425
+ .session, .button, .work-link { transition:background .15s,border-color .15s }
426
+ }
427
+ /* Managed conversations */
428
+ .launch-panel {
429
+ border:1px solid var(--line);
430
+ background:var(--panel);
431
+ border-radius:var(--radius-lg);
432
+ margin-bottom:28px;
433
+ }
434
+ .launch-panel .section-heading { padding:23px 26px }
435
+ .launch-panel h2 { font-size:20px; margin-top:9px }
436
+ .launch-panel form { padding:0 26px 24px }
437
+ .launch-fields {
438
+ display:grid;
439
+ grid-template-columns:1.2fr 1fr;
440
+ gap:20px;
441
+ margin-bottom:18px;
442
+ }
443
+ .launch-panel label {
444
+ display:flex;
445
+ flex-direction:column;
446
+ gap:8px;
447
+ font-size:var(--text-md);
448
+ color:var(--muted);
449
+ }
450
+ .launch-panel input, .launch-panel textarea, .composer textarea, .other-answer input {
451
+ border:1px solid var(--line);
452
+ border-radius:var(--radius-md);
453
+ padding:12px;
454
+ background:var(--bg);
455
+ color:var(--text);
456
+ width:100%;
457
+ font:inherit;
458
+ resize:vertical;
459
+ }
460
+ .launch-panel input:read-only { color:var(--faint) }
461
+ .launch-panel textarea, .composer textarea {
462
+ min-height:95px;
463
+ font-size:var(--text-lg);
464
+ line-height:1.6;
465
+ }
466
+ .launch-footer {
467
+ display:flex;
468
+ justify-content:space-between;
469
+ gap:24px;
470
+ align-items:center;
471
+ margin-top:16px;
472
+ }
473
+ .launch-footer p { max-width:550px }
474
+ .form-error {
475
+ font-size:var(--text-md);
476
+ line-height:1.6;
477
+ color:color-mix(in oklab,var(--term-red) 52%,var(--term-fg));
478
+ overflow-wrap:anywhere;
479
+ margin:12px 0 0;
480
+ }
481
+ .conversation-header {
482
+ display:flex;
483
+ justify-content:space-between;
484
+ align-items:center;
485
+ gap:12px;
486
+ margin:26px 0 16px;
487
+ padding-top:22px;
488
+ border-top:1px solid var(--line);
489
+ }
490
+ .conversation-header h3 { font-size:var(--text-lg); margin:0 }
491
+ .composer { margin-top:20px }
492
+ .composer textarea:focus { outline:1px solid var(--accent); outline-offset:0 }
493
+ .composer-footer {
494
+ display:flex;
495
+ gap:8px;
496
+ align-items:center;
497
+ justify-content:end;
498
+ margin-top:9px;
499
+ }
500
+ .composer-footer .note {
501
+ margin-right:auto;
502
+ font-size:var(--text-xs);
503
+ max-width:240px;
504
+ }
505
+ .stop { color:var(--stale) }
506
+ .external-note {
507
+ border-top:1px solid var(--line);
508
+ padding-top:20px;
509
+ margin-top:20px;
510
+ }
511
+ .external-note strong { font-size:var(--text-md); color:var(--muted) }
512
+ .external-note p { font-size:var(--text-md); margin:8px 0 14px }
513
+ .approval {
514
+ background:var(--warn-surface);
515
+ border:1px solid var(--warn-line);
516
+ border-radius:var(--radius-md);
517
+ padding:17px;
518
+ margin-top:20px;
519
+ }
520
+ .approval .eyebrow { color:var(--stale); font-size:var(--text-2xs) }
521
+ .approval h4 {
522
+ font-size:var(--text-lg);
523
+ font-weight:500;
524
+ margin:12px 0;
525
+ overflow-wrap:anywhere;
526
+ }
527
+ .tool-input {
528
+ white-space:pre-wrap;
529
+ overflow-wrap:anywhere;
530
+ max-height:280px;
531
+ overflow:auto;
532
+ font:11px/1.7 ui-monospace,monospace;
533
+ background:var(--term-bg);
534
+ padding:12px;
535
+ border-radius:var(--radius-md);
536
+ }
537
+ .approval-actions {
538
+ display:flex;
539
+ justify-content:end;
540
+ gap:8px;
541
+ margin-top:15px;
542
+ }
543
+ .approval fieldset {
544
+ border:0;
545
+ padding:0;
546
+ margin:18px 0;
547
+ }
548
+ .approval legend {
549
+ font-size:var(--text-lg);
550
+ line-height:1.6;
551
+ margin-bottom:10px;
552
+ }
553
+ .answer-option {
554
+ display:flex;
555
+ align-items:start;
556
+ gap:8px;
557
+ font-size:var(--text-md);
558
+ padding:8px 0;
559
+ }
560
+ .answer-option input { accent-color:var(--accent); margin-top:3px }
561
+ .answer-option small {
562
+ display:block;
563
+ font-size:var(--text-sm);
564
+ color:var(--muted);
565
+ line-height:1.6;
566
+ margin-top:3px;
567
+ }
568
+ .other-answer {
569
+ display:block;
570
+ font-size:var(--text-sm);
571
+ color:var(--muted);
572
+ margin-top:8px;
573
+ }
574
+ .other-answer input { margin-top:6px }
575
+ .detail:has(#composer) #detail-content {
576
+ margin-top:25px;
577
+ padding-top:22px;
578
+ border-top:1px solid var(--line);
579
+ }
580
+ .detail:has(#composer) .conversation-header {
581
+ margin-top:0;
582
+ padding-top:0;
583
+ border:0;
584
+ }
585
+ @media(max-width:720px) {
586
+ .launch-fields { grid-template-columns:1fr }
587
+ .launch-footer {
588
+ flex-direction:column;
589
+ align-items:stretch;
590
+ gap:14px;
591
+ }
592
+ .launch-panel .section-heading { padding:20px }
593
+ .launch-panel form { padding:0 20px 20px }
594
+ .refresh-info { gap:8px }
595
+ .composer-footer { flex-wrap:wrap }
596
+ .composer-footer .note { max-width:170px }
597
+ }
598
+ .conversation .note { font-family:inherit; padding:14px }
599
+ #agent-state { font-family:var(--mono); font-size:var(--text-sm) }
600
+ /* Blocks */
601
+ .block {
602
+ position:relative;
603
+ background:var(--panel);
604
+ border:1px solid var(--line);
605
+ border-left:2px solid var(--line);
606
+ border-radius:var(--radius-md);
607
+ margin-bottom:8px;
608
+ overflow:hidden;
609
+ }
610
+ .block:last-child { margin-bottom:0 }
611
+ .block[data-role="user"] {
612
+ border-left-color:var(--term-accent);
613
+ background:color-mix(in oklab,var(--term-bg) 90%,var(--term-accent));
614
+ }
615
+ .block[data-role="assistant"] { border-left-color:color-mix(in oklab,var(--term-cyan) 70%,var(--term-bg)) }
616
+ .block[data-role="tool"] { border-left-color:color-mix(in oklab,var(--term-fg) 34%,var(--term-bg)) }
617
+ .block[data-status="running"] { border-left-color:var(--term-yellow) }
618
+ .block[data-status="error"] { border-left-color:var(--term-red) }
619
+ .block-head {
620
+ position:sticky;
621
+ top:0;
622
+ z-index:2;
623
+ display:flex;
624
+ align-items:center;
625
+ gap:9px;
626
+ padding:7px 10px;
627
+ background:color-mix(in oklab,var(--panel) 88%,var(--term-bg));
628
+ border-bottom:1px solid var(--line);
629
+ backdrop-filter:blur(6px);
630
+ font-size:var(--text-sm);
631
+ line-height:1.4;
632
+ }
633
+ .block-icon {
634
+ color:var(--term-accent);
635
+ width:13px;
636
+ text-align:center;
637
+ flex:none;
638
+ }
639
+ .block[data-role="tool"] .block-icon { color:color-mix(in oklab,var(--term-cyan) 75%,var(--term-fg)) }
640
+ .block-tool {
641
+ color:var(--text);
642
+ font-weight:600;
643
+ letter-spacing:.4px;
644
+ flex:none;
645
+ }
646
+ .block[data-role="user"] .block-tool, .block[data-role="user"] .block-icon { color:var(--term-accent) }
647
+ .block-target {
648
+ color:var(--muted);
649
+ overflow:hidden;
650
+ text-overflow:ellipsis;
651
+ white-space:nowrap;
652
+ min-width:0;
653
+ flex:1 1 auto;
654
+ }
655
+ .block-meta {
656
+ color:var(--faint);
657
+ font-size:var(--text-xs);
658
+ margin-left:auto;
659
+ flex:none;
660
+ font-variant-numeric:tabular-nums;
661
+ }
662
+ .block-target+.block-meta { margin-left:0 }
663
+ .block-state:empty { display:none }
664
+ .block-state {
665
+ font-size:var(--text-2xs);
666
+ letter-spacing:.8px;
667
+ text-transform:uppercase;
668
+ flex:none;
669
+ background:none;
670
+ border:0;
671
+ padding:0;
672
+ margin:0;
673
+ border-radius:0;
674
+ }
675
+ .block-state.is-running { color:var(--term-yellow) }
676
+ .block-state.is-failed { color:color-mix(in oklab,var(--term-red) 70%,var(--term-fg)) }
677
+ .block-state.is-interrupted { color:var(--faint) }
678
+ .block-actions {
679
+ display:flex;
680
+ gap:2px;
681
+ flex:none;
682
+ opacity:0;
683
+ transition:opacity .12s ease;
684
+ }
685
+ .block:hover .block-actions, .block:focus-within .block-actions { opacity:1 }
686
+ @media (hover:none) {
687
+ .block-actions { opacity:1 }
688
+ }
689
+ .block-button {
690
+ background:none;
691
+ border:0;
692
+ padding:2px 5px;
693
+ border-radius:var(--radius-sm);
694
+ color:var(--faint);
695
+ font-size:var(--text-md);
696
+ line-height:1;
697
+ }
698
+ .block-button:hover { color:var(--text); background:var(--raised) }
699
+ .block-body { padding:2px 0 }
700
+ .block.collapsed .block-body { display:none }
701
+ .block.collapsed .block-head { border-bottom:0 }
702
+ .block.collapsed [data-collapse] { transform:rotate(-90deg) }
703
+ /* Code, results, prose */
704
+ .block-code {
705
+ margin:0;
706
+ padding:9px 12px;
707
+ overflow:auto;
708
+ max-height:420px;
709
+ font:var(--code)/1.65 var(--mono);
710
+ scrollbar-color:var(--line) transparent;
711
+ }
712
+ .block-code code {
713
+ background:none;
714
+ padding:0;
715
+ font:inherit;
716
+ white-space:pre;
717
+ }
718
+ .block-code.is-command code::before {
719
+ content:"$ ";
720
+ color:var(--term-green);
721
+ user-select:none;
722
+ }
723
+ .block-plain {
724
+ margin:0;
725
+ padding:9px 12px;
726
+ font:var(--code)/1.7 var(--mono);
727
+ white-space:pre-wrap;
728
+ overflow-wrap:anywhere;
729
+ color:var(--text);
730
+ }
731
+ .block-result { border-top:1px dashed var(--line) }
732
+ .block-result .block-code { color:var(--muted); max-height:360px }
733
+ .block-result.is-error .block-code { color:color-mix(in oklab,var(--term-red) 60%,var(--term-fg)) }
734
+ .block-note {
735
+ margin:0;
736
+ padding:4px 12px 8px;
737
+ font-size:var(--text-xs);
738
+ color:var(--faint);
739
+ }
740
+ .block-todos {
741
+ margin:0;
742
+ padding:9px 14px;
743
+ list-style:none;
744
+ font:var(--code)/1.9 var(--mono);
745
+ }
746
+ .block-todos li {
747
+ display:flex;
748
+ gap:8px;
749
+ color:var(--muted);
750
+ }
751
+ .block-todos li span { color:var(--faint); flex:none }
752
+ .block-todos .todo-completed { color:var(--faint); text-decoration:line-through }
753
+ .block-todos .todo-in_progress { color:var(--term-yellow) }
754
+ .block-todos .todo-in_progress span { color:var(--term-yellow) }
755
+ .block-prose {
756
+ padding:10px 13px;
757
+ font:var(--code)/1.75 var(--mono);
758
+ color:var(--text);
759
+ overflow-wrap:anywhere;
760
+ }
761
+ .block-prose>:first-child { margin-top:0 }
762
+ .block-prose>:last-child { margin-bottom:0 }
763
+ .block-prose p, .block-prose ul, .block-prose ol, .block-prose blockquote { margin:0 0 .75em }
764
+ .block-prose h1, .block-prose h2, .block-prose h3, .block-prose h4 {
765
+ margin:1.1em 0 .5em;
766
+ font-size:1em;
767
+ font-weight:700;
768
+ color:var(--term-accent);
769
+ letter-spacing:.3px;
770
+ }
771
+ .block-prose ul, .block-prose ol { padding-left:1.4em }
772
+ .block-prose li { margin:.15em 0 }
773
+ .block-prose a {
774
+ color:color-mix(in oklab,var(--term-cyan) 70%,var(--term-fg));
775
+ text-decoration:underline;
776
+ text-underline-offset:2px;
777
+ }
778
+ .block-prose code {
779
+ background:var(--raised);
780
+ padding:1px 5px;
781
+ border-radius:var(--radius-sm);
782
+ font-size:.94em;
783
+ color:var(--term-yellow);
784
+ }
785
+ .block-prose pre {
786
+ margin:.7em 0;
787
+ background:var(--term-bg);
788
+ border:1px solid var(--line);
789
+ border-radius:var(--radius-md);
790
+ }
791
+ .block-prose pre code {
792
+ background:none;
793
+ padding:0;
794
+ color:inherit;
795
+ }
796
+ .block-prose blockquote {
797
+ border-left:2px solid var(--line);
798
+ padding-left:12px;
799
+ color:var(--muted);
800
+ }
801
+ .block-prose hr {
802
+ border:0;
803
+ border-top:1px solid var(--line);
804
+ margin:1em 0;
805
+ }
806
+ .block-prose table {
807
+ border-collapse:collapse;
808
+ font-size:.94em;
809
+ margin:.6em 0;
810
+ display:block;
811
+ overflow:auto;
812
+ }
813
+ .block-prose th, .block-prose td {
814
+ border:1px solid var(--line);
815
+ padding:4px 9px;
816
+ text-align:left;
817
+ }
818
+ .block-prose th { color:var(--term-accent); font-weight:600 }
819
+ .block-prose img { max-width:100% }
820
+ /* Syntax theme, mixed from the terminal palette so it follows the active Warp theme. */
821
+ .hljs { color:var(--text); background:none }
822
+ .hljs-comment, .hljs-quote { color:var(--faint); font-style:italic }
823
+ .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-doctag, .hljs-name {
824
+ color:color-mix(in oklab,var(--term-green) 80%,var(--term-fg));
825
+ }
826
+ .hljs-string, .hljs-regexp, .hljs-attribute, .hljs-meta .hljs-string { color:var(--term-yellow) }
827
+ .hljs-number, .hljs-symbol, .hljs-bullet, .hljs-link, .hljs-selector-attr, .hljs-template-variable {
828
+ color:color-mix(in oklab,var(--term-magenta) 45%,var(--term-fg));
829
+ }
830
+ .hljs-title, .hljs-section, .hljs-title.function_, .hljs-title.class_ {
831
+ color:color-mix(in oklab,var(--term-cyan) 62%,var(--term-fg));
832
+ }
833
+ .hljs-type, .hljs-class .hljs-title, .hljs-built_in, .hljs-builtin-name {
834
+ color:color-mix(in oklab,var(--term-cyan) 80%,var(--term-fg));
835
+ }
836
+ .hljs-attr, .hljs-variable, .hljs-property, .hljs-selector-id, .hljs-selector-class {
837
+ color:color-mix(in oklab,var(--term-blue) 40%,var(--term-fg));
838
+ }
839
+ .hljs-params { color:var(--text) }
840
+ .hljs-meta, .hljs-tag { color:var(--muted) }
841
+ .hljs-emphasis { font-style:italic }
842
+ .hljs-strong { font-weight:700 }
843
+ .hljs-addition {
844
+ color:var(--term-green);
845
+ background:color-mix(in oklab,var(--term-bg) 88%,var(--term-green));
846
+ display:inline-block;
847
+ width:100%;
848
+ }
849
+ .hljs-deletion {
850
+ color:color-mix(in oklab,var(--term-red) 70%,var(--term-fg));
851
+ background:color-mix(in oklab,var(--term-bg) 88%,var(--term-red));
852
+ display:inline-block;
853
+ width:100%;
854
+ }
98
855
  /* Composer reads as a prompt line rather than a comment box. */
99
- .composer textarea{font:var(--code)/1.6 var(--mono);background:var(--w-bg);border-color:var(--line);color:var(--text)}
100
- .composer textarea:focus{border-color:var(--w-accent);outline:none;box-shadow:0 0 0 1px color-mix(in oklab,var(--w-accent) 40%,transparent)}
101
- #composer-hint{font-family:var(--mono);font-size:10px}
102
- .tool-input{font-family:var(--mono);background:var(--w-bg);border:1px solid var(--line)}
103
- @media (prefers-reduced-motion:reduce){.block-actions{transition:none}}
104
-
105
- /* ── Resizable inspector ──────────────────────────────────────────────────── */
106
- .workspace{grid-template-columns:var(--split,58%) 6px minmax(0,1fr)}
107
- .splitter{background:var(--line);cursor:col-resize;position:relative;touch-action:none}
108
- .splitter::before{content:"";position:absolute;inset:0 -5px;z-index:1}
109
- .splitter::after{content:"";position:absolute;top:50%;left:50%;translate:-50% -50%;width:2px;height:26px;border-radius:2px;background:var(--faint);opacity:0;transition:opacity .12s ease}
110
- .splitter:hover::after,.splitter:focus-visible::after,.splitter[data-dragging]::after{opacity:1}
111
- .splitter:hover,.splitter[data-dragging]{background:var(--w-accent)}
112
- .splitter:focus-visible{outline:2px solid var(--w-accent);outline-offset:-1px}
113
- .detail{border-left:0}
114
- body[data-resizing]{cursor:col-resize;user-select:none}
115
- .conversation{height:var(--conv-height,min(62vh,680px));max-height:none;min-height:200px;resize:vertical}
116
- @media(max-width:1000px){.workspace{grid-template-columns:var(--split,52%) 6px minmax(0,1fr)}}
117
- @media(max-width:720px){.workspace{grid-template-columns:1fr}.splitter{display:none}.conversation{height:var(--conv-height,460px);resize:none}}
118
- @media(prefers-reduced-motion:reduce){.splitter::after{transition:none}}
119
-
856
+ .composer textarea {
857
+ font:var(--code)/1.6 var(--mono);
858
+ background:var(--term-bg);
859
+ border-color:var(--line);
860
+ color:var(--text);
861
+ }
862
+ .composer textarea:focus {
863
+ border-color:var(--term-accent);
864
+ outline:none;
865
+ box-shadow:0 0 0 1px color-mix(in oklab,var(--term-accent) 40%,transparent);
866
+ }
867
+ #composer-hint { font-family:var(--mono); font-size:var(--text-xs) }
868
+ .tool-input {
869
+ font-family:var(--mono);
870
+ background:var(--term-bg);
871
+ border:1px solid var(--line);
872
+ }
873
+ @media (prefers-reduced-motion:reduce) {
874
+ .block-actions { transition:none }
875
+ }
876
+ .splitter {
877
+ background:var(--line);
878
+ cursor:col-resize;
879
+ position:relative;
880
+ touch-action:none;
881
+ }
882
+ .splitter::before {
883
+ content:"";
884
+ position:absolute;
885
+ inset:0 -5px;
886
+ z-index:1;
887
+ }
888
+ .splitter::after {
889
+ content:"";
890
+ position:absolute;
891
+ top:50%;
892
+ left:50%;
893
+ translate:-50% -50%;
894
+ width:2px;
895
+ height:26px;
896
+ border-radius:var(--radius-xs);
897
+ background:var(--faint);
898
+ opacity:0;
899
+ transition:opacity .12s ease;
900
+ }
901
+ .splitter:hover::after, .splitter:focus-visible::after, .splitter[data-dragging]::after { opacity:1 }
902
+ .splitter:hover, .splitter[data-dragging] { background:var(--term-accent) }
903
+ .splitter:focus-visible { outline:2px solid var(--term-accent); outline-offset:-1px }
904
+ body[data-resizing] { cursor:col-resize; user-select:none }
905
+ @media(max-width:1000px) {
906
+ .workspace { grid-template-columns:var(--split,52%) 6px minmax(0,1fr) }
907
+ }
908
+ @media(max-width:720px) {
909
+ .splitter { display:none }
910
+ .conversation {
911
+ max-height:460px;
912
+ height:var(--conv-height,460px);
913
+ resize:none;
914
+ }
915
+ }
916
+ @media(prefers-reduced-motion:reduce) {
917
+ .splitter::after { transition:none }
918
+ }
120
919
  /* Approval mode */
121
- .mode-picker{margin-left:auto;margin-right:10px}
122
- .mode-picker select{font-family:var(--mono);font-size:10px;padding:3px 6px;height:auto;max-width:none;background:var(--raised)}
123
- .mode-picker select[data-mode="all"]{color:var(--w-yellow);border-color:color-mix(in oklab,var(--w-yellow) 50%,var(--line))}
124
- .block-auto{font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);flex:none;border:1px solid var(--line);border-radius:3px;padding:0 4px}
125
- .approval-reason{font-size:11px;color:var(--stale);margin:0 0 12px;overflow-wrap:anywhere}
126
- #launch-mode-note{min-height:1.4em}
127
-
920
+ .mode-picker { margin-left:auto; margin-right:10px }
921
+ .mode-picker select {
922
+ font-family:var(--mono);
923
+ font-size:var(--text-xs);
924
+ padding:3px 6px;
925
+ height:auto;
926
+ max-width:none;
927
+ background:var(--raised);
928
+ }
929
+ .mode-picker select[data-mode="all"] {
930
+ color:var(--term-yellow);
931
+ border-color:color-mix(in oklab,var(--term-yellow) 50%,var(--line));
932
+ }
933
+ .block-auto {
934
+ font-size:var(--text-2xs);
935
+ letter-spacing:.8px;
936
+ text-transform:uppercase;
937
+ color:var(--faint);
938
+ flex:none;
939
+ border:1px solid var(--line);
940
+ border-radius:var(--radius-sm);
941
+ padding:0 4px;
942
+ }
943
+ .approval-reason {
944
+ font-size:var(--text-sm);
945
+ color:var(--stale);
946
+ margin:0 0 12px;
947
+ overflow-wrap:anywhere;
948
+ }
949
+ #launch-mode-note { min-height:1.4em }
128
950
  /* Slash picker */
129
- .composer{position:relative}
130
- .slash-picker{position:absolute;bottom:100%;left:0;right:0;margin:0 0 6px;padding:4px;list-style:none;max-height:300px;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:7px;box-shadow:0 12px 34px #0009;z-index:4;font-family:var(--mono);scrollbar-color:var(--line) transparent}
131
- .slash-picker li{display:grid;grid-template-columns:auto auto 1fr;gap:4px 10px;align-items:baseline;padding:6px 9px;border-radius:5px;cursor:pointer}
132
- .slash-picker li.is-picked{background:var(--raised)}
133
- .slash-name{color:var(--w-accent);font-size:12px;white-space:nowrap}
134
- .slash-kind{font-size:9px;color:var(--faint);letter-spacing:.6px;white-space:nowrap}
135
- .slash-hint{font-size:10px;color:var(--w-yellow);white-space:nowrap}
136
- .slash-desc{grid-column:1/-1;font-size:10px;color:var(--muted);line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
137
- .slash-picker li.is-picked .slash-desc{color:var(--text);white-space:normal}
138
-
951
+ .composer { position:relative }
952
+ .slash-picker {
953
+ position:absolute;
954
+ bottom:100%;
955
+ left:0;
956
+ right:0;
957
+ margin:0 0 6px;
958
+ padding:4px;
959
+ list-style:none;
960
+ max-height:300px;
961
+ overflow:auto;
962
+ background:var(--panel);
963
+ border:1px solid var(--line);
964
+ border-radius:var(--radius-md);
965
+ box-shadow:0 12px 34px #0009;
966
+ z-index:4;
967
+ font-family:var(--mono);
968
+ scrollbar-color:var(--line) transparent;
969
+ }
970
+ .slash-picker li {
971
+ display:grid;
972
+ grid-template-columns:auto auto 1fr;
973
+ gap:4px 10px;
974
+ align-items:baseline;
975
+ padding:6px 9px;
976
+ border-radius:var(--radius-md);
977
+ cursor:pointer;
978
+ }
979
+ .slash-picker li.is-picked { background:var(--raised) }
980
+ .slash-name {
981
+ color:var(--term-accent);
982
+ font-size:var(--text-md);
983
+ white-space:nowrap;
984
+ }
985
+ .slash-kind {
986
+ font-size:var(--text-2xs);
987
+ color:var(--faint);
988
+ letter-spacing:.6px;
989
+ white-space:nowrap;
990
+ }
991
+ .slash-hint {
992
+ font-size:var(--text-xs);
993
+ color:var(--term-yellow);
994
+ white-space:nowrap;
995
+ }
996
+ .slash-desc {
997
+ grid-column:1/-1;
998
+ font-size:var(--text-xs);
999
+ color:var(--muted);
1000
+ line-height:1.5;
1001
+ overflow:hidden;
1002
+ text-overflow:ellipsis;
1003
+ white-space:nowrap;
1004
+ }
1005
+ .slash-picker li.is-picked .slash-desc { color:var(--text); white-space:normal }
139
1006
  /* ── Density: the app fills the viewport and only the panes scroll ────────── */
140
- html,body{height:100%}
141
- body{display:flex;flex-direction:column;overflow:hidden}
142
- .topbar{height:46px;flex:none}
143
- .brand{font-size:19px;gap:8px}
144
- .brandmark{font-size:22px}
145
- main{flex:1;min-height:0;display:flex;flex-direction:column;width:100%;padding:12px 2.2% 14px;gap:12px}
146
- .intro{margin:0;flex:none}
147
- .refresh-info{margin-left:auto}
148
- .workspace{flex:1;min-height:0;margin:0}
149
- .sessions-pane{display:flex;flex-direction:column;min-height:0}
150
- .section-heading{padding:13px 18px 10px}
151
- .toolbar,.section-heading,.filters{flex:none}
152
- .toolbar{padding-inline:18px}
153
- .filters{padding:10px 18px 9px}
154
- .list-head{flex:none;padding:7px 18px}
155
- .session-list{flex:1;min-height:0;max-height:none}
156
- .session{padding:13px 18px}
157
- .session-top{margin-bottom:5px}
158
- .session-title{margin-bottom:5px}
159
- .detail{overflow:auto;min-height:0;padding:18px;scrollbar-color:var(--line) transparent}
160
- .detail h2{font-size:16px}
161
- .detail-name{margin:6px 0 14px}
162
- .detail-section{padding-top:14px;margin-top:15px}
163
- .launch-panel{flex:none;max-height:46vh;overflow:auto;margin:0}
164
- .conversation{height:var(--conv-height,46vh)}
165
- #error{flex:none;margin:0}
166
- @media(max-width:720px){
167
- body{overflow:auto;display:block}
168
- main{display:block;padding:14px 16px}
169
- .workspace{min-height:520px}
170
- .session-list{max-height:420px}
171
- .detail{overflow:visible}
172
- }
173
- .intro{display:flex;align-items:center;gap:18px;padding:0}
174
- .intro .refresh-info{flex:none;gap:10px}
175
- @media(max-width:720px){.intro{flex-direction:column;align-items:stretch}.intro .refresh-info{justify-content:end}}
176
- /* Full-bleed: the cap and the percentage gutters left dead space on a wide display. */
177
- main{max-width:none;margin:0;padding:10px 12px 12px}
178
- .topbar{padding:0 14px}
179
- @media(max-width:720px){main{padding:12px 12px 14px}.topbar{padding:0 14px}}
180
- .close-agent{padding:3px 8px;font-size:10px;font-family:var(--mono);margin-left:auto;color:var(--muted)}
181
- .close-agent:hover{color:var(--text)}
182
- .close-agent[data-armed="1"]{color:color-mix(in oklab,var(--w-red) 70%,var(--w-fg));border-color:color-mix(in oklab,var(--w-red) 50%,var(--line))}
183
- .close-agent+.mode-picker{margin-left:8px}
1007
+ html { height:100% }
1008
+ body {
1009
+ margin:0;
1010
+ background:var(--bg);
1011
+ color:var(--text);
1012
+ -webkit-font-smoothing:antialiased;
1013
+ height:100%;
1014
+ display:flex;
1015
+ flex-direction:column;
1016
+ overflow:hidden;
1017
+ }
1018
+ .brand {
1019
+ font-size:19px;
1020
+ letter-spacing:-1px;
1021
+ font-weight:700;
1022
+ display:flex;
1023
+ align-items:center;
1024
+ gap:8px;
1025
+ }
1026
+ .brandmark { font-size:22px }
1027
+ .refresh-info {
1028
+ display:flex;
1029
+ align-items:center;
1030
+ gap:16px;
1031
+ font-size:var(--text-sm);
1032
+ color:var(--muted);
1033
+ flex-wrap:wrap;
1034
+ justify-content:end;
1035
+ margin-left:auto;
1036
+ }
1037
+ .sessions-pane {
1038
+ min-width:0;
1039
+ background:var(--pane);
1040
+ display:flex;
1041
+ flex-direction:column;
1042
+ min-height:0;
1043
+ }
1044
+ .section-heading { padding:13px 18px 10px }
1045
+ .section-heading { flex:none }
1046
+ .filters {
1047
+ display:flex;
1048
+ gap:5px;
1049
+ padding:10px 18px 9px;
1050
+ flex-wrap:wrap;
1051
+ flex:none;
1052
+ }
1053
+ .list-head {
1054
+ display:flex;
1055
+ justify-content:space-between;
1056
+ padding:7px 18px;
1057
+ border-block:1px solid var(--line);
1058
+ color:var(--faint);
1059
+ font-size:var(--text-2xs);
1060
+ letter-spacing:1px;
1061
+ flex:none;
1062
+ }
1063
+ .session-list {
1064
+ max-height:none;
1065
+ overflow:auto;
1066
+ scrollbar-color:var(--line) transparent;
1067
+ flex:1;
1068
+ min-height:0;
1069
+ }
1070
+ .session { padding:13px 18px }
1071
+ .session-top {
1072
+ display:flex;
1073
+ gap:9px;
1074
+ align-items:center;
1075
+ margin-bottom:5px;
1076
+ }
1077
+ .session-title { margin-bottom:5px }
1078
+ .detail {
1079
+ border-left:0;
1080
+ background:var(--panel);
1081
+ padding:18px;
1082
+ min-width:0;
1083
+ overflow:auto;
1084
+ min-height:0;
1085
+ scrollbar-color:var(--line) transparent;
1086
+ }
1087
+ .detail h2 { font-size:16px }
1088
+ .detail-name {
1089
+ color:var(--muted);
1090
+ font-size:var(--text-sm);
1091
+ margin:6px 0 14px;
1092
+ }
1093
+ .detail-section {
1094
+ border-top:1px solid var(--line);
1095
+ padding-top:14px;
1096
+ margin-top:15px;
1097
+ }
1098
+ .launch-panel {
1099
+ flex:none;
1100
+ max-height:46vh;
1101
+ overflow:auto;
1102
+ margin:0;
1103
+ }
1104
+ .conversation {
1105
+ max-height:none;
1106
+ overflow:auto;
1107
+ overscroll-behavior:contain;
1108
+ scrollbar-color:var(--line) transparent;
1109
+ padding-right:8px;
1110
+ background:var(--term-bg);
1111
+ border:1px solid var(--line);
1112
+ border-radius:var(--radius-lg);
1113
+ padding:10px;
1114
+ font-family:var(--mono);
1115
+ font-feature-settings:"liga" 1,"calt" 1;
1116
+ height:var(--conv-height,46vh);
1117
+ min-height:200px;
1118
+ resize:vertical;
1119
+ }
1120
+ @media(max-width:720px) {
1121
+ body { overflow:auto; display:block }
1122
+ .session-list { max-height:420px }
1123
+ .detail {
1124
+ border-left:0;
1125
+ border-top:1px solid var(--line);
1126
+ overflow:visible;
1127
+ }
1128
+ }
1129
+ .close-agent {
1130
+ padding:3px 8px;
1131
+ font-size:var(--text-xs);
1132
+ font-family:var(--mono);
1133
+ margin-left:auto;
1134
+ color:var(--muted);
1135
+ }
1136
+ .close-agent:hover { color:var(--text) }
1137
+ .close-agent[data-armed="1"] {
1138
+ color:color-mix(in oklab,var(--term-red) 70%,var(--term-fg));
1139
+ border-color:color-mix(in oklab,var(--term-red) 50%,var(--line));
1140
+ }
1141
+ .close-agent+.mode-picker { margin-left:8px }
184
1142
  /* Controls live in the header now; the row they used to occupy is gone. */
185
- .topbar{gap:16px}
186
- .topbar .connection{margin-left:auto}
187
- .topbar .refresh-info{flex:none;gap:10px;margin:0;font-size:11px;border-left:1px solid var(--line);padding-left:16px}
188
- .topbar .refresh-info .button{padding:6px 10px}
189
- .intro{display:none}
190
- @media(max-width:900px){.topbar #updated{display:none}}
191
- @media(max-width:720px){.topbar{gap:10px;height:auto;padding:8px 12px;flex-wrap:wrap}.topbar .refresh-info{border-left:0;padding-left:0}}
192
-
1143
+ .topbar {
1144
+ height:46px;
1145
+ border-bottom:1px solid var(--line);
1146
+ padding:0 14px;
1147
+ display:flex;
1148
+ align-items:center;
1149
+ justify-content:space-between;
1150
+ background:color-mix(in oklab,var(--term-bg) 96%,var(--term-fg));
1151
+ flex:none;
1152
+ gap:16px;
1153
+ }
1154
+ .topbar .connection { margin-left:auto }
1155
+ .topbar .refresh-info {
1156
+ flex:none;
1157
+ gap:10px;
1158
+ margin:0;
1159
+ font-size:var(--text-sm);
1160
+ border-left:1px solid var(--line);
1161
+ padding-left:16px;
1162
+ }
1163
+ .topbar .refresh-info .button { padding:6px 10px }
1164
+ @media(max-width:900px) {
1165
+ .topbar #updated { display:none }
1166
+ }
1167
+ @media(max-width:720px) {
1168
+ .topbar {
1169
+ padding:8px 12px;
1170
+ height:auto;
1171
+ gap:10px;
1172
+ flex-wrap:wrap;
1173
+ }
1174
+ .topbar .refresh-info { border-left:0; padding-left:0 }
1175
+ }
193
1176
  /* ── The terminal is the pane; the facts fold away underneath it ──────────── */
194
- .detail:has(#composer){display:flex;flex-direction:column;overflow:hidden;padding:0}
195
- .detail:has(#composer) #control-panel{order:0;flex:1;min-height:0;display:flex;flex-direction:column;padding:14px 16px 0}
196
- .detail:has(#composer) .conversation-header{margin:0 0 10px;padding:0;border:0;flex:none}
1177
+ .detail:has(#composer) {
1178
+ display:flex;
1179
+ flex-direction:column;
1180
+ overflow:hidden;
1181
+ padding:0;
1182
+ }
1183
+ .detail:has(#composer) #control-panel {
1184
+ order:0;
1185
+ flex:1;
1186
+ min-height:0;
1187
+ display:flex;
1188
+ flex-direction:column;
1189
+ padding:14px 16px 0;
1190
+ }
1191
+ .detail:has(#composer) .conversation-header {
1192
+ margin:0 0 10px;
1193
+ padding:0;
1194
+ border:0;
1195
+ flex:none;
1196
+ }
197
1197
  /* The console takes whatever is left, until it is dragged to an explicit height. */
198
- .detail:has(#composer) .conversation{flex:1;min-height:180px;height:auto}
1198
+ .detail:has(#composer) .conversation {
1199
+ flex:1;
1200
+ min-height:180px;
1201
+ height:auto;
1202
+ }
199
1203
  /* A dragged height is a preference, not a floor: when the composer grows (an image
200
1204
  tray, an approval card) the console yields rather than pushing the footer offscreen. */
201
- .detail:has(#composer) .conversation[style*="height"]{flex:0 1 auto}
202
- .detail:has(#composer) .conversation{min-height:120px}
203
- .detail:has(#composer) .composer,.detail:has(#composer) #approvals,.detail:has(#composer) #agent-error{flex:none}
204
- .detail:has(#composer) .composer{margin:10px 0 14px}
205
- .detail:has(#composer) #approvals{max-height:34vh;overflow:auto}
206
- .detail:has(#composer) #detail-content{order:2;flex:none;margin:0;padding:0 16px 16px;border:0}
207
- .detail:has(#composer) #detail-content[hidden]{display:none!important}
208
- .details-toggle{order:1;flex:none;display:flex;align-items:center;gap:7px;width:100%;text-align:left;border:0;border-top:1px solid var(--line);background:none;color:var(--faint);font:10px/1 var(--mono);letter-spacing:1.1px;text-transform:uppercase;padding:11px 16px}
209
- .details-toggle:hover{color:var(--muted);background:color-mix(in oklab,var(--panel) 92%,var(--w-fg))}
210
- .details-chevron{display:inline-block;transition:transform .12s ease;font-size:12px}
211
- .details-toggle[aria-expanded="true"] .details-chevron{transform:rotate(90deg)}
212
- .detail:has(#composer) .detail-top{margin:14px 0 10px}
213
- .context-chip{font-family:var(--mono);font-variant-numeric:tabular-nums}
214
- .context-chip:empty{display:none}
215
- .conversation-header{flex-wrap:wrap}
216
- @media(prefers-reduced-motion:reduce){.details-chevron{transition:none}}
217
- @media(max-width:720px){.detail:has(#composer){display:block;overflow:visible}.detail:has(#composer) .conversation{height:var(--conv-height,460px)}}
218
-
1205
+ .detail:has(#composer) .conversation[style*="height"] { flex:0 1 auto }
1206
+ .detail:has(#composer) .conversation { min-height:120px }
1207
+ .detail:has(#composer) .composer, .detail:has(#composer) #approvals, .detail:has(#composer) #agent-error {
1208
+ flex:none;
1209
+ }
1210
+ .detail:has(#composer) .composer { margin:10px 0 14px }
1211
+ .detail:has(#composer) #approvals { max-height:34vh; overflow:auto }
1212
+ .detail:has(#composer) #detail-content {
1213
+ order:2;
1214
+ flex:none;
1215
+ margin:0;
1216
+ padding:0 16px 16px;
1217
+ border:0;
1218
+ }
1219
+ .detail:has(#composer) #detail-content[hidden] { display:none!important }
1220
+ .details-toggle {
1221
+ order:1;
1222
+ flex:none;
1223
+ display:flex;
1224
+ align-items:center;
1225
+ gap:7px;
1226
+ width:100%;
1227
+ text-align:left;
1228
+ border:0;
1229
+ border-top:1px solid var(--line);
1230
+ background:none;
1231
+ color:var(--faint);
1232
+ font:10px/1 var(--mono);
1233
+ letter-spacing:1.1px;
1234
+ text-transform:uppercase;
1235
+ padding:11px 16px;
1236
+ }
1237
+ .details-toggle:hover { color:var(--muted); background:color-mix(in oklab,var(--panel) 92%,var(--term-fg)) }
1238
+ .details-chevron {
1239
+ display:inline-block;
1240
+ transition:transform .12s ease;
1241
+ font-size:var(--text-md);
1242
+ }
1243
+ .details-toggle[aria-expanded="true"] .details-chevron { transform:rotate(90deg) }
1244
+ .detail:has(#composer) .detail-top { margin:14px 0 10px }
1245
+ .context-chip { font-family:var(--mono); font-variant-numeric:tabular-nums }
1246
+ .context-chip:empty { display:none }
1247
+ .conversation-header { flex-wrap:wrap }
1248
+ @media(prefers-reduced-motion:reduce) {
1249
+ .details-chevron { transition:none }
1250
+ }
1251
+ @media(max-width:720px) {
1252
+ .detail:has(#composer) { display:block; overflow:visible }
1253
+ .detail:has(#composer) .conversation { height:var(--conv-height,460px) }
1254
+ }
219
1255
  /* Sessions a program started, rather than a person */
220
- .spawn-badge{font-size:9px;color:var(--faint);border:1px solid var(--line);border-radius:3px;padding:1px 4px;white-space:nowrap}
221
- .spawn-owner{font-size:9px;color:var(--faint);letter-spacing:.4px;white-space:nowrap}
222
- .session:has(.spawn-owner){opacity:.72}
223
- .session:has(.spawn-owner):hover,.session:has(.spawn-owner)[aria-pressed=true]{opacity:1}
224
- .session:has(.spawn-owner) .session-title{font-weight:400;color:var(--muted)}
225
- .filter[data-filter="background"]{color:var(--faint)}
226
-
1256
+ .spawn-badge {
1257
+ font-size:var(--text-2xs);
1258
+ color:var(--faint);
1259
+ border:1px solid var(--line);
1260
+ border-radius:var(--radius-sm);
1261
+ padding:1px 4px;
1262
+ white-space:nowrap;
1263
+ }
1264
+ .spawn-owner {
1265
+ font-size:var(--text-2xs);
1266
+ color:var(--faint);
1267
+ letter-spacing:.4px;
1268
+ white-space:nowrap;
1269
+ }
1270
+ .session:has(.spawn-owner) { opacity:.72 }
1271
+ .session:has(.spawn-owner):hover, .session:has(.spawn-owner)[aria-pressed=true] { opacity:1 }
1272
+ .session:has(.spawn-owner) .session-title { font-weight:400; color:var(--muted) }
1273
+ .filter[data-filter="background"] { color:var(--faint) }
227
1274
  /* Unseen output: shape and colour, never motion alone. */
228
- .unseen{width:5px;height:5px;border-radius:50%;background:var(--w-accent);flex:none;box-shadow:0 0 0 3px color-mix(in oklab,var(--w-accent) 18%,transparent)}
229
-
1275
+ .unseen {
1276
+ width:5px;
1277
+ height:5px;
1278
+ border-radius:50%;
1279
+ background:var(--term-accent);
1280
+ flex:none;
1281
+ box-shadow:0 0 0 3px color-mix(in oklab,var(--term-accent) 18%,transparent);
1282
+ }
230
1283
  /* Full bleed: no outer gutter, no rounded card. The panes meet the window edges. */
231
- main{padding:0;gap:0}
232
- .workspace{border:0;border-radius:0}
233
- .launch-panel{border-radius:0;border-inline:0;border-top:0}
234
- #error{border-radius:0;border-inline:0}
235
- @media(max-width:720px){main{padding:0}.workspace{min-height:520px}}
236
-
237
-
1284
+ main {
1285
+ max-width:none;
1286
+ margin:0;
1287
+ padding:0;
1288
+ flex:1;
1289
+ min-height:0;
1290
+ display:flex;
1291
+ flex-direction:column;
1292
+ width:100%;
1293
+ gap:0;
1294
+ }
1295
+ .workspace {
1296
+ display:grid;
1297
+ grid-template-columns:var(--split,58%) 6px minmax(0,1fr);
1298
+ border:0;
1299
+ border-radius:0;
1300
+ overflow:hidden;
1301
+ min-height:0;
1302
+ flex:1;
1303
+ margin:0;
1304
+ }
1305
+ .launch-panel {
1306
+ border-radius:0;
1307
+ border-inline:0;
1308
+ border-top:0;
1309
+ }
1310
+ #error {
1311
+ flex:none;
1312
+ margin:0;
1313
+ border-radius:0;
1314
+ border-inline:0;
1315
+ }
1316
+ @media(max-width:720px) {
1317
+ main { padding:0; display:block }
1318
+ .workspace { grid-template-columns:1fr; min-height:520px }
1319
+ }
238
1320
  /* ── Turn pipeline ────────────────────────────────────────────────────────────
239
1321
  Third line of a row: the latest turn as a CI-style steps bar, the step in
240
1322
  progress in words, and elapsed time. Colour marks the family of work; the
241
1323
  words carry the meaning, so the bar is aria-hidden and the row is labelled. */
242
- .turn{display:flex;align-items:center;gap:10px;margin-top:8px;min-width:0;font-family:var(--mono);font-size:10.5px;color:var(--muted)}
243
- .steps{display:inline-flex;gap:2px;flex:none;height:6px;max-width:132px;overflow:hidden;border-radius:3px}
244
- .steps:empty{display:none}
245
- .steps i{display:block;flex:0 0 auto;width:5px;height:100%;border-radius:1.5px;background:var(--faint);opacity:.85}
246
- .steps i.k-inspect{background:color-mix(in oklab,var(--w-fg) 42%,var(--w-bg))}
247
- .steps i.k-change{background:var(--w-accent)}
248
- .steps i.k-run{background:color-mix(in oklab,var(--w-cyan) 72%,var(--w-fg))}
249
- .steps i.k-delegate{background:color-mix(in oklab,var(--w-magenta) 45%,var(--w-fg))}
250
- .steps i.k-ask{background:var(--w-yellow)}
251
- .steps i.k-other{background:var(--faint)}
252
- .steps i.k-failed{background:color-mix(in oklab,var(--w-red) 78%,var(--w-fg));opacity:1}
253
- .step-now{display:inline-flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap;color:var(--muted)}
254
- .step-now .step-icon{flex:none;color:var(--faint);width:10px;text-align:center}
255
- .step-now.is-live{color:var(--text)}
256
- .step-now.is-live .step-icon{color:var(--w-accent)}
257
- .step-target{overflow:hidden;text-overflow:ellipsis;color:var(--faint)}
258
- .step-now.is-live .step-target{color:var(--muted)}
259
- .step-when{flex:none;color:var(--faint);font-variant-numeric:tabular-nums}
260
- .turn:has(.is-live) .step-when{color:var(--w-accent)}
1324
+ .turn {
1325
+ display:flex;
1326
+ align-items:center;
1327
+ gap:10px;
1328
+ margin-top:8px;
1329
+ min-width:0;
1330
+ font-family:var(--mono);
1331
+ font-size:10.5px;
1332
+ color:var(--muted);
1333
+ }
1334
+ .steps {
1335
+ display:inline-flex;
1336
+ gap:2px;
1337
+ flex:none;
1338
+ height:6px;
1339
+ max-width:132px;
1340
+ overflow:hidden;
1341
+ border-radius:var(--radius-sm);
1342
+ }
1343
+ .steps:empty { display:none }
1344
+ .steps i {
1345
+ display:block;
1346
+ flex:0 0 auto;
1347
+ width:5px;
1348
+ height:100%;
1349
+ border-radius:var(--radius-xs);
1350
+ background:var(--faint);
1351
+ opacity:.85;
1352
+ }
1353
+ .steps i.k-inspect { background:color-mix(in oklab,var(--term-fg) 42%,var(--term-bg)) }
1354
+ .steps i.k-change { background:var(--term-accent) }
1355
+ .steps i.k-run { background:color-mix(in oklab,var(--term-cyan) 72%,var(--term-fg)) }
1356
+ .steps i.k-delegate { background:color-mix(in oklab,var(--term-magenta) 45%,var(--term-fg)) }
1357
+ .steps i.k-ask { background:var(--term-yellow) }
1358
+ .steps i.k-other { background:var(--faint) }
1359
+ .steps i.k-failed { background:color-mix(in oklab,var(--term-red) 78%,var(--term-fg)); opacity:1 }
1360
+ .step-now {
1361
+ display:inline-flex;
1362
+ align-items:center;
1363
+ gap:6px;
1364
+ min-width:0;
1365
+ flex:1 1 auto;
1366
+ overflow:hidden;
1367
+ white-space:nowrap;
1368
+ color:var(--muted);
1369
+ }
1370
+ .step-now .step-icon {
1371
+ flex:none;
1372
+ color:var(--faint);
1373
+ width:10px;
1374
+ text-align:center;
1375
+ }
1376
+ .step-now.is-live { color:var(--text) }
1377
+ .step-now.is-live .step-icon { color:var(--term-accent) }
1378
+ .step-target {
1379
+ overflow:hidden;
1380
+ text-overflow:ellipsis;
1381
+ color:var(--faint);
1382
+ }
1383
+ .step-now.is-live .step-target { color:var(--muted) }
1384
+ .step-when {
1385
+ flex:none;
1386
+ color:var(--faint);
1387
+ font-variant-numeric:tabular-nums;
1388
+ }
1389
+ .turn:has(.is-live) .step-when { color:var(--term-accent) }
261
1390
  /* The live dot is the only motion, it is decorative, and it holds still on request. */
262
- .step-now.is-live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--w-accent);flex:none;animation:fleet-live 1.4s ease-in-out infinite}
263
- @keyframes fleet-live{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}
264
- @media(prefers-reduced-motion:reduce){.step-now.is-live::before{animation:none;opacity:1}}
265
- .session[aria-pressed=true] .turn{color:var(--text)}
266
- @media(max-width:1100px){.steps{max-width:80px}}
267
-
268
- /* ── Ask your sessions ────────────────────────────────────────────────────────
269
- One question across every transcript. Keyword cards land first; the written
270
- answer arrives a few seconds later and reorders them. Mono like the console. */
271
- .ask-panel{max-height:62vh}
272
- .ask-form{display:flex;gap:10px;padding:0 26px;align-items:stretch}
273
- .ask-search{flex:1}
274
- .ask-search input{font-family:var(--mono);font-size:13px}
275
- .ask-form .sort-label select{max-width:none;height:100%}
276
- .ask-note{padding:10px 26px 0;max-width:820px}
277
- .ask-results{padding:14px 26px 22px;font-family:var(--mono)}
278
- .ask-results:empty{display:none}
279
- .ask-head{display:flex;justify-content:space-between;gap:14px;align-items:baseline;margin-bottom:10px}
280
- .ask-question{color:var(--muted);font-size:12px;overflow-wrap:anywhere}
281
- .ask-stats{color:var(--faint);font-size:10px;white-space:nowrap;font-variant-numeric:tabular-nums}
282
- .ask-status{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin:0 0 12px}
283
- .ask-status.is-live::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--w-accent);flex:none;animation:fleet-live 1.4s ease-in-out infinite}
284
- .ask-status.is-failed{color:color-mix(in oklab,var(--w-red) 70%,var(--w-fg))}
285
- .ask-answer{border:1px solid color-mix(in oklab,var(--w-accent) 45%,var(--line));border-left:2px solid var(--w-accent);background:color-mix(in oklab,var(--w-bg) 90%,var(--w-accent));border-radius:6px;padding:12px 14px;margin-bottom:14px}
286
- .ask-answer-label{display:block;font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--w-accent);margin-bottom:6px}
287
- .ask-answer p{color:var(--text);font-size:12.5px;line-height:1.75}
288
- .ask-section{font-size:9px;letter-spacing:1.2px;text-transform:uppercase;color:var(--faint);margin:0 0 8px}
289
- .ask-hit{background:var(--panel);border:1px solid var(--line);border-left:2px solid var(--line);border-radius:6px;padding:11px 13px;margin-bottom:8px}
290
- .ask-hit[data-relevance="high"]{border-left-color:var(--w-green)}
291
- .ask-hit[data-relevance="medium"]{border-left-color:var(--w-yellow)}
292
- .ask-hit[data-relevance="low"]{border-left-color:var(--faint)}
293
- .ask-hit-head{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;margin-bottom:6px}
294
- .ask-hit-title{font-size:12.5px;font-weight:600;color:var(--text)}
295
- .ask-rel{font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:1px 5px}
296
- .ask-hit[data-relevance="high"] .ask-rel{color:var(--w-green);border-color:color-mix(in oklab,var(--w-green) 50%,var(--line))}
297
- .ask-hit-meta{font-size:10px;color:var(--faint);margin-left:auto;white-space:nowrap}
298
- .ask-live{color:var(--w-green)}
299
- .ask-context{font-size:12px;line-height:1.7;color:var(--text);margin:0 0 6px}
300
- .ask-quote{margin:0 0 8px;padding:4px 10px;border-left:2px solid color-mix(in oklab,var(--w-cyan) 60%,var(--w-bg));color:var(--muted);font-size:11px;line-height:1.6;font-style:italic;overflow-wrap:anywhere}
301
- .ask-snippets{margin:4px 0 6px}
302
- .ask-snippets summary,.ask-rest summary{cursor:pointer;font-size:10px;color:var(--faint);letter-spacing:.3px}
303
- .ask-snippets summary:hover,.ask-rest summary:hover{color:var(--muted)}
304
- .ask-snippet{font-size:11px;line-height:1.65;color:var(--muted);margin:7px 0 0;overflow-wrap:anywhere}
305
- .ask-role{display:inline-block;font-size:9px;letter-spacing:.8px;text-transform:uppercase;color:var(--w-accent);margin-right:8px;min-width:44px}
306
- .ask-hit-actions{display:flex;justify-content:end;margin-top:6px}
307
- .ask-open{padding:4px 9px;font-size:10px;font-family:var(--mono)}
308
- .ask-rest{margin-top:12px}
309
- .ask-rest>summary{padding:6px 0}
310
- .ask-rest .ask-hit{opacity:.8;margin-top:8px}
311
- .ask-empty{color:var(--muted);font-size:12px}
312
- #ask-sessions kbd{margin-left:6px;color:var(--faint)}
313
- @media(prefers-reduced-motion:reduce){.ask-status.is-live::before{animation:none}}
314
- @media(max-width:720px){.ask-form{flex-wrap:wrap;padding:0 20px}.ask-search{flex-basis:100%}.ask-note,.ask-results{padding-inline:20px}.ask-hit-meta{margin-left:0}}
315
-
1391
+ .step-now.is-live::before {
1392
+ content:"";
1393
+ width:5px;
1394
+ height:5px;
1395
+ border-radius:50%;
1396
+ background:var(--term-accent);
1397
+ flex:none;
1398
+ animation:fleet-live 1.4s ease-in-out infinite;
1399
+ }
1400
+ @keyframes fleet-live { 0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)} }
1401
+ @media(prefers-reduced-motion:reduce) {
1402
+ .step-now.is-live::before { animation:none; opacity:1 }
1403
+ }
1404
+ .session[aria-pressed=true] .turn { color:var(--text) }
1405
+ @media(max-width:1100px) {
1406
+ .steps { max-width:80px }
1407
+ }
1408
+ .ask-form {
1409
+ display:flex;
1410
+ gap:10px;
1411
+ padding:0 26px;
1412
+ align-items:stretch;
1413
+ }
1414
+ .ask-results { padding:14px 26px 22px; font-family:var(--mono) }
1415
+ .ask-results:empty { display:none }
1416
+ .ask-head {
1417
+ display:flex;
1418
+ justify-content:space-between;
1419
+ gap:14px;
1420
+ align-items:baseline;
1421
+ margin-bottom:10px;
1422
+ }
1423
+ .ask-question {
1424
+ color:var(--muted);
1425
+ font-size:var(--text-md);
1426
+ overflow-wrap:anywhere;
1427
+ }
1428
+ .ask-stats {
1429
+ color:var(--faint);
1430
+ font-size:var(--text-xs);
1431
+ white-space:nowrap;
1432
+ font-variant-numeric:tabular-nums;
1433
+ }
1434
+ .ask-status {
1435
+ display:flex;
1436
+ align-items:center;
1437
+ gap:8px;
1438
+ font-size:var(--text-sm);
1439
+ color:var(--muted);
1440
+ margin:0 0 12px;
1441
+ }
1442
+ .ask-status.is-live::before {
1443
+ content:"";
1444
+ width:5px;
1445
+ height:5px;
1446
+ border-radius:50%;
1447
+ background:var(--term-accent);
1448
+ flex:none;
1449
+ animation:fleet-live 1.4s ease-in-out infinite;
1450
+ }
1451
+ .ask-status.is-failed { color:color-mix(in oklab,var(--term-red) 70%,var(--term-fg)) }
1452
+ .ask-answer {
1453
+ border:1px solid color-mix(in oklab,var(--term-accent) 45%,var(--line));
1454
+ border-left:2px solid var(--term-accent);
1455
+ background:color-mix(in oklab,var(--term-bg) 90%,var(--term-accent));
1456
+ border-radius:var(--radius-md);
1457
+ padding:12px 14px;
1458
+ margin-bottom:14px;
1459
+ }
1460
+ .ask-answer-label {
1461
+ display:block;
1462
+ font-size:var(--text-2xs);
1463
+ letter-spacing:1.2px;
1464
+ text-transform:uppercase;
1465
+ color:var(--term-accent);
1466
+ margin-bottom:6px;
1467
+ }
1468
+ .ask-answer p {
1469
+ color:var(--text);
1470
+ font-size:12.5px;
1471
+ line-height:1.75;
1472
+ }
1473
+ .ask-section {
1474
+ font-size:var(--text-2xs);
1475
+ letter-spacing:1.2px;
1476
+ text-transform:uppercase;
1477
+ color:var(--faint);
1478
+ margin:0 0 8px;
1479
+ }
1480
+ .ask-hit {
1481
+ background:var(--panel);
1482
+ border:1px solid var(--line);
1483
+ border-left:2px solid var(--line);
1484
+ border-radius:var(--radius-md);
1485
+ padding:11px 13px;
1486
+ margin-bottom:8px;
1487
+ }
1488
+ .ask-hit[data-relevance="high"] { border-left-color:var(--term-green) }
1489
+ .ask-hit[data-relevance="medium"] { border-left-color:var(--term-yellow) }
1490
+ .ask-hit[data-relevance="low"] { border-left-color:var(--faint) }
1491
+ .ask-hit-head {
1492
+ display:flex;
1493
+ flex-wrap:wrap;
1494
+ gap:6px 12px;
1495
+ align-items:baseline;
1496
+ margin-bottom:6px;
1497
+ }
1498
+ .ask-hit-title {
1499
+ font-size:12.5px;
1500
+ font-weight:600;
1501
+ color:var(--text);
1502
+ }
1503
+ .ask-rel {
1504
+ font-size:var(--text-2xs);
1505
+ letter-spacing:.8px;
1506
+ text-transform:uppercase;
1507
+ color:var(--muted);
1508
+ border:1px solid var(--line);
1509
+ border-radius:var(--radius-sm);
1510
+ padding:1px 5px;
1511
+ }
1512
+ .ask-hit[data-relevance="high"] .ask-rel {
1513
+ color:var(--term-green);
1514
+ border-color:color-mix(in oklab,var(--term-green) 50%,var(--line));
1515
+ }
1516
+ .ask-hit-meta {
1517
+ font-size:var(--text-xs);
1518
+ color:var(--faint);
1519
+ margin-left:auto;
1520
+ white-space:nowrap;
1521
+ }
1522
+ .ask-live { color:var(--term-green) }
1523
+ .ask-context {
1524
+ font-size:var(--text-md);
1525
+ line-height:1.7;
1526
+ color:var(--text);
1527
+ margin:0 0 6px;
1528
+ }
1529
+ .ask-quote {
1530
+ margin:0 0 8px;
1531
+ padding:4px 10px;
1532
+ border-left:2px solid color-mix(in oklab,var(--term-cyan) 60%,var(--term-bg));
1533
+ color:var(--muted);
1534
+ font-size:var(--text-sm);
1535
+ line-height:1.6;
1536
+ font-style:italic;
1537
+ overflow-wrap:anywhere;
1538
+ }
1539
+ .ask-snippets { margin:4px 0 6px }
1540
+ .ask-snippets summary, .ask-rest summary {
1541
+ cursor:pointer;
1542
+ font-size:var(--text-xs);
1543
+ color:var(--faint);
1544
+ letter-spacing:.3px;
1545
+ }
1546
+ .ask-snippets summary:hover, .ask-rest summary:hover { color:var(--muted) }
1547
+ .ask-snippet {
1548
+ font-size:var(--text-sm);
1549
+ line-height:1.65;
1550
+ color:var(--muted);
1551
+ margin:7px 0 0;
1552
+ overflow-wrap:anywhere;
1553
+ }
1554
+ .ask-role {
1555
+ display:inline-block;
1556
+ font-size:var(--text-2xs);
1557
+ letter-spacing:.8px;
1558
+ text-transform:uppercase;
1559
+ color:var(--term-accent);
1560
+ margin-right:8px;
1561
+ min-width:44px;
1562
+ }
1563
+ .ask-hit-actions {
1564
+ display:flex;
1565
+ justify-content:end;
1566
+ margin-top:6px;
1567
+ }
1568
+ .ask-open {
1569
+ padding:4px 9px;
1570
+ font-size:var(--text-xs);
1571
+ font-family:var(--mono);
1572
+ }
1573
+ .ask-rest { margin-top:12px }
1574
+ .ask-rest>summary { padding:6px 0 }
1575
+ .ask-rest .ask-hit { opacity:.8; margin-top:8px }
1576
+ .ask-empty { color:var(--muted); font-size:var(--text-md) }
1577
+ #ask-sessions kbd { margin-left:6px; color:var(--faint) }
1578
+ @media(prefers-reduced-motion:reduce) {
1579
+ .ask-status.is-live::before { animation:none }
1580
+ }
1581
+ @media(max-width:720px) {
1582
+ .ask-form { flex-wrap:wrap; padding:0 20px }
1583
+ .ask-results { padding-inline:20px }
1584
+ .ask-hit-meta { margin-left:0 }
1585
+ }
316
1586
  /* ── Image attachments ────────────────────────────────────────────────────── */
317
- .attach-tray{display:flex;gap:10px;flex-wrap:wrap;padding:8px 0 10px}
318
- .attach-thumb{position:relative;margin:0;width:112px;font-family:var(--mono);font-size:9px;color:var(--faint)}
319
- .attach-thumb img{display:block;width:112px;height:80px;object-fit:cover;border-radius:5px;border:1px solid var(--line);background:var(--w-bg)}
320
- .attach-thumb figcaption{margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
321
- .attach-remove{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:50%;border:0;background:color-mix(in oklab,var(--w-bg) 80%,transparent);color:var(--text);font-size:13px;line-height:1;padding:0;display:flex;align-items:center;justify-content:center}
322
- .attach-remove:hover{background:color-mix(in oklab,var(--w-red) 60%,var(--w-bg))}
323
- .composer.is-dropping textarea{border-color:var(--w-accent);box-shadow:0 0 0 1px color-mix(in oklab,var(--w-accent) 45%,transparent);background:color-mix(in oklab,var(--w-bg) 92%,var(--w-accent))}
324
- .block-attachments{display:flex;gap:8px;flex-wrap:wrap;padding:10px 13px 0}
325
- .block-attachments a{display:block;border-radius:5px;overflow:hidden;border:1px solid var(--line);background:var(--w-bg)}
326
- .block-attachments img{display:block;max-width:280px;max-height:200px;object-fit:contain}
327
- .block-attachments+.block-prose{padding-top:8px}
328
-
1587
+ .attach-tray {
1588
+ display:flex;
1589
+ gap:10px;
1590
+ flex-wrap:wrap;
1591
+ padding:8px 0 10px;
1592
+ }
1593
+ .attach-thumb {
1594
+ position:relative;
1595
+ margin:0;
1596
+ width:112px;
1597
+ font-family:var(--mono);
1598
+ font-size:var(--text-2xs);
1599
+ color:var(--faint);
1600
+ }
1601
+ .attach-thumb img {
1602
+ display:block;
1603
+ width:112px;
1604
+ height:80px;
1605
+ object-fit:cover;
1606
+ border-radius:var(--radius-md);
1607
+ border:1px solid var(--line);
1608
+ background:var(--term-bg);
1609
+ }
1610
+ .attach-thumb figcaption {
1611
+ margin-top:4px;
1612
+ overflow:hidden;
1613
+ text-overflow:ellipsis;
1614
+ white-space:nowrap;
1615
+ }
1616
+ .attach-remove {
1617
+ position:absolute;
1618
+ top:4px;
1619
+ right:4px;
1620
+ width:18px;
1621
+ height:18px;
1622
+ border-radius:50%;
1623
+ border:0;
1624
+ background:color-mix(in oklab,var(--term-bg) 80%,transparent);
1625
+ color:var(--text);
1626
+ font-size:var(--text-lg);
1627
+ line-height:1;
1628
+ padding:0;
1629
+ display:flex;
1630
+ align-items:center;
1631
+ justify-content:center;
1632
+ }
1633
+ .attach-remove:hover { background:color-mix(in oklab,var(--term-red) 60%,var(--term-bg)) }
1634
+ .composer.is-dropping textarea {
1635
+ border-color:var(--term-accent);
1636
+ box-shadow:0 0 0 1px color-mix(in oklab,var(--term-accent) 45%,transparent);
1637
+ background:color-mix(in oklab,var(--term-bg) 92%,var(--term-accent));
1638
+ }
1639
+ .block-attachments {
1640
+ display:flex;
1641
+ gap:8px;
1642
+ flex-wrap:wrap;
1643
+ padding:10px 13px 0;
1644
+ }
1645
+ .block-attachments a {
1646
+ display:block;
1647
+ border-radius:var(--radius-md);
1648
+ overflow:hidden;
1649
+ border:1px solid var(--line);
1650
+ background:var(--term-bg);
1651
+ }
1652
+ .block-attachments img {
1653
+ display:block;
1654
+ max-width:280px;
1655
+ max-height:200px;
1656
+ object-fit:contain;
1657
+ }
1658
+ .block-attachments+.block-prose { padding-top:8px }
329
1659
  /* A Fleet conversation currently driven by a terminal */
330
- .badge.elsewhere{color:var(--stale)}
331
- .badge.elsewhere.busy{color:var(--busy)}
332
- #composer-hint.is-held{color:var(--stale);max-width:none}
333
-
1660
+ .badge.elsewhere { color:var(--stale) }
1661
+ .badge.elsewhere.busy { color:var(--busy) }
1662
+ #composer-hint.is-held { color:var(--stale); max-width:none }
334
1663
  /* Shared dialogs: a quiet, friendly layer above the control room. */
335
- body[data-modal]{overflow:hidden}
336
- .modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:32px;background:color-mix(in oklab,var(--bg) 72%,transparent);backdrop-filter:blur(5px)}
337
- .modal{width:min(960px,100%);max-height:min(820px,calc(100dvh - 64px));display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--panel);border:1px solid color-mix(in oklab,var(--line) 70%,var(--accent));border-radius:20px;box-shadow:0 32px 100px #0007,0 2px 8px #0003;color:var(--text)}
338
- .modal-head{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:32px 32px 25px}
339
- .modal-heading{display:flex;align-items:flex-start;gap:18px;min-width:0}
340
- .modal-spark{color:var(--accent);font-size:42px;line-height:1;margin-top:14px;transform:rotate(-12deg)}
341
- .modal-eyebrow{display:block;color:var(--accent);font-size:9px;font-weight:650;letter-spacing:1.8px;margin-bottom:9px}
342
- .modal h2{font-size:27px;font-weight:550;letter-spacing:-.8px;line-height:1.25;margin:0}
343
- .modal-heading p{font-size:12px;margin-top:8px;line-height:1.6}
344
- .modal-close{flex:none;width:36px;height:36px;display:grid;place-items:center;border:1px solid transparent;border-radius:50%;background:transparent;color:var(--muted);font-size:15px}
345
- .modal-close:hover{background:var(--raised);border-color:var(--line);color:var(--text)}
346
- .modal-body{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--line) transparent}
347
- .modal :focus-visible{outline:2px solid var(--accent);outline-offset:3px}
348
- .modal .button{border-radius:8px;min-height:40px;padding:10px 17px;white-space:nowrap}
349
- .modal .resume{color:var(--bg);background:var(--accent)}
350
- .modal .resume:hover{background:color-mix(in oklab,var(--accent) 82%,var(--text))}
351
- .modal-foot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 32px;border-top:1px solid var(--line);color:var(--muted);font-size:10px;background:color-mix(in oklab,var(--bg) 35%,var(--panel))}
352
- .modal-foot kbd{padding:2px 5px;margin-right:4px;color:var(--muted);background:var(--panel)}
353
- .shortcut-gap{margin-left:12px}
354
- .modal-status-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent);vertical-align:middle;margin-right:8px}
355
- .ask-bar{flex:none;display:flex;align-items:center;gap:12px;margin:0 32px 20px;padding:9px 10px 9px 16px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
356
- .ask-bar:focus-within{border-color:color-mix(in oklab,var(--accent) 65%,var(--line));box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 9%,transparent)}
357
- .ask-input-wrap{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
358
- .ask-icon{color:var(--accent);font-size:28px;line-height:1}
359
- #ask-input{width:100%;min-width:0;padding:10px 0;background:none;border:0;color:var(--text);font-family:inherit;font-size:14px;line-height:1.5}
360
- #ask-input:focus-visible{outline:0}
361
- .modal .ask-model{height:36px;max-width:100px;background:transparent;border:0;font-size:11px;padding:0 8px;color:var(--muted)}
362
- .ask-content{padding:0 32px 24px;min-height:260px}
363
- .suggestion-heading{display:flex;justify-content:space-between;gap:12px;font-size:9px;letter-spacing:1.2px;color:var(--muted);padding:7px 2px 12px}
364
- .suggestion-heading>span+span{letter-spacing:0;font-size:10px}
365
- .ask-suggestion{width:100%;display:flex;align-items:center;gap:16px;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:17px 12px;border-radius:8px;color:var(--muted)}
366
- .ask-suggestion:last-child{border-bottom-color:transparent}
367
- .ask-suggestion:hover{background:var(--raised);color:var(--text)}
368
- .ask-suggestion>span:last-child{margin-left:auto;color:var(--faint)}
369
- .suggestion-symbol{width:26px;text-align:center;font-size:22px;color:var(--accent)}
370
- .ask-suggestion strong{display:block;font-size:13px;font-weight:550;color:var(--text);margin-bottom:5px}
371
- .ask-suggestion small{display:block;font-size:11px;color:var(--muted)}
372
- .modal-ask .ask-head{flex-wrap:wrap;padding:6px 0 12px;margin:0}
373
- .modal-ask .ask-stats{white-space:normal}
374
- .modal-ask .ask-answer{border:0;border-radius:10px;padding:20px 22px;margin:8px 0 16px;background:color-mix(in oklab,var(--accent) 8%,var(--panel))}
375
- .modal-ask .ask-answer p{font-size:14px;line-height:1.8}
376
- .modal-ask .ask-hit{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:20px 4px;margin:0;background:transparent}
377
- .modal-ask .ask-hit-title{font-size:14px}
378
- .modal-ask .ask-hit-meta{white-space:normal}
379
- .modal-ask .ask-hit-actions{margin-top:12px}
380
- .modal-ask .ask-open{min-height:34px;font-family:inherit;font-size:11px;padding:7px 11px}
381
- .modal-ask .ask-empty{padding:32px 0}
382
- .modal-launch{max-height:min(820px,calc(100dvh - 64px));margin:0;overflow:hidden;border:1px solid color-mix(in oklab,var(--line) 70%,var(--accent));border-radius:20px}
383
- .modal-launch form{padding:0}
384
- .launch-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:30px;padding:3px 32px 28px}
385
- .modal-launch .launch-task{display:flex;flex-direction:column;min-width:0}
386
- .modal-launch label{font-size:12px;font-weight:500;color:var(--text);gap:8px}
387
- .modal-launch .launch-task>label{margin-bottom:12px}
388
- .modal-launch .launch-task textarea{flex:1;min-height:240px;resize:vertical;border-radius:12px;padding:18px;font-family:inherit;font-size:14px;line-height:1.8}
389
- .modal-launch textarea::placeholder{color:var(--muted)}
390
- .modal-launch .launch-task-note{margin-top:12px;color:var(--muted);font-weight:400}
391
- .modal-launch .launch-fields{grid-template-columns:minmax(0,1fr);gap:19px;margin:0;padding-left:26px;border-left:1px solid var(--line)}
392
- .modal-launch .launch-fields input,.modal-launch .launch-fields select{max-width:none;width:100%;height:42px;padding:10px 12px;border-radius:8px;background:var(--bg);font-size:12px;color:var(--text)}
393
- .modal-launch .note{color:var(--muted);font-weight:400;font-size:10px;line-height:1.6}
394
- .field-optional{float:right;color:var(--muted);font-size:10px;font-weight:400}
395
- .modal-launch .launch-footer{margin:0;padding:18px 32px;gap:16px;border-top:1px solid var(--line);background:color-mix(in oklab,var(--bg) 35%,var(--panel))}
396
- .modal-launch .form-error{margin:0;padding:0 32px 18px}
397
- @media(prefers-reduced-motion:no-preference){
398
- .modal{animation:modal-arrive .2s cubic-bezier(.16,1,.3,1)}
399
- .modal-backdrop{animation:modal-reveal .15s ease-out}
400
- .modal button{transition:background .15s,color .15s}
401
- @keyframes modal-arrive{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
402
- @keyframes modal-reveal{from{opacity:0}to{opacity:1}}
403
- }
404
- @media(max-width:720px){
405
- .modal-backdrop{padding:12px}
406
- .modal,.modal-launch{max-height:calc(100dvh - 24px);border-radius:16px}
407
- .modal-head{padding:24px 20px 20px;gap:8px}
408
- .modal-heading{gap:12px}
409
- .modal-spark{font-size:30px;margin-top:18px}
410
- .modal h2{font-size:23px}
411
- .modal-heading p{font-size:11px}
412
- .modal-eyebrow{font-size:8px;letter-spacing:1.2px}
413
- .ask-bar{margin:0 20px 16px;gap:6px;padding:8px;flex-wrap:wrap}
414
- .ask-input-wrap{flex-basis:100%;padding:0 5px}
415
- .modal .ask-model{margin-right:auto}
416
- .ask-content{padding:0 20px 20px;min-height:220px}
417
- .suggestion-heading>span+span{display:none}
418
- .modal-foot{padding:14px 20px;flex-wrap:wrap;gap:10px}
419
- .launch-layout{grid-template-columns:minmax(0,1fr);padding:0 20px 24px;gap:24px}
420
- .modal-launch .launch-task textarea{min-height:180px}
421
- .modal-launch .launch-fields{padding:22px 0 0;border-left:0;border-top:1px solid var(--line);gap:18px}
422
- .modal-launch .launch-footer{padding:16px 20px;flex-direction:row;flex-wrap:wrap}
423
- .modal-launch .launch-footer .button{margin-left:auto}
424
- .modal-launch .form-error{padding-inline:20px}
1664
+ body[data-modal] { overflow:hidden }
1665
+ .modal-backdrop {
1666
+ position:fixed;
1667
+ inset:0;
1668
+ z-index:100;
1669
+ display:flex;
1670
+ align-items:center;
1671
+ justify-content:center;
1672
+ padding:32px;
1673
+ background:color-mix(in oklab,var(--bg) 72%,transparent);
1674
+ backdrop-filter:blur(5px);
1675
+ }
1676
+ .modal {
1677
+ width:min(960px,100%);
1678
+ max-height:min(820px,calc(100dvh - 64px));
1679
+ display:flex;
1680
+ flex-direction:column;
1681
+ min-height:0;
1682
+ overflow:hidden;
1683
+ background:var(--panel);
1684
+ border:1px solid color-mix(in oklab,var(--line) 70%,var(--accent));
1685
+ border-radius:var(--radius-2xl);
1686
+ box-shadow:0 32px 100px #0007,0 2px 8px #0003;
1687
+ color:var(--text);
1688
+ }
1689
+ .modal-head {
1690
+ flex:none;
1691
+ display:flex;
1692
+ align-items:flex-start;
1693
+ justify-content:space-between;
1694
+ gap:20px;
1695
+ padding:32px 32px 25px;
1696
+ }
1697
+ .modal-heading {
1698
+ display:flex;
1699
+ align-items:flex-start;
1700
+ gap:18px;
1701
+ min-width:0;
1702
+ }
1703
+ .modal-spark {
1704
+ color:var(--accent);
1705
+ font-size:42px;
1706
+ line-height:1;
1707
+ margin-top:14px;
1708
+ transform:rotate(-12deg);
1709
+ }
1710
+ .modal-eyebrow {
1711
+ display:block;
1712
+ color:var(--accent);
1713
+ font-size:var(--text-2xs);
1714
+ font-weight:650;
1715
+ letter-spacing:1.8px;
1716
+ margin-bottom:9px;
1717
+ }
1718
+ .modal h2 {
1719
+ font-size:27px;
1720
+ font-weight:550;
1721
+ letter-spacing:-.8px;
1722
+ line-height:1.25;
1723
+ margin:0;
1724
+ }
1725
+ .modal-heading p {
1726
+ font-size:var(--text-md);
1727
+ margin-top:8px;
1728
+ line-height:1.6;
1729
+ }
1730
+ .modal-close {
1731
+ flex:none;
1732
+ width:36px;
1733
+ height:36px;
1734
+ display:grid;
1735
+ place-items:center;
1736
+ border:1px solid transparent;
1737
+ border-radius:50%;
1738
+ background:transparent;
1739
+ color:var(--muted);
1740
+ font-size:15px;
1741
+ }
1742
+ .modal-close:hover {
1743
+ background:var(--raised);
1744
+ border-color:var(--line);
1745
+ color:var(--text);
1746
+ }
1747
+ .modal-body {
1748
+ min-height:0;
1749
+ overflow:auto;
1750
+ overscroll-behavior:contain;
1751
+ scrollbar-color:var(--line) transparent;
1752
+ }
1753
+ .modal :focus-visible { outline:2px solid var(--accent); outline-offset:3px }
1754
+ .modal .button {
1755
+ border-radius:var(--radius-lg);
1756
+ min-height:40px;
1757
+ padding:10px 17px;
1758
+ white-space:nowrap;
1759
+ }
1760
+ .modal .resume { color:var(--bg); background:var(--accent) }
1761
+ .modal .resume:hover { background:color-mix(in oklab,var(--accent) 82%,var(--text)) }
1762
+ .modal-foot {
1763
+ flex:none;
1764
+ display:flex;
1765
+ align-items:center;
1766
+ justify-content:space-between;
1767
+ gap:16px;
1768
+ padding:16px 32px;
1769
+ border-top:1px solid var(--line);
1770
+ color:var(--muted);
1771
+ font-size:var(--text-xs);
1772
+ background:color-mix(in oklab,var(--bg) 35%,var(--panel));
1773
+ }
1774
+ .modal-foot kbd {
1775
+ padding:2px 5px;
1776
+ margin-right:4px;
1777
+ color:var(--muted);
1778
+ background:var(--panel);
1779
+ }
1780
+ .shortcut-gap { margin-left:12px }
1781
+ .modal-status-dot {
1782
+ display:inline-block;
1783
+ width:5px;
1784
+ height:5px;
1785
+ border-radius:50%;
1786
+ background:var(--accent);
1787
+ vertical-align:middle;
1788
+ margin-right:8px;
1789
+ }
1790
+ .ask-bar {
1791
+ flex:none;
1792
+ display:flex;
1793
+ align-items:center;
1794
+ gap:12px;
1795
+ margin:0 32px 20px;
1796
+ padding:9px 10px 9px 16px;
1797
+ border:1px solid var(--line);
1798
+ border-radius:var(--radius-xl);
1799
+ background:var(--bg);
1800
+ }
1801
+ .ask-bar:focus-within {
1802
+ border-color:color-mix(in oklab,var(--accent) 65%,var(--line));
1803
+ box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 9%,transparent);
1804
+ }
1805
+ .ask-input-wrap {
1806
+ display:flex;
1807
+ align-items:center;
1808
+ gap:12px;
1809
+ flex:1;
1810
+ min-width:0;
1811
+ }
1812
+ .ask-icon {
1813
+ color:var(--accent);
1814
+ font-size:28px;
1815
+ line-height:1;
1816
+ }
1817
+ #ask-input {
1818
+ width:100%;
1819
+ min-width:0;
1820
+ padding:10px 0;
1821
+ background:none;
1822
+ border:0;
1823
+ color:var(--text);
1824
+ font-family:inherit;
1825
+ font-size:14px;
1826
+ line-height:1.5;
1827
+ }
1828
+ #ask-input:focus-visible { outline:0 }
1829
+ .modal .ask-model {
1830
+ height:36px;
1831
+ max-width:100px;
1832
+ background:transparent;
1833
+ border:0;
1834
+ font-size:var(--text-sm);
1835
+ padding:0 8px;
1836
+ color:var(--muted);
1837
+ }
1838
+ .ask-content { padding:0 32px 24px; min-height:260px }
1839
+ .suggestion-heading {
1840
+ display:flex;
1841
+ justify-content:space-between;
1842
+ gap:12px;
1843
+ font-size:var(--text-2xs);
1844
+ letter-spacing:1.2px;
1845
+ color:var(--muted);
1846
+ padding:7px 2px 12px;
1847
+ }
1848
+ .suggestion-heading>span+span { letter-spacing:0; font-size:var(--text-xs) }
1849
+ .ask-suggestion {
1850
+ width:100%;
1851
+ display:flex;
1852
+ align-items:center;
1853
+ gap:16px;
1854
+ text-align:left;
1855
+ border:0;
1856
+ border-bottom:1px solid var(--line);
1857
+ background:transparent;
1858
+ padding:17px 12px;
1859
+ border-radius:var(--radius-lg);
1860
+ color:var(--muted);
1861
+ }
1862
+ .ask-suggestion:last-child { border-bottom-color:transparent }
1863
+ .ask-suggestion:hover { background:var(--raised); color:var(--text) }
1864
+ .ask-suggestion>span:last-child { margin-left:auto; color:var(--faint) }
1865
+ .suggestion-symbol {
1866
+ width:26px;
1867
+ text-align:center;
1868
+ font-size:22px;
1869
+ color:var(--accent);
1870
+ }
1871
+ .ask-suggestion strong {
1872
+ display:block;
1873
+ font-size:var(--text-lg);
1874
+ font-weight:550;
1875
+ color:var(--text);
1876
+ margin-bottom:5px;
1877
+ }
1878
+ .ask-suggestion small {
1879
+ display:block;
1880
+ font-size:var(--text-sm);
1881
+ color:var(--muted);
1882
+ }
1883
+ .modal-ask .ask-head {
1884
+ flex-wrap:wrap;
1885
+ padding:6px 0 12px;
1886
+ margin:0;
1887
+ }
1888
+ .modal-ask .ask-stats { white-space:normal }
1889
+ .modal-ask .ask-answer {
1890
+ border:0;
1891
+ border-radius:var(--radius-lg);
1892
+ padding:20px 22px;
1893
+ margin:8px 0 16px;
1894
+ background:color-mix(in oklab,var(--accent) 8%,var(--panel));
1895
+ }
1896
+ .modal-ask .ask-answer p { font-size:14px; line-height:1.8 }
1897
+ .modal-ask .ask-hit {
1898
+ border:0;
1899
+ border-bottom:1px solid var(--line);
1900
+ border-radius:0;
1901
+ padding:20px 4px;
1902
+ margin:0;
1903
+ background:transparent;
1904
+ }
1905
+ .modal-ask .ask-hit-title { font-size:14px }
1906
+ .modal-ask .ask-hit-meta { white-space:normal }
1907
+ .modal-ask .ask-hit-actions { margin-top:12px }
1908
+ .modal-ask .ask-open {
1909
+ min-height:34px;
1910
+ font-family:inherit;
1911
+ font-size:var(--text-sm);
1912
+ padding:7px 11px;
1913
+ }
1914
+ .modal-ask .ask-empty { padding:32px 0 }
1915
+ .modal-launch {
1916
+ max-height:min(820px,calc(100dvh - 64px));
1917
+ margin:0;
1918
+ overflow:hidden;
1919
+ border:1px solid color-mix(in oklab,var(--line) 70%,var(--accent));
1920
+ border-radius:var(--radius-2xl);
1921
+ }
1922
+ .modal-launch form { padding:0 }
1923
+ .launch-layout {
1924
+ display:grid;
1925
+ grid-template-columns:minmax(0,1fr) 290px;
1926
+ gap:30px;
1927
+ padding:3px 32px 28px;
1928
+ }
1929
+ .modal-launch .launch-task {
1930
+ display:flex;
1931
+ flex-direction:column;
1932
+ min-width:0;
1933
+ }
1934
+ .modal-launch label {
1935
+ font-size:var(--text-md);
1936
+ font-weight:500;
1937
+ color:var(--text);
1938
+ gap:8px;
1939
+ }
1940
+ .modal-launch .launch-task>label { margin-bottom:12px }
1941
+ .modal-launch .launch-task textarea {
1942
+ flex:1;
1943
+ min-height:240px;
1944
+ resize:vertical;
1945
+ border-radius:var(--radius-xl);
1946
+ padding:18px;
1947
+ font-family:inherit;
1948
+ font-size:14px;
1949
+ line-height:1.8;
1950
+ }
1951
+ .modal-launch textarea::placeholder { color:var(--muted) }
1952
+ .modal-launch .launch-task-note {
1953
+ margin-top:12px;
1954
+ color:var(--muted);
1955
+ font-weight:400;
1956
+ }
1957
+ .modal-launch .launch-fields {
1958
+ grid-template-columns:minmax(0,1fr);
1959
+ gap:19px;
1960
+ margin:0;
1961
+ padding-left:26px;
1962
+ border-left:1px solid var(--line);
1963
+ }
1964
+ .modal-launch .launch-fields input, .modal-launch .launch-fields select {
1965
+ max-width:none;
1966
+ width:100%;
1967
+ height:42px;
1968
+ padding:10px 12px;
1969
+ border-radius:var(--radius-lg);
1970
+ background:var(--bg);
1971
+ font-size:var(--text-md);
1972
+ color:var(--text);
1973
+ }
1974
+ .modal-launch .note {
1975
+ color:var(--muted);
1976
+ font-weight:400;
1977
+ font-size:var(--text-xs);
1978
+ line-height:1.6;
1979
+ }
1980
+ .field-optional {
1981
+ float:right;
1982
+ color:var(--muted);
1983
+ font-size:var(--text-xs);
1984
+ font-weight:400;
1985
+ }
1986
+ .modal-launch .launch-footer {
1987
+ margin:0;
1988
+ padding:18px 32px;
1989
+ gap:16px;
1990
+ border-top:1px solid var(--line);
1991
+ background:color-mix(in oklab,var(--bg) 35%,var(--panel));
1992
+ }
1993
+ .modal-launch .form-error { margin:0; padding:0 32px 18px }
1994
+ @media(prefers-reduced-motion:no-preference) {
1995
+ .modal { animation:modal-arrive .2s cubic-bezier(.16,1,.3,1) }
1996
+ .modal-backdrop { animation:modal-reveal .15s ease-out }
1997
+ .modal button { transition:background .15s,color .15s }
1998
+ @keyframes modal-arrive { from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none} }
1999
+ @keyframes modal-reveal { from{opacity:0}to{opacity:1} }
2000
+ }
2001
+ @media(max-width:720px) {
2002
+ .modal-backdrop { padding:12px }
2003
+ .modal, .modal-launch { max-height:calc(100dvh - 24px); border-radius:var(--radius-xl) }
2004
+ .modal-head { padding:24px 20px 20px; gap:8px }
2005
+ .modal-heading { gap:12px }
2006
+ .modal-spark { font-size:30px; margin-top:18px }
2007
+ .modal h2 { font-size:23px }
2008
+ .modal-heading p { font-size:var(--text-sm) }
2009
+ .modal-eyebrow { font-size:8px; letter-spacing:1.2px }
2010
+ .ask-bar {
2011
+ margin:0 20px 16px;
2012
+ gap:6px;
2013
+ padding:8px;
2014
+ flex-wrap:wrap;
2015
+ }
2016
+ .ask-input-wrap { flex-basis:100%; padding:0 5px }
2017
+ .modal .ask-model { margin-right:auto }
2018
+ .ask-content { padding:0 20px 20px; min-height:220px }
2019
+ .suggestion-heading>span+span { display:none }
2020
+ .modal-foot {
2021
+ padding:14px 20px;
2022
+ flex-wrap:wrap;
2023
+ gap:10px;
2024
+ }
2025
+ .launch-layout {
2026
+ grid-template-columns:minmax(0,1fr);
2027
+ padding:0 20px 24px;
2028
+ gap:24px;
2029
+ }
2030
+ .modal-launch .launch-task textarea { min-height:180px }
2031
+ .modal-launch .launch-fields {
2032
+ padding:22px 0 0;
2033
+ border-left:0;
2034
+ border-top:1px solid var(--line);
2035
+ gap:18px;
2036
+ }
2037
+ .modal-launch .launch-footer {
2038
+ padding:16px 20px;
2039
+ flex-direction:row;
2040
+ flex-wrap:wrap;
2041
+ }
2042
+ .modal-launch .launch-footer .button { margin-left:auto }
2043
+ .modal-launch .form-error { padding-inline:20px }
425
2044
  }
426
-
427
2045
  /* ── The archive ──────────────────────────────────────────────────────────────
428
2046
  A strip between the filters and the list, present only where putting sessions
429
2047
  away is the thing you came to do: under Offline, and inside Archived itself. */
430
- .archive-bar{flex:none;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 18px;border-top:1px solid var(--line);background:color-mix(in oklab,var(--panel) 80%,var(--bg));font-size:11px;color:var(--muted)}
431
- .archive-text{min-width:0}
432
- .archive-days{max-width:96px;height:26px;padding:0 6px;font-size:11px}
433
- .archive-bar .button{padding:5px 10px;font-size:11px}
434
- .archive-none{color:var(--faint)}
435
- .archive-auto{display:flex;align-items:center;gap:6px;margin-left:auto;color:var(--faint);white-space:nowrap;cursor:pointer}
436
- .archive-auto:hover{color:var(--muted)}
437
- .archive-auto input{accent-color:var(--accent);margin:0}
438
- .filter[data-filter="archived"]{color:var(--faint)}
2048
+ .archive-bar {
2049
+ flex:none;
2050
+ display:flex;
2051
+ align-items:center;
2052
+ gap:10px;
2053
+ flex-wrap:wrap;
2054
+ padding:9px 18px;
2055
+ border-top:1px solid var(--line);
2056
+ background:color-mix(in oklab,var(--panel) 80%,var(--bg));
2057
+ font-size:var(--text-sm);
2058
+ color:var(--muted);
2059
+ }
2060
+ .archive-text { min-width:0 }
2061
+ .archive-days {
2062
+ max-width:96px;
2063
+ height:26px;
2064
+ padding:0 6px;
2065
+ font-size:var(--text-sm);
2066
+ }
2067
+ .archive-bar .button { padding:5px 10px; font-size:var(--text-sm) }
2068
+ .archive-none { color:var(--faint) }
2069
+ .archive-auto {
2070
+ display:flex;
2071
+ align-items:center;
2072
+ gap:6px;
2073
+ margin-left:auto;
2074
+ color:var(--faint);
2075
+ white-space:nowrap;
2076
+ cursor:pointer;
2077
+ }
2078
+ .archive-auto:hover { color:var(--muted) }
2079
+ .archive-auto input { accent-color:var(--accent); margin:0 }
2080
+ .filter[data-filter="archived"] { color:var(--faint) }
439
2081
  /* An archived row is legible but visibly set aside, the way Background rows are. */
440
- .session:has(.archived-tag){opacity:.7}
441
- .session:has(.archived-tag):hover,.session:has(.archived-tag)[aria-pressed=true]{opacity:1}
442
- .archived-tag{font-size:9px;color:var(--faint);border:1px solid var(--line);border-radius:3px;padding:1px 4px;white-space:nowrap}
443
- .archived-note{margin-top:14px}
444
- .detail-buttons{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:end}
445
- @media(max-width:720px){.archive-bar{padding-inline:12px}.archive-auto{margin-left:0}}
446
-
2082
+ .session:has(.archived-tag) { opacity:.7 }
2083
+ .session:has(.archived-tag):hover, .session:has(.archived-tag)[aria-pressed=true] { opacity:1 }
2084
+ .archived-tag {
2085
+ font-size:var(--text-2xs);
2086
+ color:var(--faint);
2087
+ border:1px solid var(--line);
2088
+ border-radius:var(--radius-sm);
2089
+ padding:1px 4px;
2090
+ white-space:nowrap;
2091
+ }
2092
+ .archived-note { margin-top:14px }
2093
+ .detail-buttons {
2094
+ display:flex;
2095
+ gap:8px;
2096
+ align-items:center;
2097
+ flex-wrap:wrap;
2098
+ justify-content:end;
2099
+ }
2100
+ @media(max-width:720px) {
2101
+ .archive-bar { padding-inline:12px }
2102
+ .archive-auto { margin-left:0 }
2103
+ }
447
2104
  /* ---- Update pill -------------------------------------------------------- */
448
2105
  /* Shown only when npm has a newer Fleet. Accent-tinted so it reads as an offer
449
2106
  sitting next to Refresh, never as an error. */
450
- .topbar .update-pill{border-color:color-mix(in oklab,var(--accent) 55%,var(--line));background:color-mix(in oklab,var(--accent) 14%,var(--raised));color:color-mix(in oklab,var(--accent) 72%,var(--text));font-weight:600;font-variant-numeric:tabular-nums}
451
- .topbar .update-pill:hover:not(:disabled){background:color-mix(in oklab,var(--accent) 24%,var(--raised))}
452
- .topbar .update-pill:disabled{opacity:.72;cursor:default}
453
- @media(prefers-reduced-motion:no-preference){.update-pill:not([hidden]){animation:update-pill-in .3s ease-out}}
454
- @keyframes update-pill-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
455
-
456
- .initiative-tag{display:inline-block;max-width:100%;margin-top:6px;padding:2px 6px;border:1px solid var(--line);border-radius:3px;color:var(--muted);font-size:10px;overflow-wrap:anywhere}
457
- .block[data-tool="Task"],.block[data-tool="Agent"]{border-left:2px solid var(--accent)}
458
- .block[data-tool="Task"] .block-tool,.block[data-tool="Agent"] .block-tool{white-space:normal;overflow-wrap:anywhere}
459
- .delegation-mandate,.delegation-report{margin:0 13px;padding:12px 0}
460
- .delegation-report{border-top:1px solid var(--line)}
461
- .delegation-mandate>summary,.delegation-report>summary{cursor:pointer;color:var(--muted);font-size:11px;font-weight:600}
462
- .delegation-mandate>summary:focus-visible,.delegation-report>summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
463
- .delegation-mandate .block-prose,.delegation-report .block-prose{padding:12px 0 0}
464
- .delegation-mandate .block-plain,.delegation-report .block-plain{white-space:pre-wrap;overflow-wrap:anywhere}
465
-
466
- /* The version belongs to the wordmark. With connection state moved to the status bar
467
- it is the only thing left between the brand and the buttons, so it is pinned here
468
- rather than left to drift into the middle of the bar. */
469
- .app-version{align-self:center;margin-left:8px;margin-right:auto;color:var(--muted);font-size:10px;letter-spacing:.04em;font-variant-numeric:tabular-nums}
470
- .session-cost{font-variant-numeric:tabular-nums}
471
-
2107
+ .topbar .update-pill {
2108
+ border-color:color-mix(in oklab,var(--accent) 55%,var(--line));
2109
+ background:color-mix(in oklab,var(--accent) 14%,var(--raised));
2110
+ color:color-mix(in oklab,var(--accent) 72%,var(--text));
2111
+ font-weight:600;
2112
+ font-variant-numeric:tabular-nums;
2113
+ }
2114
+ .topbar .update-pill:hover:not(:disabled) { background:color-mix(in oklab,var(--accent) 24%,var(--raised)) }
2115
+ .topbar .update-pill:disabled { opacity:.72; cursor:default }
2116
+ @media(prefers-reduced-motion:no-preference) {
2117
+ .update-pill:not([hidden]) { animation:update-pill-in .3s ease-out }
2118
+ }
2119
+ @keyframes update-pill-in { from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none} }
2120
+ .initiative-tag {
2121
+ display:inline-block;
2122
+ max-width:100%;
2123
+ margin-top:6px;
2124
+ padding:2px 6px;
2125
+ border:1px solid var(--line);
2126
+ border-radius:var(--radius-sm);
2127
+ color:var(--muted);
2128
+ font-size:var(--text-xs);
2129
+ overflow-wrap:anywhere;
2130
+ }
2131
+ .block[data-tool="Task"], .block[data-tool="Agent"] { border-left:2px solid var(--accent) }
2132
+ .block[data-tool="Task"] .block-tool, .block[data-tool="Agent"] .block-tool {
2133
+ white-space:normal;
2134
+ overflow-wrap:anywhere;
2135
+ }
2136
+ .delegation-mandate { margin:0 13px; padding:12px 0 }
2137
+ .delegation-report {
2138
+ margin:0 13px;
2139
+ padding:12px 0;
2140
+ border-top:1px solid var(--line);
2141
+ }
2142
+ .delegation-mandate>summary, .delegation-report>summary {
2143
+ cursor:pointer;
2144
+ color:var(--muted);
2145
+ font-size:var(--text-sm);
2146
+ font-weight:600;
2147
+ }
2148
+ .delegation-mandate>summary:focus-visible, .delegation-report>summary:focus-visible {
2149
+ outline:2px solid var(--accent);
2150
+ outline-offset:4px;
2151
+ }
2152
+ .delegation-mandate .block-prose, .delegation-report .block-prose { padding:12px 0 0 }
2153
+ .delegation-mandate .block-plain, .delegation-report .block-plain {
2154
+ white-space:pre-wrap;
2155
+ overflow-wrap:anywhere;
2156
+ }
2157
+ .app-version {
2158
+ align-self:center;
2159
+ margin-left:8px;
2160
+ /* With connection state moved to the status bar this is the only thing left
2161
+ between the wordmark and the buttons, so it is pinned rather than left to
2162
+ drift into the middle of the bar. */
2163
+ margin-right:auto;
2164
+ color:var(--muted);
2165
+ font-size:var(--text-xs);
2166
+ letter-spacing:.04em;
2167
+ font-variant-numeric:tabular-nums;
2168
+ }
2169
+ .session-cost { font-variant-numeric:tabular-nums }
472
2170
  /* Configurable teams share the launch dialog and the Warp console palette. */
473
- .team-editor-head,.team-editor-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
474
- .team-editor-head h3{margin:5px 0 8px;font-size:20px}.team-editor-head p{margin:0}.team-editor-head>.button{flex-shrink:0}
475
- .team-meta,.team-rules{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:16px 0}.team-meta>label:last-child{grid-column:1/-1}
476
- .team-role-list{margin:20px 0}.team-role{border-top:1px solid var(--line)}.team-role:last-child{border-bottom:1px solid var(--line)}
477
- .team-role>summary{display:flex;gap:12px;align-items:center;cursor:pointer;padding:16px 0}.team-role>summary strong{min-width:100px;color:var(--text)}.team-role>summary span{flex:1;color:var(--muted);font-size:11px}.team-role>summary small{color:var(--accent)}
478
- .team-role-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:0 0 20px}.team-wide{grid-column:1/-1}.team-role-fields textarea{font-family:var(--mono);font-size:12px}.team-role-kind,.team-tools{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
479
- #team-editor .team-role-kind label,#team-editor .team-tools label{display:flex;flex-direction:row;align-items:center;gap:6px}#team-editor input[type=checkbox],#team-editor input[type=radio]{width:auto;min-height:20px;accent-color:var(--accent)}
480
- .team-role-kind button{margin-left:auto}.team-role-fields fieldset{margin:0;padding:12px;border:1px solid var(--line);border-radius:6px}.team-role-fields legend{font-size:11px;color:var(--muted);padding:0 6px}.team-editor-actions{margin:20px 0 0}
481
- #initiative-board{flex:none;border:1px solid var(--line);border-radius:8px;margin-bottom:10px;font-size:11px;overflow:hidden}
482
- #initiative-board>summary{display:flex;gap:12px;padding:12px;cursor:pointer;background:var(--panel)}#initiative-board>summary strong{margin-right:auto}#initiative-board>summary span{color:var(--muted);font-variant-numeric:tabular-nums}
483
- .initiative-body{max-height:38vh;overflow:auto;padding:12px}.initiative-roster{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:12px}.initiative-role{padding:5px 0}.initiative-role strong,.initiative-role small{display:block}.initiative-role small{margin-top:5px;color:var(--muted);font-size:10px}.initiative-role.is-active strong{color:var(--accent)}.team-connector{color:var(--faint)}
484
- .initiative-tasks{list-style:none;padding:0;margin:0}.initiative-tasks>li{padding:12px 0;border-bottom:1px solid var(--line)}.initiative-tasks summary{cursor:pointer;line-height:1.7}.initiative-tasks summary small{display:block;color:var(--muted)}.task-state{display:inline-block;color:var(--muted);margin-right:8px}.task-state[data-state=verified]{color:var(--busy)}.task-state[data-state=blocked],.task-state[data-state=changes_requested]{color:var(--stale)}.task-state[data-state=working]{color:var(--accent)}
485
- .initiative-tasks ul{padding-left:20px;line-height:1.8}.initiative-handoff{margin-top:10px;padding:8px 10px;background:var(--panel);border-radius:5px}.initiative-handoff summary span{color:var(--muted);margin-left:8px}.initiative-handoff summary small{display:inline;color:var(--muted);margin-left:8px;font-size:10px}.handoff-mandate,.handoff-report{margin-top:8px}.handoff-report{border-top:1px solid var(--line);padding-top:8px}.handoff-mandate>summary,.handoff-report>summary{cursor:pointer;color:var(--muted);font-size:10px;font-weight:600}.handoff-mandate>summary:focus-visible,.handoff-report>summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.initiative-handoff pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.7 var(--mono);max-height:300px;overflow:auto;margin-top:6px}.initiative-body>.note{margin:12px 0 0;font-size:10px}
486
- @media(max-width:720px){.team-editor-head{align-items:start}.team-meta,.team-rules,.team-role-fields{grid-template-columns:1fr}.team-role>summary{flex-wrap:wrap}.team-role>summary span{flex-basis:100%;order:3}.team-role>summary small{margin-left:auto}#initiative-board>summary{flex-wrap:wrap}.initiative-body{max-height:32vh}}
487
- #team-editor{padding:3px 32px 28px}.initiative-limits{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin-top:12px}.initiative-limits label{display:flex;flex-direction:column;gap:6px;color:var(--muted)}.initiative-limits input{width:110px;padding:8px;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:5px}.initiative-limits .form-error{width:100%}.initiative-limits .note{width:100%;margin:12px 0 0}@media(max-width:720px){#team-editor{padding:0 20px 24px}.team-editor-head{flex-wrap:wrap}}
488
- .modal-launch.is-editing-team>.modal-head .modal-heading{display:none}.modal-launch.is-editing-team>.modal-head{justify-content:flex-end;padding-bottom:8px}.modal-launch.is-editing-team #team-editor{padding-top:0}
489
-
2171
+ .team-editor-head {
2172
+ display:flex;
2173
+ align-items:center;
2174
+ justify-content:space-between;
2175
+ gap:16px;
2176
+ margin-bottom:20px;
2177
+ }
2178
+ .team-editor-head h3 { margin:5px 0 8px; font-size:20px }
2179
+ .team-editor-head p { margin:0 }
2180
+ .team-editor-head>.button { flex-shrink:0 }
2181
+ .team-meta, .team-rules {
2182
+ display:grid;
2183
+ grid-template-columns:1fr 1fr;
2184
+ gap:14px;
2185
+ margin:16px 0;
2186
+ }
2187
+ .team-meta>label:last-child { grid-column:1/-1 }
2188
+ .team-role-list { margin:20px 0 }
2189
+ .team-role { border-top:1px solid var(--line) }
2190
+ .team-role:last-child { border-bottom:1px solid var(--line) }
2191
+ .team-role>summary {
2192
+ display:flex;
2193
+ gap:12px;
2194
+ align-items:center;
2195
+ cursor:pointer;
2196
+ padding:16px 0;
2197
+ }
2198
+ .team-role>summary strong { min-width:100px; color:var(--text) }
2199
+ .team-role>summary span {
2200
+ flex:1;
2201
+ color:var(--muted);
2202
+ font-size:var(--text-sm);
2203
+ }
2204
+ .team-role>summary small { color:var(--accent) }
2205
+ .team-role-fields {
2206
+ display:grid;
2207
+ grid-template-columns:1fr 1fr;
2208
+ gap:14px;
2209
+ padding:0 0 20px;
2210
+ }
2211
+ .team-wide { grid-column:1/-1 }
2212
+ .team-role-fields textarea { font-family:var(--mono); font-size:var(--text-md) }
2213
+ .team-role-kind, .team-tools {
2214
+ display:flex;
2215
+ flex-wrap:wrap;
2216
+ gap:16px;
2217
+ align-items:center;
2218
+ }
2219
+ #team-editor .team-role-kind label, #team-editor .team-tools label {
2220
+ display:flex;
2221
+ flex-direction:row;
2222
+ align-items:center;
2223
+ gap:6px;
2224
+ }
2225
+ #team-editor input[type=checkbox], #team-editor input[type=radio] {
2226
+ width:auto;
2227
+ min-height:20px;
2228
+ accent-color:var(--accent);
2229
+ }
2230
+ .team-role-kind button { margin-left:auto }
2231
+ .team-role-fields fieldset {
2232
+ margin:0;
2233
+ padding:12px;
2234
+ border:1px solid var(--line);
2235
+ border-radius:var(--radius-md);
2236
+ }
2237
+ .team-role-fields legend {
2238
+ font-size:var(--text-sm);
2239
+ color:var(--muted);
2240
+ padding:0 6px;
2241
+ }
2242
+ .team-editor-actions {
2243
+ display:flex;
2244
+ align-items:center;
2245
+ justify-content:space-between;
2246
+ gap:16px;
2247
+ margin-bottom:20px;
2248
+ margin:20px 0 0;
2249
+ }
2250
+ #initiative-board {
2251
+ flex:none;
2252
+ border:1px solid var(--line);
2253
+ border-radius:var(--radius-lg);
2254
+ margin-bottom:10px;
2255
+ font-size:var(--text-sm);
2256
+ overflow:hidden;
2257
+ }
2258
+ #initiative-board>summary {
2259
+ display:flex;
2260
+ gap:12px;
2261
+ padding:12px;
2262
+ cursor:pointer;
2263
+ background:var(--panel);
2264
+ }
2265
+ #initiative-board>summary strong { margin-right:auto }
2266
+ #initiative-board>summary span { color:var(--muted); font-variant-numeric:tabular-nums }
2267
+ .initiative-body {
2268
+ max-height:38vh;
2269
+ overflow:auto;
2270
+ padding:12px;
2271
+ }
2272
+ .initiative-roster {
2273
+ display:flex;
2274
+ align-items:center;
2275
+ gap:10px;
2276
+ flex-wrap:wrap;
2277
+ border-bottom:1px solid var(--line);
2278
+ padding-bottom:12px;
2279
+ }
2280
+ .initiative-role { padding:5px 0 }
2281
+ .initiative-role strong, .initiative-role small { display:block }
2282
+ .initiative-role small {
2283
+ margin-top:5px;
2284
+ color:var(--muted);
2285
+ font-size:var(--text-xs);
2286
+ }
2287
+ .initiative-role.is-active strong { color:var(--accent) }
2288
+ .team-connector { color:var(--faint) }
2289
+ .initiative-tasks {
2290
+ list-style:none;
2291
+ padding:0;
2292
+ margin:0;
2293
+ }
2294
+ .initiative-tasks>li { padding:12px 0; border-bottom:1px solid var(--line) }
2295
+ .initiative-tasks summary { cursor:pointer; line-height:1.7 }
2296
+ .initiative-tasks summary small { display:block; color:var(--muted) }
2297
+ .task-state {
2298
+ display:inline-block;
2299
+ color:var(--muted);
2300
+ margin-right:8px;
2301
+ }
2302
+ .task-state[data-state=verified] { color:var(--busy) }
2303
+ .task-state[data-state=blocked], .task-state[data-state=changes_requested] { color:var(--stale) }
2304
+ .task-state[data-state=working] { color:var(--accent) }
2305
+ .initiative-tasks ul { padding-left:20px; line-height:1.8 }
2306
+ .initiative-handoff {
2307
+ margin-top:10px;
2308
+ padding:8px 10px;
2309
+ background:var(--panel);
2310
+ border-radius:var(--radius-md);
2311
+ }
2312
+ .initiative-handoff summary span { color:var(--muted); margin-left:8px }
2313
+ .initiative-handoff summary small {
2314
+ display:inline;
2315
+ color:var(--muted);
2316
+ margin-left:8px;
2317
+ font-size:var(--text-xs);
2318
+ }
2319
+ .handoff-mandate { margin-top:8px }
2320
+ .handoff-report {
2321
+ margin-top:8px;
2322
+ border-top:1px solid var(--line);
2323
+ padding-top:8px;
2324
+ }
2325
+ .handoff-mandate>summary, .handoff-report>summary {
2326
+ cursor:pointer;
2327
+ color:var(--muted);
2328
+ font-size:var(--text-xs);
2329
+ font-weight:600;
2330
+ }
2331
+ .handoff-mandate>summary:focus-visible, .handoff-report>summary:focus-visible {
2332
+ outline:2px solid var(--accent);
2333
+ outline-offset:4px;
2334
+ }
2335
+ .initiative-handoff pre {
2336
+ white-space:pre-wrap;
2337
+ overflow-wrap:anywhere;
2338
+ font:11px/1.7 var(--mono);
2339
+ max-height:300px;
2340
+ overflow:auto;
2341
+ margin-top:6px;
2342
+ }
2343
+ .initiative-body>.note { margin:12px 0 0; font-size:var(--text-xs) }
2344
+ @media(max-width:720px) {
2345
+ .team-meta, .team-rules, .team-role-fields { grid-template-columns:1fr }
2346
+ .team-role>summary { flex-wrap:wrap }
2347
+ .team-role>summary span { flex-basis:100%; order:3 }
2348
+ .team-role>summary small { margin-left:auto }
2349
+ #initiative-board>summary { flex-wrap:wrap }
2350
+ .initiative-body { max-height:32vh }
2351
+ }
2352
+ #team-editor { padding:3px 32px 28px }
2353
+ .initiative-limits {
2354
+ display:flex;
2355
+ flex-wrap:wrap;
2356
+ align-items:end;
2357
+ gap:12px;
2358
+ margin-top:12px;
2359
+ }
2360
+ .initiative-limits label {
2361
+ display:flex;
2362
+ flex-direction:column;
2363
+ gap:6px;
2364
+ color:var(--muted);
2365
+ }
2366
+ .initiative-limits input {
2367
+ width:110px;
2368
+ padding:8px;
2369
+ background:var(--bg);
2370
+ color:var(--text);
2371
+ border:1px solid var(--line);
2372
+ border-radius:var(--radius-md);
2373
+ }
2374
+ .initiative-limits .form-error { width:100% }
2375
+ .initiative-limits .note { width:100%; margin:12px 0 0 }
2376
+ @media(max-width:720px) {
2377
+ #team-editor { padding:0 20px 24px }
2378
+ .team-editor-head { align-items:start; flex-wrap:wrap }
2379
+ }
2380
+ .modal-launch.is-editing-team>.modal-head .modal-heading { display:none }
2381
+ .modal-launch.is-editing-team>.modal-head { justify-content:flex-end; padding-bottom:8px }
2382
+ .modal-launch.is-editing-team #team-editor { padding-top:0 }
490
2383
  /* A Task-tool sub-agent has no process of its own, so this nested row under the
491
2384
  session that ran it is the only place it ever shows up. */
492
- .session-child{padding-left:44px;background:color-mix(in oklab,var(--panel) 88%,var(--w-fg))}
493
- .session-child .session-name{color:var(--muted)}
494
- .session-child .session-title{font-size:11px;font-weight:400;color:var(--faint)}
495
- @media(max-width:1000px){.session-child{padding-left:34px}}
2385
+ /* The group folds behind a header of its own, indented one step less than the rows it
2386
+ owns so the chevron sits in the gutter and the hierarchy reads at a glance. */
2387
+ .session-children-toggle {
2388
+ display:flex;
2389
+ align-items:center;
2390
+ gap:8px;
2391
+ width:100%;
2392
+ text-align:left;
2393
+ border:0;
2394
+ border-bottom:1px solid var(--divider);
2395
+ padding:7px 18px 7px 26px;
2396
+ background:color-mix(in oklab,var(--panel) 88%,var(--term-fg));
2397
+ color:var(--faint);
2398
+ font:10px/1.4 var(--mono);
2399
+ letter-spacing:.6px;
2400
+ }
2401
+ .session-children-toggle:hover {
2402
+ color:var(--muted);
2403
+ background:color-mix(in oklab,var(--panel) 78%,var(--term-fg));
2404
+ }
2405
+ .children-chevron {
2406
+ display:inline-block;
2407
+ flex:none;
2408
+ width:9px;
2409
+ text-align:center;
2410
+ font-size:var(--text-md);
2411
+ line-height:1;
2412
+ transition:transform .12s ease;
2413
+ }
2414
+ .session-children-toggle[aria-expanded="true"] .children-chevron { transform:rotate(90deg) }
2415
+ .children-count {
2416
+ overflow:hidden;
2417
+ text-overflow:ellipsis;
2418
+ white-space:nowrap;
2419
+ }
2420
+ /* An indent guide ties the sub-agents back to the session that ran them. It sits in
2421
+ the empty gutter left of every child's text, so it never crosses a glyph. */
2422
+ .session-children { position:relative }
2423
+ .session-children::before {
2424
+ content:"";
2425
+ position:absolute;
2426
+ top:0;
2427
+ bottom:0;
2428
+ left:30px;
2429
+ width:1px;
2430
+ background:var(--line);
2431
+ z-index:1;
2432
+ }
2433
+ .session-child { padding-left:44px; background:color-mix(in oklab,var(--panel) 88%,var(--term-fg)) }
2434
+ .session-child .session-name { color:var(--muted) }
2435
+ .session-child .session-title {
2436
+ font-size:var(--text-sm);
2437
+ font-weight:400;
2438
+ color:var(--faint);
2439
+ }
2440
+ @media(max-width:1000px) {
2441
+ .session-child { padding-left:34px }
2442
+ .session-children-toggle { padding-left:20px }
2443
+ .session-children::before { left:23px }
2444
+ }
2445
+ @media(prefers-reduced-motion:reduce) {
2446
+ .children-chevron { transition:none }
2447
+ }
496
2448
  /* Only one row reads as selected: a session holding a selected child is an ancestor,
497
2449
  not the selection itself, so it gets a quieter treatment and no accent bar. */
498
- .session-ancestor{background:#1a1f1e}
499
- .session-ancestor:hover{background:#1c2120}
2450
+ .session-ancestor { background:color-mix(in oklab,var(--term-bg) 92%,var(--term-fg)) }
2451
+ .session-ancestor:hover { background:var(--hover) }
500
2452
  /* A long initiative is capped to its most recent delegations; this line names the
501
2453
  rest without pretending to be a row of its own. */
502
- .session-child-more{padding:9px 23px 9px 44px;color:var(--faint);font-size:10px;background:color-mix(in oklab,var(--panel) 88%,var(--w-fg))}
503
- @media(max-width:1000px){.session-child-more{padding-left:34px}}
2454
+ .session-child-more {
2455
+ padding:9px 23px 9px 44px;
2456
+ color:var(--faint);
2457
+ font-size:var(--text-xs);
2458
+ background:color-mix(in oklab,var(--panel) 88%,var(--term-fg));
2459
+ }
2460
+ @media(max-width:1000px) {
2461
+ .session-child-more { padding-left:34px }
2462
+ }
504
2463
  /* Its read-only report: steps, in the order Fleet saw them, each with what it touched. */
505
- .child-steps{list-style:none;margin:0;padding:0;font-size:11px}
506
- .child-step{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--line)}
507
- .child-step:first-child{border-top:0}
508
- .child-step-tool{font-weight:600;flex:none}
509
- .child-step-target{color:var(--muted);overflow-wrap:anywhere;flex:1;min-width:0}
510
- .child-step-state{color:var(--faint);flex:none}
511
- .child-step[data-status="running"] .child-step-state{color:var(--busy)}
512
- .child-step[data-status="error"] .child-step-state{color:var(--dead)}
513
- .child-step[data-status="interrupted"] .child-step-state{color:var(--stale)}
2464
+ .child-steps {
2465
+ list-style:none;
2466
+ margin:0;
2467
+ padding:0;
2468
+ font-size:var(--text-sm);
2469
+ }
2470
+ .child-step {
2471
+ display:flex;
2472
+ gap:10px;
2473
+ align-items:baseline;
2474
+ padding:7px 0;
2475
+ border-top:1px solid var(--line);
2476
+ }
2477
+ .child-step:first-child { border-top:0 }
2478
+ .child-step-tool { font-weight:600; flex:none }
2479
+ .child-step-target {
2480
+ color:var(--muted);
2481
+ overflow-wrap:anywhere;
2482
+ flex:1;
2483
+ min-width:0;
2484
+ }
2485
+ .child-step-state { color:var(--faint); flex:none }
2486
+ .child-step[data-status="running"] .child-step-state { color:var(--busy) }
2487
+ .child-step[data-status="error"] .child-step-state { color:var(--dead) }
2488
+ .child-step[data-status="interrupted"] .child-step-state { color:var(--stale) }
514
2489
  /* Terminal, not in-progress: the delegation ended before this step ever reported
515
2490
  back, so it gets a cool, muted hue of its own rather than the plain "done" grey
516
2491
  or a transparency trick that would wash out against the panel. */
517
- .child-step[data-status="unreported"] .child-step-state{color:color-mix(in oklab,var(--w-blue) 56%,var(--w-fg))}
518
- .child-step-time{color:var(--faint);font-variant-numeric:tabular-nums;flex:none}
2492
+ .child-step[data-status="unreported"] .child-step-state {
2493
+ color:color-mix(in oklab,var(--term-blue) 56%,var(--term-fg));
2494
+ }
2495
+ .child-step-time {
2496
+ color:var(--faint);
2497
+ font-variant-numeric:tabular-nums;
2498
+ flex:none;
2499
+ }
519
2500
  /* Selecting a child hides the console, so a pending approval on the owning session
520
2501
  would otherwise go unnoticed; this is the one visible sign it is still waiting. */
521
- .child-approval-notice{color:var(--text);background:color-mix(in srgb,var(--stale) 14%,transparent);border:1px solid var(--stale);border-radius:6px;padding:10px 12px;margin-bottom:17px}
2502
+ .child-approval-notice {
2503
+ color:var(--text);
2504
+ background:color-mix(in srgb,var(--stale) 14%,transparent);
2505
+ border:1px solid var(--stale);
2506
+ border-radius:var(--radius-md);
2507
+ padding:10px 12px;
2508
+ margin-bottom:17px;
2509
+ }
522
2510
 
523
2511
  /* Drill into a tool without expanding every payload in the agent inspector. */
524
- .child-step-detail{grid-column:1/-1;min-width:0}
525
- .child-step-detail summary{cursor:pointer;color:var(--muted);padding:4px 0}
526
- .child-step-detail pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto;font-size:12px}
527
- .child-step-detail h4{margin:10px 0 4px;font-size:12px}
2512
+ .child-step-detail { grid-column:1/-1; min-width:0 }
2513
+ .child-step-detail summary { cursor:pointer; color:var(--muted); padding:4px 0 }
2514
+ .child-step-detail pre {
2515
+ white-space:pre-wrap;
2516
+ overflow-wrap:anywhere;
2517
+ max-height:320px;
2518
+ overflow:auto;
2519
+ font-size:var(--text-md);
2520
+ }
2521
+ .child-step-detail h4 { margin:10px 0 4px; font-size:var(--text-md) }
528
2522
 
529
2523
  /* ── Status bar ────────────────────────────────────────────────────────────────
530
2524
  Ambient telemetry at the bottom, actions at the top. The plan windows belong to
531
2525
  the account rather than to any one session, so they are drawn once here and never
532
2526
  on a row: every Claude process on this machine spends the same five hours. */
533
- .statusbar{flex:none;display:flex;align-items:center;gap:14px;height:26px;padding:0 14px;border-top:1px solid var(--line);background:color-mix(in oklab,var(--w-bg) 96%,var(--w-fg));font:10.5px/1 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}
534
- .status-usage{display:flex;align-items:center;gap:12px;min-width:0;overflow:hidden}
535
- .status-fleet{display:flex;align-items:center;gap:7px;margin-left:auto;flex:none}
536
- .status-conn{display:flex;align-items:center;gap:8px;flex:none;border-left:1px solid var(--line);padding-left:14px}
537
- .status-conn .local{border:0;margin:0;padding:0;font-size:9px}
538
- .status-sep{color:var(--line)}
539
- .usage-window{display:flex;align-items:center;gap:7px}
540
- .usage-window b,.usage-other b{font-weight:600;letter-spacing:.3px;color:var(--text)}
541
- .usage-window.warn b,.usage-window.hot b{color:currentColor}
2527
+ .statusbar {
2528
+ flex:none;
2529
+ display:flex;
2530
+ align-items:center;
2531
+ gap:14px;
2532
+ height:26px;
2533
+ padding:0 14px;
2534
+ border-top:1px solid var(--line);
2535
+ background:color-mix(in oklab,var(--term-bg) 96%,var(--term-fg));
2536
+ font:10.5px/1 var(--mono);
2537
+ color:var(--muted);
2538
+ font-variant-numeric:tabular-nums;
2539
+ white-space:nowrap;
2540
+ overflow:hidden;
2541
+ }
2542
+ .status-usage { display:flex; align-items:center; gap:12px; min-width:0; overflow:hidden }
2543
+ .status-fleet { display:flex; align-items:center; gap:7px; margin-left:auto; flex:none }
2544
+ .status-conn {
2545
+ display:flex;
2546
+ align-items:center;
2547
+ gap:8px;
2548
+ flex:none;
2549
+ border-left:1px solid var(--line);
2550
+ padding-left:14px;
2551
+ }
2552
+ .status-conn .local { border:0; margin:0; padding:0; font-size:var(--text-2xs) }
2553
+ .status-sep { color:var(--line) }
2554
+ .usage-window { display:flex; align-items:center; gap:7px }
2555
+ .usage-window b, .usage-other b { font-weight:600; letter-spacing:.3px; color:var(--text) }
2556
+ .usage-window.warn b, .usage-window.hot b { color:currentColor }
542
2557
  /* The countdown, shown instead of the bar once the window is nearly gone. */
543
- .usage-window em{font-style:normal;font-weight:600}
544
- .usage-window small,.usage-stale{color:var(--faint);font-size:10px}
545
- .status-usage .mini-bar{display:block;width:58px;height:4px;margin:0;flex:none}
546
- .usage-pct{color:var(--text)}
547
- .usage-window.warn .usage-pct,.usage-window.hot .usage-pct{color:currentColor}
548
- .usage-other{display:flex;align-items:center;gap:5px;color:var(--faint)}
549
- .usage-other b{font-weight:500;color:var(--muted)}
2558
+ .usage-window em { font-style:normal; font-weight:600 }
2559
+ .usage-window small, .usage-stale { color:var(--faint); font-size:var(--text-xs) }
2560
+ .status-usage .mini-bar { display:block; width:58px; height:4px; margin:0; flex:none }
2561
+ .usage-pct { color:var(--text) }
2562
+ .usage-window.warn .usage-pct, .usage-window.hot .usage-pct { color:currentColor }
2563
+ .usage-other { display:flex; align-items:center; gap:5px; color:var(--faint) }
2564
+ .usage-other b { font-weight:500; color:var(--muted) }
550
2565
  /* A reading only refreshes while an agent runs. An idle hour must not look live, and
551
2566
  every window in the cluster shares the one timestamp, so they dim together. */
552
- .status-usage:has(.is-stale){opacity:.55}
553
- .usage-blocked{display:flex;align-items:center;gap:7px;font-weight:600}
2567
+ .status-usage:has(.is-stale) { opacity:.55 }
2568
+ .usage-blocked { display:flex; align-items:center; gap:7px; font-weight:600 }
554
2569
  /* The same wall, repeated where it changes a decision rather than only informing one. */
555
- .rate-warning{font-size:12px;line-height:1.6;color:var(--stale);border:1px solid color-mix(in oklab,var(--stale) 45%,var(--line));background:color-mix(in oklab,var(--stale) 9%,var(--panel));border-radius:8px;padding:11px 14px;margin:0 32px 14px}
556
- @media(max-width:720px){.rate-warning{margin:0 20px 12px}}
2570
+ .rate-warning {
2571
+ font-size:var(--text-md);
2572
+ line-height:1.6;
2573
+ color:var(--stale);
2574
+ border:1px solid color-mix(in oklab,var(--stale) 45%,var(--line));
2575
+ background:color-mix(in oklab,var(--stale) 9%,var(--panel));
2576
+ border-radius:var(--radius-lg);
2577
+ padding:11px 14px;
2578
+ margin:0 32px 14px;
2579
+ }
2580
+ @media(max-width:720px) {
2581
+ .rate-warning { margin:0 20px 12px }
2582
+ }
557
2583
  /* The form scrolls inside the dialog and was already within a few pixels of pushing its
558
2584
  own submit button out of sight. Anything added above the fields, this warning
559
2585
  included, would have hidden it, so the action bar now holds the bottom edge. */
560
- .modal-launch .launch-footer{position:sticky;bottom:0;z-index:1}
561
- @media(max-width:900px){.statusbar .local,.usage-other{display:none}}
562
- @media(max-width:720px){.statusbar{height:auto;flex-wrap:wrap;gap:8px;padding:8px 14px;white-space:normal}.status-fleet{margin-left:0}.status-conn{border:0;padding-left:0}}
2586
+ .modal-launch .launch-footer { position:sticky; bottom:0; z-index:1 }
2587
+ @media(max-width:900px) {
2588
+ .statusbar .local, .usage-other { display:none }
2589
+ }
2590
+ @media(max-width:720px) {
2591
+ .statusbar { height:auto; flex-wrap:wrap; gap:8px; padding:8px 14px; white-space:normal }
2592
+ .status-fleet { margin-left:0 }
2593
+ .status-conn { border:0; padding-left:0 }
2594
+ }