@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.
- package/README.md +1 -1
- package/THIRD_PARTY_NOTICES.txt +98 -48
- package/dist/{AiDiagrams-XWOM3YZX.js → AiDiagrams-LFV4YU6W.js} +2 -2
- package/dist/{AiEditorAssistant-M4LI2CRY.js → AiEditorAssistant-GN2KXKZD.js} +21 -6
- package/dist/{ExportDialog-L6FG6W3H.js → ExportDialog-JRVZCG3J.js} +2 -2
- package/dist/{ExportToolbarControls-BRCPZ7H3.js → ExportToolbarControls-2FEIHNMW.js} +28 -18
- package/dist/{GitToolbarControl-J4UYZDV6.js → GitToolbarControl-B7KG4MFP.js} +4 -4
- package/dist/{GitUI-LZW3IUXO.js → GitUI-RCWUZVS6.js} +2 -2
- package/dist/KeyboardShortcutsDialog-NOD4P25G.js +145 -0
- package/dist/{PresentationMaker-622NHMIN.js → PresentationMaker-ITNP5SDO.js} +2 -2
- package/dist/{Settings-DuXk6baH.d.ts → Settings-RDYvDDI0.d.ts} +13 -11
- package/dist/ShareDialog-XUA2OVGI.js +292 -0
- package/dist/{SpeechToolbarControl-UZQKGQWD.js → SpeechToolbarControl-CLU7RB2G.js} +2 -2
- package/dist/{TextFromNarration-XYRAB6O2.js → TextFromNarration-NITJQ4IB.js} +1 -1
- package/dist/{WorkspaceSearchPanel-OUQQ5DOM.js → WorkspaceSearchPanel-J6BKEZQJ.js} +8 -2
- package/dist/{chunk-UG4G7PJ4.js → chunk-5O5YTOXG.js} +1 -1
- package/dist/{chunk-VO2JYYQZ.js → chunk-6JJOGV6M.js} +5 -13
- package/dist/{chunk-X437UAF7.js → chunk-6MSHXQNB.js} +7 -2
- package/dist/{chunk-Q5ZVP5LV.js → chunk-BLUEZG7T.js} +40 -32
- package/dist/chunk-DICE7VBJ.js +77 -0
- package/dist/{chunk-MRUK56JS.js → chunk-GMA4KGGO.js} +7 -3
- package/dist/{chunk-BCQZTWE5.js → chunk-HRWEGPTY.js} +18 -4
- package/dist/chunk-K7XJDJUJ.js +126 -0
- package/dist/{chunk-5OZBGIIT.js → chunk-NAH52736.js} +86 -28
- package/dist/{chunk-YS4HVWIO.js → chunk-SPUPWCSI.js} +49 -1
- package/dist/{chunk-MMOTEQK6.js → chunk-SSB43524.js} +165 -70
- package/dist/{chunk-G4MFB3IO.js → chunk-VG434562.js} +2 -70
- package/dist/{chunk-OINKNX26.js → chunk-X3DDTJKR.js} +1 -1
- package/dist/{chunk-SGQKTKDX.js → chunk-Y5OE3HJC.js} +14 -4
- package/dist/editor.js +7 -5
- package/dist/export/index.d.ts +17 -6
- package/dist/export/index.js +4 -4
- package/dist/index.d.ts +24 -6
- package/dist/index.js +452 -247
- package/dist/proofing/index.js +11 -1
- package/dist/run-export-CS3HRNAZ.js +13 -0
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +1 -1
- package/package.json +9 -8
- package/src/styles/docblocks.css +481 -271
- package/dist/ShareDialog-N7GPM4SB.js +0 -310
- package/dist/chunk-EA4BO6E4.js +0 -73
- package/dist/run-export-47X5FTYZ.js +0 -11
package/src/styles/docblocks.css
CHANGED
|
@@ -4,15 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
/* ── Theme Tokens ────────────────────────────────────────────── */
|
|
6
6
|
|
|
7
|
-
/* DocBlocks
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
`--db-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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,
|
|
29
|
-
sans-serif;
|
|
30
|
-
|
|
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: #
|
|
34
|
-
--db-bg-selected-hover: #
|
|
35
|
-
--db-border: #
|
|
36
|
-
--db-border-strong: #
|
|
37
|
-
--db-text: #
|
|
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: #
|
|
53
|
+
--db-text-muted: #6b6252;
|
|
40
54
|
--db-text-placeholder: #766c54;
|
|
41
|
-
--db-accent: #
|
|
42
|
-
--db-accent-hover: #
|
|
43
|
-
--db-text-on-accent: #
|
|
44
|
-
--db-text-on-selected: #
|
|
45
|
-
/*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
--db-
|
|
52
|
-
--db-accent-soft-
|
|
53
|
-
--db-accent-soft-
|
|
54
|
-
--db-accent-soft-
|
|
55
|
-
--db-accent-
|
|
56
|
-
--db-accent-
|
|
57
|
-
--db-
|
|
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: #
|
|
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:
|
|
148
|
-
`DocBlocks Fixed UI` is the
|
|
149
|
-
for the document theme of that name, redeclared over
|
|
150
|
-
so the chrome's 400/500/600/650/700 weights render
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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: #
|
|
175
|
-
--db-bg-selected-hover: #
|
|
176
|
-
--db-border: #
|
|
177
|
-
--db-border-strong: #
|
|
178
|
-
--db-text: #
|
|
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: #
|
|
204
|
+
--db-text-muted: #a39885;
|
|
181
205
|
--db-text-placeholder: #6b614a;
|
|
182
|
-
--db-accent: #
|
|
183
|
-
--db-accent-hover: #
|
|
206
|
+
--db-accent: #e0835a;
|
|
207
|
+
--db-accent-hover: #eb9a76;
|
|
184
208
|
--db-text-on-accent: #1a1812;
|
|
185
|
-
--db-text-on-selected: #
|
|
186
|
-
--db-
|
|
187
|
-
--db-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
--db-
|
|
192
|
-
--db-accent-
|
|
193
|
-
--db-accent-
|
|
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: #
|
|
224
|
-
--db-bg-selected-hover: #
|
|
225
|
-
--db-border: #
|
|
226
|
-
--db-border-strong: #
|
|
227
|
-
--db-text: #
|
|
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: #
|
|
258
|
+
--db-text-muted: #a39885;
|
|
230
259
|
--db-text-placeholder: #6b614a;
|
|
231
|
-
--db-accent: #
|
|
232
|
-
--db-accent-hover: #
|
|
260
|
+
--db-accent: #e0835a;
|
|
261
|
+
--db-accent-hover: #eb9a76;
|
|
233
262
|
--db-text-on-accent: #1a1812;
|
|
234
|
-
--db-text-on-selected: #
|
|
235
|
-
--db-
|
|
236
|
-
--db-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
--db-
|
|
241
|
-
--db-accent-
|
|
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-
|
|
297
|
-
font-
|
|
330
|
+
font-family: var(--db-meta-font);
|
|
331
|
+
font-weight: 500;
|
|
332
|
+
font-size: 11px;
|
|
298
333
|
text-transform: uppercase;
|
|
299
|
-
letter-spacing: 0.
|
|
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
|
|
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-
|
|
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
|
-
/*
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
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
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
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
|
-
|
|
1781
|
-
|
|
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-
|
|
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-
|
|
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:
|
|
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-
|
|
2318
|
-
font-
|
|
2396
|
+
font-family: var(--db-meta-font);
|
|
2397
|
+
font-size: 11px;
|
|
2398
|
+
font-weight: 500;
|
|
2319
2399
|
text-transform: uppercase;
|
|
2320
|
-
letter-spacing: 0.
|
|
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--
|
|
2902
|
-
background: #
|
|
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
|
|
3839
|
+
/* ── Inline preview gutter ──────────────────────────────────── */
|
|
3747
3840
|
/* Rebind squisq's `--squisq-preview-*` custom properties so the
|
|
3748
|
-
gutter chrome (vertical bracket, diagonal connector + dots
|
|
3749
|
-
|
|
3750
|
-
and the card surface tones harmonize with the rest of docblocks.
|
|
3751
|
-
|
|
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-
|
|
3755
|
-
--squisq-preview-accent-muted: var(--db-
|
|
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:
|
|
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:
|
|
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-
|
|
3770
|
-
--squisq-preview-accent-muted: var(--db-
|
|
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 +
|
|
4080
|
-
/* Tooltips
|
|
4081
|
-
|
|
4082
|
-
|
|
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
|
-
|
|
4090
|
-
|
|
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
|
-
|
|
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: #
|
|
4137
|
-
--db-border-strong: #
|
|
4138
|
-
--db-text: #
|
|
4223
|
+
--db-border: #342e27;
|
|
4224
|
+
--db-border-strong: #4a4238;
|
|
4225
|
+
--db-text: #ece6d8;
|
|
4139
4226
|
--db-text-secondary: #d4ccb0;
|
|
4140
|
-
--db-text-muted: #
|
|
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: #
|
|
4146
|
-
--db-accent-hover: #
|
|
4232
|
+
--db-accent: #e0835a;
|
|
4233
|
+
--db-accent-hover: #eb9a76;
|
|
4147
4234
|
--db-text-on-accent: #1a1812;
|
|
4148
|
-
--db-accent-soft-15: rgba(
|
|
4149
|
-
--db-accent-soft-25: rgba(
|
|
4150
|
-
--db-accent-tint-strong: #
|
|
4151
|
-
--db-accent-deep: #
|
|
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: #
|
|
4244
|
+
--db-bg: #fffdf9;
|
|
4157
4245
|
--db-bg-subtle: #f3eede;
|
|
4158
4246
|
--db-bg-hover: #e9e2cb;
|
|
4159
|
-
--db-border: #
|
|
4160
|
-
--db-border-strong: #
|
|
4161
|
-
--db-text: #
|
|
4247
|
+
--db-border: #ddd5c3;
|
|
4248
|
+
--db-border-strong: #c7bca3;
|
|
4249
|
+
--db-text: #231f18;
|
|
4162
4250
|
--db-text-secondary: #3d3528;
|
|
4163
|
-
--db-text-muted: #
|
|
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: #
|
|
4169
|
-
--db-accent-hover: #
|
|
4170
|
-
--db-text-on-accent: #
|
|
4171
|
-
--db-accent-soft-15: rgba(
|
|
4172
|
-
--db-accent-soft-25: rgba(
|
|
4173
|
-
--db-accent-tint-strong: #
|
|
4174
|
-
--db-accent-deep: #
|
|
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
|
|
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='
|
|
4182
|
-
html:has(.db-shell[data-theme='light']:not([data-accent='
|
|
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='
|
|
4197
|
-
html:has(.db-shell[data-theme='dark']:not([data-accent='
|
|
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: #
|
|
4217
|
-
--db-bg-selected-hover: #
|
|
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: #
|
|
4266
|
-
--db-bg-selected-hover: #
|
|
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: #
|
|
4315
|
-
--db-bg-selected-hover: #
|
|
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: #
|
|
4364
|
-
--db-bg-selected-hover: #
|
|
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: #
|
|
4413
|
-
--db-bg-selected-hover: #
|
|
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: #
|
|
4462
|
-
--db-bg-selected-hover: #
|
|
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-
|
|
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='
|
|
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='
|
|
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(
|
|
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-
|
|
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
|
-
|
|
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
|
-
/*
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
5431
|
+
html:has(.db-shell) .squisq-toolbar-overflow-item {
|
|
5338
5432
|
color: var(--db-text-secondary);
|
|
5339
5433
|
}
|
|
5340
5434
|
|
|
5341
|
-
.db-shell .squisq-
|
|
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-
|
|
5439
|
+
html:has(.db-shell) .squisq-toolbar-overflow-heading {
|
|
5346
5440
|
color: var(--db-text-muted);
|
|
5347
5441
|
}
|
|
5348
5442
|
|
|
5349
|
-
.db-shell .squisq-
|
|
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-
|
|
5447
|
+
html:has(.db-shell) .squisq-toolbar-overflow-item--danger {
|
|
5354
5448
|
color: var(--db-danger);
|
|
5355
5449
|
}
|
|
5356
5450
|
|
|
5357
|
-
.db-shell .squisq-
|
|
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-
|
|
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
|
|
5412
|
-
|
|
5413
|
-
|
|
5414
|
-
|
|
5415
|
-
|
|
5416
|
-
|
|
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-
|
|
5423
|
-
.db-shell .squisq-
|
|
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-
|
|
5428
|
-
.db-shell .squisq-
|
|
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-
|
|
5433
|
-
.db-shell .squisq-
|
|
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-
|
|
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-
|
|
5532
|
+
html:has(.db-shell) .squisq-view-menu-separator {
|
|
5444
5533
|
background: var(--db-border);
|
|
5445
5534
|
}
|
|
5446
5535
|
|
|
5447
|
-
.db-shell
|
|
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;
|