@inversestudio/neptune-components 1.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 (42) hide show
  1. package/README.md +2 -0
  2. package/components/data-display/AppPreview.jsx +150 -0
  3. package/components/data-display/DataTable.jsx +65 -0
  4. package/components/data-display/FileTree.jsx +123 -0
  5. package/components/data-display/KpiCard.jsx +57 -0
  6. package/components/data-display/VersionRow.jsx +103 -0
  7. package/components/feedback/Avatar.jsx +28 -0
  8. package/components/feedback/Badge.jsx +32 -0
  9. package/components/feedback/ChatMessage.jsx +42 -0
  10. package/components/feedback/StatusDot.jsx +55 -0
  11. package/components/feedback/StatusIndicator.jsx +40 -0
  12. package/components/inputs/Button.jsx +48 -0
  13. package/components/inputs/Checkbox.jsx +90 -0
  14. package/components/inputs/FilterBar.jsx +64 -0
  15. package/components/inputs/IconButton.jsx +43 -0
  16. package/components/inputs/IconToggle.jsx +44 -0
  17. package/components/inputs/NaiaChatInput.jsx +173 -0
  18. package/components/inputs/NaiaSendButton.jsx +36 -0
  19. package/components/inputs/PillSelect.jsx +175 -0
  20. package/components/inputs/PropertyField.jsx +58 -0
  21. package/components/inputs/SuggestionPill.jsx +28 -0
  22. package/components/inputs/TextInput.jsx +96 -0
  23. package/components/inputs/Toggle.jsx +73 -0
  24. package/components/layout/AppHeader.jsx +56 -0
  25. package/components/layout/BottomBar.jsx +81 -0
  26. package/components/layout/Card.jsx +57 -0
  27. package/components/layout/Panel.jsx +26 -0
  28. package/components/layout/Toolbar.jsx +89 -0
  29. package/components/navigation/Breadcrumb.jsx +43 -0
  30. package/components/navigation/Dropdown.jsx +104 -0
  31. package/components/navigation/SidebarNav.jsx +82 -0
  32. package/components/navigation/SidebarTabs.jsx +99 -0
  33. package/components/navigation/TabBar.jsx +61 -0
  34. package/components/overlays/Modal.jsx +101 -0
  35. package/components/shared/index.jsx +112 -0
  36. package/index.css +3 -0
  37. package/index.js +50 -0
  38. package/neptune-components.css +1771 -0
  39. package/package.json +45 -0
  40. package/registry.json +1215 -0
  41. package/tokens/neptune-design-tokens.css +730 -0
  42. package/tokens/neptune-design-tokens.json +191 -0
