@jotx-labs/editor 2.4.130 → 2.4.131

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 (45) hide show
  1. package/dist/styles/BlockMenu.css +111 -0
  2. package/dist/styles/ButtonNodeView.css +169 -0
  3. package/dist/styles/ChartNodeView.css +99 -0
  4. package/dist/styles/CodeBlockNodeView.css +90 -0
  5. package/dist/styles/DateTimeNodeView.css +89 -0
  6. package/dist/styles/GridCardNodeView.css +231 -0
  7. package/dist/styles/ImageToolbar.css +67 -0
  8. package/dist/styles/ImageVideoBlocks.css +441 -0
  9. package/dist/styles/JotxEditor.css +691 -0
  10. package/dist/styles/JotxLinkNodeView.css +149 -0
  11. package/dist/styles/LinkDialog.css +118 -0
  12. package/dist/styles/MathNodeView.css +97 -0
  13. package/dist/styles/MermaidNodeView.css +146 -0
  14. package/dist/styles/NodePickerDialog.css +189 -0
  15. package/dist/styles/ReadonlyBlockRenderer.css +389 -0
  16. package/dist/styles/SearchBar.css +167 -0
  17. package/dist/styles/SearchHighlight.css +48 -0
  18. package/dist/styles/SectionNodeView.css +90 -0
  19. package/dist/styles/SlashMenu.css +135 -0
  20. package/dist/styles/SpellCheck.css +16 -0
  21. package/dist/styles/TableToolbar.css +137 -0
  22. package/dist/styles/ToggleNodeView.css +56 -0
  23. package/package.json +4 -3
  24. package/src/styles/BlockMenu.css +111 -0
  25. package/src/styles/ButtonNodeView.css +169 -0
  26. package/src/styles/ChartNodeView.css +99 -0
  27. package/src/styles/CodeBlockNodeView.css +90 -0
  28. package/src/styles/DateTimeNodeView.css +89 -0
  29. package/src/styles/GridCardNodeView.css +231 -0
  30. package/src/styles/ImageToolbar.css +67 -0
  31. package/src/styles/ImageVideoBlocks.css +441 -0
  32. package/src/styles/JotxEditor.css +691 -0
  33. package/src/styles/JotxLinkNodeView.css +149 -0
  34. package/src/styles/LinkDialog.css +118 -0
  35. package/src/styles/MathNodeView.css +97 -0
  36. package/src/styles/MermaidNodeView.css +146 -0
  37. package/src/styles/NodePickerDialog.css +189 -0
  38. package/src/styles/ReadonlyBlockRenderer.css +389 -0
  39. package/src/styles/SearchBar.css +167 -0
  40. package/src/styles/SearchHighlight.css +48 -0
  41. package/src/styles/SectionNodeView.css +90 -0
  42. package/src/styles/SlashMenu.css +135 -0
  43. package/src/styles/SpellCheck.css +16 -0
  44. package/src/styles/TableToolbar.css +137 -0
  45. package/src/styles/ToggleNodeView.css +56 -0
