PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.5
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.5
1.1.10 1.1.9 1.1.8 1.1.7 1.1.6 1.1.5 1.1.4 1.1.3 1.1.2 1.1.1 1.1.0 1.0.1 1.0.0 0.9.8 0.9.7 0.9.6 0.9.4 0.9.5 0.9.3 0.9.2 0.9.1 0.9.0 0.8.9 0.8.8 0.8.7 All 34 releases
desktop-mode / assets / css / code-blue.css

code-blue.css in OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin 1.1.5, at assets/css/code-blue.css

529 lines 10.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * OpenStation — Code Blue window styles.
3 *
4 * Scoped to `.openstation-code-blue`. Reads `os-variables` tokens
5 * so the chrome adapts to the active theme; every fallback literal
6 * is the pre-brand WordPress-admin value, per the palette rules.
7 *
8 * The four severity hues resolve through the status tokens
9 * (`--os-ui-danger`, `--os-ui-warning`, `--os-ui-info-fg`) plus the
10 * muted text token for deprecated — status colors, deliberately not
11 * categorical series hues. Identity never rides color alone: every
12 * swatch sits beside its label, chart segments carry 2px surface
13 * gaps, and the tooltip and issue rows repeat the counts as text.
14 */
15
16 .openstation-code-blue {
17 display: flex;
18 flex-direction: column;
19 width: 100%;
20 height: 100%;
21 overflow: hidden;
22 background: var( --os-ui-surface, #f0f0f1 );
23 color: var( --os-ui-fg, #1d2327 );
24 font-family: var(
25 --os-ui-font,
26 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
27 'Helvetica Neue', Arial, sans-serif
28 );
29 container-type: inline-size;
30 }
31
32 .os-code-blue__loading {
33 display: flex;
34 align-items: center;
35 justify-content: center;
36 flex: 1;
37 }
38
39 .os-cb {
40 display: flex;
41 flex-direction: column;
42 gap: 12px;
43 height: 100%;
44 padding: 12px 14px;
45 /*
46 * The window never page-scrolls: every region is fixed-height
47 * (flex: none) and the issues LIST scrolls internally. Without
48 * this, a long issue list flex-shrinks its siblings and the
49 * chart card collapses to a sliver.
50 */
51 overflow: hidden;
52 box-sizing: border-box;
53 }
54
55 .os-cb__toolbar,
56 .os-cb__notice,
57 .os-cb__stats,
58 .os-cb__env,
59 .os-cb__chart-card,
60 .os-cb__footer {
61 flex: none;
62 }
63
64 /* ---------- Severity swatches --------------------------------------- */
65
66 .os-cb-swatch {
67 display: inline-block;
68 width: 10px;
69 height: 10px;
70 border-radius: 3px;
71 flex: none;
72 }
73
74 .os-cb-swatch--error,
75 .os-cb-seg--error {
76 background: var( --os-ui-danger, #d63638 );
77 fill: var( --os-ui-danger, #d63638 );
78 }
79
80 .os-cb-swatch--warning,
81 .os-cb-seg--warning {
82 background: var( --os-ui-warning, #dba617 );
83 fill: var( --os-ui-warning, #dba617 );
84 }
85
86 .os-cb-swatch--deprecated,
87 .os-cb-seg--deprecated {
88 background: var( --os-ui-fg-muted, #646970 );
89 fill: var( --os-ui-fg-muted, #646970 );
90 }
91
92 .os-cb-swatch--info,
93 .os-cb-seg--info {
94 background: var( --os-ui-info-fg, #72aee6 );
95 fill: var( --os-ui-info-fg, #72aee6 );
96 }
97
98 /* ---------- Toolbar ------------------------------------------------- */
99
100 .os-cb__toolbar {
101 display: flex;
102 align-items: end;
103 gap: 10px;
104 flex-wrap: wrap;
105 }
106
107 .os-cb__toolbar-spacer {
108 flex: 1;
109 }
110
111 /*
112 * The toolbar aligns everything to its bottom edge (labelled fields
113 * are taller than buttons). The switch's track is shorter than the
114 * buttons beside it, so nudge it up to sit on their visual center.
115 */
116 .os-cb__auto {
117 margin-block-end: 6px;
118 }
119
120 .os-cb__source {
121 min-inline-size: 200px;
122 }
123
124 .os-cb__search {
125 min-inline-size: 200px;
126 }
127
128 /* The error banner is an <os-notice tone="error"> — it carries its
129 own surface, tone, and a11y styling; nothing to restyle here. */
130
131 /* ---------- Stat tiles + environment -------------------------------- */
132
133 .os-cb__stats {
134 display: grid;
135 grid-template-columns: repeat( 5, minmax( 0, 1fr ) );
136 gap: 10px;
137 }
138
139 @container ( max-width: 760px ) {
140 .os-cb__stats {
141 grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
142 }
143 }
144
145 .os-cb-tile {
146 display: flex;
147 flex-direction: column;
148 gap: 4px;
149 padding: 10px 12px;
150 border-radius: 8px;
151 border: 1px solid var( --os-ui-border, #dcdcde );
152 background: var( --os-ui-surface-elevated, #fff );
153 }
154
155 .os-cb-tile__label {
156 display: inline-flex;
157 align-items: center;
158 gap: 6px;
159 font-size: 12px;
160 color: var( --os-ui-fg-muted, #646970 );
161 }
162
163 .os-cb-tile__value {
164 font-size: 22px;
165 font-weight: 600;
166 line-height: 1.1;
167 color: var( --os-ui-fg, #1d2327 );
168 }
169
170 .os-cb__env {
171 display: flex;
172 align-items: center;
173 gap: 6px;
174 flex-wrap: wrap;
175 }
176
177 /* ---------- Cards --------------------------------------------------- */
178
179 .os-cb__card {
180 border: 1px solid var( --os-ui-border, #dcdcde );
181 border-radius: 8px;
182 background: var( --os-ui-surface-elevated, #fff );
183 overflow: hidden;
184 }
185
186 .os-cb__card-head {
187 display: flex;
188 align-items: center;
189 justify-content: space-between;
190 gap: 10px;
191 flex-wrap: wrap;
192 padding: 10px 14px;
193 border-block-end: 1px solid var( --os-ui-border, #dcdcde );
194 }
195
196 .os-cb__card-title {
197 margin: 0;
198 font-size: 13px;
199 font-weight: 600;
200 color: var( --os-ui-fg, #1d2327 );
201 }
202
203 /* ---------- Chart --------------------------------------------------- */
204
205 .os-cb__legend {
206 display: flex;
207 align-items: center;
208 gap: 6px;
209 flex-wrap: wrap;
210 }
211
212 .os-cb__legend-chip {
213 display: inline-flex;
214 align-items: center;
215 gap: 6px;
216 padding: 3px 9px;
217 border: 1px solid var( --os-ui-border, #dcdcde );
218 border-radius: 999px;
219 background: transparent;
220 color: var( --os-ui-fg-muted, #646970 );
221 font: inherit;
222 font-size: 12px;
223 cursor: pointer;
224 transition: opacity 0.12s ease, border-color 0.12s ease;
225 }
226
227 .os-cb__legend-chip[aria-pressed='false'] {
228 opacity: 0.45;
229 }
230
231 .os-cb__legend-chip:hover {
232 border-color: var( --os-ui-border-strong, #8c8f94 );
233 color: var( --os-ui-fg, #1d2327 );
234 }
235
236 .os-cb__legend-count {
237 font-variant-numeric: tabular-nums;
238 color: var( --os-ui-fg, #1d2327 );
239 }
240
241 .os-cb__chart-host {
242 position: relative;
243 padding: 8px 6px 4px;
244 }
245
246 .os-cb__chart-empty {
247 padding: 40px 0;
248 text-align: center;
249 font-size: 13px;
250 color: var( --os-ui-fg-muted, #646970 );
251 }
252
253 .os-cb-chart__svg {
254 display: block;
255 inline-size: 100%;
256 }
257
258 .os-cb-chart__grid {
259 stroke: var( --os-ui-border, #dcdcde );
260 stroke-width: 1;
261 }
262
263 .os-cb-chart__tick {
264 fill: var( --os-ui-fg-muted, #646970 );
265 font-size: 10px;
266 font-variant-numeric: tabular-nums;
267 }
268
269 .os-cb-chart__hit {
270 fill: transparent;
271 cursor: crosshair;
272 }
273
274 .os-cb-chart__hover {
275 fill: var( --os-ui-surface-raised, rgba( 0, 0, 0, 0.04 ) );
276 pointer-events: none;
277 }
278
279 .os-cb-chart__tooltip {
280 position: absolute;
281 inset-block-start: 4px;
282 transform: translateX( -50% );
283 min-inline-size: 150px;
284 padding: 8px 10px;
285 border-radius: 6px;
286 border: 1px solid var( --os-ui-border, #dcdcde );
287 background: var( --os-ui-surface-elevated, #fff );
288 box-shadow: var( --os-ui-shadow, 0 2px 8px rgba( 0, 0, 0, 0.15 ) );
289 font-size: 12px;
290 pointer-events: none;
291 z-index: 2;
292 }
293
294 .os-cb-chart__tooltip-head {
295 margin-block-end: 6px;
296 color: var( --os-ui-fg-muted, #646970 );
297 font-size: 11px;
298 }
299
300 .os-cb-chart__tooltip-row {
301 display: flex;
302 align-items: center;
303 gap: 6px;
304 line-height: 1.6;
305 }
306
307 .os-cb-chart__tooltip-label {
308 flex: 1;
309 color: var( --os-ui-fg, #1d2327 );
310 }
311
312 .os-cb-chart__tooltip-value {
313 font-variant-numeric: tabular-nums;
314 font-weight: 600;
315 }
316
317 /* ---------- Issues list --------------------------------------------- */
318
319 .os-cb__issues {
320 display: flex;
321 flex-direction: column;
322 flex: 1;
323 min-block-size: 120px;
324 }
325
326 .os-cb__list {
327 margin: 0;
328 padding: 0;
329 list-style: none;
330 flex: 1;
331 min-block-size: 0;
332 overflow-y: auto;
333 }
334
335 .os-cb__list-empty {
336 padding: 20px;
337 list-style: none;
338 }
339
340 .os-cb-issue {
341 border-block-end: 1px solid var( --os-ui-border, #dcdcde );
342 border-inline-start: 3px solid transparent;
343 }
344
345 .os-cb-issue:last-child {
346 border-block-end: none;
347 }
348
349 .os-cb-issue--error {
350 border-inline-start-color: var( --os-ui-danger, #d63638 );
351 }
352
353 .os-cb-issue--warning {
354 border-inline-start-color: var( --os-ui-warning, #dba617 );
355 }
356
357 .os-cb-issue--deprecated {
358 border-inline-start-color: var( --os-ui-fg-muted, #646970 );
359 }
360
361 .os-cb-issue--info {
362 border-inline-start-color: var( --os-ui-info-fg, #72aee6 );
363 }
364
365 .os-cb-issue__row {
366 display: flex;
367 align-items: center;
368 gap: 10px;
369 inline-size: 100%;
370 padding: 8px 12px;
371 border: none;
372 background: transparent;
373 color: inherit;
374 font: inherit;
375 text-align: start;
376 cursor: pointer;
377 }
378
379 .os-cb-issue__row:hover {
380 background: var( --os-ui-surface-subtle, rgba( 0, 0, 0, 0.03 ) );
381 }
382
383 .os-cb-issue__level {
384 display: inline-flex;
385 align-items: center;
386 gap: 6px;
387 flex: none;
388 inline-size: 150px;
389 overflow: hidden;
390 }
391
392 .os-cb-issue__label {
393 font-size: 11px;
394 text-transform: uppercase;
395 letter-spacing: 0.03em;
396 color: var( --os-ui-fg-muted, #646970 );
397 white-space: nowrap;
398 overflow: hidden;
399 text-overflow: ellipsis;
400 }
401
402 .os-cb-issue__message {
403 flex: 1;
404 min-inline-size: 0;
405 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
406 font-size: 12px;
407 white-space: nowrap;
408 overflow: hidden;
409 text-overflow: ellipsis;
410 }
411
412 .os-cb-issue__meta {
413 display: inline-flex;
414 align-items: center;
415 gap: 10px;
416 flex: none;
417 color: var( --os-ui-fg-muted, #646970 );
418 font-size: 12px;
419 }
420
421 .os-cb-issue__file {
422 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
423 font-size: 11px;
424 max-inline-size: 200px;
425 white-space: nowrap;
426 overflow: hidden;
427 text-overflow: ellipsis;
428 direction: rtl; /* Ellipsize the start of long basenames, keep the :line end visible. */
429 text-align: end;
430 }
431
432 .os-cb-issue__count {
433 padding: 1px 7px;
434 border-radius: 999px;
435 background: var( --os-ui-surface, #f0f0f1 );
436 border: 1px solid var( --os-ui-border, #dcdcde );
437 font-variant-numeric: tabular-nums;
438 font-size: 11px;
439 color: var( --os-ui-fg, #1d2327 );
440 }
441
442 .os-cb-issue__when {
443 min-inline-size: 48px;
444 text-align: end;
445 }
446
447 @container ( max-width: 640px ) {
448 .os-cb-issue__level {
449 inline-size: auto;
450 }
451
452 .os-cb-issue__label,
453 .os-cb-issue__file {
454 display: none;
455 }
456 }
457
458 /* ---------- Issue detail -------------------------------------------- */
459
460 .os-cb-issue__detail {
461 padding: 4px 14px 14px 22px;
462 display: flex;
463 flex-direction: column;
464 gap: 10px;
465 }
466
467 .os-cb-issue__facts {
468 display: grid;
469 grid-template-columns: auto 1fr;
470 gap: 2px 14px;
471 margin: 0;
472 font-size: 12px;
473 }
474
475 .os-cb-issue__facts dt {
476 color: var( --os-ui-fg-muted, #646970 );
477 }
478
479 .os-cb-issue__facts dd {
480 margin: 0;
481 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
482 overflow-wrap: anywhere;
483 }
484
485 .os-cb-issue__times {
486 display: flex;
487 align-items: baseline;
488 gap: 8px;
489 flex-wrap: wrap;
490 font-size: 11px;
491 }
492
493 .os-cb-issue__times-label {
494 color: var( --os-ui-fg-muted, #646970 );
495 }
496
497 .os-cb-issue__time {
498 padding: 1px 6px;
499 border-radius: 4px;
500 background: var( --os-ui-surface, #f0f0f1 );
501 font-variant-numeric: tabular-nums;
502 }
503
504 .os-cb-issue__trace {
505 margin: 0;
506 padding: 10px 12px;
507 border-radius: 6px;
508 background: var( --os-ui-surface-sunken, #f6f7f7 );
509 border: 1px solid var( --os-ui-border, #dcdcde );
510 font-family: var( --os-ui-font-mono, ui-monospace, Menlo, Consolas, monospace );
511 font-size: 11px;
512 line-height: 1.5;
513 overflow-x: auto;
514 white-space: pre;
515 color: var( --os-ui-fg, #1d2327 );
516 }
517
518 /* ---------- Footer -------------------------------------------------- */
519
520 .os-cb__footer {
521 display: flex;
522 align-items: center;
523 justify-content: space-between;
524 gap: 10px;
525 flex-wrap: wrap;
526 font-size: 12px;
527 color: var( --os-ui-fg-muted, #646970 );
528 }
529