@crewlethq/ui 0.24.0 → 0.26.0

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 (172) hide show
  1. package/README.md +85 -3
  2. package/dist/ArrangeList/index.js +2 -2
  3. package/dist/ArtifactCover/ArtifactCover.d.ts +37 -0
  4. package/dist/ArtifactCover/DashboardCover.d.ts +46 -0
  5. package/dist/ArtifactCover/index.d.ts +6 -0
  6. package/dist/ArtifactCover/index.js +14 -0
  7. package/dist/ArtifactCover-D4MBEJ5H.css +67 -0
  8. package/dist/ArtifactIcon/ArtifactIcon.d.ts +29 -0
  9. package/dist/ArtifactIcon/index.d.ts +2 -0
  10. package/dist/ArtifactIcon/index.js +13 -0
  11. package/dist/AvatarPicker/index.js +6 -6
  12. package/dist/Canvas/Canvas.d.ts +13 -2
  13. package/dist/Canvas/index.js +1 -1
  14. package/dist/CanvasBoard/CanvasBoard.d.ts +117 -0
  15. package/dist/CanvasBoard/budget.d.ts +38 -0
  16. package/dist/CanvasBoard/index.d.ts +5 -0
  17. package/dist/CanvasBoard/index.js +10 -0
  18. package/dist/CanvasBoard-ZLPDINSM.css +236 -0
  19. package/dist/CanvasSchematic/CanvasSchematic.d.ts +31 -0
  20. package/dist/CanvasSchematic/index.d.ts +3 -0
  21. package/dist/CanvasSchematic/index.js +2 -0
  22. package/dist/CanvasSchematic-PLB3N46J.css +36 -0
  23. package/dist/ChangeMark/index.js +3 -3
  24. package/dist/CharacterPicker/index.js +2 -2
  25. package/dist/Checkbox/Checkbox.d.ts +6 -0
  26. package/dist/Checkbox/index.js +1 -1
  27. package/dist/{Checkbox-KT7RS6QQ.css → Checkbox-5UORUG3F.css} +16 -0
  28. package/dist/CommentThread/index.js +2 -2
  29. package/dist/DashboardCover-RMINBODB.css +143 -0
  30. package/dist/DataTable/index.js +3 -3
  31. package/dist/DataView/index.js +5 -5
  32. package/dist/DatasetSource/DatasetSource.d.ts +83 -0
  33. package/dist/DatasetSource/index.d.ts +3 -0
  34. package/dist/DatasetSource/index.js +7 -0
  35. package/dist/DatasetSource-47LBDMPR.css +129 -0
  36. package/dist/DocTabsEditor/DocTabsEditor.d.ts +60 -0
  37. package/dist/DocTabsEditor/index.d.ts +3 -0
  38. package/dist/DocTabsEditor/index.js +9 -0
  39. package/dist/DocTabsEditor-RCOWHX5J.css +78 -0
  40. package/dist/DownloadButton/index.js +2 -2
  41. package/dist/HuePicker/index.js +4 -4
  42. package/dist/LinkInterstitial/index.js +2 -2
  43. package/dist/MarkdownEditor/index.js +5 -5
  44. package/dist/MergeConflicts/MergeConflicts.d.ts +51 -0
  45. package/dist/MergeConflicts/index.d.ts +3 -0
  46. package/dist/MergeConflicts/index.js +9 -0
  47. package/dist/MergeConflicts-O44ESH4T.css +77 -0
  48. package/dist/Meter/index.js +1 -1
  49. package/dist/{Meter-5VCSFMZW.css → Meter-ZZRFUEOH.css} +15 -0
  50. package/dist/ObjectHeader/ObjectHeader.d.ts +7 -1
  51. package/dist/ObjectHeader/index.js +1 -1
  52. package/dist/{ObjectHeader-UNVYM2KD.css → ObjectHeader-D7GU7QNI.css} +15 -0
  53. package/dist/PeopleRail/index.js +2 -2
  54. package/dist/PresenceModel/index.d.ts +1 -1
  55. package/dist/PresenceModel/index.js +1 -1
  56. package/dist/PresenceModel/presence.d.ts +10 -2
  57. package/dist/PresenceStack/index.js +2 -2
  58. package/dist/PresenterView/PresenterView.d.ts +52 -0
  59. package/dist/PresenterView/index.d.ts +3 -0
  60. package/dist/PresenterView/index.js +8 -0
  61. package/dist/PresenterView-T2C6ZZ3N.css +103 -0
  62. package/dist/Section/index.js +1 -1
  63. package/dist/{Section-QRUPRIQ2.css → Section-QR3ILQVK.css} +4 -1
  64. package/dist/SegmentedControl/SegmentedControl.d.ts +17 -0
  65. package/dist/SegmentedControl/index.js +4 -4
  66. package/dist/{SegmentedControl-PKBLJVSA.css → SegmentedControl-FLI45IOW.css} +13 -0
  67. package/dist/ShareDialog/index.js +3 -3
  68. package/dist/SheetGrid/SheetGrid.d.ts +24 -2
  69. package/dist/SheetGrid/index.js +10 -6
  70. package/dist/{SheetGrid-4HOXDVIB.css → SheetGrid-J3TKKXZL.css} +87 -17
  71. package/dist/SheetModel/edits.d.ts +7 -1
  72. package/dist/SheetModel/index.js +2 -2
  73. package/dist/SheetModel/labels.d.ts +9 -0
  74. package/dist/SheetModel/types.d.ts +6 -0
  75. package/dist/SlideCompare/SlideCompare.d.ts +52 -0
  76. package/dist/SlideCompare/index.d.ts +3 -0
  77. package/dist/SlideCompare/index.js +7 -0
  78. package/dist/SlideCompare-MGM3U2ME.css +80 -0
  79. package/dist/SlideFilmstrip/SlideFilmstrip.d.ts +50 -0
  80. package/dist/SlideFilmstrip/index.d.ts +3 -0
  81. package/dist/SlideFilmstrip/index.js +8 -0
  82. package/dist/SlideFilmstrip-BCLNAHFX.css +108 -0
  83. package/dist/SlideGrid/SlideGrid.d.ts +32 -0
  84. package/dist/SlideGrid/index.d.ts +3 -0
  85. package/dist/SlideGrid/index.js +5 -0
  86. package/dist/SlideGrid-RT6QEQEE.css +82 -0
  87. package/dist/SlideStage/SlideStage.d.ts +47 -0
  88. package/dist/SlideStage/index.d.ts +5 -0
  89. package/dist/SlideStage/index.js +4 -0
  90. package/dist/SlideStage/useSlideKeys.d.ts +21 -0
  91. package/dist/SlideStage-XIOTMMRU.css +32 -0
  92. package/dist/Switcher/index.js +2 -2
  93. package/dist/TableCells/index.js +2 -2
  94. package/dist/Tabs/index.js +2 -2
  95. package/dist/Tabs/roving.d.ts +1 -0
  96. package/dist/TagGroup/TagGroup.d.ts +16 -1
  97. package/dist/TagGroup/index.js +1 -1
  98. package/dist/{TagGroup-BCQZD7ZD.css → TagGroup-NAXTJHDS.css} +22 -0
  99. package/dist/ThemeGallery/index.js +2 -2
  100. package/dist/ThemeSwitcher/index.js +5 -5
  101. package/dist/TreeCanvas/index.js +2 -2
  102. package/dist/VersionCompare/VersionCompare.d.ts +8 -1
  103. package/dist/VersionCompare/index.js +5 -5
  104. package/dist/VersionTimeline/index.js +1 -1
  105. package/dist/{VersionTimeline-EBJ6MIPJ.css → VersionTimeline-6KRXEEOO.css} +7 -7
  106. package/dist/WidgetFrame/WidgetFrame.d.ts +73 -0
  107. package/dist/WidgetFrame/index.d.ts +3 -0
  108. package/dist/WidgetFrame/index.js +6 -0
  109. package/dist/WidgetFrame-4EFJOJMW.css +127 -0
  110. package/dist/chunk-3D7PSL2L.js +438 -0
  111. package/dist/{chunk-SJCKMSQK.js → chunk-5LUI3WQP.js} +1 -1
  112. package/dist/{chunk-IASV5UCP.js → chunk-7T42VQQT.js} +3 -1
  113. package/dist/{chunk-BJCFNRGH.js → chunk-BEHFTRMZ.js} +1 -1
  114. package/dist/chunk-BQYQWJPK.js +80 -0
  115. package/dist/{chunk-KLIEPFEZ.js → chunk-C2FRTWKO.js} +1 -1
  116. package/dist/{chunk-APS747CR.js → chunk-EHQTPVV4.js} +5 -3
  117. package/dist/{chunk-A2UXBCLO.js → chunk-FAQGGX2Z.js} +1 -1
  118. package/dist/chunk-FQCLKD7U.js +2 -0
  119. package/dist/{chunk-J4OKGJQ6.js → chunk-FVLCTCMV.js} +1 -1
  120. package/dist/{chunk-XJFOOXCF.js → chunk-HJEVSQN6.js} +1 -1
  121. package/dist/chunk-HONZQ4UR.js +107 -0
  122. package/dist/{chunk-5PSXBL73.js → chunk-HVIX5ECM.js} +1 -1
  123. package/dist/{chunk-36CWC2NH.js → chunk-INTEH4F3.js} +271 -143
  124. package/dist/{chunk-F6NZOVWL.js → chunk-IW55G7XG.js} +6 -2
  125. package/dist/chunk-KNLJL3VP.js +101 -0
  126. package/dist/chunk-KSSSFLE2.js +105 -0
  127. package/dist/{chunk-TXAFKH2A.js → chunk-KZOGQXSP.js} +6 -0
  128. package/dist/{chunk-CS65QSIJ.js → chunk-LZHLSQYK.js} +2 -2
  129. package/dist/chunk-MQEEQVG6.js +62 -0
  130. package/dist/chunk-NBWNLYWZ.js +62 -0
  131. package/dist/{chunk-YYZRLLLY.js → chunk-NHBP2XS5.js} +19 -3
  132. package/dist/chunk-O2EGEONV.js +90 -0
  133. package/dist/{chunk-YM3GJHGW.js → chunk-ODT5H4MN.js} +1 -1
  134. package/dist/{chunk-JCSXFAXG.js → chunk-OJRDEVHV.js} +1 -1
  135. package/dist/{chunk-U63Y5OCW.js → chunk-PRNX5AFE.js} +2 -2
  136. package/dist/chunk-Q4A5CGUB.js +43 -0
  137. package/dist/{chunk-7QL2OFP6.js → chunk-RCQXUT5K.js} +25 -9
  138. package/dist/{chunk-CBOICT64.js → chunk-RKKO7QHH.js} +2 -0
  139. package/dist/{chunk-TBIZSQHB.js → chunk-RSC7UJCR.js} +1 -1
  140. package/dist/chunk-RWA4H2TV.js +73 -0
  141. package/dist/{chunk-OQT7GSKJ.js → chunk-SGIQCI6Y.js} +1 -1
  142. package/dist/{chunk-35UKQ33X.js → chunk-SVW3VG72.js} +2 -2
  143. package/dist/{chunk-4PZ6FJKW.js → chunk-UGNUUVRI.js} +2 -2
  144. package/dist/chunk-UOR7TOAU.js +191 -0
  145. package/dist/{chunk-XMGB3ZAT.js → chunk-URUGEAFB.js} +3 -2
  146. package/dist/chunk-UZ7ZUSLH.js +179 -0
  147. package/dist/chunk-V2Z24W2Z.js +75 -0
  148. package/dist/{chunk-I7WXZOWA.js → chunk-VGE3G3T4.js} +3 -1
  149. package/dist/{chunk-UNZ7TVV5.js → chunk-W4XYY73O.js} +7 -9
  150. package/dist/{chunk-IPM2E6UI.js → chunk-WJDQ7XQA.js} +1 -1
  151. package/dist/{chunk-PPAQFGS2.js → chunk-YEKYVJQR.js} +1 -1
  152. package/dist/chunk-Z54BPRL6.js +74 -0
  153. package/dist/{chunk-S35G6PNC.js → chunk-Z7JYG5TF.js} +5 -4
  154. package/dist/chunk-ZZDY4XL7.js +112 -0
  155. package/dist/generated/index.d.ts +13 -0
  156. package/dist/generated/index.js +84 -71
  157. package/dist/index.js +84 -71
  158. package/dist/styles.css +1644 -153
  159. package/dist/utils/csv.d.ts +18 -0
  160. package/dist/utils/elementToPng.d.ts +49 -0
  161. package/dist/utils/index.d.ts +4 -1
  162. package/dist/utils/index.js +2 -2
  163. package/dist/utils/useDownload.d.ts +14 -4
  164. package/package.json +3 -3
  165. package/dist/chunk-E6UWRXNM.js +0 -52
  166. package/dist/chunk-M54K52ZU.js +0 -2
  167. package/dist/chunk-U5LQ2AS5.js +0 -1
  168. package/dist/{chunk-KG6XRG5Z.js → chunk-5OY4LJFH.js} +1 -1
  169. package/dist/{chunk-ZM7HLFOA.js → chunk-L2OQRPXJ.js} +1 -1
  170. package/dist/{chunk-MUGM7SEG.js → chunk-LFNUH4GY.js} +1 -1
  171. package/dist/{chunk-PBNP7H2C.js → chunk-M2VJGNCD.js} +1 -1
  172. /package/dist/{chunk-MSSZHDZI.js → chunk-SLRKS5PF.js} +0 -0
