@sunboard/react 0.8.0 → 1.0.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.
package/dist/styles.css CHANGED
@@ -1,904 +1,1264 @@
1
1
  /*
2
- * Sunboard owns its own variable namespace. Defaults are plain color literals
3
- * so they render correctly under any host theme system (Tailwind, shadcn v3
4
- * HSL, shadcn v4 OKLCH, vanilla CSS, etc.). To theme Sunboard to match your
5
- * app, override the `--sunboard-*` variables below in your own stylesheet —
6
- * map them to your design tokens (e.g. `var(--card)`, `var(--primary)`) or
7
- * set explicit colors. Make sure your stylesheet imports AFTER
8
- * `@sunboard/react/styles.css` so your overrides win the cascade.
2
+ * @sunboard/react styles. Isolation: everything is scoped under .sb-root
3
+ * (which carries the --sb-* theme variables inline) with explicit resets;
4
+ * nothing global, no shadow DOM (guide surfaces must inherit host layout).
9
5
  */
10
- :root {
11
- --sunboard-font:
12
- Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
13
- sans-serif;
14
- --sunboard-radius: 12px;
15
-
16
- --sunboard-checklist-background: #ffffff;
17
- --sunboard-checklist-foreground: #111827;
18
- --sunboard-checklist-border: #e5e7eb;
19
- --sunboard-checklist-shadow: 0 4px 12px rgb(0 0 0 / 10%);
20
- --sunboard-checklist-muted: #f3f4f6;
21
- --sunboard-checklist-muted-foreground: #6b7280;
22
- --sunboard-checklist-primary: #2563eb;
23
- --sunboard-checklist-primary-foreground: #ffffff;
24
- --sunboard-checklist-success: #16a34a;
25
-
26
- --sunboard-launcher-background: var(--sunboard-checklist-primary);
27
- --sunboard-launcher-foreground: var(--sunboard-checklist-primary-foreground);
28
- --sunboard-launcher-shadow: var(--sunboard-checklist-shadow);
29
- --sunboard-launcher-badge-background: #ef4444;
30
- --sunboard-launcher-badge-foreground: #ffffff;
31
-
32
- --sunboard-tour-background: var(--sunboard-checklist-background);
33
- --sunboard-tour-foreground: var(--sunboard-checklist-foreground);
34
- --sunboard-tour-border: var(--sunboard-checklist-border);
35
- --sunboard-tour-shadow: var(--sunboard-checklist-shadow);
36
- --sunboard-tour-muted-foreground: var(
37
- --sunboard-checklist-muted-foreground
38
- );
39
- --sunboard-tour-primary: var(--sunboard-checklist-primary);
40
- --sunboard-tour-primary-foreground: var(
41
- --sunboard-checklist-primary-foreground
42
- );
43
- --sunboard-tour-secondary-background: var(--sunboard-tour-background);
44
- --sunboard-tour-secondary-foreground: var(--sunboard-tour-foreground);
45
- --sunboard-tour-secondary-border: var(--sunboard-tour-border);
46
-
47
- --sunboard-overlay-color: rgb(15 23 42 / 18%);
48
- /* Stronger scrim behind the centered onboarding survey (a gating step). */
49
- --sunboard-survey-overlay-color: rgb(15 23 42 / 45%);
50
-
51
- --sunboard-hotspot-background: var(--sunboard-checklist-primary);
52
- --sunboard-hotspot-border: var(--sunboard-checklist-primary-foreground);
53
- --sunboard-hotspot-dot: var(--sunboard-checklist-primary-foreground);
54
- --sunboard-hotspot-shadow: var(--sunboard-checklist-shadow);
55
- --sunboard-hotspot-pulse-ring: rgb(37 99 235 / 28%);
56
-
57
- --sunboard-debug-background: var(--sunboard-checklist-background);
58
- --sunboard-debug-foreground: var(--sunboard-checklist-foreground);
59
- --sunboard-debug-border: var(--sunboard-checklist-border);
60
- --sunboard-debug-shadow: var(--sunboard-checklist-shadow);
61
- }
62
-
63
- .sunboard-root {
64
- position: fixed;
65
- right: max(16px, env(safe-area-inset-right));
66
- bottom: max(16px, env(safe-area-inset-bottom));
67
- z-index: 2147483000;
68
- width: min(360px, calc(100vw - 32px));
69
- max-height: min(680px, calc(100vh - 32px));
70
- overflow: auto;
6
+
7
+ .sb-root,
8
+ .sb-root *,
9
+ .sb-root *::before,
10
+ .sb-root *::after {
71
11
  box-sizing: border-box;
72
- border: 1px solid var(--sunboard-checklist-border);
73
- border-radius: var(--sunboard-radius);
74
- background: var(--sunboard-checklist-background);
75
- box-shadow: var(--sunboard-checklist-shadow);
76
- color: var(--sunboard-checklist-foreground);
77
- font-family: var(--sunboard-font);
78
- padding: 16px;
12
+ margin: 0;
13
+ }
14
+
15
+ .sb-root {
16
+ --sb-r2: max(calc(var(--sb-card-radius) - 4px), 2px);
17
+ --sb-r3: max(calc(var(--sb-card-radius) - 6px), 2px);
18
+ --sb-ring: color-mix(in srgb, var(--sb-accent) 20%, transparent);
19
+ --sb-tint: color-mix(in srgb, var(--sb-accent) 10%, transparent);
20
+
21
+ color: var(--sb-text);
22
+ font-family: var(--sb-font);
23
+ font-size: var(--sb-size-base);
24
+ font-weight: var(--sb-weight-regular);
25
+ line-height: var(--sb-lh-normal);
26
+ }
27
+ .sb-root[data-sb-mode="dark"] {
28
+ --sb-tint: color-mix(in srgb, var(--sb-accent) 20%, transparent);
79
29
  }
80
30
 
81
- .sunboard-launcher {
31
+ .sb-root button {
32
+ font-family: var(--sb-font);
33
+ }
34
+
35
+ /* One focus idiom for every interactive element in the SDK (v1 parity: the
36
+ keyboard path is first-class on all surfaces, not just form controls). */
37
+ .sb-root button:focus-visible,
38
+ .sb-root a:focus-visible,
39
+ .sb-root input:focus-visible {
40
+ outline: none;
41
+ box-shadow: var(--sb-focus-ring);
42
+ }
43
+
44
+ /* The card takes focus when a step shows; the spotlight and the card itself
45
+ already say where the user is, so it draws no ring of its own. */
46
+ .sb-root .popover-card:focus {
47
+ outline: none;
48
+ }
49
+
50
+ /* ---------- overlay: card primary action ---------- */
51
+ .sb-root .start {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ gap: 4px;
55
+ padding: 0;
56
+ background: none;
57
+ border: none;
58
+ color: var(--sb-accent);
59
+ font-family: var(--sb-font);
60
+ font-size: var(--sb-size-sm);
61
+ font-weight: var(--sb-weight-medium);
62
+ cursor: pointer;
63
+ }
64
+ .sb-root .start:hover {
65
+ color: color-mix(in srgb, var(--sb-accent) 80%, var(--sb-text));
66
+ }
67
+ .sb-root .start svg {
68
+ width: 12px;
69
+ height: 12px;
70
+ }
71
+ .sb-root .start.filled {
72
+ justify-content: center;
73
+ height: var(--sb-input-height);
74
+ padding: 0 var(--sb-input-padding);
75
+ border-radius: var(--sb-input-radius);
76
+ background: var(--sb-accent);
77
+ color: var(--sb-accent-text);
78
+ }
79
+ .sb-root .start.filled:hover {
80
+ background: color-mix(in srgb, var(--sb-accent) 85%, var(--sb-text));
81
+ color: var(--sb-accent-text);
82
+ }
83
+
84
+ /* ---------- launcher ---------- */
85
+ .sb-root .sb-launcher {
82
86
  position: fixed;
83
87
  right: max(16px, env(safe-area-inset-right));
84
88
  bottom: max(16px, env(safe-area-inset-bottom));
85
- z-index: 2147483000;
86
- display: grid;
87
- width: 56px;
88
- height: 56px;
89
- place-items: center;
90
- border: 0;
89
+ z-index: 2147482996;
90
+ display: inline-flex;
91
+ align-items: center;
92
+ gap: 8px;
93
+ height: 44px;
94
+ max-width: calc(100vw - 32px);
95
+ padding: 0 16px 0 12px;
96
+ border: none;
91
97
  border-radius: 999px;
92
- background: var(--sunboard-launcher-background);
93
- box-shadow: var(--sunboard-launcher-shadow);
94
- color: var(--sunboard-launcher-foreground);
98
+ background: var(--sb-accent);
99
+ color: var(--sb-accent-text);
100
+ box-shadow: 0 6px 20px -6px rgba(16, 17, 20, 0.4);
95
101
  cursor: pointer;
96
- font-family: var(--sunboard-font);
97
- padding: 0;
98
- transition: transform 160ms ease;
102
+ font-family: var(--sb-font);
103
+ font-size: var(--sb-size-base);
104
+ font-weight: var(--sb-weight-medium);
105
+ line-height: normal;
99
106
  }
100
-
101
- .sunboard-launcher:hover {
102
- transform: scale(1.05);
107
+ .sb-root .sb-launcher svg {
108
+ width: 18px;
109
+ height: 18px;
103
110
  }
104
111
 
105
- .sunboard-launcher svg {
106
- width: 24px;
107
- height: 24px;
112
+ /* ---------- tour pill ---------- */
113
+ .sb-root .sb-tour-pill {
114
+ position: fixed;
115
+ right: max(16px, env(safe-area-inset-right));
116
+ bottom: max(16px, env(safe-area-inset-bottom));
117
+ z-index: 2147482996;
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 12px;
121
+ height: 48px;
122
+ max-width: calc(100vw - 32px);
123
+ padding: 0 6px 0 14px;
124
+ border: 1px solid var(--sb-border);
125
+ border-radius: 999px;
126
+ background: var(--sb-surface);
127
+ color: var(--sb-text);
128
+ box-shadow: var(--sb-card-shadow);
129
+ line-height: normal;
108
130
  }
109
-
110
- .sunboard-launcher-badge {
111
- position: absolute;
112
- top: -4px;
113
- right: -4px;
131
+ .sb-root .sb-tour-pill-mark {
114
132
  display: grid;
115
- min-width: 22px;
116
- height: 22px;
117
133
  place-items: center;
134
+ flex-shrink: 0;
135
+ width: 22px;
136
+ height: 22px;
118
137
  border-radius: 999px;
119
- background: var(--sunboard-launcher-badge-background);
120
- box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
121
- color: var(--sunboard-launcher-badge-foreground);
122
- font-size: 12px;
123
- font-weight: 700;
124
- line-height: 1;
125
- padding: 0 6px;
138
+ background: var(--sb-tint);
139
+ color: var(--sb-accent);
140
+ }
141
+ .sb-root .sb-tour-pill-mark svg {
142
+ width: 12px;
143
+ height: 12px;
144
+ }
145
+ .sb-root .sb-tour-pill-name {
146
+ overflow: hidden;
147
+ text-overflow: ellipsis;
148
+ white-space: nowrap;
149
+ font-size: var(--sb-size-base);
150
+ font-weight: var(--sb-weight-medium);
151
+ }
152
+ .sb-root .sb-tour-pill-count {
153
+ flex-shrink: 0;
154
+ font-size: var(--sb-size-sm);
155
+ color: var(--sb-text-muted);
156
+ }
157
+ .sb-root .sb-tour-pill-stop {
158
+ flex-shrink: 0;
159
+ height: 36px;
160
+ padding: 0 14px;
161
+ border: 0;
162
+ border-radius: 999px;
163
+ background: var(--sb-surface-hover);
164
+ color: var(--sb-text);
165
+ cursor: pointer;
166
+ font-family: var(--sb-font);
167
+ font-size: var(--sb-size-sm);
168
+ font-weight: var(--sb-weight-medium);
169
+ }
170
+ .sb-root .sb-tour-pill-stop:hover {
171
+ background: var(--sb-border);
126
172
  }
127
173
 
128
- .sunboard-launcher:focus-visible,
129
- .sunboard-close:focus-visible {
130
- outline: 2px solid var(--sunboard-checklist-primary);
131
- outline-offset: 3px;
174
+ /* ---------- the assistant panel ---------- */
175
+ .sb-root .sb-sr {
176
+ position: absolute;
177
+ width: 1px;
178
+ height: 1px;
179
+ margin: -1px;
180
+ padding: 0;
181
+ overflow: hidden;
182
+ clip-path: inset(50%);
183
+ white-space: nowrap;
184
+ border: 0;
132
185
  }
133
186
 
134
- .sunboard-root *,
135
- .sunboard-root *::before,
136
- .sunboard-root *::after {
137
- box-sizing: border-box;
187
+ .sb-root .sb-panel-scrim {
188
+ display: none;
138
189
  }
139
190
 
140
- .sunboard-header {
191
+ .sb-root .sb-panel {
192
+ position: fixed;
193
+ right: max(16px, env(safe-area-inset-right));
194
+ bottom: max(16px, env(safe-area-inset-bottom));
195
+ z-index: 2147482996;
141
196
  display: flex;
142
- align-items: flex-start;
143
- justify-content: space-between;
144
- gap: 16px;
197
+ flex-direction: column;
198
+ width: var(--sb-launcher-w);
199
+ max-width: calc(100vw - 32px);
200
+ height: min(600px, calc(100vh - 120px));
201
+ /* Dropped, leaving the line above, when the theme holds no max height. */
202
+ height: min(600px, var(--sb-launcher-maxh), calc(100vh - 120px));
203
+ overflow: hidden;
204
+ background: var(--sb-surface);
205
+ color: var(--sb-text);
206
+ border: 1px solid var(--sb-border);
207
+ border-radius: calc(var(--sb-card-radius) + 4px);
208
+ box-shadow:
209
+ 0 1px 2px rgba(16, 17, 20, 0.06),
210
+ 0 16px 40px -12px rgba(16, 17, 20, 0.22);
211
+ line-height: normal;
212
+ animation: sb-slide-in 0.3s ease-out;
213
+ }
214
+ .sb-root .sb-panel:focus {
215
+ outline: none;
216
+ }
217
+ .sb-root .sb-panel.sb-inline {
218
+ position: static;
219
+ animation: none;
145
220
  }
146
221
 
147
- .sunboard-header-actions {
222
+ .sb-root .sb-head {
223
+ position: relative;
224
+ z-index: 2;
225
+ flex-shrink: 0;
226
+ height: 56px;
148
227
  display: flex;
149
- flex: 0 0 auto;
150
228
  align-items: center;
151
- gap: 8px;
229
+ gap: 2px;
230
+ padding: 0 6px 0 18px;
231
+ border-bottom: 1px solid transparent;
152
232
  }
153
-
154
- .sunboard-eyebrow,
155
- .sunboard-title,
156
- .sunboard-progress-count,
157
- .sunboard-step-title,
158
- .sunboard-step-description {
159
- margin: 0;
233
+ .sb-root .sb-head-line {
234
+ border-bottom-color: var(--sb-border);
160
235
  }
161
-
162
- .sunboard-eyebrow {
163
- color: var(--sunboard-checklist-muted-foreground);
164
- font-size: 12px;
165
- font-weight: 650;
166
- line-height: 1.2;
236
+ .sb-root .sb-title {
237
+ flex: 1;
238
+ min-width: 0;
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ white-space: nowrap;
242
+ font-size: calc(var(--sb-size-base) + 1px);
243
+ font-weight: var(--sb-weight-semibold);
167
244
  }
168
-
169
- .sunboard-title {
170
- margin-top: 3px;
171
- font-size: 16px;
172
- font-weight: 700;
173
- line-height: 1.3;
245
+ /* Drawn 36 tall as the design has it; the hit area reaches 44. */
246
+ .sb-root .sb-ghost {
247
+ position: relative;
248
+ flex-shrink: 0;
249
+ height: 36px;
250
+ display: flex;
251
+ align-items: center;
252
+ gap: 6px;
253
+ padding: 0 10px;
254
+ border: 0;
255
+ border-radius: var(--sb-r3);
256
+ background: transparent;
257
+ color: var(--sb-text-muted);
258
+ cursor: pointer;
259
+ font-size: calc(var(--sb-size-base) - 1px);
260
+ font-weight: var(--sb-weight-medium);
174
261
  }
175
-
176
- .sunboard-progress-count {
177
- flex: 0 0 auto;
178
- border-radius: 999px;
179
- background: var(--sunboard-checklist-muted);
180
- color: var(--sunboard-checklist-muted-foreground);
181
- font-size: 12px;
182
- font-weight: 650;
183
- line-height: 1;
184
- padding: 7px 9px;
262
+ .sb-root .sb-ghost::after {
263
+ content: "";
264
+ position: absolute;
265
+ inset: -4px 0;
185
266
  }
186
-
187
- .sunboard-close {
267
+ .sb-root .sb-ghost:hover,
268
+ .sb-root .sb-ghost[aria-expanded="true"] {
269
+ background: var(--sb-surface-hover);
270
+ color: var(--sb-text);
271
+ }
272
+ .sb-root .sb-ghost svg {
273
+ width: 15px;
274
+ height: 15px;
275
+ }
276
+ .sb-root .sb-panel-close {
188
277
  display: grid;
189
- width: 26px;
190
- height: 26px;
191
278
  place-items: center;
279
+ flex-shrink: 0;
280
+ width: 44px;
281
+ height: 44px;
282
+ padding: 0;
192
283
  border: 0;
193
- border-radius: 999px;
284
+ border-radius: var(--sb-r2);
194
285
  background: transparent;
195
- color: var(--sunboard-checklist-muted-foreground);
286
+ color: var(--sb-text-muted);
196
287
  cursor: pointer;
197
- padding: 0;
198
288
  }
199
-
200
- .sunboard-close:hover {
201
- background: var(--sunboard-checklist-muted);
289
+ .sb-root .sb-panel-close:hover {
290
+ background: var(--sb-surface-hover);
291
+ color: var(--sb-text);
202
292
  }
203
-
204
- .sunboard-close svg {
205
- width: 14px;
206
- height: 14px;
293
+ .sb-root .sb-panel-close svg {
294
+ width: 18px;
295
+ height: 18px;
207
296
  }
208
297
 
209
- .sunboard-progress {
210
- height: 8px;
211
- overflow: hidden;
212
- border-radius: 999px;
213
- background: var(--sunboard-checklist-muted);
214
- margin-top: 14px;
298
+ .sb-root .sb-confirm {
299
+ position: absolute;
300
+ top: calc(100% - 4px);
301
+ right: 12px;
302
+ z-index: 5;
303
+ width: 264px;
304
+ max-width: calc(100% - 24px);
305
+ padding: 14px;
306
+ display: flex;
307
+ flex-direction: column;
308
+ gap: 12px;
309
+ background: var(--sb-surface);
310
+ border: 1px solid var(--sb-border);
311
+ border-radius: var(--sb-card-radius);
312
+ box-shadow: 0 12px 32px -10px rgba(10, 11, 14, 0.3);
313
+ }
314
+ .sb-root .sb-confirm-text {
315
+ display: flex;
316
+ flex-direction: column;
317
+ gap: 2px;
318
+ }
319
+ .sb-root .sb-confirm-title {
320
+ font-size: calc(var(--sb-size-base) + 0.5px);
321
+ font-weight: var(--sb-weight-medium);
322
+ }
323
+ .sb-root .sb-confirm-body {
324
+ font-size: calc(var(--sb-size-base) - 0.5px);
325
+ line-height: 1.45;
326
+ color: var(--sb-text-muted);
327
+ }
328
+ .sb-root .sb-confirm-actions {
329
+ display: flex;
330
+ justify-content: flex-end;
331
+ gap: 8px;
332
+ }
333
+ .sb-root .sb-confirm-cancel,
334
+ .sb-root .sb-confirm-go {
335
+ height: 44px;
336
+ padding: 0 14px;
337
+ border: 1px solid var(--sb-border);
338
+ border-radius: var(--sb-r3);
339
+ background: var(--sb-surface);
340
+ color: var(--sb-text);
341
+ cursor: pointer;
342
+ font-size: calc(var(--sb-size-base) - 0.5px);
343
+ font-weight: var(--sb-weight-medium);
344
+ }
345
+ .sb-root .sb-confirm-cancel:hover {
346
+ background: var(--sb-surface-hover);
347
+ }
348
+ .sb-root .sb-confirm-go {
349
+ border-color: var(--sb-text);
350
+ background: var(--sb-text);
351
+ color: var(--sb-surface);
215
352
  }
216
353
 
217
- .sunboard-progress-fill {
354
+ .sb-root .sb-thread {
355
+ position: relative;
356
+ flex: 1;
357
+ min-height: 0;
358
+ }
359
+ .sb-root .sb-thread-scroll {
218
360
  height: 100%;
219
- border-radius: inherit;
220
- background: var(--sunboard-checklist-primary);
221
- transition: width 160ms ease;
361
+ display: flex;
362
+ flex-direction: column;
363
+ overflow-y: auto;
364
+ overflow-anchor: none;
365
+ overscroll-behavior: contain;
222
366
  }
223
-
224
- .sunboard-step-list {
225
- display: grid;
226
- gap: 4px;
227
- list-style: none;
228
- margin: 8px 0 0;
229
- padding: 0;
367
+ /* Starts at the top, and once it overflows, sticks to the newest message. */
368
+ .sb-root .sb-thread-scroll.sb-anchored {
369
+ flex-direction: column-reverse;
230
370
  }
231
-
232
- .sunboard-step-row {
233
- display: grid;
234
- width: 100%;
235
- grid-template-columns: 20px minmax(0, 1fr);
236
- gap: 12px;
237
- align-items: start;
238
- padding: 10px 8px;
239
- margin: 0 -8px;
240
- border-radius: 8px;
371
+ .sb-root .sb-thread-list {
372
+ display: flex;
373
+ flex-direction: column;
374
+ gap: 28px;
375
+ padding: 20px 18px 16px;
241
376
  }
242
-
243
- /* Hovering anywhere on a row with something to click (an action, a checkable
244
- checkbox, or both) highlights the whole row, like the old row-button did. */
245
- .sunboard-step-row[data-interactive="true"]:hover {
246
- background: var(--sunboard-checklist-muted);
377
+ .sb-root .sb-anchored > .sb-thread-list {
378
+ margin-bottom: auto;
247
379
  }
248
380
 
249
- .sunboard-step-main {
250
- display: grid;
381
+ .sb-root .sb-start {
382
+ display: flex;
383
+ flex-direction: column;
384
+ gap: 20px;
385
+ }
386
+ .sb-root .sb-start-title {
387
+ padding-top: 4px;
388
+ font-size: calc(var(--sb-size-base) + 6px);
389
+ font-weight: var(--sb-weight-semibold);
390
+ letter-spacing: -0.01em;
391
+ }
392
+ .sb-root .sb-group {
393
+ display: flex;
394
+ flex-direction: column;
395
+ gap: 2px;
396
+ margin: 0 -10px;
397
+ }
398
+ .sb-root .sb-group h4 {
399
+ padding: 0 10px 6px;
400
+ font-size: calc(var(--sb-size-base) - 1.5px);
401
+ font-weight: var(--sb-weight-medium);
402
+ color: var(--sb-text-muted);
403
+ }
404
+ .sb-root .sb-row {
251
405
  width: 100%;
252
- grid-template-columns: minmax(0, 1fr) 16px;
406
+ min-height: 48px;
407
+ display: flex;
408
+ align-items: center;
253
409
  gap: 12px;
254
- align-items: start;
410
+ padding: 6px 10px;
255
411
  border: 0;
412
+ border-radius: var(--sb-r2);
256
413
  background: transparent;
257
- color: inherit;
258
- cursor: pointer;
259
- font: inherit;
414
+ color: var(--sb-text);
260
415
  text-align: left;
261
- padding: 0;
262
- margin: 0;
263
- border-radius: 4px;
416
+ cursor: pointer;
417
+ font-size: calc(var(--sb-size-base) + 0.5px);
264
418
  }
265
-
266
- .sunboard-step-main:focus-visible {
267
- outline: 2px solid var(--sunboard-checklist-primary);
268
- outline-offset: 2px;
419
+ .sb-root .sb-row:hover,
420
+ .sb-root .sb-row:focus-visible {
421
+ background: var(--sb-surface-hover);
269
422
  }
270
-
271
- .sunboard-step-status {
423
+ .sb-root .sb-row-mark {
272
424
  display: grid;
273
- width: 20px;
274
- height: 20px;
275
425
  place-items: center;
276
- border: 2px solid var(--sunboard-checklist-border);
277
- border-radius: 6px;
278
- background: transparent;
279
- padding: 0;
280
- color: var(--sunboard-checklist-primary-foreground);
426
+ flex-shrink: 0;
427
+ width: 28px;
428
+ height: 28px;
429
+ border-radius: var(--sb-r3);
430
+ background: var(--sb-tint);
431
+ color: var(--sb-accent);
432
+ }
433
+ .sb-root .sb-row-mark svg {
434
+ width: 15px;
435
+ height: 15px;
436
+ }
437
+ .sb-root .sb-row-title {
438
+ flex: 1;
439
+ min-width: 0;
440
+ }
441
+ .sb-root .sb-row > svg {
442
+ width: 16px;
443
+ height: 16px;
444
+ flex-shrink: 0;
445
+ color: var(--sb-text-muted);
281
446
  }
282
447
 
283
- .sunboard-step-status svg {
448
+ .sb-root .sb-exchange {
449
+ display: flex;
450
+ flex-direction: column;
451
+ gap: 16px;
452
+ }
453
+ .sb-root .sb-asked {
454
+ display: flex;
455
+ justify-content: flex-end;
456
+ }
457
+ .sb-root .sb-asked p {
458
+ max-width: 82%;
459
+ padding: 10px 14px;
460
+ border-radius: var(--sb-card-radius) var(--sb-card-radius) var(--sb-r3) var(--sb-card-radius);
461
+ background: var(--sb-surface-hover);
462
+ color: var(--sb-text);
463
+ font-size: calc(var(--sb-size-base) + 0.5px);
464
+ line-height: 1.45;
465
+ white-space: pre-wrap;
466
+ overflow-wrap: anywhere;
467
+ }
468
+
469
+ .sb-root .sb-reply {
470
+ display: flex;
471
+ flex-direction: column;
472
+ gap: 12px;
473
+ }
474
+ .sb-root .sb-arrive {
475
+ animation: sb-fade-in 150ms ease-out both;
476
+ }
477
+ .sb-root .sb-reply-text {
478
+ display: flex;
479
+ flex-direction: column;
480
+ gap: 8px;
481
+ font-size: calc(var(--sb-size-base) + 1px);
482
+ line-height: 1.55;
483
+ text-wrap: pretty;
484
+ overflow-wrap: anywhere;
485
+ }
486
+ .sb-root .sb-answer {
487
+ display: flex;
488
+ flex-direction: column;
489
+ gap: 8px;
490
+ }
491
+ .sb-root .sb-answer ol,
492
+ .sb-root .sb-answer ul {
493
+ list-style: decimal;
494
+ display: flex;
495
+ flex-direction: column;
496
+ gap: 6px;
497
+ padding-left: 1.4em;
498
+ }
499
+ .sb-root .sb-answer ul {
500
+ list-style: disc;
501
+ }
502
+ .sb-root .sb-answer li {
503
+ padding-left: 2px;
504
+ }
505
+ .sb-root .sb-answer li::marker {
506
+ color: var(--sb-text-muted);
507
+ }
508
+ .sb-root .sb-answer strong {
509
+ font-weight: var(--sb-weight-semibold);
510
+ }
511
+ .sb-root .sb-reply-action {
512
+ display: flex;
513
+ }
514
+ .sb-root .sb-primary {
515
+ height: 44px;
516
+ display: flex;
517
+ align-items: center;
518
+ gap: 8px;
519
+ padding: 0 18px 0 16px;
520
+ border: 0;
521
+ border-radius: var(--sb-r2);
522
+ background: var(--sb-accent);
523
+ color: var(--sb-accent-text);
524
+ cursor: pointer;
525
+ font-size: calc(var(--sb-size-base) + 0.5px);
526
+ font-weight: var(--sb-weight-medium);
527
+ }
528
+ .sb-root .sb-primary svg {
529
+ width: 14px;
530
+ height: 14px;
531
+ }
532
+ .sb-root .sb-secondary {
533
+ height: 44px;
534
+ display: flex;
535
+ align-items: center;
536
+ gap: 8px;
537
+ padding: 0 16px;
538
+ border: 1px solid var(--sb-border);
539
+ border-radius: var(--sb-r2);
540
+ background: var(--sb-surface);
541
+ color: var(--sb-text);
542
+ cursor: pointer;
543
+ font-size: var(--sb-size-base);
544
+ font-weight: var(--sb-weight-medium);
545
+ }
546
+ .sb-root .sb-secondary:hover {
547
+ border-color: var(--sb-border-hover);
548
+ background: var(--sb-surface-hover);
549
+ }
550
+ .sb-root .sb-secondary svg {
551
+ width: 15px;
552
+ height: 15px;
553
+ }
554
+ .sb-root .sb-secondary.sb-show-again {
555
+ padding: 0 16px 0 14px;
556
+ }
557
+ .sb-root .sb-show-again svg {
284
558
  width: 12px;
285
559
  height: 12px;
286
- stroke-width: 3;
560
+ color: var(--sb-accent);
287
561
  }
288
562
 
289
- /* Checkable: the status is a button; preview the check on hover/focus. */
290
- button.sunboard-step-status {
563
+ .sb-root .sb-sources {
564
+ display: flex;
565
+ flex-direction: column;
566
+ border: 1px solid var(--sb-border);
567
+ border-radius: var(--sb-r2);
568
+ overflow: hidden;
569
+ }
570
+ .sb-root .sb-doc,
571
+ .sb-root .sb-sources-toggle {
572
+ width: 100%;
573
+ min-height: 44px;
574
+ display: flex;
575
+ align-items: center;
576
+ gap: 10px;
577
+ padding: 0 12px;
578
+ font-size: calc(var(--sb-size-base) - 1px);
579
+ }
580
+ .sb-root .sb-doc {
581
+ color: var(--sb-text);
582
+ text-decoration: none;
583
+ }
584
+ .sb-root .sb-doc + .sb-doc,
585
+ .sb-root .sb-sources-toggle + .sb-doc {
586
+ border-top: 1px solid var(--sb-border);
587
+ }
588
+ .sb-root a.sb-doc:hover,
589
+ .sb-root .sb-sources-toggle:hover {
590
+ background: var(--sb-surface-hover);
591
+ }
592
+ .sb-root .sb-doc > svg {
593
+ flex-shrink: 0;
594
+ width: 15px;
595
+ height: 15px;
596
+ color: var(--sb-text-muted);
597
+ }
598
+ .sb-root .sb-doc-text + svg {
599
+ width: 14px;
600
+ height: 14px;
601
+ }
602
+ .sb-root .sb-doc-text {
603
+ flex: 1;
604
+ min-width: 0;
605
+ overflow: hidden;
606
+ text-overflow: ellipsis;
607
+ white-space: nowrap;
608
+ }
609
+ .sb-root .sb-doc-trail {
610
+ color: var(--sb-text-muted);
611
+ }
612
+ .sb-root .sb-sources-toggle {
613
+ border: 0;
614
+ background: transparent;
615
+ color: var(--sb-text-muted);
616
+ text-align: left;
291
617
  cursor: pointer;
292
618
  }
293
-
294
- button.sunboard-step-status svg {
295
- opacity: 0;
296
- color: var(--sunboard-checklist-muted-foreground);
297
- transition: opacity 120ms ease;
619
+ .sb-root .sb-sources-toggle span {
620
+ flex: 1;
298
621
  }
299
-
300
- button.sunboard-step-status:hover,
301
- button.sunboard-step-status:focus-visible {
302
- border-color: var(--sunboard-checklist-success);
622
+ .sb-root .sb-sources-toggle svg {
623
+ flex-shrink: 0;
624
+ width: 15px;
625
+ height: 15px;
303
626
  }
304
-
305
- button.sunboard-step-status:hover svg,
306
- button.sunboard-step-status:focus-visible svg {
307
- opacity: 1;
627
+ .sb-root .sb-sources-toggle[aria-expanded="true"] svg:last-child {
628
+ transform: rotate(180deg);
308
629
  }
309
630
 
310
- button.sunboard-step-status:focus-visible {
311
- outline: 2px solid var(--sunboard-checklist-primary);
312
- outline-offset: 2px;
631
+ .sb-root .sb-support {
632
+ display: flex;
633
+ align-items: center;
634
+ gap: 12px;
635
+ padding: 12px 12px 12px 14px;
636
+ border-radius: var(--sb-r2);
637
+ background: var(--sb-surface-hover);
313
638
  }
314
-
315
- /* manual: false and not yet complete: the checkbox is inert and says so. */
316
- .sunboard-step-status[data-locked="true"] {
317
- border-style: dashed;
318
- opacity: 0.55;
639
+ .sb-root .sb-support > span {
640
+ flex: 1;
641
+ font-size: calc(var(--sb-size-base) - 0.5px);
642
+ line-height: 1.4;
643
+ color: var(--sb-text-muted);
319
644
  }
320
-
321
- .sunboard-step[data-completed="true"] .sunboard-step-status {
322
- border-color: var(--sunboard-checklist-success);
323
- background: var(--sunboard-checklist-success);
645
+ .sb-root .sb-support-link {
646
+ flex-shrink: 0;
647
+ height: 44px;
648
+ display: flex;
649
+ align-items: center;
650
+ gap: 6px;
651
+ padding: 0 14px;
652
+ border: 1px solid var(--sb-border);
653
+ border-radius: var(--sb-r3);
654
+ background: var(--sb-surface);
655
+ color: var(--sb-text);
656
+ font-size: var(--sb-size-base);
657
+ font-weight: var(--sb-weight-medium);
658
+ text-decoration: none;
659
+ }
660
+ .sb-root .sb-support-link:hover {
661
+ border-color: var(--sb-border-hover);
662
+ }
663
+ .sb-root .sb-support-link svg {
664
+ width: 14px;
665
+ height: 14px;
666
+ color: var(--sb-text-muted);
324
667
  }
325
668
 
326
- .sunboard-step[data-completed="true"] .sunboard-step-title {
327
- color: var(--sunboard-checklist-muted-foreground);
328
- text-decoration: line-through;
669
+ .sb-root .sb-note {
670
+ display: flex;
671
+ align-items: flex-start;
672
+ gap: 12px;
329
673
  }
330
-
331
- .sunboard-step-arrow {
674
+ .sb-root .sb-note-mark {
332
675
  display: grid;
333
- width: 16px;
334
- height: 20px;
335
676
  place-items: center;
336
- color: var(--sunboard-checklist-muted-foreground);
677
+ flex-shrink: 0;
678
+ width: 32px;
679
+ height: 32px;
680
+ border-radius: 999px;
681
+ background: var(--sb-surface-hover);
682
+ color: var(--sb-text-muted);
337
683
  }
338
-
339
- .sunboard-step-arrow svg {
684
+ .sb-root .sb-note-mark svg {
340
685
  width: 16px;
341
686
  height: 16px;
342
687
  }
343
-
344
- .sunboard-step-content {
345
- min-width: 0;
688
+ .sb-root .sb-note-text {
689
+ display: flex;
690
+ flex-direction: column;
691
+ gap: 10px;
692
+ padding-top: 5px;
346
693
  }
347
-
348
- .sunboard-step-heading {
694
+ .sb-root .sb-note-words {
349
695
  display: flex;
350
- align-items: flex-start;
351
- justify-content: space-between;
352
- gap: 8px;
696
+ flex-direction: column;
697
+ gap: 2px;
353
698
  }
354
-
355
- .sunboard-step-title {
356
- min-width: 0;
357
- overflow-wrap: anywhere;
358
- font-size: 14px;
359
- font-weight: 650;
360
- line-height: 1.35;
699
+ .sb-root .sb-note-title {
700
+ font-size: calc(var(--sb-size-base) + 1px);
701
+ font-weight: var(--sb-weight-medium);
702
+ line-height: 1.4;
361
703
  }
362
-
363
- .sunboard-step-badge {
364
- flex: 0 0 auto;
365
- color: var(--sunboard-checklist-muted-foreground);
366
- font-size: 11px;
367
- font-weight: 650;
704
+ .sb-root .sb-note-body {
705
+ font-size: var(--sb-size-base);
368
706
  line-height: 1.5;
369
- white-space: nowrap;
707
+ color: var(--sb-text-muted);
370
708
  }
371
709
 
372
- .sunboard-step-description {
373
- color: var(--sunboard-checklist-muted-foreground);
374
- font-size: 13px;
375
- line-height: 1.4;
376
- margin-top: 3px;
710
+ .sb-root .sb-line {
711
+ display: flex;
712
+ align-items: center;
713
+ gap: 10px;
714
+ font-size: calc(var(--sb-size-base) - 1.5px);
715
+ color: var(--sb-text-muted);
377
716
  }
378
-
379
- .sunboard-hotspot {
380
- z-index: 2147483001;
381
- display: grid;
382
- width: 18px;
383
- height: 18px;
384
- place-items: center;
385
- border: 2px solid var(--sunboard-hotspot-border);
386
- border-radius: 999px;
387
- background: var(--sunboard-hotspot-background);
388
- box-shadow: var(--sunboard-hotspot-shadow);
389
- color: var(--sunboard-hotspot-dot);
390
- cursor: pointer;
391
- font-family: var(--sunboard-font);
717
+ .sb-root .sb-line-rule {
718
+ flex: 1;
719
+ height: 1px;
720
+ background: var(--sb-border);
721
+ }
722
+ .sb-root .sb-line-text {
723
+ display: flex;
724
+ align-items: center;
725
+ gap: 6px;
726
+ }
727
+ .sb-root .sb-line-text svg {
728
+ width: 14px;
729
+ height: 14px;
730
+ }
731
+ .sb-root .sb-rate {
732
+ display: flex;
733
+ flex-direction: column;
734
+ gap: 4px;
735
+ }
736
+ .sb-root .sb-stars {
737
+ display: flex;
738
+ justify-content: center;
739
+ }
740
+ .sb-root .sb-star {
741
+ width: 44px;
742
+ height: 44px;
743
+ display: flex;
744
+ align-items: center;
745
+ justify-content: center;
392
746
  padding: 0;
747
+ border: 0;
748
+ border-radius: var(--sb-r2);
749
+ background: none;
750
+ color: var(--sb-text-muted);
751
+ cursor: pointer;
393
752
  }
394
-
395
- .sunboard-hotspot-dot {
396
- width: 6px;
397
- height: 6px;
398
- border-radius: 999px;
399
- background: currentColor;
753
+ .sb-root .sb-star svg {
754
+ width: 24px;
755
+ height: 24px;
400
756
  }
401
-
402
- .sunboard-hotspot[data-pulse="true"] {
403
- animation: sunboard-hotspot-pulse 1.8s ease-out infinite;
404
- box-shadow:
405
- var(--sunboard-hotspot-shadow),
406
- 0 0 0 8px var(--sunboard-hotspot-pulse-ring);
757
+ .sb-root .sb-star-lit {
758
+ color: var(--sb-accent);
407
759
  }
408
-
409
- .sunboard-hotspot:focus-visible {
410
- outline: 2px solid var(--sunboard-hotspot-background);
411
- outline-offset: 3px;
760
+ .sb-root .sb-star-lit svg {
761
+ fill: currentColor;
412
762
  }
413
763
 
414
- @keyframes sunboard-hotspot-pulse {
415
- 0% {
416
- box-shadow:
417
- var(--sunboard-hotspot-shadow),
418
- 0 0 0 0 var(--sunboard-hotspot-pulse-ring);
419
- }
420
-
421
- 70% {
422
- box-shadow:
423
- var(--sunboard-hotspot-shadow),
424
- 0 0 0 10px transparent;
425
- }
426
-
427
- 100% {
428
- box-shadow:
429
- var(--sunboard-hotspot-shadow),
430
- 0 0 0 0 transparent;
431
- }
764
+ .sb-root .sb-waiting {
765
+ display: flex;
766
+ flex-direction: column;
767
+ gap: 14px;
432
768
  }
433
-
434
- .sunboard-tour-scrim {
435
- position: fixed;
769
+ .sb-root .sb-waiting-head {
770
+ display: flex;
771
+ align-items: center;
772
+ gap: 10px;
773
+ font-size: var(--sb-size-base);
774
+ color: var(--sb-text-muted);
775
+ }
776
+ .sb-root .sb-bars {
777
+ display: flex;
778
+ flex-shrink: 0;
779
+ gap: 3px;
780
+ }
781
+ .sb-root .sb-bar {
782
+ position: relative;
783
+ width: 18px;
784
+ height: 4px;
785
+ border-radius: 2px;
786
+ background: var(--sb-border);
787
+ overflow: hidden;
788
+ }
789
+ .sb-root .sb-bar > span {
790
+ position: absolute;
436
791
  inset: 0;
437
- z-index: 2147483001;
438
- background: var(--sunboard-overlay-color);
439
- pointer-events: none;
792
+ border-radius: 2px;
793
+ background: var(--sb-accent);
794
+ transform: scaleX(0);
795
+ transform-origin: left;
440
796
  }
441
-
442
- .sunboard-tour-spotlight {
443
- width: 100vw;
444
- height: 100vh;
445
- background: transparent;
797
+ .sb-root .sb-bar[data-fill="full"] > span,
798
+ .sb-root .sb-bar[data-fill="slow"] > span {
799
+ transform: none;
446
800
  }
447
-
448
- .sunboard-tour {
449
- z-index: 2147483002;
450
- width: min(320px, calc(100vw - 32px));
451
- box-sizing: border-box;
452
- border: 1px solid var(--sunboard-tour-border);
453
- border-radius: var(--sunboard-radius);
454
- background: var(--sunboard-tour-background);
455
- box-shadow: var(--sunboard-tour-shadow);
456
- color: var(--sunboard-tour-foreground);
457
- font-family: var(--sunboard-font);
458
- padding: 14px;
801
+ .sb-root .sb-bar[data-fill="filling"] > span {
802
+ animation: sb-fill 1.2s linear forwards;
459
803
  }
460
-
461
- .sunboard-tour-arrow {
462
- color: var(--sunboard-tour-background);
804
+ .sb-root .sb-bar[data-fill="slow"] > span {
805
+ animation: sb-pulse 1.6s ease-in-out infinite;
463
806
  }
464
-
465
- .sunboard-tour-meta {
466
- color: var(--sunboard-tour-muted-foreground);
467
- font-size: 12px;
468
- font-weight: 700;
469
- line-height: 1;
807
+ .sb-root .sb-stage {
808
+ display: grid;
809
+ min-width: 0;
470
810
  }
471
-
472
- .sunboard-tour-title {
473
- margin: 6px 0 0;
474
- font-size: 15px;
475
- font-weight: 750;
476
- line-height: 1.35;
811
+ .sb-root .sb-stage > span {
812
+ grid-area: 1 / 1;
813
+ overflow: hidden;
814
+ text-overflow: ellipsis;
815
+ white-space: nowrap;
816
+ opacity: 0;
817
+ transform: translateY(3px);
818
+ transition:
819
+ opacity 0.2s ease-out,
820
+ transform 0.2s ease-out;
477
821
  }
478
-
479
- .sunboard-tour-body {
480
- color: var(--sunboard-tour-muted-foreground);
481
- font-size: 13px;
482
- line-height: 1.45;
483
- margin: 6px 0 0;
822
+ .sb-root .sb-stage > .sb-stage-on {
823
+ opacity: 1;
824
+ transform: none;
484
825
  }
485
-
486
- .sunboard-tour-actions {
826
+ .sb-root .sb-skeleton {
487
827
  display: flex;
488
- justify-content: flex-end;
489
- gap: 8px;
490
- margin-top: 13px;
491
- }
492
-
493
- .sunboard-tour-primary,
494
- .sunboard-tour-secondary,
495
- .sunboard-debug button {
496
- display: inline-flex;
497
- align-items: center;
498
- justify-content: center;
499
- min-height: 30px;
500
- border-radius: 8px;
501
- cursor: pointer;
502
- font: inherit;
503
- font-size: 12px;
504
- font-weight: 700;
505
- line-height: 1;
506
- padding: 8px 11px;
828
+ flex-direction: column;
829
+ gap: 9px;
507
830
  }
508
-
509
- .sunboard-tour-primary {
510
- border: 0;
511
- background: var(--sunboard-tour-primary);
512
- color: var(--sunboard-tour-primary-foreground);
831
+ .sb-root .sb-skeleton span {
832
+ display: block;
833
+ height: 10px;
834
+ border-radius: 5px;
835
+ background: var(--sb-surface-hover);
836
+ animation: sb-pulse 1.6s ease-in-out infinite;
513
837
  }
514
-
515
- .sunboard-tour-secondary,
516
- .sunboard-debug button {
517
- border: 1px solid var(--sunboard-tour-secondary-border);
518
- background: var(--sunboard-tour-secondary-background);
519
- color: var(--sunboard-tour-secondary-foreground);
838
+ .sb-root .sb-skeleton span:nth-child(1) {
839
+ width: 94%;
520
840
  }
521
-
522
- /* Tooltip: the tour popover minus the ceremony — no scrim, no step counter.
523
- Shares the tour palette so themed hosts restyle both at once. Sits below
524
- the tour z-index; an active tour hides tooltips at the provider level. */
525
- .sunboard-tooltip {
526
- position: relative;
527
- z-index: 2147483001;
528
- width: min(300px, calc(100vw - 32px));
529
- box-sizing: border-box;
530
- border: 1px solid var(--sunboard-tour-border);
531
- border-radius: var(--sunboard-radius);
532
- background: var(--sunboard-tour-background);
533
- box-shadow: var(--sunboard-tour-shadow);
534
- color: var(--sunboard-tour-foreground);
535
- font-family: var(--sunboard-font);
536
- padding: 14px;
841
+ .sb-root .sb-skeleton span:nth-child(2) {
842
+ width: 86%;
843
+ animation-delay: 0.2s;
537
844
  }
538
-
539
- .sunboard-tooltip-arrow {
540
- color: var(--sunboard-tour-background);
845
+ .sb-root .sb-skeleton span:nth-child(3) {
846
+ width: 58%;
847
+ animation-delay: 0.4s;
541
848
  }
542
849
 
543
- .sunboard-tooltip-close {
850
+ .sb-root .sb-latest-wrap {
544
851
  position: absolute;
545
- top: 6px;
546
- right: 6px;
547
- display: inline-flex;
548
- align-items: center;
852
+ z-index: 4;
853
+ left: 0;
854
+ right: 0;
855
+ bottom: 8px;
856
+ display: flex;
549
857
  justify-content: center;
550
- width: 22px;
551
- height: 22px;
552
- border: 0;
553
- border-radius: 6px;
554
- background: transparent;
555
- color: var(--sunboard-tour-muted-foreground);
556
- cursor: pointer;
557
- font: inherit;
558
- font-size: 12px;
559
- font-weight: 700;
560
- line-height: 1;
561
- padding: 0;
858
+ pointer-events: none;
562
859
  }
563
-
564
- .sunboard-tooltip-close:focus-visible {
565
- outline: 2px solid var(--sunboard-tour-primary);
566
- outline-offset: 1px;
860
+ .sb-root .sb-latest {
861
+ pointer-events: auto;
862
+ height: 44px;
863
+ display: flex;
864
+ align-items: center;
865
+ gap: 6px;
866
+ padding: 0 14px 0 12px;
867
+ border: 1px solid var(--sb-border);
868
+ border-radius: 999px;
869
+ background: var(--sb-surface);
870
+ color: var(--sb-text);
871
+ box-shadow: 0 6px 16px -6px rgba(10, 11, 14, 0.25);
872
+ cursor: pointer;
873
+ font-size: calc(var(--sb-size-base) - 1px);
874
+ font-weight: var(--sb-weight-medium);
567
875
  }
568
-
569
- .sunboard-tooltip-title {
570
- margin: 0;
571
- font-size: 15px;
572
- font-weight: 750;
573
- line-height: 1.35;
574
- padding-right: 20px;
876
+ .sb-root .sb-latest svg {
877
+ width: 14px;
878
+ height: 14px;
575
879
  }
576
880
 
577
- .sunboard-tooltip-body {
578
- color: var(--sunboard-tour-muted-foreground);
579
- font-size: 13px;
580
- line-height: 1.45;
581
- margin: 6px 0 0;
881
+ .sb-root .sb-composer {
882
+ flex-shrink: 0;
883
+ display: flex;
884
+ flex-direction: column;
885
+ gap: 8px;
886
+ padding: 8px 12px 10px;
887
+ background: var(--sb-surface);
582
888
  }
583
-
584
- .sunboard-tooltip-actions {
889
+ .sb-root .sb-field {
585
890
  display: flex;
586
- justify-content: flex-end;
587
- margin-top: 13px;
891
+ align-items: flex-end;
892
+ gap: 6px;
893
+ padding: 4px 4px 4px 14px;
894
+ border: 1px solid var(--sb-border);
895
+ border-radius: var(--sb-card-radius);
896
+ background: var(--sb-surface);
897
+ cursor: text;
898
+ }
899
+ .sb-root .sb-field:focus-within,
900
+ .sb-root .sb-inline .sb-field {
901
+ border-color: var(--sb-accent);
902
+ box-shadow: 0 0 0 3px var(--sb-ring);
903
+ }
904
+ .sb-root .sb-field-shut {
905
+ border-style: dashed;
906
+ background: transparent;
588
907
  }
589
-
590
- .sunboard-tooltip-action {
591
- display: inline-flex;
592
- align-items: center;
593
- justify-content: center;
594
- min-height: 30px;
908
+ .sb-root .sb-box {
909
+ flex: 1;
910
+ min-width: 0;
911
+ height: 44px;
912
+ min-height: 44px;
913
+ max-height: calc(4 * 1.4em + 22px);
914
+ padding: 11px 0;
595
915
  border: 0;
596
- border-radius: 8px;
597
- background: var(--sunboard-tour-primary);
598
- color: var(--sunboard-tour-primary-foreground);
599
- cursor: pointer;
600
- font: inherit;
601
- font-size: 12px;
602
- font-weight: 700;
603
- line-height: 1;
604
- padding: 8px 11px;
605
- }
606
-
607
- .sunboard-debug {
608
- position: fixed;
609
- right: max(16px, env(safe-area-inset-right));
610
- top: max(16px, env(safe-area-inset-top));
611
- z-index: 2147483003;
612
- display: grid;
613
- width: min(380px, calc(100vw - 32px));
614
- gap: 6px;
615
- box-sizing: border-box;
616
- border: 1px solid var(--sunboard-debug-border);
617
- border-radius: var(--sunboard-radius);
618
- background: var(--sunboard-debug-background);
619
- box-shadow: var(--sunboard-debug-shadow);
620
- color: var(--sunboard-debug-foreground);
621
- font-family: var(--sunboard-font);
622
- font-size: 12px;
916
+ outline: 0;
917
+ resize: none;
918
+ overflow-y: hidden;
919
+ background: transparent;
920
+ color: var(--sb-text);
921
+ font-family: var(--sb-font);
922
+ font-size: calc(var(--sb-size-base) + 1px);
623
923
  line-height: 1.4;
624
- padding: 12px;
625
924
  }
626
-
627
- .sunboard-survey-overlay {
628
- position: fixed;
629
- inset: 0;
630
- z-index: 2147483000;
925
+ .sb-root .sb-box::placeholder {
926
+ color: var(--sb-text-muted);
927
+ opacity: 1;
928
+ }
929
+ .sb-root .sb-box:disabled {
930
+ cursor: not-allowed;
931
+ }
932
+ .sb-root .sb-send {
631
933
  display: grid;
632
934
  place-items: center;
633
- box-sizing: border-box;
634
- background: var(--sunboard-survey-overlay-color);
635
- font-family: var(--sunboard-font);
636
- padding: max(16px, env(safe-area-inset-bottom));
637
- /* The scrim only fades — the scale/pop belongs to the card, not the backdrop. */
638
- animation: sunboard-fade-in 160ms ease-out both;
935
+ flex-shrink: 0;
936
+ width: 44px;
937
+ height: 44px;
938
+ padding: 0;
939
+ border: 0;
940
+ border-radius: var(--sb-r2);
941
+ background: var(--sb-accent);
942
+ color: var(--sb-accent-text);
943
+ cursor: pointer;
639
944
  }
640
-
641
- .sunboard-survey-card {
642
- width: min(480px, 100%);
643
- max-height: calc(100vh - 32px);
644
- overflow: auto;
645
- box-sizing: border-box;
646
- border: 1px solid var(--sunboard-checklist-border);
647
- border-radius: var(--sunboard-radius);
648
- background: var(--sunboard-checklist-background);
649
- box-shadow: var(--sunboard-checklist-shadow);
650
- color: var(--sunboard-checklist-foreground);
651
- padding: 24px;
652
- animation: sunboard-completion-in 200ms ease-out both;
945
+ .sb-root .sb-send:disabled {
946
+ background: var(--sb-surface-hover);
947
+ color: var(--sb-text-muted);
948
+ cursor: default;
949
+ }
950
+ .sb-root .sb-send svg {
951
+ width: 18px;
952
+ height: 18px;
953
+ }
954
+ .sb-root .sb-brand {
955
+ align-self: center;
956
+ display: inline-flex;
957
+ align-items: center;
958
+ gap: 4px;
959
+ color: var(--sb-text-muted);
960
+ font-size: calc(var(--sb-size-base) - 2.5px);
961
+ text-decoration: none;
962
+ }
963
+ .sb-root .sb-brand svg {
964
+ display: block;
965
+ }
966
+ .sb-root .sb-brand:hover {
967
+ color: var(--sb-text);
653
968
  }
654
969
 
655
- @keyframes sunboard-fade-in {
970
+ @keyframes sb-slide-in {
656
971
  from {
657
972
  opacity: 0;
973
+ transform: translateX(20px);
658
974
  }
659
975
  to {
660
976
  opacity: 1;
977
+ transform: translateX(0);
661
978
  }
662
979
  }
663
-
664
- .sunboard-survey-card *,
665
- .sunboard-survey-card *::before,
666
- .sunboard-survey-card *::after {
667
- box-sizing: border-box;
980
+ @keyframes sb-rise {
981
+ from {
982
+ transform: translateY(100%);
983
+ }
984
+ to {
985
+ transform: translateY(0);
986
+ }
668
987
  }
669
-
670
- .sunboard-survey-head {
671
- margin-bottom: 4px;
988
+ @keyframes sb-fill {
989
+ from {
990
+ transform: scaleX(0);
991
+ }
992
+ to {
993
+ transform: scaleX(1);
994
+ }
672
995
  }
673
-
674
- .sunboard-survey-progress-row {
675
- margin-top: 14px;
996
+ @keyframes sb-pulse {
997
+ 0%,
998
+ 100% {
999
+ opacity: 0.45;
1000
+ }
1001
+ 50% {
1002
+ opacity: 1;
1003
+ }
676
1004
  }
677
1005
 
678
- .sunboard-survey-stepcount {
679
- margin: 0 0 6px;
680
- color: var(--sunboard-checklist-muted-foreground);
681
- font-size: 12px;
682
- font-weight: 650;
683
- line-height: 1;
1006
+ @media (max-width: 640px) {
1007
+ .sb-root .sb-launcher,
1008
+ .sb-root .sb-tour-pill {
1009
+ right: 16px;
1010
+ bottom: 16px;
1011
+ }
1012
+ .sb-root .sb-panel-scrim {
1013
+ display: block;
1014
+ position: fixed;
1015
+ inset: 0;
1016
+ z-index: 2147482995;
1017
+ background: rgba(10, 11, 14, 0.42);
1018
+ animation: sb-fade-in 160ms ease-out both;
1019
+ }
1020
+ .sb-root .sb-panel:not(.sb-inline) {
1021
+ top: max(56px, env(safe-area-inset-top));
1022
+ left: 0;
1023
+ right: 0;
1024
+ bottom: 0;
1025
+ width: auto;
1026
+ max-width: none;
1027
+ height: auto;
1028
+ border-width: 1px 0 0;
1029
+ border-radius: calc(var(--sb-card-radius) + 6px) calc(var(--sb-card-radius) + 6px) 0 0;
1030
+ box-shadow: 0 -12px 40px -12px rgba(10, 11, 14, 0.35);
1031
+ animation: sb-rise 0.3s ease-out;
1032
+ }
1033
+ .sb-root .sb-panel:not(.sb-inline)::before {
1034
+ content: "";
1035
+ display: block;
1036
+ flex-shrink: 0;
1037
+ width: 36px;
1038
+ height: 4px;
1039
+ margin: 8px auto 0;
1040
+ border-radius: 2px;
1041
+ background: var(--sb-border);
1042
+ }
1043
+ .sb-root .sb-panel:not(.sb-inline) .sb-composer {
1044
+ padding-bottom: max(34px, env(safe-area-inset-bottom));
1045
+ }
1046
+ /* 16px so iOS does not zoom the page when the box takes focus. */
1047
+ .sb-root .sb-panel:not(.sb-inline) .sb-box {
1048
+ font-size: 16px;
1049
+ }
684
1050
  }
685
1051
 
686
- .sunboard-survey-progress-row .sunboard-progress {
687
- margin-top: 0;
1052
+ /* ---------- overlay: cards ---------- */
1053
+ .sb-root .popover-card {
1054
+ background: var(--sb-surface);
1055
+ border: 1px solid var(--sb-border);
1056
+ border-radius: var(--sb-card-radius);
1057
+ box-shadow: var(--sb-card-shadow);
1058
+ padding: var(--sb-card-padding);
688
1059
  }
689
-
690
- .sunboard-survey-step-title {
691
- margin: 0;
692
- font-size: 14px;
693
- font-weight: 700;
694
- line-height: 1.3;
1060
+ .sb-root .popover-card.tour {
1061
+ width: var(--sb-tour-w);
695
1062
  }
696
-
697
- .sunboard-survey-form {
698
- display: grid;
699
- gap: 18px;
700
- margin-top: 16px;
1063
+ .sb-root .popover-card.tip {
1064
+ width: var(--sb-tooltip-w);
701
1065
  }
702
-
703
- .sunboard-survey-nav {
704
- display: flex;
705
- align-items: center;
706
- justify-content: space-between;
707
- gap: 8px;
1066
+ .sb-root .popover-card.announce {
1067
+ width: var(--sb-announcement-w);
1068
+ max-height: var(--sb-announcement-maxh);
1069
+ overflow: auto;
708
1070
  }
709
-
710
- .sunboard-survey-back {
711
- display: inline-flex;
712
- align-items: center;
713
- justify-content: center;
714
- min-height: 40px;
715
- border: 1px solid var(--sunboard-checklist-border);
716
- border-radius: 8px;
717
- background: var(--sunboard-checklist-background);
718
- color: var(--sunboard-checklist-foreground);
719
- cursor: pointer;
720
- font: inherit;
721
- font-size: 14px;
722
- font-weight: 650;
723
- line-height: 1;
724
- padding: 10px 14px;
1071
+ .sb-root .popover-card.tour,
1072
+ .sb-root .popover-card.tip,
1073
+ .sb-root .popover-card.announce {
1074
+ max-width: calc(100vw - 32px);
725
1075
  }
726
1076
 
727
- .sunboard-survey-back:hover {
728
- background: var(--sunboard-checklist-muted);
1077
+ /* Anchored cards scroll on an inner wrapper, never on the card itself: the
1078
+ arrow is a card child positioned outside the border, and overflow on the
1079
+ card would clip it. Padding moves inward with the scrolling. */
1080
+ .sb-root .popover-card.tour,
1081
+ .sb-root .popover-card.tip {
1082
+ padding: 0;
729
1083
  }
730
-
731
- .sunboard-survey-back:focus-visible {
732
- outline: 2px solid var(--sunboard-checklist-primary);
733
- outline-offset: 2px;
1084
+ .sb-root .pop-scroll {
1085
+ padding: var(--sb-card-padding);
1086
+ border-radius: calc(var(--sb-card-radius) - 1px);
1087
+ overflow: auto;
734
1088
  }
735
-
736
- .sunboard-survey-questions {
737
- display: grid;
738
- gap: 18px;
739
- list-style: none;
740
- margin: 0;
741
- padding: 0;
1089
+ .sb-root .popover-card.tour > .pop-scroll {
1090
+ max-height: var(--sb-tour-maxh);
742
1091
  }
743
-
744
- .sunboard-survey-prompt {
745
- margin: 0 0 8px;
746
- font-size: 14px;
747
- font-weight: 650;
748
- line-height: 1.35;
1092
+ .sb-root .popover-card.tip > .pop-scroll {
1093
+ max-height: var(--sb-tooltip-maxh);
749
1094
  }
750
-
751
- .sunboard-survey-required {
752
- color: var(--sunboard-checklist-primary);
1095
+ .sb-root .popover-card h4 {
1096
+ font-size: var(--sb-size-lg);
1097
+ font-weight: var(--sb-weight-semibold);
1098
+ line-height: var(--sb-lh-snug);
1099
+ margin-bottom: 6px;
753
1100
  }
754
-
755
- .sunboard-survey-options {
1101
+ .sb-root .popover-card p {
1102
+ font-size: var(--sb-size-base);
1103
+ color: var(--sb-text-muted);
1104
+ line-height: var(--sb-lh-normal);
1105
+ }
1106
+ .sb-root .pop-kicker {
1107
+ font-size: var(--sb-size-sm);
1108
+ text-transform: uppercase;
1109
+ letter-spacing: 0.05em;
1110
+ color: var(--sb-text-muted);
1111
+ }
1112
+ .sb-root .pop-top {
756
1113
  display: flex;
757
- flex-wrap: wrap;
758
- gap: 8px;
1114
+ align-items: flex-start;
1115
+ justify-content: space-between;
1116
+ gap: 10px;
1117
+ margin-bottom: 6px;
759
1118
  }
760
-
761
- .sunboard-survey-option {
762
- display: inline-flex;
763
- align-items: center;
764
- min-height: 36px;
765
- border: 1px solid var(--sunboard-checklist-border);
1119
+ .sb-root .sb-close {
1120
+ display: grid;
1121
+ place-items: center;
1122
+ width: 24px;
1123
+ height: 24px;
1124
+ margin: -4px -6px 0 auto;
1125
+ border: 0;
766
1126
  border-radius: 999px;
767
- background: var(--sunboard-checklist-background);
768
- color: var(--sunboard-checklist-foreground);
1127
+ background: transparent;
1128
+ color: var(--sb-text-muted);
769
1129
  cursor: pointer;
770
- font: inherit;
771
- font-size: 13px;
772
- font-weight: 600;
773
- line-height: 1;
774
- padding: 9px 14px;
1130
+ padding: 0;
775
1131
  }
776
-
777
- .sunboard-survey-option:hover {
778
- background: var(--sunboard-checklist-muted);
1132
+ .sb-root .sb-close:hover {
1133
+ background: var(--sb-surface-hover);
779
1134
  }
780
-
781
- .sunboard-survey-option[data-selected="true"] {
782
- border-color: var(--sunboard-checklist-primary);
783
- background: var(--sunboard-checklist-primary);
784
- color: var(--sunboard-checklist-primary-foreground);
1135
+ .sb-root .sb-close svg {
1136
+ width: 14px;
1137
+ height: 14px;
785
1138
  }
786
-
787
- .sunboard-survey-option:focus-visible,
788
- .sunboard-survey-input:focus-visible,
789
- .sunboard-survey-submit:focus-visible {
790
- outline: 2px solid var(--sunboard-checklist-primary);
791
- outline-offset: 2px;
1139
+ .sb-root .pop-actions {
1140
+ display: flex;
1141
+ justify-content: flex-end;
1142
+ gap: var(--sb-input-gap);
1143
+ margin-top: 12px;
1144
+ }
1145
+ .sb-root .pop-actions .ghost {
1146
+ background: none;
1147
+ border: 1px solid var(--sb-border);
1148
+ border-radius: var(--sb-input-radius);
1149
+ color: var(--sb-text);
1150
+ height: var(--sb-input-height);
1151
+ padding: 0 var(--sb-input-padding);
1152
+ font-family: var(--sb-font);
1153
+ font-size: var(--sb-size-sm);
1154
+ cursor: pointer;
1155
+ }
1156
+ .sb-root .pop-actions .ghost:hover {
1157
+ border-color: var(--sb-border-hover);
1158
+ background: var(--sb-surface-hover);
792
1159
  }
793
1160
 
794
- .sunboard-survey-input {
1161
+ /* media flush to the card's top edge */
1162
+ .sb-root .pop-media {
1163
+ margin: calc(-1 * var(--sb-card-padding)) calc(-1 * var(--sb-card-padding))
1164
+ 12px;
1165
+ border-radius: calc(var(--sb-card-radius) - 1px)
1166
+ calc(var(--sb-card-radius) - 1px) 0 0;
1167
+ overflow: hidden;
1168
+ border-bottom: 1px solid var(--sb-border);
1169
+ }
1170
+ .sb-root .pop-media img,
1171
+ .sb-root .pop-media video {
1172
+ display: block;
795
1173
  width: 100%;
796
- min-height: 38px;
797
- border: 1px solid var(--sunboard-checklist-border);
798
- border-radius: 8px;
799
- background: var(--sunboard-checklist-background);
800
- color: var(--sunboard-checklist-foreground);
801
- font: inherit;
802
- font-size: 14px;
803
- line-height: 1.4;
804
- padding: 9px 11px;
1174
+ height: auto;
805
1175
  }
806
-
807
- .sunboard-survey-error {
808
- margin: 0;
809
- color: #dc2626;
810
- font-size: 13px;
811
- line-height: 1.4;
1176
+ .sb-root .pop-media iframe {
1177
+ display: block;
1178
+ width: 100%;
1179
+ aspect-ratio: 16 / 9;
1180
+ border: 0;
812
1181
  }
813
1182
 
814
- .sunboard-survey-submit {
815
- display: inline-flex;
816
- align-items: center;
817
- justify-content: center;
818
- min-height: 40px;
819
- border: 0;
820
- border-radius: 8px;
821
- background: var(--sunboard-checklist-primary);
822
- color: var(--sunboard-checklist-primary-foreground);
1183
+ /* ---------- tooltip pins ---------- */
1184
+ .sb-root .sb-pin {
1185
+ position: fixed;
1186
+ z-index: 2147482995;
1187
+ width: 12px;
1188
+ height: 12px;
1189
+ padding: 0;
1190
+ border: none;
1191
+ border-radius: 999px;
1192
+ background: var(--sb-accent);
823
1193
  cursor: pointer;
824
- font: inherit;
825
- font-size: 14px;
826
- font-weight: 700;
827
- line-height: 1;
828
- padding: 10px 14px;
1194
+ animation: sb-pin-pulse 1.8s ease-out infinite;
829
1195
  }
830
-
831
- .sunboard-survey-submit:disabled {
832
- opacity: 0.55;
833
- cursor: not-allowed;
1196
+ .sb-root .sb-pin[aria-expanded="true"] {
1197
+ animation: none;
834
1198
  }
835
-
836
- .sunboard-root-completion {
837
- text-align: center;
838
- animation: sunboard-completion-in 260ms ease-out both;
1199
+ @keyframes sb-pin-pulse {
1200
+ 0% {
1201
+ box-shadow: 0 0 0 0 color-mix(in srgb, var(--sb-accent) 40%, transparent);
1202
+ }
1203
+ 70% {
1204
+ box-shadow: 0 0 0 12px transparent;
1205
+ }
1206
+ 100% {
1207
+ box-shadow: 0 0 0 0 transparent;
1208
+ }
839
1209
  }
840
1210
 
841
- .sunboard-completion-close {
842
- position: absolute;
843
- top: 12px;
844
- right: 12px;
1211
+ /* ---------- overlay: scrim, spotlight, positioning ---------- */
1212
+ /* Purely visual: the page (and the tour target) stays clickable under it. */
1213
+ .sb-root .sb-scrim {
1214
+ position: fixed;
1215
+ inset: 0;
1216
+ z-index: 2147482997;
1217
+ background: var(--sb-overlay);
1218
+ width: 100%;
1219
+ height: 100%;
1220
+ pointer-events: none;
1221
+ animation: sb-fade-in 160ms ease-out both;
845
1222
  }
846
-
847
- .sunboard-completion {
848
- display: flex;
849
- flex-direction: column;
850
- align-items: center;
851
- gap: 8px;
852
- padding: 8px 8px 4px;
1223
+ .sb-root .sb-spotlight {
1224
+ background: none;
853
1225
  }
854
-
855
- .sunboard-completion-check {
1226
+ /* pointer-events: a host dialog library that switches pointer events off on
1227
+ <body> would otherwise switch off the tour card with it. */
1228
+ .sb-root .sb-floating {
1229
+ position: absolute;
1230
+ z-index: 2147483000;
1231
+ pointer-events: auto;
1232
+ }
1233
+ .sb-root .sb-modal-wrap {
1234
+ position: fixed;
1235
+ inset: 0;
1236
+ z-index: 2147483000;
856
1237
  display: grid;
857
1238
  place-items: center;
858
- width: 56px;
859
- height: 56px;
860
- margin-bottom: 4px;
861
- border-radius: 999px;
862
- background: color-mix(
863
- in srgb,
864
- var(--sunboard-checklist-success) 14%,
865
- transparent
866
- );
867
- color: var(--sunboard-checklist-success);
868
- animation: sunboard-completion-check-in 380ms cubic-bezier(0.34, 1.56, 0.64, 1)
869
- both;
1239
+ padding: 20px;
1240
+ pointer-events: auto;
870
1241
  }
871
1242
 
872
- .sunboard-completion-check svg {
873
- width: 30px;
874
- height: 30px;
875
- }
876
-
877
- .sunboard-completion-subtitle {
878
- margin: 0;
879
- color: var(--sunboard-checklist-muted-foreground);
880
- font-size: 12px;
881
- font-weight: 650;
882
- line-height: 1.2;
883
- text-transform: uppercase;
884
- letter-spacing: 0.04em;
1243
+ /* Entrances: the scrim only fades; the pop/scale belongs to the card. The
1244
+ floating card fades WITHOUT scale: its position lives in an inline
1245
+ transform (floating-ui), which a transform animation would override. */
1246
+ .sb-root .sb-floating {
1247
+ animation: sb-fade-in 160ms ease-out both;
885
1248
  }
886
-
887
- .sunboard-completion-title {
888
- margin: 0;
889
- font-size: 18px;
890
- font-weight: 700;
891
- line-height: 1.3;
1249
+ .sb-root .sb-modal-wrap .popover-card {
1250
+ animation: sb-card-in 200ms ease-out both;
892
1251
  }
893
1252
 
894
- .sunboard-completion-message {
895
- margin: 0;
896
- color: var(--sunboard-checklist-muted-foreground);
897
- font-size: 14px;
898
- line-height: 1.5;
1253
+ @keyframes sb-fade-in {
1254
+ from {
1255
+ opacity: 0;
1256
+ }
1257
+ to {
1258
+ opacity: 1;
1259
+ }
899
1260
  }
900
-
901
- @keyframes sunboard-completion-in {
1261
+ @keyframes sb-card-in {
902
1262
  from {
903
1263
  opacity: 0;
904
1264
  transform: scale(0.96);
@@ -909,7 +1269,50 @@ button.sunboard-step-status:focus-visible {
909
1269
  }
910
1270
  }
911
1271
 
912
- @keyframes sunboard-completion-check-in {
1272
+ /* ---------- overlay: banner ---------- */
1273
+ .sb-root .banner-bar {
1274
+ display: flex;
1275
+ align-items: center;
1276
+ gap: 14px;
1277
+ background: var(--sb-surface);
1278
+ border: 1px solid var(--sb-border);
1279
+ border-radius: var(--sb-input-radius);
1280
+ box-shadow: var(--sb-card-shadow);
1281
+ padding: 10px 16px;
1282
+ }
1283
+ .sb-root .banner-bar > span {
1284
+ flex: 1;
1285
+ }
1286
+ .sb-root .banner-bar .dismiss {
1287
+ display: grid;
1288
+ place-items: center;
1289
+ width: 24px;
1290
+ height: 24px;
1291
+ flex-shrink: 0;
1292
+ background: none;
1293
+ border: none;
1294
+ border-radius: 999px;
1295
+ color: var(--sb-text-muted);
1296
+ cursor: pointer;
1297
+ padding: 0;
1298
+ }
1299
+ .sb-root .banner-bar .dismiss:hover {
1300
+ background: var(--sb-surface-hover);
1301
+ }
1302
+ .sb-root .banner-bar .dismiss svg {
1303
+ width: 14px;
1304
+ height: 14px;
1305
+ }
1306
+ .sb-root .sb-banner {
1307
+ position: fixed;
1308
+ top: max(12px, env(safe-area-inset-top));
1309
+ left: 50%;
1310
+ transform: translateX(-50%);
1311
+ z-index: 2147482996;
1312
+ width: min(720px, calc(100vw - 32px));
1313
+ }
1314
+
1315
+ @keyframes sb-check-in {
913
1316
  0% {
914
1317
  opacity: 0;
915
1318
  transform: scale(0.4);
@@ -925,10 +1328,24 @@ button.sunboard-step-status:focus-visible {
925
1328
  }
926
1329
 
927
1330
  @media (prefers-reduced-motion: reduce) {
928
- .sunboard-root-completion,
929
- .sunboard-completion-check,
930
- .sunboard-survey-overlay,
931
- .sunboard-survey-card {
1331
+ .sb-root .sb-scrim,
1332
+ .sb-root .sb-floating,
1333
+ .sb-root .sb-modal-wrap .popover-card,
1334
+ .sb-root .sb-pin,
1335
+ .sb-root .sb-launcher,
1336
+ .sb-root .sb-panel,
1337
+ .sb-root .sb-panel-scrim,
1338
+ .sb-root .sb-arrive,
1339
+ .sb-root .sb-bar > span,
1340
+ .sb-root .sb-skeleton span {
932
1341
  animation: none;
1342
+ transition: none;
1343
+ }
1344
+ .sb-root .sb-bar[data-fill="filling"] > span {
1345
+ transform: none;
1346
+ }
1347
+ .sb-root .sb-stage > span {
1348
+ transform: none;
1349
+ transition: none;
933
1350
  }
934
1351
  }