diff --git a/static/index.html b/static/index.html index af40e42..e297829 100644 --- a/static/index.html +++ b/static/index.html @@ -18,8 +18,8 @@ /* Signal — cyan trace over a cloud that burns from white-gold to cold ember. */ :root { - --bg:#14161a; --panel:#1c2027; --screen:#0d0f13; --line:#2b323c; - --phos:#22d3ee; --amber:#fbbf24; --alert:#fb3b53; --ink:#c0c6ce; --dim:#78848f; + --bg:#14161a; --panel:#1c2027; --screen:#0d0f13; --line:#2b323c; --ctl:#676d76; + --phos:#22d3ee; --amber:#fbbf24; --alert:#fb3b53; --ink:#c0c6ce; --dim:#7e8a94; --grid-axis:#333b47; --grid-split:#1c222a; /* Compare (dashed) line. Dark themes reuse --dim (>=4.5:1 on --screen); the light themes' --dim is only ~3.5:1, so each gets a darker grey of its own. */ @@ -39,8 +39,8 @@ /* Daylight — ink on lab paper. Core burns terracotta, edges cool to slate. */ html[data-theme="daylight"] { - --bg:#f2efe6; --panel:#fbf9f3; --screen:#fffdf7; --line:#ddd6c4; - --phos:#1d4ed8; --amber:#b45309; --alert:#be123c; --ink:#3e4346; --dim:#8a8677; + --bg:#f2efe6; --panel:#fbf9f3; --screen:#fffdf7; --line:#ddd6c4; --ctl:#878780; + --phos:#1d4ed8; --amber:#954407; --alert:#be123c; --ink:#3e4346; --dim:#6f6b5f; --grid-axis:#cdc6b2; --grid-split:#e9e3d3; --cmp:#6b6656; --smoke:rgba(180,83,9,.22); --lossbar:rgba(190,18,60,.6); --glow:0; --smoke-hot:#e07a3a; --smoke-mid:#e8a878; --smoke-cool:#cfc8b8; @@ -49,8 +49,8 @@ /* Arctic — near-black trace. Cloud runs from deep sea to pale frost. */ html[data-theme="arctic"] { - --bg:#eaeff4; --panel:#f7fafc; --screen:#fdfeff; --line:#d3dce5; - --phos:#0f172a; --amber:#0369a1; --alert:#dc2626; --ink:#3a4353; --dim:#7d8b99; + --bg:#eaeff4; --panel:#f7fafc; --screen:#fdfeff; --line:#d3dce5; --ctl:#7d8693; + --phos:#0f172a; --amber:#036093; --alert:#d02222; --ink:#3a4353; --dim:#5f6c79; --grid-axis:#c2cdd8; --grid-split:#e2e9f0; --cmp:#5b6878; --smoke:rgba(56,132,199,.22); --lossbar:rgba(220,38,38,.55); --glow:0; --smoke-hot:#4a9fd4; --smoke-mid:#8dc0e0; --smoke-cool:#cfe0ec; @@ -59,8 +59,8 @@ /* Budapest — Anderson's plum and rose. Core is deep raspberry, edges go powder. */ html[data-theme="budapest"] { - --bg:#f7ebe8; --panel:#fdf5f2; --screen:#fffaf8; --line:#e6cfc8; - --phos:#5b2a4f; --amber:#c9754f; --alert:#c1362f; --ink:#4c3d41; --dim:#9c8087; + --bg:#f7ebe8; --panel:#fdf5f2; --screen:#fffaf8; --line:#e6cfc8; --ctl:#948280; + --phos:#5b2a4f; --amber:#8d492c; --alert:#c1362f; --ink:#4c3d41; --dim:#7f636a; --grid-axis:#dcc0b8; --grid-split:#f0e0da; --cmp:#7d5f66; --smoke:rgba(216,133,140,.26); --lossbar:rgba(193,54,47,.55); --glow:0; --smoke-hot:#e0748c; --smoke-mid:#eaa8ae; --smoke-cool:#f0dbd2; @@ -71,8 +71,8 @@ white-hot core, amber body, dying green at the fringe, exactly how a long persistence tube fades. The trace stays a cooler gold so it sits above it. */ html[data-theme="amber"] { - --bg:#12100a; --panel:#1c1810; --screen:#0a0806; --line:#38301c; - --phos:#ffd75e; --amber:#ffd98a; --alert:#ff5f2e; --ink:#cebd95; --dim:#8f7b4e; + --bg:#12100a; --panel:#1c1810; --screen:#0a0806; --line:#38301c; --ctl:#71664a; + --phos:#ffd75e; --amber:#ffd98a; --alert:#ff5f2e; --ink:#cebd95; --dim:#958051; --grid-axis:#443a20; --grid-split:#1e1a10; --cmp:#8f7b4e; --smoke:rgba(255,176,0,.20); --lossbar:rgba(255,95,46,.65); --glow:7; --smoke-hot:#a86a10; --smoke-mid:#7d4508; --smoke-cool:#2f4429; @@ -171,7 +171,7 @@ .tgt .lnk.del { color:var(--alert); } .tgt form { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:12px; } .tgt input, .tgt select { font-family:var(--mono); font-size:var(--fs-small); color:var(--ink); - background:var(--screen); border:1px solid var(--line); border-radius:4px; padding:6px 8px; } + background:var(--screen); border:1px solid var(--ctl); border-radius:4px; padding:6px 8px; } .tgt input:focus, .tgt select:focus { outline:none; border-color:var(--phos); } #tgtErr { color:var(--alert); font-size:var(--fs-small); } /* Export / import of the target list (netping-targets file). */ @@ -194,11 +194,28 @@ .ie-prev td.why { color:var(--dim); font-size:var(--fs-small); } .ie-prev .btns { display:flex; gap:8px; } .ie-prev button:disabled { opacity:.5; cursor:default; } + /* Accessibility. --ctl is the border of a form control: --line is a hairline + between panels (decoration), but a text field is only recognisable by its edge, + which WCAG 1.4.11 wants at 3:1. Focus rings use the accent for the same reason. */ + :focus-visible { outline:2px solid var(--phos); outline-offset:2px; } + .skip { position:absolute; left:12px; top:-60px; z-index:20; background:var(--panel); color:var(--phos); + border:2px solid var(--phos); border-radius:6px; padding:8px 14px; font-weight:600; text-decoration:none; } + .skip:focus { top:12px; } + .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; + clip:rect(0 0 0 0); white-space:nowrap; border:0; } + h1.mark { margin:0; } + #main:focus { outline:none; } + .rng { flex-wrap:wrap; max-width:100%; } + .rng.cmp, .rng.custom { border-color:var(--ctl); } + .rng.custom input { min-width:0; max-width:100%; } + .promo-b a, .share a, .tgt .lnk { display:inline-flex; align-items:center; min-height:24px; } + .promo-b > span { flex-wrap:wrap; max-width:100%; } +
-
fogping
+

fogping

One binary. One graph. One metric: Latency.
@@ -207,6 +224,7 @@
+
- -
- -
-
+ + +
+

Latency and packet loss

+
+
+

+ + +
Chart data, oldest first
TimeMedian RTT (ms)Worst loss (%)Bursts
+
–
P50 MS
–
P90 MS
@@ -285,13 +317,16 @@
+ - → + +
- + +