package/dist/styles.css CHANGED
@@ -2086,6 +2086,76 @@ button.crewlet-account-row__who:focus-visible {
2086
2086
  }
2087
2087
 
2088
2088
 
2089
+ /* ArtifactCover-D4MBEJ5H.css */
2090
+ /* The frame every native cover shares (DocCover, SheetCover, DashboardCover):
2091
+ it fills a card's preview edge to edge and clips whatever runs past it. */
2092
+ .crewlet-artifact-cover {
2093
+ box-sizing: border-box;
2094
+ align-self: stretch;
2095
+ width: 100%;
2096
+ min-width: 0;
2097
+ overflow: hidden;
2098
+ }
2099
+
2100
+ /* A doc's cover: a small page, inset from the card's edges, whose text runs
2101
+ off the bottom under a fade rather than stopping mid-line at a hard edge. */
2102
+ .crewlet-doc-cover {
2103
+ position: relative;
2104
+ display: block;
2105
+ padding: var(--spacing-3) var(--spacing-4) 0;
2106
+ background: var(--color-surface-elevated);
2107
+ color: var(--color-text-primary);
2108
+ }
2109
+
2110
+ .crewlet-doc-cover::after {
2111
+ content: '';
2112
+ position: absolute;
2113
+ inset: auto 0 0;
2114
+ height: 40%;
2115
+ background: linear-gradient(to bottom, transparent, var(--color-surface-elevated));
2116
+ pointer-events: none;
2117
+ }
2118
+
2119
+ .crewlet-doc-cover__page {
2120
+ font-size: var(--font-size-2xs);
2121
+ line-height: 1.45;
2122
+ }
2123
+
2124
+ .crewlet-doc-cover__page > :first-child {
2125
+ margin-top: 0;
2126
+ }
2127
+
2128
+ .crewlet-doc-cover__page h1,
2129
+ .crewlet-doc-cover__page h2,
2130
+ .crewlet-doc-cover__page h3 {
2131
+ font-size: var(--font-size-sm);
2132
+ }
2133
+
2134
+ /* A sheet's cover: its first columns and rows as a hairline grid. */
2135
+ .crewlet-sheet-cover {
2136
+ display: grid;
2137
+ grid-template-columns: repeat(var(--crewlet-sheet-cover-columns), minmax(0, 1fr));
2138
+ grid-auto-rows: min-content;
2139
+ background: var(--color-surface-elevated);
2140
+ font-size: var(--font-size-2xs);
2141
+ }
2142
+
2143
+ .crewlet-sheet-cover__cell {
2144
+ overflow: hidden;
2145
+ padding: var(--spacing-1) var(--spacing-2);
2146
+ border-bottom: 1px solid var(--color-border-default);
2147
+ color: var(--color-text-secondary);
2148
+ white-space: nowrap;
2149
+ text-overflow: ellipsis;
2150
+ }
2151
+
2152
+ .crewlet-sheet-cover__cell--head {
2153
+ background: var(--color-surface-inset);
2154
+ color: var(--color-text-tertiary);
2155
+ font-weight: var(--font-weight-medium);
2156
+ }
2157
+
2158
+
2089
2159
  /* AuthLayout-ODHBUPHQ.css */
2090
2160
  /*
2091
2161
  * The sign-in page: one narrow column near the top of the window.
@@ -3879,6 +3949,284 @@ a.crewlet-breadcrumb__crumb:focus-visible {
3879
3949
  }
3880
3950
 
3881
3951
 
3952
+ /* CanvasBoard-ZLPDINSM.css */
3953
+ /*
3954
+ * A canvas of artboards and notes (CanvasBoard.tsx). Boards and notes are laid
3955
+ * out in canvas pixels inside the canvas's world and scale with it; their
3956
+ * chrome (titles, handles, tools) is counter-scaled by the zoom the component
3957
+ * writes on the layer, so it stays one size on screen.
3958
+ */
3959
+
3960
+ .crewlet-canvas-board {
3961
+ height: 100%;
3962
+ min-height: 0;
3963
+ }
3964
+
3965
+ .crewlet-canvas-board__layer {
3966
+ --crewlet-canvas-board-zoom: 1;
3967
+ --crewlet-canvas-board-unzoom: calc(1 / var(--crewlet-canvas-board-zoom));
3968
+ position: relative;
3969
+ }
3970
+
3971
+ /* ---- a board ------------------------------------------------------------ */
3972
+
3973
+ .crewlet-canvas-board__board {
3974
+ position: absolute;
3975
+ box-sizing: border-box;
3976
+ }
3977
+
3978
+ .crewlet-canvas-board__body {
3979
+ position: absolute;
3980
+ inset: 0;
3981
+ overflow: hidden;
3982
+ background: var(--color-surface-elevated);
3983
+ border: 1px solid var(--color-border-default);
3984
+ box-shadow: var(--shadow-xs);
3985
+ }
3986
+
3987
+ /* The page a live board runs fills its frame exactly. */
3988
+ .crewlet-canvas-board__body > :not(.crewlet-canvas-board__shield) {
3989
+ width: 100%;
3990
+ height: 100%;
3991
+ }
3992
+
3993
+ .crewlet-canvas-board__board[data-active] .crewlet-canvas-board__body {
3994
+ outline: calc(2px * var(--crewlet-canvas-board-unzoom)) solid var(--color-focus);
3995
+ outline-offset: 0;
3996
+ }
3997
+
3998
+ /*
3999
+ * THE SHIELD over a live board that does not hold the pointer: a press on it
4000
+ * pans the canvas as the field around it does, because a sandboxed page would
4001
+ * otherwise swallow every press that began over it.
4002
+ */
4003
+ .crewlet-canvas-board__shield {
4004
+ position: absolute;
4005
+ inset: 0;
4006
+ cursor: pointer;
4007
+ }
4008
+
4009
+ .crewlet-canvas-board[data-editable] .crewlet-canvas-board__shield {
4010
+ cursor: inherit;
4011
+ }
4012
+
4013
+ /* A board that is not running draws its title and size at screen size. */
4014
+ .crewlet-canvas-board__placeholder {
4015
+ position: absolute;
4016
+ inset: 0;
4017
+ display: flex;
4018
+ align-items: center;
4019
+ justify-content: center;
4020
+ overflow: hidden;
4021
+ background: var(--color-surface-subtle);
4022
+ color: var(--color-text-tertiary);
4023
+ font-size: var(--font-size-xs);
4024
+ text-align: center;
4025
+ }
4026
+
4027
+ /* ONE BLOCK, SCALED ONCE: its lines keep their spacing at screen size rather
4028
+ than each line shrinking back into the space the zoom left it. */
4029
+ .crewlet-canvas-board__placeholder-text {
4030
+ display: flex;
4031
+ flex-direction: column;
4032
+ align-items: center;
4033
+ gap: var(--spacing-1);
4034
+ flex: none;
4035
+ transform: scale(var(--crewlet-canvas-board-unzoom));
4036
+ }
4037
+
4038
+ .crewlet-canvas-board__placeholder-title {
4039
+ color: var(--color-text-secondary);
4040
+ font-size: var(--font-size-sm);
4041
+ font-weight: var(--font-weight-medium);
4042
+ }
4043
+
4044
+ /* ---- chrome, at screen size --------------------------------------------- */
4045
+
4046
+ .crewlet-canvas-board__chrome {
4047
+ position: absolute;
4048
+ bottom: 100%;
4049
+ left: 0;
4050
+ display: flex;
4051
+ align-items: center;
4052
+ gap: var(--spacing-1);
4053
+ box-sizing: border-box;
4054
+ width: calc(100% * var(--crewlet-canvas-board-zoom));
4055
+ padding-bottom: var(--spacing-1);
4056
+ transform: scale(var(--crewlet-canvas-board-unzoom));
4057
+ transform-origin: bottom left;
4058
+ }
4059
+
4060
+ .crewlet-canvas-board__title {
4061
+ min-width: 0;
4062
+ overflow: hidden;
4063
+ color: var(--color-text-secondary);
4064
+ font-size: var(--font-size-xs);
4065
+ font-weight: var(--font-weight-medium);
4066
+ text-overflow: ellipsis;
4067
+ white-space: nowrap;
4068
+ }
4069
+
4070
+ .crewlet-canvas-board__handle {
4071
+ appearance: none;
4072
+ margin: 0;
4073
+ padding: var(--spacing-1) var(--spacing-2);
4074
+ border: 1px solid transparent;
4075
+ border-radius: var(--radius-sm);
4076
+ background: transparent;
4077
+ font: inherit;
4078
+ cursor: move;
4079
+ touch-action: none;
4080
+ }
4081
+
4082
+ .crewlet-canvas-board__handle:hover {
4083
+ background: var(--color-surface-hover);
4084
+ border-color: var(--color-border-default);
4085
+ }
4086
+
4087
+ /* Both handles draw an edge of their own, so the ring sits over it. */
4088
+ .crewlet-canvas-board__handle:focus-visible,
4089
+ .crewlet-canvas-board__resize:focus-visible {
4090
+ outline: 2px solid var(--color-focus);
4091
+ outline-offset: var(--size-focus-ring-inset-offset);
4092
+ }
4093
+
4094
+ .crewlet-canvas-board__resize {
4095
+ position: absolute;
4096
+ right: 0;
4097
+ bottom: 0;
4098
+ width: var(--spacing-4);
4099
+ height: var(--spacing-4);
4100
+ margin: 0;
4101
+ padding: 0;
4102
+ border: 2px solid var(--color-brand-accent);
4103
+ border-radius: var(--radius-xs);
4104
+ background: var(--color-surface-elevated);
4105
+ cursor: nwse-resize;
4106
+ touch-action: none;
4107
+ transform: translate(50%, 50%) scale(var(--crewlet-canvas-board-unzoom));
4108
+ }
4109
+
4110
+ .crewlet-canvas-board__hint {
4111
+ position: absolute;
4112
+ top: 100%;
4113
+ left: 0;
4114
+ margin: 0;
4115
+ padding-top: var(--spacing-1);
4116
+ color: var(--color-text-tertiary);
4117
+ font-size: var(--font-size-xs);
4118
+ white-space: nowrap;
4119
+ transform: scale(var(--crewlet-canvas-board-unzoom));
4120
+ transform-origin: top left;
4121
+ }
4122
+
4123
+ /* ---- a note ------------------------------------------------------------- */
4124
+
4125
+ .crewlet-canvas-board__note {
4126
+ position: absolute;
4127
+ box-sizing: border-box;
4128
+ }
4129
+
4130
+ /*
4131
+ * A TITLE IS SET IN ITS BOX'S OWN HEIGHT, so the author's frame is the type
4132
+ * size: a heading over a group of boards is as large as the box drawn for it.
4133
+ */
4134
+ .crewlet-canvas-board__note[data-kind='title'] {
4135
+ container-type: size;
4136
+ display: flex;
4137
+ align-items: center;
4138
+ color: var(--color-text-primary);
4139
+ }
4140
+
4141
+ .crewlet-canvas-board__note[data-kind='title'] .crewlet-canvas-board__note-text {
4142
+ font-size: 60cqh;
4143
+ font-weight: var(--font-weight-semibold);
4144
+ letter-spacing: var(--font-letter-spacing-tight);
4145
+ line-height: var(--font-line-height-tight);
4146
+ white-space: nowrap;
4147
+ }
4148
+
4149
+ .crewlet-canvas-board__note-text {
4150
+ margin: 0;
4151
+ white-space: pre-wrap;
4152
+ }
4153
+
4154
+ .crewlet-canvas-board__note-field {
4155
+ box-sizing: border-box;
4156
+ width: 100%;
4157
+ height: 100%;
4158
+ padding: 0;
4159
+ border: none;
4160
+ background: transparent;
4161
+ color: inherit;
4162
+ font: inherit;
4163
+ resize: none;
4164
+ }
4165
+
4166
+ .crewlet-canvas-board__note-field:focus-visible {
4167
+ outline: 2px solid var(--color-focus);
4168
+ outline-offset: var(--size-focus-ring-inset-offset);
4169
+ }
4170
+
4171
+ .crewlet-canvas-board__note-tools {
4172
+ position: absolute;
4173
+ bottom: 100%;
4174
+ left: 0;
4175
+ display: flex;
4176
+ align-items: center;
4177
+ gap: var(--spacing-1);
4178
+ padding-bottom: var(--spacing-1);
4179
+ transform: scale(var(--crewlet-canvas-board-unzoom));
4180
+ transform-origin: bottom left;
4181
+ }
4182
+
4183
+ .crewlet-canvas-board__note-move {
4184
+ width: var(--spacing-6);
4185
+ height: var(--spacing-6);
4186
+ background-image: radial-gradient(var(--color-text-tertiary) 1px, transparent 1.5px);
4187
+ background-size: var(--spacing-2) var(--spacing-2);
4188
+ }
4189
+
4190
+
4191
+ /* CanvasSchematic-PLB3N46J.css */
4192
+ /*
4193
+ * A design's schematic (CanvasSchematic.tsx): rectangles drawn in the
4194
+ * canvas's own coordinates, filling the box they are given.
4195
+ */
4196
+
4197
+ .crewlet-canvas-schematic {
4198
+ display: flex;
4199
+ width: 100%;
4200
+ height: 100%;
4201
+ min-height: 0;
4202
+ }
4203
+
4204
+ .crewlet-canvas-schematic svg {
4205
+ width: 100%;
4206
+ height: 100%;
4207
+ }
4208
+
4209
+ .crewlet-canvas-schematic__board {
4210
+ fill: var(--color-surface-elevated);
4211
+ stroke: var(--color-border-strong);
4212
+ stroke-width: 1;
4213
+ }
4214
+
4215
+ .crewlet-canvas-schematic__board[data-cover] {
4216
+ fill: var(--color-brand-accent-soft);
4217
+ stroke: var(--color-brand-accent);
4218
+ }
4219
+
4220
+ .crewlet-canvas-schematic__note {
4221
+ fill: var(--color-surface-inset);
4222
+ }
4223
+
4224
+ .crewlet-canvas-schematic__title {
4225
+ fill: var(--color-brand-accent-ink);
4226
+ font-weight: var(--font-weight-semibold);
4227
+ }
4228
+
4229
+
3882
4230
  /* Card-KJOYHDTJ.css */
