mljr-css 1.0.14 → 1.1.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 (54) hide show
  1. package/dist/mljr.css +5573 -2766
  2. package/dist/mljr.min.css +2 -3
  3. package/package.json +1 -1
  4. package/src/components/alert-dialog.css +129 -0
  5. package/src/components/alert.css +41 -22
  6. package/src/components/animated-headline.css +118 -0
  7. package/src/components/audio-visualizer.css +96 -0
  8. package/src/components/autocomplete.css +143 -0
  9. package/src/components/avatar.css +66 -0
  10. package/src/components/badge.css +82 -41
  11. package/src/components/breadcrumb.css +3 -0
  12. package/src/components/button.css +80 -58
  13. package/src/components/calendar.css +169 -0
  14. package/src/components/card.css +139 -92
  15. package/src/components/chart.css +194 -0
  16. package/src/components/checkbox.css +1 -1
  17. package/src/components/chip.css +33 -18
  18. package/src/components/context-menu.css +118 -0
  19. package/src/components/cookie-banner.css +285 -0
  20. package/src/components/diff-viewer.css +199 -0
  21. package/src/components/dock.css +211 -0
  22. package/src/components/drop-zone.css +257 -0
  23. package/src/components/footer.css +51 -5
  24. package/src/components/gauge.css +63 -0
  25. package/src/components/image-compare.css +141 -0
  26. package/src/components/infinite-scroll.css +36 -0
  27. package/src/components/inview.css +118 -0
  28. package/src/components/lazy-image.css +60 -0
  29. package/src/components/legal-page.css +346 -0
  30. package/src/components/map-embed.css +92 -0
  31. package/src/components/marquee.css +112 -0
  32. package/src/components/navbar.css +357 -0
  33. package/src/components/navigation-rail.css +220 -0
  34. package/src/components/notification-center.css +306 -0
  35. package/src/components/number-input.css +134 -0
  36. package/src/components/number-ticker.css +65 -0
  37. package/src/components/pagination.css +59 -0
  38. package/src/components/pdf-viewer.css +163 -0
  39. package/src/components/pin-input.css +153 -0
  40. package/src/components/resizable.css +82 -0
  41. package/src/components/rich-text-editor.css +216 -0
  42. package/src/components/table-of-content.css +107 -0
  43. package/src/components/table.css +116 -0
  44. package/src/components/tabs.css +93 -3
  45. package/src/components/toast.css +30 -0
  46. package/src/components/tooltip.css +8 -0
  47. package/src/components/tree-view.css +270 -0
  48. package/src/components/turnstile.css +113 -0
  49. package/src/components/video-player.css +266 -0
  50. package/src/index.css +35 -1
  51. package/src/layout/footer.css +2 -2
  52. package/src/layout/navbar.css +187 -113
  53. package/src/layout/sidebar.css +27 -0
  54. package/src/themes/variables.css +146 -97
