@yemi33/minions 0.1.2144 → 0.1.2146

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.
@@ -98,6 +98,131 @@
98
98
  });
99
99
  })();
100
100
 
101
+ // POST a feature-flag toggle; throws on a non-2xx so callers can branch on
102
+ // failure. Shared by onFlagToggle() and the one-click returnToClassicDashboard().
103
+ async function postFeatureToggle(id, enabled) {
104
+ var res = await fetch('/api/features/toggle', {
105
+ method: 'POST',
106
+ headers: { 'Content-Type': 'application/json' },
107
+ body: JSON.stringify({ id: id, enabled: enabled }),
108
+ });
109
+ if (!res.ok) throw new Error('HTTP ' + res.status);
110
+ }
111
+
112
+ // ── Return to the classic dashboard ──────────────────────────────
113
+ // Flips the slim-ux flag OFF then reloads. The root route's slim takeover is
114
+ // re-checked per request, so the reload lands on the full SPA with no engine
115
+ // restart. A one-click affordance (topbar button + welcome popup) over the
116
+ // same toggle the settings list drives via onFlagToggle().
117
+ async function returnToClassicDashboard(btn) {
118
+ if (btn) btn.disabled = true;
119
+ try {
120
+ await postFeatureToggle('slim-ux', false);
121
+ location.reload();
122
+ } catch (e) {
123
+ if (btn) btn.disabled = false;
124
+ alert('Could not switch back: ' + (e && e.message ? e.message : 'unknown error'));
125
+ }
126
+ }
127
+
128
+ // ── First-visit welcome popup ────────────────────────────────────
129
+ // Shows exactly once per browser. The key lives on the shared origin, so
130
+ // flipping slim-ux off and on again won't re-show it — "only the first time".
131
+ var SLIM_WELCOME_KEY = 'minions:slim-ux-welcomed';
132
+ function markSlimWelcomeSeen() {
133
+ try { localStorage.setItem(SLIM_WELCOME_KEY, '1'); } catch (e) { /* private mode — popup re-shows next visit, acceptable */ }
134
+ }
135
+ function maybeShowSlimWelcome() {
136
+ // Gated by the slim-ux-promo flag (off by default) — when the promo is off,
137
+ // never advertise Slim UX via the welcome popup, even on a first visit.
138
+ if (!slimFeatureOn('slim-ux-promo')) return;
139
+ try { if (localStorage.getItem(SLIM_WELCOME_KEY) === '1') return; } catch (e) { /* private mode — show anyway */ }
140
+ var modal = document.getElementById('slim-welcome-modal');
141
+ if (modal) modal.classList.add('open');
142
+ }
143
+
144
+ // ── Report a bug ─────────────────────────────────────────────────
145
+ // Files a GitHub issue on the Minions repo via POST /api/issues/create —
146
+ // the same endpoint the classic dashboard's "Report Bug" button uses.
147
+ function openSlimBugReport() {
148
+ var modal = document.getElementById('slim-bug-modal');
149
+ if (!modal) return;
150
+ var msg = document.getElementById('slim-bug-msg');
151
+ if (msg) { msg.textContent = ''; msg.style.color = 'var(--muted)'; }
152
+ var submit = document.getElementById('slim-bug-submit');
153
+ if (submit) { submit.disabled = false; submit.textContent = 'File Bug'; }
154
+ modal.classList.add('open');
155
+ setTimeout(function() { var t = document.getElementById('slim-bug-title'); if (t) t.focus(); }, 40);
156
+ }
157
+ function closeSlimBugReport() {
158
+ var modal = document.getElementById('slim-bug-modal');
159
+ if (modal) modal.classList.remove('open');
160
+ }
161
+ async function submitSlimBugReport() {
162
+ var titleEl = document.getElementById('slim-bug-title');
163
+ var descEl = document.getElementById('slim-bug-desc');
164
+ var msg = document.getElementById('slim-bug-msg');
165
+ var submit = document.getElementById('slim-bug-submit');
166
+ var title = ((titleEl && titleEl.value) || '').trim();
167
+ var desc = ((descEl && descEl.value) || '').trim();
168
+ if (!title) {
169
+ if (msg) { msg.style.color = 'var(--red)'; msg.textContent = 'Title is required.'; }
170
+ return;
171
+ }
172
+ if (submit) { submit.disabled = true; submit.textContent = 'Filing…'; }
173
+ if (msg) { msg.style.color = 'var(--muted)'; msg.textContent = 'Filing…'; }
174
+ try {
175
+ var res = await fetch('/api/issues/create', {
176
+ method: 'POST',
177
+ headers: { 'Content-Type': 'application/json' },
178
+ body: JSON.stringify({ title: title, description: desc }),
179
+ });
180
+ var d = await res.json().catch(function() { return {}; });
181
+ if (!res.ok) throw new Error(d.error || ('HTTP ' + res.status));
182
+ if (titleEl) titleEl.value = '';
183
+ if (descEl) descEl.value = '';
184
+ if (msg) {
185
+ msg.style.color = 'var(--green)';
186
+ msg.textContent = '🐛 Bug filed! ';
187
+ // Only trust https URLs from the server (guards against javascript: etc.).
188
+ if (d.url && /^https:\/\//.test(d.url)) {
189
+ var a = document.createElement('a');
190
+ a.href = d.url;
191
+ a.target = '_blank';
192
+ a.rel = 'noopener noreferrer';
193
+ a.style.color = 'var(--blue)';
194
+ a.textContent = 'View issue';
195
+ msg.appendChild(a);
196
+ }
197
+ }
198
+ if (submit) { submit.disabled = false; submit.textContent = 'File another'; }
199
+ } catch (e) {
200
+ if (msg) { msg.style.color = 'var(--red)'; msg.textContent = 'Error: ' + (e && e.message ? e.message : 'failed to file'); }
201
+ if (submit) { submit.disabled = false; submit.textContent = 'File Bug'; }
202
+ }
203
+ }
204
+
205
+ (function bindSlimChromeExtras() {
206
+ var backBtn = document.getElementById('slim-back-classic-btn');
207
+ if (backBtn) backBtn.addEventListener('click', function() { returnToClassicDashboard(backBtn); });
208
+ var welcomeBack = document.getElementById('slim-welcome-back');
209
+ if (welcomeBack) welcomeBack.addEventListener('click', function() { returnToClassicDashboard(welcomeBack); });
210
+ // Dismiss button, backdrop click, and Esc all close the popup AND mark it
211
+ // seen — reusing the shared modal binder (no bespoke listener wiring).
212
+ bindModalClose('slim-welcome-modal', 'slim-welcome-dismiss', markSlimWelcomeSeen);
213
+ maybeShowSlimWelcome();
214
+
215
+ // Report Bug — header button opens the modal; submit/cancel + the shared
216
+ // modal binder (close X, backdrop, Esc) handle the rest.
217
+ var bugBtn = document.getElementById('slim-report-bug-btn');
218
+ if (bugBtn) bugBtn.addEventListener('click', openSlimBugReport);
219
+ var bugSubmit = document.getElementById('slim-bug-submit');
220
+ if (bugSubmit) bugSubmit.addEventListener('click', submitSlimBugReport);
221
+ var bugCancel = document.getElementById('slim-bug-cancel');
222
+ if (bugCancel) bugCancel.addEventListener('click', closeSlimBugReport);
223
+ bindModalClose('slim-bug-modal', 'slim-bug-close');
224
+ })();
225
+
101
226
  async function onFlagToggle(ev) {
102
227
  var input = ev.currentTarget;
103
228
  var id = input.getAttribute('data-flag');
@@ -105,12 +230,7 @@
105
230
  var label = input.parentElement.querySelector('span');
106
231
  if (label) label.textContent = enabled ? 'On' : 'Off';
107
232
  try {
108
- var res = await fetch('/api/features/toggle', {
109
- method: 'POST',
110
- headers: { 'Content-Type': 'application/json' },
111
- body: JSON.stringify({ id: id, enabled: enabled }),
112
- });
113
- if (!res.ok) throw new Error('HTTP ' + res.status);
233
+ await postFeatureToggle(id, enabled);
114
234
  if (id === 'slim-ux' && !enabled) {
115
235
  location.reload();
116
236
  }
@@ -31,12 +31,6 @@
31
31
  if (lit) tile.classList.add('lit-' + lit);
32
32
  }
33
33
 
34
- function describeDispatch(d) {
35
- var who = d.agent || d.dispatched_to || 'someone';
36
- var what = d.title || d.workItemTitle || d.id || '(untitled)';
37
- return who + ' — ' + what;
38
- }
39
-
40
34
  // Latest /api/status snapshot — read by the cockpit-tile detail modals.
41
35
  var lastStatusData = null;
42
36
 
@@ -108,6 +102,15 @@
108
102
  activeWatches.length ? 'blue' : null
109
103
  );
110
104
 
105
+ // ── Pinned context tile ────────────────────────────────────
106
+ var pinned = Array.isArray(data.pinned) ? data.pinned : [];
107
+ updateTile(
108
+ 'pinned',
109
+ pinned.length,
110
+ pinned.length ? (pinned.length === 1 ? '1 note for agents' : pinned.length + ' notes for agents') : 'nothing pinned',
111
+ pinned.length ? 'blue' : null
112
+ );
113
+
111
114
  // ── Team member cards ──────────────────────────────────────
112
115
  renderMembers(Array.isArray(data.agents) ? data.agents : []);
113
116
 
@@ -14,6 +14,7 @@
14
14
  <script>
15
15
  (function() {
16
16
  'use strict';
17
+ window.MINIONS_FEATURES = {{minions_features}};
17
18
  /* __JS__ */
18
19
  })();
19
20
  </script>
@@ -106,6 +106,20 @@
106
106
  vertical-align: 2px;
107
107
  }
108
108
  .topbar-actions { display: flex; align-items: center; gap: 8px; }
