@cardstack/boxel-cli 0.13.0-unstable.0 → 0.13.0-unstable.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.
Files changed (75) hide show
  1. package/bundled-realms/base/command.gts +4 -4
  2. package/bundled-realms/base/realm-api-keys.gts +35 -3
  3. package/bundled-test-harness/assets/{ai-module-creation-test-Czsh1MyP.js → ai-module-creation-test-DxxsXNXe.js} +1 -1
  4. package/bundled-test-harness/assets/{app-hXF_bqWy.js → app-BEvPLshl.js} +5 -5
  5. package/bundled-test-harness/assets/{binary-upload-dedupe-test-Bt5RqtEk.js → binary-upload-dedupe-test-B_gcWqxF.js} +1 -1
  6. package/bundled-test-harness/assets/{bundled-base-DtxlKFXx.js → bundled-base-CYD5iFX3.js} +3 -3
  7. package/bundled-test-harness/assets/{bundled-base-modules-test-D1fXHMTE.js → bundled-base-modules-test-bO7yZysu.js} +1 -1
  8. package/bundled-test-harness/assets/{can-invoke-test-DqBuecdl.js → can-invoke-test-BBTE4_cE.js} +1 -1
  9. package/bundled-test-harness/assets/{card-chooser-paging-test-Cf8r032c.js → card-chooser-paging-test-14IqQei3.js} +1 -1
  10. package/bundled-test-harness/assets/{card-chooser-test-q_qnUKxi.js → card-chooser-test-CRg2JrXQ.js} +1 -1
  11. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-C5xkWMZi.js → card-def-field-def-relationships-test-BapYGyoB.js} +1 -1
  12. package/bundled-test-harness/assets/{card-delete-test-KB4aJuv_.js → card-delete-test-CvbDQUUE.js} +1 -1
  13. package/bundled-test-harness/assets/{codeblocks-test-DLVRpBAl.js → codeblocks-test-j4ES37-L.js} +1 -1
  14. package/bundled-test-harness/assets/{compaction-test-zX01t57K.js → compaction-test-CyhMODxy.js} +1 -1
  15. package/bundled-test-harness/assets/{container-BCOmNUou.css → container-CAEYXGQg.css} +179 -155
  16. package/bundled-test-harness/assets/{container-CXZoEvul.js → container-CATqNgYF.js} +10 -10
  17. package/bundled-test-harness/assets/{create-listing-modal-test-DPgVovcL.js → create-listing-modal-test-QmWcm9hl.js} +1 -1
  18. package/bundled-test-harness/assets/{debug-message-test-CWl-ido2.js → debug-message-test-D-4Dcu8y.js} +1 -1
  19. package/bundled-test-harness/assets/{externals-Ddhtv753.js → externals-Cw0MmkHM.js} +1 -1
  20. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-CFbMEFHo.js → fallback-banner-live-delete-test-Bzqw4uMs.js} +1 -1
  21. package/bundled-test-harness/assets/{fallback-banner-test-3O0imkxJ.js → fallback-banner-test-BMQVK4gy.js} +1 -1
  22. package/bundled-test-harness/assets/{fallback-models-test-hyQfQLuM.js → fallback-models-test-DkdjPwvA.js} +1 -1
  23. package/bundled-test-harness/assets/{file-attachment-test-C63Ttyaj.js → file-attachment-test-yvR5gw9_.js} +1 -1
  24. package/bundled-test-harness/assets/{general-test-wrSeNkrm.js → general-test-D2j4JhrD.js} +1 -1
  25. package/bundled-test-harness/assets/{index-query-engine-test-DvfKgn6s.js → index-query-engine-test-DFkm037X.js} +1 -1
  26. package/bundled-test-harness/assets/{instance-filter-matcher-test-KqGi-K79.js → instance-filter-matcher-test-UqB2Rto8.js} +1 -1
  27. package/bundled-test-harness/assets/{main-CoUo04VF.js → main-CM62YtMN.js} +1 -1
  28. package/bundled-test-harness/assets/{model-cost-tier-test-B5ByLtAP.js → model-cost-tier-test-CDXxio0B.js} +1 -1
  29. package/bundled-test-harness/assets/{operation-lowering-test-Bz81V0Gt.js → operation-lowering-test-C_CaTJ0F.js} +1 -1
  30. package/bundled-test-harness/assets/{operator-mode-card-chooser-test-DNOnplV8.js → operator-mode-card-chooser-test-CU5f7q6r.js} +1 -1
  31. package/bundled-test-harness/assets/{operator-mode-links-test-BeXsOYMU.js → operator-mode-links-test-CoeF3prV.js} +1 -1
  32. package/bundled-test-harness/assets/{operator-mode-test-jdeCXqhV.js → operator-mode-test-B9c6N5FF.js} +1 -1
  33. package/bundled-test-harness/assets/{operator-mode-ui-test-DdiFZylM.js → operator-mode-ui-test-CJQxypf_.js} +1 -1
  34. package/bundled-test-harness/assets/{overlay-menu-items-test-C_Q4sJlC.js → overlay-menu-items-test-CFWZ-tzq.js} +1 -1
  35. package/bundled-test-harness/assets/{past-sessions-test-Bm1UiLD0.js → past-sessions-test-7FgLJlog.js} +1 -1
  36. package/bundled-test-harness/assets/{permission-checking-realm-test-Jq7R-yRT.js → permission-checking-realm-test-Cm9eB-hE.js} +1 -1
  37. package/bundled-test-harness/assets/{quick-look-test-BrnxRRsq.js → quick-look-test-DrqgCLlM.js} +1 -1
  38. package/bundled-test-harness/assets/{realm-api-keys-Tlj0OK1c.css → realm-api-keys-16eN_yJb.css} +35 -25
  39. package/bundled-test-harness/assets/{realm-api-keys-CHPnfcko.js → realm-api-keys-ZJedocgl.js} +10 -4
  40. package/bundled-test-harness/assets/realm-api-keys-m-EOSWuV.js +2 -0
  41. package/bundled-test-harness/assets/{realm-api-keys-test-mrgvnhFJ.js → realm-api-keys-test-Ba_1CKJu.js} +3 -5
  42. package/bundled-test-harness/assets/{realm-api-keys-test-CHBGOFcx.js → realm-api-keys-test-jXscHLbS.js} +1 -1
  43. package/bundled-test-harness/assets/{realm-config-C7c3B2er.js → realm-config-DIOozzdQ.js} +1 -1
  44. package/bundled-test-harness/assets/{realm-config-policy-standing-test-C8aNeb6_.js → realm-config-policy-standing-test-DEFQEEvl.js} +1 -1
  45. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-Dmnw-VQz.js → realm-config-routing-rule-edit-test-CtLYsxzq.js} +1 -1
  46. package/bundled-test-harness/assets/{realm-config-settings-test-C6V0Mx35.js → realm-config-settings-test-Dsatuv-T.js} +1 -1
  47. package/bundled-test-harness/assets/{reasoning-test-Dn0Xb42V.js → reasoning-test-3p_PygAV.js} +1 -1
  48. package/bundled-test-harness/assets/{schema-generation-test-De1eamwr.js → schema-generation-test-hkFzUr7-.js} +1 -1
  49. package/bundled-test-harness/assets/{scrolling-test-sLBz7Gxv.js → scrolling-test-B8CudFE9.js} +1 -1
  50. package/bundled-test-harness/assets/{searchable-option-test-Ix9_H5QV.js → searchable-option-test-B8lZyJij.js} +1 -1
  51. package/bundled-test-harness/assets/{sending-test-_Pqzq1bN.js → sending-test-BtH1z2uE.js} +1 -1
  52. package/bundled-test-harness/assets/{skills-test-DUHRQGiC.js → skills-test-DIQvoCLm.js} +1 -1
  53. package/bundled-test-harness/assets/{store-test-9C-s0-H6.js → store-test-DoHgyfQA.js} +1 -1
  54. package/bundled-test-harness/assets/{tests-CVpu0hZj.js → tests-DXX9TrgY.js} +369 -360
  55. package/bundled-test-harness/assets/{text-input-validator-test-CcVh-MFa.js → text-input-validator-test-D56aDP2e.js} +1 -1
  56. package/bundled-test-harness/assets/{to-device-streaming-test-RFHD62PN.js → to-device-streaming-test-Ug8UnlUl.js} +1 -1
  57. package/bundled-test-harness/assets/{token-usage-test-B2iJC-UX.js → token-usage-test-BolKbZVL.js} +1 -1
  58. package/bundled-test-harness/assets/{tools-DRCjAZCp.js → tools-CkouX4wE.js} +1 -1
  59. package/bundled-test-harness/assets/{tools-test-BZOWfXML.js → tools-test-CdYgRu5Z.js} +1 -1
  60. package/bundled-test-harness/assets/{turn-settling-test-Cvu2rvzM.js → turn-settling-test-CS0PlpTg.js} +1 -1
  61. package/bundled-test-harness/assets/{unshare-key-Dfy1IK9g.js → unshare-key-W_bNI_MF.js} +0 -1
  62. package/bundled-test-harness/index.html +9 -9
  63. package/bundled-test-harness/tests/index.html +9 -9
  64. package/bundled-types/base/command.d.ts +0 -1
  65. package/bundled-types/host-app/components/operator-mode/dashboard/add-workspace.gts +5 -3
  66. package/bundled-types/host-app/components/operator-mode/dashboard/archived-workspace.gts +3 -5
  67. package/bundled-types/host-app/components/operator-mode/dashboard/catalog-shelf.gts +24 -7
  68. package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +9 -4
  69. package/bundled-types/host-app/lib/key-shares.ts +0 -1
  70. package/bundled-types/host-app/tools/get-key-share-usage.ts +0 -1
  71. package/dist/index.js +161 -161
  72. package/package.json +1 -1
  73. package/src/commands/keys/manage.ts +22 -6
  74. package/src/lib/user-keys.ts +18 -5
  75. package/bundled-test-harness/assets/realm-api-keys-GLBmvu4U.js +0 -2
