mudlet-map-editor 0.1.0 → 0.2.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.
@@ -1,3476 +1,2 @@
1
- * { box-sizing: border-box; }
2
-
3
- a { color: rgba(143, 184, 255, 0.85); text-decoration: none; }
4
- a:hover { color: rgba(143, 184, 255, 1); text-decoration: underline; }
5
-
6
- * {
7
- scrollbar-width: thin;
8
- scrollbar-color: rgba(143, 184, 255, 0.15) transparent;
9
- }
10
- *::-webkit-scrollbar { width: 5px; height: 5px; }
11
- *::-webkit-scrollbar-track { background: transparent; }
12
- *::-webkit-scrollbar-thumb {
13
- background: rgba(143, 184, 255, 0.15);
14
- border-radius: 3px;
15
- }
16
- *::-webkit-scrollbar-thumb:hover { background: rgba(143, 184, 255, 0.28); }
17
- *::-webkit-scrollbar-corner { background: transparent; }
18
-
19
- input[type="checkbox"] {
20
- -webkit-appearance: none;
21
- appearance: none;
22
- width: 14px;
23
- height: 14px;
24
- flex-shrink: 0;
25
- border: 1px solid rgba(143, 184, 255, 0.2);
26
- border-radius: 3px;
27
- background: rgba(10, 14, 22, 0.7);
28
- cursor: pointer;
29
- vertical-align: middle;
30
- transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
31
- position: relative;
32
- }
33
- input[type="checkbox"]:hover {
34
- border-color: rgba(143, 184, 255, 0.4);
35
- background: rgba(20, 30, 50, 0.8);
36
- }
37
- input[type="checkbox"]:focus-visible {
38
- outline: none;
39
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.45);
40
- }
41
- input[type="checkbox"]:checked {
42
- background: rgba(52, 100, 168, 0.85);
43
- border-color: rgba(52, 100, 168, 0.9);
44
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpolyline points='2,6.5 4.5,9 10,3' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
45
- background-size: 10px 10px;
46
- background-repeat: no-repeat;
47
- background-position: center;
48
- }
49
- input[type="checkbox"]:checked:hover {
50
- background-color: rgba(74, 128, 192, 0.9);
51
- border-color: rgba(74, 128, 192, 1);
52
- }
53
- input[type="checkbox"]:disabled {
54
- opacity: 0.35;
55
- cursor: not-allowed;
56
- }
57
-
58
- input[type="color"] {
59
- -webkit-appearance: none;
60
- -moz-appearance: none;
61
- appearance: none;
62
- border: 1px solid rgba(143, 184, 255, 0.2);
63
- border-radius: 4px;
64
- padding: 0;
65
- background: transparent;
66
- cursor: pointer;
67
- overflow: hidden;
68
- height: 24px;
69
- width: 40px;
70
- }
71
- input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
72
- input[type="color"]::-webkit-color-swatch { border: none; border-radius: 3px; }
73
- input[type="color"]::-moz-color-swatch { border: none; border-radius: 3px; }
74
-
75
- input[type="range"] {
76
- -webkit-appearance: none;
77
- appearance: none;
78
- height: 4px;
79
- border-radius: 2px;
80
- background: rgba(143, 184, 255, 0.2);
81
- outline: none;
82
- padding: 0;
83
- margin: 0;
84
- cursor: pointer;
85
- }
86
- input[type="range"]::-webkit-slider-thumb {
87
- -webkit-appearance: none;
88
- appearance: none;
89
- width: 14px;
90
- height: 14px;
91
- border-radius: 50%;
92
- background: #00e5ff;
93
- cursor: pointer;
94
- }
95
- input[type="range"]::-moz-range-thumb {
96
- width: 14px;
97
- height: 14px;
98
- border: none;
99
- border-radius: 50%;
100
- background: #00e5ff;
101
- cursor: pointer;
102
- }
103
-
104
- html, body, #root {
105
- margin: 0;
106
- padding: 0;
107
- height: 100%;
108
- background: #080c14;
109
- background-image:
110
- radial-gradient(ellipse 80% 60% at 20% 0%, rgba(30, 53, 83, 0.35) 0%, transparent 60%),
111
- radial-gradient(ellipse 60% 80% at 80% 100%, rgba(18, 30, 60, 0.3) 0%, transparent 55%),
112
- linear-gradient(160deg, #0a0d16 0%, #080c14 50%, #06090f 100%);
113
- color: #e6e9ef;
114
- font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
115
- }
116
-
117
- .app {
118
- position: relative;
119
- height: 100%;
120
- }
121
-
122
- #logo {
123
- height: 46px;
124
- vertical-align: middle;
125
- margin: -10px;
126
- opacity: 0.8;
127
- }
128
-
129
- .toolbar {
130
- position: absolute;
131
- top: 12px;
132
- left: 12px;
133
- right: 12px;
134
- display: flex;
135
- flex-direction: column;
136
- background: rgba(30, 42, 62, 0.52);
137
- backdrop-filter: blur(16px) saturate(1.8) brightness(0.4);
138
- border: 1px solid rgba(143, 184, 255, 0.18);
139
- border-radius: 12px;
140
- box-shadow: 0 4px 24px rgba(0,0,0,0.35), inset 0 1px 0 rgba(255,255,255,0.08);
141
- z-index: 9;
142
- overflow: visible;
143
- }
144
-
145
- .toolbar-row {
146
- display: flex;
147
- align-items: center;
148
- gap: 8px;
149
- padding: 8px 14px;
150
- }
151
-
152
- .toolbar-row-header {
153
- min-height: 44px;
154
- }
155
-
156
- .toolbar-row-tools {
157
- border-top: 1px solid rgba(143, 184, 255, 0.08);
158
- padding: 4px 14px;
159
- gap: 6px;
160
- }
161
-
162
-
163
- .toolbar h1 {
164
- margin: 0 8px 0 0;
165
- font-size: 11px;
166
- font-weight: 600;
167
- letter-spacing: 0.08em;
168
- text-transform: uppercase;
169
- color: #8fb8ff;
170
- white-space: nowrap;
171
- padding: 6px 12px;
172
- text-shadow: 0 0 20px rgba(143, 184, 255, 0.4);
173
- transition: text-shadow 0.2s;
174
- }
175
-
176
- .toolbar h1:hover {
177
- text-shadow: 0 0 12px rgba(143, 184, 255, 0.9), 0 0 28px rgba(143, 184, 255, 0.5);
178
- }
179
-
180
- .toolbar-sep {
181
- width: 1px;
182
- height: 22px;
183
- background: rgba(143, 184, 255, 0.1);
184
- margin: 0 4px;
185
- }
186
-
187
- .toolbar button,
188
- .toolbar select,
189
- .toolbar label.file-button {
190
- background: rgba(31, 42, 60, 0.6);
191
- color: #e6e9ef;
192
- border: 1px solid rgba(143, 184, 255, 0.12);
193
- padding: 6px 12px;
194
- border-radius: 5px;
195
- cursor: pointer;
196
- font-size: 13px;
197
- line-height: 1;
198
- font-family: inherit;
199
- backdrop-filter: blur(8px);
200
- transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
201
- display: inline-flex;
202
- align-items: center;
203
- gap: 5px;
204
- }
205
-
206
- .toolbar select option,
207
- .side-panel select option,
208
- .cl-form select option,
209
- .area-move-row select option {
210
- background: #0e1520;
211
- color: #e6e9ef;
212
- }
213
-
214
- .toolbar button:hover:not(:disabled),
215
- .toolbar label.file-button:hover {
216
- background: rgba(52, 100, 168, 0.3);
217
- border-color: rgba(143, 184, 255, 0.25);
218
- box-shadow: 0 0 12px rgba(143, 184, 255, 0.08);
219
- }
220
-
221
- .toolbar button:disabled {
222
- opacity: 0.35;
223
- cursor: not-allowed;
224
- }
225
-
226
- .toolbar .tool-group {
227
- display: flex;
228
- gap: 2px;
229
- padding: 2px;
230
- background: rgba(6, 9, 16, 0.5);
231
- border: 1px solid rgba(143, 184, 255, 0.08);
232
- border-radius: 6px;
233
- backdrop-filter: blur(8px);
234
- }
235
-
236
- .toolbar .tool-btn {
237
- display: inline-flex;
238
- align-items: center;
239
- gap: 6px;
240
- background: transparent;
241
- border: 1px solid transparent;
242
- padding: 5px 10px;
243
- border-radius: 4px;
244
- transition: background 0.15s, border-color 0.15s;
245
- }
246
-
247
- .toolbar .tool-btn.active {
248
- background: rgba(30, 53, 83, 0.7);
249
- border-color: rgba(52, 100, 168, 0.6);
250
- color: #cfe1ff;
251
- box-shadow: 0 0 12px rgba(52, 100, 168, 0.2), inset 0 1px 0 rgba(255,255,255,0.05);
252
- }
253
-
254
- .toolbar .tool-key {
255
- display: inline-flex;
256
- align-items: center;
257
- justify-content: center;
258
- font-size: 10px;
259
- line-height: 1;
260
- color: #6a7588;
261
- background: rgba(10, 14, 22, 0.7);
262
- border: 1px solid rgba(143, 184, 255, 0.1);
263
- padding: 2px 5px;
264
- border-radius: 3px;
265
- font-family: ui-monospace, Consolas, monospace;
266
- align-self: center;
267
- }
268
-
269
- .toolbar .tool-btn.active .tool-key {
270
- background: rgba(6, 9, 16, 0.8);
271
- color: #8fb8ff;
272
- border-color: rgba(52, 100, 168, 0.5);
273
- }
274
-
275
- /* ── Custom DropdownSelect ── */
276
- .dropdown-select {
277
- position: relative;
278
- display: inline-flex;
279
- }
280
-
281
- .dropdown-trigger {
282
- display: inline-flex;
283
- align-items: center;
284
- gap: 6px;
285
- background: rgba(10, 14, 22, 0.55);
286
- border: 1px solid rgba(143, 184, 255, 0.14);
287
- border-radius: 7px;
288
- padding: 0 10px 0 0;
289
- height: 30px;
290
- cursor: pointer;
291
- font-size: 13px;
292
- color: #e6e9ef;
293
- font-family: inherit;
294
- transition: border-color 0.15s, background 0.15s;
295
- white-space: nowrap;
296
- overflow: hidden;
297
- }
298
- .dropdown-trigger:hover,
299
- .dropdown-trigger.open {
300
- background: rgba(20, 28, 46, 0.7);
301
- border-color: rgba(143, 184, 255, 0.28);
302
- }
303
-
304
- .dropdown-trigger-label {
305
- font-size: 10px;
306
- text-transform: uppercase;
307
- letter-spacing: 0.06em;
308
- line-height: 1;
309
- color: #6a7588;
310
- padding: 0 8px;
311
- height: 100%;
312
- display: flex;
313
- align-items: center;
314
- border-right: 1px solid rgba(143, 184, 255, 0.08);
315
- flex-shrink: 0;
316
- }
317
-
318
- .dropdown-trigger-value {
319
- flex: 1;
320
- min-width: 0;
321
- padding-left: 8px;
322
- overflow: hidden;
323
- text-overflow: ellipsis;
324
- white-space: nowrap;
325
- font-size: 10px;
326
- text-transform: uppercase;
327
- letter-spacing: 0.06em;
328
- text-align: left;
329
- }
330
-
331
- .dropdown-arrow {
332
- font-size: 9px;
333
- color: #6a7588;
334
- flex-shrink: 0;
335
- }
336
-
337
- .dropdown-backdrop {
338
- position: fixed;
339
- inset: 0;
340
- z-index: 999;
341
- }
342
-
343
- .dropdown-list {
344
- z-index: 1000;
345
- background: rgba(12, 18, 30, 0.96);
346
- backdrop-filter: blur(20px);
347
- border: 1px solid rgba(143, 184, 255, 0.14);
348
- border-radius: 10px;
349
- box-shadow: 0 12px 40px rgba(0,0,0,0.7), inset 0 1px 0 rgba(255,255,255,0.05);
350
- overflow: hidden;
351
- display: flex;
352
- flex-direction: column;
353
- max-height: 320px;
354
- }
355
-
356
- .dropdown-search-wrap {
357
- padding: 8px 8px 6px;
358
- border-bottom: 1px solid rgba(143, 184, 255, 0.07);
359
- flex-shrink: 0;
360
- }
361
-
362
- .dropdown-search {
363
- width: 100%;
364
- background: rgba(8, 12, 20, 0.7);
365
- border: 1px solid rgba(143, 184, 255, 0.12);
366
- border-radius: 6px;
367
- color: #e6e9ef;
368
- font-size: 12px;
369
- font-family: inherit;
370
- padding: 5px 9px;
371
- outline: none;
372
- box-sizing: border-box;
373
- transition: border-color 0.15s;
374
- }
375
- .dropdown-search:focus {
376
- border-color: rgba(52, 100, 168, 0.6);
377
- }
378
- .dropdown-search::placeholder { color: #4a5568; }
379
-
380
- .dropdown-options {
381
- overflow-y: auto;
382
- padding: 5px;
383
- display: flex;
384
- flex-direction: column;
385
- gap: 2px;
386
- }
387
-
388
- .dropdown-option {
389
- display: block;
390
- width: 100%;
391
- text-align: left;
392
- background: transparent;
393
- border: 1px solid transparent;
394
- border-radius: 6px;
395
- color: #c8d0dc;
396
- font-size: 13px;
397
- font-family: inherit;
398
- padding: 6px 10px;
399
- cursor: pointer;
400
- transition: background 0.1s, color 0.1s, border-color 0.1s;
401
- white-space: nowrap;
402
- }
403
- .dropdown-option:hover {
404
- background: rgba(52, 100, 168, 0.2);
405
- color: #e6e9ef;
406
- border-color: rgba(143, 184, 255, 0.1);
407
- }
408
- .dropdown-option.selected {
409
- background: rgba(30, 53, 83, 0.7);
410
- border-color: rgba(52, 100, 168, 0.5);
411
- color: #cfe1ff;
412
- }
413
- .dropdown-option.highlighted {
414
- background: rgba(52, 100, 168, 0.25);
415
- color: #e6e9ef;
416
- border-color: rgba(143, 184, 255, 0.15);
417
- }
418
- .dropdown-option.highlighted.selected {
419
- background: rgba(52, 100, 168, 0.45);
420
- border-color: rgba(52, 100, 168, 0.7);
421
- color: #cfe1ff;
422
- }
423
-
424
- .dropdown-empty {
425
- color: #4a5568;
426
- font-size: 12px;
427
- padding: 8px 10px;
428
- text-align: center;
429
- }
430
-
431
- /* keep legacy .toolbar-select-group for zlevel wrapper */
432
- .toolbar-select-label {
433
- font-size: 10px;
434
- text-transform: uppercase;
435
- letter-spacing: 0.06em;
436
- color: #6a7588;
437
- padding: 0 8px;
438
- white-space: nowrap;
439
- border-right: 1px solid rgba(143, 184, 255, 0.08);
440
- line-height: 30px;
441
- flex-shrink: 0;
442
- }
443
-
444
-
445
- .toolbar-row-tools button,
446
- .toolbar-row-tools label.file-button {
447
- font-size: 12px;
448
- padding: 3px 9px;
449
- }
450
-
451
- .toolbar-row-tools .tool-btn {
452
- padding: 3px 8px;
453
- font-size: 12px;
454
- }
455
-
456
- .toolbar-row-tools .tool-key {
457
- font-size: 9px;
458
- padding: 2px 4px;
459
- }
460
-
461
- .toolbar-snap-btn {
462
- background: rgba(10, 14, 22, 0.5);
463
- border: 1px solid rgba(143, 184, 255, 0.12) !important;
464
- border-radius: 6px !important;
465
- padding: 3px 10px !important;
466
- font-size: 12px;
467
- color: #6a7588;
468
- cursor: pointer;
469
- transition: color 0.15s, background 0.15s, border-color 0.15s !important;
470
- }
471
- .toolbar-snap-btn:hover { color: #cfd6e0; }
472
-
473
- .toolbar-pending-hint {
474
- margin-left: 8px;
475
- font-size: 11px;
476
- color: #8fb8ff;
477
- opacity: 0.85;
478
- white-space: nowrap;
479
- pointer-events: none;
480
- }
481
- .toolbar-snap-btn.active {
482
- background: rgba(30, 53, 83, 0.7) !important;
483
- border-color: rgba(52, 100, 168, 0.6) !important;
484
- color: #cfe1ff !important;
485
- box-shadow: 0 0 12px rgba(52, 100, 168, 0.2), inset 0 1px 0 rgba(255,255,255,0.05) !important;
486
- }
487
-
488
- .toolbar-goto {
489
- display: inline-flex;
490
- align-items: center;
491
- background: rgba(10, 14, 22, 0.55);
492
- border: 1px solid rgba(143, 184, 255, 0.14);
493
- border-radius: 7px;
494
- height: 30px;
495
- overflow: hidden;
496
- transition: border-color 0.15s, background 0.15s;
497
- }
498
- .toolbar-goto:focus-within {
499
- background: rgba(20, 28, 46, 0.7);
500
- border-color: rgba(143, 184, 255, 0.28);
501
- }
502
-
503
- .toolbar-goto-label {
504
- font-size: 10px;
505
- text-transform: uppercase;
506
- letter-spacing: 0.06em;
507
- color: #6a7588;
508
- padding: 0 8px;
509
- height: 100%;
510
- display: flex;
511
- align-items: center;
512
- border-right: 1px solid rgba(143, 184, 255, 0.08);
513
- flex-shrink: 0;
514
- white-space: nowrap;
515
- }
516
-
517
- .toolbar-goto-input {
518
- width: 56px;
519
- background: transparent;
520
- border: none;
521
- padding: 0 8px;
522
- font-size: 10px;
523
- font-family: inherit;
524
- text-transform: uppercase;
525
- letter-spacing: 0.06em;
526
- color: #e6e9ef;
527
- outline: none;
528
- appearance: textfield;
529
- height: 100%;
530
- }
531
- .toolbar-goto-input::-webkit-inner-spin-button,
532
- .toolbar-goto-input::-webkit-outer-spin-button { display: none; }
533
- .toolbar-goto-input::placeholder { color: #4a5568; }
534
-
535
- .toolbar-goto-btn {
536
- height: 100%;
537
- padding: 0 10px;
538
- background: transparent;
539
- border: none;
540
- border-left: 1px solid rgba(143, 184, 255, 0.08);
541
- border-radius: 0;
542
- color: #6a7588;
543
- font-size: 11px;
544
- font-family: inherit;
545
- cursor: pointer;
546
- transition: color 0.15s, background 0.15s;
547
- white-space: nowrap;
548
- flex-shrink: 0;
549
- }
550
- .toolbar-goto-btn:hover:not(:disabled) {
551
- color: #cfe1ff;
552
- background: rgba(52, 100, 168, 0.2);
553
- }
554
- .toolbar-goto-btn:disabled {
555
- opacity: 0.35;
556
- cursor: not-allowed;
557
- }
558
-
559
- .toolbar .status {
560
- font-size: 12px;
561
- color: #8f97a6;
562
- margin-left: auto;
563
- padding-left: 12px;
564
- display: flex;
565
- flex-direction: column;
566
- align-items: flex-end;
567
- gap: 1px;
568
- overflow: hidden;
569
- min-width: 0;
570
- }
571
-
572
- .toolbar .status-file {
573
- color: #6a7588;
574
- font-size: 11px;
575
- white-space: nowrap;
576
- overflow: hidden;
577
- text-overflow: ellipsis;
578
- max-width: 280px;
579
- }
580
-
581
- .toolbar .status-action {
582
- white-space: nowrap;
583
- overflow: hidden;
584
- text-overflow: ellipsis;
585
- max-width: 280px;
586
- }
587
-
588
- .map-viewport {
589
- position: absolute;
590
- inset: 0;
591
- background: #000;
592
- }
593
-
594
- .map-container {
595
- position: absolute;
596
- inset: 0;
597
- outline: none;
598
- user-select: none;
599
- -webkit-user-select: none;
600
- touch-action: none;
601
- }
602
-
603
- .empty-state {
604
- position: absolute;
605
- inset: 0;
606
- display: flex;
607
- flex-direction: column;
608
- align-items: center;
609
- justify-content: center;
610
- text-align: center;
611
- color: #55606f;
612
- font-size: 14px;
613
- pointer-events: none;
614
- }
615
-
616
- .empty-state-logo {
617
- margin-top: 24px;
618
- width: 150px;
619
- opacity: 0.375;
620
- }
621
-
622
- .sessions-panel-overlay {
623
- position: absolute;
624
- top: 76px;
625
- left: 0;
626
- right: 0;
627
- bottom: 0;
628
- display: flex;
629
- align-items: flex-start;
630
- justify-content: center;
631
- padding: 12px 16px 16px;
632
- box-sizing: border-box;
633
- pointer-events: none;
634
- overflow: hidden;
635
- }
636
-
637
- .sessions-panel {
638
- pointer-events: all;
639
- background: rgba(14, 20, 35, 0.96);
640
- border: 1px solid rgba(52, 100, 168, 0.4);
641
- border-radius: 10px;
642
- box-shadow: 0 8px 32px rgba(0,0,0,0.6);
643
- padding: 20px;
644
- min-width: 360px;
645
- max-width: 520px;
646
- width: 100%;
647
- max-height: 100%;
648
- overflow: hidden;
649
- display: flex;
650
- flex-direction: column;
651
- gap: 14px;
652
- }
653
-
654
- .sessions-panel-header {
655
- display: flex;
656
- align-items: center;
657
- justify-content: space-between;
658
- font-size: 13px;
659
- font-weight: 600;
660
- color: #cfe1ff;
661
- letter-spacing: 0.03em;
662
- }
663
-
664
- .sessions-delete-all {
665
- font-size: 11px;
666
- font-weight: 400;
667
- padding: 3px 8px;
668
- border-radius: 4px;
669
- border: 1px solid rgba(168, 52, 52, 0.4);
670
- background: rgba(168, 52, 52, 0.1);
671
- color: #c97a7a;
672
- cursor: pointer;
673
- transition: background 0.15s;
674
- }
675
- .sessions-delete-all:hover {
676
- background: rgba(168, 52, 52, 0.25);
677
- }
678
-
679
- .sessions-list {
680
- display: flex;
681
- flex-direction: column;
682
- gap: 6px;
683
- overflow-y: auto;
684
- min-height: 0;
685
- flex: 1 1 auto;
686
- }
687
-
688
- .session-item {
689
- display: flex;
690
- align-items: center;
691
- gap: 10px;
692
- padding: 9px 12px;
693
- background: rgba(255,255,255,0.04);
694
- border: 1px solid rgba(255,255,255,0.07);
695
- border-radius: 6px;
696
- }
697
-
698
- .session-info {
699
- flex: 1;
700
- min-width: 0;
701
- display: flex;
702
- flex-direction: column;
703
- gap: 2px;
704
- }
705
-
706
- .session-filename {
707
- font-size: 12px;
708
- color: #cfe1ff;
709
- white-space: nowrap;
710
- overflow: hidden;
711
- text-overflow: ellipsis;
712
- }
713
-
714
- .session-meta {
715
- font-size: 11px;
716
- color: #6a8ab0;
717
- }
718
-
719
- .session-actions {
720
- display: flex;
721
- gap: 6px;
722
- flex-shrink: 0;
723
- }
724
-
725
- .session-actions button {
726
- padding: 3px 10px;
727
- border-radius: 4px;
728
- border: 1px solid rgba(52,100,168,0.5);
729
- background: rgba(52,100,168,0.15);
730
- color: #8ab4d8;
731
- font-size: 11px;
732
- cursor: pointer;
733
- transition: background 0.15s;
734
- }
735
-
736
- .session-actions button:hover {
737
- background: rgba(52,100,168,0.3);
738
- }
739
-
740
- .session-actions button.session-delete {
741
- border-color: rgba(168,52,52,0.4);
742
- background: rgba(168,52,52,0.1);
743
- color: #c97a7a;
744
- }
745
-
746
- .session-actions button.session-delete:hover {
747
- background: rgba(168,52,52,0.25);
748
- }
749
-
750
- .sessions-empty {
751
- font-size: 12px;
752
- color: #445566;
753
- text-align: center;
754
- padding: 8px 0;
755
- }
756
-
757
- .sessions-autodelete {
758
- display: flex;
759
- align-items: center;
760
- justify-content: flex-end;
761
- gap: 8px;
762
- padding-top: 10px;
763
- border-top: 1px solid rgba(255,255,255,0.06);
764
- }
765
-
766
- .sessions-autodelete-label {
767
- display: flex;
768
- align-items: center;
769
- gap: 6px;
770
- font-size: 11px;
771
- color: #6a8ab0;
772
- cursor: pointer;
773
- user-select: none;
774
- }
775
-
776
-
777
- .sessions-autodelete-days {
778
- width: 48px;
779
- padding: 2px 6px;
780
- background: rgba(255,255,255,0.05);
781
- border: 1px solid rgba(52,100,168,0.35);
782
- border-radius: 4px;
783
- color: #8ab4d8;
784
- font-size: 11px;
785
- text-align: center;
786
- }
787
-
788
- .sessions-autodelete-days:disabled {
789
- opacity: 0.35;
790
- }
791
-
792
- .sessions-autodelete-unit {
793
- font-size: 11px;
794
- color: #6a8ab0;
795
- }
796
-
797
- .sessions-panel-hint {
798
- font-size: 11px;
799
- color: #445566;
800
- text-align: center;
801
- }
802
-
803
- .side-panel {
804
- position: absolute;
805
- top: 104px; /* below floating toolbar (12px offset + ~44px header row + ~32px tools row + 16px gap) */
806
- right: 12px;
807
- bottom: 12px;
808
- width: 440px;
809
- background: rgba(28, 40, 60, 0.52);
810
- backdrop-filter: blur(16px) saturate(1.8) brightness(0.4);
811
- border: 1px solid rgba(143, 184, 255, 0.18);
812
- border-radius: 12px;
813
- box-shadow: 0 4px 24px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.08);
814
- padding: 0;
815
- overflow: hidden;
816
- font-size: 13px;
817
- display: flex;
818
- flex-direction: column;
819
- z-index: 10;
820
- }
821
-
822
- .side-panel--collapsed {
823
- width: 48px;
824
- overflow: visible;
825
- box-shadow: 0 4px 24px rgba(0,0,0,0.4);
826
- }
827
-
828
- .side-panel-collapse-btn {
829
- display: flex;
830
- align-items: center;
831
- justify-content: center;
832
- width: 100%;
833
- padding: 10px 0 6px;
834
- background: transparent;
835
- border: none;
836
- outline: none;
837
- color: #6a7588;
838
- cursor: pointer;
839
- font-size: 11px;
840
- flex-shrink: 0;
841
- transition: color 0.15s;
842
- }
843
- .side-panel-collapse-btn:hover { color: #8fb8ff; }
844
-
845
- .side-panel-tabs {
846
- display: flex;
847
- flex-wrap: wrap;
848
- border-bottom: 1px solid rgba(143, 184, 255, 0.08);
849
- flex-shrink: 0;
850
- background: rgba(8, 12, 20, 0.5);
851
- border-radius: 0;
852
- }
853
-
854
- .side-panel-tabs .side-panel-tab {
855
- flex: 0 0 auto;
856
- display: inline-flex;
857
- align-items: center;
858
- background: transparent;
859
- border: none;
860
- border-radius: 0;
861
- border-bottom: 2px solid transparent;
862
- color: #6a7588;
863
- cursor: pointer;
864
- font-size: 11px;
865
- padding: 8px 12px;
866
- text-transform: uppercase;
867
- letter-spacing: 0.04em;
868
- transition: color 0.15s, border-color 0.15s;
869
- margin-bottom: -1px;
870
- }
871
-
872
- .side-panel-tab:hover {
873
- color: #cfd6e0;
874
- }
875
-
876
- .side-panel-tab.active {
877
- color: #8fb8ff;
878
- border-bottom-color: #8fb8ff;
879
- text-shadow: 0 0 16px rgba(143, 184, 255, 0.5);
880
- }
881
-
882
- /* Badge on tab buttons */
883
- .tab-badge {
884
- margin-left: 4px;
885
- padding: 0 5px;
886
- font-size: 10px;
887
- line-height: 16px;
888
- border-radius: 8px;
889
- background: rgba(143, 184, 255, 0.15);
890
- color: #8fb8ff;
891
- font-weight: 600;
892
- }
893
- .side-panel-tab.active .tab-badge {
894
- background: rgba(143, 184, 255, 0.25);
895
- }
896
-
897
- /* Collapse arrow button inside the tab bar */
898
- .side-panel-tabs .side-panel-tab--collapse {
899
- flex: 0 0 26px;
900
- padding: 8px 0;
901
- justify-content: center;
902
- color: #4a5568;
903
- letter-spacing: 0;
904
- font-size: 10px;
905
- border-left: 1px solid rgba(143, 184, 255, 0.07);
906
- margin-left: auto;
907
- }
908
-
909
- /* Vertical tab strip (collapsed state) */
910
- .side-panel-tabs--vert {
911
- display: flex;
912
- flex-direction: column;
913
- border-bottom: none;
914
- background: transparent;
915
- width: 100%;
916
- padding: 4px 0;
917
- }
918
- .side-panel-tabs--vert .side-panel-tab {
919
- flex: 0 0 auto;
920
- writing-mode: vertical-rl;
921
- transform: rotate(180deg);
922
- text-orientation: mixed;
923
- padding: 14px 0;
924
- margin-bottom: 0;
925
- border-bottom: none;
926
- border-left: 2px solid transparent;
927
- border-right: none;
928
- letter-spacing: 0.06em;
929
- font-size: 10px;
930
- width: 100%;
931
- text-align: center;
932
- }
933
- .side-panel-tabs--vert .side-panel-tab.active {
934
- color: #8fb8ff;
935
- border-left-color: #8fb8ff;
936
- text-shadow: 0 0 16px rgba(143, 184, 255, 0.5);
937
- border-bottom-color: transparent;
938
- }
939
-
940
- .panel-content {
941
- padding: 14px;
942
- flex: 1;
943
- overflow-y: auto;
944
- min-height: 0;
945
- }
946
-
947
- .side-panel.empty {
948
- color: #6a7588;
949
- }
950
-
951
- .side-panel h3 {
952
- margin: 0 0 10px;
953
- font-size: 12px;
954
- color: #8fb8ff;
955
- text-transform: uppercase;
956
- letter-spacing: 0.05em;
957
- font-weight: 600;
958
- text-shadow: 0 0 12px rgba(143, 184, 255, 0.3);
959
- }
960
-
961
- .room-heading {
962
- display: flex;
963
- justify-content: space-between;
964
- align-items: center;
965
- }
966
-
967
- .room-heading-right {
968
- display: flex;
969
- align-items: center;
970
- gap: 4px;
971
- }
972
-
973
- .room-coords {
974
- font-size: 11px;
975
- color: #6a7588;
976
- text-transform: none;
977
- letter-spacing: 0;
978
- font-weight: 400;
979
- text-shadow: none;
980
- }
981
-
982
- .room-center-btn {
983
- display: flex;
984
- align-items: center;
985
- justify-content: center;
986
- padding: 2px 3px;
987
- background: none;
988
- border: 1px solid transparent;
989
- border-radius: 3px;
990
- color: #6a7588;
991
- cursor: pointer;
992
- line-height: 1;
993
- transition: color 0.1s, border-color 0.1s, background 0.1s;
994
- }
995
- .room-center-btn:hover {
996
- color: #b8c8e8;
997
- border-color: #3a4560;
998
- background: #1e2535;
999
- }
1000
-
1001
- .env-symbol-row {
1002
- display: flex;
1003
- gap: 8px;
1004
- }
1005
-
1006
- .env-symbol-row .field {
1007
- flex: 1;
1008
- min-width: 0;
1009
- }
1010
-
1011
- .env-field {
1012
- flex: 1;
1013
- min-width: 0;
1014
- }
1015
-
1016
- .symbol-row {
1017
- display: flex;
1018
- align-items: center;
1019
- gap: 4px;
1020
- }
1021
-
1022
- .symbol-row input[type="text"],
1023
- .symbol-row input:not([type]) {
1024
- flex: 1;
1025
- min-width: 0;
1026
- }
1027
-
1028
- .symbol-color-input {
1029
- width: 28px;
1030
- height: 24px;
1031
- padding: 1px 2px;
1032
- border: 1px solid #2a3550;
1033
- border-radius: 3px;
1034
- background: transparent;
1035
- cursor: pointer;
1036
- flex-shrink: 0;
1037
- }
1038
-
1039
- .symbol-color-clear {
1040
- background: none;
1041
- border: none;
1042
- color: #7a8aaa;
1043
- cursor: pointer;
1044
- font-size: 14px;
1045
- line-height: 1;
1046
- padding: 0 2px;
1047
- flex-shrink: 0;
1048
- }
1049
- .symbol-color-clear:hover { color: #e06060; }
1050
-
1051
- .side-panel h4 {
1052
- margin: 14px 0 6px;
1053
- font-size: 11px;
1054
- color: #8f97a6;
1055
- text-transform: uppercase;
1056
- letter-spacing: 0.05em;
1057
- font-weight: 600;
1058
- }
1059
-
1060
- .side-panel p {
1061
- margin: 6px 0;
1062
- color: #8f97a6;
1063
- }
1064
-
1065
- .side-panel p.hint {
1066
- font-size: 12px;
1067
- }
1068
-
1069
- .side-panel .hint-tool {
1070
- margin-top: 10px;
1071
- padding: 8px 10px;
1072
- background: rgba(6, 9, 16, 0.6);
1073
- border: 1px solid rgba(143, 184, 255, 0.07);
1074
- border-radius: 5px;
1075
- font-size: 11px;
1076
- color: #cfd6e0;
1077
- }
1078
-
1079
- .side-panel .field {
1080
- display: flex;
1081
- flex-direction: column;
1082
- gap: 4px;
1083
- margin: 8px 0;
1084
- }
1085
-
1086
- .side-panel .field .label {
1087
- font-size: 11px;
1088
- color: #8f97a6;
1089
- text-transform: uppercase;
1090
- letter-spacing: 0.05em;
1091
- }
1092
-
1093
- .side-panel .field input,
1094
- .side-panel .field textarea {
1095
- background: rgba(6, 9, 16, 0.6);
1096
- color: #e6e9ef;
1097
- border: 1px solid rgba(143, 184, 255, 0.1);
1098
- padding: 5px 8px;
1099
- border-radius: 4px;
1100
- font-size: 13px;
1101
- font-family: inherit;
1102
- transition: border-color 0.15s, box-shadow 0.15s;
1103
- }
1104
-
1105
- .side-panel .field input:focus,
1106
- .side-panel .field textarea:focus {
1107
- outline: none;
1108
- border-color: rgba(52, 100, 168, 0.7);
1109
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.15);
1110
- }
1111
-
1112
- /* Inline field group: fields side-by-side with a button at the end */
1113
- .side-panel .field-row {
1114
- display: flex;
1115
- gap: 8px;
1116
- align-items: flex-end;
1117
- margin: 8px 0 12px;
1118
- }
1119
-
1120
- .side-panel .field-row > .field {
1121
- margin: 0;
1122
- }
1123
-
1124
- .side-panel .field-row > button {
1125
- padding: 5px 8px;
1126
- font-size: 12px;
1127
- font-family: inherit;
1128
- border: 1px solid #444;
1129
- border-radius: 3px;
1130
- cursor: pointer;
1131
- white-space: nowrap;
1132
- flex-shrink: 0;
1133
- }
1134
-
1135
- /* Checkbox row: horizontal, no separate section label */
1136
- .side-panel .field.checkbox-field {
1137
- flex-direction: row;
1138
- align-items: center;
1139
- gap: 8px;
1140
- cursor: pointer;
1141
- margin: 7px 0;
1142
- }
1143
-
1144
- .side-panel .field.checkbox-field input[type="checkbox"] {
1145
- flex-shrink: 0;
1146
- margin: 0;
1147
- }
1148
-
1149
- .side-panel .field.checkbox-field span {
1150
- font-size: 13px;
1151
- color: #e6e9ef;
1152
- line-height: 1;
1153
- }
1154
-
1155
- .side-panel .readonly {
1156
- color: #cfd6e0;
1157
- padding: 5px 0;
1158
- font-family: ui-monospace, Consolas, monospace;
1159
- font-size: 12px;
1160
- }
1161
-
1162
- .exit-list {
1163
- display: flex;
1164
- flex-direction: column;
1165
- gap: 3px;
1166
- }
1167
-
1168
- .exit-row {
1169
- display: grid;
1170
- grid-template-columns: 90px 20px 1fr;
1171
- align-items: center;
1172
- gap: 6px;
1173
- font-family: ui-monospace, Consolas, monospace;
1174
- font-size: 12px;
1175
- padding: 4px 6px;
1176
- background: rgba(6, 9, 16, 0.5);
1177
- border: 1px solid rgba(143, 184, 255, 0.05);
1178
- border-radius: 4px;
1179
- }
1180
-
1181
- .exit-row .dir {
1182
- color: #8fb8ff;
1183
- }
1184
-
1185
- .exit-row .arrow {
1186
- color: #55606f;
1187
- }
1188
-
1189
- .exit-row .exit-target {
1190
- background: transparent;
1191
- border: 1px solid rgba(143, 184, 255, 0.1);
1192
- color: #e6e9ef;
1193
- padding: 2px 6px;
1194
- border-radius: 3px;
1195
- cursor: pointer;
1196
- font-size: 12px;
1197
- font-family: inherit;
1198
- text-align: left;
1199
- transition: background 0.15s, border-color 0.15s;
1200
- }
1201
-
1202
- .exit-row .exit-target:hover {
1203
- background: rgba(31, 42, 60, 0.6);
1204
- border-color: rgba(143, 184, 255, 0.2);
1205
- }
1206
-
1207
- .exit-row.empty {
1208
- color: #55606f;
1209
- grid-template-columns: 1fr;
1210
- text-align: center;
1211
- background: transparent;
1212
- border-color: transparent;
1213
- }
1214
-
1215
- .exit-row.special {
1216
- grid-template-columns: 90px 20px 1fr 22px;
1217
- }
1218
-
1219
- .exit-row.with-line {
1220
- grid-template-columns: 90px 20px 1fr 26px;
1221
- }
1222
-
1223
- .exit-row.special.with-line {
1224
- grid-template-columns: 90px 20px 1fr 26px 22px;
1225
- }
1226
-
1227
- .exit-line-btn {
1228
- display: inline-flex;
1229
- align-items: center;
1230
- justify-content: center;
1231
- background: transparent;
1232
- border: 1px solid rgba(143, 184, 255, 0.1);
1233
- color: #6a7588;
1234
- cursor: pointer;
1235
- width: 22px;
1236
- height: 20px;
1237
- padding: 0;
1238
- border-radius: 3px;
1239
- font-size: 13px;
1240
- line-height: 1;
1241
- transition: color 0.15s, border-color 0.15s, background 0.15s;
1242
- }
1243
-
1244
- .exit-line-btn:hover {
1245
- color: #cfe1ff;
1246
- border-color: rgba(52, 100, 168, 0.6);
1247
- background: rgba(30, 53, 83, 0.4);
1248
- }
1249
-
1250
- .exit-line-btn.has-line {
1251
- border-color: rgba(52, 100, 168, 0.5);
1252
- background: rgba(6, 9, 16, 0.6);
1253
- }
1254
-
1255
- .exit-line-btn .cl-swatch {
1256
- width: 12px;
1257
- height: 10px;
1258
- border-radius: 2px;
1259
- }
1260
-
1261
- .exit-line-icon {
1262
- font-family: ui-monospace, Consolas, monospace;
1263
- font-weight: 700;
1264
- font-size: 12px;
1265
- }
1266
-
1267
- .cl-form-inline {
1268
- margin: 2px 0 6px;
1269
- }
1270
-
1271
- .exit-remove {
1272
- background: transparent;
1273
- border: none;
1274
- color: #55606f;
1275
- cursor: pointer;
1276
- font-size: 11px;
1277
- padding: 0 2px;
1278
- line-height: 1;
1279
- border-radius: 2px;
1280
- transition: color 0.15s, background 0.15s;
1281
- }
1282
-
1283
- .exit-remove:hover {
1284
- color: #ff7f7f;
1285
- background: rgba(32, 10, 10, 0.7);
1286
- }
1287
-
1288
- .special-exits-list {
1289
- display: flex;
1290
- flex-direction: column;
1291
- gap: 3px;
1292
- }
1293
-
1294
- .special-exits-list .compass-cell {
1295
- height: auto;
1296
- }
1297
-
1298
- .special-exits-list .cc-label {
1299
- max-width: 120px;
1300
- overflow: hidden;
1301
- text-overflow: ellipsis;
1302
- white-space: nowrap;
1303
- display: inline-block;
1304
- }
1305
-
1306
- .special-exit-add {
1307
- display: flex;
1308
- gap: 4px;
1309
- margin-top: 6px;
1310
- align-items: center;
1311
- }
1312
-
1313
- .special-exit-add input {
1314
- background: rgba(6, 9, 16, 0.6);
1315
- color: #e6e9ef;
1316
- border: 1px solid rgba(143, 184, 255, 0.1);
1317
- padding: 0 6px;
1318
- height: 24px;
1319
- box-sizing: border-box;
1320
- border-radius: 3px;
1321
- font-size: 12px;
1322
- font-family: inherit;
1323
- flex: 1;
1324
- }
1325
-
1326
- .special-exit-add button:not(.cc-pick-btn) {
1327
- background: rgba(31, 42, 60, 0.6);
1328
- color: #e6e9ef;
1329
- border: 1px solid rgba(143, 184, 255, 0.12);
1330
- padding: 4px 8px;
1331
- border-radius: 3px;
1332
- cursor: pointer;
1333
- font-size: 12px;
1334
- white-space: nowrap;
1335
- transition: background 0.15s, border-color 0.15s;
1336
- }
1337
-
1338
- .special-exit-add button:not(.cc-pick-btn):disabled {
1339
- opacity: 0.35;
1340
- cursor: not-allowed;
1341
- }
1342
-
1343
- .special-exit-add .cc-exit-add {
1344
- width: auto;
1345
- flex-shrink: 0;
1346
- }
1347
-
1348
- .special-exit-add .cc-exit-input {
1349
- width: 60px;
1350
- flex: none;
1351
- }
1352
-
1353
- .userdata-list {
1354
- display: grid;
1355
- grid-template-columns: 1fr 1fr 22px;
1356
- gap: 3px 4px;
1357
- align-items: center;
1358
- }
1359
-
1360
- .userdata-row {
1361
- display: contents;
1362
- }
1363
-
1364
- .ud-key {
1365
- font-size: 12px;
1366
- color: #8fb8ff;
1367
- overflow: hidden;
1368
- text-overflow: ellipsis;
1369
- white-space: nowrap;
1370
- }
1371
-
1372
- .ud-value {
1373
- background: rgba(6, 9, 16, 0.6);
1374
- color: #e6e9ef;
1375
- border: 1px solid rgba(143, 184, 255, 0.1);
1376
- border-radius: 4px;
1377
- padding: 2px 5px;
1378
- font-size: 12px;
1379
- width: 100%;
1380
- min-width: 0;
1381
- }
1382
-
1383
- .ud-value:focus {
1384
- outline: none;
1385
- border-color: rgba(143, 184, 255, 0.35);
1386
- }
1387
-
1388
- .ud-delete {
1389
- appearance: none;
1390
- -webkit-appearance: none;
1391
- background: transparent;
1392
- border: none;
1393
- color: #55606f;
1394
- cursor: pointer;
1395
- font-size: 11px;
1396
- font-family: inherit;
1397
- padding: 0 4px 1px;
1398
- margin: 0;
1399
- border-radius: 3px;
1400
- line-height: 1;
1401
- width: 22px;
1402
- height: 22px;
1403
- min-width: 0;
1404
- display: flex;
1405
- align-items: center;
1406
- justify-content: center;
1407
- align-self: center;
1408
- box-sizing: border-box;
1409
- }
1410
-
1411
- .ud-delete:hover {
1412
- color: #e6e9ef;
1413
- background: rgba(31, 42, 60, 0.6);
1414
- }
1415
-
1416
- .userdata-empty {
1417
- grid-column: 1 / -1;
1418
- color: #55606f;
1419
- font-size: 12px;
1420
- text-align: center;
1421
- padding: 4px 0;
1422
- }
1423
-
1424
- .userdata-add {
1425
- display: contents;
1426
- }
1427
-
1428
- .ud-new-key,
1429
- .ud-new-val {
1430
- background: rgba(6, 9, 16, 0.6);
1431
- color: #e6e9ef;
1432
- border: 1px solid rgba(143, 184, 255, 0.1);
1433
- border-radius: 4px;
1434
- padding: 2px 5px;
1435
- font-size: 12px;
1436
- width: 100%;
1437
- min-width: 0;
1438
- }
1439
-
1440
- .ud-new-key:focus,
1441
- .ud-new-val:focus {
1442
- outline: none;
1443
- border-color: rgba(143, 184, 255, 0.35);
1444
- }
1445
-
1446
- .ud-add {
1447
- appearance: none;
1448
- -webkit-appearance: none;
1449
- background: transparent;
1450
- border: none;
1451
- color: #55606f;
1452
- cursor: pointer;
1453
- font-size: 14px;
1454
- font-family: inherit;
1455
- padding: 0 4px 1px;
1456
- margin: 0;
1457
- border-radius: 3px;
1458
- line-height: 1;
1459
- width: 22px;
1460
- height: 22px;
1461
- min-width: 0;
1462
- display: flex;
1463
- align-items: center;
1464
- justify-content: center;
1465
- align-self: center;
1466
- box-sizing: border-box;
1467
- }
1468
-
1469
- .ud-add:hover {
1470
- color: #e6e9ef;
1471
- background: rgba(31, 42, 60, 0.6);
1472
- }
1473
-
1474
- .ud-add:disabled {
1475
- opacity: 0.35;
1476
- cursor: not-allowed;
1477
- }
1478
-
1479
- /* Compass rose exits */
1480
- .compass-rose {
1481
- display: grid;
1482
- grid-template-columns: repeat(3, 1fr);
1483
- gap: 3px;
1484
- }
1485
-
1486
- .compass-extra {
1487
- display: grid;
1488
- grid-template-columns: repeat(3, 1fr);
1489
- gap: 3px;
1490
- margin-top: 3px;
1491
- }
1492
-
1493
- .compass-vert-spacer {
1494
- /* invisible column-spacer keeping Up/Down and In/Out symmetrical */
1495
- }
1496
-
1497
- .compass-cell {
1498
- background: rgba(8, 12, 20, 0.55);
1499
- border: 1px solid rgba(143, 184, 255, 0.07);
1500
- border-radius: 5px;
1501
- padding: 4px 5px;
1502
- display: flex;
1503
- flex-direction: column;
1504
- gap: 2px;
1505
- height: 86px;
1506
- box-sizing: border-box;
1507
- overflow: hidden;
1508
- transition: border-color 0.15s, background 0.15s;
1509
- }
1510
-
1511
- .compass-extra .compass-cell {
1512
- height: 86px;
1513
- }
1514
-
1515
- .compass-cell.compass-center {
1516
- align-items: center;
1517
- justify-content: center;
1518
- border-style: dashed;
1519
- border-color: rgba(143, 184, 255, 0.06);
1520
- gap: 4px;
1521
- }
1522
-
1523
- .compass-cell .cc-room-lock-btn {
1524
- background: rgba(5, 8, 15, 0.7);
1525
- border: 1px solid rgba(143, 184, 255, 0.08);
1526
- border-radius: 3px;
1527
- padding: 0;
1528
- width: 28px;
1529
- height: 22px;
1530
- cursor: pointer;
1531
- display: inline-flex;
1532
- align-items: center;
1533
- justify-content: center;
1534
- color: #4a6070;
1535
- box-sizing: border-box;
1536
- transition: border-color 0.15s, color 0.15s;
1537
- }
1538
- .compass-cell .cc-room-lock-btn:hover { border-color: rgba(52, 100, 168, 0.6); color: #8fb8ff; }
1539
- .compass-cell .cc-room-lock-btn.lock-active { color: #f07070; border-color: rgba(92, 28, 28, 0.8); }
1540
-
1541
- .cc-room-weight {
1542
- background: rgba(5, 8, 15, 0.7);
1543
- border: 1px solid rgba(143, 184, 255, 0.07);
1544
- color: #55606f;
1545
- font-size: 10px;
1546
- font-family: ui-monospace, Consolas, monospace;
1547
- width: 36px;
1548
- height: 20px;
1549
- padding: 0 3px;
1550
- border-radius: 2px;
1551
- text-align: center;
1552
- -moz-appearance: textfield;
1553
- }
1554
- .cc-room-weight::-webkit-outer-spin-button,
1555
- .cc-room-weight::-webkit-inner-spin-button { -webkit-appearance: none; }
1556
- .cc-room-weight:focus { border-color: rgba(52, 100, 168, 0.7); outline: none; color: #e6e9ef; }
1557
-
1558
- .cc-header {
1559
- display: flex;
1560
- align-items: center;
1561
- justify-content: space-between;
1562
- flex-shrink: 0;
1563
- }
1564
-
1565
- .cc-header-btn-slot {
1566
- height: 20px;
1567
- display: flex;
1568
- align-items: center;
1569
- gap: 2px;
1570
- flex-shrink: 0;
1571
- }
1572
-
1573
- .cc-middle {
1574
- flex: 1;
1575
- display: flex;
1576
- align-items: center;
1577
- justify-content: center;
1578
- }
1579
-
1580
- .cc-dim {
1581
- opacity: 0.22;
1582
- pointer-events: none;
1583
- }
1584
-
1585
- .cc-weight-wrap {
1586
- display: flex;
1587
- align-items: center;
1588
- gap: 2px;
1589
- flex: 1;
1590
- min-width: 0;
1591
- color: #3a4a5a;
1592
- }
1593
-
1594
- .cc-label {
1595
- font-size: 10px;
1596
- font-weight: 700;
1597
- color: rgba(43, 51, 64, 0.8);
1598
- font-family: ui-monospace, Consolas, monospace;
1599
- letter-spacing: 0.04em;
1600
- }
1601
-
1602
- .compass-cell.has-exit .cc-label {
1603
- color: #8fb8ff;
1604
- }
1605
-
1606
- .cc-target {
1607
- background: transparent;
1608
- border: none;
1609
- color: #8f97a6;
1610
- cursor: pointer;
1611
- font-size: 10px;
1612
- font-family: ui-monospace, Consolas, monospace;
1613
- padding: 1px 0;
1614
- text-align: center;
1615
- display: block;
1616
- width: 100%;
1617
- transition: color 0.15s;
1618
- }
1619
-
1620
- .cc-target:hover {
1621
- color: #8fb8ff;
1622
- }
1623
-
1624
- .cc-stub-label {
1625
- display: block;
1626
- text-align: center;
1627
- font-size: 9px;
1628
- color: #55606f;
1629
- font-style: italic;
1630
- padding: 1px 0;
1631
- }
1632
-
1633
- .cc-footer {
1634
- display: flex;
1635
- align-items: center;
1636
- gap: 2px;
1637
- margin-top: 3px;
1638
- }
1639
-
1640
- /* Compass icon buttons — scoped under .compass-cell to beat .side-panel button specificity */
1641
- .compass-cell .cc-door-btn,
1642
- .compass-cell .cc-icon-btn {
1643
- background: rgba(5, 8, 15, 0.7);
1644
- border: 1px solid rgba(143, 184, 255, 0.07);
1645
- padding: 0;
1646
- border-radius: 3px;
1647
- cursor: pointer;
1648
- display: inline-flex;
1649
- align-items: center;
1650
- justify-content: center;
1651
- flex-shrink: 0;
1652
- width: 26px;
1653
- height: 24px;
1654
- font-size: 11px;
1655
- font-weight: 700;
1656
- font-family: ui-monospace, Consolas, monospace;
1657
- box-sizing: border-box;
1658
- transition: color 0.15s, border-color 0.15s;
1659
- }
1660
-
1661
- /* Door icon — color-coded by state */
1662
- .compass-cell .cc-door-btn { color: #5a7090; }
1663
- .compass-cell .cc-door-btn:hover { color: #8fb8ff; border-color: rgba(52, 100, 168, 0.6); }
1664
- .compass-cell .cc-door-btn.door-open { color: #4caf50; border-color: rgba(42, 92, 42, 0.7); }
1665
- .compass-cell .cc-door-btn.door-closed { color: #e6c84a; border-color: rgba(90, 78, 30, 0.7); }
1666
- .compass-cell .cc-door-btn.door-locked { color: #f07070; border-color: rgba(92, 28, 28, 0.7); }
1667
-
1668
- /* Lock / stub icon */
1669
- .compass-cell .cc-icon-btn { color: #5a7090; }
1670
- .compass-cell .cc-icon-btn:hover { color: #8fb8ff; border-color: rgba(52, 100, 168, 0.6); }
1671
- .compass-cell .cc-icon-btn.lock-active { color: #f07070; border-color: rgba(92, 28, 28, 0.7); }
1672
- .compass-cell .cc-icon-btn.stub-active { color: #e6c84a; border-color: rgba(90, 78, 30, 0.7); }
1673
- .compass-cell .cc-icon-btn.cc-delete-btn { color: #7a4040; }
1674
- .compass-cell .cc-icon-btn.cc-delete-btn:hover { color: #f07070; border-color: rgba(92, 28, 28, 0.7); }
1675
-
1676
- /* Stub + delete live in the header — match exit-line-btn 22×20 size */
1677
- .cc-header-btn-slot .cc-icon-btn {
1678
- width: 22px;
1679
- height: 20px;
1680
- font-size: 10px;
1681
- }
1682
-
1683
- /* Dim state (no exit) — override hover too so disabled buttons stay dim */
1684
- .compass-cell .cc-dim,
1685
- .compass-cell .cc-dim:hover { opacity: 0.2; pointer-events: none; border-color: rgba(143,184,255,0.06); color: #5a7090; }
1686
-
1687
- .cc-weight {
1688
- background: rgba(5, 8, 15, 0.7);
1689
- border: 1px solid rgba(143, 184, 255, 0.07);
1690
- color: #55606f;
1691
- font-size: 11px;
1692
- font-family: ui-monospace, Consolas, monospace;
1693
- width: 0;
1694
- flex: 1;
1695
- min-width: 0;
1696
- height: 24px;
1697
- padding: 0 3px;
1698
- border-radius: 2px;
1699
- -moz-appearance: textfield;
1700
- }
1701
- .cc-weight::-webkit-outer-spin-button,
1702
- .cc-weight::-webkit-inner-spin-button { -webkit-appearance: none; }
1703
- .cc-weight:focus { border-color: rgba(52, 100, 168, 0.7); outline: none; color: #e6e9ef; }
1704
-
1705
- .compass-cell.active {
1706
- border-color: rgba(52, 100, 168, 0.6);
1707
- background: rgba(14, 24, 37, 0.7);
1708
- box-shadow: inset 0 0 0 1px rgba(52, 100, 168, 0.15);
1709
- }
1710
-
1711
- .compass-cell.picking-exit {
1712
- border-color: rgba(230, 200, 74, 0.7);
1713
- background: rgba(14, 18, 8, 0.7);
1714
- animation: pick-pulse 1s ease-in-out infinite alternate;
1715
- }
1716
-
1717
- @keyframes url-progress-indeterminate {
1718
- 0% { transform: translateX(-100%); width: 40%; }
1719
- 50% { transform: translateX(150%); width: 60%; }
1720
- 100% { transform: translateX(250%); width: 40%; }
1721
- }
1722
-
1723
- @keyframes pick-pulse {
1724
- from { border-color: rgba(230, 200, 74, 0.7); box-shadow: 0 0 8px rgba(230, 200, 74, 0.1); }
1725
- to { border-color: rgba(122, 100, 32, 0.4); box-shadow: none; }
1726
- }
1727
-
1728
- .cc-exit-add {
1729
- display: flex;
1730
- align-items: center;
1731
- gap: 2px;
1732
- width: 100%;
1733
- }
1734
-
1735
- .cc-exit-input {
1736
- background: rgba(5, 8, 15, 0.7);
1737
- border: 1px solid rgba(143, 184, 255, 0.07);
1738
- color: #55606f;
1739
- font-size: 9px;
1740
- font-family: ui-monospace, Consolas, monospace;
1741
- height: 24px;
1742
- width: 0;
1743
- flex: 1;
1744
- min-width: 0;
1745
- padding: 0 3px;
1746
- border-radius: 2px;
1747
- -moz-appearance: textfield;
1748
- }
1749
- .cc-exit-input::-webkit-outer-spin-button,
1750
- .cc-exit-input::-webkit-inner-spin-button { -webkit-appearance: none; }
1751
- .cc-exit-input:focus { border-color: rgba(52, 100, 168, 0.7); outline: none; color: #e6e9ef; }
1752
- .cc-exit-input::placeholder { color: rgba(42, 53, 64, 0.8); }
1753
-
1754
- .compass-cell .cc-pick-btn,
1755
- .special-exit-add .cc-pick-btn {
1756
- background: rgba(5, 8, 15, 0.7);
1757
- border: 1px solid rgba(143, 184, 255, 0.07);
1758
- border-radius: 3px;
1759
- cursor: pointer;
1760
- display: inline-flex;
1761
- align-items: center;
1762
- justify-content: center;
1763
- flex-shrink: 0;
1764
- width: 24px;
1765
- height: 24px;
1766
- padding: 0;
1767
- color: #4a6070;
1768
- box-sizing: border-box;
1769
- transition: color 0.15s, border-color 0.15s;
1770
- }
1771
- .compass-cell .cc-pick-btn:hover,
1772
- .special-exit-add .cc-pick-btn:hover { color: #8fb8ff; border-color: rgba(52, 100, 168, 0.6); }
1773
- .compass-cell .cc-pick-btn.picking,
1774
- .special-exit-add .cc-pick-btn.picking { color: #e6c84a; border-color: rgba(122, 100, 32, 0.7); }
1775
-
1776
- /* Environment field */
1777
- .env-field-row {
1778
- position: relative;
1779
- display: flex;
1780
- align-items: center;
1781
- gap: 8px;
1782
- }
1783
-
1784
- .env-pick-btn {
1785
- width: 32px;
1786
- height: 24px;
1787
- border: 2px solid rgba(143, 184, 255, 0.15);
1788
- border-radius: 4px;
1789
- cursor: pointer;
1790
- padding: 0;
1791
- flex-shrink: 0;
1792
- transition: border-color 0.15s;
1793
- }
1794
-
1795
- .env-pick-btn:hover {
1796
- border-color: rgba(52, 100, 168, 0.6);
1797
- }
1798
-
1799
- .env-id-label {
1800
- font-size: 12px;
1801
- color: #8f97a6;
1802
- font-family: ui-monospace, Consolas, monospace;
1803
- }
1804
-
1805
- /* Env picker popup */
1806
- .env-picker-popup {
1807
- position: absolute;
1808
- top: 110%;
1809
- left: 0;
1810
- z-index: 200;
1811
- background: rgba(12, 17, 28, 0.9);
1812
- backdrop-filter: blur(20px);
1813
- border: 1px solid rgba(143, 184, 255, 0.1);
1814
- border-radius: 8px;
1815
- padding: 8px;
1816
- box-shadow: 0 8px 32px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.03);
1817
- min-width: 200px;
1818
- max-width: 280px;
1819
- }
1820
-
1821
- .env-picker-filter {
1822
- width: 100%;
1823
- background: rgba(6, 9, 16, 0.6);
1824
- color: #e6e9ef;
1825
- border: 1px solid rgba(143, 184, 255, 0.1);
1826
- padding: 4px 7px;
1827
- border-radius: 4px;
1828
- font-size: 12px;
1829
- font-family: inherit;
1830
- margin-bottom: 7px;
1831
- box-sizing: border-box;
1832
- transition: border-color 0.15s;
1833
- }
1834
-
1835
- .env-picker-filter:focus {
1836
- outline: none;
1837
- border-color: rgba(52, 100, 168, 0.7);
1838
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.12);
1839
- }
1840
-
1841
- .env-picker-scroll {
1842
- max-height: 220px;
1843
- overflow-y: auto;
1844
- }
1845
-
1846
- .env-picker-grid {
1847
- display: flex;
1848
- flex-wrap: wrap;
1849
- gap: 4px;
1850
- }
1851
-
1852
- .env-picker-swatch {
1853
- width: 36px;
1854
- height: 36px;
1855
- border: 2px solid transparent;
1856
- border-radius: 4px;
1857
- cursor: pointer;
1858
- display: flex;
1859
- align-items: flex-end;
1860
- justify-content: center;
1861
- padding: 0 0 2px 0;
1862
- position: relative;
1863
- transition: transform 0.12s, border-color 0.12s;
1864
- }
1865
-
1866
- .env-picker-swatch:hover {
1867
- border-color: #8fb8ff;
1868
- transform: scale(1.1);
1869
- }
1870
-
1871
- .env-picker-swatch.selected {
1872
- border-color: #00e5ff;
1873
- box-shadow: 0 0 0 1px #00e5ff, 0 0 8px rgba(0, 229, 255, 0.3);
1874
- }
1875
-
1876
- .env-picker-id {
1877
- font-size: 9px;
1878
- color: rgba(255,255,255,0.8);
1879
- text-shadow: 0 0 2px #000, 0 0 2px #000;
1880
- font-family: ui-monospace, Consolas, monospace;
1881
- line-height: 1;
1882
- }
1883
-
1884
- /* Modal overlay */
1885
- .modal-overlay {
1886
- position: fixed;
1887
- inset: 0;
1888
- background: rgba(0, 0, 0, 0.65);
1889
- backdrop-filter: blur(4px);
1890
- z-index: 500;
1891
- display: flex;
1892
- align-items: center;
1893
- justify-content: center;
1894
- }
1895
-
1896
- .modal {
1897
- background: rgba(12, 17, 28, 0.88);
1898
- backdrop-filter: blur(24px);
1899
- border: 1px solid rgba(143, 184, 255, 0.1);
1900
- border-radius: 10px;
1901
- width: 480px;
1902
- max-width: 95vw;
1903
- max-height: 80vh;
1904
- display: flex;
1905
- flex-direction: column;
1906
- box-shadow:
1907
- 0 24px 64px rgba(0,0,0,0.7),
1908
- 0 0 0 1px rgba(255,255,255,0.03),
1909
- inset 0 1px 0 rgba(255,255,255,0.05);
1910
- }
1911
-
1912
- .modal.modal-wide {
1913
- width: 560px;
1914
- }
1915
-
1916
- .modal-header {
1917
- display: flex;
1918
- align-items: center;
1919
- justify-content: space-between;
1920
- padding: 14px 16px 12px;
1921
- border-bottom: 1px solid rgba(143, 184, 255, 0.08);
1922
- }
1923
-
1924
- .modal-header h2 {
1925
- margin: 0;
1926
- font-size: 14px;
1927
- font-weight: 600;
1928
- color: #8fb8ff;
1929
- letter-spacing: 0.03em;
1930
- text-shadow: 0 0 16px rgba(143, 184, 255, 0.35);
1931
- }
1932
-
1933
- .modal-close {
1934
- background: transparent;
1935
- border: none;
1936
- color: #6a7588;
1937
- font-size: 14px;
1938
- cursor: pointer;
1939
- padding: 2px 6px;
1940
- border-radius: 4px;
1941
- transition: color 0.15s, background 0.15s;
1942
- }
1943
-
1944
- .modal-close:hover {
1945
- color: #e6e9ef;
1946
- background: rgba(31, 42, 60, 0.6);
1947
- }
1948
-
1949
- .modal-body {
1950
- flex: 1;
1951
- overflow-y: auto;
1952
- padding: 14px 16px;
1953
- display: flex;
1954
- flex-direction: column;
1955
- gap: 12px;
1956
- }
1957
-
1958
- .modal-add-row {
1959
- display: flex;
1960
- gap: 8px;
1961
- align-items: center;
1962
- }
1963
-
1964
- .modal-add-row input {
1965
- flex: 1;
1966
- background: rgba(6, 9, 16, 0.6);
1967
- color: #e6e9ef;
1968
- border: 1px solid rgba(143, 184, 255, 0.1);
1969
- padding: 6px 8px;
1970
- border-radius: 4px;
1971
- font-size: 13px;
1972
- font-family: inherit;
1973
- transition: border-color 0.15s, box-shadow 0.15s;
1974
- }
1975
-
1976
- .modal-add-row input:focus {
1977
- outline: none;
1978
- border-color: rgba(52, 100, 168, 0.7);
1979
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.15);
1980
- }
1981
-
1982
- .modal-add-row button {
1983
- background: rgba(31, 42, 60, 0.6);
1984
- color: #e6e9ef;
1985
- border: 1px solid rgba(143, 184, 255, 0.12);
1986
- padding: 6px 12px;
1987
- border-radius: 4px;
1988
- cursor: pointer;
1989
- font-size: 13px;
1990
- white-space: nowrap;
1991
- transition: background 0.15s, border-color 0.15s;
1992
- }
1993
-
1994
- .modal-add-row button:hover:not(:disabled) {
1995
- background: rgba(52, 100, 168, 0.3);
1996
- border-color: rgba(143, 184, 255, 0.25);
1997
- }
1998
-
1999
- .modal-add-row button:disabled {
2000
- opacity: 0.35;
2001
- cursor: not-allowed;
2002
- }
2003
-
2004
- .modal-list {
2005
- display: flex;
2006
- flex-direction: column;
2007
- gap: 4px;
2008
- }
2009
-
2010
- .modal-list-row {
2011
- display: flex;
2012
- align-items: center;
2013
- gap: 8px;
2014
- padding: 6px 8px;
2015
- background: rgba(6, 9, 16, 0.5);
2016
- border-radius: 5px;
2017
- border: 1px solid rgba(143, 184, 255, 0.06);
2018
- transition: background 0.15s, border-color 0.15s;
2019
- }
2020
-
2021
- .modal-list-name {
2022
- flex: 1;
2023
- font-size: 13px;
2024
- color: #e6e9ef;
2025
- cursor: default;
2026
- overflow: hidden;
2027
- text-overflow: ellipsis;
2028
- white-space: nowrap;
2029
- }
2030
-
2031
- .modal-inline-edit {
2032
- flex: 1;
2033
- background: rgba(12, 17, 28, 0.8);
2034
- color: #e6e9ef;
2035
- border: none;
2036
- outline: 1px solid rgba(52, 100, 168, 0.6);
2037
- outline-offset: 0;
2038
- padding: 0 6px;
2039
- border-radius: 3px;
2040
- font-size: 13px;
2041
- font-family: inherit;
2042
- line-height: inherit;
2043
- }
2044
-
2045
- .modal-list-meta {
2046
- font-size: 11px;
2047
- color: #6a7588;
2048
- font-family: ui-monospace, Consolas, monospace;
2049
- white-space: nowrap;
2050
- }
2051
-
2052
- .modal-list-actions {
2053
- display: flex;
2054
- gap: 4px;
2055
- }
2056
-
2057
- .modal-list-actions button {
2058
- background: rgba(31, 42, 60, 0.6);
2059
- color: #e6e9ef;
2060
- border: 1px solid rgba(143, 184, 255, 0.1);
2061
- padding: 3px 8px;
2062
- border-radius: 3px;
2063
- cursor: pointer;
2064
- font-size: 12px;
2065
- transition: background 0.15s;
2066
- }
2067
-
2068
- .modal-list-actions button:hover {
2069
- background: rgba(52, 80, 120, 0.4);
2070
- }
2071
-
2072
- .modal-list-actions button.danger {
2073
- color: #ff8080;
2074
- border-color: rgba(58, 28, 28, 0.8);
2075
- }
2076
-
2077
- .modal-list-actions button.danger:hover {
2078
- background: rgba(32, 14, 14, 0.8);
2079
- }
2080
-
2081
- .modal-list-actions button.icon-btn {
2082
- padding: 3px 6px;
2083
- min-width: 24px;
2084
- }
2085
-
2086
- .modal-empty {
2087
- color: #55606f;
2088
- font-size: 13px;
2089
- padding: 8px 0;
2090
- text-align: center;
2091
- }
2092
-
2093
- /* Environment grid in modal */
2094
- .env-grid-list {
2095
- display: flex;
2096
- flex-direction: column;
2097
- gap: 4px;
2098
- }
2099
-
2100
- .env-list-row {
2101
- display: flex;
2102
- align-items: center;
2103
- gap: 8px;
2104
- padding: 5px 8px;
2105
- background: rgba(6, 9, 16, 0.5);
2106
- border: 1px solid rgba(143, 184, 255, 0.05);
2107
- border-radius: 4px;
2108
- }
2109
-
2110
- .env-swatch {
2111
- width: 24px;
2112
- height: 24px;
2113
- border-radius: 3px;
2114
- border: 1px solid rgba(143, 184, 255, 0.15);
2115
- flex-shrink: 0;
2116
- }
2117
-
2118
- .env-list-id {
2119
- font-size: 12px;
2120
- font-family: ui-monospace, Consolas, monospace;
2121
- color: #8fb8ff;
2122
- width: 36px;
2123
- }
2124
-
2125
- .env-list-builtin {
2126
- font-size: 11px;
2127
- color: #55606f;
2128
- }
2129
-
2130
- .env-list-used {
2131
- font-size: 10px;
2132
- color: #7fff9f;
2133
- background: rgba(10, 26, 10, 0.7);
2134
- border: 1px solid rgba(26, 58, 26, 0.8);
2135
- padding: 1px 5px;
2136
- border-radius: 10px;
2137
- }
2138
-
2139
- .env-remove {
2140
- background: transparent;
2141
- border: none;
2142
- color: #55606f;
2143
- cursor: pointer;
2144
- font-size: 12px;
2145
- margin-left: auto;
2146
- padding: 2px 4px;
2147
- border-radius: 3px;
2148
- transition: color 0.15s, background 0.15s;
2149
- }
2150
-
2151
- .env-remove:hover {
2152
- color: #ff7f7f;
2153
- background: rgba(32, 10, 10, 0.7);
2154
- }
2155
-
2156
- /* Custom line form in side panel */
2157
- .cl-swatch {
2158
- width: 12px;
2159
- height: 12px;
2160
- border-radius: 2px;
2161
- flex-shrink: 0;
2162
- border: 1px solid rgba(255,255,255,0.15);
2163
- }
2164
-
2165
- .customline-row {
2166
- display: grid;
2167
- grid-template-columns: 14px 1fr auto 18px;
2168
- align-items: center;
2169
- gap: 8px;
2170
- padding: 4px 6px;
2171
- background: rgba(6, 9, 16, 0.5);
2172
- border: 1px solid rgba(143, 184, 255, 0.05);
2173
- border-radius: 4px;
2174
- font-family: ui-monospace, Consolas, monospace;
2175
- font-size: 12px;
2176
- min-width: 0;
2177
- }
2178
-
2179
- .side-panel .customline-name {
2180
- background: transparent;
2181
- border: 1px solid rgba(143, 184, 255, 0.1);
2182
- color: #e6e9ef;
2183
- padding: 2px 6px;
2184
- border-radius: 3px;
2185
- cursor: pointer;
2186
- font-size: 12px;
2187
- font-family: inherit;
2188
- text-align: left;
2189
- min-width: 0;
2190
- overflow: hidden;
2191
- text-overflow: ellipsis;
2192
- white-space: nowrap;
2193
- transition: background 0.15s;
2194
- }
2195
-
2196
- .side-panel .customline-name:hover {
2197
- background: rgba(31, 42, 60, 0.5);
2198
- }
2199
-
2200
- .customline-badge {
2201
- display: inline-flex;
2202
- align-items: center;
2203
- justify-content: center;
2204
- min-width: 18px;
2205
- height: 16px;
2206
- padding: 0 5px;
2207
- border-radius: 8px;
2208
- background: rgba(31, 42, 60, 0.6);
2209
- color: #8f97a6;
2210
- font-size: 10px;
2211
- font-family: ui-monospace, Consolas, monospace;
2212
- line-height: 1;
2213
- }
2214
-
2215
- .side-panel .customline-remove {
2216
- background: transparent;
2217
- border: none;
2218
- color: #55606f;
2219
- cursor: pointer;
2220
- font-size: 12px;
2221
- padding: 0;
2222
- line-height: 1;
2223
- border-radius: 2px;
2224
- width: 18px;
2225
- height: 18px;
2226
- display: inline-flex;
2227
- align-items: center;
2228
- justify-content: center;
2229
- transition: color 0.15s, background 0.15s;
2230
- }
2231
-
2232
- .side-panel .customline-remove:hover {
2233
- color: #ff7f7f;
2234
- background: rgba(32, 10, 10, 0.7);
2235
- }
2236
-
2237
- .cl-add-btn {
2238
- width: 100%;
2239
- background: transparent;
2240
- border: 1px dashed rgba(143, 184, 255, 0.12);
2241
- color: #6a7588;
2242
- padding: 5px 8px;
2243
- border-radius: 4px;
2244
- cursor: pointer;
2245
- font-size: 12px;
2246
- text-align: left;
2247
- margin-top: 4px;
2248
- transition: border-color 0.15s, color 0.15s;
2249
- }
2250
-
2251
- .cl-add-btn:hover {
2252
- border-color: rgba(52, 100, 168, 0.5);
2253
- color: #cfe1ff;
2254
- }
2255
-
2256
- .cl-form {
2257
- background: rgba(6, 9, 16, 0.55);
2258
- border: 1px solid rgba(143, 184, 255, 0.07);
2259
- border-radius: 5px;
2260
- padding: 8px;
2261
- margin-top: 6px;
2262
- display: flex;
2263
- flex-direction: column;
2264
- gap: 4px;
2265
- }
2266
-
2267
- .cl-form-row {
2268
- display: flex;
2269
- align-items: center;
2270
- gap: 8px;
2271
- font-size: 12px;
2272
- color: #8f97a6;
2273
- }
2274
-
2275
- .cl-form-label {
2276
- width: 44px;
2277
- flex-shrink: 0;
2278
- font-size: 11px;
2279
- text-transform: uppercase;
2280
- letter-spacing: 0.04em;
2281
- }
2282
-
2283
- .cl-form select {
2284
- flex: 1;
2285
- background: rgba(12, 17, 28, 0.7);
2286
- color: #e6e9ef;
2287
- border: 1px solid rgba(143, 184, 255, 0.1);
2288
- padding: 3px 6px;
2289
- border-radius: 3px;
2290
- font-size: 12px;
2291
- font-family: inherit;
2292
- }
2293
-
2294
- /* Area delete confirm panel */
2295
- .area-delete-confirm {
2296
- background: rgba(14, 10, 10, 0.7);
2297
- border: 1px solid rgba(58, 28, 28, 0.8);
2298
- border-radius: 5px;
2299
- padding: 10px 12px;
2300
- margin-top: 2px;
2301
- margin-bottom: 4px;
2302
- font-size: 13px;
2303
- }
2304
-
2305
- .area-delete-confirm p {
2306
- margin: 0 0 8px;
2307
- color: #cfd6e0;
2308
- }
2309
-
2310
- .area-delete-confirm strong {
2311
- color: #e6e9ef;
2312
- }
2313
-
2314
- .area-delete-actions {
2315
- display: flex;
2316
- flex-direction: column;
2317
- gap: 6px;
2318
- }
2319
-
2320
- .area-delete-actions button {
2321
- background: rgba(31, 42, 60, 0.6);
2322
- color: #e6e9ef;
2323
- border: 1px solid rgba(143, 184, 255, 0.1);
2324
- padding: 5px 10px;
2325
- border-radius: 4px;
2326
- cursor: pointer;
2327
- font-size: 13px;
2328
- transition: background 0.15s;
2329
- }
2330
-
2331
- .area-delete-actions button:hover:not(:disabled) {
2332
- background: rgba(52, 80, 120, 0.4);
2333
- }
2334
-
2335
- .area-delete-actions button.danger {
2336
- color: #ff8080;
2337
- border-color: rgba(58, 28, 28, 0.8);
2338
- background: rgba(21, 8, 8, 0.7);
2339
- }
2340
-
2341
- .area-delete-actions button.danger:hover {
2342
- background: rgba(32, 14, 14, 0.8);
2343
- }
2344
-
2345
- .area-move-row {
2346
- display: flex;
2347
- gap: 6px;
2348
- }
2349
-
2350
- .area-move-row select {
2351
- flex: 1;
2352
- background: rgba(31, 42, 60, 0.6);
2353
- color: #e6e9ef;
2354
- border: 1px solid rgba(143, 184, 255, 0.1);
2355
- padding: 5px 8px;
2356
- border-radius: 4px;
2357
- font-size: 13px;
2358
- font-family: inherit;
2359
- }
2360
-
2361
- .area-move-row button:disabled {
2362
- opacity: 0.35;
2363
- cursor: not-allowed;
2364
- }
2365
-
2366
- .area-ud-section {
2367
- padding: 4px 8px 8px;
2368
- border-left: 2px solid rgba(143, 184, 255, 0.15);
2369
- margin: 0 0 4px 4px;
2370
- }
2371
-
2372
- .map-stats {
2373
- display: flex;
2374
- flex-direction: column;
2375
- gap: 2px;
2376
- margin-bottom: 12px;
2377
- }
2378
-
2379
- .map-stat-row {
2380
- display: flex;
2381
- justify-content: space-between;
2382
- font-size: 12px;
2383
- padding: 3px 0;
2384
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
2385
- }
2386
-
2387
- .map-stat-label {
2388
- color: #6a7588;
2389
- }
2390
-
2391
- .map-stat-value {
2392
- color: #e6e9ef;
2393
- font-variant-numeric: tabular-nums;
2394
- }
2395
-
2396
- .warnings-list {
2397
- display: flex;
2398
- flex-direction: column;
2399
- gap: 4px;
2400
- margin-bottom: 12px;
2401
- }
2402
-
2403
- .warning-row {
2404
- display: flex;
2405
- align-items: flex-start;
2406
- gap: 6px;
2407
- background: rgba(220, 160, 30, 0.08);
2408
- border: 1px solid rgba(220, 160, 30, 0.25);
2409
- border-radius: 4px;
2410
- padding: 5px 6px;
2411
- font-size: 12px;
2412
- }
2413
-
2414
- .warning-icon {
2415
- color: #d4922a;
2416
- flex-shrink: 0;
2417
- line-height: 1.4;
2418
- }
2419
-
2420
- .warning-text {
2421
- display: flex;
2422
- flex-direction: column;
2423
- gap: 1px;
2424
- flex: 1;
2425
- min-width: 0;
2426
- }
2427
-
2428
- .warning-text strong {
2429
- color: #e6c870;
2430
- font-weight: 600;
2431
- }
2432
-
2433
- .warning-detail {
2434
- color: #8a96aa;
2435
- white-space: nowrap;
2436
- overflow: hidden;
2437
- text-overflow: ellipsis;
2438
- }
2439
-
2440
- .warning-go-btn {
2441
- flex-shrink: 0;
2442
- background: rgba(220, 160, 30, 0.15);
2443
- border: 1px solid rgba(220, 160, 30, 0.35);
2444
- border-radius: 3px;
2445
- color: #e6c870;
2446
- cursor: pointer;
2447
- font-size: 11px;
2448
- padding: 2px 7px;
2449
- }
2450
-
2451
- .warning-go-btn:hover {
2452
- background: rgba(220, 160, 30, 0.28);
2453
- }
2454
-
2455
- /* Env manager modal — grid layout */
2456
- .modal.modal-env {
2457
- width: 680px;
2458
- max-width: 95vw;
2459
- max-height: 85vh;
2460
- }
2461
-
2462
- .env-modal-body {
2463
- flex-direction: row !important;
2464
- gap: 16px !important;
2465
- align-items: flex-start;
2466
- min-height: 0;
2467
- }
2468
-
2469
- .env-modal-left {
2470
- flex: 1;
2471
- min-width: 0;
2472
- display: flex;
2473
- flex-direction: column;
2474
- }
2475
-
2476
- .env-modal-right {
2477
- width: 180px;
2478
- flex-shrink: 0;
2479
- }
2480
-
2481
- .env-filter-input {
2482
- flex: 1;
2483
- background: rgba(6, 9, 16, 0.6);
2484
- color: #e6e9ef;
2485
- border: 1px solid rgba(143, 184, 255, 0.1);
2486
- padding: 5px 8px;
2487
- border-radius: 4px;
2488
- font-size: 13px;
2489
- font-family: inherit;
2490
- transition: border-color 0.15s, box-shadow 0.15s;
2491
- }
2492
-
2493
- .env-filter-input:focus {
2494
- outline: none;
2495
- border-color: rgba(52, 100, 168, 0.7);
2496
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.12);
2497
- }
2498
-
2499
- .env-tile-grid {
2500
- display: flex;
2501
- flex-wrap: wrap;
2502
- gap: 6px;
2503
- padding: 4px 6px;
2504
- }
2505
-
2506
- .env-tile {
2507
- position: relative;
2508
- width: 54px;
2509
- height: 54px;
2510
- border-radius: 5px;
2511
- border: 2px solid transparent;
2512
- cursor: pointer;
2513
- display: flex;
2514
- align-items: flex-end;
2515
- justify-content: center;
2516
- padding: 0 0 3px;
2517
- transition: transform 0.12s, border-color 0.12s, box-shadow 0.12s;
2518
- }
2519
-
2520
- .env-tile:hover {
2521
- transform: scale(1.08);
2522
- border-color: #8fb8ff;
2523
- box-shadow: 0 0 12px rgba(143, 184, 255, 0.2);
2524
- }
2525
-
2526
- .env-tile.selected {
2527
- border-color: #00e5ff;
2528
- box-shadow: 0 0 0 1px #00e5ff, 0 0 12px rgba(0, 229, 255, 0.25);
2529
- }
2530
-
2531
- .env-tile.custom {
2532
- box-shadow: inset 0 0 0 2px rgba(255,255,255,0.15);
2533
- }
2534
-
2535
- .env-tile-id {
2536
- font-size: 10px;
2537
- color: rgba(255,255,255,0.9);
2538
- text-shadow: 0 0 3px #000, 0 0 3px #000;
2539
- font-family: ui-monospace, Consolas, monospace;
2540
- line-height: 1;
2541
- }
2542
-
2543
- .env-tile-badge {
2544
- position: absolute;
2545
- top: 3px;
2546
- right: 3px;
2547
- font-size: 8px;
2548
- background: rgba(0,0,0,0.6);
2549
- color: #ffdf80;
2550
- padding: 1px 3px;
2551
- border-radius: 2px;
2552
- line-height: 1;
2553
- font-weight: 700;
2554
- }
2555
-
2556
- .env-tile-dot {
2557
- position: absolute;
2558
- top: 3px;
2559
- left: 3px;
2560
- width: 6px;
2561
- height: 6px;
2562
- background: #7fff9f;
2563
- border-radius: 50%;
2564
- border: 1px solid rgba(0,0,0,0.4);
2565
- box-shadow: 0 0 4px rgba(127, 255, 159, 0.4);
2566
- }
2567
-
2568
- /* Env detail panel */
2569
- .env-detail {
2570
- background: rgba(6, 9, 16, 0.6);
2571
- border: 1px solid rgba(143, 184, 255, 0.08);
2572
- border-radius: 6px;
2573
- padding: 12px;
2574
- display: flex;
2575
- flex-direction: column;
2576
- gap: 6px;
2577
- }
2578
-
2579
- .env-detail-swatch {
2580
- width: 100%;
2581
- height: 64px;
2582
- border-radius: 5px;
2583
- border: 1px solid rgba(143, 184, 255, 0.15);
2584
- }
2585
-
2586
- .env-detail-id {
2587
- margin: 0;
2588
- font-size: 13px;
2589
- font-weight: 600;
2590
- color: #8fb8ff;
2591
- }
2592
-
2593
- .env-detail-tags {
2594
- margin: 0;
2595
- display: flex;
2596
- gap: 4px;
2597
- flex-wrap: wrap;
2598
- }
2599
-
2600
- .env-detail-label {
2601
- font-size: 11px;
2602
- color: #8f97a6;
2603
- text-transform: uppercase;
2604
- letter-spacing: 0.04em;
2605
- }
2606
-
2607
- .env-detail-empty {
2608
- background: rgba(6, 9, 16, 0.5);
2609
- border: 1px dashed rgba(143, 184, 255, 0.1);
2610
- border-radius: 6px;
2611
- padding: 16px 12px;
2612
- color: #55606f;
2613
- font-size: 13px;
2614
- }
2615
-
2616
- .env-detail-input {
2617
- background: rgba(6, 9, 16, 0.6);
2618
- color: #e6e9ef;
2619
- border: 1px solid rgba(143, 184, 255, 0.1);
2620
- padding: 5px 8px;
2621
- border-radius: 4px;
2622
- font-size: 13px;
2623
- font-family: inherit;
2624
- width: 100%;
2625
- box-sizing: border-box;
2626
- transition: border-color 0.15s, box-shadow 0.15s;
2627
- }
2628
-
2629
- .env-detail-input:focus {
2630
- outline: none;
2631
- border-color: rgba(52, 100, 168, 0.7);
2632
- box-shadow: 0 0 0 2px rgba(52, 100, 168, 0.12);
2633
- }
2634
-
2635
- .env-detail-btn {
2636
- width: 100%;
2637
- background: rgba(31, 42, 60, 0.6);
2638
- color: #e6e9ef;
2639
- border: 1px solid rgba(143, 184, 255, 0.12);
2640
- padding: 6px 12px;
2641
- border-radius: 4px;
2642
- cursor: pointer;
2643
- font-size: 13px;
2644
- font-family: inherit;
2645
- transition: background 0.15s, border-color 0.15s;
2646
- }
2647
-
2648
- .env-detail-btn:hover:not(:disabled) {
2649
- background: rgba(52, 100, 168, 0.3);
2650
- border-color: rgba(143, 184, 255, 0.25);
2651
- }
2652
-
2653
- .env-detail-btn:disabled {
2654
- opacity: 0.35;
2655
- cursor: not-allowed;
2656
- }
2657
-
2658
- .env-detail-btn--danger {
2659
- color: #ff8080;
2660
- border-color: rgba(58, 28, 28, 0.8);
2661
- }
2662
-
2663
- .env-detail-btn--danger:hover {
2664
- background: rgba(32, 14, 14, 0.8);
2665
- }
2666
-
2667
- .env-tile-add {
2668
- background: transparent;
2669
- border: 2px dashed rgba(143, 184, 255, 0.12);
2670
- transition: border-color 0.15s, background 0.15s;
2671
- }
2672
-
2673
- .env-tile-add:hover {
2674
- border-color: #8fb8ff;
2675
- background: rgba(6, 9, 16, 0.6);
2676
- }
2677
-
2678
- .env-tile-add.selected {
2679
- border-style: solid;
2680
- }
2681
-
2682
- .env-tile-add-icon {
2683
- font-size: 22px;
2684
- color: #55606f;
2685
- line-height: 1;
2686
- position: absolute;
2687
- top: 50%;
2688
- left: 50%;
2689
- transform: translate(-50%, -50%);
2690
- transition: color 0.15s;
2691
- }
2692
-
2693
- .env-tile-add:hover .env-tile-add-icon {
2694
- color: #8fb8ff;
2695
- }
2696
-
2697
- .modal-list-actions button.danger {
2698
- color: #ff8080;
2699
- border-color: rgba(58, 28, 28, 0.8);
2700
- }
2701
-
2702
- .modal-list-actions button.danger:hover {
2703
- background: rgba(32, 14, 14, 0.8);
2704
- }
2705
-
2706
- /* Side panel selects */
2707
- .side-panel select {
2708
- background: rgba(6, 9, 16, 0.6);
2709
- color: #e6e9ef;
2710
- border: 1px solid rgba(143, 184, 255, 0.1);
2711
- padding: 5px 8px;
2712
- border-radius: 4px;
2713
- font-size: 13px;
2714
- font-family: inherit;
2715
- cursor: pointer;
2716
- transition: border-color 0.15s;
2717
- }
2718
-
2719
- .side-panel select:focus {
2720
- outline: none;
2721
- border-color: rgba(52, 100, 168, 0.7);
2722
- }
2723
-
2724
- .side-panel button {
2725
- background: rgba(31, 42, 60, 0.6);
2726
- color: #e6e9ef;
2727
- border: 1px solid rgba(143, 184, 255, 0.1);
2728
- padding: 5px 10px;
2729
- border-radius: 4px;
2730
- cursor: pointer;
2731
- font-size: 13px;
2732
- font-family: inherit;
2733
- transition: background 0.15s, border-color 0.15s;
2734
- }
2735
-
2736
- .side-panel button:hover:not(:disabled) {
2737
- background: rgba(52, 100, 168, 0.3);
2738
- border-color: rgba(143, 184, 255, 0.2);
2739
- }
2740
-
2741
- .side-panel button:disabled {
2742
- opacity: 0.35;
2743
- cursor: not-allowed;
2744
- }
2745
-
2746
- /* ── Link selection panels (ExitPanel / CustomLineSelectPanel) ── */
2747
- .link-info {
2748
- display: flex;
2749
- flex-direction: column;
2750
- gap: 8px;
2751
- padding: 10px 0;
2752
- }
2753
-
2754
- .link-info-row {
2755
- display: flex;
2756
- align-items: baseline;
2757
- gap: 8px;
2758
- font-size: 13px;
2759
- color: #b0b8c6;
2760
- }
2761
-
2762
- .link-info-row .label {
2763
- min-width: 48px;
2764
- flex-shrink: 0;
2765
- font-size: 11px;
2766
- color: #8f97a6;
2767
- text-transform: uppercase;
2768
- letter-spacing: 0.04em;
2769
- }
2770
-
2771
- .link-info-row .readonly {
2772
- padding: 0;
2773
- }
2774
-
2775
- .link-info-row strong {
2776
- color: #e6e9ef;
2777
- min-width: 64px;
2778
- }
2779
-
2780
- .link-info-row .exit-target {
2781
- margin-left: auto;
2782
- }
2783
-
2784
- .link-info-row button {
2785
- background: rgba(31, 42, 60, 0.6);
2786
- color: #7cb8e0;
2787
- border: 1px solid rgba(143, 184, 255, 0.1);
2788
- padding: 2px 8px;
2789
- border-radius: 3px;
2790
- cursor: pointer;
2791
- font-size: 12px;
2792
- transition: background 0.15s;
2793
- }
2794
-
2795
- .link-info-row button:hover {
2796
- background: rgba(52, 80, 120, 0.4);
2797
- }
2798
-
2799
- .link-delete-btn {
2800
- width: 100%;
2801
- background: rgba(58, 26, 26, 0.6) !important;
2802
- color: #ff6b6b !important;
2803
- border: 1px solid rgba(90, 42, 42, 0.8) !important;
2804
- padding: 6px !important;
2805
- border-radius: 4px;
2806
- cursor: pointer;
2807
- font-size: 13px;
2808
- transition: background 0.15s !important;
2809
- }
2810
-
2811
- .link-delete-btn:hover:not(:disabled) {
2812
- background: rgba(74, 32, 32, 0.8) !important;
2813
- }
2814
-
2815
- .exit-flow {
2816
- display: flex;
2817
- align-items: center;
2818
- gap: 4px;
2819
- margin-bottom: 8px;
2820
- }
2821
-
2822
- .exit-flow .exit-target {
2823
- margin-left: 0;
2824
- flex: 1;
2825
- min-width: 0;
2826
- overflow: hidden;
2827
- text-overflow: ellipsis;
2828
- white-space: nowrap;
2829
- }
2830
-
2831
- .exit-flow-center {
2832
- display: flex;
2833
- align-items: center;
2834
- gap: 3px;
2835
- flex-shrink: 0;
2836
- }
2837
-
2838
- .exit-dir-arrow {
2839
- color: #7cb8e0;
2840
- font-size: 14px;
2841
- padding: 0 2px;
2842
- }
2843
-
2844
- .exit-dir-label {
2845
- color: #8a95a3;
2846
- font-size: 12px;
2847
- }
2848
-
2849
- .link-delete-inline {
2850
- background: transparent !important;
2851
- border: none !important;
2852
- color: #ff6b6b !important;
2853
- cursor: pointer;
2854
- padding: 0 4px !important;
2855
- font-size: 12px;
2856
- opacity: 0.5;
2857
- flex-shrink: 0;
2858
- transition: opacity 0.15s !important;
2859
- }
2860
-
2861
- .link-delete-inline:hover {
2862
- opacity: 1;
2863
- }
2864
-
2865
- /* History panel */
2866
- .history-list {
2867
- display: flex;
2868
- flex-direction: column;
2869
- gap: 2px;
2870
- }
2871
-
2872
- .history-item {
2873
- display: flex;
2874
- flex-wrap: wrap;
2875
- align-items: center;
2876
- gap: 2px 8px;
2877
- padding: 5px 8px;
2878
- border-radius: 4px;
2879
- font-size: 12px;
2880
- border: 1px solid transparent;
2881
- text-align: left;
2882
- width: 100%;
2883
- }
2884
-
2885
- .history-current {
2886
- background: rgba(30, 53, 83, 0.6);
2887
- border-color: rgba(52, 100, 168, 0.5) !important;
2888
- color: #cfe1ff !important;
2889
- cursor: default;
2890
- pointer-events: none;
2891
- box-shadow: inset 0 0 0 1px rgba(52, 100, 168, 0.1);
2892
- }
2893
-
2894
- .history-marker {
2895
- color: #8fb8ff;
2896
- font-size: 8px;
2897
- flex-shrink: 0;
2898
- }
2899
-
2900
- .side-panel .history-done {
2901
- background: rgba(6, 9, 16, 0.5);
2902
- color: #b0b8c6;
2903
- border-color: transparent;
2904
- }
2905
-
2906
- .side-panel .history-done:hover {
2907
- background: rgba(31, 42, 60, 0.5);
2908
- color: #e6e9ef;
2909
- border-color: rgba(143, 184, 255, 0.1);
2910
- }
2911
-
2912
- .side-panel .history-undone {
2913
- background: transparent;
2914
- color: #3a4a5a;
2915
- border-color: transparent;
2916
- }
2917
-
2918
- .side-panel .history-undone:hover {
2919
- background: rgba(6, 9, 16, 0.4);
2920
- color: #6a7588;
2921
- border-color: rgba(143, 184, 255, 0.05);
2922
- }
2923
-
2924
- .history-label {
2925
- flex: 1;
2926
- overflow: hidden;
2927
- text-overflow: ellipsis;
2928
- white-space: nowrap;
2929
- font-family: ui-monospace, Consolas, monospace;
2930
- }
2931
-
2932
- .history-sub {
2933
- flex-basis: 100%;
2934
- padding-left: 16px;
2935
- overflow: hidden;
2936
- text-overflow: ellipsis;
2937
- white-space: nowrap;
2938
- font-family: ui-monospace, Consolas, monospace;
2939
- opacity: 0.45;
2940
- font-size: 11px;
2941
- }
2942
-
2943
- .history-sep {
2944
- text-align: center;
2945
- font-size: 10px;
2946
- color: rgba(43, 51, 64, 0.8);
2947
- padding: 6px 0 4px;
2948
- letter-spacing: 0.04em;
2949
- }
2950
-
2951
- .context-menu {
2952
- position: fixed;
2953
- z-index: 500;
2954
- background: rgba(10, 14, 24, 0.92);
2955
- backdrop-filter: blur(20px);
2956
- border: 1px solid rgba(143, 184, 255, 0.1);
2957
- border-radius: 7px;
2958
- box-shadow:
2959
- 0 8px 32px rgba(0,0,0,0.7),
2960
- 0 0 0 1px rgba(255,255,255,0.03),
2961
- inset 0 1px 0 rgba(255,255,255,0.04);
2962
- padding: 3px;
2963
- min-width: 140px;
2964
- }
2965
-
2966
- .context-menu-item {
2967
- display: block;
2968
- width: 100%;
2969
- text-align: left;
2970
- background: transparent;
2971
- border: none;
2972
- color: #e6e9ef;
2973
- padding: 6px 10px;
2974
- font: inherit;
2975
- font-size: 12px;
2976
- border-radius: 4px;
2977
- cursor: pointer;
2978
- transition: background 0.1s;
2979
- }
2980
-
2981
- .context-menu-item:hover {
2982
- background: rgba(52, 80, 120, 0.4);
2983
- }
2984
-
2985
- .context-menu-item.danger {
2986
- color: #ff8080;
2987
- }
2988
-
2989
- .context-menu-item.danger:hover {
2990
- background: rgba(58, 26, 26, 0.6);
2991
- }
2992
-
2993
- .context-menu-form {
2994
- min-width: 200px;
2995
- padding: 3px;
2996
- display: flex;
2997
- flex-direction: column;
2998
- gap: 6px;
2999
- }
3000
-
3001
- .context-menu-title {
3002
- font-size: 11px;
3003
- font-weight: 600;
3004
- color: #8fb8ff;
3005
- letter-spacing: 0.04em;
3006
- padding: 4px 6px 2px;
3007
- text-transform: uppercase;
3008
- }
3009
-
3010
- .context-menu-field {
3011
- display: flex;
3012
- flex-direction: column;
3013
- gap: 2px;
3014
- padding: 0 4px;
3015
- }
3016
-
3017
- .context-menu-field label {
3018
- font-size: 11px;
3019
- color: #6a7588;
3020
- letter-spacing: 0.03em;
3021
- }
3022
-
3023
- .context-menu-field select,
3024
- .context-menu-field input[type="number"] {
3025
- background: rgba(6, 9, 16, 0.7);
3026
- color: #e6e9ef;
3027
- border: 1px solid rgba(143, 184, 255, 0.12);
3028
- border-radius: 4px;
3029
- padding: 4px 6px;
3030
- font-size: 12px;
3031
- font-family: inherit;
3032
- width: 100%;
3033
- box-sizing: border-box;
3034
- transition: border-color 0.15s;
3035
- }
3036
-
3037
- .context-menu-field select:focus,
3038
- .context-menu-field input[type="number"]:focus {
3039
- outline: none;
3040
- border-color: rgba(52, 100, 168, 0.7);
3041
- }
3042
-
3043
- .context-menu-coords {
3044
- display: grid;
3045
- grid-template-columns: 1fr 1fr 1fr;
3046
- gap: 4px;
3047
- padding: 0 4px;
3048
- }
3049
-
3050
- .context-menu-coords .context-menu-field {
3051
- padding: 0;
3052
- }
3053
-
3054
- .context-menu-actions {
3055
- display: flex;
3056
- gap: 4px;
3057
- padding: 4px;
3058
- }
3059
-
3060
- .context-menu-btn {
3061
- flex: 1;
3062
- background: rgba(31, 42, 60, 0.6);
3063
- color: #e6e9ef;
3064
- border: 1px solid rgba(143, 184, 255, 0.12);
3065
- border-radius: 4px;
3066
- padding: 5px 8px;
3067
- font-size: 12px;
3068
- font-family: inherit;
3069
- cursor: pointer;
3070
- transition: background 0.15s;
3071
- }
3072
-
3073
- .context-menu-btn:hover {
3074
- background: rgba(52, 80, 120, 0.4);
3075
- }
3076
-
3077
- .context-menu-btn.primary {
3078
- background: rgba(52, 100, 168, 0.35);
3079
- border-color: rgba(143, 184, 255, 0.25);
3080
- color: #8fb8ff;
3081
- }
3082
-
3083
- .context-menu-btn.primary:hover {
3084
- background: rgba(52, 100, 168, 0.55);
3085
- }
3086
-
3087
- /* Help button */
3088
- .help-btn {
3089
- flex-shrink: 0;
3090
- width: 24px;
3091
- height: 24px;
3092
- border-radius: 50%;
3093
- border: 1px solid rgba(143, 184, 255, 0.2);
3094
- background: rgba(143, 184, 255, 0.06);
3095
- color: #8fb8ff;
3096
- font-size: 13px;
3097
- font-weight: 600;
3098
- line-height: 1;
3099
- cursor: pointer;
3100
- display: flex;
3101
- align-items: center;
3102
- justify-content: center;
3103
- transition: background 0.15s, border-color 0.15s;
3104
- }
3105
- .help-btn:hover {
3106
- background: rgba(143, 184, 255, 0.15);
3107
- border-color: rgba(143, 184, 255, 0.4);
3108
- }
3109
-
3110
- /* Help modal */
3111
- .help-modal-body {
3112
- padding: 16px 18px 20px;
3113
- overflow-y: auto;
3114
- display: flex;
3115
- flex-direction: column;
3116
- gap: 12px;
3117
- }
3118
- .help-desc {
3119
- margin: 0;
3120
- font-size: 12px;
3121
- color: #8a94a6;
3122
- line-height: 1.6;
3123
- }
3124
- .help-desc code {
3125
- background: rgba(143, 184, 255, 0.1);
3126
- border-radius: 3px;
3127
- padding: 1px 4px;
3128
- font-size: 11px;
3129
- color: #8fb8ff;
3130
- }
3131
- .help-section-title {
3132
- margin: 4px 0 4px;
3133
- font-size: 11px;
3134
- font-weight: 600;
3135
- letter-spacing: 0.08em;
3136
- text-transform: uppercase;
3137
- color: #4a6080;
3138
- }
3139
- .help-table {
3140
- width: 100%;
3141
- border-collapse: collapse;
3142
- font-size: 12px;
3143
- }
3144
- .help-table td {
3145
- padding: 4px 6px;
3146
- vertical-align: top;
3147
- color: #cfd6e0;
3148
- border-bottom: 1px solid rgba(143, 184, 255, 0.05);
3149
- }
3150
- .help-table tr:last-child td { border-bottom: none; }
3151
- .help-table td:first-child {
3152
- white-space: nowrap;
3153
- padding-right: 10px;
3154
- }
3155
- .help-tool-name {
3156
- white-space: nowrap;
3157
- font-weight: 500;
3158
- color: #8fb8ff;
3159
- padding-right: 10px;
3160
- }
3161
- .help-tool-hint { color: #7a8494; }
3162
- kbd {
3163
- display: inline-block;
3164
- padding: 1px 5px;
3165
- background: rgba(20, 28, 46, 0.9);
3166
- border: 1px solid rgba(143, 184, 255, 0.2);
3167
- border-radius: 4px;
3168
- font-size: 11px;
3169
- font-family: inherit;
3170
- color: #a8bcd8;
3171
- white-space: nowrap;
3172
- }
3173
-
3174
- /* ── Swatch Palette ── */
3175
- .swatch-palette {
3176
- position: fixed;
3177
- z-index: 20;
3178
- background: rgba(14, 20, 34, 0.97);
3179
- backdrop-filter: blur(18px);
3180
- border: 1px solid rgba(143, 184, 255, 0.18);
3181
- border-radius: 10px;
3182
- box-shadow: 0 8px 32px rgba(0,0,0,0.55), inset 0 1px 0 rgba(255,255,255,0.05);
3183
- min-width: 260px;
3184
- max-width: 380px;
3185
- user-select: none;
3186
- }
3187
-
3188
- .swatch-palette-header {
3189
- display: flex;
3190
- align-items: center;
3191
- padding: 7px 10px;
3192
- cursor: grab;
3193
- border-bottom: 1px solid rgba(143, 184, 255, 0.08);
3194
- gap: 6px;
3195
- }
3196
- .swatch-palette-header:active { cursor: grabbing; }
3197
-
3198
- .swatch-palette-title {
3199
- flex: 1;
3200
- font-size: 10px;
3201
- font-weight: 600;
3202
- letter-spacing: 0.1em;
3203
- text-transform: uppercase;
3204
- color: #8fb8ff;
3205
- }
3206
-
3207
- .swatch-palette-close {
3208
- background: none;
3209
- border: none;
3210
- color: #55606f;
3211
- cursor: pointer;
3212
- padding: 2px 5px;
3213
- font-size: 12px;
3214
- border-radius: 3px;
3215
- line-height: 1;
3216
- }
3217
- .swatch-palette-close:hover { color: #e6e9ef; background: rgba(143, 184, 255, 0.1); }
3218
-
3219
- .swatch-set-row {
3220
- display: flex;
3221
- align-items: center;
3222
- flex-wrap: wrap;
3223
- gap: 4px;
3224
- padding: 6px 8px;
3225
- border-bottom: 1px solid rgba(143, 184, 255, 0.08);
3226
- }
3227
-
3228
- .swatch-set-select {
3229
- flex: 1;
3230
- min-width: 80px;
3231
- background: rgba(10, 14, 22, 0.7);
3232
- border: 1px solid rgba(143, 184, 255, 0.14);
3233
- border-radius: 4px;
3234
- color: #e6e9ef;
3235
- font-size: 12px;
3236
- font-family: inherit;
3237
- padding: 3px 6px;
3238
- height: 26px;
3239
- cursor: pointer;
3240
- }
3241
- .swatch-set-select:focus { outline: none; border-color: rgba(143, 184, 255, 0.35); }
3242
-
3243
- .swatch-set-name-input {
3244
- flex: 1;
3245
- min-width: 80px;
3246
- background: rgba(10, 14, 22, 0.7);
3247
- border: 1px solid rgba(143, 184, 255, 0.25);
3248
- border-radius: 4px;
3249
- color: #e6e9ef;
3250
- font-size: 12px;
3251
- font-family: inherit;
3252
- padding: 3px 6px;
3253
- height: 26px;
3254
- }
3255
- .swatch-set-name-input:focus { outline: none; border-color: rgba(52, 100, 168, 0.7); }
3256
-
3257
- .swatch-icon-btn {
3258
- background: rgba(31, 42, 60, 0.5);
3259
- border: 1px solid rgba(143, 184, 255, 0.12);
3260
- border-radius: 4px;
3261
- color: #8fb8ff;
3262
- cursor: pointer;
3263
- padding: 3px 7px;
3264
- font-size: 12px;
3265
- line-height: 1;
3266
- height: 26px;
3267
- display: inline-flex;
3268
- align-items: center;
3269
- justify-content: center;
3270
- white-space: nowrap;
3271
- }
3272
- .swatch-icon-btn:hover:not(:disabled) { background: rgba(52, 100, 168, 0.3); border-color: rgba(143, 184, 255, 0.25); }
3273
- .swatch-icon-btn:disabled { opacity: 0.35; cursor: not-allowed; }
3274
- .swatch-icon-btn-danger { color: #ff8080; }
3275
- .swatch-icon-btn-danger:hover:not(:disabled) { background: rgba(168, 52, 52, 0.3) !important; }
3276
-
3277
- .swatch-empty-hint {
3278
- font-size: 11px;
3279
- color: #55606f;
3280
- flex: 1;
3281
- }
3282
-
3283
- .swatch-grid {
3284
- display: flex;
3285
- flex-wrap: wrap;
3286
- gap: 4px;
3287
- padding: 8px 8px;
3288
- }
3289
-
3290
- .swatch-chip {
3291
- display: inline-flex;
3292
- align-items: center;
3293
- gap: 4px;
3294
- background: rgba(31, 42, 60, 0.5);
3295
- border: 1px solid rgba(143, 184, 255, 0.1);
3296
- border-radius: 5px;
3297
- padding: 4px 6px;
3298
- cursor: pointer;
3299
- font-size: 12px;
3300
- max-width: 160px;
3301
- transition: background 0.12s, border-color 0.12s;
3302
- }
3303
- .swatch-chip:hover { background: rgba(52, 100, 168, 0.2); border-color: rgba(143, 184, 255, 0.2); }
3304
- .swatch-chip.active {
3305
- background: rgba(30, 53, 83, 0.7);
3306
- border-color: rgba(52, 100, 168, 0.65);
3307
- box-shadow: 0 0 8px rgba(52, 100, 168, 0.25);
3308
- }
3309
- .swatch-chip.editing { border-color: rgba(52, 100, 168, 0.4); }
3310
-
3311
- .swatch-chip-env {
3312
- width: 12px;
3313
- height: 12px;
3314
- border-radius: 50%;
3315
- flex-shrink: 0;
3316
- border: 1px solid rgba(255,255,255,0.15);
3317
- }
3318
-
3319
- .swatch-chip-symbol {
3320
- font-family: ui-monospace, Consolas, monospace;
3321
- font-size: 11px;
3322
- color: #00e5ff;
3323
- min-width: 10px;
3324
- text-align: center;
3325
- flex-shrink: 0;
3326
- }
3327
-
3328
- .swatch-chip-name {
3329
- flex: 1;
3330
- overflow: hidden;
3331
- text-overflow: ellipsis;
3332
- white-space: nowrap;
3333
- color: #c8d4e8;
3334
- font-size: 12px;
3335
- min-width: 0;
3336
- }
3337
-
3338
- .swatch-chip-edit,
3339
- .swatch-chip-del {
3340
- background: none;
3341
- border: none;
3342
- cursor: pointer;
3343
- padding: 0 2px;
3344
- font-size: 11px;
3345
- opacity: 0;
3346
- transition: opacity 0.12s, color 0.12s;
3347
- flex-shrink: 0;
3348
- color: #55606f;
3349
- line-height: 1;
3350
- }
3351
- .swatch-chip:hover .swatch-chip-edit,
3352
- .swatch-chip:hover .swatch-chip-del,
3353
- .swatch-chip.active .swatch-chip-edit,
3354
- .swatch-chip.active .swatch-chip-del { opacity: 1; }
3355
- .swatch-chip-edit:hover { color: #8fb8ff !important; opacity: 1 !important; }
3356
- .swatch-chip-del:hover { color: #ff8080 !important; opacity: 1 !important; }
3357
-
3358
- .swatch-add-btn {
3359
- background: rgba(31, 42, 60, 0.35);
3360
- border: 1px dashed rgba(143, 184, 255, 0.18);
3361
- border-radius: 5px;
3362
- color: #4a5568;
3363
- cursor: pointer;
3364
- padding: 4px 12px;
3365
- font-size: 15px;
3366
- line-height: 1;
3367
- transition: color 0.12s, border-color 0.12s;
3368
- }
3369
- .swatch-add-btn:hover { color: #8fb8ff; border-color: rgba(143, 184, 255, 0.4); }
3370
-
3371
- .swatch-edit-form {
3372
- display: flex;
3373
- align-items: center;
3374
- gap: 4px;
3375
- padding: 6px 8px;
3376
- background: rgba(8, 12, 22, 0.6);
3377
- border-top: 1px solid rgba(143, 184, 255, 0.08);
3378
- }
3379
-
3380
- .swatch-edit-name {
3381
- flex: 1;
3382
- min-width: 0;
3383
- background: rgba(10, 14, 22, 0.7);
3384
- border: 1px solid rgba(143, 184, 255, 0.2);
3385
- border-radius: 4px;
3386
- color: #e6e9ef;
3387
- font-size: 12px;
3388
- font-family: inherit;
3389
- padding: 3px 6px;
3390
- height: 26px;
3391
- }
3392
- .swatch-edit-name:focus { outline: none; border-color: rgba(52, 100, 168, 0.7); }
3393
-
3394
- .swatch-edit-symbol {
3395
- width: 44px;
3396
- flex-shrink: 0;
3397
- background: rgba(10, 14, 22, 0.7);
3398
- border: 1px solid rgba(143, 184, 255, 0.2);
3399
- border-radius: 4px;
3400
- color: #00e5ff;
3401
- font-size: 12px;
3402
- font-family: ui-monospace, Consolas, monospace;
3403
- padding: 3px 4px;
3404
- height: 26px;
3405
- text-align: center;
3406
- }
3407
- .swatch-edit-symbol:focus { outline: none; border-color: rgba(52, 100, 168, 0.7); }
3408
-
3409
- .swatch-env-picker-wrap {
3410
- position: relative;
3411
- flex-shrink: 0;
3412
- }
3413
-
3414
- .swatch-env-btn {
3415
- width: 26px;
3416
- height: 26px;
3417
- border-radius: 4px;
3418
- border: 1px solid rgba(255,255,255,0.2);
3419
- cursor: pointer;
3420
- display: flex;
3421
- align-items: center;
3422
- justify-content: center;
3423
- flex-shrink: 0;
3424
- }
3425
- .swatch-env-btn:hover { border-color: rgba(255,255,255,0.4); }
3426
-
3427
- .swatch-env-id {
3428
- font-size: 9px;
3429
- font-weight: 700;
3430
- color: rgba(255,255,255,0.9);
3431
- text-shadow: 0 1px 2px rgba(0,0,0,0.9);
3432
- pointer-events: none;
3433
- }
3434
-
3435
- .swatch-env-picker-wrap .env-picker-popup {
3436
- position: absolute;
3437
- bottom: calc(100% + 4px);
3438
- left: 0;
3439
- z-index: 100;
3440
- }
3441
-
3442
- .swatch-edit-ok,
3443
- .swatch-edit-cancel {
3444
- flex-shrink: 0;
3445
- background: rgba(31, 42, 60, 0.5);
3446
- border: 1px solid rgba(143, 184, 255, 0.12);
3447
- border-radius: 4px;
3448
- color: #8fb8ff;
3449
- cursor: pointer;
3450
- padding: 3px 7px;
3451
- font-size: 12px;
3452
- height: 26px;
3453
- display: inline-flex;
3454
- align-items: center;
3455
- }
3456
- .swatch-edit-ok:hover { background: rgba(52, 100, 168, 0.4); }
3457
- .swatch-edit-cancel:hover { background: rgba(80, 40, 40, 0.4); color: #ff9090; }
3458
-
3459
- .swatch-empty {
3460
- padding: 10px 12px;
3461
- color: #55606f;
3462
- font-size: 11px;
3463
- text-align: center;
3464
- }
3465
-
3466
- .swatch-pick-banner {
3467
- display: flex;
3468
- align-items: center;
3469
- gap: 8px;
3470
- padding: 8px 10px;
3471
- background: rgba(255, 208, 128, 0.07);
3472
- border-top: 1px solid rgba(255, 208, 128, 0.15);
3473
- font-size: 11px;
3474
- color: #ffd080;
3475
- }
3476
- .swatch-pick-banner span { flex: 1; }
1
+ *{box-sizing:border-box}a{color:#8fb8ffd9;text-decoration:none}a:hover{color:#8fb8ff;text-decoration:underline}*{scrollbar-width:thin;scrollbar-color:#8fb8ff26 transparent}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#8fb8ff26;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8fb8ff47}::-webkit-scrollbar-corner{background:0 0}input[type=checkbox]{appearance:none;cursor:pointer;vertical-align:middle;background:#0a0e16b3;border:1px solid #8fb8ff33;border-radius:3px;flex-shrink:0;width:14px;height:14px;transition:border-color .15s,background .15s,box-shadow .15s;position:relative}input[type=checkbox]:hover{background:#141e32cc;border-color:#8fb8ff66}input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 2px #3464a873}input[type=checkbox]:checked{background:#3464a8d9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpolyline points='2,6.5 4.5,9 10,3' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") 50%/10px 10px no-repeat;border-color:#3464a8e6}input[type=checkbox]:checked:hover{background-color:#4a80c0e6;border-color:#4a80c0}input[type=checkbox]:disabled{opacity:.35;cursor:not-allowed}input[type=color]{appearance:none;cursor:pointer;background:0 0;border:1px solid #8fb8ff33;border-radius:4px;width:40px;height:24px;padding:0;overflow:hidden}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:3px}input[type=color]::-moz-color-swatch{border:none;border-radius:3px}input[type=range]{appearance:none;cursor:pointer;background:#8fb8ff33;border-radius:2px;outline:none;height:4px;margin:0;padding:0}input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#00e5ff;border-radius:50%;width:14px;height:14px}input[type=range]::-moz-range-thumb{cursor:pointer;background:#00e5ff;border:none;border-radius:50%;width:14px;height:14px}html,body,#root{color:#e6e9ef;background-color:#080c14;background-image:radial-gradient(80% 60% at 20% 0,#1e355359 0%,#0000 60%),radial-gradient(60% 80% at 80% 100%,#121e3c4d 0%,#0000 55%),linear-gradient(160deg,#0a0d16 0%,#080c14 50%,#06090f 100%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;height:100%;margin:0;padding:0;font-family:Montserrat,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{height:100%;position:relative}#logo{vertical-align:middle;opacity:.8;height:46px;margin:-10px}.toolbar{-webkit-backdrop-filter:blur(16px)saturate(1.8)brightness(.4);backdrop-filter:blur(16px)saturate(1.8)brightness(.4);z-index:9;background:#1e2a3e85;border:1px solid #8fb8ff2e;border-radius:12px;flex-direction:column;display:flex;position:absolute;top:12px;left:12px;right:12px;overflow:visible;box-shadow:0 4px 24px #00000059,inset 0 1px #ffffff14}.toolbar-row{align-items:center;gap:8px;padding:8px 14px;display:flex}.toolbar-row-header{min-height:44px}.toolbar-row-tools{border-top:1px solid #8fb8ff14;gap:6px;padding:4px 14px}.toolbar h1{letter-spacing:.08em;text-transform:uppercase;color:#8fb8ff;white-space:nowrap;text-shadow:0 0 20px #8fb8ff66;margin:0 8px 0 0;padding:6px 12px;font-size:11px;font-weight:600;transition:text-shadow .2s}.toolbar h1:hover{text-shadow:0 0 12px #8fb8ffe6,0 0 28px #8fb8ff80}.toolbar-sep{background:#8fb8ff1a;width:1px;height:22px;margin:0 4px}.toolbar button,.toolbar select,.toolbar label.file-button{color:#e6e9ef;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1f2a3c99;border:1px solid #8fb8ff1f;border-radius:5px;align-items:center;gap:5px;padding:6px 12px;font-family:inherit;font-size:13px;line-height:1;transition:background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.toolbar select option,.side-panel select option,.cl-form select option,.area-move-row select option{color:#e6e9ef;background:#0e1520}.toolbar button:hover:not(:disabled),.toolbar label.file-button:hover{background:#3464a84d;border-color:#8fb8ff40;box-shadow:0 0 12px #8fb8ff14}.toolbar button:disabled{opacity:.35;cursor:not-allowed}.toolbar .tool-group{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#06091080;border:1px solid #8fb8ff14;border-radius:6px;gap:2px;padding:2px;display:flex}.toolbar .tool-btn{background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:6px;padding:5px 10px;transition:background .15s,border-color .15s;display:inline-flex}.toolbar .tool-btn.active{color:#cfe1ff;background:#1e3553b3;border-color:#3464a899;box-shadow:0 0 12px #3464a833,inset 0 1px #ffffff0d}.toolbar .tool-key{color:#6a7588;background:#0a0e16b3;border:1px solid #8fb8ff1a;border-radius:3px;justify-content:center;align-self:center;align-items:center;padding:2px 5px;font-family:ui-monospace,Consolas,monospace;font-size:10px;line-height:1;display:inline-flex}.toolbar .tool-btn.active .tool-key{color:#8fb8ff;background:#060910cc;border-color:#3464a880}.dropdown-select{display:inline-flex;position:relative}.dropdown-trigger{cursor:pointer;color:#e6e9ef;white-space:nowrap;background:#0a0e168c;border:1px solid #8fb8ff24;border-radius:7px;align-items:center;gap:6px;height:30px;padding:0 10px 0 0;font-family:inherit;font-size:13px;transition:border-color .15s,background .15s;display:inline-flex;overflow:hidden}.dropdown-trigger:hover,.dropdown-trigger.open{background:#141c2eb3;border-color:#8fb8ff47}.dropdown-trigger-label{text-transform:uppercase;letter-spacing:.06em;color:#6a7588;border-right:1px solid #8fb8ff14;flex-shrink:0;align-items:center;height:100%;padding:0 8px;font-size:10px;line-height:1;display:flex}.dropdown-trigger-value{text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;letter-spacing:.06em;text-align:left;flex:1;min-width:0;padding-left:8px;font-size:10px;overflow:hidden}.dropdown-arrow{color:#6a7588;flex-shrink:0;font-size:9px}.dropdown-backdrop{z-index:999;position:fixed;inset:0}.dropdown-list{z-index:1000;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0c121ef5;border:1px solid #8fb8ff24;border-radius:10px;flex-direction:column;max-height:320px;display:flex;overflow:hidden;box-shadow:0 12px 40px #000000b3,inset 0 1px #ffffff0d}.dropdown-search-wrap{border-bottom:1px solid #8fb8ff12;flex-shrink:0;padding:8px 8px 6px}.dropdown-search{color:#e6e9ef;box-sizing:border-box;background:#080c14b3;border:1px solid #8fb8ff1f;border-radius:6px;outline:none;width:100%;padding:5px 9px;font-family:inherit;font-size:12px;transition:border-color .15s}.dropdown-search:focus{border-color:#3464a899}.dropdown-search::placeholder{color:#4a5568}.dropdown-options{flex-direction:column;gap:2px;padding:5px;display:flex;overflow-y:auto}.dropdown-option{text-align:left;color:#c8d0dc;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:6px;width:100%;padding:6px 10px;font-family:inherit;font-size:13px;transition:background .1s,color .1s,border-color .1s;display:block}.dropdown-option:hover{color:#e6e9ef;background:#3464a833;border-color:#8fb8ff1a}.dropdown-option.selected{color:#cfe1ff;background:#1e3553b3;border-color:#3464a880}.dropdown-option.highlighted{color:#e6e9ef;background:#3464a840;border-color:#8fb8ff26}.dropdown-option.highlighted.selected{color:#cfe1ff;background:#3464a873;border-color:#3464a8b3}.dropdown-empty{color:#4a5568;text-align:center;padding:8px 10px;font-size:12px}.toolbar-select-label{text-transform:uppercase;letter-spacing:.06em;color:#6a7588;white-space:nowrap;border-right:1px solid #8fb8ff14;flex-shrink:0;padding:0 8px;font-size:10px;line-height:30px}.toolbar-row-tools button,.toolbar-row-tools label.file-button{padding:3px 9px;font-size:12px}.toolbar-row-tools .tool-btn{padding:3px 8px;font-size:12px}.toolbar-row-tools .tool-key{padding:2px 4px;font-size:9px}.toolbar-snap-btn{color:#6a7588;cursor:pointer;background:#0a0e1680;font-size:12px;border:1px solid #8fb8ff1f!important;border-radius:6px!important;padding:3px 10px!important;transition:color .15s,background .15s,border-color .15s!important}.toolbar-snap-btn:hover{color:#cfd6e0}.toolbar-pending-hint{color:#8fb8ff;opacity:.85;white-space:nowrap;pointer-events:none;margin-left:8px;font-size:11px}.toolbar-snap-btn.active{color:#cfe1ff!important;background:#1e3553b3!important;border-color:#3464a899!important;box-shadow:0 0 12px #3464a833,inset 0 1px #ffffff0d!important}.toolbar-goto{background:#0a0e168c;border:1px solid #8fb8ff24;border-radius:7px;align-items:center;height:30px;transition:border-color .15s,background .15s;display:inline-flex;overflow:hidden}.toolbar-goto:focus-within{background:#141c2eb3;border-color:#8fb8ff47}.toolbar-goto-label{text-transform:uppercase;letter-spacing:.06em;color:#6a7588;white-space:nowrap;border-right:1px solid #8fb8ff14;flex-shrink:0;align-items:center;height:100%;padding:0 8px;font-size:10px;display:flex}.toolbar-goto-input{text-transform:uppercase;letter-spacing:.06em;color:#e6e9ef;appearance:textfield;background:0 0;border:none;outline:none;width:56px;height:100%;padding:0 8px;font-family:inherit;font-size:10px}.toolbar-goto-input::-webkit-inner-spin-button{display:none}.toolbar-goto-input::-webkit-outer-spin-button{display:none}.toolbar-goto-input::placeholder{color:#4a5568}.toolbar-goto-btn{color:#6a7588;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-left:1px solid #8fb8ff14;border-radius:0;flex-shrink:0;height:100%;padding:0 10px;font-family:inherit;font-size:11px;transition:color .15s,background .15s}.toolbar-goto-btn:hover:not(:disabled){color:#cfe1ff;background:#3464a833}.toolbar-goto-btn:disabled{opacity:.35;cursor:not-allowed}.toolbar .status{color:#8f97a6;flex-direction:column;align-items:flex-end;gap:1px;min-width:0;margin-left:auto;padding-left:12px;font-size:12px;display:flex;overflow:hidden}.toolbar .status-file{color:#6a7588;white-space:nowrap;text-overflow:ellipsis;max-width:280px;font-size:11px;overflow:hidden}.toolbar .status-action{white-space:nowrap;text-overflow:ellipsis;max-width:280px;overflow:hidden}.map-viewport{background:#000;position:absolute;inset:0}.map-container{-webkit-user-select:none;user-select:none;touch-action:none;outline:none;position:absolute;inset:0}.empty-state{text-align:center;color:#55606f;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;inset:0}.empty-state-logo{opacity:.375;width:150px;margin-top:24px}.sessions-panel-overlay{box-sizing:border-box;pointer-events:none;justify-content:center;align-items:flex-start;padding:12px 16px 16px;display:flex;position:absolute;inset:76px 0 0;overflow:hidden}.sessions-panel{pointer-events:all;background:#0e1423f5;border:1px solid #3464a866;border-radius:10px;flex-direction:column;gap:14px;width:100%;min-width:360px;max-width:520px;max-height:100%;padding:20px;display:flex;overflow:hidden;box-shadow:0 8px 32px #0009}.sessions-panel-header{color:#cfe1ff;letter-spacing:.03em;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;display:flex}.sessions-delete-all{color:#c97a7a;cursor:pointer;background:#a834341a;border:1px solid #a8343466;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:400;transition:background .15s}.sessions-delete-all:hover{background:#a8343440}.sessions-list{flex-direction:column;flex:auto;gap:6px;min-height:0;display:flex;overflow-y:auto}.session-item{background:#ffffff0a;border:1px solid #ffffff12;border-radius:6px;align-items:center;gap:10px;padding:9px 12px;display:flex}.session-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.session-filename{color:#cfe1ff;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.session-meta{color:#6a8ab0;font-size:11px}.session-actions{flex-shrink:0;gap:6px;display:flex}.session-actions button{color:#8ab4d8;cursor:pointer;background:#3464a826;border:1px solid #3464a880;border-radius:4px;padding:3px 10px;font-size:11px;transition:background .15s}.session-actions button:hover{background:#3464a84d}.session-actions button.session-delete{color:#c97a7a;background:#a834341a;border-color:#a8343466}.session-actions button.session-delete:hover{background:#a8343440}.sessions-empty{color:#456;text-align:center;padding:8px 0;font-size:12px}.sessions-autodelete{border-top:1px solid #ffffff0f;justify-content:flex-end;align-items:center;gap:8px;padding-top:10px;display:flex}.sessions-autodelete-label{color:#6a8ab0;cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:11px;display:flex}.sessions-autodelete-days{color:#8ab4d8;text-align:center;background:#ffffff0d;border:1px solid #3464a859;border-radius:4px;width:48px;padding:2px 6px;font-size:11px}.sessions-autodelete-days:disabled{opacity:.35}.sessions-autodelete-unit{color:#6a8ab0;font-size:11px}.sessions-panel-hint{color:#456;text-align:center;font-size:11px}.side-panel{-webkit-backdrop-filter:blur(16px)saturate(1.8)brightness(.4);backdrop-filter:blur(16px)saturate(1.8)brightness(.4);z-index:10;background:#1c283c85;border:1px solid #8fb8ff2e;border-radius:12px;flex-direction:column;width:440px;padding:0;font-size:13px;display:flex;position:absolute;top:104px;bottom:12px;right:12px;overflow:hidden;box-shadow:0 4px 24px #0006,inset 0 1px #ffffff14}.side-panel--collapsed{width:48px;overflow:visible;box-shadow:0 4px 24px #0006}.side-panel-collapse-btn{color:#6a7588;cursor:pointer;background:0 0;border:none;outline:none;flex-shrink:0;justify-content:center;align-items:center;width:100%;padding:10px 0 6px;font-size:11px;transition:color .15s;display:flex}.side-panel-collapse-btn:hover{color:#8fb8ff}.side-panel-tabs{background:#080c1480;border-bottom:1px solid #8fb8ff14;border-radius:0;flex-wrap:wrap;flex-shrink:0;display:flex}.side-panel-tabs .side-panel-tab{color:#6a7588;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;flex:none;align-items:center;margin-bottom:-1px;padding:8px 12px;font-size:11px;transition:color .15s,border-color .15s;display:inline-flex}.side-panel-tab:hover{color:#cfd6e0}.side-panel-tab.active{color:#8fb8ff;text-shadow:0 0 16px #8fb8ff80;border-bottom-color:#8fb8ff}.tab-badge{color:#8fb8ff;background:#8fb8ff26;border-radius:8px;margin-left:4px;padding:0 5px;font-size:10px;font-weight:600;line-height:16px}.side-panel-tab.active .tab-badge{background:#8fb8ff40}.side-panel-tabs .side-panel-tab--collapse{color:#4a5568;letter-spacing:0;border-left:1px solid #8fb8ff12;flex:0 0 26px;justify-content:center;margin-left:auto;padding:8px 0;font-size:10px}.side-panel-tabs--vert{background:0 0;border-bottom:none;flex-direction:column;width:100%;padding:4px 0;display:flex}.side-panel-tabs--vert .side-panel-tab{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.06em;text-align:center;border-bottom:none;border-left:2px solid #0000;border-right:none;flex:none;width:100%;margin-bottom:0;padding:14px 0;font-size:10px;transform:rotate(180deg)}.side-panel-tabs--vert .side-panel-tab.active{color:#8fb8ff;text-shadow:0 0 16px #8fb8ff80;border-bottom-color:#0000;border-left-color:#8fb8ff}.panel-content{flex:1;min-height:0;padding:14px;overflow-y:auto}.side-panel.empty{color:#6a7588}.side-panel h3{color:#8fb8ff;text-transform:uppercase;letter-spacing:.05em;text-shadow:0 0 12px #8fb8ff4d;margin:0 0 10px;font-size:12px;font-weight:600}.room-heading{justify-content:space-between;align-items:center;display:flex}.room-heading-right{align-items:center;gap:4px;display:flex}.room-coords{color:#6a7588;text-transform:none;letter-spacing:0;text-shadow:none;font-size:11px;font-weight:400}.room-center-btn{color:#6a7588;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:3px;justify-content:center;align-items:center;padding:2px 3px;line-height:1;transition:color .1s,border-color .1s,background .1s;display:flex}.room-center-btn:hover{color:#b8c8e8;background:#1e2535;border-color:#3a4560}.env-symbol-row{gap:8px;display:flex}.env-symbol-row .field,.env-field{flex:1;min-width:0}.symbol-row{align-items:center;gap:4px;display:flex}.symbol-row input[type=text],.symbol-row input:not([type]){flex:1;min-width:0}.symbol-color-input{cursor:pointer;background:0 0;border:1px solid #2a3550;border-radius:3px;flex-shrink:0;width:28px;height:24px;padding:1px 2px}.symbol-color-clear{color:#7a8aaa;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:14px;line-height:1}.symbol-color-clear:hover{color:#e06060}.side-panel h4{color:#8f97a6;text-transform:uppercase;letter-spacing:.05em;margin:14px 0 6px;font-size:11px;font-weight:600}.side-panel p{color:#8f97a6;margin:6px 0}.side-panel p.hint{font-size:12px}.side-panel .hint-tool{color:#cfd6e0;background:#06091099;border:1px solid #8fb8ff12;border-radius:5px;margin-top:10px;padding:8px 10px;font-size:11px}.side-panel .field{flex-direction:column;gap:4px;margin:8px 0;display:flex}.side-panel .field .label{color:#8f97a6;text-transform:uppercase;letter-spacing:.05em;font-size:11px}.side-panel .field input,.side-panel .field textarea{color:#e6e9ef;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;padding:5px 8px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.side-panel .field input:focus,.side-panel .field textarea:focus{border-color:#3464a8b3;outline:none;box-shadow:0 0 0 2px #3464a826}.side-panel .field-row{align-items:flex-end;gap:8px;margin:8px 0 12px;display:flex}.side-panel .field-row>.field{margin:0}.side-panel .field-row>button{cursor:pointer;white-space:nowrap;border:1px solid #444;border-radius:3px;flex-shrink:0;padding:5px 8px;font-family:inherit;font-size:12px}.side-panel .field.checkbox-field{cursor:pointer;flex-direction:row;align-items:center;gap:8px;margin:7px 0}.side-panel .field.checkbox-field input[type=checkbox]{flex-shrink:0;margin:0}.side-panel .field.checkbox-field span{color:#e6e9ef;font-size:13px;line-height:1}.side-panel .readonly{color:#cfd6e0;padding:5px 0;font-family:ui-monospace,Consolas,monospace;font-size:12px}.exit-list{flex-direction:column;gap:3px;display:flex}.exit-row{background:#06091080;border:1px solid #8fb8ff0d;border-radius:4px;grid-template-columns:90px 20px 1fr;align-items:center;gap:6px;padding:4px 6px;font-family:ui-monospace,Consolas,monospace;font-size:12px;display:grid}.exit-row .dir{color:#8fb8ff}.exit-row .arrow{color:#55606f}.exit-row .exit-target{color:#e6e9ef;cursor:pointer;text-align:left;background:0 0;border:1px solid #8fb8ff1a;border-radius:3px;padding:2px 6px;font-family:inherit;font-size:12px;transition:background .15s,border-color .15s}.exit-row .exit-target:hover{background:#1f2a3c99;border-color:#8fb8ff33}.exit-row.empty{color:#55606f;text-align:center;background:0 0;border-color:#0000;grid-template-columns:1fr}.exit-row.special{grid-template-columns:90px 20px 1fr 22px}.exit-row.with-line{grid-template-columns:90px 20px 1fr 26px}.exit-row.special.with-line{grid-template-columns:90px 20px 1fr 26px 22px}.exit-line-btn{color:#6a7588;cursor:pointer;background:0 0;border:1px solid #8fb8ff1a;border-radius:3px;justify-content:center;align-items:center;width:22px;height:20px;padding:0;font-size:13px;line-height:1;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.exit-line-btn:hover{color:#cfe1ff;background:#1e355366;border-color:#3464a899}.exit-line-btn.has-line{background:#06091099;border-color:#3464a880}.exit-line-btn .cl-swatch{border-radius:2px;width:12px;height:10px}.exit-line-icon{font-family:ui-monospace,Consolas,monospace;font-size:12px;font-weight:700}.cl-form-inline{margin:2px 0 6px}.exit-remove{color:#55606f;cursor:pointer;background:0 0;border:none;border-radius:2px;padding:0 2px;font-size:11px;line-height:1;transition:color .15s,background .15s}.exit-remove:hover{color:#ff7f7f;background:#200a0ab3}.special-exits-list{flex-direction:column;gap:3px;display:flex}.special-exits-list .compass-cell{height:auto}.special-exits-list .cc-label{text-overflow:ellipsis;white-space:nowrap;max-width:120px;display:inline-block;overflow:hidden}.special-exit-add{align-items:center;gap:4px;margin-top:6px;display:flex}.special-exit-add input{color:#e6e9ef;box-sizing:border-box;background:#06091099;border:1px solid #8fb8ff1a;border-radius:3px;flex:1;height:24px;padding:0 6px;font-family:inherit;font-size:12px}.special-exit-add button:not(.cc-pick-btn){color:#e6e9ef;cursor:pointer;white-space:nowrap;background:#1f2a3c99;border:1px solid #8fb8ff1f;border-radius:3px;padding:4px 8px;font-size:12px;transition:background .15s,border-color .15s}.special-exit-add button:not(.cc-pick-btn):disabled{opacity:.35;cursor:not-allowed}.special-exit-add .cc-exit-add{flex-shrink:0;width:auto}.special-exit-add .cc-exit-input{flex:none;width:60px}.userdata-list{grid-template-columns:1fr 1fr 22px;align-items:center;gap:3px 4px;display:grid}.userdata-row{display:contents}.ud-key{color:#8fb8ff;text-overflow:ellipsis;white-space:nowrap;padding:2px 5px;font-size:12px;overflow:hidden}.ud-value{color:#e6e9ef;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;width:100%;min-width:0;padding:2px 5px;font-size:12px}.ud-value:focus{border-color:#8fb8ff59;outline:none}.ud-delete{appearance:none;color:#55606f;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:3px;justify-content:center;align-self:center;align-items:center;width:22px;min-width:0;height:22px;margin:0;padding:0 4px 1px;font-family:inherit;font-size:11px;line-height:1;display:flex}.ud-delete:hover{color:#e6e9ef;background:#1f2a3c99}.userdata-empty{color:#55606f;text-align:center;grid-column:1/-1;padding:4px 0;font-size:12px}.userdata-add{display:contents}.ud-new-key,.ud-new-val{color:#e6e9ef;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;width:100%;min-width:0;padding:2px 5px;font-size:12px}.ud-new-key:focus,.ud-new-val:focus{border-color:#8fb8ff59;outline:none}.ud-add{appearance:none;color:#55606f;cursor:pointer;box-sizing:border-box;background:0 0;border:none;border-radius:3px;justify-content:center;align-self:center;align-items:center;width:22px;min-width:0;height:22px;margin:0;padding:0 4px 1px;font-family:inherit;font-size:14px;line-height:1;display:flex}.ud-add:hover{color:#e6e9ef;background:#1f2a3c99}.ud-add:disabled{opacity:.35;cursor:not-allowed}.compass-rose{grid-template-columns:repeat(3,1fr);gap:3px;display:grid}.compass-extra{grid-template-columns:repeat(3,1fr);gap:3px;margin-top:3px;display:grid}.compass-cell{box-sizing:border-box;background:#080c148c;border:1px solid #8fb8ff12;border-radius:5px;flex-direction:column;gap:2px;height:86px;padding:4px 5px;transition:border-color .15s,background .15s;display:flex;overflow:hidden}.compass-extra .compass-cell{height:86px}.compass-cell.compass-center{border-style:dashed;border-color:#8fb8ff0f;justify-content:center;align-items:center;gap:4px}.compass-cell .cc-room-lock-btn{cursor:pointer;color:#4a6070;box-sizing:border-box;background:#05080fb3;border:1px solid #8fb8ff14;border-radius:3px;justify-content:center;align-items:center;width:28px;height:22px;padding:0;transition:border-color .15s,color .15s;display:inline-flex}.compass-cell .cc-room-lock-btn:hover{color:#8fb8ff;border-color:#3464a899}.compass-cell .cc-room-lock-btn.lock-active{color:#f07070;border-color:#5c1c1ccc}.cc-room-weight{color:#55606f;text-align:center;-moz-appearance:textfield;background:#05080fb3;border:1px solid #8fb8ff12;border-radius:2px;width:36px;height:20px;padding:0 3px;font-family:ui-monospace,Consolas,monospace;font-size:10px}.cc-room-weight::-webkit-outer-spin-button{-webkit-appearance:none}.cc-room-weight::-webkit-inner-spin-button{-webkit-appearance:none}.cc-room-weight:focus{color:#e6e9ef;border-color:#3464a8b3;outline:none}.cc-header{flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.cc-header-btn-slot{flex-shrink:0;align-items:center;gap:2px;height:20px;display:flex}.cc-middle{flex:1;justify-content:center;align-items:center;display:flex}.cc-dim{opacity:.22;pointer-events:none}.cc-weight-wrap{color:#3a4a5a;flex:1;align-items:center;gap:2px;min-width:0;display:flex}.cc-label{color:#2b3340cc;letter-spacing:.04em;font-family:ui-monospace,Consolas,monospace;font-size:10px;font-weight:700}.compass-cell.has-exit .cc-label{color:#8fb8ff}.cc-target{color:#8f97a6;cursor:pointer;text-align:center;background:0 0;border:none;width:100%;padding:1px 0;font-family:ui-monospace,Consolas,monospace;font-size:10px;transition:color .15s;display:block}.cc-target:hover{color:#8fb8ff}.cc-stub-label{text-align:center;color:#55606f;padding:1px 0;font-size:9px;font-style:italic;display:block}.cc-footer{align-items:center;gap:2px;margin-top:3px;display:flex}.compass-cell .cc-door-btn,.compass-cell .cc-icon-btn{cursor:pointer;box-sizing:border-box;background:#05080fb3;border:1px solid #8fb8ff12;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:24px;padding:0;font-family:ui-monospace,Consolas,monospace;font-size:11px;font-weight:700;transition:color .15s,border-color .15s;display:inline-flex}.compass-cell .cc-door-btn{color:#5a7090}.compass-cell .cc-door-btn:hover{color:#8fb8ff;border-color:#3464a899}.compass-cell .cc-door-btn.door-open{color:#4caf50;border-color:#2a5c2ab3}.compass-cell .cc-door-btn.door-closed{color:#e6c84a;border-color:#5a4e1eb3}.compass-cell .cc-door-btn.door-locked{color:#f07070;border-color:#5c1c1cb3}.compass-cell .cc-icon-btn{color:#5a7090}.compass-cell .cc-icon-btn:hover{color:#8fb8ff;border-color:#3464a899}.compass-cell .cc-icon-btn.lock-active{color:#f07070;border-color:#5c1c1cb3}.compass-cell .cc-icon-btn.stub-active{color:#e6c84a;border-color:#5a4e1eb3}.compass-cell .cc-icon-btn.cc-delete-btn{color:#7a4040}.compass-cell .cc-icon-btn.cc-delete-btn:hover{color:#f07070;border-color:#5c1c1cb3}.cc-header-btn-slot .cc-icon-btn{width:22px;height:20px;font-size:10px}.compass-cell .cc-dim,.compass-cell .cc-dim:hover{opacity:.2;pointer-events:none;color:#5a7090;border-color:#8fb8ff0f}.cc-weight{color:#55606f;-moz-appearance:textfield;background:#05080fb3;border:1px solid #8fb8ff12;border-radius:2px;flex:1;width:0;min-width:0;height:24px;padding:0 3px;font-family:ui-monospace,Consolas,monospace;font-size:11px}.cc-weight::-webkit-outer-spin-button{-webkit-appearance:none}.cc-weight::-webkit-inner-spin-button{-webkit-appearance:none}.cc-weight:focus{color:#e6e9ef;border-color:#3464a8b3;outline:none}.compass-cell.active{background:#0e1825b3;border-color:#3464a899;box-shadow:inset 0 0 0 1px #3464a826}.compass-cell.picking-exit{background:#0e1208b3;border-color:#e6c84ab3;animation:1s ease-in-out infinite alternate pick-pulse}@keyframes url-progress-indeterminate{0%{width:40%;transform:translate(-100%)}50%{width:60%;transform:translate(150%)}to{width:40%;transform:translate(250%)}}@keyframes pick-pulse{0%{border-color:#e6c84ab3;box-shadow:0 0 8px #e6c84a1a}to{box-shadow:none;border-color:#7a642066}}.cc-exit-add{align-items:center;gap:2px;width:100%;display:flex}.cc-exit-input{color:#55606f;-moz-appearance:textfield;background:#05080fb3;border:1px solid #8fb8ff12;border-radius:2px;flex:1;width:0;min-width:0;height:24px;padding:0 3px;font-family:ui-monospace,Consolas,monospace;font-size:9px}.cc-exit-input::-webkit-outer-spin-button{-webkit-appearance:none}.cc-exit-input::-webkit-inner-spin-button{-webkit-appearance:none}.cc-exit-input:focus{color:#e6e9ef;border-color:#3464a8b3;outline:none}.cc-exit-input::placeholder{color:#2a3540cc}.compass-cell .cc-pick-btn,.special-exit-add .cc-pick-btn{cursor:pointer;color:#4a6070;box-sizing:border-box;background:#05080fb3;border:1px solid #8fb8ff12;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;transition:color .15s,border-color .15s;display:inline-flex}.compass-cell .cc-pick-btn:hover,.special-exit-add .cc-pick-btn:hover{color:#8fb8ff;border-color:#3464a899}.compass-cell .cc-pick-btn.picking,.special-exit-add .cc-pick-btn.picking{color:#e6c84a;border-color:#7a6420b3}.env-field-row{align-items:center;gap:8px;display:flex;position:relative}.env-pick-btn{cursor:pointer;border:2px solid #8fb8ff26;border-radius:4px;flex-shrink:0;width:32px;height:24px;padding:0;transition:border-color .15s}.env-pick-btn:hover{border-color:#3464a899}.env-id-label{color:#8f97a6;font-family:ui-monospace,Consolas,monospace;font-size:12px}.env-picker-popup{z-index:200;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0c111ce6;border:1px solid #8fb8ff1a;border-radius:8px;min-width:200px;max-width:280px;padding:8px;position:absolute;top:110%;left:0;box-shadow:0 8px 32px #0009,0 0 0 1px #ffffff08}.env-picker-filter{color:#e6e9ef;box-sizing:border-box;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;width:100%;margin-bottom:7px;padding:4px 7px;font-family:inherit;font-size:12px;transition:border-color .15s}.env-picker-filter:focus{border-color:#3464a8b3;outline:none;box-shadow:0 0 0 2px #3464a81f}.env-picker-scroll{max-height:220px;overflow-y:auto}.env-picker-grid{flex-wrap:wrap;gap:4px;display:flex}.env-picker-swatch{cursor:pointer;border:2px solid #0000;border-radius:4px;justify-content:center;align-items:flex-end;width:36px;height:36px;padding:0 0 2px;transition:transform .12s,border-color .12s;display:flex;position:relative}.env-picker-swatch:hover{border-color:#8fb8ff;transform:scale(1.1)}.env-picker-swatch.selected{border-color:#00e5ff;box-shadow:0 0 0 1px #00e5ff,0 0 8px #00e5ff4d}.env-picker-id{color:#fffc;text-shadow:0 0 2px #000,0 0 2px #000;font-family:ui-monospace,Consolas,monospace;font-size:9px;line-height:1}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:500;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:#0c111ce0;border:1px solid #8fb8ff1a;border-radius:10px;flex-direction:column;width:480px;max-width:95vw;max-height:80vh;display:flex;box-shadow:0 24px 64px #000000b3,0 0 0 1px #ffffff08,inset 0 1px #ffffff0d}.modal.modal-wide{width:560px}.modal-header{border-bottom:1px solid #8fb8ff14;justify-content:space-between;align-items:center;padding:14px 16px 12px;display:flex}.modal-header h2{color:#8fb8ff;letter-spacing:.03em;text-shadow:0 0 16px #8fb8ff59;margin:0;font-size:14px;font-weight:600}.modal-close{color:#6a7588;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;transition:color .15s,background .15s}.modal-close:hover{color:#e6e9ef;background:#1f2a3c99}.modal-body{flex-direction:column;flex:1;gap:12px;padding:14px 16px;display:flex;overflow-y:auto}.modal-add-row{align-items:center;gap:8px;display:flex}.modal-add-row input{color:#e6e9ef;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;flex:1;padding:6px 8px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.modal-add-row input:focus{border-color:#3464a8b3;outline:none;box-shadow:0 0 0 2px #3464a826}.modal-add-row button{color:#e6e9ef;cursor:pointer;white-space:nowrap;background:#1f2a3c99;border:1px solid #8fb8ff1f;border-radius:4px;padding:6px 12px;font-size:13px;transition:background .15s,border-color .15s}.modal-add-row button:hover:not(:disabled){background:#3464a84d;border-color:#8fb8ff40}.modal-add-row button:disabled{opacity:.35;cursor:not-allowed}.modal-list{flex-direction:column;gap:4px;display:flex}.modal-list-row{background:#06091080;border:1px solid #8fb8ff0f;border-radius:5px;align-items:center;gap:8px;padding:6px 8px;transition:background .15s,border-color .15s;display:flex}.modal-list-name{color:#e6e9ef;cursor:default;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.modal-inline-edit{color:#e6e9ef;outline-offset:0;font-family:inherit;font-size:13px;line-height:inherit;background:#0c111ccc;border:none;border-radius:3px;outline:1px solid #3464a899;flex:1;padding:0 6px}.modal-list-meta{color:#6a7588;white-space:nowrap;font-family:ui-monospace,Consolas,monospace;font-size:11px}.modal-list-actions{gap:4px;display:flex}.modal-list-actions button{color:#e6e9ef;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1a;border-radius:3px;padding:3px 8px;font-size:12px;transition:background .15s}.modal-list-actions button:hover{background:#34507866}.modal-list-actions button.icon-btn{min-width:24px;padding:3px 6px}.modal-empty{color:#55606f;text-align:center;padding:8px 0;font-size:13px}.env-grid-list{flex-direction:column;gap:4px;display:flex}.env-list-row{background:#06091080;border:1px solid #8fb8ff0d;border-radius:4px;align-items:center;gap:8px;padding:5px 8px;display:flex}.env-swatch{border:1px solid #8fb8ff26;border-radius:3px;flex-shrink:0;width:24px;height:24px}.env-list-id{color:#8fb8ff;width:36px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.env-list-builtin{color:#55606f;font-size:11px}.env-list-used{color:#7fff9f;background:#0a1a0ab3;border:1px solid #1a3a1acc;border-radius:10px;padding:1px 5px;font-size:10px}.env-remove{color:#55606f;cursor:pointer;background:0 0;border:none;border-radius:3px;margin-left:auto;padding:2px 4px;font-size:12px;transition:color .15s,background .15s}.env-remove:hover{color:#ff7f7f;background:#200a0ab3}.cl-swatch{border:1px solid #ffffff26;border-radius:2px;flex-shrink:0;width:12px;height:12px}.customline-row{background:#06091080;border:1px solid #8fb8ff0d;border-radius:4px;grid-template-columns:14px 1fr auto 18px;align-items:center;gap:8px;min-width:0;padding:4px 6px;font-family:ui-monospace,Consolas,monospace;font-size:12px;display:grid}.side-panel .customline-name{color:#e6e9ef;cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #8fb8ff1a;border-radius:3px;min-width:0;padding:2px 6px;font-family:inherit;font-size:12px;transition:background .15s;overflow:hidden}.side-panel .customline-name:hover{background:#1f2a3c80}.customline-badge{color:#8f97a6;background:#1f2a3c99;border-radius:8px;justify-content:center;align-items:center;min-width:18px;height:16px;padding:0 5px;font-family:ui-monospace,Consolas,monospace;font-size:10px;line-height:1;display:inline-flex}.side-panel .customline-remove{color:#55606f;cursor:pointer;background:0 0;border:none;border-radius:2px;justify-content:center;align-items:center;width:18px;height:18px;padding:0;font-size:12px;line-height:1;transition:color .15s,background .15s;display:inline-flex}.side-panel .customline-remove:hover{color:#ff7f7f;background:#200a0ab3}.cl-add-btn{color:#6a7588;cursor:pointer;text-align:left;background:0 0;border:1px dashed #8fb8ff1f;border-radius:4px;width:100%;margin-top:4px;padding:5px 8px;font-size:12px;transition:border-color .15s,color .15s}.cl-add-btn:hover{color:#cfe1ff;border-color:#3464a880}.cl-form{background:#0609108c;border:1px solid #8fb8ff12;border-radius:5px;flex-direction:column;gap:4px;margin-top:6px;padding:8px;display:flex}.cl-form-row{color:#8f97a6;align-items:center;gap:8px;font-size:12px;display:flex}.cl-form-label{text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;width:44px;font-size:11px}.cl-form select{color:#e6e9ef;background:#0c111cb3;border:1px solid #8fb8ff1a;border-radius:3px;flex:1;padding:3px 6px;font-family:inherit;font-size:12px}.area-delete-confirm{background:#0e0a0ab3;border:1px solid #3a1c1ccc;border-radius:5px;margin-top:2px;margin-bottom:4px;padding:10px 12px;font-size:13px}.area-delete-confirm p{color:#cfd6e0;margin:0 0 8px}.area-delete-confirm strong{color:#e6e9ef}.area-delete-actions{flex-direction:column;gap:6px;display:flex}.area-delete-actions button{color:#e6e9ef;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1a;border-radius:4px;padding:5px 10px;font-size:13px;transition:background .15s}.area-delete-actions button:hover:not(:disabled){background:#34507866}.area-delete-actions button.danger{color:#ff8080;background:#150808b3;border-color:#3a1c1ccc}.area-delete-actions button.danger:hover{background:#200e0ecc}.area-move-row{gap:6px;display:flex}.area-move-row select{color:#e6e9ef;background:#1f2a3c99;border:1px solid #8fb8ff1a;border-radius:4px;flex:1;padding:5px 8px;font-family:inherit;font-size:13px}.area-move-row button:disabled{opacity:.35;cursor:not-allowed}.area-ud-section{border-left:2px solid #8fb8ff26;margin:0 0 4px 4px;padding:4px 8px 8px}.map-stats{flex-direction:column;gap:2px;margin-bottom:12px;display:flex}.map-stat-row{border-bottom:1px solid #ffffff0d;justify-content:space-between;padding:3px 0;font-size:12px;display:flex}.map-stat-label{color:#6a7588}.map-stat-value{color:#e6e9ef;font-variant-numeric:tabular-nums}.warnings-list{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.warning-row{background:#dca01e14;border:1px solid #dca01e40;border-radius:4px;align-items:flex-start;gap:6px;padding:5px 6px;font-size:12px;display:flex}.warning-icon{color:#d4922a;flex-shrink:0;line-height:1.4}.warning-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.warning-text strong{color:#e6c870;font-weight:600}.warning-detail{color:#8a96aa;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.warning-go-btn{color:#e6c870;cursor:pointer;background:#dca01e26;border:1px solid #dca01e59;border-radius:3px;flex-shrink:0;padding:2px 7px;font-size:11px}.warning-go-btn:hover{background:#dca01e47}.modal.modal-env{width:680px;max-width:95vw;max-height:85vh}.env-modal-body{align-items:flex-start;min-height:0;flex-direction:row!important;gap:16px!important}.env-modal-left{flex-direction:column;flex:1;min-width:0;display:flex}.env-modal-right{flex-shrink:0;width:180px}.env-filter-input{color:#e6e9ef;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;flex:1;padding:5px 8px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.env-filter-input:focus{border-color:#3464a8b3;outline:none;box-shadow:0 0 0 2px #3464a81f}.env-tile-grid{flex-wrap:wrap;gap:6px;padding:4px 6px;display:flex}.env-tile{cursor:pointer;border:2px solid #0000;border-radius:5px;justify-content:center;align-items:flex-end;width:54px;height:54px;padding:0 0 3px;transition:transform .12s,border-color .12s,box-shadow .12s;display:flex;position:relative}.env-tile:hover{border-color:#8fb8ff;transform:scale(1.08);box-shadow:0 0 12px #8fb8ff33}.env-tile.selected{border-color:#00e5ff;box-shadow:0 0 0 1px #00e5ff,0 0 12px #00e5ff40}.env-tile.custom{box-shadow:inset 0 0 0 2px #ffffff26}.env-tile-id{color:#ffffffe6;text-shadow:0 0 3px #000,0 0 3px #000;font-family:ui-monospace,Consolas,monospace;font-size:10px;line-height:1}.env-tile-badge{color:#ffdf80;background:#0009;border-radius:2px;padding:1px 3px;font-size:8px;font-weight:700;line-height:1;position:absolute;top:3px;right:3px}.env-tile-dot{background:#7fff9f;border:1px solid #0006;border-radius:50%;width:6px;height:6px;position:absolute;top:3px;left:3px;box-shadow:0 0 4px #7fff9f66}.env-detail{background:#06091099;border:1px solid #8fb8ff14;border-radius:6px;flex-direction:column;gap:6px;padding:12px;display:flex}.env-detail-swatch{border:1px solid #8fb8ff26;border-radius:5px;width:100%;height:64px}.env-detail-id{color:#8fb8ff;margin:0;font-size:13px;font-weight:600}.env-detail-tags{flex-wrap:wrap;gap:4px;margin:0;display:flex}.env-detail-label{color:#8f97a6;text-transform:uppercase;letter-spacing:.04em;font-size:11px}.env-detail-empty{color:#55606f;background:#06091080;border:1px dashed #8fb8ff1a;border-radius:6px;padding:16px 12px;font-size:13px}.env-detail-input{color:#e6e9ef;box-sizing:border-box;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;width:100%;padding:5px 8px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s}.env-detail-input:focus{border-color:#3464a8b3;outline:none;box-shadow:0 0 0 2px #3464a81f}.env-detail-btn{color:#e6e9ef;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1f;border-radius:4px;width:100%;padding:6px 12px;font-family:inherit;font-size:13px;transition:background .15s,border-color .15s}.env-detail-btn:hover:not(:disabled){background:#3464a84d;border-color:#8fb8ff40}.env-detail-btn:disabled{opacity:.35;cursor:not-allowed}.env-detail-btn--danger{color:#ff8080;border-color:#3a1c1ccc}.env-detail-btn--danger:hover{background:#200e0ecc}.env-tile-add{background:0 0;border:2px dashed #8fb8ff1f;transition:border-color .15s,background .15s}.env-tile-add:hover{background:#06091099;border-color:#8fb8ff}.env-tile-add.selected{border-style:solid}.env-tile-add-icon{color:#55606f;font-size:22px;line-height:1;transition:color .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.env-tile-add:hover .env-tile-add-icon{color:#8fb8ff}.modal-list-actions button.danger{color:#ff8080;border-color:#3a1c1ccc}.modal-list-actions button.danger:hover{background:#200e0ecc}.side-panel select{color:#e6e9ef;cursor:pointer;background:#06091099;border:1px solid #8fb8ff1a;border-radius:4px;padding:5px 8px;font-family:inherit;font-size:13px;transition:border-color .15s}.side-panel select:focus{border-color:#3464a8b3;outline:none}.side-panel button{color:#e6e9ef;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1a;border-radius:4px;padding:5px 10px;font-family:inherit;font-size:13px;transition:background .15s,border-color .15s}.side-panel button:hover:not(:disabled){background:#3464a84d;border-color:#8fb8ff33}.side-panel button:disabled{opacity:.35;cursor:not-allowed}.link-info{flex-direction:column;gap:8px;padding:10px 0;display:flex}.link-info-row{color:#b0b8c6;align-items:baseline;gap:8px;font-size:13px;display:flex}.link-info-row .label{color:#8f97a6;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;min-width:48px;font-size:11px}.link-info-row .readonly{padding:0}.link-info-row strong{color:#e6e9ef;min-width:64px}.link-info-row .exit-target{margin-left:auto}.link-info-row button{color:#7cb8e0;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1a;border-radius:3px;padding:2px 8px;font-size:12px;transition:background .15s}.link-info-row button:hover{background:#34507866}.link-delete-btn{cursor:pointer;border-radius:4px;width:100%;font-size:13px;color:#ff6b6b!important;background:#3a1a1a99!important;border:1px solid #5a2a2acc!important;padding:6px!important;transition:background .15s!important}.link-delete-btn:hover:not(:disabled){background:#4a2020cc!important}.exit-flow{align-items:center;gap:4px;margin-bottom:8px;display:flex}.exit-flow .exit-target{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin-left:0;overflow:hidden}.exit-flow-center{flex-shrink:0;align-items:center;gap:3px;display:flex}.exit-dir-arrow{color:#7cb8e0;padding:0 2px;font-size:14px}.exit-dir-label{color:#8a95a3;font-size:12px}.link-delete-inline{cursor:pointer;opacity:.5;flex-shrink:0;font-size:12px;color:#ff6b6b!important;background:0 0!important;border:none!important;padding:0 4px!important;transition:opacity .15s!important}.link-delete-inline:hover{opacity:1}.history-list{flex-direction:column;gap:2px;display:flex}.history-item{text-align:left;border:1px solid #0000;border-radius:4px;flex-wrap:wrap;align-items:center;gap:2px 8px;width:100%;padding:5px 8px;font-size:12px;display:flex}.history-current{cursor:default;pointer-events:none;background:#1e355399;box-shadow:inset 0 0 0 1px #3464a81a;color:#cfe1ff!important;border-color:#3464a880!important}.history-marker{color:#8fb8ff;flex-shrink:0;font-size:8px}.side-panel .history-done{color:#b0b8c6;background:#06091080;border-color:#0000}.side-panel .history-done:hover{color:#e6e9ef;background:#1f2a3c80;border-color:#8fb8ff1a}.side-panel .history-undone{color:#3a4a5a;background:0 0;border-color:#0000}.side-panel .history-undone:hover{color:#6a7588;background:#06091066;border-color:#8fb8ff0d}.history-label{text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:ui-monospace,Consolas,monospace;overflow:hidden}.history-sub{text-overflow:ellipsis;white-space:nowrap;opacity:.45;flex-basis:100%;padding-left:16px;font-family:ui-monospace,Consolas,monospace;font-size:11px;overflow:hidden}.history-sep{text-align:center;color:#2b3340cc;letter-spacing:.04em;padding:6px 0 4px;font-size:10px}.context-menu{z-index:500;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0a0e18eb;border:1px solid #8fb8ff1a;border-radius:7px;min-width:140px;padding:3px;position:fixed;box-shadow:0 8px 32px #000000b3,0 0 0 1px #ffffff08,inset 0 1px #ffffff0a}.context-menu-item{text-align:left;color:#e6e9ef;width:100%;font:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:6px 10px;font-size:12px;transition:background .1s;display:block}.context-menu-item:hover{background:#34507866}.context-menu-item.danger{color:#ff8080}.context-menu-item.danger:hover{background:#3a1a1a99}.context-menu-form{flex-direction:column;gap:6px;min-width:200px;padding:3px;display:flex}.context-menu-title{color:#8fb8ff;letter-spacing:.04em;text-transform:uppercase;padding:4px 6px 2px;font-size:11px;font-weight:600}.context-menu-field{flex-direction:column;gap:2px;padding:0 4px;display:flex}.context-menu-field label{color:#6a7588;letter-spacing:.03em;font-size:11px}.context-menu-field select,.context-menu-field input[type=number]{color:#e6e9ef;box-sizing:border-box;background:#060910b3;border:1px solid #8fb8ff1f;border-radius:4px;width:100%;padding:4px 6px;font-family:inherit;font-size:12px;transition:border-color .15s}.context-menu-field select:focus,.context-menu-field input[type=number]:focus{border-color:#3464a8b3;outline:none}.context-menu-coords{grid-template-columns:1fr 1fr 1fr;gap:4px;padding:0 4px;display:grid}.context-menu-coords .context-menu-field{padding:0}.context-menu-actions{gap:4px;padding:4px;display:flex}.context-menu-btn{color:#e6e9ef;cursor:pointer;background:#1f2a3c99;border:1px solid #8fb8ff1f;border-radius:4px;flex:1;padding:5px 8px;font-family:inherit;font-size:12px;transition:background .15s}.context-menu-btn:hover{background:#34507866}.context-menu-btn.primary{color:#8fb8ff;background:#3464a859;border-color:#8fb8ff40}.context-menu-btn.primary:hover{background:#3464a88c}.help-btn{color:#8fb8ff;cursor:pointer;background:#8fb8ff0f;border:1px solid #8fb8ff33;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;font-weight:600;line-height:1;transition:background .15s,border-color .15s;display:flex}.help-btn:hover{background:#8fb8ff26;border-color:#8fb8ff66}.help-modal-body{flex-direction:column;gap:12px;padding:16px 18px 20px;display:flex;overflow-y:auto}.help-desc{color:#8a94a6;margin:0;font-size:12px;line-height:1.6}.help-desc code{color:#8fb8ff;background:#8fb8ff1a;border-radius:3px;padding:1px 4px;font-size:11px}.help-section-title{letter-spacing:.08em;text-transform:uppercase;color:#4a6080;margin:4px 0;font-size:11px;font-weight:600}.help-table{border-collapse:collapse;width:100%;font-size:12px}.help-table td{vertical-align:top;color:#cfd6e0;border-bottom:1px solid #8fb8ff0d;padding:4px 6px}.help-table tr:last-child td{border-bottom:none}.help-table td:first-child{white-space:nowrap;padding-right:10px}.help-tool-name{white-space:nowrap;color:#8fb8ff;padding-right:10px;font-weight:500}.help-tool-hint{color:#7a8494}kbd{color:#a8bcd8;white-space:nowrap;background:#141c2ee6;border:1px solid #8fb8ff33;border-radius:4px;padding:1px 5px;font-family:inherit;font-size:11px;display:inline-block}.swatch-palette{z-index:20;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);-webkit-user-select:none;user-select:none;background:#0e1422f7;border:1px solid #8fb8ff2e;border-radius:10px;min-width:260px;max-width:380px;position:fixed;box-shadow:0 8px 32px #0000008c,inset 0 1px #ffffff0d}.swatch-palette-header{cursor:grab;border-bottom:1px solid #8fb8ff14;align-items:center;gap:6px;padding:7px 10px;display:flex}.swatch-palette-header:active{cursor:grabbing}.swatch-palette-title{letter-spacing:.1em;text-transform:uppercase;color:#8fb8ff;flex:1;font-size:10px;font-weight:600}.swatch-palette-close{color:#55606f;cursor:pointer;background:0 0;border:none;border-radius:3px;padding:2px 5px;font-size:12px;line-height:1}.swatch-palette-close:hover{color:#e6e9ef;background:#8fb8ff1a}.swatch-set-row{border-bottom:1px solid #8fb8ff14;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;display:flex}.swatch-set-select{color:#e6e9ef;cursor:pointer;background:#0a0e16b3;border:1px solid #8fb8ff24;border-radius:4px;flex:1;min-width:80px;height:26px;padding:3px 6px;font-family:inherit;font-size:12px}.swatch-set-select:focus{border-color:#8fb8ff59;outline:none}.swatch-set-name-input{color:#e6e9ef;background:#0a0e16b3;border:1px solid #8fb8ff40;border-radius:4px;flex:1;min-width:80px;height:26px;padding:3px 6px;font-family:inherit;font-size:12px}.swatch-set-name-input:focus{border-color:#3464a8b3;outline:none}.swatch-icon-btn{color:#8fb8ff;cursor:pointer;white-space:nowrap;background:#1f2a3c80;border:1px solid #8fb8ff1f;border-radius:4px;justify-content:center;align-items:center;height:26px;padding:3px 7px;font-size:12px;line-height:1;display:inline-flex}.swatch-icon-btn:hover:not(:disabled){background:#3464a84d;border-color:#8fb8ff40}.swatch-icon-btn:disabled{opacity:.35;cursor:not-allowed}.swatch-icon-btn-danger{color:#ff8080}.swatch-icon-btn-danger:hover:not(:disabled){background:#a834344d!important}.swatch-empty-hint{color:#55606f;flex:1;font-size:11px}.swatch-grid{flex-wrap:wrap;gap:4px;padding:8px;display:flex}.swatch-chip{cursor:pointer;background:#1f2a3c80;border:1px solid #8fb8ff1a;border-radius:5px;align-items:center;gap:4px;max-width:160px;padding:4px 6px;font-size:12px;transition:background .12s,border-color .12s;display:inline-flex}.swatch-chip:hover{background:#3464a833;border-color:#8fb8ff33}.swatch-chip.active{background:#1e3553b3;border-color:#3464a8a6;box-shadow:0 0 8px #3464a840}.swatch-chip.editing{border-color:#3464a866}.swatch-chip-env{border:1px solid #ffffff26;border-radius:50%;flex-shrink:0;width:12px;height:12px}.swatch-chip-symbol{color:#00e5ff;text-align:center;flex-shrink:0;min-width:10px;font-family:ui-monospace,Consolas,monospace;font-size:11px}.swatch-chip-name{text-overflow:ellipsis;white-space:nowrap;color:#c8d4e8;flex:1;min-width:0;font-size:12px;overflow:hidden}.swatch-chip-edit,.swatch-chip-del{cursor:pointer;opacity:0;color:#55606f;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:11px;line-height:1;transition:opacity .12s,color .12s}.swatch-chip:hover .swatch-chip-edit,.swatch-chip:hover .swatch-chip-del,.swatch-chip.active .swatch-chip-edit,.swatch-chip.active .swatch-chip-del{opacity:1}.swatch-chip-edit:hover{color:#8fb8ff!important;opacity:1!important}.swatch-chip-del:hover{color:#ff8080!important;opacity:1!important}.swatch-add-btn{color:#4a5568;cursor:pointer;background:#1f2a3c59;border:1px dashed #8fb8ff2e;border-radius:5px;padding:4px 12px;font-size:15px;line-height:1;transition:color .12s,border-color .12s}.swatch-add-btn:hover{color:#8fb8ff;border-color:#8fb8ff66}.swatch-edit-form{background:#080c1699;border-top:1px solid #8fb8ff14;align-items:center;gap:4px;padding:6px 8px;display:flex}.swatch-edit-name{color:#e6e9ef;background:#0a0e16b3;border:1px solid #8fb8ff33;border-radius:4px;flex:1;min-width:0;height:26px;padding:3px 6px;font-family:inherit;font-size:12px}.swatch-edit-name:focus{border-color:#3464a8b3;outline:none}.swatch-edit-symbol{color:#00e5ff;text-align:center;background:#0a0e16b3;border:1px solid #8fb8ff33;border-radius:4px;flex-shrink:0;width:44px;height:26px;padding:3px 4px;font-family:ui-monospace,Consolas,monospace;font-size:12px}.swatch-edit-symbol:focus{border-color:#3464a8b3;outline:none}.swatch-env-picker-wrap{flex-shrink:0;position:relative}.swatch-env-btn{cursor:pointer;border:1px solid #fff3;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:flex}.swatch-env-btn:hover{border-color:#fff6}.swatch-env-id{color:#ffffffe6;text-shadow:0 1px 2px #000000e6;pointer-events:none;font-size:9px;font-weight:700}.swatch-env-picker-wrap .env-picker-popup{z-index:100;position:absolute;bottom:calc(100% + 4px);left:0}.swatch-edit-ok,.swatch-edit-cancel{color:#8fb8ff;cursor:pointer;background:#1f2a3c80;border:1px solid #8fb8ff1f;border-radius:4px;flex-shrink:0;align-items:center;height:26px;padding:3px 7px;font-size:12px;display:inline-flex}.swatch-edit-ok:hover{background:#3464a866}.swatch-edit-cancel:hover{color:#ff9090;background:#50282866}.swatch-empty{color:#55606f;text-align:center;padding:10px 12px;font-size:11px}.swatch-pick-banner{color:#ffd080;background:#ffd08012;border-top:1px solid #ffd08026;align-items:center;gap:8px;padding:8px 10px;font-size:11px;display:flex}.swatch-pick-banner span{flex:1}
2
+ /*$vite$:1*/