@umituz/web-design-system 6.13.0 → 6.14.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.
@@ -0,0 +1,2481 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ html,
8
+ body,
9
+ #root {
10
+ height: 100%;
11
+ }
12
+
13
+ body {
14
+ margin: 0;
15
+ font-family: var(--sans, var(--font-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif));
16
+ font-size: var(--text-base, 14px);
17
+ line-height: 1.5;
18
+ color: var(--ink-1, var(--color-foreground, #e8edf8));
19
+ background:
20
+ radial-gradient(1100px 500px at 85% -10%, rgba(78, 140, 255, 0.055), transparent 60%),
21
+ radial-gradient(900px 420px at -10% 110%, rgba(61, 220, 151, 0.035), transparent 55%),
22
+ var(--bg-0, var(--color-background, #060a12));
23
+ -webkit-font-smoothing: antialiased;
24
+ text-rendering: optimizeLegibility;
25
+ }
26
+
27
+ h1, h2, h3, h4, p {
28
+ margin: 0;
29
+ }
30
+
31
+ a {
32
+ color: inherit;
33
+ text-decoration: none;
34
+ }
35
+
36
+ @layer base {
37
+ button {
38
+ font: inherit;
39
+ color: inherit;
40
+ background: none;
41
+ border: none;
42
+ padding: 0;
43
+ cursor: pointer;
44
+ }
45
+ }
46
+
47
+ input, select, textarea {
48
+ font: inherit;
49
+ color: inherit;
50
+ }
51
+
52
+ ::selection {
53
+ background: rgba(78, 140, 255, 0.32);
54
+ }
55
+
56
+ :focus-visible {
57
+ outline: 2px solid var(--blue, var(--color-primary, #4e8cff));
58
+ outline-offset: 1px;
59
+ border-radius: var(--r-xs, 3px);
60
+ }
61
+
62
+ * {
63
+ scrollbar-width: thin;
64
+ scrollbar-color: var(--line-2, #27334a) transparent;
65
+ }
66
+ *::-webkit-scrollbar {
67
+ width: 9px;
68
+ height: 9px;
69
+ }
70
+ *::-webkit-scrollbar-thumb {
71
+ background: var(--line-2, #27334a);
72
+ border-radius: 99px;
73
+ border: 2px solid transparent;
74
+ background-clip: padding-box;
75
+ }
76
+ *::-webkit-scrollbar-thumb:hover {
77
+ background: var(--line-3, #35435f);
78
+ background-clip: padding-box;
79
+ }
80
+ *::-webkit-scrollbar-corner,
81
+ *::-webkit-scrollbar-track {
82
+ background: transparent;
83
+ }
84
+
85
+ .mono {
86
+ font-family: var(--mono, var(--font-mono, monospace));
87
+ font-feature-settings: 'zero' 1;
88
+ }
89
+
90
+ .dim {
91
+ color: var(--ink-2, var(--color-muted-foreground, #9aa7c0));
92
+ }
93
+
94
+ .faint {
95
+ color: var(--ink-3, #5e6c88);
96
+ }
97
+
98
+ .nowrap {
99
+ white-space: nowrap;
100
+ }
101
+
102
+ .grow {
103
+ flex: 1 1 auto;
104
+ min-width: 0;
105
+ }
106
+
107
+ .row {
108
+ display: flex;
109
+ align-items: center;
110
+ gap: var(--sp-2, 8px);
111
+ }
112
+
113
+ .col {
114
+ display: flex;
115
+ flex-direction: column;
116
+ }
117
+
118
+ .mt-2 { margin-top: 8px; }
119
+ .mt-3 { margin-top: 12px; }
120
+ .mt-4 { margin-top: 16px; }
121
+ .mt-6 { margin-top: 24px; }
122
+
123
+ .text-right { text-align: right; }
124
+ .text-center { text-align: center; }
125
+
126
+ @keyframes fadeUp {
127
+ from { opacity: 0; transform: translateY(5px); }
128
+ to { opacity: 1; transform: none; }
129
+ }
130
+
131
+ @keyframes pulse {
132
+ 0%, 100% { opacity: 1; }
133
+ 50% { opacity: 0.35; }
134
+ }
135
+
136
+ @keyframes pulseRing {
137
+ 0% { box-shadow: 0 0 0 0 var(--green-line, rgba(61, 220, 151, 0.35)); }
138
+ 70% { box-shadow: 0 0 0 6px transparent; }
139
+ 100% { box-shadow: 0 0 0 0 transparent; }
140
+ }
141
+
142
+ @keyframes slideIn {
143
+ from { transform: translateX(40px); opacity: 0; }
144
+ to { transform: none; opacity: 1; }
145
+ }
146
+
147
+ @keyframes fadeIn {
148
+ from { opacity: 0; }
149
+ to { opacity: 1; }
150
+ }
151
+
152
+ @media (prefers-reduced-motion: reduce) {
153
+ *, *::before, *::after {
154
+ animation-duration: 0.001s !important;
155
+ transition-duration: 0.001s !important;
156
+ }
157
+ }
158
+
159
+ .shell {
160
+ display: flex;
161
+ height: 100vh;
162
+ overflow: hidden;
163
+ }
164
+
165
+ .sidebar {
166
+ width: var(--sidebar-w, 250px);
167
+ flex: none;
168
+ background: var(--bg-1, #090f1a);
169
+ border-right: 1px solid var(--line-1, #1b2536);
170
+ display: flex;
171
+ flex-direction: column;
172
+ z-index: 30;
173
+ }
174
+
175
+ .sidebar-logo {
176
+ display: flex;
177
+ align-items: center;
178
+ gap: 10px;
179
+ padding: 15px 18px 13px;
180
+ border-bottom: 1px solid var(--line-1, #1b2536);
181
+ }
182
+
183
+ .logo-mark { flex: none; }
184
+
185
+ .logo-name {
186
+ font-size: 17px;
187
+ font-weight: 700;
188
+ letter-spacing: 0.04em;
189
+ }
190
+
191
+ .logo-tag {
192
+ font-size: 9px;
193
+ font-weight: 600;
194
+ letter-spacing: 0.18em;
195
+ text-transform: uppercase;
196
+ color: var(--ink-3, #5e6c88);
197
+ margin-top: -2px;
198
+ }
199
+
200
+ .sidebar-nav {
201
+ flex: 1;
202
+ overflow-y: auto;
203
+ padding: 10px 10px 16px;
204
+ }
205
+
206
+ .nav-group-label {
207
+ font-size: 10px;
208
+ font-weight: 600;
209
+ letter-spacing: 0.16em;
210
+ text-transform: uppercase;
211
+ color: var(--ink-4, #3d4a63);
212
+ padding: 16px 10px 6px;
213
+ }
214
+
215
+ .nav-item {
216
+ display: flex;
217
+ align-items: center;
218
+ gap: 10px;
219
+ padding: 7px 10px;
220
+ border-radius: var(--r-sm, 5px);
221
+ color: var(--ink-2, #9aa7c0);
222
+ font-size: var(--text-md, 13px);
223
+ font-weight: 450;
224
+ position: relative;
225
+ transition: background 0.13s, color 0.13s;
226
+ margin-bottom: 1px;
227
+ }
228
+
229
+ .nav-item svg { flex: none; opacity: 0.75; }
230
+ .nav-item:hover { background: var(--bg-3, #121b2c); color: var(--ink-1, #e8edf8); }
231
+
232
+ .nav-item.active {
233
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
234
+ color: var(--ink-1, #e8edf8);
235
+ }
236
+ .nav-item.active svg { opacity: 1; color: var(--blue, #4e8cff); }
237
+ .nav-item.active::before {
238
+ content: '';
239
+ position: absolute;
240
+ left: -10px;
241
+ top: 6px;
242
+ bottom: 6px;
243
+ width: 3px;
244
+ border-radius: 0 3px 3px 0;
245
+ background: var(--blue, #4e8cff);
246
+ }
247
+
248
+ .nav-count {
249
+ margin-left: auto;
250
+ font-family: var(--mono, monospace);
251
+ font-size: 10px;
252
+ color: var(--ink-3, #5e6c88);
253
+ background: var(--bg-3, #121b2c);
254
+ border: 1px solid var(--line-1, #1b2536);
255
+ border-radius: 99px;
256
+ padding: 1px 7px;
257
+ }
258
+ .nav-item.active .nav-count { border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); color: #9fc0ff; }
259
+ .nav-count.alert { color: var(--red, #f4585f); border-color: var(--red-line, rgba(244, 88, 95, 0.4)); background: var(--red-soft, rgba(244, 88, 95, 0.12)); }
260
+
261
+ .sidebar-foot {
262
+ border-top: 1px solid var(--line-1, #1b2536);
263
+ padding: 10px 12px;
264
+ }
265
+
266
+ .sidebar-op {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 10px;
270
+ padding: 6px 8px;
271
+ border-radius: var(--r-sm, 5px);
272
+ transition: background 0.13s;
273
+ }
274
+ .sidebar-op:hover { background: var(--bg-3, #121b2c); }
275
+
276
+ .sidebar-op .op-name { font-size: var(--text-md, 13px); font-weight: 550; line-height: 1.2; }
277
+ .sidebar-op .op-role { font-size: var(--text-xs, 11px); color: var(--ink-3, #5e6c88); }
278
+
279
+ .shell-main {
280
+ flex: 1;
281
+ min-width: 0;
282
+ display: flex;
283
+ flex-direction: column;
284
+ height: 100vh;
285
+ }
286
+
287
+ .topbar {
288
+ height: var(--topbar-h, 56px);
289
+ flex: none;
290
+ display: flex;
291
+ align-items: center;
292
+ gap: var(--sp-3, 12px);
293
+ padding: 0 20px;
294
+ border-bottom: 1px solid var(--line-1, #1b2536);
295
+ background: rgba(9, 15, 26, 0.85);
296
+ backdrop-filter: blur(8px);
297
+ z-index: 20;
298
+ }
299
+
300
+ .topbar-crumb {
301
+ font-size: var(--text-sm, 12px);
302
+ color: var(--ink-3, #5e6c88);
303
+ white-space: nowrap;
304
+ }
305
+
306
+ .topbar-title {
307
+ font-size: var(--text-base, 14px);
308
+ font-weight: 600;
309
+ white-space: nowrap;
310
+ }
311
+
312
+ .topbar-search {
313
+ width: 340px;
314
+ max-width: 38vw;
315
+ }
316
+
317
+ .live-pill {
318
+ display: inline-flex;
319
+ align-items: center;
320
+ gap: 7px;
321
+ height: 26px;
322
+ padding: 0 11px;
323
+ border-radius: 99px;
324
+ font-family: var(--mono, monospace);
325
+ font-size: var(--text-xs, 11px);
326
+ letter-spacing: 0.14em;
327
+ color: var(--green, #3ddc97);
328
+ background: var(--green-soft, rgba(61, 220, 151, 0.12));
329
+ border: 1px solid var(--green-line, rgba(61, 220, 151, 0.35));
330
+ transition: all 0.15s;
331
+ }
332
+ .live-pause {
333
+ color: var(--ink-3, #5e6c88);
334
+ background: var(--bg-3, #121b2c);
335
+ border-color: var(--line-2, #27334a);
336
+ }
337
+ .live-dot {
338
+ width: 6px;
339
+ height: 6px;
340
+ border-radius: 99px;
341
+ background: currentColor;
342
+ }
343
+
344
+ .content {
345
+ flex: 1;
346
+ overflow-y: auto;
347
+ overflow-x: hidden;
348
+ position: relative;
349
+ }
350
+
351
+ .page {
352
+ padding: 24px 28px 48px;
353
+ max-width: 1560px;
354
+ margin: 0 auto;
355
+ animation: fadeUp 0.25s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
356
+ }
357
+
358
+ .page.narrow { max-width: 1100px; }
359
+ .page.wide { max-width: none; }
360
+
361
+ .page-header {
362
+ display: flex;
363
+ align-items: flex-end;
364
+ justify-content: space-between;
365
+ gap: var(--sp-4, 16px);
366
+ margin-bottom: 20px;
367
+ flex-wrap: wrap;
368
+ }
369
+
370
+ .page-title {
371
+ font-size: var(--text-2xl, 24px);
372
+ font-weight: 700;
373
+ letter-spacing: -0.01em;
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 12px;
377
+ }
378
+
379
+ .page-sub {
380
+ color: var(--ink-2, #9aa7c0);
381
+ font-size: var(--text-md, 13px);
382
+ margin-top: 3px;
383
+ max-width: 640px;
384
+ }
385
+
386
+ .page-actions {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: var(--sp-2, 8px);
390
+ flex-wrap: wrap;
391
+ }
392
+
393
+ .burger { display: none; }
394
+
395
+ @media (max-width: 1080px) {
396
+ .sidebar {
397
+ position: fixed;
398
+ left: 0;
399
+ top: 0;
400
+ bottom: 0;
401
+ transform: translateX(-100%);
402
+ transition: transform 0.24s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
403
+ box-shadow: var(--shadow-3, 0 18px 60px rgba(1, 4, 10, 0.7));
404
+ }
405
+ .sidebar.open { transform: none; }
406
+ .sidebar-scrim { position: fixed; inset: 0; background: rgba(3, 6, 12, 0.6); z-index: 29; }
407
+ .burger { display: inline-flex; }
408
+ .topbar-search { flex: 1; max-width: none; width: auto; }
409
+ .page { padding: 18px 16px 40px; }
410
+ .topbar-title { display: none; }
411
+ }
412
+
413
+ @media (max-width: 640px) {
414
+ .topbar { gap: 8px; padding: 0 12px; }
415
+ .topbar-crumb { display: none; }
416
+ }
417
+
418
+ .panel {
419
+ background: var(--bg-2, var(--color-card, #0d1422));
420
+ border: 1px solid var(--line-1, var(--color-border, #1b2536));
421
+ border-radius: var(--r-lg, 12px);
422
+ box-shadow: var(--shadow-1, 0 1px 2px rgba(2, 6, 14, 0.5));
423
+ min-width: 0;
424
+ }
425
+
426
+ .panel-head {
427
+ display: flex;
428
+ align-items: center;
429
+ justify-content: space-between;
430
+ gap: var(--sp-3, 12px);
431
+ padding: 13px 16px;
432
+ border-bottom: 1px solid var(--line-1, #1b2536);
433
+ min-height: 48px;
434
+ }
435
+
436
+ .panel-title {
437
+ font-size: var(--text-md, 13px);
438
+ font-weight: 600;
439
+ letter-spacing: 0.01em;
440
+ display: flex;
441
+ align-items: center;
442
+ gap: 8px;
443
+ min-width: 0;
444
+ }
445
+
446
+ .panel-sub {
447
+ font-size: var(--text-sm, 12px);
448
+ color: var(--ink-3, #5e6c88);
449
+ font-weight: 400;
450
+ margin-left: 4px;
451
+ }
452
+
453
+ .panel-body {
454
+ padding: var(--sp-4, 16px);
455
+ }
456
+
457
+ .panel-body.flush {
458
+ padding: 0;
459
+ }
460
+
461
+ .sect-title {
462
+ font-size: var(--text-xs, 11px);
463
+ font-weight: 600;
464
+ letter-spacing: 0.14em;
465
+ text-transform: uppercase;
466
+ color: var(--ink-3, #5e6c88);
467
+ }
468
+
469
+ .btn {
470
+ display: inline-flex;
471
+ align-items: center;
472
+ gap: 7px;
473
+ height: 34px;
474
+ padding: 0 14px;
475
+ border-radius: var(--r-sm, 5px);
476
+ border: 1px solid var(--line-2, #27334a);
477
+ background: var(--bg-3, #121b2c);
478
+ font-size: var(--text-md, 13px);
479
+ font-weight: 500;
480
+ color: var(--ink-1, #e8edf8);
481
+ white-space: nowrap;
482
+ transition: background 0.15s, border-color 0.15s, transform 0.05s;
483
+ user-select: none;
484
+ }
485
+
486
+ .btn:hover { background: var(--bg-4, #182338); border-color: var(--line-3, #35435f); }
487
+ .btn:active { transform: translateY(1px); }
488
+
489
+ .btn.primary {
490
+ background: var(--blue, #4e8cff);
491
+ border-color: var(--blue, #4e8cff);
492
+ color: #f3f7ff;
493
+ }
494
+ .btn.primary:hover { background: #629fff; border-color: #629fff; }
495
+
496
+ .btn.danger {
497
+ background: transparent;
498
+ border-color: var(--red-line, rgba(244, 88, 95, 0.4));
499
+ color: var(--red, #f4585f);
500
+ }
501
+ .btn.danger:hover { background: var(--red-soft, rgba(244, 88, 95, 0.12)); border-color: var(--red, #f4585f); }
502
+
503
+ .btn.danger-solid {
504
+ background: var(--red, #f4585f);
505
+ border-color: var(--red, #f4585f);
506
+ color: #fff;
507
+ }
508
+ .btn.danger-solid:hover { background: #f4717a; }
509
+
510
+ .btn.ghost {
511
+ background: transparent;
512
+ border-color: transparent;
513
+ color: var(--ink-2, #9aa7c0);
514
+ }
515
+ .btn.ghost:hover { background: var(--bg-3, #121b2c); color: var(--ink-1, #e8edf8); }
516
+
517
+ .btn.sm {
518
+ height: 28px;
519
+ padding: 0 10px;
520
+ font-size: var(--text-sm, 12px);
521
+ border-radius: var(--r-xs, 3px);
522
+ }
523
+
524
+ .btn:disabled {
525
+ opacity: 0.45;
526
+ pointer-events: none;
527
+ }
528
+
529
+ .icon-btn {
530
+ display: inline-flex;
531
+ align-items: center;
532
+ justify-content: center;
533
+ width: 32px;
534
+ height: 32px;
535
+ border-radius: var(--r-sm, 5px);
536
+ color: var(--ink-2, #9aa7c0);
537
+ position: relative;
538
+ transition: background 0.15s, color 0.15s;
539
+ }
540
+ .icon-btn:hover { background: var(--bg-3, #121b2c); color: var(--ink-1, #e8edf8); }
541
+
542
+ .badge {
543
+ display: inline-flex;
544
+ align-items: center;
545
+ gap: 5px;
546
+ height: 21px;
547
+ padding: 0 8px;
548
+ border-radius: var(--r-xs, 3px);
549
+ font-size: var(--text-xs, 11px);
550
+ font-weight: 500;
551
+ letter-spacing: 0.02em;
552
+ border: 1px solid transparent;
553
+ white-space: nowrap;
554
+ text-transform: capitalize;
555
+ }
556
+
557
+ .badge.ok { color: var(--green, #3ddc97); background: var(--green-soft, rgba(61, 220, 151, 0.12)); border-color: var(--green-line, rgba(61, 220, 151, 0.35)); }
558
+ .badge.warn { color: var(--amber, #f5b04a); background: var(--amber-soft, rgba(245, 176, 74, 0.13)); border-color: var(--amber-line, rgba(245, 176, 74, 0.35)); }
559
+ .badge.danger { color: var(--red, #f4585f); background: var(--red-soft, rgba(244, 88, 95, 0.12)); border-color: var(--red-line, rgba(244, 88, 95, 0.4)); }
560
+ .badge.info { color: var(--blue, #4e8cff); background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); }
561
+ .badge.idle { color: var(--idle, #7683a0); background: var(--idle-soft, rgba(118, 131, 160, 0.14)); border-color: rgba(118, 131, 160, 0.3); }
562
+ .badge.plain { color: var(--ink-2, #9aa7c0); background: var(--bg-3, #121b2c); border-color: var(--line-2, #27334a); }
563
+
564
+ .badge.mono { font-family: var(--mono, monospace); text-transform: none; }
565
+
566
+ .chip {
567
+ display: inline-flex;
568
+ align-items: center;
569
+ gap: 6px;
570
+ height: 26px;
571
+ padding: 0 10px;
572
+ border-radius: 99px;
573
+ border: 1px solid var(--line-2, #27334a);
574
+ background: var(--bg-2, #0d1422);
575
+ color: var(--ink-2, #9aa7c0);
576
+ font-size: var(--text-sm, 12px);
577
+ font-weight: 450;
578
+ white-space: nowrap;
579
+ transition: all 0.13s;
580
+ }
581
+
582
+ button.chip:hover, .chip.clickable:hover {
583
+ border-color: var(--line-3, #35435f);
584
+ color: var(--ink-1, #e8edf8);
585
+ background: var(--bg-3, #121b2c);
586
+ }
587
+
588
+ .chip.on {
589
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
590
+ border-color: var(--blue-line, rgba(78, 140, 255, 0.35));
591
+ color: #a8c8ff;
592
+ }
593
+
594
+ .chip-row {
595
+ display: flex;
596
+ flex-wrap: wrap;
597
+ gap: 6px;
598
+ }
599
+
600
+ .dot {
601
+ width: 7px;
602
+ height: 7px;
603
+ border-radius: 99px;
604
+ flex: none;
605
+ }
606
+ .dot.ok { background: var(--green, #3ddc97); box-shadow: 0 0 6px rgba(61, 220, 151, 0.55); }
607
+ .dot.warn { background: var(--amber, #f5b04a); box-shadow: 0 0 6px rgba(245, 176, 74, 0.5); }
608
+ .dot.danger { background: var(--red, #f4585f); box-shadow: 0 0 6px rgba(244, 88, 95, 0.55); }
609
+ .dot.idle { background: var(--idle, #7683a0); }
610
+ .dot.info { background: var(--blue, #4e8cff); }
611
+ .dot.pulse { animation: pulse 1.8s ease-in-out infinite; }
612
+
613
+ .avatar {
614
+ display: inline-flex;
615
+ align-items: center;
616
+ justify-content: center;
617
+ border-radius: 50%;
618
+ background: var(--bg-4, #182338);
619
+ border: 1px solid var(--line-2, #27334a);
620
+ color: var(--ink-1, #e8edf8);
621
+ font-size: var(--text-xs, 11px);
622
+ font-weight: 600;
623
+ letter-spacing: 0.02em;
624
+ flex: none;
625
+ user-select: none;
626
+ }
627
+ .avatar.sm { width: 24px; height: 24px; font-size: 10px; }
628
+ .avatar.md { width: 32px; height: 32px; font-size: 11px; }
629
+ .avatar.lg { width: 52px; height: 52px; font-size: 16px; }
630
+
631
+ .input,
632
+ .select {
633
+ height: 34px;
634
+ padding: 0 10px;
635
+ border-radius: var(--r-sm, 5px);
636
+ border: 1px solid var(--line-2, #27334a);
637
+ background: var(--bg-inset, #070c15);
638
+ color: var(--ink-1, #e8edf8);
639
+ font-size: var(--text-md, 13px);
640
+ min-width: 0;
641
+ transition: border-color 0.15s, background 0.15s;
642
+ }
643
+
644
+ .input::placeholder { color: var(--ink-4, #3d4a63); }
645
+ .input:hover, .select:hover { border-color: var(--line-3, #35435f); }
646
+ .input:focus, .select:focus {
647
+ outline: none;
648
+ border-color: var(--blue, #4e8cff);
649
+ background: var(--bg-2, #0d1422);
650
+ }
651
+
652
+ .select {
653
+ appearance: none;
654
+ padding-right: 26px;
655
+ cursor: pointer;
656
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239aa7c0' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
657
+ background-repeat: no-repeat;
658
+ background-position: right 9px center;
659
+ }
660
+
661
+ .select option {
662
+ background: var(--bg-2, #0d1422);
663
+ color: var(--ink-1, #e8edf8);
664
+ }
665
+
666
+ .searchbox {
667
+ display: flex;
668
+ align-items: center;
669
+ gap: 8px;
670
+ height: 34px;
671
+ padding: 0 10px;
672
+ border-radius: var(--r-sm, 5px);
673
+ border: 1px solid var(--line-2, #27334a);
674
+ background: var(--bg-inset, #070c15);
675
+ color: var(--ink-3, #5e6c88);
676
+ min-width: 0;
677
+ }
678
+ .searchbox:focus-within {
679
+ border-color: var(--blue, #4e8cff);
680
+ background: var(--bg-2, #0d1422);
681
+ }
682
+ .searchbox input {
683
+ flex: 1;
684
+ background: none;
685
+ border: none;
686
+ outline: none;
687
+ color: var(--ink-1, #e8edf8);
688
+ min-width: 0;
689
+ }
690
+ .searchbox input::placeholder { color: var(--ink-4, #3d4a63); }
691
+
692
+ .field {
693
+ display: flex;
694
+ flex-direction: column;
695
+ gap: 5px;
696
+ min-width: 0;
697
+ }
698
+ .field-label {
699
+ font-size: var(--text-sm, 12px);
700
+ color: var(--ink-2, #9aa7c0);
701
+ font-weight: 500;
702
+ }
703
+
704
+ .toggle {
705
+ position: relative;
706
+ width: 34px;
707
+ height: 19px;
708
+ border-radius: 99px;
709
+ background: var(--bg-4, #182338);
710
+ border: 1px solid var(--line-2, #27334a);
711
+ transition: background 0.18s, border-color 0.18s;
712
+ flex: none;
713
+ }
714
+ .toggle::after {
715
+ content: '';
716
+ position: absolute;
717
+ top: 2px;
718
+ left: 2px;
719
+ width: 13px;
720
+ height: 13px;
721
+ border-radius: 99px;
722
+ background: var(--ink-3, #5e6c88);
723
+ transition: transform 0.18s var(--ease, cubic-bezier(0.32, 0.72, 0, 1)), background 0.18s;
724
+ }
725
+ .toggle.on {
726
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
727
+ border-color: var(--blue-line, rgba(78, 140, 255, 0.35));
728
+ }
729
+ .toggle.on::after {
730
+ transform: translateX(15px);
731
+ background: var(--blue, #4e8cff);
732
+ }
733
+
734
+ .table-wrap {
735
+ overflow: auto;
736
+ border-radius: 0 0 var(--r-lg, 12px) var(--r-lg, 12px);
737
+ }
738
+
739
+ table.data {
740
+ width: 100%;
741
+ border-collapse: collapse;
742
+ font-size: var(--text-md, 13px);
743
+ }
744
+
745
+ table.data th {
746
+ position: sticky;
747
+ top: 0;
748
+ z-index: 2;
749
+ background: var(--bg-2, #0d1422);
750
+ text-align: left;
751
+ font-size: var(--text-xs, 11px);
752
+ font-weight: 600;
753
+ letter-spacing: 0.1em;
754
+ text-transform: uppercase;
755
+ color: var(--ink-3, #5e6c88);
756
+ padding: 9px 14px;
757
+ border-bottom: 1px solid var(--line-2, #27334a);
758
+ white-space: nowrap;
759
+ user-select: none;
760
+ }
761
+
762
+ table.data th.sortable { cursor: pointer; }
763
+ table.data th.sortable:hover { color: var(--ink-1, #e8edf8); }
764
+
765
+ table.data td {
766
+ padding: 10px 14px;
767
+ border-bottom: 1px solid var(--line-1, #1b2536);
768
+ vertical-align: middle;
769
+ white-space: nowrap;
770
+ }
771
+
772
+ table.data tbody tr {
773
+ transition: background 0.12s;
774
+ }
775
+ table.data tbody tr.clickable { cursor: pointer; }
776
+ table.data tbody tr.clickable:hover { background: var(--bg-3, #121b2c); }
777
+ table.data tbody tr:last-child td { border-bottom: none; }
778
+
779
+ td.mono-cell, .mono-cell {
780
+ font-family: var(--mono, monospace);
781
+ font-size: var(--text-sm, 12px);
782
+ color: var(--ink-2, #9aa7c0);
783
+ }
784
+
785
+ .drawer-overlay {
786
+ position: fixed;
787
+ inset: 0;
788
+ background: rgba(3, 6, 12, 0.62);
789
+ backdrop-filter: blur(2px);
790
+ z-index: 60;
791
+ animation: fadeIn 0.18s ease;
792
+ }
793
+
794
+ .drawer {
795
+ position: fixed;
796
+ top: 0;
797
+ right: 0;
798
+ bottom: 0;
799
+ width: 480px;
800
+ max-width: 100vw;
801
+ background: var(--bg-2, #0d1422);
802
+ border-left: 1px solid var(--line-2, #27334a);
803
+ box-shadow: var(--shadow-3, 0 18px 60px rgba(1, 4, 10, 0.7));
804
+ z-index: 61;
805
+ display: flex;
806
+ flex-direction: column;
807
+ animation: slideIn 0.24s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
808
+ }
809
+
810
+ .drawer.wide { width: 600px; }
811
+
812
+ .drawer-head {
813
+ display: flex;
814
+ align-items: flex-start;
815
+ justify-content: space-between;
816
+ gap: var(--sp-3, 12px);
817
+ padding: 16px 20px;
818
+ border-bottom: 1px solid var(--line-1, #1b2536);
819
+ }
820
+
821
+ .drawer-body {
822
+ flex: 1;
823
+ overflow-y: auto;
824
+ padding: 20px;
825
+ }
826
+
827
+ .drawer-foot {
828
+ display: flex;
829
+ align-items: center;
830
+ justify-content: flex-end;
831
+ gap: var(--sp-2, 8px);
832
+ padding: 14px 20px;
833
+ border-top: 1px solid var(--line-1, #1b2536);
834
+ background: var(--bg-1, #090f1a);
835
+ }
836
+
837
+ .modal-overlay {
838
+ position: fixed;
839
+ inset: 0;
840
+ background: rgba(3, 6, 12, 0.66);
841
+ backdrop-filter: blur(3px);
842
+ z-index: 70;
843
+ display: flex;
844
+ align-items: flex-start;
845
+ justify-content: center;
846
+ padding: 10vh 16px 16px;
847
+ animation: fadeIn 0.16s ease;
848
+ overflow-y: auto;
849
+ }
850
+
851
+ .modal {
852
+ width: 480px;
853
+ max-width: 100%;
854
+ background: var(--bg-2, #0d1422);
855
+ border: 1px solid var(--line-2, #27334a);
856
+ border-radius: var(--r-lg, 12px);
857
+ box-shadow: var(--shadow-3, 0 18px 60px rgba(1, 4, 10, 0.7));
858
+ animation: fadeUp 0.2s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
859
+ }
860
+
861
+ .modal-head {
862
+ display: flex;
863
+ align-items: center;
864
+ justify-content: space-between;
865
+ padding: 16px 20px 0;
866
+ }
867
+
868
+ .modal-title {
869
+ font-size: var(--text-lg, 16px);
870
+ font-weight: 600;
871
+ }
872
+
873
+ .modal-body { padding: 16px 20px; }
874
+
875
+ .modal-foot {
876
+ display: flex;
877
+ justify-content: flex-end;
878
+ gap: var(--sp-2, 8px);
879
+ padding: 0 20px 18px;
880
+ }
881
+
882
+ .empty {
883
+ display: flex;
884
+ flex-direction: column;
885
+ align-items: center;
886
+ justify-content: center;
887
+ gap: 6px;
888
+ padding: 52px 24px;
889
+ text-align: center;
890
+ color: var(--ink-3, #5e6c88);
891
+ }
892
+
893
+ .empty-icon {
894
+ width: 44px;
895
+ height: 44px;
896
+ border-radius: var(--r-md, 8px);
897
+ display: flex;
898
+ align-items: center;
899
+ justify-content: center;
900
+ background: var(--bg-3, #121b2c);
901
+ border: 1px solid var(--line-2, #27334a);
902
+ color: var(--ink-3, #5e6c88);
903
+ margin-bottom: 8px;
904
+ }
905
+
906
+ .empty-title {
907
+ font-size: var(--text-base, 14px);
908
+ font-weight: 600;
909
+ color: var(--ink-1, #e8edf8);
910
+ }
911
+
912
+ .empty-text {
913
+ font-size: var(--text-md, 13px);
914
+ color: var(--ink-3, #5e6c88);
915
+ max-width: 380px;
916
+ }
917
+
918
+ .empty .btn { margin-top: 10px; }
919
+
920
+ .tabs {
921
+ display: flex;
922
+ gap: 2px;
923
+ border-bottom: 1px solid var(--line-1, #1b2536);
924
+ overflow-x: auto;
925
+ }
926
+
927
+ .tab {
928
+ padding: 9px 14px;
929
+ font-size: var(--text-md, 13px);
930
+ font-weight: 500;
931
+ color: var(--ink-3, #5e6c88);
932
+ border-bottom: 2px solid transparent;
933
+ margin-bottom: -1px;
934
+ white-space: nowrap;
935
+ transition: color 0.15s, border-color 0.15s;
936
+ }
937
+
938
+ .tab:hover { color: var(--ink-1, #e8edf8); }
939
+ .tab.active {
940
+ color: var(--ink-1, #e8edf8);
941
+ border-bottom-color: var(--blue, #4e8cff);
942
+ }
943
+
944
+ .kv {
945
+ display: grid;
946
+ grid-template-columns: minmax(120px, max-content) 1fr;
947
+ gap: 8px 20px;
948
+ font-size: var(--text-md, 13px);
949
+ align-items: baseline;
950
+ }
951
+
952
+ .kv dt {
953
+ color: var(--ink-3, #5e6c88);
954
+ font-size: var(--text-sm, 12px);
955
+ font-weight: 500;
956
+ }
957
+
958
+ .kv dd {
959
+ margin: 0;
960
+ color: var(--ink-1, #e8edf8);
961
+ min-width: 0;
962
+ overflow-wrap: anywhere;
963
+ }
964
+
965
+ .meter {
966
+ height: 5px;
967
+ border-radius: 99px;
968
+ background: var(--bg-4, #182338);
969
+ overflow: hidden;
970
+ min-width: 40px;
971
+ }
972
+
973
+ .meter i {
974
+ display: block;
975
+ height: 100%;
976
+ border-radius: 99px;
977
+ background: var(--blue, #4e8cff);
978
+ transition: width 0.5s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
979
+ }
980
+
981
+ .meter.ok i { background: var(--green, #3ddc97); }
982
+ .meter.warn i { background: var(--amber, #f5b04a); }
983
+ .meter.danger i { background: var(--red, #f4585f); }
984
+ .meter.seg { display: flex; gap: 2px; background: transparent; height: 6px; }
985
+ .meter.seg i { border-radius: 2px; }
986
+
987
+ .kbd {
988
+ display: inline-flex;
989
+ align-items: center;
990
+ height: 18px;
991
+ padding: 0 5px;
992
+ border-radius: 4px;
993
+ border: 1px solid var(--line-2, #27334a);
994
+ border-bottom-width: 2px;
995
+ background: var(--bg-3, #121b2c);
996
+ font-family: var(--mono, monospace);
997
+ font-size: 10px;
998
+ color: var(--ink-2, #9aa7c0);
999
+ }
1000
+
1001
+ .timeline {
1002
+ position: relative;
1003
+ padding-left: 22px;
1004
+ }
1005
+
1006
+ .timeline::before {
1007
+ content: '';
1008
+ position: absolute;
1009
+ left: 5px;
1010
+ top: 6px;
1011
+ bottom: 6px;
1012
+ width: 1px;
1013
+ background: var(--line-2, #27334a);
1014
+ }
1015
+
1016
+ .tl-item {
1017
+ position: relative;
1018
+ padding-bottom: 18px;
1019
+ }
1020
+ .tl-item:last-child { padding-bottom: 2px; }
1021
+
1022
+ .tl-dot {
1023
+ position: absolute;
1024
+ left: -22px;
1025
+ top: 5px;
1026
+ width: 11px;
1027
+ height: 11px;
1028
+ border-radius: 99px;
1029
+ border: 2px solid var(--bg-2, #0d1422);
1030
+ background: var(--ink-4, #3d4a63);
1031
+ }
1032
+ .tl-dot.ok { background: var(--green, #3ddc97); }
1033
+ .tl-dot.danger { background: var(--red, #f4585f); }
1034
+ .tl-dot.warn { background: var(--amber, #f5b04a); }
1035
+ .tl-dot.info { background: var(--blue, #4e8cff); }
1036
+
1037
+ .sparkline { display: block; }
1038
+
1039
+ .filterbar {
1040
+ display: flex;
1041
+ flex-wrap: wrap;
1042
+ align-items: center;
1043
+ gap: var(--sp-2, 8px);
1044
+ padding: 12px 16px;
1045
+ border-bottom: 1px solid var(--line-1, #1b2536);
1046
+ }
1047
+
1048
+ .filterbar .searchbox { min-width: 220px; }
1049
+ .filterbar .spacer { flex: 1; }
1050
+
1051
+ .pager {
1052
+ display: flex;
1053
+ align-items: center;
1054
+ justify-content: space-between;
1055
+ gap: var(--sp-2, 8px);
1056
+ padding: 10px 16px;
1057
+ border-top: 1px solid var(--line-1, #1b2536);
1058
+ font-size: var(--text-sm, 12px);
1059
+ color: var(--ink-3, #5e6c88);
1060
+ }
1061
+
1062
+ .pager .pg-btns { display: flex; gap: 4px; }
1063
+
1064
+ .pg-btn {
1065
+ min-width: 28px;
1066
+ height: 28px;
1067
+ padding: 0 6px;
1068
+ border-radius: var(--r-xs, 3px);
1069
+ border: 1px solid var(--line-2, #27334a);
1070
+ color: var(--ink-2, #9aa7c0);
1071
+ font-size: var(--text-sm, 12px);
1072
+ font-family: var(--mono, monospace);
1073
+ display: inline-flex;
1074
+ align-items: center;
1075
+ justify-content: center;
1076
+ }
1077
+ .pg-btn:hover:not(:disabled) { background: var(--bg-3, #121b2c); color: var(--ink-1, #e8edf8); }
1078
+ .pg-btn.cur { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); color: var(--blue, #4e8cff); }
1079
+ .pg-btn:disabled { opacity: 0.35; cursor: default; }
1080
+
1081
+ .link {
1082
+ color: var(--blue, #4e8cff);
1083
+ cursor: pointer;
1084
+ transition: color 0.13s;
1085
+ }
1086
+ .link:hover { color: #7fb0ff; text-decoration: underline; }
1087
+
1088
+ .divider { height: 1px; background: var(--line-1, #1b2536); margin: var(--sp-4, 16px) 0; }
1089
+
1090
+ .tag-num {
1091
+ font-family: var(--mono, monospace);
1092
+ font-size: var(--text-xs, 11px);
1093
+ color: var(--ink-3, #5e6c88);
1094
+ letter-spacing: 0.03em;
1095
+ }
1096
+
1097
+ .scroll-y { overflow-y: auto; }
1098
+
1099
+ .state-note {
1100
+ display: flex;
1101
+ gap: 10px;
1102
+ align-items: flex-start;
1103
+ padding: 12px 14px;
1104
+ border-radius: var(--r-md, 8px);
1105
+ font-size: var(--text-md, 13px);
1106
+ border: 1px solid;
1107
+ }
1108
+
1109
+ .state-note.warn { background: var(--amber-soft, rgba(245, 176, 74, 0.13)); border-color: var(--amber-line, rgba(245, 176, 74, 0.35)); color: var(--amber, #f5b04a); }
1110
+ .state-note.danger { background: var(--red-soft, rgba(244, 88, 95, 0.12)); border-color: var(--red-line, rgba(244, 88, 95, 0.4)); color: var(--red, #f4585f); }
1111
+ .state-note.info { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); color: var(--blue, #4e8cff); }
1112
+ .state-note .note-text { color: var(--ink-1, #e8edf8); }
1113
+ .state-note .note-text b { color: inherit; }
1114
+
1115
+ .hide-md { display: initial; }
1116
+ @media (max-width: 900px) {
1117
+ .hide-md { display: none !important; }
1118
+ }
1119
+
1120
+ @media (max-width: 760px) {
1121
+ .drawer { width: 100vw; border-left: none; }
1122
+ .modal-overlay { padding-top: 4vh; }
1123
+ }
1124
+
1125
+ .dot.blue { background: var(--blue, #4e8cff); }
1126
+ .dot.green { background: var(--green, #3ddc97); }
1127
+ .dot.amber { background: var(--amber, #f5b04a); }
1128
+ .dot.red { background: var(--red, #f4585f); }
1129
+ .dot.violet { background: #9d7bff; }
1130
+ .dot.cyan { background: #37c8d6; }
1131
+
1132
+ .cell-primary { display: block; font-weight: 550; font-size: var(--text-md, 13px); line-height: 1.3; }
1133
+ .cell-sub {
1134
+ display: block;
1135
+ font-size: var(--text-sm, 12px);
1136
+ color: var(--ink-3, #5e6c88);
1137
+ margin-top: 1px;
1138
+ line-height: 1.35;
1139
+ }
1140
+
1141
+ .kpi-strip {
1142
+ display: grid;
1143
+ grid-template-columns: repeat(4, 1fr);
1144
+ gap: 10px;
1145
+ margin-bottom: 18px;
1146
+ }
1147
+
1148
+ .kpi {
1149
+ background: var(--bg-2, #0d1422);
1150
+ border: 1px solid var(--line-1, #1b2536);
1151
+ border-radius: var(--r-md, 8px);
1152
+ padding: 13px 16px 12px;
1153
+ position: relative;
1154
+ overflow: hidden;
1155
+ transition: border-color 0.15s;
1156
+ min-width: 0;
1157
+ }
1158
+
1159
+ .kpi:hover { border-color: var(--line-2, #27334a); }
1160
+
1161
+ .kpi::before {
1162
+ content: '';
1163
+ position: absolute;
1164
+ left: 0;
1165
+ top: 0;
1166
+ bottom: 0;
1167
+ width: 2px;
1168
+ background: var(--tone, var(--line-3, #35435f));
1169
+ }
1170
+
1171
+ .kpi-label {
1172
+ font-size: var(--text-xs, 11px);
1173
+ font-weight: 600;
1174
+ letter-spacing: 0.1em;
1175
+ text-transform: uppercase;
1176
+ color: var(--ink-3, #5e6c88);
1177
+ white-space: nowrap;
1178
+ overflow: hidden;
1179
+ text-overflow: ellipsis;
1180
+ }
1181
+
1182
+ .kpi-value {
1183
+ font-family: var(--mono, monospace);
1184
+ font-size: 26px;
1185
+ font-weight: 600;
1186
+ line-height: 1.15;
1187
+ margin-top: 3px;
1188
+ letter-spacing: -0.01em;
1189
+ }
1190
+
1191
+ .kpi-value.tone-ok { color: var(--green, #3ddc97); }
1192
+ .kpi-value.tone-danger { color: var(--red, #f4585f); }
1193
+ .kpi-value.tone-warn { color: var(--amber, #f5b04a); }
1194
+ .kpi-value.tone-info { color: var(--blue, #4e8cff); }
1195
+
1196
+ .kpi-foot {
1197
+ font-size: var(--text-xs, 11px);
1198
+ color: var(--ink-3, #5e6c88);
1199
+ margin-top: 2px;
1200
+ white-space: nowrap;
1201
+ overflow: hidden;
1202
+ text-overflow: ellipsis;
1203
+ }
1204
+
1205
+ .kpi-link {
1206
+ position: absolute;
1207
+ inset: 0;
1208
+ z-index: 1;
1209
+ }
1210
+
1211
+ .feed-head-live {
1212
+ display: inline-flex;
1213
+ align-items: center;
1214
+ gap: 7px;
1215
+ font-family: var(--mono, monospace);
1216
+ font-size: 10px;
1217
+ letter-spacing: 0.16em;
1218
+ color: var(--green, #3ddc97);
1219
+ }
1220
+
1221
+ .feed-head-live .live-dot { animation: pulse 1.6s ease-in-out infinite; background: var(--green, #3ddc97); }
1222
+
1223
+ .feed {
1224
+ max-height: 520px;
1225
+ overflow-y: auto;
1226
+ }
1227
+
1228
+ .feed-row {
1229
+ display: flex;
1230
+ align-items: center;
1231
+ gap: 12px;
1232
+ padding: 10px 16px;
1233
+ border-bottom: 1px solid var(--line-1, #1b2536);
1234
+ cursor: pointer;
1235
+ transition: background 0.12s;
1236
+ }
1237
+ .feed-row:hover { background: var(--bg-3, #121b2c); }
1238
+ .feed-row:last-child { border-bottom: none; }
1239
+
1240
+ .dash-grid {
1241
+ display: grid;
1242
+ grid-template-columns: minmax(0, 1fr) 380px;
1243
+ gap: 14px;
1244
+ align-items: start;
1245
+ }
1246
+
1247
+ .dash-col {
1248
+ display: flex;
1249
+ flex-direction: column;
1250
+ gap: 14px;
1251
+ min-width: 0;
1252
+ }
1253
+
1254
+ @media (max-width: 1240px) {
1255
+ .dash-grid { grid-template-columns: 1fr; }
1256
+ .kpi-strip { grid-template-columns: repeat(4, 1fr); }
1257
+ }
1258
+
1259
+ @media (max-width: 900px) {
1260
+ .kpi-strip { grid-template-columns: repeat(2, 1fr); }
1261
+ }
1262
+
1263
+ @media (max-width: 560px) {
1264
+ .kpi-strip { grid-template-columns: 1fr 1fr; gap: 8px; }
1265
+ }
1266
+
1267
+ .site-row {
1268
+ display: flex;
1269
+ align-items: center;
1270
+ gap: 12px;
1271
+ padding: 12px 16px;
1272
+ border-bottom: 1px solid var(--line-1, #1b2536);
1273
+ cursor: pointer;
1274
+ transition: background 0.12s;
1275
+ flex-wrap: wrap;
1276
+ row-gap: 10px;
1277
+ }
1278
+ .site-row:hover { background: var(--bg-3, #121b2c); }
1279
+ .site-row:last-child { border-bottom: none; }
1280
+
1281
+ .site-row .s-name { font-size: var(--text-md, 13px); font-weight: 550; }
1282
+ .site-row .s-meta { font-size: var(--text-sm, 12px); color: var(--ink-3, #5e6c88); margin-top: 1px; }
1283
+
1284
+ .occ-inline {
1285
+ display: flex;
1286
+ align-items: center;
1287
+ gap: 8px;
1288
+ min-width: 120px;
1289
+ margin-left: auto;
1290
+ }
1291
+ .occ-num {
1292
+ font-family: var(--mono, monospace);
1293
+ font-size: var(--text-sm, 12px);
1294
+ color: var(--ink-2, #9aa7c0);
1295
+ white-space: nowrap;
1296
+ }
1297
+ .occ-num b { color: var(--ink-1, #e8edf8); font-weight: 600; }
1298
+
1299
+ .attn-item {
1300
+ display: flex;
1301
+ gap: 11px;
1302
+ padding: 11px 16px;
1303
+ border-bottom: 1px solid var(--line-1, #1b2536);
1304
+ cursor: pointer;
1305
+ transition: background 0.12s;
1306
+ }
1307
+ .attn-item:hover { background: var(--bg-3, #121b2c); }
1308
+ .attn-item:last-child { border-bottom: none; }
1309
+
1310
+ .attn-rail {
1311
+ width: 3px;
1312
+ border-radius: 99px;
1313
+ flex: none;
1314
+ align-self: stretch;
1315
+ min-height: 30px;
1316
+ }
1317
+ .attn-rail.critical { background: var(--red, #f4585f); }
1318
+ .attn-rail.high { background: var(--amber, #f5b04a); }
1319
+ .attn-rail.medium { background: var(--blue, #4e8cff); }
1320
+ .attn-rail.low { background: var(--idle, #7683a0); }
1321
+
1322
+ .attn-title { font-size: var(--text-md, 13px); font-weight: 550; line-height: 1.35; }
1323
+ .attn-sub { font-size: var(--text-sm, 12px); color: var(--ink-3, #5e6c88); margin-top: 1px; }
1324
+
1325
+ .attn-count {
1326
+ font-family: var(--mono, monospace);
1327
+ font-size: 20px;
1328
+ font-weight: 600;
1329
+ color: var(--ink-1, #e8edf8);
1330
+ }
1331
+
1332
+ .map-canvas {
1333
+ position: relative;
1334
+ background: radial-gradient(rgba(78, 140, 255, 0.05) 1px, transparent 1px);
1335
+ background-size: 22px 22px;
1336
+ background-position: center;
1337
+ border-radius: 0 0 var(--r-lg, 12px) var(--r-lg, 12px);
1338
+ overflow: hidden;
1339
+ }
1340
+
1341
+ .map-canvas svg { display: block; width: 100%; height: auto; }
1342
+
1343
+ .map-legend {
1344
+ display: flex;
1345
+ gap: 14px;
1346
+ padding: 9px 16px;
1347
+ border-top: 1px solid var(--line-1, #1b2536);
1348
+ font-size: var(--text-xs, 11px);
1349
+ color: var(--ink-3, #5e6c88);
1350
+ flex-wrap: wrap;
1351
+ }
1352
+
1353
+ .map-legend .row { gap: 5px; }
1354
+
1355
+ .map-tabs {
1356
+ display: flex;
1357
+ gap: 4px;
1358
+ padding: 8px 10px 0;
1359
+ }
1360
+
1361
+ .map-tab {
1362
+ padding: 6px 11px;
1363
+ border-radius: var(--r-xs, 3px);
1364
+ font-size: var(--text-sm, 12px);
1365
+ color: var(--ink-3, #5e6c88);
1366
+ font-weight: 500;
1367
+ transition: all 0.13s;
1368
+ }
1369
+ .map-tab:hover { color: var(--ink-1, #e8edf8); background: var(--bg-3, #121b2c); }
1370
+ .map-tab.active { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); color: var(--blue, #4e8cff); }
1371
+
1372
+ .map-node { cursor: pointer; }
1373
+ .map-node rect.bld { fill: var(--bg-3, #121b2c); stroke: var(--line-2, #27334a); }
1374
+ .map-node:hover rect.bld { stroke: var(--blue-line, rgba(78, 140, 255, 0.35)); }
1375
+ .map-node text { fill: var(--ink-3, #5e6c88); font-size: 9px; font-family: var(--mono, monospace); letter-spacing: 0.08em; text-transform: uppercase; }
1376
+
1377
+ .ap-node circle { transition: r 0.15s; }
1378
+ .ap-node:hover circle { filter: drop-shadow(0 0 5px currentColor); }
1379
+ .ap-node text { fill: var(--ink-2, #9aa7c0); font-size: 10px; font-family: var(--sans, sans-serif); font-weight: 550; }
1380
+ .ap-node .ap-sub { fill: var(--ink-4, #3d4a63); font-size: 9px; font-family: var(--mono, monospace); }
1381
+
1382
+ table.matrix {
1383
+ width: 100%;
1384
+ border-collapse: collapse;
1385
+ font-size: var(--text-md, 13px);
1386
+ }
1387
+
1388
+ table.matrix th {
1389
+ font-size: var(--text-xs, 11px);
1390
+ font-weight: 600;
1391
+ letter-spacing: 0.08em;
1392
+ text-transform: uppercase;
1393
+ color: var(--ink-3, #5e6c88);
1394
+ padding: 8px 10px;
1395
+ text-align: center;
1396
+ border-bottom: 1px solid var(--line-2, #27334a);
1397
+ }
1398
+
1399
+ table.matrix th:first-child, table.matrix td:first-child {
1400
+ text-align: left;
1401
+ }
1402
+
1403
+ table.matrix td {
1404
+ padding: 7px 10px;
1405
+ border-bottom: 1px solid var(--line-1, #1b2536);
1406
+ text-align: center;
1407
+ }
1408
+
1409
+ .mx-day {
1410
+ display: inline-flex;
1411
+ align-items: center;
1412
+ justify-content: center;
1413
+ width: 24px;
1414
+ height: 18px;
1415
+ border-radius: 3px;
1416
+ font-size: 11px;
1417
+ }
1418
+
1419
+ .mx-day.on {
1420
+ background: var(--green-soft, rgba(61, 220, 151, 0.12));
1421
+ color: var(--green, #3ddc97);
1422
+ box-shadow: inset 0 0 0 1px var(--green-line, rgba(61, 220, 151, 0.35));
1423
+ }
1424
+ .mx-day.off { color: var(--ink-4, #3d4a63); }
1425
+ .mx-day.never { color: var(--red, #f4585f); opacity: 0.7; }
1426
+
1427
+ .mx-time {
1428
+ font-family: var(--mono, monospace);
1429
+ font-size: var(--text-sm, 12px);
1430
+ color: var(--ink-2, #9aa7c0);
1431
+ white-space: nowrap;
1432
+ }
1433
+
1434
+ .mx-time.full { color: var(--green, #3ddc97); }
1435
+ .mx-time.none { color: var(--ink-4, #3d4a63); }
1436
+
1437
+ .mx-point {
1438
+ font-weight: 550;
1439
+ white-space: nowrap;
1440
+ }
1441
+
1442
+ .mx-zone {
1443
+ display: block;
1444
+ font-size: var(--text-xs, 11px);
1445
+ color: var(--ink-4, #3d4a63);
1446
+ font-weight: 400;
1447
+ margin-top: 1px;
1448
+ }
1449
+
1450
+ .sched-grid {
1451
+ display: grid;
1452
+ grid-template-columns: 90px repeat(24, 1fr);
1453
+ gap: 2px;
1454
+ overflow-x: auto;
1455
+ padding-bottom: 4px;
1456
+ }
1457
+
1458
+ .sched-cell {
1459
+ height: 20px;
1460
+ border-radius: 2px;
1461
+ background: var(--bg-4, #182338);
1462
+ cursor: pointer;
1463
+ transition: background 0.1s;
1464
+ min-width: 9px;
1465
+ }
1466
+ .sched-cell.on { background: var(--blue, #4e8cff); }
1467
+ .sched-cell.editable:hover { outline: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35)); }
1468
+
1469
+ .sched-hour {
1470
+ font-family: var(--mono, monospace);
1471
+ font-size: 9px;
1472
+ color: var(--ink-4, #3d4a63);
1473
+ text-align: center;
1474
+ padding-top: 4px;
1475
+ }
1476
+
1477
+ .sched-day {
1478
+ font-size: var(--text-sm, 12px);
1479
+ color: var(--ink-2, #9aa7c0);
1480
+ font-weight: 500;
1481
+ line-height: 20px;
1482
+ }
1483
+
1484
+ .sched-legend {
1485
+ display: flex;
1486
+ gap: 14px;
1487
+ font-size: var(--text-xs, 11px);
1488
+ color: var(--ink-3, #5e6c88);
1489
+ margin-top: 8px;
1490
+ align-items: center;
1491
+ flex-wrap: wrap;
1492
+ }
1493
+ .sched-legend .swatch { width: 12px; height: 10px; border-radius: 2px; }
1494
+
1495
+ .cardgrid {
1496
+ display: grid;
1497
+ grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
1498
+ gap: 14px;
1499
+ }
1500
+
1501
+ .cardv {
1502
+ border-radius: 12px;
1503
+ padding: 16px 18px;
1504
+ position: relative;
1505
+ min-height: 158px;
1506
+ display: flex;
1507
+ flex-direction: column;
1508
+ border: 1px solid var(--line-2, #27334a);
1509
+ background:
1510
+ linear-gradient(135deg, rgba(78, 140, 255, 0.16), rgba(78, 140, 255, 0.02) 40%),
1511
+ linear-gradient(0deg, #10192b, #10192b);
1512
+ overflow: hidden;
1513
+ transition: transform 0.16s var(--ease, cubic-bezier(0.32, 0.72, 0, 1)), border-color 0.16s;
1514
+ }
1515
+
1516
+ .cardgrid .cardv-wrap { cursor: pointer; }
1517
+ .cardgrid .cardv-wrap:hover .cardv { transform: translateY(-3px); border-color: var(--line-3, #35435f); }
1518
+
1519
+ .cardv.blocked {
1520
+ background:
1521
+ repeating-linear-gradient(-45deg, rgba(244, 88, 95, 0.09) 0 8px, transparent 8px 16px),
1522
+ linear-gradient(0deg, #10192b, #10192b);
1523
+ border-color: var(--red-line, rgba(244, 88, 95, 0.4));
1524
+ }
1525
+ .cardv.lost {
1526
+ border-color: var(--amber-line, rgba(245, 176, 74, 0.35));
1527
+ }
1528
+ .cardv.expired, .cardv.unassigned {
1529
+ filter: saturate(0.35);
1530
+ opacity: 0.75;
1531
+ }
1532
+
1533
+ .cardv-top {
1534
+ display: flex;
1535
+ align-items: flex-start;
1536
+ justify-content: space-between;
1537
+ }
1538
+
1539
+ .cardv-brand {
1540
+ font-size: 10px;
1541
+ font-weight: 700;
1542
+ letter-spacing: 0.22em;
1543
+ text-transform: uppercase;
1544
+ color: rgba(232, 237, 248, 0.55);
1545
+ }
1546
+
1547
+ .cardv-chip {
1548
+ width: 30px;
1549
+ height: 21px;
1550
+ border-radius: 4px;
1551
+ border: 1px solid rgba(232, 237, 248, 0.28);
1552
+ background:
1553
+ linear-gradient(135deg, rgba(245, 176, 74, 0.35), rgba(245, 176, 74, 0.08));
1554
+ position: relative;
1555
+ margin-top: 10px;
1556
+ }
1557
+ .cardv-chip::before, .cardv-chip::after {
1558
+ content: '';
1559
+ position: absolute;
1560
+ background: rgba(232, 237, 248, 0.22);
1561
+ }
1562
+ .cardv-chip::before { left: 0; right: 0; top: 9px; height: 1px; }
1563
+ .cardv-chip::after { top: 0; bottom: 0; left: 14px; width: 1px; }
1564
+
1565
+ .cardv-num {
1566
+ font-family: var(--mono, monospace);
1567
+ font-size: 17px;
1568
+ font-weight: 500;
1569
+ letter-spacing: 0.12em;
1570
+ margin-top: auto;
1571
+ }
1572
+
1573
+ .cardv-person {
1574
+ display: flex;
1575
+ justify-content: space-between;
1576
+ align-items: flex-end;
1577
+ margin-top: 8px;
1578
+ gap: 8px;
1579
+ }
1580
+
1581
+ .cardv-name { font-size: var(--text-md, 13px); font-weight: 550; }
1582
+ .cardv-exp { font-family: var(--mono, monospace); font-size: var(--text-xs, 11px); color: var(--ink-3, #5e6c88); }
1583
+
1584
+ .cardv-type {
1585
+ position: absolute;
1586
+ right: 14px;
1587
+ top: 34px;
1588
+ font-family: var(--mono, monospace);
1589
+ font-size: 9px;
1590
+ letter-spacing: 0.14em;
1591
+ text-transform: uppercase;
1592
+ color: rgba(232, 237, 248, 0.4);
1593
+ border: 1px solid rgba(232, 237, 248, 0.16);
1594
+ border-radius: 3px;
1595
+ padding: 2px 6px;
1596
+ }
1597
+
1598
+ .lifecycle {
1599
+ display: flex;
1600
+ align-items: center;
1601
+ gap: 0;
1602
+ margin-top: 10px;
1603
+ }
1604
+
1605
+ .lc-step {
1606
+ font-size: var(--text-xs, 11px);
1607
+ font-weight: 500;
1608
+ color: var(--ink-4, #3d4a63);
1609
+ padding: 3px 10px;
1610
+ border-radius: 99px;
1611
+ border: 1px solid var(--line-1, #1b2536);
1612
+ background: var(--bg-2, #0d1422);
1613
+ white-space: nowrap;
1614
+ }
1615
+
1616
+ .lc-step.done { color: var(--green, #3ddc97); border-color: var(--green-line, rgba(61, 220, 151, 0.35)); background: var(--green-soft, rgba(61, 220, 151, 0.12)); }
1617
+ .lc-step.cur { color: var(--blue, #4e8cff); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); background: var(--blue-soft, rgba(78, 140, 255, 0.13)); }
1618
+
1619
+ .lc-sep { flex: 1; height: 1px; background: var(--line-2, #27334a); min-width: 8px; }
1620
+
1621
+ .sev-chip {
1622
+ display: inline-flex;
1623
+ align-items: center;
1624
+ gap: 5px;
1625
+ font-family: var(--mono, monospace);
1626
+ font-size: 10px;
1627
+ font-weight: 600;
1628
+ letter-spacing: 0.12em;
1629
+ text-transform: uppercase;
1630
+ padding: 2px 8px;
1631
+ border-radius: var(--r-xs, 3px);
1632
+ }
1633
+ .sev-chip.critical { color: #ff8187; background: var(--red-soft, rgba(244, 88, 95, 0.12)); border: 1px solid var(--red-line, rgba(244, 88, 95, 0.4)); }
1634
+ .sev-chip.high { color: var(--amber, #f5b04a); background: var(--amber-soft, rgba(245, 176, 74, 0.13)); border: 1px solid var(--amber-line, rgba(245, 176, 74, 0.35)); }
1635
+ .sev-chip.medium { color: var(--blue, #4e8cff); background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35)); }
1636
+ .sev-chip.low { color: var(--idle, #7683a0); background: var(--idle-soft, rgba(118, 131, 160, 0.14)); border: 1px solid rgba(118,131,160,.3); }
1637
+
1638
+ .alert-row {
1639
+ display: flex;
1640
+ gap: 14px;
1641
+ padding: 16px;
1642
+ border-bottom: 1px solid var(--line-1, #1b2536);
1643
+ transition: background 0.12s;
1644
+ cursor: pointer;
1645
+ }
1646
+ .alert-row:hover { background: var(--bg-3, #121b2c); }
1647
+ .alert-row:last-child { border-bottom: none; }
1648
+ .alert-row.critical { background: linear-gradient(90deg, rgba(244, 88, 95, 0.06), transparent 45%); }
1649
+
1650
+ .board {
1651
+ display: grid;
1652
+ grid-auto-columns: 290px;
1653
+ grid-auto-flow: column;
1654
+ gap: 12px;
1655
+ overflow-x: auto;
1656
+ padding-bottom: 12px;
1657
+ align-items: start;
1658
+ }
1659
+
1660
+ .board-col {
1661
+ background: var(--bg-2, #0d1422);
1662
+ border: 1px solid var(--line-1, #1b2536);
1663
+ border-radius: var(--r-lg, 12px);
1664
+ min-height: 200px;
1665
+ }
1666
+
1667
+ .board-col-head {
1668
+ display: flex;
1669
+ align-items: center;
1670
+ gap: 8px;
1671
+ padding: 11px 14px;
1672
+ border-bottom: 1px solid var(--line-1, #1b2536);
1673
+ }
1674
+
1675
+ .board-col-title {
1676
+ font-size: var(--text-sm, 12px);
1677
+ font-weight: 600;
1678
+ letter-spacing: 0.04em;
1679
+ }
1680
+
1681
+ .board-count {
1682
+ font-family: var(--mono, monospace);
1683
+ font-size: 10px;
1684
+ color: var(--ink-3, #5e6c88);
1685
+ background: var(--bg-3, #121b2c);
1686
+ border-radius: 99px;
1687
+ padding: 1px 7px;
1688
+ margin-left: auto;
1689
+ }
1690
+
1691
+ .board-cards { padding: 10px; display: flex; flex-direction: column; gap: 8px; }
1692
+
1693
+ .ticket-card {
1694
+ background: var(--bg-3, #121b2c);
1695
+ border: 1px solid var(--line-1, #1b2536);
1696
+ border-radius: var(--r-md, 8px);
1697
+ padding: 12px;
1698
+ cursor: pointer;
1699
+ transition: border-color 0.14s, transform 0.14s;
1700
+ font: inherit;
1701
+ color: inherit;
1702
+ text-align: left;
1703
+ width: 100%;
1704
+ }
1705
+ .ticket-card:hover { border-color: var(--line-3, #35435f); transform: translateY(-1px); }
1706
+ .ticket-card.urgent { border-left: 3px solid var(--red, #f4585f); }
1707
+ .ticket-card.high { border-left: 3px solid var(--amber, #f5b04a); }
1708
+
1709
+ .tc-issue { font-size: 13px; font-weight: 550; line-height: 1.4; margin-top: 6px; }
1710
+ .tc-meta { display: flex; gap: 6px; font-size: 11.5px; color: var(--ink-3, #5e6c88); margin-top: 4px; flex-wrap: wrap; }
1711
+ .tc-foot {
1712
+ display: flex; justify-content: space-between; align-items: center;
1713
+ font-size: 11.5px; color: var(--ink-3, #5e6c88); margin-top: 8px;
1714
+ padding-top: 8px; border-top: 1px solid var(--line-1, #1b2536);
1715
+ }
1716
+ .tc-foot .mono { display: inline-flex; align-items: center; gap: 4px; }
1717
+
1718
+ .board-col-head span:first-child {
1719
+ font-size: var(--text-sm, 12px);
1720
+ font-weight: 600;
1721
+ letter-spacing: 0.04em;
1722
+ }
1723
+ .board-col-head .tag-num { margin-left: auto; }
1724
+ .board-col-body { padding: 10px; display: flex; flex-direction: column; gap: 8px; }
1725
+ .board-empty { color: var(--ink-4, #3d4a63); font-size: 12px; text-align: center; padding: 18px 0; }
1726
+
1727
+ .tree { font-size: var(--text-md, 13px); }
1728
+
1729
+ .tree-node { padding: 3px 0; }
1730
+
1731
+ .tree-row {
1732
+ display: flex;
1733
+ align-items: center;
1734
+ gap: 8px;
1735
+ padding: 6px 10px;
1736
+ border-radius: var(--r-sm, 5px);
1737
+ transition: background 0.12s;
1738
+ }
1739
+
1740
+ .tree-row .t-label { font-weight: 500; }
1741
+ .tree-row .t-sub { color: var(--ink-3, #5e6c88); font-size: var(--text-sm, 12px); }
1742
+
1743
+ .tree-children {
1744
+ margin-left: 18px;
1745
+ border-left: 1px solid var(--line-2, #27334a);
1746
+ padding-left: 10px;
1747
+ }
1748
+
1749
+ .tree-caret { transition: transform 0.15s; color: var(--ink-4, #3d4a63); }
1750
+ .tree-caret.open { transform: rotate(90deg); }
1751
+
1752
+ .occ-panel {
1753
+ display: flex;
1754
+ flex-direction: column;
1755
+ gap: 6px;
1756
+ padding: 13px 16px;
1757
+ border-bottom: 1px solid var(--line-1, #1b2536);
1758
+ }
1759
+ .occ-panel:last-child { border-bottom: none; }
1760
+
1761
+ .occ-head {
1762
+ display: flex;
1763
+ justify-content: space-between;
1764
+ align-items: baseline;
1765
+ }
1766
+
1767
+ .occ-label { font-size: var(--text-md, 13px); font-weight: 550; }
1768
+ .occ-nums { font-family: var(--mono, monospace); font-size: var(--text-sm, 12px); color: var(--ink-3, #5e6c88); }
1769
+ .occ-nums b { color: var(--ink-1, #e8edf8); }
1770
+
1771
+ .stat-grid {
1772
+ display: grid;
1773
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
1774
+ gap: 10px;
1775
+ }
1776
+
1777
+ .stat {
1778
+ background: var(--bg-2, #0d1422);
1779
+ border: 1px solid var(--line-1, #1b2536);
1780
+ border-radius: var(--r-md, 8px);
1781
+ padding: 12px 14px;
1782
+ }
1783
+
1784
+ .stat .s-val {
1785
+ font-family: var(--mono, monospace);
1786
+ font-size: 21px;
1787
+ font-weight: 600;
1788
+ }
1789
+
1790
+ .stat .s-label {
1791
+ font-size: var(--text-xs, 11px);
1792
+ color: var(--ink-3, #5e6c88);
1793
+ letter-spacing: 0.06em;
1794
+ text-transform: uppercase;
1795
+ font-weight: 600;
1796
+ margin-top: 1px;
1797
+ }
1798
+
1799
+ .health-row {
1800
+ display: flex;
1801
+ align-items: center;
1802
+ gap: 10px;
1803
+ padding: 9px 16px;
1804
+ border-bottom: 1px solid var(--line-1, #1b2536);
1805
+ }
1806
+ .health-row:last-child { border-bottom: none; }
1807
+
1808
+ .hb-bar {
1809
+ display: inline-flex;
1810
+ gap: 2px;
1811
+ align-items: flex-end;
1812
+ height: 14px;
1813
+ }
1814
+ .hb-bar i {
1815
+ width: 3px;
1816
+ border-radius: 1px;
1817
+ background: var(--green, #3ddc97);
1818
+ display: block;
1819
+ }
1820
+ .hb-bar.warn i { background: var(--amber, #f5b04a); }
1821
+ .hb-bar.danger i { background: var(--red, #f4585f); }
1822
+
1823
+ .visitor-today {
1824
+ display: grid;
1825
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
1826
+ gap: 12px;
1827
+ }
1828
+
1829
+ .vpass {
1830
+ background: var(--bg-2, #0d1422);
1831
+ border: 1px solid var(--line-1, #1b2536);
1832
+ border-radius: var(--r-lg, 12px);
1833
+ padding: 15px;
1834
+ display: flex;
1835
+ flex-direction: column;
1836
+ gap: 10px;
1837
+ transition: border-color 0.15s;
1838
+ }
1839
+ .vpass:hover { border-color: var(--line-2, #27334a); }
1840
+ .vpass.inside { border-color: var(--green-line, rgba(61, 220, 151, 0.35)); background: linear-gradient(180deg, rgba(61,220,151,.045), var(--bg-2, #0d1422) 55%); }
1841
+
1842
+ .vpass .vp-head { display: flex; align-items: center; gap: 11px; }
1843
+ .vpass .vp-name { font-weight: 600; font-size: var(--text-base, 14px); }
1844
+ .vpass .vp-co { font-size: var(--text-sm, 12px); color: var(--ink-3, #5e6c88); }
1845
+
1846
+ .vpass .vp-times {
1847
+ display: flex;
1848
+ gap: 14px;
1849
+ font-family: var(--mono, monospace);
1850
+ font-size: var(--text-sm, 12px);
1851
+ color: var(--ink-3, #5e6c88);
1852
+ }
1853
+
1854
+ .countdown {
1855
+ display: flex;
1856
+ align-items: center;
1857
+ gap: 10px;
1858
+ flex: 1;
1859
+ min-width: 140px;
1860
+ }
1861
+
1862
+ .cd-text {
1863
+ font-family: var(--mono, monospace);
1864
+ font-size: var(--text-sm, 12px);
1865
+ white-space: nowrap;
1866
+ }
1867
+ .cd-text.urgent { color: var(--red, #f4585f); }
1868
+ .cd-text.soon { color: var(--amber, #f5b04a); }
1869
+
1870
+ .report-catalog {
1871
+ display: flex;
1872
+ flex-direction: column;
1873
+ gap: 6px;
1874
+ }
1875
+
1876
+ .report-cat {
1877
+ display: flex;
1878
+ align-items: center;
1879
+ gap: 10px;
1880
+ padding: 10px 12px;
1881
+ border-radius: var(--r-sm, 5px);
1882
+ border: 1px solid transparent;
1883
+ color: var(--ink-2, #9aa7c0);
1884
+ font-size: var(--text-md, 13px);
1885
+ font-weight: 500;
1886
+ text-align: left;
1887
+ transition: all 0.13s;
1888
+ width: 100%;
1889
+ }
1890
+ .report-cat:hover { background: var(--bg-3, #121b2c); color: var(--ink-1, #e8edf8); }
1891
+ .report-cat.active { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); color: var(--ink-1, #e8edf8); }
1892
+
1893
+ .report-grid {
1894
+ display: grid;
1895
+ grid-template-columns: 290px minmax(0, 1fr);
1896
+ gap: 14px;
1897
+ align-items: start;
1898
+ }
1899
+
1900
+ @media (max-width: 1080px) {
1901
+ .report-grid { grid-template-columns: 1fr; }
1902
+ }
1903
+
1904
+ .barchart {
1905
+ display: flex;
1906
+ align-items: flex-end;
1907
+ gap: 8px;
1908
+ height: 160px;
1909
+ padding-top: 10px;
1910
+ }
1911
+
1912
+ .barchart .bc-col {
1913
+ flex: 1;
1914
+ display: flex;
1915
+ flex-direction: column;
1916
+ align-items: center;
1917
+ gap: 6px;
1918
+ min-width: 0;
1919
+ }
1920
+
1921
+ .barchart .bc-bar {
1922
+ width: 100%;
1923
+ max-width: 42px;
1924
+ border-radius: 4px 4px 0 0;
1925
+ background: linear-gradient(180deg, var(--blue, #4e8cff), rgba(78, 140, 255, 0.35));
1926
+ min-height: 2px;
1927
+ transition: height 0.5s var(--ease, cubic-bezier(0.32, 0.72, 0, 1));
1928
+ position: relative;
1929
+ }
1930
+ .barchart .bc-bar.ok { background: linear-gradient(180deg, var(--green, #3ddc97), rgba(61, 220, 151, 0.3)); }
1931
+ .barchart .bc-bar.danger { background: linear-gradient(180deg, var(--red, #f4585f), rgba(244, 88, 95, 0.3)); }
1932
+
1933
+ .barchart .bc-val { font-family: var(--mono, monospace); font-size: 10px; color: var(--ink-2, #9aa7c0); }
1934
+ .barchart .bc-label { font-size: 10px; color: var(--ink-3, #5e6c88); text-align: center; }
1935
+
1936
+ .settings-grid {
1937
+ display: grid;
1938
+ grid-template-columns: 230px minmax(0, 1fr);
1939
+ gap: 14px;
1940
+ align-items: start;
1941
+ }
1942
+
1943
+ @media (max-width: 900px) {
1944
+ .settings-grid { grid-template-columns: 1fr; }
1945
+ }
1946
+
1947
+ .settings-nav {
1948
+ position: sticky;
1949
+ top: 0;
1950
+ display: flex;
1951
+ flex-direction: column;
1952
+ gap: 2px;
1953
+ }
1954
+
1955
+ .set-row {
1956
+ display: flex;
1957
+ align-items: center;
1958
+ justify-content: space-between;
1959
+ gap: 16px;
1960
+ padding: 13px 16px;
1961
+ border-bottom: 1px solid var(--line-1, #1b2536);
1962
+ }
1963
+ .set-row:last-child { border-bottom: none; }
1964
+
1965
+ .set-row .sr-title { font-size: var(--text-md, 13px); font-weight: 550; }
1966
+ .set-row .sr-sub { font-size: var(--text-sm, 12px); color: var(--ink-3, #5e6c88); margin-top: 1px; max-width: 480px; }
1967
+
1968
+ .pd-hero {
1969
+ display: flex;
1970
+ gap: 18px;
1971
+ align-items: flex-start;
1972
+ padding: 22px;
1973
+ border-radius: var(--r-lg, 12px);
1974
+ border: 1px solid var(--line-1, #1b2536);
1975
+ background:
1976
+ radial-gradient(600px 180px at 0% 0%, rgba(78, 140, 255, 0.07), transparent 60%),
1977
+ var(--bg-2, #0d1422);
1978
+ flex-wrap: wrap;
1979
+ }
1980
+
1981
+ .pd-name { font-size: 22px; font-weight: 700; letter-spacing: -0.01em; }
1982
+ .pd-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; color: var(--ink-2, #9aa7c0); font-size: var(--text-md, 13px); margin-top: 5px; }
1983
+
1984
+ .inside-pill {
1985
+ display: inline-flex;
1986
+ align-items: center;
1987
+ gap: 7px;
1988
+ padding: 5px 12px;
1989
+ border-radius: 99px;
1990
+ font-size: var(--text-sm, 12px);
1991
+ font-weight: 550;
1992
+ background: var(--green-soft, rgba(61, 220, 151, 0.12));
1993
+ color: var(--green, #3ddc97);
1994
+ border: 1px solid var(--green-line, rgba(61, 220, 151, 0.35));
1995
+ }
1996
+ .inside-pill.out { background: var(--idle-soft, rgba(118, 131, 160, 0.14)); color: var(--idle, #7683a0); border-color: rgba(118,131,160,.3); }
1997
+ .inside-pill .live-dot { background: currentColor; animation: pulse 1.8s ease-in-out infinite; }
1998
+
1999
+ .detail-grid {
2000
+ display: grid;
2001
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2002
+ gap: 14px;
2003
+ align-items: start;
2004
+ }
2005
+ @media (max-width: 1080px) { .detail-grid { grid-template-columns: 1fr; } }
2006
+
2007
+ .mini-list .feed-row { padding: 8px 16px; }
2008
+
2009
+ .steps {
2010
+ display: flex;
2011
+ gap: 8px;
2012
+ align-items: center;
2013
+ margin-bottom: 16px;
2014
+ }
2015
+
2016
+ .step-dot {
2017
+ display: flex;
2018
+ align-items: center;
2019
+ gap: 7px;
2020
+ font-size: var(--text-sm, 12px);
2021
+ color: var(--ink-3, #5e6c88);
2022
+ }
2023
+
2024
+ .step-dot .sd {
2025
+ width: 22px;
2026
+ height: 22px;
2027
+ border-radius: 99px;
2028
+ border: 1px solid var(--line-2, #27334a);
2029
+ display: inline-flex;
2030
+ align-items: center;
2031
+ justify-content: center;
2032
+ font-family: var(--mono, monospace);
2033
+ font-size: 11px;
2034
+ }
2035
+ .step-dot.active { color: var(--ink-1, #e8edf8); }
2036
+ .step-dot.active .sd { border-color: var(--blue, #4e8cff); color: var(--blue, #4e8cff); background: var(--blue-soft, rgba(78, 140, 255, 0.13)); }
2037
+ .step-dot.done { color: var(--green, #3ddc97); }
2038
+ .step-dot.done .sd { border-color: var(--green-line, rgba(61, 220, 151, 0.35)); color: var(--green, #3ddc97); background: var(--green-soft, rgba(61, 220, 151, 0.12)); }
2039
+
2040
+ .step-sep { flex: 1; height: 1px; background: var(--line-2, #27334a); }
2041
+
2042
+ .site-hero {
2043
+ display: flex;
2044
+ gap: 18px;
2045
+ align-items: center;
2046
+ padding: 20px 22px;
2047
+ border: 1px solid var(--line-1, #1b2536);
2048
+ border-radius: var(--r-lg, 12px);
2049
+ background: var(--bg-2, #0d1422);
2050
+ flex-wrap: wrap;
2051
+ }
2052
+
2053
+ .site-glyph {
2054
+ width: 52px;
2055
+ height: 52px;
2056
+ border-radius: var(--r-md, 8px);
2057
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
2058
+ border: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35));
2059
+ color: var(--blue, #4e8cff);
2060
+ display: flex;
2061
+ align-items: center;
2062
+ justify-content: center;
2063
+ flex: none;
2064
+ }
2065
+
2066
+ .conflict-note {
2067
+ display: flex;
2068
+ gap: 10px;
2069
+ align-items: flex-start;
2070
+ padding: 10px 14px;
2071
+ border-radius: var(--r-md, 8px);
2072
+ background: var(--amber-soft, rgba(245, 176, 74, 0.13));
2073
+ border: 1px solid var(--amber-line, rgba(245, 176, 74, 0.35));
2074
+ font-size: var(--text-sm, 12px);
2075
+ color: var(--amber, #f5b04a);
2076
+ }
2077
+
2078
+ button.collapse-head {
2079
+ width: 100%;
2080
+ cursor: pointer;
2081
+ background: none;
2082
+ border: none;
2083
+ border-bottom: 1px solid var(--line-1, #1b2536);
2084
+ font: inherit;
2085
+ color: inherit;
2086
+ text-align: left;
2087
+ }
2088
+ button.collapse-head:hover { background: var(--bg-2, #0d1422); }
2089
+
2090
+ .panel.attn { border-color: var(--amber-line, rgba(245, 176, 74, 0.35)); }
2091
+ .panel.attn .panel-body { background: linear-gradient(0deg, rgba(245, 166, 35, 0.03), rgba(245, 166, 35, 0.03)); }
2092
+
2093
+ .assign-row {
2094
+ display: flex; align-items: center; gap: 10px;
2095
+ padding: 8px 10px; border-radius: var(--r-md, 8px);
2096
+ border: 1px solid transparent; background: none;
2097
+ cursor: pointer; font: inherit; color: inherit;
2098
+ width: 100%;
2099
+ }
2100
+ .assign-row:hover { background: var(--bg-3, #121b2c); }
2101
+ .assign-row.sel { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border-color: var(--blue-line, rgba(78, 140, 255, 0.35)); }
2102
+
2103
+ .ag-layout {
2104
+ display: grid;
2105
+ grid-template-columns: 340px minmax(0, 1fr);
2106
+ gap: 14px;
2107
+ align-items: start;
2108
+ }
2109
+ @media (max-width: 1080px) { .ag-layout { grid-template-columns: 1fr; } }
2110
+
2111
+ .ag-row {
2112
+ display: flex; align-items: center; gap: 11px;
2113
+ width: 100%; padding: 11px 14px;
2114
+ background: none; border: none; border-bottom: 1px solid var(--line-1, #1b2536);
2115
+ cursor: pointer; font: inherit; color: inherit; text-align: left;
2116
+ }
2117
+ .ag-row:hover { background: var(--bg-3, #121b2c); }
2118
+ .ag-row.sel { background: var(--blue-soft, rgba(78, 140, 255, 0.13)); box-shadow: inset 2px 0 0 var(--blue, #4e8cff); }
2119
+ .ag-name { display: block; font-weight: 600; font-size: var(--text-md, 13px); }
2120
+ .ag-sub {
2121
+ display: block; color: var(--ink-3, #5e6c88); font-size: var(--text-sm, 12px);
2122
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 230px;
2123
+ }
2124
+ .ag-meta {
2125
+ display: flex; flex-direction: column; gap: 2px; align-items: flex-end;
2126
+ font-size: 11px; color: var(--ink-3, #5e6c88);
2127
+ }
2128
+ .ag-meta span { display: inline-flex; align-items: center; gap: 4px; }
2129
+ .ag-empty { display: grid; place-items: center; min-height: 320px; }
2130
+
2131
+ .ag-member {
2132
+ display: inline-flex; align-items: center; gap: 8px;
2133
+ padding: 5px 11px 5px 6px; border-radius: 99px;
2134
+ border: 1px solid var(--line-1, #1b2536); background: var(--bg-2, #0d1422);
2135
+ font-size: var(--text-sm, 12px); color: var(--ink-1, #e8edf8);
2136
+ text-decoration: none;
2137
+ }
2138
+ .ag-member:hover { border-color: var(--line-3, #35435f); }
2139
+
2140
+ .site-nums { display: flex; gap: 16px; align-items: center; }
2141
+ .site-nums span { font-size: 12px; color: var(--ink-3, #5e6c88); white-space: nowrap; }
2142
+ .site-nums b { font-size: 15px; color: var(--ink-1, #e8edf8); font-weight: 600; }
2143
+ .site-nums i { font-style: normal; font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.05em; }
2144
+ .chip.danger-chip {
2145
+ height: 20px; font-size: 10.5px;
2146
+ background: var(--red-soft, rgba(244, 88, 95, 0.12)); color: var(--red, #f4585f);
2147
+ border: 1px solid var(--red-line, rgba(244, 88, 95, 0.4));
2148
+ }
2149
+
2150
+ .cust-row {
2151
+ display: flex; align-items: center; gap: 14px;
2152
+ padding: 14px 16px; border-bottom: 1px solid var(--line-1, #1b2536);
2153
+ cursor: pointer; transition: background 0.12s;
2154
+ }
2155
+ .cust-row:hover { background: var(--bg-3, #121b2c); }
2156
+ .cust-row:last-child { border-bottom: none; }
2157
+ .cust-glyph {
2158
+ width: 38px; height: 38px; border-radius: var(--r-md, 8px);
2159
+ display: grid; place-items: center; flex: none;
2160
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13)); border: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35)); color: var(--blue, #4e8cff);
2161
+ }
2162
+
2163
+ textarea.input { font-family: inherit; }
2164
+
2165
+ .stagebar {
2166
+ display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
2167
+ padding: 10px 14px;
2168
+ background: var(--bg-2, #0d1422);
2169
+ border: 1px solid var(--line-1, #1b2536);
2170
+ border-radius: var(--r-lg, 12px);
2171
+ margin-bottom: 16px;
2172
+ }
2173
+
2174
+ .stage {
2175
+ display: inline-flex; align-items: center; gap: 6px;
2176
+ font-size: var(--text-sm, 12px);
2177
+ color: var(--ink-3, #5e6c88);
2178
+ padding: 5px 10px;
2179
+ border-radius: 99px;
2180
+ background: var(--bg-3, #121b2c);
2181
+ }
2182
+ .stage.on { color: var(--ink-1, #e8edf8); font-weight: 600; }
2183
+
2184
+ .check-row {
2185
+ display: flex; align-items: center; gap: 9px;
2186
+ width: 100%;
2187
+ padding: 8px 4px;
2188
+ background: none; border: none;
2189
+ cursor: pointer;
2190
+ font-size: var(--text-md, 13px);
2191
+ color: var(--ink-2, #9aa7c0);
2192
+ text-align: left;
2193
+ }
2194
+ .check-row:hover { color: var(--ink-1, #e8edf8); }
2195
+
2196
+ .plan-grid {
2197
+ display: grid;
2198
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
2199
+ gap: 14px;
2200
+ }
2201
+
2202
+ .plan-price { font-size: 22px; font-weight: 600; }
2203
+
2204
+ .ac-land,
2205
+ .land-page {
2206
+ font-family: var(--sans, sans-serif);
2207
+ color: var(--ink-1, #e8edf8);
2208
+ }
2209
+
2210
+ .ac-land h1,
2211
+ .ac-land h2,
2212
+ .ac-land h3,
2213
+ .land-page h1,
2214
+ .land-page h2,
2215
+ .land-page h3 {
2216
+ font-family: var(--sans, sans-serif);
2217
+ color: var(--ink-1, #e8edf8);
2218
+ }
2219
+
2220
+ .ac-land em,
2221
+ .land-page em {
2222
+ font-style: italic;
2223
+ }
2224
+
2225
+ .ac-land-hero,
2226
+ .land-hero {
2227
+ max-width: 56rem;
2228
+ margin: 0 auto;
2229
+ padding: 5.5rem 1.5rem 4rem;
2230
+ text-align: center;
2231
+ }
2232
+
2233
+ .ac-land-kicker,
2234
+ .land-kicker {
2235
+ display: inline-flex;
2236
+ align-items: center;
2237
+ gap: 0.5rem;
2238
+ padding: 0.375rem 0.875rem;
2239
+ border: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35));
2240
+ border-radius: 999px;
2241
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
2242
+ color: var(--blue, #4e8cff);
2243
+ font-size: var(--text-md, 13px);
2244
+ font-weight: 600;
2245
+ }
2246
+
2247
+ .ac-land-hero h1,
2248
+ .land-hero h1 {
2249
+ margin: 1.5rem auto 0;
2250
+ max-width: 44rem;
2251
+ font-size: 44px;
2252
+ line-height: 1.12;
2253
+ letter-spacing: -0.02em;
2254
+ }
2255
+
2256
+ .ac-land-lead,
2257
+ .land-lead {
2258
+ margin: 1.25rem auto 0;
2259
+ max-width: 42rem;
2260
+ color: var(--ink-2, #9aa7c0);
2261
+ font-size: var(--text-xl, 19px);
2262
+ line-height: 1.55;
2263
+ }
2264
+
2265
+ .ac-land-cta,
2266
+ .land-cta {
2267
+ display: flex;
2268
+ flex-wrap: wrap;
2269
+ justify-content: center;
2270
+ gap: 0.75rem;
2271
+ margin-top: 2rem;
2272
+ }
2273
+
2274
+ .ac-land-note,
2275
+ .land-note {
2276
+ margin-top: 1rem;
2277
+ color: var(--ink-3, #5e6c88);
2278
+ font-size: var(--text-md, 13px);
2279
+ }
2280
+
2281
+ .ac-land-strip,
2282
+ .land-strip {
2283
+ display: flex;
2284
+ flex-wrap: wrap;
2285
+ justify-content: center;
2286
+ gap: 0.5rem;
2287
+ max-width: 52rem;
2288
+ margin: 0 auto;
2289
+ padding: 0 1.5rem 3.5rem;
2290
+ }
2291
+
2292
+ .ac-land-chip,
2293
+ .land-chip {
2294
+ padding: 0.3rem 0.8rem;
2295
+ border: 1px solid var(--line-2, #27334a);
2296
+ border-radius: 999px;
2297
+ background: var(--bg-2, #0d1422);
2298
+ color: var(--ink-2, #9aa7c0);
2299
+ font-size: var(--text-md, 13px);
2300
+ }
2301
+
2302
+ .ac-land-section,
2303
+ .land-section {
2304
+ padding: 4rem 1.5rem;
2305
+ border-top: 1px solid var(--line-1, #1b2536);
2306
+ }
2307
+
2308
+ .ac-land-section--alt,
2309
+ .land-section--alt {
2310
+ background: var(--bg-1, #090f1a);
2311
+ }
2312
+
2313
+ .ac-land-section-inner,
2314
+ .land-section-inner {
2315
+ max-width: 68rem;
2316
+ margin: 0 auto;
2317
+ }
2318
+
2319
+ .ac-land-section h2,
2320
+ .land-section h2 {
2321
+ font-size: 30px;
2322
+ letter-spacing: -0.015em;
2323
+ }
2324
+
2325
+ .ac-land-section-intro,
2326
+ .land-section-intro {
2327
+ margin: 0.75rem 0 0;
2328
+ max-width: 40rem;
2329
+ color: var(--ink-2, #9aa7c0);
2330
+ font-size: var(--text-lg, 16px);
2331
+ line-height: 1.55;
2332
+ }
2333
+
2334
+ .ac-land-grid,
2335
+ .land-grid {
2336
+ display: grid;
2337
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
2338
+ gap: 1rem;
2339
+ margin-top: 2.25rem;
2340
+ }
2341
+
2342
+ .ac-land-card,
2343
+ .land-card {
2344
+ padding: 1.5rem;
2345
+ border: 1px solid var(--line-2, #27334a);
2346
+ border-radius: var(--r-lg, 12px);
2347
+ background: var(--bg-2, #0d1422);
2348
+ }
2349
+
2350
+ .ac-land-card--featured,
2351
+ .land-card--featured {
2352
+ border-color: var(--blue-line, rgba(78, 140, 255, 0.35));
2353
+ }
2354
+
2355
+ .ac-land-card-icon,
2356
+ .land-card-icon {
2357
+ display: inline-flex;
2358
+ align-items: center;
2359
+ justify-content: center;
2360
+ width: 36px;
2361
+ height: 36px;
2362
+ border: 1px solid var(--blue-line, rgba(78, 140, 255, 0.35));
2363
+ border-radius: var(--r-md, 8px);
2364
+ background: var(--blue-soft, rgba(78, 140, 255, 0.13));
2365
+ color: var(--blue, #4e8cff);
2366
+ }
2367
+
2368
+ .ac-land-card h3,
2369
+ .land-card h3 {
2370
+ margin-top: 1rem;
2371
+ font-size: var(--text-xl, 19px);
2372
+ }
2373
+
2374
+ .ac-land-card p,
2375
+ .land-card p {
2376
+ margin: 0.5rem 0 0;
2377
+ color: var(--ink-2, #9aa7c0);
2378
+ font-size: var(--text-base, 14px);
2379
+ line-height: 1.55;
2380
+ }
2381
+
2382
+ .ac-land-record,
2383
+ .land-record {
2384
+ max-width: 52rem;
2385
+ margin: 0 auto;
2386
+ padding: 4rem 1.5rem;
2387
+ border-top: 1px solid var(--line-1, #1b2536);
2388
+ text-align: center;
2389
+ }
2390
+
2391
+ .ac-land-record h2,
2392
+ .land-record h2 {
2393
+ font-size: 28px;
2394
+ }
2395
+
2396
+ .ac-land-record p,
2397
+ .land-record p {
2398
+ margin: 0.75rem auto 0;
2399
+ color: var(--ink-2, #9aa7c0);
2400
+ font-size: var(--text-lg, 16px);
2401
+ line-height: 1.6;
2402
+ }
2403
+
2404
+ .ac-land-steps,
2405
+ .land-steps {
2406
+ display: grid;
2407
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
2408
+ gap: 1.25rem;
2409
+ margin: 2.25rem 0 0;
2410
+ padding: 0;
2411
+ list-style: none;
2412
+ }
2413
+
2414
+ .ac-land-steps li,
2415
+ .land-steps li {
2416
+ padding: 1.5rem;
2417
+ border: 1px solid var(--line-2, #27334a);
2418
+ border-radius: var(--r-lg, 12px);
2419
+ background: var(--bg-2, #0d1422);
2420
+ }
2421
+
2422
+ .ac-land-step-num,
2423
+ .land-step-num {
2424
+ display: inline-flex;
2425
+ align-items: center;
2426
+ justify-content: center;
2427
+ width: 26px;
2428
+ height: 26px;
2429
+ border-radius: 999px;
2430
+ background: var(--blue, #4e8cff);
2431
+ color: #ffffff;
2432
+ font-size: var(--text-base, 14px);
2433
+ font-weight: 700;
2434
+ }
2435
+
2436
+ .ac-land-steps h3,
2437
+ .land-steps h3 {
2438
+ margin-top: 0.875rem;
2439
+ font-size: var(--text-lg, 16px);
2440
+ }
2441
+
2442
+ .ac-land-steps p,
2443
+ .land-steps p {
2444
+ margin: 0.5rem 0 0;
2445
+ color: var(--ink-2, #9aa7c0);
2446
+ font-size: var(--text-base, 14px);
2447
+ line-height: 1.55;
2448
+ }
2449
+
2450
+ .ac-land-close,
2451
+ .land-close {
2452
+ max-width: 52rem;
2453
+ margin: 0 auto;
2454
+ padding: 4.5rem 1.5rem;
2455
+ border-top: 1px solid var(--line-1, #1b2536);
2456
+ text-align: center;
2457
+ }
2458
+
2459
+ .ac-land-close h2,
2460
+ .land-close h2 {
2461
+ font-size: 32px;
2462
+ }
2463
+
2464
+ .ac-land-close p,
2465
+ .land-close p {
2466
+ margin: 0.75rem auto 0;
2467
+ color: var(--ink-2, #9aa7c0);
2468
+ font-size: var(--text-lg, 16px);
2469
+ line-height: 1.55;
2470
+ }
2471
+
2472
+ .udb-period-select__select {
2473
+ height: 100%;
2474
+ border: none;
2475
+ background: transparent;
2476
+ font-family: var(--sans, sans-serif);
2477
+ font-size: 12.5px;
2478
+ color: var(--ink-2, #9aa7c0);
2479
+ outline: none;
2480
+ cursor: pointer;
2481
+ }