neiki-editor 3.2.0 → 3.3.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
@@ -9,9 +9,10 @@
9
9
  <img src="https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge&logo=php&logoColor=white" alt="PHP">
10
10
  <img src="https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white" alt="HTML5">
11
11
  <img src="https://img.shields.io/badge/css-%23663399.svg?style=for-the-badge&logo=css&logoColor=white" alt="CSS">
12
+ <img src="https://img.shields.io/badge/web%20components-29ABE2.svg?style=for-the-badge&logo=webcomponentsdotorg&logoColor=white" alt="Web Components">
12
13
  <br>
13
14
  <img src="https://img.shields.io/badge/License-AGPL--3.0-2563EB?style=for-the-badge&logo=open-source-initiative&logoColor=white&labelColor=000F15&logoWidth=20" alt="License">
14
- <img src="https://img.shields.io/badge/Version-3.2.0-2563EB?style=for-the-badge&logo=semantic-release&logoColor=white&labelColor=000F15&logoWidth=20" alt="Version">
15
+ <img src="https://img.shields.io/badge/Version-3.3.0-2563EB?style=for-the-badge&logo=semantic-release&logoColor=white&labelColor=000F15&logoWidth=20" alt="Version">
15
16
  </p>
16
17
 
17
18
  <p align="center">
@@ -109,7 +110,7 @@ If you want a content editor that you can read, host, and reason about as a sing
109
110
  - Plugin API for custom toolbar buttons and init hooks
110
111
  - PHP integration helper with asset loading, rendering, and HTML sanitization
111
112
  - Eight built-in UI languages: `en`, `cs`, `zh`, `es`, `de`, `fr`, `pt`, `ja`
112
- - Six built-in themes: Light, Dark, Blue, Dark Blue, Midnight, Void
113
+ - Seven built-in themes: Light, Dark, Blue, Dark Blue, Midnight, Void, Autumn
113
114
  - Lifecycle callbacks: `onReady`, `onChange`, `onSave`, `onFocus`, `onBlur`
114
115
 
115
116
  ---
@@ -129,7 +130,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
129
130
  **Pin a specific version**
130
131
 
131
132
  ```html
132
- <script src="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.min.js"></script>
133
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.3.0/neiki-editor.min.js"></script>
133
134
  ```
134
135
 
135
136
  **Load CSS and JS separately**
@@ -140,8 +141,8 @@ The recommended install is the single bundled script from the CDN. CSS is includ
140
141
  <script src="https://cdn.neikiri.dev/neiki-editor/neiki-editor.js"></script>
141
142
 
142
143
  <!-- Or pinned -->
143
- <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.css">
144
- <script src="https://cdn.neikiri.dev/neiki-editor/3.2.0/neiki-editor.js"></script>
144
+ <link rel="stylesheet" href="https://cdn.neikiri.dev/neiki-editor/3.3.0/neiki-editor.css">
145
+ <script src="https://cdn.neikiri.dev/neiki-editor/3.3.0/neiki-editor.js"></script>
145
146
  ```
146
147
 
147
148
  **Alternative CDN — jsDelivr**
@@ -149,7 +150,7 @@ The recommended install is the single bundled script from the CDN. CSS is includ
149
150
  ```html
150
151
  <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@latest/dist/neiki-editor.min.js"></script>
151
152
  <!-- Pinned -->
152
- <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.2.0/dist/neiki-editor.min.js"></script>
153
+ <script src="https://cdn.jsdelivr.net/gh/neikiri/neiki-editor@3.3.0/dist/neiki-editor.min.js"></script>
153
154
  ```
154
155
 
155
156
  **Package manager**
@@ -229,7 +230,7 @@ const editor = new NeikiEditor('#editor', {
229
230
  placeholder: 'Start typing...',
230
231
  minHeight: 300,
231
232
  maxHeight: 600,
232
- theme: 'light', // 'light' | 'dark' | 'blue' | 'dark-blue'
233
+ theme: 'light', // 'light' | 'dark' | 'blue' | 'dark-blue' | 'midnight' | 'void' | 'autumn'
233
234
  language: 'en', // 'en' | 'cs' | 'zh' | 'es' | 'de' | 'fr' | 'pt' | 'ja'
234
235
  onChange: function (content, editor) {
235
236
  console.log('Content changed:', content);
@@ -247,7 +248,7 @@ const editor = new NeikiEditor('#editor', {
247
248
  | `autofocus` | `boolean` | `false` | Focus the editor on initialization |
248
249
  | `spellcheck` | `boolean` | `true` | Enable browser spellcheck |
249
250
  | `readonly` | `boolean` | `false` | Make the editor read-only |
250
- | `theme` | `string` | `'light'` | `'light'`, `'dark'`, `'blue'`, `'dark-blue'`, `'midnight'`, or `'void'` |
251
+ | `theme` | `string` | `'light'` | `'light'`, `'dark'`, `'blue'`, `'dark-blue'`, `'midnight'`, `'void'`, or `'autumn'` |
251
252
  | `language` | `string` | `'en'` | UI language (see list above) |
252
253
  | `translations` | `object \| null` | `null` | Custom translation keys, merged with built-ins |
253
254
  | `contextMenu` | `boolean` | `true` | Enable the custom right-click context menu. Set to `false` to fall back to the browser's native menu |
@@ -285,13 +286,13 @@ Available identifiers include text formatting (`bold`, `italic`, `underline`, `s
285
286
 
286
287
  ### Themes
287
288
 
288
- Six themes ship by default: `light`, `dark`, `blue`, `dark-blue`, `midnight`, and `void` (a dark purple cyberpunk theme with neon-purple glow accents). Set one at init or change it at runtime:
289
+ Seven themes ship by default: `light`, `dark`, `blue`, `dark-blue`, `midnight`, `void` (a dark purple cyberpunk theme with neon-purple glow accents), and `autumn` (a warm retro theme with a brown background and orange accents). Set one at init or change it at runtime:
289
290
 
290
291
  ```javascript
291
292
  const editor = new NeikiEditor('#editor', { theme: 'dark' });
292
293
 
293
294
  editor.setTheme('void'); // set a specific theme
294
- editor.toggleTheme(); // cycle: light → dark → blue → dark-blue → midnight → void → light
295
+ editor.toggleTheme(); // cycle: light → dark → blue → dark-blue → midnight → void → autumn → light
295
296
  ```
296
297
 
297
298
  > The selected theme is persisted to `localStorage` as a **global** setting. It applies to all editor instances on the page and persists across reloads. If a user has already chosen a theme, that saved preference takes priority over the `theme` config value — call `setTheme()` after init if you need to override it.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * NeikiEditor - Production-Ready WYSIWYG Rich Text Editor
3
3
  * CSS Stylesheet
4
- * Version: 3.2.0
4
+ * Version: 3.3.0
5
5
  */
6
6
 
7
7
  /* ============================================
@@ -230,6 +230,44 @@
230
230
  text-shadow: 0 0 6px rgba(176, 38, 255, 0.6);
231
231
  }
232
232
 
233
+ /* Autumn Theme — warm retro palette */
234
+ .neiki-editor.neiki-theme-autumn,
235
+ .neiki-modal-overlay.neiki-theme-autumn,
236
+ .neiki-context-menu.neiki-theme-autumn {
237
+ --neiki-bg-primary: #282828;
238
+ --neiki-bg-secondary: #32302f;
239
+ --neiki-bg-tertiary: #3c3836;
240
+ --neiki-bg-hover: #504945;
241
+ --neiki-bg-active: #665c54;
242
+ --neiki-border-color: #3c3836;
243
+ --neiki-border-color-dark: #665c54;
244
+ --neiki-text-primary: #ebdbb2;
245
+ --neiki-text-secondary: #d5c4a1;
246
+ --neiki-text-muted: #a89984;
247
+ --neiki-accent-color: #fe8019;
248
+ --neiki-accent-hover: #d65d0e;
249
+ --neiki-danger-color: #fb4934;
250
+ --neiki-success-color: #b8bb26;
251
+ --neiki-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.25);
252
+ --neiki-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.35);
253
+ --neiki-shadow-lg: 0 16px 32px rgba(0, 0, 0, 0.45);
254
+ --neiki-editor-bg: #282828;
255
+ --neiki-toolbar-bg: #32302f;
256
+ --neiki-statusbar-bg: #32302f;
257
+ --neiki-modal-overlay: rgba(0, 0, 0, 0.7);
258
+ --neiki-scrollbar-thumb: #665c54;
259
+ --neiki-scrollbar-track: #3c3836;
260
+ --neiki-selection-bg: #504945;
261
+ --neiki-highlight-color: #d79921;
262
+ --neiki-table-border: #3c3836;
263
+ }
264
+
265
+ /* Autumn — toolbar selects and fontsize input text color */
266
+ .neiki-editor.neiki-theme-autumn .neiki-select,
267
+ .neiki-editor.neiki-theme-autumn .neiki-fontsize-input {
268
+ color: var(--neiki-text-secondary);
269
+ }
270
+
233
271
  /* ============================================
234
272
  Base Editor Container
235
273
  ============================================ */
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * NeikiEditor - A Modern WYSIWYG Editor
3
- * Version: 3.2.0
3
+ * Version: 3.3.0
4
4
  *
5
5
  * A lightweight, feature-rich text editor with support for:
6
6
  * - Rich text formatting (bold, italic, underline, etc.)
@@ -113,6 +113,7 @@
113
113
  'theme.darkBlue': 'Dark Blue',
114
114
  'theme.midnight': 'Midnight',
115
115
  'theme.void': 'Void',
116
+ 'theme.autumn': 'Autumn',
116
117
 
117
118
  // Help modal
118
119
  'help.author': 'Author',
@@ -311,6 +312,7 @@
311
312
  'theme.darkBlue': 'Tmavě modrý',
312
313
  'theme.midnight': 'Půlnoc',
313
314
  'theme.void': 'Prázdnota',
315
+ 'theme.autumn': 'Podzim',
314
316
  'help.author': 'Autor',
315
317
  'help.version': 'Verze',
316
318
  'help.github': 'GitHub',
@@ -494,6 +496,7 @@
494
496
  'theme.darkBlue': '深蓝色',
495
497
  'theme.midnight': '午夜',
496
498
  'theme.void': '虚空',
499
+ 'theme.autumn': '秋天',
497
500
  'help.author': '作者',
498
501
  'help.version': '版本',
499
502
  'help.github': 'GitHub',
@@ -660,6 +663,7 @@
660
663
  'theme.darkBlue': 'Azul oscuro',
661
664
  'theme.midnight': 'Medianoche',
662
665
  'theme.void': 'Vacío',
666
+ 'theme.autumn': 'Otoño',
663
667
  'help.author': 'Autor',
664
668
  'help.version': 'Versión',
665
669
  'help.github': 'GitHub',
@@ -826,6 +830,7 @@
826
830
  'theme.darkBlue': 'Dunkelblau',
827
831
  'theme.midnight': 'Mitternacht',
828
832
  'theme.void': 'Leere',
833
+ 'theme.autumn': 'Herbst',
829
834
  'help.author': 'Autor',
830
835
  'help.version': 'Version',
831
836
  'help.github': 'GitHub',
@@ -992,6 +997,7 @@
992
997
  'theme.darkBlue': 'Bleu foncé',
993
998
  'theme.midnight': 'Minuit',
994
999
  'theme.void': 'Néant',
1000
+ 'theme.autumn': 'Automne',
995
1001
  'help.author': 'Auteur',
996
1002
  'help.version': 'Version',
997
1003
  'help.github': 'GitHub',
@@ -1158,6 +1164,7 @@
1158
1164
  'theme.darkBlue': 'Azul escuro',
1159
1165
  'theme.midnight': 'Meia-noite',
1160
1166
  'theme.void': 'Vazio',
1167
+ 'theme.autumn': 'Outono',
1161
1168
  'help.author': 'Autor',
1162
1169
  'help.version': 'Versão',
1163
1170
  'help.github': 'GitHub',
@@ -1324,6 +1331,7 @@
1324
1331
  'theme.darkBlue': 'ダークブルー',
1325
1332
  'theme.midnight': 'ミッドナイト',
1326
1333
  'theme.void': 'ヴォイド',
1334
+ 'theme.autumn': 'オータム',
1327
1335
  'help.author': '作成者',
1328
1336
  'help.version': 'バージョン',
1329
1337
  'help.github': 'GitHub',
@@ -1442,14 +1450,15 @@
1442
1450
  return text;
1443
1451
  }
