@hanzlaa/rcode 4.5.0 → 4.7.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/README.md +47 -14
- package/package.json +1 -1
- package/rcode/agents/rcode-mariam.md +6 -0
- package/rcode/agents/rcode-sadiq.md +6 -0
- package/rcode/agents/rcode-waleed.md +6 -0
- package/rcode/bin/rcode-hooks.cjs +41 -5
- package/rcode/skills/agents/mariam-marketing/SKILL.md +1 -0
- package/rcode/skills/agents/sadiq-analyst/SKILL.md +1 -0
- package/rcode/skills/agents/waleed-architect/SKILL.md +1 -0
- package/rcode/workflows/council.md +29 -1
- package/server/dashboard.js +6 -3
- package/server/lib/html/client/components/App.js +16 -2
- package/server/lib/html/client/components/OrchPanel.js +2 -2
- package/server/lib/html/client/components/PhaseGraph.js +20 -12
- package/server/lib/html/client/components/Sidebar.js +1 -0
- package/server/lib/html/client/components/Topbar.js +3 -3
- package/server/lib/html/client/components/XtermPanel.js +98 -23
- package/server/lib/html/client/components/dashboard/Blockers.js +3 -3
- package/server/lib/html/client/components/dashboard/CompletedTasks.js +4 -2
- package/server/lib/html/client/components/dashboard/InProgress.js +4 -3
- package/server/lib/html/client/components/dashboard/ProgressTimeline.js +11 -6
- package/server/lib/html/client/components/dashboard/RecentDecisions.js +4 -3
- package/server/lib/html/client/components/shared.js +111 -2
- package/server/lib/html/client/orchestrator.js +28 -15
- package/server/lib/html/client/store.js +47 -0
- package/server/lib/html/client/util.js +1 -22
- package/server/lib/html/client/views/BacklogView.js +44 -0
- package/server/lib/html/client/views/DecisionsView.js +4 -3
- package/server/lib/html/client/views/FilesView.js +47 -34
- package/server/lib/html/client/views/KanbanView.js +8 -0
- package/server/lib/html/client/views/OrchestrationView.js +247 -169
- package/server/lib/html/client/views/PhasesView.js +8 -3
- package/server/lib/html/client/views/SprintsView.js +9 -0
- package/server/lib/html/client.js +1 -0
- package/server/lib/html/css.js +692 -246
- package/server/lib/html/shell.js +9 -3
- package/server/lib/scanner.js +21 -6
- package/server/orchestrator.js +3 -4
package/server/lib/html/css.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* CLAUDE.md exemption: pure CSS data file, no logic — 1000-line limit does not apply */
|
|
2
2
|
/**
|
|
3
|
-
* Dashboard CSS —
|
|
4
|
-
* Dark-first
|
|
3
|
+
* Dashboard CSS — Diwan design system.
|
|
4
|
+
* Dark-first. rcode accent: #22b6cf (Diwan Teal).
|
|
5
5
|
*/
|
|
6
6
|
function renderCss() {
|
|
7
7
|
return `<style>
|
|
@@ -10,56 +10,72 @@ function renderCss() {
|
|
|
10
10
|
/* ── Design tokens ─────────────────────────────────────────────── */
|
|
11
11
|
:root {
|
|
12
12
|
/* Surfaces */
|
|
13
|
-
--bg-page: #
|
|
14
|
-
--bg-elev-1: #
|
|
15
|
-
--bg-elev-2: #
|
|
16
|
-
--bg-elev-3: #
|
|
17
|
-
--bg-hover: #
|
|
18
|
-
--bg-input: #
|
|
19
|
-
--bg-active: #
|
|
13
|
+
--bg-page: #0b0d0f;
|
|
14
|
+
--bg-elev-1: #131619;
|
|
15
|
+
--bg-elev-2: #1a1e22;
|
|
16
|
+
--bg-elev-3: #222831;
|
|
17
|
+
--bg-hover: #1e2329;
|
|
18
|
+
--bg-input: #1a1e22;
|
|
19
|
+
--bg-active: #262d35;
|
|
20
|
+
--bg-sunken: #070809; /* wells/terminal chrome — one step below bg-page */
|
|
20
21
|
|
|
21
22
|
/* Borders */
|
|
22
23
|
--border-subtle: rgba(255,255,255,0.06);
|
|
23
|
-
--border-default:
|
|
24
|
-
--border-strong: #
|
|
24
|
+
--border-default: rgba(255,255,255,0.10);
|
|
25
|
+
--border-strong: #2f373f;
|
|
25
26
|
|
|
26
27
|
/* Text */
|
|
27
|
-
--text-primary: #
|
|
28
|
-
--text-secondary: #
|
|
29
|
-
--text-tertiary: #
|
|
30
|
-
--text-muted: #
|
|
31
|
-
|
|
32
|
-
/* Brand —
|
|
33
|
-
--accent-primary: #
|
|
34
|
-
--accent-hover: #
|
|
35
|
-
--accent-active: #
|
|
36
|
-
--accent-bg: rgba(
|
|
37
|
-
--accent-border: rgba(
|
|
28
|
+
--text-primary: #e8edf1;
|
|
29
|
+
--text-secondary: #a6b2bd;
|
|
30
|
+
--text-tertiary: #717d88;
|
|
31
|
+
--text-muted: #4c565f;
|
|
32
|
+
|
|
33
|
+
/* Brand — Diwan accent (teal) */
|
|
34
|
+
--accent-primary: #22b6cf;
|
|
35
|
+
--accent-hover: #46cde3;
|
|
36
|
+
--accent-active: #178ea3;
|
|
37
|
+
--accent-bg: rgba(34,182,207,0.12);
|
|
38
|
+
--accent-border: rgba(34,182,207,0.35);
|
|
39
|
+
--accent-fg: #04222a;
|
|
38
40
|
|
|
39
41
|
/* Semantic */
|
|
40
|
-
--green: #
|
|
41
|
-
--amber: #
|
|
42
|
-
--red: #
|
|
43
|
-
--blue: #
|
|
42
|
+
--green: #3cb98a;
|
|
43
|
+
--amber: #e0a63a;
|
|
44
|
+
--red: #ec6a5e;
|
|
45
|
+
--blue: #4d9fe8;
|
|
44
46
|
--violet: #bf7af0;
|
|
45
47
|
|
|
46
48
|
/* Status */
|
|
47
|
-
--status-todo: #
|
|
48
|
-
--status-progress: #
|
|
49
|
-
--status-blocked: #
|
|
50
|
-
--status-done: #
|
|
49
|
+
--status-todo: #7f8ea0;
|
|
50
|
+
--status-progress: #e0a63a;
|
|
51
|
+
--status-blocked: #ec6a5e;
|
|
52
|
+
--status-done: #3cb98a;
|
|
53
|
+
|
|
54
|
+
/* Per-status wash + border (badge/pill treatment) */
|
|
55
|
+
--st-planned: #7f8ea0;
|
|
56
|
+
--st-planned-wash: rgba(127,142,160,0.14);
|
|
57
|
+
--st-planned-border: rgba(127,142,160,0.36);
|
|
58
|
+
--st-executing-wash: rgba(224,166,58,0.15);
|
|
59
|
+
--st-executing-border: rgba(224,166,58,0.40);
|
|
60
|
+
--st-complete-wash: rgba(60,185,138,0.15);
|
|
61
|
+
--st-complete-border: rgba(60,185,138,0.40);
|
|
62
|
+
--st-blocked-wash: rgba(236,106,94,0.15);
|
|
63
|
+
--st-blocked-border: rgba(236,106,94,0.42);
|
|
64
|
+
--st-info-wash: rgba(77,159,232,0.14);
|
|
65
|
+
--st-info-border: rgba(77,159,232,0.40);
|
|
66
|
+
--chart-track: rgba(255,255,255,0.07);
|
|
51
67
|
|
|
52
68
|
/* Type */
|
|
53
69
|
--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
54
|
-
--font-mono: "
|
|
70
|
+
--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, monospace;
|
|
55
71
|
|
|
56
72
|
/* Size scale */
|
|
57
73
|
--text-xl: 20px;
|
|
58
|
-
--text-lg:
|
|
59
|
-
--text-md:
|
|
60
|
-
--text-sm:
|
|
61
|
-
--text-xs:
|
|
62
|
-
--text-2xs:
|
|
74
|
+
--text-lg: 16px;
|
|
75
|
+
--text-md: 14px;
|
|
76
|
+
--text-sm: 12px;
|
|
77
|
+
--text-xs: 11px;
|
|
78
|
+
--text-2xs: 10px;
|
|
63
79
|
--text-stat: 28px; /* stat card value — large metric numeral */
|
|
64
80
|
|
|
65
81
|
/* Component dimensions */
|
|
@@ -67,21 +83,21 @@ function renderCss() {
|
|
|
67
83
|
--size-icon-btn: 32px; /* square icon button (hamburger, etc.) */
|
|
68
84
|
|
|
69
85
|
/* Spacing (4px base) */
|
|
70
|
-
--space-1:
|
|
71
|
-
--space-2:
|
|
72
|
-
--space-3:
|
|
73
|
-
--space-4:
|
|
74
|
-
--space-5:
|
|
75
|
-
--space-6:
|
|
76
|
-
--space-7:
|
|
86
|
+
--space-1: 4px;
|
|
87
|
+
--space-2: 8px;
|
|
88
|
+
--space-3: 12px;
|
|
89
|
+
--space-4: 16px;
|
|
90
|
+
--space-5: 24px;
|
|
91
|
+
--space-6: 32px;
|
|
92
|
+
--space-7: 48px;
|
|
77
93
|
--space-8: 32px;
|
|
78
94
|
--space-10: 64px;
|
|
79
95
|
|
|
80
96
|
/* Radius */
|
|
81
|
-
--radius-1:
|
|
82
|
-
--radius-2:
|
|
83
|
-
--radius-3:
|
|
84
|
-
--radius-4:
|
|
97
|
+
--radius-1: 4px;
|
|
98
|
+
--radius-2: 6px;
|
|
99
|
+
--radius-3: 9px;
|
|
100
|
+
--radius-4: 14px;
|
|
85
101
|
--radius-5: 12px;
|
|
86
102
|
--radius-full: 9999px;
|
|
87
103
|
|
|
@@ -89,9 +105,9 @@ function renderCss() {
|
|
|
89
105
|
--shadow-lg: 0 16px 32px rgba(0,0,0,0.6);
|
|
90
106
|
|
|
91
107
|
/* Motion */
|
|
92
|
-
--ease: cubic-bezier(0.
|
|
93
|
-
--t-fast:
|
|
94
|
-
--t-base:
|
|
108
|
+
--ease: cubic-bezier(0.32,0.72,0,1);
|
|
109
|
+
--t-fast: 90ms;
|
|
110
|
+
--t-base: 160ms;
|
|
95
111
|
--t-menu: 240ms;
|
|
96
112
|
|
|
97
113
|
/* Legacy compat aliases */
|
|
@@ -105,51 +121,81 @@ function renderCss() {
|
|
|
105
121
|
--accent-red: var(--red);
|
|
106
122
|
--accent-blue: var(--blue);
|
|
107
123
|
|
|
108
|
-
/* ── Dashboard
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
--dash-bg:
|
|
113
|
-
--dash-card:
|
|
114
|
-
--dash-border:
|
|
115
|
-
--dash-teal:
|
|
116
|
-
--dash-purple:
|
|
117
|
-
--dash-blue:
|
|
118
|
-
--dash-amber:
|
|
119
|
-
--dash-sev-high:
|
|
120
|
-
--dash-sev-medium:
|
|
121
|
-
--dash-sev-low:
|
|
122
|
-
--dash-text:
|
|
123
|
-
--dash-text-muted:
|
|
124
|
-
--dash-hover:
|
|
124
|
+
/* ── Dashboard chrome tokens ──────────────────────────────────────
|
|
125
|
+
--dash-* aliases onto the Diwan design tokens above so the Overview
|
|
126
|
+
card grid, sidebar, and topbar share one palette with the rest of
|
|
127
|
+
the app — no independent hex values, single source of truth. */
|
|
128
|
+
--dash-bg: var(--bg-page);
|
|
129
|
+
--dash-card: var(--bg-elev-1);
|
|
130
|
+
--dash-border: var(--border-subtle);
|
|
131
|
+
--dash-teal: var(--accent-primary);
|
|
132
|
+
--dash-purple: var(--accent-primary); /* was lavender; aliases accent teal now */
|
|
133
|
+
--dash-blue: var(--status-progress); /* was blue; "in progress" amber now */
|
|
134
|
+
--dash-amber: var(--amber);
|
|
135
|
+
--dash-sev-high: var(--red);
|
|
136
|
+
--dash-sev-medium: var(--amber);
|
|
137
|
+
--dash-sev-low: var(--text-tertiary);
|
|
138
|
+
--dash-text: var(--text-primary);
|
|
139
|
+
--dash-text-muted: var(--text-tertiary);
|
|
140
|
+
--dash-hover: var(--bg-hover);
|
|
125
141
|
}
|
|
126
142
|
|
|
127
143
|
/* Light mode */
|
|
128
144
|
[data-theme="light"] {
|
|
129
|
-
--bg-page: #
|
|
145
|
+
--bg-page: #f3f5f8;
|
|
130
146
|
--bg-elev-1: #ffffff;
|
|
131
|
-
--bg-elev-2: #
|
|
132
|
-
--bg-elev-3: #
|
|
133
|
-
--bg-hover: #
|
|
134
|
-
--bg-input: #
|
|
135
|
-
--bg-active: #
|
|
136
|
-
--
|
|
137
|
-
--border-
|
|
138
|
-
--border-
|
|
139
|
-
--
|
|
140
|
-
--text-
|
|
141
|
-
--text-
|
|
142
|
-
--text-
|
|
143
|
-
--
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
--
|
|
148
|
-
--
|
|
149
|
-
--
|
|
150
|
-
--
|
|
151
|
-
|
|
152
|
-
--
|
|
147
|
+
--bg-elev-2: #ffffff;
|
|
148
|
+
--bg-elev-3: #eef2f6;
|
|
149
|
+
--bg-hover: #edf1f5;
|
|
150
|
+
--bg-input: #ffffff;
|
|
151
|
+
--bg-active: #e4eaf0;
|
|
152
|
+
--bg-sunken: #e7ecf1;
|
|
153
|
+
--border-subtle: rgba(15,25,35,0.08);
|
|
154
|
+
--border-default: rgba(15,25,35,0.13);
|
|
155
|
+
--border-strong: #ccd5de;
|
|
156
|
+
--text-primary: #0f161c;
|
|
157
|
+
--text-secondary: #45525d;
|
|
158
|
+
--text-tertiary: #6b7883;
|
|
159
|
+
--text-muted: #a3adb6;
|
|
160
|
+
|
|
161
|
+
--accent-primary: #0f97b0;
|
|
162
|
+
--accent-hover: #0c8299;
|
|
163
|
+
--accent-active: #0a6d80;
|
|
164
|
+
--accent-bg: rgba(15,151,176,0.10);
|
|
165
|
+
--accent-border: rgba(15,151,176,0.34);
|
|
166
|
+
--accent-fg: #ffffff;
|
|
167
|
+
|
|
168
|
+
--green: #178a5f;
|
|
169
|
+
--amber: #b0741a;
|
|
170
|
+
--red: #d1443a;
|
|
171
|
+
--blue: #2679c9;
|
|
172
|
+
|
|
173
|
+
--status-todo: #62707d;
|
|
174
|
+
--status-progress: #b0741a;
|
|
175
|
+
--status-blocked: #d1443a;
|
|
176
|
+
--status-done: #178a5f;
|
|
177
|
+
|
|
178
|
+
--st-planned: #62707d;
|
|
179
|
+
--st-planned-wash: rgba(98,112,125,0.11);
|
|
180
|
+
--st-planned-border: rgba(98,112,125,0.34);
|
|
181
|
+
--st-executing-wash: rgba(176,116,26,0.12);
|
|
182
|
+
--st-executing-border: rgba(176,116,26,0.36);
|
|
183
|
+
--st-complete-wash: rgba(23,138,95,0.12);
|
|
184
|
+
--st-complete-border: rgba(23,138,95,0.36);
|
|
185
|
+
--st-blocked-wash: rgba(209,68,58,0.11);
|
|
186
|
+
--st-blocked-border: rgba(209,68,58,0.36);
|
|
187
|
+
--st-info-wash: rgba(38,121,201,0.11);
|
|
188
|
+
--st-info-border: rgba(38,121,201,0.36);
|
|
189
|
+
--chart-track: rgba(15,25,35,0.09);
|
|
190
|
+
|
|
191
|
+
/* Dashboard chrome tokens — light theme. Same alias approach; flips
|
|
192
|
+
automatically with the base tokens above. */
|
|
193
|
+
--dash-bg: var(--bg-page);
|
|
194
|
+
--dash-card: var(--bg-elev-1);
|
|
195
|
+
--dash-border: var(--border-subtle);
|
|
196
|
+
--dash-text: var(--text-primary);
|
|
197
|
+
--dash-text-muted: var(--text-tertiary);
|
|
198
|
+
--dash-hover: var(--bg-hover);
|
|
153
199
|
}
|
|
154
200
|
|
|
155
201
|
/* ── Reset ─────────────────────────────────────────────────────── */
|
|
@@ -233,6 +279,7 @@ html, body {
|
|
|
233
279
|
.nav-section:first-child { margin-top: 0; }
|
|
234
280
|
|
|
235
281
|
.nav-link {
|
|
282
|
+
position: relative;
|
|
236
283
|
display: flex;
|
|
237
284
|
align-items: center;
|
|
238
285
|
gap: var(--space-3);
|
|
@@ -252,7 +299,17 @@ html, body {
|
|
|
252
299
|
transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
|
|
253
300
|
}
|
|
254
301
|
.nav-link:hover { background: var(--bg-hover); color: var(--text-secondary); }
|
|
255
|
-
.nav-link.active { background: var(--bg
|
|
302
|
+
.nav-link.active { background: var(--accent-bg); color: var(--text-primary); font-weight: 600; }
|
|
303
|
+
.nav-link.active::before {
|
|
304
|
+
content: '';
|
|
305
|
+
position: absolute;
|
|
306
|
+
left: 0;
|
|
307
|
+
top: 7px;
|
|
308
|
+
bottom: 7px;
|
|
309
|
+
width: 2px;
|
|
310
|
+
border-radius: 2px;
|
|
311
|
+
background: var(--accent-primary);
|
|
312
|
+
}
|
|
256
313
|
.nav-count {
|
|
257
314
|
margin-left: auto;
|
|
258
315
|
font-size: 10px;
|
|
@@ -308,7 +365,7 @@ html, body {
|
|
|
308
365
|
|
|
309
366
|
/* ── Topbar / header ───────────────────────────────────────────── */
|
|
310
367
|
header {
|
|
311
|
-
background: rgba(
|
|
368
|
+
background: rgba(11,13,15,0.8); /* intentional: frosted glass tied to --bg-page exact value; alpha can't be expressed as a theme token */
|
|
312
369
|
backdrop-filter: blur(12px);
|
|
313
370
|
-webkit-backdrop-filter: blur(12px);
|
|
314
371
|
border-bottom: 1px solid var(--border-subtle);
|
|
@@ -323,7 +380,7 @@ header {
|
|
|
323
380
|
}
|
|
324
381
|
|
|
325
382
|
[data-theme="light"] header {
|
|
326
|
-
background: rgba(
|
|
383
|
+
background: rgba(243,245,248,0.85); /* intentional: light frosted glass; alpha channel can't be expressed as a theme token */
|
|
327
384
|
}
|
|
328
385
|
|
|
329
386
|
.brand {
|
|
@@ -418,6 +475,11 @@ header {
|
|
|
418
475
|
/* ── Views ─────────────────────────────────────────────────────── */
|
|
419
476
|
.view { display: none; }
|
|
420
477
|
.view.active { display: block; }
|
|
478
|
+
/* Orchestration's 2-column grid needs display:grid, not the block above.
|
|
479
|
+
Three classes (0,3,0) beats .view.active's (0,2,0) regardless of source
|
|
480
|
+
order, so this wins without touching the shared .view/.view.active rules
|
|
481
|
+
every other view relies on. */
|
|
482
|
+
.view.active.orch-layout { display: grid; }
|
|
421
483
|
|
|
422
484
|
.view-title {
|
|
423
485
|
font-size: var(--text-xl);
|
|
@@ -658,7 +720,7 @@ section .body {
|
|
|
658
720
|
/* ── Progress bar ───────────────────────────────────────────────── */
|
|
659
721
|
.progress-bar {
|
|
660
722
|
height: 4px;
|
|
661
|
-
background: var(--
|
|
723
|
+
background: var(--chart-track);
|
|
662
724
|
border-radius: 2px;
|
|
663
725
|
overflow: hidden;
|
|
664
726
|
width: 100%;
|
|
@@ -688,7 +750,7 @@ section .body {
|
|
|
688
750
|
.velocity-bar-track {
|
|
689
751
|
flex: 1;
|
|
690
752
|
height: 6px;
|
|
691
|
-
background: var(--
|
|
753
|
+
background: var(--chart-track);
|
|
692
754
|
border-radius: 3px;
|
|
693
755
|
overflow: hidden;
|
|
694
756
|
}
|
|
@@ -935,6 +997,7 @@ section .body {
|
|
|
935
997
|
.inline-file-entry {
|
|
936
998
|
display: flex;
|
|
937
999
|
align-items: center;
|
|
1000
|
+
gap: var(--space-2);
|
|
938
1001
|
padding: var(--space-2) var(--space-4);
|
|
939
1002
|
font-family: var(--font-mono);
|
|
940
1003
|
font-size: var(--text-xs);
|
|
@@ -946,9 +1009,50 @@ section .body {
|
|
|
946
1009
|
}
|
|
947
1010
|
.inline-file-entry:last-child { border-bottom: none; }
|
|
948
1011
|
.inline-file-entry:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
949
|
-
.inline-file-entry.selected { background: rgba(
|
|
1012
|
+
.inline-file-entry.selected { background: rgba(34,182,207,0.1); color: var(--accent-primary); }
|
|
1013
|
+
.inline-file-entry svg { flex-shrink: 0; opacity: 0.7; }
|
|
1014
|
+
.inline-file-label {
|
|
1015
|
+
overflow: hidden;
|
|
1016
|
+
text-overflow: ellipsis;
|
|
1017
|
+
white-space: nowrap;
|
|
1018
|
+
}
|
|
950
1019
|
.inline-file-group { margin-bottom: var(--space-3); }
|
|
951
|
-
.inline-
|
|
1020
|
+
.inline-file-group-title {
|
|
1021
|
+
display: flex;
|
|
1022
|
+
align-items: center;
|
|
1023
|
+
gap: var(--space-2);
|
|
1024
|
+
font-size: var(--text-xs);
|
|
1025
|
+
font-weight: 600;
|
|
1026
|
+
color: var(--text-muted);
|
|
1027
|
+
text-transform: uppercase;
|
|
1028
|
+
letter-spacing: 0.07em;
|
|
1029
|
+
padding: var(--space-1) var(--space-3);
|
|
1030
|
+
}
|
|
1031
|
+
.inline-file-group-count {
|
|
1032
|
+
font-size: var(--text-2xs);
|
|
1033
|
+
font-weight: 500;
|
|
1034
|
+
color: var(--text-muted);
|
|
1035
|
+
text-transform: none;
|
|
1036
|
+
letter-spacing: 0;
|
|
1037
|
+
}
|
|
1038
|
+
.inline-subgroup { padding-left: var(--space-4); margin-bottom: var(--space-1); }
|
|
1039
|
+
.inline-subgroup-summary {
|
|
1040
|
+
display: flex;
|
|
1041
|
+
align-items: center;
|
|
1042
|
+
gap: var(--space-2);
|
|
1043
|
+
font-size: var(--text-xs);
|
|
1044
|
+
font-weight: 500;
|
|
1045
|
+
color: var(--text-secondary);
|
|
1046
|
+
cursor: pointer;
|
|
1047
|
+
padding: var(--space-1) var(--space-3);
|
|
1048
|
+
user-select: none;
|
|
1049
|
+
}
|
|
1050
|
+
.inline-file-total {
|
|
1051
|
+
margin-left: var(--space-2);
|
|
1052
|
+
font-size: var(--text-sm);
|
|
1053
|
+
font-weight: 400;
|
|
1054
|
+
color: var(--text-muted);
|
|
1055
|
+
}
|
|
952
1056
|
.file-path-header {
|
|
953
1057
|
font-size: var(--text-2xs);
|
|
954
1058
|
color: var(--text-muted);
|
|
@@ -1073,7 +1177,7 @@ section .body {
|
|
|
1073
1177
|
font-weight: 500;
|
|
1074
1178
|
padding: 1px 5px;
|
|
1075
1179
|
border-radius: var(--radius-full);
|
|
1076
|
-
background: rgba(
|
|
1180
|
+
background: rgba(34,182,207,0.15);
|
|
1077
1181
|
color: var(--accent-hover);
|
|
1078
1182
|
text-transform: uppercase;
|
|
1079
1183
|
letter-spacing: 0.04em;
|
|
@@ -1121,8 +1225,8 @@ section .body {
|
|
|
1121
1225
|
align-items: center;
|
|
1122
1226
|
gap: var(--space-4);
|
|
1123
1227
|
padding: var(--space-3) var(--space-5);
|
|
1124
|
-
background: rgba(
|
|
1125
|
-
border-bottom: 1px solid rgba(
|
|
1228
|
+
background: rgba(236,106,94,0.1);
|
|
1229
|
+
border-bottom: 1px solid rgba(236,106,94,0.25);
|
|
1126
1230
|
font-size: var(--text-xs);
|
|
1127
1231
|
flex-shrink: 0;
|
|
1128
1232
|
}
|
|
@@ -1130,7 +1234,7 @@ section .body {
|
|
|
1130
1234
|
.banner-list { color: var(--text-secondary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1131
1235
|
.banner-dismiss {
|
|
1132
1236
|
background: none;
|
|
1133
|
-
border: 1px solid rgba(
|
|
1237
|
+
border: 1px solid rgba(236,106,94,0.4);
|
|
1134
1238
|
border-radius: var(--radius-2);
|
|
1135
1239
|
color: var(--red);
|
|
1136
1240
|
font-size: var(--text-2xs);
|
|
@@ -1139,12 +1243,12 @@ section .body {
|
|
|
1139
1243
|
cursor: pointer;
|
|
1140
1244
|
white-space: nowrap;
|
|
1141
1245
|
}
|
|
1142
|
-
.banner-dismiss:hover { background: rgba(
|
|
1246
|
+
.banner-dismiss:hover { background: rgba(236,106,94,0.15); }
|
|
1143
1247
|
|
|
1144
1248
|
#parse-warning {
|
|
1145
1249
|
padding: var(--space-3) var(--space-5);
|
|
1146
|
-
background: rgba(
|
|
1147
|
-
border-bottom: 1px solid rgba(
|
|
1250
|
+
background: rgba(224,166,58,0.08);
|
|
1251
|
+
border-bottom: 1px solid rgba(224,166,58,0.2);
|
|
1148
1252
|
font-size: var(--text-xs);
|
|
1149
1253
|
color: var(--amber);
|
|
1150
1254
|
}
|
|
@@ -1234,7 +1338,7 @@ footer {
|
|
|
1234
1338
|
}
|
|
1235
1339
|
|
|
1236
1340
|
.kanban-col {
|
|
1237
|
-
background: var(--bg-
|
|
1341
|
+
background: var(--bg-sunken);
|
|
1238
1342
|
border: 1px solid var(--border-subtle);
|
|
1239
1343
|
border-radius: var(--radius-4);
|
|
1240
1344
|
min-height: 200px;
|
|
@@ -1317,10 +1421,10 @@ footer {
|
|
|
1317
1421
|
box-shadow: 0 0 0 1px var(--accent-border);
|
|
1318
1422
|
}
|
|
1319
1423
|
.kanban-card.done {
|
|
1320
|
-
border-color: rgba(
|
|
1424
|
+
border-color: rgba(60,185,138,0.3);
|
|
1321
1425
|
}
|
|
1322
1426
|
.kanban-card.blocked-state {
|
|
1323
|
-
border-color: rgba(
|
|
1427
|
+
border-color: rgba(236,106,94,0.3);
|
|
1324
1428
|
}
|
|
1325
1429
|
|
|
1326
1430
|
/* Drag-over highlight */
|
|
@@ -1368,10 +1472,10 @@ footer {
|
|
|
1368
1472
|
padding: 1px 5px;
|
|
1369
1473
|
border-radius: var(--radius-1);
|
|
1370
1474
|
}
|
|
1371
|
-
.s-todo .kanban-card-status { background:
|
|
1372
|
-
.s-in_progress .kanban-card-status { background:
|
|
1373
|
-
.s-blocked .kanban-card-status { background:
|
|
1374
|
-
.s-done .kanban-card-status { background:
|
|
1475
|
+
.s-todo .kanban-card-status { background: var(--st-planned-wash); color: var(--status-todo); border: 1px solid var(--st-planned-border); }
|
|
1476
|
+
.s-in_progress .kanban-card-status { background: var(--st-executing-wash); color: var(--status-progress); border: 1px solid var(--st-executing-border); }
|
|
1477
|
+
.s-blocked .kanban-card-status { background: var(--st-blocked-wash); color: var(--status-blocked); border: 1px solid var(--st-blocked-border); }
|
|
1478
|
+
.s-done .kanban-card-status { background: var(--st-complete-wash); color: var(--status-done); border: 1px solid var(--st-complete-border); }
|
|
1375
1479
|
|
|
1376
1480
|
/* Running indicator on card */
|
|
1377
1481
|
.card-run-indicator {
|
|
@@ -1428,17 +1532,17 @@ footer {
|
|
|
1428
1532
|
.kanban-run-btn:hover {
|
|
1429
1533
|
background: var(--accent-primary);
|
|
1430
1534
|
border-color: var(--accent-primary);
|
|
1431
|
-
color:
|
|
1535
|
+
color: var(--accent-fg);
|
|
1432
1536
|
}
|
|
1433
1537
|
.kanban-run-btn:active { transform: scale(0.97); }
|
|
1434
1538
|
|
|
1435
1539
|
.kanban-stop-btn {
|
|
1436
|
-
background: rgba(
|
|
1437
|
-
border-color: rgba(
|
|
1540
|
+
background: rgba(236,106,94,0.1);
|
|
1541
|
+
border-color: rgba(236,106,94,0.3);
|
|
1438
1542
|
color: var(--red);
|
|
1439
1543
|
}
|
|
1440
1544
|
.kanban-stop-btn:hover {
|
|
1441
|
-
background: rgba(
|
|
1545
|
+
background: rgba(236,106,94,0.2);
|
|
1442
1546
|
}
|
|
1443
1547
|
.kanban-stop-btn:active { transform: scale(0.97); }
|
|
1444
1548
|
|
|
@@ -1514,7 +1618,7 @@ footer {
|
|
|
1514
1618
|
}
|
|
1515
1619
|
.orch-panel-resize:hover,
|
|
1516
1620
|
.orch-panel-resize.dragging {
|
|
1517
|
-
background: var(--accent, #
|
|
1621
|
+
background: var(--accent-primary, #22b6cf);
|
|
1518
1622
|
opacity: 0.35;
|
|
1519
1623
|
}
|
|
1520
1624
|
.orch-panel.open {
|
|
@@ -1636,7 +1740,7 @@ footer {
|
|
|
1636
1740
|
flex: 1;
|
|
1637
1741
|
overflow-y: auto;
|
|
1638
1742
|
padding: var(--space-4) var(--space-5);
|
|
1639
|
-
background:
|
|
1743
|
+
background: var(--bg-sunken);
|
|
1640
1744
|
font-family: var(--font-mono);
|
|
1641
1745
|
font-size: 12px;
|
|
1642
1746
|
line-height: 1.6;
|
|
@@ -1756,11 +1860,11 @@ footer {
|
|
|
1756
1860
|
}
|
|
1757
1861
|
.orch-footer-btn:hover { background: var(--bg-active); color: var(--text-primary); }
|
|
1758
1862
|
.orch-footer-btn.stop {
|
|
1759
|
-
background: rgba(
|
|
1760
|
-
border-color: rgba(
|
|
1863
|
+
background: rgba(236,106,94,0.1);
|
|
1864
|
+
border-color: rgba(236,106,94,0.3);
|
|
1761
1865
|
color: var(--red);
|
|
1762
1866
|
}
|
|
1763
|
-
.orch-footer-btn.stop:hover { background: rgba(
|
|
1867
|
+
.orch-footer-btn.stop:hover { background: rgba(236,106,94,0.2); }
|
|
1764
1868
|
|
|
1765
1869
|
/* ── Old kanban inline terminals (hidden) ────────────────────── */
|
|
1766
1870
|
.kanban-log-panel { display: none !important; }
|
|
@@ -1800,9 +1904,9 @@ footer {
|
|
|
1800
1904
|
padding: 1px 5px;
|
|
1801
1905
|
border-radius: var(--radius-1);
|
|
1802
1906
|
}
|
|
1803
|
-
.phase-status.done { background:
|
|
1804
|
-
.phase-status.planned { background:
|
|
1805
|
-
.phase-status.active { background:
|
|
1907
|
+
.phase-status.done { background: var(--st-complete-wash); color: var(--green); border: 1px solid var(--st-complete-border); }
|
|
1908
|
+
.phase-status.planned { background: var(--accent-bg); color: var(--accent-hover); border: 1px solid var(--accent-border); }
|
|
1909
|
+
.phase-status.active { background: var(--st-executing-wash); color: var(--amber); border: 1px solid var(--st-executing-border); }
|
|
1806
1910
|
|
|
1807
1911
|
/* Sprint / tasks */
|
|
1808
1912
|
.sprint-card {
|
|
@@ -1854,7 +1958,7 @@ footer {
|
|
|
1854
1958
|
font-size: 9px;
|
|
1855
1959
|
color: var(--green);
|
|
1856
1960
|
}
|
|
1857
|
-
.task-check.done { border-color: var(--green); background:
|
|
1961
|
+
.task-check.done { border-color: var(--green); background: var(--st-complete-wash); }
|
|
1858
1962
|
.task-id {
|
|
1859
1963
|
font-family: var(--font-mono);
|
|
1860
1964
|
font-size: var(--text-2xs);
|
|
@@ -1899,10 +2003,10 @@ footer {
|
|
|
1899
2003
|
display: inline-flex;
|
|
1900
2004
|
align-self: flex-start;
|
|
1901
2005
|
}
|
|
1902
|
-
.memory-type.user { background:
|
|
1903
|
-
.memory-type.feedback { background:
|
|
1904
|
-
.memory-type.project { background:
|
|
1905
|
-
.memory-type.reference { background:
|
|
2006
|
+
.memory-type.user { background: var(--accent-bg); color: var(--accent-hover); border: 1px solid var(--accent-border); }
|
|
2007
|
+
.memory-type.feedback { background: var(--st-executing-wash); color: var(--amber); border: 1px solid var(--st-executing-border); }
|
|
2008
|
+
.memory-type.project { background: var(--st-complete-wash); color: var(--green); border: 1px solid var(--st-complete-border); }
|
|
2009
|
+
.memory-type.reference { background: var(--st-info-wash); color: var(--blue); border: 1px solid var(--st-info-border); }
|
|
1906
2010
|
.memory-name {
|
|
1907
2011
|
font-size: var(--text-xs);
|
|
1908
2012
|
font-weight: 600;
|
|
@@ -2024,7 +2128,7 @@ footer {
|
|
|
2024
2128
|
right: 0;
|
|
2025
2129
|
height: 55vh;
|
|
2026
2130
|
min-height: 300px;
|
|
2027
|
-
background:
|
|
2131
|
+
background: var(--bg-sunken);
|
|
2028
2132
|
border-top: 2px solid var(--accent-primary);
|
|
2029
2133
|
z-index: 201;
|
|
2030
2134
|
flex-direction: column;
|
|
@@ -2126,7 +2230,7 @@ footer {
|
|
|
2126
2230
|
flex: 1;
|
|
2127
2231
|
overflow: hidden;
|
|
2128
2232
|
padding: 6px 8px;
|
|
2129
|
-
background:
|
|
2233
|
+
background: var(--bg-sunken);
|
|
2130
2234
|
}
|
|
2131
2235
|
.term-hint {
|
|
2132
2236
|
padding: var(--space-2) var(--space-3);
|
|
@@ -2146,7 +2250,7 @@ footer {
|
|
|
2146
2250
|
background: var(--accent-primary);
|
|
2147
2251
|
border: 1px solid rgba(255,255,255,0.1);
|
|
2148
2252
|
border-radius: var(--radius-3);
|
|
2149
|
-
color:
|
|
2253
|
+
color: var(--accent-fg);
|
|
2150
2254
|
font-size: var(--text-xs);
|
|
2151
2255
|
font-weight: 500;
|
|
2152
2256
|
font-family: var(--font-sans);
|
|
@@ -2192,6 +2296,27 @@ footer {
|
|
|
2192
2296
|
color var(--t-fast) var(--ease),
|
|
2193
2297
|
border-color var(--t-fast) var(--ease);
|
|
2194
2298
|
}
|
|
2299
|
+
.card-file-btn {
|
|
2300
|
+
float: right;
|
|
2301
|
+
margin-left: var(--space-3);
|
|
2302
|
+
height: 20px;
|
|
2303
|
+
padding: 0 var(--space-3);
|
|
2304
|
+
background: transparent;
|
|
2305
|
+
border: 1px solid var(--border-default);
|
|
2306
|
+
border-radius: var(--radius-2);
|
|
2307
|
+
color: var(--text-tertiary);
|
|
2308
|
+
font-size: 10px;
|
|
2309
|
+
font-weight: 500;
|
|
2310
|
+
cursor: pointer;
|
|
2311
|
+
transition: background var(--t-fast) var(--ease),
|
|
2312
|
+
color var(--t-fast) var(--ease),
|
|
2313
|
+
border-color var(--t-fast) var(--ease);
|
|
2314
|
+
}
|
|
2315
|
+
.card-file-btn:hover {
|
|
2316
|
+
background: var(--accent-blue);
|
|
2317
|
+
border-color: var(--accent-blue);
|
|
2318
|
+
color: #fff;
|
|
2319
|
+
}
|
|
2195
2320
|
.card-run-btn:hover {
|
|
2196
2321
|
background: var(--accent-green);
|
|
2197
2322
|
border-color: var(--accent-green);
|
|
@@ -2232,7 +2357,7 @@ footer {
|
|
|
2232
2357
|
.orch-card.orch-running { border-left-color: var(--accent-green); }
|
|
2233
2358
|
.orch-card.orch-waiting {
|
|
2234
2359
|
border-left-color: var(--accent-amber);
|
|
2235
|
-
background: rgba(
|
|
2360
|
+
background: rgba(224,166,58,0.05);
|
|
2236
2361
|
}
|
|
2237
2362
|
.orch-card.orch-waiting .orch-card-badge { color: var(--accent-amber); }
|
|
2238
2363
|
.orch-card.orch-error,
|
|
@@ -2274,6 +2399,312 @@ footer {
|
|
|
2274
2399
|
gap: var(--space-2);
|
|
2275
2400
|
}
|
|
2276
2401
|
|
|
2402
|
+
/* ── Orchestration view — 2-column Diwan layout ──────────────────
|
|
2403
|
+
.orch-layout replaces the old single-column stack (header → banner →
|
|
2404
|
+
command runner → orch-grid → history). Left rail is fixed 300px; right
|
|
2405
|
+
column hosts the docked xterm terminal (XtermPanel docked=true) + run
|
|
2406
|
+
history beneath it. Reuses the existing bg-elev/border/st-*-wash
|
|
2407
|
+
tokens — no new colors introduced. */
|
|
2408
|
+
.orch-layout {
|
|
2409
|
+
display: grid;
|
|
2410
|
+
grid-template-columns: 300px 1fr;
|
|
2411
|
+
gap: var(--space-4);
|
|
2412
|
+
height: 100%;
|
|
2413
|
+
padding: var(--space-5) var(--space-6);
|
|
2414
|
+
box-sizing: border-box;
|
|
2415
|
+
}
|
|
2416
|
+
.orch-left-rail {
|
|
2417
|
+
display: flex;
|
|
2418
|
+
flex-direction: column;
|
|
2419
|
+
gap: var(--space-4);
|
|
2420
|
+
min-height: 0;
|
|
2421
|
+
}
|
|
2422
|
+
.orch-h1 {
|
|
2423
|
+
margin: 0 0 2px;
|
|
2424
|
+
font-size: var(--text-xl);
|
|
2425
|
+
font-weight: 660;
|
|
2426
|
+
letter-spacing: -0.01em;
|
|
2427
|
+
color: var(--text-primary);
|
|
2428
|
+
}
|
|
2429
|
+
.orch-header-sub {
|
|
2430
|
+
font-size: var(--text-sm);
|
|
2431
|
+
color: var(--text-tertiary);
|
|
2432
|
+
}
|
|
2433
|
+
.orch-card-label {
|
|
2434
|
+
padding: var(--space-3) var(--space-4);
|
|
2435
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
2436
|
+
font-size: var(--text-2xs);
|
|
2437
|
+
text-transform: uppercase;
|
|
2438
|
+
letter-spacing: 0.06em;
|
|
2439
|
+
color: var(--text-tertiary);
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
/* Agents card — live rows for sessions the orchestrator is currently running. */
|
|
2443
|
+
.orch-runner-card {
|
|
2444
|
+
background: var(--bg-elev-1);
|
|
2445
|
+
border: 1px solid var(--border-subtle);
|
|
2446
|
+
border-radius: var(--radius-3);
|
|
2447
|
+
overflow: hidden;
|
|
2448
|
+
display: flex;
|
|
2449
|
+
flex-direction: column;
|
|
2450
|
+
}
|
|
2451
|
+
.orch-runner-list {
|
|
2452
|
+
padding: var(--space-2);
|
|
2453
|
+
display: flex;
|
|
2454
|
+
flex-direction: column;
|
|
2455
|
+
gap: 2px;
|
|
2456
|
+
overflow-y: auto;
|
|
2457
|
+
}
|
|
2458
|
+
.orch-runner-row {
|
|
2459
|
+
display: flex;
|
|
2460
|
+
align-items: center;
|
|
2461
|
+
gap: 10px;
|
|
2462
|
+
padding: 9px 10px;
|
|
2463
|
+
border-radius: var(--radius-2);
|
|
2464
|
+
cursor: pointer;
|
|
2465
|
+
border: 1px solid transparent;
|
|
2466
|
+
background: transparent;
|
|
2467
|
+
transition: background var(--t-fast) var(--ease);
|
|
2468
|
+
}
|
|
2469
|
+
.orch-runner-row:hover { background: var(--bg-hover); }
|
|
2470
|
+
.orch-runner-row.selected { background: var(--accent-bg); border-color: var(--accent-border); }
|
|
2471
|
+
.orch-runner-row.attached { border-color: var(--accent-primary); }
|
|
2472
|
+
.orch-runner-abbr {
|
|
2473
|
+
width: 26px;
|
|
2474
|
+
height: 26px;
|
|
2475
|
+
border-radius: var(--radius-2);
|
|
2476
|
+
background: var(--bg-elev-3);
|
|
2477
|
+
display: grid;
|
|
2478
|
+
place-items: center;
|
|
2479
|
+
font-family: var(--font-mono);
|
|
2480
|
+
font-size: var(--text-xs);
|
|
2481
|
+
color: var(--accent-primary);
|
|
2482
|
+
flex-shrink: 0;
|
|
2483
|
+
}
|
|
2484
|
+
.orch-runner-info { flex: 1; min-width: 0; }
|
|
2485
|
+
.orch-runner-name {
|
|
2486
|
+
font-size: var(--text-md);
|
|
2487
|
+
color: var(--text-primary);
|
|
2488
|
+
overflow: hidden;
|
|
2489
|
+
text-overflow: ellipsis;
|
|
2490
|
+
white-space: nowrap;
|
|
2491
|
+
}
|
|
2492
|
+
.orch-runner-role {
|
|
2493
|
+
font-family: var(--font-mono);
|
|
2494
|
+
font-size: var(--text-2xs);
|
|
2495
|
+
color: var(--text-tertiary);
|
|
2496
|
+
overflow: hidden;
|
|
2497
|
+
text-overflow: ellipsis;
|
|
2498
|
+
white-space: nowrap;
|
|
2499
|
+
}
|
|
2500
|
+
.orch-runner-glance {
|
|
2501
|
+
font-size: var(--text-2xs);
|
|
2502
|
+
color: var(--text-muted);
|
|
2503
|
+
overflow: hidden;
|
|
2504
|
+
text-overflow: ellipsis;
|
|
2505
|
+
white-space: nowrap;
|
|
2506
|
+
margin-top: 1px;
|
|
2507
|
+
}
|
|
2508
|
+
.orch-runner-status {
|
|
2509
|
+
font-size: var(--text-xs);
|
|
2510
|
+
font-weight: 600;
|
|
2511
|
+
color: var(--text-muted);
|
|
2512
|
+
white-space: nowrap;
|
|
2513
|
+
}
|
|
2514
|
+
.orch-runner-status.running { color: var(--green); }
|
|
2515
|
+
.orch-agent-status {
|
|
2516
|
+
font-size: var(--text-2xs);
|
|
2517
|
+
font-weight: 600;
|
|
2518
|
+
text-transform: uppercase;
|
|
2519
|
+
letter-spacing: 0.04em;
|
|
2520
|
+
padding: 2px 7px;
|
|
2521
|
+
border-radius: var(--radius-1);
|
|
2522
|
+
white-space: nowrap;
|
|
2523
|
+
flex-shrink: 0;
|
|
2524
|
+
}
|
|
2525
|
+
.orch-agent-status.running { background: var(--st-executing-wash); color: var(--status-progress); border: 1px solid var(--st-executing-border); }
|
|
2526
|
+
.orch-agent-status.blocked { background: var(--st-blocked-wash); color: var(--status-blocked); border: 1px solid var(--st-blocked-border); }
|
|
2527
|
+
.orch-agent-status.exited { background: transparent; color: var(--text-tertiary); border: 1px solid var(--border-subtle); }
|
|
2528
|
+
.orch-runner-empty { padding: var(--space-2) var(--space-1); }
|
|
2529
|
+
.orch-runner-card-footer {
|
|
2530
|
+
padding: var(--space-3) var(--space-4);
|
|
2531
|
+
border-top: 1px solid var(--border-subtle);
|
|
2532
|
+
display: flex;
|
|
2533
|
+
flex-direction: column;
|
|
2534
|
+
gap: var(--space-2);
|
|
2535
|
+
}
|
|
2536
|
+
.orch-runner-hint { font-size: var(--text-2xs); color: var(--text-tertiary); }
|
|
2537
|
+
.orch-run-cmd-field {
|
|
2538
|
+
display: flex;
|
|
2539
|
+
flex-direction: column;
|
|
2540
|
+
gap: 4px;
|
|
2541
|
+
}
|
|
2542
|
+
|
|
2543
|
+
/* Pipeline card — live sessions, or a history-status summary fallback. */
|
|
2544
|
+
.orch-pipeline-card {
|
|
2545
|
+
background: var(--bg-elev-1);
|
|
2546
|
+
border: 1px solid var(--border-subtle);
|
|
2547
|
+
border-radius: var(--radius-3);
|
|
2548
|
+
padding: var(--space-4);
|
|
2549
|
+
overflow-y: auto;
|
|
2550
|
+
}
|
|
2551
|
+
.orch-pipeline-label {
|
|
2552
|
+
font-size: var(--text-2xs);
|
|
2553
|
+
text-transform: uppercase;
|
|
2554
|
+
letter-spacing: 0.06em;
|
|
2555
|
+
color: var(--text-tertiary);
|
|
2556
|
+
margin-bottom: var(--space-3);
|
|
2557
|
+
}
|
|
2558
|
+
.orch-pipeline-row {
|
|
2559
|
+
display: flex;
|
|
2560
|
+
align-items: center;
|
|
2561
|
+
gap: 10px;
|
|
2562
|
+
padding: 6px 8px;
|
|
2563
|
+
margin: 0 -8px;
|
|
2564
|
+
border-radius: var(--radius-2);
|
|
2565
|
+
cursor: pointer;
|
|
2566
|
+
}
|
|
2567
|
+
.orch-pipeline-row.active { background: var(--accent-bg); }
|
|
2568
|
+
.orch-pipeline-glyph {
|
|
2569
|
+
width: 20px;
|
|
2570
|
+
height: 20px;
|
|
2571
|
+
border-radius: 50%;
|
|
2572
|
+
display: grid;
|
|
2573
|
+
place-items: center;
|
|
2574
|
+
font-size: 11px;
|
|
2575
|
+
flex-shrink: 0;
|
|
2576
|
+
}
|
|
2577
|
+
.orch-pipeline-glyph.running,
|
|
2578
|
+
.orch-pipeline-glyph.stopped { background: var(--st-executing-wash); border: 1px solid var(--st-executing-border); color: var(--amber); }
|
|
2579
|
+
.orch-pipeline-glyph.blocked,
|
|
2580
|
+
.orch-pipeline-glyph.waiting,
|
|
2581
|
+
.orch-pipeline-glyph.exited,
|
|
2582
|
+
.orch-pipeline-glyph.error { background: var(--st-blocked-wash); border: 1px solid var(--st-blocked-border); color: var(--red); }
|
|
2583
|
+
.orch-pipeline-glyph.done { background: var(--st-complete-wash); border: 1px solid var(--st-complete-border); color: var(--green); }
|
|
2584
|
+
.orch-pipeline-label-text {
|
|
2585
|
+
flex: 1;
|
|
2586
|
+
font-size: var(--text-md);
|
|
2587
|
+
color: var(--text-secondary);
|
|
2588
|
+
overflow: hidden;
|
|
2589
|
+
text-overflow: ellipsis;
|
|
2590
|
+
white-space: nowrap;
|
|
2591
|
+
text-transform: capitalize;
|
|
2592
|
+
}
|
|
2593
|
+
.orch-pipeline-count {
|
|
2594
|
+
font-family: var(--font-mono);
|
|
2595
|
+
font-size: var(--text-xs);
|
|
2596
|
+
color: var(--text-tertiary);
|
|
2597
|
+
white-space: nowrap;
|
|
2598
|
+
}
|
|
2599
|
+
.orch-pipeline-actions { display: flex; gap: 4px; margin-left: 6px; }
|
|
2600
|
+
.orch-pipeline-action-btn {
|
|
2601
|
+
background: transparent;
|
|
2602
|
+
border: 1px solid var(--border-default);
|
|
2603
|
+
border-radius: var(--radius-1);
|
|
2604
|
+
color: var(--text-tertiary);
|
|
2605
|
+
font-size: 10px;
|
|
2606
|
+
line-height: 1;
|
|
2607
|
+
padding: 3px 6px;
|
|
2608
|
+
cursor: pointer;
|
|
2609
|
+
}
|
|
2610
|
+
.orch-pipeline-action-btn:hover { background: var(--bg-hover); color: var(--text-primary); }
|
|
2611
|
+
.orch-pipeline-action-btn.danger { color: var(--red); border-color: rgba(236,106,94,0.4); }
|
|
2612
|
+
.orch-pipeline-action-btn.danger:hover { background: rgba(236,106,94,0.12); }
|
|
2613
|
+
|
|
2614
|
+
/* Right column — docked terminal + run history beneath it. */
|
|
2615
|
+
.orch-right-col {
|
|
2616
|
+
display: flex;
|
|
2617
|
+
flex-direction: column;
|
|
2618
|
+
gap: var(--space-4);
|
|
2619
|
+
height: 100%;
|
|
2620
|
+
min-height: 0;
|
|
2621
|
+
}
|
|
2622
|
+
.orch-term-dock {
|
|
2623
|
+
border: 1px solid var(--border-strong);
|
|
2624
|
+
border-radius: var(--radius-3);
|
|
2625
|
+
overflow: hidden;
|
|
2626
|
+
background: var(--bg-sunken);
|
|
2627
|
+
box-shadow: var(--shadow-lg);
|
|
2628
|
+
display: flex;
|
|
2629
|
+
flex-direction: column;
|
|
2630
|
+
min-height: 320px;
|
|
2631
|
+
flex: 1 1 auto;
|
|
2632
|
+
}
|
|
2633
|
+
.orch-term-dock-header {
|
|
2634
|
+
display: flex;
|
|
2635
|
+
align-items: center;
|
|
2636
|
+
gap: 8px;
|
|
2637
|
+
padding: 8px 12px;
|
|
2638
|
+
background: var(--bg-elev-2);
|
|
2639
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
2640
|
+
flex-shrink: 0;
|
|
2641
|
+
}
|
|
2642
|
+
.orch-term-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
|
|
2643
|
+
.orch-term-dot.red { background: var(--red); }
|
|
2644
|
+
.orch-term-dot.amber { background: var(--amber); }
|
|
2645
|
+
.orch-term-dot.green { background: var(--green); }
|
|
2646
|
+
.orch-term-dock-label {
|
|
2647
|
+
font-family: var(--font-mono);
|
|
2648
|
+
font-size: var(--text-xs);
|
|
2649
|
+
color: var(--text-tertiary);
|
|
2650
|
+
margin-left: 6px;
|
|
2651
|
+
overflow: hidden;
|
|
2652
|
+
text-overflow: ellipsis;
|
|
2653
|
+
white-space: nowrap;
|
|
2654
|
+
}
|
|
2655
|
+
.orch-term-dock-live {
|
|
2656
|
+
display: inline-flex;
|
|
2657
|
+
align-items: center;
|
|
2658
|
+
gap: 5px;
|
|
2659
|
+
margin-left: auto;
|
|
2660
|
+
font-size: var(--text-2xs);
|
|
2661
|
+
color: var(--green);
|
|
2662
|
+
font-family: var(--font-mono);
|
|
2663
|
+
white-space: nowrap;
|
|
2664
|
+
}
|
|
2665
|
+
.orch-term-dock-live-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--green); }
|
|
2666
|
+
.orch-term-dock-stop {
|
|
2667
|
+
height: 22px;
|
|
2668
|
+
padding: 0 10px;
|
|
2669
|
+
border-radius: var(--radius-1);
|
|
2670
|
+
font-size: var(--text-2xs);
|
|
2671
|
+
font-weight: 600;
|
|
2672
|
+
color: var(--red);
|
|
2673
|
+
background: var(--st-blocked-wash);
|
|
2674
|
+
border: 1px solid var(--st-blocked-border);
|
|
2675
|
+
cursor: pointer;
|
|
2676
|
+
font-family: var(--font-sans);
|
|
2677
|
+
margin-left: var(--space-2);
|
|
2678
|
+
}
|
|
2679
|
+
.orch-term-dock-stop:hover { opacity: 0.85; }
|
|
2680
|
+
.orch-term-dock-body {
|
|
2681
|
+
flex: 1;
|
|
2682
|
+
min-height: 0;
|
|
2683
|
+
display: flex;
|
|
2684
|
+
flex-direction: column;
|
|
2685
|
+
}
|
|
2686
|
+
.orch-term-dock-container {
|
|
2687
|
+
flex: 1;
|
|
2688
|
+
overflow: hidden;
|
|
2689
|
+
padding: 14px;
|
|
2690
|
+
}
|
|
2691
|
+
.orch-term-dock-empty {
|
|
2692
|
+
flex: 1;
|
|
2693
|
+
display: flex;
|
|
2694
|
+
align-items: center;
|
|
2695
|
+
justify-content: center;
|
|
2696
|
+
padding: var(--space-6);
|
|
2697
|
+
text-align: center;
|
|
2698
|
+
color: var(--text-tertiary);
|
|
2699
|
+
font-size: var(--text-sm);
|
|
2700
|
+
}
|
|
2701
|
+
.orch-hist-dock {
|
|
2702
|
+
flex: 0 0 auto;
|
|
2703
|
+
max-height: 240px;
|
|
2704
|
+
overflow-y: auto;
|
|
2705
|
+
}
|
|
2706
|
+
.orch-hist-dock .hist-panel { margin-top: 0; }
|
|
2707
|
+
|
|
2277
2708
|
/* ── Run history panel ── */
|
|
2278
2709
|
.hist-panel { margin-top: var(--space-6); }
|
|
2279
2710
|
.hist-panel-title { display: flex; align-items: center; gap: var(--space-2); font-size: var(--text-md); color: var(--text-primary); margin-bottom: var(--space-4); }
|
|
@@ -2281,6 +2712,9 @@ footer {
|
|
|
2281
2712
|
.hist-group-title { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-bottom: var(--space-2); }
|
|
2282
2713
|
.hist-date { font-size: var(--text-2xs); color: var(--text-muted); margin: var(--space-3) 0 var(--space-2); }
|
|
2283
2714
|
.hist-row { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-3); background: var(--bg-elev-2); border: 1px solid var(--border-subtle); border-radius: var(--radius-2); margin-bottom: var(--space-2); }
|
|
2715
|
+
.hist-row.clickable { cursor: pointer; }
|
|
2716
|
+
.hist-row.clickable:hover { background: var(--bg-hover); }
|
|
2717
|
+
.hist-row.active { border-color: var(--accent-primary); background: var(--accent-bg); }
|
|
2284
2718
|
.hist-row-id { font-weight: 600; font-size: var(--text-sm); color: var(--text-primary); }
|
|
2285
2719
|
.hist-row-cmd { font-family: var(--font-mono); font-size: var(--text-2xs); color: var(--text-secondary); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2286
2720
|
.hist-row-duration { display: flex; align-items: center; gap: var(--space-1); font-size: var(--text-2xs); color: var(--text-muted); white-space: nowrap; }
|
|
@@ -2393,8 +2827,8 @@ footer {
|
|
|
2393
2827
|
.sb-logo-badge {
|
|
2394
2828
|
width: 30px; height: 30px; border-radius: 9px; flex-shrink: 0;
|
|
2395
2829
|
display: flex; align-items: center; justify-content: center;
|
|
2396
|
-
font-weight: 800; font-size: 16px; color:
|
|
2397
|
-
background: linear-gradient(135deg, var(--
|
|
2830
|
+
font-weight: 800; font-size: 16px; color: var(--dash-ink);
|
|
2831
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
2398
2832
|
}
|
|
2399
2833
|
.sb-logo-word { font-size: 16px; font-weight: 700; color: var(--dash-text); letter-spacing: -0.01em; }
|
|
2400
2834
|
|
|
@@ -2423,7 +2857,7 @@ footer {
|
|
|
2423
2857
|
transition: background 0.15s, color 0.15s;
|
|
2424
2858
|
}
|
|
2425
2859
|
.sb-nav-link:hover { background: rgba(255, 255, 255, 0.04); color: var(--dash-text); }
|
|
2426
|
-
.sb-nav-link.active { background: rgba(
|
|
2860
|
+
.sb-nav-link.active { background: rgba(34, 182, 207, 0.12); color: var(--dash-text); font-weight: 600; }
|
|
2427
2861
|
.sb-nav-link.active .sb-nav-ic { color: var(--dash-teal); }
|
|
2428
2862
|
.sb-nav-ic { display: inline-flex; color: var(--dash-text-muted); }
|
|
2429
2863
|
.sb-nav-label { flex: 1; }
|
|
@@ -2442,16 +2876,16 @@ footer {
|
|
|
2442
2876
|
.phealth-pct { font-size: 26px; font-weight: 800; line-height: 1; color: var(--dash-text); }
|
|
2443
2877
|
.phealth-pct-sign { font-size: 14px; font-weight: 700; margin-left: 1px; color: var(--dash-text-muted); }
|
|
2444
2878
|
.phealth-label { font-size: 12px; font-weight: 600; }
|
|
2445
|
-
.phealth--good .phealth-label { color: var(--
|
|
2879
|
+
.phealth--good .phealth-label { color: var(--status-done); }
|
|
2446
2880
|
.phealth--warn .phealth-label { color: var(--dash-sev-medium); }
|
|
2447
2881
|
.phealth--risk .phealth-label { color: var(--dash-sev-high); }
|
|
2448
2882
|
.phealth-spark { width: 100%; height: 36px; display: block; }
|
|
2449
2883
|
.phealth-spark-line { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; }
|
|
2450
|
-
.phealth--good .phealth-spark-line { stroke: var(--
|
|
2884
|
+
.phealth--good .phealth-spark-line { stroke: var(--status-done); }
|
|
2451
2885
|
.phealth--warn .phealth-spark-line { stroke: var(--dash-sev-medium); }
|
|
2452
2886
|
.phealth--risk .phealth-spark-line { stroke: var(--dash-sev-high); }
|
|
2453
2887
|
.phealth-spark-area { stroke: none; opacity: 0.14; }
|
|
2454
|
-
.phealth--good .phealth-spark-area { fill: var(--
|
|
2888
|
+
.phealth--good .phealth-spark-area { fill: var(--status-done); }
|
|
2455
2889
|
.phealth--warn .phealth-spark-area { fill: var(--dash-sev-medium); }
|
|
2456
2890
|
.phealth--risk .phealth-spark-area { fill: var(--dash-sev-high); }
|
|
2457
2891
|
|
|
@@ -2463,8 +2897,8 @@ footer {
|
|
|
2463
2897
|
.sb-avatar {
|
|
2464
2898
|
width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
|
|
2465
2899
|
display: flex; align-items: center; justify-content: center;
|
|
2466
|
-
font-size: 12px; font-weight: 700; color:
|
|
2467
|
-
background: linear-gradient(135deg, var(--
|
|
2900
|
+
font-size: 12px; font-weight: 700; color: var(--dash-ink);
|
|
2901
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
2468
2902
|
}
|
|
2469
2903
|
.sb-profile-meta { display: flex; flex-direction: column; min-width: 0; }
|
|
2470
2904
|
.sb-profile-name { font-size: 13px; font-weight: 600; color: var(--dash-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -2490,8 +2924,8 @@ footer {
|
|
|
2490
2924
|
font-size: 12px; color: var(--dash-text-muted);
|
|
2491
2925
|
}
|
|
2492
2926
|
.tb-synced:hover { color: var(--dash-text); }
|
|
2493
|
-
.tb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--
|
|
2494
|
-
.tb-synced--busy .tb-dot { background: var(--dash-blue); box-shadow: 0 0 0 3px rgba(
|
|
2927
|
+
.tb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--status-done); box-shadow: 0 0 0 3px rgba(60, 185, 138, 0.18); flex-shrink: 0; }
|
|
2928
|
+
.tb-synced--busy .tb-dot { background: var(--dash-blue); box-shadow: 0 0 0 3px rgba(224, 166, 58, 0.18); animation: tb-pulse 0.8s ease-in-out infinite; }
|
|
2495
2929
|
@keyframes tb-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
|
|
2496
2930
|
.tb-btn {
|
|
2497
2931
|
display: inline-flex; align-items: center; gap: 7px;
|
|
@@ -2503,12 +2937,11 @@ footer {
|
|
|
2503
2937
|
}
|
|
2504
2938
|
.tb-btn:hover { border-color: var(--dash-teal); }
|
|
2505
2939
|
.tb-btn--primary {
|
|
2506
|
-
background: linear-gradient(135deg, var(--
|
|
2507
|
-
border-color: transparent; color:
|
|
2940
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
2941
|
+
border-color: transparent; color: var(--dash-ink);
|
|
2508
2942
|
}
|
|
2509
2943
|
.tb-btn--primary:hover { filter: brightness(1.05); border-color: transparent; }
|
|
2510
2944
|
.tb-btn--icon { padding: 8px 11px; }
|
|
2511
|
-
.tb-kebab { font-size: 16px; line-height: 1; letter-spacing: 1px; }
|
|
2512
2945
|
|
|
2513
2946
|
@media (max-width: 760px) {
|
|
2514
2947
|
.tb-sub { display: none; }
|
|
@@ -2759,7 +3192,7 @@ footer {
|
|
|
2759
3192
|
border-radius: 50%;
|
|
2760
3193
|
display: inline-block;
|
|
2761
3194
|
}
|
|
2762
|
-
.donut-dot--done { background: var(--
|
|
3195
|
+
.donut-dot--done { background: var(--status-done); }
|
|
2763
3196
|
.donut-dot--prog { background: var(--dash-blue); }
|
|
2764
3197
|
.donut-dot--idle { background: var(--dash-sev-low); }
|
|
2765
3198
|
.donut-legend-label {
|
|
@@ -2806,8 +3239,8 @@ footer {
|
|
|
2806
3239
|
justify-content: center;
|
|
2807
3240
|
font-size: 20px;
|
|
2808
3241
|
border-radius: 10px;
|
|
2809
|
-
background:
|
|
2810
|
-
border: 1px solid
|
|
3242
|
+
background: var(--accent-bg);
|
|
3243
|
+
border: 1px solid var(--accent-border);
|
|
2811
3244
|
}
|
|
2812
3245
|
.cp-headtext { min-width: 0; }
|
|
2813
3246
|
.cp-titlerow {
|
|
@@ -2830,8 +3263,8 @@ footer {
|
|
|
2830
3263
|
padding: 2px 9px;
|
|
2831
3264
|
border-radius: 999px;
|
|
2832
3265
|
color: var(--dash-purple);
|
|
2833
|
-
background: rgba(
|
|
2834
|
-
border: 1px solid rgba(
|
|
3266
|
+
background: rgba(34, 182, 207, 0.12);
|
|
3267
|
+
border: 1px solid rgba(34, 182, 207, 0.3);
|
|
2835
3268
|
white-space: nowrap;
|
|
2836
3269
|
}
|
|
2837
3270
|
.cp-sub {
|
|
@@ -2887,14 +3320,14 @@ footer {
|
|
|
2887
3320
|
z-index: 1;
|
|
2888
3321
|
}
|
|
2889
3322
|
.cp-done .cp-node {
|
|
2890
|
-
background: var(--
|
|
2891
|
-
border-color: var(--
|
|
3323
|
+
background: var(--status-done);
|
|
3324
|
+
border-color: var(--status-done);
|
|
2892
3325
|
color: var(--dash-bg);
|
|
2893
3326
|
}
|
|
2894
3327
|
.cp-active .cp-node {
|
|
2895
3328
|
background: var(--dash-card);
|
|
2896
3329
|
border-color: var(--dash-purple);
|
|
2897
|
-
box-shadow: 0 0 0 4px rgba(
|
|
3330
|
+
box-shadow: 0 0 0 4px rgba(34, 182, 207, 0.2);
|
|
2898
3331
|
}
|
|
2899
3332
|
.cp-label {
|
|
2900
3333
|
font-size: 10px;
|
|
@@ -3009,7 +3442,7 @@ footer {
|
|
|
3009
3442
|
padding: 4px 9px;
|
|
3010
3443
|
border-radius: 999px;
|
|
3011
3444
|
color: var(--dash-blue);
|
|
3012
|
-
background: rgba(
|
|
3445
|
+
background: rgba(224, 166, 58, 0.15);
|
|
3013
3446
|
}
|
|
3014
3447
|
|
|
3015
3448
|
/* ── Blockers — icon + title/desc + severity pill (Row 2, Card 3) ── */
|
|
@@ -3051,16 +3484,16 @@ footer {
|
|
|
3051
3484
|
.bk-sev-medium { color: var(--dash-sev-medium); }
|
|
3052
3485
|
.bk-sev-low { color: var(--dash-sev-low); }
|
|
3053
3486
|
.bk-pill.bk-sev-high {
|
|
3054
|
-
background: rgba(
|
|
3055
|
-
border-color: rgba(
|
|
3487
|
+
background: rgba(236, 106, 94, 0.12);
|
|
3488
|
+
border-color: rgba(236, 106, 94, 0.35);
|
|
3056
3489
|
}
|
|
3057
3490
|
.bk-pill.bk-sev-medium {
|
|
3058
|
-
background: rgba(
|
|
3059
|
-
border-color: rgba(
|
|
3491
|
+
background: rgba(224, 166, 58, 0.12);
|
|
3492
|
+
border-color: rgba(224, 166, 58, 0.35);
|
|
3060
3493
|
}
|
|
3061
3494
|
.bk-pill.bk-sev-low {
|
|
3062
|
-
background: rgba(
|
|
3063
|
-
border-color: rgba(
|
|
3495
|
+
background: rgba(113, 125, 136, 0.12);
|
|
3496
|
+
border-color: rgba(113, 125, 136, 0.35);
|
|
3064
3497
|
}
|
|
3065
3498
|
|
|
3066
3499
|
/* ── RecentDecisions — title + status badge + date (Row 3, Card 1) ── */
|
|
@@ -3087,16 +3520,16 @@ footer {
|
|
|
3087
3520
|
white-space: nowrap;
|
|
3088
3521
|
}
|
|
3089
3522
|
.rd-badge--approved {
|
|
3090
|
-
color: var(--
|
|
3091
|
-
background:
|
|
3523
|
+
color: var(--status-done);
|
|
3524
|
+
background: var(--st-complete-wash);
|
|
3092
3525
|
}
|
|
3093
3526
|
.rd-badge--rejected {
|
|
3094
3527
|
color: var(--dash-sev-high);
|
|
3095
|
-
background: rgba(
|
|
3528
|
+
background: rgba(236, 106, 94, 0.12);
|
|
3096
3529
|
}
|
|
3097
3530
|
.rd-badge--proposed {
|
|
3098
|
-
color: var(--
|
|
3099
|
-
background:
|
|
3531
|
+
color: var(--status-todo);
|
|
3532
|
+
background: var(--st-planned-wash);
|
|
3100
3533
|
}
|
|
3101
3534
|
.rd-date {
|
|
3102
3535
|
flex: none;
|
|
@@ -3130,7 +3563,7 @@ footer {
|
|
|
3130
3563
|
border-top: 3px solid var(--dash-sev-low);
|
|
3131
3564
|
background: rgba(255, 255, 255, 0.02);
|
|
3132
3565
|
}
|
|
3133
|
-
.pt-seg--done { border-top-color: var(--
|
|
3566
|
+
.pt-seg--done { border-top-color: var(--status-done); }
|
|
3134
3567
|
.pt-seg--active { border-top-color: var(--dash-purple); }
|
|
3135
3568
|
.pt-seg--todo { border-top-color: var(--dash-sev-low); }
|
|
3136
3569
|
.pt-seg-name {
|
|
@@ -3149,7 +3582,7 @@ footer {
|
|
|
3149
3582
|
padding: 4px 9px;
|
|
3150
3583
|
border-radius: 999px;
|
|
3151
3584
|
color: var(--dash-blue);
|
|
3152
|
-
background: rgba(
|
|
3585
|
+
background: rgba(224, 166, 58, 0.15);
|
|
3153
3586
|
}
|
|
3154
3587
|
.bk-desc {
|
|
3155
3588
|
margin: 2px 0 0;
|
|
@@ -3172,16 +3605,16 @@ footer {
|
|
|
3172
3605
|
.bk-sev-medium { color: var(--dash-sev-medium); }
|
|
3173
3606
|
.bk-sev-low { color: var(--dash-sev-low); }
|
|
3174
3607
|
.bk-pill.bk-sev-high {
|
|
3175
|
-
background: rgba(
|
|
3176
|
-
border-color: rgba(
|
|
3608
|
+
background: rgba(236, 106, 94, 0.12);
|
|
3609
|
+
border-color: rgba(236, 106, 94, 0.35);
|
|
3177
3610
|
}
|
|
3178
3611
|
.bk-pill.bk-sev-medium {
|
|
3179
|
-
background: rgba(
|
|
3180
|
-
border-color: rgba(
|
|
3612
|
+
background: rgba(224, 166, 58, 0.12);
|
|
3613
|
+
border-color: rgba(224, 166, 58, 0.35);
|
|
3181
3614
|
}
|
|
3182
3615
|
.bk-pill.bk-sev-low {
|
|
3183
|
-
background: rgba(
|
|
3184
|
-
border-color: rgba(
|
|
3616
|
+
background: rgba(113, 125, 136, 0.12);
|
|
3617
|
+
border-color: rgba(113, 125, 136, 0.35);
|
|
3185
3618
|
}
|
|
3186
3619
|
.pt-seg-range {
|
|
3187
3620
|
font-size: 11px;
|
|
@@ -3195,15 +3628,15 @@ footer {
|
|
|
3195
3628
|
border-radius: 999px;
|
|
3196
3629
|
align-self: flex-start;
|
|
3197
3630
|
color: var(--dash-sev-low);
|
|
3198
|
-
background: rgba(
|
|
3631
|
+
background: rgba(113, 125, 136, 0.14);
|
|
3199
3632
|
}
|
|
3200
3633
|
.pt-seg--done .pt-seg-badge {
|
|
3201
|
-
color: var(--
|
|
3202
|
-
background:
|
|
3634
|
+
color: var(--status-done);
|
|
3635
|
+
background: var(--st-complete-wash);
|
|
3203
3636
|
}
|
|
3204
3637
|
.pt-seg--active .pt-seg-badge {
|
|
3205
3638
|
color: var(--dash-purple);
|
|
3206
|
-
background: rgba(
|
|
3639
|
+
background: rgba(34, 182, 207, 0.12);
|
|
3207
3640
|
}
|
|
3208
3641
|
@media (max-width: 700px) {
|
|
3209
3642
|
.pt-track { flex-direction: column; }
|
|
@@ -3233,7 +3666,7 @@ footer {
|
|
|
3233
3666
|
width: 30px; height: 30px; border-radius: 9px; flex-shrink: 0;
|
|
3234
3667
|
display: flex; align-items: center; justify-content: center;
|
|
3235
3668
|
font-weight: 800; font-size: 16px; color: var(--dash-ink);
|
|
3236
|
-
background: linear-gradient(135deg, var(--
|
|
3669
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
3237
3670
|
}
|
|
3238
3671
|
.sb-logo-word { font-size: 16px; font-weight: 700; color: var(--dash-text); letter-spacing: -0.01em; }
|
|
3239
3672
|
|
|
@@ -3262,7 +3695,7 @@ footer {
|
|
|
3262
3695
|
transition: background 0.15s, color 0.15s;
|
|
3263
3696
|
}
|
|
3264
3697
|
.sb-nav-link:hover { background: var(--dash-hover); color: var(--dash-text); }
|
|
3265
|
-
.sb-nav-link.active { background: rgba(
|
|
3698
|
+
.sb-nav-link.active { background: rgba(34, 182, 207, 0.12); color: var(--dash-text); font-weight: 600; }
|
|
3266
3699
|
.sb-nav-link.active .sb-nav-ic { color: var(--dash-teal); }
|
|
3267
3700
|
.sb-nav-ic { display: inline-flex; color: var(--dash-text-muted); }
|
|
3268
3701
|
.sb-nav-label { flex: 1; }
|
|
@@ -3281,16 +3714,16 @@ footer {
|
|
|
3281
3714
|
.phealth-pct { font-size: 26px; font-weight: 800; line-height: 1; color: var(--dash-text); }
|
|
3282
3715
|
.phealth-pct-sign { font-size: 14px; font-weight: 700; margin-left: 1px; color: var(--dash-text-muted); }
|
|
3283
3716
|
.phealth-label { font-size: 12px; font-weight: 600; }
|
|
3284
|
-
.phealth--good .phealth-label { color: var(--
|
|
3717
|
+
.phealth--good .phealth-label { color: var(--status-done); }
|
|
3285
3718
|
.phealth--warn .phealth-label { color: var(--dash-sev-medium); }
|
|
3286
3719
|
.phealth--risk .phealth-label { color: var(--dash-sev-high); }
|
|
3287
3720
|
.phealth-spark { width: 100%; height: 36px; display: block; }
|
|
3288
3721
|
.phealth-spark-line { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; }
|
|
3289
|
-
.phealth--good .phealth-spark-line { stroke: var(--
|
|
3722
|
+
.phealth--good .phealth-spark-line { stroke: var(--status-done); }
|
|
3290
3723
|
.phealth--warn .phealth-spark-line { stroke: var(--dash-sev-medium); }
|
|
3291
3724
|
.phealth--risk .phealth-spark-line { stroke: var(--dash-sev-high); }
|
|
3292
3725
|
.phealth-spark-area { stroke: none; opacity: 0.14; }
|
|
3293
|
-
.phealth--good .phealth-spark-area { fill: var(--
|
|
3726
|
+
.phealth--good .phealth-spark-area { fill: var(--status-done); }
|
|
3294
3727
|
.phealth--warn .phealth-spark-area { fill: var(--dash-sev-medium); }
|
|
3295
3728
|
.phealth--risk .phealth-spark-area { fill: var(--dash-sev-high); }
|
|
3296
3729
|
|
|
@@ -3303,7 +3736,7 @@ footer {
|
|
|
3303
3736
|
width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
|
|
3304
3737
|
display: flex; align-items: center; justify-content: center;
|
|
3305
3738
|
font-size: 12px; font-weight: 700; color: var(--dash-ink);
|
|
3306
|
-
background: linear-gradient(135deg, var(--
|
|
3739
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
3307
3740
|
}
|
|
3308
3741
|
.sb-profile-meta { display: flex; flex-direction: column; min-width: 0; }
|
|
3309
3742
|
.sb-profile-name { font-size: 13px; font-weight: 600; color: var(--dash-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -3329,8 +3762,8 @@ footer {
|
|
|
3329
3762
|
font-size: 12px; color: var(--dash-text-muted);
|
|
3330
3763
|
}
|
|
3331
3764
|
.tb-synced:hover { color: var(--dash-text); }
|
|
3332
|
-
.tb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--
|
|
3333
|
-
.tb-synced--busy .tb-dot { background: var(--dash-blue); box-shadow: 0 0 0 3px rgba(
|
|
3765
|
+
.tb-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--status-done); box-shadow: 0 0 0 3px rgba(60, 185, 138, 0.18); flex-shrink: 0; }
|
|
3766
|
+
.tb-synced--busy .tb-dot { background: var(--dash-blue); box-shadow: 0 0 0 3px rgba(224, 166, 58, 0.18); animation: tb-pulse 0.8s ease-in-out infinite; }
|
|
3334
3767
|
@keyframes tb-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
|
|
3335
3768
|
.tb-btn {
|
|
3336
3769
|
display: inline-flex; align-items: center; gap: 7px;
|
|
@@ -3342,12 +3775,11 @@ footer {
|
|
|
3342
3775
|
}
|
|
3343
3776
|
.tb-btn:hover { border-color: var(--dash-teal); }
|
|
3344
3777
|
.tb-btn--primary {
|
|
3345
|
-
background: linear-gradient(135deg, var(--
|
|
3778
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
3346
3779
|
border-color: transparent; color: var(--dash-ink);
|
|
3347
3780
|
}
|
|
3348
3781
|
.tb-btn--primary:hover { filter: brightness(1.05); border-color: transparent; }
|
|
3349
3782
|
.tb-btn--icon { padding: 8px 11px; }
|
|
3350
|
-
.tb-kebab { font-size: 16px; line-height: 1; letter-spacing: 1px; }
|
|
3351
3783
|
|
|
3352
3784
|
@media (max-width: 760px) {
|
|
3353
3785
|
.tb-sub { display: none; }
|
|
@@ -3361,44 +3793,41 @@ footer {
|
|
|
3361
3793
|
════════════════════════════════════════════════════════════════════ */
|
|
3362
3794
|
|
|
3363
3795
|
:root {
|
|
3364
|
-
/* Sidebar surface —
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
--dash-sidebar: #0E1626;
|
|
3796
|
+
/* Sidebar surface — same value as --dash-card; the Diwan design uses
|
|
3797
|
+
one surface-1 for sidebar, topbar, and cards alike. */
|
|
3798
|
+
--dash-sidebar: var(--bg-elev-1);
|
|
3368
3799
|
/* Ink on accent-filled surfaces (logo badge, avatar, primary button,
|
|
3369
|
-
offline banner) —
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
--dash-term-bg: #050507;
|
|
3800
|
+
offline banner) — aliases the design's accent-fg contrast color. */
|
|
3801
|
+
--dash-ink: var(--accent-fg);
|
|
3802
|
+
/* Subtle hover overlay for nav items. */
|
|
3803
|
+
--dash-hover: var(--bg-hover);
|
|
3804
|
+
/* Sunken surface for the plain-text log view (OrchPanel) + xterm panel
|
|
3805
|
+
surround. The xterm canvas itself keeps its own dark JS theme — these
|
|
3806
|
+
style the chrome only. */
|
|
3807
|
+
--dash-term-bg: var(--bg-sunken);
|
|
3378
3808
|
--dash-term-text: #C8D8C8;
|
|
3379
3809
|
--dash-term-line: #A0C4A0;
|
|
3380
3810
|
--dash-term-tool: #7CB8FF;
|
|
3381
3811
|
}
|
|
3382
3812
|
|
|
3383
|
-
/* Light theme — same
|
|
3384
|
-
|
|
3385
|
-
toggle; accents (teal/purple/blue/amber/severity) stay identical. */
|
|
3813
|
+
/* Light theme — same alias approach; flips automatically with the base
|
|
3814
|
+
tokens above. */
|
|
3386
3815
|
[data-theme="light"] {
|
|
3387
|
-
--dash-bg:
|
|
3388
|
-
--dash-card:
|
|
3389
|
-
--dash-border:
|
|
3390
|
-
--dash-text:
|
|
3391
|
-
--dash-text-muted:
|
|
3392
|
-
--dash-sidebar:
|
|
3393
|
-
--dash-hover:
|
|
3394
|
-
--dash-term-bg:
|
|
3816
|
+
--dash-bg: var(--bg-page);
|
|
3817
|
+
--dash-card: var(--bg-elev-1);
|
|
3818
|
+
--dash-border: var(--border-subtle);
|
|
3819
|
+
--dash-text: var(--text-primary);
|
|
3820
|
+
--dash-text-muted: var(--text-tertiary);
|
|
3821
|
+
--dash-sidebar: var(--bg-elev-1);
|
|
3822
|
+
--dash-hover: var(--bg-hover);
|
|
3823
|
+
--dash-term-bg: var(--bg-sunken);
|
|
3395
3824
|
--dash-term-text: #334155;
|
|
3396
3825
|
--dash-term-line: #166534;
|
|
3397
|
-
--dash-term-tool:
|
|
3826
|
+
--dash-term-tool: var(--blue);
|
|
3398
3827
|
}
|
|
3399
3828
|
|
|
3400
|
-
/* Frame:
|
|
3401
|
-
|
|
3829
|
+
/* Frame: Diwan canvas base behind chrome AND content so the palette is
|
|
3830
|
+
continuous across the app shell and scroll area. */
|
|
3402
3831
|
.app-shell,
|
|
3403
3832
|
.main-scroll { background: var(--dash-bg); }
|
|
3404
3833
|
|
|
@@ -3450,7 +3879,7 @@ header.topbar {
|
|
|
3450
3879
|
}
|
|
3451
3880
|
.statusbar-dot {
|
|
3452
3881
|
width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0;
|
|
3453
|
-
background: var(--
|
|
3882
|
+
background: var(--status-done);
|
|
3454
3883
|
}
|
|
3455
3884
|
.statusbar-dot--offline { background: var(--dash-sev-high); }
|
|
3456
3885
|
.statusbar-dot--busy { animation: pulse-dot 1s ease-in-out infinite; }
|
|
@@ -3677,7 +4106,7 @@ header.topbar {
|
|
|
3677
4106
|
font-size: 24px;
|
|
3678
4107
|
font-weight: 800;
|
|
3679
4108
|
color: #fff;
|
|
3680
|
-
background: linear-gradient(135deg, var(--
|
|
4109
|
+
background: linear-gradient(135deg, var(--accent-primary), var(--accent-hover));
|
|
3681
4110
|
}
|
|
3682
4111
|
.firstrun-title { margin: 0; font-size: 18px; font-weight: 700; color: var(--dash-text); }
|
|
3683
4112
|
.firstrun-sub { margin: 0; font-size: 13px; color: var(--dash-text-muted); max-width: 440px; line-height: 1.5; }
|
|
@@ -3725,7 +4154,7 @@ select:focus-visible,
|
|
|
3725
4154
|
input:focus-visible,
|
|
3726
4155
|
summary:focus-visible,
|
|
3727
4156
|
[role="button"]:focus-visible {
|
|
3728
|
-
outline: 2px solid var(--dash-teal, #
|
|
4157
|
+
outline: 2px solid var(--dash-teal, #22b6cf);
|
|
3729
4158
|
outline-offset: 2px;
|
|
3730
4159
|
border-radius: 4px;
|
|
3731
4160
|
}
|
|
@@ -3751,8 +4180,8 @@ summary:focus-visible,
|
|
|
3751
4180
|
gap: var(--space-3);
|
|
3752
4181
|
padding: var(--space-2) var(--space-4);
|
|
3753
4182
|
margin-bottom: var(--space-3);
|
|
3754
|
-
background: var(--accent-amber, #
|
|
3755
|
-
color: var(--dash-ink, #
|
|
4183
|
+
background: var(--accent-amber, #e0a63a);
|
|
4184
|
+
color: var(--dash-ink, #04222a);
|
|
3756
4185
|
font-size: var(--text-sm);
|
|
3757
4186
|
font-weight: 600;
|
|
3758
4187
|
border-radius: 8px;
|
|
@@ -3799,6 +4228,11 @@ summary:focus-visible,
|
|
|
3799
4228
|
/* Slide-in sidebar sits above the backdrop; backdrop above content. */
|
|
3800
4229
|
.sidebar { z-index: 30; }
|
|
3801
4230
|
#sidebar-backdrop { z-index: 25; }
|
|
4231
|
+
/* Orchestration's 300px/1fr grid has no room to breathe on narrow
|
|
4232
|
+
viewports — stack left rail above the terminal/history column. */
|
|
4233
|
+
.orch-layout { grid-template-columns: 1fr; height: auto; }
|
|
4234
|
+
.orch-left-rail { min-height: auto; }
|
|
4235
|
+
.orch-term-dock { min-height: 260px; }
|
|
3802
4236
|
}
|
|
3803
4237
|
|
|
3804
4238
|
/* ══════════════════════════════════════════════════════════════════
|
|
@@ -4379,11 +4813,11 @@ summary:focus-visible,
|
|
|
4379
4813
|
.runner-picker-btn--run {
|
|
4380
4814
|
background: var(--accent-primary);
|
|
4381
4815
|
border-color: var(--accent-primary);
|
|
4382
|
-
color:
|
|
4816
|
+
color: var(--accent-fg);
|
|
4383
4817
|
}
|
|
4384
4818
|
.runner-picker-btn--run:hover {
|
|
4385
4819
|
background: var(--accent-hover);
|
|
4386
|
-
color:
|
|
4820
|
+
color: var(--accent-fg);
|
|
4387
4821
|
}
|
|
4388
4822
|
.runner-picker-btn--run:disabled {
|
|
4389
4823
|
opacity: 0.5;
|
|
@@ -4477,9 +4911,9 @@ summary:focus-visible,
|
|
|
4477
4911
|
}
|
|
4478
4912
|
.filter-chip:hover { border-color: var(--accent-primary); }
|
|
4479
4913
|
.filter-chip.active {
|
|
4480
|
-
background: var(--accent-
|
|
4481
|
-
color:
|
|
4482
|
-
border-color: var(--accent-
|
|
4914
|
+
background: var(--accent-bg);
|
|
4915
|
+
color: var(--text-primary);
|
|
4916
|
+
border-color: var(--accent-border);
|
|
4483
4917
|
}
|
|
4484
4918
|
.filter-chip-clear {
|
|
4485
4919
|
font-size: var(--text-2xs);
|
|
@@ -4964,8 +5398,8 @@ summary:focus-visible,
|
|
|
4964
5398
|
Status colors are --pg-* tokens scoped to the panel so both themes flip
|
|
4965
5399
|
them without touching the global token block. */
|
|
4966
5400
|
.pg-panel {
|
|
4967
|
-
--pg-done:
|
|
4968
|
-
--pg-active:
|
|
5401
|
+
--pg-done: var(--status-done);
|
|
5402
|
+
--pg-active: var(--accent-primary);
|
|
4969
5403
|
--pg-todo: var(--text-muted);
|
|
4970
5404
|
--pg-blocked: var(--amber);
|
|
4971
5405
|
margin-bottom: var(--space-4);
|
|
@@ -4973,10 +5407,6 @@ summary:focus-visible,
|
|
|
4973
5407
|
border-radius: var(--radius-4);
|
|
4974
5408
|
background: var(--bg-elev-1);
|
|
4975
5409
|
}
|
|
4976
|
-
[data-theme="light"] .pg-panel {
|
|
4977
|
-
--pg-done: #0d9488;
|
|
4978
|
-
--pg-active: #7c3aed;
|
|
4979
|
-
}
|
|
4980
5410
|
.pg-panel summary {
|
|
4981
5411
|
padding: var(--space-3) var(--space-5);
|
|
4982
5412
|
font-size: var(--text-xs);
|
|
@@ -5067,21 +5497,32 @@ summary:focus-visible,
|
|
|
5067
5497
|
.pg-tip text { font-size: var(--text-2xs); fill: var(--text-secondary); pointer-events: none; }
|
|
5068
5498
|
.pg-tip .pg-tip-title { fill: var(--text-primary); font-weight: 600; }
|
|
5069
5499
|
|
|
5070
|
-
/*
|
|
5071
|
-
.
|
|
5500
|
+
/* Sequence mode — no cross-phase dependencies: a connected chain of small
|
|
5501
|
+
pills in roadmap order (arrows imply order, not a graph edge). */
|
|
5502
|
+
.pg-hint-top {
|
|
5503
|
+
padding-top: var(--space-2);
|
|
5504
|
+
padding-bottom: var(--space-3);
|
|
5505
|
+
}
|
|
5506
|
+
.pg-seq {
|
|
5072
5507
|
display: flex;
|
|
5073
5508
|
flex-wrap: wrap;
|
|
5074
|
-
|
|
5075
|
-
|
|
5509
|
+
align-items: center;
|
|
5510
|
+
row-gap: var(--space-2);
|
|
5511
|
+
padding: 0 var(--space-5) var(--space-4);
|
|
5076
5512
|
}
|
|
5077
|
-
.pg-
|
|
5513
|
+
.pg-seq-item {
|
|
5078
5514
|
display: inline-flex;
|
|
5079
5515
|
align-items: center;
|
|
5080
|
-
|
|
5081
|
-
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5516
|
+
}
|
|
5517
|
+
.pg-seq-chip {
|
|
5518
|
+
display: inline-flex;
|
|
5519
|
+
align-items: center;
|
|
5520
|
+
gap: 6px;
|
|
5521
|
+
max-width: 190px;
|
|
5522
|
+
padding: 3px var(--space-3);
|
|
5523
|
+
border: 1px solid var(--border-default);
|
|
5524
|
+
border-left: 3px solid var(--pg-todo);
|
|
5525
|
+
border-radius: var(--radius-full, 999px);
|
|
5085
5526
|
background: var(--bg-elev-2);
|
|
5086
5527
|
color: var(--text-secondary);
|
|
5087
5528
|
font-size: var(--text-2xs);
|
|
@@ -5089,20 +5530,25 @@ summary:focus-visible,
|
|
|
5089
5530
|
cursor: pointer;
|
|
5090
5531
|
transition: background var(--t-fast) var(--ease);
|
|
5091
5532
|
}
|
|
5092
|
-
.pg-chip:hover { background: var(--bg-hover); }
|
|
5093
|
-
.pg-chip.pg-done { border-color: var(--pg-done); }
|
|
5094
|
-
.pg-chip.pg-active { border-color: var(--pg-active); animation: pg-chip-pulse 2s var(--ease) infinite; }
|
|
5095
|
-
.pg-chip.pg-blocked { border-color: var(--pg-blocked); }
|
|
5533
|
+
.pg-seq-chip:hover { background: var(--bg-hover); }
|
|
5534
|
+
.pg-seq-chip.pg-done { border-left-color: var(--pg-done); }
|
|
5535
|
+
.pg-seq-chip.pg-active { border-left-color: var(--pg-active); animation: pg-chip-pulse 2s var(--ease) infinite; }
|
|
5536
|
+
.pg-seq-chip.pg-blocked { border-left-color: var(--pg-blocked); }
|
|
5096
5537
|
@keyframes pg-chip-pulse {
|
|
5097
5538
|
0%, 100% { box-shadow: 0 0 0 0 transparent; }
|
|
5098
5539
|
50% { box-shadow: 0 0 6px 0 var(--pg-active); }
|
|
5099
5540
|
}
|
|
5100
|
-
.pg-
|
|
5101
|
-
.pg-
|
|
5541
|
+
.pg-seq-id { font-weight: 600; color: var(--text-primary); }
|
|
5542
|
+
.pg-seq-name {
|
|
5102
5543
|
overflow: hidden;
|
|
5103
5544
|
text-overflow: ellipsis;
|
|
5104
5545
|
white-space: nowrap;
|
|
5105
5546
|
}
|
|
5547
|
+
.pg-seq-arrow {
|
|
5548
|
+
padding: 0 var(--space-2);
|
|
5549
|
+
color: var(--text-muted);
|
|
5550
|
+
font-size: var(--text-sm);
|
|
5551
|
+
}
|
|
5106
5552
|
.pg-hint, .pg-empty {
|
|
5107
5553
|
padding: 0 var(--space-5) var(--space-3);
|
|
5108
5554
|
font-size: var(--text-2xs);
|