@bendyline/squisq-editor-react 1.6.1 → 2.0.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.
Files changed (208) hide show
  1. package/README.md +12 -3
  2. package/dist/index.d.ts +1304 -208
  3. package/dist/index.js +22838 -14494
  4. package/dist/index.js.map +1 -1
  5. package/dist/monaco.d.ts +1 -0
  6. package/dist/monaco.js +4 -0
  7. package/dist/monaco.js.map +1 -0
  8. package/dist/styles/index.css +2384 -408
  9. package/package.json +9 -5
  10. package/src/BlockPropertiesPopover.tsx +48 -17
  11. package/src/DocumentSettingsDialog.tsx +13 -21
  12. package/src/EditorContext.tsx +199 -42
  13. package/src/EditorShell.tsx +403 -270
  14. package/src/ImageEditor.tsx +22 -1
  15. package/src/InlinePreviewGutter.tsx +16 -8
  16. package/src/MediaBin.tsx +276 -40
  17. package/src/OutlinePanel.tsx +202 -7
  18. package/src/PlainHtmlPreview.tsx +40 -1
  19. package/src/PreviewControls.tsx +466 -93
  20. package/src/PreviewPanel.tsx +313 -77
  21. package/src/RawEditor.tsx +13 -2
  22. package/src/StatusBar.tsx +5 -2
  23. package/src/TemplateAnnotation.ts +34 -10
  24. package/src/TemplateContentPreview.tsx +56 -0
  25. package/src/TemplatePicker.tsx +355 -134
  26. package/src/ThemeCustomizerPanel.tsx +30 -15
  27. package/src/ThemePicker.tsx +10 -5
  28. package/src/TimelineBlockPreview.tsx +1 -1
  29. package/src/Toolbar.tsx +719 -238
  30. package/src/TransitionPicker.tsx +44 -5
  31. package/src/ViewMenuPanel.tsx +12 -14
  32. package/src/ViewSwitcher.tsx +4 -4
  33. package/src/WysiwygEditor.tsx +167 -92
  34. package/src/__tests__/blockPropertiesPopoverTheme.test.tsx +33 -0
  35. package/src/__tests__/blockTagActivity.test.ts +183 -0
  36. package/src/__tests__/buildDocumentPreviewMarkdown.test.ts +75 -0
  37. package/src/__tests__/buildPreviewDocContent.test.ts +48 -0
  38. package/src/__tests__/buildPreviewDocTransition.test.ts +22 -3
  39. package/src/__tests__/canvasSurfaceTextEditing.test.tsx +60 -0
  40. package/src/__tests__/customLayoutManagerTheme.test.tsx +34 -0
  41. package/src/__tests__/documentSettingsDialog.test.tsx +29 -1
  42. package/src/__tests__/editorScrollHandoff.test.tsx +102 -0
  43. package/src/__tests__/editorScrollSync.test.ts +65 -0
  44. package/src/__tests__/editorShellProps.test.tsx +390 -1
  45. package/src/__tests__/emojiPicker.test.tsx +2 -42
  46. package/src/__tests__/headingTransition.test.ts +53 -15
  47. package/src/__tests__/imageEditAffordance.test.tsx +5 -1
  48. package/src/__tests__/imageEditModalContract.test.tsx +119 -0
  49. package/src/__tests__/imageEditorShell.test.tsx +38 -1
  50. package/src/__tests__/jsonEditor.test.tsx +56 -1
  51. package/src/__tests__/layersPanel.test.tsx +75 -5
  52. package/src/__tests__/majorApiTypes.test.ts +26 -0
  53. package/src/__tests__/mediaBinDrop.test.tsx +90 -0
  54. package/src/__tests__/mediaReferences.test.ts +82 -0
  55. package/src/__tests__/narrationSave.test.ts +148 -0
  56. package/src/__tests__/outlinePanel.test.tsx +93 -3
  57. package/src/__tests__/outlineSource.test.ts +217 -0
  58. package/src/__tests__/plainHtmlPreview.test.tsx +17 -1
  59. package/src/__tests__/presentationMode.test.tsx +290 -0
  60. package/src/__tests__/previewControls.test.tsx +312 -6
  61. package/src/__tests__/previewPanelAudioFailure.test.tsx +46 -0
  62. package/src/__tests__/previewPanelPresentation.test.tsx +126 -0
  63. package/src/__tests__/previewPanelTransforms.test.tsx +117 -0
  64. package/src/__tests__/rawEditorModelIsolation.test.ts +19 -0
  65. package/src/__tests__/resolveBlockVisual.test.ts +43 -0
  66. package/src/__tests__/statusBar.test.tsx +27 -0
  67. package/src/__tests__/teleprompter.test.tsx +190 -0
  68. package/src/__tests__/templateAnnotationRoundTrip.test.ts +49 -2
  69. package/src/__tests__/templateContentPreview.test.ts +101 -0
  70. package/src/__tests__/templatePickerPortal.test.tsx +62 -0
  71. package/src/__tests__/tiptapBridge.test.ts +70 -0
  72. package/src/__tests__/tiptapCodeBlockRoundTrip.test.ts +109 -0
  73. package/src/__tests__/transformStyleId.test.ts +13 -0
  74. package/src/__tests__/useImageEditor.test.tsx +67 -0
  75. package/src/__tests__/useMediaRecorder.test.ts +75 -0
  76. package/src/__tests__/viewMenuPanel.test.tsx +130 -0
  77. package/src/__tests__/wysiwygImageUpload.test.ts +69 -0
  78. package/src/__tests__/wysiwygTemplateBadgeFocus.test.tsx +56 -0
  79. package/src/asciiDiagram/AsciiDiagramExtension.ts +343 -0
  80. package/src/asciiDiagram/AsciiDiagramWidget.tsx +224 -0
  81. package/src/asciiDiagram/RepairableDiagramExtension.ts +200 -0
  82. package/src/asciiDiagram/__tests__/AsciiDiagramExtension.test.ts +145 -0
  83. package/src/asciiDiagram/__tests__/RepairableDiagramExtension.test.ts +159 -0
  84. package/src/asciiDiagram/__tests__/asciiDiagramCommands.test.ts +227 -0
  85. package/src/asciiDiagram/__tests__/asciiDiagramOps.test.ts +114 -0
  86. package/src/asciiDiagram/__tests__/asciiPaste.test.ts +43 -0
  87. package/src/asciiDiagram/asciiDiagramCommands.ts +148 -0
  88. package/src/asciiDiagram/asciiDiagramData.ts +116 -0
  89. package/src/asciiDiagram/asciiDiagramOps.ts +219 -0
  90. package/src/asciiDiagram/asciiPaste.ts +19 -0
  91. package/src/blockTagActivity.ts +233 -0
  92. package/src/buildDocumentPreviewMarkdown.ts +168 -0
  93. package/src/buildPreviewDoc.ts +19 -12
  94. package/src/customTemplates/CustomLayoutManager.tsx +3 -2
  95. package/src/customTemplates/CustomTemplateContext.tsx +6 -0
  96. package/src/customTemplates/TemplateDesigner.tsx +7 -4
  97. package/src/customTemplates/__tests__/library.test.ts +8 -0
  98. package/src/customTemplates/designer.css +158 -99
  99. package/src/customTemplates/library.ts +16 -3
  100. package/src/customThemes/CustomThemeContext.tsx +6 -0
  101. package/src/customThemes/CustomThemeDialog.tsx +35 -5
  102. package/src/customThemes/ImportThemeSection.tsx +178 -0
  103. package/src/customThemes/__tests__/customThemeLibrary.test.ts +9 -0
  104. package/src/customThemes/__tests__/importThemeSection.test.tsx +192 -0
  105. package/src/customThemes/customThemeLibrary.ts +7 -4
  106. package/src/customThemes/index.ts +7 -1
  107. package/src/customThemes/themeDraft.ts +23 -7
  108. package/src/diagram/DiagramCanvas.tsx +9 -4
  109. package/src/diagram/types.ts +35 -0
  110. package/src/editorScrollSync.ts +73 -0
  111. package/src/emojiData.ts +3 -23
  112. package/src/headingTransition.ts +85 -25
  113. package/src/imageEditor/CanvasSurface.tsx +29 -23
  114. package/src/imageEditor/LayersPanel.tsx +78 -3
  115. package/src/imageEditor/Toolbar.tsx +5 -1
  116. package/src/imageEditor/icons.tsx +4 -0
  117. package/src/imageEditor/image-editor.css +75 -0
  118. package/src/imageEditor/layers/SelectionHandles.tsx +1 -1
  119. package/src/imageEditor/useImageEditor.ts +71 -14
  120. package/src/index.ts +193 -20
  121. package/src/jsonEditor/JsonEditorContext.tsx +12 -6
  122. package/src/jsonEditor/RenderNode.tsx +24 -3
  123. package/src/jsonEditor/editors.tsx +86 -19
  124. package/src/mediaEntries.ts +12 -0
  125. package/src/mediaReferences.ts +299 -0
  126. package/src/monaco.ts +35 -0
  127. package/src/monacoWorkers.ts +89 -0
  128. package/src/outlineSource.ts +171 -0
  129. package/src/presentation/PresentationMode.tsx +596 -0
  130. package/src/rawEditorIsolation.ts +18 -0
  131. package/src/recorder/hooks/useMediaRecorder.ts +97 -53
  132. package/src/resolveBlockVisual.ts +10 -4
  133. package/src/scene/Scene.tsx +101 -25
  134. package/src/scene/SceneBlockExtension.ts +17 -10
  135. package/src/scene/SceneBlockWidget.tsx +11 -4
  136. package/src/scene/SceneSelection.tsx +19 -15
  137. package/src/scene/SceneSideToolbar.tsx +89 -0
  138. package/src/scene/SceneViewport.tsx +7 -3
  139. package/src/scene/ShapePalette.tsx +17 -2
  140. package/src/scene/__tests__/DiagramAdapter.test.ts +86 -0
  141. package/src/scene/__tests__/SceneBlockExtension.test.ts +33 -0
  142. package/src/scene/__tests__/sceneIsolation.test.tsx +93 -0
  143. package/src/scene/adapters/DiagramAdapter.ts +12 -101
  144. package/src/scene/commands/SceneCommand.ts +4 -1
  145. package/src/scene/index.ts +1 -6
  146. package/src/scene/layers/DiagramEdges.tsx +24 -9
  147. package/src/scene/layers/edgeGeometry.ts +31 -4
  148. package/src/scene/layers/nodeCard.tsx +27 -8
  149. package/src/scene/scene.css +145 -2
  150. package/src/scene/text/SceneTextOverlay.tsx +5 -5
  151. package/src/scene/text/sceneTextChannel.ts +26 -20
  152. package/src/scene/text/sceneTextConfig.ts +4 -0
  153. package/src/scene/tools/ConnectTool.ts +126 -28
  154. package/src/scene/tools/DrawingConnectTool.ts +86 -16
  155. package/src/scene/tools/SceneTool.ts +10 -0
  156. package/src/scene/tools/SelectTool.ts +34 -18
  157. package/src/scene/tools/ShapeTool.ts +2 -3
  158. package/src/styles/ascii-diagram.css +79 -0
  159. package/src/styles/ascii-timeline.css +499 -0
  160. package/src/styles/editor.css +1566 -219
  161. package/src/styles/index.css +3 -0
  162. package/src/styles/tree-view.css +139 -0
  163. package/src/teleprompter/TeleprompterControls.tsx +218 -0
  164. package/src/teleprompter/TeleprompterSelfView.tsx +22 -0
  165. package/src/teleprompter/TeleprompterSurface.tsx +267 -0
  166. package/src/teleprompter/TeleprompterView.tsx +338 -0
  167. package/src/teleprompter/canvasRenderer.ts +161 -0
  168. package/src/teleprompter/floatingWindow.ts +352 -0
  169. package/src/teleprompter/index.ts +61 -0
  170. package/src/teleprompter/pcmWorklet.ts +62 -0
  171. package/src/teleprompter/recording/insertPreamble.ts +80 -0
  172. package/src/teleprompter/recording/narrationSave.ts +134 -0
  173. package/src/teleprompter/recording/useNarrationRecorder.ts +367 -0
  174. package/src/teleprompter/scrollModel.ts +85 -0
  175. package/src/teleprompter/teleprompterTheme.ts +303 -0
  176. package/src/teleprompter/types.ts +38 -0
  177. package/src/teleprompter/useFloatingWindow.ts +74 -0
  178. package/src/teleprompter/useMicAnalysis.ts +211 -0
  179. package/src/teleprompter/useTeleprompter.ts +421 -0
  180. package/src/templateContentPreviewResolver.ts +360 -0
  181. package/src/timeline/TimelineEditorWidget.tsx +702 -0
  182. package/src/timeline/TimelineViewExtension.ts +252 -0
  183. package/src/timeline/__tests__/TimelineEditorWidget.test.tsx +355 -0
  184. package/src/timeline/__tests__/TimelineViewExtension.test.ts +163 -0
  185. package/src/timeline/__tests__/timelineCommands.test.ts +327 -0
  186. package/src/timeline/__tests__/timelineOps.test.ts +222 -0
  187. package/src/timeline/__tests__/timelinePaste.test.ts +34 -0
  188. package/src/timeline/timelineCommands.ts +367 -0
  189. package/src/timeline/timelineData.ts +54 -0
  190. package/src/timeline/timelineOps.ts +277 -0
  191. package/src/timeline/timelinePaste.ts +8 -0
  192. package/src/tiptapBridge.ts +84 -49
  193. package/src/transformStyleId.ts +17 -0
  194. package/src/treeview/TreeOutlineWidget.tsx +240 -0
  195. package/src/treeview/TreeViewExtension.ts +250 -0
  196. package/src/treeview/__tests__/TreeViewExtension.test.ts +122 -0
  197. package/src/treeview/__tests__/treeOps.test.ts +125 -0
  198. package/src/treeview/__tests__/treePaste.test.ts +40 -0
  199. package/src/treeview/__tests__/treeViewCommands.test.ts +163 -0
  200. package/src/treeview/treeOps.ts +172 -0
  201. package/src/treeview/treePaste.ts +13 -0
  202. package/src/treeview/treeViewCommands.ts +94 -0
  203. package/src/treeview/treeViewData.ts +41 -0
  204. package/src/useMonacoLoader.ts +11 -34
  205. package/src/wysiwygImageUpload.ts +113 -0
  206. package/src/diagram/DiagramExtension.ts +0 -209
  207. package/src/diagram/DiagramWidget.tsx +0 -270
  208. package/src/diagram/useDiagramData.ts +0 -126
@@ -7133,7 +7133,7 @@
7133
7133
  align-items: center;
7134
7134
  flex-wrap: nowrap;
7135
7135
  padding: 0 12px 0 0;
7136
- gap: 2px;
7136
+ gap: 1px;
7137
7137
  background: rgba(0, 0, 0, 0.07);
7138
7138
  container-type: inline-size;
7139
7139
  container-name: squisq-toolbar;
@@ -7150,6 +7150,185 @@
7150
7150
  align-items: flex-end;
7151
7151
  box-sizing: border-box;
7152
7152
  }
7153
+ .squisq-toolbar-view-tab-wrap {
7154
+ display: flex;
7155
+ align-items: flex-end;
7156
+ align-self: stretch;
7157
+ }
7158
+ .squisq-toolbar-use-tab {
7159
+ border-bottom: 2px solid transparent;
7160
+ }
7161
+ .squisq-toolbar-use-tab > .squisq-toolbar-view-tab {
7162
+ padding-right: 4px;
7163
+ padding-bottom: 4px;
7164
+ border-bottom: 0;
7165
+ }
7166
+ .squisq-toolbar-use-tab--active {
7167
+ border-bottom-color: #2563eb;
7168
+ }
7169
+ .squisq-use-mode-trigger {
7170
+ align-self: stretch;
7171
+ display: inline-flex;
7172
+ align-items: flex-end;
7173
+ justify-content: center;
7174
+ width: 20px;
7175
+ padding: 0 6px 9px 0;
7176
+ border: 0;
7177
+ background: transparent;
7178
+ color: #4b5563;
7179
+ cursor: pointer;
7180
+ box-sizing: content-box;
7181
+ }
7182
+ .squisq-use-mode-trigger > svg {
7183
+ display: block;
7184
+ transform: translateY(-1px);
7185
+ }
7186
+ .squisq-use-mode-trigger:hover,
7187
+ .squisq-use-mode-trigger--open {
7188
+ color: #111827;
7189
+ }
7190
+ .squisq-toolbar-use-tab--active .squisq-use-mode-trigger {
7191
+ color: #1d4ed8;
7192
+ }
7193
+ .squisq-use-mode-menu {
7194
+ position: fixed;
7195
+ z-index: 120;
7196
+ width: min(340px, calc(100vw - 16px));
7197
+ padding: 6px;
7198
+ border: 1px solid #d1d5db;
7199
+ border-radius: 10px;
7200
+ background: #ffffff;
7201
+ box-shadow: 0 12px 32px rgba(15, 23, 42, 0.2), 0 2px 6px rgba(15, 23, 42, 0.08);
7202
+ box-sizing: border-box;
7203
+ font-family:
7204
+ -apple-system,
7205
+ BlinkMacSystemFont,
7206
+ "Segoe UI",
7207
+ "Noto Sans",
7208
+ Helvetica,
7209
+ Arial,
7210
+ sans-serif;
7211
+ animation: squisq-use-mode-menu-in 0.12s ease-out;
7212
+ }
7213
+ .squisq-use-mode-menu-item {
7214
+ display: flex;
7215
+ align-items: center;
7216
+ gap: 10px;
7217
+ width: 100%;
7218
+ min-height: 52px;
7219
+ padding: 7px 9px;
7220
+ border: 0;
7221
+ border-radius: 7px;
7222
+ background: transparent;
7223
+ color: #374151;
7224
+ font: inherit;
7225
+ text-align: left;
7226
+ cursor: pointer;
7227
+ transition: background 0.12s ease, color 0.12s ease;
7228
+ }
7229
+ .squisq-use-mode-menu-item:hover,
7230
+ .squisq-use-mode-menu-item:focus-visible {
7231
+ outline: none;
7232
+ background: #f3f4f6;
7233
+ color: #111827;
7234
+ }
7235
+ .squisq-use-mode-menu-item--selected {
7236
+ background: #eff6ff;
7237
+ color: #1d4ed8;
7238
+ }
7239
+ .squisq-use-mode-menu-icon {
7240
+ display: inline-flex;
7241
+ align-items: center;
7242
+ justify-content: center;
7243
+ width: 32px;
7244
+ height: 32px;
7245
+ flex: 0 0 32px;
7246
+ border-radius: 8px;
7247
+ background: #f1f5f9;
7248
+ color: #64748b;
7249
+ font-size: 14px;
7250
+ }
7251
+ .squisq-use-mode-menu-item--selected .squisq-use-mode-menu-icon {
7252
+ background: #dbeafe;
7253
+ color: #2563eb;
7254
+ }
7255
+ .squisq-use-mode-menu-copy {
7256
+ display: flex;
7257
+ flex: 1 1 auto;
7258
+ min-width: 0;
7259
+ flex-direction: column;
7260
+ gap: 2px;
7261
+ }
7262
+ .squisq-use-mode-menu-label {
7263
+ color: inherit;
7264
+ font-size: 12.5px;
7265
+ font-weight: 650;
7266
+ line-height: 1.2;
7267
+ }
7268
+ .squisq-use-mode-menu-summary {
7269
+ overflow: hidden;
7270
+ color: #6b7280;
7271
+ font-size: 11.5px;
7272
+ font-weight: 400;
7273
+ line-height: 1.3;
7274
+ text-overflow: ellipsis;
7275
+ white-space: nowrap;
7276
+ }
7277
+ .squisq-use-mode-menu-check {
7278
+ display: inline-flex;
7279
+ align-items: center;
7280
+ justify-content: center;
7281
+ width: 16px;
7282
+ flex: 0 0 16px;
7283
+ color: #2563eb;
7284
+ font-size: 11px;
7285
+ text-align: center;
7286
+ }
7287
+ @keyframes squisq-use-mode-menu-in {
7288
+ from {
7289
+ opacity: 0;
7290
+ transform: translateY(-3px) scale(0.99);
7291
+ }
7292
+ to {
7293
+ opacity: 1;
7294
+ transform: translateY(0) scale(1);
7295
+ }
7296
+ }
7297
+ @media (prefers-reduced-motion: reduce) {
7298
+ .squisq-use-mode-menu {
7299
+ animation: none;
7300
+ }
7301
+ }
7302
+ .squisq-use-mode-menu[data-theme=dark] {
7303
+ border-color: #4b5563;
7304
+ background: #1f2937;
7305
+ }
7306
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-item {
7307
+ color: #d1d5db;
7308
+ }
7309
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-item:hover,
7310
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-item:focus-visible {
7311
+ background: #374151;
7312
+ color: #f9fafb;
7313
+ }
7314
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-item--selected {
7315
+ background: #172f4f;
7316
+ color: #93c5fd;
7317
+ }
7318
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-icon {
7319
+ background: #334155;
7320
+ color: #cbd5e1;
7321
+ }
7322
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-item--selected .squisq-use-mode-menu-icon {
7323
+ background: #1e4976;
7324
+ color: #bfdbfe;
7325
+ }
7326
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-summary {
7327
+ color: #94a3b8;
7328
+ }
7329
+ .squisq-use-mode-menu[data-theme=dark] .squisq-use-mode-menu-check {
7330
+ color: #93c5fd;
7331
+ }
7153
7332
  .squisq-editor-shell[data-outline-visible=true] .squisq-toolbar-view-tabs {
7154
7333
  flex-shrink: 0;
7155
7334
  min-width: var(--squisq-outline-width, 240px);
@@ -7162,6 +7341,9 @@
7162
7341
  flex: 1;
7163
7342
  min-width: 0;
7164
7343
  }
7344
+ .squisq-toolbar-contextual--clipped {
7345
+ visibility: hidden;
7346
+ }
7165
7347
  .squisq-toolbar-view-tab {
7166
7348
  padding: 8px 14px 4px;
7167
7349
  border: none;
@@ -7220,6 +7402,7 @@
7220
7402
  justify-content: center;
7221
7403
  width: 32px;
7222
7404
  height: 28px;
7405
+ flex-shrink: 0;
7223
7406
  border: none;
7224
7407
  border-radius: 4px;
7225
7408
  background: transparent;
@@ -7245,6 +7428,30 @@
7245
7428
  background: #bfdbfe;
7246
7429
  color: #1d4ed8;
7247
7430
  }
