@bendyline/docblocks-react 2.7.0 → 2.7.2

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 (43) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.txt +98 -48
  3. package/dist/{AiDiagrams-XWOM3YZX.js → AiDiagrams-LFV4YU6W.js} +2 -2
  4. package/dist/{AiEditorAssistant-M4LI2CRY.js → AiEditorAssistant-GN2KXKZD.js} +21 -6
  5. package/dist/{ExportDialog-L6FG6W3H.js → ExportDialog-JRVZCG3J.js} +2 -2
  6. package/dist/{ExportToolbarControls-BRCPZ7H3.js → ExportToolbarControls-2FEIHNMW.js} +28 -18
  7. package/dist/{GitToolbarControl-J4UYZDV6.js → GitToolbarControl-B7KG4MFP.js} +4 -4
  8. package/dist/{GitUI-LZW3IUXO.js → GitUI-RCWUZVS6.js} +2 -2
  9. package/dist/KeyboardShortcutsDialog-NOD4P25G.js +145 -0
  10. package/dist/{PresentationMaker-622NHMIN.js → PresentationMaker-ITNP5SDO.js} +2 -2
  11. package/dist/{Settings-DuXk6baH.d.ts → Settings-RDYvDDI0.d.ts} +13 -11
  12. package/dist/ShareDialog-XUA2OVGI.js +292 -0
  13. package/dist/{SpeechToolbarControl-UZQKGQWD.js → SpeechToolbarControl-CLU7RB2G.js} +2 -2
  14. package/dist/{TextFromNarration-XYRAB6O2.js → TextFromNarration-NITJQ4IB.js} +1 -1
  15. package/dist/{WorkspaceSearchPanel-OUQQ5DOM.js → WorkspaceSearchPanel-J6BKEZQJ.js} +8 -2
  16. package/dist/{chunk-UG4G7PJ4.js → chunk-5O5YTOXG.js} +1 -1
  17. package/dist/{chunk-VO2JYYQZ.js → chunk-6JJOGV6M.js} +5 -13
  18. package/dist/{chunk-X437UAF7.js → chunk-6MSHXQNB.js} +7 -2
  19. package/dist/{chunk-Q5ZVP5LV.js → chunk-BLUEZG7T.js} +40 -32
  20. package/dist/chunk-DICE7VBJ.js +77 -0
  21. package/dist/{chunk-MRUK56JS.js → chunk-GMA4KGGO.js} +7 -3
  22. package/dist/{chunk-BCQZTWE5.js → chunk-HRWEGPTY.js} +18 -4
  23. package/dist/chunk-K7XJDJUJ.js +126 -0
  24. package/dist/{chunk-5OZBGIIT.js → chunk-NAH52736.js} +86 -28
  25. package/dist/{chunk-YS4HVWIO.js → chunk-SPUPWCSI.js} +49 -1
  26. package/dist/{chunk-MMOTEQK6.js → chunk-SSB43524.js} +165 -70
  27. package/dist/{chunk-G4MFB3IO.js → chunk-VG434562.js} +2 -70
  28. package/dist/{chunk-OINKNX26.js → chunk-X3DDTJKR.js} +1 -1
  29. package/dist/{chunk-SGQKTKDX.js → chunk-Y5OE3HJC.js} +14 -4
  30. package/dist/editor.js +7 -5
  31. package/dist/export/index.d.ts +17 -6
  32. package/dist/export/index.js +4 -4
  33. package/dist/index.d.ts +24 -6
  34. package/dist/index.js +452 -247
  35. package/dist/proofing/index.js +11 -1
  36. package/dist/run-export-CS3HRNAZ.js +13 -0
  37. package/dist/settings/index.d.ts +1 -1
  38. package/dist/settings/index.js +1 -1
  39. package/package.json +9 -8
  40. package/src/styles/docblocks.css +481 -271
  41. package/dist/ShareDialog-N7GPM4SB.js +0 -310
  42. package/dist/chunk-EA4BO6E4.js +0 -73
  43. package/dist/run-export-47X5FTYZ.js +0 -11
@@ -4,15 +4,19 @@
4
4
 
5
5
  /* ── Theme Tokens ────────────────────────────────────────────── */
6
6
 
7
- /* DocBlocks accent palette — warm brown on a canvas/parchment base.
8
- Think paper on a wooden desk: the editor itself stays white (paper),
9
- the chrome around it (sidebar, gutters, panes) reads as cream
10
- canvas, and the accent picks up a saturated dark brown for CTAs.
11
- Dark mode inverts the metaphor into espresso wood with light tan
12
- highlights. Derived shades (`--db-accent-soft-*`,
13
- `--db-accent-tint-strong`, `--db-accent-deep`) are defined alongside so every place that needs
14
- a tinted background or a readable-on-tint text color pulls from the
15
- same source of truth. */
7
+ /* DocBlocks palette — paper, ink, and rust.
8
+ The page is the one white sheet. Every chrome pane around it (sidebar,
9
+ toolbar, status bar) shares the cream `--db-bg-subtle`, so nothing but
10
+ the document competes for attention. Text is ink. The default accent
11
+ palette, Rust, paints primary buttons, active tabs and toggles in rust,
12
+ and a selected row is a quiet rust tint marked by a 2px
13
+ `--db-selected-rule` instead of a filled slab. The other accent palettes
14
+ (Green, Blue, …) follow the same model in their own hues. Dark mode
15
+ mirrors it: espresso panes, light ink, a lighter rust.
16
+ Derived shades (`--db-accent-soft-*`, `--db-accent-tint-strong`,
17
+ `--db-accent-deep`) are defined alongside so every place that needs a
18
+ tinted background or a readable-on-tint text color pulls from the same
19
+ source of truth. */
16
20
  /* The palette binds on the document root as well as on the shell. Squisq
17
21
  mounts its menus, dialogs and flyouts in PORTALS on <body>, outside the
18
22
  shell — without a root binding they cannot see --db-*, which is why the
@@ -20,44 +24,59 @@
20
24
  follows whichever appearance the shell in the page resolved to. */
21
25
  :root,
