PluginProbe
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin / 1.1.11
OpenStation: Desktop Windows, Dock & Virtual Desktops for WP Admin v1.1.11
1.1.11 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 All 35 releases
← All changes | assets/css/dock-peek.css +117 -91 0.9.7 → 1.1.11 View file →
@@ -1,6 +1,6 @@
1 1 /**
2 - * Desktop Mode — Dock Peek.
2 + * OpenStation — Dock Peek.
3 3 *
4 4 * Hover-reveal popover that fans out from a multi-instance dock tile.
5 5 * Each card is styled as a miniature window — faux titlebar with
6 6 * traffic-light dots + the page icon + the live window title, tinted
@@ -26,26 +26,43 @@
26 26 present (the icon should feel responsive even when there's no
27 27 peek to show).
28 28 ────────────────────────────────────────────────────────────────── */
29 29
30 -.desktop-mode-dock__item-primary {
30 +.os-dock__item-primary {
31 31 transition:
32 32 transform 240ms cubic-bezier( 0.34, 1.56, 0.64, 1 ),
33 33 filter 240ms ease-out;
34 34 }
35 35
36 -.desktop-mode-dock__item:hover .desktop-mode-dock__item-primary,
37 -.desktop-mode-dock__item[data-peek-active] .desktop-mode-dock__item-primary {
38 - background: rgba( 255, 255, 255, 0.15 );
39 - color: #fff;
36 +/* Same two glyph/wash tokens as the base hover rule in dock.css —
37 + * this sheet re-states hover to add the lift and the drop shadow, and
38 + * it wins on specificity, so a theme that only reached the base rule
39 + * would see its colour vanish the moment the peek sheet loaded.
40 + *
41 + * `background-color`, not the `background` shorthand it used to be:
42 + * the shorthand also reset `background-image`, which erased the
43 + * DOCK_ITEM texture from under the cursor on any theme that ships
44 + * one. dock.css sets the resting wash as a colour for exactly this
45 + * reason — "so it composes with the texture rather than erasing it" —
46 + * and this rule quietly undid it on hover. */
47 +.os-dock__item:hover .os-dock__item-primary,
48 +.os-dock__item[data-peek-active] .os-dock__item-primary {
49 + background-color: var(
50 + --os-dock-item-bg-hover,
51 + rgba( 255, 255, 255, 0.15 )
52 + );
53 + color: var(
54 + --os-dock-icon-color-hover,
55 + var( --os-ui-fg-on-accent, #fff )
56 + );
40 57 transform: scale( 1.08 );
41 58 filter: drop-shadow( 0 4px 8px rgba( 0, 0, 0, 0.18 ) );
42 59 }
43 60
44 61 @media ( prefers-reduced-motion: reduce ) {
45 - .desktop-mode-dock__item-primary,
46 - .desktop-mode-dock__item:hover .desktop-mode-dock__item-primary,
47 - .desktop-mode-dock__item[data-peek-active] .desktop-mode-dock__item-primary {
62 + .os-dock__item-primary,
63 + .os-dock__item:hover .os-dock__item-primary,
64 + .os-dock__item[data-peek-active] .os-dock__item-primary {
48 65 transition: none;
49 66 transform: none;
50 67 }
51 68 }
@@ -53,14 +70,14 @@
53 70 /* ──────────────────────────────────────────────────────────────────
54 71 Popover surface — glass material, body-attached.
55 72 ────────────────────────────────────────────────────────────────── */
56 73
57 -.desktop-mode-dock-peek {
74 +.os-dock-peek {
58 75 position: fixed;
59 76 z-index: 999999;
60 77 padding: 10px;
61 78 border-radius: 16px;
62 - background: color-mix( in srgb, var( --desktop-mode-bg, #1d2327 ) 76%, transparent );
79 + background: color-mix( in srgb, var( --os-bg, #1d2327 ) 76%, transparent );
63 80 backdrop-filter: blur( 28px ) saturate( 180% );
64 81 -webkit-backdrop-filter: blur( 28px ) saturate( 180% );
65 82 border: 1px solid rgba( 255, 255, 255, 0.12 );
66 83 box-shadow:
@@ -66,9 +83,9 @@
66 83 box-shadow:
67 84 0 1px 0 rgba( 255, 255, 255, 0.08 ) inset,
68 85 0 16px 40px -10px rgba( 0, 0, 0, 0.55 ),
69 86 0 6px 16px -4px rgba( 0, 0, 0, 0.36 );
70 - color: var( --desktop-mode-fg, #fff );
87 + color: var( --os-fg, #fff );
71 88 pointer-events: auto;
72 89 opacity: 0;
73 90 display: flex;
74 91 flex-direction: column;
@@ -82,14 +99,14 @@
82 99 /* Bottom-dock orientation: cards form a horizontal reel. The popover
83 100 caps in WIDTH instead of height, and the cards container scrolls
84 101 horizontally. Visually mirrors how taskbar-style docks work — a
85 102 row of mini-windows above the icon, not a stack. */
86 -.desktop-mode-dock-peek[ data-orientation = "bottom" ] {
103 +.os-dock-peek[ data-orientation = "bottom" ] {
87 104 max-height: none;
88 105 max-width: min( 92vw, 920px );
89 106 }
90 107
91 -.desktop-mode-dock-peek--open {
108 +.os-dock-peek--open {
92 109 opacity: 1;
93 110 }
94 111
95 112 /* Anchor flips by orientation. The popover's anchor point (the
@@ -96,24 +113,29 @@
96 113 coordinate set in JS) sits ON the tile edge; we translate from
97 114 there so the popover floats off-edge with a gap. The
98 115 `--peek-clamp-x/y` props are added by JS when the popover would
99 116 otherwise overflow the viewport — they nudge it inward without
100 - losing the orientation translate. */
101 -.desktop-mode-dock-peek[ data-orientation = "left" ] {
117 + losing the orientation translate.
118 +
119 + Docks: top-aligned to the tile so the popover grows downward
120 + when minimized cards expand. The old vertical-centre
121 + anchor pushed the top edge into the browser's bar on growth.
122 + Bottom dock: stays above the tile, growing upward. */
123 +.os-dock-peek[ data-orientation = "left" ] {
102 124 transform:
103 125 translate(
104 126 var( --peek-clamp-x, 0 ),
105 - calc( -50% + var( --peek-clamp-y, 0px ) )
127 + var( --peek-clamp-y, 0 )
106 128 );
107 129 }
108 -.desktop-mode-dock-peek[ data-orientation = "right" ] {
130 +.os-dock-peek[ data-orientation = "right" ] {
109 131 transform:
110 132 translate(
111 133 calc( -100% + var( --peek-clamp-x, 0px ) ),
112 - calc( -50% + var( --peek-clamp-y, 0px ) )
134 + var( --peek-clamp-y, 0 )
113 135 );
114 136 }
115 -.desktop-mode-dock-peek[ data-orientation = "bottom" ] {
137 +.os-dock-peek[ data-orientation = "bottom" ] {
116 138 transform:
117 139 translate(
118 140 calc( -50% + var( --peek-clamp-x, 0px ) ),
119 141 calc( -100% + var( --peek-clamp-y, 0px ) )
@@ -123,9 +145,9 @@
123 145 /* ──────────────────────────────────────────────────────────────────
124 146 Cards.
125 147 ────────────────────────────────────────────────────────────────── */
126 148
127 -.desktop-mode-dock-peek__cards {
149 +.os-dock-peek__cards {
128 150 display: flex;
129 151 flex-direction: column;
130 152 gap: 8px;
131 153 min-width: 280px;
@@ -146,9 +168,9 @@
146 168 }
147 169
148 170 /* Bottom dock: cards lay out as a horizontal reel and scroll on the
149 171 X-axis instead of Y. */
150 -.desktop-mode-dock-peek[ data-orientation = "bottom" ] .desktop-mode-dock-peek__cards {
172 +.os-dock-peek[ data-orientation = "bottom" ] .os-dock-peek__cards {
151 173 flex-direction: row;
152 174 min-width: 0;
153 175 overflow-x: auto;
154 176 overflow-y: hidden;
@@ -154,9 +176,9 @@
154 176 overflow-y: hidden;
155 177 max-width: 100%;
156 178 }
157 179
158 -.desktop-mode-dock-peek[ data-orientation = "bottom" ] .desktop-mode-dock-peek__card {
180 +.os-dock-peek[ data-orientation = "bottom" ] .os-dock-peek__card {
159 181 /* Bottom-dock cards are narrower than left/right dock cards —
160 182 a horizontal reel reads better with thumbnail-shaped tiles
161 183 (Mission Control / Stage Manager) than with full-width
162 184 sidebar-shaped ones. flex: 0 0 auto so a long reel doesn't
@@ -169,37 +191,37 @@
169 191 points back at the icon. */
170 192 transform: translateY( 10px ) scale( 0.96 );
171 193 }
172 194
173 -.desktop-mode-dock-peek[ data-orientation = "bottom" ] .desktop-mode-dock-peek__card--ghost {
195 +.os-dock-peek[ data-orientation = "bottom" ] .os-dock-peek__card--ghost {
174 196 width: 200px;
175 197 min-height: 116px;
176 198 }
177 199
178 -.desktop-mode-dock-peek[ data-orientation = "bottom" ].desktop-mode-dock-peek--open
179 - .desktop-mode-dock-peek__card {
200 +.os-dock-peek[ data-orientation = "bottom" ].os-dock-peek--open
201 + .os-dock-peek__card {
180 202 transform: translateY( 0 ) scale( 1 );
181 203 }
182 204
183 -.desktop-mode-dock-peek__cards::-webkit-scrollbar {
205 +.os-dock-peek__cards::-webkit-scrollbar {
184 206 width: 8px;
185 207 height: 8px;
186 208 }
187 -.desktop-mode-dock-peek__cards::-webkit-scrollbar-track {
209 +.os-dock-peek__cards::-webkit-scrollbar-track {
188 210 background: transparent;
189 211 }
190 -.desktop-mode-dock-peek__cards::-webkit-scrollbar-thumb {
212 +.os-dock-peek__cards::-webkit-scrollbar-thumb {
191 213 background: rgba( 255, 255, 255, 0.18 );
192 214 border-radius: 8px;
193 215 border: 2px solid transparent;
194 216 background-clip: padding-box;
195 217 }
196 -.desktop-mode-dock-peek__cards::-webkit-scrollbar-thumb:hover {
218 +.os-dock-peek__cards::-webkit-scrollbar-thumb:hover {
197 219 background: rgba( 255, 255, 255, 0.32 );
198 220 background-clip: padding-box;
199 221 }
200 222
201 -.desktop-mode-dock-peek__card {
223 +.os-dock-peek__card {
202 224 /* Card frame — looks like a tiny window. */
203 225 display: flex;
204 226 flex-direction: column;
205 227 overflow: hidden;
@@ -225,20 +247,24 @@
225 247 border-color 180ms ease-out,
226 248 box-shadow 180ms ease-out;
227 249 }
228 250
229 -.desktop-mode-dock-peek--open .desktop-mode-dock-peek__card {
251 +.os-dock-peek--open .os-dock-peek__card {
230 252 opacity: 1;
231 253 transform: translateX( 0 ) scale( 1 );
232 254 }
233 255
234 -.desktop-mode-dock-peek__card:hover {
235 - border-color: rgba( 255, 255, 255, 0.24 );
236 - box-shadow: 0 4px 14px -4px rgba( 0, 0, 0, 0.4 );
256 +/* Aero Peek hover: accent border + glow on every previewed card, not
257 + just minimumzd ones.*/
258 +.os-dock-peek__card--instance:hover {
259 + border-color: var( --os-accent, #2271b1 );
260 + box-shadow:
261 + 0 0 14px -2px var( --os-accent, #2271b1 ),
262 + 0 4px 14px -4px rgba( 0, 0, 0, 0.4 );
237 263 }
238 264
239 -.desktop-mode-dock-peek__card:focus-visible {
240 - outline: 2px solid var( --desktop-mode-accent, #2271b1 );
265 +.os-dock-peek__card:focus-visible {
266 + outline: 2px solid var( --os-ui-accent, #2271b1 );
241 267 outline-offset: 2px;
242 268 }
243 269
244 270 /* ──────────────────────────────────────────────────────────────────
@@ -244,9 +270,9 @@
244 270 /* ──────────────────────────────────────────────────────────────────
245 271 Mini-window chrome — instance card faux titlebar.
246 272 ────────────────────────────────────────────────────────────────── */
247 273
248 -.desktop-mode-dock-peek__card-titlebar {
274 +.os-dock-peek__card-titlebar {
249 275 display: flex;
250 276 align-items: center;
251 277 gap: 8px;
252 278 padding: 8px 10px;
@@ -254,9 +280,9 @@
254 280 reads as a faithful shrink of the real window. Falls back to a
255 281 neutral translucent gradient when the variable isn't set (early
256 282 load, theme without the token, tests). */
257 283 background: var(
258 - --desktop-mode-titlebar-bg-focused,
284 + --os-titlebar-bg-focused,
259 285 linear-gradient(
260 286 to bottom,
261 287 rgba( 255, 255, 255, 0.10 ),
262 288 rgba( 255, 255, 255, 0.04 )
@@ -262,10 +288,10 @@
262 288 rgba( 255, 255, 255, 0.04 )
263 289 )
264 290 );
265 291 color: var(
266 - --desktop-mode-titlebar-color-focused,
267 - var( --desktop-mode-fg, #fff )
292 + --os-titlebar-color-focused,
293 + var( --os-fg, #fff )
268 294 );
269 295 border-bottom: 1px solid rgba( 0, 0, 0, 0.12 );
270 296 font-size: 12px;
271 297 line-height: 1.2;
@@ -270,15 +296,15 @@
270 296 font-size: 12px;
271 297 line-height: 1.2;
272 298 }
273 299
274 -.desktop-mode-dock-peek__card-dots {
300 +.os-dock-peek__card-dots {
275 301 display: inline-flex;
276 302 gap: 4px;
277 303 flex: 0 0 auto;
278 304 }
279 305
280 -.desktop-mode-dock-peek__card-dots i {
306 +.os-dock-peek__card-dots i {
281 307 width: 8px;
282 308 height: 8px;
283 309 border-radius: 50%;
284 310 background: rgba( 255, 255, 255, 0.22 );
@@ -283,19 +309,19 @@
283 309 border-radius: 50%;
284 310 background: rgba( 255, 255, 255, 0.22 );
285 311 }
286 312
287 -.desktop-mode-dock-peek__card-dots i:nth-child( 1 ) {
313 +.os-dock-peek__card-dots i:nth-child( 1 ) {
288 314 background: #ff5f57;
289 315 }
290 -.desktop-mode-dock-peek__card-dots i:nth-child( 2 ) {
316 +.os-dock-peek__card-dots i:nth-child( 2 ) {
291 317 background: #febc2e;
292 318 }
293 -.desktop-mode-dock-peek__card-dots i:nth-child( 3 ) {
319 +.os-dock-peek__card-dots i:nth-child( 3 ) {
294 320 background: #28c840;
295 321 }
296 322
297 -.desktop-mode-dock-peek__card-icon {
323 +.os-dock-peek__card-icon {
298 324 flex: 0 0 auto;
299 325 width: 14px;
300 326 height: 14px;
301 327 font-size: 14px;
@@ -302,9 +328,9 @@
302 328 line-height: 1;
303 329 opacity: 0.92;
304 330 }
305 331
306 -.desktop-mode-dock-peek__card-label {
332 +.os-dock-peek__card-label {
307 333 flex: 1 1 auto;
308 334 overflow: hidden;
309 335 text-overflow: ellipsis;
310 336 white-space: nowrap;
@@ -318,9 +344,9 @@
318 344 instances of the same page (`edit.php` and `edit.php-2`) read as
319 345 visually distinct without us having to invent unique colors.
320 346 ────────────────────────────────────────────────────────────────── */
321 347
322 -.desktop-mode-dock-peek__card-body {
348 +.os-dock-peek__card-body {
323 349 flex: 1 1 auto;
324 350 display: flex;
325 351 flex-direction: column;
326 352 gap: 6px;
@@ -332,9 +358,9 @@
332 358 hsl( var( --peek-card-hue, 210 ) 55% 14% / 0.5 )
333 359 );
334 360 }
335 361
336 -.desktop-mode-dock-peek__card-line {
362 +.os-dock-peek__card-line {
337 363 display: block;
338 364 height: 6px;
339 365 border-radius: 3px;
340 366 background: rgba( 255, 255, 255, 0.16 );
@@ -339,15 +365,15 @@
339 365 border-radius: 3px;
340 366 background: rgba( 255, 255, 255, 0.16 );
341 367 }
342 368
343 -.desktop-mode-dock-peek__card-line:nth-child( 1 ) {
369 +.os-dock-peek__card-line:nth-child( 1 ) {
344 370 width: 80%;
345 371 }
346 -.desktop-mode-dock-peek__card-line:nth-child( 2 ) {
372 +.os-dock-peek__card-line:nth-child( 2 ) {
347 373 width: 60%;
348 374 }
349 -.desktop-mode-dock-peek__card-line:nth-child( 3 ) {
375 +.os-dock-peek__card-line:nth-child( 3 ) {
350 376 width: 70%;
351 377 }
352 378
353 379 /* Plugin-customized body — drop the default tinted background +
@@ -353,9 +379,9 @@
353 379 /* Plugin-customized body — drop the default tinted background +
354 380 ghost-line padding so the plugin's own markup gets a clean canvas.
355 381 Plugins that want the tinted look back can re-add their own
356 382 background; otherwise they get a transparent flex container. */
357 -.desktop-mode-dock-peek__card-body--custom {
383 +.os-dock-peek__card-body--custom {
358 384 background: transparent;
359 385 padding: 0;
360 386 gap: 0;
361 387 }
@@ -368,9 +394,9 @@
368 394 user's WP profile accent so the card "belongs" to the active
369 395 color scheme.
370 396 ────────────────────────────────────────────────────────────────── */
371 397
372 -.desktop-mode-dock-peek__card-body--os-settings {
398 +.os-dock-peek__card-body--os-settings {
373 399 display: flex;
374 400 flex-direction: column;
375 401 align-items: center;
376 402 justify-content: center;
@@ -380,12 +406,12 @@
380 406 135deg,
381 407 color-mix( in srgb, var( --wp-admin-theme-color, #2271b1 ) 65%, #1d2327 ) 0%,
382 408 color-mix( in srgb, var( --wp-admin-theme-color, #2271b1 ) 35%, #1d2327 ) 100%
383 409 );
384 - color: #fff;
410 + color: var( --os-ui-fg-on-accent, #fff );
385 411 }
386 412
387 -.desktop-mode-dock-peek__os-hero {
413 +.os-dock-peek__os-hero {
388 414 font-size: 32px;
389 415 width: 32px;
390 416 height: 32px;
391 417 line-height: 1;
@@ -392,9 +418,9 @@
392 418 opacity: 0.95;
393 419 filter: drop-shadow( 0 1px 2px rgba( 0, 0, 0, 0.4 ) );
394 420 }
395 421
396 -.desktop-mode-dock-peek__os-subtitle {
422 +.os-dock-peek__os-subtitle {
397 423 font-size: 11px;
398 424 font-weight: 500;
399 425 letter-spacing: 0.04em;
400 426 text-transform: uppercase;
@@ -401,15 +427,15 @@
401 427 opacity: 0.85;
402 428 text-shadow: 0 1px 2px rgba( 0, 0, 0, 0.3 );
403 429 }
404 430
405 -.desktop-mode-dock-peek__os-tabs {
431 +.os-dock-peek__os-tabs {
406 432 display: flex;
407 433 gap: 6px;
408 434 margin-top: 2px;
409 435 }
410 436
411 -.desktop-mode-dock-peek__os-tab {
437 +.os-dock-peek__os-tab {
412 438 width: 18px;
413 439 height: 18px;
414 440 font-size: 13px;
415 441 line-height: 18px;
@@ -426,9 +452,9 @@
426 452 three "slips" peeking from behind the icon + a count chip in the
427 453 corner. The `data-empty` attribute toggles between the two.
428 454 ────────────────────────────────────────────────────────────────── */
429 455
430 -.desktop-mode-dock-peek__card-body--recycle-bin {
456 +.os-dock-peek__card-body--recycle-bin {
431 457 display: flex;
432 458 flex-direction: column;
433 459 align-items: center;
434 460 justify-content: center;
@@ -441,9 +467,9 @@
441 467 );
442 468 color: rgba( 255, 255, 255, 0.92 );
443 469 }
444 470
445 -.desktop-mode-dock-peek__bin-stage {
471 +.os-dock-peek__bin-stage {
446 472 position: relative;
447 473 width: 44px;
448 474 height: 44px;
449 475 display: flex;
@@ -450,9 +476,9 @@
450 476 align-items: center;
451 477 justify-content: center;
452 478 }
453 479
454 -.desktop-mode-dock-peek__bin-icon {
480 +.os-dock-peek__bin-icon {
455 481 font-size: 32px;
456 482 width: 32px;
457 483 height: 32px;
458 484 line-height: 1;
@@ -460,9 +486,9 @@
460 486 filter: drop-shadow( 0 1px 2px rgba( 0, 0, 0, 0.4 ) );
461 487 z-index: 1;
462 488 }
463 489
464 -.desktop-mode-dock-peek__bin-stack {
490 +.os-dock-peek__bin-stack {
465 491 position: absolute;
466 492 inset: 0;
467 493 display: flex;
468 494 align-items: flex-end;
@@ -471,14 +497,14 @@
471 497 opacity: 0;
472 498 transition: opacity 200ms ease-out;
473 499 }
474 500
475 -.desktop-mode-dock-peek__card-body--recycle-bin[ data-empty = "false" ]
476 - .desktop-mode-dock-peek__bin-stack {
501 +.os-dock-peek__card-body--recycle-bin[ data-empty = "false" ]
502 + .os-dock-peek__bin-stack {
477 503 opacity: 1;
478 504 }
479 505
480 -.desktop-mode-dock-peek__bin-slip {
506 +.os-dock-peek__bin-slip {
481 507 position: absolute;
482 508 width: 22px;
483 509 height: 4px;
484 510 border-radius: 1px;
@@ -485,22 +511,22 @@
485 511 background: rgba( 255, 255, 255, 0.55 );
486 512 bottom: 6px;
487 513 }
488 514
489 -.desktop-mode-dock-peek__bin-slip:nth-child( 1 ) {
515 +.os-dock-peek__bin-slip:nth-child( 1 ) {
490 516 transform: translate( -10px, -16px ) rotate( -8deg );
491 517 background: rgba( 255, 255, 255, 0.45 );
492 518 }
493 -.desktop-mode-dock-peek__bin-slip:nth-child( 2 ) {
519 +.os-dock-peek__bin-slip:nth-child( 2 ) {
494 520 transform: translate( 8px, -20px ) rotate( 6deg );
495 521 background: rgba( 255, 255, 255, 0.5 );
496 522 }
497 -.desktop-mode-dock-peek__bin-slip:nth-child( 3 ) {
523 +.os-dock-peek__bin-slip:nth-child( 3 ) {
498 524 transform: translate( -2px, -22px ) rotate( -2deg );
499 525 background: rgba( 255, 255, 255, 0.6 );
500 526 }
501 527
502 -.desktop-mode-dock-peek__bin-label {
528 +.os-dock-peek__bin-label {
503 529 font-size: 11px;
504 530 font-weight: 500;
505 531 letter-spacing: 0.02em;
506 532 color: rgba( 255, 255, 255, 0.78 );
@@ -505,10 +531,10 @@
505 531 letter-spacing: 0.02em;
506 532 color: rgba( 255, 255, 255, 0.78 );
507 533 }
508 534
509 -.desktop-mode-dock-peek__card-body--recycle-bin[ data-empty = "false" ]
510 - .desktop-mode-dock-peek__bin-label {
535 +.os-dock-peek__card-body--recycle-bin[ data-empty = "false" ]
536 + .os-dock-peek__bin-label {
511 537 color: var( --wp-admin-theme-color, #4f9cff );
512 538 font-weight: 600;
513 539 }
514 540
@@ -525,9 +551,9 @@
525 551 and opacity ramps to full — the card "solidifies" into the same
526 552 visual weight as an instance card.
527 553 ────────────────────────────────────────────────────────────────── */
528 554
529 -.desktop-mode-dock-peek__card--ghost {
555 +.os-dock-peek__card--ghost {
530 556 display: flex;
531 557 align-items: center;
532 558 justify-content: center;
533 559 gap: 10px;
@@ -537,30 +563,30 @@
537 563 border-style: dashed;
538 564 border-color: rgba( 255, 255, 255, 0.34 );
539 565 /* A self-contained dark translucent fill so the white label
540 566 reads on light wallpapers / light color schemes too. The
541 - popover's parent surface uses `color-mix(--desktop-mode-bg)`,
567 + popover's parent surface uses `color-mix(--os-bg)`,
542 568 which goes near-white on light themes — without our own
543 569 backdrop the Ghost Card was white-on-white. */
544 - background: rgba( 0, 0, 0, 0.32 );
545 - color: #fff;
570 + background: var( --os-ui-scrim, rgba( 0, 0, 0, 0.32 ) );
571 + color: var( --os-ui-fg-on-accent, #fff );
546 572 text-shadow: 0 1px 2px rgba( 0, 0, 0, 0.45 );
547 573 font-size: 13px;
548 574 font-weight: 500;
549 - animation: desktop-mode-dock-peek-breathe 2400ms ease-in-out infinite;
575 + animation: os-dock-peek-breathe 2400ms ease-in-out infinite;
550 576 }
551 577
552 -.desktop-mode-dock-peek__card--ghost:hover {
578 +.os-dock-peek__card--ghost:hover {
553 579 border-style: solid;
554 580 border-color: rgba( 255, 255, 255, 0.55 );
555 - background: rgba( 0, 0, 0, 0.45 );
556 - color: #fff;
581 + background: var( --os-ui-scrim, rgba( 0, 0, 0, 0.45 ) );
582 + color: var( --os-ui-fg-on-accent, #fff );
557 583 animation: none;
558 584 transform: scale( 1.02 );
559 585 box-shadow: 0 4px 14px -4px rgba( 0, 0, 0, 0.5 );
560 586 }
561 587
562 -.desktop-mode-dock-peek__card-plus {
588 +.os-dock-peek__card-plus {
563 589 flex: 0 0 auto;
564 590 display: inline-flex;
565 591 align-items: center;
566 592 justify-content: center;
@@ -577,13 +603,13 @@
577 603 text-shadow: 0 1px 2px rgba( 0, 0, 0, 0.45 );
578 604 transition: color 160ms ease-out;
579 605 }
580 606
581 -.desktop-mode-dock-peek__card--ghost:hover .desktop-mode-dock-peek__card-plus {
582 - color: var( --desktop-mode-accent, #4f9cff );
607 +.os-dock-peek__card--ghost:hover .os-dock-peek__card-plus {
608 + color: var( --os-ui-accent, #4f9cff );
583 609 }
584 610
585 -@keyframes desktop-mode-dock-peek-breathe {
611 +@keyframes os-dock-peek-breathe {
586 612 0%, 100% {
587 613 opacity: 0.74;
588 614 transform: scale( 1 );
589 615 }
@@ -593,16 +619,16 @@
593 619 }
594 620 }
595 621
596 622 @media ( prefers-reduced-motion: reduce ) {
597 - .desktop-mode-dock-peek,
598 - .desktop-mode-dock-peek__card,
599 - .desktop-mode-dock-peek__card--ghost {
623 + .os-dock-peek,
624 + .os-dock-peek__card,
625 + .os-dock-peek__card--ghost {
600 626 transition: opacity 80ms linear;
601 627 animation: none !important;
602 628 transform: none !important;
603 629 }
604 - .desktop-mode-dock-peek--open .desktop-mode-dock-peek__card {
630 + .os-dock-peek--open .os-dock-peek__card {
605 631 transform: none;
606 632 }
607 633 }
608 634
@@ -622,11 +648,11 @@
622 648 }
623 649 }
624 650
625 651 /* Collapse minimized cards to just the titlebar. */
626 -.desktop-mode-dock-peek__card[data-state="minimized"] {
652 +.os-dock-peek__card[data-state="minimized"] {
627 653 min-height: 0;
628 654 opacity: 0.85;
629 655 }
630 -.desktop-mode-dock-peek__card[data-state="minimized"] > :not(.desktop-mode-dock-peek__card-titlebar) {
656 +.os-dock-peek__card[data-state="minimized"] > :not(.os-dock-peek__card-titlebar) {
631 657 display: none;
632 658 }