@tutti-os/workbench-surface 0.0.1

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.
@@ -0,0 +1,2698 @@
1
+ @import "@tutti-os/ui-system/styles.css";
2
+
3
+ :root {
4
+ --workbench-window-border: var(--line-focus-window);
5
+ --workbench-window-focused-border: var(--line-focus-window);
6
+ --workbench-window-shadow: var(--workbench-window-elevation);
7
+ --workbench-window-radius: 12px;
8
+ --workbench-header-height: 40px;
9
+ --workbench-chrome-scrim: var(--workbench-scrim);
10
+ }
11
+
12
+ :root[data-theme="dark"] {
13
+ --workbench-window-shadow: 0 24px 72px rgb(0 0 0 / 60%);
14
+ }
15
+
16
+ .workbench-surface {
17
+ --workbench-chrome-inset-x: 0px;
18
+ --workbench-chrome-inset-y: 0px;
19
+ --workbench-mission-control-ease: cubic-bezier(0.22, 1, 0.36, 1);
20
+ --workbench-mission-control-fade-duration: 180ms;
21
+ --workbench-mission-control-scale-duration: 220ms;
22
+ --workbench-mission-control-shift-duration: 240ms;
23
+ --workbench-snap-guide-bg: var(--workbench-snap-guide);
24
+ --workbench-z-layout-menu: var(--z-popover);
25
+ --workbench-z-snap-preview: 1000;
26
+ --workbench-z-dock-frame: 1;
27
+ --workbench-z-dock-hover-zone: 2;
28
+ --workbench-z-dock-tooltip: 3;
29
+ position: relative;
30
+ min-height: 0;
31
+ overflow: hidden;
32
+ background: var(--workbench-surface-background);
33
+ color: var(--workbench-foreground);
34
+ isolation: isolate;
35
+ }
36
+
37
+ .workbench-surface__wallpaper {
38
+ position: absolute;
39
+ inset: 0;
40
+ z-index: 0;
41
+ overflow: hidden;
42
+ background-repeat: no-repeat;
43
+ pointer-events: none;
44
+ transition:
45
+ opacity var(--workbench-mission-control-scale-duration) ease,
46
+ transform var(--workbench-mission-control-scale-duration)
47
+ var(--workbench-mission-control-ease);
48
+ will-change: opacity, transform;
49
+ }
50
+
51
+ .workbench-surface[data-mission-control-phase="entering"]
52
+ .workbench-surface__wallpaper,
53
+ .workbench-surface[data-mission-control-phase="open"]
54
+ .workbench-surface__wallpaper {
55
+ opacity: 0.84;
56
+ transform: scale(1.028);
57
+ }
58
+
59
+ .workbench-window[data-window-drag-state="dragging"],
60
+ .workbench-window[data-window-resize-state="resizing"] {
61
+ transition:
62
+ border-color 0.14s ease,
63
+ box-shadow 0.16s ease;
64
+ }
65
+
66
+ .workbench-window-shell[data-genie-state="hidden"] {
67
+ visibility: hidden;
68
+ opacity: 0;
69
+ pointer-events: none;
70
+ }
71
+
72
+ .workbench-window-shell[data-minimized-mount="hidden"] {
73
+ visibility: hidden;
74
+ opacity: 0;
75
+ pointer-events: none;
76
+ }
77
+
78
+ .workbench-node-layer {
79
+ position: absolute;
80
+ inset: 0;
81
+ z-index: 1;
82
+ }
83
+
84
+ .workbench-surface[data-workbench-interactive="false"] .workbench-node-layer {
85
+ pointer-events: none;
86
+ }
87
+
88
+ .workbench-window-shell {
89
+ position: absolute;
90
+ min-width: 220px;
91
+ min-height: 160px;
92
+ overflow: visible;
93
+ transition:
94
+ transform 0.18s ease,
95
+ left 0.22s cubic-bezier(0.4, 0, 0.2, 1),
96
+ top 0.22s cubic-bezier(0.4, 0, 0.2, 1),
97
+ width 0.22s cubic-bezier(0.4, 0, 0.2, 1),
98
+ height 0.22s cubic-bezier(0.4, 0, 0.2, 1);
99
+ }
100
+
101
+ .workbench-window-shell[data-presentation-mode="mission-control"] {
102
+ pointer-events: auto;
103
+ will-change: transform;
104
+ backface-visibility: hidden;
105
+ }
106
+
107
+ .workbench-window-shell[data-presentation-mode="mission-control"]
108
+ .workbench-window-shell__content {
109
+ pointer-events: none;
110
+ }
111
+
112
+ .workbench-window-shell[data-window-drag-state="dragging"],
113
+ .workbench-window-shell[data-window-resize-state="resizing"] {
114
+ transition:
115
+ transform 0.18s ease,
116
+ left 0ms linear,
117
+ top 0ms linear,
118
+ width 0ms linear,
119
+ height 0ms linear;
120
+ }
121
+
122
+ .workbench-window-shell__content {
123
+ position: relative;
124
+ width: 100%;
125
+ height: 100%;
126
+ }
127
+
128
+ .workbench-window {
129
+ position: relative;
130
+ display: grid;
131
+ width: 100%;
132
+ height: 100%;
133
+ grid-template-rows: var(--workbench-header-height) minmax(0, 1fr);
134
+ overflow: hidden;
135
+ border: 1px solid var(--workbench-window-border);
136
+ border-radius: var(--workbench-window-radius);
137
+ background: var(--background-fronted);
138
+ backdrop-filter: none;
139
+ box-shadow: var(--workbench-window-shadow);
140
+ transition:
141
+ border-color 0.14s ease,
142
+ box-shadow 0.16s ease;
143
+ }
144
+
145
+ .workbench-window[data-display-mode="fullscreen"] {
146
+ grid-template-rows: minmax(0, 1fr);
147
+ }
148
+
149
+ .workbench-window[data-display-mode="floating"] {
150
+ background: var(--background-panel);
151
+ }
152
+
153
+ .workbench-window[data-display-mode="fullscreen"][data-fullscreen-header-mode="persistent"] {
154
+ grid-template-rows: var(--workbench-header-height) minmax(0, 1fr);
155
+ }
156
+
157
+ .workbench-window[data-focused="true"] {
158
+ border-color: var(--workbench-window-focused-border);
159
+ }
160
+
161
+ .workbench-window__header {
162
+ display: flex;
163
+ align-items: center;
164
+ justify-content: space-between;
165
+ gap: 12px;
166
+ height: var(--workbench-header-height);
167
+ padding: 0 8px 0 12px;
168
+ border-bottom: 1px solid var(--border-1);
169
+ background: var(--background-panel);
170
+ cursor: grab;
171
+ user-select: none;
172
+ }
173
+
174
+ .workbench-window__header:active {
175
+ cursor: grabbing;
176
+ }
177
+
178
+ .workbench-window__header--custom {
179
+ display: block;
180
+ padding: 0;
181
+ overflow: hidden;
182
+ cursor: default;
183
+ user-select: auto;
184
+ }
185
+
186
+ .workbench-window__header--custom:active {
187
+ cursor: default;
188
+ }
189
+
190
+ .workbench-window[data-display-mode="fullscreen"] .workbench-window__header {
191
+ position: absolute;
192
+ top: 0;
193
+ right: 0;
194
+ left: 0;
195
+ z-index: 3;
196
+ backdrop-filter: var(--workbench-window-backdrop-filter);
197
+ -webkit-backdrop-filter: var(--workbench-window-backdrop-filter);
198
+ opacity: 0;
199
+ transform: translateY(calc(-100% - 8px));
200
+ pointer-events: none;
201
+ transition:
202
+ opacity 0.16s ease,
203
+ transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
204
+ }
205
+
206
+ .workbench-window[data-display-mode="fullscreen"][data-fullscreen-header-mode="persistent"]
207
+ .workbench-window__header {
208
+ position: relative;
209
+ opacity: 1;
210
+ transform: none;
211
+ pointer-events: auto;
212
+ }
213
+
214
+ .workbench-window[data-display-mode="fullscreen"]:has(
215
+ .workbench-window__header-reveal-zone:hover
216
+ )
217
+ .workbench-window__header,
218
+ .workbench-window[data-display-mode="fullscreen"]:has(
219
+ .workbench-window__header:hover
220
+ )
221
+ .workbench-window__header,
222
+ .workbench-window[data-display-mode="fullscreen"]:has(
223
+ .workbench-window__header:focus-within
224
+ )
225
+ .workbench-window__header {
226
+ opacity: 1;
227
+ transform: translateY(0);
228
+ pointer-events: auto;
229
+ transition: none;
230
+ }
231
+
232
+ .workbench-window__header-reveal-zone {
233
+ position: absolute;
234
+ top: 0;
235
+ right: 0;
236
+ left: 0;
237
+ z-index: 2;
238
+ height: 22px;
239
+ pointer-events: auto;
240
+ }
241
+
242
+ [data-workbench-drag-handle="true"] {
243
+ cursor: grab;
244
+ user-select: none;
245
+ }
246
+
247
+ [data-workbench-drag-handle="true"]:active {
248
+ cursor: grabbing;
249
+ }
250
+
251
+ .workbench-window__body {
252
+ min-width: 0;
253
+ min-height: 0;
254
+ overflow: auto;
255
+ background: var(--background-panel);
256
+ }
257
+
258
+ .workbench-window[data-display-mode="fullscreen"] .workbench-window__body {
259
+ grid-row: 1;
260
+ }
261
+
262
+ .workbench-window[data-display-mode="fullscreen"][data-fullscreen-header-mode="persistent"]
263
+ .workbench-window__body {
264
+ grid-row: 2;
265
+ }
266
+
267
+ .workbench-window__resize-handle {
268
+ position: absolute;
269
+ z-index: 8;
270
+ }
271
+
272
+ .workbench-window__resize-handle[data-handle="north"],
273
+ .workbench-window__resize-handle[data-handle="south"] {
274
+ left: 10px;
275
+ right: 10px;
276
+ height: 8px;
277
+ cursor: ns-resize;
278
+ }
279
+
280
+ .workbench-window__resize-handle[data-handle="north"] {
281
+ top: -4px;
282
+ }
283
+
284
+ .workbench-window__resize-handle[data-handle="south"] {
285
+ bottom: -4px;
286
+ }
287
+
288
+ .workbench-window__resize-handle[data-handle="east"],
289
+ .workbench-window__resize-handle[data-handle="west"] {
290
+ top: 10px;
291
+ bottom: 10px;
292
+ width: 20px;
293
+ cursor: ew-resize;
294
+ }
295
+
296
+ .workbench-window__resize-handle[data-handle="east"] {
297
+ right: -16px;
298
+ }
299
+
300
+ .workbench-window__resize-handle[data-handle="west"] {
301
+ left: -16px;
302
+ }
303
+
304
+ .workbench-window__resize-handle[data-handle="north-east"],
305
+ .workbench-window__resize-handle[data-handle="north-west"],
306
+ .workbench-window__resize-handle[data-handle="south-east"],
307
+ .workbench-window__resize-handle[data-handle="south-west"] {
308
+ width: 24px;
309
+ height: 24px;
310
+ }
311
+
312
+ .workbench-window__resize-handle[data-handle="north-east"] {
313
+ top: -8px;
314
+ right: -8px;
315
+ cursor: nesw-resize;
316
+ }
317
+
318
+ .workbench-window__resize-handle[data-handle="north-west"] {
319
+ top: -8px;
320
+ left: -8px;
321
+ cursor: nwse-resize;
322
+ }
323
+
324
+ .workbench-window__resize-handle[data-handle="south-east"] {
325
+ right: -8px;
326
+ bottom: -8px;
327
+ cursor: nwse-resize;
328
+ }
329
+
330
+ .workbench-window__resize-handle[data-handle="south-west"] {
331
+ bottom: -8px;
332
+ left: -8px;
333
+ cursor: nesw-resize;
334
+ }
335
+
336
+ .workbench-snap-preview {
337
+ position: absolute;
338
+ z-index: var(--workbench-z-snap-preview);
339
+ border: 2px dashed var(--workbench-snap-guide-border);
340
+ border-radius: var(--workbench-window-radius);
341
+ background: transparent;
342
+ box-shadow: none;
343
+ pointer-events: none;
344
+ animation: workbench-snap-preview-enter 0.16s ease-out;
345
+ }
346
+
347
+ .workbench-dock-frame {
348
+ --workbench-left-dock-bottom-inset: 24px;
349
+ --workbench-left-dock-left-inset: 4px;
350
+ --workbench-left-dock-top-inset: 54px;
351
+ position: absolute;
352
+ right: 0;
353
+ bottom: 10px;
354
+ left: 0;
355
+ z-index: var(--workbench-z-dock-frame);
356
+ pointer-events: none;
357
+ transition:
358
+ opacity var(--workbench-mission-control-fade-duration) ease,
359
+ transform var(--workbench-mission-control-shift-duration)
360
+ var(--workbench-mission-control-ease);
361
+ will-change: opacity, transform;
362
+ }
363
+
364
+ .workbench-dock-frame[data-dock-placement="left"] {
365
+ top: var(--workbench-left-dock-top-inset);
366
+ right: auto;
367
+ bottom: var(--workbench-left-dock-bottom-inset);
368
+ left: var(--workbench-left-dock-left-inset);
369
+ display: flex;
370
+ align-items: center;
371
+ }
372
+
373
+ .workbench-surface__bottom-chrome {
374
+ transition:
375
+ opacity var(--workbench-mission-control-fade-duration) ease,
376
+ transform var(--workbench-mission-control-shift-duration)
377
+ var(--workbench-mission-control-ease);
378
+ }
379
+
380
+ .workbench-surface[data-mission-control-phase="entering"] .workbench-dock-frame,
381
+ .workbench-surface[data-mission-control-phase="open"] .workbench-dock-frame,
382
+ .workbench-surface[data-presentation-mode="mission-control"]
383
+ .workbench-dock-frame {
384
+ opacity: 0;
385
+ transform: translateY(calc(100% + 8px));
386
+ pointer-events: none;
387
+ }
388
+
389
+ .workbench-surface[data-mission-control-phase="entering"]
390
+ .workbench-dock-frame[data-dock-placement="left"],
391
+ .workbench-surface[data-mission-control-phase="open"]
392
+ .workbench-dock-frame[data-dock-placement="left"],
393
+ .workbench-surface[data-presentation-mode="mission-control"]
394
+ .workbench-dock-frame[data-dock-placement="left"] {
395
+ transform: translateX(calc(-100% - 8px));
396
+ }
397
+
398
+ .workbench-surface[data-mission-control-phase="entering"]
399
+ .workbench-surface__bottom-chrome,
400
+ .workbench-surface[data-mission-control-phase="open"]
401
+ .workbench-surface__bottom-chrome,
402
+ .workbench-surface[data-presentation-mode="mission-control"]
403
+ .workbench-surface__bottom-chrome {
404
+ opacity: 0;
405
+ transform: translateY(12px);
406
+ pointer-events: none;
407
+ }
408
+
409
+ .workbench-mission-control-backdrop {
410
+ position: absolute;
411
+ inset: 0;
412
+ opacity: 0;
413
+ pointer-events: none;
414
+ transform: scale(1.012);
415
+ transition:
416
+ opacity var(--workbench-mission-control-fade-duration) ease,
417
+ transform var(--workbench-mission-control-scale-duration)
418
+ var(--workbench-mission-control-ease);
419
+ will-change: opacity, transform;
420
+ background:
421
+ radial-gradient(
422
+ 110% 92% at 50% -4%,
423
+ rgb(255 255 255 / 0.14) 0%,
424
+ transparent 56%
425
+ ),
426
+ linear-gradient(
427
+ 180deg,
428
+ color-mix(
429
+ in srgb,
430
+ var(--workbench-surface-background) 54%,
431
+ rgb(255 255 255 / 10%)
432
+ )
433
+ 0%,
434
+ color-mix(in srgb, var(--workbench-window-bg) 82%, var(--workbench-panel))
435
+ 100%
436
+ );
437
+ box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.14);
438
+ }
439
+
440
+ .workbench-mission-control-backdrop::before {
441
+ position: absolute;
442
+ inset: 0;
443
+ background:
444
+ linear-gradient(135deg, rgb(255 255 255 / 0.06), transparent 34%),
445
+ radial-gradient(
446
+ 92% 84% at 18% 18%,
447
+ color-mix(in srgb, var(--workbench-panel) 22%, transparent) 0%,
448
+ transparent 48%
449
+ ),
450
+ radial-gradient(
451
+ 68% 54% at 82% 10%,
452
+ rgb(255 255 255 / 0.07),
453
+ transparent 44%
454
+ ),
455
+ repeating-linear-gradient(
456
+ 180deg,
457
+ rgb(255 255 255 / 0.018) 0,
458
+ rgb(255 255 255 / 0.018) 1px,
459
+ transparent 1px,
460
+ transparent 4px
461
+ );
462
+ content: "";
463
+ opacity: 0.92;
464
+ }
465
+
466
+ .workbench-mission-control-backdrop::after {
467
+ position: absolute;
468
+ inset: 0;
469
+ background:
470
+ linear-gradient(180deg, rgb(255 255 255 / 0.045), transparent 26%),
471
+ linear-gradient(0deg, rgb(255 255 255 / 0.025), transparent 36%);
472
+ content: "";
473
+ opacity: 0.76;
474
+ }
475
+
476
+ .workbench-mission-control-backdrop[data-phase="entering"],
477
+ .workbench-mission-control-backdrop[data-phase="open"] {
478
+ opacity: 1;
479
+ transform: scale(1);
480
+ }
481
+
482
+ .workbench-mission-control {
483
+ opacity: 1;
484
+ }
485
+
486
+ .workbench-mission-control__footer-shell {
487
+ opacity: 0;
488
+ transition:
489
+ opacity var(--workbench-mission-control-fade-duration) ease,
490
+ transform var(--workbench-mission-control-scale-duration)
491
+ var(--workbench-mission-control-ease);
492
+ will-change: opacity, transform;
493
+ }
494
+
495
+ .workbench-mission-control__footer-shell {
496
+ transform: translateY(18px);
497
+ }
498
+
499
+ .workbench-mission-control[data-phase="entering"]
500
+ .workbench-mission-control__footer-shell,
501
+ .workbench-mission-control[data-phase="open"]
502
+ .workbench-mission-control__footer-shell {
503
+ opacity: 1;
504
+ transform: translateY(0);
505
+ }
506
+
507
+ .workbench-mission-control[data-phase="closing"] {
508
+ pointer-events: none;
509
+ }
510
+
511
+ .workbench-mission-control__glass-panel {
512
+ position: relative;
513
+ overflow: hidden;
514
+ border: 1px solid rgb(255 255 255 / 0.16);
515
+ box-shadow:
516
+ inset 0 1px 0 rgb(255 255 255 / 0.22),
517
+ inset 0 -1px 0 rgb(255 255 255 / 0.04),
518
+ 0 18px 38px rgb(15 23 42 / 0.16);
519
+ }
520
+
521
+ .workbench-mission-control__glass-panel::before {
522
+ position: absolute;
523
+ inset: 0;
524
+ background:
525
+ linear-gradient(180deg, rgb(255 255 255 / 0.12), transparent 42%),
526
+ linear-gradient(135deg, rgb(255 255 255 / 0.08), transparent 34%);
527
+ content: "";
528
+ pointer-events: none;
529
+ }
530
+
531
+ .workbench-mission-control__glass-panel {
532
+ border-radius: 1rem;
533
+ background: linear-gradient(
534
+ 180deg,
535
+ color-mix(in srgb, var(--workbench-window-bg) 88%, rgb(255 255 255 / 9%)) 0%,
536
+ color-mix(in srgb, var(--workbench-panel) 86%, var(--workbench-window-bg))
537
+ 100%
538
+ );
539
+ }
540
+
541
+ .desktop-dock-plate.workbench-mission-control__layout-dock {
542
+ overflow: hidden;
543
+ padding: 4px 7px 5px;
544
+ border-radius: var(--radius-lg);
545
+ border-color: color-mix(
546
+ in srgb,
547
+ var(--workbench-border) 82%,
548
+ rgb(255 255 255 / 18%)
549
+ );
550
+ background: linear-gradient(
551
+ 180deg,
552
+ color-mix(in srgb, var(--workbench-window-bg) 90%, rgb(255 255 255 / 7%)) 0%,
553
+ color-mix(in srgb, var(--workbench-panel) 88%, var(--workbench-window-bg))
554
+ 100%
555
+ );
556
+ box-shadow: none;
557
+ transition:
558
+ width 180ms cubic-bezier(0.22, 1, 0.36, 1),
559
+ background-color 160ms ease,
560
+ border-color 160ms ease;
561
+ }
562
+
563
+ .workbench-mission-control__layout-dock-content {
564
+ position: relative;
565
+ z-index: 1;
566
+ width: max-content;
567
+ }
568
+
569
+ .workbench-mission-control__layout-dock-button {
570
+ color: var(--text-primary);
571
+ }
572
+
573
+ .workbench-mission-control__layout-dock-button:disabled {
574
+ opacity: 0.42;
575
+ color: var(--text-disabled);
576
+ }
577
+
578
+ .workbench-mission-control__layout-hint {
579
+ min-height: 32px;
580
+ display: inline-flex;
581
+ align-items: center;
582
+ padding: 0 8px;
583
+ color: var(--text-secondary);
584
+ font-size: 14px;
585
+ line-height: 20px;
586
+ white-space: nowrap;
587
+ }
588
+
589
+ .workbench-mission-control__layout-glyph {
590
+ width: 20px;
591
+ height: 20px;
592
+ display: block;
593
+ }
594
+
595
+ .workbench-dock-frame[data-immersive-state="hidden"] {
596
+ opacity: 0;
597
+ transform: translateY(calc(100% + 8px));
598
+ pointer-events: none;
599
+ transition:
600
+ opacity 0.18s ease,
601
+ transform 0.24s cubic-bezier(0.4, 0, 0.2, 1);
602
+ }
603
+
604
+ .workbench-dock-frame[data-dock-placement="left"][data-immersive-state="hidden"] {
605
+ transform: translateX(calc(-100% - 8px));
606
+ }
607
+
608
+ .workbench-dock-frame__immersive-hover-zone:hover
609
+ + .workbench-dock-frame[data-immersive-state="hidden"],
610
+ .workbench-dock-frame[data-immersive-state="hidden"]:hover,
611
+ .workbench-dock-frame[data-immersive-state="hidden"]:focus-within {
612
+ opacity: 1;
613
+ transform: translateY(0);
614
+ pointer-events: auto;
615
+ }
616
+
617
+ .workbench-dock-frame__immersive-hover-zone {
618
+ position: absolute;
619
+ bottom: 0;
620
+ left: 50%;
621
+ z-index: var(--workbench-z-dock-hover-zone);
622
+ width: min(920px, calc(100vw - 48px));
623
+ height: 12px;
624
+ pointer-events: auto;
625
+ transform: translateX(-50%);
626
+ }
627
+
628
+ .workbench-dock-frame__immersive-hover-zone[data-dock-placement="left"] {
629
+ top: 50%;
630
+ bottom: auto;
631
+ left: 0;
632
+ width: 12px;
633
+ height: min(720px, calc(100vh - 48px));
634
+ transform: translateY(-50%);
635
+ }
636
+
637
+ .workbench-dock-frame > * {
638
+ pointer-events: none;
639
+ }
640
+
641
+ .desktop-dock-plate {
642
+ --desktop-dock-size: 43.2px;
643
+ --desktop-dock-icon-half-size: 21.6px;
644
+ --desktop-dock-gap: 16px;
645
+ --desktop-dock-items-padding: 6.3px;
646
+ --desktop-dock-left-items-padding-block: 8px;
647
+ --desktop-dock-left-indicator-gutter: 8px;
648
+ --desktop-dock-items-padding-block-end: 8px;
649
+ --desktop-dock-icon-center-block-end: calc(
650
+ var(--desktop-dock-items-padding-block-end) +
651
+ var(--desktop-dock-icon-half-size)
652
+ );
653
+ --desktop-dock-plate-padding-block-end: 0px;
654
+ --desktop-dock-plate-padding-block-start: 21.6px;
655
+ --desktop-dock-plate-padding-inline-start: 4.5px;
656
+ --desktop-dock-plate-padding-inline-end: 10.8px;
657
+ --desktop-dock-separator-length: 28.8px;
658
+ --desktop-dock-separator-center-offset: calc(
659
+ var(--desktop-dock-icon-half-size) - var(--desktop-dock-separator-length) /
660
+ 2
661
+ );
662
+ --desktop-dock-indicator-offset: -5.4px;
663
+ --desktop-dock-left-viewport-size: 104px;
664
+ --desktop-dock-safe-inline: 64px;
665
+ --desktop-dock-viewport-size: 88px;
666
+ position: relative;
667
+ box-sizing: border-box;
668
+ display: inline-flex;
669
+ width: var(--desktop-dock-frame-size, auto);
670
+ max-width: calc(100vw - var(--desktop-dock-safe-inline) * 2);
671
+ align-items: center;
672
+ justify-content: center;
673
+ column-gap: 9px;
674
+ padding: var(--desktop-dock-plate-padding-block-start)
675
+ var(--desktop-dock-plate-padding-inline-end)
676
+ var(--desktop-dock-plate-padding-block-end)
677
+ var(--desktop-dock-plate-padding-inline-start);
678
+ border: 0;
679
+ border-radius: 14px;
680
+ background: transparent;
681
+ box-shadow: none;
682
+ overflow: visible;
683
+ pointer-events: auto;
684
+ transition: width 220ms cubic-bezier(0.22, 1, 0.36, 1);
685
+ -webkit-app-region: no-drag;
686
+ }
687
+
688
+ [data-dock-placement="left"] > .desktop-dock-plate,
689
+ .desktop-dock-plate:has(.desktop-dock[data-dock-placement="left"]) {
690
+ width: auto;
691
+ height: var(--desktop-dock-frame-size, auto);
692
+ max-width: none;
693
+ max-height: calc(100vh - 48px);
694
+ padding: var(--desktop-dock-plate-padding-inline-start)
695
+ var(--desktop-dock-plate-padding-inline-end)
696
+ var(--desktop-dock-plate-padding-inline-start)
697
+ var(--desktop-dock-plate-padding-inline-end);
698
+ transition: height 220ms cubic-bezier(0.22, 1, 0.36, 1);
699
+ }
700
+
701
+ .desktop-dock {
702
+ --desktop-dock-floating-bg: var(--workbench-window-bg);
703
+ --desktop-dock-floating-shadow: var(--workbench-window-shadow);
704
+ --desktop-dock-scroll-button-size: 28px;
705
+ --desktop-dock-scroll-button-gap: 32px;
706
+ --desktop-dock-scroll-button-z-index: 120;
707
+ --desktop-dock-scroll-fade-size: 48px;
708
+ --desktop-dock-tooltip-gap: 32px;
709
+ position: relative;
710
+ z-index: 1;
711
+ display: block;
712
+ max-width: calc(100vw - var(--desktop-dock-safe-inline) * 2);
713
+ height: var(--desktop-dock-viewport-size);
714
+ min-height: var(--desktop-dock-viewport-size);
715
+ overflow: visible;
716
+ border: 0;
717
+ border-radius: 0;
718
+ background: transparent;
719
+ box-shadow: none;
720
+ line-height: 0;
721
+ pointer-events: auto;
722
+ transition: width 600ms cubic-bezier(0.16, 1, 0.3, 1);
723
+ -webkit-app-region: no-drag;
724
+ }
725
+
726
+ .desktop-dock[data-dock-placement="left"] {
727
+ width: var(--desktop-dock-left-viewport-size);
728
+ min-width: var(--desktop-dock-left-viewport-size);
729
+ max-width: none;
730
+ max-height: calc(
731
+ 100vh - var(--workbench-left-dock-top-inset) -
732
+ var(--workbench-left-dock-bottom-inset)
733
+ );
734
+ height: auto;
735
+ min-height: 0;
736
+ transition: height 600ms cubic-bezier(0.16, 1, 0.3, 1);
737
+ }
738
+
739
+ .desktop-dock[data-dock-pointer-active="true"] {
740
+ transition: none;
741
+ }
742
+
743
+ .desktop-dock-plate:has(.desktop-dock[data-dock-pointer-active="true"]) {
744
+ transition: none;
745
+ }
746
+
747
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__items {
748
+ -webkit-mask-image: none;
749
+ mask-image: none;
750
+ }
751
+
752
+ .desktop-dock[data-dock-pointer-active="true"]
753
+ [data-radix-popper-content-wrapper] {
754
+ display: none !important;
755
+ }
756
+
757
+ .desktop-dock[data-dock-pointer-active="true"]:not(
758
+ [data-dock-hover-panel-open="true"]
759
+ )
760
+ .desktop-dock__hover-panel {
761
+ visibility: hidden;
762
+ pointer-events: none;
763
+ }
764
+
765
+ .desktop-dock[data-dock-hover-panel-open="true"] .desktop-dock__items {
766
+ -webkit-mask-image: none;
767
+ mask-image: none;
768
+ }
769
+
770
+ .desktop-dock__items {
771
+ display: flex;
772
+ box-sizing: border-box;
773
+ width: 100%;
774
+ height: var(--desktop-dock-viewport-size);
775
+ align-items: flex-end;
776
+ justify-content: center;
777
+ gap: var(--desktop-dock-gap);
778
+ overflow: visible;
779
+ padding: 0 var(--desktop-dock-items-padding)
780
+ var(--desktop-dock-items-padding-block-end);
781
+ scroll-behavior: smooth;
782
+ scrollbar-width: none;
783
+ }
784
+
785
+ .desktop-dock__items::-webkit-scrollbar {
786
+ display: none;
787
+ }
788
+
789
+ .desktop-dock[data-scroll-overflow="true"] .desktop-dock__items {
790
+ justify-content: flex-start;
791
+ overflow-x: auto;
792
+ overflow-y: hidden;
793
+ padding-right: calc(
794
+ var(--desktop-dock-scroll-button-size) +
795
+ var(--desktop-dock-scroll-button-gap)
796
+ );
797
+ padding-left: calc(
798
+ var(--desktop-dock-scroll-button-size) +
799
+ var(--desktop-dock-scroll-button-gap)
800
+ );
801
+ }
802
+
803
+ .desktop-dock[data-scroll-backward="true"] .desktop-dock__items {
804
+ -webkit-mask-image: linear-gradient(
805
+ to right,
806
+ transparent 0,
807
+ #000 var(--desktop-dock-scroll-fade-size),
808
+ #000 100%
809
+ );
810
+ mask-image: linear-gradient(
811
+ to right,
812
+ transparent 0,
813
+ #000 var(--desktop-dock-scroll-fade-size),
814
+ #000 100%
815
+ );
816
+ }
817
+
818
+ .desktop-dock[data-scroll-forward="true"] .desktop-dock__items {
819
+ -webkit-mask-image: linear-gradient(
820
+ to right,
821
+ #000 0,
822
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
823
+ transparent 100%
824
+ );
825
+ mask-image: linear-gradient(
826
+ to right,
827
+ #000 0,
828
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
829
+ transparent 100%
830
+ );
831
+ }
832
+
833
+ .desktop-dock[data-scroll-backward="true"][data-scroll-forward="true"]
834
+ .desktop-dock__items {
835
+ -webkit-mask-image: linear-gradient(
836
+ to right,
837
+ transparent 0,
838
+ #000 var(--desktop-dock-scroll-fade-size),
839
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
840
+ transparent 100%
841
+ );
842
+ mask-image: linear-gradient(
843
+ to right,
844
+ transparent 0,
845
+ #000 var(--desktop-dock-scroll-fade-size),
846
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
847
+ transparent 100%
848
+ );
849
+ }
850
+
851
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__items {
852
+ width: var(--desktop-dock-left-viewport-size);
853
+ height: 100%;
854
+ align-items: flex-start;
855
+ flex-direction: column;
856
+ padding: var(--desktop-dock-left-items-padding-block) 0
857
+ var(--desktop-dock-left-items-padding-block)
858
+ var(--desktop-dock-left-indicator-gutter);
859
+ }
860
+
861
+ .desktop-dock[data-dock-placement="left"][data-scroll-overflow="true"]
862
+ .desktop-dock__items {
863
+ justify-content: flex-start;
864
+ overflow-x: visible;
865
+ overflow-y: auto;
866
+ padding-top: calc(
867
+ var(--desktop-dock-scroll-button-size) +
868
+ var(--desktop-dock-scroll-button-gap)
869
+ );
870
+ padding-bottom: calc(
871
+ var(--desktop-dock-scroll-button-size) +
872
+ var(--desktop-dock-scroll-button-gap)
873
+ );
874
+ }
875
+
876
+ .desktop-dock[data-dock-placement="left"][data-scroll-backward="true"]
877
+ .desktop-dock__items {
878
+ -webkit-mask-image: linear-gradient(
879
+ to bottom,
880
+ transparent 0,
881
+ #000 var(--desktop-dock-scroll-fade-size),
882
+ #000 100%
883
+ );
884
+ mask-image: linear-gradient(
885
+ to bottom,
886
+ transparent 0,
887
+ #000 var(--desktop-dock-scroll-fade-size),
888
+ #000 100%
889
+ );
890
+ }
891
+
892
+ .desktop-dock[data-dock-placement="left"][data-scroll-forward="true"]
893
+ .desktop-dock__items {
894
+ -webkit-mask-image: linear-gradient(
895
+ to bottom,
896
+ #000 0,
897
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
898
+ transparent 100%
899
+ );
900
+ mask-image: linear-gradient(
901
+ to bottom,
902
+ #000 0,
903
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
904
+ transparent 100%
905
+ );
906
+ }
907
+
908
+ .desktop-dock[data-dock-placement="left"][data-scroll-backward="true"][data-scroll-forward="true"]
909
+ .desktop-dock__items {
910
+ -webkit-mask-image: linear-gradient(
911
+ to bottom,
912
+ transparent 0,
913
+ #000 var(--desktop-dock-scroll-fade-size),
914
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
915
+ transparent 100%
916
+ );
917
+ mask-image: linear-gradient(
918
+ to bottom,
919
+ transparent 0,
920
+ #000 var(--desktop-dock-scroll-fade-size),
921
+ #000 calc(100% - var(--desktop-dock-scroll-fade-size)),
922
+ transparent 100%
923
+ );
924
+ }
925
+
926
+ .desktop-dock__scroll-button {
927
+ position: absolute;
928
+ z-index: var(--desktop-dock-scroll-button-z-index);
929
+ display: inline-flex;
930
+ width: var(--desktop-dock-scroll-button-size);
931
+ height: var(--desktop-dock-scroll-button-size);
932
+ align-items: center;
933
+ justify-content: center;
934
+ border: 1px solid color-mix(in srgb, var(--border-1) 76%, transparent);
935
+ border-radius: 999px;
936
+ background: var(--background-fronted);
937
+ box-shadow: 0 8px 18px rgb(0 0 0 / 0.18);
938
+ color: var(--text-primary);
939
+ cursor: pointer;
940
+ opacity: 0;
941
+ pointer-events: none;
942
+ transform: translateY(-50%) scale(0.94);
943
+ transition:
944
+ opacity 0.14s ease,
945
+ transform 0.14s ease,
946
+ background 0.14s ease;
947
+ -webkit-app-region: no-drag;
948
+ }
949
+
950
+ .desktop-dock[data-scroll-overflow="true"]:hover
951
+ .desktop-dock__scroll-button:not(:disabled),
952
+ .desktop-dock[data-scroll-overflow="true"]:focus-within
953
+ .desktop-dock__scroll-button:not(:disabled) {
954
+ opacity: 1;
955
+ pointer-events: auto;
956
+ transform: translateY(-50%) scale(1);
957
+ }
958
+
959
+ .desktop-dock__scroll-button:hover {
960
+ background: color-mix(in srgb, var(--background-fronted) 96%, white 8%);
961
+ }
962
+
963
+ .desktop-dock__scroll-button:active {
964
+ transform: translateY(-50%) scale(0.96);
965
+ }
966
+
967
+ .desktop-dock__scroll-button:focus-visible {
968
+ outline: 2px solid var(--workbench-focused-border);
969
+ outline-offset: 2px;
970
+ }
971
+
972
+ .desktop-dock__scroll-button:disabled {
973
+ cursor: default;
974
+ opacity: 0;
975
+ pointer-events: none;
976
+ }
977
+
978
+ .desktop-dock__scroll-button--backward {
979
+ top: calc(100% - var(--desktop-dock-icon-center-block-end));
980
+ left: 0;
981
+ }
982
+
983
+ .desktop-dock__scroll-button--forward {
984
+ top: calc(100% - var(--desktop-dock-icon-center-block-end));
985
+ right: 0;
986
+ }
987
+
988
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__scroll-button {
989
+ left: calc(
990
+ var(--desktop-dock-left-indicator-gutter) +
991
+ var(--desktop-dock-icon-half-size)
992
+ );
993
+ transform: translateX(-50%) scale(0.94);
994
+ }
995
+
996
+ .desktop-dock[data-dock-placement="left"][data-scroll-overflow="true"]:hover
997
+ .desktop-dock__scroll-button,
998
+ .desktop-dock[data-dock-placement="left"][data-scroll-overflow="true"]:focus-within
999
+ .desktop-dock__scroll-button {
1000
+ transform: translateX(-50%) scale(1);
1001
+ }
1002
+
1003
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__scroll-button:active {
1004
+ transform: translateX(-50%) scale(0.96);
1005
+ }
1006
+
1007
+ .desktop-dock[data-dock-placement="left"]
1008
+ .desktop-dock__scroll-button--backward {
1009
+ top: 0;
1010
+ right: auto;
1011
+ }
1012
+
1013
+ .desktop-dock[data-dock-placement="left"]
1014
+ .desktop-dock__scroll-button--forward {
1015
+ right: auto;
1016
+ bottom: 0;
1017
+ top: auto;
1018
+ }
1019
+
1020
+ .desktop-dock__pointer-rail {
1021
+ position: absolute;
1022
+ inset: -6px 0 0;
1023
+ z-index: 0;
1024
+ pointer-events: none;
1025
+ -webkit-app-region: no-drag;
1026
+ }
1027
+
1028
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__pointer-rail {
1029
+ inset: 0 0 0 -6px;
1030
+ }
1031
+
1032
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__slot,
1033
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__separator {
1034
+ pointer-events: none;
1035
+ transition: none;
1036
+ }
1037
+
1038
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__icon-shell,
1039
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__minimized-preview,
1040
+ .desktop-dock[data-dock-pointer-active="true"]
1041
+ .desktop-dock__minimized-stack-icon {
1042
+ will-change: transform;
1043
+ }
1044
+
1045
+ .desktop-dock[data-dock-pointer-active="true"]
1046
+ .desktop-dock__icon-shell[data-entry-state="loading"]::after {
1047
+ animation-play-state: paused;
1048
+ }
1049
+
1050
+ .desktop-dock[data-dock-pointer-active="true"]
1051
+ .desktop-dock__btn[data-interactive="true"],
1052
+ .desktop-dock[data-dock-pointer-active="true"]
1053
+ .desktop-dock__scroll-button:not(:disabled) {
1054
+ pointer-events: auto;
1055
+ }
1056
+
1057
+ .desktop-dock__slot {
1058
+ position: relative;
1059
+ z-index: var(--desktop-dock-slot-z-index, 1);
1060
+ display: inline-flex;
1061
+ flex: 0 0 auto;
1062
+ width: var(--desktop-dock-size);
1063
+ height: var(--desktop-dock-size);
1064
+ align-items: flex-end;
1065
+ justify-content: center;
1066
+ overflow: visible;
1067
+ line-height: 0;
1068
+ }
1069
+
1070
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__slot {
1071
+ align-items: center;
1072
+ justify-content: flex-start;
1073
+ }
1074
+
1075
+ .desktop-dock__slot[data-presence="entering"],
1076
+ .desktop-dock__separator[data-presence="entering"] {
1077
+ animation: desktop-dock-presence-enter 300ms cubic-bezier(0.16, 1, 0.3, 1)
1078
+ both;
1079
+ }
1080
+
1081
+ .desktop-dock__slot--minimized[data-presence="entering"] {
1082
+ min-width: 0;
1083
+ animation: desktop-dock-minimized-slot-expand 360ms
1084
+ cubic-bezier(0.16, 1, 0.3, 1) both;
1085
+ }
1086
+
1087
+ .desktop-dock[data-dock-placement="left"]
1088
+ .desktop-dock__slot--minimized[data-presence="entering"] {
1089
+ min-height: 0;
1090
+ animation-name: desktop-dock-minimized-slot-expand-left;
1091
+ }
1092
+
1093
+ .desktop-dock__slot--minimized[data-presence="entering"]
1094
+ .desktop-dock__minimized-preview,
1095
+ .desktop-dock__slot--minimized[data-presence="entering"]
1096
+ .desktop-dock__minimized-stack-icon {
1097
+ animation: desktop-dock-minimized-icon-appear 320ms
1098
+ cubic-bezier(0.16, 1, 0.3, 1) both;
1099
+ }
1100
+
1101
+ .desktop-dock[data-dock-placement="left"]
1102
+ .desktop-dock__slot--minimized[data-presence="entering"]
1103
+ .desktop-dock__minimized-preview,
1104
+ .desktop-dock[data-dock-placement="left"]
1105
+ .desktop-dock__slot--minimized[data-presence="entering"]
1106
+ .desktop-dock__minimized-stack-icon {
1107
+ animation-name: desktop-dock-minimized-icon-appear-left;
1108
+ }
1109
+
1110
+ .desktop-dock__slot[data-presence="exiting"],
1111
+ .desktop-dock__separator[data-presence="exiting"] {
1112
+ animation: desktop-dock-presence-exit 300ms cubic-bezier(0.7, 0, 0.84, 0) both;
1113
+ pointer-events: none;
1114
+ }
1115
+
1116
+ .desktop-dock__slot--minimized[data-collapsing="true"],
1117
+ .desktop-dock__slot--minimized[data-presence="exiting"] {
1118
+ min-width: 0;
1119
+ animation: desktop-dock-minimized-slot-collapse 360ms
1120
+ cubic-bezier(0.4, 0, 0.2, 1) both;
1121
+ pointer-events: none;
1122
+ }
1123
+
1124
+ .desktop-dock[data-dock-placement="left"]
1125
+ .desktop-dock__slot--minimized[data-collapsing="true"],
1126
+ .desktop-dock[data-dock-placement="left"]
1127
+ .desktop-dock__slot--minimized[data-presence="exiting"] {
1128
+ min-height: 0;
1129
+ animation-name: desktop-dock-minimized-slot-collapse-left;
1130
+ }
1131
+
1132
+ .desktop-dock__slot--minimized[data-collapsing="true"]::before,
1133
+ .desktop-dock__slot--minimized[data-presence="exiting"]::before {
1134
+ opacity: 0;
1135
+ }
1136
+
1137
+ .desktop-dock__slot--minimized[data-collapsing="true"]
1138
+ .desktop-dock__minimized-preview,
1139
+ .desktop-dock__slot--minimized[data-collapsing="true"]
1140
+ .desktop-dock__minimized-stack-icon,
1141
+ .desktop-dock__slot--minimized[data-presence="exiting"]
1142
+ .desktop-dock__minimized-preview,
1143
+ .desktop-dock__slot--minimized[data-presence="exiting"]
1144
+ .desktop-dock__minimized-stack-icon {
1145
+ animation: desktop-dock-minimized-icon-disappear 320ms
1146
+ cubic-bezier(0.4, 0, 0.2, 1) both;
1147
+ }
1148
+
1149
+ .desktop-dock[data-dock-placement="left"]
1150
+ .desktop-dock__slot--minimized[data-collapsing="true"]
1151
+ .desktop-dock__minimized-preview,
1152
+ .desktop-dock[data-dock-placement="left"]
1153
+ .desktop-dock__slot--minimized[data-collapsing="true"]
1154
+ .desktop-dock__minimized-stack-icon,
1155
+ .desktop-dock[data-dock-placement="left"]
1156
+ .desktop-dock__slot--minimized[data-presence="exiting"]
1157
+ .desktop-dock__minimized-preview,
1158
+ .desktop-dock[data-dock-placement="left"]
1159
+ .desktop-dock__slot--minimized[data-presence="exiting"]
1160
+ .desktop-dock__minimized-stack-icon {
1161
+ animation-name: desktop-dock-minimized-icon-disappear-left;
1162
+ }
1163
+
1164
+ .desktop-dock__separator {
1165
+ flex: 0 0 auto;
1166
+ width: 1px;
1167
+ height: var(--desktop-dock-separator-length);
1168
+ margin: 0 4px var(--desktop-dock-separator-center-offset);
1169
+ align-self: flex-end;
1170
+ border-radius: 999px;
1171
+ background: var(--line-1);
1172
+ }
1173
+
1174
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__separator {
1175
+ width: var(--desktop-dock-separator-length);
1176
+ height: 1px;
1177
+ align-self: flex-start;
1178
+ margin: 4px 0 4px var(--desktop-dock-separator-center-offset);
1179
+ }
1180
+
1181
+ .desktop-dock__slot[data-node-state="open"]::before,
1182
+ .desktop-dock__slot[data-node-state="minimized"]::before {
1183
+ position: absolute;
1184
+ bottom: var(--desktop-dock-indicator-offset);
1185
+ left: 50%;
1186
+ width: 4px;
1187
+ height: 4px;
1188
+ border-radius: 999px;
1189
+ background: var(--text-tertiary);
1190
+ content: "";
1191
+ transform: translateX(-50%);
1192
+ }
1193
+
1194
+ .desktop-dock[data-dock-placement="left"]
1195
+ .desktop-dock__slot[data-node-state="open"]::before,
1196
+ .desktop-dock[data-dock-placement="left"]
1197
+ .desktop-dock__slot[data-node-state="minimized"]::before {
1198
+ top: 50%;
1199
+ right: auto;
1200
+ bottom: auto;
1201
+ left: var(--desktop-dock-indicator-offset);
1202
+ transform: translateY(-50%);
1203
+ }
1204
+
1205
+ .desktop-dock__slot[data-node-state="minimized"]::before {
1206
+ background: var(--text-tertiary);
1207
+ }
1208
+
1209
+ .desktop-dock__btn {
1210
+ display: inline-flex;
1211
+ margin: 0;
1212
+ padding: 0;
1213
+ align-items: center;
1214
+ justify-content: center;
1215
+ border: 0;
1216
+ border-radius: 12px;
1217
+ background: transparent;
1218
+ cursor: pointer;
1219
+ line-height: 0;
1220
+ transition: transform 0.12s ease-out;
1221
+ -webkit-app-region: no-drag;
1222
+ will-change: transform;
1223
+ }
1224
+
1225
+ .desktop-dock__btn[data-interactive="true"]:hover {
1226
+ background: transparent;
1227
+ }
1228
+
1229
+ .desktop-dock:not([data-dock-pointer-active="true"])
1230
+ .desktop-dock__btn[data-interactive="true"]:hover {
1231
+ transform: scale(1.03);
1232
+ }
1233
+
1234
+ .desktop-dock:not([data-dock-pointer-active="true"])
1235
+ .desktop-dock__btn[data-interactive="true"]:active {
1236
+ background: transparent;
1237
+ transform: translateY(-1px) scale(0.99);
1238
+ }
1239
+
1240
+ .desktop-dock[data-dock-placement="left"]:not([data-dock-pointer-active="true"])
1241
+ .desktop-dock__btn[data-interactive="true"]:active {
1242
+ transform: translateX(1px) scale(0.99);
1243
+ }
1244
+
1245
+ .desktop-dock[data-dock-pointer-active="true"] .desktop-dock__btn {
1246
+ transition: none;
1247
+ }
1248
+
1249
+ .desktop-dock__btn:focus-visible {
1250
+ outline: 2px solid var(--workbench-focused-border);
1251
+ outline-offset: 2px;
1252
+ }
1253
+
1254
+ .desktop-dock__btn[aria-disabled="true"] {
1255
+ cursor: default;
1256
+ }
1257
+
1258
+ .desktop-dock__icon-shell {
1259
+ position: relative;
1260
+ box-sizing: border-box;
1261
+ display: inline-flex;
1262
+ width: var(--desktop-dock-size);
1263
+ height: var(--desktop-dock-size);
1264
+ align-items: center;
1265
+ justify-content: center;
1266
+ padding: 0;
1267
+ transform-origin: center bottom;
1268
+ will-change: transform;
1269
+ }
1270
+
1271
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__icon-shell {
1272
+ transform-origin: left center;
1273
+ }
1274
+
1275
+ .desktop-dock__slot[data-entry-state="disabled"] .desktop-dock__icon-shell,
1276
+ .desktop-dock__slot[data-entry-state="unavailable"] .desktop-dock__icon-shell {
1277
+ opacity: 0.55;
1278
+ filter: grayscale(0.5);
1279
+ }
1280
+
1281
+ .desktop-dock__icon-shell[data-entry-state="loading"]::before,
1282
+ .desktop-dock__count-badge {
1283
+ position: absolute;
1284
+ right: -3.6px;
1285
+ bottom: -3.6px;
1286
+ display: inline-flex;
1287
+ min-width: 16.2px;
1288
+ height: 16.2px;
1289
+ align-items: center;
1290
+ justify-content: center;
1291
+ padding: 0 4.5px;
1292
+ border: 1px solid color-mix(in srgb, var(--workbench-panel) 72%, white);
1293
+ border-radius: 999px;
1294
+ background: var(--workbench-foreground);
1295
+ box-shadow: 0 1px 4px rgb(0 0 0 / 0.2);
1296
+ }
1297
+
1298
+ .desktop-dock__icon-shell[data-entry-state="loading"]::before {
1299
+ box-sizing: border-box;
1300
+ width: 16.2px;
1301
+ min-width: 0;
1302
+ padding: 0;
1303
+ content: "";
1304
+ z-index: 1;
1305
+ }
1306
+
1307
+ .desktop-dock__icon-content {
1308
+ display: inline-flex;
1309
+ width: 100%;
1310
+ height: 100%;
1311
+ align-items: center;
1312
+ justify-content: center;
1313
+ overflow: visible;
1314
+ border-radius: 10px;
1315
+ }
1316
+
1317
+ .desktop-dock__slot[data-icon-size="large"] .desktop-dock__icon-content {
1318
+ width: 39.6px;
1319
+ height: 39.6px;
1320
+ }
1321
+
1322
+ .desktop-dock__icon-content > * {
1323
+ flex: 0 0 auto;
1324
+ user-select: none;
1325
+ }
1326
+
1327
+ .desktop-dock__icon-content > img,
1328
+ .desktop-dock__icon-content > svg,
1329
+ .desktop-dock__icon-content > canvas,
1330
+ .desktop-dock__icon-content > video {
1331
+ display: block;
1332
+ width: 100%;
1333
+ height: 100%;
1334
+ max-width: none;
1335
+ max-height: none;
1336
+ background: none;
1337
+ object-fit: contain;
1338
+ object-position: center;
1339
+ }
1340
+
1341
+ .desktop-dock__icon-shell[data-entry-state="loading"]::after {
1342
+ position: absolute;
1343
+ right: 0;
1344
+ bottom: 0;
1345
+ box-sizing: border-box;
1346
+ width: 9px;
1347
+ height: 9px;
1348
+ border: 1.8px solid color-mix(in srgb, var(--text-inverted) 36%, transparent);
1349
+ border-top-color: var(--text-inverted);
1350
+ border-radius: 999px;
1351
+ animation: desktop-dock-spin 0.85s linear infinite;
1352
+ background: transparent;
1353
+ content: "";
1354
+ z-index: 2;
1355
+ }
1356
+
1357
+ .desktop-dock__count-badge {
1358
+ color: var(--workbench-panel);
1359
+ font-size: 10px;
1360
+ font-weight: 700;
1361
+ line-height: 1;
1362
+ }
1363
+
1364
+ .desktop-dock__custom-badge {
1365
+ position: absolute;
1366
+ right: -3.6px;
1367
+ bottom: -3.6px;
1368
+ display: inline-flex;
1369
+ align-items: center;
1370
+ justify-content: center;
1371
+ line-height: 0;
1372
+ }
1373
+
1374
+ .desktop-dock__status-badge {
1375
+ position: absolute;
1376
+ right: -1.8px;
1377
+ bottom: -1.8px;
1378
+ width: 10.8px;
1379
+ height: 10.8px;
1380
+ border: 1.8px solid color-mix(in srgb, var(--workbench-panel) 82%, white);
1381
+ border-radius: 999px;
1382
+ box-shadow: 0 1px 4px rgb(0 0 0 / 0.18);
1383
+ }
1384
+
1385
+ .desktop-dock__status-badge[data-status="running"] {
1386
+ background: var(--workbench-focused-border);
1387
+ }
1388
+
1389
+ .desktop-dock__status-badge[data-status="completed"] {
1390
+ background: var(--workbench-success, #32a852);
1391
+ }
1392
+
1393
+ .desktop-dock__status-badge[data-status="failed"] {
1394
+ background: var(--workbench-destructive, #d94a56);
1395
+ }
1396
+
1397
+ .desktop-dock__status-badge[data-status="warning"] {
1398
+ background: var(--workbench-warning, #d9a441);
1399
+ }
1400
+
1401
+ .desktop-dock__status-badge[data-status="custom"] {
1402
+ background: var(--workbench-foreground);
1403
+ }
1404
+
1405
+ .desktop-dock__slot[data-attention-active="true"] .desktop-dock__icon-shell {
1406
+ animation: desktop-dock-bounce-translate 0.6s ease;
1407
+ }
1408
+
1409
+ .desktop-dock__slot[data-bouncing="true"] .desktop-dock__icon-shell,
1410
+ .desktop-dock__slot[data-bouncing="true"] .desktop-dock__minimized-preview,
1411
+ .desktop-dock__slot[data-bouncing="true"] .desktop-dock__minimized-stack-icon {
1412
+ animation: desktop-dock-bounce-translate 0.6s ease;
1413
+ }
1414
+
1415
+ .desktop-dock[data-dock-placement="left"]
1416
+ .desktop-dock__slot[data-bouncing="true"]
1417
+ .desktop-dock__icon-shell,
1418
+ .desktop-dock[data-dock-placement="left"]
1419
+ .desktop-dock__slot[data-bouncing="true"]
1420
+ .desktop-dock__minimized-preview,
1421
+ .desktop-dock[data-dock-placement="left"]
1422
+ .desktop-dock__slot[data-bouncing="true"]
1423
+ .desktop-dock__minimized-stack-icon {
1424
+ animation-name: desktop-dock-bounce-translate-left;
1425
+ }
1426
+
1427
+ .desktop-dock__minimized-btn {
1428
+ position: relative;
1429
+ width: var(--desktop-dock-size);
1430
+ height: var(--desktop-dock-size);
1431
+ overflow: visible;
1432
+ }
1433
+
1434
+ .desktop-dock__minimized-preview {
1435
+ position: relative;
1436
+ box-sizing: border-box;
1437
+ display: flex;
1438
+ width: 46.8px;
1439
+ height: 34.2px;
1440
+ flex-direction: column;
1441
+ justify-content: center;
1442
+ gap: 3.6px;
1443
+ padding: 6.3px 7.2px;
1444
+ overflow: hidden;
1445
+ border: 1px solid var(--line-2);
1446
+ border-radius: 6px;
1447
+ background: var(--background-fronted);
1448
+ box-shadow: none;
1449
+ transform-origin: center bottom;
1450
+ will-change: transform;
1451
+ }
1452
+
1453
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__minimized-preview {
1454
+ transform-origin: left center;
1455
+ }
1456
+
1457
+ .desktop-dock__minimized-preview-image {
1458
+ display: block;
1459
+ width: 100%;
1460
+ height: 100%;
1461
+ object-fit: cover;
1462
+ object-position: center;
1463
+ }
1464
+
1465
+ .desktop-dock__minimized-preview--snapshot {
1466
+ display: block;
1467
+ padding: 0;
1468
+ background: color-mix(in srgb, var(--background-panel) 70%, black 4%);
1469
+ }
1470
+
1471
+ .desktop-dock__minimized-preview-line {
1472
+ display: block;
1473
+ width: 74%;
1474
+ height: 3.6px;
1475
+ border-radius: 3.6px;
1476
+ background: var(--transparency-hover);
1477
+ }
1478
+
1479
+ .desktop-dock__minimized-preview-line--short {
1480
+ width: 56%;
1481
+ }
1482
+
1483
+ .desktop-dock__minimized-preview-line--accent {
1484
+ width: 34%;
1485
+ background: color-mix(
1486
+ in srgb,
1487
+ var(--workbench-focused-border) 34%,
1488
+ var(--transparency-hover)
1489
+ );
1490
+ }
1491
+
1492
+ .desktop-dock__minimized-stack-icon {
1493
+ position: relative;
1494
+ display: inline-flex;
1495
+ width: var(--desktop-dock-size);
1496
+ height: var(--desktop-dock-size);
1497
+ align-items: center;
1498
+ justify-content: center;
1499
+ overflow: visible;
1500
+ }
1501
+
1502
+ .desktop-dock__minimized-stack-layer {
1503
+ position: absolute;
1504
+ top: 4.5px;
1505
+ left: 1.8px;
1506
+ width: 46.8px;
1507
+ height: 34.2px;
1508
+ transform: translate(
1509
+ var(--desktop-dock-stack-layer-x, 0),
1510
+ var(--desktop-dock-stack-layer-y, 0)
1511
+ )
1512
+ scale(var(--desktop-dock-stack-layer-scale, 1))
1513
+ rotate(var(--desktop-dock-stack-layer-rotate, 0deg));
1514
+ transform-origin: center bottom;
1515
+ z-index: var(--desktop-dock-stack-layer-z, 1);
1516
+ }
1517
+
1518
+ .desktop-dock[data-dock-placement="left"] .desktop-dock__minimized-stack-layer {
1519
+ transform: translate(
1520
+ var(--desktop-dock-stack-layer-x, 0),
1521
+ var(--desktop-dock-stack-layer-y, 0)
1522
+ )
1523
+ scale(var(--desktop-dock-stack-layer-scale, 1))
1524
+ rotate(var(--desktop-dock-stack-layer-rotate, 0deg));
1525
+ transform-origin: left center;
1526
+ }
1527
+
1528
+ .desktop-dock__minimized-stack-layer--0 {
1529
+ --desktop-dock-stack-layer-z: 3;
1530
+ }
1531
+
1532
+ .desktop-dock__minimized-stack-layer--1 {
1533
+ --desktop-dock-stack-layer-z: 2;
1534
+ }
1535
+
1536
+ .desktop-dock__minimized-stack-layer--2 {
1537
+ --desktop-dock-stack-layer-z: 1;
1538
+ }
1539
+
1540
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1541
+ .desktop-dock__minimized-stack-layer--0 {
1542
+ --desktop-dock-stack-layer-x: 0px;
1543
+ --desktop-dock-stack-layer-y: 0px;
1544
+ --desktop-dock-stack-layer-rotate: 0deg;
1545
+ --desktop-dock-stack-layer-scale: 1;
1546
+ }
1547
+
1548
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1549
+ .desktop-dock__minimized-stack-layer--1 {
1550
+ --desktop-dock-stack-layer-x: -9px;
1551
+ --desktop-dock-stack-layer-y: -10px;
1552
+ --desktop-dock-stack-layer-rotate: 0deg;
1553
+ --desktop-dock-stack-layer-scale: 0.95;
1554
+ }
1555
+
1556
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1557
+ .desktop-dock__minimized-stack-layer--2 {
1558
+ --desktop-dock-stack-layer-x: -18px;
1559
+ --desktop-dock-stack-layer-y: -20px;
1560
+ --desktop-dock-stack-layer-rotate: 0deg;
1561
+ --desktop-dock-stack-layer-scale: 0.9;
1562
+ }
1563
+
1564
+ .desktop-dock[data-dock-pointer-active="true"]
1565
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1566
+ .desktop-dock__minimized-stack-layer--0 {
1567
+ --desktop-dock-stack-layer-x: 0px;
1568
+ --desktop-dock-stack-layer-y: 1.8px;
1569
+ --desktop-dock-stack-layer-rotate: -3deg;
1570
+ --desktop-dock-stack-layer-scale: 1;
1571
+ }
1572
+
1573
+ .desktop-dock[data-dock-pointer-active="true"]
1574
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1575
+ .desktop-dock__minimized-stack-layer--1 {
1576
+ --desktop-dock-stack-layer-x: -3.6px;
1577
+ --desktop-dock-stack-layer-y: -0.9px;
1578
+ --desktop-dock-stack-layer-rotate: 5deg;
1579
+ --desktop-dock-stack-layer-scale: 1;
1580
+ }
1581
+
1582
+ .desktop-dock[data-dock-pointer-active="true"]
1583
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1584
+ .desktop-dock__minimized-stack-layer--2 {
1585
+ --desktop-dock-stack-layer-x: 3.6px;
1586
+ --desktop-dock-stack-layer-y: -3.6px;
1587
+ --desktop-dock-stack-layer-rotate: -8deg;
1588
+ --desktop-dock-stack-layer-scale: 1;
1589
+ }
1590
+
1591
+ .desktop-dock__minimized-stack-layer-back {
1592
+ display: block;
1593
+ padding: 0;
1594
+ gap: 0;
1595
+ background: color-mix(in srgb, hsl(var(--card)) 10%, black 90%);
1596
+ border: 1.5px solid color-mix(in srgb, var(--line-2) 40%, white 20%);
1597
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.28);
1598
+ }
1599
+
1600
+ .desktop-dock__minimized-stack-icon[data-stack-folded="true"]
1601
+ .desktop-dock__minimized-stack-layer--0.desktop-dock__minimized-preview {
1602
+ box-shadow: 0 2px 8px rgb(0 0 0 / 0.2);
1603
+ }
1604
+
1605
+ .desktop-dock__slot--minimized .desktop-dock__count-badge {
1606
+ right: -10.8px;
1607
+ z-index: 8;
1608
+ }
1609
+
1610
+ .desktop-dock__hover-panel {
1611
+ position: absolute;
1612
+ top: var(--desktop-dock-hover-panel-anchor-top);
1613
+ left: calc(
1614
+ var(--desktop-dock-hover-panel-anchor-left) +
1615
+ var(--desktop-dock-hover-panel-anchor-width) / 2
1616
+ );
1617
+ z-index: var(--workbench-z-dock-tooltip);
1618
+ display: flex;
1619
+ min-width: 168px;
1620
+ max-width: 240px;
1621
+ flex-direction: column;
1622
+ gap: 12px;
1623
+ padding: 10px;
1624
+ border: 1px solid var(--border-1);
1625
+ border-radius: 10px;
1626
+ background: var(--background-fronted);
1627
+ box-shadow: 0 16px 40px var(--shadow-elevated);
1628
+ color: var(--text-primary);
1629
+ opacity: 1;
1630
+ pointer-events: auto;
1631
+ transform: translateX(-50%)
1632
+ translateY(calc(-100% - var(--desktop-dock-tooltip-gap, 32px)));
1633
+ transition:
1634
+ opacity 0.12s ease,
1635
+ transform 0.12s ease;
1636
+ }
1637
+
1638
+ .desktop-dock__hover-panel[data-dock-placement="left"] {
1639
+ top: calc(
1640
+ var(--desktop-dock-hover-panel-anchor-top) +
1641
+ var(--desktop-dock-hover-panel-anchor-height) / 2
1642
+ );
1643
+ left: calc(
1644
+ var(--desktop-dock-hover-panel-anchor-left) +
1645
+ var(--desktop-dock-hover-panel-anchor-width) +
1646
+ var(--desktop-dock-tooltip-gap, 32px)
1647
+ );
1648
+ transform: translateY(-50%);
1649
+ }
1650
+
1651
+ .desktop-dock__hover-panel::before {
1652
+ position: absolute;
1653
+ right: 0;
1654
+ bottom: calc(-1 * var(--desktop-dock-tooltip-gap, 32px));
1655
+ left: 0;
1656
+ height: var(--desktop-dock-tooltip-gap, 32px);
1657
+ content: "";
1658
+ }
1659
+
1660
+ .desktop-dock__hover-panel[data-dock-placement="left"]::before {
1661
+ top: 0;
1662
+ right: auto;
1663
+ bottom: 0;
1664
+ left: calc(-1 * var(--desktop-dock-tooltip-gap, 32px));
1665
+ width: var(--desktop-dock-tooltip-gap, 32px);
1666
+ height: auto;
1667
+ }
1668
+
1669
+ .desktop-dock__hover-panel-title {
1670
+ color: var(--text-primary);
1671
+ font-size: 13px;
1672
+ font-weight: 700;
1673
+ line-height: 1.3;
1674
+ }
1675
+
1676
+ .desktop-dock__hover-panel-description {
1677
+ color: var(--text-secondary);
1678
+ font-size: 12px;
1679
+ line-height: 1.3;
1680
+ }
1681
+
1682
+ .desktop-dock__hover-actions {
1683
+ display: flex;
1684
+ flex-direction: column;
1685
+ gap: 6px;
1686
+ margin-top: 4px;
1687
+ }
1688
+
1689
+ .desktop-dock__hover-action {
1690
+ width: 100%;
1691
+ }
1692
+
1693
+ .desktop-dock-popup-root {
1694
+ position: fixed;
1695
+ z-index: var(--z-popover, 100200);
1696
+ pointer-events: auto;
1697
+ -webkit-app-region: no-drag;
1698
+ }
1699
+
1700
+ .desktop-dock-popup-root[data-dock-placement="bottom"] {
1701
+ transform: translate(-50%, -100%);
1702
+ }
1703
+
1704
+ .desktop-dock-popup-root[data-popup-variant="minimized-stack"] {
1705
+ translate: none;
1706
+ transform: translate(0, -100%);
1707
+ }
1708
+
1709
+ .desktop-dock-popup-root[data-dock-placement="left"] {
1710
+ transform: translate(0, -50%);
1711
+ }
1712
+
1713
+ .desktop-dock-popup-root[data-dock-placement="left"][data-popup-variant="minimized-stack"] {
1714
+ z-index: 100300;
1715
+ width: var(
1716
+ --desktop-dock-minimized-stack-width,
1717
+ min(540px, calc(100vw - 32px))
1718
+ );
1719
+ min-width: var(
1720
+ --desktop-dock-minimized-stack-width,
1721
+ min(540px, calc(100vw - 32px))
1722
+ );
1723
+ overflow: visible;
1724
+ pointer-events: none;
1725
+ transform: translate(0, -100%);
1726
+ }
1727
+
1728
+ body[data-desktop-dock-minimized-stack-open="true"] .workbench-dock-frame,
1729
+ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock-plate,
1730
+ body[data-desktop-dock-minimized-stack-open="true"] .desktop-dock {
1731
+ z-index: 0;
1732
+ }
1733
+
1734
+ .desktop-dock-popup-root[data-dock-placement="left"]
1735
+ .desktop-dock-popup[data-popup-variant="minimized-stack"] {
1736
+ width: 100%;
1737
+ min-width: 0;
1738
+ max-width: none;
1739
+ }
1740
+
1741
+ .desktop-dock-popup[data-popup-variant="minimized-stack"] {
1742
+ width: min(420px, calc(100vw - 32px));
1743
+ height: min(
1744
+ calc(var(--desktop-dock-popup-item-count, 1) * 78px + 96px),
1745
+ calc(100vh - 112px)
1746
+ );
1747
+ max-width: calc(100vw - 32px);
1748
+ padding: 0;
1749
+ overflow: visible;
1750
+ border: 0;
1751
+ background: transparent;
1752
+ box-shadow: none;
1753
+ pointer-events: none;
1754
+ }
1755
+
1756
+ .desktop-dock-popup[data-popup-variant="minimized-stack"] > div:first-child {
1757
+ display: none;
1758
+ }
1759
+
1760
+ .desktop-dock-popup[data-popup-variant="minimized-stack"] > div:nth-child(2) {
1761
+ position: relative;
1762
+ display: block;
1763
+ width: 100%;
1764
+ height: 100%;
1765
+ max-height: none;
1766
+ padding: 0;
1767
+ overflow: visible;
1768
+ }
1769
+
1770
+ .desktop-dock-popup__minimized-stack-track {
1771
+ position: relative;
1772
+ }
1773
+
1774
+ .desktop-dock-popup-root[data-dock-placement="left"]
1775
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1776
+ > div:nth-child(2) {
1777
+ overflow-x: visible;
1778
+ overflow-y: hidden;
1779
+ }
1780
+
1781
+ .desktop-dock-popup-root[data-dock-placement="left"]
1782
+ .desktop-dock-popup__minimized-stack-viewport {
1783
+ box-sizing: border-box;
1784
+ width: 100%;
1785
+ padding-left: var(--desktop-dock-minimized-stack-left-gutter, 4px);
1786
+ overflow-x: visible;
1787
+ overflow-y: hidden;
1788
+ pointer-events: auto;
1789
+ }
1790
+
1791
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1792
+ [data-desktop-dock-popup-card="true"] {
1793
+ position: absolute;
1794
+ bottom: 0;
1795
+ left: 0;
1796
+ width: min(118px, 28vw);
1797
+ height: auto;
1798
+ min-height: 0;
1799
+ aspect-ratio: 16 / 10;
1800
+ overflow: visible;
1801
+ border-width: 2px;
1802
+ border-radius: 12px;
1803
+ -webkit-backdrop-filter: blur(40px);
1804
+ backdrop-filter: blur(40px);
1805
+ box-shadow: none;
1806
+ pointer-events: auto;
1807
+ transform: translate(
1808
+ var(--desktop-dock-popup-fan-x, 0px),
1809
+ var(--desktop-dock-popup-fan-y, -18px)
1810
+ )
1811
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1812
+ scale(var(--desktop-dock-popup-card-scale, 1));
1813
+ transform-origin: left bottom;
1814
+ animation: desktop-dock-stack-card-fan-in-left 190ms
1815
+ cubic-bezier(0.16, 1, 0.3, 1) both;
1816
+ animation-delay: var(--desktop-dock-popup-fan-delay, 0ms);
1817
+ z-index: var(--desktop-dock-popup-card-z-index, 1);
1818
+ transition:
1819
+ opacity 120ms ease,
1820
+ scale 120ms cubic-bezier(0.4, 0, 1, 1),
1821
+ filter 120ms ease;
1822
+ }
1823
+
1824
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1825
+ [data-desktop-dock-popup-card="true"][data-launching="true"] {
1826
+ opacity: 0;
1827
+ scale: 0.94;
1828
+ filter: blur(0.4px);
1829
+ pointer-events: none;
1830
+ }
1831
+
1832
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1833
+ [data-desktop-dock-popup-card="true"]:hover {
1834
+ transform: translate(
1835
+ var(--desktop-dock-popup-fan-x, 0px),
1836
+ calc(
1837
+ var(--desktop-dock-popup-fan-y, -18px) +
1838
+ var(--desktop-dock-popup-card-lift, 0px) - 2px
1839
+ )
1840
+ )
1841
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1842
+ scale(var(--desktop-dock-popup-card-scale, 1));
1843
+ }
1844
+
1845
+ .desktop-dock-popup-root[data-dock-placement="bottom"]
1846
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1847
+ [data-desktop-dock-popup-card="true"] {
1848
+ transform: translate(
1849
+ calc(-50% + var(--desktop-dock-popup-fan-x, 0px)),
1850
+ var(--desktop-dock-popup-fan-y, -18px)
1851
+ )
1852
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1853
+ scale(var(--desktop-dock-popup-card-scale, 1));
1854
+ transform-origin: center bottom;
1855
+ animation-name: desktop-dock-stack-card-fan-in;
1856
+ }
1857
+
1858
+ .desktop-dock-popup-root[data-dock-placement="bottom"]
1859
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1860
+ [data-desktop-dock-popup-card="true"]:hover {
1861
+ transform: translate(
1862
+ calc(-50% + var(--desktop-dock-popup-fan-x, 0px)),
1863
+ calc(
1864
+ var(--desktop-dock-popup-fan-y, -18px) +
1865
+ var(--desktop-dock-popup-card-lift, 0px) - 2px
1866
+ )
1867
+ )
1868
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1869
+ scale(var(--desktop-dock-popup-card-scale, 1));
1870
+ }
1871
+
1872
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1873
+ [data-desktop-dock-popup-card="true"]
1874
+ > button:first-child {
1875
+ height: 100%;
1876
+ padding: 0;
1877
+ overflow: hidden;
1878
+ }
1879
+
1880
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1881
+ [data-desktop-dock-popup-card="true"]
1882
+ > button:first-child
1883
+ > span:first-child {
1884
+ width: calc(100% - 8px);
1885
+ height: calc(100% - 8px);
1886
+ margin: 4px;
1887
+ border-radius: 8px;
1888
+ }
1889
+
1890
+ .desktop-dock-popup__fan-title-tip {
1891
+ position: absolute;
1892
+ top: 50%;
1893
+ right: calc(100% + 12px);
1894
+ z-index: var(--z-tooltip);
1895
+ box-sizing: border-box;
1896
+ display: block;
1897
+ width: max-content;
1898
+ max-width: min(220px, calc(100vw - 96px));
1899
+ padding: 4px 8px;
1900
+ overflow: hidden;
1901
+ border: 1px solid var(--border-1);
1902
+ border-radius: var(--radius-md, calc(var(--radius) - 0.25rem));
1903
+ background: var(--background-fronted);
1904
+ box-shadow: var(--shadow-soft);
1905
+ color: var(--popover-foreground);
1906
+ font-size: 14px;
1907
+ font-weight: 400;
1908
+ line-height: 1.3;
1909
+ opacity: 1;
1910
+ pointer-events: none;
1911
+ text-overflow: ellipsis;
1912
+ transform: translate(0, -50%) scale(1);
1913
+ transition:
1914
+ opacity 120ms ease,
1915
+ transform 120ms ease;
1916
+ white-space: nowrap;
1917
+ }
1918
+
1919
+ .desktop-dock-popup-root[data-dock-placement="left"]
1920
+ .desktop-dock-popup__fan-title-tip {
1921
+ right: auto;
1922
+ left: calc(100% + 12px);
1923
+ }
1924
+
1925
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1926
+ [data-desktop-dock-popup-card="true"]:hover
1927
+ .desktop-dock-popup__fan-title-tip,
1928
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1929
+ [data-desktop-dock-popup-card="true"]:focus-within
1930
+ .desktop-dock-popup__fan-title-tip {
1931
+ opacity: 1;
1932
+ transform: translate(-4px, -50%) scale(1.02);
1933
+ }
1934
+
1935
+ .desktop-dock-popup-root[data-dock-placement="left"]
1936
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1937
+ [data-desktop-dock-popup-card="true"]:hover
1938
+ .desktop-dock-popup__fan-title-tip,
1939
+ .desktop-dock-popup-root[data-dock-placement="left"]
1940
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1941
+ [data-desktop-dock-popup-card="true"]:focus-within
1942
+ .desktop-dock-popup__fan-title-tip {
1943
+ transform: translate(4px, -50%) scale(1.02);
1944
+ }
1945
+
1946
+ @keyframes desktop-dock-stack-card-fan-in {
1947
+ from {
1948
+ opacity: 0;
1949
+ transform: translate(-50%, 0) rotate(0deg) scale(0.76);
1950
+ }
1951
+
1952
+ to {
1953
+ opacity: 1;
1954
+ transform: translate(
1955
+ calc(-50% + var(--desktop-dock-popup-fan-x, 0px)),
1956
+ var(--desktop-dock-popup-fan-y, -18px)
1957
+ )
1958
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1959
+ scale(var(--desktop-dock-popup-card-scale, 1));
1960
+ }
1961
+ }
1962
+
1963
+ @keyframes desktop-dock-stack-card-fan-in-left {
1964
+ from {
1965
+ opacity: 0;
1966
+ transform: translate(var(--desktop-dock-popup-fan-x, 0px), 0) rotate(0deg)
1967
+ scale(0.76);
1968
+ }
1969
+
1970
+ to {
1971
+ opacity: 1;
1972
+ transform: translate(
1973
+ var(--desktop-dock-popup-fan-x, 0px),
1974
+ var(--desktop-dock-popup-fan-y, -18px)
1975
+ )
1976
+ rotate(var(--desktop-dock-popup-fan-rotate, 0deg))
1977
+ scale(var(--desktop-dock-popup-card-scale, 1));
1978
+ }
1979
+ }
1980
+
1981
+ @media (prefers-reduced-motion: reduce) {
1982
+ .desktop-dock-plate,
1983
+ .desktop-dock {
1984
+ transition: none;
1985
+ }
1986
+
1987
+ .desktop-dock__slot[data-collapsing],
1988
+ .desktop-dock__slot[data-presence],
1989
+ .desktop-dock__separator[data-presence] {
1990
+ animation: none;
1991
+ }
1992
+
1993
+ .desktop-dock-popup[data-popup-variant="minimized-stack"]
1994
+ [data-desktop-dock-popup-card="true"] {
1995
+ animation: none;
1996
+ }
1997
+ }
1998
+
1999
+ @keyframes desktop-dock-presence-enter {
2000
+ from {
2001
+ opacity: 0;
2002
+ transform: translateY(9px) scale(0.82);
2003
+ }
2004
+
2005
+ to {
2006
+ opacity: 1;
2007
+ transform: translateY(0) scale(1);
2008
+ }
2009
+ }
2010
+
2011
+ @keyframes desktop-dock-presence-exit {
2012
+ from {
2013
+ opacity: 1;
2014
+ transform: translateY(0) scale(1);
2015
+ }
2016
+
2017
+ to {
2018
+ opacity: 0;
2019
+ transform: translateY(9px) scale(0.82);
2020
+ }
2021
+ }
2022
+
2023
+ @keyframes desktop-dock-minimized-slot-expand {
2024
+ from {
2025
+ width: 0;
2026
+ height: var(--desktop-dock-size);
2027
+ margin-inline: calc(var(--desktop-dock-gap) / -2);
2028
+ opacity: 0;
2029
+ }
2030
+
2031
+ to {
2032
+ width: var(--desktop-dock-size);
2033
+ height: var(--desktop-dock-size);
2034
+ margin-inline: 0;
2035
+ opacity: 1;
2036
+ }
2037
+ }
2038
+
2039
+ @keyframes desktop-dock-minimized-slot-expand-left {
2040
+ from {
2041
+ width: var(--desktop-dock-size);
2042
+ height: 0;
2043
+ margin-block: calc(var(--desktop-dock-gap) / -2);
2044
+ opacity: 0;
2045
+ }
2046
+
2047
+ to {
2048
+ width: var(--desktop-dock-size);
2049
+ height: var(--desktop-dock-size);
2050
+ margin-block: 0;
2051
+ opacity: 1;
2052
+ }
2053
+ }
2054
+
2055
+ @keyframes desktop-dock-minimized-slot-collapse {
2056
+ from {
2057
+ width: var(--desktop-dock-collapse-inline-size, var(--desktop-dock-size));
2058
+ height: var(--desktop-dock-collapse-block-size, var(--desktop-dock-size));
2059
+ margin-inline: 0;
2060
+ opacity: 1;
2061
+ }
2062
+
2063
+ to {
2064
+ width: 0;
2065
+ height: var(--desktop-dock-collapse-block-size, var(--desktop-dock-size));
2066
+ margin-inline: calc(var(--desktop-dock-gap) / -2);
2067
+ opacity: 0;
2068
+ }
2069
+ }
2070
+
2071
+ @keyframes desktop-dock-minimized-slot-collapse-left {
2072
+ from {
2073
+ width: var(--desktop-dock-collapse-inline-size, var(--desktop-dock-size));
2074
+ height: var(--desktop-dock-collapse-block-size, var(--desktop-dock-size));
2075
+ margin-block: 0;
2076
+ opacity: 1;
2077
+ }
2078
+
2079
+ to {
2080
+ width: var(--desktop-dock-collapse-inline-size, var(--desktop-dock-size));
2081
+ height: 0;
2082
+ margin-block: calc(var(--desktop-dock-gap) / -2);
2083
+ opacity: 0;
2084
+ }
2085
+ }
2086
+
2087
+ @keyframes desktop-dock-minimized-icon-appear {
2088
+ from {
2089
+ opacity: 0;
2090
+ scale: 0.08 0.92;
2091
+ filter: blur(0.4px);
2092
+ }
2093
+
2094
+ to {
2095
+ opacity: 1;
2096
+ scale: 1;
2097
+ filter: none;
2098
+ }
2099
+ }
2100
+
2101
+ @keyframes desktop-dock-minimized-icon-appear-left {
2102
+ from {
2103
+ opacity: 0;
2104
+ scale: 0.92 0.08;
2105
+ filter: blur(0.4px);
2106
+ }
2107
+
2108
+ to {
2109
+ opacity: 1;
2110
+ scale: 1;
2111
+ filter: none;
2112
+ }
2113
+ }
2114
+
2115
+ @keyframes desktop-dock-minimized-icon-disappear {
2116
+ from {
2117
+ opacity: 1;
2118
+ scale: 1;
2119
+ filter: none;
2120
+ }
2121
+
2122
+ to {
2123
+ opacity: 0;
2124
+ scale: 0.08 0.92;
2125
+ filter: blur(0.4px);
2126
+ }
2127
+ }
2128
+
2129
+ @keyframes desktop-dock-minimized-icon-disappear-left {
2130
+ from {
2131
+ opacity: 1;
2132
+ scale: 1;
2133
+ filter: none;
2134
+ }
2135
+
2136
+ to {
2137
+ opacity: 0;
2138
+ scale: 0.92 0.08;
2139
+ filter: blur(0.4px);
2140
+ }
2141
+ }
2142
+
2143
+ @keyframes desktop-dock-bounce-translate {
2144
+ 0%,
2145
+ 100% {
2146
+ translate: 0 0;
2147
+ }
2148
+ 45% {
2149
+ translate: 0 -29px;
2150
+ }
2151
+ }
2152
+
2153
+ @keyframes desktop-dock-bounce-translate-left {
2154
+ 0%,
2155
+ 100% {
2156
+ translate: 0 0;
2157
+ }
2158
+ 45% {
2159
+ translate: 29px 0;
2160
+ }
2161
+ }
2162
+
2163
+ @keyframes desktop-dock-spin {
2164
+ to {
2165
+ transform: rotate(360deg);
2166
+ }
2167
+ }
2168
+
2169
+ .workbench-surface__top-chrome,
2170
+ .workbench-surface__bottom-chrome {
2171
+ position: absolute;
2172
+ z-index: var(--z-workbench-chrome);
2173
+ pointer-events: none;
2174
+ }
2175
+
2176
+ .workbench-surface__top-chrome {
2177
+ top: 0;
2178
+ right: 0;
2179
+ left: 0;
2180
+ }
2181
+
2182
+ .workbench-surface__bottom-chrome {
2183
+ right: var(--workbench-chrome-inset-x);
2184
+ bottom: var(--workbench-chrome-inset-y);
2185
+ left: var(--workbench-chrome-inset-x);
2186
+ }
2187
+
2188
+ .workbench-surface__top-chrome > *,
2189
+ .workbench-surface__bottom-chrome > * {
2190
+ pointer-events: auto;
2191
+ }
2192
+
2193
+ .workbench-genie-layer {
2194
+ position: fixed;
2195
+ inset: 0;
2196
+ z-index: var(--z-workbench-genie);
2197
+ pointer-events: none;
2198
+ }
2199
+
2200
+ @keyframes workbench-snap-preview-enter {
2201
+ from {
2202
+ opacity: 0;
2203
+ transform: scale(0.985);
2204
+ }
2205
+
2206
+ to {
2207
+ opacity: 1;
2208
+ transform: scale(1);
2209
+ }
2210
+ }
2211
+
2212
+ .workspace-launchpad-dock-icon {
2213
+ box-sizing: border-box;
2214
+ display: grid;
2215
+ width: 44px;
2216
+ height: 44px;
2217
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2218
+ gap: 2px;
2219
+ padding: 3px;
2220
+ border: 1px solid var(--line-1);
2221
+ border-radius: 8px;
2222
+ background: var(--transparency-block);
2223
+ }
2224
+
2225
+ .workspace-launchpad-dock-icon__tile {
2226
+ display: block;
2227
+ overflow: visible;
2228
+ min-width: 0;
2229
+ min-height: 0;
2230
+ border-radius: 4px;
2231
+ background: transparent;
2232
+ }
2233
+
2234
+ .workspace-launchpad-dock-icon__tile > img {
2235
+ display: block;
2236
+ width: 100%;
2237
+ height: 100%;
2238
+ object-fit: contain;
2239
+ object-position: center;
2240
+ }
2241
+
2242
+ .workspace-launchpad-overlay {
2243
+ position: absolute;
2244
+ top: 0;
2245
+ right: 0;
2246
+ bottom: 0;
2247
+ left: 0;
2248
+ z-index: 10;
2249
+ overflow: hidden;
2250
+ color: var(--text-primary);
2251
+ pointer-events: auto;
2252
+ -webkit-app-region: no-drag;
2253
+ }
2254
+
2255
+ .workspace-launchpad-overlay--closing {
2256
+ pointer-events: none;
2257
+ }
2258
+
2259
+ .workspace-launchpad-overlay__dismiss {
2260
+ position: absolute;
2261
+ inset: 0;
2262
+ z-index: 0;
2263
+ border: 0;
2264
+ background: var(--backdrop);
2265
+ backdrop-filter: blur(24px) saturate(1.18);
2266
+ animation: workspace-launchpad-backdrop-enter 160ms ease-out both;
2267
+ opacity: 1;
2268
+ transition: opacity 180ms ease;
2269
+ -webkit-backdrop-filter: blur(24px) saturate(1.18);
2270
+ }
2271
+
2272
+ .workspace-launchpad-overlay--closing .workspace-launchpad-overlay__dismiss {
2273
+ opacity: 0;
2274
+ }
2275
+
2276
+ .workspace-launchpad-overlay__content {
2277
+ position: relative;
2278
+ z-index: 1;
2279
+ --workspace-launchpad-content-offset-x: 0px;
2280
+ display: grid;
2281
+ height: 100%;
2282
+ min-height: 0;
2283
+ grid-template-rows: 64px minmax(0, 1fr) 26px;
2284
+ row-gap: 24px;
2285
+ padding: 24px clamp(24px, 5vw, 76px) 106px;
2286
+ opacity: 1;
2287
+ transform: translateX(var(--workspace-launchpad-content-offset-x))
2288
+ translateY(0) scale(1);
2289
+ transition:
2290
+ opacity 180ms ease,
2291
+ transform 180ms cubic-bezier(0.4, 0, 1, 1);
2292
+ -webkit-app-region: drag;
2293
+ }
2294
+
2295
+ .workspace-launchpad-overlay__content[data-dock-placement="left"] {
2296
+ --workspace-launchpad-content-offset-x: 24px;
2297
+ }
2298
+
2299
+ @media (max-height: 900px) {
2300
+ .workspace-launchpad-overlay__content {
2301
+ padding-bottom: clamp(52px, 8vh, 84px);
2302
+ }
2303
+ }
2304
+
2305
+ .workspace-launchpad-overlay--closing .workspace-launchpad-overlay__content {
2306
+ opacity: 0;
2307
+ transform: translateX(var(--workspace-launchpad-content-offset-x))
2308
+ translateY(10px) scale(0.985);
2309
+ }
2310
+
2311
+ .workspace-workbench-shell--launchpad-open .workbench-dock-frame {
2312
+ z-index: 20;
2313
+ }
2314
+
2315
+ .workspace-launchpad-overlay__topbar {
2316
+ position: relative;
2317
+ z-index: 1;
2318
+ display: flex;
2319
+ min-width: 0;
2320
+ align-items: flex-start;
2321
+ justify-content: center;
2322
+ -webkit-app-region: drag;
2323
+ }
2324
+
2325
+ .workspace-launchpad-search {
2326
+ position: relative;
2327
+ display: block;
2328
+ justify-self: center;
2329
+ width: min(330px, calc(100vw - 80px));
2330
+ -webkit-app-region: no-drag;
2331
+ }
2332
+
2333
+ .workspace-launchpad-search__icon {
2334
+ position: absolute;
2335
+ inset-block: 0;
2336
+ left: 11px;
2337
+ width: 16px;
2338
+ height: 16px;
2339
+ margin-block: auto;
2340
+ color: var(--text-secondary);
2341
+ pointer-events: none;
2342
+ }
2343
+
2344
+ .workspace-launchpad-search__input {
2345
+ padding-left: 34px;
2346
+ padding-right: 40px;
2347
+ box-shadow: none;
2348
+ text-shadow: none;
2349
+ }
2350
+
2351
+ .workspace-launchpad-search__input::-webkit-search-cancel-button {
2352
+ display: none;
2353
+ -webkit-appearance: none;
2354
+ }
2355
+
2356
+ .workspace-launchpad-search__input:focus,
2357
+ .workspace-launchpad-search__input:focus-visible {
2358
+ box-shadow: none;
2359
+ }
2360
+
2361
+ .workspace-launchpad-search__clear {
2362
+ position: absolute;
2363
+ inset-block: 0;
2364
+ right: 8px;
2365
+ display: grid;
2366
+ width: 24px;
2367
+ height: 24px;
2368
+ margin-block: auto;
2369
+ place-items: center;
2370
+ border: 0;
2371
+ border-radius: 999px;
2372
+ background: transparent;
2373
+ color: var(--text-tertiary);
2374
+ cursor: pointer;
2375
+ transition: color 120ms ease;
2376
+ }
2377
+
2378
+ .workspace-launchpad-search__clear > svg {
2379
+ width: 16px;
2380
+ height: 16px;
2381
+ }
2382
+
2383
+ .workspace-launchpad-search__clear:hover {
2384
+ background: transparent;
2385
+ color: var(--text-primary);
2386
+ }
2387
+
2388
+ .workspace-launchpad-search__clear:active {
2389
+ background: transparent;
2390
+ color: var(--text-primary);
2391
+ }
2392
+
2393
+ .workspace-launchpad-search__clear:focus-visible {
2394
+ outline: 2px solid var(--border-focus);
2395
+ outline-offset: 1px;
2396
+ }
2397
+
2398
+ .workspace-launchpad-grid-viewport {
2399
+ display: grid;
2400
+ min-height: 0;
2401
+ align-content: center;
2402
+ justify-items: center;
2403
+ overflow: visible;
2404
+ -webkit-app-region: no-drag;
2405
+ }
2406
+
2407
+ .workspace-launchpad-grid {
2408
+ display: grid;
2409
+ width: min(100%, 1040px);
2410
+ align-content: center;
2411
+ justify-content: center;
2412
+ column-gap: clamp(20px, 4vw, 56px);
2413
+ row-gap: clamp(22px, 3.5vh, 44px);
2414
+ animation: workspace-launchpad-grid-enter 160ms ease-out;
2415
+ }
2416
+
2417
+ .workspace-launchpad-item {
2418
+ display: flex;
2419
+ width: 136px;
2420
+ min-width: 0;
2421
+ min-height: 124px;
2422
+ flex-direction: column;
2423
+ align-items: center;
2424
+ gap: 8px;
2425
+ border: 0;
2426
+ background: transparent;
2427
+ color: var(--text-primary);
2428
+ cursor: pointer;
2429
+ text-align: center;
2430
+ text-shadow: none;
2431
+ transition:
2432
+ opacity 140ms ease,
2433
+ transform 150ms cubic-bezier(0.22, 1, 0.36, 1),
2434
+ filter 140ms ease;
2435
+ }
2436
+
2437
+ .workspace-launchpad-item-wrap {
2438
+ position: relative;
2439
+ width: 136px;
2440
+ min-width: 0;
2441
+ animation: workspace-launchpad-item-enter 420ms cubic-bezier(0.16, 1, 0.3, 1)
2442
+ both;
2443
+ animation-delay: var(--workspace-launchpad-item-delay, 0ms);
2444
+ transform-origin: center bottom;
2445
+ will-change: opacity, transform, filter;
2446
+ }
2447
+
2448
+ .workspace-launchpad-item:hover {
2449
+ transform: translateY(-2px);
2450
+ }
2451
+
2452
+ .workspace-launchpad-item:active {
2453
+ transform: translateY(0) scale(0.98);
2454
+ }
2455
+
2456
+ .workspace-launchpad-item:focus-visible {
2457
+ outline: 2px solid var(--border-focus);
2458
+ outline-offset: 6px;
2459
+ border-radius: 8px;
2460
+ }
2461
+
2462
+ .workspace-launchpad-item--disabled {
2463
+ cursor: default;
2464
+ filter: grayscale(0.45);
2465
+ opacity: 0.42;
2466
+ }
2467
+
2468
+ .workspace-launchpad-item--disabled:hover,
2469
+ .workspace-launchpad-item--disabled:active {
2470
+ transform: none;
2471
+ }
2472
+
2473
+ .workspace-launchpad-item__icon {
2474
+ display: grid;
2475
+ width: 54px;
2476
+ height: 54px;
2477
+ place-items: center;
2478
+ overflow: visible;
2479
+ border-radius: 0;
2480
+ background: transparent;
2481
+ box-shadow: none;
2482
+ color: var(--text-primary);
2483
+ }
2484
+
2485
+ .workspace-launchpad-item__icon > img {
2486
+ display: block;
2487
+ width: 100%;
2488
+ height: 100%;
2489
+ filter: none;
2490
+ object-fit: contain;
2491
+ object-position: center;
2492
+ }
2493
+
2494
+ .workspace-launchpad-item__icon > svg {
2495
+ width: 28px;
2496
+ height: 28px;
2497
+ }
2498
+
2499
+ .workspace-launchpad-item__label {
2500
+ display: -webkit-box;
2501
+ width: 100%;
2502
+ min-height: 34px;
2503
+ overflow: hidden;
2504
+ -webkit-box-orient: vertical;
2505
+ -webkit-line-clamp: 2;
2506
+ color: inherit;
2507
+ font-size: 13px;
2508
+ font-weight: 400;
2509
+ line-height: 17px;
2510
+ overflow-wrap: anywhere;
2511
+ }
2512
+
2513
+ .workspace-launchpad-dock-hover-panel {
2514
+ --desktop-dock-tooltip-gap: 12px;
2515
+ --workspace-launchpad-hover-panel-shift: 0px;
2516
+
2517
+ animation: workspace-launchpad-hover-panel-enter 160ms
2518
+ cubic-bezier(0.16, 1, 0.3, 1) both;
2519
+ bottom: calc(100% + var(--desktop-dock-tooltip-gap, 32px));
2520
+ left: 50%;
2521
+ right: auto;
2522
+ top: auto;
2523
+ z-index: 45;
2524
+ max-width: min(240px, calc(100vw - 32px));
2525
+ opacity: 1;
2526
+ pointer-events: auto;
2527
+ transform: translateX(
2528
+ calc(-50% + var(--workspace-launchpad-hover-panel-shift))
2529
+ )
2530
+ translateY(0);
2531
+ }
2532
+
2533
+ .workspace-launchpad-empty {
2534
+ align-self: center;
2535
+ justify-self: center;
2536
+ padding: 0;
2537
+ border: 0;
2538
+ background: transparent;
2539
+ color: rgb(255 255 255 / 0.82);
2540
+ font-size: 14px;
2541
+ line-height: 20px;
2542
+ box-shadow: none;
2543
+ }
2544
+
2545
+ .workspace-launchpad-pages {
2546
+ display: flex;
2547
+ min-height: 18px;
2548
+ align-items: center;
2549
+ justify-content: center;
2550
+ gap: 9px;
2551
+ -webkit-app-region: no-drag;
2552
+ }
2553
+
2554
+ .workspace-launchpad-page-dot {
2555
+ width: 8px;
2556
+ height: 8px;
2557
+ padding: 0;
2558
+ border: 0;
2559
+ border-radius: 999px;
2560
+ background: rgb(255 255 255 / 0.28);
2561
+ cursor: pointer;
2562
+ transition:
2563
+ background-color 120ms ease,
2564
+ transform 120ms ease;
2565
+ }
2566
+
2567
+ .workspace-launchpad-page-dot[data-active="true"] {
2568
+ background: rgb(255 255 255 / 0.92);
2569
+ transform: scale(1.12);
2570
+ }
2571
+
2572
+ .workspace-launchpad-page-dot:focus-visible {
2573
+ outline: 2px solid rgb(255 255 255 / 0.74);
2574
+ outline-offset: 4px;
2575
+ }
2576
+
2577
+ @keyframes workspace-launchpad-grid-enter {
2578
+ from {
2579
+ opacity: 0;
2580
+ }
2581
+
2582
+ to {
2583
+ opacity: 1;
2584
+ }
2585
+ }
2586
+
2587
+ @keyframes workspace-launchpad-backdrop-enter {
2588
+ from {
2589
+ opacity: 0;
2590
+ }
2591
+
2592
+ to {
2593
+ opacity: 1;
2594
+ }
2595
+ }
2596
+
2597
+ @keyframes workspace-launchpad-hover-panel-enter {
2598
+ from {
2599
+ opacity: 0;
2600
+ transform: translateX(-50%) translateY(10px);
2601
+ }
2602
+
2603
+ to {
2604
+ opacity: 1;
2605
+ transform: translateX(-50%) translateY(0);
2606
+ }
2607
+ }
2608
+
2609
+ @keyframes workspace-launchpad-item-enter {
2610
+ from {
2611
+ opacity: 0;
2612
+ filter: blur(2px);
2613
+ transform: translateY(var(--workspace-launchpad-item-rise, 18px))
2614
+ scale(0.96);
2615
+ }
2616
+
2617
+ 58% {
2618
+ opacity: 1;
2619
+ filter: blur(0);
2620
+ }
2621
+
2622
+ to {
2623
+ opacity: 1;
2624
+ filter: blur(0);
2625
+ transform: translateY(0) scale(1);
2626
+ }
2627
+ }
2628
+
2629
+ @media (prefers-reduced-motion: reduce) {
2630
+ .workspace-launchpad-grid,
2631
+ .workspace-launchpad-item-wrap {
2632
+ animation: none;
2633
+ }
2634
+
2635
+ .workspace-launchpad-overlay__content,
2636
+ .workspace-launchpad-overlay__dismiss {
2637
+ animation: none;
2638
+ transition: none;
2639
+ }
2640
+
2641
+ .workspace-launchpad-item-wrap {
2642
+ opacity: 1;
2643
+ transform: none;
2644
+ }
2645
+ }
2646
+
2647
+ @media (max-width: 720px) {
2648
+ .workspace-launchpad-overlay__content {
2649
+ row-gap: 18px;
2650
+ padding-inline: 20px;
2651
+ padding-bottom: 100px;
2652
+ }
2653
+
2654
+ .workspace-launchpad-grid {
2655
+ column-gap: 18px;
2656
+ }
2657
+
2658
+ .workspace-launchpad-item {
2659
+ width: 112px;
2660
+ }
2661
+
2662
+ .workspace-launchpad-item-wrap {
2663
+ width: 112px;
2664
+ }
2665
+
2666
+ .workspace-launchpad-item__icon {
2667
+ width: 54px;
2668
+ height: 54px;
2669
+ border-radius: 16px;
2670
+ }
2671
+ }
2672
+
2673
+ [data-workspace-app-icon="true"] {
2674
+ display: inline-grid;
2675
+ min-width: 0;
2676
+ min-height: 0;
2677
+ place-items: center;
2678
+ overflow: hidden;
2679
+ border-radius: 22.5%;
2680
+ background: var(--workspace-app-icon-bg, transparent);
2681
+ }
2682
+
2683
+ .desktop-dock__icon-content > [data-workspace-app-icon="true"] {
2684
+ width: 100%;
2685
+ height: 100%;
2686
+ }
2687
+
2688
+ [data-workspace-app-icon="true"] > img {
2689
+ display: block;
2690
+ width: 100%;
2691
+ height: 100%;
2692
+ object-fit: cover;
2693
+ object-position: center;
2694
+ }
2695
+
2696
+ [data-workspace-app-icon="true"] > svg {
2697
+ display: block;
2698
+ }