neiki-editor 3.6.0 → 3.7.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
@@ -11,7 +11,7 @@
11
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.6.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.7.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">
@@ -140,7 +140,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
140
140
  **Pin a specific version**
141
141
 
142
142
  ```html
143
- <script src="https://cdn.neikiri.dev/neiki-editor/3.6.0/neiki-editor.min.js"></script>
143
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.7.0/neiki-editor.min.js"></script>
144
144
  ```
145
145
 
146
146
  **Load CSS and JS separately**
@@ -151,8 +151,8 @@ The recommended install is the single bundled script from the CDN. CSS is includ
151
151
  <script src="https://cdn.neikiri.dev/neiki-editor/neiki-editor.js"></script>
152
152
 
153
153
  <!-- Or pinned -->
154
- <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.6.0/neiki-editor.css">
155
- <script src="https://cdn.neikiri.dev/neiki-editor/3.6.0/neiki-editor.js"></script>
154
+ <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.7.0/neiki-editor.css">
155
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.7.0/neiki-editor.js"></script>
156
156
  ```
157
157
 
158
158
  **Alternative CDN — jsDelivr**
@@ -160,7 +160,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
160
160
  ```html
161
161
  <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@latest/dist/neiki-editor.min.js"></script>
162
162
  <!-- Pinned -->