3883
4231
  /*
3884
4232
  * Card, THE surface. Everything on a screen is a card, a row inside one, or a
@@ -5260,7 +5608,7 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5260
5608
  }
5261
5609
 
5262
5610
 
5263
- /* Checkbox-KT7RS6QQ.css */
5611
+ /* Checkbox-5UORUG3F.css */
5264
5612
  /*
5265
5613
  * Checkbox: a box, its label and its consequence as one target.
5266
5614
  *
@@ -5362,6 +5710,22 @@ a.crewlet-breadcrumb__crumb:focus-visible {
5362
5710
  border-radius: var(--radius-lg);
5363
5711
  }
5364
5712
 
5713
+ /*
5714
+ * THE COMPACT STEP, for a box in a dense form row beside small inputs and
5715
+ * selects. The label takes their step, so a row of controls reads as one line,
5716
+ * and the box shrinks with it; the nudge above is in `em` against the row's own
5717
+ * size, so it still sits the box on the label's first line.
5718
+ */
5719
+ .crewlet-checkbox--sm {
5720
+ --crewlet-checkbox-size: 14px;
5721
+
5722
+ font-size: var(--font-size-compact);
5723
+ }
5724
+
5725
+ .crewlet-checkbox--sm .crewlet-checkbox__label {
5726
+ font-size: var(--font-size-compact);
5727
+ }
5728
+
5365
5729
  .crewlet-checkbox.is-disabled,