@@ -0,0 +1,107 @@
1
+ /* =====================================================
2
+ TableOfContent - Auto-generated navigation from headings
3
+ ===================================================== */
4
+
5
+ .mljr-toc {
6
+ background: var(--mljr-bg-secondary);
7
+ border: 1px solid var(--mljr-border);
8
+ border-radius: var(--mljr-radius-md);
9
+ box-shadow: var(--mljr-clay-shadow-sm);
10
+ padding: 1rem 1.25rem;
11
+ font-size: var(--mljr-text-sm);
12
+ }
13
+
14
+ .mljr-toc-title {
15
+ font-size: var(--mljr-text-xs);
16
+ font-weight: 700;
17
+ text-transform: uppercase;
18
+ letter-spacing: 0.08em;
19
+ color: var(--mljr-text-muted);
20
+ margin-bottom: 0.75rem;
21
+ }
22
+
23
+ .mljr-toc-list {
24
+ list-style: none;
25
+ margin: 0;
26
+ padding: 0;
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 0.125rem;
30
+ }
31
+
32
+ .mljr-toc-item {
33
+ display: flex;
34
+ align-items: flex-start;
35
+ }
36
+
37
+ .mljr-toc-link {
38
+ display: block;
39
+ padding: 0.25rem 0.5rem;
40
+ border-radius: var(--mljr-radius-sm);
41
+ color: var(--mljr-text-muted);
42
+ text-decoration: none;
43
+ transition: all var(--mljr-transition-fast);
44
+ font-weight: 400;
45
+ line-height: 1.4;
46
+ width: 100%;
47
+ }
48
+
49
+ .mljr-toc-link:hover {
50
+ color: var(--mljr-primary-600);
51
+ background: var(--mljr-primary-50);
52
+ }
53
+
54
+ .mljr-toc-link-active {
55
+ color: var(--mljr-primary-600);
56
+ background: var(--mljr-primary-50);
57
+ font-weight: 600;
58
+ }
59
+
60
+ /* Indent by heading level */
61
+ .mljr-toc-h1 { padding-left: 0.5rem; font-weight: 600; }
62
+ .mljr-toc-h2 { padding-left: 0.5rem; }
63
+ .mljr-toc-h3 { padding-left: 1.5rem; font-size: var(--mljr-text-xs); }
64
+ .mljr-toc-h4 { padding-left: 2.5rem; font-size: var(--mljr-text-xs); }
65
+ .mljr-toc-h5 { padding-left: 3rem; font-size: var(--mljr-text-xs); }
66
+ .mljr-toc-h6 { padding-left: 3.5rem; font-size: var(--mljr-text-xs); }
67
+
68
+ /* Sticky variant */
69
+ .mljr-toc-sticky {
70
+ position: sticky;
71
+ top: 1rem;
72
+ max-height: calc(100vh - 2rem);
73
+ overflow-y: auto;
74
+ }
75
+
76
+ /* Collapsible indicator */
77
+ .mljr-toc-toggle {
78
+ flex-shrink: 0;
79
+ background: none;
80
+ border: none;
81
+ cursor: pointer;
82
+ color: var(--mljr-text-muted);
83
+ padding: 0.25rem;
84
+ border-radius: var(--mljr-radius-sm);
85
+ transition: color var(--mljr-transition-fast);
86
+ display: flex;
87
+ align-items: center;
88
+ }
89
+
90
+ .mljr-toc-toggle:hover {
91
+ color: var(--mljr-text);
92
+ }
93
+
94
+ /* Dark mode */
95
+ .dark .mljr-toc,
96
+ [data-theme="dark"] .mljr-toc {
97
+ background: var(--mljr-bg-secondary);
98
+ border-color: var(--mljr-border);
99
+ }
100
+
101
+ .dark .mljr-toc-link:hover,
102
+ .dark .mljr-toc-link-active,
103
+ [data-theme="dark"] .mljr-toc-link:hover,
104
+ [data-theme="dark"] .mljr-toc-link-active {
105
+ background: color-mix(in srgb, var(--mljr-primary-500) 15%, transparent);
106
+ color: var(--mljr-primary-300);
107
+ }
@@ -171,6 +171,83 @@
171
171
  }
172
172
  }
173
173
 