@@ -0,0 +1,1771 @@
1
+ /* ═══════════════════════════════════════════════════════════════════════════
2
+ NEPTUNE COMPONENT STYLES
3
+ CSS-first styling for design system components.
4
+ All colors, spacing, and radii use --npt-* design tokens.
5
+ ═══════════════════════════════════════════════════════════════════════════ */
6
+
7
+ /* ── Shell — rem anchor ── */
8
+ .npt-shell {
9
+ height: 100vh;
10
+ display: flex;
11
+ flex-direction: column;
12
+ font-size: 16px; /* Anchor for rem-based tokens. All --npt-text-* resolve relative to this. */
13
+ font-family: var(--npt-font-sans);
14
+ background-color: var(--npt-surface-app);
15
+ color: var(--npt-text-primary);
16
+ }
17
+
18
+ /* ── Button ── */
19
+ .neptune-button {
20
+ border-radius: var(--npt-radius-md);
21
+ border: none;
22
+ cursor: pointer;
23
+ font-weight: var(--npt-font-weight-medium);
24
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
25
+ display: inline-flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ outline: none;
29
+ flex-shrink: 0;
30
+ opacity: 1;
31
+ }
32
+ .neptune-button:focus-visible {
33
+ outline: 2px solid var(--npt-border-focus);
34
+ outline-offset: 2px;
35
+ }
36
+ .neptune-button--sm { font-size: var(--npt-text-xs); padding: var(--npt-space-1) 10px; gap: var(--npt-space-1); }
37
+ .neptune-button--default { font-size: 13px; padding: 6px var(--npt-space-4); gap: 6px; }
38
+ .neptune-button--lg { font-size: var(--npt-text-sm); padding: var(--npt-space-2) var(--npt-space-5); gap: var(--npt-space-2); }
39
+
40
+ .neptune-button--primary { background: var(--npt-gradient-brand); color: var(--npt-text-on-accent); }
41
+ .neptune-button--primary:hover { background: var(--npt-accent-primary-hover); }
42
+ .neptune-button--primary:active { background: var(--npt-accent-primary-hover); opacity: 0.9; }
43
+
44
+ .neptune-button--secondary { border: 1px solid var(--npt-interactive-border); color: var(--npt-interactive-fg); background: var(--npt-interactive-bg); }
45
+ .neptune-button--secondary:hover { color: var(--npt-interactive-fg-hover); }
46
+ .neptune-button--secondary:active { background: var(--npt-surface-sunken); color: var(--npt-interactive-fg-hover); }
47
+
48
+ .neptune-button--tertiary { border: 1px solid var(--npt-interactive-border); color: var(--npt-interactive-fg); background: transparent; }
49
+ .neptune-button--tertiary:hover { background: var(--npt-surface-raised); color: var(--npt-interactive-fg-hover); }
50
+ .neptune-button--tertiary:active { background: var(--npt-surface-sunken); color: var(--npt-interactive-fg-hover); }
51
+
52
+ .neptune-button--ghost { border: none; color: var(--npt-interactive-fg); background: transparent; }
53
+ .neptune-button--ghost:hover { background: var(--npt-surface-raised); color: var(--npt-interactive-fg-hover); }
54
+ .neptune-button--ghost:active { background: var(--npt-surface-sunken); color: var(--npt-interactive-fg-hover); }
55
+
56
+ .neptune-button--danger { background: var(--npt-status-error); color: var(--npt-text-on-accent); border: none; }
57
+ .neptune-button--danger:hover { background: var(--npt-status-error-vivid); }
58
+ .neptune-button--danger:active { background: var(--npt-status-error-vivid); opacity: 0.9; }
59
+
60
+ .neptune-button:disabled,
61
+ .neptune-button--disabled {
62
+ background: var(--npt-surface-sunken) !important;
63
+ color: var(--npt-text-disabled) !important;
64
+ opacity: 0.6 !important;
65
+ cursor: not-allowed !important;
66
+ border: none !important;
67
+ }
68
+
69
+ /* ── IconButton ── */
70
+ .neptune-icon-button {
71
+ border-radius: var(--npt-radius-md);
72
+ border: none;
73
+ padding: 0;
74
+ cursor: pointer;
75
+ display: inline-flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
79
+ flex-shrink: 0;
80
+ outline: none;
81
+ opacity: 1;
82
+ }
83
+ .neptune-icon-button:focus-visible {
84
+ outline: 2px solid var(--npt-border-focus);
85
+ outline-offset: 2px;
86
+ }
87
+ .neptune-icon-button--default { width: 32px; height: 32px; }
88
+ .neptune-icon-button--sm { width: 24px; height: 24px; }
89
+
90
+ .neptune-icon-button--subtle { background: transparent; color: var(--npt-interactive-fg); }
91
+ .neptune-icon-button--subtle:hover { background: var(--npt-surface-raised); color: var(--npt-interactive-fg-hover); }
92
+ .neptune-icon-button--subtle:active { background: var(--npt-surface-sunken); }
93
+
94
+ .neptune-icon-button--outline { background: transparent; border: 1px solid var(--npt-interactive-border); color: var(--npt-interactive-fg); }
95
+ .neptune-icon-button--outline:hover { background: var(--npt-surface-raised); color: var(--npt-interactive-fg-hover); }
96
+ .neptune-icon-button--outline:active { background: var(--npt-surface-sunken); }
97
+
98
+ .neptune-icon-button--secondary { background: var(--npt-interactive-bg); color: var(--npt-interactive-fg); }
99
+ .neptune-icon-button--secondary:hover { color: var(--npt-interactive-fg-hover); }
100
+ .neptune-icon-button--secondary:active { background: var(--npt-surface-sunken); }
101
+
102
+ .neptune-icon-button--ghost { background: transparent; color: var(--npt-text-secondary); border: none; }
103
+ .neptune-icon-button--ghost:hover { background: var(--npt-surface-raised); color: var(--npt-text-primary); }
104
+ .neptune-icon-button--ghost:active { background: var(--npt-surface-sunken); }
105
+
106
+ .neptune-icon-button:disabled {
107
+ background: var(--npt-surface-sunken) !important;
108
+ color: var(--npt-text-disabled) !important;
109
+ opacity: 0.6 !important;
110
+ cursor: not-allowed !important;
111
+ }
112
+
113
+ /* ── IconToggle ── */
114
+ .neptune-icon-toggle {
115
+ border-radius: var(--npt-radius-md);
116
+ border: none;
117
+ padding: 0;
118
+ width: 32px;
119
+ height: 32px;
120
+ cursor: pointer;
121
+ display: inline-flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
125
+ flex-shrink: 0;
126
+ outline: none;
127
+ background: transparent;
128
+ color: var(--npt-interactive-fg);
129
+ }
130
+ .neptune-icon-toggle:hover { background: var(--npt-surface-raised); color: var(--npt-interactive-fg-hover); }
131
+ .neptune-icon-toggle:active { background: var(--npt-surface-sunken); }
132
+ .neptune-icon-toggle:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
133
+ .neptune-icon-toggle--pressed { background: var(--npt-surface-sunken); color: var(--npt-text-primary); }
134
+ .neptune-icon-toggle--pressed:hover { background: var(--npt-surface-raised); }
135
+ .neptune-icon-toggle:disabled {
136
+ opacity: 0.6 !important;
137
+ cursor: not-allowed !important;
138
+ background: transparent !important;
139
+ color: var(--npt-text-disabled) !important;
140
+ }
141
+
142
+ /* ── Badge ── */
143
+ .neptune-badge {
144
+ display: inline-block;
145
+ font-weight: var(--npt-font-weight-medium);
146
+ white-space: nowrap;
147
+ }
148
+ .neptune-badge--default-size { padding: 3px 10px; border-radius: 6px; font-size: var(--npt-text-xs); }
149
+ .neptune-badge--sm { padding: 2px var(--npt-space-2); border-radius: var(--npt-radius-sm); font-size: 11px; }
150
+
151
+ .neptune-badge--default { background: var(--npt-surface-overlay); color: var(--npt-text-secondary); }
152
+ .neptune-badge--success { background: var(--npt-status-success-subtle); color: var(--npt-status-success); }
153
+ .neptune-badge--warning { background: var(--npt-status-warning-subtle); color: var(--npt-status-warning); }
154
+ .neptune-badge--error { background: var(--npt-status-error-subtle); color: var(--npt-status-error); }
155
+ .neptune-badge--info { background: var(--npt-status-info-subtle); color: var(--npt-status-info); }
156
+ .neptune-badge--env-prod { background: var(--npt-status-info-subtle); color: var(--npt-accent-secondary); }
157
+ .neptune-badge--env-qa { background: var(--npt-status-warning-subtle); color: var(--npt-status-warning); }
158
+ .neptune-badge--env-dev { background: var(--npt-status-success-subtle); color: var(--npt-status-success); }
159
+ .neptune-badge--module-ui { background: var(--npt-status-info-subtle); color: var(--npt-status-info); }
160
+ .neptune-badge--module-script { background: var(--npt-status-success-subtle); color: var(--npt-status-success); }
161
+ .neptune-badge--module-api { background: var(--npt-status-info-subtle); color: var(--npt-accent-secondary); }
162
+ .neptune-badge--module-data { background: var(--npt-status-warning-subtle); color: var(--npt-status-warning); }
163
+
164
+ /* ── Avatar ── */
165
+ .neptune-avatar {
166
+ border-radius: 50%;
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ flex-shrink: 0;
171
+ font-weight: var(--npt-font-weight-semibold);
172
+ background: var(--npt-gradient-brand);
173
+ color: var(--npt-text-on-brand);
174
+ overflow: hidden;
175
+ border: 1.5px solid var(--npt-border-default);
176
+ cursor: pointer;
177
+ }
178
+ .neptune-avatar--sm { width: 22px; height: 22px; font-size: 10px; }
179
+ .neptune-avatar--default { width: 28px; height: 28px; font-size: 11px; }
180
+ .neptune-avatar--lg { width: 36px; height: 36px; font-size: var(--npt-text-sm); }
181
+ .neptune-avatar img { width: 100%; height: 100%; object-fit: cover; }
182
+ .neptune-avatar:hover { opacity: 0.9; }
183
+ .neptune-avatar:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
184
+
185
+ /* ── SuggestionPill ── */
186
+ .neptune-suggestion-pill {
187
+ display: inline-flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ font-size: var(--npt-text-xs);
191
+ line-height: 1.4;
192
+ font-weight: var(--npt-font-weight-regular);
193
+ padding: 6px var(--npt-space-3);
194
+ border-radius: var(--npt-radius-md);
195
+ border: 1px solid var(--npt-border-strong);
196
+ background: transparent;
197
+ color: var(--npt-interactive-fg);
198
+ cursor: pointer;
199
+ transition: background var(--npt-duration-fast) var(--npt-ease-default),
200
+ border-color var(--npt-duration-fast) var(--npt-ease-default),
201
+ transform var(--npt-duration-fast) var(--npt-ease-default);
202
+ white-space: nowrap;
203
+ outline: none;
204
+ }
205
+ .neptune-suggestion-pill:hover { border-color: var(--npt-interactive-border); background: var(--npt-surface-raised); }
206
+ .neptune-suggestion-pill:active { background: var(--npt-surface-sunken); transform: scale(0.96); }
207
+ .neptune-suggestion-pill:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
208
+ .neptune-suggestion-pill:disabled,
209
+ .neptune-suggestion-pill--disabled { opacity: 0.6; pointer-events: none; color: var(--npt-text-disabled); }
210
+
211
+ /* ── NaiaSendButton ── */
212
+ .neptune-naia-send-button {
213
+ border-radius: 50%;
214
+ border: none;
215
+ cursor: pointer;
216
+ display: flex;
217
+ align-items: center;
218
+ justify-content: center;
219
+ flex-shrink: 0;
220
+ background: var(--npt-accent-primary);
221
+ color: var(--npt-text-on-accent);
222
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
223
+ outline: none;
224
+ }
225
+ .neptune-naia-send-button:hover { opacity: 0.85; }
226
+ .neptune-naia-send-button:active { transform: scale(0.92); }
227
+ .neptune-naia-send-button:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
228
+ .neptune-naia-send-button:disabled {
229
+ opacity: 0.4;
230
+ cursor: not-allowed;
231
+ transform: none;
232
+ }
233
+
234
+ /* ═══════════════════════════════════════════════════════════════════════════
235
+ INPUTS
236
+ ═══════════════════════════════════════════════════════════════════════════ */
237
+
238
+ /* ── Toggle ── */
239
+ .neptune-toggle {
240
+ display: inline-flex;
241
+ align-items: center;
242
+ gap: 10px;
243
+ cursor: pointer;
244
+ }
245
+ .neptune-toggle--disabled {
246
+ cursor: not-allowed;
247
+ opacity: 0.5;
248
+ }
249
+ .neptune-toggle--sm .neptune-toggle__switch {
250
+ width: 30px;
251
+ height: 16px;
252
+ border-radius: var(--npt-radius-md);
253
+ }
254
+ .neptune-toggle--sm .neptune-toggle__thumb {
255
+ width: 10px;
256
+ height: 10px;
257
+ top: 2px;
258
+ left: 2px;
259
+ }
260
+ .neptune-toggle--sm.neptune-toggle--checked .neptune-toggle__thumb {
261
+ left: 16px;
262
+ }
263
+ .neptune-toggle--sm .neptune-toggle__label {
264
+ font-size: var(--npt-text-xs);
265
+ }
266
+ .neptune-toggle__switch {
267
+ position: relative;
268
+ width: 40px;
269
+ height: 22px;
270
+ border-radius: 11px;
271
+ background: var(--npt-surface-overlay);
272
+ border: 1px solid var(--npt-border-strong);
273
+ cursor: pointer;
274
+ padding: 0;
275
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
276
+ flex-shrink: 0;
277
+ outline: none;
278
+ box-sizing: border-box;
279
+ }
280
+ .neptune-toggle__switch:focus-visible {
281
+ outline: 2px solid var(--npt-border-focus);
282
+ outline-offset: 2px;
283
+ }
284
+ .neptune-toggle--checked .neptune-toggle__switch {
285
+ background: var(--npt-toggle-active);
286
+ border-color: transparent;
287
+ }
288
+ .neptune-toggle--disabled .neptune-toggle__switch {
289
+ background: var(--npt-surface-overlay);
290
+ border-color: var(--npt-border-default);
291
+ cursor: not-allowed;
292
+ }
293
+ .neptune-toggle__thumb {
294
+ position: absolute;
295
+ width: 14px;
296
+ height: 14px;
297
+ border-radius: 50%;
298
+ background: var(--npt-text-tertiary);
299
+ top: 3px;
300
+ left: 3px;
301
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
302
+ pointer-events: none;
303
+ box-shadow: 0 1px 2px rgba(0,0,0,0.15);
304
+ }
305
+ .neptune-toggle--checked .neptune-toggle__thumb {
306
+ background: var(--npt-text-on-accent);
307
+ left: 21px;
308
+ box-shadow: none;
309
+ }
310
+ .neptune-toggle__switch:hover .neptune-toggle__thumb {
311
+ transform: scale(1.08);
312
+ }
313
+ .neptune-toggle--disabled .neptune-toggle__switch:hover .neptune-toggle__thumb {
314
+ transform: none;
315
+ }
316
+ .neptune-toggle__label {
317
+ font-size: var(--npt-text-sm);
318
+ color: var(--npt-text-primary);
319
+ font-weight: var(--npt-font-weight-medium);
320
+ user-select: none;
321
+ cursor: pointer;
322
+ }
323
+ .neptune-toggle--disabled .neptune-toggle__label {
324
+ color: var(--npt-text-disabled);
325
+ cursor: not-allowed;
326
+ }
327
+
328
+ /* ── Checkbox ── */
329
+ .neptune-checkbox {
330
+ display: inline-flex;
331
+ align-items: center;
332
+ gap: 10px;
333
+ cursor: pointer;
334
+ }
335
+ .neptune-checkbox--disabled {
336
+ cursor: not-allowed;
337
+ opacity: 0.6;
338
+ }
339
+ .neptune-checkbox__box {
340
+ width: 20px;
341
+ height: 20px;
342
+ border-radius: var(--npt-radius-sm);
343
+ border: 2px solid var(--npt-border-input);
344
+ background: transparent;
345
+ display: flex;
346
+ align-items: center;
347
+ justify-content: center;
348
+ flex-shrink: 0;
349
+ cursor: pointer;
350
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
351
+ padding: 0;
352
+ outline: none;
353
+ }
354
+ .neptune-checkbox__box:focus-visible {
355
+ outline: 2px solid var(--npt-border-focus);
356
+ outline-offset: 2px;
357
+ }
358
+ .neptune-checkbox:hover .neptune-checkbox__box {
359
+ background: color-mix(in srgb, var(--npt-accent-primary) 8%, transparent);
360
+ }
361
+ .neptune-checkbox--checked .neptune-checkbox__box {
362
+ background: var(--npt-accent-primary);
363
+ border: none;
364
+ }
365
+ .neptune-checkbox--checked:hover .neptune-checkbox__box {
366
+ background: var(--npt-accent-primary);
367
+ }
368
+ .neptune-checkbox--disabled .neptune-checkbox__box {
369
+ cursor: not-allowed;
370
+ }
371
+ .neptune-checkbox--disabled.neptune-checkbox--checked .neptune-checkbox__box {
372
+ background: var(--npt-text-disabled);
373
+ border: none;
374
+ }
375
+ .neptune-checkbox--disabled:hover .neptune-checkbox__box {
376
+ background: transparent;
377
+ }
378
+ .neptune-checkbox--disabled.neptune-checkbox--checked:hover .neptune-checkbox__box {
379
+ background: var(--npt-text-disabled);
380
+ }
381
+ .neptune-checkbox__icon {
382
+ color: var(--npt-text-on-accent);
383
+ }
384
+ .neptune-checkbox__input {
385
+ display: none;
386
+ }
387
+ .neptune-checkbox__label {
388
+ font-size: var(--npt-text-sm);
389
+ color: var(--npt-text-primary);
390
+ font-weight: var(--npt-font-weight-medium);
391
+ user-select: none;
392
+ cursor: pointer;
393
+ }
394
+ .neptune-checkbox--disabled .neptune-checkbox__label {
395
+ color: var(--npt-text-disabled);
396
+ cursor: not-allowed;
397
+ }
398
+
399
+ /* ── TextInput ── */
400
+ .neptune-text-input__label {
401
+ display: block;
402
+ margin-bottom: var(--npt-space-2);
403
+ font-size: var(--npt-text-xs);
404
+ font-weight: var(--npt-font-weight-medium);
405
+ color: var(--npt-text-primary);
406
+ }
407
+ .neptune-text-input--disabled .neptune-text-input__label {
408
+ color: var(--npt-text-disabled);
409
+ }
410
+ .neptune-text-input__wrapper {
411
+ position: relative;
412
+ display: flex;
413
+ align-items: center;
414
+ }
415
+ .neptune-text-input__search-icon {
416
+ position: absolute;
417
+ left: var(--npt-space-3);
418
+ color: var(--npt-text-secondary);
419
+ pointer-events: none;
420
+ }
421
+ .neptune-text-input__field {
422
+ width: 100%;
423
+ border: 1px solid var(--npt-border-input);
424
+ background: var(--npt-surface-app);
425
+ color: var(--npt-text-primary);
426
+ border-radius: var(--npt-radius-md);
427
+ font-size: var(--npt-text-sm);
428
+ padding: 10px 16px;
429
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
430
+ font-family: inherit;
431
+ box-sizing: border-box;
432
+ cursor: text;
433
+ outline: none;
434
+ }
435
+ .neptune-text-input--search .neptune-text-input__field {
436
+ padding-left: 36px;
437
+ }
438
+ .neptune-text-input__field:hover {
439
+ border-color: var(--npt-border-strong);
440
+ }
441
+ .neptune-text-input__field:focus {
442
+ border-color: var(--npt-border-focus);
443
+ box-shadow: 0 0 0 3px var(--npt-surface-sunken);
444
+ }
445
+ .neptune-text-input__field:focus-visible {
446
+ outline: 2px solid var(--npt-border-focus);
447
+ outline-offset: 2px;
448
+ }
449
+ .neptune-text-input--disabled .neptune-text-input__field {
450
+ background: var(--npt-surface-sunken);
451
+ color: var(--npt-text-disabled);
452
+ cursor: not-allowed;
453
+ opacity: 0.6;
454
+ }
455
+ .neptune-text-input--disabled .neptune-text-input__field:hover {
456
+ border-color: var(--npt-border-input);
457
+ }
458
+ .neptune-text-input__shortcut-hint {
459
+ position: absolute;
460
+ right: var(--npt-space-3);
461
+ font-size: var(--npt-text-xs);
462
+ color: var(--npt-text-tertiary);
463
+ pointer-events: none;
464
+ font-weight: var(--npt-font-weight-medium);
465
+ }
466
+
467
+ /* ── PillSelect ── */
468
+ .neptune-pill-select {
469
+ position: relative;
470
+ display: inline-flex;
471
+ }
472
+ .neptune-pill-select__trigger {
473
+ display: inline-flex;
474
+ align-items: center;
475
+ gap: 6px;
476
+ padding: var(--npt-space-1) 10px;
477
+ font-size: var(--npt-text-xs);
478
+ font-weight: var(--npt-font-weight-regular);
479
+ line-height: 1.4;
480
+ border-radius: 999px;
481
+ border: 1px solid color-mix(in srgb, var(--npt-interactive-border) 48%, transparent);
482
+ cursor: pointer;
483
+ max-width: 140px;
484
+ background: var(--npt-surface-sunken);
485
+ color: var(--npt-interactive-fg);
486
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
487
+ white-space: nowrap;
488
+ flex-shrink: 0;
489
+ }
490
+ .neptune-pill-select__trigger:hover {
491
+ background: var(--npt-surface-raised);
492
+ }
493
+ .neptune-pill-select__trigger:active { opacity: 0.9; }
494
+ .neptune-pill-select__trigger:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
495
+ .neptune-pill-select__trigger:disabled { opacity: 0.5; cursor: not-allowed; }
496
+ .neptune-pill-select__trigger-icon {
497
+ display: inline-flex;
498
+ flex-shrink: 0;
499
+ }
500
+ .neptune-pill-select__trigger-label {
501
+ overflow: hidden;
502
+ text-overflow: ellipsis;
503
+ white-space: nowrap;
504
+ flex: 1;
505
+ min-width: 0;
506
+ }
507
+ .neptune-pill-select__chevron {
508
+ flex-shrink: 0;
509
+ opacity: 0.7;
510
+ transition: transform var(--npt-duration-fast) var(--npt-ease-default);
511
+ }
512
+ .neptune-pill-select__chevron--open {
513
+ transform: rotate(180deg);
514
+ }
515
+ .neptune-pill-select__dropdown {
516
+ position: absolute;
517
+ bottom: 100%;
518
+ margin-bottom: var(--npt-space-2);
519
+ min-width: 180px;
520
+ background: var(--npt-surface-overlay);
521
+ border: 1px solid var(--npt-border-default);
522
+ border-radius: var(--npt-radius-lg);
523
+ box-shadow: var(--npt-shadow-lg);
524
+ padding: var(--npt-space-1) 0;
525
+ z-index: 100;
526
+ overflow: hidden;
527
+ }
528
+ .neptune-pill-select__dropdown--left { left: 0; }
529
+ .neptune-pill-select__dropdown--right { right: 0; }
530
+ .neptune-pill-select__item {
531
+ display: flex;
532
+ align-items: flex-start;
533
+ gap: var(--npt-space-2);
534
+ width: 100%;
535
+ text-align: left;
536
+ font-size: var(--npt-text-xs);
537
+ line-height: 1.4;
538
+ padding: 6px var(--npt-space-3);
539
+ border: none;
540
+ cursor: pointer;
541
+ background: transparent;
542
+ color: var(--npt-text-primary);
543
+ transition: background var(--npt-duration-fast) var(--npt-ease-default);
544
+ }
545
+ .neptune-pill-select__item:hover {
546
+ background: var(--npt-surface-raised);
547
+ }
548
+ .neptune-pill-select__item:active { background: var(--npt-surface-sunken); }
549
+ .neptune-pill-select__item:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: -2px; }
550
+ .neptune-pill-select__item-check {
551
+ display: inline-flex;
552
+ align-items: center;
553
+ width: 14px;
554
+ flex-shrink: 0;
555
+ margin-top: 1px;
556
+ opacity: 0;
557
+ }
558
+ .neptune-pill-select__item--selected .neptune-pill-select__item-check {
559
+ opacity: 1;
560
+ }
561
+ .neptune-pill-select__item-content {
562
+ flex: 1;
563
+ min-width: 0;
564
+ }
565
+ .neptune-pill-select__item-label-row {
566
+ display: flex;
567
+ align-items: center;
568
+ gap: 6px;
569
+ }
570
+ .neptune-pill-select__item--selected .neptune-pill-select__item-label-row {
571
+ font-weight: var(--npt-font-weight-semibold);
572
+ }
573
+ .neptune-pill-select__item-icon {
574
+ display: inline-flex;
575
+ flex-shrink: 0;
576
+ }
577
+ .neptune-pill-select__item-label {
578
+ overflow: hidden;
579
+ text-overflow: ellipsis;
580
+ white-space: nowrap;
581
+ }
582
+ .neptune-pill-select__item-badge {
583
+ margin-left: auto;
584
+ font-size: 10px;
585
+ font-weight: var(--npt-font-weight-medium);
586
+ padding: 1px 6px;
587
+ border-radius: 999px;
588
+ background: var(--npt-surface-sunken);
589
+ color: var(--npt-text-secondary);
590
+ white-space: nowrap;
591
+ flex-shrink: 0;
592
+ }
593
+ .neptune-pill-select__item-desc {
594
+ display: block;
595
+ font-size: 10px;
596
+ line-height: 1.4;
597
+ color: var(--npt-text-tertiary);
598
+ margin-top: 2px;
599
+ }
600
+
601
+ /* ── NaiaChatInput ── */
602
+ .neptune-naia-chat-input-area .neptune-naia-chat-input__suggestions {
603
+ display: flex;
604
+ flex-wrap: wrap;
605
+ gap: 6px;
606
+ margin-bottom: var(--npt-space-2);
607
+ }
608
+ .neptune-naia-chat-input__container {
609
+ border-radius: var(--npt-radius-xl);
610
+ border: 1px solid var(--npt-border-subtle);
611
+ background: var(--npt-surface-sunken);
612
+ transition: border-color var(--npt-duration-fast) var(--npt-ease-default);
613
+ overflow: visible;
614
+ }
615
+ .neptune-naia-chat-input__container:hover {
616
+ border-color: var(--npt-border-strong);
617
+ }
618
+ .neptune-naia-chat-input__container--focused {
619
+ border-color: var(--npt-border-default);
620
+ }
621
+ .neptune-naia-chat-input__textarea-wrap {
622
+ padding: var(--npt-space-3) var(--npt-space-3) 0 var(--npt-space-3);
623
+ }
624
+ .neptune-naia-chat-input__textarea {
625
+ width: 100%;
626
+ border: none;
627
+ outline: none;
628
+ background: transparent;
629
+ color: var(--npt-text-primary);
630
+ font-size: 13px;
631
+ line-height: 1.5;
632
+ resize: none;
633
+ padding: 0;
634
+ font-family: inherit;
635
+ min-height: 20px;
636
+ max-height: 140px;
637
+ box-sizing: border-box;
638
+ }
639
+ .neptune-naia-chat-input__footer {
640
+ display: flex;
641
+ align-items: center;
642
+ gap: 6px;
643
+ padding: var(--npt-space-4) var(--npt-space-3) var(--npt-space-3) var(--npt-space-3);
644
+ }
645
+
646
+ /* ── FilterBar ── */
647
+ .neptune-filter-bar {
648
+ display: flex;
649
+ flex-wrap: wrap;
650
+ align-items: center;
651
+ gap: 6px;
652
+ }
653
+ .neptune-filter-bar__item:hover { background: var(--npt-surface-sunken); }
654
+ .neptune-filter-bar__item:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; border-radius: var(--npt-radius-sm); }
655
+ .neptune-filter-bar__item:disabled,
656
+ .neptune-filter-bar--disabled { opacity: 0.6; pointer-events: none; color: var(--npt-text-disabled); }
657
+
658
+ /* ── PropertyField ── */
659
+ .neptune-property-field {
660
+ display: flex;
661
+ align-items: center;
662
+ gap: var(--npt-space-3);
663
+ padding: 3px 0;
664
+ }
665
+ .neptune-property-field__label {
666
+ font-size: var(--npt-text-xs);
667
+ color: var(--npt-text-secondary);
668
+ flex-shrink: 0;
669
+ }
670
+ .neptune-property-field__input {
671
+ flex: 1;
672
+ font-size: var(--npt-text-xs);
673
+ font-family: var(--npt-font-mono);
674
+ padding: 3px 8px;
675
+ border-radius: var(--npt-radius-sm);
676
+ border: 1px solid var(--npt-border-default);
677
+ background: var(--npt-surface-raised);
678
+ color: var(--npt-text-primary);
679
+ outline: none;
680
+ box-sizing: border-box;
681
+ transition: border-color var(--npt-duration-fast) var(--npt-ease-default);
682
+ }
683
+ .neptune-property-field__input:hover {
684
+ border-color: var(--npt-border-strong);
685
+ }
686
+ .neptune-property-field__input:focus {
687
+ border-color: var(--npt-border-focus);
688
+ }
689
+ .neptune-property-field__input:focus-visible {
690
+ outline: 2px solid var(--npt-border-focus);
691
+ outline-offset: 2px;
692
+ }
693
+ .neptune-property-field--highlight .neptune-property-field__input {
694
+ background: var(--npt-surface-sunken);
695
+ border-color: var(--npt-accent-primary);
696
+ color: var(--npt-accent-primary-vivid);
697
+ }
698
+ .neptune-property-field--disabled .neptune-property-field__label {
699
+ color: var(--npt-text-disabled);
700
+ }
701
+ .neptune-property-field--disabled .neptune-property-field__input {
702
+ background: var(--npt-surface-sunken);
703
+ color: var(--npt-text-disabled);
704
+ cursor: not-allowed;
705
+ }
706
+
707
+ /* ═══════════════════════════════════════════════════════════════════════════
708
+ NAVIGATION
709
+ ═══════════════════════════════════════════════════════════════════════════ */
710
+
711
+ /* ── TabBar ── */
712
+ .neptune-tabbar {
713
+ display: flex;
714
+ border-bottom: 1px solid var(--npt-border-default);
715
+ }
716
+ .neptune-tabbar__tab {
717
+ padding: var(--npt-space-2) var(--npt-space-4);
718
+ font-size: var(--npt-text-sm);
719
+ border: none;
720
+ background: transparent;
721
+ cursor: pointer;
722
+ font-weight: var(--npt-font-weight-regular);
723
+ color: var(--npt-text-tertiary);
724
+ border-bottom: 2px solid transparent;
725
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
726
+ outline: none;
727
+ display: inline-flex;
728
+ align-items: center;
729
+ }
730
+ .neptune-tabbar__tab:hover {
731
+ color: var(--npt-text-primary);
732
+ }
733
+ .neptune-tabbar__tab:active { opacity: 0.9; }
734
+ .neptune-tabbar__tab:focus-visible {
735
+ outline: 2px solid var(--npt-border-focus);
736
+ outline-offset: -2px;
737
+ }
738
+ .neptune-tabbar__tab:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
739
+ .neptune-tabbar__tab--active {
740
+ font-weight: var(--npt-font-weight-semibold);
741
+ color: var(--npt-text-primary);
742
+ border-bottom-color: var(--npt-accent-primary-vivid);
743
+ }
744
+ .neptune-tabbar__icon {
745
+ display: inline-flex;
746
+ align-items: center;
747
+ flex-shrink: 0;
748
+ margin-right: 5px;
749
+ }
750
+
751
+ /* ── Dropdown ── */
752
+ .neptune-dropdown {
753
+ background: var(--npt-surface-overlay);
754
+ border: 1px solid var(--npt-border-default);
755
+ border-radius: var(--npt-radius-lg);
756
+ box-shadow: var(--npt-shadow-lg);
757
+ min-width: 200px;
758
+ padding: var(--npt-space-1);
759
+ display: flex;
760
+ flex-direction: column;
761
+ }
762
+ .neptune-dropdown--closed {
763
+ display: none;
764
+ }
765
+ .neptune-dropdown__item {
766
+ padding: var(--npt-space-2) var(--npt-space-3);
767
+ font-size: var(--npt-text-xs);
768
+ color: var(--npt-text-primary);
769
+ border: none;
770
+ background: transparent;
771
+ cursor: pointer;
772
+ border-radius: var(--npt-radius-md);
773
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
774
+ outline: none;
775
+ font-weight: var(--npt-font-weight-regular);
776
+ display: flex;
777
+ align-items: center;
778
+ justify-content: space-between;
779
+ margin-bottom: 2px;
780
+ text-align: left;
781
+ min-height: 32px;
782
+ }
783
+ .neptune-dropdown__item:hover {
784
+ background: var(--npt-surface-sunken);
785
+ }
786
+ .neptune-dropdown__item:active { background: var(--npt-surface-sunken); }
787
+ .neptune-dropdown__item:focus-visible {
788
+ outline: 2px solid var(--npt-border-focus);
789
+ outline-offset: 2px;
790
+ }
791
+ .neptune-dropdown__item:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
792
+ .neptune-dropdown__item--selected {
793
+ background: var(--npt-surface-sunken);
794
+ font-weight: var(--npt-font-weight-medium);
795
+ }
796
+ .neptune-dropdown__item-content {
797
+ display: flex;
798
+ flex-direction: column;
799
+ gap: 2px;
800
+ flex: 1;
801
+ min-width: 0;
802
+ }
803
+ .neptune-dropdown__item-subtitle {
804
+ font-size: 11px;
805
+ color: var(--npt-text-tertiary);
806
+ font-weight: var(--npt-font-weight-regular);
807
+ }
808
+ .neptune-dropdown__item-right {
809
+ display: flex;
810
+ align-items: center;
811
+ gap: var(--npt-space-2);
812
+ margin-left: var(--npt-space-2);
813
+ flex-shrink: 0;
814
+ }
815
+ .neptune-dropdown__item-check {
816
+ display: flex;
817
+ color: var(--npt-accent-primary-vivid);
818
+ }
819
+
820
+ /* ── SidebarNav ── */
821
+ .neptune-sidebar-nav {
822
+ background: var(--npt-surface-sunken);
823
+ border-right: 1px solid var(--npt-border-default);
824
+ display: flex;
825
+ flex-direction: column;
826
+ flex-shrink: 0;
827
+ transition: width 200ms ease;
828
+ }
829
+ .neptune-sidebar-nav--collapsed {
830
+ width: 56px;
831
+ }
832
+ .neptune-sidebar-nav__header {
833
+ padding: var(--npt-space-2);
834
+ flex-shrink: 0;
835
+ }
836
+ .neptune-sidebar-nav__items {
837
+ flex: 1;
838
+ padding: 8px;
839
+ display: flex;
840
+ flex-direction: column;
841
+ gap: 2px;
842
+ }
843
+ .neptune-sidebar-nav__footer {
844
+ padding: 8px;
845
+ border-top: 1px solid var(--npt-border-default);
846
+ }
847
+ .neptune-sidebar-nav__item {
848
+ width: 100%;
849
+ display: flex;
850
+ align-items: center;
851
+ gap: 12px;
852
+ padding: 8px 10px;
853
+ border-radius: 8px;
854
+ font-size: var(--npt-text-sm);
855
+ color: var(--npt-text-tertiary);
856
+ background-color: transparent;
857
+ transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease;
858
+ border: none;
859
+ cursor: pointer;
860
+ text-align: left;
861
+ outline: none;
862
+ justify-content: flex-start;
863
+ box-sizing: border-box;
864
+ flex-shrink: 0;
865
+ }
866
+ .neptune-sidebar-nav--collapsed .neptune-sidebar-nav__item {
867
+ gap: 0;
868
+ padding: 0;
869
+ justify-content: center;
870
+ aspect-ratio: 1;
871
+ }
872
+ .neptune-sidebar-nav__item:hover {
873
+ background-color: var(--npt-surface-raised);
874
+ color: var(--npt-text-secondary);
875
+ }
876
+ .neptune-sidebar-nav__item:active { background: var(--npt-surface-sunken); }
877
+ .neptune-sidebar-nav__item:focus-visible {
878
+ outline: 2px solid var(--npt-border-focus);
879
+ outline-offset: 2px;
880
+ }
881
+ .neptune-sidebar-nav__item:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
882
+ .neptune-sidebar-nav__item--active {
883
+ background-color: var(--npt-surface-raised);
884
+ color: var(--npt-text-primary);
885
+ box-shadow: var(--npt-shadow-sm);
886
+ }
887
+ .neptune-sidebar-nav__icon {
888
+ width: 20px;
889
+ height: 20px;
890
+ display: flex;
891
+ align-items: center;
892
+ justify-content: center;
893
+ color: inherit;
894
+ flex-shrink: 0;
895
+ }
896
+ .neptune-sidebar-nav--collapsed .neptune-sidebar-nav__icon {
897
+ width: 24px;
898
+ height: 24px;
899
+ }
900
+ .neptune-sidebar-nav__item--active .neptune-sidebar-nav__icon {
901
+ color: var(--npt-accent-primary-vivid);
902
+ }
903
+ .neptune-sidebar-nav__divider {
904
+ height: 1px;
905
+ background: var(--npt-border-default);
906
+ margin: var(--npt-space-2) var(--npt-space-3);
907
+ }
908
+
909
+ /* ── SidebarTabs ── */
910
+ .neptune-sidebar-tabs {
911
+ background: var(--npt-surface-sunken);
912
+ border-radius: var(--npt-radius-md);
913
+ display: flex;
914
+ flex-direction: row;
915
+ gap: var(--npt-space-1);
916
+ padding: var(--npt-space-1);
917
+ }
918
+ .neptune-sidebar-tabs--collapsed {
919
+ flex-direction: column;
920
+ padding: var(--npt-space-2);
921
+ }
922
+ .neptune-sidebar-tabs__tab {
923
+ padding: var(--npt-space-1) var(--npt-space-3);
924
+ font-size: var(--npt-text-xs);
925
+ border: none;
926
+ background: transparent;
927
+ color: var(--npt-text-secondary);
928
+ cursor: pointer;
929
+ border-radius: 6px;
930
+ transition: all 0.2s ease;
931
+ outline: none;
932
+ font-weight: var(--npt-font-weight-regular);
933
+ flex: 1;
934
+ text-align: center;
935
+ white-space: nowrap;
936
+ display: flex;
937
+ align-items: center;
938
+ justify-content: center;
939
+ box-sizing: border-box;
940
+ }
941
+ .neptune-sidebar-tabs--collapsed .neptune-sidebar-tabs__tab {
942
+ padding: 0;
943
+ flex: 0 0 auto;
944
+ width: 100%;
945
+ aspect-ratio: 1;
946
+ }
947
+ .neptune-sidebar-tabs__tab:hover {
948
+ color: var(--npt-text-primary);
949
+ }
950
+ .neptune-sidebar-tabs__tab:active { opacity: 0.9; }
951
+ .neptune-sidebar-tabs__tab:focus-visible {
952
+ outline: 2px solid var(--npt-border-focus);
953
+ outline-offset: -2px;
954
+ }
955
+ .neptune-sidebar-tabs__tab:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
956
+ .neptune-sidebar-tabs__tab--active {
957
+ background: var(--npt-surface-overlay);
958
+ color: var(--npt-text-primary);
959
+ font-weight: var(--npt-font-weight-medium);
960
+ }
961
+ .neptune-sidebar-tabs__icon {
962
+ display: inline-flex;
963
+ align-items: center;
964
+ flex-shrink: 0;
965
+ margin-right: 4px;
966
+ }
967
+ .neptune-sidebar-tabs__badge {
968
+ font-size: 10px;
969
+ line-height: 1;
970
+ padding: 2px 5px;
971
+ border-radius: var(--npt-radius-full);
972
+ background-color: var(--npt-surface-sunken);
973
+ color: var(--npt-text-tertiary);
974
+ margin-left: 2px;
975
+ font-weight: var(--npt-font-weight-medium);
976
+ }
977
+
978
+ /* ═══════════════════════════════════════════════════════════════════════════
979
+ LAYOUT
980
+ ═══════════════════════════════════════════════════════════════════════════ */
981
+
982
+ /* ── Panel ── */
983
+ .neptune-panel {
984
+ background: var(--npt-surface-raised);
985
+ border: 1px solid var(--npt-border-default);
986
+ border-radius: var(--npt-radius-lg);
987
+ padding: var(--npt-space-6);
988
+ box-shadow: var(--npt-shadow-xs);
989
+ }
990
+
991
+ /* ── AppHeader ── */
992
+ .neptune-app-header {
993
+ height: 44px;
994
+ background: var(--npt-surface-deep);
995
+ border-bottom: 1px solid var(--npt-border-default);
996
+ display: flex;
997
+ align-items: center;
998
+ justify-content: space-between;
999
+ padding: 0 var(--npt-space-4);
1000
+ flex-shrink: 0;
1001
+ }
1002
+ .neptune-app-header--builder {
1003
+ padding-left: var(--npt-space-4);
1004
+ padding-right: var(--npt-space-2);
1005
+ border-bottom: 1px solid var(--npt-border-default);
1006
+ box-shadow: var(--npt-shadow-sm);
1007
+ }
1008
+ .neptune-app-header__left {
1009
+ display: flex;
1010
+ align-items: center;
1011
+ gap: var(--npt-space-3);
1012
+ }
1013
+ .neptune-app-header__right {
1014
+ display: flex;
1015
+ align-items: center;
1016
+ gap: var(--npt-space-2);
1017
+ flex-shrink: 0;
1018
+ }
1019
+ .neptune-app-header__divider {
1020
+ width: 1px;
1021
+ height: var(--npt-space-4);
1022
+ background-color: var(--npt-border-default);
1023
+ cursor: pointer;
1024
+ flex-shrink: 0;
1025
+ }
1026
+
1027
+ /* ── Toolbar ── */
1028
+ .neptune-toolbar {
1029
+ height: 44px;
1030
+ background: var(--npt-surface-sunken);
1031
+ border-bottom: 1px solid var(--npt-border-default);
1032
+ display: flex;
1033
+ align-items: center;
1034
+ justify-content: space-between;
1035
+ gap: var(--npt-space-3);
1036
+ padding: 0 var(--npt-space-2);
1037
+ flex-shrink: 0;
1038
+ }
1039
+ .neptune-toolbar__left {
1040
+ display: flex;
1041
+ align-items: center;
1042
+ gap: var(--npt-space-3);
1043
+ flex: 1;
1044
+ min-width: 0;
1045
+ }
1046
+ .neptune-toolbar__label {
1047
+ font-size: 13px;
1048
+ font-weight: var(--npt-font-weight-medium);
1049
+ color: var(--npt-text-primary);
1050
+ }
1051
+ .neptune-toolbar__badge {
1052
+ padding: 2px var(--npt-space-2);
1053
+ background: var(--npt-surface-brand);
1054
+ border-radius: var(--npt-radius-sm);
1055
+ font-size: 11px;
1056
+ font-weight: var(--npt-font-weight-semibold);
1057
+ color: var(--npt-text-on-brand);
1058
+ }
1059
+ .neptune-toolbar__separator {
1060
+ width: 1px;
1061
+ height: 16px;
1062
+ background: var(--npt-border-default);
1063
+ flex-shrink: 0;
1064
+ }
1065
+ .neptune-toolbar__right {
1066
+ display: flex;
1067
+ align-items: center;
1068
+ gap: var(--npt-space-2);
1069
+ }
1070
+
1071
+ /* ── Breadcrumb ── */
1072
+ .neptune-breadcrumb {
1073
+ display: inline-flex;
1074
+ align-items: center;
1075
+ gap: 6px;
1076
+ font-size: 13px;
1077
+ font-weight: var(--npt-font-weight-medium);
1078
+ }
1079
+ .neptune-breadcrumb__item {
1080
+ display: inline-flex;
1081
+ align-items: center;
1082
+ gap: var(--npt-space-1);
1083
+ color: var(--npt-text-tertiary);
1084
+ background: none;
1085
+ border: none;
1086
+ cursor: pointer;
1087
+ padding: 2px 0;
1088
+ font: inherit;
1089
+ font-weight: inherit;
1090
+ transition: color var(--npt-duration-fast) var(--npt-ease-default);
1091
+ }
1092
+ .neptune-breadcrumb__item:hover {
1093
+ color: var(--npt-text-secondary);
1094
+ }
1095
+ .neptune-breadcrumb__item:active { opacity: 0.8; }
1096
+ .neptune-breadcrumb__item:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; border-radius: var(--npt-radius-sm); }
1097
+ .neptune-breadcrumb__item:disabled,
1098
+ .neptune-breadcrumb__item--disabled { opacity: 0.6; pointer-events: none; color: var(--npt-text-disabled); }
1099
+ .neptune-breadcrumb__item--active {
1100
+ color: var(--npt-accent-primary-vivid);
1101
+ cursor: default;
1102
+ }
1103
+ .neptune-breadcrumb__item--active:hover {
1104
+ color: var(--npt-accent-primary-vivid);
1105
+ }
1106
+ .neptune-breadcrumb__separator {
1107
+ color: var(--npt-text-disabled);
1108
+ font-weight: 300;
1109
+ user-select: none;
1110
+ }
1111
+
1112
+ /* ── FileContextBar ── */
1113
+ .neptune-file-context-bar {
1114
+ display: flex;
1115
+ align-items: center;
1116
+ gap: var(--npt-space-2);
1117
+ padding: var(--npt-space-1) var(--npt-space-2) var(--npt-space-1) var(--npt-space-3);
1118
+ border-bottom: 1px solid var(--npt-border-default);
1119
+ background: var(--npt-surface-raised);
1120
+ flex-shrink: 0;
1121
+ font-size: var(--npt-text-xs);
1122
+ }
1123
+ .neptune-file-context-bar__label {
1124
+ font-family: var(--npt-font-mono);
1125
+ color: var(--npt-text-secondary);
1126
+ }
1127
+ .neptune-file-context-bar__actions {
1128
+ margin-left: auto;
1129
+ display: flex;
1130
+ gap: var(--npt-space-2);
1131
+ }
1132
+
1133
+ /* ── BottomBar ── */
1134
+ .neptune-bottom-bar {
1135
+ height: 36px;
1136
+ background: var(--npt-surface-sunken);
1137
+ border-top: 1px solid var(--npt-border-default);
1138
+ display: flex;
1139
+ align-items: center;
1140
+ justify-content: space-between;
1141
+ padding-left: var(--npt-space-3);
1142
+ padding-right: var(--npt-space-3);
1143
+ }
1144
+ .neptune-bottom-bar__status {
1145
+ display: flex;
1146
+ align-items: center;
1147
+ gap: var(--npt-space-2);
1148
+ }
1149
+ .neptune-bottom-bar__status-label {
1150
+ font-size: 11px;
1151
+ color: var(--npt-text-secondary);
1152
+ }
1153
+ .neptune-bottom-bar__group {
1154
+ display: flex;
1155
+ gap: var(--npt-space-1);
1156
+ background: var(--npt-surface-app);
1157
+ border-radius: var(--npt-radius-md);
1158
+ padding: var(--npt-space-1);
1159
+ }
1160
+ .neptune-bottom-bar__btn {
1161
+ padding-left: var(--npt-space-2);
1162
+ padding-right: var(--npt-space-2);
1163
+ padding-top: var(--npt-space-1);
1164
+ padding-bottom: var(--npt-space-1);
1165
+ font-size: 10px;
1166
+ font-weight: var(--npt-font-weight-medium);
1167
+ border: none;
1168
+ border-radius: var(--npt-radius-sm);
1169
+ cursor: pointer;
1170
+ background: transparent;
1171
+ color: var(--npt-text-secondary);
1172
+ transition: background-color 0.15s ease;
1173
+ }
1174
+ .neptune-bottom-bar__btn:hover {
1175
+ background: var(--npt-surface-raised);
1176
+ }
1177
+ .neptune-bottom-bar__btn:active { opacity: 0.9; }
1178
+ .neptune-bottom-bar__btn:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
1179
+ .neptune-bottom-bar__btn:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
1180
+ .neptune-bottom-bar__btn--active {
1181
+ background: var(--npt-surface-raised);
1182
+ }
1183
+
1184
+ /* ── Card ── */
1185
+ .neptune-card {
1186
+ background: var(--npt-surface-raised);
1187
+ border: 1px solid var(--npt-border-default);
1188
+ border-radius: var(--npt-radius-lg);
1189
+ padding: var(--npt-space-6);
1190
+ box-shadow: var(--npt-shadow-xs);
1191
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
1192
+ outline: none;
1193
+ }
1194
+ .neptune-card--interactive {
1195
+ cursor: pointer;
1196
+ }
1197
+ .neptune-card--interactive:hover {
1198
+ box-shadow: var(--npt-shadow-md);
1199
+ }
1200
+ .neptune-card--interactive:active { box-shadow: var(--npt-shadow-xs); transform: scale(0.995); }
1201
+ .neptune-card--interactive:focus-visible {
1202
+ outline: 2px solid var(--npt-border-focus);
1203
+ outline-offset: 2px;
1204
+ }
1205
+ /* Button reset for interactive cards */
1206
+ button.neptune-card {
1207
+ text-align: inherit;
1208
+ font: inherit;
1209
+ color: inherit;
1210
+ width: 100%;
1211
+ }
1212
+
1213
+ /* ═══════════════════════════════════════════════════════════════════════════
1214
+ FEEDBACK
1215
+ ═══════════════════════════════════════════════════════════════════════════ */
1216
+
1217
+ /* ── ChatMessage ── */
1218
+ .neptune-chat-message {
1219
+ display: flex;
1220
+ margin-bottom: var(--npt-space-3);
1221
+ width: 100%;
1222
+ }
1223
+ .neptune-chat-message--user {
1224
+ justify-content: flex-end;
1225
+ }
1226
+ .neptune-chat-message--naia {
1227
+ justify-content: flex-start;
1228
+ }
1229
+ .neptune-chat-message__bubble {
1230
+ max-width: 80%;
1231
+ word-wrap: break-word;
1232
+ }
1233
+ .neptune-chat-message--naia .neptune-chat-message__bubble {
1234
+ padding: 0 var(--npt-space-2);
1235
+ font-size: var(--npt-text-sm);
1236
+ color: var(--npt-text-secondary);
1237
+ line-height: 1.625;
1238
+ text-align: left;
1239
+ }
1240
+ .neptune-chat-message--user .neptune-chat-message__bubble {
1241
+ background: var(--npt-surface-overlay);
1242
+ color: var(--npt-text-primary);
1243
+ border-radius: var(--npt-radius-lg) var(--npt-radius-lg) 2px var(--npt-radius-lg);
1244
+ padding: var(--npt-space-2) var(--npt-space-3);
1245
+ font-size: var(--npt-text-xs);
1246
+ line-height: 1.5;
1247
+ }
1248
+
1249
+ /* ── StatusIndicator ── */
1250
+ @keyframes neptune-status-pulse {
1251
+ 0%, 100% { opacity: 1; }
1252
+ 50% { opacity: 0.5; }
1253
+ }
1254
+ .neptune-status-indicator {
1255
+ display: flex;
1256
+ align-items: center;
1257
+ gap: var(--npt-space-2);
1258
+ }
1259
+ .neptune-status-indicator__dot {
1260
+ width: 8px;
1261
+ height: 8px;
1262
+ border-radius: 50%;
1263
+ flex-shrink: 0;
1264
+ }
1265
+ .neptune-status-indicator--running .neptune-status-indicator__dot { background: #4ade80; }
1266
+ .neptune-status-indicator--paused .neptune-status-indicator__dot { background: #fbbf24; }
1267
+ .neptune-status-indicator--error .neptune-status-indicator__dot { background: #f87171; }
1268
+ .neptune-status-indicator--stopped .neptune-status-indicator__dot { background: #6b7280; }
1269
+ .neptune-status-indicator--pulse .neptune-status-indicator__dot {
1270
+ animation: neptune-status-pulse 2s ease-in-out infinite;
1271
+ }
1272
+ .neptune-status-indicator__label {
1273
+ font-size: var(--npt-text-xs);
1274
+ color: var(--npt-text-secondary);
1275
+ }
1276
+
1277
+ /* ── StatusDot ── */
1278
+ @keyframes neptune-pulse {
1279
+ 0%, 100% { opacity: 1; }
1280
+ 50% { opacity: 0.4; }
1281
+ }
1282
+ .neptune-status-dot {
1283
+ display: inline-block;
1284
+ border-radius: 50%;
1285
+ flex-shrink: 0;
1286
+ }
1287
+ .neptune-status-dot--success { background-color: var(--npt-status-success); }
1288
+ .neptune-status-dot--warning { background-color: var(--npt-status-warning); }
1289
+ .neptune-status-dot--error { background-color: var(--npt-status-error); }
1290
+ .neptune-status-dot--info { background-color: var(--npt-status-info); }
1291
+ .neptune-status-dot--pulse {
1292
+ animation: neptune-pulse 2s ease-in-out infinite;
1293
+ }
1294
+
1295
+ /* ═══════════════════════════════════════════════════════════════════════════
1296
+ DATA DISPLAY
1297
+ ═══════════════════════════════════════════════════════════════════════════ */
1298
+
1299
+ /* ── DataTable ── */
1300
+ .neptune-data-table {
1301
+ border-radius: var(--npt-radius-md);
1302
+ border: 1px solid var(--npt-border-default);
1303
+ overflow: hidden;
1304
+ width: 100%;
1305
+ }
1306
+ .neptune-data-table table {
1307
+ width: 100%;
1308
+ border-collapse: collapse;
1309
+ }
1310
+ .neptune-data-table th {
1311
+ background: var(--npt-surface-sunken);
1312
+ font-size: var(--npt-text-xs);
1313
+ font-weight: var(--npt-font-weight-semibold);
1314
+ color: var(--npt-text-secondary);
1315
+ padding: 10px 16px;
1316
+ text-align: left;
1317
+ border-bottom: 1px solid var(--npt-border-subtle);
1318
+ }
1319
+ .neptune-data-table td {
1320
+ padding: 10px 16px;
1321
+ font-size: var(--npt-text-sm);
1322
+ border-bottom: 1px solid var(--npt-border-subtle);
1323
+ }
1324
+ .neptune-data-table tr:last-child td {
1325
+ border-bottom: none;
1326
+ }
1327
+
1328
+ /* ── FileTree ── */
1329
+ .neptune-file-tree {
1330
+ padding: var(--npt-space-1) 0;
1331
+ width: 100%;
1332
+ }
1333
+ .neptune-file-tree__item {
1334
+ display: flex;
1335
+ align-items: center;
1336
+ gap: 6px;
1337
+ padding: 5px 8px;
1338
+ font-size: var(--npt-text-xs);
1339
+ line-height: 1;
1340
+ border-radius: var(--npt-radius-sm);
1341
+ margin: 1px 4px;
1342
+ width: calc(100% - 8px);
1343
+ color: var(--npt-text-secondary);
1344
+ background-color: transparent;
1345
+ transition: background-color 120ms ease, color 120ms ease;
1346
+ cursor: pointer;
1347
+ user-select: none;
1348
+ text-align: left;
1349
+ border: none;
1350
+ font-weight: var(--npt-font-weight-regular);
1351
+ font-family: inherit;
1352
+ }
1353
+ .neptune-file-tree__item:hover {
1354
+ background-color: var(--npt-surface-raised);
1355
+ color: var(--npt-text-primary);
1356
+ }
1357
+ .neptune-file-tree__item:active { background-color: var(--npt-surface-sunken); }
1358
+ .neptune-file-tree__item:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: -2px; }
1359
+ .neptune-file-tree__item--folder {
1360
+ font-weight: var(--npt-font-weight-medium);
1361
+ }
1362
+ .neptune-file-tree__item--folder:hover {
1363
+ color: var(--npt-text-primary);
1364
+ }
1365
+ .neptune-file-tree__item--active {
1366
+ background-color: var(--npt-surface-sunken);
1367
+ color: var(--npt-accent-primary-vivid);
1368
+ }
1369
+ .neptune-file-tree__item--active:hover {
1370
+ background-color: var(--npt-surface-sunken);
1371
+ color: var(--npt-accent-primary-vivid);
1372
+ }
1373
+ .neptune-file-tree__chevron {
1374
+ flex-shrink: 0;
1375
+ width: 12px;
1376
+ height: 12px;
1377
+ color: var(--npt-text-tertiary);
1378
+ }
1379
+ .neptune-file-tree__icon {
1380
+ flex-shrink: 0;
1381
+ color: var(--npt-text-tertiary);
1382
+ display: inline-flex;
1383
+ align-items: center;
1384
+ }
1385
+ .neptune-file-tree__item--active .neptune-file-tree__icon {
1386
+ color: var(--npt-accent-primary);
1387
+ }
1388
+ .neptune-file-tree__item:hover .neptune-file-tree__icon {
1389
+ color: var(--npt-text-secondary);
1390
+ }
1391
+ .neptune-file-tree__item--active:hover .neptune-file-tree__icon {
1392
+ color: var(--npt-accent-primary);
1393
+ }
1394
+ .neptune-file-tree__label {
1395
+ overflow: hidden;
1396
+ text-overflow: ellipsis;
1397
+ white-space: nowrap;
1398
+ flex: 1;
1399
+ min-width: 0;
1400
+ }
1401
+
1402
+ /* ── KpiCard ── */
1403
+ .neptune-kpi-card {
1404
+ border-radius: var(--npt-radius-lg);
1405
+ padding: var(--npt-space-4);
1406
+ background: var(--npt-surface-sunken);
1407
+ border: 1px solid var(--npt-border-default);
1408
+ display: flex;
1409
+ flex-direction: column;
1410
+ gap: var(--npt-space-3);
1411
+ }
1412
+ .neptune-kpi-card__icon-wrapper {
1413
+ padding: var(--npt-space-2);
1414
+ border-radius: var(--npt-radius-md);
1415
+ background: var(--npt-surface-raised);
1416
+ display: flex;
1417
+ align-items: center;
1418
+ justify-content: center;
1419
+ width: fit-content;
1420
+ color: var(--npt-accent-primary-vivid);
1421
+ }
1422
+ .neptune-kpi-card__value {
1423
+ font-size: var(--npt-text-xl);
1424
+ font-weight: var(--npt-font-weight-semibold);
1425
+ color: var(--npt-text-primary);
1426
+ }
1427
+ .neptune-kpi-card__label {
1428
+ font-size: var(--npt-text-xs);
1429
+ color: var(--npt-text-secondary);
1430
+ font-weight: var(--npt-font-weight-medium);
1431
+ }
1432
+ .neptune-kpi-card__subtitle {
1433
+ font-size: 10px;
1434
+ color: var(--npt-text-tertiary);
1435
+ }
1436
+
1437
+ /* ── AppPreview ── */
1438
+ .neptune-app-preview {
1439
+ height: 100%;
1440
+ display: flex;
1441
+ align-items: center;
1442
+ justify-content: center;
1443
+ padding: var(--npt-space-6);
1444
+ }
1445
+ .neptune-app-preview__frame {
1446
+ border-radius: var(--npt-radius-lg);
1447
+ border: 1px solid;
1448
+ overflow: hidden;
1449
+ display: flex;
1450
+ flex-direction: column;
1451
+ box-shadow: var(--npt-shadow-lg);
1452
+ width: 100%;
1453
+ height: 100%;
1454
+ transition: max-width 400ms cubic-bezier(0.4, 0, 0.2, 1), height 400ms cubic-bezier(0.4, 0, 0.2, 1);
1455
+ }
1456
+ .neptune-app-preview__frame--browser { max-width: 100%; height: 100%; }
1457
+ .neptune-app-preview__frame--tablet { max-width: 768px; height: 85%; }
1458
+ .neptune-app-preview__frame--phone { max-width: 375px; height: 85%; }
1459
+ .neptune-app-preview__titlebar {
1460
+ height: 40px;
1461
+ display: flex;
1462
+ align-items: center;
1463
+ justify-content: space-between;
1464
+ padding: 0 var(--npt-space-4);
1465
+ border-bottom: 1px solid;
1466
+ flex-shrink: 0;
1467
+ }
1468
+ .neptune-app-preview__filterbar {
1469
+ display: flex;
1470
+ align-items: center;
1471
+ gap: var(--npt-space-2);
1472
+ padding: var(--npt-space-2) var(--npt-space-4);
1473
+ border-bottom: 1px solid;
1474
+ flex-shrink: 0;
1475
+ }
1476
+ .neptune-app-preview__table {
1477
+ flex: 1;
1478
+ overflow: auto;
1479
+ }
1480
+ .neptune-app-preview__row {
1481
+ display: flex;
1482
+ align-items: center;
1483
+ gap: var(--npt-space-3);
1484
+ padding: var(--npt-space-3) var(--npt-space-4);
1485
+ border-bottom: 1px solid;
1486
+ }
1487
+
1488
+ /* ── VersionRow ── */
1489
+ .neptune-version-row__header {
1490
+ display: flex;
1491
+ align-items: center;
1492
+ gap: var(--npt-space-3);
1493
+ padding: 10px var(--npt-space-3);
1494
+ border-radius: var(--npt-radius-md);
1495
+ background: transparent;
1496
+ transition: background var(--npt-duration-fast) var(--npt-ease-default);
1497
+ user-select: none;
1498
+ }
1499
+ .neptune-version-row__header[role="button"] {
1500
+ cursor: pointer;
1501
+ }
1502
+ .neptune-version-row__header:hover {
1503
+ background: var(--npt-surface-raised);
1504
+ }
1505
+ .neptune-version-row__header:active { opacity: 0.9; }
1506
+ .neptune-version-row__header:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; border-radius: var(--npt-radius-md); }
1507
+ .neptune-version-row__chevron {
1508
+ width: 16px;
1509
+ height: 16px;
1510
+ flex-shrink: 0;
1511
+ color: var(--npt-text-tertiary);
1512
+ transition: transform var(--npt-duration-fast) var(--npt-ease-default);
1513
+ transform: rotate(0deg);
1514
+ }
1515
+ .neptune-version-row--expanded .neptune-version-row__chevron {
1516
+ transform: rotate(90deg);
1517
+ }
1518
+ .neptune-version-row__description {
1519
+ flex: 1;
1520
+ font-size: var(--npt-text-sm);
1521
+ font-weight: var(--npt-font-weight-medium);
1522
+ color: var(--npt-text-primary);
1523
+ overflow: hidden;
1524
+ text-overflow: ellipsis;
1525
+ white-space: nowrap;
1526
+ }
1527
+ .neptune-version-row__meta {
1528
+ display: flex;
1529
+ align-items: center;
1530
+ gap: var(--npt-space-2);
1531
+ font-size: var(--npt-text-xs);
1532
+ color: var(--npt-text-secondary);
1533
+ flex-shrink: 0;
1534
+ white-space: nowrap;
1535
+ }
1536
+ .neptune-version-row__detail {
1537
+ padding: 10px var(--npt-space-3);
1538
+ margin-top: 2px;
1539
+ border-radius: var(--npt-radius-md);
1540
+ background: var(--npt-surface-sunken);
1541
+ font-size: var(--npt-text-sm);
1542
+ color: var(--npt-text-secondary);
1543
+ line-height: 1.6;
1544
+ }
1545
+
1546
+ /* ═══════════════════════════════════════════════════════════════════════════
1547
+ OVERLAYS
1548
+ ═══════════════════════════════════════════════════════════════════════════ */
1549
+
1550
+ /* ── Modal ── */
1551
+ .neptune-modal-backdrop {
1552
+ position: fixed;
1553
+ inset: 0;
1554
+ z-index: 1000;
1555
+ display: flex;
1556
+ align-items: center;
1557
+ justify-content: center;
1558
+ background: rgba(0, 0, 0, 0.5);
1559
+ }
1560
+ .neptune-modal {
1561
+ max-width: calc(100vw - 32px);
1562
+ max-height: calc(100vh - 64px);
1563
+ display: flex;
1564
+ flex-direction: column;
1565
+ background: var(--npt-surface-overlay);
1566
+ border: 1px solid var(--npt-border-default);
1567
+ border-radius: var(--npt-radius-xl);
1568
+ box-shadow: var(--npt-shadow-xl);
1569
+ overflow: hidden;
1570
+ }
1571
+ .neptune-modal__header {
1572
+ display: flex;
1573
+ align-items: center;
1574
+ justify-content: space-between;
1575
+ padding: var(--npt-space-4) var(--npt-space-5);
1576
+ border-bottom: 1px solid var(--npt-border-default);
1577
+ flex-shrink: 0;
1578
+ }
1579
+ .neptune-modal__title {
1580
+ font-size: var(--npt-text-base);
1581
+ font-weight: var(--npt-font-weight-semibold);
1582
+ color: var(--npt-text-primary);
1583
+ margin: 0;
1584
+ }
1585
+ .neptune-modal__close {
1586
+ width: 28px;
1587
+ height: 28px;
1588
+ border-radius: var(--npt-radius-sm);
1589
+ border: none;
1590
+ background: transparent;
1591
+ color: var(--npt-text-secondary);
1592
+ cursor: pointer;
1593
+ display: inline-flex;
1594
+ align-items: center;
1595
+ justify-content: center;
1596
+ transition: all var(--npt-duration-fast) var(--npt-ease-default);
1597
+ }
1598
+ .neptune-modal__close:hover {
1599
+ background: var(--npt-surface-raised);
1600
+ color: var(--npt-text-primary);
1601
+ }
1602
+ .neptune-modal__close:active { opacity: 0.8; }
1603
+ .neptune-modal__close:focus-visible {
1604
+ outline: 2px solid var(--npt-border-focus);
1605
+ outline-offset: 2px;
1606
+ }
1607
+ .neptune-modal__body {
1608
+ padding: var(--npt-space-5);
1609
+ overflow-y: auto;
1610
+ flex: 1;
1611
+ color: var(--npt-text-primary);
1612
+ font-size: var(--npt-text-sm);
1613
+ line-height: 1.6;
1614
+ }
1615
+
1616
+ /* ═══ PROTOTYPE LAYOUT (migrated from inline CSS) ═══ */
1617
+
1618
+ /* Themed transition helper */
1619
+ .npt-themed, .npt-themed * { transition: background-color 250ms ease, color 250ms ease, border-color 250ms ease, box-shadow 250ms ease; }
1620
+
1621
+ /* App Header (npt- variant) */
1622
+ .npt-app-header { height: 44px; display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; background-color: var(--npt-surface-deep); border-bottom: 1px solid var(--npt-border-default); }
1623
+ .npt-app-header--builder { padding-left: 16px; padding-right: 8px; }
1624
+ .npt-app-header--cockpit { padding: 0 16px; }
1625
+ .npt-app-header__group { display: flex; align-items: center; gap: 12px; }
1626
+ .npt-app-header__group--right { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
1627
+ .npt-app-header__divider { width: 1px; height: 20px; background-color: var(--npt-border-default); }
1628
+ .npt-app-header__title { font-size: 14px; font-weight: 600; letter-spacing: -0.01em; color: var(--npt-text-primary); }
1629
+ .npt-app-header__subtitle { font-size: 12px; color: var(--npt-text-tertiary); }
1630
+ .npt-app-header__icon-btn { padding: 6px; border-radius: 8px; color: var(--npt-icon-tertiary); transition: background-color 120ms ease; background: none; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; }
1631
+ .npt-app-header__icon-btn:hover { background-color: var(--npt-surface-raised); }
1632
+ .npt-app-header__avatar { width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 500; background: var(--npt-gradient-warm); color: var(--npt-text-on-brand); cursor: pointer; }
1633
+ .npt-app-header__notification-dot { position: absolute; top: 6px; right: 6px; width: 6px; height: 6px; border-radius: 50%; background-color: var(--npt-status-error-vivid); }
1634
+
1635
+ /* Cockpit Nav Sidebar */
1636
+ .npt-cockpit-nav { display: flex; flex-direction: column; flex-shrink: 0; transition: width 200ms ease; background-color: var(--npt-surface-sunken); border-right: 1px solid var(--npt-border-default); }
1637
+ .npt-cockpit-nav--expanded { width: 208px; }
1638
+ .npt-cockpit-nav--collapsed { width: 56px; }
1639
+ .npt-cockpit-nav__items { flex: 1; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
1640
+ .npt-cockpit-nav__item { width: 100%; display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: 8px; font-size: 14px; color: var(--npt-text-tertiary); background-color: transparent; transition: background-color 120ms ease, color 120ms ease, box-shadow 120ms ease; border: none; cursor: pointer; text-align: left; }
1641
+ .npt-cockpit-nav__item:hover { background-color: var(--npt-surface-raised); color: var(--npt-text-secondary); }
1642
+ .npt-cockpit-nav__item--active { background-color: var(--npt-surface-raised); color: var(--npt-text-primary); box-shadow: var(--npt-shadow-sm); }
1643
+ .npt-cockpit-nav__divider { margin: 8px 0; border-top: 1px solid var(--npt-border-default); }
1644
+ .npt-cockpit-nav__footer { padding: 8px; border-top: 1px solid var(--npt-border-default); }
1645
+ .npt-cockpit-nav__toggle { width: 100%; display: flex; align-items: center; justify-content: center; padding: 8px; border-radius: 8px; color: var(--npt-icon-tertiary); transition: background-color 120ms ease; background: none; border: none; cursor: pointer; }
1646
+ .npt-cockpit-nav__toggle:hover { background-color: var(--npt-surface-raised); }
1647
+
1648
+ /* Main Content */
1649
+ .npt-main { flex: 1; overflow-y: auto; padding: 32px; background-color: var(--npt-surface-app); }
1650
+
1651
+ /* Workspace */
1652
+ .npt-workspace { flex: 1; display: flex; flex-direction: column; overflow: hidden; background-color: var(--npt-surface-app); border-left: 1px solid var(--npt-border-default); border-right: 1px solid var(--npt-border-default); }
1653
+
1654
+ /* Sidebar Panels */
1655
+ .npt-sidebar { display: flex; flex-direction: column; flex-shrink: 0; overflow: hidden; background-color: var(--npt-surface-sunken); transition: width 200ms ease, min-width 200ms ease; }
1656
+ .npt-sidebar--collapsed { width: 40px; min-width: 40px; }
1657
+ .npt-sidebar__expanded-content { opacity: 1; transition: opacity 120ms ease 80ms; }
1658
+ .npt-sidebar--collapsing .npt-sidebar__expanded-content { opacity: 0; transition: opacity 80ms ease; }
1659
+ .npt-sidebar__collapsed-nav { display: flex; flex-direction: column; align-items: center; padding-top: 8px; gap: 16px; }
1660
+ .npt-sidebar__header { height: 44px; display: flex; justify-content: space-between; padding-left: 8px; padding-right: 8px; flex-shrink: 0; border-bottom: 1px solid var(--npt-border-default); align-items: center; }
1661
+ .npt-sidebar__header-tabs { display: flex; align-items: center; gap: 2px; flex: 1; min-width: 0; }
1662
+ .npt-sidebar__tab { display: flex; align-items: center; gap: 6px; padding: 4px 8px; font-size: 12px; font-weight: 500; border-radius: 8px; white-space: nowrap; color: var(--npt-text-secondary); transition: background-color 150ms ease, color 150ms ease; background: none; border: none; cursor: pointer; }
1663
+ .npt-sidebar__tab:hover { background-color: var(--npt-surface-raised); }
1664
+ .npt-sidebar__tab--active { background-color: var(--npt-surface-overlay); color: var(--npt-text-primary); }
1665
+ .npt-sidebar__content { flex: 1; overflow-y: auto; padding: 4px 0; }
1666
+ .npt-sidebar__input-wrap { border-radius: 16px; border: 1px solid var(--npt-border-subtle); background-color: var(--npt-surface-sunken); transition: border-color 150ms ease; }
1667
+ .npt-sidebar__input-wrap:focus-within { border-color: var(--npt-border-default); }
1668
+ .npt-sidebar__input { width: 100%; background: transparent; border: none; outline: none; color: var(--npt-text-primary); font-size: 13px; font-family: inherit; line-height: 1.5; resize: none; }
1669
+ .npt-sidebar__dropdown { position: absolute; bottom: 100%; left: 0; margin-bottom: 8px; border: 1px solid var(--npt-border-default); border-radius: 12px; box-shadow: var(--npt-shadow-lg); overflow: hidden; z-index: 60; min-width: 180px; background-color: var(--npt-surface-overlay); }
1670
+ .npt-sidebar__dropdown--right { left: auto; right: 0; }
1671
+
1672
+ /* File Tree (npt- variant) */
1673
+ .npt-tree__item { display: flex; align-items: center; gap: 6px; padding: 5px 8px; font-size: 12px; line-height: 1; border-radius: 4px; margin: 1px 4px; width: calc(100% - 8px); color: var(--npt-text-secondary); background-color: transparent; transition: background-color 120ms ease, color 120ms ease; cursor: pointer; user-select: none; text-align: left; border: none; }
1674
+ .npt-tree__item:hover { background-color: var(--npt-surface-raised); color: var(--npt-text-primary); }
1675
+ .npt-tree__item:active { background-color: var(--npt-surface-sunken); }
1676
+ .npt-tree__item:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: -2px; }
1677
+ .npt-tree__item--active { background-color: var(--npt-surface-sunken); color: var(--npt-accent-primary-vivid); }
1678
+ .npt-tree__item--active:hover { background-color: var(--npt-surface-sunken); color: var(--npt-accent-primary-vivid); }
1679
+ .npt-tree__item--folder { font-weight: 500; }
1680
+ .npt-tree__item--folder:hover { color: var(--npt-text-primary); }
1681
+ .npt-tree__chevron { flex-shrink: 0; width: 12px; height: 12px; color: var(--npt-text-tertiary); }
1682
+ .npt-tree__icon { flex-shrink: 0; color: var(--npt-text-tertiary); }
1683
+ .npt-tree__item--active .npt-tree__icon { color: var(--npt-accent-primary); }
1684
+ .npt-tree__item:hover .npt-tree__icon { color: var(--npt-text-secondary); }
1685
+ .npt-tree__item--active:hover .npt-tree__icon { color: var(--npt-accent-primary); }
1686
+ .npt-tree__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; min-width: 0; }
1687
+ .npt-tree__actions { display: flex; align-items: center; gap: 2px; margin-left: auto; flex-shrink: 0; opacity: 0; transition: opacity 120ms ease; }
1688
+ .npt-tree__item:hover .npt-tree__actions { opacity: 1; }
1689
+ .npt-tree__item--active .npt-tree__actions { opacity: 1; }
1690
+
1691
+ /* Dropdown (npt- variant) */
1692
+ .npt-dropdown { position: absolute; border: 1px solid var(--npt-border-default); border-radius: 12px; box-shadow: var(--npt-shadow-lg); overflow: hidden; z-index: 70; background-color: var(--npt-surface-overlay); }
1693
+
1694
+ /* Dividers */
1695
+ .npt-divider { border-top: 1px solid var(--npt-border-default); }
1696
+
1697
+ /* Badge (npt- inline variant) */
1698
+ .npt-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 4px; font-size: 12px; font-weight: 500; }
1699
+ .npt-badge--default { background-color: var(--npt-surface-overlay); color: var(--npt-text-secondary); }
1700
+ .npt-badge--success { background-color: var(--npt-status-success-subtle); color: var(--npt-status-success); }
1701
+ .npt-badge--warning { background-color: var(--npt-status-warning-subtle); color: var(--npt-status-warning); }
1702
+ .npt-badge--error { background-color: var(--npt-status-error-subtle); color: var(--npt-status-error); }
1703
+ .npt-badge--info { background-color: var(--npt-status-info-subtle); color: var(--npt-status-info); }
1704
+ .npt-badge--prod { background-color: var(--npt-status-info-subtle); color: var(--npt-accent-secondary); }
1705
+ .npt-badge--dev { background-color: var(--npt-status-success-subtle); color: var(--npt-status-success); }
1706
+ .npt-badge--qa { background-color: var(--npt-status-warning-subtle); color: var(--npt-status-warning); }
1707
+
1708
+ /* Card (npt- variant) */
1709
+ .npt-card { background-color: var(--npt-surface-raised); border: 1px solid var(--npt-border-default); border-radius: 12px; }
1710
+
1711
+ /* Bottom Bar (npt- variant) */
1712
+ .npt-bottombar { display: flex; align-items: center; gap: 12px; padding: 0 12px; height: 36px; flex-shrink: 0; background-color: var(--npt-surface-sunken); border-top: 1px solid var(--npt-border-default); font-size: 12px; }
1713
+ .npt-bottombar__group { display: flex; align-items: center; gap: 2px; background-color: var(--npt-surface-app); border-radius: 6px; padding: 2px; }
1714
+ .npt-bottombar__btn { padding: 4px 6px; border-radius: 4px; color: var(--npt-text-tertiary); background: none; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background-color 120ms ease, color 120ms ease; }
1715
+ .npt-bottombar__btn:hover { background-color: var(--npt-surface-raised); color: var(--npt-text-secondary); }
1716
+ .npt-bottombar__btn:active { opacity: 0.9; }
1717
+ .npt-bottombar__btn:focus-visible { outline: 2px solid var(--npt-border-focus); outline-offset: 2px; }
1718
+ .npt-bottombar__btn:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
1719
+ .npt-bottombar__btn--active { background-color: var(--npt-surface-raised); color: var(--npt-text-primary); }
1720
+ .npt-bottombar__label { font-size: 11px; color: var(--npt-text-tertiary); }
1721
+ .npt-bottombar__separator { width: 1px; height: 16px; background-color: var(--npt-border-default); }
1722
+
1723
+ /* Chat Messages (npt- variant) */
1724
+ .npt-chat-msg--user { max-width: 16rem; border-radius: 12px; padding: 8px 12px; font-size: 14px; line-height: 1.5; background-color: var(--npt-surface-overlay); color: var(--npt-text-primary); border-bottom-right-radius: 4px; }
1725
+ .npt-chat-msg--naia { font-size: 14px; line-height: 1.5; padding: 0 8px; color: var(--npt-text-primary); }
1726
+
1727
+ /* History Banner */
1728
+ .npt-history-banner { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-bottom: 1px solid var(--npt-border-default); }
1729
+
1730
+ /* Version Row (npt- variant) */
1731
+ .npt-version-row { padding: 8px 12px; border-radius: 6px; transition: background-color 150ms ease; cursor: pointer; }
1732
+ .npt-version-row:hover { background-color: var(--npt-surface-sunken); }
1733
+
1734
+
1735
+ /* Naia interaction classes */
1736
+ .naia-input-wrap { transition: border-color 150ms ease; }
1737
+ .naia-input-wrap:focus-within { border-color: var(--npt-border-default) !important; }
1738
+ .naia-pill { transition: filter 150ms ease, transform 80ms ease; }
1739
+ .naia-pill:hover { filter: brightness(1.2); }
1740
+ .naia-pill:active { filter: brightness(0.9); transform: scale(0.96); }
1741
+ .naia-chip { transition: background-color 150ms ease, border-color 150ms ease, transform 80ms ease; }
1742
+ .naia-chip:hover { background-color: var(--npt-surface-raised) !important; border-color: var(--npt-accent-primary-vivid) !important; }
1743
+ .naia-chip:active { background-color: var(--npt-surface-sunken) !important; transform: scale(0.96); }
1744
+ .naia-icon-btn { transition: background-color 150ms ease, opacity 150ms ease, transform 80ms ease; background: none; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; }
1745
+ .naia-icon-btn:hover { opacity: 0.85; background-color: var(--npt-surface-sunken); }
1746
+ .naia-icon-btn:active { opacity: 1; transform: scale(0.92); }
1747
+ .naia-send-btn { transition: filter 150ms ease, transform 80ms ease; }
1748
+ .naia-send-btn:hover { filter: brightness(1.15); }
1749
+ .naia-send-btn:active { filter: brightness(0.9); transform: scale(0.92); }
1750
+ .naia-tab { transition: background-color 150ms ease, color 150ms ease; }
1751
+ .naia-tab:hover { background-color: var(--npt-surface-raised); }
1752
+ .naia-btn { transition: background-color 150ms ease, border-color 150ms ease, transform 80ms ease; }
1753
+ .naia-btn:hover { background-color: var(--npt-surface-sunken) !important; border-color: var(--npt-border-strong) !important; }
1754
+ .naia-btn:active { transform: scale(0.96); }
1755
+ .naia-row { transition: background-color 150ms ease; }
1756
+ .naia-row:hover { background-color: var(--npt-surface-sunken); }
1757
+ .naia-menu-item { transition: background-color 120ms ease; background: none; border: none; cursor: pointer; }
1758
+ .naia-menu-item:hover { background-color: var(--npt-surface-raised) !important; }
1759
+
1760
+ /* Toolbar (npt- variant) */
1761
+ .npt-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 0 8px; height: 44px; flex-shrink: 0; background-color: var(--npt-surface-sunken); border-bottom: 1px solid var(--npt-border-default); }
1762
+ .npt-toolbar__group { display: flex; align-items: center; gap: 8px; }
1763
+ .npt-toolbar__separator { width: 1px; height: 14px; margin: 0 4px; background-color: var(--npt-border-default); }
1764
+ .npt-toolbar__label { font-size: 12px; color: var(--npt-text-tertiary); }
1765
+ .npt-toolbar__pulse { width: 8px; height: 8px; border-radius: 50%; background-color: var(--npt-status-success); animation: neptune-pulse 2s infinite; }
1766
+
1767
+ /* Search bar */
1768
+ .npt-search-bar { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 8px; background-color: var(--npt-surface-sunken); border: 1px solid var(--npt-border-default); }
1769
+
1770
+ /* Agent input */
1771
+ .npt-agent-input { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 12px; background-color: var(--npt-surface-sunken); border: 1px solid var(--npt-border-subtle); }