|
72 | 72 | -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; } |
73 | 73 | header { display:flex; align-items:baseline; gap:14px; margin-bottom:14px; flex-wrap:wrap; } |
74 | 74 | .mark { color:var(--phos); font-family:var(--mono); font-weight:700; |
75 | | - font-size:var(--fs-title); letter-spacing:.04em; } |
| 75 | + font-size:26px; letter-spacing:.03em; display:flex; align-items:center; gap:9px; } |
76 | 76 | .tag { color:var(--dim); font-size:var(--fs-small); font-weight:400; letter-spacing:.01em; } |
77 | 77 | .row { display:flex; gap:12px; align-items:flex-start; margin-bottom:14px; flex-wrap:wrap; } |
78 | 78 | .pills { display:flex; gap:8px; flex-wrap:wrap; } |
|
83 | 83 | .pill.on { border-color:var(--phos); color:var(--phos); font-weight:600; } |
84 | 84 | .led { width:8px; height:8px; border-radius:50%; background:var(--phos); box-shadow:0 0 6px var(--phos); } |
85 | 85 | .led.bad { background:var(--alert); box-shadow:0 0 6px var(--alert); } |
| 86 | + /* Brand dot: alternates the two colours already used for host status (green = |
| 87 | + healthy, red = down), so the same signal that reads "up/down" on a target row |
| 88 | + reads "alive" at the letterhead — a small mnemonic, not a new colour language. */ |
| 89 | + .brand-led { width:11px; height:11px; border-radius:50%; flex:none; |
| 90 | + animation: brand-blink 2.4s ease-in-out infinite; } |
| 91 | + @keyframes brand-blink { |
| 92 | + 0%, 45% { background:var(--phos); box-shadow:0 0 8px var(--phos); } |
| 93 | + 50%, 95% { background:var(--alert); box-shadow:0 0 8px var(--alert); } |
| 94 | + 100% { background:var(--phos); box-shadow:0 0 8px var(--phos); } |
| 95 | + } |
| 96 | + @media (prefers-reduced-motion: reduce) { .brand-led { animation:none; background:var(--phos); } } |
86 | 97 | .rng { display:flex; background:var(--panel); border:1px solid var(--line); border-radius:4px; overflow:hidden; } |
87 | 98 | .rng span { color:var(--dim); font-family:var(--sans); font-size:var(--fs-micro); |
88 | 99 | font-weight:600; padding:9px 10px 0 12px; letter-spacing:.14em; } |
|
130 | 141 | </head> |
131 | 142 | <body> |
132 | 143 | <header> |
133 | | - <div class="mark">pingping ●</div> |
134 | | - <div class="tag">One binary. One graph. Zero guesswork.</div> |
| 144 | + <div class="mark">pingping <span class="brand-led"></span></div> |
| 145 | + <div class="tag">One binary. One graph. One metric: Latency.</div> |
135 | 146 | <button class="pill" id="themeBtn" title="switch theme" style="margin-left:auto">◐ <span id="themeName">dark</span></button> |
136 | 147 | </header> |
137 | 148 |
|
|
187 | 198 | <div class="promo-h">LIKE PINGPING? <span id="ver" style="color:var(--phos)"></span></div> |
188 | 199 | <div class="promo-b"> |
189 | 200 | <a href="https://github.com/githubflyideas/pingping" target="_blank" rel="noopener">★ Star on GitHub</a> |
| 201 | + <a href="https://github.com/githubflyideas/fogping" target="_blank" rel="noopener">Powered by Fogping</a> |
190 | 202 | <span class="share-links" id="shareLinks"></span> |
191 | 203 | </div> |
192 | 204 | </div> |
|
413 | 425 |
|
414 | 426 | (function buildShare() { |
415 | 427 | const url = 'https://github.com/githubflyideas/pingping'; |
416 | | - const text = 'pingping — a single-binary link quality oscilloscope. One binary. One graph. Zero guesswork.'; |
| 428 | + const text = 'pingping — a single-binary link quality oscilloscope. One binary. One graph. One metric: Latency.'; |
417 | 429 | const links = { |
418 | 430 | X: `https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, |
419 | 431 | Facebook: `https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, |
|
0 commit comments