174
+ /* Filter bar */
175
+ .mljr-table-filter-bar {
176
+ display: flex;
177
+ align-items: center;
178
+ gap: var(--mljr-space-3);
179
+ padding: var(--mljr-space-3) var(--mljr-space-4);
180
+ border-bottom: 1px solid var(--mljr-border);
181
+ }
182
+
183
+ .mljr-table-filter-count {
184
+ font-size: var(--mljr-text-xs);
185
+ color: var(--mljr-text-muted);
186
+ white-space: nowrap;
187
+ }
188
+
189
+ /* Pagination */
190
+ .mljr-table-pagination {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: space-between;
194
+ padding: var(--mljr-space-3) var(--mljr-space-4);
195
+ border-top: 1px solid var(--mljr-border);
196
+ flex-wrap: wrap;
197
+ gap: var(--mljr-space-2);
198
+ }
199
+
200
+ .mljr-table-pagination-info {
201
+ font-size: var(--mljr-text-sm);
202
+ color: var(--mljr-text-secondary);
203
+ }
204
+
205
+ .mljr-table-pagination-controls {
206
+ display: flex;
207
+ align-items: center;
208
+ gap: var(--mljr-space-1);
209
+ }
210
+
211
+ .mljr-table-pagination-btn {
212
+ display: inline-flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ min-width: 32px;
216
+ height: 32px;
217
+ padding: 0 var(--mljr-space-2);
218
+ border-radius: var(--mljr-radius-md);
219
+ font-size: var(--mljr-text-sm);
220
+ font-weight: 500;
221
+ border: 1px solid var(--mljr-border);
222
+ background: var(--mljr-bg);
223
+ color: var(--mljr-text-secondary);
224
+ cursor: pointer;
225
+ transition: all var(--mljr-transition-fast);
226
+ font-family: inherit;
227
+ }
228
+
229
+ .mljr-table-pagination-btn:hover:not(:disabled) {
230
+ background: var(--mljr-bg-secondary);
231
+ color: var(--mljr-text);
232
+ box-shadow: var(--mljr-clay-shadow-xs);
233
+ }
234
+
235
+ .mljr-table-pagination-btn:disabled {
236
+ opacity: 0.4;
237
+ cursor: not-allowed;
238
+ }
239
+
240
+ .mljr-table-pagination-btn-active {
241
+ background: linear-gradient(135deg, var(--mljr-primary-500), var(--mljr-primary-600));
242
+ color: white !important;
243
+ border-color: var(--mljr-primary-500);
244
+ box-shadow: var(--mljr-clay-shadow-sm);
245
+ }
246
+
247
+ .mljr-table-pagination-btn-active:hover {
248
+ background: linear-gradient(135deg, var(--mljr-primary-600), var(--mljr-primary-700)) !important;
249
+ }
250
+
174
251
  /* Dark mode */
175
252
  .dark .mljr-table-wrapper,
176
253
  [data-theme="dark"] .mljr-table-wrapper {
@@ -182,3 +259,42 @@
182
259
  [data-theme="dark"] .mljr-table th {
183
260
  background: var(--mljr-bg-tertiary);
184
261
  }
262
+
263
+
264
+ /* ── Column Resizing ── */
265
+ .mljr-table-th {
266
+ position: relative;
267
+ }
268
+
269
+ .mljr-table-resize-handle {
270
+ position: absolute;
271
+ top: 0;
272
+ right: 0;
273
+ width: 5px;
274
+ height: 100%;
275
+ cursor: col-resize;
276
+ user-select: none;
277
+ z-index: 1;
278
+ }
279
+
280
+ .mljr-table-resize-handle::after {
281
+ content: '';
282
+ position: absolute;
283
+ right: 0;
284
+ top: 20%;
285
+ height: 60%;
286
+ width: 2px;
287
+ background: var(--mljr-border);
288
+ border-radius: 1px;
289
+ transition: background var(--mljr-transition-fast);
290
+ }
291
+
292
+ .mljr-table-resize-handle:hover::after,
293
+ .mljr-table-resize-handle.mljr-resizing::after {
294
+ background: var(--mljr-primary-400);
295
+ }
296
+
297
+ .mljr-table-resizing {
298
+ cursor: col-resize !important;
299
+ user-select: none !important;
300
+ }
@@ -85,9 +85,9 @@
85
85
  color: var(--mljr-secondary-600);
86
86
  background: linear-gradient(135deg, var(--mljr-secondary-50) 0%, var(--mljr-secondary-100) 100%);
87
87
  box-shadow:
88
- 6px 6px 12px rgba(168, 85, 247, 0.15),
89
- -4px -4px 10px rgba(255, 255, 255, 0.9),
90
- inset 0px 2px 4px rgba(255, 255, 255, 0.5);
88
+ 5px 5px 10px rgba(168, 85, 247, 0.18),
89
+ inset -5px -5px 10px rgba(80, 30, 140, 0.08),
90
+ inset 5px 5px 10px rgba(255, 255, 255, 0.5);
91
91
  }