7431
+ .squisq-toolbar-files-toggle {
7432
+ position: relative;
7433
+ }
7434
+ .squisq-toolbar-files-badge {
7435
+ position: absolute;
7436
+ right: 1px;
7437
+ bottom: 1px;
7438
+ min-width: 14px;
7439
+ height: 14px;
7440
+ padding: 0 3px;
7441
+ border: 1.5px solid #e5e7eb;
7442
+ border-radius: 999px;
7443
+ background: #2563eb;
7444
+ color: #ffffff;
7445
+ box-sizing: border-box;
7446
+ display: inline-flex;
7447
+ align-items: center;
7448
+ justify-content: center;
7449
+ font-size: 9px;
7450
+ font-weight: 700;
7451
+ line-height: 1;
7452
+ pointer-events: none;
7453
+ z-index: 1;
7454
+ }
7248
7455
  .squisq-toolbar-button > i {
7249
7456
  font-size: 15px;
7250
7457
  line-height: 1;
@@ -7340,6 +7547,15 @@
7340
7547
  min-width: 0;
7341
7548
  max-width: 100%;
7342
7549
  }
7550
+ .squisq-toolbar-overflow-heading {
7551
+ padding: 4px 12px 2px;
7552
+ font-size: 11px;
7553
+ font-weight: 600;
7554
+ letter-spacing: 0.04em;
7555
+ text-transform: uppercase;
7556
+ color: #9ca3af;
7557
+ user-select: none;
7558
+ }
7343
7559
  .squisq-insert-menu {
7344
7560
  z-index: 100;
7345
7561
  min-width: 200px;
@@ -7462,18 +7678,349 @@
7462
7678
  color: #9ca3af;
7463
7679
  flex-shrink: 0;
7464
7680
  }
7681
+ .squisq-template-gallery-dialog {
7682
+ --squisq-template-gallery-backdrop: rgba(17, 24, 39, 0.34);
7683
+ --squisq-template-gallery-backdrop-blur: 1px;
7684
+ --squisq-template-gallery-panel-bg: #ffffff;
7685
+ --squisq-template-gallery-panel-border: #e5e7eb;
7686
+ --squisq-template-gallery-panel-shadow: 0 24px 70px rgba(15, 23, 42, 0.24), 0 8px 24px rgba(15, 23, 42, 0.16);
7687
+ --squisq-template-gallery-header-bg: #ffffff;
7688
+ --squisq-template-gallery-header-border: #e5e7eb;
7689
+ --squisq-template-gallery-title: #111827;
7690
+ --squisq-template-gallery-close-color: #64748b;
7691
+ --squisq-template-gallery-close-bg: rgba(255, 255, 255, 0.9);
7692
+ --squisq-template-gallery-close-border: #e2e8f0;
7693
+ --squisq-template-gallery-close-hover-color: #0f172a;
7694
+ --squisq-template-gallery-close-hover-border: #c7d2fe;
7695
+ --squisq-template-gallery-close-hover-shadow: 0 1px 4px rgba(99, 102, 241, 0.16);
7696
+ --squisq-template-gallery-bg: #ffffff;
7697
+ --squisq-template-gallery-text: #111827;
7698
+ --squisq-template-gallery-border: #e5e7eb;
7699
+ --squisq-template-gallery-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06);
7700
+ --squisq-template-gallery-search-bg: #ffffff;
7701
+ --squisq-template-gallery-search-border: #f3f4f6;
7702
+ --squisq-template-gallery-search-icon: #9ca3af;
7703
+ --squisq-template-gallery-search-input: #111827;
7704
+ --squisq-template-gallery-search-placeholder: #9ca3af;
7705
+ --squisq-template-gallery-empty: #6b7280;
7706
+ --squisq-template-gallery-option-bg: #fbfdff;
7707
+ --squisq-template-gallery-option-border: #e5e7eb;
7708
+ --squisq-template-gallery-option-hover-bg: #f9fafb;
7709
+ --squisq-template-gallery-option-hover-border: #c7d2fe;
7710
+ --squisq-template-gallery-option-hover-shadow: 0 1px 3px rgba(99, 102, 241, 0.08);
7711
+ --squisq-template-gallery-card-bg: transparent;
7712
+ --squisq-template-gallery-card-border: #e5e7eb;
7713
+ --squisq-template-gallery-card-hover-bg: #f9fafb;
7714
+ --squisq-template-gallery-card-hover-border: #a5b4fc;
7715
+ --squisq-template-gallery-card-hover-shadow: 0 1px 4px rgba(99, 102, 241, 0.1);
7716
+ --squisq-template-gallery-selected-bg: #eef2ff;
7717
+ --squisq-template-gallery-selected-border: #6366f1;
7718
+ --squisq-template-gallery-selected-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
7719
+ --squisq-template-gallery-card-icon-bg: #f8fafc;
7720
+ --squisq-template-gallery-card-icon-border: #e5e7eb;
7721
+ --squisq-template-gallery-content-preview-bg: #f1f5f9;
7722
+ --squisq-template-gallery-preview-warning-bg: rgba(17, 24, 39, 0.9);
7723
+ --squisq-template-gallery-preview-warning-border: rgba(255, 255, 255, 0.22);
7724
+ --squisq-template-gallery-preview-warning-text: #ffffff;
7725
+ --squisq-template-gallery-name: #111827;
7726
+ --squisq-template-gallery-description: #6b7280;
7727
+ --squisq-template-gallery-new-bg: #f5f3ff;
7728
+ --squisq-template-gallery-new-border: #a5b4fc;
7729
+ --squisq-template-gallery-new-hover-bg: #ede9fe;
7730
+ --squisq-template-gallery-new-hover-border: #818cf8;
7731
+ --squisq-template-gallery-new-plus-color: #6366f1;
7732
+ --squisq-template-gallery-new-plus-bg: #ffffff;
7733
+ --squisq-template-gallery-new-plus-border: #c4b5fd;
7734
+ --squisq-template-gallery-new-label: #4338ca;
7735
+ --squisq-template-gallery-new-desc: #6b7280;
7736
+ --squisq-template-gallery-section-border: #e5e7eb;
7737
+ --squisq-template-gallery-section-title: #6b7280;
7738
+ box-sizing: border-box;
7739
+ display: flex;
7740
+ align-items: center;
7741
+ justify-content: center;
7742
+ min-width: 0;
7743
+ min-height: 0;
7744
+ padding: 0;
7745
+ background: var(--squisq-template-gallery-backdrop);
7746
+ backdrop-filter: blur(var(--squisq-template-gallery-backdrop-blur));
7747
+ font-family: var( --squisq-ux-font, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif );
7748
+ }
7749
+ .squisq-template-gallery-dialog-panel {
7750
+ position: relative;
7751
+ display: flex;
7752
+ flex-direction: column;
7753
+ width: min(90vw, calc(100% - 32px));
7754
+ height: calc(100% - 32px);
7755
+ max-height: calc(100% - 32px);
7756
+ min-width: 0;
7757
+ min-height: 0;
7758
+ overflow: hidden;
7759
+ background: var(--squisq-template-gallery-panel-bg);
7760
+ border: 1px solid var(--squisq-template-gallery-panel-border);
7761
+ border-radius: 12px;
7762
+ box-shadow: var(--squisq-template-gallery-panel-shadow);
7763
+ }
7764
+ .squisq-template-gallery-dialog-header {
7765
+ display: flex;
7766
+ align-items: center;
7767
+ justify-content: space-between;
7768
+ gap: 12px;
7769
+ flex: 0 0 auto;
7770
+ min-width: 0;
7771
+ padding: 12px 14px 12px 16px;
7772
+ background: var(--squisq-template-gallery-header-bg);
7773
+ border-bottom: 1px solid var(--squisq-template-gallery-header-border);
7774
+ }
7775
+ .squisq-template-gallery-dialog-title {
7776
+ min-width: 0;
7777
+ margin: 0;
7778
+ overflow: hidden;
7779
+ color: var(--squisq-template-gallery-title);
7780
+ font-size: 15px;
7781
+ font-weight: 700;
7782
+ line-height: 1.3;
7783
+ text-overflow: ellipsis;
7784
+ white-space: nowrap;
7785
+ }
7786
+ .squisq-template-gallery-dialog-close {
7787
+ display: inline-flex;
7788
+ align-items: center;
7789
+ justify-content: center;
7790
+ flex: 0 0 auto;
7791
+ width: 28px;
7792
+ height: 28px;
7793
+ padding: 0;
7794
+ color: var(--squisq-template-gallery-close-color);
7795
+ background: var(--squisq-template-gallery-close-bg);
7796
+ border: 1px solid var(--squisq-template-gallery-close-border);
7797
+ border-radius: 6px;
7798
+ cursor: pointer;
7799
+ }
7800
+ .squisq-template-gallery-dialog-close:hover {
7801
+ color: var(--squisq-template-gallery-close-hover-color);
7802
+ border-color: var(--squisq-template-gallery-close-hover-border);
7803
+ box-shadow: var(--squisq-template-gallery-close-hover-shadow);
7804
+ }
7805
+ .squisq-template-gallery-dialog-body {
7806
+ display: flex;
7807
+ flex: 1 1 auto;
7808
+ min-width: 0;
7809
+ min-height: 0;
7810
+ overflow: hidden;
7811
+ }
7465
7812
  .squisq-template-gallery {
7466
7813
  width: 420px;
7467
7814
  max-width: calc(100vw - 24px);
7468
7815
  max-height: calc(100vh - 72px);
7469
7816
  overflow-y: auto;
7470
- background: #fff;
7471
- border: 1px solid #e5e7eb;
7817
+ background: var(--squisq-template-gallery-bg, #fff);
7818
+ border: 1px solid var(--squisq-template-gallery-border, #e5e7eb);
7472
7819
  border-radius: 10px;
7473
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06);
7820
+ box-shadow: var( --squisq-template-gallery-shadow, 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.06) );
7474
7821
  padding: 8px;
7475
7822
  animation: squisq-gallery-appear 0.12s ease-out;
7476
7823
  }