109
+ .topbar-back-btn {
110
+ background: none;
111
+ border: 1px solid var(--border);
112
+ cursor: pointer;
113
+ color: var(--muted);
114
+ font-size: var(--text-base);
115
+ font-weight: 600;
116
+ line-height: 1;
117
+ padding: 6px 10px;
118
+ border-radius: var(--radius);
119
+ white-space: nowrap;
120
+ }
121
+ .topbar-back-btn:hover { color: var(--text); background: var(--surface2); border-color: var(--blue); }
122
+ .topbar-back-btn:disabled { opacity: 0.6; cursor: default; }
109
123
  .icon-btn {
110
124
  background: none;
111
125
  border: none;
@@ -126,7 +140,7 @@
126
140
  narrow viewports. */
127
141
  .layout {
128
142
  display: grid;
129
- grid-template-columns: minmax(0, 820px) minmax(0, 548px);
143
+ grid-template-columns: minmax(0, 820px) minmax(0, 575px);
130
144
  grid-template-rows: 1fr 1fr;
131
145
  grid-template-areas:
132
146
  "actions status"
@@ -668,7 +682,9 @@
668
682
  panel width; aspect-ratio keeps each card square regardless. */
669
683
  .member-grid {
670
684
  display: grid;
671
- grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
685
+ /* auto-fit (not auto-fill) so the cards stretch to consume the full row
686
+ width — no reserved empty column / trailing gap after the last card. */
687
+ grid-template-columns: repeat(auto-fit, minmax(88px, 1fr));
672
688
  gap: 8px;
673
689
  }
674
690
  .member-empty {
@@ -910,6 +926,20 @@
910
926
  line-height: 1;
911
927
  color: var(--muted);
912
928
  }
929
+ /* In-flight dispatches: a live blue dot that pulses, distinguishing a
930
+ running row from a terminal ✓/✕ at a glance (pairs with the blue
931
+ kind-dispatch left-border stripe). */
932
+ .completions-card-status-icon.active {
933
+ color: var(--blue);
934
+ animation: cc-status-pulse 1.4s ease-in-out infinite;
935
+ }
936
+ @keyframes cc-status-pulse {
937
+ 0%, 100% { opacity: 1; }
938
+ 50% { opacity: 0.35; }
939
+ }
940
+ @media (prefers-reduced-motion: reduce) {
941
+ .completions-card-status-icon.active { animation: none; }
942
+ }
913
943
  .completions-card-rail-sep {
914
944
  color: var(--muted);
915
945
  line-height: 1;
@@ -923,6 +953,23 @@
923
953
  cursor: help;
924
954
  white-space: nowrap;
925
955
  }
956
+ /* Review cards swap the emoji for a "REVIEW" word chip — same boxed
957
+ treatment as the lineage WI/Plan/PR chips (monospace, bordered, muted)
958
+ but a larger font so it reads as the rail's primary type marker. */
959
+ .completions-card-type-word {
960
+ font-family: 'Consolas', 'Courier New', monospace;
961
+ font-size: 14px;
962
+ font-weight: 700;
963
+ letter-spacing: 0.5px;
964
+ line-height: 1;
965
+ background: var(--bg);
966
+ border: 1px solid var(--border);
967
+ border-radius: 3px;
968
+ padding: 3px 7px;
969
+ color: var(--muted);
970
+ white-space: nowrap;
971
+ cursor: help;
972
+ }
926
973
  .completions-card-time {
927
974
  font-size: 12px;
928
975
  color: var(--muted);
@@ -942,6 +989,16 @@
942
989
  overflow: hidden;
943
990
  word-break: break-word;
944
991
  }
992
+ /* Byline — "Agent · Role" under the title. Quiet (muted, small) so the
993
+ title stays primary, but always present so every row names its owner. */
994
+ .completions-card-byline {
995
+ font-size: 12px;
996
+ color: var(--muted);
997
+ white-space: nowrap;
998
+ overflow: hidden;
999
+ text-overflow: ellipsis;
1000
+ min-width: 0;
1001
+ }
945
1002
  .completions-card-fail-line {
946
1003
  font-size: 12px;
947
1004
  color: var(--red);
@@ -994,6 +1051,16 @@
994
1051
  text-decoration: none;
995
1052
  }
996
1053
  .completions-card-chip-pr:hover { filter: brightness(1.2); }
1054
+ /* PR card status row — occupies the same grid cell as the lineage row
1055
+ (col 2, row 2) so the rail-bottom time aligns with it. Holds a single
1056
+ left-aligned .tile-chip reusing the PR-list pill styling. */
1057
+ .completions-card-pr-status {
1058
+ grid-column: 2;
1059
+ display: flex;
1060
+ align-items: center;
1061
+ gap: 6px;
1062
+ min-width: 0;
1063
+ }
997
1064
 
998
1065
  /* Completion details modal — uses .modal-bg / .modal base styles but
999
1066
  widens the inner modal so report contents are readable. */
@@ -1038,6 +1105,14 @@
1038
1105
  z-index: 100;
1039
1106
  }
1040
1107
  .modal-bg.open { display: flex; }
1108
+ /* First-visit welcome popup */
1109
+ #slim-welcome-modal .modal { width: 520px; }
1110
+ /* Rounded from 17px → 18px (--text-2xl) per typography centralization. */
1111
+ #slim-welcome-modal .modal-header h3 { font-size: var(--text-2xl); }
1112
+ .welcome-list { margin: 8px 0 12px; padding-left: 18px; color: var(--text); font-size: var(--text-md); line-height: 1.55; }
1113
+ .welcome-list li { margin-bottom: 7px; }
1114
+ .welcome-list strong { color: var(--text); }
1115
+ .welcome-note { color: var(--muted); font-size: 12.5px; }
1041
1116
  .modal {
1042
1117
  background: var(--surface);
1043
1118
  border: 1px solid var(--border);
@@ -0,0 +1,124 @@
1
+ diff a/dashboard/slim/styles.css b/dashboard/slim/styles.css (rejected hunks)
2
+ @@ -580,6 +594,29 @@
3
+ .tile-chip.blue { background: rgba(88, 166, 255, 0.12); color: var(--blue); border-color: var(--blue); }
4
+ .tile-empty { color: var(--muted); font-style: italic; font-size: var(--text-md); }
5
+
6
+ + /* Pinned-context list rows (slim-pinned-modal). */
7
+ + .pinned-row {
8
+ + border: 1px solid var(--border);
9
+ + border-radius: var(--radius);
10
+ + background: var(--surface2);
11
+ + padding: 10px 12px;
12
+ + margin-bottom: 8px;
13
+ + }
14
+ + .pinned-row-top { display: flex; align-items: center; gap: 8px; }
15
+ + .pinned-row-title {
16
+ + flex: 1; min-width: 0;
17
+ + font-weight: 600; font-size: var(--text-md); color: var(--text);
18
+ + overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
19
+ + }
20
+ + .pinned-row-preview {
21
+ + margin-top: 6px;
22
+ + font-size: var(--text-base); color: var(--muted); line-height: 1.5;
23
+ + white-space: pre-wrap; word-break: break-word;
24
+ + }
25
+ + .pinned-row-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }
26
+ + .pinned-row-actions .btn-secondary { padding: 4px 12px; font-size: var(--text-base); }
27
+ + .pinned-row-unpin { color: var(--red); border-color: var(--red); }
28
+ +
29
+ .chat-thinking {
30
+ color: var(--muted);
31
+ font-size: var(--text-md);
32
+ @@ -670,7 +707,20 @@
33
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
34
+ }
35
+ .link-pr-btn:hover { border-color: var(--green); background: var(--surface); color: var(--green); }
36
+ - .link-pr-btn .link-pr-icon { font-size: var(--text-xl); }
37
+ + /* Action-button icons render as Fluent System Icons (Microsoft, MIT — see
38
+ + attribution in the completion-card block) via CSS mask, inheriting the
39
+ + button text color (currentColor → green on hover). */
40
+ + .link-pr-btn .link-pr-icon {
41
+ + display: inline-block;
42
+ + width: 18px;
43
+ + height: 18px;
44
+ + background-color: currentColor;
45
+ + -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
46
+ + -webkit-mask-position: center; mask-position: center;
47
+ + -webkit-mask-size: contain; mask-size: contain;
48
+ + }
49
+ + .act-ic-link { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M9%207C9.55228%207%2010%207.44772%2010%208C10%208.51284%209.61396%208.93551%209.11662%208.99327L9%209H7C5.34315%209%204%2010.3431%204%2012C4%2013.5977%205.24892%2014.9037%206.82373%2014.9949L7%2015H9C9.55228%2015%2010%2015.4477%2010%2016C10%2016.5128%209.61396%2016.9355%209.11662%2016.9933L9%2017H7C4.23858%2017%202%2014.7614%202%2012C2%209.31125%204.12231%207.11818%206.78311%207.00462L7%207H9ZM17%207C19.7614%207%2022%209.23858%2022%2012C22%2014.6888%2019.8777%2016.8818%2017.2169%2016.9954L17%2017H15C14.4477%2017%2014%2016.5523%2014%2016C14%2015.4872%2014.386%2015.0645%2014.8834%2015.0067L15%2015H17C18.6569%2015%2020%2013.6569%2020%2012C20%2010.4023%2018.7511%209.09634%2017.1763%209.00509L17%209H15C14.4477%209%2014%208.55228%2014%208C14%207.48716%2014.386%207.06449%2014.8834%207.00673L15%207H17ZM7%2011H17C17.5523%2011%2018%2011.4477%2018%2012C18%2012.5128%2017.614%2012.9355%2017.1166%2012.9933L17%2013H7C6.44772%2013%206%2012.5523%206%2012C6%2011.4872%206.38604%2011.0645%206.88338%2011.0067L7%2011H17H7Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M9%207C9.55228%207%2010%207.44772%2010%208C10%208.51284%209.61396%208.93551%209.11662%208.99327L9%209H7C5.34315%209%204%2010.3431%204%2012C4%2013.5977%205.24892%2014.9037%206.82373%2014.9949L7%2015H9C9.55228%2015%2010%2015.4477%2010%2016C10%2016.5128%209.61396%2016.9355%209.11662%2016.9933L9%2017H7C4.23858%2017%202%2014.7614%202%2012C2%209.31125%204.12231%207.11818%206.78311%207.00462L7%207H9ZM17%207C19.7614%207%2022%209.23858%2022%2012C22%2014.6888%2019.8777%2016.8818%2017.2169%2016.9954L17%2017H15C14.4477%2017%2014%2016.5523%2014%2016C14%2015.4872%2014.386%2015.0645%2014.8834%2015.0067L15%2015H17C18.6569%2015%2020%2013.6569%2020%2012C20%2010.4023%2018.7511%209.09634%2017.1763%209.00509L17%209H15C14.4477%209%2014%208.55228%2014%208C14%207.48716%2014.386%207.06449%2014.8834%207.00673L15%207H17ZM7%2011H17C17.5523%2011%2018%2011.4477%2018%2012C18%2012.5128%2017.614%2012.9355%2017.1166%2012.9933L17%2013H7C6.44772%2013%206%2012.5523%206%2012C6%2011.4872%206.38604%2011.0645%206.88338%2011.0067L7%2011H17H7Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
50
+ + .act-ic-pin { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M21.0682%207.75765L16.2425%202.93189C14.9152%201.60462%2012.6777%201.96772%2011.8382%203.6466L9.40281%208.51748C9.31512%208.69287%209.16223%208.82694%208.97688%208.89096L4.81061%2010.3302C3.93791%2010.6317%203.682%2011.7427%204.33487%2012.3956L7.43936%2015.5001L3.00008%2019.9394L3%2021.0001H4.06074L8.50002%2016.5607L11.6045%2019.6653C12.2574%2020.3181%2013.3684%2020.0622%2013.6699%2019.1895L15.1092%2015.0232C15.1732%2014.8379%2015.3073%2014.685%2015.4826%2014.5973L20.3535%2012.1619C22.0324%2011.3224%2022.3955%209.08491%2021.0682%207.75765Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M21.0682%207.75765L16.2425%202.93189C14.9152%201.60462%2012.6777%201.96772%2011.8382%203.6466L9.40281%208.51748C9.31512%208.69287%209.16223%208.82694%208.97688%208.89096L4.81061%2010.3302C3.93791%2010.6317%203.682%2011.7427%204.33487%2012.3956L7.43936%2015.5001L3.00008%2019.9394L3%2021.0001H4.06074L8.50002%2016.5607L11.6045%2019.6653C12.2574%2020.3181%2013.3684%2020.0622%2013.6699%2019.1895L15.1092%2015.0232C15.1732%2014.8379%2015.3073%2014.685%2015.4826%2014.5973L20.3535%2012.1619C22.0324%2011.3224%2022.3955%209.08491%2021.0682%207.75765Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
51
+ .link-pr-btn .link-pr-label { font-weight: 600; }
52
+ .link-pr-btn .link-pr-sub { font-size: var(--text-base); color: var(--muted); }
53
+
54
+ @@ -1047,6 +1099,23 @@
55
+ @media (prefers-reduced-motion: reduce) {
56
+ .completions-card-status-icon.active { animation: none; }
57
+ }
58
+ + /* Terminal status icons (ok/warn/fail) as Fluent masks; .active keeps its
59
+ + pulsing "•" dot. background-color: currentColor inherits the icon color
60
+ + set above (var(--muted), or var(--blue) for active — which is unmasked). */
61
+ + .completions-card-status-icon.ok,
62
+ + .completions-card-status-icon.warn,
63
+ + .completions-card-status-icon.fail {
64
+ + display: inline-block;
65
+ + width: 13px; height: 13px;
66
+ + vertical-align: -2px;
67
+ + background-color: currentColor;
68
+ + -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
69
+ + -webkit-mask-position: center; mask-position: center;
70
+ + -webkit-mask-size: contain; mask-size: contain;
71
+ + }
72
+ + .completions-card-status-icon.ok { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M8.5%2016.5858L4.70711%2012.7929C4.31658%2012.4024%203.68342%2012.4024%203.29289%2012.7929C2.90237%2013.1834%202.90237%2013.8166%203.29289%2014.2071L7.79289%2018.7071C8.18342%2019.0976%208.81658%2019.0976%209.20711%2018.7071L20.2071%207.70711C20.5976%207.31658%2020.5976%206.68342%2020.2071%206.29289C19.8166%205.90237%2019.1834%205.90237%2018.7929%206.29289L8.5%2016.5858Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M8.5%2016.5858L4.70711%2012.7929C4.31658%2012.4024%203.68342%2012.4024%203.29289%2012.7929C2.90237%2013.1834%202.90237%2013.8166%203.29289%2014.2071L7.79289%2018.7071C8.18342%2019.0976%208.81658%2019.0976%209.20711%2018.7071L20.2071%207.70711C20.5976%207.31658%2020.5976%206.68342%2020.2071%206.29289C19.8166%205.90237%2019.1834%205.90237%2018.7929%206.29289L8.5%2016.5858Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
73
+ + .completions-card-status-icon.warn { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M9.13841%203.70704C10.3662%201.43109%2013.6314%201.43093%2014.8591%203.70704L21.6023%2016.209C22.7698%2018.3741%2021.2018%2021.0016%2018.7419%2021.002H5.25462C2.79479%2021.0016%201.22676%2018.3741%202.39426%2016.209L9.13841%203.70704ZM12.0007%2015C11.4486%2015.0002%2011.0008%2015.4479%2011.0007%2016C11.0007%2016.5522%2011.4486%2016.9998%2012.0007%2017C12.5528%2016.9998%2013.0007%2016.5522%2013.0007%2016C13.0006%2015.4479%2012.5528%2015.0002%2012.0007%2015ZM12.0007%207.50001C11.5867%207.50019%2011.2508%207.83598%2011.2507%208.25001V12.75C11.2507%2013.1641%2011.5867%2013.4998%2012.0007%2013.5C12.4148%2013.4998%2012.7507%2013.1641%2012.7507%2012.75V8.25001C12.7506%207.83599%2012.4147%207.50021%2012.0007%207.50001Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M9.13841%203.70704C10.3662%201.43109%2013.6314%201.43093%2014.8591%203.70704L21.6023%2016.209C22.7698%2018.3741%2021.2018%2021.0016%2018.7419%2021.002H5.25462C2.79479%2021.0016%201.22676%2018.3741%202.39426%2016.209L9.13841%203.70704ZM12.0007%2015C11.4486%2015.0002%2011.0008%2015.4479%2011.0007%2016C11.0007%2016.5522%2011.4486%2016.9998%2012.0007%2017C12.5528%2016.9998%2013.0007%2016.5522%2013.0007%2016C13.0006%2015.4479%2012.5528%2015.0002%2012.0007%2015ZM12.0007%207.50001C11.5867%207.50019%2011.2508%207.83598%2011.2507%208.25001V12.75C11.2507%2013.1641%2011.5867%2013.4998%2012.0007%2013.5C12.4148%2013.4998%2012.7507%2013.1641%2012.7507%2012.75V8.25001C12.7506%207.83599%2012.4147%207.50021%2012.0007%207.50001Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
74
+ + .completions-card-status-icon.fail { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M4.2097%204.3871L4.29289%204.29289C4.65338%203.93241%205.22061%203.90468%205.6129%204.2097L5.70711%204.29289L12%2010.585L18.2929%204.29289C18.6834%203.90237%2019.3166%203.90237%2019.7071%204.29289C20.0976%204.68342%2020.0976%205.31658%2019.7071%205.70711L13.415%2012L19.7071%2018.2929C20.0676%2018.6534%2020.0953%2019.2206%2019.7903%2019.6129L19.7071%2019.7071C19.3466%2020.0676%2018.7794%2020.0953%2018.3871%2019.7903L18.2929%2019.7071L12%2013.415L5.70711%2019.7071C5.31658%2020.0976%204.68342%2020.0976%204.29289%2019.7071C3.90237%2019.3166%203.90237%2018.6834%204.29289%2018.2929L10.585%2012L4.29289%205.70711C3.93241%205.34662%203.90468%204.77939%204.2097%204.3871L4.29289%204.29289L4.2097%204.3871Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M4.2097%204.3871L4.29289%204.29289C4.65338%203.93241%205.22061%203.90468%205.6129%204.2097L5.70711%204.29289L12%2010.585L18.2929%204.29289C18.6834%203.90237%2019.3166%203.90237%2019.7071%204.29289C20.0976%204.68342%2020.0976%205.31658%2019.7071%205.70711L13.415%2012L19.7071%2018.2929C20.0676%2018.6534%2020.0953%2019.2206%2019.7903%2019.6129L19.7071%2019.7071C19.3466%2020.0676%2018.7794%2020.0953%2018.3871%2019.7903L18.2929%2019.7071L12%2013.415L5.70711%2019.7071C5.31658%2020.0976%204.68342%2020.0976%204.29289%2019.7071C3.90237%2019.3166%203.90237%2018.6834%204.29289%2018.2929L10.585%2012L4.29289%205.70711C3.93241%205.34662%203.90468%204.77939%204.2097%204.3871L4.29289%204.29289L4.2097%204.3871Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
75
+ .completions-card-rail-sep {
76
+ color: var(--muted);
77
+ line-height: 1;
78
+ @@ -1054,12 +1123,46 @@
79
+ /* Type indicator — a single emoji glyph at 28px (alone on the rail's
80
+ top row). The full c.type string is exposed via the `title`
81
+ attribute so hovering reveals it. */
82
+ + /* ───────────────────────────────────────────────────────────────────────
83
+ + Fluent System Icons (Microsoft) — MIT License.
84
+ + https://github.com/microsoft/fluentui-system-icons
85
+ + Copyright (c) Microsoft Corporation. Vendored as inline CSS `mask`
86
+ + data-URIs (24px regular) so completion-card type/status icons render as
87
+ + theme-colored monochrome glyphs (currentColor) with no font asset, no
88
+ + extra dependency, and no CSP change (img-src already allows data:).
89
+ + ─────────────────────────────────────────────────────────────────────── */
90
+ + /* Type indicator. Known work types render as a monochrome Fluent icon via
91
+ + CSS mask (inherits theme color); unknown types fall back to a "•" glyph
92
+ + sized by font-size. The full c.type is exposed via the title attribute. */
93
+ .completions-card-type-chip {
94
+ font-size: var(--text-stat-lg);
95
+ line-height: 1;
96
+ cursor: help;
97
+ white-space: nowrap;
98
+ }
99
+ + .completions-card-type-chip[data-type] {
100
+ + display: inline-block;
101
+ + width: 24px;
102
+ + height: 24px;
103
+ + background-color: var(--text);
104
+ + -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
105
+ + -webkit-mask-position: center; mask-position: center;
106
+ + -webkit-mask-size: contain; mask-size: contain;
107
+ + }
108
+ + .completions-card-type-chip[data-type="implement"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M16.5002%202C13.4627%202%2011.0002%204.46243%2011.0002%207.5C11.0002%207.94322%2011.0528%208.37496%2011.1523%208.78899L2.84099%2017.1003C1.71967%2018.2216%201.71967%2020.0396%202.84099%2021.1609C3.96231%2022.2823%205.78033%2022.2823%206.90165%2021.1609L15.214%2012.8486C15.6272%2012.9477%2016.058%2013%2016.5002%2013C19.5378%2013%2022.0002%2010.5376%2022.0002%207.5C22.0002%206.89137%2021.9011%206.30437%2021.7175%205.75516C21.6351%205.50875%2021.4311%205.32252%2021.1782%205.26294C20.9253%205.20336%2020.6595%205.27892%2020.4758%205.46266L18.0317%207.90697C17.7389%208.19989%2017.264%208.19991%2016.9711%207.907L16.0934%207.0293C15.8005%206.73642%2015.8005%206.26156%2016.0933%205.96867L18.5375%203.5243C18.7212%203.34057%2018.7967%203.07485%2018.7371%202.82197C18.6775%202.56908%2018.4913%202.36505%2018.2449%202.28268C17.6957%202.09912%2017.1088%202%2016.5002%202Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M16.5002%202C13.4627%202%2011.0002%204.46243%2011.0002%207.5C11.0002%207.94322%2011.0528%208.37496%2011.1523%208.78899L2.84099%2017.1003C1.71967%2018.2216%201.71967%2020.0396%202.84099%2021.1609C3.96231%2022.2823%205.78033%2022.2823%206.90165%2021.1609L15.214%2012.8486C15.6272%2012.9477%2016.058%2013%2016.5002%2013C19.5378%2013%2022.0002%2010.5376%2022.0002%207.5C22.0002%206.89137%2021.9011%206.30437%2021.7175%205.75516C21.6351%205.50875%2021.4311%205.32252%2021.1782%205.26294C20.9253%205.20336%2020.6595%205.27892%2020.4758%205.46266L18.0317%207.90697C17.7389%208.19989%2017.264%208.19991%2016.9711%207.907L16.0934%207.0293C15.8005%206.73642%2015.8005%206.26156%2016.0933%205.96867L18.5375%203.5243C18.7212%203.34057%2018.7967%203.07485%2018.7371%202.82197C18.6775%202.56908%2018.4913%202.36505%2018.2449%202.28268C17.6957%202.09912%2017.1088%202%2016.5002%202Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
109
+ + .completions-card-type-chip[data-type="implement:large"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M16.0792%202.41459C16.2062%202.1605%2016.4659%202%2016.75%202H18.25C18.5341%202%2018.7938%202.1605%2018.9208%202.41459L19.9208%204.41459C20.033%204.63888%2020.0256%204.90438%2019.9012%205.1221L19%206.69917V12H20.25C20.6642%2012%2021%2012.3358%2021%2012.75V14.5H14V12.75C14%2012.3358%2014.3358%2012%2014.75%2012H16V6.69917L15.0988%205.1221C14.9744%204.90438%2014.967%204.63888%2015.0792%204.41459L16.0792%202.41459ZM14%2016V18.5C14%2020.433%2015.567%2022%2017.5%2022C19.433%2022%2021%2020.433%2021%2018.5V16H14ZM8.82848%202.2123C9.03402%202.07269%209.29535%202.04394%209.52632%202.13551C11.5598%202.94176%2013%204.92679%2013%207.25C13%209.37406%2011.7961%2011.2154%2010.0357%2012.1317V19.4641C10.0357%2020.8645%208.90043%2021.9998%207.5%2021.9998C6.09956%2021.9998%204.96429%2020.8645%204.96429%2019.4641V12.1317C3.20387%2011.2154%202%209.37406%202%207.25C2%204.92688%203.44005%202.94192%205.47344%202.13561C5.70441%202.04402%205.96575%202.07277%206.1713%202.21238C6.37684%202.35198%206.4999%202.58433%206.4999%202.8328V6.49988C6.4999%207.05216%206.94761%207.49988%207.4999%207.49988C8.05218%207.49988%208.4999%207.05216%208.4999%206.49988V2.83271C8.4999%202.58425%208.62295%202.35191%208.82848%202.2123Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M16.0792%202.41459C16.2062%202.1605%2016.4659%202%2016.75%202H18.25C18.5341%202%2018.7938%202.1605%2018.9208%202.41459L19.9208%204.41459C20.033%204.63888%2020.0256%204.90438%2019.9012%205.1221L19%206.69917V12H20.25C20.6642%2012%2021%2012.3358%2021%2012.75V14.5H14V12.75C14%2012.3358%2014.3358%2012%2014.75%2012H16V6.69917L15.0988%205.1221C14.9744%204.90438%2014.967%204.63888%2015.0792%204.41459L16.0792%202.41459ZM14%2016V18.5C14%2020.433%2015.567%2022%2017.5%2022C19.433%2022%2021%2020.433%2021%2018.5V16H14ZM8.82848%202.2123C9.03402%202.07269%209.29535%202.04394%209.52632%202.13551C11.5598%202.94176%2013%204.92679%2013%207.25C13%209.37406%2011.7961%2011.2154%2010.0357%2012.1317V19.4641C10.0357%2020.8645%208.90043%2021.9998%207.5%2021.9998C6.09956%2021.9998%204.96429%2020.8645%204.96429%2019.4641V12.1317C3.20387%2011.2154%202%209.37406%202%207.25C2%204.92688%203.44005%202.94192%205.47344%202.13561C5.70441%202.04402%205.96575%202.07277%206.1713%202.21238C6.37684%202.35198%206.4999%202.58433%206.4999%202.8328V6.49988C6.4999%207.05216%206.94761%207.49988%207.4999%207.49988C8.05218%207.49988%208.4999%207.05216%208.4999%206.49988V2.83271C8.4999%202.58425%208.62295%202.35191%208.82848%202.2123Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
110
+ + .completions-card-type-chip[data-type="fix"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M14.25%202.00195C14.6297%202.00195%2014.9435%202.28411%2014.9932%202.65018L15%202.75195V3.50406C15%204.13683%2014.8041%204.72384%2014.4696%205.20775C15.8646%205.68594%2016.8883%206.96607%2016.9914%208.49849L17.2469%208.49857C18.4895%208.49343%2019.4927%207.48192%2019.4876%206.23929L19.4814%204.75369C19.4797%204.33948%2019.8141%204.00231%2020.2283%204.00059C20.6425%203.99889%2020.9797%204.33328%2020.9814%204.74749L20.9876%206.23309C20.9958%208.23733%2019.4302%209.88083%2017.4522%209.99254L17.2376%209.99859L17%209.99795V11.5L21.2528%2011.5006C21.6325%2011.5006%2021.9463%2011.7827%2021.996%2012.1488L22.0028%2012.2506C22.0028%2012.6303%2021.7207%2012.9441%2021.3546%2012.9937L21.2528%2013.0006H17.0004L17%2015L17.2376%2015.0006L17.4522%2015.0066C19.3643%2015.1146%2020.891%2016.654%2020.9832%2018.5669L20.9876%2018.7661L20.9814%2020.2517C20.9797%2020.6659%2020.6425%2021.0003%2020.2283%2020.9986C19.8486%2020.997%2019.536%2020.7136%2019.4878%2020.3473L19.4814%2020.2455L19.4876%2018.7599C19.4925%2017.569%2018.5714%2016.5904%2017.4009%2016.5064L17.2469%2016.5006L16.7713%2016.5005C16.1343%2018.5294%2014.239%2020.0011%2012%2020.0011C9.76098%2020.0011%207.86569%2018.5294%207.22873%2016.5005L6.74073%2016.5006C5.4981%2016.5057%204.49492%2017.5173%204.50005%2018.7599L4.50619%2020.2455C4.50791%2020.6597%204.17351%2020.9969%203.7593%2020.9986C3.34509%2021.0003%203.00792%2020.6659%203.00621%2020.2517L3%2018.7661C2.99178%2016.7618%204.55736%2015.1183%206.5354%2015.0066L6.75003%2015.0006L7%2015V13L2.75%2013.0006C2.3703%2013.0006%202.05651%2012.7184%202.00685%2012.3524L2%2012.2506C2%2011.8709%202.28215%2011.5571%202.64823%2011.5074L2.75%2011.5006L7%2011.5V9.99795L6.75%209.99858L6.53536%209.99253C4.62326%209.88455%203.09658%208.34519%203.00438%206.43226L3%206.23308L3.00617%204.74749C3.00789%204.33328%203.34506%203.99888%203.75927%204.00059C4.13896%204.00216%204.45159%204.28561%204.49973%204.65189L4.50616%204.75369L4.50002%206.23928C4.4951%207.43014%205.41622%208.40873%206.58667%208.49274L6.7407%208.49856L7.00857%208.49849C7.11171%206.96607%208.13544%205.68594%209.53135%205.20652C9.23317%204.77747%209.04526%204.26599%209.00718%203.71321L9%203.50406V2.75195C9%202.33774%209.33579%202.00195%209.75%202.00195C10.1297%202.00195%2010.4435%202.28411%2010.4932%202.65018L10.5%202.75195V3.50406C10.5%204.33249%2011.1716%205.00406%2012%205.00406C12.7797%205.00406%2013.4204%204.40918%2013.4931%203.64852L13.5%203.50406V2.75195C13.5%202.33774%2013.8358%202.00195%2014.25%202.00195Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M14.25%202.00195C14.6297%202.00195%2014.9435%202.28411%2014.9932%202.65018L15%202.75195V3.50406C15%204.13683%2014.8041%204.72384%2014.4696%205.20775C15.8646%205.68594%2016.8883%206.96607%2016.9914%208.49849L17.2469%208.49857C18.4895%208.49343%2019.4927%207.48192%2019.4876%206.23929L19.4814%204.75369C19.4797%204.33948%2019.8141%204.00231%2020.2283%204.00059C20.6425%203.99889%2020.9797%204.33328%2020.9814%204.74749L20.9876%206.23309C20.9958%208.23733%2019.4302%209.88083%2017.4522%209.99254L17.2376%209.99859L17%209.99795V11.5L21.2528%2011.5006C21.6325%2011.5006%2021.9463%2011.7827%2021.996%2012.1488L22.0028%2012.2506C22.0028%2012.6303%2021.7207%2012.9441%2021.3546%2012.9937L21.2528%2013.0006H17.0004L17%2015L17.2376%2015.0006L17.4522%2015.0066C19.3643%2015.1146%2020.891%2016.654%2020.9832%2018.5669L20.9876%2018.7661L20.9814%2020.2517C20.9797%2020.6659%2020.6425%2021.0003%2020.2283%2020.9986C19.8486%2020.997%2019.536%2020.7136%2019.4878%2020.3473L19.4814%2020.2455L19.4876%2018.7599C19.4925%2017.569%2018.5714%2016.5904%2017.4009%2016.5064L17.2469%2016.5006L16.7713%2016.5005C16.1343%2018.5294%2014.239%2020.0011%2012%2020.0011C9.76098%2020.0011%207.86569%2018.5294%207.22873%2016.5005L6.74073%2016.5006C5.4981%2016.5057%204.49492%2017.5173%204.50005%2018.7599L4.50619%2020.2455C4.50791%2020.6597%204.17351%2020.9969%203.7593%2020.9986C3.34509%2021.0003%203.00792%2020.6659%203.00621%2020.2517L3%2018.7661C2.99178%2016.7618%204.55736%2015.1183%206.5354%2015.0066L6.75003%2015.0006L7%2015V13L2.75%2013.0006C2.3703%2013.0006%202.05651%2012.7184%202.00685%2012.3524L2%2012.2506C2%2011.8709%202.28215%2011.5571%202.64823%2011.5074L2.75%2011.5006L7%2011.5V9.99795L6.75%209.99858L6.53536%209.99253C4.62326%209.88455%203.09658%208.34519%203.00438%206.43226L3%206.23308L3.00617%204.74749C3.00789%204.33328%203.34506%203.99888%203.75927%204.00059C4.13896%204.00216%204.45159%204.28561%204.49973%204.65189L4.50616%204.75369L4.50002%206.23928C4.4951%207.43014%205.41622%208.40873%206.58667%208.49274L6.7407%208.49856L7.00857%208.49849C7.11171%206.96607%208.13544%205.68594%209.53135%205.20652C9.23317%204.77747%209.04526%204.26599%209.00718%203.71321L9%203.50406V2.75195C9%202.33774%209.33579%202.00195%209.75%202.00195C10.1297%202.00195%2010.4435%202.28411%2010.4932%202.65018L10.5%202.75195V3.50406C10.5%204.33249%2011.1716%205.00406%2012%205.00406C12.7797%205.00406%2013.4204%204.40918%2013.4931%203.64852L13.5%203.50406V2.75195C13.5%202.33774%2013.8358%202.00195%2014.25%202.00195Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
111
+ + .completions-card-type-chip[data-type="verify"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C6.47715%2022%202%2017.5228%202%2012C2%206.47715%206.47715%202%2012%202ZM15.2197%208.96967L10.75%2013.4393L8.78033%2011.4697C8.48744%2011.1768%208.01256%2011.1768%207.71967%2011.4697C7.42678%2011.7626%207.42678%2012.2374%207.71967%2012.5303L10.2197%2015.0303C10.5126%2015.3232%2010.9874%2015.3232%2011.2803%2015.0303L16.2803%2010.0303C16.5732%209.73744%2016.5732%209.26256%2016.2803%208.96967C15.9874%208.67678%2015.5126%208.67678%2015.2197%208.96967Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C6.47715%2022%202%2017.5228%202%2012C2%206.47715%206.47715%202%2012%202ZM15.2197%208.96967L10.75%2013.4393L8.78033%2011.4697C8.48744%2011.1768%208.01256%2011.1768%207.71967%2011.4697C7.42678%2011.7626%207.42678%2012.2374%207.71967%2012.5303L10.2197%2015.0303C10.5126%2015.3232%2010.9874%2015.3232%2011.2803%2015.0303L16.2803%2010.0303C16.5732%209.73744%2016.5732%209.26256%2016.2803%208.96967C15.9874%208.67678%2015.5126%208.67678%2015.2197%208.96967Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
112
+ + .completions-card-type-chip[data-type="test"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M8.99998%204.5V10.7382C8.99998%2011.1132%208.90628%2011.4822%208.72739%2011.8117L7.53944%2014H16.4605L15.2726%2011.8117C15.0937%2011.4822%2015%2011.1132%2015%2010.7382V4.5H16C16.4142%204.5%2016.75%204.16421%2016.75%203.75C16.75%203.33579%2016.4142%203%2016%203H8C7.58579%203%207.25%203.33579%207.25%203.75C7.25%204.16421%207.58579%204.5%208%204.5H8.99998ZM17.2748%2015.5H6.72515L5.14269%2018.415C4.50968%2019.5811%205.35388%2020.9999%206.68068%2020.9999H17.3193C18.6461%2020.9999%2019.4903%2019.5811%2018.8573%2018.415L17.2748%2015.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M8.99998%204.5V10.7382C8.99998%2011.1132%208.90628%2011.4822%208.72739%2011.8117L7.53944%2014H16.4605L15.2726%2011.8117C15.0937%2011.4822%2015%2011.1132%2015%2010.7382V4.5H16C16.4142%204.5%2016.75%204.16421%2016.75%203.75C16.75%203.33579%2016.4142%203%2016%203H8C7.58579%203%207.25%203.33579%207.25%203.75C7.25%204.16421%207.58579%204.5%208%204.5H8.99998ZM17.2748%2015.5H6.72515L5.14269%2018.415C4.50968%2019.5811%205.35388%2020.9999%206.68068%2020.9999H17.3193C18.6461%2020.9999%2019.4903%2019.5811%2018.8573%2018.415L17.2748%2015.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
113
+ + .completions-card-type-chip[data-type="plan"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M13.75%202H10.25C9.09205%202%208.13841%202.87472%208.01379%203.99944L6.25%204C5.00736%204%204%205.00736%204%206.25V19.75C4%2020.9926%205.00736%2022%206.25%2022H17.75C18.9926%2022%2020%2020.9926%2020%2019.75V6.25C20%205.00736%2018.9926%204%2017.75%204L15.9862%203.99944C15.8616%202.87472%2014.9079%202%2013.75%202ZM10.25%203.5H13.75C14.1642%203.5%2014.5%203.83579%2014.5%204.25C14.5%204.66421%2014.1642%205%2013.75%205H10.25C9.83579%205%209.5%204.66421%209.5%204.25C9.5%203.83579%209.83579%203.5%2010.25%203.5ZM12.5%2010.25C12.5%209.83579%2012.8358%209.5%2013.25%209.5H16.75C17.1642%209.5%2017.5%209.83579%2017.5%2010.25C17.5%2010.6642%2017.1642%2011%2016.75%2011H13.25C12.8358%2011%2012.5%2010.6642%2012.5%2010.25ZM13.2501%2015H16.7499C17.1642%2015%2017.4999%2015.3358%2017.4999%2015.75C17.4999%2016.1642%2017.1642%2016.5%2016.7499%2016.5H13.2501C12.8358%2016.5%2012.5001%2016.1642%2012.5001%2015.75C12.5001%2015.3358%2012.8358%2015%2013.2501%2015ZM10.7803%209.78033L8.78033%2011.7803C8.48744%2012.0732%208.01256%2012.0732%207.71967%2011.7803L6.71967%2010.7803C6.42678%2010.4874%206.42678%2010.0126%206.71967%209.71967C7.01256%209.42678%207.48744%209.42678%207.78033%209.71967L8.25%2010.1893L9.71967%208.71967C10.0126%208.42678%2010.4874%208.42678%2010.7803%208.71967C11.0732%209.01256%2011.0732%209.48744%2010.7803%209.78033ZM10.7803%2014.2197C11.0732%2014.5126%2011.0732%2014.9874%2010.7803%2015.2803L8.78033%2017.2803C8.48744%2017.5732%208.01256%2017.5732%207.71967%2017.2803L6.71967%2016.2803C6.42678%2015.9874%206.42678%2015.5126%206.71967%2015.2197C7.01256%2014.9268%207.48744%2014.9268%207.78033%2015.2197L8.25%2015.6893L9.71967%2014.2197C10.0126%2013.9268%2010.4874%2013.9268%2010.7803%2014.2197Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M13.75%202H10.25C9.09205%202%208.13841%202.87472%208.01379%203.99944L6.25%204C5.00736%204%204%205.00736%204%206.25V19.75C4%2020.9926%205.00736%2022%206.25%2022H17.75C18.9926%2022%2020%2020.9926%2020%2019.75V6.25C20%205.00736%2018.9926%204%2017.75%204L15.9862%203.99944C15.8616%202.87472%2014.9079%202%2013.75%202ZM10.25%203.5H13.75C14.1642%203.5%2014.5%203.83579%2014.5%204.25C14.5%204.66421%2014.1642%205%2013.75%205H10.25C9.83579%205%209.5%204.66421%209.5%204.25C9.5%203.83579%209.83579%203.5%2010.25%203.5ZM12.5%2010.25C12.5%209.83579%2012.8358%209.5%2013.25%209.5H16.75C17.1642%209.5%2017.5%209.83579%2017.5%2010.25C17.5%2010.6642%2017.1642%2011%2016.75%2011H13.25C12.8358%2011%2012.5%2010.6642%2012.5%2010.25ZM13.2501%2015H16.7499C17.1642%2015%2017.4999%2015.3358%2017.4999%2015.75C17.4999%2016.1642%2017.1642%2016.5%2016.7499%2016.5H13.2501C12.8358%2016.5%2012.5001%2016.1642%2012.5001%2015.75C12.5001%2015.3358%2012.8358%2015%2013.2501%2015ZM10.7803%209.78033L8.78033%2011.7803C8.48744%2012.0732%208.01256%2012.0732%207.71967%2011.7803L6.71967%2010.7803C6.42678%2010.4874%206.42678%2010.0126%206.71967%209.71967C7.01256%209.42678%207.48744%209.42678%207.78033%209.71967L8.25%2010.1893L9.71967%208.71967C10.0126%208.42678%2010.4874%208.42678%2010.7803%208.71967C11.0732%209.01256%2011.0732%209.48744%2010.7803%209.78033ZM10.7803%2014.2197C11.0732%2014.5126%2011.0732%2014.9874%2010.7803%2015.2803L8.78033%2017.2803C8.48744%2017.5732%208.01256%2017.5732%207.71967%2017.2803L6.71967%2016.2803C6.42678%2015.9874%206.42678%2015.5126%206.71967%2015.2197C7.01256%2014.9268%207.48744%2014.9268%207.78033%2015.2197L8.25%2015.6893L9.71967%2014.2197C10.0126%2013.9268%2010.4874%2013.9268%2010.7803%2014.2197Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
114
+ + .completions-card-type-chip[data-type="plan-to-prd"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M7%204.25C7%203.00736%208.00736%202%209.25%202H14.75C15.9926%202%2017%203.00736%2017%204.25V19.75C17%2020.9926%2015.9926%2022%2014.75%2022H9.25C9.09467%2022%208.94302%2021.9843%208.79655%2021.9543C7.77126%2021.7445%207%2020.8373%207%2019.75V4.25ZM8.5%205V6.5H10.25C10.6642%206.5%2011%206.16421%2011%205.75C11%205.33579%2010.6642%205%2010.25%205H8.5ZM8.5%208V9.5H12.25C12.6642%209.5%2013%209.16421%2013%208.75C13%208.33579%2012.6642%208%2012.25%208H8.5ZM8.5%2011.25V12.75H10.25C10.6642%2012.75%2011%2012.4142%2011%2012C11%2011.5858%2010.6642%2011.25%2010.25%2011.25H8.5ZM8.5%2014.5V16H12.25C12.6642%2016%2013%2015.6642%2013%2015.25C13%2014.8358%2012.6642%2014.5%2012.25%2014.5H8.5ZM8.5%2017.5V19H10.25C10.6642%2019%2011%2018.6642%2011%2018.25C11%2017.8358%2010.6642%2017.5%2010.25%2017.5H8.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M7%204.25C7%203.00736%208.00736%202%209.25%202H14.75C15.9926%202%2017%203.00736%2017%204.25V19.75C17%2020.9926%2015.9926%2022%2014.75%2022H9.25C9.09467%2022%208.94302%2021.9843%208.79655%2021.9543C7.77126%2021.7445%207%2020.8373%207%2019.75V4.25ZM8.5%205V6.5H10.25C10.6642%206.5%2011%206.16421%2011%205.75C11%205.33579%2010.6642%205%2010.25%205H8.5ZM8.5%208V9.5H12.25C12.6642%209.5%2013%209.16421%2013%208.75C13%208.33579%2012.6642%208%2012.25%208H8.5ZM8.5%2011.25V12.75H10.25C10.6642%2012.75%2011%2012.4142%2011%2012C11%2011.5858%2010.6642%2011.25%2010.25%2011.25H8.5ZM8.5%2014.5V16H12.25C12.6642%2016%2013%2015.6642%2013%2015.25C13%2014.8358%2012.6642%2014.5%2012.25%2014.5H8.5ZM8.5%2017.5V19H10.25C10.6642%2019%2011%2018.6642%2011%2018.25C11%2017.8358%2010.6642%2017.5%2010.25%2017.5H8.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
115
+ + .completions-card-type-chip[data-type="decompose"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M4%205.5C4%203.567%205.567%202%207.5%202C9.433%202%2011%203.567%2011%205.5C11%207.08957%209.94034%208.43164%208.48889%208.85835C9.17675%2011.1112%2011.272%2012.75%2013.75%2012.75H14.0805C14.4239%2011.1774%2015.8244%2010%2017.5%2010C19.433%2010%2021%2011.567%2021%2013.5C21%2015.433%2019.433%2017%2017.5%2017C15.8244%2017%2014.4239%2015.8226%2014.0805%2014.25H13.75C11.519%2014.25%209.53183%2013.2063%208.25%2011.5806L8.25%2015.0805C9.82259%2015.4239%2011%2016.8244%2011%2018.5C11%2020.433%209.433%2022%207.5%2022C5.567%2022%204%2020.433%204%2018.5C4%2016.8244%205.17741%2015.4239%206.75%2015.0805L6.75%208.91946C5.17741%208.57612%204%207.17556%204%205.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M4%205.5C4%203.567%205.567%202%207.5%202C9.433%202%2011%203.567%2011%205.5C11%207.08957%209.94034%208.43164%208.48889%208.85835C9.17675%2011.1112%2011.272%2012.75%2013.75%2012.75H14.0805C14.4239%2011.1774%2015.8244%2010%2017.5%2010C19.433%2010%2021%2011.567%2021%2013.5C21%2015.433%2019.433%2017%2017.5%2017C15.8244%2017%2014.4239%2015.8226%2014.0805%2014.25H13.75C11.519%2014.25%209.53183%2013.2063%208.25%2011.5806L8.25%2015.0805C9.82259%2015.4239%2011%2016.8244%2011%2018.5C11%2020.433%209.433%2022%207.5%2022C5.567%2022%204%2020.433%204%2018.5C4%2016.8244%205.17741%2015.4239%206.75%2015.0805L6.75%208.91946C5.17741%208.57612%204%207.17556%204%205.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
116
+ + .completions-card-type-chip[data-type="meeting"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C10.3596%2022%208.77516%2021.6039%207.35578%2020.8583L3.06538%2021.9753C2.6111%2022.0937%202.1469%2021.8213%202.02858%2021.367C1.99199%2021.2266%201.99198%2021.0791%202.02855%2020.9386L3.1449%2016.6502C2.3972%2015.2294%202%2013.6428%202%2012C2%206.47715%206.47715%202%2012%202ZM13.2517%2013H8.75L8.64823%2013.0068C8.28215%2013.0565%208%2013.3703%208%2013.75C8%2014.1297%208.28215%2014.4435%208.64823%2014.4932L8.75%2014.5H13.2517L13.3535%2014.4932C13.7196%2014.4435%2014.0017%2014.1297%2014.0017%2013.75C14.0017%2013.3703%2013.7196%2013.0565%2013.3535%2013.0068L13.2517%2013ZM15.25%209.5H8.75L8.64823%209.50685C8.28215%209.55651%208%209.8703%208%2010.25C8%2010.6297%208.28215%2010.9435%208.64823%2010.9932L8.75%2011H15.25L15.3518%2010.9932C15.7178%2010.9435%2016%2010.6297%2016%2010.25C16%209.8703%2015.7178%209.55651%2015.3518%209.50685L15.25%209.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C10.3596%2022%208.77516%2021.6039%207.35578%2020.8583L3.06538%2021.9753C2.6111%2022.0937%202.1469%2021.8213%202.02858%2021.367C1.99199%2021.2266%201.99198%2021.0791%202.02855%2020.9386L3.1449%2016.6502C2.3972%2015.2294%202%2013.6428%202%2012C2%206.47715%206.47715%202%2012%202ZM13.2517%2013H8.75L8.64823%2013.0068C8.28215%2013.0565%208%2013.3703%208%2013.75C8%2014.1297%208.28215%2014.4435%208.64823%2014.4932L8.75%2014.5H13.2517L13.3535%2014.4932C13.7196%2014.4435%2014.0017%2014.1297%2014.0017%2013.75C14.0017%2013.3703%2013.7196%2013.0565%2013.3535%2013.0068L13.2517%2013ZM15.25%209.5H8.75L8.64823%209.50685C8.28215%209.55651%208%209.8703%208%2010.25C8%2010.6297%208.28215%2010.9435%208.64823%2010.9932L8.75%2011H15.25L15.3518%2010.9932C15.7178%2010.9435%2016%2010.6297%2016%2010.25C16%209.8703%2015.7178%209.55651%2015.3518%209.50685L15.25%209.5Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
117
+ + .completions-card-type-chip[data-type="explore"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M3%206.5C3%204.567%204.567%203%206.5%203H9C9.55228%203%2010%203.44772%2010%204C10%204.55228%209.55228%205%209%205H6.5C5.67157%205%205%205.67157%205%206.5V9C5%209.55229%204.55228%2010%204%2010C3.44772%2010%203%209.55229%203%209V6.5ZM21%2017.5C21%2019.433%2019.433%2021%2017.5%2021H15C14.4477%2021%2014%2020.5523%2014%2020C14%2019.4477%2014.4477%2019%2015%2019L17.5%2019C18.3284%2019%2019%2018.3284%2019%2017.5V15C19%2014.4477%2019.4477%2014%2020%2014C20.5523%2014%2021%2014.4477%2021%2015V17.5ZM21%206.5C21%204.567%2019.433%203%2017.5%203H15C14.4477%203%2014%203.44772%2014%204C14%204.55228%2014.4477%205%2015%205H17.5C18.3284%205%2019%205.67157%2019%206.5V9C19%209.55228%2019.4477%2010%2020%2010C20.5523%2010%2021%209.55229%2021%209V6.5ZM6.5%2021C4.567%2021%203%2019.433%203%2017.5V15C3%2014.4477%203.44772%2014%204%2014C4.55229%2014%205%2014.4477%205%2015L5%2017.5C5%2018.3284%205.67157%2019%206.5%2019H9C9.55229%2019%2010%2019.4477%2010%2020C10%2020.5523%209.55228%2021%209%2021H6.5ZM12%2015C13.6569%2015%2015%2013.6569%2015%2012C15%2010.3431%2013.6569%209%2012%209C10.3431%209%209%2010.3431%209%2012C9%2013.6569%2010.3431%2015%2012%2015ZM7.5%208.75C8.19036%208.75%208.75%208.19036%208.75%207.5C8.75%206.80964%208.19036%206.25%207.5%206.25C6.80964%206.25%206.25%206.80964%206.25%207.5C6.25%208.19036%206.80964%208.75%207.5%208.75Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M3%206.5C3%204.567%204.567%203%206.5%203H9C9.55228%203%2010%203.44772%2010%204C10%204.55228%209.55228%205%209%205H6.5C5.67157%205%205%205.67157%205%206.5V9C5%209.55229%204.55228%2010%204%2010C3.44772%2010%203%209.55229%203%209V6.5ZM21%2017.5C21%2019.433%2019.433%2021%2017.5%2021H15C14.4477%2021%2014%2020.5523%2014%2020C14%2019.4477%2014.4477%2019%2015%2019L17.5%2019C18.3284%2019%2019%2018.3284%2019%2017.5V15C19%2014.4477%2019.4477%2014%2020%2014C20.5523%2014%2021%2014.4477%2021%2015V17.5ZM21%206.5C21%204.567%2019.433%203%2017.5%203H15C14.4477%203%2014%203.44772%2014%204C14%204.55228%2014.4477%205%2015%205H17.5C18.3284%205%2019%205.67157%2019%206.5V9C19%209.55228%2019.4477%2010%2020%2010C20.5523%2010%2021%209.55229%2021%209V6.5ZM6.5%2021C4.567%2021%203%2019.433%203%2017.5V15C3%2014.4477%203.44772%2014%204%2014C4.55229%2014%205%2014.4477%205%2015L5%2017.5C5%2018.3284%205.67157%2019%206.5%2019H9C9.55229%2019%2010%2019.4477%2010%2020C10%2020.5523%209.55228%2021%209%2021H6.5ZM12%2015C13.6569%2015%2015%2013.6569%2015%2012C15%2010.3431%2013.6569%209%2012%209C10.3431%209%209%2010.3431%209%2012C9%2013.6569%2010.3431%2015%2012%2015ZM7.5%208.75C8.19036%208.75%208.75%208.19036%208.75%207.5C8.75%206.80964%208.19036%206.25%207.5%206.25C6.80964%206.25%206.25%206.80964%206.25%207.5C6.25%208.19036%206.80964%208.75%207.5%208.75Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
118
+ + .completions-card-type-chip[data-type="ask"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.523%202%2022%206.478%2022%2012C22%2017.522%2017.523%2022%2012%2022C6.477%2022%202%2017.522%202%2012C2%206.478%206.477%202%2012%202ZM12%2015.5C11.4477%2015.5%2011%2015.9477%2011%2016.5C11%2017.0523%2011.4477%2017.5%2012%2017.5C12.5523%2017.5%2013%2017.0523%2013%2016.5C13%2015.9477%2012.5523%2015.5%2012%2015.5ZM12%206.75C10.4812%206.75%209.25%207.98122%209.25%209.5C9.25%209.91421%209.58579%2010.25%2010%2010.25C10.3797%2010.25%2010.6935%209.96785%2010.7432%209.60177L10.75%209.5C10.75%208.80964%2011.3096%208.25%2012%208.25C12.6904%208.25%2013.25%208.80964%2013.25%209.5C13.25%2010.0388%2013.115%2010.3053%2012.6051%2010.8322L12.4697%2010.9697C11.5916%2011.8478%2011.25%2012.4171%2011.25%2013.5C11.25%2013.9142%2011.5858%2014.25%2012%2014.25C12.4142%2014.25%2012.75%2013.9142%2012.75%2013.5C12.75%2012.9612%2012.885%2012.6947%2013.3949%2012.1678L13.5303%2012.0303C14.4084%2011.1522%2014.75%2010.5829%2014.75%209.5C14.75%207.98122%2013.5188%206.75%2012%206.75Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%202C17.523%202%2022%206.478%2022%2012C22%2017.522%2017.523%2022%2012%2022C6.477%2022%202%2017.522%202%2012C2%206.478%206.477%202%2012%202ZM12%2015.5C11.4477%2015.5%2011%2015.9477%2011%2016.5C11%2017.0523%2011.4477%2017.5%2012%2017.5C12.5523%2017.5%2013%2017.0523%2013%2016.5C13%2015.9477%2012.5523%2015.5%2012%2015.5ZM12%206.75C10.4812%206.75%209.25%207.98122%209.25%209.5C9.25%209.91421%209.58579%2010.25%2010%2010.25C10.3797%2010.25%2010.6935%209.96785%2010.7432%209.60177L10.75%209.5C10.75%208.80964%2011.3096%208.25%2012%208.25C12.6904%208.25%2013.25%208.80964%2013.25%209.5C13.25%2010.0388%2013.115%2010.3053%2012.6051%2010.8322L12.4697%2010.9697C11.5916%2011.8478%2011.25%2012.4171%2011.25%2013.5C11.25%2013.9142%2011.5858%2014.25%2012%2014.25C12.4142%2014.25%2012.75%2013.9142%2012.75%2013.5C12.75%2012.9612%2012.885%2012.6947%2013.3949%2012.1678L13.5303%2012.0303C14.4084%2011.1522%2014.75%2010.5829%2014.75%209.5C14.75%207.98122%2013.5188%206.75%2012%206.75Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
119
+ + .completions-card-type-chip[data-type="docs"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M6.25%202C5.00736%202%204%203.00736%204%204.25V19.75C4%2020.9926%205.00736%2022%206.25%2022H17.75C18.9926%2022%2020%2020.9926%2020%2019.75V4.25C20%203.00736%2018.9926%202%2017.75%202H6.25ZM7.75%206H16.25C16.6642%206%2017%206.33579%2017%206.75C17%207.16421%2016.6642%207.5%2016.25%207.5H7.75C7.33579%207.5%207%207.16421%207%206.75C7%206.33579%207.33579%206%207.75%206ZM7%2016.75C7%2016.3358%207.33579%2016%207.75%2016H16.25C16.6642%2016%2017%2016.3358%2017%2016.75C17%2017.1642%2016.6642%2017.5%2016.25%2017.5H7.75C7.33579%2017.5%207%2017.1642%207%2016.75ZM7.75%2011H16.25C16.6642%2011%2017%2011.3358%2017%2011.75C17%2012.1642%2016.6642%2012.5%2016.25%2012.5H7.75C7.33579%2012.5%207%2012.1642%207%2011.75C7%2011.3358%207.33579%2011%207.75%2011Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M6.25%202C5.00736%202%204%203.00736%204%204.25V19.75C4%2020.9926%205.00736%2022%206.25%2022H17.75C18.9926%2022%2020%2020.9926%2020%2019.75V4.25C20%203.00736%2018.9926%202%2017.75%202H6.25ZM7.75%206H16.25C16.6642%206%2017%206.33579%2017%206.75C17%207.16421%2016.6642%207.5%2016.25%207.5H7.75C7.33579%207.5%207%207.16421%207%206.75C7%206.33579%207.33579%206%207.75%206ZM7%2016.75C7%2016.3358%207.33579%2016%207.75%2016H16.25C16.6642%2016%2017%2016.3358%2017%2016.75C17%2017.1642%2016.6642%2017.5%2016.25%2017.5H7.75C7.33579%2017.5%207%2017.1642%207%2016.75ZM7.75%2011H16.25C16.6642%2011%2017%2011.3358%2017%2011.75C17%2012.1642%2016.6642%2012.5%2016.25%2012.5H7.75C7.33579%2012.5%207%2012.1642%207%2011.75C7%2011.3358%207.33579%2011%207.75%2011Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
120
+ + .completions-card-type-chip[data-type="setup"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12.0122%202.25C12.7462%202.25846%2013.4773%202.34326%2014.1937%202.50304C14.5064%202.57279%2014.7403%202.83351%2014.7758%203.15196L14.946%204.67881C15.0231%205.37986%2015.615%205.91084%2016.3206%205.91158C16.5103%205.91188%2016.6979%205.87238%2016.8732%205.79483L18.2738%205.17956C18.5651%205.05159%2018.9055%205.12136%2019.1229%205.35362C20.1351%206.43464%2020.8889%207.73115%2021.3277%209.14558C21.4223%209.45058%2021.3134%209.78203%2021.0564%209.9715L19.8149%2010.8866C19.4607%2011.1468%2019.2516%2011.56%2019.2516%2011.9995C19.2516%2012.4389%2019.4607%2012.8521%2019.8157%2013.1129L21.0582%2014.0283C21.3153%2014.2177%2021.4243%2014.5492%2021.3297%2014.8543C20.8911%2016.2685%2020.1377%2017.5649%2019.1261%2018.6461C18.9089%2018.8783%2018.5688%2018.9483%2018.2775%2018.8206L16.8712%2018.2045C16.4688%2018.0284%2016.0068%2018.0542%2015.6265%2018.274C15.2463%2018.4937%2014.9933%2018.8812%2014.945%2019.3177L14.7759%2020.8444C14.741%2021.1592%2014.5122%2021.4182%2014.204%2021.4915C12.7556%2021.8361%2011.2465%2021.8361%209.79803%2021.4915C9.48991%2021.4182%209.26105%2021.1592%209.22618%2020.8444L9.05736%2019.32C9.00777%2018.8843%208.75434%2018.498%208.37442%2018.279C7.99451%2018.06%207.5332%2018.0343%207.1322%2018.2094L5.72557%2018.8256C5.43422%2018.9533%205.09403%2018.8833%204.87678%2018.6509C3.86462%2017.5685%203.11119%2016.2705%202.6732%2014.8548C2.57886%2014.5499%202.68786%2014.2186%202.94485%2014.0293L4.18818%2013.1133C4.54232%2012.8531%204.75147%2012.4399%204.75147%2012.0005C4.75147%2011.561%204.54232%2011.1478%204.18771%2010.8873L2.94516%209.97285C2.6878%209.78345%202.5787%209.45178%202.67337%209.14658C3.11212%207.73215%203.86594%206.43564%204.87813%205.35462C5.09559%205.12236%205.43594%205.05259%205.72724%205.18056L7.12762%205.79572C7.53056%205.97256%207.9938%205.94585%208.37577%205.72269C8.75609%205.50209%209.00929%205.11422%209.05817%204.67764L9.22824%203.15196C9.26376%202.83335%209.49786%202.57254%209.8108%202.50294C10.5281%202.34342%2011.26%202.25865%2012.0122%202.25ZM11.9997%208.99995C10.3428%208.99995%208.9997%2010.3431%208.9997%2012C8.9997%2013.6568%2010.3428%2015%2011.9997%2015C13.6565%2015%2014.9997%2013.6568%2014.9997%2012C14.9997%2010.3431%2013.6565%208.99995%2011.9997%208.99995Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12.0122%202.25C12.7462%202.25846%2013.4773%202.34326%2014.1937%202.50304C14.5064%202.57279%2014.7403%202.83351%2014.7758%203.15196L14.946%204.67881C15.0231%205.37986%2015.615%205.91084%2016.3206%205.91158C16.5103%205.91188%2016.6979%205.87238%2016.8732%205.79483L18.2738%205.17956C18.5651%205.05159%2018.9055%205.12136%2019.1229%205.35362C20.1351%206.43464%2020.8889%207.73115%2021.3277%209.14558C21.4223%209.45058%2021.3134%209.78203%2021.0564%209.9715L19.8149%2010.8866C19.4607%2011.1468%2019.2516%2011.56%2019.2516%2011.9995C19.2516%2012.4389%2019.4607%2012.8521%2019.8157%2013.1129L21.0582%2014.0283C21.3153%2014.2177%2021.4243%2014.5492%2021.3297%2014.8543C20.8911%2016.2685%2020.1377%2017.5649%2019.1261%2018.6461C18.9089%2018.8783%2018.5688%2018.9483%2018.2775%2018.8206L16.8712%2018.2045C16.4688%2018.0284%2016.0068%2018.0542%2015.6265%2018.274C15.2463%2018.4937%2014.9933%2018.8812%2014.945%2019.3177L14.7759%2020.8444C14.741%2021.1592%2014.5122%2021.4182%2014.204%2021.4915C12.7556%2021.8361%2011.2465%2021.8361%209.79803%2021.4915C9.48991%2021.4182%209.26105%2021.1592%209.22618%2020.8444L9.05736%2019.32C9.00777%2018.8843%208.75434%2018.498%208.37442%2018.279C7.99451%2018.06%207.5332%2018.0343%207.1322%2018.2094L5.72557%2018.8256C5.43422%2018.9533%205.09403%2018.8833%204.87678%2018.6509C3.86462%2017.5685%203.11119%2016.2705%202.6732%2014.8548C2.57886%2014.5499%202.68786%2014.2186%202.94485%2014.0293L4.18818%2013.1133C4.54232%2012.8531%204.75147%2012.4399%204.75147%2012.0005C4.75147%2011.561%204.54232%2011.1478%204.18771%2010.8873L2.94516%209.97285C2.6878%209.78345%202.5787%209.45178%202.67337%209.14658C3.11212%207.73215%203.86594%206.43564%204.87813%205.35462C5.09559%205.12236%205.43594%205.05259%205.72724%205.18056L7.12762%205.79572C7.53056%205.97256%207.9938%205.94585%208.37577%205.72269C8.75609%205.50209%209.00929%205.11422%209.05817%204.67764L9.22824%203.15196C9.26376%202.83335%209.49786%202.57254%209.8108%202.50294C10.5281%202.34342%2011.26%202.25865%2012.0122%202.25ZM11.9997%208.99995C10.3428%208.99995%208.9997%2010.3431%208.9997%2012C8.9997%2013.6568%2010.3428%2015%2011.9997%2015C13.6565%2015%2014.9997%2013.6568%2014.9997%2012C14.9997%2010.3431%2013.6565%208.99995%2011.9997%208.99995Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
121
+ + .completions-card-type-chip[data-type="qa-validate"] { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%2014C13.1046%2014%2014%2013.1046%2014%2012C14%2010.8954%2013.1046%2010%2012%2010C10.8954%2010%2010%2010.8954%2010%2012C10%2013.1046%2010.8954%2014%2012%2014ZM6%2012C6%208.68629%208.68629%206%2012%206C15.3137%206%2018%208.68629%2018%2012C18%2015.3137%2015.3137%2018%2012%2018C8.68629%2018%206%2015.3137%206%2012ZM12%208C9.79086%208%208%209.79086%208%2012C8%2014.2091%209.79086%2016%2012%2016C14.2091%2016%2016%2014.2091%2016%2012C16%209.79086%2014.2091%208%2012%208ZM2%2012C2%206.47715%206.47715%202%2012%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C6.47715%2022%202%2017.5228%202%2012ZM12%204C7.58172%204%204%207.58172%204%2012C4%2016.4183%207.58172%2020%2012%2020C16.4183%2020%2020%2016.4183%2020%2012C20%207.58172%2016.4183%204%2012%204Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%20%3Cpath%20d%3D%22M12%2014C13.1046%2014%2014%2013.1046%2014%2012C14%2010.8954%2013.1046%2010%2012%2010C10.8954%2010%2010%2010.8954%2010%2012C10%2013.1046%2010.8954%2014%2012%2014ZM6%2012C6%208.68629%208.68629%206%2012%206C15.3137%206%2018%208.68629%2018%2012C18%2015.3137%2015.3137%2018%2012%2018C8.68629%2018%206%2015.3137%206%2012ZM12%208C9.79086%208%208%209.79086%208%2012C8%2014.2091%209.79086%2016%2012%2016C14.2091%2016%2016%2014.2091%2016%2012C16%209.79086%2014.2091%208%2012%208ZM2%2012C2%206.47715%206.47715%202%2012%202C17.5228%202%2022%206.47715%2022%2012C22%2017.5228%2017.5228%2022%2012%2022C6.47715%2022%202%2017.5228%202%2012ZM12%204C7.58172%204%204%207.58172%204%2012C4%2016.4183%207.58172%2020%2012%2020C16.4183%2020%2020%2016.4183%2020%2012C20%207.58172%2016.4183%204%2012%204Z%22%20fill%3D%22%23212121%22%2F%3E%20%3C%2Fsvg%3E"); }
122
+ /* Review cards swap the emoji for a "REVIEW" word chip — same boxed
123
+ treatment as the lineage WI/Plan/PR chips (monospace, bordered, muted)
124
+ but a larger font so it reads as the rail's primary type marker. */
@@ -621,6 +621,25 @@
621
621
  .cmd-toast.cmd-toast-inline.success, .cmd-toast.cmd-toast-inline.error { display: block; }
622
622
  @keyframes fadeIn { from{opacity:0;transform:translateY(-4px)} to{opacity:1;transform:translateY(0)} }
623
623
 
624
+ /* "Try new Slim UX" — flashy gradient-shimmer pill that flips the slim-ux flag */
625
+ @keyframes trySlimShimmer { to { background-position: 200% 50%; } }
626
+ @keyframes trySlimPulse {
627
+ 0%, 100% { box-shadow: 0 0 0 0 rgba(188,140,255,0.0); }
628
+ 50% { box-shadow: 0 0 10px 2px rgba(188,140,255,0.55); }
629
+ }
630
+ .try-slim-ux-btn {
631
+ cursor: pointer; border: none; color: #fff; font-weight: 700;
632
+ font-size: var(--text-base); padding: var(--space-2) var(--space-7);
633
+ border-radius: var(--radius-xl); letter-spacing: 0.3px; white-space: nowrap;
634
+ background: linear-gradient(90deg, var(--blue), var(--purple), var(--blue));
635
+ background-size: 200% auto;
636
+ animation: trySlimShimmer 3s linear infinite, trySlimPulse 2.4s ease-in-out infinite;
637
+ }
638
+ .try-slim-ux-btn:hover { filter: brightness(1.12); }
639
+ .try-slim-ux-btn:active { transform: translateY(1px); }
640
+ .try-slim-ux-btn:disabled { opacity: 0.6; cursor: default; animation: none; }
641
+ @media (prefers-reduced-motion: reduce) { .try-slim-ux-btn { animation: none; } }
642
+
624
643
  /* Engine Status */
625
644
  .engine-badge { padding: var(--space-2) var(--space-6); border-radius: var(--radius-xl); font-size: var(--text-base); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin-right: var(--space-6); }
626
645
  .engine-badge.running { background: rgba(63,185,80,0.15); color: var(--green); border: 1px solid var(--green); }
@@ -56,10 +56,10 @@ function buildDashboardHtml() {
56
56
  // original single-file source) inside the wrapper that layout.html provides.
57
57
  const SLIM_JS_ORDER = [
58
58
  'helpers', 'settings', 'link-pr', 'chat', 'projects',
59
- 'command-send', 'status', 'members', 'modals-tiles', 'history',
59
+ 'command-send', 'status', 'members', 'modals-tiles', 'history', 'pinned',
60
60
  ];
61
61
 
62
- function buildSlimHtml() {
62
+ function buildSlimHtml(opts) {
63
63
  const slimDir = path.join(MINIONS_DIR, 'dashboard', 'slim');
64
64
  const layoutPath = path.join(slimDir, 'layout.html');
65
65
  if (!fs.existsSync(layoutPath)) {
@@ -73,11 +73,18 @@ function buildSlimHtml() {
73
73
  // scope, so order is load-bearing — see SLIM_JS_ORDER.
74
74
  const js = SLIM_JS_ORDER.map(f => safeRead(path.join(slimDir, 'js', f + '.js'))).join('\n');
75
75
 
76
+ // Feature-flag bootstrap (window.MINIONS_FEATURES) injected at the top of the
77
+ // slim IIFE. serveSlimUx passes the live flags as JSON via opts.featuresJson;
78
+ // the default is a valid empty object so direct buildSlimHtml() calls (tests,
79
+ // other builders) still produce parseable JS.
80
+ const featuresJson = (opts && opts.featuresJson) || '{ "flags": {}, "defaults": {} }';
81
+
76
82
  return layout
77
83
  .replace('/* __CSS__ */', () => css)
78
84
  // Tolerate CRLF drift in layout.html (LF is enforced by .gitattributes, but
79
85
  // an exact '\n' match would silently no-op and ship an empty body on CRLF).
80
86
  .replace(/<!-- __BODY__ -->\r?\n/, () => body)
87
+ .replace('{{minions_features}}', () => featuresJson)
81
88
  .replace('/* __JS__ */', () => js);
82
89
  }
83
90