92
92
 
93
93
  .dark .mljr-tabs-secondary .mljr-tab[aria-selected="true"],
@@ -217,3 +217,93 @@
217
217
  padding: var(--mljr-space-3) var(--mljr-space-5);
218
218
  font-size: var(--mljr-text-base);
219
219
  }
220
+
221
+ /* Scrollable Tabs */
222
+ .mljr-tabs-scrollable .mljr-tabs-list {
223
+ overflow-x: auto;
224
+ overflow-y: hidden;
225
+ scrollbar-width: thin;
226
+ scrollbar-color: var(--mljr-border) transparent;
227
+ }
228
+
229
+ .mljr-tabs-scrollable .mljr-tabs-list::-webkit-scrollbar {
230
+ height: 6px;
231
+ }
232
+
233
+ .mljr-tabs-scrollable .mljr-tabs-list::-webkit-scrollbar-track {
234
+ background: transparent;
235
+ margin: var(--mljr-space-1);
236
+ }
237
+
238
+ .mljr-tabs-scrollable .mljr-tabs-list::-webkit-scrollbar-thumb {
239
+ background: var(--mljr-border);
240
+ border-radius: var(--mljr-radius-full);
241
+ }
242
+
243
+ .mljr-tabs-scrollable .mljr-tabs-list::-webkit-scrollbar-thumb:hover {
244
+ background: var(--mljr-text-secondary);
245
+ }
246
+
247
+ /* Tab Label */
248
+ .mljr-tab-label {
249
+ display: inline-flex;
250
+ align-items: center;
251
+ }
252
+
253
+ /* Tab Badge */
254
+ .mljr-tab-badge {
255
+ display: inline-flex;
256
+ align-items: center;
257
+ justify-content: center;
258
+ min-width: 1.25rem;
259
+ height: 1.25rem;
260
+ padding: 0 var(--mljr-space-1);
261
+ margin-left: var(--mljr-space-2);
262
+ background: linear-gradient(145deg, var(--mljr-bg-tertiary) 0%, var(--mljr-bg-secondary) 100%);
263
+ color: var(--mljr-text-secondary);
264
+ font-size: var(--mljr-text-xs);
265
+ font-weight: 600;
266
+ border-radius: var(--mljr-radius-full);
267
+ border: 1px solid var(--mljr-border);
268
+ box-shadow: var(--mljr-clay-inset-sm);
269
+ transition: all var(--mljr-transition-fast);
270
+ }
271
+
272
+ .mljr-tab-active .mljr-tab-badge {
273
+ background: linear-gradient(145deg, var(--mljr-primary-500) 0%, var(--mljr-primary-600) 100%);
274
+ color: white;
275
+ border-color: var(--mljr-primary-600);
276
+ box-shadow: var(--mljr-clay-shadow-xs);
277
+ }
278
+
279
+ .mljr-tabs-secondary .mljr-tab-active .mljr-tab-badge {
280
+ background: linear-gradient(145deg, var(--mljr-secondary-500) 0%, var(--mljr-secondary-600) 100%);
281
+ border-color: var(--mljr-secondary-600);
282
+ }
283
+
284
+ /* Close Button */
285
+ .mljr-tab-close {
286
+ display: inline-flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ width: 1.25rem;
290
+ height: 1.25rem;
291
+ padding: 0;
292
+ margin-left: var(--mljr-space-2);
293
+ background: transparent;
294
+ border: none;
295
+ border-radius: var(--mljr-radius-sm);
296
+ color: var(--mljr-text-secondary);
297
+ cursor: pointer;
298
+ transition: all var(--mljr-transition-fast);
299
+ }
300
+
301
+ .mljr-tab-close:hover {
302
+ background: linear-gradient(145deg, var(--mljr-error) 0%, #dc2626 100%);
303
+ color: white;
304
+ box-shadow: var(--mljr-clay-shadow-xs);
305
+ }
306
+
307
+ .mljr-tab-closable {
308
+ padding-right: var(--mljr-space-2);
309
+ }
@@ -285,6 +285,36 @@
285
285
  text-decoration: underline;
286
286
  }
