@richscripts/richtexteditor 2.4.0 → 2.4.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/migration/README.md +100 -0
- package/migration/cli.js +294 -0
- package/migration/index.d.ts +18 -0
- package/migration/index.js +242 -0
- package/migration/report-schema-v2.json +127 -0
- package/package.json +14 -2
- package/richtexteditor/CHANGELOG.md +326 -1
- package/richtexteditor/all_plugins.js +14982 -4831
- package/richtexteditor/all_plugins.min.js +62 -42
- package/richtexteditor/plugins/accessibilitychecker.js +8 -7
- package/richtexteditor/plugins/aitoolkit.css +17 -8
- package/richtexteditor/plugins/aitoolkit.js +8 -8
- package/richtexteditor/plugins/all_plugins.js +14982 -4831
- package/richtexteditor/plugins/all_plugins.min.js +62 -42
- package/richtexteditor/plugins/autocorrect.js +353 -0
- package/richtexteditor/plugins/bookmarkcard.js +12 -1
- package/richtexteditor/plugins/changecase.js +238 -0
- package/richtexteditor/plugins/comments.js +15 -28
- package/richtexteditor/plugins/contentminimap.js +6 -5
- package/richtexteditor/plugins/crdt-engine.js +2201 -198
- package/richtexteditor/plugins/crdt-engine.min.js +5 -5
- package/richtexteditor/plugins/crossreference.js +408 -0
- package/richtexteditor/plugins/documentimport.js +915 -21
- package/richtexteditor/plugins/documentoutline.js +5 -4
- package/richtexteditor/plugins/docxexport.js +960 -0
- package/richtexteditor/plugins/draghandle.js +309 -0
- package/richtexteditor/plugins/footnotes.js +398 -0
- package/richtexteditor/plugins/formatpainter.js +298 -0
- package/richtexteditor/plugins/formattingmarks.js +246 -0
- package/richtexteditor/plugins/html2pdf.js +108 -4
- package/richtexteditor/plugins/imageeditor.js +37 -7
- package/richtexteditor/plugins/insertgallery.js +553 -170
- package/richtexteditor/plugins/keyboarda11y.js +316 -0
- package/richtexteditor/plugins/linenumbers.js +352 -0
- package/richtexteditor/plugins/linkchecker.js +396 -0
- package/richtexteditor/plugins/mentionplugin.js +4 -3
- package/richtexteditor/plugins/mergefields.js +328 -0
- package/richtexteditor/plugins/multilevellist.js +137 -0
- package/richtexteditor/plugins/pagination.js +505 -0
- package/richtexteditor/plugins/pdfexport.js +1137 -0
- package/richtexteditor/plugins/permanentpen.js +211 -0
- package/richtexteditor/plugins/revisionhistory.js +47 -34
- package/richtexteditor/plugins/rtlui.js +150 -0
- package/richtexteditor/plugins/sanitizer.js +510 -0
- package/richtexteditor/plugins/slashcommand.js +142 -17
- package/richtexteditor/plugins/spellcheck.js +6 -3
- package/richtexteditor/plugins/tableofcontents.js +353 -0
- package/richtexteditor/plugins/tabletools.js +342 -0
- package/richtexteditor/plugins/textdirection.js +313 -0
- package/richtexteditor/plugins/trackedchanges.js +37 -6
- package/richtexteditor/plugins/tui.image-editor/tui-code-snippet.min.js +1 -1
- package/richtexteditor/plugins/tui.image-editor/tui-color-picker.min.js +1 -1
- package/richtexteditor/plugins/tui.image-editor/tui-image-editor.min.js +1 -1
- package/richtexteditor/plugins/vendor/html2pdf.bundle.min.js +3 -0
- package/richtexteditor/plugins/watermark.js +214 -0
- package/richtexteditor/plugins/wordexport.js +0 -0
- package/richtexteditor/plugins/yjscollab.js +49 -11
- package/richtexteditor/rte-config.js +44 -44
- package/richtexteditor/rte.js +91 -63
- package/richtexteditor/rte_theme_default.css +483 -384
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
/* ===== Design tokens =====
|
|
3
|
-
Override these CSS custom properties to retheme the editor chrome �� the
|
|
3
|
+
Override these CSS custom properties to retheme the editor chrome �� the
|
|
4
4
|
same architecture CKEditor 5 documents for its --ck-* variables. Icons in
|
|
5
5
|
rte-config.js use fill/stroke="currentColor" and follow --rte-icon-color.
|
|
6
6
|
The built-in dark mode (end of this file) is pure token overrides. */
|
|
@@ -52,6 +52,11 @@ rte-toolbar-button, rte-toolbar-splitbutton, rte-toolbar-dropdown, rte-toolbar-a
|
|
|
52
52
|
max-width: none !important;
|
|
53
53
|
max-height: none !important;
|
|
54
54
|
border-radius: 0px !important;
|
|
55
|
+
/* Force a dedicated compositing layer: without this, Chromium can fail to
|
|
56
|
+
repaint the element over sticky/fixed page content (e.g. a sticky header)
|
|
57
|
+
when position and z-index change together, leaving stale pixels on screen. */
|
|
58
|
+
transform: translateZ(0) !important;
|
|
59
|
+
will-change: transform !important;
|
|
55
60
|
}
|
|
56
61
|
|
|
57
62
|
.richtexteditor.rte-fullpage rte-toolbar {
|
|
@@ -182,7 +187,7 @@ rte-codebox {
|
|
|
182
187
|
}
|
|
183
188
|
}
|
|
184
189
|
|
|
185
|
-
/* 2026-05-19 Reading mode �� hides toolbars + status, leaves only the editing
|
|
190
|
+
/* 2026-05-19 Reading mode �� hides toolbars + status, leaves only the editing
|
|
186
191
|
surface for distraction-free writing. Toggle via editor.toggleReadingMode(). */
|
|
187
192
|
.richtexteditor.rte-reading-mode rte-toolbar,
|
|
188
193
|
.richtexteditor.rte-reading-mode rte-subtoolbar,
|
|
@@ -190,35 +195,35 @@ rte-codebox {
|
|
|
190
195
|
.richtexteditor.rte-reading-mode rte-plusbtn {
|
|
191
196
|
display: none !important;
|
|
192
197
|
}
|
|
193
|
-
.richtexteditor.rte-reading-mode {
|
|
194
|
-
border: 0 !important;
|
|
195
|
-
box-shadow: none !important;
|
|
196
|
-
background: #fff !important;
|
|
197
|
-
}
|
|
198
|
-
.richtexteditor .rte-reading-mode-exit {
|
|
199
|
-
display: none;
|
|
200
|
-
}
|
|
201
|
-
.richtexteditor.rte-reading-mode .rte-reading-mode-exit {
|
|
202
|
-
position: absolute;
|
|
203
|
-
top: 8px;
|
|
204
|
-
right: 8px;
|
|
205
|
-
z-index: 12;
|
|
206
|
-
display: inline-flex;
|
|
207
|
-
align-items: center;
|
|
208
|
-
gap: 6px;
|
|
209
|
-
padding: 7px 10px;
|
|
210
|
-
border: 1px solid rgba(15, 23, 42, .16);
|
|
211
|
-
border-radius: 8px;
|
|
212
|
-
background: rgba(255, 255, 255, .94);
|
|
213
|
-
color: #172033;
|
|
214
|
-
box-shadow: 0 8px 22px rgba(15, 23, 42, .12);
|
|
215
|
-
font: 600 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
216
|
-
cursor: pointer;
|
|
217
|
-
}
|
|
218
|
-
.richtexteditor.rte-reading-mode .rte-reading-mode-exit:hover {
|
|
219
|
-
background: #f8fafc;
|
|
220
|
-
border-color: rgba(37, 99, 235, .35);
|
|
221
|
-
}
|
|
198
|
+
.richtexteditor.rte-reading-mode {
|
|
199
|
+
border: 0 !important;
|
|
200
|
+
box-shadow: none !important;
|
|
201
|
+
background: #fff !important;
|
|
202
|
+
}
|
|
203
|
+
.richtexteditor .rte-reading-mode-exit {
|
|
204
|
+
display: none;
|
|
205
|
+
}
|
|
206
|
+
.richtexteditor.rte-reading-mode .rte-reading-mode-exit {
|
|
207
|
+
position: absolute;
|
|
208
|
+
top: 8px;
|
|
209
|
+
right: 8px;
|
|
210
|
+
z-index: 12;
|
|
211
|
+
display: inline-flex;
|
|
212
|
+
align-items: center;
|
|
213
|
+
gap: 6px;
|
|
214
|
+
padding: 7px 10px;
|
|
215
|
+
border: 1px solid rgba(15, 23, 42, .16);
|
|
216
|
+
border-radius: 8px;
|
|
217
|
+
background: rgba(255, 255, 255, .94);
|
|
218
|
+
color: #172033;
|
|
219
|
+
box-shadow: 0 8px 22px rgba(15, 23, 42, .12);
|
|
220
|
+
font: 600 12px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
221
|
+
cursor: pointer;
|
|
222
|
+
}
|
|
223
|
+
.richtexteditor.rte-reading-mode .rte-reading-mode-exit:hover {
|
|
224
|
+
background: #f8fafc;
|
|
225
|
+
border-color: rgba(37, 99, 235, .35);
|
|
226
|
+
}
|
|
222
227
|
|
|
223
228
|
/* 2026-05-11 Block drag handles (Notion-style ?? on left edge of blocks).
|
|
224
229
|
Activated via config.blockDragHandles = true. */
|
|
@@ -273,14 +278,20 @@ rte-codebox {
|
|
|
273
278
|
border-radius: 0px;
|
|
274
279
|
}
|
|
275
280
|
|
|
276
|
-
.richtexteditor.rte-modern {
|
|
277
|
-
/* Token-driven so the border themes correctly (dark mode -> #334155);
|
|
278
|
-
previously hardcoded #d5d5d5 stayed light-gray on the dark surface. */
|
|
279
|
-
border: 1px solid var(--rte-border, #d5d5d5);
|
|
280
|
-
border-radius: 10px;
|
|
281
|
-
overflow:
|
|
282
|
-
|
|
283
|
-
|
|
281
|
+
.richtexteditor.rte-modern {
|
|
282
|
+
/* Token-driven so the border themes correctly (dark mode -> #334155);
|
|
283
|
+
previously hardcoded #d5d5d5 stayed light-gray on the dark surface. */
|
|
284
|
+
border: 1px solid var(--rte-border, #d5d5d5);
|
|
285
|
+
border-radius: 10px;
|
|
286
|
+
/* Deliberately NOT overflow:hidden. Toolbar dropdown panels
|
|
287
|
+
(rte-dropdown-panel) are absolutely positioned children of this element,
|
|
288
|
+
so clipping here cut off any panel anchored near the right edge: Line
|
|
289
|
+
Height rendered only the "1" of "100%", Paragraphs and Document Outline
|
|
290
|
+
lost 91px. Corner rounding does not depend on this clip - the toolbar and
|
|
291
|
+
status bar round their own corners (see the rule below). */
|
|
292
|
+
overflow: visible;
|
|
293
|
+
background-clip: padding-box;
|
|
294
|
+
}
|
|
284
295
|
|
|
285
296
|
/* Round the toolbar's top corners and the status bar's bottom corners to follow
|
|
286
297
|
the editor's rounded border (inner radius = outer 10px - 1px border). Without
|
|
@@ -402,9 +413,9 @@ rte-resizecorner {
|
|
|
402
413
|
}
|
|
403
414
|
|
|
404
415
|
|
|
405
|
-
/* Compact selection float toolbar - sized like Google Docs/Notion (~31px tall).
|
|
406
|
-
Was: 5px padding + 30px buttons = 45px tall; keep the floating glyphs
|
|
407
|
-
smaller than the main toolbar so selection actions do not feel oversized. */
|
|
416
|
+
/* Compact selection float toolbar - sized like Google Docs/Notion (~31px tall).
|
|
417
|
+
Was: 5px padding + 30px buttons = 45px tall; keep the floating glyphs
|
|
418
|
+
smaller than the main toolbar so selection actions do not feel oversized. */
|
|
408
419
|
rte-control-toolbar {
|
|
409
420
|
display: inline-flex;
|
|
410
421
|
align-items: center;
|
|
@@ -419,7 +430,7 @@ rte-control-toolbar {
|
|
|
419
430
|
animation: rteFloatToolbarIn 130ms ease-out;
|
|
420
431
|
}
|
|
421
432
|
|
|
422
|
-
/* The generic rte-toolbar-group adds 2px padding �� remove it here so the
|
|
433
|
+
/* The generic rte-toolbar-group adds 2px padding �� remove it here so the
|
|
423
434
|
buttons fill the bar (smaller chrome, larger-feeling icons). */
|
|
424
435
|
.rte-modern rte-control-toolbar rte-toolbar-group {
|
|
425
436
|
padding: 0;
|
|
@@ -432,47 +443,47 @@ rte-control-toolbar {
|
|
|
432
443
|
box-shadow: 0 22px 54px rgba(15,23,42,.2), 0 6px 18px rgba(37,99,235,.1), inset 0 1px 0 rgba(255,255,255,.95);
|
|
433
444
|
}
|
|
434
445
|
|
|
435
|
-
.rte-modern rte-control-toolbar rte-toolbar-button, .rte-modern rte-control-toolbar rte-toolbar-splitbutton, .rte-modern rte-control-toolbar rte-toolbar-dropdown {
|
|
436
|
-
margin: 0;
|
|
437
|
-
border-radius: 6px;
|
|
438
|
-
width: 26px;
|
|
439
|
-
height: 25px;
|
|
440
|
-
padding: 0;
|
|
441
|
-
color: #334155;
|
|
442
|
-
transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
|
|
443
|
-
}
|
|
446
|
+
.rte-modern rte-control-toolbar rte-toolbar-button, .rte-modern rte-control-toolbar rte-toolbar-splitbutton, .rte-modern rte-control-toolbar rte-toolbar-dropdown {
|
|
447
|
+
margin: 0;
|
|
448
|
+
border-radius: 6px;
|
|
449
|
+
width: 26px;
|
|
450
|
+
height: 25px;
|
|
451
|
+
padding: 0;
|
|
452
|
+
color: #334155;
|
|
453
|
+
transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
|
|
454
|
+
}
|
|
444
455
|
|
|
445
456
|
.rte-modern rte-control-toolbar rte-toolbar-button svg,
|
|
446
|
-
.rte-modern rte-control-toolbar rte-toolbar-splitbutton svg,
|
|
447
|
-
.rte-modern rte-control-toolbar rte-toolbar-dropdown svg,
|
|
448
|
-
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton svg {
|
|
449
|
-
width: 16px !important;
|
|
450
|
-
height: 16px !important;
|
|
451
|
-
}
|
|
457
|
+
.rte-modern rte-control-toolbar rte-toolbar-splitbutton svg,
|
|
458
|
+
.rte-modern rte-control-toolbar rte-toolbar-dropdown svg,
|
|
459
|
+
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton svg {
|
|
460
|
+
width: 16px !important;
|
|
461
|
+
height: 16px !important;
|
|
462
|
+
}
|
|
452
463
|
|
|
453
464
|
/* The global rte-line-spliter rule carries `margin: 10px auto !important`,
|
|
454
|
-
which inflates the float toolbar's row height �� neutralize it here. */
|
|
455
|
-
.rte-modern rte-control-toolbar rte-line-spliter {
|
|
456
|
-
margin: 0 2px !important;
|
|
457
|
-
height: 14px;
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton {
|
|
461
|
-
margin: 0;
|
|
462
|
-
border-radius: 6px;
|
|
463
|
-
height: 25px;
|
|
464
|
-
width: 35px;
|
|
465
|
-
padding-right: 10px;
|
|
466
|
-
background-position: 23px 7px;
|
|
467
|
-
background-size: 10px 10px;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
.rte-modern rte-control-toolbar rte-line-break {
|
|
471
|
-
width: 1px;
|
|
472
|
-
height: 14px;
|
|
473
|
-
margin: 0 3px;
|
|
474
|
-
background: rgba(148,163,184,.35);
|
|
475
|
-
}
|
|
465
|
+
which inflates the float toolbar's row height �� neutralize it here. */
|
|
466
|
+
.rte-modern rte-control-toolbar rte-line-spliter {
|
|
467
|
+
margin: 0 2px !important;
|
|
468
|
+
height: 14px;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton {
|
|
472
|
+
margin: 0;
|
|
473
|
+
border-radius: 6px;
|
|
474
|
+
height: 25px;
|
|
475
|
+
width: 35px;
|
|
476
|
+
padding-right: 10px;
|
|
477
|
+
background-position: 23px 7px;
|
|
478
|
+
background-size: 10px 10px;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
.rte-modern rte-control-toolbar rte-line-break {
|
|
482
|
+
width: 1px;
|
|
483
|
+
height: 14px;
|
|
484
|
+
margin: 0 3px;
|
|
485
|
+
background: rgba(148,163,184,.35);
|
|
486
|
+
}
|
|
476
487
|
|
|
477
488
|
.rte-modern rte-control-toolbar rte-toolbar-button:hover,
|
|
478
489
|
.rte-modern rte-control-toolbar rte-toolbar-splitbutton:hover,
|
|
@@ -493,8 +504,8 @@ rte-control-toolbar {
|
|
|
493
504
|
box-shadow: inset 0 0 0 1px rgba(37,99,235,.22);
|
|
494
505
|
}
|
|
495
506
|
|
|
496
|
-
rte-control-toolbar .rte-link-url-preview {
|
|
497
|
-
min-height: 28px;
|
|
507
|
+
rte-control-toolbar .rte-link-url-preview {
|
|
508
|
+
min-height: 28px;
|
|
498
509
|
border-radius: 999px;
|
|
499
510
|
background: #f1f7ff;
|
|
500
511
|
border: 1px solid rgba(29,103,186,.16);
|
|
@@ -706,26 +717,26 @@ rte-dropdown-menuitem rte-toolbar-splitbutton-dropdown {
|
|
|
706
717
|
padding: 1px;
|
|
707
718
|
}
|
|
708
719
|
|
|
709
|
-
rte-toolbar-splitbutton-direct {
|
|
710
|
-
display: inline-flex;
|
|
711
|
-
align-content: center;
|
|
712
|
-
align-items: center;
|
|
713
|
-
justify-content: center;
|
|
714
|
-
width: 24px;
|
|
715
|
-
height: 100%;
|
|
716
|
-
min-height: 18px;
|
|
717
|
-
}
|
|
718
|
-
|
|
719
|
-
rte-toolbar-splitbutton-dropdown {
|
|
720
|
-
border-left: solid 1px transparent;
|
|
721
|
-
width: 14px;
|
|
722
|
-
height: 100%;
|
|
723
|
-
min-height: 18px;
|
|
724
|
-
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtYW5nbGUtZG93biBmYS13LTEwIj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xNDMgMzUyLjNMNyAyMTYuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0xMzYgMTM2Yy05LjIgOS40LTI0LjQgOS40LTMzLjggMHoiIGNsYXNzPSIiPjwvcGF0aD48L3N2Zz4=');
|
|
725
|
-
background-position: 1px center;
|
|
726
|
-
background-repeat: no-repeat;
|
|
727
|
-
background-size: 12px 12px;
|
|
728
|
-
}
|
|
720
|
+
rte-toolbar-splitbutton-direct {
|
|
721
|
+
display: inline-flex;
|
|
722
|
+
align-content: center;
|
|
723
|
+
align-items: center;
|
|
724
|
+
justify-content: center;
|
|
725
|
+
width: 24px;
|
|
726
|
+
height: 100%;
|
|
727
|
+
min-height: 18px;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
rte-toolbar-splitbutton-dropdown {
|
|
731
|
+
border-left: solid 1px transparent;
|
|
732
|
+
width: 14px;
|
|
733
|
+
height: 100%;
|
|
734
|
+
min-height: 18px;
|
|
735
|
+
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgcm9sZT0iaW1nIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIiBjbGFzcz0ic3ZnLWlubGluZS0tZmEgZmEtYW5nbGUtZG93biBmYS13LTEwIj48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGQ9Ik0xNDMgMzUyLjNMNyAyMTYuM2MtOS40LTkuNC05LjQtMjQuNiAwLTMzLjlsMjIuNi0yMi42YzkuNC05LjQgMjQuNi05LjQgMzMuOSAwbDk2LjQgOTYuNCA5Ni40LTk2LjRjOS40LTkuNCAyNC42LTkuNCAzMy45IDBsMjIuNiAyMi42YzkuNCA5LjQgOS40IDI0LjYgMCAzMy45bC0xMzYgMTM2Yy05LjIgOS40LTI0LjQgOS40LTMzLjggMHoiIGNsYXNzPSIiPjwvcGF0aD48L3N2Zz4=');
|
|
736
|
+
background-position: 1px center;
|
|
737
|
+
background-repeat: no-repeat;
|
|
738
|
+
background-size: 12px 12px;
|
|
739
|
+
}
|
|
729
740
|
|
|
730
741
|
rte-color-button-mask {
|
|
731
742
|
position: absolute;
|
|
@@ -773,7 +784,7 @@ rte-color-button-mask {
|
|
|
773
784
|
}
|
|
774
785
|
|
|
775
786
|
|
|
776
|
-
/* Rounded interactive states for the desktop toolbar �� matches the selection
|
|
787
|
+
/* Rounded interactive states for the desktop toolbar �� matches the selection
|
|
777
788
|
float toolbar (7px) and modern editors (Google Docs/Notion). Previously the
|
|
778
789
|
main toolbar's hover/active/focus highlights were hard squares. */
|
|
779
790
|
.rte-modern rte-toolbar-button,
|
|
@@ -831,7 +842,7 @@ rte-color-button-mask {
|
|
|
831
842
|
height: 36px;
|
|
832
843
|
margin-bottom: -4px;
|
|
833
844
|
background-position: 23px 8px;
|
|
834
|
-
/* Open dropdown reads as a tab connected to its panel �� square the
|
|
845
|
+
/* Open dropdown reads as a tab connected to its panel �� square the
|
|
835
846
|
bottom corners so the rounded button doesn't detach from the panel. */
|
|
836
847
|
border-bottom-left-radius: 0;
|
|
837
848
|
border-bottom-right-radius: 0;
|
|
@@ -1565,6 +1576,14 @@ rte-dropdown-panel.rte-panel-backcolor rte-dialog-item-color[rte-tooltip]:hover
|
|
|
1565
1576
|
border-color: rgba(0,0,0,.08) !important;
|
|
1566
1577
|
}
|
|
1567
1578
|
|
|
1579
|
+
rte-dropdown-panel.rte-panel-forecolor rte-dialog-item-color[role="menuitem"]:focus-visible,
|
|
1580
|
+
rte-dropdown-panel.rte-panel-backcolor rte-dialog-item-color[role="menuitem"]:focus-visible {
|
|
1581
|
+
outline: 2px solid #1a73e8 !important;
|
|
1582
|
+
outline-offset: 2px !important;
|
|
1583
|
+
transform: scale(1.15) !important;
|
|
1584
|
+
position: relative !important;
|
|
1585
|
+
z-index: 2 !important;
|
|
1586
|
+
}
|
|
1568
1587
|
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-auto,
|
|
1569
1588
|
rte-dropdown-panel.rte-panel-backcolor rte-dialog-line-auto,
|
|
1570
1589
|
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-more,
|
|
@@ -1586,6 +1605,14 @@ rte-dropdown-panel.rte-panel-backcolor rte-dialog-line-more:hover {
|
|
|
1586
1605
|
border: 0 !important;
|
|
1587
1606
|
}
|
|
1588
1607
|
|
|
1608
|
+
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-auto:focus-visible,
|
|
1609
|
+
rte-dropdown-panel.rte-panel-backcolor rte-dialog-line-auto:focus-visible,
|
|
1610
|
+
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-more:focus-visible,
|
|
1611
|
+
rte-dropdown-panel.rte-panel-backcolor rte-dialog-line-more:focus-visible {
|
|
1612
|
+
outline: 2px solid #1a73e8 !important;
|
|
1613
|
+
outline-offset: 1px !important;
|
|
1614
|
+
background: #f1f5f9 !important;
|
|
1615
|
+
}
|
|
1589
1616
|
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-auto rte-dialog-item-label,
|
|
1590
1617
|
rte-dropdown-panel.rte-panel-backcolor rte-dialog-line-auto rte-dialog-item-label,
|
|
1591
1618
|
rte-dropdown-panel.rte-panel-forecolor rte-dialog-line-more rte-dialog-item-label,
|
|
@@ -1965,6 +1992,21 @@ rte-menuspliter {
|
|
|
1965
1992
|
margin: 3px 0px 3px 28px;
|
|
1966
1993
|
}
|
|
1967
1994
|
|
|
1995
|
+
/* The panel is shrink-to-fit, so its width is decided by its widest preview —
|
|
1996
|
+
"Headline 1" at 32px — and measured 187px of text inside 187px of space:
|
|
1997
|
+
ZERO tolerance. Whenever the font used at layout time is a hair narrower than
|
|
1998
|
+
the one finally painted (a fallback still in place during a webfont swap, a
|
|
1999
|
+
different platform's metrics), the label overflows and the last character is
|
|
2000
|
+
cut off. Reported from the wild with "Headline 1" clipped.
|
|
2001
|
+
|
|
2002
|
+
A min-width gives the panel slack that does not depend on font metrics
|
|
2003
|
+
matching to the pixel; the previews are nowrap, so slack is the only thing
|
|
2004
|
+
that can absorb the variance. */
|
|
2005
|
+
.rte-dropdown-panel.rte_command_paragraphs,
|
|
2006
|
+
rte-dropdown-panel.rte_command_paragraphs {
|
|
2007
|
+
min-width: 292px;
|
|
2008
|
+
}
|
|
2009
|
+
|
|
1968
2010
|
.rte_command_paragraphs rte-toolbar-dropdown-item div {
|
|
1969
2011
|
font-size: 15px;
|
|
1970
2012
|
margin: 0px;
|
|
@@ -2063,86 +2105,86 @@ rte-floatpanel {
|
|
|
2063
2105
|
opacity: 1;
|
|
2064
2106
|
}
|
|
2065
2107
|
|
|
2066
|
-
rte-floatpanel rte-toolbar-button:hover {
|
|
2067
|
-
background: #eef5ff;
|
|
2068
|
-
fill: #1559d6;
|
|
2069
|
-
color: #1559d6;
|
|
2070
|
-
box-shadow: inset 0 0 0 1px rgba(37,99,235,.14);
|
|
2071
|
-
transform: translateY(-1px);
|
|
2072
|
-
}
|
|
2073
|
-
|
|
2074
|
-
/* 2026-07-03 paragraph rail icon polish */
|
|
2075
|
-
rte-floatpanel.rte-floatpanel-paragraphop {
|
|
2076
|
-
width: 28px !important;
|
|
2077
|
-
padding: 9px 3px 4px !important;
|
|
2078
|
-
border-color: rgba(148,163,184,.34) !important;
|
|
2079
|
-
border-radius: 11px !important;
|
|
2080
|
-
background: linear-gradient(180deg, rgba(255,255,255,.94) 0%, rgba(248,250,252,.91) 100%) !important;
|
|
2081
|
-
box-shadow: 0 8px 20px rgba(15,23,42,.1), inset 0 1px 0 rgba(255,255,255,.9) !important;
|
|
2082
|
-
opacity: .86 !important;
|
|
2083
|
-
}
|
|
2084
|
-
|
|
2085
|
-
rte-floatpanel.rte-floatpanel-paragraphop::before {
|
|
2086
|
-
top: 4px;
|
|
2087
|
-
width: 10px;
|
|
2088
|
-
height: 3px;
|
|
2089
|
-
background: radial-gradient(circle, #94a3b8 .9px, transparent 1.3px) 0 0 / 4px 3px;
|
|
2090
|
-
opacity: .62;
|
|
2091
|
-
}
|
|
2092
|
-
|
|
2093
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-group {
|
|
2094
|
-
padding: 0;
|
|
2095
|
-
}
|
|
2096
|
-
|
|
2097
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button {
|
|
2098
|
-
box-sizing: border-box;
|
|
2099
|
-
display: flex;
|
|
2100
|
-
align-items: center;
|
|
2101
|
-
justify-content: center;
|
|
2102
|
-
width: 20px !important;
|
|
2103
|
-
height: 20px !important;
|
|
2104
|
-
min-width: 20px !important;
|
|
2105
|
-
min-height: 20px !important;
|
|
2106
|
-
margin: 1px 0;
|
|
2107
|
-
border-radius: 6px;
|
|
2108
|
-
color: #6b7280;
|
|
2109
|
-
opacity: .8;
|
|
2110
|
-
}
|
|
2111
|
-
|
|
2112
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button:hover {
|
|
2113
|
-
background: rgba(37,99,235,.08);
|
|
2114
|
-
color: #1559d6;
|
|
2115
|
-
box-shadow: inset 0 0 0 1px rgba(37,99,235,.1);
|
|
2116
|
-
opacity: 1;
|
|
2117
|
-
transform: translateY(-.5px);
|
|
2118
|
-
}
|
|
2119
|
-
|
|
2120
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg {
|
|
2121
|
-
display: block !important;
|
|
2122
|
-
width: 13px !important;
|
|
2123
|
-
height: 13px !important;
|
|
2124
|
-
margin: 0 !important;
|
|
2125
|
-
color: currentColor;
|
|
2126
|
-
pointer-events: none;
|
|
2127
|
-
}
|
|
2128
|
-
|
|
2129
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg,
|
|
2130
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg * {
|
|
2131
|
-
stroke-linecap: round;
|
|
2132
|
-
stroke-linejoin: round;
|
|
2133
|
-
stroke-width: 1.35 !important;
|
|
2134
|
-
}
|
|
2135
|
-
|
|
2136
|
-
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button.rte_command_pmore svg {
|
|
2137
|
-
width: 12px !important;
|
|
2138
|
-
height: 12px !important;
|
|
2139
|
-
opacity: .72;
|
|
2140
|
-
}
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
.rte-current-item {
|
|
2144
|
-
background-color: #eef2f7;
|
|
2145
|
-
}
|
|
2108
|
+
rte-floatpanel rte-toolbar-button:hover {
|
|
2109
|
+
background: #eef5ff;
|
|
2110
|
+
fill: #1559d6;
|
|
2111
|
+
color: #1559d6;
|
|
2112
|
+
box-shadow: inset 0 0 0 1px rgba(37,99,235,.14);
|
|
2113
|
+
transform: translateY(-1px);
|
|
2114
|
+
}
|
|
2115
|
+
|
|
2116
|
+
/* 2026-07-03 paragraph rail icon polish */
|
|
2117
|
+
rte-floatpanel.rte-floatpanel-paragraphop {
|
|
2118
|
+
width: 28px !important;
|
|
2119
|
+
padding: 9px 3px 4px !important;
|
|
2120
|
+
border-color: rgba(148,163,184,.34) !important;
|
|
2121
|
+
border-radius: 11px !important;
|
|
2122
|
+
background: linear-gradient(180deg, rgba(255,255,255,.94) 0%, rgba(248,250,252,.91) 100%) !important;
|
|
2123
|
+
box-shadow: 0 8px 20px rgba(15,23,42,.1), inset 0 1px 0 rgba(255,255,255,.9) !important;
|
|
2124
|
+
opacity: .86 !important;
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
rte-floatpanel.rte-floatpanel-paragraphop::before {
|
|
2128
|
+
top: 4px;
|
|
2129
|
+
width: 10px;
|
|
2130
|
+
height: 3px;
|
|
2131
|
+
background: radial-gradient(circle, #94a3b8 .9px, transparent 1.3px) 0 0 / 4px 3px;
|
|
2132
|
+
opacity: .62;
|
|
2133
|
+
}
|
|
2134
|
+
|
|
2135
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-group {
|
|
2136
|
+
padding: 0;
|
|
2137
|
+
}
|
|
2138
|
+
|
|
2139
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button {
|
|
2140
|
+
box-sizing: border-box;
|
|
2141
|
+
display: flex;
|
|
2142
|
+
align-items: center;
|
|
2143
|
+
justify-content: center;
|
|
2144
|
+
width: 20px !important;
|
|
2145
|
+
height: 20px !important;
|
|
2146
|
+
min-width: 20px !important;
|
|
2147
|
+
min-height: 20px !important;
|
|
2148
|
+
margin: 1px 0;
|
|
2149
|
+
border-radius: 6px;
|
|
2150
|
+
color: #6b7280;
|
|
2151
|
+
opacity: .8;
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button:hover {
|
|
2155
|
+
background: rgba(37,99,235,.08);
|
|
2156
|
+
color: #1559d6;
|
|
2157
|
+
box-shadow: inset 0 0 0 1px rgba(37,99,235,.1);
|
|
2158
|
+
opacity: 1;
|
|
2159
|
+
transform: translateY(-.5px);
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg {
|
|
2163
|
+
display: block !important;
|
|
2164
|
+
width: 13px !important;
|
|
2165
|
+
height: 13px !important;
|
|
2166
|
+
margin: 0 !important;
|
|
2167
|
+
color: currentColor;
|
|
2168
|
+
pointer-events: none;
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg,
|
|
2172
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button svg * {
|
|
2173
|
+
stroke-linecap: round;
|
|
2174
|
+
stroke-linejoin: round;
|
|
2175
|
+
stroke-width: 1.35 !important;
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
rte-floatpanel.rte-floatpanel-paragraphop rte-toolbar-button.rte_command_pmore svg {
|
|
2179
|
+
width: 12px !important;
|
|
2180
|
+
height: 12px !important;
|
|
2181
|
+
opacity: .72;
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
|
|
2185
|
+
.rte-current-item {
|
|
2186
|
+
background-color: #eef2f7;
|
|
2187
|
+
}
|
|
2146
2188
|
|
|
2147
2189
|
/* Optional development toggles for hiding editor chrome can live here. */
|
|
2148
2190
|
|
|
@@ -2538,6 +2580,25 @@ rte-content::-webkit-scrollbar-thumb:hover {
|
|
|
2538
2580
|
flex-wrap: wrap;
|
|
2539
2581
|
}
|
|
2540
2582
|
|
|
2583
|
+
/* The toolbar is a flex row whose children are these two groups. Without a
|
|
2584
|
+
display on the groups themselves the buttons stack vertically and the row
|
|
2585
|
+
collapses to the width of its widest label -- which is exactly what shipped
|
|
2586
|
+
when these rules went missing. */
|
|
2587
|
+
.rte-gallery-browser-toolbar-group {
|
|
2588
|
+
display: flex;
|
|
2589
|
+
align-items: center;
|
|
2590
|
+
gap: 8px;
|
|
2591
|
+
min-width: 0;
|
|
2592
|
+
flex: 1 1 auto;
|
|
2593
|
+
flex-wrap: wrap;
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
.rte-gallery-browser-toolbar-group-right {
|
|
2597
|
+
flex: 0 1 auto;
|
|
2598
|
+
justify-content: flex-end;
|
|
2599
|
+
margin-left: auto;
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2541
2602
|
.rte-gallery-browser-button {
|
|
2542
2603
|
border: 1px solid rgba(116, 135, 162, 0.28);
|
|
2543
2604
|
border-radius: 999px;
|
|
@@ -2672,6 +2733,44 @@ rte-content::-webkit-scrollbar-thumb:hover {
|
|
|
2672
2733
|
overflow: hidden;
|
|
2673
2734
|
}
|
|
2674
2735
|
|
|
2736
|
+
/* Folders sit in their own container above the image listbox, so the two are
|
|
2737
|
+
separated by a rule rather than running together in one grid. */
|
|
2738
|
+
.rte-gallery-browser-grid-folders {
|
|
2739
|
+
margin-bottom: 14px;
|
|
2740
|
+
padding-bottom: 14px;
|
|
2741
|
+
border-bottom: 1px solid rgba(116, 135, 162, 0.16);
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2744
|
+
/* Folder tiles have no image to show, so the icon is drawn in CSS. The plugin
|
|
2745
|
+
emits an empty div for it -- with no rule here the tile renders blank. */
|
|
2746
|
+
.rte-gallery-browser-thumbnail-folder {
|
|
2747
|
+
background: linear-gradient(180deg, #fffaea 0%, #fdeec4 100%);
|
|
2748
|
+
border-color: rgba(197, 158, 61, 0.32);
|
|
2749
|
+
}
|
|
2750
|
+
|
|
2751
|
+
.rte-gallery-browser-folder-icon {
|
|
2752
|
+
position: relative;
|
|
2753
|
+
width: 60px;
|
|
2754
|
+
height: 42px;
|
|
2755
|
+
border: 1px solid rgba(178, 138, 45, 0.7);
|
|
2756
|
+
border-radius: 7px;
|
|
2757
|
+
background: linear-gradient(180deg, #ffe6a1 0%, #f3c957 100%);
|
|
2758
|
+
box-shadow: 0 8px 16px rgba(140, 100, 20, 0.18);
|
|
2759
|
+
}
|
|
2760
|
+
|
|
2761
|
+
.rte-gallery-browser-folder-icon:before {
|
|
2762
|
+
content: "";
|
|
2763
|
+
position: absolute;
|
|
2764
|
+
left: 7px;
|
|
2765
|
+
top: -9px;
|
|
2766
|
+
width: 25px;
|
|
2767
|
+
height: 13px;
|
|
2768
|
+
border: 1px solid rgba(178, 138, 45, 0.7);
|
|
2769
|
+
border-bottom: 0;
|
|
2770
|
+
border-radius: 6px 6px 0 0;
|
|
2771
|
+
background: linear-gradient(180deg, #fff1c4 0%, #f8d97c 100%);
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2675
2774
|
.rte-gallery-browser-thumbnail-image {
|
|
2676
2775
|
max-width: 100%;
|
|
2677
2776
|
max-height: 100%;
|
|
@@ -2887,13 +2986,13 @@ rte-dropdown-panel.rte-panel-insertdocument .rte-dialog-button.rte-button-type-c
|
|
|
2887
2986
|
}
|
|
2888
2987
|
|
|
2889
2988
|
/* ===========================================================================
|
|
2890
|
-
* 2026-05-08 dialog polish layer �� applies to every editor dialog (insert
|
|
2989
|
+
* 2026-05-08 dialog polish layer �� applies to every editor dialog (insert
|
|
2891
2990
|
* video / link / image / code / table / find / template / gallery / etc.)
|
|
2892
2991
|
*
|
|
2893
2992
|
* Until this layer landed, every dialog inherited `min-width: 300px` from
|
|
2894
2993
|
* the base `rte-dialog-inner` rule above. That worked for two-button
|
|
2895
2994
|
* confirmations but felt cramped for URL fields, code editors, and any
|
|
2896
|
-
* dialog with a textarea �� the input was about 270 px wide once you
|
|
2995
|
+
* dialog with a textarea �� the input was about 270 px wide once you
|
|
2897
2996
|
* subtracted the 12 px margin on each side.
|
|
2898
2997
|
*
|
|
2899
2998
|
* The rules below set sensible per-dialog defaults, modernise the input
|
|
@@ -2970,7 +3069,7 @@ rte-dialog-outer .rte-dialog-line-input textarea:focus {
|
|
|
2970
3069
|
box-shadow: 0 0 0 3px rgba(21, 89, 214, 0.16);
|
|
2971
3070
|
}
|
|
2972
3071
|
|
|
2973
|
-
/* The label that floats above the input (Url / Width / etc.) �� modern
|
|
3072
|
+
/* The label that floats above the input (Url / Width / etc.) �� modern
|
|
2974
3073
|
feel: smaller, less shouty colour. */
|
|
2975
3074
|
rte-dialog-outer .rte-dialog-line-input rte-dialog-input-label {
|
|
2976
3075
|
font-size: 11px;
|
|
@@ -3002,7 +3101,7 @@ rte-dialog-outer rte-dialog-button {
|
|
|
3002
3101
|
|
|
3003
3102
|
/* === Per-dialog width hints === */
|
|
3004
3103
|
|
|
3005
|
-
/* Insert video: just a URL textarea �� bigger so users can paste long
|
|
3104
|
+
/* Insert video: just a URL textarea �� bigger so users can paste long
|
|
3006
3105
|
YouTube / Vimeo links without horizontal scroll. */
|
|
3007
3106
|
rte-dialog-outer.rte-dialog-insertvideo rte-dialog-inner {
|
|
3008
3107
|
min-width: 520px;
|
|
@@ -3015,7 +3114,7 @@ rte-dialog-outer .rte-dialog-line-url textarea {
|
|
|
3015
3114
|
word-break: break-all;
|
|
3016
3115
|
}
|
|
3017
3116
|
|
|
3018
|
-
/* Insert link / image-by-url: same family �� bigger than the default, but
|
|
3117
|
+
/* Insert link / image-by-url: same family �� bigger than the default, but
|
|
3019
3118
|
not as wide as the code editor. */
|
|
3020
3119
|
rte-dialog-outer.rte-dialog-insertlink rte-dialog-inner,
|
|
3021
3120
|
rte-dialog-outer.rte-panel-insertimage-byurl rte-dialog-inner,
|
|
@@ -3029,13 +3128,13 @@ rte-dialog-outer.rte-dialog-insertcode rte-dialog-inner {
|
|
|
3029
3128
|
max-width: min(880px, calc(100vw - 32px));
|
|
3030
3129
|
}
|
|
3031
3130
|
|
|
3032
|
-
/* Insert table / find / general �� keep a consistent 460 px floor. */
|
|
3131
|
+
/* Insert table / find / general �� keep a consistent 460 px floor. */
|
|
3033
3132
|
rte-dialog-outer.rte-panel-find rte-dialog-inner,
|
|
3034
3133
|
rte-dialog-outer.rte-panel-general rte-dialog-inner {
|
|
3035
3134
|
min-width: 460px;
|
|
3036
3135
|
}
|
|
3037
3136
|
|
|
3038
|
-
/* Insert gallery / template / paste cleanup �� comfortable wide layouts
|
|
3137
|
+
/* Insert gallery / template / paste cleanup �� comfortable wide layouts
|
|
3039
3138
|
for picking from a grid. */
|
|
3040
3139
|
rte-dialog-outer.rte-dialog-insertgallery rte-dialog-inner,
|
|
3041
3140
|
rte-dialog-outer.rte-dialog-inserttemplate rte-dialog-inner,
|
|
@@ -3045,7 +3144,7 @@ rte-dialog-outer.rte-dialog-pasteword rte-dialog-inner {
|
|
|
3045
3144
|
max-width: min(960px, calc(100vw - 32px));
|
|
3046
3145
|
}
|
|
3047
3146
|
|
|
3048
|
-
/* Image editor / HTML2PDF �� full creative surface. */
|
|
3147
|
+
/* Image editor / HTML2PDF �� full creative surface. */
|
|
3049
3148
|
rte-dialog-outer.rte-dialog-imageeditor rte-dialog-inner,
|
|
3050
3149
|
rte-dialog-outer.rte-dialog-html2pdf rte-dialog-inner {
|
|
3051
3150
|
min-width: 760px;
|
|
@@ -3561,7 +3660,7 @@ rte-toolbar-dropdown-item:focus-visible {
|
|
|
3561
3660
|
box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.12);
|
|
3562
3661
|
}
|
|
3563
3662
|
|
|
3564
|
-
/* Dark-mode hover for toolbar dropdown items �� the light-blue gradient above is
|
|
3663
|
+
/* Dark-mode hover for toolbar dropdown items �� the light-blue gradient above is
|
|
3565
3664
|
light-only; without this it renders washed-out (light gradient + dark-blue
|
|
3566
3665
|
text) over the dark panel. */
|
|
3567
3666
|
.rte-dark rte-toolbar-dropdown-item:hover,
|
|
@@ -4429,7 +4528,7 @@ rte-dropdown-panel .rte-dialog-button:active {
|
|
|
4429
4528
|
}
|
|
4430
4529
|
|
|
4431
4530
|
/* ============================================================ */
|
|
4432
|
-
/* Dark mode (UI chrome only �� the document canvas stays white, */
|
|
4531
|
+
/* Dark mode (UI chrome only �� the document canvas stays white, */
|
|
4433
4532
|
/* like Google Docs' dark UI, so authored content isn't harmed).*/
|
|
4434
4533
|
/* Explicit dark mode by default; add rte-auto-dark to */
|
|
4435
4534
|
/* follow prefers-color-scheme; force on with rte-dark. */
|
|
@@ -4502,7 +4601,7 @@ rte-dropdown-panel .rte-dialog-button:active {
|
|
|
4502
4601
|
}
|
|
4503
4602
|
|
|
4504
4603
|
/* ============================================================ */
|
|
4505
|
-
/* Dark mode �� dialog & dropdown panel interiors. */
|
|
4604
|
+
/* Dark mode �� dialog & dropdown panel interiors. */
|
|
4506
4605
|
/* The dialog surface itself is token-driven (var(--rte- */
|
|
4507
4606
|
/* surface-raised)); these rules cover the text/inputs/borders */
|
|
4508
4607
|
/* that don't inherit, so dialogs aren't black-text-on-dark. */
|
|
@@ -4597,7 +4696,7 @@ rte-dropdown-panel .rte-dialog-button:active {
|
|
|
4597
4696
|
}
|
|
4598
4697
|
}
|
|
4599
4698
|
|
|
4600
|
-
/* Dark mode �� floating selection toolbar (rte-control-toolbar). Inside the
|
|
4699
|
+
/* Dark mode �� floating selection toolbar (rte-control-toolbar). Inside the
|
|
4601
4700
|
editor container, so both the explicit class and the media query reach it. */
|
|
4602
4701
|
.rte-dark rte-control-toolbar {
|
|
4603
4702
|
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
|
|
@@ -4617,10 +4716,10 @@ rte-dropdown-panel .rte-dialog-button:active {
|
|
|
4617
4716
|
}
|
|
4618
4717
|
.rte-dark rte-link-url-preview, .rte-dark rte-link-url-preview a { color: #60a5fa; }
|
|
4619
4718
|
|
|
4620
|
-
@media (prefers-color-scheme: dark) {
|
|
4621
|
-
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar {
|
|
4622
|
-
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
|
|
4623
|
-
border-color: #334155;
|
|
4719
|
+
@media (prefers-color-scheme: dark) {
|
|
4720
|
+
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar {
|
|
4721
|
+
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
|
|
4722
|
+
border-color: #334155;
|
|
4624
4723
|
}
|
|
4625
4724
|
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar rte-toolbar-button,
|
|
4626
4725
|
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar rte-toolbar-splitbutton,
|
|
@@ -4631,189 +4730,189 @@ rte-dropdown-panel .rte-dialog-button:active {
|
|
|
4631
4730
|
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar rte-toolbar-button:hover,
|
|
4632
4731
|
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar rte-toolbar-splitbutton:hover,
|
|
4633
4732
|
.richtexteditor.rte-auto-dark:not(.rte-light) rte-control-toolbar rte-toolbar-dropdown:hover {
|
|
4634
|
-
background: #334155;
|
|
4635
|
-
}
|
|
4636
|
-
}
|
|
4637
|
-
|
|
4638
|
-
/* 2026-07-02 toolbar icon polish.
|
|
4639
|
-
Keep this after the token-driven chrome rules so the modern toolbar retains
|
|
4640
|
-
its quiet selected state instead of inheriting the older solid accent fill. */
|
|
4641
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4642
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4643
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4644
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4645
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4646
|
-
box-sizing: border-box;
|
|
4647
|
-
display: inline-flex;
|
|
4648
|
-
align-items: center;
|
|
4649
|
-
justify-content: center;
|
|
4650
|
-
color: var(--rte-icon-color, #5f6368);
|
|
4651
|
-
background-clip: padding-box;
|
|
4652
|
-
transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
|
|
4653
|
-
}
|
|
4654
|
-
|
|
4655
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button svg,
|
|
4656
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton svg,
|
|
4657
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton svg {
|
|
4658
|
-
display: block !important;
|
|
4659
|
-
flex: 0 0 auto;
|
|
4660
|
-
width:
|
|
4661
|
-
height:
|
|
4662
|
-
margin: 0 !important;
|
|
4663
|
-
align-self: center !important;
|
|
4664
|
-
color: currentColor;
|
|
4665
|
-
pointer-events: none;
|
|
4666
|
-
}
|
|
4667
|
-
|
|
4668
|
-
.rte-modern rte-control-toolbar rte-toolbar-button svg,
|
|
4669
|
-
.rte-modern rte-control-toolbar rte-toolbar-splitbutton svg,
|
|
4670
|
-
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton svg,
|
|
4671
|
-
.rte-modern rte-dropdown-panel rte-toolbar-button svg {
|
|
4672
|
-
display: block !important;
|
|
4673
|
-
margin: 0 !important;
|
|
4674
|
-
align-self: center !important;
|
|
4675
|
-
color: currentColor;
|
|
4676
|
-
pointer-events: none;
|
|
4677
|
-
}
|
|
4678
|
-
|
|
4733
|
+
background: #334155;
|
|
4734
|
+
}
|
|
4735
|
+
}
|
|
4736
|
+
|
|
4737
|
+
/* 2026-07-02 toolbar icon polish.
|
|
4738
|
+
Keep this after the token-driven chrome rules so the modern toolbar retains
|
|
4739
|
+
its quiet selected state instead of inheriting the older solid accent fill. */
|
|
4740
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4741
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4742
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4743
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4744
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4745
|
+
box-sizing: border-box;
|
|
4746
|
+
display: inline-flex;
|
|
4747
|
+
align-items: center;
|
|
4748
|
+
justify-content: center;
|
|
4749
|
+
color: var(--rte-icon-color, #5f6368);
|
|
4750
|
+
background-clip: padding-box;
|
|
4751
|
+
transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
|
|
4752
|
+
}
|
|
4753
|
+
|
|
4754
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button svg,
|
|
4755
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton svg,
|
|
4756
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton svg {
|
|
4757
|
+
display: block !important;
|
|
4758
|
+
flex: 0 0 auto;
|
|
4759
|
+
width: 20px !important;
|
|
4760
|
+
height: 20px !important;
|
|
4761
|
+
margin: 0 !important;
|
|
4762
|
+
align-self: center !important;
|
|
4763
|
+
color: currentColor;
|
|
4764
|
+
pointer-events: none;
|
|
4765
|
+
}
|
|
4766
|
+
|
|
4767
|
+
.rte-modern rte-control-toolbar rte-toolbar-button svg,
|
|
4768
|
+
.rte-modern rte-control-toolbar rte-toolbar-splitbutton svg,
|
|
4769
|
+
.rte-modern rte-control-toolbar rte-toolbar-arrowbutton svg,
|
|
4770
|
+
.rte-modern rte-dropdown-panel rte-toolbar-button svg {
|
|
4771
|
+
display: block !important;
|
|
4772
|
+
margin: 0 !important;
|
|
4773
|
+
align-self: center !important;
|
|
4774
|
+
color: currentColor;
|
|
4775
|
+
pointer-events: none;
|
|
4776
|
+
}
|
|
4777
|
+
|
|
4679
4778
|
.rte-modern rte-dropdown-panel rte-toolbar-button svg {
|
|
4680
|
-
width:
|
|
4681
|
-
height:
|
|
4682
|
-
}
|
|
4683
|
-
|
|
4684
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4685
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4686
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4687
|
-
color: #1559d6;
|
|
4688
|
-
background-color: #f3f8ff;
|
|
4689
|
-
border-color: rgba(37,99,235,.14);
|
|
4690
|
-
}
|
|
4691
|
-
|
|
4692
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4693
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4694
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4695
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4696
|
-
color: #1559d6;
|
|
4697
|
-
fill: currentColor;
|
|
4698
|
-
background-color: #edf6ff;
|
|
4699
|
-
border-color: rgba(37,99,235,.22);
|
|
4700
|
-
box-shadow: inset 0 0 0 1px rgba(37,99,235,.12);
|
|
4701
|
-
}
|
|
4702
|
-
|
|
4703
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-disabled,
|
|
4704
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-disabled,
|
|
4705
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-disabled {
|
|
4706
|
-
color: #9aa0a6;
|
|
4707
|
-
opacity: .62;
|
|
4708
|
-
}
|
|
4709
|
-
|
|
4710
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-disabled:hover,
|
|
4711
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-disabled:hover,
|
|
4712
|
-
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-disabled:hover {
|
|
4713
|
-
color: #9aa0a6;
|
|
4714
|
-
background-color: transparent;
|
|
4715
|
-
border-color: transparent;
|
|
4716
|
-
box-shadow: none;
|
|
4717
|
-
}
|
|
4718
|
-
|
|
4719
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4720
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4721
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4722
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4723
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4724
|
-
color: var(--rte-icon-color, #cbd5e1);
|
|
4725
|
-
}
|
|
4726
|
-
|
|
4727
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4728
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4729
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4730
|
-
color: #e2e8f0;
|
|
4731
|
-
background-color: #334155;
|
|
4732
|
-
border-color: #475569;
|
|
4733
|
-
}
|
|
4734
|
-
|
|
4735
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4736
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4737
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4738
|
-
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4739
|
-
color: #bfdbfe;
|
|
4740
|
-
background-color: #1e3a5f;
|
|
4741
|
-
border-color: rgba(96,165,250,.46);
|
|
4742
|
-
box-shadow: inset 0 0 0 1px rgba(96,165,250,.24);
|
|
4743
|
-
}
|
|
4744
|
-
|
|
4745
|
-
@media (prefers-color-scheme: dark) {
|
|
4746
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4747
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4748
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4749
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4750
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4751
|
-
color: var(--rte-icon-color, #cbd5e1);
|
|
4752
|
-
}
|
|
4753
|
-
|
|
4754
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4755
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4756
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4757
|
-
color: #e2e8f0;
|
|
4758
|
-
background-color: #334155;
|
|
4759
|
-
border-color: #475569;
|
|
4760
|
-
}
|
|
4761
|
-
|
|
4762
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4763
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4764
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4765
|
-
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4766
|
-
color: #bfdbfe;
|
|
4767
|
-
background-color: #1e3a5f;
|
|
4768
|
-
border-color: rgba(96,165,250,.46);
|
|
4769
|
-
box-shadow: inset 0 0 0 1px rgba(96,165,250,.24);
|
|
4770
|
-
}
|
|
4771
|
-
}
|
|
4772
|
-
|
|
4773
|
-
/* 2026-07-03 dialog top-chrome guard.
|
|
4774
|
-
Dialogs must clear host sticky menus and also sit above editor dropdown
|
|
4775
|
-
panels, which use a higher default z-index than config.zIndexDialog. */
|
|
4776
|
-
rte-dialog-outer,
|
|
4777
|
-
rte-dialog-float,
|
|
4778
|
-
.rte-alt-editor-popup,
|
|
4779
|
-
.rte-find-replace-dialog,
|
|
4780
|
-
.rte-ai-context-menu,
|
|
4781
|
-
.rte-image-quickbar {
|
|
4782
|
-
--rte-dialog-effective-top-chrome: max(var(--rte-ai-sticky-top-offset, 0px), var(--rte-dialog-detected-top-chrome, 0px));
|
|
4783
|
-
}
|
|
4784
|
-
|
|
4785
|
-
rte-dialog-outer {
|
|
4786
|
-
top: max(0px, var(--rte-dialog-effective-top-chrome)) !important;
|
|
4787
|
-
box-sizing: border-box;
|
|
4788
|
-
padding: 12px;
|
|
4789
|
-
overflow: auto;
|
|
4790
|
-
overscroll-behavior: contain;
|
|
4791
|
-
z-index: 2147483646 !important;
|
|
4792
|
-
}
|
|
4793
|
-
|
|
4794
|
-
rte-dialog-outer rte-dialog-inner {
|
|
4795
|
-
max-height: min(88vh, 760px, calc(100vh - max(32px, calc(var(--rte-dialog-effective-top-chrome) + 32px)))) !important;
|
|
4796
|
-
}
|
|
4797
|
-
|
|
4798
|
-
rte-dialog-float {
|
|
4799
|
-
top: max(12px, calc(var(--rte-dialog-effective-top-chrome) + 12px));
|
|
4800
|
-
max-height: calc(100vh - max(32px, calc(var(--rte-dialog-effective-top-chrome) + 32px)));
|
|
4801
|
-
z-index: 2147483646 !important;
|
|
4802
|
-
}
|
|
4803
|
-
|
|
4804
|
-
rte-dialog-float rte-dialog-inner {
|
|
4805
|
-
max-height: inherit;
|
|
4806
|
-
overflow: auto;
|
|
4807
|
-
}
|
|
4808
|
-
|
|
4809
|
-
.rte-alt-editor-popup,
|
|
4810
|
-
.rte-find-replace-dialog,
|
|
4811
|
-
.rte-ai-context-menu {
|
|
4812
|
-
z-index: 2147483646 !important;
|
|
4813
|
-
}
|
|
4814
|
-
|
|
4815
|
-
.rte-find-replace-dialog {
|
|
4816
|
-
top: max(80px, calc(var(--rte-dialog-effective-top-chrome) + 12px)) !important;
|
|
4817
|
-
max-height: calc(100vh - max(104px, calc(var(--rte-dialog-effective-top-chrome) + 32px)));
|
|
4818
|
-
overflow: auto;
|
|
4779
|
+
width: 20px !important;
|
|
4780
|
+
height: 20px !important;
|
|
4819
4781
|
}
|
|
4782
|
+
|
|
4783
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4784
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4785
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4786
|
+
color: #1559d6;
|
|
4787
|
+
background-color: #f3f8ff;
|
|
4788
|
+
border-color: rgba(37,99,235,.14);
|
|
4789
|
+
}
|
|
4790
|
+
|
|
4791
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4792
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4793
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4794
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4795
|
+
color: #1559d6;
|
|
4796
|
+
fill: currentColor;
|
|
4797
|
+
background-color: #edf6ff;
|
|
4798
|
+
border-color: rgba(37,99,235,.22);
|
|
4799
|
+
box-shadow: inset 0 0 0 1px rgba(37,99,235,.12);
|
|
4800
|
+
}
|
|
4801
|
+
|
|
4802
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-disabled,
|
|
4803
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-disabled,
|
|
4804
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-disabled {
|
|
4805
|
+
color: #9aa0a6;
|
|
4806
|
+
opacity: .62;
|
|
4807
|
+
}
|
|
4808
|
+
|
|
4809
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-disabled:hover,
|
|
4810
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-disabled:hover,
|
|
4811
|
+
.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-disabled:hover {
|
|
4812
|
+
color: #9aa0a6;
|
|
4813
|
+
background-color: transparent;
|
|
4814
|
+
border-color: transparent;
|
|
4815
|
+
box-shadow: none;
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4818
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4819
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4820
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4821
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4822
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4823
|
+
color: var(--rte-icon-color, #cbd5e1);
|
|
4824
|
+
}
|
|
4825
|
+
|
|
4826
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4827
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4828
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4829
|
+
color: #e2e8f0;
|
|
4830
|
+
background-color: #334155;
|
|
4831
|
+
border-color: #475569;
|
|
4832
|
+
}
|
|
4833
|
+
|
|
4834
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4835
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4836
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4837
|
+
.rte-dark.richtexteditor.rte-modern.rte-desktop rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4838
|
+
color: #bfdbfe;
|
|
4839
|
+
background-color: #1e3a5f;
|
|
4840
|
+
border-color: rgba(96,165,250,.46);
|
|
4841
|
+
box-shadow: inset 0 0 0 1px rgba(96,165,250,.24);
|
|
4842
|
+
}
|
|
4843
|
+
|
|
4844
|
+
@media (prefers-color-scheme: dark) {
|
|
4845
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button,
|
|
4846
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton,
|
|
4847
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton,
|
|
4848
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-direct,
|
|
4849
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton-dropdown {
|
|
4850
|
+
color: var(--rte-icon-color, #cbd5e1);
|
|
4851
|
+
}
|
|
4852
|
+
|
|
4853
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button:hover,
|
|
4854
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton:hover,
|
|
4855
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton:hover {
|
|
4856
|
+
color: #e2e8f0;
|
|
4857
|
+
background-color: #334155;
|
|
4858
|
+
border-color: #475569;
|
|
4859
|
+
}
|
|
4860
|
+
|
|
4861
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-button.rte-command-active,
|
|
4862
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-arrowbutton.rte-command-active,
|
|
4863
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-splitbutton.rte-command-active,
|
|
4864
|
+
.richtexteditor.rte-auto-dark.rte-modern.rte-desktop:not(.rte-light) rte-toolbar.rte-toolbar-desktop rte-toolbar-dropdown.rte-command-active {
|
|
4865
|
+
color: #bfdbfe;
|
|
4866
|
+
background-color: #1e3a5f;
|
|
4867
|
+
border-color: rgba(96,165,250,.46);
|
|
4868
|
+
box-shadow: inset 0 0 0 1px rgba(96,165,250,.24);
|
|
4869
|
+
}
|
|
4870
|
+
}
|
|
4871
|
+
|
|
4872
|
+
/* 2026-07-03 dialog top-chrome guard.
|
|
4873
|
+
Dialogs must clear host sticky menus and also sit above editor dropdown
|
|
4874
|
+
panels, which use a higher default z-index than config.zIndexDialog. */
|
|
4875
|
+
rte-dialog-outer,
|
|
4876
|
+
rte-dialog-float,
|
|
4877
|
+
.rte-alt-editor-popup,
|
|
4878
|
+
.rte-find-replace-dialog,
|
|
4879
|
+
.rte-ai-context-menu,
|
|
4880
|
+
.rte-image-quickbar {
|
|
4881
|
+
--rte-dialog-effective-top-chrome: max(var(--rte-ai-sticky-top-offset, 0px), var(--rte-dialog-detected-top-chrome, 0px));
|
|
4882
|
+
}
|
|
4883
|
+
|
|
4884
|
+
rte-dialog-outer {
|
|
4885
|
+
top: max(0px, var(--rte-dialog-effective-top-chrome)) !important;
|
|
4886
|
+
box-sizing: border-box;
|
|
4887
|
+
padding: 12px;
|
|
4888
|
+
overflow: auto;
|
|
4889
|
+
overscroll-behavior: contain;
|
|
4890
|
+
z-index: 2147483646 !important;
|
|
4891
|
+
}
|
|
4892
|
+
|
|
4893
|
+
rte-dialog-outer rte-dialog-inner {
|
|
4894
|
+
max-height: min(88vh, 760px, calc(100vh - max(32px, calc(var(--rte-dialog-effective-top-chrome) + 32px)))) !important;
|
|
4895
|
+
}
|
|
4896
|
+
|
|
4897
|
+
rte-dialog-float {
|
|
4898
|
+
top: max(12px, calc(var(--rte-dialog-effective-top-chrome) + 12px));
|
|
4899
|
+
max-height: calc(100vh - max(32px, calc(var(--rte-dialog-effective-top-chrome) + 32px)));
|
|
4900
|
+
z-index: 2147483646 !important;
|
|
4901
|
+
}
|
|
4902
|
+
|
|
4903
|
+
rte-dialog-float rte-dialog-inner {
|
|
4904
|
+
max-height: inherit;
|
|
4905
|
+
overflow: auto;
|
|
4906
|
+
}
|
|
4907
|
+
|
|
4908
|
+
.rte-alt-editor-popup,
|
|
4909
|
+
.rte-find-replace-dialog,
|
|
4910
|
+
.rte-ai-context-menu {
|
|
4911
|
+
z-index: 2147483646 !important;
|
|
4912
|
+
}
|
|
4913
|
+
|
|
4914
|
+
.rte-find-replace-dialog {
|
|
4915
|
+
top: max(80px, calc(var(--rte-dialog-effective-top-chrome) + 12px)) !important;
|
|
4916
|
+
max-height: calc(100vh - max(104px, calc(var(--rte-dialog-effective-top-chrome) + 32px)));
|
|
4917
|
+
overflow: auto;
|
|
4918
|
+
}
|