|
100 | 100 | .group-status-badge.warning { background: rgba(250,184,90,0.12); color: var(--status-warning); } |
101 | 101 | .group-status-badge.unreachable { background: rgba(120,120,135,0.15); color: var(--status-unreachable); } |
102 | 102 |
|
| 103 | + /* Active indicator on group header */ |
| 104 | + .group-active-tag { |
| 105 | + font-size: 7px; font-weight: 700; letter-spacing: 0.5px; |
| 106 | + text-transform: uppercase; color: var(--status-healthy); |
| 107 | + padding: 2px 5px; border-radius: 4px; |
| 108 | + background: rgba(90,235,174,0.1); |
| 109 | + border: 1px solid rgba(90,235,174,0.2); |
| 110 | + display: flex; align-items: center; gap: 3px; |
| 111 | + } |
| 112 | + .group-active-dot { |
| 113 | + width: 4px; height: 4px; border-radius: 50%; |
| 114 | + background: var(--status-healthy); |
| 115 | + animation: activePulse 2s ease-in-out infinite; |
| 116 | + } |
| 117 | + @keyframes activePulse { |
| 118 | + 0%, 100% { box-shadow: 0 0 2px rgba(90,235,174,0.3); } |
| 119 | + 50% { box-shadow: 0 0 6px rgba(90,235,174,0.7); } |
| 120 | + } |
| 121 | + |
| 122 | + /* Rotation info banner */ |
| 123 | + .rotation-banner { |
| 124 | + display: flex; align-items: center; gap: 6px; |
| 125 | + padding: 6px 10px; border-radius: 8px; |
| 126 | + background: linear-gradient(135deg, rgba(90,235,174,0.06), rgba(140,82,218,0.05)); |
| 127 | + border: 1px solid rgba(90,235,174,0.15); |
| 128 | + font-size: 9px; color: var(--text-secondary); |
| 129 | + opacity: 0; animation: cardIn 0.5s ease 0.65s forwards; |
| 130 | + } |
| 131 | + .rotation-banner .rotation-icon { font-size: 12px; flex-shrink: 0; } |
| 132 | + .rotation-banner strong { color: var(--status-healthy); } |
| 133 | + .rotation-banner .muted { color: var(--text-tertiary); } |
| 134 | + |
103 | 135 | /* ── Compact stat cards ── */ |
104 | 136 | .compact-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; } |
105 | 137 | .compact-card { |
|
134 | 166 | background: rgba(30,20,56,0.85); padding: 3px 8px; border-radius: 4px; white-space: nowrap; |
135 | 167 | } |
136 | 168 |
|
137 | | - /* ── Worst-status callout ── */ |
138 | | - .worst-status-callout { |
139 | | - display: flex; align-items: center; gap: 6px; |
140 | | - padding: 6px 10px; border-radius: 8px; |
141 | | - background: rgba(250,184,90,0.08); border: 1px solid rgba(250,184,90,0.2); |
142 | | - font-size: 9px; color: var(--text-secondary); |
143 | | - opacity: 0; animation: cardIn 0.5s ease 0.7s forwards; |
144 | | - } |
145 | | - .worst-status-callout .callout-icon { font-size: 12px; flex-shrink: 0; } |
146 | | - .worst-status-callout strong { color: var(--status-warning); } |
147 | | - |
148 | 169 | /* ── Back link ── */ |
149 | 170 | .back-link { |
150 | 171 | display: inline-flex; align-items: center; gap: 4px; |
|
185 | 206 | <div class="provider-pill"><span class="pill-icon">◇</span> Amp</div> |
186 | 207 | </div> |
187 | 208 |
|
188 | | - <!-- Account filter toggles --> |
| 209 | + <!-- Account filter toggles — just identity + status, no duplicate numbers --> |
189 | 210 | <div class="account-section-header"> |
190 | 211 | <span class="account-section-label">Accounts</span> |
191 | 212 | <div class="account-filter-pills"> |
|
207 | 228 | </div> |
208 | 229 | </div> |
209 | 230 |
|
210 | | - <!-- Account 1: Personal --> |
| 231 | + <!-- Account 1: Personal — ACTIVE (single indicator, no duplicate %) --> |
211 | 232 | <div class="account-group" data-account="Personal"> |
212 | 233 | <div class="account-group-header"> |
213 | 234 | <div class="group-avatar" style="background:rgba(140,82,218,0.25);color:rgb(180,140,240)">P</div> |
214 | 235 | <span class="group-name">Personal</span> |
| 236 | + <span class="group-active-tag"><span class="group-active-dot"></span> In Use</span> |
215 | 237 | <span class="group-status-badge healthy">Healthy</span> |
216 | 238 | </div> |
217 | 239 | <div class="compact-stats"> |
|
228 | 250 | </div> |
229 | 251 | </div> |
230 | 252 |
|
231 | | - <!-- Account 2: Work --> |
| 253 | + <!-- Account 2: Work — not active --> |
232 | 254 | <div class="account-group" data-account="Work"> |
233 | 255 | <div class="account-group-header"> |
234 | 256 | <div class="group-avatar" style="background:rgba(218,90,166,0.25);color:rgb(240,140,190)">W</div> |
|
270 | 292 | </div> |
271 | 293 | </div> |
272 | 294 |
|
273 | | - <!-- Worst-status callout --> |
274 | | - <div class="worst-status-callout"> |
275 | | - <span class="callout-icon">⚠</span> |
276 | | - <span><strong>Work — Acme</strong> is at 18% Opus — causing aggregate Warning status</span> |
| 295 | + <!-- Single status banner — rotation reason + worst account --> |
| 296 | + <div class="rotation-banner"> |
| 297 | + <span class="rotation-icon">🔄</span> |
| 298 | + <span>Rotated to <strong>Personal</strong> — Work dropped to 18% Opus</span> |
277 | 299 | </div> |
278 | 300 |
|
279 | 301 | </div> |
280 | 302 | </div> |
281 | 303 |
|
282 | 304 | <div class="annotation"> |
283 | | - <strong>Parallel monitoring</strong> — All accounts shown simultaneously, not single-select. |
284 | | - Filter toggles hide/show accounts. <strong>Worst-status callout</strong> attributes the aggregate badge to a specific account. |
285 | | - <strong>Unreachable</strong> state shown for expired credentials. |
| 305 | + <strong>Information hierarchy:</strong> Pills = identity + health dot (filter controls). |
| 306 | + Group header = one <strong>"In Use"</strong> tag on the active account (pulsing dot). |
| 307 | + Cards = the actual numbers (no duplication above). |
| 308 | + <strong>Rotation banner</strong> = single line explaining why the active account changed, combining what was previously two separate callouts. |
286 | 309 | </div> |
287 | 310 | </div> |
288 | 311 |
|
|
0 commit comments