@@ -0,0 +1,231 @@
1
+ /* Grid Card Styles */
2
+
3
+ .gridcard-wrapper {
4
+ margin: 16px 0;
5
+ }
6
+
7
+ /* Layout Controls - Show on hover */
8
+ .gridcard-controls {
9
+ display: flex;
10
+ justify-content: flex-end;
11
+ margin-bottom: 8px;
12
+ opacity: 0;
13
+ transition: opacity 0.2s ease;
14
+ }
15
+
16
+ .gridcard-wrapper:hover .gridcard-controls,
17
+ .gridcard-wrapper:focus-within .gridcard-controls {
18
+ opacity: 1;
19
+ }
20
+
21
+ .gridcard-layout-select {
22
+ padding: 4px 8px;
23
+ border: 1px solid var(--vscode-panel-border, #3c3c3c);
24
+ border-radius: 4px;
25
+ background: var(--vscode-dropdown-background, #3c3c3c);
26
+ color: var(--vscode-dropdown-foreground, #cccccc);
27
+ font-size: 12px;
28
+ cursor: pointer;
29
+ outline: none;
30
+ }
31
+
32
+ .gridcard-layout-select:hover {
33
+ border-color: var(--vscode-focusBorder, #14b8a6);
34
+ }
35
+
36
+ .gridcard-layout-select:focus {
37
+ border-color: var(--vscode-focusBorder, #14b8a6);
38
+ box-shadow: 0 0 0 1px var(--vscode-focusBorder, #14b8a6);
39
+ }
40
+
41
+ .gridcard {
42
+ display: grid;
43
+ gap: 12px;
44
+ padding: 0;
45
+ align-items: stretch;
46
+ /* Make all cards same height */
47
+ }
48
+
49
+ /* CRITICAL: Make NodeViewContent and card wrappers work with CSS Grid */
50
+ .gridcard-content {
51
+ display: contents;
52
+ }
53
+
54
+ /* The cards are wrapped in NodeViewWrapper divs - style them as grid items */
55
+ .gridcard-content>div {
56
+ display: contents;
57
+ }
58
+
59
+ /* Card Styles - Distinct background from theme */
60
+ .card {
61
+ background: rgba(128, 128, 128, 0.1);
62
+ border: 1px solid var(--vscode-panel-border, #3c3c3c);
63
+ border-radius: 10px;
64
+ padding: 20px;
65
+ cursor: default;
66
+ transition: all 0.2s ease;
67
+ display: flex;
68
+ flex-direction: column;
69
+ align-items: center;
70
+ /* CENTER horizontally */
71
+ justify-content: center;
72
+ /* CENTER vertically */
73
+ text-align: center;
74
+ /* CENTER text */
75
+ gap: 8px;
76
+ min-height: 100px;
77
+ height: 100%;
78
+ /* Stretch to fill grid cell */
79
+ position: relative;
80
+ box-sizing: border-box;
81
+ }
82
+
83
+ .card[data-has-link="true"] {
84
+ cursor: pointer;
85
+ }
86
+
87
+ .card:hover {
88
+ border-color: #14b8a6;
89
+ background: rgba(128, 128, 128, 0.15);
90
+ }
91
+
92
+ .card[data-has-link="true"]:hover {
93
+ transform: translateY(-2px);
94
+ box-shadow: 0 4px 12px rgba(20, 184, 166, 0.2);
95
+ }
96
+
97
+ .card-selected {
98
+ outline: 2px solid #14b8a6;
99
+ outline-offset: 2px;
100
+ }
101
+
102
+ /* Card Color Accents - Left Border */
103
+ .card-color-blue {
104
+ border-left: 4px solid #3b82f6;
105
+ }
106
+
107
+ .card-color-green {
108
+ border-left: 4px solid #22c55e;
109
+ }
110
+
111
+ .card-color-red {
112
+ border-left: 4px solid #ef4444;
113
+ }
114
+
115
+ .card-color-yellow {
116
+ border-left: 4px solid #eab308;
117
+ }
118
+
119
+ .card-color-purple {
120
+ border-left: 4px solid #a855f7;
121
+ }
122
+
123
+ .card-color-teal {
124
+ border-left: 4px solid #14b8a6;
125
+ }
126
+
127
+ .card-color-gray {
128
+ border-left: 4px solid #6b7280;
129
+ }
130
+
131
+ /* Card Content - H1 sizing, centered */
132
+ .card-icon {
133
+ font-size: 2em;
134
+ margin-bottom: 4px;
135
+ }
136
+
137
+ .card-title {
138
+ font-size: 1.5em;
139
+ font-weight: 600;
140
+ color: var(--vscode-foreground);
141
+ line-height: 1.3;
142
+ }
143
+
144
+ .card-value {
145
+ font-size: 2.5em;
146
+ font-weight: 700;
147
+ color: #14b8a6;
148
+ line-height: 1;
149
+ margin-top: 8px;
150
+ }
151
+
152
+ .card-link-indicator {
153
+ font-size: 0.85em;
154
+ color: var(--vscode-descriptionForeground, #888);
155
+ margin-top: auto;
156
+ padding-top: 8px;
157
+ width: 100%;
158
+ border-top: 1px solid var(--vscode-panel-border, #3c3c3c);
159
+ opacity: 0.7;
160
+ }
161
+
162
+ .card-link-clickable {
163
+ cursor: pointer;
164
+ transition: all 0.2s ease;
165
+ }
166
+
167
+ .card-link-clickable:hover {
168
+ opacity: 1;
169
+ color: #14b8a6;
170
+ background: rgba(20, 184, 166, 0.1);
171
+ border-radius: 4px;
172
+ padding: 4px 8px;
173
+ margin: 8px -8px -8px -8px;
174
+ border-top: none;
175
+ }
176
+
177
+ /* Card Edit Form */
178
+ .card-edit-form {
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: 8px;
182
+ width: 100%;
183
+ text-align: left;
184
+ }
185
+
186
+ .card-edit-row {
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 8px;
190
+ }
191
+
192
+ .card-edit-row label {
193
+ flex: 0 0 50px;
194
+ font-size: 0.85em;
195
+ color: var(--vscode-descriptionForeground, #888);
196
+ }
197
+
198
+ .card-edit-row input,
199
+ .card-edit-row select {
200
+ flex: 1;
201
+ padding: 6px 10px;
202
+ border: 1px solid var(--vscode-input-border, #3c3c3c);
203
+ border-radius: 4px;
204
+ background: var(--vscode-input-background, #1e1e1e);
205
+ color: var(--vscode-input-foreground, #fff);
206
+ font-size: 0.9em;
207
+ caret-color: #14b8a6;
208
+ /* Visible cursor */
209
+ }
210
+
211
+ .card-edit-row input:focus,
212
+ .card-edit-row select:focus {
213
+ outline: none;
214
+ border-color: #14b8a6;
215
+ }
216
+
217
+ .card-edit-done {
218
+ margin-top: 8px;
219
+ padding: 6px 12px;
220
+ background: #14b8a6;
221
+ color: white;
222
+ border: none;
223
+ border-radius: 4px;
224
+ cursor: pointer;
225
+ font-size: 0.85em;
226
+ align-self: flex-end;
227
+ }
228
+
229
+ .card-edit-done:hover {
230
+ background: #0d9488;
231
+ }
@@ -0,0 +1,67 @@
1
+ .jotx-image-toolbar {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: 6px;
5
+ padding: 6px 8px;
6
+ border: 1px solid var(--jotx-border);
7
+ background: var(--jotx-backgroundSecondary);
8
+ border-radius: 12px;
9
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
10
+ }
11
+
12
+ .jotx-image-toolbar-floating {
13
+ position: fixed;
14
+ z-index: 11550; /* above inline toolbar */
15
+ }
16
+
17
+ .jotx-image-toolbar-btn {
18
+ width: 32px;
19
+ height: 30px;
20
+ display: inline-flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ border-radius: 10px;
24
+ border: 1px solid var(--jotx-border);
25
+ background: var(--jotx-background);
26
+ color: var(--jotx-text);
27
+ cursor: pointer;
28
+ }
29
+
30
+ .jotx-image-toolbar-btn:hover {
31
+ transform: translateY(-1px);
32
+ border-color: rgba(99, 102, 241, 0.35);
33
+ box-shadow: 0 8px 18px rgba(99, 102, 241, 0.12);
34
+ }
35
+
36
+ .jotx-image-toolbar-btn.active {
37
+ border-color: rgba(99, 102, 241, 0.65);
38
+ box-shadow: inset 0 0 0 1px rgba(99, 102, 241, 0.25);
39
+ }
40
+
41
+ .jotx-image-toolbar-sep {
42
+ width: 1px;
43
+ height: 18px;
44
+ background: var(--jotx-border);
45
+ opacity: 0.9;
46
+ margin: 0 2px;
47
+ }
48
+
49
+ .jotx-image-toolbar-size {
50
+ display: inline-flex;
51
+ align-items: center;
52
+ gap: 6px;
53
+ }
54
+
55
+ .jotx-image-toolbar-size input[type="range"] {
56
+ width: 140px;
57
+ }
58
+
59
+ .jotx-image-toolbar-size-label {
60
+ font-size: 11px;
61
+ font-weight: 700;
62
+ color: var(--jotx-textSecondary);
63
+ min-width: 34px;
64
+ text-align: right;
65
+ }
66
+
67
+
@@ -0,0 +1,441 @@
1
+ /**
2
+ * Image and Video Block Styles
3
+ */
4
+
5
+ /* === IMAGE BLOCK === */
6
+ .jotx-image-block {
7
+ margin: 20px 0;
8
+ position: relative;
9
+ }
10
+
11
+ .jotx-image-block.selected {
12
+ outline: 2px solid var(--jotx-primary, #007bff);
13
+ outline-offset: 4px;
14
+ }
15
+
16
+ .jotx-image-wrapper {
17
+ position: relative;
18
+ display: inline-block;
19
+ }
20
+
21
+ .jotx-image-block img {
22
+ display: block;
23
+ max-width: 100%;
24
+ height: auto;
25
+ border-radius: 8px;
26
+ }
27
+
28
+ /* Alignment */
29
+ .jotx-image-align-left {
30
+ text-align: left;
31
+ }
32
+
33
+ .jotx-image-align-center {
34
+ text-align: center;
35
+ }
36
+
37
+ .jotx-image-align-right {
38
+ text-align: right;
39
+ }
40
+
41
+ .jotx-image-align-full img {
42
+ width: 100%;
43
+ }
44
+
45
+ /* Caption */
46
+ .jotx-image-caption {
47
+ width: 100%;
48
+ margin-top: 8px;
49
+ padding: 8px;
50
+ font-size: 14px;
51
+ font-style: italic;
52
+ color: var(--jotx-textSecondary, #666);
53
+ border: 1px solid transparent;
54
+ border-radius: 4px;
55
+ background: transparent;
56
+ }
57
+
58
+ .jotx-image-caption:focus {
59
+ outline: none;
60
+ border-color: var(--jotx-border, #ddd);
61
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
62
+ }
63
+
64
+ /* Controls */
65
+ .jotx-image-controls {
66
+ position: absolute;
67
+ top: 8px;
68
+ right: 8px;
69
+ display: flex;
70
+ gap: 8px;
71
+ padding: 8px;
72
+ background: rgba(0, 0, 0, 0.7);
73
+ border-radius: 8px;
74
+ z-index: 10;
75
+ }
76
+
77
+ .jotx-image-controls button,
78
+ .jotx-image-controls select,
79
+ .jotx-image-controls input {
80
+ padding: 4px 8px;
81
+ font-size: 12px;
82
+ border: none;
83
+ border-radius: 4px;
84
+ background: var(--vscode-input-background, white);
85
+ color: var(--vscode-input-foreground, #333);
86
+ cursor: pointer;
87
+ }
88
+
89
+ .jotx-image-controls button:hover {
90
+ background: #f0f0f0;
91
+ }
92
+
93
+ /* Empty state */
94
+ .jotx-image-block-empty,
95
+ .jotx-float-image-empty {
96
+ display: flex;
97
+ flex-direction: column;
98
+ align-items: center;
99
+ gap: 12px;
100
+ padding: 40px;
101
+ border: 2px dashed var(--jotx-border, #ddd);
102
+ border-radius: 12px;
103
+ background: var(--jotx-backgroundSecondary, #f9f9f9);
104
+ }
105
+
106
+ .jotx-image-upload-button {
107
+ padding: 12px 24px;
108
+ font-size: 14px;
109
+ color: white;
110
+ background: var(--jotx-primary, #007bff);
111
+ border: none;
112
+ border-radius: 8px;
113
+ cursor: pointer;
114
+ transition: background 0.2s;
115
+ }
116
+
117
+ .jotx-image-upload-button:hover:not(:disabled) {
118
+ background: var(--jotx-primaryHover, #0056b3);
119
+ }
120
+
121
+ .jotx-image-upload-button:disabled {
122
+ opacity: 0.5;
123
+ cursor: not-allowed;
124
+ }
125
+
126
+ .jotx-image-error {
127
+ color: var(--jotx-error, #dc3545);
128
+ font-size: 12px;
129
+ }
130
+
131
+ /* === FLOAT IMAGE BLOCK === */
132
+ /* Container holds both the floating image and the content */
133
+ .jotx-float-image-container {
134
+ margin: 0 0 24px 0;
135
+ padding: 16px;
136
+ border: 1px solid transparent;
137
+ border-radius: 8px;
138
+ position: relative;
139
+ overflow: auto; /* Ensures container wraps floated children */
140
+ }
141
+
142
+ .jotx-float-image-container.selected {
143
+ border-color: var(--jotx-primary, #007bff);
144
+ background: var(--jotx-backgroundSecondary, rgba(0, 123, 255, 0.05));
145
+ }
146
+
147
+ /* The image wrapper floats left or right */
148
+ .jotx-float-image-wrapper {
149
+ position: relative;
150
+ max-width: 50%;
151
+ margin-bottom: 16px;
152
+ }
153
+
154
+ .jotx-float-image-wrapper.jotx-float-left {
155
+ float: left;
156
+ margin-right: 20px;
157
+ }
158
+
159
+ .jotx-float-image-wrapper.jotx-float-right {
160
+ float: right;
161
+ margin-left: 20px;
162
+ }
163
+
164
+ .jotx-float-image-wrapper img {
165
+ display: block;
166
+ width: 100%;
167
+ height: auto;
168
+ border-radius: 8px;
169
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
170
+ }
171
+
172
+ .jotx-float-image-wrapper .jotx-image-caption {
173
+ font-size: 12px;
174
+ margin-top: 8px;
175
+ }
176
+
177
+ /* Editable content area wraps around the floating image */
178
+ .jotx-float-image-content {
179
+ min-height: 100px;
180
+ padding: 8px;
181
+ /* Content will naturally wrap around the floated image */
182
+ }
183
+
184
+ .jotx-float-image-content p {
185
+ margin: 0 0 12px 0;
186
+ }
187
+
188
+ .jotx-float-image-content p:last-child {
189
+ margin-bottom: 0;
190
+ }
191
+
192
+ /* === VIDEO BLOCK === */
193
+ .jotx-video-block {
194
+ margin: 20px 0;
195
+ position: relative;
196
+ }
197
+
198
+ .jotx-video-block.selected {
199
+ outline: 2px solid var(--jotx-primary, #007bff);
200
+ outline-offset: 4px;
201
+ }
202
+
203
+ .jotx-video-title {
204
+ margin-bottom: 12px;
205
+ font-size: 16px;
206
+ font-weight: 600;
207
+ color: var(--jotx-text, #333);
208
+ }
209
+
210
+ .jotx-video-wrapper {
211
+ position: relative;
212
+ margin: 0 auto;
213
+ border-radius: 12px;
214
+ overflow: hidden;
215
+ background: #000;
216
+ min-height: 450px; /* Ensure wrapper is visible */
217
+ }
218
+
219
+ .jotx-video-wrapper iframe,
220
+ .jotx-video-wrapper video {
221
+ display: block;
222
+ width: 100%;
223
+ min-height: 450px; /* Ensure iframe is visible */
224
+ border: none;
225
+ }
226
+
227
+ .jotx-video-controls {
228
+ display: flex;
229
+ gap: 12px;
230
+ margin-top: 12px;
231
+ padding: 12px;
232
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
233
+ border-radius: 8px;
234
+ }
235
+
236
+ .jotx-video-controls input,
237
+ .jotx-video-controls button {
238
+ padding: 8px 12px;
239
+ font-size: 14px;
240
+ border: 1px solid var(--jotx-border, #ddd);
241
+ border-radius: 6px;
242
+ background: var(--vscode-input-background, white);
243
+ color: var(--vscode-input-foreground, #333);
244
+ }
245
+
246
+ .jotx-video-controls input::placeholder {
247
+ color: var(--vscode-input-placeholderForeground, #999);
248
+ }
249
+
250
+ .jotx-video-controls button {
251
+ cursor: pointer;
252
+ background: var(--jotx-primary, #007bff);
253
+ color: white;
254
+ border: none;
255
+ }
256
+
257
+ .jotx-video-controls button:hover {
258
+ background: var(--jotx-primaryHover, #0056b3);
259
+ }
260
+
261
+ /* Empty state */
262
+ .jotx-video-empty {
263
+ display: flex;
264
+ flex-direction: column;
265
+ align-items: center;
266
+ gap: 16px;
267
+ padding: 40px;
268
+ border: 2px dashed var(--jotx-border, #ddd);
269
+ border-radius: 12px;
270
+ background: var(--jotx-backgroundSecondary, #f9f9f9);
271
+ }
272
+
273
+ .jotx-video-input-group {
274
+ display: flex;
275
+ flex-direction: column;
276
+ gap: 12px;
277
+ width: 100%;
278
+ max-width: 500px;
279
+ }
280
+
281
+ .jotx-video-input-group input {
282
+ padding: 12px;
283
+ font-size: 14px;
284
+ border: 1px solid var(--jotx-border, #ddd);
285
+ border-radius: 8px;
286
+ background: var(--vscode-input-background, white);
287
+ color: var(--vscode-input-foreground, #333);
288
+ }
289
+
290
+ .jotx-video-input-group input::placeholder {
291
+ color: var(--vscode-input-placeholderForeground, #999);
292
+ }
293
+
294
+ .jotx-video-empty button {
295
+ padding: 12px 24px;
296
+ font-size: 14px;
297
+ color: white;
298
+ background: var(--jotx-primary, #007bff);
299
+ border: none;
300
+ border-radius: 8px;
301
+ cursor: pointer;
302
+ }
303
+
304
+ .jotx-video-empty button:hover {
305
+ background: var(--jotx-primaryHover, #0056b3);
306
+ }
307
+
308
+ .jotx-video-error {
309
+ color: var(--jotx-error, #dc3545);
310
+ font-size: 14px;
311
+ }
312
+
313
+ /* === YOUTUBE THUMBNAIL PREVIEW === */
314
+ .jotx-youtube-thumbnail {
315
+ position: relative;
316
+ cursor: pointer;
317
+ border-radius: 12px;
318
+ overflow: hidden;
319
+ background: #000;
320
+ transition: transform 0.2s, box-shadow 0.2s;
321
+ }
322
+
323
+ .jotx-youtube-thumbnail:hover {
324
+ transform: scale(1.01);
325
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
326
+ }
327
+
328
+ .jotx-youtube-thumbnail img {
329
+ display: block;
330
+ width: 100%;
331
+ height: auto;
332
+ min-height: 200px;
333
+ object-fit: cover;
334
+ }
335
+
336
+ .jotx-youtube-play-overlay {
337
+ position: absolute;
338
+ top: 50%;
339
+ left: 50%;
340
+ transform: translate(-50%, -50%);
341
+ transition: transform 0.2s;
342
+ }
343
+
344
+ .jotx-youtube-thumbnail:hover .jotx-youtube-play-overlay {
345
+ transform: translate(-50%, -50%) scale(1.1);
346
+ }
347
+
348
+ .jotx-youtube-play-overlay svg {
349
+ filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.4));
350
+ }
351
+
352
+ .jotx-youtube-click-hint {
353
+ position: absolute;
354
+ bottom: 0;
355
+ left: 0;
356
+ right: 0;
357
+ padding: 12px 16px;
358
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.8), transparent);
359
+ color: white;
360
+ font-size: 13px;
361
+ font-weight: 500;
362
+ text-align: center;
363
+ opacity: 0;
364
+ transition: opacity 0.2s;
365
+ }
366
+
367
+ .jotx-youtube-thumbnail:hover .jotx-youtube-click-hint {
368
+ opacity: 1;
369
+ }
370
+
371
+ .jotx-youtube-info {
372
+ display: flex;
373
+ align-items: center;
374
+ gap: 12px;
375
+ margin-top: 12px;
376
+ padding: 8px 12px;
377
+ background: var(--jotx-backgroundSecondary, #f5f5f5);
378
+ border-radius: 8px;
379
+ }
380
+
381
+ .jotx-youtube-badge {
382
+ display: inline-flex;
383
+ align-items: center;
384
+ padding: 4px 10px;
385
+ font-size: 11px;
386
+ font-weight: 600;
387
+ text-transform: uppercase;
388
+ letter-spacing: 0.5px;
389
+ color: white;
390
+ background: #FF0000;
391
+ border-radius: 4px;
392
+ }
393
+
394
+ .jotx-youtube-link {
395
+ color: var(--vscode-textLink-foreground, #007bff);
396
+ font-size: 12px;
397
+ text-decoration: none;
398
+ white-space: nowrap;
399
+ overflow: hidden;
400
+ text-overflow: ellipsis;
401
+ }
402
+
403
+ .jotx-youtube-link:hover {
404
+ text-decoration: underline;
405
+ }
406
+
407
+ .youtube-preview .jotx-video-controls {
408
+ margin-top: 12px;
409
+ }
410
+
411
+ /* Responsive */
412
+ @media (max-width: 768px) {
413
+ .jotx-float-left,
414
+ .jotx-float-right {
415
+ float: none;
416
+ max-width: 100%;
417
+ margin-left: 0;
418
+ margin-right: 0;
419
+ }
420
+
421
+ .jotx-video-wrapper {
422
+ width: 100% !important;
423
+ }
424
+
425
+ .jotx-youtube-info {
426
+ flex-direction: column;
427
+ align-items: flex-start;
428
+ }
429
+ }
430
+
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+