163
- <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.6.0/dist/neiki-editor.min.js"></script>
163
+ <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.7.0/dist/neiki-editor.min.js"></script>
164
164
  ```
165
165
 
166
166
  **Package manager**
@@ -265,6 +265,7 @@ const editor = new NeikiEditor('#editor', {
265
265
  | `autosaveKey` | `string \| null` | `null` | Custom `localStorage` scope for autosave |
266
266
  | `customClass` | `string \| null` | `null` | Custom content style class that replaces the default `neiki-content-default-style` class |
267
267
  | `toolbar` | `array` | *(full set)* | Toolbar button configuration |
268
+ | `floatingToolbar` | `array \| false` | *(full set)* | Floating selection toolbar button configuration; set to `false` to disable it |
268
269
  | `showHelp` | `boolean` | `true` | Show the Help item in the More menu (⋯) |
269
270
  | `imageUploadHandler` | `function \| null` | `null` | Async `(file) => Promise<url>` for server/CDN image uploads instead of base64 |
270
271
  | `videoUploadHandler` | `function \| null` | `null` | Async `(file) => Promise<url>` for server/CDN video uploads instead of base64 |
@@ -294,6 +295,16 @@ new NeikiEditor('#editor', {
294
295
 
295
296
  Available identifiers include text formatting (`bold`, `italic`, `underline`, `strikethrough`, `subscript`, `superscript`, `code`, `removeFormat`), style (`heading`, `fontFamily`, `fontSize`, `foreColor`, `backColor`), alignment and lists (`alignLeft`, `alignCenter`, `alignRight`, `alignJustify`, `bulletList`, `numberedList`, `indent`, `outdent`), structure (`blockquote`, `horizontalRule`), tools (`undo`, `redo`, `findReplace`, `viewCode`), the grouped `insertDropdown`, the right-aligned `moreMenu`, and a standalone `themeToggle`. See the [Toolbar Reference](https://github.com/neikiri/neiki-editor/wiki/Toolbar-Reference) for the full list.
296
297
 
298
+ ### Customizing the floating toolbar
299
+
300
+ The `floatingToolbar` option controls the toolbar shown for desktop text selections. It accepts `moveUp`, `moveDown`, `bold`, `italic`, `underline`, `strikethrough`, `link`, and `'|'` separators. Omit an item to remove it, or set the option to `false` to disable the floating toolbar completely. On touch-first devices, the editor automatically leaves selection controls to the browser so the floating toolbar does not overlap the native long-press menu.
301
+
302
+ ```javascript
303
+ new NeikiEditor('#editor', {
304
+ floatingToolbar: ['bold', 'italic', 'underline', 'strikethrough']
305
+ });
306
+ ```
307
+
297
308
  ### Themes
298
309
 
299
310
  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:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * NeikiEditor - Production-Ready WYSIWYG Rich Text Editor
3
3
  * CSS Stylesheet
4
- * Version: 3.6.0
4
+ * Version: 3.7.0
5
5
  */
6
6
 
7
7
  /* ============================================
@@ -2550,6 +2550,13 @@
2550
2550
  }
2551
2551
  }
2552
2552
 
2553
+ /* Mobile browsers provide native long-press selection controls. */
2554
+ @media (pointer: coarse) {
2555
+ .neiki-floating-toolbar {
2556
+ display: none !important;
2557
+ }
2558
+ }
2559
+
2553
2560
  /* ============================================
2554
2561
  Animations
2555
2562
  ============================================ */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * NeikiEditor - A Modern WYSIWYG Editor
3
- * Version: 3.6.0
3
+ * Version: 3.7.0
4
4
  *
5
5
  * A lightweight, feature-rich text editor with support for:
6
6
  * - Rich text formatting (bold, italic, underline, etc.)
@@ -1482,6 +1482,7 @@
1482
1482
  'insertDropdown', '|',
1483
1483
  'moreMenu'
1484
1484
  ],
1485
+ floatingToolbar: ['moveUp', 'moveDown', '|', 'bold', 'italic', 'underline', 'strikethrough', 'link'],
1485
1486
  placeholder: 'Start typing...',
1486
1487
  minHeight: 300,
1487
1488
  maxHeight: null,
@@ -3114,7 +3115,7 @@
3114
3115
  <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;">
3115
3116
  <div style="font-size: 14px; line-height: 2; color: var(--neiki-text-primary);">
3116
3117
  <div><strong>${Utils.escapeHTML(t('help.author'))}:</strong> neikiri (Jindřich Stoklasa)</div>
3117
- <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.6.0</div>
3118
+ <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.7.0</div>
3118
3119
  <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>
3119
3120
  <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>
3120
3121
  </div>
@@ -7241,61 +7242,53 @@
7241
7242
 
7242
7243
  createToolbar() {
7243
7244
  this.toolbar = Utils.createElement('div', { className: 'neiki-floating-toolbar' });
7245
+ const items = {
7246
+ moveUp: { icon: Icons.moveUp, title: t('blockToolbar.moveUp'), move: true },
7247
+ moveDown: { icon: Icons.moveDown, title: t('blockToolbar.moveDown'), move: true },
7248
+ bold: { icon: Icons.bold, title: t('toolbar.bold') },
7249
+ italic: { icon: Icons.italic, title: t('toolbar.italic') },
7250
+ underline: { icon: Icons.underline, title: t('toolbar.underline') },
7251
+ strikethrough: { icon: Icons.strikethrough, title: t('toolbar.strikethrough') },
7252
+ link: { icon: Icons.link, title: t('toolbar.link') }
7253
+ };
7254
+ let lastWasDivider = true;
7255
+
7256
+ if (Array.isArray(this.editor.config.floatingToolbar)) {
7257
+ this.editor.config.floatingToolbar.forEach(item => {
7258
+ if (item === '|') {
7259
+ if (!lastWasDivider) {
7260
+ this.toolbar.appendChild(Utils.createElement('span', { className: 'neiki-floating-divider' }));
7261
+ lastWasDivider = true;
7262
+ }
7263
+ return;
7264
+ }
7244
7265
 
7245
- // Move block buttons (left side)
7246
- const moveButtons = [
7247
- { item: 'moveUp', icon: Icons.moveUp, title: t('blockToolbar.moveUp') },
7248
- { item: 'moveDown', icon: Icons.moveDown, title: t('blockToolbar.moveDown') }
7249
- ];
7250
-
7251
- moveButtons.forEach(({ item, icon, title }) => {
7252
- const button = Utils.createElement('button', {
7253
- className: 'neiki-toolbar-btn neiki-floating-btn neiki-floating-move-btn',
7254
- title: title,
7255
- type: 'button',
7256
- innerHTML: icon,
7257
- 'data-command': item
7258
- });
7259
-
7260
- button.addEventListener('click', (e) => {
7261
- e.preventDefault();
7262
- e.stopPropagation();
7263
- this.handleButtonClick(item);
7264
- });
7265
-
7266
- this.toolbar.appendChild(button);
7267
- });
7268
-
7269
- // Divider
7270
- const divider = Utils.createElement('span', { className: 'neiki-floating-divider' });
7271
- this.toolbar.appendChild(divider);
7272
-
7273
- // Formatting buttons
7274
- const buttons = [
7275
- { item: 'bold', icon: Icons.bold, title: 'Bold' },
7276
- { item: 'italic', icon: Icons.italic, title: 'Italic' },
7277
- { item: 'underline', icon: Icons.underline, title: 'Underline' },
7278
- { item: 'strikeThrough', icon: Icons.strikethrough, title: 'Strikethrough' },
7279
- { item: 'link', icon: Icons.link, title: 'Link' }
7280
- ];
7266
+ const config = items[item];
7267
+ if (!config) return;
7268
+ const button = Utils.createElement('button', {
7269
+ className: `neiki-toolbar-btn neiki-floating-btn${config.move ? ' neiki-floating-move-btn' : ''}`,
7270
+ title: config.title,
7271
+ 'aria-label': config.title,
7272
+ type: 'button',
7273
+ innerHTML: config.icon,
7274
+ 'data-command': item
7275
+ });
7281
7276
 
7282
- buttons.forEach(({ item, icon, title }) => {
7283
- const button = Utils.createElement('button', {
7284
- className: 'neiki-toolbar-btn neiki-floating-btn',
7285
- title: title,
7286
- type: 'button',
7287
- innerHTML: icon,
7288
- 'data-command': item
7289
- });
7277
+ button.addEventListener('click', (e) => {
7278
+ e.preventDefault();
7279
+ e.stopPropagation();
7280
+ this.handleButtonClick(item);
7281
+ });
7290
7282
 
7291
- button.addEventListener('click', (e) => {
7292
- e.preventDefault();
7293
- e.stopPropagation();
7294
- this.handleButtonClick(item);
7283
+ this.toolbar.appendChild(button);
7284
+ lastWasDivider = false;
7295
7285
  });
7286
+ }
7296
7287
 
7297
- this.toolbar.appendChild(button);
7298
- });
7288
+ if (lastWasDivider && this.toolbar.lastElementChild) {
7289
+ this.toolbar.lastElementChild.remove();
7290
+ }
7291
+ this.isEnabled = this.toolbar.childElementCount > 0;
7299
7292
 
7300
7293
  document.body.appendChild(this.toolbar);
7301
7294
  }
@@ -7316,6 +7309,13 @@
7316
7309
  }
7317
7310
 
7318
7311
  updatePosition() {
7312
+ // Mobile browsers provide their own selection controls after a long press.
7313
+ // Do not place a second toolbar underneath those native controls.
7314
+ if (!this.isEnabled || this.usesNativeTouchSelectionUI()) {
7315
+ this.hide();
7316
+ return;
7317
+ }
7318
+
7319
7319
  // Hide when an image is selected (image toolbar takes over)
7320
7320
  if (this.editor.imageResizer && this.editor.imageResizer.currentImg) {
7321
7321
  this.hide();
@@ -7351,6 +7351,10 @@
7351
7351
  this.toolbar.style.top = finalY + 'px';
7352
7352
  }
7353
7353
 
7354
+ usesNativeTouchSelectionUI() {
7355
+ return typeof window.matchMedia === 'function' && window.matchMedia('(pointer: coarse)').matches;
7356
+ }
7357
+
7354
7358
  show() {
7355
7359
  if (!this.isVisible) {
7356
7360
  this.toolbar.classList.add('show');
@@ -7373,7 +7377,8 @@
7373
7377
  } else if (item === 'moveDown') {
7374
7378
  if (this.editor.blockDragDrop) this.editor.blockDragDrop.moveBlockDown();
7375
7379
  } else {
7376
- this.editor.commands[item]();
7380
+ const command = item === 'strikethrough' ? 'strikeThrough' : item;
7381
+ this.editor.commands[command]();
7377
7382
  }
7378
7383
  this.hide();
7379
7384
  }
@@ -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-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-default-style p{margin:0 0 1em}.neiki-content-default-style h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content-default-style h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style ol,.neiki-content-default-style ul{margin:0 0 1em;padding-left:2em}.neiki-content-default-style li{margin-bottom:.25em}.neiki-content-default-style 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-default-style code,.neiki-content-default-style pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content-default-style pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content-default-style code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content-default-style a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content-default-style a:hover{color:var(--neiki-accent-hover)}.neiki-content-default-style img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content-default-style img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content-default-style 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-default-style table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content-default-style table td,.neiki-content-default-style table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content-default-style table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content-default-style table td:hover,.neiki-content-default-style 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-default-style table td.neiki-cell-selected,.neiki-content-default-style 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-default-style p{margin:0 0 1em}.neiki-content-default-style h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content-default-style h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content-default-style ol,.neiki-content-default-style ul{margin:0 0 1em;padding-left:2em}.neiki-content-default-style li{margin-bottom:.25em}.neiki-content-default-style 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-default-style code,.neiki-content-default-style pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content-default-style pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content-default-style code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content-default-style a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content-default-style a:hover{color:var(--neiki-accent-hover)}.neiki-content-default-style img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content-default-style img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content-default-style 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-default-style table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content-default-style table td,.neiki-content-default-style table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content-default-style table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content-default-style table td:hover,.neiki-content-default-style 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-default-style table td.neiki-cell-selected,.neiki-content-default-style 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}.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}}@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-floating-toolbar{display:none!important}}@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}