@memtensor/memos-cloud-openclaw-plugin 0.1.19-beta.0 → 0.1.20-beta.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,1022 +1,1022 @@
1
- :root {
2
- --bg: #f4efe4;
3
- --bg2: #fbf8f1;
4
- --card: rgba(255, 252, 245, 0.86);
5
- --line: rgba(37, 43, 52, 0.12);
6
- --text: #202734;
7
- --muted: #64748b;
8
- --strong: #101828;
9
- --accent: #0f766e;
10
- --accent2: #0b5b56;
11
- --warn: #b54708;
12
- --danger: #b42318;
13
- --shadow: 0 24px 64px rgba(15, 23, 42, 0.08);
14
- --shell-max-width: 1360px;
15
- --floating-nav-width: 132px;
16
- --floating-nav-collapsed-width: 52px;
17
- --floating-nav-gap: 12px;
18
- --page-padding: 28px;
19
- }
20
-
21
- * {
22
- box-sizing: border-box;
23
- }
24
-
25
- html,
26
- body {
27
- margin: 0;
28
- min-height: 100%;
29
- color: var(--text);
30
- background:
31
- radial-gradient(circle at top left, rgba(15, 118, 110, 0.18), transparent 28%),
32
- radial-gradient(circle at top right, rgba(234, 179, 8, 0.12), transparent 24%),
33
- linear-gradient(180deg, var(--bg), var(--bg2));
34
- font-family: "Segoe UI Variable", "Aptos", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
35
- }
36
-
37
- body {
38
- padding: var(--page-padding);
39
- }
40
-
41
- button,
42
- input,
43
- select,
44
- textarea {
45
- font: inherit;
46
- }
47
-
48
- .shell {
49
- display: grid;
50
- grid-template-columns: minmax(0, 1fr) var(--floating-nav-width);
51
- column-gap: var(--floating-nav-gap);
52
- align-items: start;
53
- max-width: var(--shell-max-width);
54
- margin: 0 auto;
55
- }
56
-
57
- body.nav-collapsed .shell {
58
- grid-template-columns: minmax(0, 1fr) var(--floating-nav-collapsed-width);
59
- }
60
-
61
- .hero,
62
- .layout {
63
- grid-column: 1;
64
- }
65
-
66
- .hero,
67
- .card {
68
- border: 1px solid var(--line);
69
- background: var(--card);
70
- box-shadow: var(--shadow);
71
- }
72
-
73
- .hero {
74
- margin-bottom: 22px;
75
- padding: 22px;
76
- border-radius: 28px;
77
- backdrop-filter: blur(16px);
78
- }
79
-
80
- .hero-grid,
81
- .layout {
82
- gap: 18px;
83
- }
84
-
85
- .hero-grid {
86
- display: grid;
87
- grid-template-columns: 1.4fr 1fr;
88
- }
89
-
90
- .hero-top {
91
- display: flex;
92
- align-items: center;
93
- justify-content: space-between;
94
- gap: 16px;
95
- flex-wrap: wrap;
96
- }
97
-
98
- .layout {
99
- display: grid;
100
- grid-template-columns: minmax(0, 1fr);
101
- gap: 18px;
102
- }
103
-
104
- .eyebrow,
105
- .pill,
106
- .inline-btn {
107
- display: inline-flex;
108
- align-items: center;
109
- gap: 8px;
110
- border-radius: 999px;
111
- }
112
-
113
- .eyebrow {
114
- padding: 8px 12px;
115
- background: rgba(16, 24, 40, 0.05);
116
- color: var(--strong);
117
- font-size: 13px;
118
- font-weight: 700;
119
- }
120
-
121
- .eyebrow-icon {
122
- width: 16px;
123
- height: 16px;
124
- flex: 0 0 16px;
125
- }
126
-
127
- .hero-title-row {
128
- display: flex;
129
- align-items: center;
130
- gap: 14px;
131
- margin-top: 14px;
132
- }
133
-
134
- .hero-logo {
135
- width: clamp(42px, 5vw, 56px);
136
- height: clamp(42px, 5vw, 56px);
137
- flex: 0 0 auto;
138
- border-radius: 16px;
139
- }
140
-
141
- .lang-switch {
142
- display: inline-flex;
143
- align-items: center;
144
- gap: 10px;
145
- min-height: 36px;
146
- }
147
-
148
- .lang-label {
149
- color: #5b6677;
150
- font-size: 11px;
151
- font-weight: 700;
152
- letter-spacing: 0.08em;
153
- text-transform: uppercase;
154
- }
155
-
156
- .lang-dropdown {
157
- position: relative;
158
- }
159
-
160
- .lang-select {
161
- appearance: none;
162
- display: inline-flex;
163
- align-items: center;
164
- justify-content: space-between;
165
- min-height: 32px;
166
- min-width: 124px;
167
- padding: 0 38px 0 14px;
168
- border: 1px solid rgba(15, 23, 42, 0.08);
169
- border-radius: 999px;
170
- background:
171
- linear-gradient(180deg, rgba(249, 250, 251, 0.96), rgba(241, 245, 249, 0.92));
172
- background-image:
173
- linear-gradient(45deg, transparent 50%, #667085 50%),
174
- linear-gradient(135deg, #667085 50%, transparent 50%),
175
- linear-gradient(180deg, rgba(249, 250, 251, 0.96), rgba(241, 245, 249, 0.92));
176
- background-position:
177
- calc(100% - 18px) 13px,
178
- calc(100% - 12px) 13px,
179
- 0 0;
180
- background-size: 6px 6px, 6px 6px, 100% 100%;
181
- background-repeat: no-repeat;
182
- box-shadow:
183
- inset 0 1px 0 rgba(255, 255, 255, 0.7),
184
- 0 1px 2px rgba(15, 23, 42, 0.04);
185
- color: var(--strong);
186
- font-size: 13px;
187
- font-weight: 700;
188
- cursor: pointer;
189
- transition:
190
- background 160ms ease,
191
- color 160ms ease,
192
- border-color 160ms ease,
193
- box-shadow 160ms ease,
194
- transform 160ms ease;
195
- }
196
-
197
- .lang-select-text {
198
- white-space: nowrap;
199
- }
200
-
201
- .lang-select:hover {
202
- border-color: rgba(15, 118, 110, 0.18);
203
- box-shadow:
204
- inset 0 1px 0 rgba(255, 255, 255, 0.74),
205
- 0 6px 16px rgba(15, 23, 42, 0.08);
206
- transform: translateY(-1px);
207
- }
208
-
209
- .lang-select:focus {
210
- outline: none;
211
- border-color: rgba(15, 118, 110, 0.34);
212
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
213
- }
214
-
215
- .lang-dropdown.open .lang-select {
216
- border-color: rgba(15, 118, 110, 0.28);
217
- box-shadow:
218
- 0 0 0 4px rgba(15, 118, 110, 0.08),
219
- 0 12px 28px rgba(15, 23, 42, 0.12);
220
- }
221
-
222
- .lang-menu {
223
- position: absolute;
224
- top: calc(100% + 10px);
225
- right: 0;
226
- z-index: 30;
227
- display: grid;
228
- gap: 6px;
229
- min-width: 148px;
230
- padding: 8px;
231
- border: 1px solid rgba(15, 23, 42, 0.08);
232
- border-radius: 18px;
233
- background: #f8fafc;
234
- box-shadow:
235
- 0 18px 40px rgba(15, 23, 42, 0.12),
236
- inset 0 1px 0 rgba(255, 255, 255, 0.7);
237
- opacity: 0;
238
- pointer-events: none;
239
- transform: translateY(-6px) scale(0.98);
240
- transform-origin: top right;
241
- transition: opacity 140ms ease, transform 140ms ease;
242
- }
243
-
244
- .lang-dropdown.open .lang-menu {
245
- opacity: 1;
246
- pointer-events: auto;
247
- transform: translateY(0) scale(1);
248
- }
249
-
250
- .lang-option {
251
- appearance: none;
252
- display: flex;
253
- align-items: center;
254
- width: 100%;
255
- min-height: 40px;
256
- padding: 0 12px;
257
- border: 0;
258
- border-radius: 12px;
259
- background: transparent;
260
- color: var(--strong);
261
- text-align: left;
262
- font-size: 13px;
263
- font-weight: 700;
264
- cursor: pointer;
265
- transition: background 140ms ease, color 140ms ease, transform 140ms ease;
266
- }
267
-
268
- .lang-option:hover {
269
- background: rgba(15, 23, 42, 0.06);
270
- transform: translateX(1px);
271
- }
272
-
273
- .lang-option:focus {
274
- outline: none;
275
- background: rgba(15, 118, 110, 0.1);
276
- }
277
-
278
- .lang-option.active {
279
- background: rgba(15, 118, 110, 0.12);
280
- color: var(--accent2);
281
- }
282
-
283
- h1 {
284
- margin: 0;
285
- font-size: clamp(34px, 5vw, 52px);
286
- line-height: 1;
287
- letter-spacing: -0.04em;
288
- }
289
-
290
- .subtitle,
291
- .muted,
292
- .field-desc,
293
- .card-head p,
294
- .panel p,
295
- .helper {
296
- color: var(--muted);
297
- line-height: 1.6;
298
- }
299
-
300
- .subtitle {
301
- font-size: 15px;
302
- }
303
-
304
- .status-row,
305
- .meta-row,
306
- .button-row,
307
- .inline-actions {
308
- display: flex;
309
- flex-wrap: wrap;
310
- gap: 10px;
311
- }
312
-
313
- .status-row,
314
- .meta-row {
315
- margin-top: 16px;
316
- }
317
-
318
- .pill {
319
- min-height: 38px;
320
- padding: 8px 14px;
321
- border: 1px solid rgba(15, 23, 42, 0.08);
322
- background: rgba(255, 255, 255, 0.74);
323
- font-size: 13px;
324
- }
325
-
326
- .pill strong {
327
- color: var(--strong);
328
- }
329
-
330
- .pill.ok {
331
- background: rgba(15, 118, 110, 0.1);
332
- color: var(--accent2);
333
- }
334
-
335
- .pill.warn {
336
- background: rgba(181, 71, 8, 0.1);
337
- color: var(--warn);
338
- }
339
-
340
- .update-notice {
341
- display: none;
342
- margin-top: 16px;
343
- padding: 14px 16px;
344
- border: 1px solid rgba(181, 71, 8, 0.2);
345
- border-radius: 18px;
346
- background: rgba(181, 71, 8, 0.08);
347
- color: var(--warn);
348
- }
349
-
350
- .update-notice.show {
351
- display: block;
352
- }
353
-
354
- .update-notice.error {
355
- border-color: rgba(180, 35, 24, 0.18);
356
- background: rgba(180, 35, 24, 0.08);
357
- color: var(--danger);
358
- }
359
-
360
- .update-notice.ok,
361
- .update-notice.info {
362
- border-color: rgba(15, 118, 110, 0.18);
363
- background: rgba(15, 118, 110, 0.08);
364
- color: var(--accent2);
365
- }
366
-
367
- .update-check-button {
368
- appearance: none;
369
- min-height: 38px;
370
- padding: 8px 14px;
371
- border: 1px solid rgba(15, 23, 42, 0.08);
372
- background: rgba(255, 255, 255, 0.74);
373
- color: var(--strong);
374
- font-weight: 700;
375
- cursor: pointer;
376
- transition: border-color 160ms ease, box-shadow 160ms ease, color 160ms ease, transform 160ms ease;
377
- }
378
-
379
- .update-check-button:hover {
380
- border-color: rgba(15, 118, 110, 0.2);
381
- color: var(--accent2);
382
- transform: translateY(-1px);
383
- }
384
-
385
- .update-check-button:focus {
386
- outline: none;
387
- border-color: rgba(15, 118, 110, 0.34);
388
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
389
- }
390
-
391
- .update-check-button:disabled {
392
- cursor: wait;
393
- opacity: 0.7;
394
- transform: none;
395
- }
396
-
397
- .update-copy {
398
- display: flex;
399
- align-items: flex-start;
400
- justify-content: space-between;
401
- gap: 14px;
402
- }
403
-
404
- .update-title {
405
- margin-bottom: 4px;
406
- color: var(--strong);
407
- font-weight: 800;
408
- }
409
-
410
- .update-body {
411
- font-size: 13px;
412
- line-height: 1.55;
413
- }
414
-
415
- .update-command {
416
- display: block;
417
- margin-top: 12px;
418
- padding: 10px 12px;
419
- border-radius: 14px;
420
- background: rgba(255, 255, 255, 0.72);
421
- color: var(--strong);
422
- font-family: "Cascadia Code", "Consolas", monospace;
423
- font-size: 12px;
424
- line-height: 1.45;
425
- overflow-x: auto;
426
- }
427
-
428
- .update-copy-button {
429
- flex: 0 0 auto;
430
- white-space: nowrap;
431
- }
432
-
433
- .hero-actions {
434
- display: grid;
435
- gap: 12px;
436
- }
437
-
438
- .panel {
439
- padding: 18px;
440
- border: 1px solid var(--line);
441
- border-radius: 22px;
442
- background: rgba(255, 255, 255, 0.72);
443
- }
444
-
445
- .panel h2,
446
- .card-head h3 {
447
- margin: 0;
448
- }
449
-
450
- .path-box {
451
- padding: 14px 16px;
452
- border-radius: 18px;
453
- background: rgba(15, 23, 42, 0.04);
454
- border: 1px dashed rgba(15, 23, 42, 0.12);
455
- font-family: "Cascadia Code", "Consolas", monospace;
456
- font-size: 12px;
457
- line-height: 1.7;
458
- word-break: break-all;
459
- }
460
-
461
- .path-box-row {
462
- display: grid;
463
- grid-template-columns: minmax(0, 1fr) auto;
464
- gap: 10px;
465
- align-items: stretch;
466
- margin-top: 14px;
467
- margin-bottom: 18px;
468
- }
469
-
470
- .icon-button {
471
- appearance: none;
472
- width: 48px;
473
- min-height: 48px;
474
- border: 1px solid rgba(15, 23, 42, 0.1);
475
- border-radius: 16px;
476
- background: rgba(255, 255, 255, 0.78);
477
- color: var(--muted);
478
- cursor: pointer;
479
- transition: transform 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
480
- }
481
-
482
- .icon-button:hover {
483
- transform: translateY(-1px);
484
- color: var(--strong);
485
- }
486
-
487
- .icon-button:focus {
488
- outline: none;
489
- border-color: rgba(15, 118, 110, 0.34);
490
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
491
- }
492
-
493
- .btn {
494
- appearance: none;
495
- min-height: 48px;
496
- padding: 0 18px;
497
- border: 0;
498
- border-radius: 16px;
499
- cursor: pointer;
500
- transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
501
- }
502
-
503
- .btn:hover {
504
- transform: translateY(-1px);
505
- }
506
-
507
- .btn:disabled {
508
- opacity: 0.58;
509
- cursor: not-allowed;
510
- transform: none;
511
- }
512
-
513
- .btn-primary {
514
- background: linear-gradient(135deg, var(--accent), var(--accent2));
515
- color: white;
516
- box-shadow: 0 14px 30px rgba(15, 118, 110, 0.24);
517
- }
518
-
519
- .btn-secondary {
520
- background: rgba(15, 23, 42, 0.06);
521
- color: var(--strong);
522
- }
523
-
524
- .btn-ghost {
525
- background: transparent;
526
- color: var(--muted);
527
- border: 1px solid rgba(15, 23, 42, 0.1);
528
- }
529
-
530
- .banner {
531
- display: none;
532
- margin: 18px 0 0;
533
- padding: 14px 16px;
534
- border-radius: 18px;
535
- border: 1px solid transparent;
536
- line-height: 1.55;
537
- font-size: 14px;
538
- }
539
-
540
- .banner.show {
541
- display: block;
542
- }
543
-
544
- .banner.info {
545
- background: rgba(15, 118, 110, 0.08);
546
- border-color: rgba(15, 118, 110, 0.18);
547
- }
548
-
549
- .banner.warn {
550
- background: rgba(181, 71, 8, 0.1);
551
- border-color: rgba(181, 71, 8, 0.18);
552
- color: var(--warn);
553
- }
554
-
555
- .banner.error {
556
- background: rgba(180, 35, 24, 0.1);
557
- border-color: rgba(180, 35, 24, 0.18);
558
- color: var(--danger);
559
- }
560
-
561
- .card {
562
- padding: 22px;
563
- border-radius: 22px;
564
- width: 100%;
565
- margin: 0 0 18px;
566
- }
567
-
568
- .card-head {
569
- display: flex;
570
- justify-content: space-between;
571
- gap: 16px;
572
- margin-bottom: 18px;
573
- }
574
-
575
- .card-anchor {
576
- scroll-margin-top: 28px;
577
- }
578
-
579
- .stack {
580
- display: grid;
581
- grid-template-columns: repeat(2, minmax(0, 1fr));
582
- gap: 16px;
583
- align-items: stretch;
584
- }
585
-
586
- .layout .card:last-child {
587
- margin-bottom: 0;
588
- }
589
-
590
- .field {
591
- display: flex;
592
- flex-direction: column;
593
- width: 100%;
594
- margin: 0;
595
- padding: 14px;
596
- border-radius: 18px;
597
- background: rgba(255, 255, 255, 0.75);
598
- border: 1px solid rgba(15, 23, 42, 0.08);
599
- min-height: 180px;
600
- min-width: 0;
601
- break-inside: auto;
602
- }
603
-
604
- .field-head,
605
- .field-tools {
606
- display: flex;
607
- justify-content: space-between;
608
- gap: 16px;
609
- align-items: center;
610
- }
611
-
612
- .field-head {
613
- margin-bottom: 8px;
614
- }
615
-
616
- .field-tools {
617
- margin-top: auto;
618
- padding-top: 6px;
619
- }
620
-
621
- .field-title {
622
- font-weight: 700;
623
- color: var(--strong);
624
- }
625
-
626
- .field-state {
627
- font-size: 12px;
628
- color: var(--muted);
629
- }
630
-
631
- .field-desc {
632
- margin: 0 0 8px;
633
- font-size: 13px;
634
- }
635
-
636
- .control,
637
- .text-area,
638
- .select {
639
- width: 100%;
640
- border: 1px solid rgba(15, 23, 42, 0.1);
641
- background: rgba(248, 250, 252, 0.88);
642
- color: var(--strong);
643
- outline: none;
644
- border-radius: 16px;
645
- padding: 12px 14px;
646
- transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
647
- }
648
-
649
- .control:focus,
650
- .text-area:focus,
651
- .select:focus {
652
- border-color: rgba(15, 118, 110, 0.4);
653
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
654
- background: white;
655
- }
656
-
657
- .text-area {
658
- min-height: 112px;
659
- resize: vertical;
660
- line-height: 1.6;
661
- flex: 1;
662
- }
663
-
664
- .json-font {
665
- font-family: "Cascadia Code", "Consolas", monospace;
666
- font-size: 12px;
667
- }
668
-
669
- .segmented {
670
- display: inline-flex;
671
- width: 100%;
672
- margin-bottom: 8px;
673
- padding: 5px;
674
- gap: 6px;
675
- border-radius: 18px;
676
- background: rgba(15, 23, 42, 0.05);
677
- }
678
-
679
- .segmented button {
680
- flex: 1;
681
- min-height: 38px;
682
- border-radius: 14px;
683
- border: 0;
684
- background: transparent;
685
- color: var(--muted);
686
- cursor: pointer;
687
- }
688
-
689
- .segmented button.active {
690
- background: white;
691
- color: var(--strong);
692
- box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
693
- }
694
-
695
- .inline-btn {
696
- appearance: none;
697
- min-height: 32px;
698
- padding: 0 12px;
699
- border: 0;
700
- background: rgba(15, 23, 42, 0.05);
701
- color: var(--muted);
702
- cursor: pointer;
703
- }
704
-
705
- .inline-btn:disabled {
706
- opacity: 0.58;
707
- cursor: not-allowed;
708
- }
709
-
710
- .error {
711
- color: var(--danger);
712
- font-size: 12px;
713
- line-height: 1.55;
714
- }
715
-
716
- .helper {
717
- font-size: 12px;
718
- line-height: 1.45;
719
- }
720
-
721
- .overlay {
722
- position: fixed;
723
- inset: 0;
724
- display: none;
725
- align-items: center;
726
- justify-content: center;
727
- padding: 24px;
728
- background: rgba(15, 23, 42, 0.28);
729
- backdrop-filter: blur(6px);
730
- z-index: 20;
731
- }
732
-
733
- .overlay.show {
734
- display: flex;
735
- }
736
-
737
- .overlay-card {
738
- width: min(520px, 100%);
739
- padding: 24px;
740
- border-radius: 24px;
741
- background: rgba(255, 255, 255, 0.96);
742
- box-shadow: 0 28px 80px rgba(15, 23, 42, 0.18);
743
- }
744
-
745
- .overlay-card h4 {
746
- margin: 0 0 10px;
747
- font-size: 22px;
748
- }
749
-
750
- .overlay-card p {
751
- margin: 0;
752
- color: var(--muted);
753
- line-height: 1.7;
754
- }
755
-
756
- .overlay-actions {
757
- margin-top: 18px;
758
- display: flex;
759
- justify-content: center;
760
- }
761
-
762
- .overlay-refresh-button {
763
- width: 52px;
764
- min-height: 52px;
765
- border-radius: 18px;
766
- }
767
-
768
- .floating-tools {
769
- grid-column: 2;
770
- grid-row: 1 / span 2;
771
- position: sticky;
772
- top: var(--page-padding);
773
- z-index: 12;
774
- width: var(--floating-nav-width);
775
- opacity: 1;
776
- pointer-events: auto;
777
- transition: transform 180ms ease;
778
- }
779
-
780
- .floating-nav-card,
781
- .back-top-button {
782
- border: 1px solid rgba(15, 23, 42, 0.1);
783
- background: rgba(255, 252, 245, 0.88);
784
- box-shadow: 0 22px 44px rgba(15, 23, 42, 0.12);
785
- backdrop-filter: blur(16px);
786
- }
787
-
788
- .floating-nav-card {
789
- padding: 10px;
790
- border-radius: 24px;
791
- overflow: hidden;
792
- transition: padding 160ms ease, border-radius 160ms ease, box-shadow 160ms ease;
793
- }
794
-
795
- .floating-nav-head {
796
- margin-bottom: 10px;
797
- padding: 0 4px;
798
- color: var(--muted);
799
- font-size: 12px;
800
- font-weight: 700;
801
- display: flex;
802
- align-items: center;
803
- justify-content: space-between;
804
- gap: 8px;
805
- }
806
-
807
- .floating-nav {
808
- display: grid;
809
- gap: 8px;
810
- transition: opacity 140ms ease, transform 140ms ease;
811
- }
812
-
813
- .floating-toggle {
814
- appearance: none;
815
- display: inline-flex;
816
- align-items: center;
817
- justify-content: center;
818
- width: 28px;
819
- min-width: 28px;
820
- height: 28px;
821
- padding: 0;
822
- border: 0;
823
- border-radius: 999px;
824
- background: rgba(15, 23, 42, 0.06);
825
- color: var(--muted);
826
- cursor: pointer;
827
- transition: transform 160ms ease, background 160ms ease, color 160ms ease;
828
- }
829
-
830
- .floating-toggle:hover {
831
- background: rgba(15, 118, 110, 0.12);
832
- color: var(--accent2);
833
- transform: translateY(-1px);
834
- }
835
-
836
- .floating-toggle:focus {
837
- outline: none;
838
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
839
- }
840
-
841
- .floating-toggle-icon {
842
- font-size: 14px;
843
- line-height: 1;
844
- transition: transform 160ms ease;
845
- }
846
-
847
- body.nav-collapsed .floating-tools {
848
- width: var(--floating-nav-collapsed-width);
849
- }
850
-
851
- body.nav-collapsed .floating-nav-card {
852
- padding: 8px;
853
- border-radius: 20px;
854
- }
855
-
856
- body.nav-collapsed .floating-nav-head {
857
- margin-bottom: 0;
858
- padding: 0;
859
- justify-content: center;
860
- }
861
-
862
- body.nav-collapsed .floating-nav-head > span {
863
- display: none;
864
- }
865
-
866
- body.nav-collapsed .floating-toggle {
867
- width: 36px;
868
- min-width: 36px;
869
- height: 36px;
870
- }
871
-
872
- body.nav-collapsed .floating-toggle-icon {
873
- transform: scaleX(-1);
874
- }
875
-
876
- body.nav-collapsed .floating-nav {
877
- opacity: 0;
878
- transform: translateY(-6px);
879
- pointer-events: none;
880
- height: 0;
881
- overflow: hidden;
882
- gap: 0;
883
- }
884
-
885
- .floating-link,
886
- .back-top-button {
887
- appearance: none;
888
- width: 100%;
889
- min-height: 42px;
890
- border-radius: 16px;
891
- border: 0;
892
- cursor: pointer;
893
- transition: transform 160ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
894
- }
895
-
896
- .floating-link {
897
- padding: 11px 12px;
898
- background: rgba(15, 23, 42, 0.05);
899
- color: var(--muted);
900
- font-size: 12px;
901
- font-weight: 700;
902
- line-height: 1;
903
- white-space: nowrap;
904
- overflow: hidden;
905
- text-overflow: ellipsis;
906
- }
907
-
908
- .floating-link:hover,
909
- .back-top-button:hover {
910
- transform: translateY(-1px);
911
- }
912
-
913
- .floating-link.active {
914
- background: linear-gradient(135deg, rgba(15, 118, 110, 0.16), rgba(11, 91, 86, 0.08));
915
- color: var(--accent2);
916
- box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.16);
917
- }
918
-
919
- .back-top-button {
920
- position: fixed;
921
- left: auto;
922
- right: max(var(--page-padding), calc((100vw - var(--shell-max-width)) / 2 + (var(--floating-nav-width) - 56px) / 2));
923
- bottom: 22px;
924
- z-index: 13;
925
- width: 56px;
926
- min-height: 56px;
927
- padding: 0;
928
- border-radius: 999px;
929
- color: var(--strong);
930
- font-weight: 700;
931
- font-size: 24px;
932
- opacity: 0;
933
- pointer-events: none;
934
- transition: opacity 180ms ease, transform 180ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
935
- }
936
-
937
- .back-top-button.is-visible {
938
- opacity: 1;
939
- pointer-events: auto;
940
- }
941
-
942
- .back-top-button span {
943
- transform: translateY(-1px);
944
- }
945
-
946
- @media (max-width: 1100px) {
947
- .hero-grid {
948
- grid-template-columns: 1fr;
949
- }
950
-
951
- .layout {
952
- grid-template-columns: minmax(0, 1fr);
953
- }
954
-
955
- .stack {
956
- grid-template-columns: 1fr;
957
- }
958
- }
959
-
960
- @media (max-width: 720px) {
961
- body {
962
- padding: 16px;
963
- }
964
-
965
- .hero {
966
- padding: 18px;
967
- }
968
-
969
- .update-copy {
970
- display: grid;
971
- }
972
-
973
- .card,
974
- .panel {
975
- padding: 18px;
976
- }
977
-
978
- .field {
979
- padding: 14px;
980
- }
981
-
982
- .shell {
983
- display: block;
984
- max-width: var(--shell-max-width);
985
- }
986
-
987
- .floating-tools {
988
- grid-column: auto;
989
- grid-row: auto;
990
- position: fixed;
991
- top: 16px;
992
- left: auto;
993
- right: 16px;
994
- width: var(--floating-nav-collapsed-width);
995
- }
996
-
997
- body:not(.nav-collapsed) .floating-tools {
998
- width: 144px;
999
- }
1000
-
1001
- .floating-nav-card {
1002
- padding: 12px;
1003
- }
1004
-
1005
- .floating-nav {
1006
- grid-template-columns: 1fr;
1007
- }
1008
-
1009
- .back-top-button {
1010
- left: auto;
1011
- right: 16px;
1012
- bottom: 16px;
1013
- }
1014
-
1015
- .stack {
1016
- grid-template-columns: 1fr;
1017
- }
1018
-
1019
- .path-box-row {
1020
- grid-template-columns: minmax(0, 1fr) 48px;
1021
- }
1022
- }
1
+ :root {
2
+ --bg: #f4efe4;
3
+ --bg2: #fbf8f1;
4
+ --card: rgba(255, 252, 245, 0.86);
5
+ --line: rgba(37, 43, 52, 0.12);
6
+ --text: #202734;
7
+ --muted: #64748b;
8
+ --strong: #101828;
9
+ --accent: #0f766e;
10
+ --accent2: #0b5b56;
11
+ --warn: #b54708;
12
+ --danger: #b42318;
13
+ --shadow: 0 24px 64px rgba(15, 23, 42, 0.08);
14
+ --shell-max-width: 1360px;
15
+ --floating-nav-width: 132px;
16
+ --floating-nav-collapsed-width: 52px;
17
+ --floating-nav-gap: 12px;
18
+ --page-padding: 28px;
19
+ }
20
+
21
+ * {
22
+ box-sizing: border-box;
23
+ }
24
+
25
+ html,
26
+ body {
27
+ margin: 0;
28
+ min-height: 100%;
29
+ color: var(--text);
30
+ background:
31
+ radial-gradient(circle at top left, rgba(15, 118, 110, 0.18), transparent 28%),
32
+ radial-gradient(circle at top right, rgba(234, 179, 8, 0.12), transparent 24%),
33
+ linear-gradient(180deg, var(--bg), var(--bg2));
34
+ font-family: "Segoe UI Variable", "Aptos", "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
35
+ }
36
+
37
+ body {
38
+ padding: var(--page-padding);
39
+ }
40
+
41
+ button,
42
+ input,
43
+ select,
44
+ textarea {
45
+ font: inherit;
46
+ }
47
+
48
+ .shell {
49
+ display: grid;
50
+ grid-template-columns: minmax(0, 1fr) var(--floating-nav-width);
51
+ column-gap: var(--floating-nav-gap);
52
+ align-items: start;
53
+ max-width: var(--shell-max-width);
54
+ margin: 0 auto;
55
+ }
56
+
57
+ body.nav-collapsed .shell {
58
+ grid-template-columns: minmax(0, 1fr) var(--floating-nav-collapsed-width);
59
+ }
60
+
61
+ .hero,
62
+ .layout {
63
+ grid-column: 1;
64
+ }
65
+
66
+ .hero,
67
+ .card {
68
+ border: 1px solid var(--line);
69
+ background: var(--card);
70
+ box-shadow: var(--shadow);
71
+ }
72
+
73
+ .hero {
74
+ margin-bottom: 22px;
75
+ padding: 22px;
76
+ border-radius: 28px;
77
+ backdrop-filter: blur(16px);
78
+ }
79
+
80
+ .hero-grid,
81
+ .layout {
82
+ gap: 18px;
83
+ }
84
+
85
+ .hero-grid {
86
+ display: grid;
87
+ grid-template-columns: 1.4fr 1fr;
88
+ }
89
+
90
+ .hero-top {
91
+ display: flex;
92
+ align-items: center;
93
+ justify-content: space-between;
94
+ gap: 16px;
95
+ flex-wrap: wrap;
96
+ }
97
+
98
+ .layout {
99
+ display: grid;
100
+ grid-template-columns: minmax(0, 1fr);
101
+ gap: 18px;
102
+ }
103
+
104
+ .eyebrow,
105
+ .pill,
106
+ .inline-btn {
107
+ display: inline-flex;
108
+ align-items: center;
109
+ gap: 8px;
110
+ border-radius: 999px;
111
+ }
112
+
113
+ .eyebrow {
114
+ padding: 8px 12px;
115
+ background: rgba(16, 24, 40, 0.05);
116
+ color: var(--strong);
117
+ font-size: 13px;
118
+ font-weight: 700;
119
+ }
120
+
121
+ .eyebrow-icon {
122
+ width: 16px;
123
+ height: 16px;
124
+ flex: 0 0 16px;
125
+ }
126
+
127
+ .hero-title-row {
128
+ display: flex;
129
+ align-items: center;
130
+ gap: 14px;
131
+ margin-top: 14px;
132
+ }
133
+
134
+ .hero-logo {
135
+ width: clamp(42px, 5vw, 56px);
136
+ height: clamp(42px, 5vw, 56px);
137
+ flex: 0 0 auto;
138
+ border-radius: 16px;
139
+ }
140
+
141
+ .lang-switch {
142
+ display: inline-flex;
143
+ align-items: center;
144
+ gap: 10px;
145
+ min-height: 36px;
146
+ }
147
+
148
+ .lang-label {
149
+ color: #5b6677;
150
+ font-size: 11px;
151
+ font-weight: 700;
152
+ letter-spacing: 0.08em;
153
+ text-transform: uppercase;
154
+ }
155
+
156
+ .lang-dropdown {
157
+ position: relative;
158
+ }
159
+
160
+ .lang-select {
161
+ appearance: none;
162
+ display: inline-flex;
163
+ align-items: center;
164
+ justify-content: space-between;
165
+ min-height: 32px;
166
+ min-width: 124px;
167
+ padding: 0 38px 0 14px;
168
+ border: 1px solid rgba(15, 23, 42, 0.08);
169
+ border-radius: 999px;
170
+ background:
171
+ linear-gradient(180deg, rgba(249, 250, 251, 0.96), rgba(241, 245, 249, 0.92));
172
+ background-image:
173
+ linear-gradient(45deg, transparent 50%, #667085 50%),
174
+ linear-gradient(135deg, #667085 50%, transparent 50%),
175
+ linear-gradient(180deg, rgba(249, 250, 251, 0.96), rgba(241, 245, 249, 0.92));
176
+ background-position:
177
+ calc(100% - 18px) 13px,
178
+ calc(100% - 12px) 13px,
179
+ 0 0;
180
+ background-size: 6px 6px, 6px 6px, 100% 100%;
181
+ background-repeat: no-repeat;
182
+ box-shadow:
183
+ inset 0 1px 0 rgba(255, 255, 255, 0.7),
184
+ 0 1px 2px rgba(15, 23, 42, 0.04);
185
+ color: var(--strong);
186
+ font-size: 13px;
187
+ font-weight: 700;
188
+ cursor: pointer;
189
+ transition:
190
+ background 160ms ease,
191
+ color 160ms ease,
192
+ border-color 160ms ease,
193
+ box-shadow 160ms ease,
194
+ transform 160ms ease;
195
+ }
196
+
197
+ .lang-select-text {
198
+ white-space: nowrap;
199
+ }
200
+
201
+ .lang-select:hover {
202
+ border-color: rgba(15, 118, 110, 0.18);
203
+ box-shadow:
204
+ inset 0 1px 0 rgba(255, 255, 255, 0.74),
205
+ 0 6px 16px rgba(15, 23, 42, 0.08);
206
+ transform: translateY(-1px);
207
+ }
208
+
209
+ .lang-select:focus {
210
+ outline: none;
211
+ border-color: rgba(15, 118, 110, 0.34);
212
+ box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
213
+ }
214
+
215
+ .lang-dropdown.open .lang-select {
216
+ border-color: rgba(15, 118, 110, 0.28);
217
+ box-shadow:
218
+ 0 0 0 4px rgba(15, 118, 110, 0.08),
219
+ 0 12px 28px rgba(15, 23, 42, 0.12);
220
+ }
221
+
222
+ .lang-menu {
223
+ position: absolute;
224
+ top: calc(100% + 10px);
225
+ right: 0;
226
+ z-index: 30;
227
+ display: grid;
228
+ gap: 6px;
229
+ min-width: 148px;
230
+ padding: 8px;
231
+ border: 1px solid rgba(15, 23, 42, 0.08);
232
+ border-radius: 18px;
233
+ background: #f8fafc;
234
+ box-shadow:
235
+ 0 18px 40px rgba(15, 23, 42, 0.12),
236
+ inset 0 1px 0 rgba(255, 255, 255, 0.7);
237
+ opacity: 0;
238
+ pointer-events: none;
239
+ transform: translateY(-6px) scale(0.98);
240
+ transform-origin: top right;
241
+ transition: opacity 140ms ease, transform 140ms ease;
242
+ }
243
+
244
+ .lang-dropdown.open .lang-menu {
245
+ opacity: 1;
246
+ pointer-events: auto;
247
+ transform: translateY(0) scale(1);
248
+ }
249
+
250
+ .lang-option {
251
+ appearance: none;
252
+ display: flex;
253
+ align-items: center;
254
+ width: 100%;
255
+ min-height: 40px;
256
+ padding: 0 12px;
257
+ border: 0;
258
+ border-radius: 12px;
259
+ background: transparent;
260
+ color: var(--strong);
261
+ text-align: left;
262
+ font-size: 13px;
263
+ font-weight: 700;
264
+ cursor: pointer;
265
+ transition: background 140ms ease, color 140ms ease, transform 140ms ease;
266
+ }
267
+
268
+ .lang-option:hover {
269
+ background: rgba(15, 23, 42, 0.06);
270
+ transform: translateX(1px);
271
+ }
272
+
273
+ .lang-option:focus {
274
+ outline: none;
275
+ background: rgba(15, 118, 110, 0.1);
276
+ }
277
+
278
+ .lang-option.active {
279
+ background: rgba(15, 118, 110, 0.12);
280
+ color: var(--accent2);
281
+ }
282
+
283
+ h1 {
284
+ margin: 0;
285
+ font-size: clamp(34px, 5vw, 52px);
286
+ line-height: 1;
287
+ letter-spacing: -0.04em;
288
+ }
289
+
290
+ .subtitle,
291
+ .muted,
292
+ .field-desc,
293
+ .card-head p,
294
+ .panel p,
295
+ .helper {
296
+ color: var(--muted);
297
+ line-height: 1.6;
298
+ }
299
+
300
+ .subtitle {
301
+ font-size: 15px;
302
+ }
303
+
304
+ .status-row,
305
+ .meta-row,
306
+ .button-row,
307
+ .inline-actions {
308
+ display: flex;
309
+ flex-wrap: wrap;
310
+ gap: 10px;
311
+ }
312
+
313
+ .status-row,
314
+ .meta-row {
315
+ margin-top: 16px;
316
+ }
317
+
318
+ .pill {
319
+ min-height: 38px;
320
+ padding: 8px 14px;
321
+ border: 1px solid rgba(15, 23, 42, 0.08);
322
+ background: rgba(255, 255, 255, 0.74);
323
+ font-size: 13px;
324
+ }
325
+
326
+ .pill strong {
327
+ color: var(--strong);
328
+ }
329
+
330
+ .pill.ok {
331
+ background: rgba(15, 118, 110, 0.1);
332
+ color: var(--accent2);
333
+ }
334
+
335
+ .pill.warn {
336
+ background: rgba(181, 71, 8, 0.1);
337
+ color: var(--warn);
338
+ }
339
+
340
+ .update-notice {
341
+ display: none;
342
+ margin-top: 16px;
343
+ padding: 14px 16px;
344
+ border: 1px solid rgba(181, 71, 8, 0.2);
345
+ border-radius: 18px;
346
+ background: rgba(181, 71, 8, 0.08);
347
+ color: var(--warn);
348
+ }
349
+
350
+ .update-notice.show {
351
+ display: block;
352
+ }
353
+
354
+ .update-notice.error {
355
+ border-color: rgba(180, 35, 24, 0.18);
356
+ background: rgba(180, 35, 24, 0.08);
357
+ color: var(--danger);
358
+ }
359
+
360
+ .update-notice.ok,
361
+ .update-notice.info {
362
+ border-color: rgba(15, 118, 110, 0.18);
363
+ background: rgba(15, 118, 110, 0.08);
364
+ color: var(--accent2);
365
+ }
366
+
367
+ .update-check-button {
368
+ appearance: none;
369
+ min-height: 38px;
370
+ padding: 8px 14px;
371
+ border: 1px solid rgba(15, 23, 42, 0.08);
372
+ background: rgba(255, 255, 255, 0.74);
373
+ color: var(--strong);
374
+ font-weight: 700;
375
+ cursor: pointer;
376
+ transition: border-color 160ms ease, box-shadow 160ms ease, color 160ms ease, transform 160ms ease;
377
+ }
378
+
379
+ .update-check-button:hover {
380
+ border-color: rgba(15, 118, 110, 0.2);
381
+ color: var(--accent2);
382
+ transform: translateY(-1px);
383
+ }
384
+
385
+ .update-check-button:focus {
386
+ outline: none;
387
+ border-color: rgba(15, 118, 110, 0.34);
388
+ box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
389
+ }
390
+
391
+ .update-check-button:disabled {
392
+ cursor: wait;
393
+ opacity: 0.7;
394
+ transform: none;
395
+ }
396
+
397
+ .update-copy {
398
+ display: flex;
399
+ align-items: flex-start;
400
+ justify-content: space-between;
401
+ gap: 14px;
402
+ }
403
+
404
+ .update-title {
405
+ margin-bottom: 4px;
406
+ color: var(--strong);
407
+ font-weight: 800;
408
+ }
409
+
410
+ .update-body {
411
+ font-size: 13px;
412
+ line-height: 1.55;
413
+ }
414
+
415
+ .update-command {
416
+ display: block;
417
+ margin-top: 12px;
418
+ padding: 10px 12px;
419
+ border-radius: 14px;
420
+ background: rgba(255, 255, 255, 0.72);
421
+ color: var(--strong);
422
+ font-family: "Cascadia Code", "Consolas", monospace;
423
+ font-size: 12px;
424
+ line-height: 1.45;
425
+ overflow-x: auto;
426
+ }
427
+
428
+ .update-copy-button {
429
+ flex: 0 0 auto;
430
+ white-space: nowrap;
431
+ }
432
+
433
+ .hero-actions {
434
+ display: grid;
435
+ gap: 12px;
436
+ }
437
+
438
+ .panel {
439
+ padding: 18px;
440
+ border: 1px solid var(--line);
441
+ border-radius: 22px;
442
+ background: rgba(255, 255, 255, 0.72);
443
+ }
444
+
445
+ .panel h2,
446
+ .card-head h3 {
447
+ margin: 0;
448
+ }
449
+
450
+ .path-box {
451
+ padding: 14px 16px;
452
+ border-radius: 18px;
453
+ background: rgba(15, 23, 42, 0.04);
454
+ border: 1px dashed rgba(15, 23, 42, 0.12);
455
+ font-family: "Cascadia Code", "Consolas", monospace;
456
+ font-size: 12px;
457
+ line-height: 1.7;
458
+ word-break: break-all;
459
+ }
460
+
461
+ .path-box-row {
462
+ display: grid;
463
+ grid-template-columns: minmax(0, 1fr) auto;
464
+ gap: 10px;
465
+ align-items: stretch;
466
+ margin-top: 14px;
467
+ margin-bottom: 18px;
468
+ }
469
+
470
+ .icon-button {
471
+ appearance: none;
472
+ width: 48px;
473
+ min-height: 48px;
474
+ border: 1px solid rgba(15, 23, 42, 0.1);
475
+ border-radius: 16px;
476
+ background: rgba(255, 255, 255, 0.78);
477
+ color: var(--muted);
478
+ cursor: pointer;
479
+ transition: transform 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
480
+ }
481
+
482
+ .icon-button:hover {
483
+ transform: translateY(-1px);
484
+ color: var(--strong);
485
+ }
486
+
487
+ .icon-button:focus {
488
+ outline: none;
489
+ border-color: rgba(15, 118, 110, 0.34);
490
+ box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
491
+ }
492
+
493
+ .btn {
494
+ appearance: none;
495
+ min-height: 48px;
496
+ padding: 0 18px;
497
+ border: 0;
498
+ border-radius: 16px;
499
+ cursor: pointer;
500
+ transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
501
+ }
502
+
503
+ .btn:hover {
504
+ transform: translateY(-1px);
505
+ }
506
+
507
+ .btn:disabled {
508
+ opacity: 0.58;
509
+ cursor: not-allowed;
510
+ transform: none;
511
+ }
512
+
513
+ .btn-primary {
514
+ background: linear-gradient(135deg, var(--accent), var(--accent2));
515
+ color: white;
516
+ box-shadow: 0 14px 30px rgba(15, 118, 110, 0.24);
517
+ }
518
+
519
+ .btn-secondary {
520
+ background: rgba(15, 23, 42, 0.06);
521
+ color: var(--strong);
522
+ }
523
+
524
+ .btn-ghost {
525
+ background: transparent;
526
+ color: var(--muted);
527
+ border: 1px solid rgba(15, 23, 42, 0.1);
528
+ }
529
+
530
+ .banner {
531
+ display: none;
532
+ margin: 18px 0 0;
533
+ padding: 14px 16px;
534
+ border-radius: 18px;
535
+ border: 1px solid transparent;
536
+ line-height: 1.55;
537
+ font-size: 14px;
538
+ }
539
+
540
+ .banner.show {
541
+ display: block;
542
+ }
543
+
544
+ .banner.info {
545
+ background: rgba(15, 118, 110, 0.08);
546
+ border-color: rgba(15, 118, 110, 0.18);
547
+ }
548
+
549
+ .banner.warn {
550
+ background: rgba(181, 71, 8, 0.1);
551
+ border-color: rgba(181, 71, 8, 0.18);
552
+ color: var(--warn);
553
+ }
554
+
555
+ .banner.error {
556
+ background: rgba(180, 35, 24, 0.1);
557
+ border-color: rgba(180, 35, 24, 0.18);
558
+ color: var(--danger);
559
+ }
560
+
561
+ .card {
562
+ padding: 22px;
563
+ border-radius: 22px;
564
+ width: 100%;
565
+ margin: 0 0 18px;
566
+ }
567
+
568
+ .card-head {
569
+ display: flex;
570
+ justify-content: space-between;
571
+ gap: 16px;
572
+ margin-bottom: 18px;
573
+ }
574
+
575
+ .card-anchor {
576
+ scroll-margin-top: 28px;
577
+ }
578
+
579
+ .stack {
580
+ display: grid;
581
+ grid-template-columns: repeat(2, minmax(0, 1fr));
582
+ gap: 16px;
583
+ align-items: stretch;
584
+ }
585
+
586
+ .layout .card:last-child {
587
+ margin-bottom: 0;
588
+ }
589
+
590
+ .field {
591
+ display: flex;
592
+ flex-direction: column;
593
+ width: 100%;
594
+ margin: 0;
595
+ padding: 14px;
596
+ border-radius: 18px;
597
+ background: rgba(255, 255, 255, 0.75);
598
+ border: 1px solid rgba(15, 23, 42, 0.08);
599
+ min-height: 180px;
600
+ min-width: 0;
601
+ break-inside: auto;
602
+ }
603
+
604
+ .field-head,
605
+ .field-tools {
606
+ display: flex;
607
+ justify-content: space-between;
608
+ gap: 16px;
609
+ align-items: center;
610
+ }
611
+
612
+ .field-head {
613
+ margin-bottom: 8px;
614
+ }
615
+
616
+ .field-tools {
617
+ margin-top: auto;
618
+ padding-top: 6px;
619
+ }
620
+
621
+ .field-title {
622
+ font-weight: 700;
623
+ color: var(--strong);
624
+ }
625
+
626
+ .field-state {
627
+ font-size: 12px;
628
+ color: var(--muted);
629
+ }
630
+
631
+ .field-desc {
632
+ margin: 0 0 8px;
633
+ font-size: 13px;
634
+ }
635
+
636
+ .control,
637
+ .text-area,
638
+ .select {
639
+ width: 100%;
640
+ border: 1px solid rgba(15, 23, 42, 0.1);
641
+ background: rgba(248, 250, 252, 0.88);
642
+ color: var(--strong);
643
+ outline: none;
644
+ border-radius: 16px;
645
+ padding: 12px 14px;
646
+ transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
647
+ }
648
+
649
+ .control:focus,
650
+ .text-area:focus,
651
+ .select:focus {
652
+ border-color: rgba(15, 118, 110, 0.4);
653
+ box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
654
+ background: white;
655
+ }
656
+
657
+ .text-area {
658
+ min-height: 112px;
659
+ resize: vertical;
660
+ line-height: 1.6;
661
+ flex: 1;
662
+ }
663
+
664
+ .json-font {
665
+ font-family: "Cascadia Code", "Consolas", monospace;
666
+ font-size: 12px;
667
+ }
668
+
669
+ .segmented {
670
+ display: inline-flex;
671
+ width: 100%;
672
+ margin-bottom: 8px;
673
+ padding: 5px;
674
+ gap: 6px;
675
+ border-radius: 18px;
676
+ background: rgba(15, 23, 42, 0.05);
677
+ }
678
+
679
+ .segmented button {
680
+ flex: 1;
681
+ min-height: 38px;
682
+ border-radius: 14px;
683
+ border: 0;
684
+ background: transparent;
685
+ color: var(--muted);
686
+ cursor: pointer;
687
+ }
688
+
689
+ .segmented button.active {
690
+ background: white;
691
+ color: var(--strong);
692
+ box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
693
+ }
694
+
695
+ .inline-btn {
696
+ appearance: none;
697
+ min-height: 32px;
698
+ padding: 0 12px;
699
+ border: 0;
700
+ background: rgba(15, 23, 42, 0.05);
701
+ color: var(--muted);
702
+ cursor: pointer;
703
+ }
704
+
705
+ .inline-btn:disabled {
706
+ opacity: 0.58;
707
+ cursor: not-allowed;
708
+ }
709
+
710
+ .error {
711
+ color: var(--danger);
712
+ font-size: 12px;
713
+ line-height: 1.55;
714
+ }
715
+
716
+ .helper {
717
+ font-size: 12px;
718
+ line-height: 1.45;
719
+ }
720
+
721
+ .overlay {
722
+ position: fixed;
723
+ inset: 0;
724
+ display: none;
725
+ align-items: center;
726
+ justify-content: center;
727
+ padding: 24px;
728
+ background: rgba(15, 23, 42, 0.28);
729
+ backdrop-filter: blur(6px);
730
+ z-index: 20;
731
+ }
732
+
733
+ .overlay.show {
734
+ display: flex;
735
+ }
736
+
737
+ .overlay-card {
738
+ width: min(520px, 100%);
739
+ padding: 24px;
740
+ border-radius: 24px;
741
+ background: rgba(255, 255, 255, 0.96);
742
+ box-shadow: 0 28px 80px rgba(15, 23, 42, 0.18);
743
+ }
744
+
745
+ .overlay-card h4 {
746
+ margin: 0 0 10px;
747
+ font-size: 22px;
748
+ }
749
+
750
+ .overlay-card p {
751
+ margin: 0;
752
+ color: var(--muted);
753
+ line-height: 1.7;
754
+ }
755
+
756
+ .overlay-actions {
757
+ margin-top: 18px;
758
+ display: flex;
759
+ justify-content: center;
760
+ }
761
+
762
+ .overlay-refresh-button {
763
+ width: 52px;
764
+ min-height: 52px;
765
+ border-radius: 18px;
766
+ }
767
+
768
+ .floating-tools {
769
+ grid-column: 2;
770
+ grid-row: 1 / span 2;
771
+ position: sticky;
772
+ top: var(--page-padding);
773
+ z-index: 12;
774
+ width: var(--floating-nav-width);
775
+ opacity: 1;
776
+ pointer-events: auto;
777
+ transition: transform 180ms ease;
778
+ }
779
+
780
+ .floating-nav-card,
781
+ .back-top-button {
782
+ border: 1px solid rgba(15, 23, 42, 0.1);
783
+ background: rgba(255, 252, 245, 0.88);
784
+ box-shadow: 0 22px 44px rgba(15, 23, 42, 0.12);
785
+ backdrop-filter: blur(16px);
786
+ }
787
+
788
+ .floating-nav-card {
789
+ padding: 10px;
790
+ border-radius: 24px;
791
+ overflow: hidden;
792
+ transition: padding 160ms ease, border-radius 160ms ease, box-shadow 160ms ease;
793
+ }
794
+
795
+ .floating-nav-head {
796
+ margin-bottom: 10px;
797
+ padding: 0 4px;
798
+ color: var(--muted);
799
+ font-size: 12px;
800
+ font-weight: 700;
801
+ display: flex;
802
+ align-items: center;
803
+ justify-content: space-between;
804
+ gap: 8px;
805
+ }
806
+
807
+ .floating-nav {
808
+ display: grid;
809
+ gap: 8px;
810
+ transition: opacity 140ms ease, transform 140ms ease;
811
+ }
812
+
813
+ .floating-toggle {
814
+ appearance: none;
815
+ display: inline-flex;
816
+ align-items: center;
817
+ justify-content: center;
818
+ width: 28px;
819
+ min-width: 28px;
820
+ height: 28px;
821
+ padding: 0;
822
+ border: 0;
823
+ border-radius: 999px;
824
+ background: rgba(15, 23, 42, 0.06);
825
+ color: var(--muted);
826
+ cursor: pointer;
827
+ transition: transform 160ms ease, background 160ms ease, color 160ms ease;
828
+ }
829
+
830
+ .floating-toggle:hover {
831
+ background: rgba(15, 118, 110, 0.12);
832
+ color: var(--accent2);
833
+ transform: translateY(-1px);
834
+ }
835
+
836
+ .floating-toggle:focus {
837
+ outline: none;
838
+ box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
839
+ }
840
+
841
+ .floating-toggle-icon {
842
+ font-size: 14px;
843
+ line-height: 1;
844
+ transition: transform 160ms ease;
845
+ }
846
+
847
+ body.nav-collapsed .floating-tools {
848
+ width: var(--floating-nav-collapsed-width);
849
+ }
850
+
851
+ body.nav-collapsed .floating-nav-card {
852
+ padding: 8px;
853
+ border-radius: 20px;
854
+ }
855
+
856
+ body.nav-collapsed .floating-nav-head {
857
+ margin-bottom: 0;
858
+ padding: 0;
859
+ justify-content: center;
860
+ }
861
+
862
+ body.nav-collapsed .floating-nav-head > span {
863
+ display: none;
864
+ }
865
+
866
+ body.nav-collapsed .floating-toggle {
867
+ width: 36px;
868
+ min-width: 36px;
869
+ height: 36px;
870
+ }
871
+
872
+ body.nav-collapsed .floating-toggle-icon {
873
+ transform: scaleX(-1);
874
+ }
875
+
876
+ body.nav-collapsed .floating-nav {
877
+ opacity: 0;
878
+ transform: translateY(-6px);
879
+ pointer-events: none;
880
+ height: 0;
881
+ overflow: hidden;
882
+ gap: 0;
883
+ }
884
+
885
+ .floating-link,
886
+ .back-top-button {
887
+ appearance: none;
888
+ width: 100%;
889
+ min-height: 42px;
890
+ border-radius: 16px;
891
+ border: 0;
892
+ cursor: pointer;
893
+ transition: transform 160ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
894
+ }
895
+
896
+ .floating-link {
897
+ padding: 11px 12px;
898
+ background: rgba(15, 23, 42, 0.05);
899
+ color: var(--muted);
900
+ font-size: 12px;
901
+ font-weight: 700;
902
+ line-height: 1;
903
+ white-space: nowrap;
904
+ overflow: hidden;
905
+ text-overflow: ellipsis;
906
+ }
907
+
908
+ .floating-link:hover,
909
+ .back-top-button:hover {
910
+ transform: translateY(-1px);
911
+ }
912
+
913
+ .floating-link.active {
914
+ background: linear-gradient(135deg, rgba(15, 118, 110, 0.16), rgba(11, 91, 86, 0.08));
915
+ color: var(--accent2);
916
+ box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.16);
917
+ }
918
+
919
+ .back-top-button {
920
+ position: fixed;
921
+ left: auto;
922
+ right: max(var(--page-padding), calc((100vw - var(--shell-max-width)) / 2 + (var(--floating-nav-width) - 56px) / 2));
923
+ bottom: 22px;
924
+ z-index: 13;
925
+ width: 56px;
926
+ min-height: 56px;
927
+ padding: 0;
928
+ border-radius: 999px;
929
+ color: var(--strong);
930
+ font-weight: 700;
931
+ font-size: 24px;
932
+ opacity: 0;
933
+ pointer-events: none;
934
+ transition: opacity 180ms ease, transform 180ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
935
+ }
936
+
937
+ .back-top-button.is-visible {
938
+ opacity: 1;
939
+ pointer-events: auto;
940
+ }
941
+
942
+ .back-top-button span {
943
+ transform: translateY(-1px);
944
+ }
945
+
946
+ @media (max-width: 1100px) {
947
+ .hero-grid {
948
+ grid-template-columns: 1fr;
949
+ }
950
+
951
+ .layout {
952
+ grid-template-columns: minmax(0, 1fr);
953
+ }
954
+
955
+ .stack {
956
+ grid-template-columns: 1fr;
957
+ }
958
+ }
959
+
960
+ @media (max-width: 720px) {
961
+ body {
962
+ padding: 16px;
963
+ }
964
+
965
+ .hero {
966
+ padding: 18px;
967
+ }
968
+
969
+ .update-copy {
970
+ display: grid;
971
+ }
972
+
973
+ .card,
974
+ .panel {
975
+ padding: 18px;
976
+ }
977
+
978
+ .field {
979
+ padding: 14px;
980
+ }
981
+
982
+ .shell {
983
+ display: block;
984
+ max-width: var(--shell-max-width);
985
+ }
986
+
987
+ .floating-tools {
988
+ grid-column: auto;
989
+ grid-row: auto;
990
+ position: fixed;
991
+ top: 16px;
992
+ left: auto;
993
+ right: 16px;
994
+ width: var(--floating-nav-collapsed-width);
995
+ }
996
+
997
+ body:not(.nav-collapsed) .floating-tools {
998
+ width: 144px;
999
+ }
1000
+
1001
+ .floating-nav-card {
1002
+ padding: 12px;
1003
+ }
1004
+
1005
+ .floating-nav {
1006
+ grid-template-columns: 1fr;
1007
+ }
1008
+
1009
+ .back-top-button {
1010
+ left: auto;
1011
+ right: 16px;
1012
+ bottom: 16px;
1013
+ }
1014
+
1015
+ .stack {
1016
+ grid-template-columns: 1fr;
1017
+ }
1018
+
1019
+ .path-box-row {
1020
+ grid-template-columns: minmax(0, 1fr) 48px;
1021
+ }
1022
+ }