7824
+ .squisq-template-gallery-dialog .squisq-template-gallery {
7825
+ flex: 1 1 auto;
7826
+ width: 100%;
7827
+ height: auto;
7828
+ max-width: none;
7829
+ max-height: none;
7830
+ min-height: 0;
7831
+ box-sizing: border-box;
7832
+ padding: 0 12px 12px;
7833
+ border: 0;
7834
+ border-radius: 0;
7835
+ box-shadow: none;
7836
+ animation: none;
7837
+ }
7838
+ .squisq-template-gallery-dialog .squisq-template-gallery-search {
7839
+ z-index: 3;
7840
+ margin: 0 -12px;
7841
+ padding: 2px 16px 26px;
7842
+ border-bottom: 0;
7843
+ }
7844
+ .squisq-template-gallery-dialog .squisq-template-gallery-search::after {
7845
+ content: "";
7846
+ position: absolute;
7847
+ left: 0;
7848
+ right: 0;
7849
+ bottom: 18px;
7850
+ height: 1px;
7851
+ background: var(--squisq-template-gallery-search-border, #f3f4f6);
7852
+ pointer-events: none;
7853
+ }
7854
+ .squisq-template-gallery-dialog .squisq-template-gallery-grid {
7855
+ grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
7856
+ }
7857
+ .squisq-template-gallery-dialog[data-theme=dark] {
7858
+ --squisq-template-gallery-backdrop: rgba(2, 6, 23, 0.64);
7859
+ --squisq-template-gallery-backdrop-blur: 2px;
7860
+ --squisq-template-gallery-panel-bg: #111827;
7861
+ --squisq-template-gallery-panel-border: #334155;
7862
+ --squisq-template-gallery-panel-shadow: 0 24px 70px rgba(0, 0, 0, 0.55), 0 8px 24px rgba(0, 0, 0, 0.35);
7863
+ --squisq-template-gallery-header-bg: #111827;
7864
+ --squisq-template-gallery-header-border: #334155;
7865
+ --squisq-template-gallery-title: #f3f4f6;
7866
+ --squisq-template-gallery-close-color: #cbd5e1;
7867
+ --squisq-template-gallery-close-bg: #0f172a;
7868
+ --squisq-template-gallery-close-border: #334155;
7869
+ --squisq-template-gallery-close-hover-color: #ffffff;
7870
+ --squisq-template-gallery-close-hover-border: #818cf8;
7871
+ --squisq-template-gallery-close-hover-shadow: 0 1px 6px rgba(129, 140, 248, 0.22);
7872
+ --squisq-template-gallery-bg: #111827;
7873
+ --squisq-template-gallery-text: #e5e7eb;
7874
+ --squisq-template-gallery-search-bg: #111827;
7875
+ --squisq-template-gallery-search-border: #334155;
7876
+ --squisq-template-gallery-search-icon: #64748b;
7877
+ --squisq-template-gallery-search-input: #f9fafb;
7878
+ --squisq-template-gallery-search-placeholder: #64748b;
7879
+ --squisq-template-gallery-empty: #94a3b8;
7880
+ --squisq-template-gallery-option-bg: #0f172a;
7881
+ --squisq-template-gallery-option-border: #334155;
7882
+ --squisq-template-gallery-option-hover-bg: #1e293b;
7883
+ --squisq-template-gallery-option-hover-border: #6366f1;
7884
+ --squisq-template-gallery-option-hover-shadow: 0 1px 5px rgba(99, 102, 241, 0.18);
7885
+ --squisq-template-gallery-card-bg: #0f172a;
7886
+ --squisq-template-gallery-card-border: #334155;
7887
+ --squisq-template-gallery-card-hover-bg: #1e293b;
7888
+ --squisq-template-gallery-card-hover-border: #6366f1;
7889
+ --squisq-template-gallery-card-hover-shadow: 0 1px 5px rgba(99, 102, 241, 0.18);
7890
+ --squisq-template-gallery-selected-bg: #1e1b4b;
7891
+ --squisq-template-gallery-selected-border: #818cf8;
7892
+ --squisq-template-gallery-selected-shadow: 0 0 0 2px rgba(129, 140, 248, 0.24);
7893
+ --squisq-template-gallery-card-icon-bg: #020617;
7894
+ --squisq-template-gallery-card-icon-border: #334155;
7895
+ --squisq-template-gallery-content-preview-bg: #020617;
7896
+ --squisq-template-gallery-preview-warning-bg: rgba(15, 23, 42, 0.94);
7897
+ --squisq-template-gallery-preview-warning-border: #475569;
7898
+ --squisq-template-gallery-preview-warning-text: #f8fafc;
7899
+ --squisq-template-gallery-name: #f3f4f6;
7900
+ --squisq-template-gallery-description: #94a3b8;
7901
+ --squisq-template-gallery-new-bg: #151437;
7902
+ --squisq-template-gallery-new-border: #4f46e5;
7903
+ --squisq-template-gallery-new-hover-bg: #1e1b4b;
7904
+ --squisq-template-gallery-new-hover-border: #818cf8;
7905
+ --squisq-template-gallery-new-plus-color: #c4b5fd;
7906
+ --squisq-template-gallery-new-plus-bg: #0f172a;
7907
+ --squisq-template-gallery-new-plus-border: #6366f1;
7908
+ --squisq-template-gallery-new-label: #f3f4f6;
7909
+ --squisq-template-gallery-new-desc: #94a3b8;
7910
+ --squisq-template-gallery-section-border: #334155;
7911
+ --squisq-template-gallery-section-title: #cbd5e1;
7912
+ background: var(--squisq-template-gallery-backdrop);
7913
+ backdrop-filter: blur(var(--squisq-template-gallery-backdrop-blur));
7914
+ }
7915
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-panel {
7916
+ background: var(--squisq-template-gallery-panel-bg);
7917
+ border-color: var(--squisq-template-gallery-panel-border);
7918
+ box-shadow: var(--squisq-template-gallery-panel-shadow);
7919
+ }
7920
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-header {
7921
+ background: var(--squisq-template-gallery-header-bg);
7922
+ border-bottom-color: var(--squisq-template-gallery-header-border);
7923
+ }
7924
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-title {
7925
+ color: var(--squisq-template-gallery-title);
7926
+ }
7927
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-close {
7928
+ color: var(--squisq-template-gallery-close-color);
7929
+ background: var(--squisq-template-gallery-close-bg);
7930
+ border-color: var(--squisq-template-gallery-close-border);
7931
+ }
7932
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-dialog-close:hover {
7933
+ color: var(--squisq-template-gallery-close-hover-color);
7934
+ border-color: var(--squisq-template-gallery-close-hover-border);
7935
+ box-shadow: var(--squisq-template-gallery-close-hover-shadow);
7936
+ }
7937
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery {
7938
+ background: var(--squisq-template-gallery-bg);
7939
+ color: var(--squisq-template-gallery-text);
7940
+ }
7941
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search {
7942
+ background: var(--squisq-template-gallery-search-bg);
7943
+ border-bottom-color: var(--squisq-template-gallery-search-border);
7944
+ }
7945
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-icon {
7946
+ color: var(--squisq-template-gallery-search-icon);
7947
+ }
7948
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-input {
7949
+ color: var(--squisq-template-gallery-search-input);
7950
+ }
7951
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-search-input::placeholder {
7952
+ color: var(--squisq-template-gallery-search-placeholder);
7953
+ }
7954
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-empty {
7955
+ color: var(--squisq-template-gallery-empty);
7956
+ }
7957
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none {
7958
+ background: var(--squisq-template-gallery-option-bg);
7959
+ border-color: var(--squisq-template-gallery-option-border);
7960
+ }
7961
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none:hover {
7962
+ background: var(--squisq-template-gallery-option-hover-bg);
7963
+ border-color: var(--squisq-template-gallery-option-hover-border);
7964
+ box-shadow: var(--squisq-template-gallery-option-hover-shadow);
7965
+ }
7966
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none.squisq-template-gallery-card--selected {
7967
+ background: var(--squisq-template-gallery-selected-bg);
7968
+ border-color: var(--squisq-template-gallery-selected-border);
7969
+ }
7970
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none-label {
7971
+ color: var(--squisq-template-gallery-section-title);
7972
+ }
7973
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-none-desc {
7974
+ color: var(--squisq-template-gallery-description);
7975
+ }
7976
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card {
7977
+ background: var(--squisq-template-gallery-card-bg);
7978
+ border-color: var(--squisq-template-gallery-card-border);
7979
+ }
7980
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card:hover {
7981
+ background: var(--squisq-template-gallery-card-hover-bg);
7982
+ border-color: var(--squisq-template-gallery-card-hover-border);
7983
+ box-shadow: var(--squisq-template-gallery-card-hover-shadow);
7984
+ }
7985
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card--selected {
7986
+ background: var(--squisq-template-gallery-selected-bg);
7987
+ border-color: var(--squisq-template-gallery-selected-border);
7988
+ box-shadow: var(--squisq-template-gallery-selected-shadow);
7989
+ }
7990
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-icon {
7991
+ background: var(--squisq-template-gallery-card-icon-bg);
7992
+ border-color: var(--squisq-template-gallery-card-icon-border);
7993
+ }
7994
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-content-preview {
7995
+ background: var(--squisq-template-gallery-content-preview-bg);
7996
+ }
7997
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-name,
7998
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-label {
7999
+ color: var(--squisq-template-gallery-name);
8000
+ }
8001
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-card-desc,
8002
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-desc {
8003
+ color: var(--squisq-template-gallery-description);
8004
+ }
8005
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new {
8006
+ background: var(--squisq-template-gallery-new-bg);
8007
+ border-color: var(--squisq-template-gallery-new-border);
8008
+ }
8009
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new:hover {
8010
+ background: var(--squisq-template-gallery-new-hover-bg);
8011
+ border-color: var(--squisq-template-gallery-new-hover-border);
8012
+ }
8013
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-new-plus {
8014
+ color: var(--squisq-template-gallery-new-plus-color);
8015
+ background: var(--squisq-template-gallery-new-plus-bg);
8016
+ border-color: var(--squisq-template-gallery-new-plus-border);
8017
+ }
8018
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-section + .squisq-template-gallery-section {
8019
+ border-top-color: var(--squisq-template-gallery-section-border);
8020
+ }
8021
+ .squisq-template-gallery-dialog[data-theme=dark] .squisq-template-gallery-section-title {
8022
+ color: var(--squisq-template-gallery-section-title);
8023
+ }
7477
8024
  @keyframes squisq-gallery-appear {
7478
8025
  from {
7479
8026
  opacity: 0;
@@ -7493,11 +8040,11 @@
7493
8040
  gap: 6px;
7494
8041
  padding: 4px 8px;
7495
8042
  margin: -4px -4px 8px;
7496
- background: #fff;
7497
- border-bottom: 1px solid #f3f4f6;
8043
+ background: var(--squisq-template-gallery-search-bg, #fff);
8044
+ border-bottom: 1px solid var(--squisq-template-gallery-search-border, #f3f4f6);
7498
8045
  }
7499
8046
  .squisq-template-gallery-search-icon {
7500
- color: #9ca3af;
8047
+ color: var(--squisq-template-gallery-search-icon, #9ca3af);
7501
8048
  flex-shrink: 0;
7502
8049
  }
7503
8050
  .squisq-template-gallery-search-input {
@@ -7508,11 +8055,11 @@
7508
8055
  outline: none;
7509
8056
  font: inherit;
7510
8057
  font-size: 13px;
7511
- color: #111827;
8058
+ color: var(--squisq-template-gallery-search-input, #111827);
7512
8059
  background: transparent;
7513
8060
  }
7514
8061
  .squisq-template-gallery-search-input::placeholder {
7515
- color: #9ca3af;
8062
+ color: var(--squisq-template-gallery-search-placeholder, #9ca3af);
7516
8063
  }
7517
8064
  .squisq-template-gallery-search-input::-webkit-search-cancel-button {
7518
8065
  appearance: none;
@@ -7521,7 +8068,7 @@
7521
8068
  padding: 24px 12px;
7522
8069
  text-align: center;
7523
8070
  font-size: 12px;
7524
- color: #6b7280;
8071
+ color: var(--squisq-template-gallery-empty, #6b7280);
7525
8072
  }
7526
8073
  .squisq-template-gallery-none {
7527
8074
  display: flex;
@@ -7529,30 +8076,35 @@
7529
8076
  gap: 10px;
7530
8077
  width: 100%;
7531
8078
  padding: 6px 10px;
7532
- border: 1px solid transparent;
8079
+ border: 1px solid var(--squisq-template-gallery-option-border, #e5e7eb);
7533
8080
  border-radius: 7px;
7534
- background: none;
8081
+ background: var(--squisq-template-gallery-option-bg, #fbfdff);
7535
8082
  cursor: pointer;
7536
8083
  text-align: left;
7537
8084
  margin-bottom: 6px;
7538
- transition: background 0.1s;
8085
+ transition:
8086
+ background 0.1s,
8087
+ border-color 0.1s,
8088
+ box-shadow 0.1s;
7539
8089
  }
7540
8090
  .squisq-template-gallery-none:hover {
7541
- background: #f9fafb;
8091
+ background: var(--squisq-template-gallery-option-hover-bg, #f9fafb);
8092
+ border-color: var(--squisq-template-gallery-option-hover-border, #c7d2fe);
8093
+ box-shadow: var( --squisq-template-gallery-option-hover-shadow, 0 1px 3px rgba(99, 102, 241, 0.08) );
7542
8094
  }
7543
8095
  .squisq-template-gallery-none.squisq-template-gallery-card--selected {
7544
- background: #eef2ff;
7545
- border-color: #c7d2fe;
8096
+ background: var(--squisq-template-gallery-selected-bg, #eef2ff);
8097
+ border-color: var(--squisq-template-gallery-selected-border, #c7d2fe);
7546
8098
  }
7547
8099
  .squisq-template-gallery-none-label {
7548
8100
  font-size: 12px;
7549
8101
  font-weight: 600;
7550
- color: #6b7280;
8102
+ color: var(--squisq-template-gallery-section-title, #6b7280);
7551
8103
  white-space: nowrap;
7552
8104
  }
7553
8105
  .squisq-template-gallery-none-desc {
7554
8106
  font-size: 11px;
7555
- color: #9ca3af;
8107
+ color: var(--squisq-template-gallery-description, #9ca3af);
7556
8108
  }
7557
8109
  .squisq-template-gallery-grid {
7558
8110
  display: grid;
@@ -7569,12 +8121,13 @@
7569
8121
  }
7570
8122
  .squisq-template-gallery-card {
7571
8123
  display: flex;
8124
+ flex-direction: column;
7572
8125
  align-items: flex-start;
7573
- gap: 10px;
7574
- padding: 8px 10px;
7575
- border: 1px solid #e5e7eb;
8126
+ gap: 8px;
8127
+ padding: 8px;
8128
+ border: 1px solid var(--squisq-template-gallery-card-border, #e5e7eb);
7576
8129
  border-radius: 7px;
7577
- background: none;
8130
+ background: var(--squisq-template-gallery-card-bg, transparent);
7578
8131
  cursor: pointer;
7579
8132
  text-align: left;
7580
8133
  transition:
@@ -7583,42 +8136,110 @@
7583
8136
  box-shadow 0.1s;
7584
8137
  }
7585
8138
  .squisq-template-gallery-card:hover {
7586
- background: #f9fafb;
7587
- border-color: #a5b4fc;
7588
- box-shadow: 0 1px 4px rgba(99, 102, 241, 0.1);
8139
+ background: var(--squisq-template-gallery-card-hover-bg, #f9fafb);
8140
+ border-color: var(--squisq-template-gallery-card-hover-border, #a5b4fc);
8141
+ box-shadow: var(--squisq-template-gallery-card-hover-shadow, 0 1px 4px rgba(99, 102, 241, 0.1));
7589
8142
  }
7590
8143
  .squisq-template-gallery-card--selected {
7591
- background: #eef2ff;
7592
- border-color: #6366f1;
7593
- box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.15);
8144
+ background: var(--squisq-template-gallery-selected-bg, #eef2ff);
8145
+ border-color: var(--squisq-template-gallery-selected-border, #6366f1);
8146
+ box-shadow: var(--squisq-template-gallery-selected-shadow, 0 0 0 2px rgba(99, 102, 241, 0.15));
7594
8147
  }
7595
8148
  .squisq-template-gallery-card-icon {
8149
+ display: flex;
8150
+ align-items: center;
8151
+ justify-content: center;
8152
+ width: 100%;
8153
+ aspect-ratio: 16 / 9;
8154
+ min-height: 64px;
7596
8155
  flex-shrink: 0;
7597
8156
  border-radius: 4px;
7598
8157
  overflow: hidden;
7599
- background: #f8fafc;
7600
- border: 1px solid #e5e7eb;
8158
+ background: var(--squisq-template-gallery-card-icon-bg, #f8fafc);
8159
+ border: 1px solid var(--squisq-template-gallery-card-icon-border, #e5e7eb);
7601
8160
  line-height: 0;
7602
8161
  }
7603
8162
  .squisq-template-picker-icon {
7604
8163
  display: block;
7605
8164
  }
8165
+ .squisq-template-gallery-card-icon .squisq-template-picker-icon {
8166
+ width: 100%;
8167
+ height: 100%;
8168
+ }
8169
+ .squisq-template-gallery-none > .squisq-template-picker-icon {
8170
+ width: 56px;
8171
+ height: 40px;
8172
+ flex-shrink: 0;
8173
+ }
8174
+ .squisq-template-gallery-card-icon .squisq-template-thumbnail {
8175
+ display: block;
8176
+ width: 100%;
8177
+ height: 100%;
8178
+ }
8179
+ .squisq-template-gallery-content-preview {
8180
+ position: relative;
8181
+ width: 100%;
8182
+ height: 100%;
8183
+ background: var(--squisq-template-gallery-content-preview-bg, #f1f5f9);
8184
+ }
8185
+ .squisq-template-gallery-content-preview svg {
8186
+ width: 100%;
8187
+ height: 100%;
8188
+ display: block;
8189
+ }
8190
+ .squisq-template-gallery-content-preview-fallback {
8191
+ display: flex;
8192
+ align-items: center;
8193
+ justify-content: center;
8194
+ width: 100%;
8195
+ height: 100%;
8196
+ }
8197
+ .squisq-template-gallery-content-preview-fallback > svg {
8198
+ width: 100%;
8199
+ height: 100%;
8200
+ display: block;
8201
+ }
8202
+ .squisq-template-gallery-content-preview-warning {
8203
+ position: absolute;
8204
+ left: 50%;
8205
+ top: 50%;
8206
+ max-width: calc(100% - 16px);
8207
+ padding: 3px 6px;
8208
+ transform: translate(-50%, -50%);
8209
+ border: 1px solid var(--squisq-template-gallery-preview-warning-border, rgba(255, 255, 255, 0.22));
8210
+ border-radius: 4px;
8211
+ background: var(--squisq-template-gallery-preview-warning-bg, rgba(17, 24, 39, 0.9));
8212
+ color: var(--squisq-template-gallery-preview-warning-text, #ffffff);
8213
+ font-size: 10px;
8214
+ font-weight: 600;
8215
+ line-height: 1.2;
8216
+ text-align: center;
8217
+ pointer-events: none;
8218
+ }
7606
8219
  .squisq-template-gallery-card-body {
7607
8220
  display: flex;
7608
8221
  flex-direction: column;
7609
8222
  gap: 3px;
8223
+ width: 100%;
7610
8224
  min-width: 0;
7611
8225
  }
7612
8226
  .squisq-template-gallery-card-name {
7613
8227
  font-size: 12px;
7614
8228
  font-weight: 600;
7615
- color: #111827;
8229
+ color: var(--squisq-template-gallery-name, #111827);
7616
8230
  line-height: 1.3;
8231
+ overflow: hidden;
8232
+ text-overflow: ellipsis;
8233
+ white-space: nowrap;
7617
8234
  }
7618
8235
  .squisq-template-gallery-card-desc {
7619
8236
  font-size: 11px;
7620
- color: #6b7280;
8237
+ color: var(--squisq-template-gallery-description, #6b7280);
7621
8238
  line-height: 1.4;
8239
+ display: -webkit-box;
8240
+ -webkit-line-clamp: 2;
8241
+ -webkit-box-orient: vertical;
8242
+ overflow: hidden;
7622
8243
  }
7623
8244
  .squisq-template-gallery-new {
7624
8245
  display: flex;
@@ -7627,16 +8248,16 @@
7627
8248
  width: 100%;
7628
8249
  padding: 8px 12px;
7629
8250
  margin-bottom: 6px;
7630
- border: 1px dashed #a5b4fc;
8251
+ border: 1px dashed var(--squisq-template-gallery-new-border, #a5b4fc);
7631
8252
  border-radius: 7px;
7632
- background: #f5f3ff;
8253
+ background: var(--squisq-template-gallery-new-bg, #f5f3ff);
7633
8254
  cursor: pointer;
7634
8255
  text-align: left;
7635
8256
  transition: background 0.1s, border-color 0.1s;
7636
8257
  }
7637
8258
  .squisq-template-gallery-new:hover {
7638
- background: #ede9fe;
7639
- border-color: #818cf8;
8259
+ background: var(--squisq-template-gallery-new-hover-bg, #ede9fe);
8260
+ border-color: var(--squisq-template-gallery-new-hover-border, #818cf8);
7640
8261
  border-style: solid;
7641
8262
  }
7642
8263
  .squisq-template-gallery-new-plus {
@@ -7649,9 +8270,9 @@
7649
8270
  font-size: 20px;
7650
8271
  font-weight: 600;
7651
8272
  line-height: 1;
7652
- color: #6366f1;
7653
- background: #ffffff;
7654
- border: 1px solid #c4b5fd;
8273
+ color: var(--squisq-template-gallery-new-plus-color, #6366f1);
8274
+ background: var(--squisq-template-gallery-new-plus-bg, #ffffff);
8275
+ border: 1px solid var(--squisq-template-gallery-new-plus-border, #c4b5fd);
7655
8276
  border-radius: 6px;
7656
8277
  }
7657
8278
  .squisq-template-gallery-new-body {
@@ -7663,23 +8284,23 @@
7663
8284
  .squisq-template-gallery-new-label {
7664
8285
  font-size: 12px;
7665
8286
  font-weight: 600;
7666
- color: #4338ca;
8287
+ color: var(--squisq-template-gallery-new-label, #4338ca);
7667
8288
  }
7668
8289
  .squisq-template-gallery-new-desc {
7669
8290
  font-size: 11px;
7670
- color: #6b7280;
8291
+ color: var(--squisq-template-gallery-new-desc, #6b7280);
7671
8292
  line-height: 1.4;
7672
8293
  }
7673
8294
  .squisq-template-gallery-section + .squisq-template-gallery-section {
7674
8295
  margin-top: 14px;
7675
8296
  padding-top: 10px;
7676
- border-top: 1px solid #e5e7eb;
8297
+ border-top: 1px solid var(--squisq-template-gallery-section-border, #e5e7eb);
7677
8298
  }
7678
8299
  .squisq-template-gallery-section-title {
7679
8300
  margin: 4px 4px 8px;
7680
8301
  font-size: 10px;
7681
8302
  font-weight: 700;
7682
- color: #6b7280;
8303
+ color: var(--squisq-template-gallery-section-title, #6b7280);
7683
8304
  text-transform: uppercase;
7684
8305
  letter-spacing: 0.06em;
7685
8306
  }
@@ -7717,46 +8338,84 @@
7717
8338
  .squisq-template-badge {
7718
8339
  display: inline-flex;
7719
8340
  align-items: center;
7720
- gap: 4px;
8341
+ gap: 1px;
7721
8342
  margin-left: 8px;
7722
- padding: 1px 6px 1px 8px;
8343
+ padding: 0;
7723
8344
  font-size: 11px;
7724
8345
  font-weight: 600;
7725
8346
  font-family: inherit;
7726
- color: #6d28d9;
7727
- background: #ede9fe;
7728
- border: 1px solid #c4b5fd;
7729
- border-radius: 10px;
7730
- vertical-align: middle;
8347
+ color: #c3a47d;
8348
+ background: transparent;
8349
+ border: 0;
8350
+ border-radius: 0;
8351
+ vertical-align: baseline;
8352
+ transform: translate(3px, 0);
7731
8353
  user-select: none;
7732
- line-height: 1.6;
8354
+ line-height: 1;
7733
8355
  cursor: pointer;
8356
+ transition: color 0.15s ease, opacity 0.15s ease;
8357
+ }
8358
+ .squisq-template-badge-core {
8359
+ display: inline-flex;
8360
+ align-items: center;
8361
+ gap: 4px;
8362
+ padding: 1px 7px;
8363
+ color: #7c4a16;
8364
+ background: #f8f0e3;
8365
+ border: 1px solid #d8c2a2;
8366
+ border-radius: 0;
8367
+ line-height: 1.6;
7734
8368
  transition: background 0.15s ease, border-color 0.15s ease;
7735
8369
  }
7736
- .squisq-template-badge:hover,
8370
+ .squisq-template-badge:hover .squisq-template-badge-core,
8371
+ .squisq-template-badge:focus-visible .squisq-template-badge-core {
8372
+ background: #ead6b8;
8373
+ border-color: #bb9563;
8374
+ }
7737
8375
  .squisq-template-badge:focus-visible {
7738
- background: #ddd6fe;
7739
- border-color: #a78bfa;
7740
8376
  outline: none;
7741
8377
  }
7742
8378
  .squisq-template-badge::before {
7743
- content: attr(data-template-label);
8379
+ content: "{";
8380
+ }
8381
+ .squisq-template-badge::after {
8382
+ content: "}";
7744
8383
  }
8384
+ .squisq-template-badge::before,
7745
8385
  .squisq-template-badge::after {
8386
+ display: inline-flex;
8387
+ position: relative;
8388
+ top: -1px;
8389
+ align-items: center;
8390
+ min-height: 22px;
8391
+ font-size: 22px;
8392
+ font-weight: 500;
8393
+ line-height: 1;
8394
+ opacity: 0.64;
8395
+ }
8396
+ .squisq-template-badge-core::before {
8397
+ content: attr(data-template-label);
8398
+ }
8399
+ .squisq-template-badge-core::before,
8400
+ .squisq-template-badge-core::after {
8401
+ transform: translateY(1px);
8402
+ }
8403
+ .squisq-template-badge-core::after {
7746
8404
  content: "\25be";
7747
8405
  font-size: 9px;
7748
8406
  line-height: 1;
7749
- opacity: 0.7;
8407
+ opacity: 0.62;
7750
8408
  }
7751
8409
  .squisq-template-badge.squisq-template-badge--empty {
7752
8410
  color: #94a3b8;
7753
8411
  background: transparent;
7754
- border-color: #d1d5db;
7755
- border-style: dashed;
7756
8412
  opacity: 0.5;
7757
8413
  }
7758
- .squisq-template-badge.squisq-template-badge--empty::before {
7759
- content: "Block";
8414
+ .squisq-template-badge.squisq-template-badge--empty .squisq-template-badge-core {
8415
+ color: #94a3b8;
8416
+ background: transparent;
8417
+ border-color: #d1d5db;
8418
+ border-style: dashed;
7760
8419
  font-weight: 500;
7761
8420
  }
7762
8421
  :is(h1, h2, h3, h4, h5, h6):hover > .squisq-template-badge--empty {
@@ -7765,15 +8424,27 @@
7765
8424
  .squisq-template-badge.squisq-template-badge--empty:hover,
7766
8425
  .squisq-template-badge.squisq-template-badge--empty:focus-visible {
7767
8426
  opacity: 1;
7768
- color: #6d28d9;
7769
- background: #ede9fe;
7770
- border-color: #c4b5fd;
8427
+ color: #b89266;
8428
+ }
8429
+ .squisq-template-badge.squisq-template-badge--empty:hover .squisq-template-badge-core,
8430
+ .squisq-template-badge.squisq-template-badge--empty:focus-visible .squisq-template-badge-core {
8431
+ color: #7c4a16;
8432
+ background: #f1e2ca;
8433
+ border-color: #d8c2a2;
7771
8434
  border-style: solid;
7772
8435
  }
7773
8436
  .squisq-wysiwyg-container[data-block-tags=hidden] .squisq-template-badge,
7774
8437
  .squisq-wysiwyg-container[data-block-tags=hidden] .squisq-props-badge {
7775
8438
  display: none;
7776
8439
  }
8440
+ .squisq-wysiwyg-container[data-block-tags=active] .squisq-template-badge,
8441
+ .squisq-wysiwyg-container[data-block-tags=active] .squisq-props-badge {
8442
+ display: none;
8443
+ }
8444
+ .squisq-wysiwyg-container[data-block-tags=active] .squisq-wysiwyg-editor.ProseMirror-focused :is(.squisq-block-tags--selected, .squisq-block-tags--hovered) > .squisq-template-badge,
8445
+ .squisq-wysiwyg-container[data-block-tags=active] .squisq-wysiwyg-editor.ProseMirror-focused :is(.squisq-block-tags--selected, .squisq-block-tags--hovered) > .squisq-props-badge {
8446
+ display: inline-flex;
8447
+ }
7777
8448
  .squisq-props-badge {
7778
8449
  display: inline-flex;
7779
8450
  align-items: center;
@@ -7792,6 +8463,7 @@
7792
8463
  border: 1px solid #d1d5db;
7793
8464
  border-radius: 10px;
7794
8465
  vertical-align: middle;
8466
+ transform: translate(3px, -2px);
7795
8467
  user-select: none;
7796
8468
  cursor: pointer;
7797
8469
  opacity: 0.5;
@@ -7802,16 +8474,16 @@
7802
8474
  }
7803
8475
  .squisq-props-badge::before {
7804
8476
  content: "\f1de";
7805
- font-family: "Font Awesome 6 Free";
8477
+ font-family: var(--fa-family-classic, "Font Awesome 7 Free");
7806
8478
  font-weight: 900;
7807
8479
  font-size: 10px;
7808
8480
  line-height: 1;
7809
8481
  }
7810
8482
  .squisq-props-badge[data-props-summary] {
7811
8483
  opacity: 1;
7812
- color: #6d28d9;
7813
- background: #f5f3ff;
7814
- border-color: #c4b5fd;
8484
+ color: var(--squisq-block-props-accent, inherit);
8485
+ background: color-mix(in oklch, currentColor 12%, transparent);
8486
+ border-color: color-mix(in oklch, currentColor 35%, transparent);
7815
8487
  }
7816
8488
  .squisq-props-badge[data-props-summary]::after {
7817
8489
  content: attr(data-props-summary);
@@ -7825,11 +8497,31 @@
7825
8497
  .squisq-props-badge:hover,
7826
8498
  .squisq-props-badge:focus-visible {
7827
8499
  opacity: 1;
7828
- color: #6d28d9;
7829
- background: #ede9fe;
7830
- border-color: #c4b5fd;
8500
+ color: var(--squisq-block-props-accent, inherit);
8501
+ background: color-mix(in oklch, currentColor 16%, transparent);
8502
+ border-color: color-mix(in oklch, currentColor 42%, transparent);
7831
8503
  outline: none;
7832
8504
  }
8505
+ :is(.squisq-block-props-popover, .squisq-transition-picker, .squisq-transition-flyout) {
8506
+ --squisq-block-props-surface: #ffffff;
8507
+ --squisq-block-props-surface-hover: #f3f4f6;
8508
+ --squisq-block-props-input: #ffffff;
8509
+ --squisq-block-props-text: #111827;
8510
+ --squisq-block-props-muted: #6b7280;
8511
+ --squisq-block-props-quiet: #9ca3af;
8512
+ --squisq-block-props-border: #d1d5db;
8513
+ --squisq-block-props-divider: #e5e7eb;
8514
+ }
8515
+ :is(.squisq-block-props-popover, .squisq-transition-picker, .squisq-transition-flyout)[data-theme=dark] {
8516
+ --squisq-block-props-surface: #1f2937;
8517
+ --squisq-block-props-surface-hover: #374151;
8518
+ --squisq-block-props-input: #111827;
8519
+ --squisq-block-props-text: #f9fafb;
8520
+ --squisq-block-props-muted: #d1d5db;
8521
+ --squisq-block-props-quiet: #9ca3af;
8522
+ --squisq-block-props-border: #4b5563;
8523
+ --squisq-block-props-divider: #374151;
8524
+ }
7833
8525
  .squisq-block-props-popover {
7834
8526
  width: 280px;
7835
8527
  max-width: calc(100vw - 24px);
@@ -7837,8 +8529,9 @@
7837
8529
  display: flex;
7838
8530
  flex-direction: column;
7839
8531
  gap: 10px;
7840
- background: #fff;
7841
- border: 1px solid #e5e7eb;
8532
+ color: var(--squisq-block-props-text);
8533
+ background: var(--squisq-block-props-surface);
8534
+ border: 1px solid var(--squisq-block-props-divider);
7842
8535
  border-radius: 10px;
7843
8536
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.08);
7844
8537
  }
@@ -7851,7 +8544,7 @@
7851
8544
  .squisq-block-props-label {
7852
8545
  font-size: 11px;
7853
8546
  font-weight: 600;
7854
- color: #6b7280;
8547
+ color: var(--squisq-block-props-muted);
7855
8548
  flex-shrink: 0;
7856
8549
  }
7857
8550
  .squisq-block-props-numfield {
@@ -7863,43 +8556,37 @@
7863
8556
  width: 72px;
7864
8557
  padding: 4px 6px;
7865
8558
  font-size: 12px;
7866
- color: #111827;
7867
- border: 1px solid #d1d5db;
8559
+ color: var(--squisq-block-props-text);
8560
+ background: var(--squisq-block-props-input);
8561
+ border: 1px solid var(--squisq-block-props-border);
7868
8562
  border-radius: 5px;
7869
8563
  outline: none;
7870
8564
  }
7871
8565
  .squisq-block-props-input:focus {
7872
- border-color: #6366f1;
8566
+ border-color: var(--squisq-block-props-accent, #6366f1);
7873
8567
  }
7874
8568
  .squisq-block-props-unit {
7875
8569
  font-size: 11px;
7876
- color: #9ca3af;
8570
+ color: var(--squisq-block-props-quiet);
7877
8571
  }
7878
- .squisq-editor-shell[data-theme=dark] .squisq-props-badge {
8572
+ .squisq-editor-shell[data-theme=dark] .squisq-props-badge:not([data-props-summary]) {
7879
8573
  border-color: #4b5563;
7880
8574
  color: #9ca3af;
7881
8575
  }
7882
8576
  .squisq-editor-shell[data-theme=dark] .squisq-props-badge[data-props-summary] {
7883
- color: #ddd6fe;
7884
- background: #3730a3;
7885
- border-color: #6d5fd6;
8577
+ color: var(--squisq-block-props-accent, inherit);
8578
+ background: color-mix(in oklch, currentColor 24%, transparent);
8579
+ border-color: color-mix(in oklch, currentColor 52%, transparent);
7886
8580
  }
7887
8581
  .squisq-editor-shell[data-theme=dark] .squisq-props-badge:hover,
7888
8582
  .squisq-editor-shell[data-theme=dark] .squisq-props-badge:focus-visible {
7889
- color: #ede9fe;
7890
- background: #4c1d95;
7891
- border-color: #7c3aed;
8583
+ color: var(--squisq-block-props-accent, inherit);
8584
+ background: color-mix(in oklch, currentColor 28%, transparent);
8585
+ border-color: color-mix(in oklch, currentColor 58%, transparent);
7892
8586
  }
7893
- .squisq-editor-shell[data-theme=dark] .squisq-block-props-popover {
7894
- background: #1f2937;
7895
- border-color: #374151;
8587
+ .squisq-block-props-popover[data-theme=dark] {
7896
8588
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.2);
7897
8589
  }
7898
- .squisq-editor-shell[data-theme=dark] .squisq-block-props-input {
7899
- background: #111827;
7900
- color: #f9fafb;
7901
- border-color: #4b5563;
7902
- }
7903
8590
  .squisq-status-bar {
7904
8591
  display: flex;
7905
8592
  align-items: center;
@@ -7963,14 +8650,15 @@
7963
8650
  }
7964
8651
  .squisq-wysiwyg-editor h1 {
7965
8652
  font-size: 2em;
7966
- margin: 1em 0 0.4em;
8653
+ margin: 0.45em 0 0.4em;
7967
8654
  }
7968
8655
  .squisq-wysiwyg-editor h2 {
7969
8656
  font-size: 1.5em;
7970
- margin: 1.15em 0 0.35em;
8657
+ margin: 0.8em 0 0.25em;
7971
8658
  }
7972
8659
  .squisq-wysiwyg-editor h3 {
7973
8660
  font-size: 1.17em;
8661
+ min-height: 26px;
7974
8662
  margin: 1.3em 0 0.3em;
7975
8663
  }
7976
8664
  .squisq-wysiwyg-editor h4 {
@@ -7990,7 +8678,7 @@
7990
8678
  }
7991
8679
  .squisq-wysiwyg-editor p {
7992
8680
  margin: 0.5em 0;
7993
- line-height: 1.6;
8681
+ line-height: 1.7;
7994
8682
  }
7995
8683
  .squisq-wysiwyg-editor blockquote {
7996
8684
  border-left: 3px solid var(--squisq-theme-text-muted, #d1d5db);
@@ -8006,6 +8694,13 @@
8006
8694
  overflow-x: auto;
8007
8695
  font-size: 13px;
8008
8696
  line-height: 1.5;
8697
+ font-family:
8698
+ ui-monospace,
8699
+ SFMono-Regular,
8700
+ Menlo,
8701
+ Consolas,
8702
+ "Liberation Mono",
8703
+ monospace;
8009
8704
  }
8010
8705
  .squisq-wysiwyg-editor code {
8011
8706
  background: var(--squisq-theme-bg-muted, #f1f5f9);
@@ -8013,6 +8708,13 @@
8013
8708
  padding: 1px 4px;
8014
8709
  border-radius: 3px;
8015
8710
  font-size: 0.9em;
8711
+ font-family:
8712
+ ui-monospace,
8713
+ SFMono-Regular,
8714
+ Menlo,
8715
+ Consolas,
8716
+ "Liberation Mono",
8717
+ monospace;
8016
8718
  }
8017
8719
  .squisq-wysiwyg-editor pre code {
8018
8720
  background: none;
@@ -8134,19 +8836,6 @@
8134
8836
  background: #fef2f2;
8135
8837
  color: #b91c1c;
8136
8838
  }
8137
- .squisq-preview-left-controls {
8138
- display: flex;
8139
- align-items: center;
8140
- gap: 8px;
8141
- margin-left: 8px;
8142
- flex: 0 0 auto;
8143
- }
8144
- .squisq-preview-seg-divider {
8145
- width: 1px;
8146
- height: 20px;
8147
- background: var(--squisq-border, #d1d5db);
8148
- flex: 0 0 auto;
8149
- }
8150
8839
  .squisq-preview-seg {
8151
8840
  display: inline-flex;
8152
8841
  align-items: center;
@@ -8199,11 +8888,14 @@
8199
8888
  display: flex;
8200
8889
  align-items: center;
8201
8890
  gap: 6px;
8202
- flex: 1 1 auto;
8891
+ flex: 1 1 0;
8203
8892
  min-width: 0;
8204
8893
  position: relative;
8205
8894
  padding-left: 9px;
8206
8895
  }
8896
+ .squisq-preview-controls[data-has-overflow=true] {
8897
+ min-width: 41px;
8898
+ }
8207
8899
  .squisq-preview-controls-probe {
8208
8900
  position: absolute;
8209
8901
  top: 0;
@@ -8235,20 +8927,19 @@
8235
8927
  flex: 0 0 auto;
8236
8928
  }
8237
8929
  .squisq-preview-controls-popover {
8238
- position: absolute;
8239
- top: 100%;
8240
- right: 0;
8930
+ position: fixed;
8241
8931
  z-index: 80;
8242
8932
  background: var(--squisq-bg, #fff);
8243
8933
  border: 1px solid var(--squisq-border, #d1d5db);
8244
8934
  border-radius: 6px;
8245
8935
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
8246
8936
  padding: 8px 12px;
8247
- margin-top: 4px;
8937
+ box-sizing: border-box;
8248
8938
  display: flex;
8249
8939
  flex-direction: column;
8250
8940
  gap: 8px;
8251
8941
  min-width: 180px;
8942
+ max-width: calc(100vw - 16px);
8252
8943
  }
8253
8944
  .squisq-preview-control--compact {
8254
8945
  display: flex;
@@ -8260,6 +8951,64 @@
8260
8951
  flex: 1;
8261
8952
  min-width: 0;
8262
8953
  }
8954
+ .squisq-preview-checkbox {
8955
+ display: inline-flex;
8956
+ align-items: center;
8957
+ gap: 6px;
8958
+ color: var(--squisq-text, #1f2937);
8959
+ font-size: 12px;
8960
+ font-weight: 500;
8961
+ line-height: 1;
8962
+ white-space: nowrap;
8963
+ cursor: pointer;
8964
+ }
8965
+ .squisq-preview-checkbox input {
8966
+ width: 13px;
8967
+ height: 13px;
8968
+ margin: 0;
8969
+ accent-color: #2563eb;
8970
+ cursor: pointer;
8971
+ }
8972
+ .squisq-presentation-control {
8973
+ display: inline-flex;
8974
+ align-items: center;
8975
+ flex: 0 0 auto;
8976
+ margin: 0 5px 0 3px;
8977
+ border: 1px solid var(--squisq-border, #d1d5db);
8978
+ border-radius: 5px;
8979
+ background: var(--squisq-input-bg, #fff);
8980
+ overflow: hidden;
8981
+ }
8982
+ .squisq-presentation-control .squisq-presentation-start {
8983
+ width: 30px;
8984
+ border-radius: 0;
8985
+ }
8986
+ .squisq-presentation-menu-trigger {
8987
+ align-self: stretch;
8988
+ display: inline-flex;
8989
+ align-items: center;
8990
+ justify-content: center;
8991
+ width: 18px;
8992
+ padding: 0;
8993
+ border: 0;
8994
+ border-left: 1px solid var(--squisq-border, #d1d5db);
8995
+ background: transparent;
8996
+ color: var(--squisq-text-muted, #6b7280);
8997
+ cursor: pointer;
8998
+ }
8999
+ .squisq-presentation-menu-trigger:hover,
9000
+ .squisq-presentation-menu-trigger--open {
9001
+ background: rgba(107, 114, 128, 0.2);
9002
+ color: var(--squisq-text, #111827);
9003
+ }
9004
+ .squisq-presentation-menu-item:disabled {
9005
+ cursor: not-allowed;
9006
+ opacity: 0.55;
9007
+ }
9008
+ .squisq-presentation-menu-item:disabled:hover {
9009
+ background: transparent;
9010
+ color: inherit;
9011
+ }
8263
9012
  .squisq-wysiwyg-editor a {
8264
9013
  color: color-mix(in srgb, var(--squisq-theme-primary, #2563eb) 65%, var(--squisq-theme-text, #1f2937));
8265
9014
  text-decoration: underline;
@@ -8298,6 +9047,116 @@
8298
9047
  overflow: auto;
8299
9048
  color: #dc2626;
8300
9049
  }
9050
+ .squisq-editor-shell[data-presentation-mode=control],
9051
+ .squisq-editor-shell[data-presentation-mode=fullscreen] {
9052
+ position: relative;
9053
+ background: #000;
9054
+ }
9055
+ .squisq-editor-shell[data-presentation-mode=control] > .squisq-editor-header,
9056
+ .squisq-editor-shell[data-presentation-mode=fullscreen] > .squisq-editor-header,
9057
+ .squisq-editor-shell[data-presentation-mode=control] > .squisq-status-bar,
9058
+ .squisq-editor-shell[data-presentation-mode=fullscreen] > .squisq-status-bar,
9059
+ .squisq-editor-shell[data-presentation-mode=control] > .squisq-timeline,
9060
+ .squisq-editor-shell[data-presentation-mode=fullscreen] > .squisq-timeline {
9061
+ display: none;
9062
+ }
9063
+ .squisq-editor-shell[data-presentation-mode=control] .squisq-media-bin,
9064
+ .squisq-editor-shell[data-presentation-mode=fullscreen] .squisq-media-bin,
9065
+ .squisq-editor-shell[data-presentation-mode=control] .squisq-custom-theme-pane,
9066
+ .squisq-editor-shell[data-presentation-mode=fullscreen] .squisq-custom-theme-pane {
9067
+ display: none;
9068
+ }
9069
+ .squisq-editor-shell[data-presentation-mode=control] .squisq-preview-player,
9070
+ .squisq-editor-shell[data-presentation-mode=fullscreen] .squisq-preview-player {
9071
+ padding: 0;
9072
+ background: #000;
9073
+ }
9074
+ .squisq-editor-shell[data-presentation-mode=fullscreen]:fullscreen {
9075
+ width: 100vw !important;
9076
+ height: 100vh !important;
9077
+ min-width: 0 !important;
9078
+ min-height: 0 !important;
9079
+ max-width: none !important;
9080
+ max-height: none !important;
9081
+ }
9082
+ .squisq-presentation-exit {
9083
+ position: absolute;
9084
+ z-index: 1001;
9085
+ top: 12px;
9086
+ right: 12px;
9087
+ display: inline-flex;
9088
+ align-items: center;
9089
+ gap: 7px;
9090
+ min-height: 34px;
9091
+ padding: 7px 11px;
9092
+ border: 1px solid rgba(255, 255, 255, 0.35);
9093
+ border-radius: 7px;
9094
+ background: rgba(15, 23, 42, 0.78);
9095
+ color: #fff;
9096
+ font: 600 12px/1 var(--squisq-ux-font, sans-serif);
9097
+ cursor: pointer;
9098
+ opacity: 0.72;
9099
+ backdrop-filter: blur(8px);
9100
+ transition: opacity 0.12s ease, background 0.12s ease;
9101
+ }
9102
+ .squisq-presentation-exit:hover,
9103
+ .squisq-presentation-exit:focus-visible {
9104
+ outline: none;
9105
+ background: rgba(15, 23, 42, 0.94);
9106
+ opacity: 1;
9107
+ }
9108
+ .squisq-presentation-window {
9109
+ width: 100%;
9110
+ height: 100%;
9111
+ display: flex;
9112
+ overflow: hidden;
9113
+ background: #000;
9114
+ }
9115
+ .squisq-presentation-window-preview,
9116
+ .squisq-presentation-window-surface,
9117
+ .squisq-presentation-teleprompter {
9118
+ width: 100%;
9119
+ height: 100%;
9120
+ min-width: 0;
9121
+ min-height: 0;
9122
+ }
9123
+ .squisq-presentation-window-preview {
9124
+ display: flex;
9125
+ }
9126
+ .squisq-presentation-window-surface {
9127
+ padding: 0;
9128
+ background: #000;
9129
+ pointer-events: none;
9130
+ }
9131
+ .squisq-presentation-teleprompter {
9132
+ display: flex;
9133
+ overflow: hidden;
9134
+ pointer-events: none;
9135
+ }
9136
+ .squisq-presentation-connecting {
9137
+ color: rgba(255, 255, 255, 0.72);
9138
+ font: 500 14px/1.4 var(--squisq-ux-font, sans-serif);
9139
+ }
9140
+ .squisq-presentation-error {
9141
+ position: fixed;
9142
+ z-index: 10000;
9143
+ top: 16px;
9144
+ left: 50%;
9145
+ max-width: min(420px, calc(100vw - 32px));
9146
+ padding: 10px 14px;
9147
+ border: 1px solid #fecaca;
9148
+ border-radius: 8px;
9149
+ background: #fff1f2;
9150
+ color: #991b1b;
9151
+ box-shadow: 0 10px 30px rgba(15, 23, 42, 0.2);
9152
+ font: 500 13px/1.4 var(--squisq-ux-font, sans-serif);
9153
+ transform: translateX(-50%);
9154
+ }
9155
+ .squisq-presentation-error[data-theme=dark] {
9156
+ border-color: #7f1d1d;
9157
+ background: #3f151b;
9158
+ color: #fecdd3;
9159
+ }
8301
9160
  .squisq-editor-shell {
8302
9161
  --squisq-bg: #f5f5f5;
8303
9162
  --squisq-border: #e0e0e0;
@@ -8348,6 +9207,17 @@
8348
9207
  color: #93c5fd;
8349
9208
  border-bottom-color: #60a5fa;
8350
9209
  }
9210
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-use-tab--active {
9211
+ border-bottom-color: #60a5fa;
9212
+ }
9213
+ .squisq-editor-shell[data-theme=dark] .squisq-use-mode-trigger {
9214
+ color: #d1d5db;
9215
+ }
9216
+ .squisq-editor-shell[data-theme=dark] .squisq-use-mode-trigger:hover,
9217
+ .squisq-editor-shell[data-theme=dark] .squisq-use-mode-trigger--open,
9218
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-use-tab--active .squisq-use-mode-trigger {
9219
+ color: #93c5fd;
9220
+ }
8351
9221
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-button {
8352
9222
  color: #d1d5db;
8353
9223
  }
@@ -8366,6 +9236,11 @@
8366
9236
  background: #1e40af;
8367
9237
  color: #93c5fd;
8368
9238
  }
9239
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-files-badge {
9240
+ border-color: #111827;
9241
+ background: #60a5fa;
9242
+ color: #111827;
9243
+ }
8369
9244
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-separator {
8370
9245
  background: #4b5563;
8371
9246
  }
@@ -8397,6 +9272,9 @@
8397
9272
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-item {
8398
9273
  color: #d1d5db;
8399
9274
  }
9275
+ .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-heading {
9276
+ color: #6b7280;
9277
+ }
8400
9278
  .squisq-editor-shell[data-theme=dark] .squisq-toolbar-overflow-item:hover {
8401
9279
  background: #374151;
8402
9280
  }
@@ -8485,6 +9363,9 @@
8485
9363
  background: #111827;
8486
9364
  border-color: #374151;
8487
9365
  }
9366
+ .squisq-editor-shell[data-theme=dark] .squisq-template-gallery-content-preview {
9367
+ background: #0f172a;
9368
+ }
8488
9369
  .squisq-editor-shell[data-theme=dark] .squisq-template-gallery-card-name {
8489
9370
  color: #f3f4f6;
8490
9371
  }
@@ -8492,21 +9373,40 @@
8492
9373
  color: #9ca3af;
8493
9374
  }
8494
9375
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge {
8495
- color: #a78bfa;
8496
- background: #2e1065;
8497
- border-color: #6d28d9;
9376
+ color: #f0b75a;
9377
+ background: transparent;
9378
+ border-color: transparent;
9379
+ }
9380
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge::before,
9381
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge::after {
9382
+ color: #d79a45;
9383
+ opacity: 0.82;
9384
+ }
9385
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge-core {
9386
+ color: #ffe3ad;
9387
+ background: #3a2818;
9388
+ border-color: #d79a45;
8498
9389
  }
8499
9390
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty {
8500
- color: #64748b;
9391
+ color: #e0a84d;
8501
9392
  background: transparent;
8502
- border-color: #374151;
9393
+ opacity: 0.92;
9394
+ }
9395
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty .squisq-template-badge-core {
9396
+ color: #e7c08a;
9397
+ background: rgba(58, 40, 24, 0.34);
9398
+ border-color: #c6842e;
8503
9399
  border-style: dashed;
8504
9400
  }
8505
9401
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:hover,
8506
9402
  .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:focus-visible {
8507
- color: #c4b5fd;
8508
- background: #2e1065;
8509
- border-color: #6d28d9;
9403
+ color: #f0b75a;
9404
+ }
9405
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:hover .squisq-template-badge-core,
9406
+ .squisq-editor-shell[data-theme=dark] .squisq-template-badge.squisq-template-badge--empty:focus-visible .squisq-template-badge-core {
9407
+ color: #ffe3ad;
9408
+ background: #3a2818;
9409
+ border-color: #d79a45;
8510
9410
  border-style: solid;
8511
9411
  }
8512
9412
  .squisq-editor-shell[data-theme=dark] .squisq-status-bar {
@@ -8614,6 +9514,7 @@
8614
9514
  }
8615
9515
  }
8616
9516
  .squisq-media-bin {
9517
+ position: relative;
8617
9518
  width: 220px;
8618
9519
  border-left: 1px solid #e5e7eb;
8619
9520
  background: #f9fafb;
@@ -8622,7 +9523,43 @@
8622
9523
  flex-shrink: 0;
8623
9524
  overflow: hidden;
8624
9525
  }
8625
- .squisq-media-bin-header {
9526
+ .squisq-media-bin-drop-target {
9527
+ position: absolute;
9528
+ inset: 6px;
9529
+ z-index: 5;
9530
+ display: flex;
9531
+ flex-direction: column;
9532
+ align-items: center;
9533
+ justify-content: center;
9534
+ gap: 4px;
9535
+ border: 2px dashed #2563eb;
9536
+ border-radius: 6px;
9537
+ background: rgba(239, 246, 255, 0.96);
9538
+ color: #1d4ed8;
9539
+ font-size: 12px;
9540
+ text-align: center;
9541
+ pointer-events: none;
9542
+ }
9543
+ .squisq-media-bin-drop-target-icon {
9544
+ display: flex;
9545
+ align-items: center;
9546
+ justify-content: center;
9547
+ width: 28px;
9548
+ height: 28px;
9549
+ border-radius: 999px;
9550
+ background: #2563eb;
9551
+ color: #fff;
9552
+ font-size: 22px;
9553
+ font-weight: 400;
9554
+ line-height: 1;
9555
+ }
9556
+ .squisq-media-bin-drop-target strong {
9557
+ font-size: 13px;
9558
+ }
9559
+ .squisq-media-bin-drop-target span:last-child {
9560
+ color: #64748b;
9561
+ }
9562
+ .squisq-media-bin-header {
8626
9563
  display: flex;
8627
9564
  align-items: center;
8628
9565
  justify-content: space-between;
@@ -8675,6 +9612,14 @@
8675
9612
  color: #374151;
8676
9613
  border-bottom: 1px solid #f3f4f6;
8677
9614
  }
9615
+ .squisq-media-bin-item:hover,
9616
+ .squisq-media-bin-item:focus-visible {
9617
+ background: #f3f4f6;
9618
+ }
9619
+ .squisq-media-bin-item:focus-visible {
9620
+ outline: 2px solid #93c5fd;
9621
+ outline-offset: -2px;
9622
+ }
8678
9623
  .squisq-media-bin-thumb {
8679
9624
  width: 32px;
8680
9625
  height: 32px;
@@ -8703,15 +9648,86 @@
8703
9648
  text-overflow: ellipsis;
8704
9649
  white-space: nowrap;
8705
9650
  }
9651
+ .squisq-media-bin-detail-row {
9652
+ display: flex;
9653
+ align-items: center;
9654
+ gap: 6px;
9655
+ min-height: 14px;
9656
+ }
8706
9657
  .squisq-media-bin-size {
8707
9658
  font-size: 10px;
8708
9659
  color: #9ca3af;
8709
9660
  }
9661
+ .squisq-media-bin-unused-badge {
9662
+ display: inline-flex;
9663
+ align-items: center;
9664
+ height: 14px;
9665
+ padding: 0 5px;
9666
+ border-radius: 999px;
9667
+ background: #fef3c7;
9668
+ color: #92400e;
9669
+ font-size: 9px;
9670
+ font-weight: 700;
9671
+ line-height: 1;
9672
+ text-transform: uppercase;
9673
+ }
9674
+ .squisq-media-bin-context-menu {
9675
+ position: fixed;
9676
+ z-index: 1000;
9677
+ min-width: 152px;
9678
+ padding: 4px;
9679
+ border: 1px solid #d1d5db;
9680
+ border-radius: 6px;
9681
+ background: #fff;
9682
+ box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18), 0 2px 6px rgba(15, 23, 42, 0.12);
9683
+ }
9684
+ .squisq-media-bin-context-menu-item {
9685
+ width: 100%;
9686
+ display: flex;
9687
+ align-items: center;
9688
+ gap: 8px;
9689
+ padding: 7px 9px;
9690
+ border: 0;
9691
+ border-radius: 4px;
9692
+ background: transparent;
9693
+ color: #374151;
9694
+ cursor: pointer;
9695
+ font: inherit;
9696
+ font-size: 12px;
9697
+ text-align: left;
9698
+ }
9699
+ .squisq-media-bin-context-menu-item:hover,
9700
+ .squisq-media-bin-context-menu-item:focus-visible {
9701
+ background: #f3f4f6;
9702
+ outline: none;
9703
+ }
9704
+ .squisq-media-bin-context-menu-item--danger {
9705
+ color: #b91c1c;
9706
+ }
9707
+ .squisq-media-bin-context-menu-item--danger:hover,
9708
+ .squisq-media-bin-context-menu-item--danger:focus-visible {
9709
+ background: #fee2e2;
9710
+ color: #991b1b;
9711
+ }
9712
+ .squisq-media-bin-context-menu-item:disabled {
9713
+ cursor: default;
9714
+ opacity: 0.55;
9715
+ }
8710
9716
  .squisq-media-bin--dark,
8711
9717
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin {
8712
9718
  background: #1e293b;
8713
9719
  border-left-color: #374151;
8714
9720
  }
9721
+ .squisq-media-bin--dark .squisq-media-bin-drop-target,
9722
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-drop-target {
9723
+ border-color: #60a5fa;
9724
+ background: rgba(15, 23, 42, 0.96);
9725
+ color: #bfdbfe;
9726
+ }
9727
+ .squisq-media-bin--dark .squisq-media-bin-drop-target span:last-child,
9728
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-drop-target span:last-child {
9729
+ color: #94a3b8;
9730
+ }
8715
9731
  .squisq-media-bin--dark .squisq-media-bin-header,
8716
9732
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-header {
8717
9733
  border-bottom-color: #374151;
@@ -8735,6 +9751,12 @@
8735
9751
  color: #d1d5db;
8736
9752
  border-bottom-color: #2d3748;
8737
9753
  }
9754
+ .squisq-media-bin--dark .squisq-media-bin-item:hover,
9755
+ .squisq-media-bin--dark .squisq-media-bin-item:focus-visible,
9756
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-item:hover,
9757
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-item:focus-visible {
9758
+ background: #273449;
9759
+ }
8738
9760
  .squisq-media-bin--dark .squisq-media-bin-icon,
8739
9761
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-icon {
8740
9762
  background: #374151;
@@ -8747,10 +9769,42 @@
8747
9769
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-size {
8748
9770
  color: #6b7280;
8749
9771
  }
9772
+ .squisq-media-bin--dark .squisq-media-bin-unused-badge,
9773
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-unused-badge {
9774
+ background: #78350f;
9775
+ color: #fde68a;
9776
+ }
8750
9777
  .squisq-media-bin--dark .squisq-media-bin-empty,
8751
9778
  .squisq-editor-shell[data-theme=dark] .squisq-media-bin .squisq-media-bin-empty {
8752
9779
  color: #6b7280;
8753
9780
  }
9781
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu,
9782
+ .squisq-media-bin--dark .squisq-media-bin-context-menu {
9783
+ border-color: #4b5563;
9784
+ background: #111827;
9785
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.42), 0 2px 6px rgba(0, 0, 0, 0.3);
9786
+ }
9787
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item,
9788
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item {
9789
+ color: #d1d5db;
9790
+ }
9791
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item:hover,
9792
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item:focus-visible,
9793
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item:hover,
9794
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item:focus-visible {
9795
+ background: #1f2937;
9796
+ }
9797
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger,
9798
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger {
9799
+ color: #fca5a5;
9800
+ }
9801
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger:hover,
9802
+ .squisq-editor-shell[data-theme=dark] .squisq-media-bin-context-menu-item--danger:focus-visible,
9803
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger:hover,
9804
+ .squisq-media-bin--dark .squisq-media-bin-context-menu-item--danger:focus-visible {
9805
+ background: #450a0a;
9806
+ color: #fecaca;
9807
+ }
8754
9808
  .squisq-drop-overlay {
8755
9809
  position: absolute;
8756
9810
  inset: 0;
@@ -9444,6 +10498,14 @@
9444
10498
  flex-shrink: 0;
9445
10499
  margin-left: 2px;
9446
10500
  }
10501
+ .squisq-theme-customizer-trigger--label {
10502
+ width: auto;
10503
+ min-width: 0;
10504
+ padding: 4px 12px;
10505
+ }
10506
+ .squisq-theme-customizer-trigger-label {
10507
+ line-height: 1;
10508
+ }
9447
10509
  .squisq-theme-customizer-popover {
9448
10510
  position: absolute;
9449
10511
  top: 100%;
@@ -9585,6 +10647,57 @@
9585
10647
  .squisq-theme-customizer-button--primary:hover {
9586
10648
  background: #1d4ed8;
9587
10649
  }
10650
+ .squisq-theme-import {
10651
+ display: flex;
10652
+ flex-direction: column;
10653
+ gap: 6px;
10654
+ }
10655
+ .squisq-theme-import-drop {
10656
+ display: flex;
10657
+ align-items: center;
10658
+ gap: 8px;
10659
+ padding: 8px;
10660
+ border: 1px dashed var(--squisq-border, #d1d5db);
10661
+ border-radius: 6px;
10662
+ background: var(--squisq-input-bg, #f9fafb);
10663
+ }
10664
+ .squisq-theme-import-drop--active {
10665
+ border-color: #2563eb;
10666
+ background: rgba(37, 99, 235, 0.08);
10667
+ }
10668
+ .squisq-theme-import-drop--busy {
10669
+ opacity: 0.7;
10670
+ pointer-events: none;
10671
+ }
10672
+ .squisq-theme-import-hint {
10673
+ font-size: 11px;
10674
+ color: var(--squisq-text-muted, #6b7280);
10675
+ }
10676
+ .squisq-theme-import-status {
10677
+ font-size: 11px;
10678
+ color: var(--squisq-text-muted, #6b7280);
10679
+ }
10680
+ .squisq-theme-import-error {
10681
+ font-size: 11px;
10682
+ color: #dc2626;
10683
+ }
10684
+ .squisq-theme-import-warnings {
10685
+ margin: 0;
10686
+ padding-left: 16px;
10687
+ font-size: 11px;
10688
+ color: var(--squisq-text-muted, #6b7280);
10689
+ }
10690
+ .squisq-editor-shell[data-theme=dark] .squisq-theme-import-drop {
10691
+ border-color: #374151;
10692
+ background: #111827;
10693
+ }
10694
+ .squisq-editor-shell[data-theme=dark] .squisq-theme-import-drop--active {
10695
+ border-color: #3b82f6;
10696
+ background: rgba(59, 130, 246, 0.12);
10697
+ }
10698
+ .squisq-editor-shell[data-theme=dark] .squisq-theme-import-error {
10699
+ color: #f87171;
10700
+ }
9588
10701
  .squisq-editor-shell[data-theme=dark] .squisq-theme-customizer-popover {
9589
10702
  background: #1f2937;
9590
10703
  border-color: #374151;
@@ -10196,6 +11309,7 @@
10196
11309
  padding: 0;
10197
11310
  }
10198
11311
  .squisq-outline-item {
11312
+ position: relative;
10199
11313
  margin: 0;
10200
11314
  }
10201
11315
  .squisq-outline-row {
@@ -10217,6 +11331,46 @@
10217
11331
  .squisq-outline-row:hover {
10218
11332
  background: #f3f4f6;
10219
11333
  }
11334
+ .squisq-outline-row[draggable=true] {
11335
+ cursor: grab;
11336
+ }
11337
+ .squisq-outline-row[draggable=true]:active {
11338
+ cursor: grabbing;
11339
+ }
11340
+ .squisq-outline-drag-handle {
11341
+ display: inline-flex;
11342
+ align-items: center;
11343
+ justify-content: center;
11344
+ flex: 0 0 8px;
11345
+ color: currentColor;
11346
+ opacity: 0.35;
11347
+ transition: opacity 0.1s ease;
11348
+ }
11349
+ .squisq-outline-row:hover .squisq-outline-drag-handle,
11350
+ .squisq-outline-row:focus-visible .squisq-outline-drag-handle {
11351
+ opacity: 0.75;
11352
+ }
11353
+ .squisq-outline-item--dragging {
11354
+ opacity: 0.42;
11355
+ }
11356
+ .squisq-outline-item--drop-before > .squisq-outline-row-wrap::before,
11357
+ .squisq-outline-item--drop-after::after {
11358
+ content: "";
11359
+ position: absolute;
11360
+ z-index: 2;
11361
+ left: 4px;
11362
+ right: 4px;
11363
+ height: 2px;
11364
+ border-radius: 999px;
11365
+ background: var(--squisq-outline-accent, #4338ca);
11366
+ pointer-events: none;
11367
+ }
11368
+ .squisq-outline-item--drop-before > .squisq-outline-row-wrap::before {
11369
+ top: -1px;
11370
+ }
11371
+ .squisq-outline-item--drop-after::after {
11372
+ bottom: -1px;
11373
+ }
10220
11374
  .squisq-outline-row-text {
10221
11375
  overflow: hidden;
10222
11376
  text-overflow: ellipsis;
@@ -10357,9 +11511,6 @@
10357
11511
  --squisq-preview-empty-border: #374151;
10358
11512
  --squisq-preview-empty-text: #94a3b8;
10359
11513
  }
10360
- .squisq-editor-shell[data-theme=dark] .squisq-inline-preview-gutter {
10361
- background: var(--squisq-preview-gutter-bg);
10362
- }
10363
11514
  .squisq-editor-shell[data-theme=dark] .squisq-outline-empty {
10364
11515
  color: #94a3b8;
10365
11516
  }
@@ -11079,36 +12230,36 @@
11079
12230
  padding: 3px 8px;
11080
12231
  font-size: 12px;
11081
12232
  font-weight: 500;
11082
- color: #374151;
11083
- background: #fff;
11084
- border: 1px solid #d1d5db;
12233
+ color: var(--squisq-block-props-text);
12234
+ background: var(--squisq-block-props-surface);
12235
+ border: 1px solid var(--squisq-block-props-border);
11085
12236
  border-radius: 5px;
11086
12237
  cursor: pointer;
11087
12238
  white-space: nowrap;
11088
12239
  transition: background 0.1s, border-color 0.1s;
11089
12240
  }
11090
12241
  .squisq-transition-picker-trigger:hover {
11091
- background: #f3f4f6;
11092
- border-color: #9ca3af;
12242
+ background: var(--squisq-block-props-surface-hover);
12243
+ border-color: var(--squisq-block-props-quiet);
11093
12244
  }
11094
12245
  .squisq-transition-picker-trigger--open {
11095
- background: #f3f4f6;
11096
- border-color: #6366f1;
11097
- outline: 2px solid rgba(99, 102, 241, 0.25);
12246
+ background: var(--squisq-block-props-surface-hover);
12247
+ border-color: var(--squisq-block-props-accent, #6366f1);
12248
+ outline: 2px solid color-mix(in oklch, var(--squisq-block-props-accent, #6366f1) 25%, transparent);
11098
12249
  outline-offset: -1px;
11099
12250
  }
11100
12251
  .squisq-transition-picker-trigger-label {
11101
- color: #6b7280;
12252
+ color: var(--squisq-block-props-muted);
11102
12253
  }
11103
12254
  .squisq-transition-picker-trigger-value {
11104
- color: #111827;
12255
+ color: var(--squisq-block-props-text);
11105
12256
  font-weight: 400;
11106
12257
  max-width: 110px;
11107
12258
  overflow: hidden;
11108
12259
  text-overflow: ellipsis;
11109
12260
  }
11110
12261
  .squisq-transition-picker-trigger svg {
11111
- color: #9ca3af;
12262
+ color: var(--squisq-block-props-quiet);
11112
12263
  flex-shrink: 0;
11113
12264
  }
11114
12265
  @container squisq-toolbar (max-width: 900px) {
@@ -11121,27 +12272,29 @@
11121
12272
  max-width: calc(100vw - 24px);
11122
12273
  display: flex;
11123
12274
  flex-direction: column;
11124
- background: #fff;
11125
- border: 1px solid #e5e7eb;
12275
+ color: var(--squisq-block-props-text);
12276
+ background: var(--squisq-block-props-surface);
12277
+ border: 1px solid var(--squisq-block-props-divider);
11126
12278
  border-radius: 10px;
11127
12279
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12), 0 2px 6px rgba(0, 0, 0, 0.08);
11128
12280
  overflow: hidden;
11129
12281
  }
11130
12282
  .squisq-transition-flyout-search {
11131
12283
  padding: 8px;
11132
- border-bottom: 1px solid #f0f0f0;
12284
+ border-bottom: 1px solid var(--squisq-block-props-divider);
11133
12285
  }
11134
12286
  .squisq-transition-flyout-search-input {
11135
12287
  width: 100%;
11136
12288
  padding: 6px 8px;
11137
12289
  font-size: 13px;
11138
- color: #111827;
11139
- border: 1px solid #d1d5db;
12290
+ color: var(--squisq-block-props-text);
12291
+ background: var(--squisq-block-props-input);
12292
+ border: 1px solid var(--squisq-block-props-border);
11140
12293
  border-radius: 6px;
11141
12294
  outline: none;
11142
12295
  }
11143
12296
  .squisq-transition-flyout-search-input:focus {
11144
- border-color: #6366f1;
12297
+ border-color: var(--squisq-block-props-accent, #6366f1);
11145
12298
  }
11146
12299
  .squisq-transition-flyout-list {
11147
12300
  min-height: 0;
@@ -11157,7 +12310,7 @@
11157
12310
  font-weight: 600;
11158
12311
  letter-spacing: 0.04em;
11159
12312
  text-transform: uppercase;
11160
- color: #9ca3af;
12313
+ color: var(--squisq-block-props-quiet);
11161
12314
  }
11162
12315
  .squisq-transition-flyout-grid {
11163
12316
  display: grid;
@@ -11170,9 +12323,9 @@
11170
12323
  text-align: left;
11171
12324
  padding: 6px 8px;
11172
12325
  font-size: 12px;
11173
- color: #374151;
11174
- background: #fff;
11175
- border: 1px solid #e5e7eb;
12326
+ color: var(--squisq-block-props-text);
12327
+ background: var(--squisq-block-props-surface);
12328
+ border: 1px solid var(--squisq-block-props-divider);
11176
12329
  border-radius: 6px;
11177
12330
  cursor: pointer;
11178
12331
  white-space: nowrap;
@@ -11180,13 +12333,13 @@
11180
12333
  text-overflow: ellipsis;
11181
12334
  }
11182
12335
  .squisq-transition-option:hover {
11183
- background: #f3f4f6;
11184
- border-color: #d1d5db;
12336
+ background: var(--squisq-block-props-surface-hover);
12337
+ border-color: var(--squisq-block-props-border);
11185
12338
  }
11186
12339
  .squisq-transition-option--selected {
11187
- background: #eef2ff;
11188
- border-color: #6366f1;
11189
- color: #4338ca;
12340
+ color: var(--squisq-block-props-accent, #4338ca);
12341
+ background: color-mix(in oklch, var(--squisq-block-props-accent, #6366f1) 14%, transparent);
12342
+ border-color: var(--squisq-block-props-accent, #6366f1);
11190
12343
  font-weight: 600;
11191
12344
  }
11192
12345
  .squisq-transition-option {
@@ -11206,11 +12359,11 @@
11206
12359
  .squisq-transition-flyout-empty {
11207
12360
  padding: 12px 8px;
11208
12361
  font-size: 12px;
11209
- color: #9ca3af;
12362
+ color: var(--squisq-block-props-quiet);
11210
12363
  text-align: center;
11211
12364
  }
11212
12365
  .squisq-transition-flyout-controls {
11213
- border-top: 1px solid #f0f0f0;
12366
+ border-top: 1px solid var(--squisq-block-props-divider);
11214
12367
  padding: 10px 12px;
11215
12368
  display: flex;
11216
12369
  flex-direction: column;
@@ -11225,7 +12378,7 @@
11225
12378
  .squisq-transition-flyout-control-label {
11226
12379
  font-size: 11px;
11227
12380
  font-weight: 600;
11228
- color: #6b7280;
12381
+ color: var(--squisq-block-props-muted);
11229
12382
  }
11230
12383
  .squisq-transition-direction-row {
11231
12384
  display: inline-flex;
@@ -11234,19 +12387,19 @@
11234
12387
  .squisq-transition-direction-button {
11235
12388
  padding: 4px 8px;
11236
12389
  font-size: 11px;
11237
- color: #374151;
11238
- background: #fff;
11239
- border: 1px solid #d1d5db;
12390
+ color: var(--squisq-block-props-text);
12391
+ background: var(--squisq-block-props-surface);
12392
+ border: 1px solid var(--squisq-block-props-border);
11240
12393
  border-radius: 5px;
11241
12394
  cursor: pointer;
11242
12395
  }
11243
12396
  .squisq-transition-direction-button:hover {
11244
- background: #f3f4f6;
12397
+ background: var(--squisq-block-props-surface-hover);
11245
12398
  }
11246
12399
  .squisq-transition-direction-button--selected {
11247
- background: #eef2ff;
11248
- border-color: #6366f1;
11249
- color: #4338ca;
12400
+ color: var(--squisq-block-props-accent, #4338ca);
12401
+ background: color-mix(in oklch, var(--squisq-block-props-accent, #6366f1) 14%, transparent);
12402
+ border-color: var(--squisq-block-props-accent, #6366f1);
11250
12403
  font-weight: 600;
11251
12404
  }
11252
12405
  .squisq-transition-duration-row {
@@ -11258,17 +12411,18 @@
11258
12411
  width: 64px;
11259
12412
  padding: 4px 6px;
11260
12413
  font-size: 12px;
11261
- color: #111827;
11262
- border: 1px solid #d1d5db;
12414
+ color: var(--squisq-block-props-text);
12415
+ background: var(--squisq-block-props-input);
12416
+ border: 1px solid var(--squisq-block-props-border);
11263
12417
  border-radius: 5px;
11264
12418
  outline: none;
11265
12419
  }
11266
12420
  .squisq-transition-duration-input:focus {
11267
- border-color: #6366f1;
12421
+ border-color: var(--squisq-block-props-accent, #6366f1);
11268
12422
  }
11269
12423
  .squisq-transition-duration-unit {
11270
12424
  font-size: 11px;
11271
- color: #9ca3af;
12425
+ color: var(--squisq-block-props-quiet);
11272
12426
  }
11273
12427
  .squisq-editor-shell[data-theme=dark] .squisq-transition-picker-trigger {
11274
12428
  background: #1f2937;
@@ -11281,42 +12435,14 @@
11281
12435
  }
11282
12436
  .squisq-editor-shell[data-theme=dark] .squisq-transition-picker-trigger--open {
11283
12437
  background: #374151;
11284
- border-color: #818cf8;
12438
+ border-color: var(--squisq-block-props-accent, #818cf8);
11285
12439
  }
11286
12440
  .squisq-editor-shell[data-theme=dark] .squisq-transition-picker-trigger-value {
11287
12441
  color: #f9fafb;
11288
12442
  }
11289
- .squisq-editor-shell[data-theme=dark] .squisq-transition-flyout {
11290
- background: #1f2937;
11291
- border-color: #374151;
12443
+ .squisq-transition-flyout[data-theme=dark] {
11292
12444
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.2);
11293
12445
  }
11294
- .squisq-editor-shell[data-theme=dark] .squisq-transition-flyout-search,
11295
- .squisq-editor-shell[data-theme=dark] .squisq-transition-flyout-controls {
11296
- border-color: #374151;
11297
- }
11298
- .squisq-editor-shell[data-theme=dark] .squisq-transition-flyout-search-input,
11299
- .squisq-editor-shell[data-theme=dark] .squisq-transition-duration-input {
11300
- background: #111827;
11301
- color: #f9fafb;
11302
- border-color: #4b5563;
11303
- }
11304
- .squisq-editor-shell[data-theme=dark] .squisq-transition-option,
11305
- .squisq-editor-shell[data-theme=dark] .squisq-transition-direction-button {
11306
- background: #1f2937;
11307
- color: #e5e7eb;
11308
- border-color: #4b5563;
11309
- }
11310
- .squisq-editor-shell[data-theme=dark] .squisq-transition-option:hover,
11311
- .squisq-editor-shell[data-theme=dark] .squisq-transition-direction-button:hover {
11312
- background: #374151;
11313
- }
11314
- .squisq-editor-shell[data-theme=dark] .squisq-transition-option--selected,
11315
- .squisq-editor-shell[data-theme=dark] .squisq-transition-direction-button--selected {
11316
- background: #3730a3;
11317
- border-color: #818cf8;
11318
- color: #e0e7ff;
11319
- }
11320
12446
 
11321
12447
  /* src/styles/code-context.css */
11322
12448
  .squisq-ccx-zone {
@@ -12164,52 +13290,120 @@
12164
13290
  .squisq-image-editor-layers {
12165
13291
  border-bottom: 1px solid var(--squisq-image-editor-panel-border);
12166
13292
  }
12167
- .squisq-image-editor-layer-list {
12168
- list-style: none;
12169
- margin: 0;
12170
- padding: 0.25rem 0;
12171
- max-height: 240px;
12172
- overflow: auto;
12173
- }
12174
- .squisq-image-editor-layer-empty {
12175
- padding: 0.5rem 0.75rem;
12176
- color: var(--squisq-image-editor-text-muted);
12177
- font-style: italic;
12178
- }
12179
- .squisq-image-editor-layer-item {
13293
+ .squisq-image-editor-layers-header {
12180
13294
  display: flex;
12181
13295
  align-items: center;
12182
- gap: 0.25rem;
12183
- padding: 0.2rem 0.5rem;
12184
- }
12185
- .squisq-image-editor-layer-item.is-selected {
12186
- background: rgba(51, 153, 255, 0.18);
13296
+ justify-content: space-between;
13297
+ min-height: 32px;
12187
13298
  }
12188
- .squisq-image-editor-layer-item.is-hidden {
12189
- opacity: 0.5;
13299
+ .squisq-image-editor-layer-add {
13300
+ position: relative;
13301
+ display: inline-flex;
12190
13302
  }
12191
- .squisq-image-editor-layer-toggle {
13303
+ .squisq-image-editor-layer-add-button {
13304
+ display: inline-flex;
13305
+ align-items: center;
13306
+ justify-content: center;
13307
+ width: 22px;
13308
+ height: 22px;
13309
+ padding: 0;
13310
+ color: inherit;
12192
13311
  background: transparent;
12193
13312
  border: 1px solid transparent;
12194
- color: inherit;
12195
- padding: 2px 5px;
12196
13313
  border-radius: 3px;
12197
- font: inherit;
12198
- font-size: 15px;
12199
13314
  cursor: pointer;
12200
- line-height: 1;
12201
- display: inline-flex;
12202
- align-items: center;
12203
- justify-content: center;
13315
+ font: inherit;
12204
13316
  }
12205
- .squisq-image-editor-layer-toggle:hover:not(:disabled) {
13317
+ .squisq-image-editor-layer-add-button:hover,
13318
+ .squisq-image-editor-layer-add-button[aria-expanded=true] {
12206
13319
  background: var(--squisq-image-editor-control-bg);
13320
+ border-color: var(--squisq-image-editor-control-border);
12207
13321
  }
12208
- .squisq-image-editor-layer-toggle:disabled {
12209
- opacity: 0.3;
12210
- cursor: not-allowed;
12211
- }
12212
- .squisq-image-editor-layer-name {
13322
+ .squisq-image-editor-layer-add-menu {
13323
+ position: absolute;
13324
+ top: calc(100% + 4px);
13325
+ right: 0;
13326
+ z-index: 20;
13327
+ min-width: 150px;
13328
+ padding: 4px;
13329
+ background: var(--squisq-image-editor-panel-bg);
13330
+ border: 1px solid var(--squisq-image-editor-panel-border);
13331
+ border-radius: 5px;
13332
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
13333
+ text-transform: none;
13334
+ letter-spacing: normal;
13335
+ }
13336
+ .squisq-image-editor-layer-add-menu-item {
13337
+ display: flex;
13338
+ align-items: center;
13339
+ gap: 8px;
13340
+ width: 100%;
13341
+ padding: 6px 8px;
13342
+ color: inherit;
13343
+ background: transparent;
13344
+ border: 0;
13345
+ border-radius: 3px;
13346
+ cursor: pointer;
13347
+ font: inherit;
13348
+ font-size: 12px;
13349
+ text-align: left;
13350
+ }
13351
+ .squisq-image-editor-layer-add-menu-item:hover,
13352
+ .squisq-image-editor-layer-add-menu-item:focus-visible {
13353
+ background: var(--squisq-image-editor-control-bg);
13354
+ outline: none;
13355
+ }
13356
+ .squisq-image-editor-layer-add-menu-item svg {
13357
+ flex: 0 0 auto;
13358
+ width: 14px;
13359
+ }
13360
+ .squisq-image-editor-layer-list {
13361
+ list-style: none;
13362
+ margin: 0;
13363
+ padding: 0.25rem 0;
13364
+ max-height: 240px;
13365
+ overflow: auto;
13366
+ }
13367
+ .squisq-image-editor-layer-empty {
13368
+ padding: 0.5rem 0.75rem;
13369
+ color: var(--squisq-image-editor-text-muted);
13370
+ font-style: italic;
13371
+ }
13372
+ .squisq-image-editor-layer-item {
13373
+ display: flex;
13374
+ align-items: center;
13375
+ gap: 0.25rem;
13376
+ padding: 0.2rem 0.5rem;
13377
+ }
13378
+ .squisq-image-editor-layer-item.is-selected {
13379
+ background: rgba(51, 153, 255, 0.18);
13380
+ }
13381
+ .squisq-image-editor-layer-item.is-hidden {
13382
+ opacity: 0.5;
13383
+ }
13384
+ .squisq-image-editor-layer-toggle {
13385
+ background: transparent;
13386
+ border: 1px solid transparent;
13387
+ color: inherit;
13388
+ padding: 2px 5px;
13389
+ border-radius: 3px;
13390
+ font: inherit;
13391
+ font-size: 15px;
13392
+ cursor: pointer;
13393
+ line-height: 1;
13394
+ display: inline-flex;
13395
+ align-items: center;
13396
+ justify-content: center;
13397
+ }
13398
+ .squisq-image-editor-layer-toggle:hover:not(:disabled) {
13399
+ background: var(--squisq-image-editor-control-bg);
13400
+ }
13401
+ .squisq-image-editor-layer-toggle:disabled {
13402
+ opacity: 0.3;
13403
+ cursor: not-allowed;
13404
+ }
13405
+ .squisq-image-editor-layer-name {
13406
+ min-width: 0;
12213
13407
  flex: 1 1 auto;
12214
13408
  text-align: left;
12215
13409
  background: transparent;
@@ -12225,7 +13419,14 @@
12225
13419
  text-overflow: ellipsis;
12226
13420
  white-space: nowrap;
12227
13421
  }
13422
+ .squisq-image-editor-layer-name-text {
13423
+ min-width: 0;
13424
+ overflow: hidden;
13425
+ text-overflow: ellipsis;
13426
+ white-space: nowrap;
13427
+ }
12228
13428
  .squisq-image-editor-layer-kind {
13429
+ flex: 0 0 auto;
12229
13430
  margin-left: auto;
12230
13431
  font-size: 10px;
12231
13432
  color: var(--squisq-image-editor-text-muted);
@@ -12677,104 +13878,712 @@
12677
13878
  width: 100%;
12678
13879
  height: 100%;
12679
13880
  }
12680
- .squisq-diagram-empty {
12681
- position: absolute;
12682
- inset: 0;
13881
+ .squisq-diagram-empty {
13882
+ position: absolute;
13883
+ inset: 0;
13884
+ display: flex;
13885
+ flex-direction: column;
13886
+ align-items: center;
13887
+ justify-content: center;
13888
+ gap: 8px;
13889
+ pointer-events: none;
13890
+ text-align: center;
13891
+ padding: 24px;
13892
+ }
13893
+ .squisq-diagram-empty-title {
13894
+ font-size: 14px;
13895
+ font-weight: 600;
13896
+ color: var(--squisq-text, #1e293b);
13897
+ }
13898
+ .squisq-diagram-empty-hint {
13899
+ font-size: 12px;
13900
+ color: var(--squisq-text-muted, #64748b);
13901
+ max-width: 320px;
13902
+ line-height: 1.45;
13903
+ }
13904
+ .squisq-diagram-empty-btn {
13905
+ pointer-events: auto;
13906
+ margin-top: 4px;
13907
+ padding: 6px 12px;
13908
+ font-size: 12px;
13909
+ font-weight: 500;
13910
+ color: #ffffff;
13911
+ background: #6366f1;
13912
+ border: none;
13913
+ border-radius: 6px;
13914
+ cursor: pointer;
13915
+ transition: background 0.1s;
13916
+ }
13917
+ .squisq-diagram-empty-btn:hover {
13918
+ background: #4f46e5;
13919
+ }
13920
+ .squisq-diagram-maximize-btn {
13921
+ position: absolute;
13922
+ top: 8px;
13923
+ right: 8px;
13924
+ z-index: 10;
13925
+ width: 32px;
13926
+ height: 32px;
13927
+ display: inline-flex;
13928
+ align-items: center;
13929
+ justify-content: center;
13930
+ background: var(--squisq-surface, #ffffff);
13931
+ border: 1px solid var(--squisq-border, #e2e8f0);
13932
+ border-radius: 6px;
13933
+ cursor: pointer;
13934
+ font-size: 16px;
13935
+ line-height: 1;
13936
+ color: var(--squisq-text, #1e293b);
13937
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
13938
+ }
13939
+ .squisq-diagram-maximize-btn:hover {
13940
+ background: var(--squisq-surface-hover, #f8fafc);
13941
+ }
13942
+ .squisq-diagram-maximized-overlay {
13943
+ position: fixed;
13944
+ inset: 0;
13945
+ z-index: 9999;
13946
+ background: rgba(15, 23, 42, 0.6);
13947
+ display: flex;
13948
+ align-items: stretch;
13949
+ justify-content: stretch;
13950
+ }
13951
+ .squisq-diagram-maximized-content {
13952
+ position: relative;
13953
+ flex: 1;
13954
+ margin: 24px;
13955
+ background: var(--squisq-surface, #ffffff);
13956
+ border-radius: 12px;
13957
+ overflow: hidden;
13958
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
13959
+ }
13960
+ .squisq-diagram-maximized-content .squisq-diagram-canvas {
13961
+ width: 100%;
13962
+ height: 100%;
13963
+ }
13964
+ [data-squisq-diagram-child=true] {
13965
+ display: none;
13966
+ }
13967
+ .squisq-diagram-inline-placeholder {
13968
+ height: 420px;
13969
+ border: 1px dashed var(--squisq-border, #e2e8f0);
13970
+ border-radius: 8px;
13971
+ display: flex;
13972
+ align-items: center;
13973
+ justify-content: center;
13974
+ color: var(--squisq-text-muted, #64748b);
13975
+ font-size: 14px;
13976
+ }
13977
+ .squisq-diagram-inline-placeholder::before {
13978
+ content: "Diagram open in full screen \2014 press Esc to return";
13979
+ }
13980
+
13981
+ /* src/styles/ascii-diagram.css */
13982
+ .squisq-wysiwyg-editor pre.squisq-ascii-fence-hidden {
13983
+ display: none;
13984
+ }
13985
+ .squisq-wysiwyg-editor pre.squisq-ascii-fence-source {
13986
+ font-family:
13987
+ ui-monospace,
13988
+ SFMono-Regular,
13989
+ Menlo,
13990
+ Consolas,
13991
+ "Liberation Mono",
13992
+ monospace;
13993
+ white-space: pre;
13994
+ overflow-x: auto;
13995
+ line-height: 1.2;
13996
+ tab-size: 4;
13997
+ }
13998
+ .squisq-ascii-diagram-widget-host {
13999
+ margin: 0.75rem 0 1.25rem;
14000
+ }
14001
+ .squisq-ascii-diagram-warnings {
14002
+ margin-top: 4px;
14003
+ font-size: 12px;
14004
+ color: var(--squisq-theme-text-muted, #6b7280);
14005
+ }
14006
+ .squisq-ascii-diagram-warnings summary {
14007
+ cursor: pointer;
14008
+ user-select: none;
14009
+ }
14010
+ .squisq-ascii-diagram-warnings ul {
14011
+ margin: 4px 0 0;
14012
+ padding-left: 18px;
14013
+ }
14014
+ .squisq-repair-banner {
14015
+ display: flex;
14016
+ align-items: center;
14017
+ gap: 10px;
14018
+ flex-wrap: wrap;
14019
+ margin: 4px 0 1rem;
14020
+ padding: 8px 12px;
14021
+ border: 1px dashed var(--squisq-border, #d1d5db);
14022
+ border-radius: 8px;
14023
+ background: var(--squisq-input-bg, #f9fafb);
14024
+ font-size: 13px;
14025
+ }
14026
+ .squisq-repair-banner-text {
14027
+ color: var(--squisq-text-muted, #6b7280);
14028
+ }
14029
+ .squisq-repair-banner-btn {
14030
+ cursor: pointer;
14031
+ border: 1px solid var(--squisq-accent, #6366f1);
14032
+ border-radius: 6px;
14033
+ background: var(--squisq-accent, #6366f1);
14034
+ color: #fff;
14035
+ padding: 4px 12px;
14036
+ font-size: 13px;
14037
+ font-weight: 500;
14038
+ line-height: 1.4;
14039
+ white-space: nowrap;
14040
+ }
14041
+ .squisq-repair-banner-btn:hover {
14042
+ filter: brightness(1.05);
14043
+ }
14044
+ .squisq-repair-banner-btn:active {
14045
+ filter: brightness(0.95);
14046
+ }
14047
+
14048
+ /* src/styles/tree-view.css */
14049
+ .squisq-wysiwyg-editor pre.squisq-tree-fence-hidden {
14050
+ display: none;
14051
+ }
14052
+ .squisq-tree-widget-host {
14053
+ margin: 0.75rem 0 1.25rem;
14054
+ }
14055
+ .squisq-tree-outline {
14056
+ border: 1px solid var(--squisq-border, #e2e8f0);
14057
+ border-radius: 8px;
14058
+ padding: 8px 10px;
14059
+ background: var(--squisq-input-bg, #ffffff);
14060
+ color: var(--squisq-text, #1e293b);
14061
+ font-size: 14px;
14062
+ }
14063
+ .squisq-tree-toolbar {
14064
+ display: flex;
14065
+ gap: 6px;
14066
+ margin-bottom: 6px;
14067
+ }
14068
+ .squisq-tree-btn {
14069
+ display: inline-flex;
14070
+ align-items: center;
14071
+ gap: 5px;
14072
+ font-size: 12px;
14073
+ padding: 3px 8px;
14074
+ border: 1px solid var(--squisq-border, #e2e8f0);
14075
+ border-radius: 5px;
14076
+ background: var(--squisq-bg, #f8fafc);
14077
+ color: var(--squisq-text, #1e293b);
14078
+ cursor: pointer;
14079
+ }
14080
+ .squisq-tree-btn:hover {
14081
+ border-color: var(--squisq-text-muted, #94a3b8);
14082
+ }
14083
+ .squisq-tree-rows {
14084
+ list-style: none;
14085
+ margin: 0;
14086
+ padding: 0;
14087
+ }
14088
+ .squisq-tree-rows .squisq-tree-rows {
14089
+ border-left: 1px solid var(--squisq-border, #e2e8f0);
14090
+ margin-left: 8px;
14091
+ }
14092
+ .squisq-tree-row {
14093
+ display: flex;
14094
+ align-items: center;
14095
+ gap: 4px;
14096
+ padding: 1px 0;
14097
+ }
14098
+ .squisq-tree-row:hover .squisq-tree-controls {
14099
+ opacity: 1;
14100
+ }
14101
+ .squisq-tree-chevron {
14102
+ flex: 0 0 auto;
14103
+ width: 16px;
14104
+ border: none;
14105
+ background: transparent;
14106
+ cursor: pointer;
14107
+ color: var(--squisq-text-muted, #64748b);
14108
+ padding: 0;
14109
+ font-size: 11px;
14110
+ }
14111
+ .squisq-tree-chevron--empty {
14112
+ cursor: default;
14113
+ }
14114
+ .squisq-tree-icon {
14115
+ flex: 0 0 auto;
14116
+ width: 18px;
14117
+ border: none;
14118
+ background: transparent;
14119
+ cursor: pointer;
14120
+ color: #6366f1;
14121
+ padding: 0;
14122
+ }
14123
+ .squisq-tree-label {
14124
+ flex: 1 1 auto;
14125
+ min-width: 0;
14126
+ border: 1px solid transparent;
14127
+ border-radius: 4px;
14128
+ padding: 1px 4px;
14129
+ font: inherit;
14130
+ color: var(--squisq-text, #1e293b);
14131
+ background: transparent;
14132
+ }
14133
+ .squisq-tree-label:focus {
14134
+ outline: none;
14135
+ border-color: #6366f1;
14136
+ background: var(--squisq-bg, #f8fafc);
14137
+ }
14138
+ .squisq-tree-controls {
14139
+ flex: 0 0 auto;
14140
+ display: inline-flex;
14141
+ gap: 2px;
14142
+ opacity: 0;
14143
+ transition: opacity 0.12s;
14144
+ }
14145
+ .squisq-tree-controls button {
14146
+ border: none;
14147
+ background: transparent;
14148
+ cursor: pointer;
14149
+ color: var(--squisq-text-muted, #64748b);
14150
+ padding: 2px 4px;
14151
+ border-radius: 4px;
14152
+ font-size: 11px;
14153
+ }
14154
+ .squisq-tree-controls button:hover {
14155
+ background: var(--squisq-bg, #f1f5f9);
14156
+ color: var(--squisq-text, #1e293b);
14157
+ }
14158
+ .squisq-tree-controls .squisq-tree-delete:hover {
14159
+ color: #ef4444;
14160
+ }
14161
+ .squisq-tree-warnings {
14162
+ margin-top: 6px;
14163
+ font-size: 12px;
14164
+ color: var(--squisq-text-muted, #6b7280);
14165
+ }
14166
+
14167
+ /* src/styles/ascii-timeline.css */
14168
+ .squisq-wysiwyg-editor pre.squisq-ascii-timeline-fence-hidden {
14169
+ display: none;
14170
+ }
14171
+ .squisq-ascii-timeline-widget-host {
14172
+ margin: 0.75rem 0 1.25rem;
14173
+ }
14174
+ .squisq-ascii-timeline-editor {
14175
+ --squisq-ascii-timeline-accent: var(--squisq-theme-primary, #6366f1);
14176
+ --squisq-ascii-timeline-label-width: 120px;
14177
+ border: 1px solid var(--squisq-border, #e2e8f0);
14178
+ border-radius: 10px;
14179
+ background: var(--squisq-input-bg, #fff);
14180
+ color: var(--squisq-text, #1e293b);
14181
+ overflow: hidden;
14182
+ font-size: 14px;
14183
+ }
14184
+ .squisq-ascii-timeline-header {
14185
+ display: flex;
14186
+ align-items: center;
14187
+ justify-content: space-between;
14188
+ gap: 12px;
14189
+ min-height: 36px;
14190
+ padding: 6px 10px;
14191
+ border-bottom: 1px solid var(--squisq-border, #e2e8f0);
14192
+ background: var(--squisq-bg, #f8fafc);
14193
+ }
14194
+ .squisq-ascii-timeline-header > span {
14195
+ display: inline-flex;
14196
+ align-items: center;
14197
+ gap: 6px;
14198
+ font-weight: 650;
14199
+ }
14200
+ .squisq-ascii-timeline-header small {
14201
+ color: var(--squisq-text-muted, #64748b);
14202
+ }
14203
+ .squisq-ascii-timeline-canvas {
14204
+ position: relative;
14205
+ min-width: 600px;
14206
+ padding: 8px 18px 8px 10px;
14207
+ overflow-x: auto;
14208
+ }
14209
+ .squisq-ascii-timeline-track {
14210
+ display: grid;
14211
+ grid-template-columns: var(--squisq-ascii-timeline-label-width) minmax(420px, 1fr);
14212
+ gap: 12px;
14213
+ height: 96px;
14214
+ align-items: center;
14215
+ }
14216
+ .squisq-ascii-timeline-track-label {
14217
+ display: flex;
14218
+ min-width: 0;
14219
+ align-items: center;
14220
+ justify-content: flex-end;
14221
+ gap: 5px;
14222
+ color: var(--squisq-text-muted, #64748b);
14223
+ font-size: 12px;
14224
+ font-weight: 650;
14225
+ text-align: right;
14226
+ white-space: nowrap;
14227
+ }
14228
+ .squisq-ascii-timeline-track-label > span {
14229
+ overflow: hidden;
14230
+ text-overflow: ellipsis;
14231
+ }
14232
+ .squisq-ascii-timeline-track-add {
14233
+ display: grid;
14234
+ width: 22px;
14235
+ height: 22px;
14236
+ flex: 0 0 22px;
14237
+ place-items: center;
14238
+ padding: 0;
14239
+ border: 1px solid var(--squisq-border, #cbd5e1);
14240
+ border-radius: 50%;
14241
+ background: var(--squisq-input-bg, #fff);
14242
+ color: var(--squisq-ascii-timeline-accent);
14243
+ font: 700 15px/1 system-ui, sans-serif;
14244
+ cursor: pointer;
14245
+ }
14246
+ .squisq-ascii-timeline-track-add:hover,
14247
+ .squisq-ascii-timeline-track-add:focus-visible {
14248
+ border-color: var(--squisq-ascii-timeline-accent);
14249
+ outline: 2px solid color-mix(in srgb, var(--squisq-ascii-timeline-accent) 22%, transparent);
14250
+ }
14251
+ .squisq-ascii-timeline-rail {
14252
+ position: relative;
14253
+ height: 96px;
14254
+ min-width: 420px;
14255
+ outline: none;
14256
+ cursor: crosshair;
14257
+ }
14258
+ .squisq-ascii-timeline-rail--readonly {
14259
+ cursor: default;
14260
+ }
14261
+ .squisq-ascii-timeline-rail-line {
14262
+ position: absolute;
14263
+ z-index: 1;
14264
+ top: 50%;
14265
+ right: 0;
14266
+ left: 0;
14267
+ height: 2px;
14268
+ border-radius: 999px;
14269
+ background: var(--squisq-text-muted, #94a3b8);
14270
+ pointer-events: none;
14271
+ }
14272
+ .squisq-ascii-timeline-rail-line::after {
14273
+ position: absolute;
14274
+ top: 50%;
14275
+ right: -1px;
14276
+ width: 8px;
14277
+ height: 8px;
14278
+ border-top: 2px solid currentColor;
14279
+ border-right: 2px solid currentColor;
14280
+ color: var(--squisq-text-muted, #94a3b8);
14281
+ content: "";
14282
+ transform: translateY(-50%) rotate(45deg);
14283
+ }
14284
+ .squisq-ascii-timeline-add-ghost,
14285
+ .squisq-ascii-timeline-gap-add {
14286
+ position: absolute;
14287
+ z-index: 4;
14288
+ top: 50%;
14289
+ display: grid;
14290
+ width: 22px;
14291
+ height: 22px;
14292
+ place-items: center;
14293
+ border: 1px solid var(--squisq-ascii-timeline-accent);
14294
+ border-radius: 50%;
14295
+ background: var(--squisq-input-bg, #fff);
14296
+ color: var(--squisq-ascii-timeline-accent);
14297
+ font: 700 15px/1 system-ui, sans-serif;
14298
+ transform: translate(-50%, -50%);
14299
+ }
14300
+ .squisq-ascii-timeline-add-ghost {
14301
+ opacity: 0.72;
14302
+ pointer-events: none;
14303
+ }
14304
+ .squisq-ascii-timeline-gap-add {
14305
+ padding: 0;
14306
+ opacity: 0.12;
14307
+ cursor: pointer;
14308
+ transition: opacity 120ms ease, transform 120ms ease;
14309
+ }
14310
+ .squisq-ascii-timeline-rail:hover .squisq-ascii-timeline-gap-add,
14311
+ .squisq-ascii-timeline-gap-add:focus-visible {
14312
+ opacity: 0.9;
14313
+ }
14314
+ .squisq-ascii-timeline-gap-add:hover,
14315
+ .squisq-ascii-timeline-gap-add:focus-visible {
14316
+ outline: none;
14317
+ transform: translate(-50%, -50%) scale(1.12);
14318
+ }
14319
+ .squisq-ascii-timeline-point {
14320
+ position: absolute;
14321
+ z-index: 6;
14322
+ top: 50%;
14323
+ width: 0;
14324
+ height: 0;
14325
+ }
14326
+ .squisq-ascii-timeline-marker {
14327
+ position: absolute;
14328
+ top: 0;
14329
+ left: 0;
14330
+ z-index: 2;
14331
+ width: 36px;
14332
+ height: 36px;
14333
+ padding: 0;
14334
+ border: 0;
14335
+ border-radius: 50%;
14336
+ background: transparent;
14337
+ cursor: grab;
14338
+ touch-action: none;
14339
+ user-select: none;
14340
+ transform: translate(-50%, -50%);
14341
+ }
14342
+ .squisq-ascii-timeline-point--dragging {
14343
+ z-index: 8;
14344
+ }
14345
+ .squisq-ascii-timeline-point--dragging .squisq-ascii-timeline-marker {
14346
+ cursor: grabbing;
14347
+ }
14348
+ .squisq-ascii-timeline-point--dragging .squisq-ascii-timeline-marker::before {
14349
+ box-shadow: 0 0 0 3px var(--squisq-input-bg, #fff), 0 0 0 7px color-mix(in srgb, var(--squisq-ascii-timeline-accent) 72%, transparent);
14350
+ }
14351
+ .squisq-ascii-timeline-rail--readonly .squisq-ascii-timeline-marker {
14352
+ cursor: pointer;
14353
+ }
14354
+ .squisq-ascii-timeline-marker::before {
14355
+ display: block;
14356
+ width: 12px;
14357
+ height: 12px;
14358
+ margin: 12px;
14359
+ border: 2px solid var(--squisq-ascii-timeline-accent);
14360
+ border-radius: 50%;
14361
+ background: var(--squisq-ascii-timeline-accent);
14362
+ box-sizing: border-box;
14363
+ content: "";
14364
+ }
14365
+ .squisq-ascii-timeline-marker--hollow::before {
14366
+ background: var(--squisq-input-bg, #fff);
14367
+ }
14368
+ .squisq-ascii-timeline-marker--diamond::before {
14369
+ border-radius: 2px;
14370
+ transform: rotate(45deg);
14371
+ }
14372
+ .squisq-ascii-timeline-marker:hover::before {
14373
+ box-shadow: 0 0 0 5px color-mix(in srgb, var(--squisq-ascii-timeline-accent) 18%, transparent);
14374
+ }
14375
+ .squisq-ascii-timeline-marker:focus-visible {
14376
+ outline: 2px solid var(--squisq-ascii-timeline-accent);
14377
+ outline-offset: 1px;
14378
+ }
14379
+ .squisq-ascii-timeline-marker--selected::before {
14380
+ box-shadow: 0 0 0 3px var(--squisq-input-bg, #fff), 0 0 0 6px var(--squisq-ascii-timeline-accent);
14381
+ }
14382
+ .squisq-ascii-timeline-callout,
14383
+ .squisq-ascii-timeline-description {
14384
+ position: absolute;
14385
+ left: 0;
14386
+ width: 128px;
14387
+ overflow: hidden;
14388
+ color: var(--squisq-text, #1e293b);
14389
+ line-height: 1.2;
14390
+ text-align: center;
14391
+ text-overflow: ellipsis;
14392
+ white-space: nowrap;
14393
+ pointer-events: none;
14394
+ transform: translateX(-50%);
14395
+ }
14396
+ .squisq-ascii-timeline-callout {
14397
+ font-size: 12px;
14398
+ font-weight: 650;
14399
+ }
14400
+ .squisq-ascii-timeline-description {
14401
+ color: var(--squisq-text-muted, #64748b);
14402
+ font-size: 10px;
14403
+ }
14404
+ .squisq-ascii-timeline-callout--above {
14405
+ bottom: 14px;
14406
+ }
14407
+ .squisq-ascii-timeline-callout--below {
14408
+ top: 14px;
14409
+ }
14410
+ .squisq-ascii-timeline-description--above {
14411
+ bottom: 30px;
14412
+ }
14413
+ .squisq-ascii-timeline-description--below {
14414
+ top: 30px;
14415
+ }
14416
+ .squisq-ascii-timeline-end-label {
14417
+ position: absolute;
14418
+ top: calc(50% + 8px);
14419
+ right: 0;
14420
+ max-width: 100px;
14421
+ overflow: hidden;
14422
+ color: var(--squisq-text-muted, #64748b);
14423
+ font-size: 10px;
14424
+ text-overflow: ellipsis;
14425
+ white-space: nowrap;
14426
+ pointer-events: none;
14427
+ }
14428
+ .squisq-ascii-timeline-branches {
14429
+ position: absolute;
14430
+ z-index: 2;
14431
+ top: 8px;
14432
+ right: 18px;
14433
+ bottom: 8px;
14434
+ left: calc(10px + var(--squisq-ascii-timeline-label-width) + 12px);
14435
+ width: calc(100% - var(--squisq-ascii-timeline-label-width) - 40px);
14436
+ height: calc(var(--squisq-ascii-timeline-track-count) * 96px);
14437
+ overflow: visible;
14438
+ pointer-events: none;
14439
+ }
14440
+ .squisq-ascii-timeline-branches path {
14441
+ fill: none;
14442
+ stroke: color-mix(in srgb, var(--squisq-ascii-timeline-accent) 72%, transparent);
14443
+ stroke-width: 2;
14444
+ stroke-dasharray: 4 3;
14445
+ }
14446
+ .squisq-ascii-timeline-link-list {
14447
+ display: flex;
14448
+ flex-wrap: wrap;
14449
+ gap: 4px;
14450
+ margin: 0;
14451
+ padding: 0 10px 8px;
14452
+ list-style: none;
14453
+ }
14454
+ .squisq-ascii-timeline-link-list li {
14455
+ padding: 2px 7px;
14456
+ border-radius: 999px;
14457
+ background: var(--squisq-bg, #f1f5f9);
14458
+ color: var(--squisq-text-muted, #64748b);
14459
+ font-size: 11px;
14460
+ list-style: none;
14461
+ }
14462
+ .squisq-ascii-timeline-inspector {
14463
+ display: grid;
14464
+ grid-template-columns: minmax(150px, 1fr) minmax(190px, 1.5fr) 120px 120px;
14465
+ gap: 8px;
14466
+ margin: 0;
14467
+ padding: 10px;
14468
+ border: 0;
14469
+ border-top: 1px solid var(--squisq-border, #e2e8f0);
14470
+ background: var(--squisq-bg, #f8fafc);
14471
+ }
14472
+ .squisq-ascii-timeline-inspector legend {
14473
+ grid-column: 1 / -1;
14474
+ padding: 0 4px;
14475
+ color: var(--squisq-text, #1e293b);
14476
+ font-size: 12px;
14477
+ font-weight: 700;
14478
+ }
14479
+ .squisq-ascii-timeline-inspector legend span {
14480
+ color: var(--squisq-text-muted, #64748b);
14481
+ font-weight: 500;
14482
+ }
14483
+ .squisq-ascii-timeline-inspector label {
12683
14484
  display: flex;
14485
+ min-width: 0;
12684
14486
  flex-direction: column;
12685
- align-items: center;
12686
- justify-content: center;
12687
- gap: 8px;
12688
- pointer-events: none;
12689
- text-align: center;
12690
- padding: 24px;
14487
+ gap: 3px;
14488
+ color: var(--squisq-text-muted, #64748b);
14489
+ font-size: 11px;
12691
14490
  }
12692
- .squisq-diagram-empty-title {
12693
- font-size: 14px;
12694
- font-weight: 600;
14491
+ .squisq-ascii-timeline-inspector input,
14492
+ .squisq-ascii-timeline-inspector textarea,
14493
+ .squisq-ascii-timeline-inspector select {
14494
+ min-width: 0;
14495
+ border: 1px solid var(--squisq-border, #cbd5e1);
14496
+ border-radius: 5px;
14497
+ background: var(--squisq-input-bg, #fff);
12695
14498
  color: var(--squisq-text, #1e293b);
14499
+ font: inherit;
14500
+ padding: 5px 7px;
12696
14501
  }
12697
- .squisq-diagram-empty-hint {
12698
- font-size: 12px;
12699
- color: var(--squisq-text-muted, #64748b);
12700
- max-width: 320px;
12701
- line-height: 1.45;
14502
+ .squisq-ascii-timeline-inspector input:focus,
14503
+ .squisq-ascii-timeline-inspector textarea:focus,
14504
+ .squisq-ascii-timeline-inspector select:focus {
14505
+ border-color: var(--squisq-ascii-timeline-accent);
14506
+ outline: 2px solid color-mix(in srgb, var(--squisq-ascii-timeline-accent) 22%, transparent);
12702
14507
  }
12703
- .squisq-diagram-empty-btn {
12704
- pointer-events: auto;
12705
- margin-top: 4px;
12706
- padding: 6px 12px;
12707
- font-size: 12px;
12708
- font-weight: 500;
12709
- color: #ffffff;
12710
- background: #6366f1;
12711
- border: none;
12712
- border-radius: 6px;
12713
- cursor: pointer;
12714
- transition: background 0.1s;
14508
+ .squisq-ascii-timeline-inspector-description textarea {
14509
+ resize: vertical;
12715
14510
  }
12716
- .squisq-diagram-empty-btn:hover {
12717
- background: #4f46e5;
14511
+ .squisq-ascii-timeline-inspector .squisq-ascii-timeline-checkbox {
14512
+ grid-column: 1 / 2;
14513
+ flex-direction: row;
14514
+ align-items: center;
14515
+ align-self: center;
14516
+ color: var(--squisq-text, #1e293b);
12718
14517
  }
12719
- .squisq-diagram-maximize-btn {
12720
- position: absolute;
12721
- top: 8px;
12722
- right: 8px;
12723
- z-index: 10;
12724
- width: 32px;
12725
- height: 32px;
14518
+ .squisq-ascii-timeline-checkbox input {
14519
+ width: auto;
14520
+ }
14521
+ .squisq-ascii-timeline-delete {
14522
+ grid-column: 4 / 5;
12726
14523
  display: inline-flex;
12727
14524
  align-items: center;
12728
14525
  justify-content: center;
12729
- background: var(--squisq-surface, #ffffff);
12730
- border: 1px solid var(--squisq-border, #e2e8f0);
12731
- border-radius: 6px;
14526
+ gap: 5px;
14527
+ align-self: end;
14528
+ padding: 5px 8px;
14529
+ border: 1px solid color-mix(in srgb, #ef4444 45%, var(--squisq-border, #e2e8f0));
14530
+ border-radius: 5px;
14531
+ background: transparent;
14532
+ color: #dc2626;
12732
14533
  cursor: pointer;
12733
- font-size: 16px;
12734
- line-height: 1;
12735
- color: var(--squisq-text, #1e293b);
12736
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
12737
14534
  }
12738
- .squisq-diagram-maximize-btn:hover {
12739
- background: var(--squisq-surface-hover, #f8fafc);
14535
+ .squisq-ascii-timeline-delete:disabled {
14536
+ opacity: 0.45;
14537
+ cursor: not-allowed;
12740
14538
  }
12741
- .squisq-diagram-maximized-overlay {
12742
- position: fixed;
12743
- inset: 0;
12744
- z-index: 9999;
12745
- background: rgba(15, 23, 42, 0.6);
12746
- display: flex;
12747
- align-items: stretch;
12748
- justify-content: stretch;
14539
+ .squisq-ascii-timeline-warnings {
14540
+ padding: 0 10px 8px;
14541
+ color: var(--squisq-text-muted, #64748b);
14542
+ font-size: 11px;
12749
14543
  }
12750
- .squisq-diagram-maximized-content {
12751
- position: relative;
12752
- flex: 1;
12753
- margin: 24px;
12754
- background: var(--squisq-surface, #ffffff);
12755
- border-radius: 12px;
14544
+ .squisq-sr-only {
14545
+ position: absolute;
14546
+ width: 1px;
14547
+ height: 1px;
14548
+ padding: 0;
14549
+ margin: -1px;
12756
14550
  overflow: hidden;
12757
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
12758
- }
12759
- .squisq-diagram-maximized-content .squisq-diagram-canvas {
12760
- width: 100%;
12761
- height: 100%;
14551
+ clip: rect(0, 0, 0, 0);
14552
+ white-space: nowrap;
14553
+ border: 0;
12762
14554
  }
12763
- [data-squisq-diagram-child=true] {
12764
- display: none;
14555
+ @media (max-width: 760px) {
14556
+ .squisq-ascii-timeline-editor {
14557
+ --squisq-ascii-timeline-label-width: 88px;
14558
+ }
14559
+ .squisq-ascii-timeline-inspector {
14560
+ grid-template-columns: 1fr 1fr;
14561
+ }
14562
+ .squisq-ascii-timeline-inspector-description,
14563
+ .squisq-ascii-timeline-inspector legend {
14564
+ grid-column: 1 / -1;
14565
+ }
14566
+ .squisq-ascii-timeline-delete {
14567
+ grid-column: 2 / 3;
14568
+ }
12765
14569
  }
12766
- .squisq-diagram-inline-placeholder {
12767
- height: 420px;
12768
- border: 1px dashed var(--squisq-border, #e2e8f0);
12769
- border-radius: 8px;
12770
- display: flex;
12771
- align-items: center;
12772
- justify-content: center;
12773
- color: var(--squisq-text-muted, #64748b);
12774
- font-size: 14px;
14570
+ @media (prefers-reduced-motion: reduce) {
14571
+ .squisq-ascii-timeline-gap-add {
14572
+ transition: none;
14573
+ }
12775
14574
  }
12776
- .squisq-diagram-inline-placeholder::before {
12777
- content: "Diagram open in full screen \2014 press Esc to return";
14575
+ @media (forced-colors: active) {
14576
+ .squisq-ascii-timeline-marker::before,
14577
+ .squisq-ascii-timeline-gap-add,
14578
+ .squisq-ascii-timeline-add-ghost {
14579
+ border-color: ButtonText;
14580
+ forced-color-adjust: none;
14581
+ }
14582
+ .squisq-ascii-timeline-rail-line,
14583
+ .squisq-ascii-timeline-branches path {
14584
+ background: CanvasText;
14585
+ stroke: CanvasText;
14586
+ }
12778
14587
  }
12779
14588
 
12780
14589
  /* src/scene/scene.css */
@@ -12787,6 +14596,24 @@
12787
14596
  border-radius: 8px;
12788
14597
  overflow: hidden;
12789
14598
  }
14599
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-shell {
14600
+ --squisq-surface: #0f172a;
14601
+ --squisq-surface-hover: #1e293b;
14602
+ --squisq-border: #475569;
14603
+ --squisq-text: #f8fafc;
14604
+ --squisq-text-muted: #94a3b8;
14605
+ }
14606
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-root,
14607
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-inline,
14608
+ .squisq-editor-shell[data-theme=dark] .squisq-diagram-inline {
14609
+ background: #0f172a;
14610
+ border-color: #475569;
14611
+ }
14612
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--shape,
14613
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--path,
14614
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-layer--text {
14615
+ filter: invert(1) hue-rotate(180deg) saturate(0.9);
14616
+ }
12790
14617
  .squisq-scene-viewport {
12791
14618
  display: block;
12792
14619
  width: 100%;
@@ -12841,6 +14668,16 @@
12841
14668
  vector-effect: non-scaling-stroke;
12842
14669
  pointer-events: none;
12843
14670
  }
14671
+ .squisq-scene-connection-point {
14672
+ fill: #ffffff;
14673
+ stroke: #6366f1;
14674
+ stroke-width: 2;
14675
+ vector-effect: non-scaling-stroke;
14676
+ pointer-events: none;
14677
+ }
14678
+ .squisq-scene-connection-point--active {
14679
+ fill: #6366f1;
14680
+ }
12844
14681
  .squisq-scene-toolbar {
12845
14682
  position: absolute;
12846
14683
  top: 8px;
@@ -12968,6 +14805,40 @@
12968
14805
  border-color: #fecaca;
12969
14806
  color: #b91c1c;
12970
14807
  }
14808
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-toolbar,
14809
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-tools,
14810
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-actions,
14811
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-block-props {
14812
+ background: #111827;
14813
+ border-color: #475569;
14814
+ color: #e5e7eb;
14815
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
14816
+ }
14817
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool,
14818
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action {
14819
+ background: #111827;
14820
+ color: #e5e7eb;
14821
+ }
14822
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool:hover,
14823
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action:hover:not(:disabled) {
14824
+ background: #1f2937;
14825
+ border-color: #64748b;
14826
+ color: #f8fafc;
14827
+ }
14828
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active,
14829
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-tool--active:hover {
14830
+ background: #312e81;
14831
+ border-color: #818cf8;
14832
+ color: #f8fafc;
14833
+ }
14834
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--danger {
14835
+ color: #fca5a5;
14836
+ }
14837
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-action--danger:hover:not(:disabled) {
14838
+ background: #450a0a;
14839
+ border-color: #f87171;
14840
+ color: #fecaca;
14841
+ }
12971
14842
  .squisq-scene-block-max {
12972
14843
  display: flex;
12973
14844
  flex-direction: row;
@@ -13016,6 +14887,16 @@
13016
14887
  left: auto;
13017
14888
  right: calc(100% + 6px);
13018
14889
  }
14890
+ .squisq-scene-inline-toolbar {
14891
+ display: flex;
14892
+ margin-bottom: 8px;
14893
+ }
14894
+ .squisq-scene-inline-toolbar .squisq-scene-block-toolbar {
14895
+ flex-wrap: wrap;
14896
+ justify-content: flex-start;
14897
+ width: 100%;
14898
+ margin: 0;
14899
+ }
13019
14900
  .squisq-scene-maximize-btn {
13020
14901
  position: absolute;
13021
14902
  top: 8px;
@@ -13040,6 +14921,17 @@
13040
14921
  border-color: #94a3b8;
13041
14922
  color: #0f172a;
13042
14923
  }
14924
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn {
14925
+ background: #111827;
14926
+ border-color: #475569;
14927
+ color: #e5e7eb;
14928
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.32);
14929
+ }
14930
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-maximize-btn:hover {
14931
+ background: #1f2937;
14932
+ border-color: #64748b;
14933
+ color: #f8fafc;
14934
+ }
13043
14935
  .squisq-scene-node-card {
13044
14936
  fill: var(--squisq-surface, #ffffff);
13045
14937
  stroke: var(--squisq-text, #1e293b);
@@ -13173,6 +15065,30 @@
13173
15065
  font-size: 22px;
13174
15066
  font-weight: 700;
13175
15067
  }
15068
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette {
15069
+ background: #111827;
15070
+ color: #e5e7eb;
15071
+ border-color: #475569;
15072
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.42);
15073
+ }
15074
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette-search,
15075
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-select {
15076
+ background: #0f172a;
15077
+ color: #e5e7eb;
15078
+ border-color: #475569;
15079
+ }
15080
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-palette-item:hover,
15081
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-clear:hover {
15082
+ background: #1f2937;
15083
+ border-color: #64748b;
15084
+ }
15085
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb,
15086
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb-line {
15087
+ stroke: #e5e7eb;
15088
+ }
15089
+ .squisq-editor-shell[data-theme=dark] .squisq-shape-thumb-text {
15090
+ fill: #e5e7eb;
15091
+ }
13176
15092
  .squisq-scene-block-props {
13177
15093
  display: inline-flex;
13178
15094
  flex-direction: row;
@@ -13227,6 +15143,12 @@
13227
15143
  .squisq-scene-prop-clear:hover {
13228
15144
  background: #f1f5f9;
13229
15145
  }
15146
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-color,
15147
+ .squisq-editor-shell[data-theme=dark] .squisq-scene-prop-clear {
15148
+ background: #0f172a;
15149
+ color: #e5e7eb;
15150
+ border-color: #475569;
15151
+ }
13230
15152
  .squisq-scene-widget-host {
13231
15153
  margin: 0.75rem 0 1.25rem;
13232
15154
  }
@@ -13295,6 +15217,56 @@
13295
15217
  }
13296
15218
 
13297
15219
  /* src/customTemplates/designer.css */
15220
+ .squisq-template-designer-overlay,
15221
+ .squisq-layout-manager-overlay {
15222
+ color-scheme: light;
15223
+ --squisq-layout-panel: #ffffff;
15224
+ --squisq-layout-chrome: #f9fafb;
15225
+ --squisq-layout-subtle: #fafafa;
15226
+ --squisq-layout-workspace: #f3f4f6;
15227
+ --squisq-layout-input: #ffffff;
15228
+ --squisq-layout-border: #e5e7eb;
15229
+ --squisq-layout-border-strong: #d1d5db;
15230
+ --squisq-layout-text: #111827;
15231
+ --squisq-layout-text-soft: #1f2937;
15232
+ --squisq-layout-muted: #6b7280;
15233
+ --squisq-layout-faint: #9ca3af;
15234
+ --squisq-layout-hover: #f1f5f9;
15235
+ --squisq-layout-accent-text: #4338ca;
15236
+ --squisq-layout-accent-bg: #4f46e5;
15237
+ --squisq-layout-accent-bg-hover: #4338ca;
15238
+ --squisq-layout-accent-border: #6366f1;
15239
+ --squisq-layout-accent-soft: #eef2ff;
15240
+ --squisq-layout-accent-soft-hover: #e0e7ff;
15241
+ --squisq-layout-accent-soft-border: #c7d2fe;
15242
+ --squisq-layout-accent-hover-border: #a5b4fc;
15243
+ --squisq-layout-thumb: #f8fafc;
15244
+ }
15245
+ .squisq-template-designer-overlay[data-theme=dark],
15246
+ .squisq-layout-manager-overlay[data-theme=dark] {
15247
+ color-scheme: dark;
15248
+ --squisq-layout-panel: #111827;
15249
+ --squisq-layout-chrome: #1f2937;
15250
+ --squisq-layout-subtle: #18212f;
15251
+ --squisq-layout-workspace: #0f172a;
15252
+ --squisq-layout-input: #111827;
15253
+ --squisq-layout-border: #374151;
15254
+ --squisq-layout-border-strong: #4b5563;
15255
+ --squisq-layout-text: #f3f4f6;
15256
+ --squisq-layout-text-soft: #e5e7eb;
15257
+ --squisq-layout-muted: #9ca3af;
15258
+ --squisq-layout-faint: #6b7280;
15259
+ --squisq-layout-hover: #334155;
15260
+ --squisq-layout-accent-text: #c7d2fe;
15261
+ --squisq-layout-accent-bg: #4f46e5;
15262
+ --squisq-layout-accent-bg-hover: #6366f1;
15263
+ --squisq-layout-accent-border: #818cf8;
15264
+ --squisq-layout-accent-soft: #312e81;
15265
+ --squisq-layout-accent-soft-hover: #3730a3;
15266
+ --squisq-layout-accent-soft-border: #4f46e5;
15267
+ --squisq-layout-accent-hover-border: #6366f1;
15268
+ --squisq-layout-thumb: #0f172a;
15269
+ }
13298
15270
  .squisq-template-designer-overlay {
13299
15271
  position: fixed;
13300
15272
  inset: 0;
@@ -13310,7 +15282,8 @@
13310
15282
  flex-direction: column;
13311
15283
  width: min(1200px, 100%);
13312
15284
  height: min(800px, 100%);
13313
- background: #ffffff;
15285
+ color: var(--squisq-layout-text-soft);
15286
+ background: var(--squisq-layout-panel);
13314
15287
  border-radius: 12px;
13315
15288
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
13316
15289
  overflow: hidden;
@@ -13333,14 +15306,14 @@
13333
15306
  align-items: center;
13334
15307
  justify-content: space-between;
13335
15308
  padding: 14px 20px;
13336
- border-bottom: 1px solid #e5e7eb;
13337
- background: #f9fafb;
15309
+ border-bottom: 1px solid var(--squisq-layout-border);
15310
+ background: var(--squisq-layout-chrome);
13338
15311
  }
13339
15312
  .squisq-template-designer-title {
13340
15313
  margin: 0;
13341
15314
  font-size: 16px;
13342
15315
  font-weight: 600;
13343
- color: #111827;
15316
+ color: var(--squisq-layout-text);
13344
15317
  }
13345
15318
  .squisq-template-designer-close {
13346
15319
  width: 32px;
@@ -13350,24 +15323,24 @@
13350
15323
  justify-content: center;
13351
15324
  font-size: 24px;
13352
15325
  line-height: 1;
13353
- color: #6b7280;
15326
+ color: var(--squisq-layout-muted);
13354
15327
  background: transparent;
13355
15328
  border: 1px solid transparent;
13356
15329
  border-radius: 6px;
13357
15330
  cursor: pointer;
13358
15331
  }
13359
15332
  .squisq-template-designer-close:hover {
13360
- color: #111827;
13361
- background: #f1f5f9;
13362
- border-color: #cbd5e1;
15333
+ color: var(--squisq-layout-text);
15334
+ background: var(--squisq-layout-hover);
15335
+ border-color: var(--squisq-layout-border-strong);
13363
15336
  }
13364
15337
  .squisq-template-designer-meta {
13365
15338
  display: grid;
13366
15339
  grid-template-columns: minmax(160px, 1fr) minmax(160px, 1fr) minmax(240px, 2fr);
13367
15340
  gap: 12px;
13368
15341
  padding: 12px 20px;
13369
- border-bottom: 1px solid #e5e7eb;
13370
- background: #fdfdfd;
15342
+ border-bottom: 1px solid var(--squisq-layout-border);
15343
+ background: var(--squisq-layout-panel);
13371
15344
  }
13372
15345
  .squisq-template-designer-field {
13373
15346
  display: flex;
@@ -13379,19 +15352,19 @@
13379
15352
  font-weight: 600;
13380
15353
  text-transform: uppercase;
13381
15354
  letter-spacing: 0.04em;
13382
- color: #6b7280;
15355
+ color: var(--squisq-layout-muted);
13383
15356
  }
13384
15357
  .squisq-template-designer-field input {
13385
15358
  padding: 6px 10px;
13386
15359
  font-size: 13px;
13387
- color: #111827;
13388
- background: #ffffff;
13389
- border: 1px solid #d1d5db;
15360
+ color: var(--squisq-layout-text);
15361
+ background: var(--squisq-layout-input);
15362
+ border: 1px solid var(--squisq-layout-border-strong);
13390
15363
  border-radius: 6px;
13391
15364
  outline: none;
13392
15365
  }
13393
15366
  .squisq-template-designer-field input:focus {
13394
- border-color: #6366f1;
15367
+ border-color: var(--squisq-layout-accent-border);
13395
15368
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
13396
15369
  }
13397
15370
  .squisq-template-designer-field span.squisq-template-designer-field-hint {
@@ -13399,7 +15372,7 @@
13399
15372
  font-weight: 400;
13400
15373
  text-transform: none;
13401
15374
  letter-spacing: normal;
13402
- color: #9ca3af;
15375
+ color: var(--squisq-layout-faint);
13403
15376
  }
13404
15377
  .squisq-template-designer-body {
13405
15378
  flex: 1;
@@ -13410,8 +15383,8 @@
13410
15383
  width: 220px;
13411
15384
  flex-shrink: 0;
13412
15385
  padding: 16px;
13413
- border-right: 1px solid #e5e7eb;
13414
- background: #fafafa;
15386
+ border-right: 1px solid var(--squisq-layout-border);
15387
+ background: var(--squisq-layout-subtle);
13415
15388
  overflow-y: auto;
13416
15389
  }
13417
15390
  .squisq-template-designer-palette-title {
@@ -13420,12 +15393,12 @@
13420
15393
  font-weight: 700;
13421
15394
  text-transform: uppercase;
13422
15395
  letter-spacing: 0.06em;
13423
- color: #4338ca;
15396
+ color: var(--squisq-layout-accent-text);
13424
15397
  }
13425
15398
  .squisq-template-designer-palette-hint {
13426
15399
  margin: 0 0 12px;
13427
15400
  font-size: 11px;
13428
- color: #6b7280;
15401
+ color: var(--squisq-layout-muted);
13429
15402
  line-height: 1.4;
13430
15403
  }
13431
15404
  .squisq-template-designer-palette-list {
@@ -13445,7 +15418,7 @@
13445
15418
  font-weight: 700;
13446
15419
  text-transform: uppercase;
13447
15420
  letter-spacing: 0.06em;
13448
- color: #6b7280;
15421
+ color: var(--squisq-layout-muted);
13449
15422
  }
13450
15423
  .squisq-template-designer-palette-shapes {
13451
15424
  display: grid;
@@ -13458,23 +15431,23 @@
13458
15431
  justify-content: center;
13459
15432
  aspect-ratio: 1 / 1;
13460
15433
  padding: 4px;
13461
- background: #ffffff;
13462
- border: 1px solid #e5e7eb;
15434
+ background: var(--squisq-layout-input);
15435
+ border: 1px solid var(--squisq-layout-border);
13463
15436
  border-radius: 6px;
13464
15437
  cursor: grab;
13465
- color: #475569;
15438
+ color: var(--squisq-layout-muted);
13466
15439
  transition: background 0.1s, border-color 0.1s;
13467
15440
  }
13468
15441
  .squisq-template-designer-shape-item:active {
13469
15442
  cursor: grabbing;
13470
15443
  }
13471
15444
  .squisq-template-designer-shape-item:hover {
13472
- background: #eef2ff;
13473
- border-color: #c7d2fe;
15445
+ background: var(--squisq-layout-accent-soft);
15446
+ border-color: var(--squisq-layout-accent-soft-border);
13474
15447
  }
13475
15448
  .squisq-template-designer-shape-item--active {
13476
- background: #eef2ff;
13477
- border-color: #6366f1;
15449
+ background: var(--squisq-layout-accent-soft);
15450
+ border-color: var(--squisq-layout-accent-border);
13478
15451
  }
13479
15452
  .squisq-template-designer-palette-media-add {
13480
15453
  width: 100%;
@@ -13482,20 +15455,20 @@
13482
15455
  padding: 8px 10px;
13483
15456
  font-size: 12px;
13484
15457
  font-weight: 600;
13485
- color: #4338ca;
13486
- background: #eef2ff;
13487
- border: 1px dashed #c7d2fe;
15458
+ color: var(--squisq-layout-accent-text);
15459
+ background: var(--squisq-layout-accent-soft);
15460
+ border: 1px dashed var(--squisq-layout-accent-soft-border);
13488
15461
  border-radius: 6px;
13489
15462
  cursor: pointer;
13490
15463
  }
13491
15464
  .squisq-template-designer-palette-media-add:hover:not(:disabled) {
13492
- background: #e0e7ff;
13493
- border-color: #a5b4fc;
15465
+ background: var(--squisq-layout-accent-soft-hover);
15466
+ border-color: var(--squisq-layout-accent-hover-border);
13494
15467
  }
13495
15468
  .squisq-template-designer-palette-media-add:disabled {
13496
- color: #9ca3af;
13497
- background: #f3f4f6;
13498
- border-color: #e5e7eb;
15469
+ color: var(--squisq-layout-faint);
15470
+ background: var(--squisq-layout-workspace);
15471
+ border-color: var(--squisq-layout-border);
13499
15472
  cursor: not-allowed;
13500
15473
  }
13501
15474
  .squisq-template-designer-palette-item {
@@ -13504,8 +15477,9 @@
13504
15477
  align-items: flex-start;
13505
15478
  gap: 2px;
13506
15479
  padding: 8px 10px;
13507
- background: #ffffff;
13508
- border: 1px solid #e5e7eb;
15480
+ color: var(--squisq-layout-text-soft);
15481
+ background: var(--squisq-layout-input);
15482
+ border: 1px solid var(--squisq-layout-border);
13509
15483
  border-radius: 6px;
13510
15484
  cursor: grab;
13511
15485
  text-align: left;
@@ -13515,12 +15489,12 @@
13515
15489
  cursor: grabbing;
13516
15490
  }
13517
15491
  .squisq-template-designer-palette-item:hover {
13518
- background: #eef2ff;
13519
- border-color: #c7d2fe;
15492
+ background: var(--squisq-layout-accent-soft);
15493
+ border-color: var(--squisq-layout-accent-soft-border);
13520
15494
  }
13521
15495
  .squisq-template-designer-palette-item--active {
13522
- background: #eef2ff;
13523
- border-color: #6366f1;
15496
+ background: var(--squisq-layout-accent-soft);
15497
+ border-color: var(--squisq-layout-accent-border);
13524
15498
  }
13525
15499
  .squisq-template-designer-palette-item-preview {
13526
15500
  font-family:
@@ -13529,11 +15503,11 @@
13529
15503
  "Menlo",
13530
15504
  monospace;
13531
15505
  font-size: 12px;
13532
- color: #4338ca;
15506
+ color: var(--squisq-layout-accent-text);
13533
15507
  }
13534
15508
  .squisq-template-designer-palette-item-label {
13535
15509
  font-size: 11px;
13536
- color: #6b7280;
15510
+ color: var(--squisq-layout-muted);
13537
15511
  }
13538
15512
  .squisq-template-designer-stage {
13539
15513
  flex: 1;
@@ -13542,7 +15516,7 @@
13542
15516
  min-width: 0;
13543
15517
  padding: 12px;
13544
15518
  gap: 8px;
13545
- background: #f3f4f6;
15519
+ background: var(--squisq-layout-workspace);
13546
15520
  }
13547
15521
  .squisq-template-designer-stage-bar {
13548
15522
  display: flex;
@@ -13550,8 +15524,8 @@
13550
15524
  align-items: center;
13551
15525
  gap: 5px;
13552
15526
  padding: 6px 8px;
13553
- background: #ffffff;
13554
- border: 1px solid #e5e7eb;
15527
+ background: var(--squisq-layout-panel);
15528
+ border: 1px solid var(--squisq-layout-border);
13555
15529
  border-radius: 6px;
13556
15530
  align-self: stretch;
13557
15531
  overflow-x: auto;
@@ -13562,7 +15536,7 @@
13562
15536
  font-weight: 600;
13563
15537
  text-transform: uppercase;
13564
15538
  letter-spacing: 0.04em;
13565
- color: #6b7280;
15539
+ color: var(--squisq-layout-muted);
13566
15540
  }
13567
15541
  .squisq-layer-toolbar {
13568
15542
  display: flex;
@@ -13588,27 +15562,27 @@
13588
15562
  width: 28px;
13589
15563
  height: 28px;
13590
15564
  font-size: 13px;
13591
- color: #374151;
15565
+ color: var(--squisq-layout-text-soft);
13592
15566
  background: transparent;
13593
15567
  border: 1px solid transparent;
13594
15568
  border-radius: 4px;
13595
15569
  cursor: pointer;
13596
15570
  }
13597
15571
  .squisq-layer-toolbar-btn:hover {
13598
- background: #f1f5f9;
15572
+ background: var(--squisq-layout-hover);
13599
15573
  }
13600
15574
  .squisq-layer-toolbar-btn--active {
13601
- background: #eef2ff;
13602
- border-color: #6366f1;
13603
- color: #4338ca;
15575
+ background: var(--squisq-layout-accent-soft);
15576
+ border-color: var(--squisq-layout-accent-border);
15577
+ color: var(--squisq-layout-accent-text);
13604
15578
  }
13605
15579
  .squisq-layer-toolbar-select {
13606
15580
  height: 28px;
13607
15581
  padding: 0 6px;
13608
15582
  font-size: 12px;
13609
- color: #1f2937;
13610
- background: #ffffff;
13611
- border: 1px solid #d1d5db;
15583
+ color: var(--squisq-layout-text-soft);
15584
+ background: var(--squisq-layout-input);
15585
+ border: 1px solid var(--squisq-layout-border-strong);
13612
15586
  border-radius: 4px;
13613
15587
  cursor: pointer;
13614
15588
  }
@@ -13617,9 +15591,9 @@
13617
15591
  height: 28px;
13618
15592
  padding: 0 4px 0 6px;
13619
15593
  font-size: 12px;
13620
- color: #1f2937;
13621
- background: #ffffff;
13622
- border: 1px solid #d1d5db;
15594
+ color: var(--squisq-layout-text-soft);
15595
+ background: var(--squisq-layout-input);
15596
+ border: 1px solid var(--squisq-layout-border-strong);
13623
15597
  border-radius: 4px;
13624
15598
  }
13625
15599
  .squisq-layer-toolbar-opacity {
@@ -13633,7 +15607,7 @@
13633
15607
  .squisq-layer-toolbar-label {
13634
15608
  display: inline-flex;
13635
15609
  align-items: center;
13636
- color: #6b7280;
15610
+ color: var(--squisq-layout-muted);
13637
15611
  font-size: 13px;
13638
15612
  }
13639
15613
  .squisq-layer-toolbar-color {
@@ -13645,22 +15619,22 @@
13645
15619
  width: 28px;
13646
15620
  height: 28px;
13647
15621
  padding: 0;
13648
- border: 1px solid #d1d5db;
15622
+ border: 1px solid var(--squisq-layout-border-strong);
13649
15623
  border-radius: 4px;
13650
- background: #ffffff;
15624
+ background: var(--squisq-layout-input);
13651
15625
  cursor: pointer;
13652
15626
  }
13653
15627
  .squisq-layer-toolbar-sep {
13654
15628
  width: 1px;
13655
15629
  align-self: stretch;
13656
15630
  margin: 2px 2px;
13657
- background: #e5e7eb;
15631
+ background: var(--squisq-layout-border);
13658
15632
  }
13659
15633
  .squisq-template-designer-scene {
13660
15634
  flex: 1;
13661
15635
  min-height: 0;
13662
- background: #ffffff;
13663
- border: 1px solid #e5e7eb;
15636
+ background: var(--squisq-layout-panel);
15637
+ border: 1px solid var(--squisq-layout-border);
13664
15638
  border-radius: 8px;
13665
15639
  overflow: hidden;
13666
15640
  }
@@ -13669,13 +15643,13 @@
13669
15643
  align-items: center;
13670
15644
  justify-content: space-between;
13671
15645
  padding: 12px 20px;
13672
- border-top: 1px solid #e5e7eb;
13673
- background: #f9fafb;
15646
+ border-top: 1px solid var(--squisq-layout-border);
15647
+ background: var(--squisq-layout-chrome);
13674
15648
  gap: 12px;
13675
15649
  }
13676
15650
  .squisq-template-designer-footer-hint {
13677
15651
  font-size: 11px;
13678
- color: #6b7280;
15652
+ color: var(--squisq-layout-muted);
13679
15653
  flex: 1;
13680
15654
  min-width: 0;
13681
15655
  }
@@ -13687,23 +15661,23 @@
13687
15661
  padding: 6px 14px;
13688
15662
  font-size: 13px;
13689
15663
  font-weight: 500;
13690
- color: #1f2937;
13691
- background: #ffffff;
13692
- border: 1px solid #d1d5db;
15664
+ color: var(--squisq-layout-text-soft);
15665
+ background: var(--squisq-layout-input);
15666
+ border: 1px solid var(--squisq-layout-border-strong);
13693
15667
  border-radius: 6px;
13694
15668
  cursor: pointer;
13695
15669
  transition: background 0.1s;
13696
15670
  }
13697
15671
  .squisq-template-designer-btn:hover {
13698
- background: #f1f5f9;
15672
+ background: var(--squisq-layout-hover);
13699
15673
  }
13700
15674
  .squisq-template-designer-btn--primary {
13701
15675
  color: #ffffff;
13702
- background: #4f46e5;
13703
- border-color: #4338ca;
15676
+ background: var(--squisq-layout-accent-bg);
15677
+ border-color: var(--squisq-layout-accent-bg-hover);
13704
15678
  }
13705
15679
  .squisq-template-designer-btn--primary:hover {
13706
- background: #4338ca;
15680
+ background: var(--squisq-layout-accent-bg-hover);
13707
15681
  }
13708
15682
  .squisq-layout-manager-overlay {
13709
15683
  position: fixed;
@@ -13720,7 +15694,8 @@
13720
15694
  flex-direction: column;
13721
15695
  width: min(1600px, 96vw);
13722
15696
  height: 92vh;
13723
- background: #ffffff;
15697
+ color: var(--squisq-layout-text-soft);
15698
+ background: var(--squisq-layout-panel);
13724
15699
  border-radius: 12px;
13725
15700
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);
13726
15701
  overflow: hidden;
@@ -13730,14 +15705,14 @@
13730
15705
  align-items: center;
13731
15706
  justify-content: space-between;
13732
15707
  padding: 14px 20px;
13733
- border-bottom: 1px solid #e5e7eb;
13734
- background: #f9fafb;
15708
+ border-bottom: 1px solid var(--squisq-layout-border);
15709
+ background: var(--squisq-layout-chrome);
13735
15710
  }
13736
15711
  .squisq-layout-manager-title {
13737
15712
  margin: 0;
13738
15713
  font-size: 16px;
13739
15714
  font-weight: 600;
13740
- color: #111827;
15715
+ color: var(--squisq-layout-text);
13741
15716
  }
13742
15717
  .squisq-layout-manager-body {
13743
15718
  flex: 1;
@@ -13751,28 +15726,28 @@
13751
15726
  flex-direction: column;
13752
15727
  gap: 8px;
13753
15728
  padding: 16px;
13754
- border-right: 1px solid #e5e7eb;
13755
- background: #fafafa;
15729
+ border-right: 1px solid var(--squisq-layout-border);
15730
+ background: var(--squisq-layout-subtle);
13756
15731
  overflow-y: auto;
13757
15732
  }
13758
15733
  .squisq-layout-manager-new {
13759
15734
  padding: 10px 12px;
13760
15735
  font-size: 13px;
13761
15736
  font-weight: 600;
13762
- color: #4338ca;
13763
- background: #eef2ff;
13764
- border: 1px dashed #c7d2fe;
15737
+ color: var(--squisq-layout-accent-text);
15738
+ background: var(--squisq-layout-accent-soft);
15739
+ border: 1px dashed var(--squisq-layout-accent-soft-border);
13765
15740
  border-radius: 8px;
13766
15741
  cursor: pointer;
13767
15742
  text-align: center;
13768
15743
  }
13769
15744
  .squisq-layout-manager-new:hover {
13770
- background: #e0e7ff;
13771
- border-color: #a5b4fc;
15745
+ background: var(--squisq-layout-accent-soft-hover);
15746
+ border-color: var(--squisq-layout-accent-hover-border);
13772
15747
  }
13773
15748
  .squisq-layout-manager-new--active {
13774
15749
  border-style: solid;
13775
- border-color: #6366f1;
15750
+ border-color: var(--squisq-layout-accent-border);
13776
15751
  }
13777
15752
  .squisq-layout-manager-section-title {
13778
15753
  margin-top: 6px;
@@ -13780,7 +15755,7 @@
13780
15755
  font-weight: 700;
13781
15756
  text-transform: uppercase;
13782
15757
  letter-spacing: 0.06em;
13783
- color: #6b7280;
15758
+ color: var(--squisq-layout-muted);
13784
15759
  }
13785
15760
  .squisq-layout-manager-list {
13786
15761
  display: flex;
@@ -13792,30 +15767,31 @@
13792
15767
  align-items: center;
13793
15768
  gap: 10px;
13794
15769
  padding: 8px;
13795
- background: #ffffff;
13796
- border: 1px solid #e5e7eb;
15770
+ color: var(--squisq-layout-text-soft);
15771
+ background: var(--squisq-layout-input);
15772
+ border: 1px solid var(--squisq-layout-border);
13797
15773
  border-radius: 8px;
13798
15774
  cursor: pointer;
13799
15775
  text-align: left;
13800
15776
  transition: background 0.1s, border-color 0.1s;
13801
15777
  }
13802
15778
  .squisq-layout-manager-item:hover {
13803
- background: #eef2ff;
13804
- border-color: #c7d2fe;
15779
+ background: var(--squisq-layout-accent-soft);
15780
+ border-color: var(--squisq-layout-accent-soft-border);
13805
15781
  }
13806
15782
  .squisq-layout-manager-item--active {
13807
- background: #eef2ff;
13808
- border-color: #6366f1;
15783
+ background: var(--squisq-layout-accent-soft);
15784
+ border-color: var(--squisq-layout-accent-border);
13809
15785
  }
13810
15786
  .squisq-layout-manager-item-thumb {
13811
15787
  flex-shrink: 0;
13812
15788
  display: inline-flex;
13813
15789
  width: 56px;
13814
15790
  height: 40px;
13815
- border: 1px solid #e5e7eb;
15791
+ border: 1px solid var(--squisq-layout-border);
13816
15792
  border-radius: 4px;
13817
15793
  overflow: hidden;
13818
- background: #f8fafc;
15794
+ background: var(--squisq-layout-thumb);
13819
15795
  }
13820
15796
  .squisq-layout-manager-item-text {
13821
15797
  display: flex;
@@ -13826,7 +15802,7 @@
13826
15802
  .squisq-layout-manager-item-label {
13827
15803
  font-size: 13px;
13828
15804
  font-weight: 600;
13829
- color: #111827;
15805
+ color: var(--squisq-layout-text);
13830
15806
  white-space: nowrap;
13831
15807
  overflow: hidden;
13832
15808
  text-overflow: ellipsis;
@@ -13838,7 +15814,7 @@
13838
15814
  "Menlo",
13839
15815
  monospace;
13840
15816
  font-size: 11px;
13841
- color: #6b7280;
15817
+ color: var(--squisq-layout-muted);
13842
15818
  white-space: nowrap;
13843
15819
  overflow: hidden;
13844
15820
  text-overflow: ellipsis;
@@ -13847,7 +15823,7 @@
13847
15823
  margin: 8px 2px;
13848
15824
  font-size: 12px;
13849
15825
  line-height: 1.5;
13850
- color: #6b7280;
15826
+ color: var(--squisq-layout-muted);
13851
15827
  }
13852
15828
  .squisq-layout-manager-main {
13853
15829
  flex: 1;