@memtensor/memos-cloud-openclaw-plugin 0.1.17-beta.0 → 0.1.18-beta.1

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,920 +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
- .hero-actions {
341
- display: grid;
342
- gap: 12px;
343
- }
344
-
345
- .panel {
346
- padding: 18px;
347
- border: 1px solid var(--line);
348
- border-radius: 22px;
349
- background: rgba(255, 255, 255, 0.72);
350
- }
351
-
352
- .panel h2,
353
- .card-head h3 {
354
- margin: 0;
355
- }
356
-
357
- .path-box {
358
- padding: 14px 16px;
359
- border-radius: 18px;
360
- background: rgba(15, 23, 42, 0.04);
361
- border: 1px dashed rgba(15, 23, 42, 0.12);
362
- font-family: "Cascadia Code", "Consolas", monospace;
363
- font-size: 12px;
364
- line-height: 1.7;
365
- word-break: break-all;
366
- }
367
-
368
- .path-box-row {
369
- display: grid;
370
- grid-template-columns: minmax(0, 1fr) auto;
371
- gap: 10px;
372
- align-items: stretch;
373
- margin-top: 14px;
374
- margin-bottom: 18px;
375
- }
376
-
377
- .icon-button {
378
- appearance: none;
379
- width: 48px;
380
- min-height: 48px;
381
- border: 1px solid rgba(15, 23, 42, 0.1);
382
- border-radius: 16px;
383
- background: rgba(255, 255, 255, 0.78);
384
- color: var(--muted);
385
- cursor: pointer;
386
- transition: transform 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease;
387
- }
388
-
389
- .icon-button:hover {
390
- transform: translateY(-1px);
391
- color: var(--strong);
392
- }
393
-
394
- .icon-button:focus {
395
- outline: none;
396
- border-color: rgba(15, 118, 110, 0.34);
397
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
398
- }
399
-
400
- .btn {
401
- appearance: none;
402
- min-height: 48px;
403
- padding: 0 18px;
404
- border: 0;
405
- border-radius: 16px;
406
- cursor: pointer;
407
- transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
408
- }
409
-
410
- .btn:hover {
411
- transform: translateY(-1px);
412
- }
413
-
414
- .btn:disabled {
415
- opacity: 0.58;
416
- cursor: not-allowed;
417
- transform: none;
418
- }
419
-
420
- .btn-primary {
421
- background: linear-gradient(135deg, var(--accent), var(--accent2));
422
- color: white;
423
- box-shadow: 0 14px 30px rgba(15, 118, 110, 0.24);
424
- }
425
-
426
- .btn-secondary {
427
- background: rgba(15, 23, 42, 0.06);
428
- color: var(--strong);
429
- }
430
-
431
- .btn-ghost {
432
- background: transparent;
433
- color: var(--muted);
434
- border: 1px solid rgba(15, 23, 42, 0.1);
435
- }
436
-
437
- .banner {
438
- display: none;
439
- margin: 18px 0 0;
440
- padding: 14px 16px;
441
- border-radius: 18px;
442
- border: 1px solid transparent;
443
- line-height: 1.55;
444
- font-size: 14px;
445
- }
446
-
447
- .banner.show {
448
- display: block;
449
- }
450
-
451
- .banner.info {
452
- background: rgba(15, 118, 110, 0.08);
453
- border-color: rgba(15, 118, 110, 0.18);
454
- }
455
-
456
- .banner.warn {
457
- background: rgba(181, 71, 8, 0.1);
458
- border-color: rgba(181, 71, 8, 0.18);
459
- color: var(--warn);
460
- }
461
-
462
- .banner.error {
463
- background: rgba(180, 35, 24, 0.1);
464
- border-color: rgba(180, 35, 24, 0.18);
465
- color: var(--danger);
466
- }
467
-
468
- .card {
469
- padding: 22px;
470
- border-radius: 22px;
471
- width: 100%;
472
- margin: 0 0 18px;
473
- }
474
-
475
- .card-head {
476
- display: flex;
477
- justify-content: space-between;
478
- gap: 16px;
479
- margin-bottom: 18px;
480
- }
481
-
482
- .card-anchor {
483
- scroll-margin-top: 28px;
484
- }
485
-
486
- .stack {
487
- display: grid;
488
- grid-template-columns: repeat(2, minmax(0, 1fr));
489
- gap: 16px;
490
- align-items: stretch;
491
- }
492
-
493
- .layout .card:last-child {
494
- margin-bottom: 0;
495
- }
496
-
497
- .field {
498
- display: flex;
499
- flex-direction: column;
500
- width: 100%;
501
- margin: 0;
502
- padding: 14px;
503
- border-radius: 18px;
504
- background: rgba(255, 255, 255, 0.75);
505
- border: 1px solid rgba(15, 23, 42, 0.08);
506
- min-height: 180px;
507
- min-width: 0;
508
- break-inside: auto;
509
- }
510
-
511
- .field-head,
512
- .field-tools {
513
- display: flex;
514
- justify-content: space-between;
515
- gap: 16px;
516
- align-items: center;
517
- }
518
-
519
- .field-head {
520
- margin-bottom: 8px;
521
- }
522
-
523
- .field-tools {
524
- margin-top: auto;
525
- padding-top: 6px;
526
- }
527
-
528
- .field-title {
529
- font-weight: 700;
530
- color: var(--strong);
531
- }
532
-
533
- .field-state {
534
- font-size: 12px;
535
- color: var(--muted);
536
- }
537
-
538
- .field-desc {
539
- margin: 0 0 8px;
540
- font-size: 13px;
541
- }
542
-
543
- .control,
544
- .text-area,
545
- .select {
546
- width: 100%;
547
- border: 1px solid rgba(15, 23, 42, 0.1);
548
- background: rgba(248, 250, 252, 0.88);
549
- color: var(--strong);
550
- outline: none;
551
- border-radius: 16px;
552
- padding: 12px 14px;
553
- transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
554
- }
555
-
556
- .control:focus,
557
- .text-area:focus,
558
- .select:focus {
559
- border-color: rgba(15, 118, 110, 0.4);
560
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
561
- background: white;
562
- }
563
-
564
- .text-area {
565
- min-height: 112px;
566
- resize: vertical;
567
- line-height: 1.6;
568
- flex: 1;
569
- }
570
-
571
- .json-font {
572
- font-family: "Cascadia Code", "Consolas", monospace;
573
- font-size: 12px;
574
- }
575
-
576
- .segmented {
577
- display: inline-flex;
578
- width: 100%;
579
- margin-bottom: 8px;
580
- padding: 5px;
581
- gap: 6px;
582
- border-radius: 18px;
583
- background: rgba(15, 23, 42, 0.05);
584
- }
585
-
586
- .segmented button {
587
- flex: 1;
588
- min-height: 38px;
589
- border-radius: 14px;
590
- border: 0;
591
- background: transparent;
592
- color: var(--muted);
593
- cursor: pointer;
594
- }
595
-
596
- .segmented button.active {
597
- background: white;
598
- color: var(--strong);
599
- box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
600
- }
601
-
602
- .inline-btn {
603
- appearance: none;
604
- min-height: 32px;
605
- padding: 0 12px;
606
- border: 0;
607
- background: rgba(15, 23, 42, 0.05);
608
- color: var(--muted);
609
- cursor: pointer;
610
- }
611
-
612
- .error {
613
- color: var(--danger);
614
- font-size: 12px;
615
- line-height: 1.55;
616
- }
617
-
618
- .helper {
619
- font-size: 12px;
620
- line-height: 1.45;
621
- }
622
-
623
- .overlay {
624
- position: fixed;
625
- inset: 0;
626
- display: none;
627
- align-items: center;
628
- justify-content: center;
629
- padding: 24px;
630
- background: rgba(15, 23, 42, 0.28);
631
- backdrop-filter: blur(6px);
632
- z-index: 20;
633
- }
634
-
635
- .overlay.show {
636
- display: flex;
637
- }
638
-
639
- .overlay-card {
640
- width: min(520px, 100%);
641
- padding: 24px;
642
- border-radius: 24px;
643
- background: rgba(255, 255, 255, 0.96);
644
- box-shadow: 0 28px 80px rgba(15, 23, 42, 0.18);
645
- }
646
-
647
- .overlay-card h4 {
648
- margin: 0 0 10px;
649
- font-size: 22px;
650
- }
651
-
652
- .overlay-card p {
653
- margin: 0;
654
- color: var(--muted);
655
- line-height: 1.7;
656
- }
657
-
658
- .overlay-actions {
659
- margin-top: 18px;
660
- display: flex;
661
- justify-content: center;
662
- }
663
-
664
- .overlay-refresh-button {
665
- width: 52px;
666
- min-height: 52px;
667
- border-radius: 18px;
668
- }
669
-
670
- .floating-tools {
671
- grid-column: 2;
672
- grid-row: 1 / span 2;
673
- position: sticky;
674
- top: var(--page-padding);
675
- z-index: 12;
676
- width: var(--floating-nav-width);
677
- opacity: 1;
678
- pointer-events: auto;
679
- transition: transform 180ms ease;
680
- }
681
-
682
- .floating-nav-card,
683
- .back-top-button {
684
- border: 1px solid rgba(15, 23, 42, 0.1);
685
- background: rgba(255, 252, 245, 0.88);
686
- box-shadow: 0 22px 44px rgba(15, 23, 42, 0.12);
687
- backdrop-filter: blur(16px);
688
- }
689
-
690
- .floating-nav-card {
691
- padding: 10px;
692
- border-radius: 24px;
693
- overflow: hidden;
694
- transition: padding 160ms ease, border-radius 160ms ease, box-shadow 160ms ease;
695
- }
696
-
697
- .floating-nav-head {
698
- margin-bottom: 10px;
699
- padding: 0 4px;
700
- color: var(--muted);
701
- font-size: 12px;
702
- font-weight: 700;
703
- display: flex;
704
- align-items: center;
705
- justify-content: space-between;
706
- gap: 8px;
707
- }
708
-
709
- .floating-nav {
710
- display: grid;
711
- gap: 8px;
712
- transition: opacity 140ms ease, transform 140ms ease;
713
- }
714
-
715
- .floating-toggle {
716
- appearance: none;
717
- display: inline-flex;
718
- align-items: center;
719
- justify-content: center;
720
- width: 28px;
721
- min-width: 28px;
722
- height: 28px;
723
- padding: 0;
724
- border: 0;
725
- border-radius: 999px;
726
- background: rgba(15, 23, 42, 0.06);
727
- color: var(--muted);
728
- cursor: pointer;
729
- transition: transform 160ms ease, background 160ms ease, color 160ms ease;
730
- }
731
-
732
- .floating-toggle:hover {
733
- background: rgba(15, 118, 110, 0.12);
734
- color: var(--accent2);
735
- transform: translateY(-1px);
736
- }
737
-
738
- .floating-toggle:focus {
739
- outline: none;
740
- box-shadow: 0 0 0 4px rgba(15, 118, 110, 0.12);
741
- }
742
-
743
- .floating-toggle-icon {
744
- font-size: 14px;
745
- line-height: 1;
746
- transition: transform 160ms ease;
747
- }
748
-
749
- body.nav-collapsed .floating-tools {
750
- width: var(--floating-nav-collapsed-width);
751
- }
752
-
753
- body.nav-collapsed .floating-nav-card {
754
- padding: 8px;
755
- border-radius: 20px;
756
- }
757
-
758
- body.nav-collapsed .floating-nav-head {
759
- margin-bottom: 0;
760
- padding: 0;
761
- justify-content: center;
762
- }
763
-
764
- body.nav-collapsed .floating-nav-head > span {
765
- display: none;
766
- }
767
-
768
- body.nav-collapsed .floating-toggle {
769
- width: 36px;
770
- min-width: 36px;
771
- height: 36px;
772
- }
773
-
774
- body.nav-collapsed .floating-toggle-icon {
775
- transform: scaleX(-1);
776
- }
777
-
778
- body.nav-collapsed .floating-nav {
779
- opacity: 0;
780
- transform: translateY(-6px);
781
- pointer-events: none;
782
- height: 0;
783
- overflow: hidden;
784
- gap: 0;
785
- }
786
-
787
- .floating-link,
788
- .back-top-button {
789
- appearance: none;
790
- width: 100%;
791
- min-height: 42px;
792
- border-radius: 16px;
793
- border: 0;
794
- cursor: pointer;
795
- transition: transform 160ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
796
- }
797
-
798
- .floating-link {
799
- padding: 11px 12px;
800
- background: rgba(15, 23, 42, 0.05);
801
- color: var(--muted);
802
- font-size: 12px;
803
- font-weight: 700;
804
- line-height: 1;
805
- white-space: nowrap;
806
- overflow: hidden;
807
- text-overflow: ellipsis;
808
- }
809
-
810
- .floating-link:hover,
811
- .back-top-button:hover {
812
- transform: translateY(-1px);
813
- }
814
-
815
- .floating-link.active {
816
- background: linear-gradient(135deg, rgba(15, 118, 110, 0.16), rgba(11, 91, 86, 0.08));
817
- color: var(--accent2);
818
- box-shadow: inset 0 0 0 1px rgba(15, 118, 110, 0.16);
819
- }
820
-
821
- .back-top-button {
822
- position: fixed;
823
- left: auto;
824
- right: max(var(--page-padding), calc((100vw - var(--shell-max-width)) / 2 + (var(--floating-nav-width) - 56px) / 2));
825
- bottom: 22px;
826
- z-index: 13;
827
- width: 56px;
828
- min-height: 56px;
829
- padding: 0;
830
- border-radius: 999px;
831
- color: var(--strong);
832
- font-weight: 700;
833
- font-size: 24px;
834
- opacity: 0;
835
- pointer-events: none;
836
- transition: opacity 180ms ease, transform 180ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease;
837
- }
838
-
839
- .back-top-button.is-visible {
840
- opacity: 1;
841
- pointer-events: auto;
842
- }
843
-
844
- .back-top-button span {
845
- transform: translateY(-1px);
846
- }
847
-
848
- @media (max-width: 1100px) {
849
- .hero-grid {
850
- grid-template-columns: 1fr;
851
- }
852
-
853
- .layout {
854
- grid-template-columns: minmax(0, 1fr);
855
- }
856
-
857
- .stack {
858
- grid-template-columns: 1fr;
859
- }
860
- }
861
-
862
- @media (max-width: 720px) {
863
- body {
864
- padding: 16px;
865
- }
866
-
867
- .hero {
868
- padding: 18px;
869
- }
870
-
871
- .card,
872
- .panel {
873
- padding: 18px;
874
- }
875
-
876
- .field {
877
- padding: 14px;
878
- }
879
-
880
- .shell {
881
- display: block;
882
- max-width: var(--shell-max-width);
883
- }
884
-
885
- .floating-tools {
886
- grid-column: auto;
887
- grid-row: auto;
888
- position: fixed;
889
- top: 16px;
890
- left: auto;
891
- right: 16px;
892
- width: var(--floating-nav-collapsed-width);
893
- }
894
-
895
- body:not(.nav-collapsed) .floating-tools {
896
- width: 144px;
897
- }
898
-
899
- .floating-nav-card {
900
- padding: 12px;
901
- }
902
-
903
- .floating-nav {
904
- grid-template-columns: 1fr;
905
- }
906
-
907
- .back-top-button {
908
- left: auto;
909
- right: 16px;
910
- bottom: 16px;
911
- }
912
-
913
- .stack {
914
- grid-template-columns: 1fr;
915
- }
916
-
917
- .path-box-row {
918
- grid-template-columns: minmax(0, 1fr) 48px;
919
- }
920
- }
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
+ }