neiki-editor 3.2.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,17 +1,17 @@
1
1
  <p align="center">
2
- <img src="assets/logo.png" alt="Neiki's Editor" width="400">
2
+ <img src="assets/logo.svg" alt="Neiki's Editor" width="400">
3
3
  </p>
4
4
 
5
5
  <h1 align="center">Neiki's Editor</h1>
6
6
 
7
7
  <p align="center">
8
8
  <img src="https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge&logo=javascript&logoColor=%23F7DF1E" alt="JavaScript">
9
- <img src="https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge&logo=php&logoColor=white" alt="PHP">
10
9
  <img src="https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white" alt="HTML5">
11
10
  <img src="https://img.shields.io/badge/css-%23663399.svg?style=for-the-badge&logo=css&logoColor=white" alt="CSS">
11
+ <img src="https://img.shields.io/badge/web%20components-29ABE2.svg?style=for-the-badge&logo=webcomponentsdotorg&logoColor=white" alt="Web Components">
12
12
  <br>
13
13
  <img src="https://img.shields.io/badge/License-AGPL--3.0-2563EB?style=for-the-badge&logo=open-source-initiative&logoColor=white&labelColor=000F15&logoWidth=20" alt="License">
14
- <img src="https://img.shields.io/badge/Version-3.2.0-2563EB?style=for-the-badge&logo=semantic-release&logoColor=white&labelColor=000F15&logoWidth=20" alt="Version">
14
+ <img src="https://img.shields.io/badge/Version-3.4.0-2563EB?style=for-the-badge&logo=semantic-release&logoColor=white&labelColor=000F15&logoWidth=20" alt="Version">
15
15
  </p>
16
16
 
17
17
  <p align="center">
@@ -31,8 +31,19 @@
31
31
  </p>
32
32
 
33
33
  ---
34
+
34
35
  <p align="center">
35
- <img src="assets/preview.png" alt="Neiki's Editor" width="900">
36
+ <img src="assets/neiki-editor-light.png" alt="Neiki's Editor" width="900">
37
+ </p>
38
+
39
+ <p align="center">
40
+ <img src="assets/neiki-editor-blue.png" alt="Blue Theme" width="260">
41
+ <img src="assets/neiki-editor-dark.png" alt="Dark Theme" width="260">
42
+ <img src="assets/neiki-editor-dark-blue.png" alt="Dark Blue Theme" width="260">
43
+ <img src="assets/neiki-editor-midnight.png" alt="Midnight Theme" width="260">
44
+ <img src="assets/neiki-editor-void.png" alt="Void Theme" width="260">
45
+ <img src="assets/neiki-editor-autumn.png" alt="Autumn Theme" width="260">
46
+ <img src="assets/neiki-editor-dracula.png" alt="Dracula Theme" width="260">
36
47
  </p>
37
48
 
38
49
  ---
@@ -109,7 +120,7 @@ If you want a content editor that you can read, host, and reason about as a sing
109
120
  - Plugin API for custom toolbar buttons and init hooks
110
121
  - PHP integration helper with asset loading, rendering, and HTML sanitization
111
122
  - Eight built-in UI languages: `en`, `cs`, `zh`, `es`, `de`, `fr`, `pt`, `ja`
112
- - Six built-in themes: Light, Dark, Blue, Dark Blue, Midnight, Void
123
+ - Eight built-in themes: Light, Dark, Blue, Dark Blue, Midnight, Void, Autumn, Dracula
113
124
  - Lifecycle callbacks: `onReady`, `onChange`, `onSave`, `onFocus`, `onBlur`
114
125
 
115
126
  ---
@@ -129,7 +140,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
129
140
  **Pin a specific version**
130
141
 
131
142
  ```html
132
- <script src="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.min.js"></script>
143
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.4.0/neiki-editor.min.js"></script>
133
144
  ```
134
145
 
135
146
  **Load CSS and JS separately**
@@ -140,8 +151,8 @@ The recommended install is the single bundled script from the CDN. CSS is includ
140
151
  <script src="https://cdn.neikiri.dev/neiki-editor/neiki-editor.js"></script>
141
152
 
142
153
  <!-- Or pinned -->
143
- <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.css">
144
- <script src="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.js"></script>
154
+ <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.4.0/neiki-editor.css">
155
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.4.0/neiki-editor.js"></script>
145
156
  ```
146
157
 
147
158
  **Alternative CDN — jsDelivr**
@@ -149,7 +160,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
149
160
  ```html
150
161
  <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@latest/dist/neiki-editor.min.js"></script>
151
162
  <!-- Pinned -->
152
- <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.2.0/dist/neiki-editor.min.js"></script>
163
+ <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.4.0/dist/neiki-editor.min.js"></script>
153
164
  ```
154
165
 
155
166
  **Package manager**
@@ -229,7 +240,7 @@ const editor = new NeikiEditor('#editor', {
229
240
  placeholder: 'Start typing...',
230
241
  minHeight: 300,
231
242
  maxHeight: 600,
232
- theme: 'light', // 'light' | 'dark' | 'blue' | 'dark-blue'
243
+ theme: 'light', // 'light' | 'dark' | 'blue' | 'dark-blue' | 'midnight' | 'void' | 'autumn' | 'dracula'
233
244
  language: 'en', // 'en' | 'cs' | 'zh' | 'es' | 'de' | 'fr' | 'pt' | 'ja'
234
245
  onChange: function (content, editor) {
235
246
  console.log('Content changed:', content);
@@ -247,7 +258,7 @@ const editor = new NeikiEditor('#editor', {
247
258
  | `autofocus` | `boolean` | `false` | Focus the editor on initialization |
248
259
  | `spellcheck` | `boolean` | `true` | Enable browser spellcheck |
249
260
  | `readonly` | `boolean` | `false` | Make the editor read-only |
250
- | `theme` | `string` | `'light'` | `'light'`, `'dark'`, `'blue'`, `'dark-blue'`, `'midnight'`, or `'void'` |
261
+ | `theme` | `string` | `'light'` | `'light'`, `'dark'`, `'blue'`, `'dark-blue'`, `'midnight'`, `'void'`, `'autumn'`, or `'dracula'` |
251
262
  | `language` | `string` | `'en'` | UI language (see list above) |
252
263
  | `translations` | `object \| null` | `null` | Custom translation keys, merged with built-ins |
253
264
  | `contextMenu` | `boolean` | `true` | Enable the custom right-click context menu. Set to `false` to fall back to the browser's native menu |
@@ -285,13 +296,13 @@ Available identifiers include text formatting (`bold`, `italic`, `underline`, `s
285
296
 
286
297
  ### Themes
287
298
 
288
- Six themes ship by default: `light`, `dark`, `blue`, `dark-blue`, `midnight`, and `void` (a dark purple cyberpunk theme with neon-purple glow accents). Set one at init or change it at runtime:
299
+ Eight themes ship by default: `light`, `dark`, `blue`, `dark-blue`, `midnight`, `void` (a dark purple cyberpunk theme with neon-purple glow accents), `autumn` (a warm retro theme with a brown background and orange accents), and `dracula` (the official [Dracula theme](https://draculatheme.com) — a dark purple-blue palette with pink, purple, green, and yellow accents). Set one at init or change it at runtime:
289
300
 
290
301
  ```javascript
291
302
  const editor = new NeikiEditor('#editor', { theme: 'dark' });
292
303
 
293
- editor.setTheme('void'); // set a specific theme
294
- editor.toggleTheme(); // cycle: light → dark → blue → dark-blue → midnight → void → light
304
+ editor.setTheme('dracula'); // set a specific theme
305
+ editor.toggleTheme(); // cycle: light → dark → blue → dark-blue → midnight → void → autumn → dracula → light
295
306
  ```
296
307
 
297
308
  > The selected theme is persisted to `localStorage` as a **global** setting. It applies to all editor instances on the page and persists across reloads. If a user has already chosen a theme, that saved preference takes priority over the `theme` config value — call `setTheme()` after init if you need to override it.
@@ -607,45 +618,6 @@ Neiki's Editor uses `contentEditable` and standard DOM APIs and targets current
607
618
 
608
619
  ---
609
620
 
610
- ## File structure
611
-
612
- ```
613
- neiki-editor/
614
- ├── .github/
615
- │ └── workflows/
616
- │ ├── ci.yml # Continuous integration workflow
617
- │ ├── codeql.yml # CodeQL security analysis
618
- │ └── publish.yml # NPM/CDN publish workflow
619
- ├── assets/
620
- │ ├── logo.png # Project logo
621
- │ └── preview.png # Editor preview screenshot
622
- ├── demo/
623
- │ ├── index.html # Interactive demo page
624
- │ └── logo.png # Demo page logo
625
- ├── dist/
626
- │ ├── neiki-editor.css # Editor styles (unminified)
627
- │ ├── neiki-editor.js # Editor core (unminified)
628
- │ ├── neiki-editor.min.css # Minified styles
629
- │ └── neiki-editor.min.js # Minified editor + embedded CSS (recommended)
630
- ├── php/
631
- │ └── neiki-editor.php # PHP integration helper
632
- ├── src/
633
- │ ├── neiki-editor.css # Source CSS styles
634
- │ └── neiki-editor.js # Source JavaScript
635
- ├── .gitattributes
636
- ├── .gitignore
637
- ├── CHANGELOG.md
638
- ├── CODE_OF_CONDUCT.md
639
- ├── CONTRIBUTING.md
640
- ├── LICENSE
641
- ├── README.md
642
- ├── SECURITY.md
643
- ├── package-lock.json
644
- └── package.json
645
- ```
646
-
647
- ---
648
-
649
621
  ## Contributing
650
622
 
651
623
  Contributions are welcome. Please review [CONTRIBUTING.md](CONTRIBUTING.md) and the [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) before opening an issue or pull request. Security-related reports should follow [SECURITY.md](SECURITY.md).
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * NeikiEditor - Production-Ready WYSIWYG Rich Text Editor
3
3
  * CSS Stylesheet
4
- * Version: 3.2.0
4
+ * Version: 3.4.0
5
5
  */
6
6
 
7
7
  /* ============================================
@@ -230,6 +230,99 @@
230
230
  text-shadow: 0 0 6px rgba(176, 38, 255, 0.6);
231
231
  }
232
232
 
233
+ /* Autumn Theme — warm retro palette */
234
+ .neiki-editor.neiki-theme-autumn,
235
+ .neiki-modal-overlay.neiki-theme-autumn,
236
+ .neiki-context-menu.neiki-theme-autumn {
237
+ --neiki-bg-primary: #282828;
238
+ --neiki-bg-secondary: #32302f;
239
+ --neiki-bg-tertiary: #3c3836;
240
+ --neiki-bg-hover: #504945;
241
+ --neiki-bg-active: #665c54;
242
+ --neiki-border-color: #3c3836;
243
+ --neiki-border-color-dark: #665c54;
244
+ --neiki-text-primary: #ebdbb2;
245
+ --neiki-text-secondary: #d5c4a1;
246
+ --neiki-text-muted: #a89984;
247
+ --neiki-accent-color: #fe8019;
248
+ --neiki-accent-hover: #d65d0e;
249
+ --neiki-danger-color: #fb4934;
250
+ --neiki-success-color: #b8bb26;
251
+ --neiki-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25);
252
+ --neiki-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
253
+ --neiki-shadow-lg: 0 16px 32px rgba(0, 0, 0, 0.45);
254
+ --neiki-editor-bg: #282828;
255
+ --neiki-toolbar-bg: #32302f;
256
+ --neiki-statusbar-bg: #32302f;
257
+ --neiki-modal-overlay: rgba(0, 0, 0, 0.7);
258
+ --neiki-scrollbar-thumb: #665c54;
259
+ --neiki-scrollbar-track: #3c3836;
260
+ --neiki-selection-bg: #504945;
261
+ --neiki-highlight-color: #d79921;
262
+ --neiki-table-border: #3c3836;
263
+ }
264
+
265
+ /* Autumn — toolbar selects and fontsize input text color */
266
+ .neiki-editor.neiki-theme-autumn .neiki-select,
267
+ .neiki-editor.neiki-theme-autumn .neiki-fontsize-input {
268
+ color: var(--neiki-text-secondary);
269
+ }
270
+
271
+ /* Dracula Theme — https://draculatheme.com */
272
+ .neiki-editor.neiki-theme-dracula,
273
+ .neiki-modal-overlay.neiki-theme-dracula,
274
+ .neiki-context-menu.neiki-theme-dracula {
275
+ --neiki-bg-primary: #282a36;
276
+ --neiki-bg-secondary: #21222c;
277
+ --neiki-bg-tertiary: #343746;
278
+ --neiki-bg-hover: #44475a;
279
+ --neiki-bg-active: #6272a4;
280
+ --neiki-border-color: #44475a;
281
+ --neiki-border-color-dark: #6272a4;
282
+ --neiki-text-primary: #f8f8f2;
283
+ --neiki-text-secondary: #bd93f9;
284
+ --neiki-text-muted: #6272a4;
285
+ --neiki-accent-color: #bd93f9;
286
+ --neiki-accent-hover: #ff79c6;
287
+ --neiki-danger-color: #ff5555;
288
+ --neiki-success-color: #50fa7b;
289
+ --neiki-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25);
290
+ --neiki-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
291
+ --neiki-shadow-lg: 0 16px 32px rgba(0, 0, 0, 0.45);
292
+ --neiki-editor-bg: #282a36;
293
+ --neiki-toolbar-bg: #21222c;
294
+ --neiki-statusbar-bg: #21222c;
295
+ --neiki-modal-overlay: rgba(0, 0, 0, 0.75);
296
+ --neiki-scrollbar-thumb: #6272a4;
297
+ --neiki-scrollbar-track: #343746;
298
+ --neiki-selection-bg: #44475a;
299
+ --neiki-highlight-color: #6b6423;
300
+ --neiki-table-border: #44475a;
301
+ }
302
+
303
+ /* Dracula — toolbar selects and fontsize input text color */
304
+ .neiki-editor.neiki-theme-dracula .neiki-select,
305
+ .neiki-editor.neiki-theme-dracula .neiki-fontsize-input {
306
+ color: var(--neiki-text-secondary);
307
+ }
308
+
309
+ /* Dracula — code view syntax highlighting */
310
+ .neiki-editor.neiki-theme-dracula .neiki-html-tag {
311
+ color: #ff79c6;
312
+ }
313
+
314
+ .neiki-editor.neiki-theme-dracula .neiki-html-attr {
315
+ color: #50fa7b;
316
+ }
317
+
318
+ .neiki-editor.neiki-theme-dracula .neiki-html-string {
319
+ color: #f1fa8c;
320
+ }
321
+
322
+ .neiki-editor.neiki-theme-dracula .neiki-html-comment {
323
+ color: #6272a4;
324
+ }
325
+
233
326
  /* ============================================
234
327
  Base Editor Container
235
328
  ============================================ */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * NeikiEditor - A Modern WYSIWYG Editor