@@ -3257,28 +3257,30 @@
3257
3257
  outline: none;
3258
3258
  }
3259
3259
 
3260
- .add-workspace[data-scopedcss-ceab61f459-fb123c5358] {
3260
+ .add-workspace[data-scopedcss-ceab61f459-ed317ef328] {
3261
3261
  justify-content: center;
3262
3262
  align-items: center;
3263
3263
  background-color: transparent;
3264
- box-shadow: inset 0 0 0 1px var(--boxel-light-10);
3264
+ box-shadow: inset 0 0 0 1px var(--boxel-light-25);
3265
3265
  color: var(--boxel-light);
3266
3266
  transition: box-shadow var(--boxel-transition);
3267
3267
  }
3268
- .add-workspace[data-scopedcss-ceab61f459-fb123c5358]:hover {
3269
- box-shadow: inset 0 0 0 1px var(--boxel-light-25);
3268
+ @media (hover: hover) {
3269
+ .add-workspace[data-scopedcss-ceab61f459-ed317ef328]:hover {
3270
+ box-shadow: inset 0 0 0 1px var(--boxel-light-50);
3271
+ }
3270
3272
  }
3271
- .add-workspace.is-selected[data-scopedcss-ceab61f459-fb123c5358],
3272
- .add-workspace[data-scopedcss-ceab61f459-fb123c5358]:focus-visible {
3273
+ .add-workspace.is-selected[data-scopedcss-ceab61f459-ed317ef328],
3274
+ .add-workspace[data-scopedcss-ceab61f459-ed317ef328]:focus-visible {
3273
3275
  box-shadow: var(--dashboard-ring);
3274
3276
  }
3275
- .content[data-scopedcss-ceab61f459-fb123c5358] {
3277
+ .content[data-scopedcss-ceab61f459-ed317ef328] {
3276
3278
  display: flex;
3277
3279
  align-items: center;
3278
3280
  gap: var(--boxel-sp-xs);
3279
3281
  font: 600 var(--boxel-font-sm);
3280
3282
  }
3281
- .icon[data-scopedcss-ceab61f459-fb123c5358] {
3283
+ .icon[data-scopedcss-ceab61f459-ed317ef328] {
3282
3284
  flex-shrink: 0;
3283
3285
  color: var(--boxel-highlight);
3284
3286
  }
@@ -3697,7 +3699,7 @@
3697
3699
  color: var(--boxel-highlight);
3698
3700
  }
3699
3701
 
3700
- .archived-row[data-scopedcss-443a7d4fc7-504b90622e] {
3702
+ .archived-row[data-scopedcss-443a7d4fc7-d92e4623bf] {
3701
3703
  box-sizing: border-box;
3702
3704
  display: flex;
3703
3705
  align-items: center;
@@ -3707,10 +3709,10 @@
3707
3709
  padding: var(--boxel-sp-xs);
3708
3710
  border-radius: var(--dashboard-tile-radius);
3709
3711
  background-color: var(--dashboard-row-tint);
3710
- box-shadow: inset 0 0 0 1px var(--boxel-light-10);
3712
+ box-shadow: inset 0 0 0 1px var(--boxel-light-25);
3711
3713
  color: var(--boxel-light);
3712
3714
  }
3713
- .thumb[data-scopedcss-443a7d4fc7-504b90622e] {
3715
+ .thumb[data-scopedcss-443a7d4fc7-d92e4623bf] {
3714
3716
  display: flex;
3715
3717
  flex: none;
3716
3718
  align-items: center;
@@ -3720,13 +3722,13 @@
3720
3722
  border-radius: var(--boxel-border-radius-lg);
3721
3723
  background-color: var(--dashboard-thumb-tint);
3722
3724
  }
3723
- .realm-icon-wrapper[data-scopedcss-443a7d4fc7-504b90622e] {
3725
+ .realm-icon-wrapper[data-scopedcss-443a7d4fc7-d92e4623bf] {
3724
3726
  position: relative;
3725
3727
  display: flex;
3726
3728
  border-radius: var(--boxel-border-radius-sm);
3727
3729
  box-shadow: 0 0.125rem 0.375rem var(--boxel-dark-40);
3728
3730
  }
3729
- .realm-icon-wrapper[data-scopedcss-443a7d4fc7-504b90622e]::after {
3731
+ .realm-icon-wrapper[data-scopedcss-443a7d4fc7-d92e4623bf]::after {
3730
3732
  content: '';
3731
3733
  position: absolute;
3732
3734
  inset: 0;
@@ -3734,19 +3736,19 @@
3734
3736
  box-shadow: inset 0 0 0 1px var(--boxel-light-50);
3735
3737
  pointer-events: none;
3736
3738
  }
3737
- .realm-icon[data-scopedcss-443a7d4fc7-504b90622e] {
3739
+ .realm-icon[data-scopedcss-443a7d4fc7-d92e4623bf] {
3738
3740
  --boxel-realm-icon-size: 1.5rem;
3739
3741
  --boxel-realm-icon-border-radius: var(--boxel-border-radius-sm);
3740
3742
  --boxel-realm-icon-background-color: var(--boxel-light);
3741
3743
  }
3742
- .info[data-scopedcss-443a7d4fc7-504b90622e] {
3744
+ .info[data-scopedcss-443a7d4fc7-d92e4623bf] {
3743
3745
  display: flex;
3744
3746
  flex: 1;
3745
3747
  flex-direction: column;
3746
3748
  gap: var(--boxel-sp-4xs);
3747
3749
  min-width: 0;
3748
3750
  }
3749
- .name[data-scopedcss-443a7d4fc7-504b90622e] {
3751
+ .name[data-scopedcss-443a7d4fc7-d92e4623bf] {
3750
3752
  display: block;
3751
3753
  overflow: hidden;
3752
3754
  font: 600 var(--boxel-font-sm);
@@ -3755,16 +3757,16 @@
3755
3757
  white-space: nowrap;
3756
3758
  }
3757
3759
  /* Wraps, so a long server error reads whole. */
3758
- .restore-error[data-scopedcss-443a7d4fc7-504b90622e] {
3760
+ .restore-error[data-scopedcss-443a7d4fc7-d92e4623bf] {
3759
3761
  color: var(--boxel-danger);
3760
3762
  font: 600 var(--boxel-font-xs);
3761
3763
  overflow-wrap: break-word;
3762
3764
  }
3763
- .restore-btn[data-scopedcss-443a7d4fc7-504b90622e] {
3765
+ .restore-btn[data-scopedcss-443a7d4fc7-d92e4623bf] {
3764
3766
  flex: none;
3765
3767
  }
3766
3768
 
3767
- .catalog-shelf[data-scopedcss-3416374426-d3bda51cf4] {
3769
+ .catalog-shelf[data-scopedcss-3416374426-c845240858] {
3768
3770
  --_catalog-shelf-story-min-width: 13rem;
3769
3771
  --_catalog-shelf-art-height: 9.5rem;
3770
3772
  --_catalog-shelf-action-height: 1.875rem;
@@ -3777,7 +3779,7 @@
3777
3779
  gap: var(--boxel-sp);
3778
3780
  }
3779
3781
  /* One row of equal stories that share the width between them. */
3780
- .stories[data-scopedcss-3416374426-d3bda51cf4] {
3782
+ .stories[data-scopedcss-3416374426-c845240858] {
3781
3783
  display: grid;
3782
3784
  grid-template-columns: repeat(
3783
3785
  auto-fit,
@@ -3788,7 +3790,7 @@
3788
3790
  padding: 0;
3789
3791
  list-style: none;
3790
3792
  }
3791
- .story[data-scopedcss-3416374426-d3bda51cf4] {
3793
+ .story[data-scopedcss-3416374426-c845240858] {
3792
3794
  --_story-edge: color-mix(in oklch, var(--foreground) 12%, transparent);
3793
3795
  position: relative;
3794
3796
  display: flex;
@@ -3799,22 +3801,39 @@
3799
3801
  border-radius: var(--boxel-border-radius-2xl);
3800
3802
  background-color: var(--_story-paper);
3801
3803
  color: var(--foreground);
3804
+ /* Edged like the workspace tiles, just outside the card so the edge
3805
+ reads the same against the dashboard on every paper. */
3802
3806
  box-shadow:
3803
- 0 0 0 1px var(--_story-edge),
3807
+ 0 0 0 1px var(--boxel-light-25),
3804
3808
  var(--shadow-md);
3805
- transition: transform var(--boxel-transition);
3806
3809
  }
3807
- @media (hover: hover) and (prefers-reduced-motion: no-preference) {
3808
- .story[data-scopedcss-3416374426-d3bda51cf4]:hover {
3809
- transform: translateY(-0.125rem);
3810
+ /* The hover ring stands 1px off the resting edge. */
3811
+ .story[data-scopedcss-3416374426-c845240858]::after {
3812
+ content: '';
3813
+ position: absolute;
3814
+ inset: 0;
3815
+ border-radius: inherit;
3816
+ outline: 1px solid var(--boxel-light-50);
3817
+ outline-offset: 1px;
3818
+ opacity: 0;
3819
+ transition: opacity var(--boxel-transition);
3820
+ pointer-events: none;
3821
+ }
3822
+ @media (hover: hover) {
3823
+ .story[data-scopedcss-3416374426-c845240858]:not(.is-pending):hover::after {
3824
+ opacity: 1;
3810
3825
  }
3811
3826
  }
3827
+ /* Keeps the hover ring off the keyboard ring. */
3828
+ .story[data-scopedcss-3416374426-c845240858]:has(.story-open:focus-visible)::after {
3829
+ opacity: 0;
3830
+ }
3812
3831
  /* The story draws the keyboard ring around the whole card. */
3813
- .story[data-scopedcss-3416374426-d3bda51cf4]:has(.story-open:focus-visible) {
3832
+ .story[data-scopedcss-3416374426-c845240858]:has(.story-open:focus-visible) {
3814
3833
  box-shadow: var(--dashboard-ring), var(--shadow-md);
3815
3834
  }
3816
3835
  /* The papers, in turn: warm, ink, mint, lilac. */
3817
- .tint-warm[data-scopedcss-3416374426-d3bda51cf4] {
3836
+ .tint-warm[data-scopedcss-3416374426-c845240858] {
3818
3837
  --_story-paper: color-mix(
3819
3838
  in oklch,
3820
3839
  color-mix(in oklch, var(--boxel-light) 90%, var(--boxel-orange)) 95%,
@@ -3826,7 +3845,7 @@
3826
3845
  var(--boxel-dark)
3827
3846
  );
3828
3847
  }
3829
- .tint-ink[data-scopedcss-3416374426-d3bda51cf4] {
3848
+ .tint-ink[data-scopedcss-3416374426-c845240858] {
3830
3849
  --_story-paper: color-mix(
3831
3850
  in oklch,
3832
3851
  var(--boxel-purple) 18%,
@@ -3834,7 +3853,7 @@
3834
3853
  );
3835
3854
  --_story-accent: var(--boxel-highlight);
3836
3855
  }
3837
- .tint-mint[data-scopedcss-3416374426-d3bda51cf4] {
3856
+ .tint-mint[data-scopedcss-3416374426-c845240858] {
3838
3857
  --_story-paper: color-mix(
3839
3858
  in oklch,
3840
3859
  var(--boxel-teal) 16%,
@@ -3846,7 +3865,7 @@
3846
3865
  var(--boxel-dark)
3847
3866
  );
3848
3867
  }
3849
- .tint-lilac[data-scopedcss-3416374426-d3bda51cf4] {
3868
+ .tint-lilac[data-scopedcss-3416374426-c845240858] {
3850
3869
  --_story-paper: color-mix(
3851
3870
  in oklch,
3852
3871
  var(--boxel-lilac) 16%,
@@ -3859,7 +3878,7 @@
3859
3878
  );
3860
3879
  }
3861
3880
  /* Host chrome has no CardContainer zeroing these margins. */
3862
- .eyebrow[data-scopedcss-3416374426-d3bda51cf4] {
3881
+ .eyebrow[data-scopedcss-3416374426-c845240858] {
3863
3882
  margin: 0;
3864
3883
  font-family: var(--boxel-monospace-font-family);
3865
3884
  font-size: var(--boxel-font-size-2xs);
@@ -3870,7 +3889,7 @@
3870
3889
  }
3871
3890
  /* Always two lines tall, so the art lines up across a row and the
3872
3891
  stand-ins match. */
3873
- .headline[data-scopedcss-3416374426-d3bda51cf4] {
3892
+ .headline[data-scopedcss-3416374426-c845240858] {
3874
3893
  min-width: 0;
3875
3894
  min-height: calc(
3876
3895
  var(--_catalog-shelf-headline-lines) *
@@ -3883,7 +3902,7 @@
3883
3902
  letter-spacing: -0.015em;
3884
3903
  }
3885
3904
  /* Its hit area covers the story; the actions sit above it. */
3886
- .story-open[data-scopedcss-3416374426-d3bda51cf4] {
3905
+ .story-open[data-scopedcss-3416374426-c845240858] {
3887
3906
  display: block;
3888
3907
  max-width: 100%;
3889
3908
  padding: 0;
@@ -3898,14 +3917,14 @@
3898
3917
  text-align: start;
3899
3918
  }
3900
3919
  /* A button ignores line-clamp, so its inner text clamps instead. */
3901
- .headline-text[data-scopedcss-3416374426-d3bda51cf4] {
3920
+ .headline-text[data-scopedcss-3416374426-c845240858] {
3902
3921
  display: -webkit-box;
3903
3922
  overflow: hidden;
3904
3923
  -webkit-box-orient: vertical;
3905
3924
  -webkit-line-clamp: var(--_catalog-shelf-headline-lines);
3906
3925
  overflow-wrap: break-word;
3907
3926
  }
3908
- .story-open[data-scopedcss-3416374426-d3bda51cf4]::after {
3927
+ .story-open[data-scopedcss-3416374426-c845240858]::after {
3909
3928
  content: '';
3910
3929
  position: absolute;
3911
3930
  inset: 0;
@@ -3914,10 +3933,10 @@
3914
3933
  }
3915
3934
  /* The story draws the ring; the transparent outline stands in for it
3916
3935
  in forced-colors mode, which drops box-shadows. */
3917
- .story-open[data-scopedcss-3416374426-d3bda51cf4]:focus-visible {
3936
+ .story-open[data-scopedcss-3416374426-c845240858]:focus-visible {
3918
3937
  outline: 2px solid transparent;
3919
3938
  }
3920
- .art[data-scopedcss-3416374426-d3bda51cf4] {
3939
+ .art[data-scopedcss-3416374426-c845240858] {
3921
3940
  position: relative;
3922
3941
  flex: none;
3923
3942
  height: var(--_catalog-shelf-art-height);
@@ -3927,7 +3946,7 @@
3927
3946
  box-shadow: 0 0 0 1px var(--boxel-dark-10);
3928
3947
  }
3929
3948
  /* The example card, laid out as a page and zoomed into the frame. */
3930
- .art-page[data-scopedcss-3416374426-d3bda51cf4] {
3949
+ .art-page[data-scopedcss-3416374426-c845240858] {
3931
3950
  position: absolute;
3932
3951
  top: 0;
3933
3952
  left: 0;
@@ -3940,14 +3959,14 @@
3940
3959
  }
3941
3960
  /* The thumbnail is an icon, so it shows whole and centered rather than
3942
3961
  cropped to fill the frame. */
3943
- .thumbnail[data-scopedcss-3416374426-d3bda51cf4] {
3962
+ .thumbnail[data-scopedcss-3416374426-c845240858] {
3944
3963
  display: block;
3945
3964
  width: 100%;
3946
3965
  height: 70%;
3947
3966
  margin-top: calc(var(--_catalog-shelf-art-height) * 0.15);
3948
3967
  object-fit: contain;
3949
3968
  }
3950
- .copy[data-scopedcss-3416374426-d3bda51cf4] {
3969
+ .copy[data-scopedcss-3416374426-c845240858] {
3951
3970
  display: -webkit-box;
3952
3971
  margin: 0;
3953
3972
  overflow: hidden;
@@ -3962,7 +3981,7 @@
3962
3981
  line-height: var(--_catalog-shelf-copy-leading);
3963
3982
  color: var(--muted-foreground);
3964
3983
  }
3965
- .actions[data-scopedcss-3416374426-d3bda51cf4] {
3984
+ .actions[data-scopedcss-3416374426-c845240858] {
3966
3985
  display: flex;
3967
3986
  justify-content: flex-end;
3968
3987
  gap: var(--boxel-sp-xs);
@@ -3971,7 +3990,7 @@
3971
3990
  border-top: 1px solid var(--_story-edge);
3972
3991
  }
3973
3992
  /* Above the headline's hit area. */
3974
- .action[data-scopedcss-3416374426-d3bda51cf4] {
3993
+ .action[data-scopedcss-3416374426-c845240858] {
3975
3994
  --pretui-button-h: var(--_catalog-shelf-action-height);
3976
3995
  --pretui-button-px: var(--boxel-sp-sm);
3977
3996
  position: relative;
@@ -3979,26 +3998,26 @@
3979
3998
  }
3980
3999
  /* The theme's ring vanishes on the light papers; the accent shows on
3981
4000
  every paper. */
3982
- .action[data-scopedcss-3416374426-d3bda51cf4]:focus-visible {
4001
+ .action[data-scopedcss-3416374426-c845240858]:focus-visible {
3983
4002
  outline-color: var(--_story-accent);
3984
4003
  }
3985
- .see-all[data-scopedcss-3416374426-d3bda51cf4] {
4004
+ .see-all[data-scopedcss-3416374426-c845240858] {
3986
4005
  align-self: flex-start;
3987
4006
  }
3988
- .story.is-pending[data-scopedcss-3416374426-d3bda51cf4] {
4007
+ .story.is-pending[data-scopedcss-3416374426-c845240858] {
3989
4008
  --_story-edge: transparent;
3990
4009
  background-color: var(--boxel-dark-50);
3991
4010
  box-shadow: none;
3992
4011
  }
3993
- .is-pending .art[data-scopedcss-3416374426-d3bda51cf4] {
4012
+ .is-pending .art[data-scopedcss-3416374426-c845240858] {
3994
4013
  background-color: var(--boxel-dark-50);
3995
4014
  box-shadow: none;
3996
4015
  }
3997
- .pending-action[data-scopedcss-3416374426-d3bda51cf4] {
4016
+ .pending-action[data-scopedcss-3416374426-c845240858] {
3998
4017
  display: block;
3999
4018
  height: var(--_catalog-shelf-action-height);
4000
4019
  }
4001
- .see-all.is-pending[data-scopedcss-3416374426-d3bda51cf4] {
4020
+ .see-all.is-pending[data-scopedcss-3416374426-c845240858] {
4002
4021
  visibility: hidden;
4003
4022
  }
4004
4023
 
@@ -4159,7 +4178,7 @@
4159
4178
  }
4160
4179
  }
4161
4180
 
4162
- .workspace[data-scopedcss-75f737c827-b49bef8378] {
4181
+ .workspace[data-scopedcss-75f737c827-52fffa2d9f] {
4163
4182
  --_workspace-control-size: var(--boxel-button-xs);
4164
4183
  --_workspace-control-radius: var(--boxel-border-radius-sm);
4165
4184
  --_workspace-control-inset: 0.5rem;
@@ -4182,30 +4201,30 @@
4182
4201
  min-width: 0;
4183
4202
  color: var(--boxel-light);
4184
4203
  }
4185
- .workspace.is-loading[data-scopedcss-75f737c827-b49bef8378] {
4204
+ .workspace.is-loading[data-scopedcss-75f737c827-52fffa2d9f] {
4186
4205
  align-items: center;
4187
4206
  justify-content: center;
4188
4207
  height: var(--dashboard-tile-height);
4189
4208
  border-radius: var(--dashboard-tile-radius);
4190
4209
  background-color: var(--boxel-dark-50);
4191
4210
  }
4192
- .workspace.is-loading.is-desk[data-scopedcss-75f737c827-b49bef8378] {
4211
+ .workspace.is-loading.is-desk[data-scopedcss-75f737c827-52fffa2d9f] {
4193
4212
  height: var(--_workspace-desk-height);
4194
4213
  border-radius: var(--_workspace-desk-radius);
4195
4214
  }
4196
4215
  /* Transparent rather than none, so forced-colors mode, which drops
4197
4216
  the ring's box-shadow, still draws a focus outline. */
4198
- .workspace.is-loading[data-scopedcss-75f737c827-b49bef8378]:focus {
4217
+ .workspace.is-loading[data-scopedcss-75f737c827-52fffa2d9f]:focus {
4199
4218
  outline: 2px solid transparent;
4200
4219
  }
4201
- .workspace.is-loading.is-selected[data-scopedcss-75f737c827-b49bef8378],
4202
- .workspace.is-loading[data-scopedcss-75f737c827-b49bef8378]:focus-visible {
4220
+ .workspace.is-loading.is-selected[data-scopedcss-75f737c827-52fffa2d9f],
4221
+ .workspace.is-loading[data-scopedcss-75f737c827-52fffa2d9f]:focus-visible {
4203
4222
  box-shadow: var(--dashboard-ring);
4204
4223
  }
4205
4224
 
4206
4225
  /* The wallpaper is its own layer, so a hover can reveal or scale it
4207
4226
  without moving what sits on top. */
4208
- .wallpaper[data-scopedcss-75f737c827-b49bef8378] {
4227
+ .wallpaper[data-scopedcss-75f737c827-52fffa2d9f] {
4209
4228
  position: relative;
4210
4229
  display: flex;
4211
4230
  align-items: center;
@@ -4214,7 +4233,7 @@
4214
4233
  height: 100%;
4215
4234
  overflow: hidden;
4216
4235
  }
4217
- .wallpaper[data-scopedcss-75f737c827-b49bef8378]::before {
4236
+ .wallpaper[data-scopedcss-75f737c827-52fffa2d9f]::before {
4218
4237
  content: '';
4219
4238
  position: absolute;
4220
4239
  inset: 0;
@@ -4225,14 +4244,14 @@
4225
4244
  background-repeat: no-repeat;
4226
4245
  transition: opacity var(--boxel-transition);
4227
4246
  }
4228
- .realm-icon-wrapper[data-scopedcss-75f737c827-b49bef8378] {
4247
+ .realm-icon-wrapper[data-scopedcss-75f737c827-52fffa2d9f] {
4229
4248
  position: relative;
4230
4249
  display: flex;
4231
4250
  flex-shrink: 0;
4232
4251
  border-radius: var(--boxel-border-radius-sm);
4233
4252
  box-shadow: 0 0.125rem 0.375rem var(--boxel-dark-40);
4234
4253
  }
4235
- .realm-icon-wrapper[data-scopedcss-75f737c827-b49bef8378]::after {
4254
+ .realm-icon-wrapper[data-scopedcss-75f737c827-52fffa2d9f]::after {
4236
4255
  content: '';
4237
4256
  position: absolute;
4238
4257
  inset: 0;
@@ -4240,7 +4259,7 @@
4240
4259
  box-shadow: inset 0 0 0 1px var(--boxel-light-50);
4241
4260
  pointer-events: none;
4242
4261
  }
4243
- .workspace-realm-icon[data-scopedcss-75f737c827-b49bef8378] {
4262
+ .workspace-realm-icon[data-scopedcss-75f737c827-52fffa2d9f] {
4244
4263
  --boxel-realm-icon-size: var(--_workspace-icon-size);
4245
4264
  --boxel-realm-icon-border-radius: var(--boxel-border-radius-sm);
4246
4265
  --boxel-realm-icon-background-color: var(--boxel-light);
@@ -4249,8 +4268,8 @@
4249
4268
  /* The star and the menu: glass chips over the wallpaper, shown on
4250
4269
  hover, on keyboard focus inside the workspace, and under the
4251
4270
  cursor's ring. A favorited star stays. The button fills its chip. */
4252
- .favorite-btn[data-scopedcss-75f737c827-b49bef8378],
4253
- .menu-btn[data-scopedcss-75f737c827-b49bef8378] {
4271
+ .favorite-btn[data-scopedcss-75f737c827-52fffa2d9f],
4272
+ .menu-btn[data-scopedcss-75f737c827-52fffa2d9f] {
4254
4273
  --pretui-button-h: var(--_workspace-control-size);
4255
4274
  --pretui-button-radius: var(--_workspace-control-radius);
4256
4275
  position: absolute;
@@ -4265,18 +4284,18 @@
4265
4284
  opacity var(--boxel-transition),
4266
4285
  background-color var(--boxel-transition);
4267
4286
  }
4268
- .favorite-btn[data-scopedcss-75f737c827-b49bef8378] {
4287
+ .favorite-btn[data-scopedcss-75f737c827-52fffa2d9f] {
4269
4288
  left: var(--_workspace-control-inset);
4270
4289
  }
4271
- .menu-btn[data-scopedcss-75f737c827-b49bef8378] {
4290
+ .menu-btn[data-scopedcss-75f737c827-52fffa2d9f] {
4272
4291
  right: var(--_workspace-control-inset);
4273
4292
  }
4274
- .workspace[data-scopedcss-75f737c827-b49bef8378]:hover :is(.favorite-btn, .menu-btn),
4275
- .workspace.is-selected[data-scopedcss-75f737c827-b49bef8378] :is(.favorite-btn, .menu-btn),
4276
- .workspace[data-scopedcss-75f737c827-b49bef8378]:has(:focus-visible:not([data-nav-index]))
4293
+ .workspace[data-scopedcss-75f737c827-52fffa2d9f]:hover :is(.favorite-btn, .menu-btn),
4294
+ .workspace.is-selected[data-scopedcss-75f737c827-52fffa2d9f] :is(.favorite-btn, .menu-btn),
4295
+ .workspace[data-scopedcss-75f737c827-52fffa2d9f]:has(:focus-visible:not([data-nav-index]))
4277
4296
  :is(.favorite-btn, .menu-btn),
4278
- .menu-btn[data-scopedcss-75f737c827-b49bef8378]:has([aria-expanded='true']),
4279
- .favorite-btn.is-favorited[data-scopedcss-75f737c827-b49bef8378] {
4297
+ .menu-btn[data-scopedcss-75f737c827-52fffa2d9f]:has([aria-expanded='true']),
4298
+ .favorite-btn.is-favorited[data-scopedcss-75f737c827-52fffa2d9f] {
4280
4299
  opacity: 1;
4281
4300
  background-color: var(--_workspace-glass);
4282
4301
  backdrop-filter: var(--_workspace-glass-blur);
@@ -4284,23 +4303,23 @@
4284
4303
  /* The icons are colored here: Pret UI's neutral button sets its own
4285
4304
  ink on the button, so a value inherited from the chip wouldn't
4286
4305
  reach them. A favorited or hovered star takes the primary color. */
4287
- .control-icon[data-scopedcss-75f737c827-b49bef8378] {
4306
+ .control-icon[data-scopedcss-75f737c827-52fffa2d9f] {
4288
4307
  color: var(--boxel-light);
4289
4308
  }
4290
- .favorite-btn.is-favorited .control-icon[data-scopedcss-75f737c827-b49bef8378],
4291
- .workspace .favorite-btn:hover .control-icon[data-scopedcss-75f737c827-b49bef8378] {
4309
+ .favorite-btn.is-favorited .control-icon[data-scopedcss-75f737c827-52fffa2d9f],
4310
+ .workspace .favorite-btn:hover .control-icon[data-scopedcss-75f737c827-52fffa2d9f] {
4292
4311
  color: var(--primary);
4293
4312
  }
4294
4313
 
4295
4314
  /* Who can see the workspace: a neutral chip, so it never outweighs the
4296
4315
  name; the dot's hue tells the visibilities apart. */
4297
- .visibility-chip[data-scopedcss-75f737c827-b49bef8378] {
4316
+ .visibility-chip[data-scopedcss-75f737c827-52fffa2d9f] {
4298
4317
  flex: none;
4299
4318
  text-transform: capitalize;
4300
4319
  }
4301
4320
 
4302
4321
  /* Desk. */
4303
- .workspace.is-desk[data-scopedcss-75f737c827-b49bef8378] {
4322
+ .workspace.is-desk[data-scopedcss-75f737c827-52fffa2d9f] {
4304
4323
  --_workspace-control-size: 2.125rem;
4305
4324
  --_workspace-control-inset: var(--boxel-sp-sm);
4306
4325
  --_workspace-glass: color-mix(
@@ -4312,12 +4331,12 @@
4312
4331
  --_workspace-control-radius: var(--boxel-border-radius);
4313
4332
  gap: var(--boxel-sp-xs);
4314
4333
  }
4315
- .workspace.is-desk[data-scopedcss-75f737c827-b49bef8378] :is(.favorite-btn, .menu-btn) {
4334
+ .workspace.is-desk[data-scopedcss-75f737c827-52fffa2d9f] :is(.favorite-btn, .menu-btn) {
4316
4335
  opacity: 1;
4317
4336
  background-color: var(--_workspace-glass);
4318
4337
  backdrop-filter: var(--_workspace-glass-blur);
4319
4338
  }
4320
- .desk-surface[data-scopedcss-75f737c827-b49bef8378] {
4339
+ .desk-surface[data-scopedcss-75f737c827-52fffa2d9f] {
4321
4340
  position: relative;
4322
4341
  box-sizing: border-box;
4323
4342
  display: flex;
@@ -4336,27 +4355,27 @@
4336
4355
  inset 0 0 0 1px var(--boxel-light-25);
4337
4356
  transition: box-shadow var(--boxel-transition);
4338
4357
  }
4339
- .workspace.is-desk:hover .desk-surface[data-scopedcss-75f737c827-b49bef8378] {
4358
+ .workspace.is-desk:hover .desk-surface[data-scopedcss-75f737c827-52fffa2d9f] {
4340
4359
  box-shadow:
4341
4360
  0 0.875rem 2rem var(--boxel-dark-30),
4342
4361
  inset 0 0 0 1px var(--boxel-light-50);
4343
4362
  }
4344
4363
  /* The ring shows under the keyboard cursor and on any keyboard focus,
4345
4364
  as when a modal hands focus back. */
4346
- .workspace.is-desk.is-selected .desk-surface[data-scopedcss-75f737c827-b49bef8378],
4347
- .workspace.is-desk:has(.desk-pill:focus-visible) .desk-surface[data-scopedcss-75f737c827-b49bef8378] {
4365
+ .workspace.is-desk.is-selected .desk-surface[data-scopedcss-75f737c827-52fffa2d9f],
4366
+ .workspace.is-desk:has(.desk-pill:focus-visible) .desk-surface[data-scopedcss-75f737c827-52fffa2d9f] {
4348
4367
  box-shadow:
4349
4368
  var(--dashboard-ring),
4350
4369
  0 0.625rem 1.5rem var(--boxel-dark-10);
4351
4370
  }
4352
4371
  /* The bare wallpaper opens the workspace for a pointer; the keyboard
4353
4372
  has the name pill, so this stays out of the tab order. */
4354
- .desk-hit[data-scopedcss-75f737c827-b49bef8378] {
4373
+ .desk-hit[data-scopedcss-75f737c827-52fffa2d9f] {
4355
4374
  position: absolute;
4356
4375
  inset: 0;
4357
4376
  cursor: pointer;
4358
4377
  }
4359
- .desk-top[data-scopedcss-75f737c827-b49bef8378] {
4378
+ .desk-top[data-scopedcss-75f737c827-52fffa2d9f] {
4360
4379
  position: relative;
4361
4380
  display: flex;
4362
4381
  align-items: center;
@@ -4368,10 +4387,10 @@
4368
4387
  );
4369
4388
  pointer-events: none;
4370
4389
  }
4371
- .desk-pill-tooltip[data-scopedcss-75f737c827-b49bef8378] {
4390
+ .desk-pill-tooltip[data-scopedcss-75f737c827-52fffa2d9f] {
4372
4391
  min-width: 0;
4373
4392
  }
4374
- .desk-pill[data-scopedcss-75f737c827-b49bef8378] {
4393
+ .desk-pill[data-scopedcss-75f737c827-52fffa2d9f] {
4375
4394
  display: inline-flex;
4376
4395
  align-items: center;
4377
4396
  gap: var(--boxel-sp-xs);
@@ -4387,7 +4406,7 @@
4387
4406
  font: 600 var(--boxel-font);
4388
4407
  pointer-events: auto;
4389
4408
  }
4390
- .desk-pill[data-scopedcss-75f737c827-b49bef8378]:hover {
4409
+ .desk-pill[data-scopedcss-75f737c827-52fffa2d9f]:hover {
4391
4410
  background-color: color-mix(
4392
4411
  in oklch,
4393
4412
  var(--boxel-800) 78%,
@@ -4396,22 +4415,22 @@
4396
4415
  }
4397
4416
  /* The surface draws the ring; the transparent outline stands in for
4398
4417
  it in forced-colors mode, which drops box-shadows. */
4399
- .desk-pill[data-scopedcss-75f737c827-b49bef8378]:focus-visible {
4418
+ .desk-pill[data-scopedcss-75f737c827-52fffa2d9f]:focus-visible {
4400
4419
  outline: 2px solid transparent;
4401
4420
  }
4402
- .desk-pill-icon[data-scopedcss-75f737c827-b49bef8378] {
4421
+ .desk-pill-icon[data-scopedcss-75f737c827-52fffa2d9f] {
4403
4422
  --boxel-realm-icon-size: 1.625rem;
4404
4423
  --boxel-realm-icon-border-radius: var(--boxel-border-radius-sm);
4405
4424
  --boxel-realm-icon-background-color: var(--boxel-light);
4406
4425
  flex: none;
4407
4426
  }
4408
- .desk-pill-name[data-scopedcss-75f737c827-b49bef8378] {
4427
+ .desk-pill-name[data-scopedcss-75f737c827-52fffa2d9f] {
4409
4428
  min-width: 0;
4410
4429
  overflow: hidden;
4411
4430
  text-overflow: ellipsis;
4412
4431
  white-space: nowrap;
4413
4432
  }
4414
- .desk-live[data-scopedcss-75f737c827-b49bef8378] {
4433
+ .desk-live[data-scopedcss-75f737c827-52fffa2d9f] {
4415
4434
  --hosted-pill-background: var(--_workspace-glass);
4416
4435
  margin-left: auto;
4417
4436
  backdrop-filter: var(--_workspace-glass-blur);
@@ -4421,7 +4440,7 @@
4421
4440
  the drawn collage, not the link count, so a desk whose pins have
4422
4441
  no rendering yet keeps its wallpaper. A hover brings a little of
4423
4442
  it back. */
4424
- .desk-surface[data-scopedcss-75f737c827-b49bef8378]:has([data-pinned-collage])::before {
4443
+ .desk-surface[data-scopedcss-75f737c827-52fffa2d9f]:has([data-pinned-collage])::before {
4425
4444
  content: '';
4426
4445
  position: absolute;
4427
4446
  inset: 0;
@@ -4429,13 +4448,13 @@
4429
4448
  transition: background-color var(--boxel-transition);
4430
4449
  }
4431
4450
  .workspace.is-desk:hover
4432
- .desk-surface[data-scopedcss-75f737c827-b49bef8378]:has([data-pinned-collage])::before {
4451
+ .desk-surface[data-scopedcss-75f737c827-52fffa2d9f]:has([data-pinned-collage])::before {
4433
4452
  background-color: var(--boxel-dark-40);
4434
4453
  }
4435
- .desk-pins[data-scopedcss-75f737c827-b49bef8378] {
4454
+ .desk-pins[data-scopedcss-75f737c827-52fffa2d9f] {
4436
4455
  flex: 1;
4437
4456
  }
4438
- .desk-caption[data-scopedcss-75f737c827-b49bef8378] {
4457
+ .desk-caption[data-scopedcss-75f737c827-52fffa2d9f] {
4439
4458
  display: flex;
4440
4459
  flex-direction: column;
4441
4460
  gap: var(--boxel-sp-5xs);
@@ -4443,31 +4462,31 @@
4443
4462
  color: var(--muted-foreground);
4444
4463
  font: 400 var(--boxel-font-sm);
4445
4464
  }
4446
- .desk-caption-line[data-scopedcss-75f737c827-b49bef8378] {
4465
+ .desk-caption-line[data-scopedcss-75f737c827-52fffa2d9f] {
4447
4466
  display: flex;
4448
4467
  flex-wrap: wrap;
4449
4468
  align-items: center;
4450
4469
  gap: var(--boxel-sp-5xs) var(--boxel-sp-sm);
4451
4470
  min-height: var(--_workspace-chip-height);
4452
4471
  }
4453
- .desk-stats[data-scopedcss-75f737c827-b49bef8378] {
4472
+ .desk-stats[data-scopedcss-75f737c827-52fffa2d9f] {
4454
4473
  display: inline-flex;
4455
4474
  flex-wrap: wrap;
4456
4475
  gap: var(--boxel-sp-sm);
4457
4476
  min-height: 1lh;
4458
4477
  }
4459
- .desk-stat[data-scopedcss-75f737c827-b49bef8378] {
4478
+ .desk-stat[data-scopedcss-75f737c827-52fffa2d9f] {
4460
4479
  display: inline-flex;
4461
4480
  gap: var(--boxel-sp-5xs);
4462
4481
  }
4463
4482
  /* Counts arrive late and change on re-index; fixed-width digits keep
4464
4483
  the caption from shifting. */
4465
- .desk-stat-number[data-scopedcss-75f737c827-b49bef8378] {
4484
+ .desk-stat-number[data-scopedcss-75f737c827-52fffa2d9f] {
4466
4485
  color: var(--foreground);
4467
4486
  font-weight: 600;
4468
4487
  font-variant-numeric: tabular-nums;
4469
4488
  }
4470
- .desk-host-line[data-scopedcss-75f737c827-b49bef8378] {
4489
+ .desk-host-line[data-scopedcss-75f737c827-52fffa2d9f] {
4471
4490
  display: flex;
4472
4491
  align-items: center;
4473
4492
  gap: var(--boxel-sp-4xs);
@@ -4475,7 +4494,7 @@
4475
4494
  color: var(--foreground);
4476
4495
  white-space: nowrap;
4477
4496
  }
4478
- .desk-host-dot[data-scopedcss-75f737c827-b49bef8378] {
4497
+ .desk-host-dot[data-scopedcss-75f737c827-52fffa2d9f] {
4479
4498
  flex: none;
4480
4499
  width: 0.4375rem;
4481
4500
  height: 0.4375rem;
@@ -4484,7 +4503,7 @@
4484
4503
  }
4485
4504
  /* Positioned, so its screen-reader text is clipped with it instead of
4486
4505
  widening the page. The address truncates; the arrow always shows. */
4487
- .desk-host-link[data-scopedcss-75f737c827-b49bef8378] {
4506
+ .desk-host-link[data-scopedcss-75f737c827-52fffa2d9f] {
4488
4507
  position: relative;
4489
4508
  display: inline-flex;
4490
4509
  gap: var(--boxel-sp-5xs);
@@ -4494,13 +4513,13 @@
4494
4513
  font-weight: 600;
4495
4514
  text-underline-offset: 0.1875rem;
4496
4515
  }
4497
- .desk-host-url[data-scopedcss-75f737c827-b49bef8378] {
4516
+ .desk-host-url[data-scopedcss-75f737c827-52fffa2d9f] {
4498
4517
  min-width: 0;
4499
4518
  overflow: hidden;
4500
4519
  text-overflow: ellipsis;
4501
4520
  }
4502
4521
  /* As tall as a line of the caption, where a Button would be taller. */
4503
- .desk-host-more[data-scopedcss-75f737c827-b49bef8378] {
4522
+ .desk-host-more[data-scopedcss-75f737c827-52fffa2d9f] {
4504
4523
  --pretui-button-h: 1lh;
4505
4524
  flex: none;
4506
4525
  box-sizing: border-box;
@@ -4509,12 +4528,12 @@
4509
4528
 
4510
4529
  /* Tile: the wallpaper face, its hosted chin, then the name and who can
4511
4530
  see it. */
4512
- .workspace.is-tile[data-scopedcss-75f737c827-b49bef8378] {
4531
+ .workspace.is-tile[data-scopedcss-75f737c827-52fffa2d9f] {
4513
4532
  gap: var(--boxel-sp-xs);
4514
4533
  }
4515
4534
  /* The face's frame, and the cursor's ring when it rests here. Drawn
4516
4535
  over the face, whose wallpaper would cover an inset shadow. */
4517
- .workspace.is-tile[data-scopedcss-75f737c827-b49bef8378]::after {
4536
+ .workspace.is-tile[data-scopedcss-75f737c827-52fffa2d9f]::after {
4518
4537
  content: '';
4519
4538
  position: absolute;
4520
4539
  top: 0;
@@ -4527,15 +4546,15 @@
4527
4546
  border-radius: var(--dashboard-tile-radius);
4528
4547
  pointer-events: none;
4529
4548
  }
4530
- .workspace.is-tile[data-scopedcss-75f737c827-b49bef8378]:hover::after {
4549
+ .workspace.is-tile[data-scopedcss-75f737c827-52fffa2d9f]:hover::after {
4531
4550
  border-color: var(--boxel-light-50);
4532
4551
  }
4533
- .workspace.is-tile.is-selected[data-scopedcss-75f737c827-b49bef8378]::after,
4534
- .workspace.is-tile[data-scopedcss-75f737c827-b49bef8378]:has(.tile-face:focus-visible)::after {
4552
+ .workspace.is-tile.is-selected[data-scopedcss-75f737c827-52fffa2d9f]::after,
4553
+ .workspace.is-tile[data-scopedcss-75f737c827-52fffa2d9f]:has(.tile-face:focus-visible)::after {
4535
4554
  border-color: var(--boxel-highlight);
4536
4555
  box-shadow: 0 0 0 1px var(--boxel-highlight);
4537
4556
  }
4538
- .host-menu[data-scopedcss-75f737c827-b49bef8378] {
4557
+ .host-menu[data-scopedcss-75f737c827-52fffa2d9f] {
4539
4558
  position: absolute;
4540
4559
  top: calc(var(--dashboard-tile-height) - var(--_workspace-chin-height));
4541
4560
  left: 0;
@@ -4546,16 +4565,16 @@
4546
4565
  }
4547
4566
  /* The open menu's panel is stacked with the chin, so the chin rises
4548
4567
  above the tile's frame, which would otherwise draw across it. */
4549
- .workspace.is-open .host-menu[data-scopedcss-75f737c827-b49bef8378] {
4568
+ .workspace.is-open .host-menu[data-scopedcss-75f737c827-52fffa2d9f] {
4550
4569
  z-index: 5;
4551
4570
  }
4552
4571
  /* Pret UI's Menu has no knob to stretch its trigger's box. */
4553
- .host-menu-wrap[data-scopedcss-75f737c827-b49bef8378],
4554
- .host-menu[data-scopedcss-75f737c827-b49bef8378] .pretui-menu-trigger {
4572
+ .host-menu-wrap[data-scopedcss-75f737c827-52fffa2d9f],
4573
+ .host-menu[data-scopedcss-75f737c827-52fffa2d9f] .pretui-menu-trigger {
4555
4574
  width: 100%;
4556
4575
  height: 100%;
4557
4576
  }
4558
- .host-trigger[data-scopedcss-75f737c827-b49bef8378] {
4577
+ .host-trigger[data-scopedcss-75f737c827-52fffa2d9f] {
4559
4578
  box-sizing: border-box;
4560
4579
  display: flex;
4561
4580
  align-items: center;
@@ -4571,19 +4590,19 @@
4571
4590
  backdrop-filter: var(--_workspace-glass-blur);
4572
4591
  color: var(--boxel-light);
4573
4592
  }
4574
- .host-trigger[data-scopedcss-75f737c827-b49bef8378]:hover {
4593
+ .host-trigger[data-scopedcss-75f737c827-52fffa2d9f]:hover {
4575
4594
  background-color: var(--boxel-dark-50);
4576
4595
  }
4577
- .host-trigger[data-scopedcss-75f737c827-b49bef8378]:focus-visible {
4596
+ .host-trigger[data-scopedcss-75f737c827-52fffa2d9f]:focus-visible {
4578
4597
  outline: 2px solid var(--ring);
4579
4598
  outline-offset: -2px;
4580
4599
  }
4581
4600
  /* Lime is Hosted's color in every variant. */
4582
- .host-trigger-globe[data-scopedcss-75f737c827-b49bef8378] {
4601
+ .host-trigger-globe[data-scopedcss-75f737c827-52fffa2d9f] {
4583
4602
  flex-shrink: 0;
4584
4603
  color: var(--boxel-lime);
4585
4604
  }
4586
- .host-trigger-url[data-scopedcss-75f737c827-b49bef8378] {
4605
+ .host-trigger-url[data-scopedcss-75f737c827-52fffa2d9f] {
4587
4606
  flex: 1;
4588
4607
  min-width: 0;
4589
4608
  overflow: hidden;
@@ -4592,11 +4611,11 @@
4592
4611
  white-space: nowrap;
4593
4612
  font: 400 var(--boxel-font-xs);
4594
4613
  }
4595
- .host-trigger-more[data-scopedcss-75f737c827-b49bef8378] {
4614
+ .host-trigger-more[data-scopedcss-75f737c827-52fffa2d9f] {
4596
4615
  flex-shrink: 0;
4597
4616
  font: 600 var(--boxel-font-xs);
4598
4617
  }
4599
- .info[data-scopedcss-75f737c827-b49bef8378] {
4618
+ .info[data-scopedcss-75f737c827-52fffa2d9f] {
4600
4619
  display: flex;
4601
4620
  flex-direction: column;
4602
4621
  align-items: center;
@@ -4605,7 +4624,7 @@
4605
4624
  }
4606
4625
  /* One line under every tile, so tiles keep one height and their chips
4607
4626
  line up across the row. */
4608
- .name[data-scopedcss-75f737c827-b49bef8378] {
4627
+ .name[data-scopedcss-75f737c827-52fffa2d9f] {
4609
4628
  display: block;
4610
4629
  width: 100%;
4611
4630
  overflow: hidden;
@@ -4617,7 +4636,7 @@
4617
4636
  }
4618
4637
 
4619
4638
  /* Row: a thumbnail, the name, who can see it and when it changed. */
4620
- .workspace.is-row[data-scopedcss-75f737c827-b49bef8378] {
4639
+ .workspace.is-row[data-scopedcss-75f737c827-52fffa2d9f] {
4621
4640
  --_workspace-control-inset: 0.375rem;
4622
4641
  --_workspace-control-step: calc(
4623
4642
  var(--_workspace-control-size) + var(--boxel-sp-4xs)
@@ -4640,66 +4659,71 @@
4640
4659
  var(--boxel-sp-xs) var(--boxel-sp-xs);
4641
4660
  border-radius: var(--dashboard-tile-radius);
4642
4661
  background-color: var(--dashboard-row-tint);
4643
- box-shadow: inset 0 0 0 1px var(--boxel-light-10);
4644
- transition: background-color var(--boxel-transition);
4662
+ box-shadow: inset 0 0 0 1px var(--boxel-light-25);
4663
+ transition:
4664
+ background-color var(--boxel-transition),
4665
+ box-shadow var(--boxel-transition);
4645
4666
  }
4646
- .workspace.is-row[data-scopedcss-75f737c827-b49bef8378]:has(.host-menu) {
4667
+ .workspace.is-row[data-scopedcss-75f737c827-52fffa2d9f]:has(.host-menu) {
4647
4668
  --_workspace-controls: 3;
4648
4669
  }
4649
- .workspace.is-row[data-scopedcss-75f737c827-b49bef8378]:hover {
4650
- background-color: var(--_workspace-row-tint-hover);
4670
+ @media (hover: hover) {
4671
+ .workspace.is-row[data-scopedcss-75f737c827-52fffa2d9f]:hover {
4672
+ background-color: var(--_workspace-row-tint-hover);
4673
+ box-shadow: inset 0 0 0 1px var(--boxel-light-50);
4674
+ }
4651
4675
  }
4652
4676
  /* Over the list's scrim, so a row the cursor rests on is never hidden
4653
4677
  under it; the Show more toggle, later in the page at the same level,
4654
4678
  stays on top. */
4655
- .workspace.is-row.is-selected[data-scopedcss-75f737c827-b49bef8378],
4656
- .workspace.is-row[data-scopedcss-75f737c827-b49bef8378]:has(.row-open:focus-visible) {
4679
+ .workspace.is-row.is-selected[data-scopedcss-75f737c827-52fffa2d9f],
4680
+ .workspace.is-row[data-scopedcss-75f737c827-52fffa2d9f]:has(.row-open:focus-visible) {
4657
4681
  z-index: 3;
4658
4682
  box-shadow: inset 0 0 0 2px var(--boxel-highlight);
4659
4683
  }
4660
4684
  /* With its site menu open, the workspace sits above its neighbors and
4661
4685
  the selected row, so the menu isn't drawn under them. */
4662
- .workspace.is-open[data-scopedcss-75f737c827-b49bef8378] {
4686
+ .workspace.is-open[data-scopedcss-75f737c827-52fffa2d9f] {
4663
4687
  z-index: 5;
4664
4688
  }
4665
4689
  /* A long list of wallpapers is noise at scan distance: the row shows
4666
4690
  the realm's mark, and its wallpaper only while hovered. */
4667
- .row-thumb[data-scopedcss-75f737c827-b49bef8378] {
4691
+ .row-thumb[data-scopedcss-75f737c827-52fffa2d9f] {
4668
4692
  flex: none;
4669
4693
  width: calc(var(--dashboard-row-height) - 2 * var(--boxel-sp-xs));
4670
4694
  height: 100%;
4671
4695
  border-radius: var(--boxel-border-radius-lg);
4672
4696
  background-color: var(--dashboard-thumb-tint);
4673
4697
  }
4674
- .row-thumb[data-scopedcss-75f737c827-b49bef8378]::before {
4698
+ .row-thumb[data-scopedcss-75f737c827-52fffa2d9f]::before {
4675
4699
  opacity: 0;
4676
4700
  }
4677
- .workspace.is-row:hover .row-thumb[data-scopedcss-75f737c827-b49bef8378]::before {
4701
+ .workspace.is-row:hover .row-thumb[data-scopedcss-75f737c827-52fffa2d9f]::before {
4678
4702
  opacity: 1;
4679
4703
  }
4680
- .row-icon-tooltip[data-scopedcss-75f737c827-b49bef8378] {
4704
+ .row-icon-tooltip[data-scopedcss-75f737c827-52fffa2d9f] {
4681
4705
  position: relative;
4682
4706
  z-index: 2;
4683
4707
  cursor: pointer;
4684
4708
  }
4685
- .is-row .info[data-scopedcss-75f737c827-b49bef8378] {
4709
+ .is-row .info[data-scopedcss-75f737c827-52fffa2d9f] {
4686
4710
  flex: 1;
4687
4711
  align-items: flex-start;
4688
4712
  gap: var(--boxel-sp-4xs);
4689
4713
  }
4690
- .is-row .name[data-scopedcss-75f737c827-b49bef8378] {
4714
+ .is-row .name[data-scopedcss-75f737c827-52fffa2d9f] {
4691
4715
  font-weight: 600;
4692
4716
  text-align: left;
4693
4717
  }
4694
4718
  /* A button ignores line-clamp, so the name truncates on one line. Its
4695
4719
  hit area covers the row; the controls sit above it. */
4696
- .row-open[data-scopedcss-75f737c827-b49bef8378] {
4720
+ .row-open[data-scopedcss-75f737c827-52fffa2d9f] {
4697
4721
  padding: 0;
4698
4722
  border: 0;
4699
4723
  background-color: transparent;
4700
4724
  color: var(--boxel-light);
4701
4725
  }
4702
- .row-open[data-scopedcss-75f737c827-b49bef8378]::after {
4726
+ .row-open[data-scopedcss-75f737c827-52fffa2d9f]::after {
4703
4727
  content: '';
4704
4728
  position: absolute;
4705
4729
  inset: 0;
@@ -4708,11 +4732,11 @@
4708
4732
  }
4709
4733
  /* The row draws the ring; the transparent outline stands in for it in
4710
4734
  forced-colors mode, which drops box-shadows. */
4711
- .row-open[data-scopedcss-75f737c827-b49bef8378]:focus-visible {
4735
+ .row-open[data-scopedcss-75f737c827-52fffa2d9f]:focus-visible {
4712
4736
  outline: 2px solid transparent;
4713
4737
  }
4714
4738
  /* Under the row's hit area, so a click on it opens the workspace. */
4715
- .updated[data-scopedcss-75f737c827-b49bef8378] {
4739
+ .updated[data-scopedcss-75f737c827-52fffa2d9f] {
4716
4740
  position: absolute;
4717
4741
  right: var(--boxel-sp-sm);
4718
4742
  bottom: var(--boxel-sp-xs);
@@ -4727,13 +4751,13 @@
4727
4751
  /* The row's controls gather top-right, above the time: the menu at the
4728
4752
  end, the star before it and, on a hosted row, the globe before
4729
4753
  that. */
4730
- .is-row .favorite-btn[data-scopedcss-75f737c827-b49bef8378] {
4754
+ .is-row .favorite-btn[data-scopedcss-75f737c827-52fffa2d9f] {
4731
4755
  left: auto;
4732
4756
  right: calc(
4733
4757
  var(--_workspace-control-inset) + var(--_workspace-control-step)
4734
4758
  );
4735
4759
  }
4736
- .is-row .host-menu[data-scopedcss-75f737c827-b49bef8378] {
4760
+ .is-row .host-menu[data-scopedcss-75f737c827-52fffa2d9f] {
4737
4761
  top: var(--_workspace-control-inset);
4738
4762
  left: auto;
4739
4763
  right: calc(
@@ -4744,24 +4768,24 @@
4744
4768
  opacity: 0;
4745
4769
  transition: opacity var(--boxel-transition);
4746
4770
  }
4747
- .is-row .host-trigger[data-scopedcss-75f737c827-b49bef8378] {
4771
+ .is-row .host-trigger[data-scopedcss-75f737c827-52fffa2d9f] {
4748
4772
  justify-content: center;
4749
4773
  padding: 0;
4750
4774
  border-radius: 50%;
4751
4775
  }
4752
- .workspace.is-row:hover .host-menu[data-scopedcss-75f737c827-b49bef8378],
4753
- .workspace.is-row.is-open .host-menu[data-scopedcss-75f737c827-b49bef8378],
4754
- .workspace.is-row.is-selected .host-menu[data-scopedcss-75f737c827-b49bef8378],
4755
- .is-row .host-menu[data-scopedcss-75f737c827-b49bef8378]:has(:focus-visible) {
4776
+ .workspace.is-row:hover .host-menu[data-scopedcss-75f737c827-52fffa2d9f],
4777
+ .workspace.is-row.is-open .host-menu[data-scopedcss-75f737c827-52fffa2d9f],
4778
+ .workspace.is-row.is-selected .host-menu[data-scopedcss-75f737c827-52fffa2d9f],
4779
+ .is-row .host-menu[data-scopedcss-75f737c827-52fffa2d9f]:has(:focus-visible) {
4756
4780
  opacity: 1;
4757
4781
  }
4758
- .is-row[data-scopedcss-75f737c827-b49bef8378] :is(.host-trigger-url, .host-trigger-more) {
4782
+ .is-row[data-scopedcss-75f737c827-52fffa2d9f] :is(.host-trigger-url, .host-trigger-more) {
4759
4783
  display: none;
4760
4784
  }
4761
4785
 
4762
4786
  /* Above an open site menu's chin, which sits over the face too. The
4763
4787
  menu's panel opens below the face, out of the alert's way. */
4764
- .reindex-error[data-scopedcss-75f737c827-b49bef8378] {
4788
+ .reindex-error[data-scopedcss-75f737c827-52fffa2d9f] {
4765
4789
  position: absolute;
4766
4790
  top: 0;
4767
4791
  left: 0;
@@ -4780,30 +4804,30 @@
4780
4804
  font: 600 var(--boxel-font-xs);
4781
4805
  }
4782
4806
  /* Within the face, not over the name or caption beneath it. */
4783
- .is-tile .reindex-error[data-scopedcss-75f737c827-b49bef8378] {
4807
+ .is-tile .reindex-error[data-scopedcss-75f737c827-52fffa2d9f] {
4784
4808
  max-height: var(--dashboard-tile-height);
4785
4809
  }
4786
- .is-desk .reindex-error[data-scopedcss-75f737c827-b49bef8378] {
4810
+ .is-desk .reindex-error[data-scopedcss-75f737c827-52fffa2d9f] {
4787
4811
  max-height: var(--_workspace-desk-height);
4788
4812
  }
4789
4813
  /* The whole error shows; a long one scrolls inside the tile, under a
4790
4814
  dismiss button that stays put. Stretched, it takes the alert's
4791
4815
  clamped height. */
4792
- .reindex-error-message[data-scopedcss-75f737c827-b49bef8378] {
4816
+ .reindex-error-message[data-scopedcss-75f737c827-52fffa2d9f] {
4793
4817
  flex: 1;
4794
4818
  align-self: stretch;
4795
4819
  min-width: 0;
4796
4820
  overflow-y: auto;
4797
4821
  overflow-wrap: break-word;
4798
4822
  }
4799
- .reindex-error-message[data-scopedcss-75f737c827-b49bef8378]:focus-visible {
4823
+ .reindex-error-message[data-scopedcss-75f737c827-52fffa2d9f]:focus-visible {
4800
4824
  outline: 2px solid var(--ring);
4801
4825
  }
4802
- .reindex-error-dismiss[data-scopedcss-75f737c827-b49bef8378] {
4826
+ .reindex-error-dismiss[data-scopedcss-75f737c827-52fffa2d9f] {
4803
4827
  flex-shrink: 0;
4804
4828
  }
4805
4829
 
4806
- .menu-footer[data-scopedcss-75f737c827-b49bef8378] {
4830
+ .menu-footer[data-scopedcss-75f737c827-52fffa2d9f] {
4807
4831
  position: relative;
4808
4832
  display: flex;
4809
4833
  flex-direction: column;
@@ -4811,13 +4835,13 @@
4811
4835
  padding: var(--boxel-sp-xs) var(--boxel-sp-sm);
4812
4836
  border-top: 1px solid var(--border);
4813
4837
  }
4814
- .menu-footer-row[data-scopedcss-75f737c827-b49bef8378] {
4838
+ .menu-footer-row[data-scopedcss-75f737c827-52fffa2d9f] {
4815
4839
  display: flex;
4816
4840
  align-items: center;
4817
4841
  gap: var(--boxel-sp-6xs);
4818
4842
  }
4819
- .menu-footer-label[data-scopedcss-75f737c827-b49bef8378],
4820
- .menu-footer-value[data-scopedcss-75f737c827-b49bef8378] {
4843
+ .menu-footer-label[data-scopedcss-75f737c827-52fffa2d9f],
4844
+ .menu-footer-value[data-scopedcss-75f737c827-52fffa2d9f] {
4821
4845
  color: var(--muted-foreground);
4822
4846
  font-size: var(--boxel-font-size-2xs);
4823
4847
  }