1444
1452
 
1445
- const THEMES = ['light', 'dark', 'blue', 'dark-blue', 'midnight', 'void'];
1453
+ const THEMES = ['light', 'dark', 'blue', 'dark-blue', 'midnight', 'void', 'autumn'];
1446
1454
  const THEME_OPTIONS = [
1447
1455
  { value: 'light', labelKey: 'theme.light' },
1448
1456
  { value: 'dark', labelKey: 'theme.dark' },
1449
1457
  { value: 'blue', labelKey: 'theme.blue' },
1450
1458
  { value: 'dark-blue', labelKey: 'theme.darkBlue' },
1451
1459
  { value: 'midnight', labelKey: 'theme.midnight' },
1452
- { value: 'void', labelKey: 'theme.void' }
1460
+ { value: 'void', labelKey: 'theme.void' },
1461
+ { value: 'autumn', labelKey: 'theme.autumn' }
1453
1462
  ];
1454
1463
 
1455
1464
  const DEFAULT_CONFIG = {
@@ -2282,7 +2291,7 @@
2282
2291
 
2283
2292
  syncThemeClasses() {
2284
2293
  if (!this.overlay || !this.editor.getThemeClasses) return;
2285
- this.overlay.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
2294
+ this.overlay.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn');
2286
2295
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
2287
2296
  this.overlay.classList.add(className);
2288
2297
  });
@@ -3064,7 +3073,7 @@
3064
3073
  <img src="https://github.com/neikiri/neiki-editor/raw/main/assets/logo.png" alt="Neiki's Editor" style="width: 240px; height: auto; margin: 0 auto 16px; display: block;">
3065
3074
  <div style="font-size: 14px; line-height: 2; color: var(--neiki-text-primary);">
3066
3075
  <div><strong>${Utils.escapeHTML(t('help.author'))}:</strong> neikiri (Jindřich Stoklasa)</div>
3067
- <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.2.0</div>
3076
+ <div><strong>${Utils.escapeHTML(t('help.version'))}:</strong> 3.3.0</div>
3068
3077
  <div><strong>${Utils.escapeHTML(t('help.github'))}:</strong> <a href="https://github.com/neikiri/neiki-editor" target="_blank" rel="noopener noreferrer" style="color: var(--neiki-accent);">github.com/neikiri/neiki-editor</a></div>
3069
3078
  <div><strong>${Utils.escapeHTML(t('help.documentation'))}:</strong> <a href="https://github.com/neikiri/neiki-editor/wiki" target="_blank" rel="noopener noreferrer" style="color: var(--neiki-accent);">Wiki</a></div>
3070
3079
  </div>
@@ -4060,7 +4069,7 @@
4060
4069
  const normalizedTheme = THEMES.includes(theme) ? theme : 'light';
4061
4070
  const classes = [];
4062
4071
 
4063
- if (normalizedTheme === 'dark' || normalizedTheme === 'dark-blue' || normalizedTheme === 'midnight' || normalizedTheme === 'void') {
4072
+ if (normalizedTheme === 'dark' || normalizedTheme === 'dark-blue' || normalizedTheme === 'midnight' || normalizedTheme === 'void' || normalizedTheme === 'autumn') {
4064
4073
  classes.push('neiki-dark');
4065
4074
  }
4066
4075
 
@@ -4074,7 +4083,7 @@
4074
4083
  applyTheme(theme) {
4075
4084
  const normalizedTheme = THEMES.includes(theme) ? theme : 'light';
4076
4085
  this.config.theme = normalizedTheme;
4077
- this.container.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
4086
+ this.container.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn');
4078
4087
  this.getThemeClasses(normalizedTheme).split(' ').filter(Boolean).forEach(className => {
4079
4088
  this.container.classList.add(className);
4080
4089
  });
@@ -5049,7 +5058,7 @@
5049
5058
  }
5050
5059
  break;
5051
5060
  case 'themeToggle':
5052
- isActive = this.config.theme === 'dark' || this.config.theme === 'dark-blue' || this.config.theme === 'midnight' || this.config.theme === 'void';
5061
+ isActive = this.config.theme === 'dark' || this.config.theme === 'dark-blue' || this.config.theme === 'midnight' || this.config.theme === 'void' || this.config.theme === 'autumn';
5053
5062
  break;
5054
5063
  }
5055
5064
  } catch (e) {
@@ -7301,7 +7310,7 @@
7301
7310
 
7302
7311
  syncThemeClasses() {
7303
7312
  if (!this.editor.getThemeClasses) return;
7304
- this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
7313
+ this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn');
7305
7314
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
7306
7315
  this.menu.classList.add(className);
7307
7316
  });
@@ -7496,7 +7505,7 @@
7496
7505
 