287
287
 
288
+ /* Toast Actions (buttons) */
289
+ .mljr-toast-actions {
290
+ display: flex;
291
+ gap: var(--mljr-space-2);
292
+ margin-top: var(--mljr-space-2);
293
+ flex-wrap: wrap;
294
+ }
295
+
296
+ .mljr-toast-action-btn {
297
+ padding: var(--mljr-space-1) var(--mljr-space-3);
298
+ font-size: var(--mljr-text-xs);
299
+ font-weight: 600;
300
+ color: white;
301
+ background: linear-gradient(145deg, var(--mljr-primary-500) 0%, var(--mljr-primary-600) 100%);
302
+ border: none;
303
+ border-radius: var(--mljr-radius-md);
304
+ cursor: pointer;
305
+ transition: all var(--mljr-transition-fast);
306
+ box-shadow: var(--mljr-clay-shadow-xs);
307
+ }
308
+
309
+ .mljr-toast-action-btn:hover {
310
+ transform: translateY(-1px);
311
+ box-shadow: var(--mljr-clay-shadow-sm);
312
+ }
313
+
314
+ .mljr-toast-action-btn:active {
315
+ transform: translateY(0);
316
+ }
317
+
288
318
  /* Dark mode */
289
319
  .dark .mljr-toast,
290
320
  [data-theme="dark"] .mljr-toast {
@@ -90,6 +90,14 @@
90
90
  0 0 12px rgba(20, 184, 166, 0.2);
91
91
  }
92
92
 
93
+ /* Rich content tooltip */
94
+ .mljr-tooltip-rich .mljr-tooltip-content {
95
+ white-space: normal;
96
+ max-width: 280px;
97
+ padding: var(--mljr-space-3) var(--mljr-space-4);
98
+ pointer-events: auto;
99
+ }
100
+
93
101
  /* Dark mode */
94
102
  .dark .mljr-tooltip-content,
