@richhtmleditor/themes 1.1.0 → 1.1.1

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 CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  Shared CSS for Rich HTML Editor — toolbar, content area, outline panel, selection mini-toolbar, tables, and dark mode tokens. Pair with [`@richhtmleditor/core`](https://www.npmjs.com/package/@richhtmleditor/core) or any framework wrapper.
4
4
 
5
- **Current release: 1.1.0**
5
+ **Current release: 1.1.1**
6
6
 
7
7
  **Repository:** [github.com/rajkishorsahu89/richhtmleditor](https://github.com/rajkishorsahu89/richhtmleditor)
8
8
 
9
9
  **Demo:** [richhtmleditor.vercel.app](https://richhtmleditor.vercel.app/) — [demo](https://richhtmleditor.vercel.app/demo) · [guide](https://richhtmleditor.vercel.app/guide) · [API](https://richhtmleditor.vercel.app/api). Doc Preview joint demo: [doc-preview-app.vercel.app/demo/enterprise](https://doc-preview-app.vercel.app/demo/enterprise)
10
10
 
11
- ### What's in 1.1.0
11
+ ### What's in 1.1.1
12
12
 
13
13
  - **`richhtmleditor.css`** — complete editor chrome (toolbar rows, buttons, dropdowns, content area)
14
14
  - **Dark mode** — `.de-root--dark` class toggled when `dark: true` is passed to `createEditor`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@richhtmleditor/themes",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "CSS themes for Rich HTML Editor.",
5
5
  "type": "module",
6
6
  "style": "./src/richhtmleditor.css",
@@ -809,6 +809,14 @@
809
809
  background: color-mix(in srgb, var(--de-primary, #2563eb) 12%, var(--de-toolbar-bg, #fff));
810
810
  color: var(--de-primary, #2563eb);
811
811
  }
812
+ .de-block-style-gallery__sep {
813
+ margin: 4px 8px;
814
+ border: none;
815
+ border-top: 1px solid var(--de-border, #e2e8f0);
816
+ }
817
+ .de-block-style-gallery__item--custom {
818
+ font-style: italic;
819
+ }
812
820
 
813
821
  #richhtmleditor-root .de-character-style-gallery {
814
822
  position: relative;
@@ -2760,6 +2768,7 @@ del.de-track-delete,
2760
2768
  outline-offset: -2px;
2761
2769
  }
2762
2770
 
2771
+ /* ---- Help dialog ---- */
2763
2772
  .de-shortcut-help__backdrop {
2764
2773
  position: fixed;
2765
2774
  inset: 0;
@@ -2774,56 +2783,178 @@ del.de-track-delete,
2774
2783
  }
2775
2784
 
2776
2785
  .de-shortcut-help__panel {
2777
- width: min(520px, calc(100vw - 32px));
2778
- max-height: min(80vh, 640px);
2779
- overflow: auto;
2780
- padding: 20px 22px;
2786
+ display: flex;
2787
+ flex-direction: column;
2788
+ width: min(600px, calc(100vw - 32px));
2789
+ max-height: min(80vh, 700px);
2781
2790
  background: var(--de-toolbar-bg, #fff);
2782
2791
  color: var(--de-text-primary, #111);
2783
2792
  border: 1px solid var(--de-border, #d1d5db);
2784
2793
  border-radius: 12px;
2785
2794
  box-shadow: 0 20px 48px rgba(15, 23, 42, 0.2);
2795
+ overflow: hidden;
2796
+ }
2797
+
2798
+ /* Header */
2799
+ .de-shortcut-help__header {
2800
+ display: flex;
2801
+ align-items: center;
2802
+ justify-content: space-between;
2803
+ padding: 16px 20px 0;
2786
2804
  }
2787
2805
 
2788
2806
  .de-shortcut-help__title {
2789
- margin: 0 0 12px;
2790
- font-size: 1.1rem;
2807
+ margin: 0;
2808
+ font-size: 1.15rem;
2809
+ font-weight: 600;
2810
+ }
2811
+
2812
+ .de-shortcut-help__close-x {
2813
+ background: none;
2814
+ border: none;
2815
+ font-size: 1.4rem;
2816
+ line-height: 1;
2817
+ padding: 4px 8px;
2818
+ cursor: pointer;
2819
+ color: var(--de-text-muted, #6b7280);
2820
+ border-radius: 6px;
2821
+ }
2822
+ .de-shortcut-help__close-x:hover {
2823
+ background: color-mix(in srgb, var(--de-text-muted, #6b7280) 12%, transparent);
2824
+ }
2825
+
2826
+ /* Tabs */
2827
+ .de-shortcut-help__tabs {
2828
+ display: flex;
2829
+ gap: 0;
2830
+ padding: 12px 20px 0;
2831
+ border-bottom: 1px solid var(--de-border, #d1d5db);
2832
+ }
2833
+
2834
+ .de-shortcut-help__tab {
2835
+ background: none;
2836
+ border: none;
2837
+ border-bottom: 2px solid transparent;
2838
+ padding: 8px 16px;
2839
+ font-size: 0.85rem;
2840
+ font-weight: 500;
2841
+ cursor: pointer;
2842
+ color: var(--de-text-muted, #6b7280);
2843
+ transition: color 0.15s, border-color 0.15s;
2844
+ }
2845
+ .de-shortcut-help__tab:hover {
2846
+ color: var(--de-text-primary, #111);
2847
+ }
2848
+ .de-shortcut-help__tab--active {
2849
+ color: var(--de-primary, #2563eb);
2850
+ border-bottom-color: var(--de-primary, #2563eb);
2791
2851
  }
2792
2852
 
2853
+ /* Body (scrollable) */
2793
2854
  .de-shortcut-help__body {
2794
2855
  display: grid;
2795
- gap: 14px;
2856
+ gap: 16px;
2857
+ padding: 16px 20px;
2858
+ overflow-y: auto;
2859
+ flex: 1;
2860
+ min-height: 0;
2861
+ }
2862
+
2863
+ .de-shortcut-help__body[hidden] {
2864
+ display: none !important;
2796
2865
  }
2797
2866
 
2867
+ /* Section headings */
2798
2868
  .de-shortcut-help__section h3 {
2799
- margin: 0 0 6px;
2800
- font-size: 0.82rem;
2869
+ margin: 0 0 8px;
2870
+ font-size: 0.8rem;
2801
2871
  text-transform: uppercase;
2802
- letter-spacing: 0.04em;
2872
+ letter-spacing: 0.05em;
2873
+ font-weight: 600;
2803
2874
  color: var(--de-text-muted, #6b7280);
2804
2875
  }
2805
2876
 
2877
+ /* Shortcut list */
2806
2878
  .de-shortcut-help__list {
2807
2879
  display: grid;
2808
- grid-template-columns: minmax(120px, 1fr) 2fr;
2809
- gap: 6px 12px;
2880
+ grid-template-columns: minmax(160px, auto) 1fr;
2881
+ gap: 6px 16px;
2810
2882
  margin: 0;
2811
2883
  }
2812
2884
 
2813
2885
  .de-shortcut-help__list dt {
2814
2886
  margin: 0;
2887
+ display: flex;
2888
+ align-items: center;
2889
+ gap: 4px;
2890
+ }
2891
+
2892
+ .de-shortcut-help__list dt kbd {
2893
+ display: inline-block;
2894
+ padding: 2px 7px;
2815
2895
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
2816
- font-size: 0.78rem;
2817
- color: var(--de-text-primary, #111);
2896
+ font-size: 0.75rem;
2897
+ background: color-mix(in srgb, var(--de-text-primary, #111) 8%, transparent);
2898
+ border: 1px solid var(--de-border, #d1d5db);
2899
+ border-radius: 4px;
2900
+ line-height: 1.4;
2818
2901
  }
2819
2902
 
2820
2903
  .de-shortcut-help__list dd {
2821
2904
  margin: 0;
2822
- font-size: 0.86rem;
2905
+ font-size: 0.85rem;
2906
+ display: flex;
2907
+ align-items: center;
2908
+ }
2909
+
2910
+ /* Feature list */
2911
+ .de-shortcut-help__feature-list {
2912
+ display: grid;
2913
+ grid-template-columns: minmax(140px, auto) 1fr;
2914
+ gap: 6px 16px;
2915
+ margin: 0;
2916
+ }
2917
+
2918
+ .de-shortcut-help__feature-list dt {
2919
+ margin: 0;
2920
+ font-size: 0.85rem;
2921
+ font-weight: 600;
2922
+ color: var(--de-text-primary, #111);
2923
+ }
2924
+
2925
+ .de-shortcut-help__feature-list dd {
2926
+ margin: 0;
2927
+ font-size: 0.83rem;
2928
+ color: var(--de-text-muted, #6b7280);
2929
+ line-height: 1.45;
2930
+ }
2931
+
2932
+ /* Footer */
2933
+ .de-shortcut-help__footer {
2934
+ display: flex;
2935
+ align-items: center;
2936
+ justify-content: space-between;
2937
+ padding: 12px 20px;
2938
+ border-top: 1px solid var(--de-border, #d1d5db);
2823
2939
  }
2824
2940
 
2825
- .de-shortcut-help__close {
2826
- margin-top: 16px;
2941
+ .de-shortcut-help__hint {
2942
+ font-size: 0.78rem;
2943
+ color: var(--de-text-muted, #6b7280);
2944
+ }
2945
+
2946
+ .de-shortcut-help__close-btn {
2947
+ padding: 6px 20px;
2948
+ background: var(--de-primary, #2563eb);
2949
+ color: #fff;
2950
+ border: none;
2951
+ border-radius: 6px;
2952
+ font-size: 0.85rem;
2953
+ font-weight: 500;
2954
+ cursor: pointer;
2955
+ }
2956
+ .de-shortcut-help__close-btn:hover {
2957
+ background: var(--de-primary-hover, #1d4ed8);
2827
2958
  }
2828
2959
 
2829
2960
  #richhtmleditor-root .de-a11y-live {
@@ -3845,67 +3976,427 @@ del.de-track-delete,
3845
3976
  background: #1e293b;
3846
3977
  border-color: #475569;
3847
3978
  }
3848
-
3849
- /* ── Slash command menu ──────────────────────────────── */
3850
- .de-slash-menu {
3851
- z-index: 10001;
3852
- width: 240px;
3853
- max-height: 320px;
3854
- overflow-y: auto;
3855
- padding: 6px;
3856
- background: var(--de-toolbar-bg, #fff);
3857
- border: 1px solid var(--de-border, #e2e8f0);
3858
- border-radius: 10px;
3859
- box-shadow: 0 8px 24px rgba(0,0,0,.12), 0 2px 6px rgba(0,0,0,.06);
3860
- font-family: "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
3861
- }
3862
- .de-slash-menu[hidden] { display: none !important; }
3863
-
3864
- .de-slash-menu__item {
3865
- display: flex;
3866
- align-items: center;
3867
- gap: 10px;
3868
- padding: 8px 10px;
3869
- border-radius: 7px;
3870
- cursor: pointer;
3871
- font-size: 0.8125rem;
3872
- font-weight: 500;
3873
- color: var(--de-text-primary, #0f172a);
3874
- transition: background 0.12s;
3875
- }
3876
- .de-slash-menu__item:hover,
3877
- .de-slash-menu__item--active {
3878
- background: color-mix(in srgb, var(--de-primary, #2563eb) 10%, transparent);
3879
- }
3880
- .de-slash-menu__icon {
3881
- display: inline-flex;
3882
- align-items: center;
3883
- justify-content: center;
3884
- width: 28px;
3885
- height: 28px;
3886
- border-radius: 6px;
3887
- background: var(--de-secondary, #f1f5f9);
3888
- font-size: 0.75rem;
3889
- font-weight: 700;
3890
- color: var(--de-text-muted, #64748b);
3891
- flex-shrink: 0;
3892
- }
3893
- .de-slash-menu__label {
3894
- flex: 1;
3895
- }
3896
- .de-slash-menu__empty {
3897
- padding: 16px 10px;
3898
- text-align: center;
3899
- font-size: 0.8125rem;
3900
- color: var(--de-text-muted, #64748b);
3901
- }
3902
-
3903
- /* Dark mode */
3904
- .de-root--dark .de-slash-menu {
3905
- background: #1e293b;
3906
- border-color: #475569;
3907
- }
3908
- .de-root--dark .de-slash-menu__icon {
3909
- background: #334155;
3910
- color: #94a3b8;
3911
- }
3979
+
3980
+ /* ── Slash command menu ──────────────────────────────── */
3981
+ .de-slash-menu {
3982
+ z-index: 10001;
3983
+ width: 240px;
3984
+ max-height: 320px;
3985
+ overflow-y: auto;
3986
+ padding: 6px;
3987
+ background: var(--de-toolbar-bg, #fff);
3988
+ border: 1px solid var(--de-border, #e2e8f0);
3989
+ border-radius: 10px;
3990
+ box-shadow: 0 8px 24px rgba(0,0,0,.12), 0 2px 6px rgba(0,0,0,.06);
3991
+ font-family: "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
3992
+ }
3993
+ .de-slash-menu[hidden] { display: none !important; }
3994
+
3995
+ .de-slash-menu__item {
3996
+ display: flex;
3997
+ align-items: center;
3998
+ gap: 10px;
3999
+ padding: 8px 10px;
4000
+ border-radius: 7px;
4001
+ cursor: pointer;
4002
+ font-size: 0.8125rem;
4003
+ font-weight: 500;
4004
+ color: var(--de-text-primary, #0f172a);
4005
+ transition: background 0.12s;
4006
+ }
4007
+ .de-slash-menu__item:hover,
4008
+ .de-slash-menu__item--active {
4009
+ background: color-mix(in srgb, var(--de-primary, #2563eb) 10%, transparent);
4010
+ }
4011
+ .de-slash-menu__icon {
4012
+ display: inline-flex;
4013
+ align-items: center;
4014
+ justify-content: center;
4015
+ width: 28px;
4016
+ height: 28px;
4017
+ border-radius: 6px;
4018
+ background: var(--de-secondary, #f1f5f9);
4019
+ font-size: 0.75rem;
4020
+ font-weight: 700;
4021
+ color: var(--de-text-muted, #64748b);
4022
+ flex-shrink: 0;
4023
+ }
4024
+ .de-slash-menu__label {
4025
+ flex: 1;
4026
+ }
4027
+ .de-slash-menu__empty {
4028
+ padding: 16px 10px;
4029
+ text-align: center;
4030
+ font-size: 0.8125rem;
4031
+ color: var(--de-text-muted, #64748b);
4032
+ }
4033
+
4034
+ /* Dark mode */
4035
+ .de-root--dark .de-slash-menu {
4036
+ background: #1e293b;
4037
+ border-color: #475569;
4038
+ }
4039
+ .de-root--dark .de-slash-menu__icon {
4040
+ background: #334155;
4041
+ color: #94a3b8;
4042
+ }
4043
+
4044
+ /* ── Fields / mail-merge placeholders ── */
4045
+ #richhtmleditor-root .de-content .de-field {
4046
+ display: inline;
4047
+ padding: 1px 4px;
4048
+ border-radius: 3px;
4049
+ background: color-mix(in srgb, var(--de-primary) 12%, transparent);
4050
+ border: 1px solid color-mix(in srgb, var(--de-primary) 25%, transparent);
4051
+ font-size: 0.92em;
4052
+ white-space: nowrap;
4053
+ cursor: default;
4054
+ }
4055
+ .de-root--dark .de-content .de-field {
4056
+ background: color-mix(in srgb, var(--de-primary) 18%, transparent);
4057
+ border-color: color-mix(in srgb, var(--de-primary) 35%, transparent);
4058
+ }
4059
+
4060
+ /* ── Shapes / drawing canvas ── */
4061
+ #richhtmleditor-root .de-content .de-shape {
4062
+ display: flex;
4063
+ margin: 0.5em 0;
4064
+ cursor: default;
4065
+ user-select: none;
4066
+ }
4067
+ #richhtmleditor-root .de-content .de-shape svg {
4068
+ display: block;
4069
+ max-width: 100%;
4070
+ }
4071
+ #richhtmleditor-root .de-content .de-shape--active {
4072
+ outline: 2px solid color-mix(in srgb, var(--de-primary) 55%, transparent);
4073
+ outline-offset: 3px;
4074
+ border-radius: 4px;
4075
+ }
4076
+ /* Shape alignment */
4077
+ #richhtmleditor-root .de-content .de-shape { display: flex; }
4078
+ #richhtmleditor-root .de-content .de-shape[data-shape-align="center"] { justify-content: center; }
4079
+ #richhtmleditor-root .de-content .de-shape[data-shape-align="right"] { justify-content: flex-end; }
4080
+
4081
+ /* ── Shape Controls (mini toolbar above selected shape) ── */
4082
+ .de-shape-controls[hidden],
4083
+ .de-shape-handles[hidden],
4084
+ .de-shape-edit-overlay[hidden] { display: none !important; }
4085
+ .de-shape-controls {
4086
+ position: absolute;
4087
+ display: flex;
4088
+ align-items: center;
4089
+ gap: 4px;
4090
+ padding: 4px 8px;
4091
+ background: var(--de-toolbar-bg, #fff);
4092
+ border: 1px solid var(--de-border, #e2e8f0);
4093
+ border-radius: 8px;
4094
+ box-shadow: 0 2px 8px rgba(0,0,0,.12);
4095
+ z-index: 50;
4096
+ white-space: nowrap;
4097
+ }
4098
+ .de-shape-controls__btn {
4099
+ display: inline-flex;
4100
+ align-items: center;
4101
+ justify-content: center;
4102
+ padding: 4px 10px;
4103
+ font-size: 12px;
4104
+ line-height: 1.4;
4105
+ border-radius: 4px;
4106
+ cursor: pointer;
4107
+ background: transparent;
4108
+ border: 1px solid var(--de-border, #e2e8f0);
4109
+ color: var(--de-text-primary, #1e293b);
4110
+ font-family: inherit;
4111
+ transition: background .15s, color .15s, border-color .15s;
4112
+ }
4113
+ .de-shape-controls__btn:hover {
4114
+ background: color-mix(in srgb, var(--de-primary, #2563eb) 10%, transparent);
4115
+ }
4116
+ /* Save button — prominent blue CTA */
4117
+ .de-shape-controls__btn.de-shape-controls__btn--save {
4118
+ background: var(--de-primary, #2563eb);
4119
+ color: #fff;
4120
+ border-color: var(--de-primary, #2563eb);
4121
+ font-weight: 600;
4122
+ }
4123
+ .de-shape-controls__btn.de-shape-controls__btn--save:hover {
4124
+ background: var(--de-primary-hover, #1d4ed8);
4125
+ border-color: var(--de-primary-hover, #1d4ed8);
4126
+ }
4127
+ /* Alignment button group */
4128
+ .de-shape-controls__align-group {
4129
+ display: flex;
4130
+ gap: 1px;
4131
+ border: 1px solid var(--de-border, #e2e8f0);
4132
+ border-radius: 4px;
4133
+ overflow: hidden;
4134
+ }
4135
+ .de-shape-controls__align-btn {
4136
+ padding: 4px 8px;
4137
+ font-size: 13px;
4138
+ cursor: pointer;
4139
+ background: none;
4140
+ border: none;
4141
+ color: var(--de-text-primary, #1e293b);
4142
+ transition: background .15s;
4143
+ line-height: 1;
4144
+ }
4145
+ .de-shape-controls__align-btn:hover {
4146
+ background: color-mix(in srgb, var(--de-primary, #2563eb) 10%, transparent);
4147
+ }
4148
+ .de-shape-controls__align-btn--active {
4149
+ background: var(--de-primary, #2563eb);
4150
+ color: #fff;
4151
+ }
4152
+ .de-shape-controls__align-btn--active:hover {
4153
+ background: var(--de-primary-hover, #1d4ed8);
4154
+ }
4155
+ /* Divider */
4156
+ .de-shape-controls__divider {
4157
+ width: 1px;
4158
+ height: 20px;
4159
+ background: var(--de-border, #e2e8f0);
4160
+ flex-shrink: 0;
4161
+ }
4162
+ .de-shape-controls__btn--remove {
4163
+ color: #dc2626;
4164
+ border-color: #fecaca;
4165
+ }
4166
+ .de-shape-controls__btn--remove:hover {
4167
+ background: #fef2f2;
4168
+ }
4169
+
4170
+ /* ── Shape drag-to-reposition ── */
4171
+ .de-shape-controls__btn--drag {
4172
+ cursor: grab;
4173
+ font-size: 14px;
4174
+ letter-spacing: -1px;
4175
+ }
4176
+ .de-shape--dragging {
4177
+ opacity: 0.35;
4178
+ }
4179
+ .de-shape-drop-indicator {
4180
+ position: absolute;
4181
+ height: 3px;
4182
+ background: var(--de-primary, #2563eb);
4183
+ border-radius: 2px;
4184
+ z-index: 55;
4185
+ pointer-events: none;
4186
+ }
4187
+ .de-shape-drop-indicator[hidden] { display: none !important; }
4188
+ .de-shape-drag-ghost {
4189
+ position: fixed;
4190
+ padding: 6px 14px;
4191
+ background: var(--de-primary, #2563eb);
4192
+ color: #fff;
4193
+ font-size: 12px;
4194
+ font-family: system-ui, sans-serif;
4195
+ border-radius: 6px;
4196
+ box-shadow: 0 4px 12px rgba(0,0,0,.2);
4197
+ pointer-events: none;
4198
+ z-index: 10001;
4199
+ white-space: nowrap;
4200
+ text-transform: capitalize;
4201
+ }
4202
+
4203
+ /* ── Shape resize handles ── */
4204
+ .de-shape-handles {
4205
+ position: absolute;
4206
+ pointer-events: none;
4207
+ z-index: 49;
4208
+ }
4209
+ .de-shape-handle {
4210
+ position: absolute;
4211
+ width: 10px;
4212
+ height: 10px;
4213
+ background: #fff;
4214
+ border: 2px solid var(--de-primary, #2563eb);
4215
+ border-radius: 2px;
4216
+ pointer-events: auto;
4217
+ z-index: 51;
4218
+ }
4219
+ .de-shape-handle--nw { top: -5px; left: -5px; cursor: nwse-resize; }
4220
+ .de-shape-handle--ne { top: -5px; right: -5px; cursor: nesw-resize; }
4221
+ .de-shape-handle--se { bottom: -5px; right: -5px; cursor: nwse-resize; }
4222
+ .de-shape-handle--sw { bottom: -5px; left: -5px; cursor: nesw-resize; }
4223
+ .de-shape-handle--e { top: calc(50% - 5px); right: -5px; cursor: ew-resize; }
4224
+
4225
+ /* ── Shape text edit overlay ── */
4226
+ .de-shape-edit-overlay {
4227
+ position: absolute;
4228
+ display: flex;
4229
+ align-items: center;
4230
+ justify-content: center;
4231
+ z-index: 52;
4232
+ background: rgba(255,255,255,.85);
4233
+ border-radius: 4px;
4234
+ }
4235
+ .de-shape-edit-overlay__input {
4236
+ width: 80%;
4237
+ max-width: 300px;
4238
+ padding: 6px 10px;
4239
+ border: 2px solid var(--de-primary, #2563eb);
4240
+ border-radius: 6px;
4241
+ font-size: 14px;
4242
+ font-family: system-ui, sans-serif;
4243
+ text-align: center;
4244
+ outline: none;
4245
+ background: #fff;
4246
+ color: #1e293b;
4247
+ box-shadow: 0 2px 8px rgba(0,0,0,.15);
4248
+ }
4249
+ /* Dark mode overrides */
4250
+ .de-root--dark .de-shape-controls {
4251
+ background: var(--de-toolbar-bg, #1e293b);
4252
+ border-color: var(--de-border, #334155);
4253
+ }
4254
+ .de-root--dark .de-shape-controls__btn {
4255
+ color: var(--de-text-primary, #e2e8f0);
4256
+ border-color: var(--de-border, #334155);
4257
+ }
4258
+ .de-root--dark .de-shape-controls__btn--remove {
4259
+ color: #f87171;
4260
+ border-color: #7f1d1d;
4261
+ }
4262
+ .de-root--dark .de-shape-controls__btn--remove:hover {
4263
+ background: rgba(127,29,29,.3);
4264
+ }
4265
+ .de-root--dark .de-shape-edit-overlay {
4266
+ background: rgba(15,23,42,.85);
4267
+ }
4268
+ .de-root--dark .de-shape-edit-overlay__input {
4269
+ background: #1e293b;
4270
+ color: #e2e8f0;
4271
+ border-color: var(--de-primary, #3b82f6);
4272
+ }
4273
+
4274
+ /* ── Shape Picker Panel ── */
4275
+ .de-shape-picker {
4276
+ width: 480px;
4277
+ background: var(--de-toolbar-bg, #fff);
4278
+ border: 1px solid var(--de-border, #e2e8f0);
4279
+ border-radius: 10px;
4280
+ box-shadow: 0 8px 24px rgba(0,0,0,.15);
4281
+ font-family: system-ui, -apple-system, sans-serif;
4282
+ overflow: hidden;
4283
+ }
4284
+ .de-shape-picker__tabs {
4285
+ display: flex;
4286
+ border-bottom: 1px solid var(--de-border, #e2e8f0);
4287
+ padding: 0 4px;
4288
+ gap: 2px;
4289
+ }
4290
+ .de-shape-picker__tab {
4291
+ padding: 8px 14px;
4292
+ font-size: 15px;
4293
+ cursor: pointer;
4294
+ background: none;
4295
+ border: none;
4296
+ border-bottom: 2px solid transparent;
4297
+ color: var(--de-text-muted, #64748b);
4298
+ transition: color .15s, border-color .15s;
4299
+ line-height: 1;
4300
+ }
4301
+ .de-shape-picker__tab:hover {
4302
+ color: var(--de-text-primary, #1e293b);
4303
+ }
4304
+ .de-shape-picker__tab--active {
4305
+ border-bottom-color: var(--de-primary, #2563eb);
4306
+ color: var(--de-primary, #2563eb);
4307
+ }
4308
+ .de-shape-picker__body {
4309
+ padding: 12px;
4310
+ max-height: 280px;
4311
+ overflow-y: auto;
4312
+ }
4313
+ .de-shape-picker__grid {
4314
+ display: grid;
4315
+ grid-template-columns: repeat(7, 1fr);
4316
+ gap: 6px;
4317
+ }
4318
+ .de-shape-picker__btn {
4319
+ width: 48px;
4320
+ height: 48px;
4321
+ display: flex;
4322
+ align-items: center;
4323
+ justify-content: center;
4324
+ border: 2px solid transparent;
4325
+ border-radius: 6px;
4326
+ cursor: pointer;
4327
+ background: none;
4328
+ padding: 4px;
4329
+ transition: border-color .15s, background .15s;
4330
+ }
4331
+ .de-shape-picker__btn:hover {
4332
+ border-color: var(--de-primary, #2563eb);
4333
+ background: color-mix(in srgb, var(--de-primary, #2563eb) 8%, transparent);
4334
+ }
4335
+ .de-shape-picker__btn--selected {
4336
+ border-color: var(--de-primary, #2563eb);
4337
+ background: color-mix(in srgb, var(--de-primary, #2563eb) 15%, transparent);
4338
+ }
4339
+ .de-shape-picker__btn svg {
4340
+ display: block;
4341
+ }
4342
+ .de-shape-picker__footer {
4343
+ display: flex;
4344
+ gap: 8px;
4345
+ align-items: center;
4346
+ padding: 10px 12px;
4347
+ border-top: 1px solid var(--de-border, #e2e8f0);
4348
+ }
4349
+ .de-shape-picker__text-input {
4350
+ flex: 1;
4351
+ padding: 6px 10px;
4352
+ border: 1px solid var(--de-border, #e2e8f0);
4353
+ border-radius: 6px;
4354
+ font-size: 13px;
4355
+ font-family: inherit;
4356
+ background: var(--de-content-bg, #fff);
4357
+ color: var(--de-text-primary, #1e293b);
4358
+ outline: none;
4359
+ }
4360
+ .de-shape-picker__text-input:focus {
4361
+ border-color: var(--de-primary, #2563eb);
4362
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--de-primary, #2563eb) 20%, transparent);
4363
+ }
4364
+ .de-shape-picker__insert-btn {
4365
+ padding: 6px 16px;
4366
+ background: var(--de-primary, #2563eb);
4367
+ color: #fff;
4368
+ border: none;
4369
+ border-radius: 6px;
4370
+ font-size: 13px;
4371
+ font-family: inherit;
4372
+ cursor: pointer;
4373
+ transition: background .15s;
4374
+ }
4375
+ .de-shape-picker__insert-btn:hover:not(:disabled) {
4376
+ background: var(--de-primary-hover, #1d4ed8);
4377
+ }
4378
+ .de-shape-picker__insert-btn:disabled {
4379
+ opacity: 0.45;
4380
+ cursor: not-allowed;
4381
+ }
4382
+ /* Dark mode */
4383
+ .de-shape-picker--dark {
4384
+ background: var(--de-toolbar-bg, #1e293b);
4385
+ border-color: var(--de-border, #334155);
4386
+ box-shadow: 0 8px 24px rgba(0,0,0,.35);
4387
+ }
4388
+ .de-shape-picker--dark .de-shape-picker__text-input {
4389
+ background: var(--de-content-bg, #0f172a);
4390
+ color: var(--de-text-primary, #e2e8f0);
4391
+ border-color: var(--de-border, #334155);
4392
+ }
4393
+
4394
+ /* ── Print: repeat table headers on each page ── */
4395
+ @media print {
4396
+ #richhtmleditor-root .de-content table.de-table thead {
4397
+ display: table-header-group;
4398
+ }
4399
+ #richhtmleditor-root .de-content table.de-table tbody {
4400
+ display: table-row-group;
4401
+ }
4402
+ }