7497
7506
  syncThemeClasses() {
7498
7507
  if (!this.editor.getThemeClasses) return;
7499
- this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void');
7508
+ this.menu.classList.remove('neiki-dark', 'neiki-theme-blue', 'neiki-theme-dark-blue', 'neiki-theme-midnight', 'neiki-theme-void', 'neiki-theme-autumn');
7500
7509
  this.editor.getThemeClasses(this.editor.config.theme).split(' ').filter(Boolean).forEach(className => {
7501
7510
  this.menu.classList.add(className);
7502
7511
  });
@@ -1 +1 @@
1
- .neiki-checkbox,.neiki-find-replace-option input{accent-color:var(--neiki-accent-color)}.neiki-modal,.neiki-modal-overlay.show .neiki-modal{animation:.2s neiki-modal-in}:root{--neiki-bg-primary:#ffffff;--neiki-bg-secondary:#f8f9fa;--neiki-bg-tertiary:#e9ecef;--neiki-bg-hover:#dee2e6;--neiki-bg-active:#ced4da;--neiki-border-color:#dee2e6;--neiki-border-color-dark:#adb5bd;--neiki-text-primary:#212529;--neiki-text-secondary:#495057;--neiki-text-muted:#6c757d;--neiki-accent-color:#0d6efd;--neiki-accent-hover:#0b5ed7;--neiki-danger-color:#dc3545;--neiki-success-color:#198754;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.05);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.1);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.1);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#f8f9fa;--neiki-statusbar-bg:#f8f9fa;--neiki-modal-overlay:rgba(0, 0, 0, 0.5);--neiki-scrollbar-thumb:#ced4da;--neiki-scrollbar-track:#f8f9fa;--neiki-selection-bg:#b3d7ff;--neiki-highlight-color:#fff3cd;--neiki-table-border:#dee2e6}.neiki-context-menu.neiki-dark,.neiki-editor.neiki-dark,.neiki-modal-overlay.neiki-dark{--neiki-bg-primary:#1e1e1e;--neiki-bg-secondary:#252526;--neiki-bg-tertiary:#2d2d30;--neiki-bg-hover:#3e3e42;--neiki-bg-active:#505050;--neiki-border-color:#3e3e42;--neiki-border-color-dark:#505050;--neiki-text-primary:#d4d4d4;--neiki-text-secondary:#a0a0a0;--neiki-text-muted:#808080;--neiki-accent-color:#4fc3f7;--neiki-accent-hover:#29b6f6;--neiki-danger-color:#f44336;--neiki-success-color:#4caf50;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.2);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.3);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.4);--neiki-editor-bg:#1e1e1e;--neiki-toolbar-bg:#252526;--neiki-statusbar-bg:#252526;--neiki-modal-overlay:rgba(0, 0, 0, 0.7);--neiki-scrollbar-thumb:#505050;--neiki-scrollbar-track:#2d2d30;--neiki-selection-bg:#264f78;--neiki-highlight-color:#5c4d00;--neiki-table-border:#3e3e42}.neiki-context-menu.neiki-theme-blue,.neiki-editor.neiki-theme-blue,.neiki-modal-overlay.neiki-theme-blue{--neiki-bg-primary:#f8fbff;--neiki-bg-secondary:#eef6ff;--neiki-bg-tertiary:#dbeafe;--neiki-bg-hover:#bfdbfe;--neiki-bg-active:#93c5fd;--neiki-border-color:#bfdbfe;--neiki-border-color-dark:#60a5fa;--neiki-text-primary:#0f172a;--neiki-text-secondary:#1e3a8a;--neiki-text-muted:#64748b;--neiki-accent-color:#2563eb;--neiki-accent-hover:#1d4ed8;--neiki-danger-color:#dc3545;--neiki-success-color:#16803d;--neiki-shadow-sm:0 1px 2px rgba(37, 99, 235, 0.08);--neiki-shadow-md:0 4px 10px rgba(37, 99, 235, 0.12);--neiki-shadow-lg:0 14px 28px rgba(37, 99, 235, 0.16);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#eaf4ff;--neiki-statusbar-bg:#eef6ff;--neiki-modal-overlay:rgba(15, 23, 42, 0.45);--neiki-scrollbar-thumb:#93c5fd;--neiki-scrollbar-track:#eff6ff;--neiki-selection-bg:#bfdbfe;--neiki-highlight-color:#fef08a;--neiki-table-border:#bfdbfe}.neiki-context-menu.neiki-theme-midnight,.neiki-editor.neiki-theme-midnight,.neiki-modal-overlay.neiki-theme-midnight{--neiki-bg-primary:#0d0d12;--neiki-bg-secondary:#13131a;--neiki-bg-tertiary:#1a1a24;--neiki-bg-hover:#22223a;--neiki-bg-active:#2c2c4a;--neiki-border-color:#2a2a3d;--neiki-border-color-dark:#3d3d5c;--neiki-text-primary:#e8e8f0;--neiki-text-secondary:#c084fc;--neiki-text-muted:#7070a0;--neiki-accent-color:#c084fc;--neiki-accent-hover:#a855f7;--neiki-danger-color:#f87171;--neiki-success-color:#4ade80;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.3);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.5);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.6);--neiki-editor-bg:#0a0a10;--neiki-toolbar-bg:#111118;--neiki-statusbar-bg:#111118;--neiki-modal-overlay:rgba(0, 0, 0, 0.8);--neiki-scrollbar-thumb:#2c2c4a;--neiki-scrollbar-track:#0d0d12;--neiki-selection-bg:#3b1f5e;--neiki-highlight-color:#3b1f5e;--neiki-table-border:#2a2a3d}.neiki-context-menu.neiki-theme-dark-blue,.neiki-editor.neiki-theme-dark-blue,.neiki-modal-overlay.neiki-theme-dark-blue{--neiki-bg-primary:#07111f;--neiki-bg-secondary:#0b1d33;--neiki-bg-tertiary:#102a46;--neiki-bg-hover:#173b61;--neiki-bg-active:#1d4f82;--neiki-border-color:#1f3f63;--neiki-border-color-dark:#2f6da5;--neiki-text-primary:#e6f1ff;--neiki-text-secondary:#b9d7f8;--neiki-text-muted:#7ea6cc;--neiki-accent-color:#38bdf8;--neiki-accent-hover:#0ea5e9;--neiki-danger-color:#fb7185;--neiki-success-color:#34d399;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.24);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.34);--neiki-shadow-lg:0 18px 36px rgba(0, 0, 0, 0.46);--neiki-editor-bg:#081827;--neiki-toolbar-bg:#0b1d33;--neiki-statusbar-bg:#0b1d33;--neiki-modal-overlay:rgba(0, 0, 0, 0.72);--neiki-scrollbar-thumb:#1d4f82;--neiki-scrollbar-track:#07111f;--neiki-selection-bg:#164e63;--neiki-highlight-color:#854d0e;--neiki-table-border:#1f3f63}.neiki-editor.neiki-theme-midnight .neiki-fontsize-input,.neiki-editor.neiki-theme-midnight .neiki-select,.neiki-editor.neiki-theme-void .neiki-fontsize-input,.neiki-editor.neiki-theme-void .neiki-select{color:var(--neiki-text-secondary)}.neiki-context-menu.neiki-theme-void,.neiki-editor.neiki-theme-void,.neiki-modal-overlay.neiki-theme-void{--neiki-bg-primary:#0f0a1e;--neiki-bg-secondary:#150f2b;--neiki-bg-tertiary:#1e1640;--neiki-bg-hover:#2a1f52;--neiki-bg-active:#362a66;--neiki-border-color:#3d2e6b;--neiki-border-color-dark:#55408f;--neiki-text-primary:#ece6ff;--neiki-text-secondary:#d68bff;--neiki-text-muted:#8a7ab0;--neiki-accent-color:#b026ff;--neiki-accent-hover:#e040fb;--neiki-danger-color:#ff4d6d;--neiki-success-color:#39ff9d;--neiki-shadow-sm:0 1px 2px rgba(124, 58, 237, 0.25);--neiki-shadow-md:0 4px 16px rgba(124, 58, 237, 0.4);--neiki-shadow-lg:0 16px 40px rgba(176, 38, 255, 0.35);--neiki-editor-bg:#0a0614;--neiki-toolbar-bg:#130c26;--neiki-statusbar-bg:#130c26;--neiki-modal-overlay:rgba(5, 2, 15, 0.85);--neiki-scrollbar-thumb:#4c3684;--neiki-scrollbar-track:#130c26;--neiki-selection-bg:#4c1d95;--neiki-highlight-color:#3c1361;--neiki-table-border:#3d2e6b}.neiki-editor.neiki-theme-void .neiki-toolbar{border-bottom:1px solid var(--neiki-border-color);box-shadow:0 1px 12px rgba(176,38,255,.15)}.neiki-context-menu.neiki-theme-void .neiki-context-item:hover,.neiki-editor.neiki-theme-void .neiki-toolbar-btn:hover{box-shadow:0 0 10px rgba(176,38,255,.5)}.neiki-editor.neiki-theme-void .neiki-toolbar-btn.active{box-shadow:0 0 8px rgba(176,38,255,.65)}.neiki-editor.neiki-theme-void .neiki-content ::selection,.neiki-editor.neiki-theme-void .neiki-content::selection{background:var(--neiki-selection-bg);text-shadow:0 0 6px rgba(176,38,255,.6)}.neiki-editor{display:flex;flex-direction:column;width:100%;height:100%;min-height:400px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;color:var(--neiki-text-primary);box-shadow:var(--neiki-shadow-md)}.neiki-editor *{box-sizing:border-box}.neiki-editor.neiki-fullscreen{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:999999!important;border-radius:0!important;border:none!important}.neiki-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:var(--neiki-toolbar-bg);border-bottom:1px solid var(--neiki-border-color);min-height:44px}.neiki-editor.neiki-sticky-toolbar{overflow:visible}.neiki-editor.neiki-sticky-toolbar .neiki-toolbar{position:sticky;top:0;z-index:100;border-radius:8px 8px 0 0}.neiki-toolbar-group{display:inline-flex;align-items:center;gap:2px;padding:0 4px;flex-wrap:nowrap}.neiki-toolbar-group:not(:last-child){border-right:1px solid var(--neiki-border-color);padding-right:8px;margin-right:4px}.neiki-toolbar-divider{width:1px;height:24px;background:var(--neiki-border-color);margin:0 4px}.neiki-btn,.neiki-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--neiki-text-secondary);transition:.15s;position:relative}.neiki-btn:hover,.neiki-fontsize-btn:hover,.neiki-modal-close:hover,.neiki-preview-close:hover,.neiki-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-text-primary)}.neiki-btn:active,.neiki-floating-btn:active,.neiki-toolbar-btn:active{background:var(--neiki-bg-active)}.neiki-btn.active,.neiki-toolbar-btn.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-btn:disabled,.neiki-toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.neiki-btn svg,.neiki-toolbar-btn svg{width:18px;height:18px;fill:currentColor;pointer-events:none}.neiki-select{height:32px;padding:0 28px 0 10px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;min-width:100px}.neiki-select:hover{border-color:var(--neiki-border-color-dark)}.neiki-select:focus,.neiki-theme-menu-select:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-custom,.neiki-statusbar{border-top:1px solid var(--neiki-border-color)}.neiki-theme-select-wrapper{display:inline-flex;align-items:center;gap:6px;height:32px}.neiki-theme-select-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--neiki-text-secondary);width:18px;height:18px;flex-shrink:0}.neiki-context-item svg,.neiki-context-menu-item svg,.neiki-dropdown-item-icon svg,.neiki-floating-btn svg,.neiki-img-toolbar-btn svg,.neiki-theme-select-icon svg{width:16px;height:16px;fill:currentColor}.neiki-theme-select{min-width:116px;max-width:150px}.neiki-color-btn{position:relative;width:36px}.neiki-color-btn .neiki-color-indicator{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);width:16px;height:3px;border-radius:1px;background:currentColor}.neiki-checkbox-wrapper{display:flex;align-items:center;gap:6px;padding:0 8px;height:32px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer;user-select:none}.neiki-checkbox{width:16px;height:16px;cursor:pointer}.neiki-content-wrapper,.neiki-editor-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.neiki-content{flex:1;padding:20px 24px;background:var(--neiki-editor-bg);overflow-y:auto;outline:0;line-height:1.6;color:var(--neiki-text-primary);min-height:200px}.neiki-code-view-textarea:focus,.neiki-content:focus{outline:0}.neiki-content:empty::before{content:attr(data-placeholder);color:var(--neiki-text-muted);font-style:italic;pointer-events:none}.neiki-content.neiki-drag-over{border:2px dashed var(--neiki-accent-color);background:rgba(13,110,253,.05)}.neiki-content.neiki-drag-over::after{content:'Drop media here';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--neiki-accent-color);font-weight:600;font-size:16px;pointer-events:none;z-index:10}.neiki-drop-indicator{position:absolute;width:3px;min-height:22px;background:var(--neiki-accent-color);border-radius:999px;box-shadow:0 0 0 3px rgba(13,110,253,.18);pointer-events:none;opacity:0;transform:translateX(-1px);transition:opacity 80ms;z-index:80}.neiki-drop-indicator::after,.neiki-drop-indicator::before{content:'';position:absolute;left:50%;width:9px;height:9px;background:var(--neiki-accent-color);border-radius:50%;transform:translateX(-50%)}.neiki-drop-indicator::before{top:-4px}.neiki-drop-indicator::after{bottom:-4px}.neiki-drop-indicator.show{opacity:1}.neiki-editor.neiki-disabled{opacity:.6;pointer-events:none}.neiki-content::-webkit-scrollbar{width:10px}.neiki-content::-webkit-scrollbar-track{background:var(--neiki-scrollbar-track)}.neiki-content::-webkit-scrollbar-thumb{background:var(--neiki-scrollbar-thumb);border-radius:5px}.neiki-content::-webkit-scrollbar-thumb:hover{background:var(--neiki-border-color-dark)}.neiki-content p{margin:0 0 1em}.neiki-content h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content ol,.neiki-content ul{margin:0 0 1em;padding-left:2em}.neiki-content li{margin-bottom:.25em}.neiki-content blockquote{margin:0 0 1em;padding:10px 20px;border-left:4px solid var(--neiki-accent-color);background:var(--neiki-bg-secondary);font-style:italic}.neiki-content code,.neiki-content pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content a:hover{color:var(--neiki-accent-hover)}.neiki-content img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content video{display:block;max-width:100%;height:auto;margin:0 0 1em;border-radius:6px;background:#000}.neiki-highlight{background:var(--neiki-highlight-color);padding:1px 0}.neiki-content table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content table td,.neiki-content table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content table td:hover,.neiki-content table th:hover,.neiki-context-item:hover,.neiki-context-menu-item:hover,.neiki-dropdown-item:hover,.neiki-fontsize-dropdown-item:hover,.neiki-special-char-item:hover{background:var(--neiki-bg-hover)}.neiki-content table td.neiki-cell-selected,.neiki-content table th.neiki-cell-selected{background:var(--neiki-selection-bg)}.neiki-table-resize-handle{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:10}.neiki-table-resize-handle:hover{background:var(--neiki-accent-color)}.neiki-statusbar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--neiki-statusbar-bg);font-size:12px;color:var(--neiki-text-muted)}.neiki-statusbar-left,.neiki-statusbar-right{display:flex;align-items:center;gap:16px}.neiki-statusbar-item{display:flex;align-items:center;gap:4px}.neiki-statusbar-block{font-family:Consolas,Monaco,monospace;font-size:11px;padding:2px 6px;background:var(--neiki-bg-tertiary);border-radius:3px;color:var(--neiki-accent-color);font-weight:600;border:1px solid var(--neiki-border-color)}.neiki-color-picker,.neiki-dropdown{position:absolute;top:100%;left:0;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg)}.neiki-dropdown{min-width:180px;background:var(--neiki-bg-primary);border-radius:6px;padding:4px;margin-top:4px}.neiki-dropdown-item{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-dropdown-item.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color)}.neiki-context-divider,.neiki-context-menu-divider,.neiki-dropdown-divider{height:1px;background:var(--neiki-border-color);margin:4px 0}.neiki-color-picker{background:var(--neiki-bg-primary);border-radius:8px;padding:8px;margin-top:4px;display:flex;flex-direction:column;gap:6px}.neiki-color-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-color-custom{display:flex;align-items:center;gap:6px}.neiki-color-custom-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border:1px solid var(--neiki-border-color);border-radius:4px;padding:2px;cursor:pointer;background:0 0}.neiki-color-custom-input::-webkit-color-swatch-wrapper{padding:0}.neiki-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.neiki-color-custom-input::-moz-color-swatch{border:none;border-radius:2px}.neiki-color-hex-input{flex:1;height:28px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;font-size:12px;font-family:monospace;background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);outline:0}.neiki-color-hex-input:focus{border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-apply-btn{height:28px;padding:0 10px;border:none;border-radius:4px;font-size:12px;font-weight:500;background:var(--neiki-accent-color);color:#fff;cursor:pointer;transition:background .15s}.neiki-emoji-picker,.neiki-special-picker{max-width:calc(100vw - 16px);overflow-y:auto;background:var(--neiki-bg-primary);padding:8px;margin-top:4px;position:absolute;top:100%;z-index:1000;box-shadow:var(--neiki-shadow-lg);left:0}.neiki-btn-primary:hover,.neiki-button-primary:hover,.neiki-color-apply-btn:hover{background:var(--neiki-accent-hover)}.neiki-color-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--neiki-border-color);transition:transform .1s}.neiki-color-swatch:hover{transform:scale(1.2);z-index:1}.neiki-color-swatch.neiki-color-reset{background:#fff;position:relative;overflow:hidden;border:1px solid #ccc}.neiki-color-preset.active,.neiki-special-item:hover{border-color:var(--neiki-accent-color)}.neiki-color-swatch.neiki-color-reset::after{content:'';position:absolute;top:50%;left:-2px;right:-2px;height:2px;background:#e53935;transform:rotate(-45deg);transform-origin:center;pointer-events:none}.neiki-color-picker-label{font-size:11px;font-weight:600;color:var(--neiki-text-muted);text-transform:uppercase;margin-bottom:8px}.neiki-emoji-item,.neiki-special-item{align-items:center;font-size:18px;cursor:pointer}.neiki-emoji-picker{width:280px;max-height:250px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-emoji-item{display:flex;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background .15s,transform .1s}.neiki-emoji-item:hover{background:var(--neiki-bg-hover);transform:scale(1.2)}.neiki-special-picker{width:320px;max-height:280px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.neiki-special-item{display:flex;justify-content:center;width:32px;height:32px;border-radius:4px;border:1px solid var(--neiki-border-color);background:var(--neiki-bg-secondary);transition:.15s}.neiki-special-item:hover{background:var(--neiki-accent-color);color:#fff;transform:scale(1.1)}.neiki-highlight-find{background:#ffeb3b;padding:1px 0;border-radius:2px}.neiki-highlight-current{background:#ff9800;outline:#e65100 solid 2px}.neiki-color-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.neiki-color-preset{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.neiki-color-preset:hover{transform:scale(1.1)}.neiki-color-preset.neiki-color-reset{background:linear-gradient(45deg,#fff 45%,red 45%,red 55%,#fff 55%);border:1px solid var(--neiki-border-color)}.neiki-color-custom{display:flex;align-items:center;gap:8px;padding-top:8px;border-top:1px solid var(--neiki-border-color)}.neiki-color-custom input[type=color]{width:40px;height:32px;padding:0;border:1px solid var(--neiki-border-color);border-radius:4px;cursor:pointer}.neiki-color-custom input[type=text]{flex:1;height:32px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;font-family:monospace}.neiki-table-picker,.neiki-table-picker-cell{border:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary)}.neiki-table-picker{position:absolute;top:100%;left:0;z-index:1000;border-radius:8px;box-shadow:var(--neiki-shadow-lg);padding:12px;display:none}.neiki-context-menu.show,.neiki-find-replace.show,.neiki-fontsize-dropdown.show,.neiki-table-picker.show{display:block}.neiki-table-picker-label{font-size:12px;color:var(--neiki-text-secondary);margin-bottom:8px;text-align:center}.neiki-dark .neiki-modal h3,.neiki-dark .neiki-modal-header h3,.neiki-modal-title{color:var(--neiki-text-primary)}.neiki-table-picker-grid{display:grid;grid-template-columns:repeat(10,20px);gap:2px}.neiki-table-picker-cell{width:20px;height:20px;border-radius:2px;cursor:pointer;transition:background .1s}.neiki-table-picker-cell.active,.neiki-table-picker-cell:hover{background:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-special-chars{position:absolute;top:100%;left:0;z-index:1000;width:280px;max-height:300px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;box-shadow:var(--neiki-shadow-lg);display:none;overflow:hidden}.neiki-special-chars.show{display:flex;flex-direction:column}.neiki-special-chars-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;padding:8px;overflow-y:auto}.neiki-special-char-item{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:16px;border-radius:4px;cursor:pointer;transition:background .1s}.neiki-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--neiki-modal-overlay);z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.neiki-modal-overlay.active,[data-tooltip]:hover::after{opacity:1;visibility:visible}.neiki-modal{background:var(--neiki-bg-primary);border-radius:12px;box-shadow:var(--neiki-shadow-lg);width:100%;max-width:440px;max-height:90vh;overflow:hidden}.neiki-modal-wide{max-width:520px}.neiki-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--neiki-border-color)}.neiki-modal-title{font-size:16px;font-weight:600;margin:0}.neiki-modal-close,.neiki-preview-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:4px;cursor:pointer;color:var(--neiki-text-muted);transition:background .15s}.neiki-modal-body{padding:20px;overflow-y:auto}.neiki-modal h3,.neiki-modal-header h3{color:#000;margin:0}.neiki-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--neiki-border-color)}.neiki-modal-footer .neiki-btn{width:auto;height:38px;padding:0 16px;font-size:14px;font-weight:500;border-radius:6px}.neiki-form-group{margin-bottom:16px}.neiki-find-replace-row:last-child,.neiki-form-group:last-child{margin-bottom:0}.neiki-form-group label,.neiki-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--neiki-text-secondary)}.neiki-form-input,.neiki-input{width:100%;height:40px;padding:0 12px;border:1px solid var(--neiki-border-color);border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;transition:border-color .15s}.neiki-form-input:focus,.neiki-form-textarea:focus,.neiki-input:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 3px rgba(13,110,253,.15)}.neiki-form-input::placeholder,.neiki-input::placeholder{color:var(--neiki-text-muted)}.neiki-input[type=file]{display:flex;align-items:center;padding:0;cursor:pointer}.neiki-input[type=file]::file-selector-button{height:100%;padding:0 14px;margin-right:12px;border:none;border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-tertiary,var(--neiki-bg-hover));color:var(--neiki-text-primary);font-size:13px;font-weight:500;cursor:pointer;border-radius:5px 0 0 5px}.neiki-image-upload-zone{position:relative;display:grid;justify-items:center;gap:7px;padding:24px 18px;border:2px dashed var(--neiki-border-color);border-radius:8px;background:var(--neiki-bg-secondary);color:var(--neiki-text-secondary);text-align:center;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.neiki-find-replace,.neiki-form-textarea{border:1px solid var(--neiki-border-color)}.neiki-image-upload-zone:focus-visible,.neiki-image-upload-zone:hover{border-color:var(--neiki-accent-color);background:var(--neiki-bg-primary);box-shadow:0 0 0 3px rgba(13,110,253,.12);outline:0}.neiki-image-upload-zone.drag-over{border-color:var(--neiki-accent-color);background:rgba(13,110,253,.08)}.neiki-form-divider::after,.neiki-form-divider::before{content:'';height:1px;background:var(--neiki-border-color)}.neiki-image-upload-zone.has-files{border-style:solid;border-color:var(--neiki-accent-color)}.neiki-image-upload-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.neiki-image-upload-icon{width:38px;height:38px;color:var(--neiki-accent-color)}.neiki-image-upload-icon svg{width:100%;height:100%;fill:currentColor}.neiki-image-upload-title{color:var(--neiki-text-primary);font-size:14px;font-weight:600}.neiki-image-upload-files,.neiki-image-upload-hint{max-width:100%;color:var(--neiki-text-muted);font-size:12px;line-height:1.4}.neiki-image-upload-files{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neiki-image-upload-zone.has-files .neiki-image-upload-files{color:var(--neiki-accent-color);font-weight:500}.neiki-form-row{display:flex;gap:16px}.neiki-form-divider{display:flex;align-items:center;margin:16px 0;text-align:center;position:relative}.neiki-form-divider::before{flex:1;margin-right:12px}.neiki-form-divider::after{flex:1;margin-left:12px}.neiki-form-divider span{color:var(--neiki-text-muted);font-size:12px;font-weight:500;text-transform:uppercase}.neiki-form-textarea{width:100%;min-height:120px;padding:12px;border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s}.neiki-btn-primary,.neiki-btn-secondary,.neiki-button{display:inline-flex;align-items:center;height:38px;padding:0 16px;font-size:14px;transition:.15s;font-weight:500;cursor:pointer}.neiki-button{justify-content:center;gap:6px;border:1px solid transparent;border-radius:6px}.neiki-btn-primary,.neiki-button-primary{background:var(--neiki-accent-color);color:#fff}.neiki-btn-secondary,.neiki-button-secondary{background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);border-color:var(--neiki-border-color)}.neiki-btn-primary,.neiki-btn-secondary{justify-content:center;border:1px solid transparent;border-radius:6px}.neiki-btn-secondary{border-color:var(--neiki-border-color)}.neiki-button-danger{background:var(--neiki-danger-color);color:#fff}.neiki-code-view,.neiki-find-replace,.neiki-find-replace-input{background:var(--neiki-bg-primary)}.neiki-button-danger:hover{opacity:.9}.neiki-find-replace{position:absolute;top:0;right:0;z-index:100;width:360px;border-radius:0 0 0 8px;box-shadow:var(--neiki-shadow-lg);display:none}.neiki-find-replace-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neiki-border-color)}.neiki-code-view-title,.neiki-find-replace-title{font-size:13px;font-weight:600;color:var(--neiki-text-primary)}.neiki-find-replace-body{padding:12px}.neiki-find-replace-row{display:flex;gap:8px;margin-bottom:10px}.neiki-find-replace-input{flex:1;height:32px;padding:0 10px;border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px}.neiki-find-replace-input:focus{outline:0;border-color:var(--neiki-accent-color)}.neiki-find-replace-options{display:flex;align-items:center;gap:12px;margin-bottom:10px}.neiki-find-replace-option{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer}.neiki-find-replace-actions{display:flex;gap:6px;flex-wrap:wrap}.neiki-find-replace-btn{height:28px;padding:0 10px;font-size:12px;border-radius:4px}.neiki-find-replace-count{font-size:12px;color:var(--neiki-text-muted);margin-left:auto}.neiki-code-view{position:absolute;top:0;left:0;right:0;bottom:0;z-index:50;display:none;flex-direction:column}.neiki-code-view.show,.neiki-drop-overlay.show{display:flex}.neiki-code-view-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);flex-shrink:0}.neiki-code-view-editor{position:relative;flex:1;width:100%;min-height:0;background:var(--neiki-bg-primary)}.neiki-code-view-highlight,.neiki-code-view-textarea{position:absolute;inset:0;width:100%;height:100%;padding:16px;border:none;font-family:Consolas,Monaco,'Courier New',monospace;font-size:13px;line-height:1.5;tab-size:2;white-space:pre-wrap;word-break:break-word;overflow:auto}.neiki-context-menu,.neiki-floating-toolbar{position:fixed;box-shadow:var(--neiki-shadow-lg)}.neiki-code-view-highlight{margin:0;color:var(--neiki-text-primary);pointer-events:none;user-select:none}.neiki-code-view-textarea{background:0 0;color:transparent;caret-color:var(--neiki-text-primary);resize:none;z-index:1}.neiki-code-view-textarea::selection{background:var(--neiki-selection-bg);color:transparent}.neiki-html-punct{color:var(--neiki-text-muted)}.neiki-html-tag{color:#0f74d8;font-weight:600}.neiki-html-attr{color:#9a5b00}.neiki-html-string{color:#16803d}.neiki-html-comment{color:var(--neiki-text-muted);font-style:italic}.neiki-dark .neiki-html-tag{color:#7dd3fc}.neiki-dark .neiki-html-attr{color:#fbbf24}.neiki-dark .neiki-html-string{color:#86efac}.neiki-code-view-apply{width:auto!important;padding:0 12px!important;display:inline-flex;align-items:center;gap:4px;height:30px;font-size:12px;background:var(--neiki-accent-color)!important;color:#fff!important;border-radius:5px}.neiki-context-menu,.neiki-floating-btn,.neiki-floating-toolbar{background:var(--neiki-bg-primary)}.neiki-code-view-apply:hover{background:var(--neiki-accent-hover)!important;color:#fff!important}.neiki-code-view-apply svg{width:14px!important;height:14px!important}.neiki-context-menu{z-index:10001;min-width:180px;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px;display:none}.neiki-context-item,.neiki-context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-context-item.neiki-context-danger,.neiki-context-menu-item.danger{color:var(--neiki-danger-color)}.neiki-context-item.neiki-context-disabled{opacity:.4;cursor:default;pointer-events:none}.neiki-floating-toolbar{z-index:1000;display:none;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px}.neiki-floating-toolbar.show{display:flex;align-items:center;gap:2px}.neiki-floating-btn{width:32px;height:32px;border:none;color:var(--neiki-text-primary);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}.neiki-floating-btn:hover,.neiki-img-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-accent-color)}.neiki-floating-toolbar .neiki-btn{width:28px;height:28px}.neiki-chevron svg,.neiki-floating-toolbar .neiki-btn svg{width:14px;height:14px}.neiki-floating-divider,.neiki-img-toolbar-separator{width:1px;height:20px;background:var(--neiki-border-color);margin:0 2px}.neiki-floating-move-btn svg{width:16px;height:16px}.neiki-more-btn,[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:6px 10px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:11px;font-weight:500;white-space:nowrap;border-radius:4px;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;pointer-events:none;z-index:10002;margin-bottom:6px}.neiki-drop-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(13,110,253,.1);border:3px dashed var(--neiki-accent-color);border-radius:8px;display:none;align-items:center;justify-content:center;z-index:100;pointer-events:none}.neiki-img-size-label,.neiki-img-toolbar{left:50%;transform:translateX(-50%);white-space:nowrap}.neiki-drop-overlay-text{font-size:18px;font-weight:600;color:var(--neiki-accent-color)}.neiki-img-resizable{display:inline-block;position:relative;outline:2px solid var(--neiki-accent-color);outline-offset:2px;border-radius:4px;line-height:0;user-select:none;-webkit-user-select:none}.neiki-img-resizable img,.neiki-img-resizable video{display:block;max-width:100%;user-select:none;-webkit-user-select:none}.neiki-img-resize-handle{position:absolute;width:12px;height:12px;background:var(--neiki-accent-color);border:2px solid #fff;border-radius:2px;z-index:10;box-shadow:0 1px 3px rgba(0,0,0,.3)}.neiki-img-resize-handle.nw{top:-6px;left:-6px;cursor:nw-resize}.neiki-img-resize-handle.ne{top:-6px;right:-6px;cursor:ne-resize}.neiki-img-resize-handle.sw{bottom:-6px;left:-6px;cursor:sw-resize}.neiki-img-resize-handle.se{bottom:-6px;right:-6px;cursor:se-resize}.neiki-img-size-label{position:absolute;bottom:-32px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:13px;line-height:1.4;font-weight:600;padding:4px 12px;border-radius:6px;pointer-events:none;z-index:10;opacity:.9}@media (pointer:coarse){.neiki-img-resize-handle{width:20px;height:20px}.neiki-img-resize-handle.nw{top:-10px;left:-10px}.neiki-img-resize-handle.ne{top:-10px;right:-10px}.neiki-img-resize-handle.sw{bottom:-10px;left:-10px}.neiki-img-resize-handle.se{bottom:-10px;right:-10px}}.neiki-img-toolbar{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-md);z-index:20;user-select:none;-webkit-user-select:none}.neiki-img-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:0 0;color:var(--neiki-text-secondary);cursor:pointer;transition:.15s}.neiki-img-toolbar-btn-danger:hover{background:#fee2e2;color:#dc2626}.neiki-editor.neiki-dark .neiki-img-toolbar-btn-danger:hover{background:#451a1a;color:#f87171}.neiki-img-drag-handle{cursor:grab}.neiki-block-grip:active,.neiki-img-drag-handle:active{cursor:grabbing}.neiki-table-col-resize-handle{position:absolute;width:6px;cursor:col-resize;z-index:10;background:0 0;transition:background .1s}.neiki-table-col-resize-handle:active,.neiki-table-col-resize-handle:hover{background:var(--neiki-accent-color);opacity:.6;border-radius:3px}.neiki-block-grip{position:absolute;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--neiki-text-muted);opacity:0;transition:opacity .15s,color .15s;border-radius:4px;z-index:5;user-select:none}.neiki-content-wrapper:hover .neiki-block-grip{opacity:.5}.neiki-block-grip:hover{opacity:1!important;color:var(--neiki-text-primary);background:var(--neiki-bg-hover)}.neiki-block-grip svg{width:14px;height:14px;fill:currentColor;pointer-events:none}@media (hover:none),(pointer:coarse){.neiki-block-grip{display:none!important}}.neiki-block-ghost{position:fixed;z-index:100000;pointer-events:none;opacity:.7;background:var(--neiki-bg-primary);border:2px solid var(--neiki-accent-color);border-radius:6px;padding:8px 12px;box-shadow:var(--neiki-shadow-lg);max-height:120px;overflow:hidden}.neiki-block-placeholder{border:2px dashed var(--neiki-accent-color);border-radius:6px;background:rgba(13,110,253,.05);margin:2px 0;transition:height .15s}@media print{.neiki-content,.neiki-editor-wrapper{overflow:visible!important}.neiki-editor{border:none!important;box-shadow:none!important}.neiki-block-grip,.neiki-code-view-header,.neiki-find-replace,.neiki-floating-toolbar,.neiki-img-resize-handle,.neiki-img-size-label,.neiki-img-toolbar,.neiki-statusbar,.neiki-table-col-resize-handle,.neiki-toolbar{display:none!important}.neiki-content{padding:0!important}}@media (max-width:768px){.neiki-toolbar{padding:4px;gap:1px}.neiki-toolbar-group{padding:0 2px}.neiki-toolbar-group:not(:last-child){padding-right:4px;margin-right:2px}.neiki-btn{width:28px;height:28px}.neiki-btn svg{width:16px;height:16px}.neiki-select{height:28px;min-width:80px;font-size:12px;padding:0 24px 0 8px}.neiki-content,.neiki-modal-footer,.neiki-modal-header{padding:12px 16px}.neiki-statusbar{padding:4px 8px;font-size:11px}.neiki-modal{width:calc(100% - 20px);max-width:none;margin:10px;max-height:calc(100vh - 40px);border-radius:10px}.neiki-modal-overlay{padding:10px}.neiki-modal-body{padding:16px;max-height:calc(100vh - 160px);overflow-y:auto;-webkit-overflow-scrolling:touch}.neiki-modal-footer .neiki-btn{height:36px;padding:0 14px;font-size:13px}.neiki-form-row{flex-direction:column;gap:12px}.neiki-form-input,.neiki-input{height:38px;font-size:16px}.neiki-image-upload-zone{grid-template-columns:32px 1fr;justify-items:start;gap:4px 10px;padding:14px;text-align:left}.neiki-image-upload-icon{grid-row:span 3;width:30px;height:30px}.neiki-image-upload-title{font-size:13px}.neiki-image-upload-files,.neiki-image-upload-hint{font-size:11px}.neiki-find-replace{width:100%;border-radius:0}.neiki-checkbox-wrapper{padding:0 4px;font-size:11px}.neiki-color-picker{left:auto;right:0}}@media (max-width:480px){.neiki-toolbar-group:not(:last-child){border-right:none;padding-right:2px;margin-right:0}.neiki-select{min-width:60px}.neiki-statusbar-left,.neiki-statusbar-right{gap:8px}.neiki-img-toolbar{padding:3px;gap:1px;border-radius:5px;left:0;transform:none;max-width:calc(100vw - 20px)}.neiki-img-toolbar-btn{width:26px;height:26px}.neiki-img-toolbar-btn svg{width:14px;height:14px}.neiki-img-toolbar-separator{height:16px;margin:0 1px}}@keyframes neiki-fade-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.neiki-color-picker.show,.neiki-dropdown.show,.neiki-emoji-picker.show,.neiki-special-chars.show,.neiki-table-picker.show{animation:.15s neiki-fade-in}@keyframes neiki-modal-in{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.neiki-fontsize-widget{display:inline-flex;align-items:center;position:relative;height:32px;border:1px solid var(--neiki-border-color);border-radius:4px;overflow:visible;background:var(--neiki-bg-primary)}.neiki-fontsize-btn{display:flex;align-items:center;justify-content:center;width:26px;height:30px;background:0 0;border:none;cursor:pointer;color:var(--neiki-text-secondary);transition:background .15s,color .15s;padding:0}.neiki-fontsize-dropdown-item,.neiki-fontsize-input{color:var(--neiki-text-primary);text-align:center;font-size:13px}.neiki-fontsize-input{width:38px;height:30px;border:none;border-left:1px solid var(--neiki-border-color);border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary);outline:0;-moz-appearance:textfield;appearance:textfield;padding:0}.neiki-fontsize-input::-webkit-inner-spin-button,.neiki-fontsize-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.neiki-fontsize-dropdown{display:none;position:absolute;top:100%;left:0;z-index:1000;min-width:70px;max-height:240px;overflow-y:auto;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px}.neiki-fontsize-dropdown-item{padding:6px 12px;cursor:pointer;border-radius:4px;transition:background .1s}.neiki-insert-dropdown-btn{width:auto!important;padding:0 8px!important;gap:4px;font-size:13px;font-weight:500}.neiki-insert-label{font-size:13px;pointer-events:none}.neiki-chevron{display:inline-flex;pointer-events:none}.neiki-insert-dropdown,.neiki-more-dropdown{display:none;position:absolute;top:100%;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px;background:var(--neiki-bg-primary)}.neiki-insert-dropdown{left:0;min-width:160px;max-width:calc(100vw - 16px);border-radius:6px}.neiki-insert-dropdown.show,.neiki-more-dropdown.show{display:block;animation:.15s neiki-fade-in}.neiki-more-dropdown{right:0;border-radius:6px}.neiki-lang-cs .neiki-more-dropdown{min-width:165px}.neiki-dropdown-item-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.neiki-dropdown-item-danger{color:var(--neiki-danger-color)!important}.neiki-dropdown-item-danger:hover{background:rgba(220,53,69,.1)}.neiki-theme-menu-item{cursor:default}.neiki-theme-menu-select{min-width:105px;height:28px;padding:0 24px 0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;cursor:pointer}.neiki-autosave-badge{font-size:12px;font-weight:600;color:var(--neiki-text-muted);padding:0 4px}.neiki-autosave-badge.active{color:var(--neiki-success-color)}.neiki-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100000;display:flex;align-items:center;justify-content:center;padding:30px;animation:.2s neiki-fade-in}.neiki-preview-modal{background:var(--neiki-bg-primary);border-radius:12px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,.3);animation:.2s neiki-modal-in}.neiki-preview-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);font-weight:600;font-size:14px;color:var(--neiki-text-primary)}.neiki-preview-close svg{width:18px;height:18px;fill:currentColor}.neiki-preview-body{flex:1;overflow:auto;padding:30px;color:var(--neiki-text-primary);font-size:15px;line-height:1.7}.neiki-preview-body img{max-width:100%}.neiki-preview-body table{border-collapse:collapse;width:100%}.neiki-preview-body table td,.neiki-preview-body table th{border:1px solid var(--neiki-border-color);padding:8px 12px}.neiki-statusbar-autosave{font-style:italic;color:var(--neiki-success-color);font-size:11px}
1
+ .neiki-checkbox,.neiki-find-replace-option input{accent-color:var(--neiki-accent-color)}.neiki-modal,.neiki-modal-overlay.show .neiki-modal{animation:.2s neiki-modal-in}:root{--neiki-bg-primary:#ffffff;--neiki-bg-secondary:#f8f9fa;--neiki-bg-tertiary:#e9ecef;--neiki-bg-hover:#dee2e6;--neiki-bg-active:#ced4da;--neiki-border-color:#dee2e6;--neiki-border-color-dark:#adb5bd;--neiki-text-primary:#212529;--neiki-text-secondary:#495057;--neiki-text-muted:#6c757d;--neiki-accent-color:#0d6efd;--neiki-accent-hover:#0b5ed7;--neiki-danger-color:#dc3545;--neiki-success-color:#198754;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.05);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.1);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.1);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#f8f9fa;--neiki-statusbar-bg:#f8f9fa;--neiki-modal-overlay:rgba(0, 0, 0, 0.5);--neiki-scrollbar-thumb:#ced4da;--neiki-scrollbar-track:#f8f9fa;--neiki-selection-bg:#b3d7ff;--neiki-highlight-color:#fff3cd;--neiki-table-border:#dee2e6}.neiki-context-menu.neiki-dark,.neiki-editor.neiki-dark,.neiki-modal-overlay.neiki-dark{--neiki-bg-primary:#1e1e1e;--neiki-bg-secondary:#252526;--neiki-bg-tertiary:#2d2d30;--neiki-bg-hover:#3e3e42;--neiki-bg-active:#505050;--neiki-border-color:#3e3e42;--neiki-border-color-dark:#505050;--neiki-text-primary:#d4d4d4;--neiki-text-secondary:#a0a0a0;--neiki-text-muted:#808080;--neiki-accent-color:#4fc3f7;--neiki-accent-hover:#29b6f6;--neiki-danger-color:#f44336;--neiki-success-color:#4caf50;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.2);--neiki-shadow-md:0 4px 6px rgba(0, 0, 0, 0.3);--neiki-shadow-lg:0 10px 15px rgba(0, 0, 0, 0.4);--neiki-editor-bg:#1e1e1e;--neiki-toolbar-bg:#252526;--neiki-statusbar-bg:#252526;--neiki-modal-overlay:rgba(0, 0, 0, 0.7);--neiki-scrollbar-thumb:#505050;--neiki-scrollbar-track:#2d2d30;--neiki-selection-bg:#264f78;--neiki-highlight-color:#5c4d00;--neiki-table-border:#3e3e42}.neiki-context-menu.neiki-theme-blue,.neiki-editor.neiki-theme-blue,.neiki-modal-overlay.neiki-theme-blue{--neiki-bg-primary:#f8fbff;--neiki-bg-secondary:#eef6ff;--neiki-bg-tertiary:#dbeafe;--neiki-bg-hover:#bfdbfe;--neiki-bg-active:#93c5fd;--neiki-border-color:#bfdbfe;--neiki-border-color-dark:#60a5fa;--neiki-text-primary:#0f172a;--neiki-text-secondary:#1e3a8a;--neiki-text-muted:#64748b;--neiki-accent-color:#2563eb;--neiki-accent-hover:#1d4ed8;--neiki-danger-color:#dc3545;--neiki-success-color:#16803d;--neiki-shadow-sm:0 1px 2px rgba(37, 99, 235, 0.08);--neiki-shadow-md:0 4px 10px rgba(37, 99, 235, 0.12);--neiki-shadow-lg:0 14px 28px rgba(37, 99, 235, 0.16);--neiki-editor-bg:#ffffff;--neiki-toolbar-bg:#eaf4ff;--neiki-statusbar-bg:#eef6ff;--neiki-modal-overlay:rgba(15, 23, 42, 0.45);--neiki-scrollbar-thumb:#93c5fd;--neiki-scrollbar-track:#eff6ff;--neiki-selection-bg:#bfdbfe;--neiki-highlight-color:#fef08a;--neiki-table-border:#bfdbfe}.neiki-context-menu.neiki-theme-midnight,.neiki-editor.neiki-theme-midnight,.neiki-modal-overlay.neiki-theme-midnight{--neiki-bg-primary:#0d0d12;--neiki-bg-secondary:#13131a;--neiki-bg-tertiary:#1a1a24;--neiki-bg-hover:#22223a;--neiki-bg-active:#2c2c4a;--neiki-border-color:#2a2a3d;--neiki-border-color-dark:#3d3d5c;--neiki-text-primary:#e8e8f0;--neiki-text-secondary:#c084fc;--neiki-text-muted:#7070a0;--neiki-accent-color:#c084fc;--neiki-accent-hover:#a855f7;--neiki-danger-color:#f87171;--neiki-success-color:#4ade80;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.3);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.5);--neiki-shadow-lg:0 16px 32px rgba(0, 0, 0, 0.6);--neiki-editor-bg:#0a0a10;--neiki-toolbar-bg:#111118;--neiki-statusbar-bg:#111118;--neiki-modal-overlay:rgba(0, 0, 0, 0.8);--neiki-scrollbar-thumb:#2c2c4a;--neiki-scrollbar-track:#0d0d12;--neiki-selection-bg:#3b1f5e;--neiki-highlight-color:#3b1f5e;--neiki-table-border:#2a2a3d}.neiki-context-menu.neiki-theme-dark-blue,.neiki-editor.neiki-theme-dark-blue,.neiki-modal-overlay.neiki-theme-dark-blue{--neiki-bg-primary:#07111f;--neiki-bg-secondary:#0b1d33;--neiki-bg-tertiary:#102a46;--neiki-bg-hover:#173b61;--neiki-bg-active:#1d4f82;--neiki-border-color:#1f3f63;--neiki-border-color-dark:#2f6da5;--neiki-text-primary:#e6f1ff;--neiki-text-secondary:#b9d7f8;--neiki-text-muted:#7ea6cc;--neiki-accent-color:#38bdf8;--neiki-accent-hover:#0ea5e9;--neiki-danger-color:#fb7185;--neiki-success-color:#34d399;--neiki-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.24);--neiki-shadow-md:0 4px 12px rgba(0, 0, 0, 0.34);--neiki-shadow-lg:0 18px 36px rgba(0, 0, 0, 0.46);--neiki-editor-bg:#081827;--neiki-toolbar-bg:#0b1d33;--neiki-statusbar-bg:#0b1d33;--neiki-modal-overlay:rgba(0, 0, 0, 0.72);--neiki-scrollbar-thumb:#1d4f82;--neiki-scrollbar-track:#07111f;--neiki-selection-bg:#164e63;--neiki-highlight-color:#854d0e;--neiki-table-border:#1f3f63}.neiki-editor.neiki-theme-autumn .neiki-fontsize-input,.neiki-editor.neiki-theme-autumn .neiki-select,.neiki-editor.neiki-theme-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-editor{display:flex;flex-direction:column;width:100%;height:100%;min-height:400px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:14px;color:var(--neiki-text-primary);box-shadow:var(--neiki-shadow-md)}.neiki-editor *{box-sizing:border-box}.neiki-editor.neiki-fullscreen{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:999999!important;border-radius:0!important;border:none!important}.neiki-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:6px 8px;background:var(--neiki-toolbar-bg);border-bottom:1px solid var(--neiki-border-color);min-height:44px}.neiki-editor.neiki-sticky-toolbar{overflow:visible}.neiki-editor.neiki-sticky-toolbar .neiki-toolbar{position:sticky;top:0;z-index:100;border-radius:8px 8px 0 0}.neiki-toolbar-group{display:inline-flex;align-items:center;gap:2px;padding:0 4px;flex-wrap:nowrap}.neiki-toolbar-group:not(:last-child){border-right:1px solid var(--neiki-border-color);padding-right:8px;margin-right:4px}.neiki-toolbar-divider{width:1px;height:24px;background:var(--neiki-border-color);margin:0 4px}.neiki-btn,.neiki-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:0 0;border:1px solid transparent;border-radius:4px;cursor:pointer;color:var(--neiki-text-secondary);transition:.15s;position:relative}.neiki-btn:hover,.neiki-fontsize-btn:hover,.neiki-modal-close:hover,.neiki-preview-close:hover,.neiki-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-text-primary)}.neiki-btn:active,.neiki-floating-btn:active,.neiki-toolbar-btn:active{background:var(--neiki-bg-active)}.neiki-btn.active,.neiki-toolbar-btn.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-btn:disabled,.neiki-toolbar-btn:disabled{opacity:.4;cursor:not-allowed}.neiki-btn svg,.neiki-toolbar-btn svg{width:18px;height:18px;fill:currentColor;pointer-events:none}.neiki-select{height:32px;padding:0 28px 0 10px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;min-width:100px}.neiki-select:hover{border-color:var(--neiki-border-color-dark)}.neiki-select:focus,.neiki-theme-menu-select:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-custom,.neiki-statusbar{border-top:1px solid var(--neiki-border-color)}.neiki-theme-select-wrapper{display:inline-flex;align-items:center;gap:6px;height:32px}.neiki-theme-select-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--neiki-text-secondary);width:18px;height:18px;flex-shrink:0}.neiki-context-item svg,.neiki-context-menu-item svg,.neiki-dropdown-item-icon svg,.neiki-floating-btn svg,.neiki-img-toolbar-btn svg,.neiki-theme-select-icon svg{width:16px;height:16px;fill:currentColor}.neiki-theme-select{min-width:116px;max-width:150px}.neiki-color-btn{position:relative;width:36px}.neiki-color-btn .neiki-color-indicator{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);width:16px;height:3px;border-radius:1px;background:currentColor}.neiki-checkbox-wrapper{display:flex;align-items:center;gap:6px;padding:0 8px;height:32px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer;user-select:none}.neiki-checkbox{width:16px;height:16px;cursor:pointer}.neiki-content-wrapper,.neiki-editor-wrapper{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.neiki-content{flex:1;padding:20px 24px;background:var(--neiki-editor-bg);overflow-y:auto;outline:0;line-height:1.6;color:var(--neiki-text-primary);min-height:200px}.neiki-code-view-textarea:focus,.neiki-content:focus{outline:0}.neiki-content:empty::before{content:attr(data-placeholder);color:var(--neiki-text-muted);font-style:italic;pointer-events:none}.neiki-content.neiki-drag-over{border:2px dashed var(--neiki-accent-color);background:rgba(13,110,253,.05)}.neiki-content.neiki-drag-over::after{content:'Drop media here';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--neiki-accent-color);font-weight:600;font-size:16px;pointer-events:none;z-index:10}.neiki-drop-indicator{position:absolute;width:3px;min-height:22px;background:var(--neiki-accent-color);border-radius:999px;box-shadow:0 0 0 3px rgba(13,110,253,.18);pointer-events:none;opacity:0;transform:translateX(-1px);transition:opacity 80ms;z-index:80}.neiki-drop-indicator::after,.neiki-drop-indicator::before{content:'';position:absolute;left:50%;width:9px;height:9px;background:var(--neiki-accent-color);border-radius:50%;transform:translateX(-50%)}.neiki-drop-indicator::before{top:-4px}.neiki-drop-indicator::after{bottom:-4px}.neiki-drop-indicator.show{opacity:1}.neiki-editor.neiki-disabled{opacity:.6;pointer-events:none}.neiki-content::-webkit-scrollbar{width:10px}.neiki-content::-webkit-scrollbar-track{background:var(--neiki-scrollbar-track)}.neiki-content::-webkit-scrollbar-thumb{background:var(--neiki-scrollbar-thumb);border-radius:5px}.neiki-content::-webkit-scrollbar-thumb:hover{background:var(--neiki-border-color-dark)}.neiki-content p{margin:0 0 1em}.neiki-content h1{font-size:2em;font-weight:700;margin:0 0 .5em}.neiki-content h2{font-size:1.5em;font-weight:600;margin:0 0 .5em}.neiki-content h3{font-size:1.25em;font-weight:600;margin:0 0 .5em}.neiki-content h4{font-size:1.1em;font-weight:600;margin:0 0 .5em}.neiki-content h5{font-size:1em;font-weight:600;margin:0 0 .5em}.neiki-content h6{font-size:.9em;font-weight:600;margin:0 0 .5em}.neiki-content ol,.neiki-content ul{margin:0 0 1em;padding-left:2em}.neiki-content li{margin-bottom:.25em}.neiki-content blockquote{margin:0 0 1em;padding:10px 20px;border-left:4px solid var(--neiki-accent-color);background:var(--neiki-bg-secondary);font-style:italic}.neiki-content code,.neiki-content pre{background:var(--neiki-bg-tertiary);font-family:Consolas,Monaco,monospace}.neiki-content pre{margin:0 0 1em;padding:16px;border-radius:4px;overflow-x:auto;font-size:13px}.neiki-content code{padding:2px 6px;border-radius:3px;font-size:.9em}.neiki-content a{color:var(--neiki-accent-color);text-decoration:underline}.neiki-content a:hover{color:var(--neiki-accent-hover)}.neiki-content img{display:inline-block;max-width:100%;height:auto;border-radius:4px;cursor:pointer}.neiki-content img.neiki-selected{outline:2px solid var(--neiki-accent-color);outline-offset:2px}.neiki-content video{display:block;max-width:100%;height:auto;margin:0 0 1em;border-radius:6px;background:#000}.neiki-highlight{background:var(--neiki-highlight-color);padding:1px 0}.neiki-content table,.neiki-table{width:100%;border-collapse:collapse;margin:1em 0;table-layout:fixed}.neiki-content table td,.neiki-content table th{border:1px solid var(--neiki-table-border);padding:8px 12px;min-width:50px;vertical-align:top;position:relative}.neiki-content table th{background:var(--neiki-bg-secondary);font-weight:600}.neiki-btn-secondary:hover,.neiki-button-secondary:hover,.neiki-content table td:hover,.neiki-content table th:hover,.neiki-context-item:hover,.neiki-context-menu-item:hover,.neiki-dropdown-item:hover,.neiki-fontsize-dropdown-item:hover,.neiki-special-char-item:hover{background:var(--neiki-bg-hover)}.neiki-content table td.neiki-cell-selected,.neiki-content table th.neiki-cell-selected{background:var(--neiki-selection-bg)}.neiki-table-resize-handle{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:10}.neiki-table-resize-handle:hover{background:var(--neiki-accent-color)}.neiki-statusbar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--neiki-statusbar-bg);font-size:12px;color:var(--neiki-text-muted)}.neiki-statusbar-left,.neiki-statusbar-right{display:flex;align-items:center;gap:16px}.neiki-statusbar-item{display:flex;align-items:center;gap:4px}.neiki-statusbar-block{font-family:Consolas,Monaco,monospace;font-size:11px;padding:2px 6px;background:var(--neiki-bg-tertiary);border-radius:3px;color:var(--neiki-accent-color);font-weight:600;border:1px solid var(--neiki-border-color)}.neiki-color-picker,.neiki-dropdown{position:absolute;top:100%;left:0;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg)}.neiki-dropdown{min-width:180px;background:var(--neiki-bg-primary);border-radius:6px;padding:4px;margin-top:4px}.neiki-dropdown-item{display:flex;align-items:center;gap:6px;padding:7px 10px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-dropdown-item.active{background:var(--neiki-bg-active);color:var(--neiki-accent-color)}.neiki-context-divider,.neiki-context-menu-divider,.neiki-dropdown-divider{height:1px;background:var(--neiki-border-color);margin:4px 0}.neiki-color-picker{background:var(--neiki-bg-primary);border-radius:8px;padding:8px;margin-top:4px;display:flex;flex-direction:column;gap:6px}.neiki-color-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-color-custom{display:flex;align-items:center;gap:6px}.neiki-color-custom-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border:1px solid var(--neiki-border-color);border-radius:4px;padding:2px;cursor:pointer;background:0 0}.neiki-color-custom-input::-webkit-color-swatch-wrapper{padding:0}.neiki-color-custom-input::-webkit-color-swatch{border:none;border-radius:2px}.neiki-color-custom-input::-moz-color-swatch{border:none;border-radius:2px}.neiki-color-hex-input{flex:1;height:28px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;font-size:12px;font-family:monospace;background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);outline:0}.neiki-color-hex-input:focus{border-color:var(--neiki-accent-color);box-shadow:0 0 0 2px rgba(13,110,253,.15)}.neiki-color-apply-btn{height:28px;padding:0 10px;border:none;border-radius:4px;font-size:12px;font-weight:500;background:var(--neiki-accent-color);color:#fff;cursor:pointer;transition:background .15s}.neiki-emoji-picker,.neiki-special-picker{max-width:calc(100vw - 16px);overflow-y:auto;background:var(--neiki-bg-primary);padding:8px;margin-top:4px;position:absolute;top:100%;z-index:1000;box-shadow:var(--neiki-shadow-lg);left:0}.neiki-btn-primary:hover,.neiki-button-primary:hover,.neiki-color-apply-btn:hover{background:var(--neiki-accent-hover)}.neiki-color-swatch{width:22px;height:22px;border-radius:3px;cursor:pointer;border:1px solid var(--neiki-border-color);transition:transform .1s}.neiki-color-swatch:hover{transform:scale(1.2);z-index:1}.neiki-color-swatch.neiki-color-reset{background:#fff;position:relative;overflow:hidden;border:1px solid #ccc}.neiki-color-preset.active,.neiki-special-item:hover{border-color:var(--neiki-accent-color)}.neiki-color-swatch.neiki-color-reset::after{content:'';position:absolute;top:50%;left:-2px;right:-2px;height:2px;background:#e53935;transform:rotate(-45deg);transform-origin:center;pointer-events:none}.neiki-color-picker-label{font-size:11px;font-weight:600;color:var(--neiki-text-muted);text-transform:uppercase;margin-bottom:8px}.neiki-emoji-item,.neiki-special-item{align-items:center;font-size:18px;cursor:pointer}.neiki-emoji-picker{width:280px;max-height:250px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(10,1fr);gap:2px}.neiki-emoji-item{display:flex;justify-content:center;width:24px;height:24px;border-radius:4px;transition:background .15s,transform .1s}.neiki-emoji-item:hover{background:var(--neiki-bg-hover);transform:scale(1.2)}.neiki-special-picker{width:320px;max-height:280px;border:1px solid var(--neiki-border-color);border-radius:8px;display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.neiki-special-item{display:flex;justify-content:center;width:32px;height:32px;border-radius:4px;border:1px solid var(--neiki-border-color);background:var(--neiki-bg-secondary);transition:.15s}.neiki-special-item:hover{background:var(--neiki-accent-color);color:#fff;transform:scale(1.1)}.neiki-highlight-find{background:#ffeb3b;padding:1px 0;border-radius:2px}.neiki-highlight-current{background:#ff9800;outline:#e65100 solid 2px}.neiki-color-presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.neiki-color-preset{width:32px;height:32px;border-radius:4px;border:2px solid transparent;cursor:pointer;transition:transform .1s,border-color .1s}.neiki-color-preset:hover{transform:scale(1.1)}.neiki-color-preset.neiki-color-reset{background:linear-gradient(45deg,#fff 45%,red 45%,red 55%,#fff 55%);border:1px solid var(--neiki-border-color)}.neiki-color-custom{display:flex;align-items:center;gap:8px;padding-top:8px;border-top:1px solid var(--neiki-border-color)}.neiki-color-custom input[type=color]{width:40px;height:32px;padding:0;border:1px solid var(--neiki-border-color);border-radius:4px;cursor:pointer}.neiki-color-custom input[type=text]{flex:1;height:32px;padding:0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;font-family:monospace}.neiki-table-picker,.neiki-table-picker-cell{border:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary)}.neiki-table-picker{position:absolute;top:100%;left:0;z-index:1000;border-radius:8px;box-shadow:var(--neiki-shadow-lg);padding:12px;display:none}.neiki-context-menu.show,.neiki-find-replace.show,.neiki-fontsize-dropdown.show,.neiki-table-picker.show{display:block}.neiki-table-picker-label{font-size:12px;color:var(--neiki-text-secondary);margin-bottom:8px;text-align:center}.neiki-dark .neiki-modal h3,.neiki-dark .neiki-modal-header h3,.neiki-modal-title{color:var(--neiki-text-primary)}.neiki-table-picker-grid{display:grid;grid-template-columns:repeat(10,20px);gap:2px}.neiki-table-picker-cell{width:20px;height:20px;border-radius:2px;cursor:pointer;transition:background .1s}.neiki-table-picker-cell.active,.neiki-table-picker-cell:hover{background:var(--neiki-accent-color);border-color:var(--neiki-accent-color)}.neiki-special-chars{position:absolute;top:100%;left:0;z-index:1000;width:280px;max-height:300px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:8px;box-shadow:var(--neiki-shadow-lg);display:none;overflow:hidden}.neiki-special-chars.show{display:flex;flex-direction:column}.neiki-special-chars-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;padding:8px;overflow-y:auto}.neiki-special-char-item{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:16px;border-radius:4px;cursor:pointer;transition:background .1s}.neiki-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--neiki-modal-overlay);z-index:10000;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}.neiki-modal-overlay.active,[data-tooltip]:hover::after{opacity:1;visibility:visible}.neiki-modal{background:var(--neiki-bg-primary);border-radius:12px;box-shadow:var(--neiki-shadow-lg);width:100%;max-width:440px;max-height:90vh;overflow:hidden}.neiki-modal-wide{max-width:520px}.neiki-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--neiki-border-color)}.neiki-modal-title{font-size:16px;font-weight:600;margin:0}.neiki-modal-close,.neiki-preview-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:0 0;border:none;border-radius:4px;cursor:pointer;color:var(--neiki-text-muted);transition:background .15s}.neiki-modal-body{padding:20px;overflow-y:auto}.neiki-modal h3,.neiki-modal-header h3{color:#000;margin:0}.neiki-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--neiki-border-color)}.neiki-modal-footer .neiki-btn{width:auto;height:38px;padding:0 16px;font-size:14px;font-weight:500;border-radius:6px}.neiki-form-group{margin-bottom:16px}.neiki-find-replace-row:last-child,.neiki-form-group:last-child{margin-bottom:0}.neiki-form-group label,.neiki-form-label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--neiki-text-secondary)}.neiki-form-input,.neiki-input{width:100%;height:40px;padding:0 12px;border:1px solid var(--neiki-border-color);border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;transition:border-color .15s}.neiki-form-input:focus,.neiki-form-textarea:focus,.neiki-input:focus{outline:0;border-color:var(--neiki-accent-color);box-shadow:0 0 0 3px rgba(13,110,253,.15)}.neiki-form-input::placeholder,.neiki-input::placeholder{color:var(--neiki-text-muted)}.neiki-input[type=file]{display:flex;align-items:center;padding:0;cursor:pointer}.neiki-input[type=file]::file-selector-button{height:100%;padding:0 14px;margin-right:12px;border:none;border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-tertiary,var(--neiki-bg-hover));color:var(--neiki-text-primary);font-size:13px;font-weight:500;cursor:pointer;border-radius:5px 0 0 5px}.neiki-image-upload-zone{position:relative;display:grid;justify-items:center;gap:7px;padding:24px 18px;border:2px dashed var(--neiki-border-color);border-radius:8px;background:var(--neiki-bg-secondary);color:var(--neiki-text-secondary);text-align:center;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.neiki-find-replace,.neiki-form-textarea{border:1px solid var(--neiki-border-color)}.neiki-image-upload-zone:focus-visible,.neiki-image-upload-zone:hover{border-color:var(--neiki-accent-color);background:var(--neiki-bg-primary);box-shadow:0 0 0 3px rgba(13,110,253,.12);outline:0}.neiki-image-upload-zone.drag-over{border-color:var(--neiki-accent-color);background:rgba(13,110,253,.08)}.neiki-form-divider::after,.neiki-form-divider::before{content:'';height:1px;background:var(--neiki-border-color)}.neiki-image-upload-zone.has-files{border-style:solid;border-color:var(--neiki-accent-color)}.neiki-image-upload-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.neiki-image-upload-icon{width:38px;height:38px;color:var(--neiki-accent-color)}.neiki-image-upload-icon svg{width:100%;height:100%;fill:currentColor}.neiki-image-upload-title{color:var(--neiki-text-primary);font-size:14px;font-weight:600}.neiki-image-upload-files,.neiki-image-upload-hint{max-width:100%;color:var(--neiki-text-muted);font-size:12px;line-height:1.4}.neiki-image-upload-files{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.neiki-image-upload-zone.has-files .neiki-image-upload-files{color:var(--neiki-accent-color);font-weight:500}.neiki-form-row{display:flex;gap:16px}.neiki-form-divider{display:flex;align-items:center;margin:16px 0;text-align:center;position:relative}.neiki-form-divider::before{flex:1;margin-right:12px}.neiki-form-divider::after{flex:1;margin-left:12px}.neiki-form-divider span{color:var(--neiki-text-muted);font-size:12px;font-weight:500;text-transform:uppercase}.neiki-form-textarea{width:100%;min-height:120px;padding:12px;border-radius:6px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:14px;font-family:inherit;resize:vertical;transition:border-color .15s}.neiki-btn-primary,.neiki-btn-secondary,.neiki-button{display:inline-flex;align-items:center;height:38px;padding:0 16px;font-size:14px;transition:.15s;font-weight:500;cursor:pointer}.neiki-button{justify-content:center;gap:6px;border:1px solid transparent;border-radius:6px}.neiki-btn-primary,.neiki-button-primary{background:var(--neiki-accent-color);color:#fff}.neiki-btn-secondary,.neiki-button-secondary{background:var(--neiki-bg-secondary);color:var(--neiki-text-primary);border-color:var(--neiki-border-color)}.neiki-btn-primary,.neiki-btn-secondary{justify-content:center;border:1px solid transparent;border-radius:6px}.neiki-btn-secondary{border-color:var(--neiki-border-color)}.neiki-button-danger{background:var(--neiki-danger-color);color:#fff}.neiki-code-view,.neiki-find-replace,.neiki-find-replace-input{background:var(--neiki-bg-primary)}.neiki-button-danger:hover{opacity:.9}.neiki-find-replace{position:absolute;top:0;right:0;z-index:100;width:360px;border-radius:0 0 0 8px;box-shadow:var(--neiki-shadow-lg);display:none}.neiki-find-replace-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--neiki-border-color)}.neiki-code-view-title,.neiki-find-replace-title{font-size:13px;font-weight:600;color:var(--neiki-text-primary)}.neiki-find-replace-body{padding:12px}.neiki-find-replace-row{display:flex;gap:8px;margin-bottom:10px}.neiki-find-replace-input{flex:1;height:32px;padding:0 10px;border:1px solid var(--neiki-border-color);border-radius:4px;color:var(--neiki-text-primary);font-size:13px}.neiki-find-replace-input:focus{outline:0;border-color:var(--neiki-accent-color)}.neiki-find-replace-options{display:flex;align-items:center;gap:12px;margin-bottom:10px}.neiki-find-replace-option{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--neiki-text-secondary);cursor:pointer}.neiki-find-replace-actions{display:flex;gap:6px;flex-wrap:wrap}.neiki-find-replace-btn{height:28px;padding:0 10px;font-size:12px;border-radius:4px}.neiki-find-replace-count{font-size:12px;color:var(--neiki-text-muted);margin-left:auto}.neiki-code-view{position:absolute;top:0;left:0;right:0;bottom:0;z-index:50;display:none;flex-direction:column}.neiki-code-view.show,.neiki-drop-overlay.show{display:flex}.neiki-code-view-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);flex-shrink:0}.neiki-code-view-editor{position:relative;flex:1;width:100%;min-height:0;background:var(--neiki-bg-primary)}.neiki-code-view-highlight,.neiki-code-view-textarea{position:absolute;inset:0;width:100%;height:100%;padding:16px;border:none;font-family:Consolas,Monaco,'Courier New',monospace;font-size:13px;line-height:1.5;tab-size:2;white-space:pre-wrap;word-break:break-word;overflow:auto}.neiki-context-menu,.neiki-floating-toolbar{position:fixed;box-shadow:var(--neiki-shadow-lg)}.neiki-code-view-highlight{margin:0;color:var(--neiki-text-primary);pointer-events:none;user-select:none}.neiki-code-view-textarea{background:0 0;color:transparent;caret-color:var(--neiki-text-primary);resize:none;z-index:1}.neiki-code-view-textarea::selection{background:var(--neiki-selection-bg);color:transparent}.neiki-html-punct{color:var(--neiki-text-muted)}.neiki-html-tag{color:#0f74d8;font-weight:600}.neiki-html-attr{color:#9a5b00}.neiki-html-string{color:#16803d}.neiki-html-comment{color:var(--neiki-text-muted);font-style:italic}.neiki-dark .neiki-html-tag{color:#7dd3fc}.neiki-dark .neiki-html-attr{color:#fbbf24}.neiki-dark .neiki-html-string{color:#86efac}.neiki-code-view-apply{width:auto!important;padding:0 12px!important;display:inline-flex;align-items:center;gap:4px;height:30px;font-size:12px;background:var(--neiki-accent-color)!important;color:#fff!important;border-radius:5px}.neiki-context-menu,.neiki-floating-btn,.neiki-floating-toolbar{background:var(--neiki-bg-primary)}.neiki-code-view-apply:hover{background:var(--neiki-accent-hover)!important;color:#fff!important}.neiki-code-view-apply svg{width:14px!important;height:14px!important}.neiki-context-menu{z-index:10001;min-width:180px;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px;display:none}.neiki-context-item,.neiki-context-menu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:4px;cursor:pointer;color:var(--neiki-text-primary);font-size:13px;transition:background .1s}.neiki-context-item.neiki-context-danger,.neiki-context-menu-item.danger{color:var(--neiki-danger-color)}.neiki-context-item.neiki-context-disabled{opacity:.4;cursor:default;pointer-events:none}.neiki-floating-toolbar{z-index:1000;display:none;border:1px solid var(--neiki-border-color);border-radius:8px;padding:4px}.neiki-floating-toolbar.show{display:flex;align-items:center;gap:2px}.neiki-floating-btn{width:32px;height:32px;border:none;color:var(--neiki-text-primary);border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}.neiki-floating-btn:hover,.neiki-img-toolbar-btn:hover{background:var(--neiki-bg-hover);color:var(--neiki-accent-color)}.neiki-floating-toolbar .neiki-btn{width:28px;height:28px}.neiki-chevron svg,.neiki-floating-toolbar .neiki-btn svg{width:14px;height:14px}.neiki-floating-divider,.neiki-img-toolbar-separator{width:1px;height:20px;background:var(--neiki-border-color);margin:0 2px}.neiki-floating-move-btn svg{width:16px;height:16px}.neiki-more-btn,[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding:6px 10px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:11px;font-weight:500;white-space:nowrap;border-radius:4px;opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s;pointer-events:none;z-index:10002;margin-bottom:6px}.neiki-drop-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(13,110,253,.1);border:3px dashed var(--neiki-accent-color);border-radius:8px;display:none;align-items:center;justify-content:center;z-index:100;pointer-events:none}.neiki-img-size-label,.neiki-img-toolbar{left:50%;transform:translateX(-50%);white-space:nowrap}.neiki-drop-overlay-text{font-size:18px;font-weight:600;color:var(--neiki-accent-color)}.neiki-img-resizable{display:inline-block;position:relative;outline:2px solid var(--neiki-accent-color);outline-offset:2px;border-radius:4px;line-height:0;user-select:none;-webkit-user-select:none}.neiki-img-resizable img,.neiki-img-resizable video{display:block;max-width:100%;user-select:none;-webkit-user-select:none}.neiki-img-resize-handle{position:absolute;width:12px;height:12px;background:var(--neiki-accent-color);border:2px solid #fff;border-radius:2px;z-index:10;box-shadow:0 1px 3px rgba(0,0,0,.3)}.neiki-img-resize-handle.nw{top:-6px;left:-6px;cursor:nw-resize}.neiki-img-resize-handle.ne{top:-6px;right:-6px;cursor:ne-resize}.neiki-img-resize-handle.sw{bottom:-6px;left:-6px;cursor:sw-resize}.neiki-img-resize-handle.se{bottom:-6px;right:-6px;cursor:se-resize}.neiki-img-size-label{position:absolute;bottom:-32px;background:var(--neiki-text-primary);color:var(--neiki-bg-primary);font-size:13px;line-height:1.4;font-weight:600;padding:4px 12px;border-radius:6px;pointer-events:none;z-index:10;opacity:.9}@media (pointer:coarse){.neiki-img-resize-handle{width:20px;height:20px}.neiki-img-resize-handle.nw{top:-10px;left:-10px}.neiki-img-resize-handle.ne{top:-10px;right:-10px}.neiki-img-resize-handle.sw{bottom:-10px;left:-10px}.neiki-img-resize-handle.se{bottom:-10px;right:-10px}}.neiki-img-toolbar{position:absolute;display:flex;align-items:center;gap:2px;padding:4px;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-md);z-index:20;user-select:none;-webkit-user-select:none}.neiki-img-toolbar-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:4px;background:0 0;color:var(--neiki-text-secondary);cursor:pointer;transition:.15s}.neiki-img-toolbar-btn-danger:hover{background:#fee2e2;color:#dc2626}.neiki-editor.neiki-dark .neiki-img-toolbar-btn-danger:hover{background:#451a1a;color:#f87171}.neiki-img-drag-handle{cursor:grab}.neiki-block-grip:active,.neiki-img-drag-handle:active{cursor:grabbing}.neiki-table-col-resize-handle{position:absolute;width:6px;cursor:col-resize;z-index:10;background:0 0;transition:background .1s}.neiki-table-col-resize-handle:active,.neiki-table-col-resize-handle:hover{background:var(--neiki-accent-color);opacity:.6;border-radius:3px}.neiki-block-grip{position:absolute;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--neiki-text-muted);opacity:0;transition:opacity .15s,color .15s;border-radius:4px;z-index:5;user-select:none}.neiki-content-wrapper:hover .neiki-block-grip{opacity:.5}.neiki-block-grip:hover{opacity:1!important;color:var(--neiki-text-primary);background:var(--neiki-bg-hover)}.neiki-block-grip svg{width:14px;height:14px;fill:currentColor;pointer-events:none}@media (hover:none),(pointer:coarse){.neiki-block-grip{display:none!important}}.neiki-block-ghost{position:fixed;z-index:100000;pointer-events:none;opacity:.7;background:var(--neiki-bg-primary);border:2px solid var(--neiki-accent-color);border-radius:6px;padding:8px 12px;box-shadow:var(--neiki-shadow-lg);max-height:120px;overflow:hidden}.neiki-block-placeholder{border:2px dashed var(--neiki-accent-color);border-radius:6px;background:rgba(13,110,253,.05);margin:2px 0;transition:height .15s}@media print{.neiki-content,.neiki-editor-wrapper{overflow:visible!important}.neiki-editor{border:none!important;box-shadow:none!important}.neiki-block-grip,.neiki-code-view-header,.neiki-find-replace,.neiki-floating-toolbar,.neiki-img-resize-handle,.neiki-img-size-label,.neiki-img-toolbar,.neiki-statusbar,.neiki-table-col-resize-handle,.neiki-toolbar{display:none!important}.neiki-content{padding:0!important}}@media (max-width:768px){.neiki-toolbar{padding:4px;gap:1px}.neiki-toolbar-group{padding:0 2px}.neiki-toolbar-group:not(:last-child){padding-right:4px;margin-right:2px}.neiki-btn{width:28px;height:28px}.neiki-btn svg{width:16px;height:16px}.neiki-select{height:28px;min-width:80px;font-size:12px;padding:0 24px 0 8px}.neiki-content,.neiki-modal-footer,.neiki-modal-header{padding:12px 16px}.neiki-statusbar{padding:4px 8px;font-size:11px}.neiki-modal{width:calc(100% - 20px);max-width:none;margin:10px;max-height:calc(100vh - 40px);border-radius:10px}.neiki-modal-overlay{padding:10px}.neiki-modal-body{padding:16px;max-height:calc(100vh - 160px);overflow-y:auto;-webkit-overflow-scrolling:touch}.neiki-modal-footer .neiki-btn{height:36px;padding:0 14px;font-size:13px}.neiki-form-row{flex-direction:column;gap:12px}.neiki-form-input,.neiki-input{height:38px;font-size:16px}.neiki-image-upload-zone{grid-template-columns:32px 1fr;justify-items:start;gap:4px 10px;padding:14px;text-align:left}.neiki-image-upload-icon{grid-row:span 3;width:30px;height:30px}.neiki-image-upload-title{font-size:13px}.neiki-image-upload-files,.neiki-image-upload-hint{font-size:11px}.neiki-find-replace{width:100%;border-radius:0}.neiki-checkbox-wrapper{padding:0 4px;font-size:11px}.neiki-color-picker{left:auto;right:0}}@media (max-width:480px){.neiki-toolbar-group:not(:last-child){border-right:none;padding-right:2px;margin-right:0}.neiki-select{min-width:60px}.neiki-statusbar-left,.neiki-statusbar-right{gap:8px}.neiki-img-toolbar{padding:3px;gap:1px;border-radius:5px;left:0;transform:none;max-width:calc(100vw - 20px)}.neiki-img-toolbar-btn{width:26px;height:26px}.neiki-img-toolbar-btn svg{width:14px;height:14px}.neiki-img-toolbar-separator{height:16px;margin:0 1px}}@keyframes neiki-fade-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.neiki-color-picker.show,.neiki-dropdown.show,.neiki-emoji-picker.show,.neiki-special-chars.show,.neiki-table-picker.show{animation:.15s neiki-fade-in}@keyframes neiki-modal-in{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.neiki-fontsize-widget{display:inline-flex;align-items:center;position:relative;height:32px;border:1px solid var(--neiki-border-color);border-radius:4px;overflow:visible;background:var(--neiki-bg-primary)}.neiki-fontsize-btn{display:flex;align-items:center;justify-content:center;width:26px;height:30px;background:0 0;border:none;cursor:pointer;color:var(--neiki-text-secondary);transition:background .15s,color .15s;padding:0}.neiki-fontsize-dropdown-item,.neiki-fontsize-input{color:var(--neiki-text-primary);text-align:center;font-size:13px}.neiki-fontsize-input{width:38px;height:30px;border:none;border-left:1px solid var(--neiki-border-color);border-right:1px solid var(--neiki-border-color);background:var(--neiki-bg-primary);outline:0;-moz-appearance:textfield;appearance:textfield;padding:0}.neiki-fontsize-input::-webkit-inner-spin-button,.neiki-fontsize-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.neiki-fontsize-dropdown{display:none;position:absolute;top:100%;left:0;z-index:1000;min-width:70px;max-height:240px;overflow-y:auto;background:var(--neiki-bg-primary);border:1px solid var(--neiki-border-color);border-radius:6px;box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px}.neiki-fontsize-dropdown-item{padding:6px 12px;cursor:pointer;border-radius:4px;transition:background .1s}.neiki-insert-dropdown-btn{width:auto!important;padding:0 8px!important;gap:4px;font-size:13px;font-weight:500}.neiki-insert-label{font-size:13px;pointer-events:none}.neiki-chevron{display:inline-flex;pointer-events:none}.neiki-insert-dropdown,.neiki-more-dropdown{display:none;position:absolute;top:100%;z-index:1000;border:1px solid var(--neiki-border-color);box-shadow:var(--neiki-shadow-lg);padding:4px;margin-top:4px;background:var(--neiki-bg-primary)}.neiki-insert-dropdown{left:0;min-width:160px;max-width:calc(100vw - 16px);border-radius:6px}.neiki-insert-dropdown.show,.neiki-more-dropdown.show{display:block;animation:.15s neiki-fade-in}.neiki-more-dropdown{right:0;border-radius:6px}.neiki-lang-cs .neiki-more-dropdown{min-width:165px}.neiki-dropdown-item-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.neiki-dropdown-item-danger{color:var(--neiki-danger-color)!important}.neiki-dropdown-item-danger:hover{background:rgba(220,53,69,.1)}.neiki-theme-menu-item{cursor:default}.neiki-theme-menu-select{min-width:105px;height:28px;padding:0 24px 0 8px;border:1px solid var(--neiki-border-color);border-radius:4px;background:var(--neiki-bg-primary);color:var(--neiki-text-primary);font-size:12px;cursor:pointer}.neiki-autosave-badge{font-size:12px;font-weight:600;color:var(--neiki-text-muted);padding:0 4px}.neiki-autosave-badge.active{color:var(--neiki-success-color)}.neiki-preview-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:100000;display:flex;align-items:center;justify-content:center;padding:30px;animation:.2s neiki-fade-in}.neiki-preview-modal{background:var(--neiki-bg-primary);border-radius:12px;width:100%;max-width:900px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 25px 60px rgba(0,0,0,.3);animation:.2s neiki-modal-in}.neiki-preview-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--neiki-bg-secondary);border-bottom:1px solid var(--neiki-border-color);font-weight:600;font-size:14px;color:var(--neiki-text-primary)}.neiki-preview-close svg{width:18px;height:18px;fill:currentColor}.neiki-preview-body{flex:1;overflow:auto;padding:30px;color:var(--neiki-text-primary);font-size:15px;line-height:1.7}.neiki-preview-body img{max-width:100%}.neiki-preview-body table{border-collapse:collapse;width:100%}.neiki-preview-body table td,.neiki-preview-body table th{border:1px solid var(--neiki-border-color);padding:8px 12px}.neiki-statusbar-autosave{font-style:italic;color:var(--neiki-success-color);font-size:11px}