95
103
  [data-theme="dark"] .mljr-tooltip-content {
@@ -0,0 +1,270 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - TreeView Component
3
+ Claymorphism: Hierarchical data display
4
+ ============================================ */
5
+
6
+ .mljr-tree {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 2px;
10
+ list-style: none;
11
+ padding: 0;
12
+ margin: 0;
13
+ width: 100%;
14
+ }
15
+
16
+ /* Tree node */
17
+ .mljr-tree-node {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 2px;
21
+ }
22
+
23
+ /* Tree node row */
24
+ .mljr-tree-node-row {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: var(--mljr-space-2);
28
+ padding: var(--mljr-space-2) var(--mljr-space-2);
29
+ border-radius: var(--mljr-radius-md);
30
+ cursor: pointer;
31
+ color: var(--mljr-text);
32
+ background: transparent;
33
+ border: none;
34
+ font-family: inherit;
35
+ font-size: var(--mljr-text-sm);
36
+ text-align: left;
37
+ width: 100%;
38
+ transition: all var(--mljr-transition-fast);
39
+ user-select: none;
40
+ }
41
+
42
+ .mljr-tree-node-row:hover {
43
+ background: linear-gradient(
44
+ 145deg,
45
+ var(--mljr-bg-secondary) 0%,
46
+ var(--mljr-bg-tertiary) 100%
47
+ );
48
+ box-shadow: var(--mljr-clay-shadow-xs);
49
+ transform: translateX(2px);
50
+ }
51
+
52
+ .mljr-tree-node-row-selected {
53
+ background: linear-gradient(
54
+ 145deg,
55
+ var(--mljr-primary-50) 0%,
56
+ var(--mljr-primary-100) 100%
57
+ );
58
+ color: var(--mljr-primary-700);
59
+ box-shadow: var(--mljr-clay-shadow-sm);
60
+ }
61
+
62
+ .mljr-tree-node-row-selected:hover {
63
+ background: linear-gradient(
64
+ 145deg,
65
+ var(--mljr-primary-100) 0%,
66
+ var(--mljr-primary-200) 100%
67
+ );
68
+ }
69
+
70
+ .dark .mljr-tree-node-row-selected {
71
+ background: linear-gradient(
72
+ 145deg,
73
+ rgba(249, 115, 22, 0.15) 0%,
74
+ rgba(249, 115, 22, 0.08) 100%
75
+ );
76
+ color: var(--mljr-primary-400);
77
+ }
78
+
79
+ /* Expand/collapse toggle button */
80
+ .mljr-tree-toggle {
81
+ display: flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ width: 20px;
85
+ height: 20px;
86
+ flex-shrink: 0;
87
+ border-radius: var(--mljr-radius-sm);
88
+ cursor: pointer;
89
+ color: var(--mljr-text-secondary);
90
+ background: transparent;
91
+ border: none;
92
+ padding: 0;
93
+ font-family: inherit;
94
+ transition: all var(--mljr-transition-fast);
95
+ }
96
+
97
+ .mljr-tree-toggle:hover {
98
+ background: var(--mljr-bg-secondary);
99
+ color: var(--mljr-text);
100
+ }
101
+
102
+ .mljr-tree-toggle svg {
103
+ transition: transform var(--mljr-transition-fast);
104
+ }
105
+
106
+ .mljr-tree-toggle-open svg {
107
+ transform: rotate(90deg);
108
+ }
109
+
110
+ /* Spacer for leaf nodes (no children) */
111
+ .mljr-tree-spacer {
112
+ width: 20px;
113
+ height: 20px;
114
+ flex-shrink: 0;
115
+ }
116
+
117
+ /* Checkbox */
118
+ .mljr-tree-checkbox {
119
+ width: 16px;
120
+ height: 16px;
121
+ flex-shrink: 0;
122
+ border-radius: 4px;
123
+ border: 2px solid var(--mljr-border-strong);
124
+ background: var(--mljr-bg);
125
+ cursor: pointer;
126
+ appearance: none;
127
+ -webkit-appearance: none;
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ transition: all var(--mljr-transition-fast);
132
+ }
133
+
134
+ .mljr-tree-checkbox:checked {
135
+ background: var(--mljr-primary-500);
136
+ border-color: var(--mljr-primary-500);
137
+ }
138
+
139
+ .mljr-tree-checkbox:indeterminate {
140
+ background: var(--mljr-primary-200);
141
+ border-color: var(--mljr-primary-400);
142
+ }
143
+
144
+ /* Node icon */
145
+ .mljr-tree-node-icon {
146
+ display: flex;
147
+ align-items: center;
148
+ justify-content: center;
149
+ flex-shrink: 0;
150
+ width: 18px;
151
+ height: 18px;
152
+ color: var(--mljr-text-secondary);
153
+ }
154
+
155
+ /* Node label */
156
+ .mljr-tree-node-label {
157
+ flex: 1;
158
+ font-size: var(--mljr-text-sm);
159
+ font-weight: 400;
160
+ color: inherit;
161
+ overflow: hidden;
162
+ text-overflow: ellipsis;
163
+ white-space: nowrap;
164
+ }
165
+
166
+ /* Node count/badge */
167
+ .mljr-tree-node-count {
168
+ font-size: var(--mljr-text-xs);
169
+ color: var(--mljr-text-muted);
170
+ background: var(--mljr-bg-secondary);
171
+ padding: 1px 6px;
172
+ border-radius: var(--mljr-radius-full);
173
+ box-shadow: var(--mljr-clay-shadow-xs);
174
+ flex-shrink: 0;
175
+ }
176
+
177
+ /* Children container */
178
+ .mljr-tree-children {
179
+ display: flex;
180
+ flex-direction: column;
181
+ gap: 2px;
182
+ padding-left: var(--mljr-space-5);
183
+ margin-left: 10px;
184
+ border-left: 2px solid var(--mljr-border);
185
+ border-radius: 0 0 0 2px;
186
+ margin-top: 2px;
187
+ }
188
+
189
+ /* Connecting lines */
190
+ .mljr-tree-line .mljr-tree-children {
191
+ border-left: 2px solid var(--mljr-primary-200);
192
+ }
193
+
194
+ .dark .mljr-tree-line .mljr-tree-children {
195
+ border-left: 2px solid rgba(249, 115, 22, 0.2);
196
+ }
197
+
198
+ /* Disabled node */
199
+ .mljr-tree-node-row-disabled {
200
+ opacity: 0.4;
201
+ cursor: not-allowed;
202
+ }
203
+
204
+ .mljr-tree-node-row-disabled:hover {
205
+ background: transparent;
206
+ box-shadow: none;
207
+ transform: none;
208
+ }
209
+
210
+ /* Loading node */
211
+ .mljr-tree-node-loading {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: var(--mljr-space-2);
215
+ padding: var(--mljr-space-2) var(--mljr-space-2);
216
+ color: var(--mljr-text-muted);
217
+ font-size: var(--mljr-text-sm);
218
+ }
219
+
220
+ /* Search match highlight */
221
+ .mljr-tree-node-highlight {
222
+ background: var(--mljr-warning-100);
223
+ border-radius: 2px;
224
+ padding: 0 2px;
225
+ }
226
+
227
+ .dark .mljr-tree-node-highlight {
228
+ background: rgba(251, 191, 36, 0.2);
229
+ }
230
+
231
+ /* Compact variant */
232
+ .mljr-tree-compact .mljr-tree-node-row {
233
+ padding: var(--mljr-space-1) var(--mljr-space-2);
234
+ }
235
+
236
+ .mljr-tree-compact .mljr-tree-children {
237
+ padding-left: var(--mljr-space-4);
238
+ }
239
+
240
+ /* ── Drag & Drop ── */
241
+ .mljr-tree-node-dragging > .mljr-tree-node-row {
242
+ opacity: 0.4;
243
+ pointer-events: none;
244
+ }
245
+
246
+ .mljr-tree-node-row[draggable="true"] {
247
+ cursor: grab;
248
+ }
249
+
250
+ .mljr-tree-node-row[draggable="true"]:active {
251
+ cursor: grabbing;
252
+ }
253
+
254
+ /* Drop target indicators */
255
+ .mljr-tree-node-drop-before > .mljr-tree-node-row {
256
+ border-top: 2px solid var(--mljr-primary-500);
257
+ border-radius: var(--mljr-radius-sm) var(--mljr-radius-sm) 0 0;
258
+ }
259
+
260
+ .mljr-tree-node-drop-after > .mljr-tree-node-row {
261
+ border-bottom: 2px solid var(--mljr-primary-500);
262
+ border-radius: 0 0 var(--mljr-radius-sm) var(--mljr-radius-sm);
263
+ }
264
+
265
+ .mljr-tree-node-drop-inside > .mljr-tree-node-row {
266
+ background: color-mix(in srgb, var(--mljr-primary-500) 12%, var(--mljr-bg-secondary)) !important;
267
+ outline: 2px solid var(--mljr-primary-400);
268
+ outline-offset: -2px;
269
+ border-radius: var(--mljr-radius-sm);
270
+ }