5366
5730
  .crewlet-checkbox.is-disabled .crewlet-checkbox__control {
5367
5731
  cursor: not-allowed;
@@ -6713,6 +7077,152 @@ a.crewlet-breadcrumb__crumb:focus-visible {
6713
7077
  }
6714
7078
 
6715
7079
 
7080
+ /* DashboardCover-RMINBODB.css */
7081
+ /*
7082
+ * DashboardCover: a dashboard's cover at a gallery card's preview size (16:9,
7083
+ * about 280 by 158 pixels at its smallest). Up to three headline figures, or a
7084
+ * schematic of the board's first widgets, or the kind's glyph. Its frame is
7085
+ * the shared .crewlet-artifact-cover in ArtifactCover.css.
7086
+ */
7087
+
7088
+ .crewlet-dashboard-cover {
7089
+ height: 100%;
7090
+ padding: var(--spacing-3);
7091
+ color: var(--color-text-tertiary);
7092
+ }
7093
+
7094
+ .crewlet-dashboard-cover--stats {
7095
+ display: grid;
7096
+ grid-auto-columns: minmax(0, 1fr);
7097
+ grid-auto-flow: column;
7098
+ align-items: center;
7099
+ gap: var(--spacing-2);
7100
+ }
7101
+
7102
+ .crewlet-dashboard-cover__stat {
7103
+ display: flex;
7104
+ flex-direction: column;
7105
+ justify-content: center;
7106
+ gap: var(--spacing-1);
7107
+ min-width: 0;
7108
+ height: 100%;
7109
+ max-height: 100%;
7110
+ padding: var(--spacing-2) var(--spacing-3);
7111
+ border: 1px solid var(--color-border-default);
7112
+ border-radius: var(--radius-md);
7113
+ background: var(--color-surface-elevated);
7114
+ }
7115
+
7116
+ .crewlet-dashboard-cover__label,
7117
+ .crewlet-dashboard-cover__source {
7118
+ overflow: hidden;
7119
+ font-size: var(--font-size-xs);
7120
+ line-height: var(--font-line-height-snug);
7121
+ text-overflow: ellipsis;
7122
+ white-space: nowrap;
7123
+ }
7124
+
7125
+ .crewlet-dashboard-cover__label {
7126
+ color: var(--color-text-secondary);
7127
+ }
7128
+
7129
+ .crewlet-dashboard-cover__value {
7130
+ overflow: hidden;
7131
+ color: var(--color-text-primary);
7132
+ font-size: var(--font-size-xl);
7133
+ font-variant-numeric: tabular-nums;
7134
+ font-weight: var(--font-weight-semibold);
7135
+ line-height: var(--font-line-height-tight);
7136
+ text-overflow: ellipsis;
7137
+ white-space: nowrap;
7138
+ }
7139
+
7140
+ .crewlet-dashboard-cover__source {
7141
+ color: var(--color-text-tertiary);
7142
+ }
7143
+
7144
+ .crewlet-dashboard-cover--layout {
7145
+ display: grid;
7146
+ grid-auto-rows: minmax(0, 1fr);
7147
+ grid-template-columns: repeat(12, minmax(0, 1fr));
7148
+ gap: var(--spacing-2);
7149
+ }
7150
+
7151
+ .crewlet-dashboard-cover__block {
7152
+ box-sizing: border-box;
7153
+ display: flex;
7154
+ min-width: 0;
7155
+ min-height: 0;
7156
+ padding: var(--spacing-2);
7157
+ border: 1px solid var(--color-border-default);
7158
+ border-radius: var(--radius-sm);
7159
+ background: var(--color-surface-elevated);
7160
+ }
7161
+
7162
+ .crewlet-dashboard-cover__block--chart {
7163
+ align-items: flex-end;
7164
+ gap: var(--spacing-1);
7165
+ }
7166
+
7167
+ .crewlet-dashboard-cover__block--table,
7168
+ .crewlet-dashboard-cover__block--note {
7169
+ flex-direction: column;
7170
+ justify-content: center;
7171
+ gap: var(--spacing-1);
7172
+ }
7173
+
7174
+ .crewlet-dashboard-cover__block--stat {
7175
+ align-items: center;
7176
+ }
7177
+
7178
+ .crewlet-dashboard-cover__bar {
7179
+ flex: 1;
7180
+ min-width: 0;
7181
+ border-radius: var(--radius-xs);
7182
+ background: var(--color-data-1);
7183
+ }
7184
+
7185
+ .crewlet-dashboard-cover__bar:nth-child(1) {
7186
+ height: 40%;
7187
+ }
7188
+
7189
+ .crewlet-dashboard-cover__bar:nth-child(2) {
7190
+ height: 70%;
7191
+ }
7192
+
7193
+ .crewlet-dashboard-cover__bar:nth-child(3) {
7194
+ height: 55%;
7195
+ }
7196
+
7197
+ .crewlet-dashboard-cover__bar:nth-child(4) {
7198
+ height: 90%;
7199
+ }
7200
+
7201
+ .crewlet-dashboard-cover__line {
7202
+ height: var(--spacing-1);
7203
+ border-radius: var(--radius-xs);
7204
+ background: var(--color-border-strong);
7205
+ }
7206
+
7207
+ .crewlet-dashboard-cover__line:last-child {
7208
+ width: 60%;
7209
+ }
7210
+
7211
+ .crewlet-dashboard-cover__figure {
7212
+ width: 50%;
7213
+ height: var(--spacing-3);
7214
+ border-radius: var(--radius-xs);
7215
+ background: var(--color-text-tertiary);
7216
+ opacity: 0.5;
7217
+ }
7218
+
7219
+ .crewlet-dashboard-cover--empty {
7220
+ display: flex;
7221
+ align-items: center;
7222
+ justify-content: center;
7223
+ }
7224
+
7225
+
6716
7226
  /* DataTable-WZK3V62B.css */
6717
7227
  /* ─────────────────────────────────────────────────────────────────
6718
7228
  * Default variant.
@@ -9193,6 +9703,138 @@ body.crewlet-data-table-resizing {
9193
9703
  }
9194
9704
 
9195
9705
 
9706
+ /* DatasetSource-47LBDMPR.css */
9707
+ /*
9708
+ * DatasetSource: one entry of a dashboard's Sources rail. The title and its
9709
+ * source kind, the definition, then where the rows stand, how many there are
9710
+ * and how they are kept current, with the host's rows preview under it when
9711
+ * selected.
9712
+ */
9713
+
9714
+ .crewlet-dataset-source {
9715
+ display: flex;
9716
+ flex-direction: column;
9717
+ min-width: 0;
9718
+ border-radius: var(--radius-md);
9719
+ }
9720
+
9721
+ .crewlet-dataset-source__summary {
9722
+ box-sizing: border-box;
9723
+ display: flex;
9724
+ flex-direction: column;
9725
+ gap: var(--spacing-1);
9726
+ width: 100%;
9727
+ min-width: 0;
9728
+ margin: 0;
9729
+ padding: var(--spacing-2) var(--spacing-3);
9730
+ border: 1px solid transparent;
9731
+ border-radius: var(--radius-md);
9732
+ background: none;
9733
+ color: inherit;
9734
+ font: inherit;
9735
+ text-align: start;
9736
+ }
9737
+
9738
+ button.crewlet-dataset-source__summary {
9739
+ cursor: pointer;
9740
+ }
9741
+
9742
+ button.crewlet-dataset-source__summary:hover {
9743
+ background: var(--color-surface-hover);
9744
+ }
9745
+
9746
+ button.crewlet-dataset-source__summary:focus-visible {
9747
+ outline: 2px solid var(--color-focus);
9748
+ outline-offset: var(--size-focus-ring-inset-offset);
9749
+ }
9750
+
9751
+ /* The accent boundary, as a selected card takes it, and the soft accent fill. */
9752
+ .crewlet-dataset-source--selected .crewlet-dataset-source__summary {
9753
+ border-color: var(--color-brand-accent);
9754
+ background: var(--color-brand-accent-soft);
9755
+ }
9756
+
9757
+ .crewlet-dataset-source__head {
9758
+ display: flex;
9759
+ align-items: center;
9760
+ gap: var(--spacing-2);
9761
+ min-width: 0;
9762
+ }
9763
+
9764
+ .crewlet-dataset-source__title {
9765
+ flex: 1;
9766
+ min-width: 0;
9767
+ overflow: hidden;
9768
+ color: var(--color-text-primary);
9769
+ font-size: var(--font-size-sm);
9770
+ font-weight: var(--font-weight-semibold);
9771
+ line-height: var(--font-line-height-snug);
9772
+ text-overflow: ellipsis;
9773
+ white-space: nowrap;
9774
+ }
9775
+
9776
+ .crewlet-dataset-source__kind {
9777
+ flex: none;
9778
+ }
9779
+
9780
+ .crewlet-dataset-source__definition {
9781
+ min-width: 0;
9782
+ overflow-wrap: anywhere;
9783
+ color: var(--color-text-secondary);
9784
+ font-size: var(--font-size-xs);
9785
+ line-height: var(--font-line-height-normal);
9786
+ }
9787
+
9788
+ .crewlet-dataset-source__meta {
9789
+ display: flex;
9790
+ flex-wrap: wrap;
9791
+ align-items: center;
9792
+ gap: 0 var(--spacing-2);
9793
+ color: var(--color-text-tertiary);
9794
+ font-size: var(--font-size-xs);
9795
+ line-height: var(--font-line-height-snug);
9796
+ }
9797
+
9798
+ .crewlet-dataset-source__state--blocked {
9799
+ color: var(--color-text-secondary);
9800
+ }
9801
+
9802
+ /* The separators are drawn, not typed, so a screen reader hears the facts alone. */
9803
+ .crewlet-dataset-source__rows::before,
9804
+ .crewlet-dataset-source__refresh::before {
9805
+ content: '\00b7' / '';
9806
+ margin-inline-end: var(--spacing-2);
9807
+ }
9808
+
9809
+ .crewlet-dataset-source__meta > :first-child::before {
9810
+ content: none;
9811
+ }
9812
+
9813
+ .crewlet-dataset-source__stale {
9814
+ display: inline-flex;
9815
+ vertical-align: middle;
9816
+ color: var(--color-feedback-warning-ink);
9817
+ }
9818
+
9819
+ .crewlet-dataset-source__preview {
9820
+ min-width: 0;
9821
+ padding: var(--spacing-2) var(--spacing-3) var(--spacing-3);
9822
+ }
9823
+
9824
+ .crewlet-dataset-source-list {
9825
+ display: flex;
9826
+ flex-direction: column;
9827
+ gap: var(--spacing-1);
9828
+ margin: 0;
9829
+ padding: 0;
9830
+ list-style: none;
9831
+ }
9832
+
9833
+ .crewlet-dataset-source-list__item {
9834
+ min-width: 0;
9835
+ }
9836
+
9837
+
9196
9838
  /* DateTimePicker-HG2KQXQ6.css */
9197
9839
  /*
9198
9840
  * DateTimePicker: a Select-shaped trigger over a calendar dialog.
@@ -9897,39 +10539,120 @@ svg.crewlet-datetime__chevron {
9897
10539
  }
9898
10540
 
9899
10541
 
9900
- /* Document-PQGXJHB7.css */
10542
+ /* DocTabsEditor-RCOWHX5J.css */
9901
10543
  /*
9902
- * Rendered markdown, set as a document (Document.tsx).
9903
- *
9904
- * Every size here is a step on the type ramp and every gap a spacing step,
9905
- * because a reading column set in sizes of its own (32, 20, 18, 15 and 14.5px
9906
- * were measured on one) is a column that drifts from every other surface.
10544
+ * DocTabsEditor: a document's tabs as rows an editor titles, opens, moves and
10545
+ * removes, with the row whose text is open marked, and a field to add one.
10546
+ * The rows are quiet inset bands, as ArrangeList's are.
9907
10547
  */
9908
10548
 
9909
- .crewlet-document {
9910
- /* The two rhythms a size sets: between blocks, and above a section. */
9911
- --crewlet-document-gap: var(--spacing-4);
9912
- --crewlet-document-section-gap: var(--spacing-6);
9913
- margin: 0;
10549
+ .crewlet-doc-tabs-editor {
10550
+ display: flex;
10551
+ flex-direction: column;
10552
+ gap: var(--spacing-2);
9914
10553
  min-width: 0;
9915
- font-family: var(--font-family-sans);
9916
- font-size: var(--font-size-sm);
9917
- line-height: var(--font-line-height-relaxed);
9918
- color: var(--color-text-secondary);
9919
- /* The renderer decides what a break is, so the whitespace rule is normal. */
9920
- white-space: normal;
9921
- overflow-wrap: break-word;
9922
10554
  }
9923
10555
 
9924
- .crewlet-document--sm {
9925
- --crewlet-document-gap: var(--spacing-3);
9926
- --crewlet-document-section-gap: var(--spacing-5);
9927
- font-size: var(--font-size-compact);
9928
- line-height: var(--font-line-height-normal);
10556
+ .crewlet-doc-tabs-editor__list {
10557
+ display: flex;
10558
+ flex-direction: column;
10559
+ gap: var(--spacing-1);
10560
+ margin: 0;
10561
+ padding: 0;
10562
+ list-style: none;
9929
10563
  }
9930
10564
 
9931
- .crewlet-document--measure {
9932
- max-width: var(--size-measure);
10565
+ .crewlet-doc-tabs-editor__item {
10566
+ display: flex;
10567
+ align-items: flex-start;
10568
+ gap: var(--spacing-1);
10569
+ padding: var(--spacing-1);
10570
+ border: 1px solid transparent;
10571
+ border-radius: var(--radius-md);
10572
+ background: var(--color-surface-subtle);
10573
+ }
10574
+
10575
+ .crewlet-doc-tabs-editor__item.is-open {
10576
+ border-color: var(--color-border-strong);
10577
+ }
10578
+
10579
+ .crewlet-doc-tabs-editor__item[data-reorder='dragging'] {
10580
+ border-style: dashed;
10581
+ border-color: var(--color-border-strong);
10582
+ background: transparent;
10583
+ }
10584
+ .crewlet-doc-tabs-editor__item[data-reorder='dragging'] > * {
10585
+ opacity: 0.4;
10586
+ }
10587
+
10588
+ .crewlet-doc-tabs-editor__handle {
10589
+ flex-shrink: 0;
10590
+ cursor: grab;
10591
+ color: var(--color-text-tertiary);
10592
+ }
10593
+ .crewlet-doc-tabs-editor__handle:active {
10594
+ cursor: grabbing;
10595
+ }
10596
+
10597
+ .crewlet-doc-tabs-editor__field {
10598
+ display: flex;
10599
+ flex: 1 1 12rem;
10600
+ flex-direction: column;
10601
+ gap: var(--spacing-1);
10602
+ min-width: 0;
10603
+ }
10604
+
10605
+ .crewlet-doc-tabs-editor__problem {
10606
+ color: var(--color-feedback-danger-ink);
10607
+ font-size: var(--font-size-xs);
10608
+ }
10609
+
10610
+ .crewlet-doc-tabs-editor__moves {
10611
+ display: inline-flex;
10612
+ flex-shrink: 0;
10613
+ }
10614
+
10615
+ .crewlet-doc-tabs-editor__add {
10616
+ display: flex;
10617
+ flex-wrap: wrap;
10618
+ align-items: center;
10619
+ gap: var(--spacing-2);
10620
+ }
10621
+
10622
+
10623
+ /* Document-PQGXJHB7.css */
10624
+ /*
10625
+ * Rendered markdown, set as a document (Document.tsx).
10626
+ *
10627
+ * Every size here is a step on the type ramp and every gap a spacing step,
10628
+ * because a reading column set in sizes of its own (32, 20, 18, 15 and 14.5px
10629
+ * were measured on one) is a column that drifts from every other surface.
10630
+ */
10631
+
10632
+ .crewlet-document {
10633
+ /* The two rhythms a size sets: between blocks, and above a section. */
10634
+ --crewlet-document-gap: var(--spacing-4);
10635
+ --crewlet-document-section-gap: var(--spacing-6);
10636
+ margin: 0;
10637
+ min-width: 0;
10638
+ font-family: var(--font-family-sans);
10639
+ font-size: var(--font-size-sm);
10640
+ line-height: var(--font-line-height-relaxed);
10641
+ color: var(--color-text-secondary);
10642
+ /* The renderer decides what a break is, so the whitespace rule is normal. */
10643
+ white-space: normal;
10644
+ overflow-wrap: break-word;
10645
+ }
10646
+
10647
+ .crewlet-document--sm {
10648
+ --crewlet-document-gap: var(--spacing-3);
10649
+ --crewlet-document-section-gap: var(--spacing-5);
10650
+ font-size: var(--font-size-compact);
10651
+ line-height: var(--font-line-height-normal);
10652
+ }
10653
+
10654
+ .crewlet-document--measure {
10655
+ max-width: var(--size-measure);
9933
10656
  }
9934
10657
 
9935
10658
  /*
@@ -13585,7 +14308,87 @@ svg.crewlet-datetime__chevron {
13585
14308
  }
13586
14309
 
13587
14310
 
13588
- /* Meter-5VCSFMZW.css */
14311
+ /* MergeConflicts-O44ESH4T.css */
14312
+ /* MergeConflicts: each clash as the other side's lines beside the draft's,
14313
+ with the choice under them, in one framed block that replaces the editor
14314
+ until it is settled. */
14315
+ .crewlet-merge-conflicts {
14316
+ display: flex;
14317
+ flex-direction: column;
14318
+ gap: var(--spacing-3);
14319
+ padding: var(--spacing-4);
14320
+ border: 1px solid var(--color-border-strong);
14321
+ border-radius: var(--radius-lg);
14322
+ }
14323
+
14324
+ .crewlet-merge-conflicts__title {
14325
+ margin: 0;
14326
+ font-size: var(--font-size-md);
14327
+ font-weight: var(--font-weight-semibold);
14328
+ color: var(--color-text-primary);
14329
+ }
14330
+
14331
+ .crewlet-merge-conflicts__note {
14332
+ margin: 0;
14333
+ font-size: var(--font-size-xs);
14334
+ color: var(--color-text-tertiary);
14335
+ }
14336
+
14337
+ .crewlet-merge-conflicts__list {
14338
+ display: flex;
14339
+ flex-direction: column;
14340
+ gap: var(--spacing-4);
14341
+ margin: 0;
14342
+ padding: 0;
14343
+ list-style: none;
14344
+ }
14345
+
14346
+ .crewlet-merge-conflicts__item {
14347
+ display: flex;
14348
+ flex-direction: column;
14349
+ gap: var(--spacing-2);
14350
+ }
14351
+
14352
+ .crewlet-merge-conflicts__sides {
14353
+ display: grid;
14354
+ grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
14355
+ gap: var(--spacing-3);
14356
+ }
14357
+
14358
+ .crewlet-merge-conflicts__side {
14359
+ display: flex;
14360
+ flex-direction: column;
14361
+ gap: var(--spacing-1);
14362
+ min-width: 0;
14363
+ margin: 0;
14364
+ }
14365
+
14366
+ .crewlet-merge-conflicts__side figcaption {
14367
+ font-size: var(--font-size-xs);
14368
+ color: var(--color-text-tertiary);
14369
+ }
14370
+
14371
+ .crewlet-merge-conflicts__side pre {
14372
+ margin: 0;
14373
+ padding: var(--spacing-2);
14374
+ overflow-x: auto;
14375
+ border: 1px solid var(--color-border-default);
14376
+ border-radius: var(--radius-md);
14377
+ background: var(--color-surface-inset);
14378
+ font-family: var(--font-family-mono);
14379
+ font-size: var(--font-size-xs);
14380
+ white-space: pre-wrap;
14381
+ }
14382
+
14383
+ .crewlet-merge-conflicts__foot {
14384
+ display: flex;
14385
+ flex-wrap: wrap;
14386
+ align-items: center;
14387
+ gap: var(--spacing-2);
14388
+ }
14389
+
14390
+
14391
+ /* Meter-ZZRFUEOH.css */
13589
14392
  /*
13590
14393
  * The meter.
13591
14394
  *
@@ -13610,6 +14413,7 @@ svg.crewlet-datetime__chevron {
13610
14413
  */
13611
14414
  .crewlet-meter__legend {
13612
14415
  display: flex;
14416
+ flex-wrap: wrap;
13613
14417
  align-items: baseline;
13614
14418
  justify-content: space-between;
13615
14419
  gap: var(--spacing-2);
@@ -13618,7 +14422,11 @@ svg.crewlet-datetime__chevron {
13618
14422
  min-width: 0;
13619
14423
  }
13620
14424
 
14425
+ /* THE LABEL KEEPS ITS WORDS: where the row is too narrow for both, the figure
14426
+ moves to its own line rather than cutting the name to one letter. */
13621
14427
  .crewlet-meter__label {
14428
+ flex: 1 0 auto;
14429
+ max-width: 100%;
13622
14430
  overflow: hidden;
13623
14431
  text-overflow: ellipsis;
13624
14432
  white-space: nowrap;
@@ -13651,6 +14459,10 @@ svg.crewlet-datetime__chevron {
13651
14459
  height: 6px;
13652
14460
  border-radius: var(--radius-pill);
13653
14461
  background: var(--color-surface-elevated);
14462
+ /* An inset hairline gives the track an edge on ANY ground, so on the page
14463
+ sheet in the light theme, where the raised rung is nearly the ground's
14464
+ own tone, the extent of the bar is still there. */
14465
+ box-shadow: inset 0 0 0 1px var(--color-border-default);
13654
14466
  overflow: hidden;
13655
14467
  }
13656
14468
 
@@ -13668,6 +14480,12 @@ svg.crewlet-datetime__chevron {
13668
14480
  transition: width var(--motion-duration-slow) var(--motion-easing-emphasized);
13669
14481
  }
13670
14482
 
14483
+ /* A READING ABOVE ZERO IS NEVER AN EMPTY TRACK: a few bytes of a gigabyte
14484
+ rounds to no width at all, which reads as nothing used. */
14485
+ .crewlet-meter__fill--some {
14486
+ min-width: var(--spacing-1);
14487
+ }
14488
+
13671
14489
  .crewlet-meter__fill[data-tone='success'] { background: var(--color-feedback-success); }
13672
14490
  .crewlet-meter__fill[data-tone='warning'] { background: var(--color-feedback-warning); }
13673
14491
  .crewlet-meter__fill[data-tone='danger'] { background: var(--color-feedback-danger); }
@@ -14395,7 +15213,7 @@ svg.crewlet-datetime__chevron {
14395
15213
  }
14396
15214
 
14397
15215
 
14398
- /* ObjectHeader-UNVYM2KD.css */
15216
+ /* ObjectHeader-D7GU7QNI.css */
14399
15217
  /*
14400
15218
  * The header of an object: its eyebrow, its head row and its fact line.
14401
15219
  */
@@ -14468,6 +15286,21 @@ svg.crewlet-datetime__chevron {
14468
15286
  color: var(--color-text-primary);
14469
15287
  }
14470
15288
 
15289
+ /* The author's own sentence about the object: under the title, quieter than
15290
+ it, and never more than two lines however long the sentence is. */
15291
+ .crewlet-object-header__description {
15292
+ display: -webkit-box;
15293
+ -webkit-box-orient: vertical;
15294
+ -webkit-line-clamp: 2;
15295
+ line-clamp: 2;
15296
+ overflow: hidden;
15297
+ max-width: var(--size-measure);
15298
+ margin: 0;
15299
+ font-size: var(--font-size-compact);
15300
+ line-height: var(--font-line-height-normal);
15301
+ color: var(--color-text-secondary);
15302
+ }
15303
+
14471
15304
  .crewlet-object-header--peek .crewlet-object-header__title {
14472
15305
  font-size: var(--font-size-lg);
14473
15306
  }
@@ -16268,6 +17101,112 @@ button.crewlet-presence-stack__member:focus-visible {
16268
17101
  }
16269
17102
 
16270
17103
 
17104
+ /* PresenterView-T2C6ZZ3N.css */
17105
+ /*
17106
+ * PresenterView: the presenter's own screen beside the room's.
17107
+ *
17108
+ * The notes take the space a glance needs: a large, readable size and their
17109
+ * own scroll, so a long note never pushes the next slide or the timer away.
17110
+ */
17111
+
17112
+ .crewlet-presenter {
17113
+ display: grid;
17114
+ grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr);
17115
+ gap: var(--spacing-4);
17116
+ height: 100%;
17117
+ min-height: 0;
17118
+ padding: var(--spacing-4);
17119
+ background: var(--color-surface-background);
17120
+ color: var(--color-text-primary);
17121
+ }
17122
+
17123
+ .crewlet-presenter__main {
17124
+ display: flex;
17125
+ flex-direction: column;
17126
+ gap: var(--spacing-3);
17127
+ min-height: 0;
17128
+ }
17129
+
17130
+ .crewlet-presenter__main .crewlet-slide-stage {
17131
+ flex: 1;
17132
+ min-height: 0;
17133
+ border-radius: var(--radius-md);
17134
+ }
17135
+
17136
+ .crewlet-presenter__controls {
17137
+ display: flex;
17138
+ align-items: center;
17139
+ justify-content: center;
17140
+ gap: var(--spacing-3);
17141
+ }
17142
+
17143
+ .crewlet-presenter__position {
17144
+ color: var(--color-text-secondary);
17145
+ font-variant-numeric: tabular-nums;
17146
+ }
17147
+
17148
+ .crewlet-presenter__side {
17149
+ display: flex;
17150
+ flex-direction: column;
17151
+ gap: var(--spacing-4);
17152
+ min-height: 0;
17153
+ }
17154
+
17155
+ .crewlet-presenter__next .crewlet-slide-stage {
17156
+ border-radius: var(--radius-sm);
17157
+ outline: 1px solid var(--color-border-default);
17158
+ }
17159
+
17160
+ .crewlet-presenter__end {
17161
+ margin: 0;
17162
+ padding: var(--spacing-6) var(--spacing-3);
17163
+ border: 1px dashed var(--color-border-default);
17164
+ border-radius: var(--radius-sm);
17165
+ color: var(--color-text-tertiary);
17166
+ text-align: center;
17167
+ }
17168
+
17169
+ .crewlet-presenter__timer {
17170
+ display: flex;
17171
+ align-items: center;
17172
+ gap: var(--spacing-2);
17173
+ }
17174
+
17175
+ .crewlet-presenter__elapsed {
17176
+ margin-right: auto;
17177
+ font-family: var(--font-family-mono);
17178
+ font-size: var(--font-size-2xl);
17179
+ font-variant-numeric: tabular-nums;
17180
+ }
17181
+
17182
+ .crewlet-presenter__notes {
17183
+ flex: 1;
17184
+ min-height: 0;
17185
+ overflow: auto;
17186
+ padding: var(--spacing-3);
17187
+ border-radius: var(--radius-md);
17188
+ background: var(--color-surface-subtle);
17189
+ font-size: var(--font-size-lg);
17190
+ line-height: 1.5;
17191
+ white-space: pre-wrap;
17192
+ }
17193
+
17194
+ .crewlet-presenter__notes p {
17195
+ margin: 0;
17196
+ }
17197
+
17198
+ .crewlet-presenter__empty {
17199
+ color: var(--color-text-tertiary);
17200
+ }
17201
+
17202
+ @media (max-width: 48rem) {
17203
+ .crewlet-presenter {
17204
+ grid-template-columns: minmax(0, 1fr);
17205
+ height: auto;
17206
+ }
17207
+ }
17208
+
17209
+
16271
17210
  /* PricingCard-HTAHG4ST.css */
16272
17211
  /*
16273
17212
  * PricingCard, the plan-tier card surface.
@@ -17101,7 +18040,7 @@ button.crewlet-presence-stack__member:focus-visible {
17101
18040
  }
17102
18041
 
17103
18042
 
17104
- /* Section-QRUPRIQ2.css */
18043
+ /* Section-QR3ILQVK.css */
17105
18044
  /*
17106
18045
  * Section, the vertical rhythm band. One spacing scale keeps the cadence
17107
18046
  * between page sections consistent, and collapses on small viewports.
@@ -17165,7 +18104,10 @@ button.crewlet-presence-stack__member:focus-visible {
17165
18104
  line-height: var(--font-line-height-normal);
17166
18105
  letter-spacing: var(--font-letter-spacing-tight);
17167
18106
  color: var(--color-text-primary);
17168
- min-width: 0;
18107
+ /* THE TITLE NEVER WRAPS to make room for its hint: the hint is the one that
18108
+ gives way (truncated beside it, or under it on a narrow screen). */
18109
+ flex: none;
18110
+ white-space: nowrap;
17169
18111
  }
17170
18112
 
17171
18113
  /*
@@ -17231,7 +18173,7 @@ button.crewlet-presence-stack__member:focus-visible {
17231
18173
  }
17232
18174
 
17233
18175
 
17234
- /* SegmentedControl-PKBLJVSA.css */
18176
+ /* SegmentedControl-FLI45IOW.css */
17235
18177
  /*
17236
18178
  * SegmentedControl: the pill row, drawn with the Tabs classes.
17237
18179
  *
@@ -17411,6 +18353,19 @@ button.crewlet-presence-stack__member:focus-visible {
17411
18353
  min-width: 0;
17412
18354
  }
17413
18355
 
18356
+ /*
18357
+ * A PILL ROW WRAPS RATHER THAN OVERFLOWING ITS CONTAINER. Its options never
18358
+ * shrink (a label cut mid-word is not a choice anybody can read), so on one
18359
+ * unbroken row a group wider than its container ran past its edge: on a phone
18360
+ * a chart's "Split by" row ended at "Worke", clipped by its card. Wrapped,
18361
+ * every option stays visible and inside the focus ring's room.
18362
+ */
18363
+ .crewlet-tabs--pill.crewlet-segmented {
18364
+ flex-wrap: wrap;
18365
+ min-width: 0;
18366
+ max-width: 100%;
18367
+ }
18368
+
17414
18369
 
17415
18370
  /* SegmentedMeter-KQNML2TW.css */
17416
18371
  /*
@@ -18110,7 +19065,7 @@ svg.crewlet-select__chevron {
18110
19065
  }
18111
19066
 
18112
19067
 
18113
- /* SheetGrid-4HOXDVIB.css */
19068
+ /* SheetGrid-J3TKKXZL.css */
18114
19069
  /*
18115
19070
  * The editable sheet (SheetGrid.tsx) and its cells (cells.tsx).
18116
19071
  *
@@ -18161,6 +19116,13 @@ svg.crewlet-select__chevron {
18161
19116
  min-width: 100%;
18162
19117
  }
18163
19118
 
19119
+ /* AS TALL AS ITS ROWS (fit="content"): the component writes the height, the
19120
+ page may cap it, and the grid never grows past the height it was given. */
19121
+ .crewlet-sheet-grid--fit-content > .crewlet-sheet-grid__scroller {
19122
+ flex: none;
19123
+ max-height: var(--crewlet-sheet-max-height, 70vh);
19124
+ }
19125
+
18164
19126
  .crewlet-sheet-grid__row {
18165
19127
  display: grid;
18166
19128
  grid-template-columns: var(--crewlet-sheet-columns);
@@ -18253,12 +19215,22 @@ svg.crewlet-select__chevron {
18253
19215
  font-variant-numeric: tabular-nums;
18254
19216
  }
18255
19217
 
18256
- /* The bar at a row's leading edge while somebody has it selected. */
18257
- .crewlet-sheet-grid__rownum--present::before {
19218
+ /* The row actions sit at the number's trailing edge, over the cell's own
19219
+ background, so the number stays readable beside them. */
19220
+ .crewlet-sheet-grid__row-actions {
18258
19221
  position: absolute;
18259
- top: 0;
18260
- bottom: 0;
18261
- inset-inline-start: 0;
19222
+ top: 50%;
19223
+ inset-inline-end: 0;
19224
+ display: inline-flex;
19225
+ transform: translateY(-50%);
19226
+ }
19227
+
19228
+ /* The bar at a row's leading edge while somebody has it selected. */
19229
+ .crewlet-sheet-grid__rownum--present::before {
19230
+ position: absolute;
19231
+ top: 0;
19232
+ bottom: 0;
19233
+ inset-inline-start: 0;
18262
19234
  width: 3px;
18263
19235
  background: var(--crewlet-presence-hue);
18264
19236
  content: '';
@@ -18418,10 +19390,9 @@ svg.crewlet-select__chevron {
18418
19390
  }
18419
19391
 
18420
19392
  .crewlet-sheet-cell__chips {
18421
- display: inline-flex;
18422
- gap: var(--spacing-1);
19393
+ flex: 1 1 auto;
19394
+ flex-wrap: wrap;
18423
19395
  min-width: 0;
18424
- overflow: hidden;
18425
19396
  }
18426
19397
 
18427
19398
  .crewlet-sheet-cell__person {
@@ -18471,12 +19442,14 @@ svg.crewlet-select__chevron {
18471
19442
  align-items: center;
18472
19443
  }
18473
19444
 
19445
+ /* A RATING IS A QUANTITY, not a state, so its marks take the ink and the
19446
+ control edge rather than the warning hue: amber here read as an alert. */
18474
19447
  .crewlet-sheet-cell__star {
18475
- color: var(--color-text-tertiary);
19448
+ color: var(--color-border-strong);
18476
19449
  }
18477
19450
 
18478
19451
  .crewlet-sheet-cell__star--on {
18479
- color: var(--color-feedback-warning);
19452
+ color: var(--color-text-primary);
18480
19453
  }
18481
19454
 
18482
19455
  .crewlet-sheet-cell {
@@ -18581,18 +19554,53 @@ svg.crewlet-select__chevron {
18581
19554
  bottom: 100%;
18582
19555
  }
18583
19556
 
18584
- .crewlet-sheet-editor--list .crewlet-sheet-editor__panel,
18585
- .crewlet-sheet-editor--long .crewlet-sheet-editor__panel {
19557
+ .crewlet-sheet-editor--list .crewlet-sheet-editor__panel {
18586
19558
  top: 0;
18587
19559
  min-width: max(100%, 14rem);
18588
19560
  }
18589
19561
 
18590
- .crewlet-sheet-editor--list.crewlet-sheet-editor--above .crewlet-sheet-editor__panel,
18591
- .crewlet-sheet-editor--long.crewlet-sheet-editor--above .crewlet-sheet-editor__panel {
19562
+ .crewlet-sheet-editor--list.crewlet-sheet-editor--above .crewlet-sheet-editor__panel {
18592
19563
  top: auto;
18593
19564
  bottom: 0;
18594
19565
  }
18595
19566
 
19567
+ /* THE TEXT EDITOR LIES OVER THE CELL: at least the column's width, the
19568
+ popover's ground and shadow, and a field that wraps and grows to six lines,
19569
+ so the start of a value is never scrolled out of view while it is edited. */
19570
+ .crewlet-sheet-editor__overlay {
19571
+ position: absolute;
19572
+ top: 0;
19573
+ inset-inline-start: 0;
19574
+ z-index: var(--z-index-presence);
19575
+ display: flex;
19576
+ flex-direction: column;
19577
+ gap: var(--spacing-2);
19578
+ box-sizing: border-box;
19579
+ min-width: 100%;
19580
+ width: max(100%, 20rem);
19581
+ max-width: min(32rem, 90vw);
19582
+ border: 1px solid var(--color-border-default);
19583
+ border-radius: var(--radius-md);
19584
+ background: var(--color-surface-elevated);
19585
+ box-shadow: var(--shadow-xl);
19586
+ }
19587
+
19588
+ .crewlet-sheet-editor--above .crewlet-sheet-editor__overlay {
19589
+ top: auto;
19590
+ bottom: 0;
19591
+ }
19592
+
19593
+ .crewlet-sheet-editor__overlay > .crewlet-sheet-editor__error,
19594
+ .crewlet-sheet-editor__overlay > .crewlet-sheet-editor__conflict {
19595
+ margin: 0 var(--spacing-2) var(--spacing-2);
19596
+ }
19597
+
19598
+ .crewlet-sheet-cell .crewlet-sheet-editor__overlay {
19599
+ position: relative;
19600
+ width: 100%;
19601
+ max-width: none;
19602
+ }
19603
+
18596
19604
  .crewlet-sheet-editor__filter,
18597
19605
  .crewlet-sheet-editor__textarea {
18598
19606
  box-sizing: border-box;
@@ -18605,10 +19613,19 @@ svg.crewlet-select__chevron {
18605
19613
  font: inherit;
18606
19614
  }
18607
19615
 
18608
- .crewlet-sheet-editor__textarea {
18609
- min-width: 20rem;
18610
- max-width: 100%;
18611
- resize: vertical;
19616
+ .crewlet-sheet-editor__overlay .crewlet-sheet-editor__textarea {
19617
+ display: block;
19618
+ min-height: var(--crewlet-sheet-row-height, var(--size-sheet-row));
19619
+ max-height: calc(var(--crewlet-sheet-editor-lines, 6) * var(--font-line-height-normal) * 1em + 2 * var(--spacing-2));
19620
+ padding: var(--spacing-2);
19621
+ overflow-y: auto;
19622
+ border: 0;
19623
+ border-radius: var(--radius-md);
19624
+ background: transparent;
19625
+ line-height: var(--font-line-height-normal);
19626
+ white-space: pre-wrap;
19627
+ overflow-wrap: anywhere;
19628
+ resize: none;
18612
19629
  }
18613
19630
 
18614
19631
  .crewlet-sheet-editor__list {
@@ -18631,6 +19648,17 @@ svg.crewlet-select__chevron {
18631
19648
  cursor: pointer;
18632
19649
  }
18633
19650
 
19651
+ .crewlet-sheet-editor__option--clear {
19652
+ margin-top: var(--spacing-1);
19653
+ border-top: 1px solid var(--color-border-default);
19654
+ border-radius: 0 0 var(--radius-sm) var(--radius-sm);
19655
+ }
19656
+
19657
+ .crewlet-sheet-editor__list:focus-visible {
19658
+ outline: 2px solid var(--color-focus);
19659
+ outline-offset: var(--size-focus-ring-inset-offset);
19660
+ }
19661
+
18634
19662
  .crewlet-sheet-editor__option--highlight {
18635
19663
  background: var(--color-surface-hover);
18636
19664
  }
@@ -18680,7 +19708,7 @@ svg.crewlet-select__chevron {
18680
19708
  the screen rather than from a cell a thumb has to keep in view. */
18681
19709
  @media (width < 640px) {
18682
19710
  .crewlet-sheet-grid .crewlet-sheet-editor--list .crewlet-sheet-editor__panel,
18683
- .crewlet-sheet-grid .crewlet-sheet-editor--long .crewlet-sheet-editor__panel {
19711
+ .crewlet-sheet-grid .crewlet-sheet-editor--long .crewlet-sheet-editor__overlay {
18684
19712
  position: fixed;
18685
19713
  top: auto;
18686
19714
  right: 0;
@@ -18691,9 +19719,6 @@ svg.crewlet-select__chevron {
18691
19719
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
18692
19720
  }
18693
19721
 
18694
- .crewlet-sheet-editor__textarea {
18695
- min-width: 0;
18696
- }
18697
19722
  }
18698
19723
 
18699
19724
  @media (forced-colors: active) {
@@ -19425,121 +20450,435 @@ svg.crewlet-select__chevron {
19425
20450
  flex-direction: column;
19426
20451
  }
19427
20452
 
19428
- .crewlet-skeleton__pricing-card-features {
20453
+ .crewlet-skeleton__pricing-card-features {
20454
+ display: flex;
20455
+ flex-direction: column;
20456
+ gap: var(--spacing-2);
20457
+ }
20458
+
20459
+ .crewlet-skeleton__pricing-card-feature {
20460
+ display: flex;
20461
+ align-items: center;
20462
+ gap: var(--spacing-2);
20463
+ }
20464
+
20465
+ .crewlet-skeleton__line--heading { width: 80px; height: 16px; margin: 0; }
20466
+ .crewlet-skeleton__line--wide { width: 90%; }
20467
+ .crewlet-skeleton__line--three-quarter { width: 75%; }
20468
+ .crewlet-skeleton__line--feature { width: 60px; height: 12px; margin: 0; }
20469
+
20470
+ /* ── Box variant: the hero shimmer ──────────────────────────────── */
20471
+ .crewlet-skeleton--box {
20472
+ width: 100%;
20473
+ padding: 0;
20474
+ }
20475
+
20476
+ .crewlet-skeleton__glow-box {
20477
+ width: 100%;
20478
+ background: var(--color-surface-inset);
20479
+ border: 1px solid var(--color-border-default);
20480
+ position: relative;
20481
+ overflow: hidden;
20482
+ }
20483
+
20484
+ .crewlet-skeleton__glow-wave {
20485
+ position: absolute;
20486
+ top: 0;
20487
+ left: -100%;
20488
+ width: 100%;
20489
+ height: 100%;
20490
+ background: linear-gradient(90deg, transparent, var(--color-surface-hover), transparent);
20491
+ animation: crewlet-skeleton-wave calc(var(--motion-duration-slow) * 5) var(--motion-easing-in-out) infinite;
20492
+ }
20493
+
20494
+ @keyframes crewlet-skeleton-wave {
20495
+ 0% {
20496
+ left: -100%;
20497
+ }
20498
+
20499
+ 100% {
20500
+ left: 100%;
20501
+ }
20502
+ }
20503
+
20504
+ /* ── responsive ─────────────────────────────────────────────────── */
20505
+ @media (max-width: 1200px) {
20506
+ .crewlet-skeleton--pricing-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
20507
+ .crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 2; }
20508
+
20509
+ .crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
20510
+ --crewlet-skeleton-cols: 2;
20511
+ --crewlet-skeleton-row-gap: var(--spacing-6);
20512
+ --crewlet-skeleton-col-gap: var(--spacing-7);
20513
+ }
20514
+
20515
+ :where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item::before { display: none; }
20516
+
20517
+ :where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item:where(:nth-child(2n + 1):nth-child(n + 3))::before {
20518
+ display: block;
20519
+ }
20520
+ }
20521
+
20522
+ @media (max-width: 768px) {
20523
+ .crewlet-skeleton--pricing-card { grid-template-columns: minmax(0, 1fr); }
20524
+
20525
+ .crewlet-skeleton--grid.crewlet-skeleton--cols-2,
20526
+ .crewlet-skeleton--grid.crewlet-skeleton--cols-3,
20527
+ .crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 1; }
20528
+
20529
+ .crewlet-skeleton--info-grid.crewlet-skeleton--cols-2,
20530
+ .crewlet-skeleton--info-grid.crewlet-skeleton--cols-3,
20531
+ .crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
20532
+ --crewlet-skeleton-cols: 1;
20533
+ --crewlet-skeleton-row-gap: var(--spacing-5);
20534
+ }
20535
+
20536
+ .crewlet-skeleton__info-item::before { display: none; }
20537
+ .crewlet-skeleton__info-item:where(:nth-child(n + 2))::before { display: block; }
20538
+
20539
+ .crewlet-skeleton--card,
20540
+ .crewlet-skeleton__card { padding: var(--spacing-4); }
20541
+ }
20542
+
20543
+ /*
20544
+ * A placeholder that cannot move is still a placeholder: it keeps its shape,
20545
+ * its grey and its position, so the page still says how much is coming and
20546
+ * still does not jump when it arrives.
20547
+ */
20548
+ @media (prefers-reduced-motion: reduce) {
20549
+ .crewlet-skeleton .crewlet-skeleton__line,
20550
+ .crewlet-skeleton .crewlet-skeleton__avatar,
20551
+ .crewlet-skeleton .crewlet-skeleton__circle,
20552
+ .crewlet-skeleton .crewlet-skeleton__button,
20553
+ .crewlet-skeleton__glow-wave {
20554
+ animation: none;
20555
+ }
20556
+
20557
+ /* Held still ON the inset step rather than wherever the sweep stopped: a
20558
+ gradient frozen mid-travel is a block with a bright stripe down it. */
20559
+ .crewlet-skeleton .crewlet-skeleton__line,
20560
+ .crewlet-skeleton .crewlet-skeleton__avatar,
20561
+ .crewlet-skeleton .crewlet-skeleton__circle,
20562
+ .crewlet-skeleton .crewlet-skeleton__button {
20563
+ background: var(--color-surface-inset);
20564
+ }
20565
+
20566
+ .crewlet-skeleton__glow-wave {
20567
+ display: none;
20568
+ }
20569
+ }
20570
+
20571
+
20572
+ /* SlideCompare-MGM3U2ME.css */
20573
+ /*
20574
+ * SlideCompare: two versions of a deck, slide by slide.
20575
+ *
20576
+ * A row that changed carries its change in words beside a glyph; the side a
20577
+ * version lacks is a dashed, empty box of the slide's shape, so the pairing
20578
+ * still reads at a glance.
20579
+ */
20580
+
20581
+ .crewlet-slide-compare {
20582
+ display: flex;
20583
+ flex-direction: column;
20584
+ gap: var(--spacing-3);
20585
+ }
20586
+
20587
+ .crewlet-slide-compare__summary {
20588
+ margin: 0;
20589
+ color: var(--color-text-secondary);
20590
+ font-size: var(--font-size-sm);
20591
+ }
20592
+
20593
+ .crewlet-slide-compare__list {
20594
+ display: flex;
20595
+ flex-direction: column;
20596
+ gap: var(--spacing-4);
20597
+ margin: 0;
20598
+ padding: 0;
20599
+ list-style: none;
20600
+ }
20601
+
20602
+ .crewlet-slide-compare__head {
20603
+ display: flex;
20604
+ flex-wrap: wrap;
20605
+ align-items: center;
20606
+ gap: var(--spacing-2) var(--spacing-3);
20607
+ margin-bottom: var(--spacing-2);
20608
+ }
20609
+
20610
+ .crewlet-slide-compare__title {
20611
+ font-weight: var(--font-weight-semibold);
20612
+ }
20613
+
20614
+ .crewlet-slide-compare__change {
20615
+ display: inline-flex;
20616
+ align-items: center;
20617
+ gap: var(--spacing-1);
20618
+ padding: 0 var(--spacing-2);
20619
+ border: 1px solid var(--color-border-default);
20620
+ border-radius: var(--radius-pill);
20621
+ color: var(--color-text-secondary);
20622
+ font-size: var(--font-size-xs);
20623
+ }
20624
+
20625
+ .crewlet-slide-compare__sides {
20626
+ display: grid;
20627
+ grid-template-columns: repeat(2, minmax(0, 1fr));
20628
+ gap: var(--spacing-3);
20629
+ }
20630
+
20631
+ .crewlet-slide-compare__side .crewlet-slide-stage {
20632
+ border-radius: var(--radius-sm);
20633
+ outline: 1px solid var(--color-border-default);
20634
+ }
20635
+
20636
+ .crewlet-slide-compare__missing {
20637
+ display: flex;
20638
+ align-items: center;
20639
+ justify-content: center;
20640
+ aspect-ratio: 16 / 9;
20641
+ margin: 0;
20642
+ border: 1px dashed var(--color-border-strong);
20643
+ border-radius: var(--radius-sm);
20644
+ color: var(--color-text-tertiary);
20645
+ font-size: var(--font-size-sm);
20646
+ }
20647
+
20648
+ @media (width < 640px) {
20649
+ .crewlet-slide-compare__sides {
20650
+ grid-template-columns: minmax(0, 1fr);
20651
+ }
20652
+ }
20653
+
20654
+
20655
+ /* SlideFilmstrip-BCLNAHFX.css */
20656
+ /*
20657
+ * SlideFilmstrip: the column of slide thumbnails beside a deck's stage.
20658
+ *
20659
+ * The selected slide is ringed in the brand accent rather than filled, so its
20660
+ * thumbnail still shows the slide's own colours.
20661
+ */
20662
+
20663
+ .crewlet-slide-filmstrip__list {
20664
+ display: flex;
20665
+ flex-direction: column;
20666
+ gap: var(--spacing-2);
20667
+ margin: 0;
20668
+ padding: var(--spacing-1);
20669
+ list-style: none;
20670
+ }
20671
+
20672
+ .crewlet-slide-filmstrip__item {
20673
+ display: grid;
20674
+ grid-template-columns: var(--spacing-5) minmax(0, 1fr) auto;
20675
+ align-items: start;
20676
+ gap: var(--spacing-1);
20677
+ }
20678
+
20679
+ .crewlet-slide-filmstrip__number {
20680
+ padding-top: var(--spacing-1);
20681
+ color: var(--color-text-tertiary);
20682
+ font-size: var(--font-size-xs);
20683
+ font-variant-numeric: tabular-nums;
20684
+ text-align: right;
20685
+ }
20686
+
20687
+ .crewlet-slide-filmstrip__thumb {
20688
+ position: relative;
20689
+ display: block;
20690
+ width: 100%;
20691
+ padding: 0;
20692
+ border: 0;
20693
+ background: transparent;
20694
+ border-radius: var(--radius-sm);
20695
+ outline: 1px solid var(--color-border-default);
20696
+ cursor: pointer;
20697
+ overflow: hidden;
20698
+ }
20699
+
20700
+ .crewlet-slide-filmstrip__thumb:hover {
20701
+ outline-color: var(--color-border-hover);
20702
+ }
20703
+
20704
+ .crewlet-slide-filmstrip__item[data-selected='true'] .crewlet-slide-filmstrip__thumb {
20705
+ outline: 2px solid var(--color-brand-accent);
20706
+ }
20707
+
20708
+ /* ONE RING, OVER THE THUMBNAIL'S OWN EDGE: the focus outline takes the place
20709
+ of the edge rather than standing off it as a second one. */
20710
+ .crewlet-slide-filmstrip__thumb:focus-visible {
20711
+ outline: 2px solid var(--color-focus);
20712
+ outline-offset: var(--size-focus-ring-inset-offset);
20713
+ }
20714
+
20715
+ .crewlet-slide-filmstrip__item[data-hidden='true'] .crewlet-slide-stage {
20716
+ opacity: 0.45;
20717
+ }
20718
+
20719
+ .crewlet-slide-filmstrip__hidden {
20720
+ position: absolute;
20721
+ right: var(--spacing-1);
20722
+ bottom: var(--spacing-1);
20723
+ display: inline-flex;
20724
+ padding: var(--spacing-0);
20725
+ border-radius: var(--radius-xs);
20726
+ background: var(--color-surface-elevated);
20727
+ color: var(--color-text-secondary);
20728
+ }
20729
+
20730
+ .crewlet-slide-filmstrip__handle {
20731
+ display: inline-flex;
20732
+ align-items: center;
20733
+ justify-content: center;
20734
+ min-width: var(--size-target-min);
20735
+ min-height: var(--size-target-min);
20736
+ padding: 0;
20737
+ border: 0;
20738
+ border-radius: var(--radius-sm);
20739
+ background: transparent;
20740
+ color: var(--color-text-tertiary);
20741
+ cursor: grab;
20742
+ }
20743
+
20744
+ .crewlet-slide-filmstrip__handle:hover {
20745
+ background: var(--color-surface-hover);
20746
+ }
20747
+
20748
+ .crewlet-slide-filmstrip__handle:focus-visible {
20749
+ outline: 2px solid var(--color-focus);
20750
+ outline-offset: var(--size-focus-ring-inset-offset);
20751
+ }
20752
+
20753
+ .crewlet-slide-filmstrip__item[data-reorder='dragging'] {
20754
+ opacity: 0.4;
20755
+ }
20756
+
20757
+ .crewlet-slide-filmstrip__item[data-reorder-target='before'] .crewlet-slide-filmstrip__thumb {
20758
+ box-shadow: 0 calc(var(--spacing-1) * -1) 0 var(--color-brand-accent);
20759
+ }
20760
+
20761
+ .crewlet-slide-filmstrip__item[data-reorder-target='after'] .crewlet-slide-filmstrip__thumb {
20762
+ box-shadow: 0 var(--spacing-1) 0 var(--color-brand-accent);
20763
+ }
20764
+
20765
+
20766
+ /* SlideGrid-RT6QEQEE.css */
20767
+ /*
20768
+ * SlideGrid: every slide of a deck at once, by its outline's sections.
20769
+ */
20770
+
20771
+ .crewlet-slide-grid {
20772
+ display: flex;
20773
+ flex-direction: column;
20774
+ gap: var(--spacing-6);
20775
+ }
20776
+
20777
+ .crewlet-slide-grid__heading {
20778
+ margin: 0 0 var(--spacing-3);
20779
+ color: var(--color-text-secondary);
20780
+ font-size: var(--font-size-sm);
20781
+ font-weight: var(--font-weight-semibold);
20782
+ }
20783
+
20784
+ .crewlet-slide-grid__list {
20785
+ display: grid;
20786
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr));
20787
+ gap: var(--spacing-4);
20788
+ margin: 0;
20789
+ padding: 0;
20790
+ list-style: none;
20791
+ }
20792
+
20793
+ .crewlet-slide-grid__card {
19429
20794
  display: flex;
19430
20795
  flex-direction: column;
19431
20796
  gap: var(--spacing-2);
19432
- }
19433
-
19434
- .crewlet-skeleton__pricing-card-feature {
19435
- display: flex;
19436
- align-items: center;
19437
- gap: var(--spacing-2);
19438
- }
19439
-
19440
- .crewlet-skeleton__line--heading { width: 80px; height: 16px; margin: 0; }
19441
- .crewlet-skeleton__line--wide { width: 90%; }
19442
- .crewlet-skeleton__line--three-quarter { width: 75%; }
19443
- .crewlet-skeleton__line--feature { width: 60px; height: 12px; margin: 0; }
19444
-
19445
- /* ── Box variant: the hero shimmer ──────────────────────────────── */
19446
- .crewlet-skeleton--box {
19447
20797
  width: 100%;
19448
20798
  padding: 0;
20799
+ border: 0;
20800
+ background: transparent;
20801
+ color: inherit;
20802
+ font: inherit;
20803
+ text-align: left;
20804
+ cursor: pointer;
19449
20805
  }
19450
20806
 
19451
- .crewlet-skeleton__glow-box {
19452
- width: 100%;
19453
- background: var(--color-surface-inset);
19454
- border: 1px solid var(--color-border-default);
19455
- position: relative;
19456
- overflow: hidden;
20807
+ .crewlet-slide-grid__card .crewlet-slide-stage {
20808
+ border-radius: var(--radius-sm);
20809
+ outline: 1px solid var(--color-border-default);
19457
20810
  }
19458
20811
 
19459
- .crewlet-skeleton__glow-wave {
19460
- position: absolute;
19461
- top: 0;
19462
- left: -100%;
19463
- width: 100%;
19464
- height: 100%;
19465
- background: linear-gradient(90deg, transparent, var(--color-surface-hover), transparent);
19466
- animation: crewlet-skeleton-wave calc(var(--motion-duration-slow) * 5) var(--motion-easing-in-out) infinite;
20812
+ .crewlet-slide-grid__card:hover .crewlet-slide-stage {
20813
+ outline-color: var(--color-border-hover);
19467
20814
  }
19468
20815
 
19469
- @keyframes crewlet-skeleton-wave {
19470
- 0% {
19471
- left: -100%;
19472
- }
19473
-
19474
- 100% {
19475
- left: 100%;
19476
- }
20816
+ .crewlet-slide-grid__card[aria-current='true'] .crewlet-slide-stage {
20817
+ outline: 2px solid var(--color-brand-accent);
19477
20818
  }
19478
20819
 
19479
- /* ── responsive ─────────────────────────────────────────────────── */
19480
- @media (max-width: 1200px) {
19481
- .crewlet-skeleton--pricing-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
19482
- .crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 2; }
19483
-
19484
- .crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
19485
- --crewlet-skeleton-cols: 2;
19486
- --crewlet-skeleton-row-gap: var(--spacing-6);
19487
- --crewlet-skeleton-col-gap: var(--spacing-7);
19488
- }
20820
+ /* ONE RING, round the whole card (its slide and its caption), on the inset
20821
+ offset so it does not stand off the slide's own edge as a second line. */
20822
+ .crewlet-slide-grid__card:focus-visible {
20823
+ outline: 2px solid var(--color-focus);
20824
+ outline-offset: var(--size-focus-ring-inset-offset);
20825
+ }
19489
20826
 
19490
- :where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item::before { display: none; }
20827
+ .crewlet-slide-grid__card[data-hidden='true'] .crewlet-slide-stage {
20828
+ opacity: 0.45;
20829
+ }
19491
20830
 
19492
- :where(.crewlet-skeleton--cols-4) > .crewlet-skeleton__info-item:where(:nth-child(2n + 1):nth-child(n + 3))::before {
19493
- display: block;
19494
- }
20831
+ .crewlet-slide-grid__caption {
20832
+ display: flex;
20833
+ align-items: center;
20834
+ gap: var(--spacing-2);
20835
+ color: var(--color-text-secondary);
20836
+ font-size: var(--font-size-xs);
19495
20837
  }
19496
20838
 
19497
- @media (max-width: 768px) {
19498
- .crewlet-skeleton--pricing-card { grid-template-columns: minmax(0, 1fr); }
20839
+ .crewlet-slide-grid__number {
20840
+ color: var(--color-text-tertiary);
20841
+ font-variant-numeric: tabular-nums;
20842
+ }
19499
20843
 
19500
- .crewlet-skeleton--grid.crewlet-skeleton--cols-2,
19501
- .crewlet-skeleton--grid.crewlet-skeleton--cols-3,
19502
- .crewlet-skeleton--grid.crewlet-skeleton--cols-4 { --crewlet-skeleton-cols: 1; }
20844
+ .crewlet-slide-grid__title {
20845
+ overflow: hidden;
20846
+ text-overflow: ellipsis;
20847
+ white-space: nowrap;
20848
+ }
19503
20849
 
19504
- .crewlet-skeleton--info-grid.crewlet-skeleton--cols-2,
19505
- .crewlet-skeleton--info-grid.crewlet-skeleton--cols-3,
19506
- .crewlet-skeleton--info-grid.crewlet-skeleton--cols-4 {
19507
- --crewlet-skeleton-cols: 1;
19508
- --crewlet-skeleton-row-gap: var(--spacing-5);
19509
- }
19510
20850
 
19511
- .crewlet-skeleton__info-item::before { display: none; }
19512
- .crewlet-skeleton__info-item:where(:nth-child(n + 2))::before { display: block; }
20851
+ /* SlideStage-XIOTMMRU.css */
20852
+ /*
20853
+ * SlideStage: a slide laid out at its authored size and scaled to its box.
20854
+ *
20855
+ * The box clips: a pinned element authored past the stage's edge is cut there,
20856
+ * as it is on a projector, rather than spilling over the next thumbnail.
20857
+ */
19513
20858
 
19514
- .crewlet-skeleton--card,
19515
- .crewlet-skeleton__card { padding: var(--spacing-4); }
20859
+ .crewlet-slide-stage {
20860
+ position: relative;
20861
+ overflow: hidden;
20862
+ width: 100%;
20863
+ background: var(--color-surface-inset);
19516
20864
  }
19517
20865
 
19518
- /*
19519
- * A placeholder that cannot move is still a placeholder: it keeps its shape,
19520
- * its grey and its position, so the page still says how much is coming and
19521
- * still does not jump when it arrives.
19522
- */
19523
- @media (prefers-reduced-motion: reduce) {
19524
- .crewlet-skeleton .crewlet-skeleton__line,
19525
- .crewlet-skeleton .crewlet-skeleton__avatar,
19526
- .crewlet-skeleton .crewlet-skeleton__circle,
19527
- .crewlet-skeleton .crewlet-skeleton__button,
19528
- .crewlet-skeleton__glow-wave {
19529
- animation: none;
19530
- }
20866
+ .crewlet-slide-stage--contain {
20867
+ height: 100%;
20868
+ }
19531
20869
 
19532
- /* Held still ON the inset step rather than wherever the sweep stopped: a
19533
- gradient frozen mid-travel is a block with a bright stripe down it. */
19534
- .crewlet-skeleton .crewlet-skeleton__line,
19535
- .crewlet-skeleton .crewlet-skeleton__avatar,
19536
- .crewlet-skeleton .crewlet-skeleton__circle,
19537
- .crewlet-skeleton .crewlet-skeleton__button {
19538
- background: var(--color-surface-inset);
19539
- }
20870
+ .crewlet-slide-stage__frame {
20871
+ position: absolute;
20872
+ top: 0;
20873
+ left: 0;
20874
+ transform-origin: 0 0;
20875
+ overflow: hidden;
20876
+ }
19540
20877
 
19541
- .crewlet-skeleton__glow-wave {
19542
- display: none;
20878
+ @media print {
20879
+ .crewlet-slide-stage {
20880
+ break-inside: avoid;
20881
+ background: transparent;
19543
20882
  }
19544
20883
  }
19545
20884
 
@@ -21924,7 +23263,7 @@ b.crewlet-switcher__match {
21924
23263
  }
21925
23264
 
21926
23265
 
21927
- /* TagGroup-BCQZD7ZD.css */
23266
+ /* TagGroup-NAXTJHDS.css */
21928
23267
  /*
21929
23268
  * A labelled list of tags with the tail behind a count.
21930
23269
  *
@@ -21952,6 +23291,28 @@ b.crewlet-switcher__match {
21952
23291
  outline-offset: 2px;
21953
23292
  }
21954
23293
 
23294
+ /* ONE LINE (overflow="fit"): what wraps is measured and left out, so the
23295
+ line is clipped only for the instant before the count replaces it. */
23296
+ .crewlet-tag-group--fit {
23297
+ flex-wrap: wrap;
23298
+ overflow: hidden;
23299
+ max-height: max(24px, calc(24px * var(--density, 1)));
23300
+ }
23301
+
23302
+ .crewlet-tag-group__count {
23303
+ display: inline-flex;
23304
+ align-items: center;
23305
+ height: max(20px, calc(20px * var(--density, 1)));
23306
+ padding: 0 var(--spacing-1);
23307
+ border-radius: var(--radius-xs);
23308
+ background: var(--color-surface-subtle);
23309
+ color: var(--color-text-secondary);
23310
+ font-family: var(--font-family-sans);
23311
+ font-size: var(--font-size-2xs);
23312
+ font-weight: var(--font-weight-medium);
23313
+ white-space: nowrap;
23314
+ }
23315
+
21955
23316
  .crewlet-tag-group__item {
21956
23317
  display: inline-flex;
21957
23318
  min-width: 0;
@@ -25166,7 +26527,7 @@ svg.crewlet-time-window__tick {
25166
26527
  }
25167
26528
 
25168
26529
 
25169
- /* VersionTimeline-EBJ6MIPJ.css */
26530
+ /* VersionTimeline-6KRXEEOO.css */
25170
26531
  /*
25171
26532
  * A version list beside the version on show. The row's main line is the
25172
26533
  * button that shows it; the controls sit under the facts, so a reader scanning
@@ -25201,11 +26562,11 @@ svg.crewlet-time-window__tick {
25201
26562
  background: var(--color-surface-hover);
25202
26563
  }
25203
26564
 
25204
- /* The version on show. The accent means "where the reader is", which is
25205
- exactly what this row is. */
26565
+ /* The version on show, as a FILL only: the timeline's rail is the row's one
26566
+ vertical line, and an accent bar beside it drew two. The accent means
26567
+ "where the reader is", which is exactly what this row is. */
25206
26568
  .crewlet-version-timeline__select[aria-current='true'] {
25207
26569
  background: var(--color-brand-accent-soft);
25208
- box-shadow: inset 2px 0 0 var(--color-brand-accent);
25209
26570
  }
25210
26571
 
25211
26572
  .crewlet-version-timeline__head {
@@ -25260,11 +26621,11 @@ svg.crewlet-time-window__tick {
25260
26621
  padding-inline: var(--spacing-1);
25261
26622
  }
25262
26623
 
25263
- /* The version compared against carries the same edge in the strong neutral:
25264
- it is the other side of the comparison, not where the reader is, so it does
25265
- not take the accent. */
26624
+ /* The version compared against is ringed in the strong neutral: it is the
26625
+ other side of the comparison, not where the reader is, so it takes neither
26626
+ the accent nor a second vertical bar beside the rail. */
25266
26627
  .is-compared > .crewlet-timeline__body > .crewlet-version-timeline__select {
25267
- box-shadow: inset 2px 0 0 var(--color-border-strong);
26628
+ box-shadow: inset 0 0 0 1px var(--color-border-strong);
25268
26629
  }
25269
26630
 
25270
26631
  .crewlet-version-timeline__gap {
@@ -25299,3 +26660,133 @@ svg.crewlet-time-window__tick {
25299
26660
  clip-path: inset(50%);
25300
26661
  white-space: nowrap;
25301
26662
  }
26663
+
26664
+
26665
+ /* WidgetFrame-4EFJOJMW.css */
26666
+ /*
26667
+ * WidgetFrame: one figure on a dashboard. A title row, the figure filling the
26668
+ * height the host's frame gives it, and the citation line at the foot.
26669
+ */
26670
+
26671
+ .crewlet-widget-frame {
26672
+ box-sizing: border-box;
26673
+ display: flex;
26674
+ flex-direction: column;
26675
+ gap: var(--spacing-2);
26676
+ min-width: 0;
26677
+ height: 100%;
26678
+ min-height: 0;
26679
+ padding: var(--spacing-3) var(--spacing-4);
26680
+ border: 1px solid var(--color-border-default);
26681
+ border-radius: var(--radius-lg);
26682
+ background: var(--color-surface-elevated);
26683
+ }
26684
+
26685
+ .crewlet-widget-frame__head {
26686
+ display: flex;
26687
+ align-items: center;
26688
+ gap: var(--spacing-2);
26689
+ min-width: 0;
26690
+ }
26691
+
26692
+ .crewlet-widget-frame__title {
26693
+ flex: 1;
26694
+ min-width: 0;
26695
+ margin: 0;
26696
+ overflow: hidden;
26697
+ color: var(--color-text-primary);
26698
+ font-size: var(--font-size-sm);
26699
+ font-weight: var(--font-weight-semibold);
26700
+ line-height: var(--font-line-height-snug);
26701
+ text-overflow: ellipsis;
26702
+ white-space: nowrap;
26703
+ }
26704
+
26705
+ .crewlet-widget-frame__actions {
26706
+ display: inline-flex;
26707
+ flex: none;
26708
+ align-items: center;
26709
+ gap: var(--spacing-1);
26710
+ }
26711
+
26712
+ .crewlet-widget-frame__body {
26713
+ flex: 1;
26714
+ min-width: 0;
26715
+ min-height: 0;
26716
+ overflow: auto;
26717
+ }
26718
+
26719
+ .crewlet-widget-frame__blocked {
26720
+ display: flex;
26721
+ align-items: flex-start;
26722
+ gap: var(--spacing-2);
26723
+ margin: 0;
26724
+ color: var(--color-text-secondary);
26725
+ font-size: var(--font-size-sm);
26726
+ line-height: var(--font-line-height-normal);
26727
+ }
26728
+
26729
+ .crewlet-widget-frame__blocked-glyph {
26730
+ display: inline-flex;
26731
+ flex: none;
26732
+ padding-top: 2px;
26733
+ color: var(--color-text-tertiary);
26734
+ }
26735
+
26736
+ .crewlet-widget-frame__cite {
26737
+ display: flex;
26738
+ min-width: 0;
26739
+ }
26740
+
26741
+ .crewlet-widget-frame__cite-text,
26742
+ .crewlet-widget-frame__cite-button {
26743
+ display: inline-flex;
26744
+ flex-wrap: wrap;
26745
+ align-items: center;
26746
+ gap: 0 var(--spacing-1);
26747
+ min-width: 0;
26748
+ color: var(--color-text-tertiary);
26749
+ font-size: var(--font-size-xs);
26750
+ line-height: var(--font-line-height-snug);
26751
+ }
26752
+
26753
+ .crewlet-widget-frame__cite-button {
26754
+ margin: 0;
26755
+ padding: 0;
26756
+ border: 0;
26757
+ border-radius: var(--radius-xs);
26758
+ background: none;
26759
+ font: inherit;
26760
+ font-size: var(--font-size-xs);
26761
+ text-align: start;
26762
+ cursor: pointer;
26763
+ }
26764
+
26765
+ .crewlet-widget-frame__cite-button:hover .crewlet-widget-frame__source {
26766
+ color: var(--color-text-primary);
26767
+ text-decoration: underline;
26768
+ }
26769
+
26770
+ .crewlet-widget-frame__cite-button:focus-visible {
26771
+ outline: 2px solid var(--color-focus);
26772
+ outline-offset: var(--size-focus-ring-inset-offset);
26773
+ }
26774
+
26775
+ .crewlet-widget-frame__source {
26776
+ overflow: hidden;
26777
+ color: var(--color-text-secondary);
26778
+ font-weight: var(--font-weight-medium);
26779
+ text-overflow: ellipsis;
26780
+ white-space: nowrap;
26781
+ }
26782
+
26783
+ /* The separator is drawn, not typed, so a screen reader hears the facts alone. */
26784
+ .crewlet-widget-frame__when::before {
26785
+ content: '\00b7' / '';
26786
+ margin-inline-end: var(--spacing-1);
26787
+ }
26788
+
26789
+ .crewlet-widget-frame__stale {
26790
+ display: inline-flex;
26791
+ color: var(--color-feedback-warning-ink);
26792
+ }