22
26
  .db-shell {
23
- /* Chrome typeface. `system-ui` first so DocBlocks looks native by default.
24
- Settings > Appearance > Interface font swaps this for the bundled face
25
- below; the visual-regression suite forces that, because under the system
26
- stack the same screenshot renders in a different typeface on every OS. */
27
+ /* Chrome typeface: the bundled `DocBlocks Fixed UI` face, which is Hanken
28
+ Grotesk — the sans docblocks.com is set in — so the app and the site
29
+ read as one product and the chrome renders identically on every OS.
30
+ Settings > Appearance > Interface font > System swaps it for the
31
+ platform's own face (the block below). */
27
32
  --db-ui-font:
28
- system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
29
- sans-serif;
30
- --db-bg: #ffffff;
33
+ 'DocBlocks Fixed UI', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
34
+ 'Helvetica Neue', Arial, sans-serif;
35
+ /* Metadata face: counts, timestamps, version strings, section labels. A
36
+ small mono sets what you read apart from what you act on. */
37
+ --db-meta-font: 'JetBrains Mono', ui-monospace, SFMono-Regular, Consolas, monospace;
38
+ /* Squisq's chrome reads `--squisq-ux-font` with a `system-ui` fallback, the
39
+ same bridge shape as the `--squisq-*` color tokens further down. Binding
40
+ it carries the chrome face into the editor toolbar, menus and dialogs.
41
+ DOCUMENT typography is never touched — a theme's fonts are content the
42
+ author chose, not chrome. */
43
+ --squisq-ux-font: var(--db-ui-font);
44
+ --db-bg: #fffdf9;
31
45
  --db-bg-subtle: #f3eede;
32
46
  --db-bg-hover: #e9e2cb;
33
- --db-bg-selected: #7d6948;
34
- --db-bg-selected-hover: #5e4f37;
35
- --db-border: #d6cdb0;
36
- --db-border-strong: #b5a985;
37
- --db-text: #2a2419;
47
+ --db-bg-selected: #e5ccb6;
48
+ --db-bg-selected-hover: #e0c0a8;
49
+ --db-border: #ddd5c3;
50
+ --db-border-strong: #c7bca3;
51
+ --db-text: #231f18;
38
52
  --db-text-secondary: #3d3528;
39
- --db-text-muted: #6b614a;
53
+ --db-text-muted: #6b6252;
40
54
  --db-text-placeholder: #766c54;
41
- --db-accent: #7d6948;
42
- --db-accent-hover: #5e4f37;
43
- --db-text-on-accent: #ffffff;
44
- --db-text-on-selected: #ffffff;
45
- /* Keyboard focus ring. Deliberately darker than --db-accent: the accent
46
- is also the *selected row* fill, so an accent ring vanished against
47
- it. Any surface that paints itself --db-bg-selected re-points this
48
- token at a contrasting value (see .db-tree-row--selected). */
49
- --db-focus: #3d3220;
50
- --db-accent-soft-08: rgba(125, 105, 72, 0.08);
51
- --db-accent-soft-10: rgba(125, 105, 72, 0.1);
52
- --db-accent-soft-12: rgba(125, 105, 72, 0.12);
53
- --db-accent-soft-15: rgba(125, 105, 72, 0.15);
54
- --db-accent-soft-25: rgba(125, 105, 72, 0.25);
55
- --db-accent-tint-strong: #d8d0b5;
56
- --db-accent-deep: #3d3220;
57
- --db-editor-canvas: #ffffff;
55
+ --db-accent: #a0461f;
56
+ --db-accent-hover: #8a3a1a;
57
+ --db-text-on-accent: #fffdf9;
58
+ --db-text-on-selected: #231f18;
59
+ /* The 2px mark down the leading edge of a selected row. Selection is a
60
+ tint, so this is what carries the state at a glance. */
61
+ --db-selected-rule: #a0461f;
62
+ /* Keyboard focus ring, in ink. The accent is rust and paints buttons and
63
+ the selected-row rule, so a rust ring would vanish against them; ink
64
+ holds at 14:1 on the cream panes. */
65
+ --db-focus: #231f18;
66
+ --db-accent-soft-08: rgba(160, 70, 31, 0.08);
67
+ --db-accent-soft-10: rgba(160, 70, 31, 0.1);
68
+ --db-accent-soft-12: rgba(160, 70, 31, 0.12);
69
+ --db-accent-soft-15: rgba(160, 70, 31, 0.15);
70
+ --db-accent-soft-25: rgba(160, 70, 31, 0.25);
71
+ --db-accent-tint-strong: #e8d2be;
72
+ --db-accent-deep: #7a3418;
73
+ --db-editor-canvas: #fffdf9;
74
+ /* Surfaces that float over the chrome: menus, dialogs, popovers. In light
75
+ mode they are the same warm-white sheet as the page. */
76
+ --db-bg-raised: var(--db-bg);
58
77
  --db-badge-bg: #f3eede;
59
78
  --db-badge-text: #3d3220;
60
- --db-badge-text-hover: #2a2419;
79
+ --db-badge-text-hover: #231f18;
61
80
  /* The editor "desk": every chrome surface the page floats on — the
62
81
  outline pane, the inline-preview gutter, the Monaco line-number
63
82
  margin, and (via `--squisq-desk-bg`) the field behind the WYSIWYG
@@ -144,53 +163,63 @@
144
163
  }
145
164
  }
146
165
 
147
- /* Interface font: fixed.
148
- `DocBlocks Fixed UI` is the Roboto variable binary each surface already ships
149
- for the document theme of that name, redeclared over the full 100-900 range
150
- so the chrome's 400/500/600/650/700 weights render exactly rather than
151
- snapping to the nearest static face. Bound on the root, not only the shell,
152
- because Squisq portals its menus onto <body>. */
153
- :root[data-db-interface-font='fixed'],
154
- :root[data-db-interface-font='fixed'] .db-shell {
166
+ /* Interface font: system.
167
+ `DocBlocks Fixed UI` (above) is the Hanken Grotesk variable binary each
168
+ surface already ships for the document theme of that name, redeclared over
169
+ the full 100-900 range so the chrome's 400/500/600/650/700 weights render
170
+ exactly. This block is the opt-out for anyone who wants DocBlocks to look
171
+ native: the platform UI face, and the platform mono for metadata, so the
172
+ chrome fetches nothing. Bound on the root, not only the shell, because
173
+ Squisq portals its menus onto <body>. */
174
+ :root[data-db-interface-font='system'],
175
+ :root[data-db-interface-font='system'] .db-shell {
155
176
  --db-ui-font:
156
- 'DocBlocks Fixed UI', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
157
- 'Helvetica Neue', Arial, sans-serif;
158
- /* Squisq's chrome reads `--squisq-ux-font` with a `system-ui` fallback, the
159
- same bridge shape as the `--squisq-*` colour tokens further down. Setting
160
- it here carries the fixed face into the editor toolbar, menus and dialogs,
161
- which is most of what a shell screenshot actually contains.
162
-
163
- Scoped to fixed mode on purpose: the token is left unset by default so
164
- Squisq keeps its own chrome font, and DOCUMENT typography is never touched
165
- — a theme's fonts are content the author chose, not chrome. */
177
+ system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial,
178
+ sans-serif;
179
+ --db-meta-font: ui-monospace, SFMono-Regular, Consolas, monospace;
166
180
  --squisq-ux-font: var(--db-ui-font);
167
181
  }
168
182
 
183
+ /* Form controls take the chrome face. Browsers give <button>, <input>,
184
+ <select> and <textarea> a UA font of their own (Arial in Chromium on
185
+ Windows), so every label inside a button — the view tabs, H1–H3, the
186
+ workspace picker — rendered in a second sans beside the chrome's.
187
+ Zero specificity, so any rule that names a font still wins; unscoped,
188
+ because Squisq portals its menus and dialogs onto <body>. */
189
+ :where(button, input, select, textarea) {
190
+ font-family: inherit;
191
+ }
192
+
169
193
  :root:has(.db-shell[data-theme='dark']),
170
194
  .db-shell[data-theme='dark'] {
171
195
  --db-bg: #1a1812;
172
196
  --db-bg-subtle: #262219;
173
197
  --db-bg-hover: #3a3528;
174
- --db-bg-selected: #3a3528;
175
- --db-bg-selected-hover: #4d4636;
176
- --db-border: #4d4636;
177
- --db-border-strong: #6b6448;
178
- --db-text: #e8e2d0;
198
+ --db-bg-selected: #433021;
199
+ --db-bg-selected-hover: #513625;
200
+ --db-border: #342e27;
201
+ --db-border-strong: #4a4238;
202
+ --db-text: #ece6d8;
179
203
  --db-text-secondary: #d4ccb0;
180
- --db-text-muted: #a89a7c;
204
+ --db-text-muted: #a39885;
181
205
  --db-text-placeholder: #6b614a;
182
- --db-accent: #c8b48f;
183
- --db-accent-hover: #dec79d;
206
+ --db-accent: #e0835a;
207
+ --db-accent-hover: #eb9a76;
184
208
  --db-text-on-accent: #1a1812;
185
- --db-text-on-selected: #e8e2d0;
186
- --db-focus: #e8e2d0;
187
- --db-accent-soft-08: rgba(200, 180, 143, 0.08);
188
- --db-accent-soft-10: rgba(200, 180, 143, 0.1);
189
- --db-accent-soft-12: rgba(200, 180, 143, 0.12);
190
- --db-accent-soft-15: rgba(200, 180, 143, 0.18);
191
- --db-accent-soft-25: rgba(200, 180, 143, 0.28);
192
- --db-accent-tint-strong: #3a382e;
193
- --db-accent-deep: #e6dcc0;
209
+ --db-text-on-selected: #ece6d8;
210
+ --db-selected-rule: #e0835a;
211
+ --db-focus: #ece6d8;
212
+ /* Dark mode reverses that: a floating surface must sit LIGHTER than the
213
+ panes it opens over, or a menu reads as a hole in the chrome. Derived
214
+ from the palette's own steps, so every accent palette gets one. */
215
+ --db-bg-raised: color-mix(in srgb, var(--db-bg-subtle), var(--db-bg-hover) 40%);
216
+ --db-accent-soft-08: rgba(224, 131, 90, 0.08);
217
+ --db-accent-soft-10: rgba(224, 131, 90, 0.1);
218
+ --db-accent-soft-12: rgba(224, 131, 90, 0.12);
219
+ --db-accent-soft-15: rgba(224, 131, 90, 0.18);
220
+ --db-accent-soft-25: rgba(224, 131, 90, 0.28);
221
+ --db-accent-tint-strong: #533725;
222
+ --db-accent-deep: #f0c2aa;
194
223
  --db-editor-canvas: #16110b;
195
224
  --db-badge-bg: #3a2f1f;
196
225
  --db-badge-text: #fff4d6;
@@ -220,25 +249,30 @@
220
249
  --db-bg: #1a1812;
221
250
  --db-bg-subtle: #262219;
222
251
  --db-bg-hover: #3a3528;
223
- --db-bg-selected: #3a3528;
224
- --db-bg-selected-hover: #4d4636;
225
- --db-border: #4d4636;
226
- --db-border-strong: #6b6448;
227
- --db-text: #e8e2d0;
252
+ --db-bg-selected: #433021;
253
+ --db-bg-selected-hover: #513625;
254
+ --db-border: #342e27;
255
+ --db-border-strong: #4a4238;
256
+ --db-text: #ece6d8;
228
257
  --db-text-secondary: #d4ccb0;
229
- --db-text-muted: #a89a7c;
258
+ --db-text-muted: #a39885;
230
259
  --db-text-placeholder: #6b614a;
231
- --db-accent: #c8b48f;
232
- --db-accent-hover: #dec79d;
260
+ --db-accent: #e0835a;
261
+ --db-accent-hover: #eb9a76;
233
262
  --db-text-on-accent: #1a1812;
234
- --db-text-on-selected: #e8e2d0;
235
- --db-focus: #e8e2d0;
236
- --db-accent-soft-08: rgba(200, 180, 143, 0.08);
237
- --db-accent-soft-12: rgba(200, 180, 143, 0.12);
238
- --db-accent-soft-15: rgba(200, 180, 143, 0.18);
239
- --db-accent-soft-25: rgba(200, 180, 143, 0.28);
240
- --db-accent-tint-strong: #3a382e;
241
- --db-accent-deep: #e6dcc0;
263
+ --db-text-on-selected: #ece6d8;
264
+ --db-selected-rule: #e0835a;
265
+ --db-focus: #ece6d8;
266
+ /* Dark mode reverses that: a floating surface must sit LIGHTER than the
267
+ panes it opens over, or a menu reads as a hole in the chrome. Derived
268
+ from the palette's own steps, so every accent palette gets one. */
269
+ --db-bg-raised: color-mix(in srgb, var(--db-bg-subtle), var(--db-bg-hover) 40%);
270
+ --db-accent-soft-08: rgba(224, 131, 90, 0.08);
271
+ --db-accent-soft-12: rgba(224, 131, 90, 0.12);
272
+ --db-accent-soft-15: rgba(224, 131, 90, 0.18);
273
+ --db-accent-soft-25: rgba(224, 131, 90, 0.28);
274
+ --db-accent-tint-strong: #533725;
275
+ --db-accent-deep: #f0c2aa;
242
276
  --db-input-border: #c8b48f;
243
277
  --db-danger: #f87171;
244
278
  --db-danger-bg: #1c1917;
@@ -293,10 +327,11 @@
293
327
  }
294
328
 
295
329
  .db-explorer-title {
296
- font-weight: 600;
297
- font-size: 12px;
330
+ font-family: var(--db-meta-font);
331
+ font-weight: 500;
332
+ font-size: 11px;
298
333
  text-transform: uppercase;
299
- letter-spacing: 0.03em;
334
+ letter-spacing: 0.06em;
300
335
  color: var(--db-text-muted);
301
336
  }
302
337
 
@@ -337,7 +372,7 @@
337
372
  padding: 8px 10px 5px;
338
373
  }
339
374
 
340
- .db-pinned-documents-title i {
375
+ .db-pinned-documents-title svg {
341
376
  font-size: 10px;
342
377
  }
343
378
 
@@ -383,9 +418,9 @@
383
418
  .db-pinned-document-row--selected,
384
419
  .db-pinned-document-row--selected:hover,
385
420
  .db-pinned-document-row--selected:has(:focus-visible) {
386
- --db-focus: #ffffff;
387
421
  background: var(--db-bg-selected);
388
422
  color: var(--db-text-on-selected);
423
+ box-shadow: inset 2px 0 0 var(--db-selected-rule);
389
424
  }
390
425
 
391
426
  .db-pinned-document-more {
@@ -445,7 +480,7 @@
445
480
  right: 4px;
446
481
  left: 4px;
447
482
  margin: 0;
448
- background: var(--db-bg);
483
+ background: var(--db-bg-raised);
449
484
  }
450
485
 
451
486
  .db-explorer-btn {
@@ -695,6 +730,14 @@
695
730
  opacity: 0.65;
696
731
  }
697
732
 
733
+ /* What a non-Markdown type means: written in Markdown, saved as that format. */
734
+ .db-new-item-hint {
735
+ margin: 4px 8px 0;
736
+ color: var(--db-text-muted);
737
+ font-size: 12px;
738
+ line-height: 1.35;
739
+ }
740
+
698
741
  /* ── Tree ────────────────────────────────────────────────────── */
699
742
 
700
743
  .db-tree {
@@ -793,14 +836,6 @@
793
836
  outline-offset: -2px;
794
837
  }
795
838
 
796
- /* A selected/drop-target row is filled with --db-bg-selected, which in
797
- light mode *is* the accent brown — the default ring would disappear
798
- into it. Re-point the token rather than duplicating the rule. */
799
- .db-tree-row--selected,
800
- .db-tree-row--drop-target {
801
- --db-focus: #ffffff;
802
- }
803
-
804
839
  .db-tree-row--dragging {
805
840
  opacity: 0.45;
806
841
  }
@@ -816,6 +851,7 @@
816
851
  .db-tree-row--selected {
817
852
  background: var(--db-bg-selected);
818
853
  color: var(--db-text-on-selected);
854
+ box-shadow: inset 2px 0 0 var(--db-selected-rule);
819
855
  }
820
856
 
821
857
  .db-tree-row--selected:hover {
@@ -846,7 +882,8 @@
846
882
  margin-left: 8px;
847
883
  overflow: hidden;
848
884
  color: var(--db-text-secondary);
849
- font-size: 11px;
885
+ font-family: var(--db-meta-font);
886
+ font-size: 10.5px;
850
887
  font-variant-numeric: tabular-nums;
851
888
  text-align: right;
852
889
  text-overflow: ellipsis;
@@ -946,7 +983,7 @@
946
983
  .db-tree-context {
947
984
  position: fixed;
948
985
  z-index: 1000;
949
- background: var(--db-bg);
986
+ background: var(--db-bg-raised);
950
987
  border: 1px solid var(--db-border);
951
988
  border-radius: 4px;
952
989
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -1049,7 +1086,7 @@
1049
1086
  z-index: 60;
1050
1087
  min-width: calc(100% - 16px);
1051
1088
  max-width: min(320px, 90vw);
1052
- background: var(--db-bg);
1089
+ background: var(--db-bg-raised);
1053
1090
  border: 1px solid var(--db-border);
1054
1091
  border-radius: 4px;
1055
1092
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -1288,11 +1325,21 @@
1288
1325
  display: block;
1289
1326
  }
1290
1327
 
1291
- /* The logo is black lettering on a pale extruded edge. On espresso the black
1292
- fill vanished and only the edges showed, so it read as a hollow outline.
1293
- Inverting makes the letters solid and sinks the edge into the background,
1294
- and the sepia warms them toward --db-text. */
1295
- .db-shell[data-theme='dark'] .db-app-menu-logo {
1328
+ /* Hosts pass a light and a dark wordmark; the shell shows the one drawn for
1329
+ its resolved appearance. The dark one is painted as on a hull (white faces,
1330
+ black shade), which an inverted light logo can't reproduce. */
1331
+ .db-app-menu-logo--dark,
1332
+ .db-shell[data-theme='dark'] .db-app-menu-logo--light {
1333
+ display: none;
1334
+ }
1335
+
1336
+ .db-shell[data-theme='dark'] .db-app-menu-logo--dark {
1337
+ display: block;
1338
+ }
1339
+
1340
+ /* A host with only one logo gets it inverted in dark mode — fine for a flat
1341
+ black-on-transparent mark, the case this fallback exists for. */
1342
+ .db-shell[data-theme='dark'] .db-app-menu-logo--invert {
1296
1343
  filter: invert(1) brightness(0.88) sepia(0.15);
1297
1344
  }
1298
1345
 
@@ -1318,7 +1365,7 @@
1318
1365
  left: 0;
1319
1366
  z-index: 70;
1320
1367
  min-width: 200px;
1321
- background: var(--db-bg);
1368
+ background: var(--db-bg-raised);
1322
1369
  border: 1px solid var(--db-border);
1323
1370
  border-radius: 4px;
1324
1371
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -1342,6 +1389,18 @@
1342
1389
  background: var(--db-bg-hover);
1343
1390
  }
1344
1391
 
1392
+ .db-app-menu-item--with-shortcut {
1393
+ display: flex;
1394
+ align-items: baseline;
1395
+ justify-content: space-between;
1396
+ gap: 16px;
1397
+ }
1398
+
1399
+ .db-app-menu-shortcut {
1400
+ color: var(--db-text-muted);
1401
+ font-size: 12px;
1402
+ }
1403
+
1345
1404
  .db-app-menu-item--danger {
1346
1405
  color: var(--db-danger);
1347
1406
  }
@@ -1392,7 +1451,7 @@
1392
1451
  right: 0;
1393
1452
  z-index: 100;
1394
1453
  min-width: 200px;
1395
- background: var(--db-bg);
1454
+ background: var(--db-bg-raised);
1396
1455
  border: 1px solid var(--db-border);
1397
1456
  border-radius: 6px;
1398
1457
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -1517,6 +1576,9 @@
1517
1576
 
1518
1577
  .db-shell-sidebar {
1519
1578
  width: 260px;
1579
+ /* The sidebar is chrome, so it shares the toolbar's paper; only the page
1580
+ itself is white. */
1581
+ background: var(--db-bg-subtle);
1520
1582
  display: flex;
1521
1583
  flex-direction: column;
1522
1584
  overflow: hidden;
@@ -1539,7 +1601,7 @@
1539
1601
  inset-block: 0;
1540
1602
  inset-inline-start: 0;
1541
1603
  z-index: 30;
1542
- background: var(--db-bg);
1604
+ background: var(--db-bg-subtle);
1543
1605
  width: var(--db-drawer-width);
1544
1606
  padding-inline-start: var(--db-safe-left);
1545
1607
  border-inline-end: 1px solid var(--db-border-strong);
@@ -1729,6 +1791,7 @@ body.db-resizing-sidebar * {
1729
1791
  box here so both chrome regions are 25px everywhere. */
1730
1792
  .db-shell .squisq-status-bar {
1731
1793
  line-height: 16px;
1794
+ font-family: var(--db-meta-font);
1732
1795
  }
1733
1796
 
1734
1797
  .db-shell-sidebar-footer {
@@ -1761,8 +1824,7 @@ body.db-resizing-sidebar * {
1761
1824
  text-decoration: underline;
1762
1825
  }
1763
1826
 
1764
- .db-shell-sidebar-footer-separator,
1765
- .db-shell-sidebar-footer-action {
1827
+ .db-shell-sidebar-footer-separator {
1766
1828
  color: var(--db-text-muted);
1767
1829
  }
1768
1830
 
@@ -1771,20 +1833,37 @@ body.db-resizing-sidebar * {
1771
1833
  opacity: 0.65;
1772
1834
  }
1773
1835
 
1836
+ /* The backup action is the footer's one control that protects work, so it is a
1837
+ bordered button with a 22px target (24px including the spacing around it)
1838
+ rather than another 11px text link. */
1774
1839
  .db-shell-sidebar-footer-action {
1840
+ display: inline-flex;
1841
+ align-items: center;
1842
+ gap: 4px;
1775
1843
  flex-shrink: 0;
1776
- padding: 0;
1777
- border: 0;
1778
- background: transparent;
1844
+ min-height: 22px;
1845
+ margin-left: auto;
1846
+ padding: 0 8px;
1847
+ border: 1px solid var(--db-border-strong);
1848
+ border-radius: 999px;
1849
+ background: var(--db-bg);
1850
+ color: var(--db-text-secondary);
1779
1851
  font: inherit;
1780
- line-height: inherit;
1781
- text-decoration: underline;
1852
+ font-size: 12px;
1853
+ font-weight: 600;
1854
+ line-height: 1;
1782
1855
  white-space: nowrap;
1783
1856
  cursor: pointer;
1784
1857
  }
1785
1858
 
1786
1859
  .db-shell-sidebar-footer-action:hover {
1787
- color: var(--db-text-secondary);
1860
+ border-color: var(--db-accent);
1861
+ color: var(--db-text);
1862
+ }
1863
+
1864
+ .db-shell-sidebar-footer-action:focus-visible {
1865
+ outline: 2px solid var(--db-focus);
1866
+ outline-offset: 1px;
1788
1867
  }
1789
1868
 
1790
1869
  .db-shell-empty {
@@ -1938,7 +2017,7 @@ body.db-resizing-sidebar * {
1938
2017
  position: static;
1939
2018
  }
1940
2019
 
1941
- .db-shell--mobile .squisq-editor-shell .squisq-toolbar-overflow-menu {
2020
+ html:has(.db-shell--mobile) .squisq-toolbar-overflow-menu {
1942
2021
  right: auto !important;
1943
2022
  left: max(4px, env(safe-area-inset-left)) !important;
1944
2023
  max-width: calc(100vw - 8px);
@@ -2184,7 +2263,7 @@ body.db-resizing-sidebar * {
2184
2263
 
2185
2264
  .db-dialog {
2186
2265
  box-sizing: border-box;
2187
- background: var(--db-bg);
2266
+ background: var(--db-bg-raised);
2188
2267
  border: 1px solid var(--db-border);
2189
2268
  border-radius: 8px;
2190
2269
  box-shadow: 0 8px 32px var(--db-shadow);
@@ -2297,7 +2376,7 @@ body.db-resizing-sidebar * {
2297
2376
 
2298
2377
  .db-about-version code {
2299
2378
  color: var(--db-text);
2300
- font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
2379
+ font-family: var(--db-meta-font);
2301
2380
  user-select: all;
2302
2381
  }
2303
2382
 
@@ -2314,10 +2393,11 @@ body.db-resizing-sidebar * {
2314
2393
  }
2315
2394
 
2316
2395
  .db-settings-legend {
2317
- font-size: 12px;
2318
- font-weight: 600;
2396
+ font-family: var(--db-meta-font);
2397
+ font-size: 11px;
2398
+ font-weight: 500;
2319
2399
  text-transform: uppercase;
2320
- letter-spacing: 0.03em;
2400
+ letter-spacing: 0.06em;
2321
2401
  color: var(--db-text-muted);
2322
2402
  margin-bottom: 8px;
2323
2403
  }
@@ -2329,6 +2409,12 @@ body.db-resizing-sidebar * {
2329
2409
  line-height: 1.5;
2330
2410
  }
2331
2411
 
2412
+ /* A status line stays mounted while empty so later changes are announced, but
2413
+ it should not leave a gap. */
2414
+ .db-settings-hint:empty {
2415
+ margin: 0;
2416
+ }
2417
+
2332
2418
  .db-settings-hint code {
2333
2419
  font-size: 11px;
2334
2420
  background: var(--db-bg-subtle);
@@ -2626,7 +2712,7 @@ body.db-resizing-sidebar * {
2626
2712
  border: 1px solid var(--db-border-strong);
2627
2713
  border-radius: 6px;
2628
2714
  outline: none;
2629
- background: var(--db-bg);
2715
+ background: var(--db-bg-raised);
2630
2716
  color: var(--db-text);
2631
2717
  box-shadow: 0 10px 28px var(--db-shadow);
2632
2718
  }
@@ -2898,8 +2984,8 @@ body.db-resizing-sidebar * {
2898
2984
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.18);
2899
2985
  }
2900
2986
 
2901
- .db-settings-accent-swatch--brown {
2902
- background: #7d6948;
2987
+ .db-settings-accent-swatch--rust {
2988
+ background: #a0461f;
2903
2989
  }
2904
2990
 
2905
2991
  .db-settings-accent-swatch--green {
@@ -3127,7 +3213,7 @@ body.db-resizing-sidebar * {
3127
3213
  margin-top: 4px;
3128
3214
  z-index: 70;
3129
3215
  min-width: 200px;
3130
- background: var(--db-bg);
3216
+ background: var(--db-bg-raised);
3131
3217
  border: 1px solid var(--db-border);
3132
3218
  border-radius: 4px;
3133
3219
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -3549,6 +3635,12 @@ body.db-resizing-sidebar * {
3549
3635
  background: rgba(255, 255, 255, 0.04);
3550
3636
  }
3551
3637
 
3638
+ /* Squisq also assigns this token directly on its dark toolbar. Bind it at
3639
+ that boundary so readable heading glyphs never inherit placeholder ink. */
3640
+ .db-shell[data-theme] .squisq-editor-shell .squisq-toolbar {
3641
+ --squisq-toolbar-icon: var(--db-text-muted);
3642
+ }
3643
+
3552
3644
  .db-shell[data-theme='dark'] .squisq-toolbar-view-tabs {
3553
3645
  background: var(--db-editor-canvas);
3554
3646
  }
@@ -3586,6 +3678,7 @@ body.db-resizing-sidebar * {
3586
3678
  --squisq-row-hover: var(--db-bg-hover);
3587
3679
  --squisq-hover-bg: var(--db-bg-hover);
3588
3680
  --squisq-panel-bg: var(--db-bg);
3681
+ --squisq-surface-overlay: var(--db-bg-raised);
3589
3682
 
3590
3683
  /* The desk the editing page floats on — the WYSIWYG backing, the block
3591
3684
  card and its preview panel, the outline pane, the Monaco margin. */
@@ -3743,31 +3836,30 @@ body.db-resizing-sidebar * {
3743
3836
  background: var(--squisq-desk-bg);
3744
3837
  }
3745
3838
 
3746
- /* ── Inline preview gutter: thematic green ──────────────────── */
3839
+ /* ── Inline preview gutter ──────────────────────────────────── */
3747
3840
  /* Rebind squisq's `--squisq-preview-*` custom properties so the
3748
- gutter chrome (vertical bracket, diagonal connector + dots,
3749
- "FACTCARD" template label) reads as sage green instead of indigo,
3750
- and the card surface tones harmonize with the rest of docblocks.
3751
- The preview-block renderer's own theme is unaffected — that's a
3752
- document-level concern, not chrome. */
3841
+ gutter chrome (vertical bracket, diagonal connector + dots)
3842
+ draws as hairlines in the rule color rather than in the accent,
3843
+ and the card surface tones harmonize with the rest of docblocks. The preview-block renderer's own theme is unaffected —
3844
+ that's a document-level concern, not chrome. */
3753
3845
  .db-shell[data-theme='light'] .squisq-editor-shell[data-theme='light'] {
3754
- --squisq-preview-accent: var(--db-accent);
3755
- --squisq-preview-accent-muted: var(--db-text-muted);
3846
+ --squisq-preview-accent: var(--db-border-strong);
3847
+ --squisq-preview-accent-muted: var(--db-border);
3756
3848
  --squisq-preview-gutter-bg: var(--db-gutter-bg);
3757
- --squisq-preview-card-bg: #ffffff;
3849
+ --squisq-preview-card-bg: var(--db-bg);
3758
3850
  --squisq-preview-card-border: var(--db-border);
3759
3851
  --squisq-preview-card-shadow: 0 1px 2px rgba(40, 30, 15, 0.08);
3760
3852
  --squisq-preview-card-title: var(--db-accent-deep);
3761
3853
  --squisq-preview-card-svg-bg: var(--db-bg-subtle);
3762
3854
  --squisq-preview-dot-halo: var(--db-gutter-bg);
3763
- --squisq-preview-empty-bg: #ffffff;
3855
+ --squisq-preview-empty-bg: var(--db-bg);
3764
3856
  --squisq-preview-empty-border: var(--db-border);
3765
3857
  --squisq-preview-empty-text: var(--db-accent-deep);
3766
3858
  }
3767
3859
 
3768
3860
  .db-shell[data-theme='dark'] .squisq-editor-shell[data-theme='dark'] {
3769
- --squisq-preview-accent: var(--db-accent-hover);
3770
- --squisq-preview-accent-muted: var(--db-text-muted);
3861
+ --squisq-preview-accent: var(--db-border-strong);
3862
+ --squisq-preview-accent-muted: var(--db-border);
3771
3863
  --squisq-preview-gutter-bg: var(--db-gutter-bg);
3772
3864
  --squisq-preview-card-bg: var(--db-bg);
3773
3865
  --squisq-preview-card-border: var(--db-border);
@@ -3780,6 +3872,24 @@ body.db-resizing-sidebar * {
3780
3872
  --squisq-preview-empty-text: var(--db-text-muted);
3781
3873
  }
3782
3874
 
3875
+ /* Squisq colors the card's template label with the same
3876
+ `--squisq-preview-accent` as the hairlines above, and a rule color is
3877
+ too faint for text. Keep the label at the muted text tone so it meets
3878
+ WCAG AA contrast on the card surface. */
3879
+ .db-shell .squisq-editor-shell .squisq-inline-preview-card-template {
3880
+ color: var(--db-text-muted);
3881
+ }
3882
+
3883
+ /* The extent bar shows a block's reach; at Squisq's 4px it read as a cable
3884
+ running beside the page. Squisq has no width token for it. */
3885
+ .db-shell .squisq-editor-shell .squisq-inline-preview-extent {
3886
+ width: 2px;
3887
+ }
3888
+
3889
+ .db-shell .squisq-editor-shell .squisq-inline-preview-extent--untagged {
3890
+ width: 1px;
3891
+ }
3892
+
3783
3893
  /* ── Squisq dark-theme override ──────────────────────────────── */
3784
3894
  /* Squisq has hardcoded slate-blue surfaces in its dark mode. We re-tone
3785
3895
  them via the DocBlocks dark palette so the editor reads as warm dark
@@ -3944,7 +4054,7 @@ body.db-resizing-sidebar * {
3944
4054
  }
3945
4055
 
3946
4056
  .db-shell .squisq-editor-shell .squisq-media-bin .squisq-media-bin-context-menu {
3947
- background: var(--db-bg);
4057
+ background: var(--db-bg-raised);
3948
4058
  border-color: var(--db-border);
3949
4059
  box-shadow: 0 12px 28px var(--db-shadow);
3950
4060
  }
@@ -4076,38 +4186,15 @@ body.db-resizing-sidebar * {
4076
4186
  border-color: var(--db-border-strong);
4077
4187
  }
4078
4188
 
4079
- /* ── Tooltips (portal): sans-serif + thematic chip ───────────── */
4080
- /* Tooltips render via portal into document.body, OUTSIDE `.db-shell`
4081
- — so the `--db-accent-*` variables (scoped to `.db-shell`) don't
4082
- cascade into them. We reach the portaled element with
4083
- `html:has(.db-shell)` and emit explicit colors per theme; using
4084
- `var(--db-accent-…)` here drops to the squisq fallback (dark slate
4085
- bg + near-white text) because the vars never resolve. */
4189
+ /* ── Tooltips (portal): sans-serif + ink chip ───────────────── */
4190
+ /* Tooltips portal into document.body, outside `.db-shell`; the palette is
4191
+ hoisted to the root, so the tokens resolve there. The chip inverts the
4192
+ chrome: ink on cream in light mode, light ink on espresso in dark. */
4086
4193
  html:has(.db-shell) .squisq-tooltip {
4087
4194
  font-family: var(--db-ui-font);
4088
4195
  box-shadow: 0 2px 8px rgba(15, 30, 20, 0.35);
4089
- /* Default (light mode + system-light): dark espresso chip, cream
4090
- text — an inverted floating chip against the cream UI. */
4091
- background: #3d3220;
4092
- color: #f3eede;
4093
- }
4094
-
4095
- html:has(.db-shell[data-theme='dark']) .squisq-tooltip {
4096
- /* Dark mode: cream chip, dark text — an inverted floating chip
4097
- against the espresso UI. Contrast ratio ~12:1 between
4098
- `#e6dcc0` and `#1f1a10`. */
4099
- background: #e6dcc0;
4100
- color: #1f1a10;
4101
- }
4102
-
4103
- @media (prefers-color-scheme: dark) {
4104
- /* Shell defaults to system theme when `data-theme` is unset —
4105
- mirror the dark-mode override so the tooltip stays readable
4106
- without an explicit user choice. */
4107
- html:has(.db-shell:not([data-theme='light'])) .squisq-tooltip {
4108
- background: #e6dcc0;
4109
- color: #1f1a10;
4110
- }
4196
+ background: var(--db-text);
4197
+ color: var(--db-bg-subtle);
4111
4198
  }
4112
4199
 
4113
4200
  /* ── Template picker accents (dark): indigo → thematic green ─── */
@@ -4127,64 +4214,69 @@ html:has(.db-shell[data-theme='dark']) .squisq-tooltip {
4127
4214
 
4128
4215
  /* The template gallery and file-tree context menu render into document.body
4129
4216
  via createPortal, so they live outside `.db-shell`. Hoist the same
4130
- brown/canvas tokens onto the html element (gated by the resolved shell
4217
+ palette tokens onto the html element (gated by the resolved shell
4131
4218
  theme) so every portaled surface keeps the DocBlocks palette. */
4132
4219
  html:has(.db-shell[data-theme='dark']) {
4133
4220
  --db-bg: #1a1812;
4134
4221
  --db-bg-subtle: #262219;
4135
4222
  --db-bg-hover: #3a3528;
4136
- --db-border: #4d4636;
4137
- --db-border-strong: #6b6448;
4138
- --db-text: #e8e2d0;
4223
+ --db-border: #342e27;
4224
+ --db-border-strong: #4a4238;
4225
+ --db-text: #ece6d8;
4139
4226
  --db-text-secondary: #d4ccb0;
4140
- --db-text-muted: #a89a7c;
4227
+ --db-text-muted: #a39885;
4141
4228
  --db-danger: #f87171;
4142
4229
  --db-danger-bg: #1c1917;
4143
4230
  --db-text-on-danger: #1c1917;
4144
4231
  --db-shadow: rgba(0, 0, 0, 0.4);
4145
- --db-accent: #c8b48f;
4146
- --db-accent-hover: #dec79d;
4232
+ --db-accent: #e0835a;
4233
+ --db-accent-hover: #eb9a76;
4147
4234
  --db-text-on-accent: #1a1812;
4148
- --db-accent-soft-15: rgba(200, 180, 143, 0.18);
4149
- --db-accent-soft-25: rgba(200, 180, 143, 0.28);
4150
- --db-accent-tint-strong: #3a382e;
4151
- --db-accent-deep: #e6dcc0;
4235
+ --db-accent-soft-15: rgba(224, 131, 90, 0.18);
4236
+ --db-accent-soft-25: rgba(224, 131, 90, 0.28);
4237
+ --db-accent-tint-strong: #533725;
4238
+ --db-accent-deep: #f0c2aa;
4152
4239
  --db-gutter-bg: #16110b;
4240
+ --db-bg-raised: color-mix(in srgb, var(--db-bg-subtle), var(--db-bg-hover) 40%);
4153
4241
  }
4154
4242
 
4155
4243
  html:has(.db-shell[data-theme='light']) {
4156
- --db-bg: #ffffff;
4244
+ --db-bg: #fffdf9;
4157
4245
  --db-bg-subtle: #f3eede;
4158
4246
  --db-bg-hover: #e9e2cb;
4159
- --db-border: #d6cdb0;
4160
- --db-border-strong: #b5a985;
4161
- --db-text: #2a2419;
4247
+ --db-border: #ddd5c3;
4248
+ --db-border-strong: #c7bca3;
4249
+ --db-text: #231f18;
4162
4250
  --db-text-secondary: #3d3528;
4163
- --db-text-muted: #6b614a;
4251
+ --db-text-muted: #6b6252;
4164
4252
  --db-danger: #b22b1b;
4165
4253
  --db-danger-bg: #fdf0ee;
4166
4254
  --db-text-on-danger: #ffffff;
4167
4255
  --db-shadow: rgba(40, 30, 15, 0.12);
4168
- --db-accent: #7d6948;
4169
- --db-accent-hover: #5e4f37;
4170
- --db-text-on-accent: #ffffff;
4171
- --db-accent-soft-15: rgba(125, 105, 72, 0.15);
4172
- --db-accent-soft-25: rgba(125, 105, 72, 0.25);
4173
- --db-accent-tint-strong: #d8d0b5;
4174
- --db-accent-deep: #3d3220;
4256
+ --db-accent: #a0461f;
4257
+ --db-accent-hover: #8a3a1a;
4258
+ --db-text-on-accent: #fffdf9;
4259
+ --db-accent-soft-15: rgba(160, 70, 31, 0.15);
4260
+ --db-accent-soft-25: rgba(160, 70, 31, 0.25);
4261
+ --db-accent-tint-strong: #e8d2be;
4262
+ --db-accent-deep: #7a3418;
4175
4263
  --db-gutter-bg: #efe8d4;
4176
4264
  }
4177
4265
 
4178
- /* Accent variants keep Brown as the untouched default while recoloring the
4266
+ /* Accent variants keep Rust as the untouched default while recoloring the
4179
4267
  full chrome palette for either appearance. The same tokens are hoisted to
4180
4268
  `html` so Squisq portals and file-tree menus inherit the active variant. */
4181
- .db-shell[data-theme='light']:not([data-accent='brown']),
4182
- html:has(.db-shell[data-theme='light']:not([data-accent='brown'])) {
4269
+ .db-shell[data-theme='light']:not([data-accent='rust']),
4270
+ html:has(.db-shell[data-theme='light']:not([data-accent='rust'])) {
4183
4271
  --db-accent-soft-08: rgb(var(--db-accent-rgb) / 8%);
4184
4272
  --db-accent-soft-10: rgb(var(--db-accent-rgb) / 10%);
4185
4273
  --db-accent-soft-12: rgb(var(--db-accent-rgb) / 12%);
4186
4274
  --db-accent-soft-15: rgb(var(--db-accent-rgb) / 15%);
4187
4275
  --db-accent-soft-25: rgb(var(--db-accent-rgb) / 25%);
4276
+ --db-text-on-selected: var(--db-text);
4277
+ --db-selected-rule: var(--db-accent);
4278
+ --db-bg: #ffffff;
4279
+ --db-editor-canvas: #ffffff;
4188
4280
  --db-gallery-backdrop: rgba(30, 30, 30, 0.24);
4189
4281
  --db-gallery-panel-bg: var(--db-bg);
4190
4282
  --db-gallery-raised-bg: var(--db-bg);
@@ -4193,13 +4285,14 @@ html:has(.db-shell[data-theme='light']:not([data-accent='brown'])) {
4193
4285
  --db-gallery-placeholder: var(--db-text-muted);
4194
4286
  }
4195
4287
 
4196
- .db-shell[data-theme='dark']:not([data-accent='brown']),
4197
- html:has(.db-shell[data-theme='dark']:not([data-accent='brown'])) {
4288
+ .db-shell[data-theme='dark']:not([data-accent='rust']),
4289
+ html:has(.db-shell[data-theme='dark']:not([data-accent='rust'])) {
4198
4290
  --db-accent-soft-08: rgb(var(--db-accent-rgb) / 8%);
4199
4291
  --db-accent-soft-10: rgb(var(--db-accent-rgb) / 10%);
4200
4292
  --db-accent-soft-12: rgb(var(--db-accent-rgb) / 12%);
4201
4293
  --db-accent-soft-15: rgb(var(--db-accent-rgb) / 18%);
4202
4294
  --db-accent-soft-25: rgb(var(--db-accent-rgb) / 28%);
4295
+ --db-selected-rule: var(--db-accent);
4203
4296
  --db-gallery-backdrop: rgba(0, 0, 0, 0.58);
4204
4297
  --db-gallery-panel-bg: var(--db-bg);
4205
4298
  --db-gallery-header-bg: var(--db-editor-canvas);
@@ -4213,8 +4306,8 @@ html:has(.db-shell[data-theme='dark']:not([data-accent='brown'])) {
4213
4306
  html:has(.db-shell[data-theme='light'][data-accent='green']) {
4214
4307
  --db-bg-subtle: #edf4ef;
4215
4308
  --db-bg-hover: #dfece3;
4216
- --db-bg-selected: #4f715d;
4217
- --db-bg-selected-hover: #3d5949;
4309
+ --db-bg-selected: #cfe0d3;
4310
+ --db-bg-selected-hover: #c2d6c7;
4218
4311
  --db-border: #c6d8cb;
4219
4312
  --db-border-strong: #98b3a1;
4220
4313
  --db-text: #202a23;
@@ -4262,8 +4355,8 @@ html:has(.db-shell[data-theme='dark'][data-accent='green']) {
4262
4355
  html:has(.db-shell[data-theme='light'][data-accent='blue']) {
4263
4356
  --db-bg-subtle: #eef2f7;
4264
4357
  --db-bg-hover: #e1e8f0;
4265
- --db-bg-selected: #526f91;
4266
- --db-bg-selected-hover: #3c5675;
4358
+ --db-bg-selected: #d0dbe7;
4359
+ --db-bg-selected-hover: #c3d0de;
4267
4360
  --db-border: #c7d1de;
4268
4361
  --db-border-strong: #99aabd;
4269
4362
  --db-text: #202733;
@@ -4311,8 +4404,8 @@ html:has(.db-shell[data-theme='dark'][data-accent='blue']) {
4311
4404
  html:has(.db-shell[data-theme='light'][data-accent='purple']) {
4312
4405
  --db-bg-subtle: #f3eff6;
4313
4406
  --db-bg-hover: #e9e1ef;
4314
- --db-bg-selected: #735b8c;
4315
- --db-bg-selected-hover: #59436f;
4407
+ --db-bg-selected: #ddd0e4;
4408
+ --db-bg-selected-hover: #d2c3db;
4316
4409
  --db-border: #d5c8dd;
4317
4410
  --db-border-strong: #b19cbe;
4318
4411
  --db-text: #29222e;
@@ -4360,8 +4453,8 @@ html:has(.db-shell[data-theme='dark'][data-accent='purple']) {
4360
4453
  html:has(.db-shell[data-theme='light'][data-accent='maroon']) {
4361
4454
  --db-bg-subtle: #f7eff2;
4362
4455
  --db-bg-hover: #eedfe5;
4363
- --db-bg-selected: #805365;
4364
- --db-bg-selected-hover: #643d4d;
4456
+ --db-bg-selected: #e6d0d8;
4457
+ --db-bg-selected-hover: #dcc3cd;
4365
4458
  --db-border: #dec8d0;
4366
4459
  --db-border-strong: #bd9ba8;
4367
4460
  --db-text: #2f2227;
@@ -4409,8 +4502,8 @@ html:has(.db-shell[data-theme='dark'][data-accent='maroon']) {
4409
4502
  html:has(.db-shell[data-theme='light'][data-accent='orange']) {
4410
4503
  --db-bg-subtle: #f8f1e9;
4411
4504
  --db-bg-hover: #f0e4d6;
4412
- --db-bg-selected: #8a5a32;
4413
- --db-bg-selected-hover: #6d4323;
4505
+ --db-bg-selected: #ead8c5;
4506
+ --db-bg-selected-hover: #e1cbb4;
4414
4507
  --db-border: #e0cfbc;
4415
4508
  --db-border-strong: #c2a282;
4416
4509
  --db-text: #30271f;
@@ -4458,8 +4551,8 @@ html:has(.db-shell[data-theme='dark'][data-accent='orange']) {
4458
4551
  html:has(.db-shell[data-theme='light'][data-accent='gray']) {
4459
4552
  --db-bg-subtle: #f2f2f2;
4460
4553
  --db-bg-hover: #e6e6e6;
4461
- --db-bg-selected: #676767;
4462
- --db-bg-selected-hover: #505050;
4554
+ --db-bg-selected: #d8d8d8;
4555
+ --db-bg-selected-hover: #cdcdcd;
4463
4556
  --db-border: #d1d1d1;
4464
4557
  --db-border-strong: #a8a8a8;
4465
4558
  --db-text: #252525;
@@ -4508,7 +4601,7 @@ html:has(.db-shell[data-theme='dark'][data-accent='gray']) {
4508
4601
  above so its surface, states, icons, and text follow every DocBlocks theme
4509
4602
  and accent instead of falling back to Squisq's standalone blue/slate UI. */
4510
4603
  html:has(.db-shell) .squisq-use-mode-menu {
4511
- background: var(--db-bg);
4604
+ background: var(--db-bg-raised);
4512
4605
  border-color: var(--db-border);
4513
4606
  box-shadow:
4514
4607
  0 12px 32px var(--db-shadow),
@@ -4544,7 +4637,7 @@ html:has(.db-shell)
4544
4637
  }
4545
4638
 
4546
4639
  html:has(.db-shell) .squisq-use-mode-menu .squisq-use-mode-menu-summary {
4547
- color: var(--db-text-muted);
4640
+ color: var(--db-text-secondary);
4548
4641
  }
4549
4642
 
4550
4643
  html:has(.db-shell) .squisq-use-mode-menu .squisq-use-mode-menu-check {
@@ -4619,7 +4712,7 @@ html:has(.db-shell)
4619
4712
  same menu surfaces as the rest of the shell. The selector also covers the
4620
4713
  nested Mermaid and code-snippet menus, which share this portal class. */
4621
4714
  html:has(.db-shell) .squisq-insert-menu {
4622
- background: var(--db-bg);
4715
+ background: var(--db-bg-raised);
4623
4716
  border-color: var(--db-border);
4624
4717
  color: var(--db-text-secondary);
4625
4718
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -4642,12 +4735,12 @@ html:has(.db-shell) .squisq-insert-menu .squisq-insert-menu-header--separated {
4642
4735
  border-top-color: var(--db-border);
4643
4736
  }
4644
4737
 
4645
- html:has(.db-shell[data-theme='light']:not([data-accent='brown'])) .squisq-tooltip {
4738
+ html:has(.db-shell[data-theme='light']:not([data-accent='rust'])) .squisq-tooltip {
4646
4739
  background: var(--db-accent-deep);
4647
4740
  color: var(--db-bg-subtle);
4648
4741
  }
4649
4742
 
4650
- html:has(.db-shell[data-theme='dark']:not([data-accent='brown'])) .squisq-tooltip {
4743
+ html:has(.db-shell[data-theme='dark']:not([data-accent='rust'])) .squisq-tooltip {
4651
4744
  background: var(--db-accent-deep);
4652
4745
  color: var(--db-bg);
4653
4746
  }
@@ -4708,7 +4801,7 @@ html:has(.db-shell[data-theme='dark'])
4708
4801
 
4709
4802
  html:has(.db-shell[data-theme='light'])
4710
4803
  .squisq-template-gallery-dialog[data-theme='light']:has([data-squisq-template-gallery-portal]) {
4711
- --squisq-template-gallery-backdrop: var(--db-gallery-backdrop, rgba(42, 36, 25, 0.24));
4804
+ --squisq-template-gallery-backdrop: var(--db-gallery-backdrop, rgba(35, 31, 24, 0.24));
4712
4805
  --squisq-template-gallery-panel-bg: var(--db-gallery-panel-bg, #fffdf7);
4713
4806
  --squisq-template-gallery-panel-border: var(--db-border);
4714
4807
  --squisq-template-gallery-header-bg: var(--db-bg-subtle);
@@ -5271,20 +5364,19 @@ html:has(.db-shell[data-theme='dark'])
5271
5364
  }
5272
5365
 
5273
5366
  .db-shell[data-theme='light'] .squisq-editor-shell[data-theme='light'] .squisq-toolbar-view-tabs {
5274
- background: var(--db-gutter-bg);
5367
+ background: var(--db-bg-subtle);
5275
5368
  border-right-color: var(--db-border);
5276
5369
  }
5277
5370
 
5278
5371
  .db-shell[data-theme='light'] .squisq-editor-shell[data-theme='light'] .squisq-status-bar {
5279
- background: var(--db-accent-tint-strong);
5372
+ --squisq-text-muted: var(--db-text-secondary);
5373
+ background: var(--db-bg-subtle);
5280
5374
  border-top-color: var(--db-border-strong);
5281
5375
  }
5282
5376
 
5283
- /* Status bar "✓ OK" indicator — squisq paints this in saturated emerald
5284
- (#059669 light, #34d399 dark). Re-tone to the sage accent so the
5285
- status indicator harmonizes with the rest of the chrome. */
5377
+ /* The stronger accent keeps small status text readable on the tinted bar. */
5286
5378
  .db-shell .squisq-status-ok {
5287
- color: var(--db-accent);
5379
+ color: var(--db-accent-hover);
5288
5380
  }
5289
5381
 
5290
5382
  .db-shell[data-theme='dark'] .squisq-status-ok {
@@ -5319,48 +5411,49 @@ html:has(.db-shell[data-theme='dark'])
5319
5411
  border-left: 1px solid var(--db-border);
5320
5412
  }
5321
5413
 
5322
- /* Toolbar overflow menu. Squisq intentionally ships a neutral slate
5414
+ /* Toolbar overflow menu. Squisq portals it onto <body> (2.12+), outside the
5415
+ shell, so these rules reach it through `html:has(.db-shell)` like the
5416
+ Insert and Use mode menus. Squisq intentionally ships a neutral slate
5323
5417
  palette; inside DocBlocks this popover should use the same surfaces,
5324
5418
  borders, text, and interaction colors as our other shell menus. The
5325
5419
  contextual template/transition controls need explicit treatment too,
5326
5420
  since they bring their own Squisq surfaces into the popover. */
5327
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-menu {
5328
- background: var(--db-bg);
5421
+ html:has(.db-shell) .squisq-toolbar-overflow-menu {
5422
+ background: var(--db-bg-raised);
5329
5423
  border-color: var(--db-border);
5330
5424
  box-shadow: 0 4px 12px var(--db-shadow);
5331
5425
  }
5332
5426
 
5333
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-menu--up {
5427
+ html:has(.db-shell) .squisq-toolbar-overflow-menu--up {
5334
5428
  box-shadow: 0 -4px 12px var(--db-shadow);
5335
5429
  }
5336
5430
 
5337
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-item {
5431
+ html:has(.db-shell) .squisq-toolbar-overflow-item {
5338
5432
  color: var(--db-text-secondary);
5339
5433
  }
5340
5434
 
5341
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-item:hover {
5435
+ html:has(.db-shell) .squisq-toolbar-overflow-item:hover {
5342
5436
  background: var(--db-bg-hover);
5343
5437
  }
5344
5438
 
5345
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-heading {
5439
+ html:has(.db-shell) .squisq-toolbar-overflow-heading {
5346
5440
  color: var(--db-text-muted);
5347
5441
  }
5348
5442
 
5349
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-menu > .squisq-toolbar-separator {
5443
+ html:has(.db-shell) .squisq-toolbar-overflow-menu > .squisq-toolbar-separator {
5350
5444
  background: var(--db-border);
5351
5445
  }
5352
5446
 
5353
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-item--danger {
5447
+ html:has(.db-shell) .squisq-toolbar-overflow-item--danger {
5354
5448
  color: var(--db-danger);
5355
5449
  }
5356
5450
 
5357
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-item--danger:hover {
5451
+ html:has(.db-shell) .squisq-toolbar-overflow-item--danger:hover {
5358
5452
  background: var(--db-danger-bg);
5359
5453
  color: var(--db-danger);
5360
5454
  }
5361
5455
 
5362
- .db-shell
5363
- .squisq-editor-shell
5456
+ html:has(.db-shell)
5364
5457
  .squisq-toolbar-overflow-menu
5365
5458
  :is(.squisq-template-picker-trigger, .squisq-transition-picker-trigger) {
5366
5459
  background: var(--db-bg-subtle);
@@ -5368,16 +5461,14 @@ html:has(.db-shell[data-theme='dark'])
5368
5461
  color: var(--db-text-secondary);
5369
5462
  }
5370
5463
 
5371
- .db-shell
5372
- .squisq-editor-shell
5464
+ html:has(.db-shell)
5373
5465
  .squisq-toolbar-overflow-menu
5374
5466
  :is(.squisq-template-picker-trigger, .squisq-transition-picker-trigger):hover {
5375
5467
  background: var(--db-bg-hover);
5376
5468
  border-color: var(--db-border-strong);
5377
5469
  }
5378
5470
 
5379
- .db-shell
5380
- .squisq-editor-shell
5471
+ html:has(.db-shell)
5381
5472
  .squisq-toolbar-overflow-menu
5382
5473
  :is(.squisq-template-picker-trigger--open, .squisq-transition-picker-trigger--open) {
5383
5474
  background: var(--db-bg-hover);
@@ -5385,66 +5476,64 @@ html:has(.db-shell[data-theme='dark'])
5385
5476
  outline-color: var(--db-accent-soft-25);
5386
5477
  }
5387
5478
 
5388
- .db-shell
5389
- .squisq-editor-shell
5479
+ html:has(.db-shell)
5390
5480
  .squisq-toolbar-overflow-menu
5391
5481
  :is(.squisq-template-picker-trigger-label, .squisq-transition-picker-trigger-label),
5392
- .db-shell
5393
- .squisq-editor-shell
5482
+ html:has(.db-shell)
5394
5483
  .squisq-toolbar-overflow-menu
5395
5484
  :is(.squisq-template-picker-trigger-caret, .squisq-transition-picker-trigger svg) {
5396
5485
  color: var(--db-text-muted);
5397
5486
  }
5398
5487
 
5399
- .db-shell
5400
- .squisq-editor-shell
5488
+ html:has(.db-shell)
5401
5489
  .squisq-toolbar-overflow-menu
5402
5490
  :is(.squisq-template-picker-trigger-value, .squisq-transition-picker-trigger-value) {
5403
5491
  color: var(--db-text-secondary);
5404
5492
  }
5405
5493
 
5406
- .db-shell .squisq-editor-shell .squisq-toolbar-overflow-menu .squisq-template-picker-trigger-thumb {
5494
+ html:has(.db-shell) .squisq-toolbar-overflow-menu .squisq-template-picker-trigger-thumb {
5407
5495
  background: var(--db-bg);
5408
5496
  border-color: var(--db-border);
5409
5497
  }
5410
5498
 
5411
- /* View menu. Squisq's dark appearance otherwise replaces its generic
5412
- variables with a fixed slate-blue palette. Keep the popover and its
5413
- controls on the same host palette as the DocBlocks app and overflow
5414
- menus, including the native radio/checkbox selection color. */
5415
- .db-shell .squisq-editor-shell .squisq-view-menu-popover {
5416
- background: var(--db-bg);
5499
+ /* View menu — portaled onto <body> like the overflow menu, so reached
5500
+ through `html:has(.db-shell)`. Squisq's dark appearance otherwise
5501
+ replaces its generic variables with a fixed slate-blue palette. Keep the
5502
+ popover and its controls on the same host palette as the DocBlocks app
5503
+ and overflow menus, including the native radio/checkbox selection color. */
5504
+ html:has(.db-shell) .squisq-view-menu-popover {
5505
+ background: var(--db-bg-raised);
5417
5506
  border-color: var(--db-border);
5418
5507
  box-shadow: 0 4px 12px var(--db-shadow);
5419
5508
  color: var(--db-text-secondary);
5420
5509
  }
5421
5510
 
5422
- .db-shell .squisq-editor-shell .squisq-view-menu-row:hover,
5423
- .db-shell .squisq-editor-shell .squisq-view-menu-radio-row:hover {
5511
+ html:has(.db-shell) .squisq-view-menu-row:hover,
5512
+ html:has(.db-shell) .squisq-view-menu-radio-row:hover {
5424
5513
  background: var(--db-bg-hover);
5425
5514
  }
5426
5515
 
5427
- .db-shell .squisq-editor-shell .squisq-view-menu-row--select:hover,
5428
- .db-shell .squisq-editor-shell .squisq-view-menu-row--radios:hover {
5516
+ html:has(.db-shell) .squisq-view-menu-row--select:hover,
5517
+ html:has(.db-shell) .squisq-view-menu-row--radios:hover {
5429
5518
  background: transparent;
5430
5519
  }
5431
5520
 
5432
- .db-shell .squisq-editor-shell .squisq-view-menu-row--select .squisq-view-menu-label,
5433
- .db-shell .squisq-editor-shell .squisq-view-menu-row--radios > .squisq-view-menu-label {
5521
+ html:has(.db-shell) .squisq-view-menu-row--select .squisq-view-menu-label,
5522
+ html:has(.db-shell) .squisq-view-menu-row--radios > .squisq-view-menu-label {
5434
5523
  color: var(--db-text-muted);
5435
5524
  }
5436
5525
 
5437
- .db-shell .squisq-editor-shell .squisq-view-menu-select {
5526
+ html:has(.db-shell) .squisq-view-menu-select {
5438
5527
  background: var(--db-bg-subtle);
5439
5528
  border-color: var(--db-border);
5440
5529
  color: var(--db-text-secondary);
5441
5530
  }
5442
5531
 
5443
- .db-shell .squisq-editor-shell .squisq-view-menu-separator {
5532
+ html:has(.db-shell) .squisq-view-menu-separator {
5444
5533
  background: var(--db-border);
5445
5534
  }
5446
5535
 
5447
- .db-shell .squisq-editor-shell :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5536
+ html:has(.db-shell) :is(.squisq-view-menu-checkbox, .squisq-view-menu-radio) {
5448
5537
  accent-color: var(--db-accent);
5449
5538
  }
5450
5539
 
@@ -5528,7 +5617,7 @@ html:has(.db-shell[data-theme='dark'])
5528
5617
  }
5529
5618
 
5530
5619
  .db-shell[data-theme='dark'] .squisq-version-history-popover {
5531
- background: var(--db-bg);
5620
+ background: var(--db-bg-raised);
5532
5621
  border-color: var(--db-border);
5533
5622
  color: var(--db-text);
5534
5623
  }
@@ -5567,7 +5656,7 @@ html:has(.db-shell[data-theme='dark'])
5567
5656
  gap: 12px;
5568
5657
  max-width: min(640px, calc(100% - 32px));
5569
5658
  padding: 10px 10px 10px 16px;
5570
- background: var(--db-bg);
5659
+ background: var(--db-bg-raised);
5571
5660
  border: 1px solid var(--db-border-strong);
5572
5661
  border-radius: 10px;
5573
5662
  box-shadow: 0 10px 32px var(--db-shadow);
@@ -6218,7 +6307,7 @@ html:has(.db-shell[data-theme='dark'])
6218
6307
  box-sizing: border-box;
6219
6308
  overflow-y: auto;
6220
6309
  border-left: 1px solid var(--db-border-strong);
6221
- background: var(--db-bg);
6310
+ background: var(--db-bg-raised);
6222
6311
  color: var(--db-text-secondary);
6223
6312
  font: 13px/1.45 var(--db-ui-font);
6224
6313
  }
@@ -6241,7 +6330,7 @@ html:has(.db-shell[data-theme='dark'])
6241
6330
  gap: 12px;
6242
6331
  padding: 14px 14px 10px;
6243
6332
  border-bottom: 1px solid var(--db-border);
6244
- background: var(--db-bg);
6333
+ background: var(--db-bg-raised);
6245
6334
  }
6246
6335
 
6247
6336
  .db-ai-review-header h2 {
@@ -6664,7 +6753,7 @@ html:has(.db-shell[data-theme='dark'])
6664
6753
  left: 8px;
6665
6754
  right: 8px;
6666
6755
  z-index: 100;
6667
- background: var(--db-bg);
6756
+ background: var(--db-bg-raised);
6668
6757
  border: 1px solid var(--db-border);
6669
6758
  border-radius: 6px;
6670
6759
  box-shadow: 0 4px 12px var(--db-shadow);
@@ -6873,6 +6962,91 @@ button.db-git-file-row:hover {
6873
6962
  margin: 10px 0;
6874
6963
  }
6875
6964
 
6965
+ .db-new-document-hint {
6966
+ grid-column: 2;
6967
+ margin: -4px 0 0;
6968
+ color: var(--db-text-muted);
6969
+ font-size: 12px;
6970
+ line-height: 1.4;
6971
+ }
6972
+
6973
+ /* ── Keyboard shortcut sheet ─────────────────────────────────── */
6974
+
6975
+ /* Two columns of sections on a desktop screen, so the sheet reads at a
6976
+ glance instead of scrolling; one column on narrow windows. */
6977
+ .db-dialog.db-shortcuts-dialog {
6978
+ width: 780px;
6979
+ max-height: min(calc(100dvh - 32px), 780px);
6980
+ }
6981
+
6982
+ .db-shortcuts {
6983
+ display: grid;
6984
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
6985
+ gap: 18px 32px;
6986
+ align-items: start;
6987
+ }
6988
+
6989
+ .db-shortcuts:focus-visible {
6990
+ outline: 2px solid var(--db-focus);
6991
+ outline-offset: 4px;
6992
+ }
6993
+
6994
+ .db-shortcuts-heading {
6995
+ margin: 0 0 6px;
6996
+ color: var(--db-text);
6997
+ font-size: 13px;
6998
+ font-weight: 600;
6999
+ }
7000
+
7001
+ .db-shortcuts-list {
7002
+ margin: 0;
7003
+ }
7004
+
7005
+ .db-shortcuts-row {
7006
+ display: flex;
7007
+ align-items: baseline;
7008
+ justify-content: space-between;
7009
+ gap: 12px;
7010
+ padding: 4px 0;
7011
+ border-bottom: 1px solid var(--db-border);
7012
+ }
7013
+
7014
+ .db-shortcuts-action {
7015
+ color: var(--db-text-secondary);
7016
+ font-size: 13px;
7017
+ }
7018
+
7019
+ .db-shortcuts-keys {
7020
+ display: flex;
7021
+ flex-wrap: wrap;
7022
+ align-items: baseline;
7023
+ justify-content: flex-end;
7024
+ gap: 4px;
7025
+ margin: 0;
7026
+ white-space: nowrap;
7027
+ }
7028
+
7029
+ .db-shortcuts-or {
7030
+ color: var(--db-text-muted);
7031
+ font-size: 12px;
7032
+ }
7033
+
7034
+ .db-shortcuts-chord kbd {
7035
+ display: inline-block;
7036
+ min-width: 1.6em;
7037
+ margin-left: 2px;
7038
+ padding: 1px 5px;
7039
+ border: 1px solid var(--db-border-strong);
7040
+ border-bottom-width: 2px;
7041
+ border-radius: 4px;
7042
+ background: var(--db-bg-subtle);
7043
+ color: var(--db-text);
7044
+ font: inherit;
7045
+ font-size: 12px;
7046
+ line-height: 1.4;
7047
+ text-align: center;
7048
+ }
7049
+
6876
7050
  .db-git-form-error,
6877
7051
  .db-export-error {
6878
7052
  margin: 8px 0 0;
@@ -7408,6 +7582,42 @@ button.db-git-file-row:hover {
7408
7582
  color: var(--db-text-muted);
7409
7583
  overflow-wrap: anywhere;
7410
7584
  }
7585
+ .db-presentation-beat-tags {
7586
+ display: flex;
7587
+ flex-wrap: wrap;
7588
+ gap: 6px;
7589
+ max-width: 100%;
7590
+ }
7591
+ /* Marks the slide a request is open for, then every slide with AI wording. */
7592
+ .db-presentation-beats small.db-presentation-beat-ai {
7593
+ display: inline-flex;
7594
+ align-items: center;
7595
+ gap: 5px;
7596
+ background: var(--db-accent-soft-12);
7597
+ color: var(--db-accent-deep);
7598
+ }
7599
+ .db-presentation-beat-ai .db-ai-spinner {
7600
+ width: 10px;
7601
+ height: 10px;
7602
+ flex-basis: 10px;
7603
+ }
7604
+ /* While slides are being suggested, this takes the Suggest button's place in
7605
+ the footer, with Stop beside it, so progress sits where the action started. */
7606
+ .db-presentation-progress {
7607
+ display: inline-flex;
7608
+ align-items: center;
7609
+ flex-wrap: wrap;
7610
+ gap: 8px;
7611
+ min-width: 0;
7612
+ min-height: var(--db-target-min);
7613
+ color: var(--db-text-secondary);
7614
+ font: 600 12px/1.2 var(--db-ui-font);
7615
+ }
7616
+ .db-presentation-progress progress {
7617
+ width: 120px;
7618
+ height: 6px;
7619
+ accent-color: var(--db-accent);
7620
+ }
7411
7621
  .db-presentation label.db-presentation-toggle {
7412
7622
  display: flex;
7413
7623
  flex-direction: row;