@swimmingliu/autovpn 2.2.4 → 2.3.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.
|
@@ -20,6 +20,21 @@
|
|
|
20
20
|
--danger-soft: #ffedf0;
|
|
21
21
|
--shadow: 0 2px 8px rgb(25 30 55 / 3%);
|
|
22
22
|
--scroll-thumb: #a1a7b9;
|
|
23
|
+
/* Analytics series. Four hues plus the brand indigo, in fixed order, then a
|
|
24
|
+
neutral tail that folds every country past the fifth. Every slot clears
|
|
25
|
+
3:1 against #fff; the ring's adjacent pairs clear the colour-vision gates
|
|
26
|
+
(worst CVD ΔE 9.8 protan, worst normal-vision ΔE 15.1). Amber is darkened
|
|
27
|
+
from the brand accent so it clears 3:1, and 其他 is a muted slate rather
|
|
28
|
+
than a true grey: mid greys collapse onto the teal and pink hues under
|
|
29
|
+
protan/deutan simulation, and the tail is often the largest arc. Keep the
|
|
30
|
+
slot order unchanged - it is the mechanism, not decoration. */
|
|
31
|
+
--chart-1: #5b5ce2;
|
|
32
|
+
--chart-2: #12a594;
|
|
33
|
+
--chart-3: #3d7fc4;
|
|
34
|
+
--chart-4: #c94f8a;
|
|
35
|
+
--chart-5: #c47a12;
|
|
36
|
+
--chart-other: #72788a;
|
|
37
|
+
--chart-source: #5b5ce2;
|
|
23
38
|
}
|
|
24
39
|
:root[data-theme="dark"] {
|
|
25
40
|
color-scheme: dark;
|
|
@@ -42,6 +57,16 @@
|
|
|
42
57
|
--danger-soft: #402936;
|
|
43
58
|
--shadow: none;
|
|
44
59
|
--scroll-thumb: #667089;
|
|
60
|
+
/* Same hues and slot order stepped for the dark card surface, re-validated
|
|
61
|
+
against #1b1e29: every slot clears 3:1 and the ring's adjacent pairs clear
|
|
62
|
+
the CVD gates (worst ΔE 12.4 deutan, worst normal-vision ΔE 15.4). */
|
|
63
|
+
--chart-1: #7f7cf0;
|
|
64
|
+
--chart-2: #1fa98c;
|
|
65
|
+
--chart-3: #4b93de;
|
|
66
|
+
--chart-4: #d55181;
|
|
67
|
+
--chart-5: #c88217;
|
|
68
|
+
--chart-other: #868a94;
|
|
69
|
+
--chart-source: #7f7cf0;
|
|
45
70
|
}
|
|
46
71
|
body { background: var(--bg); font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; font-size: 14px; }
|
|
47
72
|
button { color: inherit; }
|
|
@@ -353,7 +378,9 @@ body[data-page="logs"] #logsWorkspace > .panel { grid-template-rows: auto minmax
|
|
|
353
378
|
@media (max-width: 720px) {
|
|
354
379
|
.distribution-layout { grid-template-columns: minmax(0, 1fr); gap: 16px; justify-items: center; }
|
|
355
380
|
.distribution-plot { max-width: 156px; }
|
|
381
|
+
.distribution-legend { width: 100%; justify-items: center; }
|
|
356
382
|
.distribution-chips { justify-content: center; }
|
|
383
|
+
.distribution-footnote, .footnote-entries { justify-content: center; }
|
|
357
384
|
.ring-value { font-size: 26px; }
|
|
358
385
|
.analytics-distribution [data-donut-legend] { padding-inline: 6px; }
|
|
359
386
|
.account-pool-table-wrap { max-height: none; }
|
|
@@ -416,12 +443,38 @@ body[data-page="logs"] #logsWorkspace > .panel { grid-template-rows: auto minmax
|
|
|
416
443
|
@media (prefers-reduced-motion: reduce) {
|
|
417
444
|
*, *::before, *::after { transition: none !important; scroll-behavior: auto !important; }
|
|
418
445
|
}
|
|
419
|
-
/*
|
|
420
|
-
|
|
421
|
-
.
|
|
422
|
-
.
|
|
423
|
-
|
|
424
|
-
|
|
446
|
+
/* Accelerator meters: one aligned row per source, so names, bars and figures
|
|
447
|
+
share columns instead of spreading four chips across a full-width bar. */
|
|
448
|
+
.source-meters { display: grid; gap: 4px; }
|
|
449
|
+
.source-row { display: grid; grid-template-columns: 68px minmax(0, 1fr) 60px 44px; align-items: center; gap: 14px; min-height: 30px; }
|
|
450
|
+
/* Source ids are user-supplied (a custom URL source keeps its own name), so
|
|
451
|
+
the label column clips instead of painting over the meter. */
|
|
452
|
+
.source-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; }
|
|
453
|
+
.source-track { position: relative; display: block; height: 10px; border-radius: 999px; background: var(--surface-muted); overflow: hidden; }
|
|
454
|
+
/* The fill lightens toward its left end in both themes: a darker start would
|
|
455
|
+
fade into the track and make a long bar read short. */
|
|
456
|
+
.source-fill { position: absolute; inset-block: 0; left: 0; border-radius: inherit; background: linear-gradient(90deg, color-mix(in srgb, var(--chart-source) 82%, #fff) 0%, var(--chart-source) 100%); transform-origin: left center; }
|
|
457
|
+
.source-value { font-size: 13.5px; font-weight: 750; font-variant-numeric: tabular-nums; text-align: right; }
|
|
458
|
+
.source-share { font-size: 12px; color: var(--text-soft); font-variant-numeric: tabular-nums; text-align: right; }
|
|
459
|
+
@media (max-width: 720px) {
|
|
460
|
+
.source-row { grid-template-columns: 56px minmax(0, 1fr) 48px 38px; gap: 10px; }
|
|
461
|
+
}
|
|
462
|
+
/* Countries past the fifth fold into one neutral slice; the footnote keeps
|
|
463
|
+
every folded name and count readable instead of hiding them in a tooltip.
|
|
464
|
+
Each code is its own unbreakable chip so a line never splits "KR 1". */
|
|
465
|
+
.distribution-legend { display: grid; gap: 10px; align-content: center; min-width: 0; }
|
|
466
|
+
.distribution-footnote { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; color: var(--text-soft); font-size: 11.5px; line-height: 1.5; }
|
|
467
|
+
.footnote-lead { color: var(--text-soft); }
|
|
468
|
+
.footnote-entries { display: flex; flex-wrap: wrap; gap: 4px 10px; }
|
|
469
|
+
.footnote-entry { white-space: nowrap; font-variant-numeric: tabular-nums; }
|
|
470
|
+
/* Forced colors drops every custom background, so the meter and the ring's
|
|
471
|
+
chips would lose their only value/length channel. Paint them with system
|
|
472
|
+
colors instead: ButtonText on Canvas keeps bar length readable. */
|
|
473
|
+
@media (forced-colors: active) {
|
|
474
|
+
.source-track { border: 1px solid ButtonText; background: Canvas; }
|
|
475
|
+
.source-fill { background: ButtonText; }
|
|
476
|
+
.distribution-dot { border: 1px solid ButtonText; background: ButtonText !important; }
|
|
477
|
+
}
|
|
425
478
|
.calendar-stats { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
|
|
426
479
|
.calendar-stat { display: inline-flex; align-items: baseline; gap: 5px; padding: 5px 11px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface-soft); font-size: 12px; color: var(--text-soft); }
|
|
427
480
|
.calendar-stat strong { color: var(--text); font-size: 14px; font-weight: 750; font-variant-numeric: tabular-nums; }
|