3
- * Version: 3.2.0
3
+ * Version: 3.4.0
4
4
  *
5
5
  * A lightweight, feature-rich text editor with support for:
6
6
  * - Rich text formatting (bold, italic, underline, etc.)
@@ -113,6 +113,8 @@
113
113
  'theme.darkBlue': 'Dark Blue',
114
114
  'theme.midnight': 'Midnight',
115
115
  'theme.void': 'Void',
116
+ 'theme.autumn': 'Autumn',
117
+ 'theme.dracula': 'Dracula',
116
118
 
117
119
  // Help modal
118
120
  'help.author': 'Author',
@@ -311,6 +313,8 @@
311
313
  'theme.darkBlue': 'Tmavě modrý',
312
314
  'theme.midnight': 'Půlnoc',
313
315
  'theme.void': 'Prázdnota',
316
+ 'theme.autumn': 'Podzim',
317
+ 'theme.dracula': 'Dracula',
314
318
  'help.author': 'Autor',
315
319
  'help.version': 'Verze',
316
320
  'help.github': 'GitHub',
@@ -494,6 +498,8 @@
494
498
  'theme.darkBlue': '深蓝色',
495
499
  'theme.midnight': '午夜',
496
500
  'theme.void': '虚空',
501
+ 'theme.autumn': '秋天',
502
+ 'theme.dracula': 'Dracula',
497
503
  'help.author': '作者',
498
504
  'help.version': '版本',
499
505
  'help.github': 'GitHub',
@@ -660,6 +666,8 @@
660
666
  'theme.darkBlue': 'Azul oscuro',
661
667
  'theme.midnight': 'Medianoche',
662
668
  'theme.void': 'Vacío',
669
+ 'theme.autumn': 'Otoño',
670
+ 'theme.dracula': 'Dracula',
663
671
  'help.author': 'Autor',
664
672
  'help.version': 'Versión',
665
673
  'help.github': 'GitHub',
@@ -826,6 +834,8 @@
826
834
  'theme.darkBlue': 'Dunkelblau',
827
835
  'theme.midnight': 'Mitternacht',
828
836
  'theme.void': 'Leere',
837
+ 'theme.autumn': 'Herbst',
838
+ 'theme.dracula': 'Dracula',
829
839
  'help.author': 'Autor',
830
840
  'help.version': 'Version',
831
841
  'help.github': 'GitHub',
@@ -992,6 +1002,8 @@
992
1002
  'theme.darkBlue': 'Bleu foncé',
993
1003
  'theme.midnight': 'Minuit',
994
1004
  'theme.void': 'Néant',
1005
+ 'theme.autumn': 'Automne',
1006
+ 'theme.dracula': 'Dracula',
995
1007
  'help.author': 'Auteur',
996
1008
  'help.version': 'Version',
997
1009
  'help.github': 'GitHub',
@@ -1158,6 +1170,8 @@
1158
1170
  'theme.darkBlue': 'Azul escuro',
1159
1171
  'theme.midnight': 'Meia-noite',
1160
1172
  'theme.void': 'Vazio',
1173
+ 'theme.autumn': 'Outono',
1174
+ 'theme.dracula': 'Dracula',
1161
1175
  'help.author': 'Autor',
1162
1176
  'help.version': 'Versão',
1163
1177
  'help.github': 'GitHub',
@@ -1324,6 +1338,8 @@
1324
1338
  'theme.darkBlue': 'ダークブルー',
1325
1339
  'theme.midnight': 'ミッドナイト',
1326
1340
  'theme.void': 'ヴォイド',
1341
+ 'theme.autumn': 'オータム',
1342
+ 'theme.dracula': 'Dracula',
1327
1343
  'help.author': '作成者',
1328
1344
  'help.version': 'バージョン',
1329
1345
  'help.github': 'GitHub',
@@ -1442,14 +1458,16 @@
1442
1458
  return text;
1443
1459
  }
1444
1460
 
1445
- const THEMES = ['light', 'dark', 'blue', 'dark-blue', 'midnight', 'void'];
1461
+ const THEMES = ['light', 'dark', 'blue', 'dark-blue', 'midnight', 'void', 'autumn', 'dracula'];
1446
1462
  const THEME_OPTIONS = [
1447
1463
  { value: 'light', labelKey: 'theme.light' },
1448
1464
  { value: 'dark', labelKey: 'theme.dark' },
1449
1465
  { value: 'blue', labelKey: 'theme.blue' },
1450
1466
  { value: 'dark-blue', labelKey: 'theme.darkBlue' },
1451
1467
  { value: 'midnight', labelKey: 'theme.midnight' },
1452
- { value: 'void', labelKey: 'theme.void' }
1468
+ { value: 'void', labelKey: 'theme.void' },
1469
+ { value: 'autumn', labelKey: 'theme.autumn' },
1470
+ { value: 'dracula', labelKey: 'theme.dracula' }
1453
1471
  ];
1454
1472
 
1455
1473
  const DEFAULT_CONFIG = {
@@ -2282,7 +2300,7 @@
2282
2300
 
2283
2301
  syncThemeClasses() {
2284
2302
  if (!this.overlay || !this.editor.getThemeClasses) return;
2285
- this.overlay.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
2303
+ this.overlay.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn', 'neiki-theme-dracula');
2286
2304
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
2287
2305
  this.overlay.classList.add(className);
2288
2306
  });
@@ -3061,10 +3079,10 @@
3061
3079
  <button class="neiki-modal-close" type="button">${Icons.close}</button>
3062
3080
  </div>
3063
3081
  <div class="neiki-modal-body" style="text-align: center; padding: 24px 20px;">
3064
- <img src="https://github.com/neikiri/neiki-editor/raw/main/assets/logo.png" alt="Neiki's Editor" style="width: 240px; height: auto; margin: 0 auto 16px; display: block;">
3082
+ <img src="https://github.com/neikiri/neiki-editor/raw/main/assets/logo.svg" alt="Neiki's Editor" style="width: 240px; height: auto; margin: 0 auto 16px; display: block;">
3065
3083
  <div style="font-size: 14px; line-height: 2; color: var(--neiki-text-primary);">
3066
3084
  <div><strong>${Utils.escapeHTML(t('help.author'))}:</strong> neikiri (Jindřich Stoklasa)</div>
3067
- <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.2.0</div>
3085
+ <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.4.0</div>
3068
3086
  <div><strong>${Utils.escapeHTML(t('help.github'))}:</strong> <a href="https://github.com/neikiri/neiki-editor" target="_blank" rel="noopener noreferrer" style="color: var(--neiki-accent);">github.com/neikiri/neiki-editor</a></div>
3069
3087
  <div><strong>${Utils.escapeHTML(t('help.documentation'))}:</strong> <a href="https://github.com/neikiri/neiki-editor/wiki" target="_blank" rel="noopener noreferrer" style="color: var(--neiki-accent);">Wiki</a></div>
3070
3088
  </div>
@@ -4060,7 +4078,7 @@
4060
4078
  const normalizedTheme = THEMES.includes(theme) ? theme : 'light';
4061
4079
  const classes = [];
4062
4080
 
4063
- if (normalizedTheme === 'dark' || normalizedTheme === 'dark-blue' || normalizedTheme === 'midnight' || normalizedTheme === 'void') {
4081
+ if (normalizedTheme === 'dark' || normalizedTheme === 'dark-blue' || normalizedTheme === 'midnight' || normalizedTheme === 'void' || normalizedTheme === 'autumn' || normalizedTheme === 'dracula') {
4064
4082
  classes.push('neiki-dark');
4065
4083
  }
4066
4084
 
@@ -4074,7 +4092,7 @@
4074
4092
  applyTheme(theme) {
4075
4093
  const normalizedTheme = THEMES.includes(theme) ? theme : 'light';
4076
4094
  this.config.theme = normalizedTheme;
4077
- this.container.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
4095
+ this.container.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn', 'neiki-theme-dracula');
4078
4096
  this.getThemeClasses(normalizedTheme).split(' ').filter(Boolean).forEach(className => {
4079
4097
  this.container.classList.add(className);
4080
4098
  });
@@ -5049,7 +5067,7 @@
5049
5067
  }
5050
5068
  break;
5051
5069
  case 'themeToggle':
5052
- isActive = this.config.theme === 'dark' || this.config.theme === 'dark-blue' || this.config.theme === 'midnight' || this.config.theme === 'void';
5070
+ isActive = this.config.theme === 'dark' || this.config.theme === 'dark-blue' || this.config.theme === 'midnight' || this.config.theme === 'void' || this.config.theme === 'autumn' || this.config.theme === 'dracula';
5053
5071
  break;
5054
5072
  }
5055
5073
  } catch (e) {
@@ -7301,7 +7319,7 @@
7301
7319
 
7302
7320
  syncThemeClasses() {
7303
7321
  if (!this.editor.getThemeClasses) return;
7304
- this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
7322
+ this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn', 'neiki-theme-dracula');
7305
7323
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
7306
7324
  this.menu.classList.add(className);
7307
7325
  });
@@ -7496,7 +7514,7 @@
7496
7514
 
7497
7515
  syncThemeClasses() {
7498
7516
  if (!this.editor.getThemeClasses) return;
7499
- this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
7517
+ this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn', 'neiki-theme-dracula');
7500
7518
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
7501
7519
  this.menu.classList.add(className);
7502
7520
  });
@@ -1 +1 @@
1
- .neiki-checkbox,.neiki-find-replace-option input{accent-color:var(--neiki-accent-color)}.neiki-modal,.neiki-modal-overlay.show .neiki-modal{animation:.2s neiki-modal-in}:root{--neiki-bg-primary:#ffffff;--neiki-bg-secondary:#f8f9fa;--neiki-bg-tertiary:#e9ecef;--neiki-bg-hover:#dee2e6;--neiki-bg-active:#ced4da;--neiki-border-color:#dee2e6;--neiki-border-color-dark:#adb5bd;--neiki-text-primary:#212529;--neiki-text-secondary:#495057;--neiki-text-muted:#6c757d;--neiki-accent-color:#0d6efd;--neiki-accent-hover:#0b5ed7;--neiki-danger-color:#dc3545;--neiki-success-color:#198754;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.05);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.1);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.1);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#f8f9fa;--neiki-statusbar-bg:#f8f9fa;--neiki-modal-overlay:rgba(0, 0, 0, 0.5);--neiki-scrollbar-thumb:#ced4da;--neiki-scrollbar-track:#f8f9fa;--neiki-selection-bg:#b3d7ff;--neiki-highlight-color:#fff3cd;--neiki-table-border:#dee2e6}.neiki-context-menu.neiki-dark,.neiki-editor.neiki-dark,.neiki-modal-overlay.neiki-dark{--neiki-bg-primary:#1e1e1e;--neiki-bg-secondary:#252526;--neiki-bg-tertiary:#2d2d30;--neiki-bg-hover:#3e3e42;--neiki-bg-active:#505050;--neiki-border-color:#3e3e42;--neiki-border-color-dark:#505050;--neiki-text-primary:#d4d4d4;--neiki-text-secondary:#a0a0a0;--neiki-text-muted:#808080;--neiki-accent-color:#4fc3f7;--neiki-accent-hover:#29b6f6;--neiki-danger-color:#f44336;--neiki-success-color:#4caf50;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.2);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.3);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.4);--neiki-editor-bg:#1e1e1e;--neiki-toolbar-bg:#252526;--neiki-statusbar-bg:#252526;--neiki-modal-overlay:rgba(0, 0, 0, 0.7);--neiki-scrollbar-thumb:#505050;--neiki-scrollbar-track:#2d2d30;--neiki-selection-bg:#264f78;--neiki-highlight-color:#5c4d00;--neiki-table-border:#3e3e42}.neiki-context-menu.neiki-theme-blue,.neiki-editor.neiki-theme-blue,.neiki-modal-overlay.neiki-theme-blue{--neiki-bg-primary:#f8fbff;--neiki-bg-secondary:#eef6ff;--neiki-bg-tertiary:#dbeafe;--neiki-bg-hover:#bfdbfe;--neiki-bg-active:#93c5fd;--neiki-border-color:#bfdbfe;--neiki-border-color-dark:#60a5fa;--neiki-text-primary:#0f172a;--neiki-text-secondary:#1e3a8a;--neiki-text-muted:#64748b;--neiki-accent-color:#2563eb;--neiki-accent-hover:#1d4ed8;--neiki-danger-color:#dc3545;--neiki-success-color:#16803d;--neiki-shadow-sm:0 1px 2px rgba(37, 99, 235, 0.08);--neiki-shadow-md:0 4px 10px rgba(37, 99, 235, 0.12);--neiki-shadow-lg:0 14px 28px rgba(37, 99, 235, 0.16);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#eaf4ff;--neiki-statusbar-bg:#eef6ff;--neiki-modal-overlay:rgba(15, 23, 42, 0.45);--neiki-scrollbar-thumb:#93c5fd;--neiki-scrollbar-track:#eff6ff;--neiki-selection-bg:#bfdbfe;--neiki-highlight-color:#fef08a;--neiki-table-border:#bfdbfe}.neiki-context-menu.neiki-theme-midnight,.neiki-editor.neiki-theme-midnight,.neiki-modal-overlay.neiki-theme-midnight{--neiki-bg-primary:#0d0d12;--neiki-bg-secondary:#13131a;--neiki-bg-tertiary:#1a1a24;--neiki-bg-hover:#22223a;--neiki-bg-active:#2c2c4a;--neiki-border-color:#2a2a3d;--neiki-border-color-dark:#3d3d5c;--neiki-text-primary:#e8e8f0;--neiki-text-secondary:#c084fc;--neiki-text-muted:#7070a0;--neiki-accent-color:#c084fc;--neiki-accent-hover:#a855f7;--neiki-danger-color:#f87171;--neiki-success-color:#4ade80;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.3);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.5);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.6);--neiki-editor-bg:#0a0a10;--neiki-toolbar-bg:#111118;--neiki-statusbar-bg:#111118;--neiki-modal-overlay:rgba(0, 0, 0, 0.8);--neiki-scrollbar-thumb:#2c2c4a;--neiki-scrollbar-track:#0d0d12;--neiki-selection-bg:#3b1f5e;--neiki-highlight-color:#3b1f5e;--neiki-table-border:#2a2a3d}.neiki-context-menu.neiki-theme-dark-blue,.neiki-editor.neiki-theme-dark-blue,.neiki-modal-overlay.neiki-theme-dark-blue{--neiki-bg-primary:#07111f;--neiki-bg-secondary:#0b1d33;--neiki-bg-tertiary:#102a46;--neiki-bg-hover:#173b61;--neiki-bg-active:#1d4f82;--neiki-border-color:#1f3f63;--neiki-border-color-dark:#2f6da5;--neiki-text-primary:#e6f1ff;--neiki-text-secondary:#b9d7f8;--neiki-text-muted:#7ea6cc;--neiki-accent-color:#38bdf8;--neiki-accent-hover:#0ea5e9;--neiki-danger-color:#fb7185;--neiki-success-color:#34d399;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.24);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.34);--neiki-shadow-lg:0 18px 36px rgba(0, 0, 0, 0.46);--neiki-editor-bg:#081827;--neiki-toolbar-bg:#0b1d33;--neiki-statusbar-bg:#0b1d33;--neiki-modal-overlay:rgba(0, 0, 0, 0.72);--neiki-scrollbar-thumb:#1d4f82;--neiki-scrollbar-track:#07111f;--neiki-selection-bg:#164e63;--neiki-highlight-color:#854d0e;--neiki-table-border:#1f3f63}.neiki-editor.neiki-theme-midnight .neiki-fontsize-input,.neiki-editor.neiki-theme-midnight .neiki-select,.neiki-editor.neiki-theme-void .neiki-fontsize-input,.neiki-editor.neiki-theme-void .neiki-select{color:var(--neiki-text-secondary)}.neiki-context-menu.neiki-theme-void,.neiki-editor.neiki-theme-void,.neiki-modal-overlay.neiki-theme-void{--neiki-bg-primary:#0f0a1e;--neiki-bg-secondary:#150f2b;--neiki-bg-tertiary:#1e1640;--neiki-bg-hover:#2a1f52;--neiki-bg-active:#362a66;--neiki-border-color:#3d2e6b;--neiki-border-color-dark:#55408f;--neiki-text-primary:#ece6ff;--neiki-text-secondary:#d68bff;--neiki-text-muted:#8a7ab0;--neiki-accent-color:#b026ff;--neiki-accent-hover:#e040fb;--neiki-danger-color:#ff4d6d;--neiki-success-color:#39ff9d;--neiki-shadow-sm:0 1px 2px rgba(124, 58, 237, 0.25);--neiki-shadow-md:0 4px 16px rgba(124, 58, 237, 0.4);--neiki-shadow-lg:0 16px 40px rgba(176, 38, 255, 0.35);--neiki-editor-bg:#0a0614;--neiki-toolbar-bg:#130c26;--neiki-statusbar-bg:#130c26;--neiki-modal-overlay:rgba(5, 2, 15, 0.85);--neiki-scrollbar-thumb:#4c3684;--neiki-scrollbar-track:#130c26;--neiki-selection-bg:#4c1d95;--neiki-highlight-color:#3c1361;--neiki-table-border:#3d2e6b}.neiki-editor.neiki-theme-void .neiki-toolbar{border-bottom:1px solid var(--neiki-border-color);box-shadow:0 1px 12px rgba(176,38,255,.15)}.neiki-context-menu.neiki-theme-void .neiki-context-item:hover,.neiki-editor.neiki-theme-void .neiki-toolbar-btn:hover{box-shadow:0 0 10px rgba(176,38,255,.5)}.neiki-editor.neiki-theme-void .neiki-toolbar-btn.active{box-shadow:0 0 8px rgba(176,38,255,.65)}.neiki-editor.neiki-theme-void .neiki-content ::selection,.neiki-editor.neiki-theme-void .neiki-content::selection{background:var(--neiki-selection-bg);text-shadow:0 0 6px rgba(176,38,255,.6)}.neiki-editor{display:flex;flex-direction:column;width:100%;height:100%;min-height:400px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;color:var(--neiki-text-primary);box-shadow:var(--neiki-shadow-md)}.neiki-editor *{box-sizing:border-box}.neiki-editor.neiki-fullscreen{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:999999!important;border-radius:0!important;border:none!important}.neiki-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:var(--neiki-toolbar-bg);border-bottom:1px solid var(--neiki-border-color);min-height:44px}.neiki-editor.neiki-sticky-toolbar{overflow:visible}.neiki-editor.neiki-sticky-toolbar .neiki-toolbar{position:sticky;top:0;z-index:100;border-radius:8px 8px 0 0}.neiki-toolbar-group{display:inline-flex;align-items:center;gap:2px;padding:0 4px;flex-wrap:nowrap}.neiki-toolbar-group:not(:last-child){border-right:1px solid var(--neiki-border-color);padding-right:8px;margin-right:4px}.neiki-toolbar-divider{width:1px;height:24px;background:var(--neiki-border-color);margin:0 4px}.neiki-btn,.neiki-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--neiki-text-secondary);transition:.15s;position:relative}.neiki-btn:hover,.neiki-fontsize-btn:hover,.neiki-modal-close:hover,.neiki-preview-close:hover,.neiki-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-text-primary)}.neiki-btn:active,.neiki-floating-btn:active,.neiki-toolbar-btn:active{background:var(--neiki-bg-active)}.neiki-btn.active,.neiki-toolbar-btn.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-btn:disabled,.neiki-toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.neiki-btn svg,.neiki-toolbar-btn svg{width:18px;height:18px;fill:currentColor;pointer-events:none}.neiki-select{height:32px;padding:0 28px 0 10px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;min-width:100px}.neiki-select:hover{border-color:var(--neiki-border-color-dark)}.neiki-select:focus,.neiki-theme-menu-select:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-custom,.neiki-statusbar{border-top:1px solid var(--neiki-border-color)}.neiki-theme-select-wrapper{display:inline-flex;align-items:center;gap:6px;height:32px}.neiki-theme-select-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--neiki-text-secondary);width:18px;height:18px;flex-shrink:0}.neiki-context-item svg,.neiki-context-menu-item svg,.neiki-dropdown-item-icon svg,.neiki-floating-btn svg,.neiki-img-toolbar-btn svg,.neiki-theme-select-icon svg{width:16px;height:16px;fill:currentColor}.neiki-theme-select{min-width:116px;max-width:150px}.neiki-color-btn{position:relative;width:36px}.neiki-color-btn .neiki-color-indicator{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);width:16px;height:3px;border-radius:1px;background:currentColor}.neiki-checkbox-wrapper{display:flex;align-items:center;gap:6px;padding:0 8px;height:32px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer;user-select:none}.neiki-checkbox{width:16px;height:16px;cursor:pointer}.neiki-content-wrapper,.neiki-editor-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.neiki-content{flex:1;padding:20px 24px;background:var(--neiki-editor-bg);overflow-y:auto;outline:0;line-height:1.6;color:var(--neiki-text-primary);min-height:200px}.neiki-code-view-textarea:focus,.neiki-content:focus{outline:0}.neiki-content:empty::before{content:attr(data-placeholder);color:var(--neiki-text-muted);font-style:italic;pointer-events:none}.neiki-content.neiki-drag-over{border:2px dashed var(--neiki-accent-color);background:rgba(13,110,253,.05)}.neiki-content.neiki-drag-over::after{content:'Drop media here';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--neiki-accent-color);font-weight:600;font-size:16px;pointer-events:none;z-index:10}.neiki-drop-indicator{position:absolute;width:3px;min-height:22px;background:var(--neiki-accent-color);border-radius:999px;box-shadow:0 0 0 3px rgba(13,110,253,.18);pointer-events:none;opacity:0;transform:translateX(-1px);transition:opacity 80ms;z-index:80}.neiki-drop-indicator::after,.neiki-drop-indicator::before{content:'';position:absolute;left:50%;width:9px;height:9px;background:var(--neiki-accent-color);border-radius:50%;transform:translateX(-50%)}.neiki-drop-indicator::before{top:-4px}.neiki-drop-indicator::after{bottom:-4px}.neiki-drop-indicator.show{opacity:1}.neiki-editor.neiki-disabled{opacity:.6;pointer-events:none}.neiki-content::-webkit-scrollbar{width:10px}.neiki-content::-webkit-scrollbar-track{background:var(--neiki-scrollbar-track)}.neiki-content::-webkit-scrollbar-thumb{background:var(--neiki-scrollbar-thumb);border-radius:5px}.neiki-content::-webkit-scrollbar-thumb:hover{background:var(--neiki-border-color-dark)}.neiki-content p{margin:0 0 1em}.neiki-content h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content ol,.neiki-content ul{margin:0 0 1em;padding-left:2em}.neiki-content li{margin-bottom:.25em}.neiki-content blockquote{margin:0 0 1em;padding:10px 20px;border-left:4px solid var(--neiki-accent-color);background:var(--neiki-bg-secondary);font-style:italic}.neiki-content code,.neiki-content pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content a:hover{color:var(--neiki-accent-hover)}.neiki-content img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content video{display:block;max-width:100%;height:auto;margin:0 0 1em;border-radius:6px;background:#000}.neiki-highlight{background:var(--neiki-highlight-color);padding:1px 0}.neiki-content table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content table td,.neiki-content table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content table td:hover,.neiki-content table th:hover,.neiki-context-item:hover,.neiki-context-menu-item:hover,.neiki-dropdown-item:hover,.neiki-fontsize-dropdown-item:hover,.neiki-special-char-item:hover{background:var(--neiki-bg-hover)}.neiki-content table td.neiki-cell-selected,.neiki-content table th.neiki-cell-selected{background:var(--neiki-selection-bg)}.neiki-table-resize-handle{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:10}.neiki-table-resize-handle:hover{background:var(--neiki-accent-color)}.neiki-statusbar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--neiki-statusbar-bg);font-size:12px;color:var(--neiki-text-muted)}.neiki-statusbar-left,.neiki-statusbar-right{display:flex;align-items:center;gap:16px}.neiki-statusbar-item{display:flex;align-items:center;gap:4px}.neiki-statusbar-block{font-family:Consolas,Monaco,monospace;font-size:11px;padding:2px 6px;background:var(--neiki-bg-tertiary);border-radius:3px;color:var(--neiki-accent-color);font-weight:600;border:1px solid var(--neiki-border-color)}.neiki-color-picker,.neiki-dropdown{position:absolute;top:100%;left:0;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg)}.neiki-dropdown{min-width:180px;background:var(--neiki-bg-primary);border-radius:6px;padding:4px;margin-top:4px}.neiki-dropdown-item{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-dropdown-item.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color)}.neiki-context-divider,.neiki-context-menu-divider,.neiki-dropdown-divider{height:1px;background:var(--neiki-border-color);margin:4px 0}.neiki-color-picker{background:var(--neiki-bg-primary);border-radius:8px;padding:8px;margin-top:4px;display:flex;flex-direction:column;gap:6px}.neiki-color-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-color-custom{display:flex;align-items:center;gap:6px}.neiki-color-custom-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border:1px solid var(--neiki-border-color);border-radius:4px;padding:2px;cursor:pointer;background:0 0}.neiki-color-custom-input::-webkit-color-swatch-wrapper{padding:0}.neiki-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.neiki-color-custom-input::-moz-color-swatch{border:none;border-radius:2px}.neiki-color-hex-input{flex:1;height:28px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;font-size:12px;font-family:monospace;background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);outline:0}.neiki-color-hex-input:focus{border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-apply-btn{height:28px;padding:0 10px;border:none;border-radius:4px;font-size:12px;font-weight:500;background:var(--neiki-accent-color);color:#fff;cursor:pointer;transition:background .15s}.neiki-emoji-picker,.neiki-special-picker{max-width:calc(100vw - 16px);overflow-y:auto;background:var(--neiki-bg-primary);padding:8px;margin-top:4px;position:absolute;top:100%;z-index:1000;box-shadow:var(--neiki-shadow-lg);left:0}.neiki-btn-primary:hover,.neiki-button-primary:hover,.neiki-color-apply-btn:hover{background:var(--neiki-accent-hover)}.neiki-color-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--neiki-border-color);transition:transform .1s}.neiki-color-swatch:hover{transform:scale(1.2);z-index:1}.neiki-color-swatch.neiki-color-reset{background:#fff;position:relative;overflow:hidden;border:1px solid #ccc}.neiki-color-preset.active,.neiki-special-item:hover{border-color:var(--neiki-accent-color)}.neiki-color-swatch.neiki-color-reset::after{content:'';position:absolute;top:50%;left:-2px;right:-2px;height:2px;background:#e53935;transform:rotate(-45deg);transform-origin:center;pointer-events:none}.neiki-color-picker-label{font-size:11px;font-weight:600;color:var(--neiki-text-muted);text-transform:uppercase;margin-bottom:8px}.neiki-emoji-item,.neiki-special-item{align-items:center;font-size:18px;cursor:pointer}.neiki-emoji-picker{width:280px;max-height:250px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-emoji-item{display:flex;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background .15s,transform .1s}.neiki-emoji-item:hover{background:var(--neiki-bg-hover);transform:scale(1.2)}.neiki-special-picker{width:320px;max-height:280px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.neiki-special-item{display:flex;justify-content:center;width:32px;height:32px;border-radius:4px;border:1px solid var(--neiki-border-color);background:var(--neiki-bg-secondary);transition:.15s}.neiki-special-item:hover{background:var(--neiki-accent-color);color:#fff;transform:scale(1.1)}.neiki-highlight-find{background:#ffeb3b;padding:1px 0;border-radius:2px}.neiki-highlight-current{background:#ff9800;outline:#e65100 solid 2px}.neiki-color-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.neiki-color-preset{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.neiki-color-preset:hover{transform:scale(1.1)}.neiki-color-preset.neiki-color-reset{background:linear-gradient(45deg,#fff 45%,red 45%,red 55%,#fff 55%);border:1px solid var(--neiki-border-color)}.neiki-color-custom{display:flex;align-items:center;gap:8px;padding-top:8px;border-top:1px solid var(--neiki-border-color)}.neiki-color-custom input[type=color]{width:40px;height:32px;padding:0;border:1px solid var(--neiki-border-color);border-radius:4px;cursor:pointer}.neiki-color-custom input[type=text]{flex:1;height:32px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;font-family:monospace}.neiki-table-picker,.neiki-table-picker-cell{border:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary)}.neiki-table-picker{position:absolute;top:100%;left:0;z-index:1000;border-radius:8px;box-shadow:var(--neiki-shadow-lg);padding:12px;display:none}.neiki-context-menu.show,.neiki-find-replace.show,.neiki-fontsize-dropdown.show,.neiki-table-picker.show{display:block}.neiki-table-picker-label{font-size:12px;color:var(--neiki-text-secondary);margin-bottom:8px;text-align:center}.neiki-dark .neiki-modal h3,.neiki-dark .neiki-modal-header h3,.neiki-modal-title{color:var(--neiki-text-primary)}.neiki-table-picker-grid{display:grid;grid-template-columns:repeat(10,20px);gap:2px}.neiki-table-picker-cell{width:20px;height:20px;border-radius:2px;cursor:pointer;transition:background .1s}.neiki-table-picker-cell.active,.neiki-table-picker-cell:hover{background:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-special-chars{position:absolute;top:100%;left:0;z-index:1000;width:280px;max-height:300px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;box-shadow:var(--neiki-shadow-lg);display:none;overflow:hidden}.neiki-special-chars.show{display:flex;flex-direction:column}.neiki-special-chars-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;padding:8px;overflow-y:auto}.neiki-special-char-item{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:16px;border-radius:4px;cursor:pointer;transition:background .1s}.neiki-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--neiki-modal-overlay);z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.neiki-modal-overlay.active,[data-tooltip]:hover::after{opacity:1;visibility:visible}.neiki-modal{background:var(--neiki-bg-primary);border-radius:12px;box-shadow:var(--neiki-shadow-lg);width:100%;max-width:440px;max-height:90vh;overflow:hidden}.neiki-modal-wide{max-width:520px}.neiki-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--neiki-border-color)}.neiki-modal-title{font-size:16px;font-weight:600;margin:0}.neiki-modal-close,.neiki-preview-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:4px;cursor:pointer;color:var(--neiki-text-muted);transition:background .15s}.neiki-modal-body{padding:20px;overflow-y:auto}.neiki-modal h3,.neiki-modal-header h3{color:#000;margin:0}.neiki-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--neiki-border-color)}.neiki-modal-footer .neiki-btn{width:auto;height:38px;padding:0 16px;font-size:14px;font-weight:500;border-radius:6px}.neiki-form-group{margin-bottom:16px}.neiki-find-replace-row:last-child,.neiki-form-group:last-child{margin-bottom:0}.neiki-form-group label,.neiki-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--neiki-text-secondary)}.neiki-form-input,.neiki-input{width:100%;height:40px;padding:0 12px;border:1px solid var(--neiki-border-color);border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;transition:border-color .15s}.neiki-form-input:focus,.neiki-form-textarea:focus,.neiki-input:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 3px rgba(13,110,253,.15)}.neiki-form-input::placeholder,.neiki-input::placeholder{color:var(--neiki-text-muted)}.neiki-input[type=file]{display:flex;align-items:center;padding:0;cursor:pointer}.neiki-input[type=file]::file-selector-button{height:100%;padding:0 14px;margin-right:12px;border:none;border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-tertiary,var(--neiki-bg-hover));color:var(--neiki-text-primary);font-size:13px;font-weight:500;cursor:pointer;border-radius:5px 0 0 5px}.neiki-image-upload-zone{position:relative;display:grid;justify-items:center;gap:7px;padding:24px 18px;border:2px dashed var(--neiki-border-color);border-radius:8px;background:var(--neiki-bg-secondary);color:var(--neiki-text-secondary);text-align:center;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.neiki-find-replace,.neiki-form-textarea{border:1px solid var(--neiki-border-color)}.neiki-image-upload-zone:focus-visible,.neiki-image-upload-zone:hover{border-color:var(--neiki-accent-color);background:var(--neiki-bg-primary);box-shadow:0 0 0 3px rgba(13,110,253,.12);outline:0}.neiki-image-upload-zone.drag-over{border-color:var(--neiki-accent-color);background:rgba(13,110,253,.08)}.neiki-form-divider::after,.neiki-form-divider::before{content:'';height:1px;background:var(--neiki-border-color)}.neiki-image-upload-zone.has-files{border-style:solid;border-color:var(--neiki-accent-color)}.neiki-image-upload-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.neiki-image-upload-icon{width:38px;height:38px;color:var(--neiki-accent-color)}.neiki-image-upload-icon svg{width:100%;height:100%;fill:currentColor}.neiki-image-upload-title{color:var(--neiki-text-primary);font-size:14px;font-weight:600}.neiki-image-upload-files,.neiki-image-upload-hint{max-width:100%;color:var(--neiki-text-muted);font-size:12px;line-height:1.4}.neiki-image-upload-files{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neiki-image-upload-zone.has-files .neiki-image-upload-files{color:var(--neiki-accent-color);font-weight:500}.neiki-form-row{display:flex;gap:16px}.neiki-form-divider{display:flex;align-items:center;margin:16px 0;text-align:center;position:relative}.neiki-form-divider::before{flex:1;margin-right:12px}.neiki-form-divider::after{flex:1;margin-left:12px}.neiki-form-divider span{color:var(--neiki-text-muted);font-size:12px;font-weight:500;text-transform:uppercase}.neiki-form-textarea{width:100%;min-height:120px;padding:12px;border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s}.neiki-btn-primary,.neiki-btn-secondary,.neiki-button{display:inline-flex;align-items:center;height:38px;padding:0 16px;font-size:14px;transition:.15s;font-weight:500;cursor:pointer}.neiki-button{justify-content:center;gap:6px;border:1px solid transparent;border-radius:6px}.neiki-btn-primary,.neiki-button-primary{background:var(--neiki-accent-color);color:#fff}.neiki-btn-secondary,.neiki-button-secondary{background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);border-color:var(--neiki-border-color)}.neiki-btn-primary,.neiki-btn-secondary{justify-content:center;border:1px solid transparent;border-radius:6px}.neiki-btn-secondary{border-color:var(--neiki-border-color)}.neiki-button-danger{background:var(--neiki-danger-color);color:#fff}.neiki-code-view,.neiki-find-replace,.neiki-find-replace-input{background:var(--neiki-bg-primary)}.neiki-button-danger:hover{opacity:.9}.neiki-find-replace{position:absolute;top:0;right:0;z-index:100;width:360px;border-radius:0 0 0 8px;box-shadow:var(--neiki-shadow-lg);display:none}.neiki-find-replace-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neiki-border-color)}.neiki-code-view-title,.neiki-find-replace-title{font-size:13px;font-weight:600;color:var(--neiki-text-primary)}.neiki-find-replace-body{padding:12px}.neiki-find-replace-row{display:flex;gap:8px;margin-bottom:10px}.neiki-find-replace-input{flex:1;height:32px;padding:0 10px;border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px}.neiki-find-replace-input:focus{outline:0;border-color:var(--neiki-accent-color)}.neiki-find-replace-options{display:flex;align-items:center;gap:12px;margin-bottom:10px}.neiki-find-replace-option{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer}.neiki-find-replace-actions{display:flex;gap:6px;flex-wrap:wrap}.neiki-find-replace-btn{height:28px;padding:0 10px;font-size:12px;border-radius:4px}.neiki-find-replace-count{font-size:12px;color:var(--neiki-text-muted);margin-left:auto}.neiki-code-view{position:absolute;top:0;left:0;right:0;bottom:0;z-index:50;display:none;flex-direction:column}.neiki-code-view.show,.neiki-drop-overlay.show{display:flex}.neiki-code-view-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);flex-shrink:0}.neiki-code-view-editor{position:relative;flex:1;width:100%;min-height:0;background:var(--neiki-bg-primary)}.neiki-code-view-highlight,.neiki-code-view-textarea{position:absolute;inset:0;width:100%;height:100%;padding:16px;border:none;font-family:Consolas,Monaco,'Courier New',monospace;font-size:13px;line-height:1.5;tab-size:2;white-space:pre-wrap;word-break:break-word;overflow:auto}.neiki-context-menu,.neiki-floating-toolbar{position:fixed;box-shadow:var(--neiki-shadow-lg)}.neiki-code-view-highlight{margin:0;color:var(--neiki-text-primary);pointer-events:none;user-select:none}.neiki-code-view-textarea{background:0 0;color:transparent;caret-color:var(--neiki-text-primary);resize:none;z-index:1}.neiki-code-view-textarea::selection{background:var(--neiki-selection-bg);color:transparent}.neiki-html-punct{color:var(--neiki-text-muted)}.neiki-html-tag{color:#0f74d8;font-weight:600}.neiki-html-attr{color:#9a5b00}.neiki-html-string{color:#16803d}.neiki-html-comment{color:var(--neiki-text-muted);font-style:italic}.neiki-dark .neiki-html-tag{color:#7dd3fc}.neiki-dark .neiki-html-attr{color:#fbbf24}.neiki-dark .neiki-html-string{color:#86efac}.neiki-code-view-apply{width:auto!important;padding:0 12px!important;display:inline-flex;align-items:center;gap:4px;height:30px;font-size:12px;background:var(--neiki-accent-color)!important;color:#fff!important;border-radius:5px}.neiki-context-menu,.neiki-floating-btn,.neiki-floating-toolbar{background:var(--neiki-bg-primary)}.neiki-code-view-apply:hover{background:var(--neiki-accent-hover)!important;color:#fff!important}.neiki-code-view-apply svg{width:14px!important;height:14px!important}.neiki-context-menu{z-index:10001;min-width:180px;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px;display:none}.neiki-context-item,.neiki-context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-context-item.neiki-context-danger,.neiki-context-menu-item.danger{color:var(--neiki-danger-color)}.neiki-context-item.neiki-context-disabled{opacity:.4;cursor:default;pointer-events:none}.neiki-floating-toolbar{z-index:1000;display:none;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px}.neiki-floating-toolbar.show{display:flex;align-items:center;gap:2px}.neiki-floating-btn{width:32px;height:32px;border:none;color:var(--neiki-text-primary);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}.neiki-floating-btn:hover,.neiki-img-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-accent-color)}.neiki-floating-toolbar .neiki-btn{width:28px;height:28px}.neiki-chevron svg,.neiki-floating-toolbar .neiki-btn svg{width:14px;height:14px}.neiki-floating-divider,.neiki-img-toolbar-separator{width:1px;height:20px;background:var(--neiki-border-color);margin:0 2px}.neiki-floating-move-btn svg{width:16px;height:16px}.neiki-more-btn,[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:6px 10px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:11px;font-weight:500;white-space:nowrap;border-radius:4px;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;pointer-events:none;z-index:10002;margin-bottom:6px}.neiki-drop-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(13,110,253,.1);border:3px dashed var(--neiki-accent-color);border-radius:8px;display:none;align-items:center;justify-content:center;z-index:100;pointer-events:none}.neiki-img-size-label,.neiki-img-toolbar{left:50%;transform:translateX(-50%);white-space:nowrap}.neiki-drop-overlay-text{font-size:18px;font-weight:600;color:var(--neiki-accent-color)}.neiki-img-resizable{display:inline-block;position:relative;outline:2px solid var(--neiki-accent-color);outline-offset:2px;border-radius:4px;line-height:0;user-select:none;-webkit-user-select:none}.neiki-img-resizable img,.neiki-img-resizable video{display:block;max-width:100%;user-select:none;-webkit-user-select:none}.neiki-img-resize-handle{position:absolute;width:12px;height:12px;background:var(--neiki-accent-color);border:2px solid #fff;border-radius:2px;z-index:10;box-shadow:0 1px 3px rgba(0,0,0,.3)}.neiki-img-resize-handle.nw{top:-6px;left:-6px;cursor:nw-resize}.neiki-img-resize-handle.ne{top:-6px;right:-6px;cursor:ne-resize}.neiki-img-resize-handle.sw{bottom:-6px;left:-6px;cursor:sw-resize}.neiki-img-resize-handle.se{bottom:-6px;right:-6px;cursor:se-resize}.neiki-img-size-label{position:absolute;bottom:-32px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:13px;line-height:1.4;font-weight:600;padding:4px 12px;border-radius:6px;pointer-events:none;z-index:10;opacity:.9}@media (pointer:coarse){.neiki-img-resize-handle{width:20px;height:20px}.neiki-img-resize-handle.nw{top:-10px;left:-10px}.neiki-img-resize-handle.ne{top:-10px;right:-10px}.neiki-img-resize-handle.sw{bottom:-10px;left:-10px}.neiki-img-resize-handle.se{bottom:-10px;right:-10px}}.neiki-img-toolbar{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-md);z-index:20;user-select:none;-webkit-user-select:none}.neiki-img-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:0 0;color:var(--neiki-text-secondary);cursor:pointer;transition:.15s}.neiki-img-toolbar-btn-danger:hover{background:#fee2e2;color:#dc2626}.neiki-editor.neiki-dark .neiki-img-toolbar-btn-danger:hover{background:#451a1a;color:#f87171}.neiki-img-drag-handle{cursor:grab}.neiki-block-grip:active,.neiki-img-drag-handle:active{cursor:grabbing}.neiki-table-col-resize-handle{position:absolute;width:6px;cursor:col-resize;z-index:10;background:0 0;transition:background .1s}.neiki-table-col-resize-handle:active,.neiki-table-col-resize-handle:hover{background:var(--neiki-accent-color);opacity:.6;border-radius:3px}.neiki-block-grip{position:absolute;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--neiki-text-muted);opacity:0;transition:opacity .15s,color .15s;border-radius:4px;z-index:5;user-select:none}.neiki-content-wrapper:hover .neiki-block-grip{opacity:.5}.neiki-block-grip:hover{opacity:1!important;color:var(--neiki-text-primary);background:var(--neiki-bg-hover)}.neiki-block-grip svg{width:14px;height:14px;fill:currentColor;pointer-events:none}@media (hover:none),(pointer:coarse){.neiki-block-grip{display:none!important}}.neiki-block-ghost{position:fixed;z-index:100000;pointer-events:none;opacity:.7;background:var(--neiki-bg-primary);border:2px solid var(--neiki-accent-color);border-radius:6px;padding:8px 12px;box-shadow:var(--neiki-shadow-lg);max-height:120px;overflow:hidden}.neiki-block-placeholder{border:2px dashed var(--neiki-accent-color);border-radius:6px;background:rgba(13,110,253,.05);margin:2px 0;transition:height .15s}@media print{.neiki-content,.neiki-editor-wrapper{overflow:visible!important}.neiki-editor{border:none!important;box-shadow:none!important}.neiki-block-grip,.neiki-code-view-header,.neiki-find-replace,.neiki-floating-toolbar,.neiki-img-resize-handle,.neiki-img-size-label,.neiki-img-toolbar,.neiki-statusbar,.neiki-table-col-resize-handle,.neiki-toolbar{display:none!important}.neiki-content{padding:0!important}}@media (max-width:768px){.neiki-toolbar{padding:4px;gap:1px}.neiki-toolbar-group{padding:0 2px}.neiki-toolbar-group:not(:last-child){padding-right:4px;margin-right:2px}.neiki-btn{width:28px;height:28px}.neiki-btn svg{width:16px;height:16px}.neiki-select{height:28px;min-width:80px;font-size:12px;padding:0 24px 0 8px}.neiki-content,.neiki-modal-footer,.neiki-modal-header{padding:12px 16px}.neiki-statusbar{padding:4px 8px;font-size:11px}.neiki-modal{width:calc(100% - 20px);max-width:none;margin:10px;max-height:calc(100vh - 40px);border-radius:10px}.neiki-modal-overlay{padding:10px}.neiki-modal-body{padding:16px;max-height:calc(100vh - 160px);overflow-y:auto;-webkit-overflow-scrolling:touch}.neiki-modal-footer .neiki-btn{height:36px;padding:0 14px;font-size:13px}.neiki-form-row{flex-direction:column;gap:12px}.neiki-form-input,.neiki-input{height:38px;font-size:16px}.neiki-image-upload-zone{grid-template-columns:32px 1fr;justify-items:start;gap:4px 10px;padding:14px;text-align:left}.neiki-image-upload-icon{grid-row:span 3;width:30px;height:30px}.neiki-image-upload-title{font-size:13px}.neiki-image-upload-files,.neiki-image-upload-hint{font-size:11px}.neiki-find-replace{width:100%;border-radius:0}.neiki-checkbox-wrapper{padding:0 4px;font-size:11px}.neiki-color-picker{left:auto;right:0}}@media (max-width:480px){.neiki-toolbar-group:not(:last-child){border-right:none;padding-right:2px;margin-right:0}.neiki-select{min-width:60px}.neiki-statusbar-left,.neiki-statusbar-right{gap:8px}.neiki-img-toolbar{padding:3px;gap:1px;border-radius:5px;left:0;transform:none;max-width:calc(100vw - 20px)}.neiki-img-toolbar-btn{width:26px;height:26px}.neiki-img-toolbar-btn svg{width:14px;height:14px}.neiki-img-toolbar-separator{height:16px;margin:0 1px}}@keyframes neiki-fade-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.neiki-color-picker.show,.neiki-dropdown.show,.neiki-emoji-picker.show,.neiki-special-chars.show,.neiki-table-picker.show{animation:.15s neiki-fade-in}@keyframes neiki-modal-in{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.neiki-fontsize-widget{display:inline-flex;align-items:center;position:relative;height:32px;border:1px solid var(--neiki-border-color);border-radius:4px;overflow:visible;background:var(--neiki-bg-primary)}.neiki-fontsize-btn{display:flex;align-items:center;justify-content:center;width:26px;height:30px;background:0 0;border:none;cursor:pointer;color:var(--neiki-text-secondary);transition:background .15s,color .15s;padding:0}.neiki-fontsize-dropdown-item,.neiki-fontsize-input{color:var(--neiki-text-primary);text-align:center;font-size:13px}.neiki-fontsize-input{width:38px;height:30px;border:none;border-left:1px solid var(--neiki-border-color);border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary);outline:0;-moz-appearance:textfield;appearance:textfield;padding:0}.neiki-fontsize-input::-webkit-inner-spin-button,.neiki-fontsize-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.neiki-fontsize-dropdown{display:none;position:absolute;top:100%;left:0;z-index:1000;min-width:70px;max-height:240px;overflow-y:auto;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px}.neiki-fontsize-dropdown-item{padding:6px 12px;cursor:pointer;border-radius:4px;transition:background .1s}.neiki-insert-dropdown-btn{width:auto!important;padding:0 8px!important;gap:4px;font-size:13px;font-weight:500}.neiki-insert-label{font-size:13px;pointer-events:none}.neiki-chevron{display:inline-flex;pointer-events:none}.neiki-insert-dropdown,.neiki-more-dropdown{display:none;position:absolute;top:100%;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px;background:var(--neiki-bg-primary)}.neiki-insert-dropdown{left:0;min-width:160px;max-width:calc(100vw - 16px);border-radius:6px}.neiki-insert-dropdown.show,.neiki-more-dropdown.show{display:block;animation:.15s neiki-fade-in}.neiki-more-dropdown{right:0;border-radius:6px}.neiki-lang-cs .neiki-more-dropdown{min-width:165px}.neiki-dropdown-item-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.neiki-dropdown-item-danger{color:var(--neiki-danger-color)!important}.neiki-dropdown-item-danger:hover{background:rgba(220,53,69,.1)}.neiki-theme-menu-item{cursor:default}.neiki-theme-menu-select{min-width:105px;height:28px;padding:0 24px 0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;cursor:pointer}.neiki-autosave-badge{font-size:12px;font-weight:600;color:var(--neiki-text-muted);padding:0 4px}.neiki-autosave-badge.active{color:var(--neiki-success-color)}.neiki-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100000;display:flex;align-items:center;justify-content:center;padding:30px;animation:.2s neiki-fade-in}.neiki-preview-modal{background:var(--neiki-bg-primary);border-radius:12px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,.3);animation:.2s neiki-modal-in}.neiki-preview-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);font-weight:600;font-size:14px;color:var(--neiki-text-primary)}.neiki-preview-close svg{width:18px;height:18px;fill:currentColor}.neiki-preview-body{flex:1;overflow:auto;padding:30px;color:var(--neiki-text-primary);font-size:15px;line-height:1.7}.neiki-preview-body img{max-width:100%}.neiki-preview-body table{border-collapse:collapse;width:100%}.neiki-preview-body table td,.neiki-preview-body table th{border:1px solid var(--neiki-border-color);padding:8px 12px}.neiki-statusbar-autosave{font-style:italic;color:var(--neiki-success-color);font-size:11px}
1
+ .neiki-checkbox,.neiki-find-replace-option input{accent-color:var(--neiki-accent-color)}.neiki-modal,.neiki-modal-overlay.show .neiki-modal{animation:.2s neiki-modal-in}:root{--neiki-bg-primary:#ffffff;--neiki-bg-secondary:#f8f9fa;--neiki-bg-tertiary:#e9ecef;--neiki-bg-hover:#dee2e6;--neiki-bg-active:#ced4da;--neiki-border-color:#dee2e6;--neiki-border-color-dark:#adb5bd;--neiki-text-primary:#212529;--neiki-text-secondary:#495057;--neiki-text-muted:#6c757d;--neiki-accent-color:#0d6efd;--neiki-accent-hover:#0b5ed7;--neiki-danger-color:#dc3545;--neiki-success-color:#198754;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.05);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.1);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.1);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#f8f9fa;--neiki-statusbar-bg:#f8f9fa;--neiki-modal-overlay:rgba(0, 0, 0, 0.5);--neiki-scrollbar-thumb:#ced4da;--neiki-scrollbar-track:#f8f9fa;--neiki-selection-bg:#b3d7ff;--neiki-highlight-color:#fff3cd;--neiki-table-border:#dee2e6}.neiki-context-menu.neiki-dark,.neiki-editor.neiki-dark,.neiki-modal-overlay.neiki-dark{--neiki-bg-primary:#1e1e1e;--neiki-bg-secondary:#252526;--neiki-bg-tertiary:#2d2d30;--neiki-bg-hover:#3e3e42;--neiki-bg-active:#505050;--neiki-border-color:#3e3e42;--neiki-border-color-dark:#505050;--neiki-text-primary:#d4d4d4;--neiki-text-secondary:#a0a0a0;--neiki-text-muted:#808080;--neiki-accent-color:#4fc3f7;--neiki-accent-hover:#29b6f6;--neiki-danger-color:#f44336;--neiki-success-color:#4caf50;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.2);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.3);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.4);--neiki-editor-bg:#1e1e1e;--neiki-toolbar-bg:#252526;--neiki-statusbar-bg:#252526;--neiki-modal-overlay:rgba(0, 0, 0, 0.7);--neiki-scrollbar-thumb:#505050;--neiki-scrollbar-track:#2d2d30;--neiki-selection-bg:#264f78;--neiki-highlight-color:#5c4d00;--neiki-table-border:#3e3e42}.neiki-context-menu.neiki-theme-blue,.neiki-editor.neiki-theme-blue,.neiki-modal-overlay.neiki-theme-blue{--neiki-bg-primary:#f8fbff;--neiki-bg-secondary:#eef6ff;--neiki-bg-tertiary:#dbeafe;--neiki-bg-hover:#bfdbfe;--neiki-bg-active:#93c5fd;--neiki-border-color:#bfdbfe;--neiki-border-color-dark:#60a5fa;--neiki-text-primary:#0f172a;--neiki-text-secondary:#1e3a8a;--neiki-text-muted:#64748b;--neiki-accent-color:#2563eb;--neiki-accent-hover:#1d4ed8;--neiki-danger-color:#dc3545;--neiki-success-color:#16803d;--neiki-shadow-sm:0 1px 2px rgba(37, 99, 235, 0.08);--neiki-shadow-md:0 4px 10px rgba(37, 99, 235, 0.12);--neiki-shadow-lg:0 14px 28px rgba(37, 99, 235, 0.16);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#eaf4ff;--neiki-statusbar-bg:#eef6ff;--neiki-modal-overlay:rgba(15, 23, 42, 0.45);--neiki-scrollbar-thumb:#93c5fd;--neiki-scrollbar-track:#eff6ff;--neiki-selection-bg:#bfdbfe;--neiki-highlight-color:#fef08a;--neiki-table-border:#bfdbfe}.neiki-context-menu.neiki-theme-midnight,.neiki-editor.neiki-theme-midnight,.neiki-modal-overlay.neiki-theme-midnight{--neiki-bg-primary:#0d0d12;--neiki-bg-secondary:#13131a;--neiki-bg-tertiary:#1a1a24;--neiki-bg-hover:#22223a;--neiki-bg-active:#2c2c4a;--neiki-border-color:#2a2a3d;--neiki-border-color-dark:#3d3d5c;--neiki-text-primary:#e8e8f0;--neiki-text-secondary:#c084fc;--neiki-text-muted:#7070a0;--neiki-accent-color:#c084fc;--neiki-accent-hover:#a855f7;--neiki-danger-color:#f87171;--neiki-success-color:#4ade80;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.3);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.5);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.6);--neiki-editor-bg:#0a0a10;--neiki-toolbar-bg:#111118;--neiki-statusbar-bg:#111118;--neiki-modal-overlay:rgba(0, 0, 0, 0.8);--neiki-scrollbar-thumb:#2c2c4a;--neiki-scrollbar-track:#0d0d12;--neiki-selection-bg:#3b1f5e;--neiki-highlight-color:#3b1f5e;--neiki-table-border:#2a2a3d}.neiki-context-menu.neiki-theme-dark-blue,.neiki-editor.neiki-theme-dark-blue,.neiki-modal-overlay.neiki-theme-dark-blue{--neiki-bg-primary:#07111f;--neiki-bg-secondary:#0b1d33;--neiki-bg-tertiary:#102a46;--neiki-bg-hover:#173b61;--neiki-bg-active:#1d4f82;--neiki-border-color:#1f3f63;--neiki-border-color-dark:#2f6da5;--neiki-text-primary:#e6f1ff;--neiki-text-secondary:#b9d7f8;--neiki-text-muted:#7ea6cc;--neiki-accent-color:#38bdf8;--neiki-accent-hover:#0ea5e9;--neiki-danger-color:#fb7185;--neiki-success-color:#34d399;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.24);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.34);--neiki-shadow-lg:0 18px 36px rgba(0, 0, 0, 0.46);--neiki-editor-bg:#081827;--neiki-toolbar-bg:#0b1d33;--neiki-statusbar-bg:#0b1d33;--neiki-modal-overlay:rgba(0, 0, 0, 0.72);--neiki-scrollbar-thumb:#1d4f82;--neiki-scrollbar-track:#07111f;--neiki-selection-bg:#164e63;--neiki-highlight-color:#854d0e;--neiki-table-border:#1f3f63}.neiki-editor.neiki-theme-autumn .neiki-fontsize-input,.neiki-editor.neiki-theme-autumn .neiki-select,.neiki-editor.neiki-theme-dracula .neiki-fontsize-input,.neiki-editor.neiki-theme-dracula .neiki-select,.neiki-editor.neiki-theme-midnight .neiki-fontsize-input,.neiki-editor.neiki-theme-midnight .neiki-select,.neiki-editor.neiki-theme-void .neiki-fontsize-input,.neiki-editor.neiki-theme-void .neiki-select{color:var(--neiki-text-secondary)}.neiki-context-menu.neiki-theme-void,.neiki-editor.neiki-theme-void,.neiki-modal-overlay.neiki-theme-void{--neiki-bg-primary:#0f0a1e;--neiki-bg-secondary:#150f2b;--neiki-bg-tertiary:#1e1640;--neiki-bg-hover:#2a1f52;--neiki-bg-active:#362a66;--neiki-border-color:#3d2e6b;--neiki-border-color-dark:#55408f;--neiki-text-primary:#ece6ff;--neiki-text-secondary:#d68bff;--neiki-text-muted:#8a7ab0;--neiki-accent-color:#b026ff;--neiki-accent-hover:#e040fb;--neiki-danger-color:#ff4d6d;--neiki-success-color:#39ff9d;--neiki-shadow-sm:0 1px 2px rgba(124, 58, 237, 0.25);--neiki-shadow-md:0 4px 16px rgba(124, 58, 237, 0.4);--neiki-shadow-lg:0 16px 40px rgba(176, 38, 255, 0.35);--neiki-editor-bg:#0a0614;--neiki-toolbar-bg:#130c26;--neiki-statusbar-bg:#130c26;--neiki-modal-overlay:rgba(5, 2, 15, 0.85);--neiki-scrollbar-thumb:#4c3684;--neiki-scrollbar-track:#130c26;--neiki-selection-bg:#4c1d95;--neiki-highlight-color:#3c1361;--neiki-table-border:#3d2e6b}.neiki-editor.neiki-theme-void .neiki-toolbar{border-bottom:1px solid var(--neiki-border-color);box-shadow:0 1px 12px rgba(176,38,255,.15)}.neiki-context-menu.neiki-theme-void .neiki-context-item:hover,.neiki-editor.neiki-theme-void .neiki-toolbar-btn:hover{box-shadow:0 0 10px rgba(176,38,255,.5)}.neiki-editor.neiki-theme-void .neiki-toolbar-btn.active{box-shadow:0 0 8px rgba(176,38,255,.65)}.neiki-editor.neiki-theme-void .neiki-content ::selection,.neiki-editor.neiki-theme-void .neiki-content::selection{background:var(--neiki-selection-bg);text-shadow:0 0 6px rgba(176,38,255,.6)}.neiki-context-menu.neiki-theme-autumn,.neiki-editor.neiki-theme-autumn,.neiki-modal-overlay.neiki-theme-autumn{--neiki-bg-primary:#282828;--neiki-bg-secondary:#32302f;--neiki-bg-tertiary:#3c3836;--neiki-bg-hover:#504945;--neiki-bg-active:#665c54;--neiki-border-color:#3c3836;--neiki-border-color-dark:#665c54;--neiki-text-primary:#ebdbb2;--neiki-text-secondary:#d5c4a1;--neiki-text-muted:#a89984;--neiki-accent-color:#fe8019;--neiki-accent-hover:#d65d0e;--neiki-danger-color:#fb4934;--neiki-success-color:#b8bb26;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.25);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.35);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.45);--neiki-editor-bg:#282828;--neiki-toolbar-bg:#32302f;--neiki-statusbar-bg:#32302f;--neiki-modal-overlay:rgba(0, 0, 0, 0.7);--neiki-scrollbar-thumb:#665c54;--neiki-scrollbar-track:#3c3836;--neiki-selection-bg:#504945;--neiki-highlight-color:#d79921;--neiki-table-border:#3c3836}.neiki-context-menu.neiki-theme-dracula,.neiki-editor.neiki-theme-dracula,.neiki-modal-overlay.neiki-theme-dracula{--neiki-bg-primary:#282a36;--neiki-bg-secondary:#21222c;--neiki-bg-tertiary:#343746;--neiki-bg-hover:#44475a;--neiki-bg-active:#6272a4;--neiki-border-color:#44475a;--neiki-border-color-dark:#6272a4;--neiki-text-primary:#f8f8f2;--neiki-text-secondary:#bd93f9;--neiki-text-muted:#6272a4;--neiki-accent-color:#bd93f9;--neiki-accent-hover:#ff79c6;--neiki-danger-color:#ff5555;--neiki-success-color:#50fa7b;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.25);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.35);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.45);--neiki-editor-bg:#282a36;--neiki-toolbar-bg:#21222c;--neiki-statusbar-bg:#21222c;--neiki-modal-overlay:rgba(0, 0, 0, 0.75);--neiki-scrollbar-thumb:#6272a4;--neiki-scrollbar-track:#343746;--neiki-selection-bg:#44475a;--neiki-highlight-color:#6b6423;--neiki-table-border:#44475a}.neiki-editor.neiki-theme-dracula .neiki-html-tag{color:#ff79c6}.neiki-editor.neiki-theme-dracula .neiki-html-attr{color:#50fa7b}.neiki-editor.neiki-theme-dracula .neiki-html-string{color:#f1fa8c}.neiki-editor.neiki-theme-dracula .neiki-html-comment{color:#6272a4}.neiki-editor{display:flex;flex-direction:column;width:100%;height:100%;min-height:400px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;color:var(--neiki-text-primary);box-shadow:var(--neiki-shadow-md)}.neiki-editor *{box-sizing:border-box}.neiki-editor.neiki-fullscreen{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:999999!important;border-radius:0!important;border:none!important}.neiki-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:var(--neiki-toolbar-bg);border-bottom:1px solid var(--neiki-border-color);min-height:44px}.neiki-editor.neiki-sticky-toolbar{overflow:visible}.neiki-editor.neiki-sticky-toolbar .neiki-toolbar{position:sticky;top:0;z-index:100;border-radius:8px 8px 0 0}.neiki-toolbar-group{display:inline-flex;align-items:center;gap:2px;padding:0 4px;flex-wrap:nowrap}.neiki-toolbar-group:not(:last-child){border-right:1px solid var(--neiki-border-color);padding-right:8px;margin-right:4px}.neiki-toolbar-divider{width:1px;height:24px;background:var(--neiki-border-color);margin:0 4px}.neiki-btn,.neiki-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--neiki-text-secondary);transition:.15s;position:relative}.neiki-btn:hover,.neiki-fontsize-btn:hover,.neiki-modal-close:hover,.neiki-preview-close:hover,.neiki-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-text-primary)}.neiki-btn:active,.neiki-floating-btn:active,.neiki-toolbar-btn:active{background:var(--neiki-bg-active)}.neiki-btn.active,.neiki-toolbar-btn.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-btn:disabled,.neiki-toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.neiki-btn svg,.neiki-toolbar-btn svg{width:18px;height:18px;fill:currentColor;pointer-events:none}.neiki-select{height:32px;padding:0 28px 0 10px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;min-width:100px}.neiki-select:hover{border-color:var(--neiki-border-color-dark)}.neiki-select:focus,.neiki-theme-menu-select:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-custom,.neiki-statusbar{border-top:1px solid var(--neiki-border-color)}.neiki-theme-select-wrapper{display:inline-flex;align-items:center;gap:6px;height:32px}.neiki-theme-select-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--neiki-text-secondary);width:18px;height:18px;flex-shrink:0}.neiki-context-item svg,.neiki-context-menu-item svg,.neiki-dropdown-item-icon svg,.neiki-floating-btn svg,.neiki-img-toolbar-btn svg,.neiki-theme-select-icon svg{width:16px;height:16px;fill:currentColor}.neiki-theme-select{min-width:116px;max-width:150px}.neiki-color-btn{position:relative;width:36px}.neiki-color-btn .neiki-color-indicator{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);width:16px;height:3px;border-radius:1px;background:currentColor}.neiki-checkbox-wrapper{display:flex;align-items:center;gap:6px;padding:0 8px;height:32px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer;user-select:none}.neiki-checkbox{width:16px;height:16px;cursor:pointer}.neiki-content-wrapper,.neiki-editor-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.neiki-content{flex:1;padding:20px 24px;background:var(--neiki-editor-bg);overflow-y:auto;outline:0;line-height:1.6;color:var(--neiki-text-primary);min-height:200px}.neiki-code-view-textarea:focus,.neiki-content:focus{outline:0}.neiki-content:empty::before{content:attr(data-placeholder);color:var(--neiki-text-muted);font-style:italic;pointer-events:none}.neiki-content.neiki-drag-over{border:2px dashed var(--neiki-accent-color);background:rgba(13,110,253,.05)}.neiki-content.neiki-drag-over::after{content:'Drop media here';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--neiki-accent-color);font-weight:600;font-size:16px;pointer-events:none;z-index:10}.neiki-drop-indicator{position:absolute;width:3px;min-height:22px;background:var(--neiki-accent-color);border-radius:999px;box-shadow:0 0 0 3px rgba(13,110,253,.18);pointer-events:none;opacity:0;transform:translateX(-1px);transition:opacity 80ms;z-index:80}.neiki-drop-indicator::after,.neiki-drop-indicator::before{content:'';position:absolute;left:50%;width:9px;height:9px;background:var(--neiki-accent-color);border-radius:50%;transform:translateX(-50%)}.neiki-drop-indicator::before{top:-4px}.neiki-drop-indicator::after{bottom:-4px}.neiki-drop-indicator.show{opacity:1}.neiki-editor.neiki-disabled{opacity:.6;pointer-events:none}.neiki-content::-webkit-scrollbar{width:10px}.neiki-content::-webkit-scrollbar-track{background:var(--neiki-scrollbar-track)}.neiki-content::-webkit-scrollbar-thumb{background:var(--neiki-scrollbar-thumb);border-radius:5px}.neiki-content::-webkit-scrollbar-thumb:hover{background:var(--neiki-border-color-dark)}.neiki-content p{margin:0 0 1em}.neiki-content h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content ol,.neiki-content ul{margin:0 0 1em;padding-left:2em}.neiki-content li{margin-bottom:.25em}.neiki-content blockquote{margin:0 0 1em;padding:10px 20px;border-left:4px solid var(--neiki-accent-color);background:var(--neiki-bg-secondary);font-style:italic}.neiki-content code,.neiki-content pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content a:hover{color:var(--neiki-accent-hover)}.neiki-content img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content video{display:block;max-width:100%;height:auto;margin:0 0 1em;border-radius:6px;background:#000}.neiki-highlight{background:var(--neiki-highlight-color);padding:1px 0}.neiki-content table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content table td,.neiki-content table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content table td:hover,.neiki-content table th:hover,.neiki-context-item:hover,.neiki-context-menu-item:hover,.neiki-dropdown-item:hover,.neiki-fontsize-dropdown-item:hover,.neiki-special-char-item:hover{background:var(--neiki-bg-hover)}.neiki-content table td.neiki-cell-selected,.neiki-content table th.neiki-cell-selected{background:var(--neiki-selection-bg)}.neiki-table-resize-handle{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:10}.neiki-table-resize-handle:hover{background:var(--neiki-accent-color)}.neiki-statusbar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--neiki-statusbar-bg);font-size:12px;color:var(--neiki-text-muted)}.neiki-statusbar-left,.neiki-statusbar-right{display:flex;align-items:center;gap:16px}.neiki-statusbar-item{display:flex;align-items:center;gap:4px}.neiki-statusbar-block{font-family:Consolas,Monaco,monospace;font-size:11px;padding:2px 6px;background:var(--neiki-bg-tertiary);border-radius:3px;color:var(--neiki-accent-color);font-weight:600;border:1px solid var(--neiki-border-color)}.neiki-color-picker,.neiki-dropdown{position:absolute;top:100%;left:0;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg)}.neiki-dropdown{min-width:180px;background:var(--neiki-bg-primary);border-radius:6px;padding:4px;margin-top:4px}.neiki-dropdown-item{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-dropdown-item.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color)}.neiki-context-divider,.neiki-context-menu-divider,.neiki-dropdown-divider{height:1px;background:var(--neiki-border-color);margin:4px 0}.neiki-color-picker{background:var(--neiki-bg-primary);border-radius:8px;padding:8px;margin-top:4px;display:flex;flex-direction:column;gap:6px}.neiki-color-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-color-custom{display:flex;align-items:center;gap:6px}.neiki-color-custom-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border:1px solid var(--neiki-border-color);border-radius:4px;padding:2px;cursor:pointer;background:0 0}.neiki-color-custom-input::-webkit-color-swatch-wrapper{padding:0}.neiki-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.neiki-color-custom-input::-moz-color-swatch{border:none;border-radius:2px}.neiki-color-hex-input{flex:1;height:28px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;font-size:12px;font-family:monospace;background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);outline:0}.neiki-color-hex-input:focus{border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-apply-btn{height:28px;padding:0 10px;border:none;border-radius:4px;font-size:12px;font-weight:500;background:var(--neiki-accent-color);color:#fff;cursor:pointer;transition:background .15s}.neiki-emoji-picker,.neiki-special-picker{max-width:calc(100vw - 16px);overflow-y:auto;background:var(--neiki-bg-primary);padding:8px;margin-top:4px;position:absolute;top:100%;z-index:1000;box-shadow:var(--neiki-shadow-lg);left:0}.neiki-btn-primary:hover,.neiki-button-primary:hover,.neiki-color-apply-btn:hover{background:var(--neiki-accent-hover)}.neiki-color-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--neiki-border-color);transition:transform .1s}.neiki-color-swatch:hover{transform:scale(1.2);z-index:1}.neiki-color-swatch.neiki-color-reset{background:#fff;position:relative;overflow:hidden;border:1px solid #ccc}.neiki-color-preset.active,.neiki-special-item:hover{border-color:var(--neiki-accent-color)}.neiki-color-swatch.neiki-color-reset::after{content:'';position:absolute;top:50%;left:-2px;right:-2px;height:2px;background:#e53935;transform:rotate(-45deg);transform-origin:center;pointer-events:none}.neiki-color-picker-label{font-size:11px;font-weight:600;color:var(--neiki-text-muted);text-transform:uppercase;margin-bottom:8px}.neiki-emoji-item,.neiki-special-item{align-items:center;font-size:18px;cursor:pointer}.neiki-emoji-picker{width:280px;max-height:250px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-emoji-item{display:flex;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background .15s,transform .1s}.neiki-emoji-item:hover{background:var(--neiki-bg-hover);transform:scale(1.2)}.neiki-special-picker{width:320px;max-height:280px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.neiki-special-item{display:flex;justify-content:center;width:32px;height:32px;border-radius:4px;border:1px solid var(--neiki-border-color);background:var(--neiki-bg-secondary);transition:.15s}.neiki-special-item:hover{background:var(--neiki-accent-color);color:#fff;transform:scale(1.1)}.neiki-highlight-find{background:#ffeb3b;padding:1px 0;border-radius:2px}.neiki-highlight-current{background:#ff9800;outline:#e65100 solid 2px}.neiki-color-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.neiki-color-preset{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.neiki-color-preset:hover{transform:scale(1.1)}.neiki-color-preset.neiki-color-reset{background:linear-gradient(45deg,#fff 45%,red 45%,red 55%,#fff 55%);border:1px solid var(--neiki-border-color)}.neiki-color-custom{display:flex;align-items:center;gap:8px;padding-top:8px;border-top:1px solid var(--neiki-border-color)}.neiki-color-custom input[type=color]{width:40px;height:32px;padding:0;border:1px solid var(--neiki-border-color);border-radius:4px;cursor:pointer}.neiki-color-custom input[type=text]{flex:1;height:32px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;font-family:monospace}.neiki-table-picker,.neiki-table-picker-cell{border:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary)}.neiki-table-picker{position:absolute;top:100%;left:0;z-index:1000;border-radius:8px;box-shadow:var(--neiki-shadow-lg);padding:12px;display:none}.neiki-context-menu.show,.neiki-find-replace.show,.neiki-fontsize-dropdown.show,.neiki-table-picker.show{display:block}.neiki-table-picker-label{font-size:12px;color:var(--neiki-text-secondary);margin-bottom:8px;text-align:center}.neiki-dark .neiki-modal h3,.neiki-dark .neiki-modal-header h3,.neiki-modal-title{color:var(--neiki-text-primary)}.neiki-table-picker-grid{display:grid;grid-template-columns:repeat(10,20px);gap:2px}.neiki-table-picker-cell{width:20px;height:20px;border-radius:2px;cursor:pointer;transition:background .1s}.neiki-table-picker-cell.active,.neiki-table-picker-cell:hover{background:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-special-chars{position:absolute;top:100%;left:0;z-index:1000;width:280px;max-height:300px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;box-shadow:var(--neiki-shadow-lg);display:none;overflow:hidden}.neiki-special-chars.show{display:flex;flex-direction:column}.neiki-special-chars-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;padding:8px;overflow-y:auto}.neiki-special-char-item{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:16px;border-radius:4px;cursor:pointer;transition:background .1s}.neiki-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--neiki-modal-overlay);z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.neiki-modal-overlay.active,[data-tooltip]:hover::after{opacity:1;visibility:visible}.neiki-modal{background:var(--neiki-bg-primary);border-radius:12px;box-shadow:var(--neiki-shadow-lg);width:100%;max-width:440px;max-height:90vh;overflow:hidden}.neiki-modal-wide{max-width:520px}.neiki-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--neiki-border-color)}.neiki-modal-title{font-size:16px;font-weight:600;margin:0}.neiki-modal-close,.neiki-preview-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:4px;cursor:pointer;color:var(--neiki-text-muted);transition:background .15s}.neiki-modal-body{padding:20px;overflow-y:auto}.neiki-modal h3,.neiki-modal-header h3{color:#000;margin:0}.neiki-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--neiki-border-color)}.neiki-modal-footer .neiki-btn{width:auto;height:38px;padding:0 16px;font-size:14px;font-weight:500;border-radius:6px}.neiki-form-group{margin-bottom:16px}.neiki-find-replace-row:last-child,.neiki-form-group:last-child{margin-bottom:0}.neiki-form-group label,.neiki-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--neiki-text-secondary)}.neiki-form-input,.neiki-input{width:100%;height:40px;padding:0 12px;border:1px solid var(--neiki-border-color);border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;transition:border-color .15s}.neiki-form-input:focus,.neiki-form-textarea:focus,.neiki-input:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 3px rgba(13,110,253,.15)}.neiki-form-input::placeholder,.neiki-input::placeholder{color:var(--neiki-text-muted)}.neiki-input[type=file]{display:flex;align-items:center;padding:0;cursor:pointer}.neiki-input[type=file]::file-selector-button{height:100%;padding:0 14px;margin-right:12px;border:none;border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-tertiary,var(--neiki-bg-hover));color:var(--neiki-text-primary);font-size:13px;font-weight:500;cursor:pointer;border-radius:5px 0 0 5px}.neiki-image-upload-zone{position:relative;display:grid;justify-items:center;gap:7px;padding:24px 18px;border:2px dashed var(--neiki-border-color);border-radius:8px;background:var(--neiki-bg-secondary);color:var(--neiki-text-secondary);text-align:center;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.neiki-find-replace,.neiki-form-textarea{border:1px solid var(--neiki-border-color)}.neiki-image-upload-zone:focus-visible,.neiki-image-upload-zone:hover{border-color:var(--neiki-accent-color);background:var(--neiki-bg-primary);box-shadow:0 0 0 3px rgba(13,110,253,.12);outline:0}.neiki-image-upload-zone.drag-over{border-color:var(--neiki-accent-color);background:rgba(13,110,253,.08)}.neiki-form-divider::after,.neiki-form-divider::before{content:'';height:1px;background:var(--neiki-border-color)}.neiki-image-upload-zone.has-files{border-style:solid;border-color:var(--neiki-accent-color)}.neiki-image-upload-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.neiki-image-upload-icon{width:38px;height:38px;color:var(--neiki-accent-color)}.neiki-image-upload-icon svg{width:100%;height:100%;fill:currentColor}.neiki-image-upload-title{color:var(--neiki-text-primary);font-size:14px;font-weight:600}.neiki-image-upload-files,.neiki-image-upload-hint{max-width:100%;color:var(--neiki-text-muted);font-size:12px;line-height:1.4}.neiki-image-upload-files{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neiki-image-upload-zone.has-files .neiki-image-upload-files{color:var(--neiki-accent-color);font-weight:500}.neiki-form-row{display:flex;gap:16px}.neiki-form-divider{display:flex;align-items:center;margin:16px 0;text-align:center;position:relative}.neiki-form-divider::before{flex:1;margin-right:12px}.neiki-form-divider::after{flex:1;margin-left:12px}.neiki-form-divider span{color:var(--neiki-text-muted);font-size:12px;font-weight:500;text-transform:uppercase}.neiki-form-textarea{width:100%;min-height:120px;padding:12px;border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s}.neiki-btn-primary,.neiki-btn-secondary,.neiki-button{display:inline-flex;align-items:center;height:38px;padding:0 16px;font-size:14px;transition:.15s;font-weight:500;cursor:pointer}.neiki-button{justify-content:center;gap:6px;border:1px solid transparent;border-radius:6px}.neiki-btn-primary,.neiki-button-primary{background:var(--neiki-accent-color);color:#fff}.neiki-btn-secondary,.neiki-button-secondary{background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);border-color:var(--neiki-border-color)}.neiki-btn-primary,.neiki-btn-secondary{justify-content:center;border:1px solid transparent;border-radius:6px}.neiki-btn-secondary{border-color:var(--neiki-border-color)}.neiki-button-danger{background:var(--neiki-danger-color);color:#fff}.neiki-code-view,.neiki-find-replace,.neiki-find-replace-input{background:var(--neiki-bg-primary)}.neiki-button-danger:hover{opacity:.9}.neiki-find-replace{position:absolute;top:0;right:0;z-index:100;width:360px;border-radius:0 0 0 8px;box-shadow:var(--neiki-shadow-lg);display:none}.neiki-find-replace-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neiki-border-color)}.neiki-code-view-title,.neiki-find-replace-title{font-size:13px;font-weight:600;color:var(--neiki-text-primary)}.neiki-find-replace-body{padding:12px}.neiki-find-replace-row{display:flex;gap:8px;margin-bottom:10px}.neiki-find-replace-input{flex:1;height:32px;padding:0 10px;border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px}.neiki-find-replace-input:focus{outline:0;border-color:var(--neiki-accent-color)}.neiki-find-replace-options{display:flex;align-items:center;gap:12px;margin-bottom:10px}.neiki-find-replace-option{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer}.neiki-find-replace-actions{display:flex;gap:6px;flex-wrap:wrap}.neiki-find-replace-btn{height:28px;padding:0 10px;font-size:12px;border-radius:4px}.neiki-find-replace-count{font-size:12px;color:var(--neiki-text-muted);margin-left:auto}.neiki-code-view{position:absolute;top:0;left:0;right:0;bottom:0;z-index:50;display:none;flex-direction:column}.neiki-code-view.show,.neiki-drop-overlay.show{display:flex}.neiki-code-view-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);flex-shrink:0}.neiki-code-view-editor{position:relative;flex:1;width:100%;min-height:0;background:var(--neiki-bg-primary)}.neiki-code-view-highlight,.neiki-code-view-textarea{position:absolute;inset:0;width:100%;height:100%;padding:16px;border:none;font-family:Consolas,Monaco,'Courier New',monospace;font-size:13px;line-height:1.5;tab-size:2;white-space:pre-wrap;word-break:break-word;overflow:auto}.neiki-context-menu,.neiki-floating-toolbar{position:fixed;box-shadow:var(--neiki-shadow-lg)}.neiki-code-view-highlight{margin:0;color:var(--neiki-text-primary);pointer-events:none;user-select:none}.neiki-code-view-textarea{background:0 0;color:transparent;caret-color:var(--neiki-text-primary);resize:none;z-index:1}.neiki-code-view-textarea::selection{background:var(--neiki-selection-bg);color:transparent}.neiki-html-punct{color:var(--neiki-text-muted)}.neiki-html-tag{color:#0f74d8;font-weight:600}.neiki-html-attr{color:#9a5b00}.neiki-html-string{color:#16803d}.neiki-html-comment{color:var(--neiki-text-muted);font-style:italic}.neiki-dark .neiki-html-tag{color:#7dd3fc}.neiki-dark .neiki-html-attr{color:#fbbf24}.neiki-dark .neiki-html-string{color:#86efac}.neiki-code-view-apply{width:auto!important;padding:0 12px!important;display:inline-flex;align-items:center;gap:4px;height:30px;font-size:12px;background:var(--neiki-accent-color)!important;color:#fff!important;border-radius:5px}.neiki-context-menu,.neiki-floating-btn,.neiki-floating-toolbar{background:var(--neiki-bg-primary)}.neiki-code-view-apply:hover{background:var(--neiki-accent-hover)!important;color:#fff!important}.neiki-code-view-apply svg{width:14px!important;height:14px!important}.neiki-context-menu{z-index:10001;min-width:180px;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px;display:none}.neiki-context-item,.neiki-context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-context-item.neiki-context-danger,.neiki-context-menu-item.danger{color:var(--neiki-danger-color)}.neiki-context-item.neiki-context-disabled{opacity:.4;cursor:default;pointer-events:none}.neiki-floating-toolbar{z-index:1000;display:none;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px}.neiki-floating-toolbar.show{display:flex;align-items:center;gap:2px}.neiki-floating-btn{width:32px;height:32px;border:none;color:var(--neiki-text-primary);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}.neiki-floating-btn:hover,.neiki-img-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-accent-color)}.neiki-floating-toolbar .neiki-btn{width:28px;height:28px}.neiki-chevron svg,.neiki-floating-toolbar .neiki-btn svg{width:14px;height:14px}.neiki-floating-divider,.neiki-img-toolbar-separator{width:1px;height:20px;background:var(--neiki-border-color);margin:0 2px}.neiki-floating-move-btn svg{width:16px;height:16px}.neiki-more-btn,[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:6px 10px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:11px;font-weight:500;white-space:nowrap;border-radius:4px;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;pointer-events:none;z-index:10002;margin-bottom:6px}.neiki-drop-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(13,110,253,.1);border:3px dashed var(--neiki-accent-color);border-radius:8px;display:none;align-items:center;justify-content:center;z-index:100;pointer-events:none}.neiki-img-size-label,.neiki-img-toolbar{left:50%;transform:translateX(-50%);white-space:nowrap}.neiki-drop-overlay-text{font-size:18px;font-weight:600;color:var(--neiki-accent-color)}.neiki-img-resizable{display:inline-block;position:relative;outline:2px solid var(--neiki-accent-color);outline-offset:2px;border-radius:4px;line-height:0;user-select:none;-webkit-user-select:none}.neiki-img-resizable img,.neiki-img-resizable video{display:block;max-width:100%;user-select:none;-webkit-user-select:none}.neiki-img-resize-handle{position:absolute;width:12px;height:12px;background:var(--neiki-accent-color);border:2px solid #fff;border-radius:2px;z-index:10;box-shadow:0 1px 3px rgba(0,0,0,.3)}.neiki-img-resize-handle.nw{top:-6px;left:-6px;cursor:nw-resize}.neiki-img-resize-handle.ne{top:-6px;right:-6px;cursor:ne-resize}.neiki-img-resize-handle.sw{bottom:-6px;left:-6px;cursor:sw-resize}.neiki-img-resize-handle.se{bottom:-6px;right:-6px;cursor:se-resize}.neiki-img-size-label{position:absolute;bottom:-32px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:13px;line-height:1.4;font-weight:600;padding:4px 12px;border-radius:6px;pointer-events:none;z-index:10;opacity:.9}@media (pointer:coarse){.neiki-img-resize-handle{width:20px;height:20px}.neiki-img-resize-handle.nw{top:-10px;left:-10px}.neiki-img-resize-handle.ne{top:-10px;right:-10px}.neiki-img-resize-handle.sw{bottom:-10px;left:-10px}.neiki-img-resize-handle.se{bottom:-10px;right:-10px}}.neiki-img-toolbar{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-md);z-index:20;user-select:none;-webkit-user-select:none}.neiki-img-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:0 0;color:var(--neiki-text-secondary);cursor:pointer;transition:.15s}.neiki-img-toolbar-btn-danger:hover{background:#fee2e2;color:#dc2626}.neiki-editor.neiki-dark .neiki-img-toolbar-btn-danger:hover{background:#451a1a;color:#f87171}.neiki-img-drag-handle{cursor:grab}.neiki-block-grip:active,.neiki-img-drag-handle:active{cursor:grabbing}.neiki-table-col-resize-handle{position:absolute;width:6px;cursor:col-resize;z-index:10;background:0 0;transition:background .1s}.neiki-table-col-resize-handle:active,.neiki-table-col-resize-handle:hover{background:var(--neiki-accent-color);opacity:.6;border-radius:3px}.neiki-block-grip{position:absolute;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--neiki-text-muted);opacity:0;transition:opacity .15s,color .15s;border-radius:4px;z-index:5;user-select:none}.neiki-content-wrapper:hover .neiki-block-grip{opacity:.5}.neiki-block-grip:hover{opacity:1!important;color:var(--neiki-text-primary);background:var(--neiki-bg-hover)}.neiki-block-grip svg{width:14px;height:14px;fill:currentColor;pointer-events:none}@media (hover:none),(pointer:coarse){.neiki-block-grip{display:none!important}}.neiki-block-ghost{position:fixed;z-index:100000;pointer-events:none;opacity:.7;background:var(--neiki-bg-primary);border:2px solid var(--neiki-accent-color);border-radius:6px;padding:8px 12px;box-shadow:var(--neiki-shadow-lg);max-height:120px;overflow:hidden}.neiki-block-placeholder{border:2px dashed var(--neiki-accent-color);border-radius:6px;background:rgba(13,110,253,.05);margin:2px 0;transition:height .15s}@media print{.neiki-content,.neiki-editor-wrapper{overflow:visible!important}.neiki-editor{border:none!important;box-shadow:none!important}.neiki-block-grip,.neiki-code-view-header,.neiki-find-replace,.neiki-floating-toolbar,.neiki-img-resize-handle,.neiki-img-size-label,.neiki-img-toolbar,.neiki-statusbar,.neiki-table-col-resize-handle,.neiki-toolbar{display:none!important}.neiki-content{padding:0!important}}@media (max-width:768px){.neiki-toolbar{padding:4px;gap:1px}.neiki-toolbar-group{padding:0 2px}.neiki-toolbar-group:not(:last-child){padding-right:4px;margin-right:2px}.neiki-btn{width:28px;height:28px}.neiki-btn svg{width:16px;height:16px}.neiki-select{height:28px;min-width:80px;font-size:12px;padding:0 24px 0 8px}.neiki-content,.neiki-modal-footer,.neiki-modal-header{padding:12px 16px}.neiki-statusbar{padding:4px 8px;font-size:11px}.neiki-modal{width:calc(100% - 20px);max-width:none;margin:10px;max-height:calc(100vh - 40px);border-radius:10px}.neiki-modal-overlay{padding:10px}.neiki-modal-body{padding:16px;max-height:calc(100vh - 160px);overflow-y:auto;-webkit-overflow-scrolling:touch}.neiki-modal-footer .neiki-btn{height:36px;padding:0 14px;font-size:13px}.neiki-form-row{flex-direction:column;gap:12px}.neiki-form-input,.neiki-input{height:38px;font-size:16px}.neiki-image-upload-zone{grid-template-columns:32px 1fr;justify-items:start;gap:4px 10px;padding:14px;text-align:left}.neiki-image-upload-icon{grid-row:span 3;width:30px;height:30px}.neiki-image-upload-title{font-size:13px}.neiki-image-upload-files,.neiki-image-upload-hint{font-size:11px}.neiki-find-replace{width:100%;border-radius:0}.neiki-checkbox-wrapper{padding:0 4px;font-size:11px}.neiki-color-picker{left:auto;right:0}}@media (max-width:480px){.neiki-toolbar-group:not(:last-child){border-right:none;padding-right:2px;margin-right:0}.neiki-select{min-width:60px}.neiki-statusbar-left,.neiki-statusbar-right{gap:8px}.neiki-img-toolbar{padding:3px;gap:1px;border-radius:5px;left:0;transform:none;max-width:calc(100vw - 20px)}.neiki-img-toolbar-btn{width:26px;height:26px}.neiki-img-toolbar-btn svg{width:14px;height:14px}.neiki-img-toolbar-separator{height:16px;margin:0 1px}}@keyframes neiki-fade-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.neiki-color-picker.show,.neiki-dropdown.show,.neiki-emoji-picker.show,.neiki-special-chars.show,.neiki-table-picker.show{animation:.15s neiki-fade-in}@keyframes neiki-modal-in{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.neiki-fontsize-widget{display:inline-flex;align-items:center;position:relative;height:32px;border:1px solid var(--neiki-border-color);border-radius:4px;overflow:visible;background:var(--neiki-bg-primary)}.neiki-fontsize-btn{display:flex;align-items:center;justify-content:center;width:26px;height:30px;background:0 0;border:none;cursor:pointer;color:var(--neiki-text-secondary);transition:background .15s,color .15s;padding:0}.neiki-fontsize-dropdown-item,.neiki-fontsize-input{color:var(--neiki-text-primary);text-align:center;font-size:13px}.neiki-fontsize-input{width:38px;height:30px;border:none;border-left:1px solid var(--neiki-border-color);border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary);outline:0;-moz-appearance:textfield;appearance:textfield;padding:0}.neiki-fontsize-input::-webkit-inner-spin-button,.neiki-fontsize-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.neiki-fontsize-dropdown{display:none;position:absolute;top:100%;left:0;z-index:1000;min-width:70px;max-height:240px;overflow-y:auto;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px}.neiki-fontsize-dropdown-item{padding:6px 12px;cursor:pointer;border-radius:4px;transition:background .1s}.neiki-insert-dropdown-btn{width:auto!important;padding:0 8px!important;gap:4px;font-size:13px;font-weight:500}.neiki-insert-label{font-size:13px;pointer-events:none}.neiki-chevron{display:inline-flex;pointer-events:none}.neiki-insert-dropdown,.neiki-more-dropdown{display:none;position:absolute;top:100%;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px;background:var(--neiki-bg-primary)}.neiki-insert-dropdown{left:0;min-width:160px;max-width:calc(100vw - 16px);border-radius:6px}.neiki-insert-dropdown.show,.neiki-more-dropdown.show{display:block;animation:.15s neiki-fade-in}.neiki-more-dropdown{right:0;border-radius:6px}.neiki-lang-cs .neiki-more-dropdown{min-width:165px}.neiki-dropdown-item-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.neiki-dropdown-item-danger{color:var(--neiki-danger-color)!important}.neiki-dropdown-item-danger:hover{background:rgba(220,53,69,.1)}.neiki-theme-menu-item{cursor:default}.neiki-theme-menu-select{min-width:105px;height:28px;padding:0 24px 0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;cursor:pointer}.neiki-autosave-badge{font-size:12px;font-weight:600;color:var(--neiki-text-muted);padding:0 4px}.neiki-autosave-badge.active{color:var(--neiki-success-color)}.neiki-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100000;display:flex;align-items:center;justify-content:center;padding:30px;animation:.2s neiki-fade-in}.neiki-preview-modal{background:var(--neiki-bg-primary);border-radius:12px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,.3);animation:.2s neiki-modal-in}.neiki-preview-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);font-weight:600;font-size:14px;color:var(--neiki-text-primary)}.neiki-preview-close svg{width:18px;height:18px;fill:currentColor}.neiki-preview-body{flex:1;overflow:auto;padding:30px;color:var(--neiki-text-primary);font-size:15px;line-height:1.7}.neiki-preview-body img{max-width:100%}.neiki-preview-body table{border-collapse:collapse;width:100%}.neiki-preview-body table td,.neiki-preview-body table th{border:1px solid var(--neiki-border-color);padding:8px 12px}.neiki-statusbar-autosave{font-style:italic;color:var(--neiki-success-color);font-size:11px}