Switch app font to JetBrains Mono

This commit is contained in:
Smittix
2026-02-04 01:10:42 +00:00
parent 50227ccae6
commit 07d6ef984e
24 changed files with 989 additions and 1010 deletions
+2 -2
View File
@@ -25,7 +25,7 @@
} }
body { body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; font-family: var(--font-sans);
background: var(--bg-dark); background: var(--bg-dark);
color: var(--text-primary); color: var(--text-primary);
min-height: 100vh; min-height: 100vh;
@@ -94,7 +94,7 @@ body {
} }
.logo { .logo {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
letter-spacing: 2px; letter-spacing: 2px;
+1 -1
View File
@@ -20,7 +20,7 @@
} }
body { body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; font-family: var(--font-sans);
background: var(--bg-dark); background: var(--bg-dark);
color: var(--text-primary); color: var(--text-primary);
min-height: 100vh; min-height: 100vh;
+6 -6
View File
@@ -28,7 +28,7 @@
} }
body { body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; font-family: var(--font-sans);
background: var(--bg-dark); background: var(--bg-dark);
color: var(--text-primary); color: var(--text-primary);
min-height: 100vh; min-height: 100vh;
@@ -97,7 +97,7 @@ body {
} }
.logo { .logo {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
letter-spacing: 2px; letter-spacing: 2px;
@@ -438,7 +438,7 @@ body {
padding: 10px 15px; padding: 10px 15px;
background: rgba(74, 158, 255, 0.05); background: rgba(74, 158, 255, 0.05);
border-bottom: 1px solid rgba(74, 158, 255, 0.1); border-bottom: 1px solid rgba(74, 158, 255, 0.1);
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
letter-spacing: 2px; letter-spacing: 2px;
@@ -510,7 +510,7 @@ body {
} }
.vessel-name { .vessel-name {
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -604,7 +604,7 @@ body {
} }
.vessel-item-name { .vessel-item-name {
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -1148,7 +1148,7 @@ body {
} }
.dsc-distress-alert .dsc-alert-header { .dsc-distress-alert .dsc-alert-header {
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 24px; font-size: 24px;
font-weight: 700; font-weight: 700;
color: var(--accent-red); color: var(--accent-red);
+4 -4
View File
@@ -53,7 +53,7 @@
} }
.device-name { .device-name {
font-family: 'Inter', -apple-system, sans-serif; font-family: var(--font-sans);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
@@ -221,7 +221,7 @@
} }
.device-range-band .range-label { .device-range-band .range-label {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
color: var(--range-color); color: var(--range-color);
@@ -262,7 +262,7 @@
} }
.device-manufacturer .mfr-name { .device-manufacturer .mfr-name {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
} }
/* ============================================ /* ============================================
@@ -426,7 +426,7 @@
} }
.message-card-title { .message-card-title {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 13px; font-size: 13px;
font-weight: 600; font-weight: 600;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
+2 -2
View File
@@ -107,7 +107,7 @@
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
gap: 5px; gap: 5px;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
padding: 5px 10px; padding: 5px 10px;
@@ -864,7 +864,7 @@
.signal-search-input { .signal-search-input {
width: 100%; width: 100%;
padding: 6px 10px; padding: 6px 10px;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
color: var(--text-primary); color: var(--text-primary);
background: var(--bg-card); background: var(--bg-card);
+2 -2
View File
@@ -73,8 +73,8 @@
/* ============================================ /* ============================================
TYPOGRAPHY TYPOGRAPHY
============================================ */ ============================================ */
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-sans: 'JetBrains Mono', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
--font-mono: 'Terminus', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; --font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
/* Font sizes */ /* Font sizes */
--text-xs: 10px; --text-xs: 10px;
-9
View File
@@ -65,12 +65,3 @@
font-display: swap; font-display: swap;
src: url('/static/vendor/fonts/JetBrainsMono-Bold.woff2') format('woff2'); src: url('/static/vendor/fonts/JetBrainsMono-Bold.woff2') format('woff2');
} }
/* Terminus - Monospace UI font */
@font-face {
font-family: 'Terminus';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
}
+3 -3
View File
@@ -69,7 +69,7 @@
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 6px; border-radius: 6px;
color: var(--text-secondary, #b7c1cf); color: var(--text-secondary, #b7c1cf);
font-family: 'Space Grotesk', 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
cursor: pointer; cursor: pointer;
@@ -116,7 +116,7 @@
border: 1px solid var(--border-light, #2b3645); border: 1px solid var(--border-light, #2b3645);
border-radius: 6px; border-radius: 6px;
color: var(--text-primary, #e7ebf2); color: var(--text-primary, #e7ebf2);
font-family: 'Space Grotesk', 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
text-decoration: none; text-decoration: none;
@@ -152,7 +152,7 @@
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 6px; border-radius: 6px;
color: var(--text-secondary, #b7c1cf); color: var(--text-secondary, #b7c1cf);
font-family: 'Space Grotesk', 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
cursor: pointer; cursor: pointer;
+15 -25
View File
@@ -1,13 +1,3 @@
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
@font-face {
font-family: 'Terminus';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
}
* { * {
box-sizing: border-box; box-sizing: border-box;
margin: 0; margin: 0;
@@ -81,7 +71,7 @@
} }
body { body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-family: var(--font-sans);
background: var(--bg-primary); background: var(--bg-primary);
color: var(--text-primary); color: var(--text-primary);
min-height: 100vh; min-height: 100vh;
@@ -348,7 +338,7 @@ body {
} }
.changelog-date { .changelog-date {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 0.7rem; font-size: 0.7rem;
color: var(--text-dim); color: var(--text-dim);
} }
@@ -360,7 +350,7 @@ body {
} }
.changelog-list li { .changelog-list li {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 0.75rem; font-size: 0.75rem;
color: var(--text-secondary); color: var(--text-secondary);
margin-bottom: 6px; margin-bottom: 6px;
@@ -452,7 +442,7 @@ body {
} }
.mode-card .mode-desc { .mode-card .mode-desc {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 0.65rem; font-size: 0.65rem;
color: var(--text-dim); color: var(--text-dim);
margin-top: 4px; margin-top: 4px;
@@ -525,7 +515,7 @@ body {
} }
.welcome-footer p { .welcome-footer p {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 0.7rem; font-size: 0.7rem;
color: var(--text-dim); color: var(--text-dim);
letter-spacing: 0.1em; letter-spacing: 0.1em;
@@ -739,7 +729,7 @@ header h1 {
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 4px; border-radius: 4px;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
cursor: pointer; cursor: pointer;
@@ -786,7 +776,7 @@ header h1 {
border: 1px solid var(--accent-cyan); border: 1px solid var(--accent-cyan);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
text-decoration: none; text-decoration: none;
@@ -822,7 +812,7 @@ header h1 {
border: 1px solid transparent; border: 1px solid transparent;
border-radius: 4px; border-radius: 4px;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
cursor: pointer; cursor: pointer;
@@ -1665,7 +1655,7 @@ header h1 .tagline {
background: var(--accent-green); background: var(--accent-green);
border: none; border: none;
color: #fff; color: #fff;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -1702,7 +1692,7 @@ header h1 .tagline {
background: var(--accent-red); background: var(--accent-red);
border: none; border: none;
color: #fff; color: #fff;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -2097,7 +2087,7 @@ header h1 .tagline {
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 1px; letter-spacing: 1px;
transition: all 0.2s ease; transition: all 0.2s ease;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
} }
.control-btn:hover { .control-btn:hover {
@@ -2512,7 +2502,7 @@ header h1 .tagline {
border-radius: 4px; border-radius: 4px;
color: var(--text-secondary); color: var(--text-secondary);
cursor: pointer; cursor: pointer;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 11px; font-size: 11px;
text-transform: uppercase; text-transform: uppercase;
transition: all 0.2s ease; transition: all 0.2s ease;
@@ -4892,7 +4882,7 @@ body::before {
color: #000; color: #000;
border: none; border: none;
padding: 12px 40px; padding: 12px 40px;
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
letter-spacing: 2px; letter-spacing: 2px;
@@ -6027,7 +6017,7 @@ body::before {
} }
.module-header { .module-header {
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -6194,7 +6184,7 @@ body::before {
/* Listening Mode Selector Buttons */ /* Listening Mode Selector Buttons */
.radio-mode-btn { .radio-mode-btn {
padding: 12px 24px; padding: 12px 24px;
font-family: 'Orbitron', 'Terminus', monospace; font-family: 'Orbitron', 'JetBrains Mono', monospace;
font-size: 13px; font-size: 13px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
-9
View File
@@ -3,15 +3,6 @@
Shared responsive foundation for all pages Shared responsive foundation for all pages
============================================ */ ============================================ */
/* Terminus - bundled monospace */
@font-face {
font-family: 'Terminus';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('/static/vendor/fonts/Terminus.ttf') format('truetype');
}
/* ============== CSS VARIABLES ============== */ /* ============== CSS VARIABLES ============== */
:root { :root {
/* Touch targets */ /* Touch targets */
+2 -2
View File
@@ -23,7 +23,7 @@
} }
body { body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; font-family: var(--font-sans);
background: var(--bg-dark); background: var(--bg-dark);
color: var(--text-primary); color: var(--text-primary);
min-height: 100vh; min-height: 100vh;
@@ -93,7 +93,7 @@ body {
} }
.logo { .logo {
font-family: 'Inter', sans-serif; font-family: var(--font-sans);
font-size: 20px; font-size: 20px;
font-weight: 700; font-weight: 700;
letter-spacing: 3px; letter-spacing: 3px;
+2 -2
View File
@@ -373,7 +373,7 @@ function showInfo(text) {
const infoEl = document.createElement('div'); const infoEl = document.createElement('div');
infoEl.className = 'info-msg'; infoEl.className = 'info-msg';
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "Terminus", monospace; font-size: 11px; color: #888; word-break: break-all;'; infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #888; word-break: break-all;';
infoEl.textContent = text; infoEl.textContent = text;
output.insertBefore(infoEl, output.firstChild); output.insertBefore(infoEl, output.firstChild);
} }
@@ -387,7 +387,7 @@ function showError(text) {
const errorEl = document.createElement('div'); const errorEl = document.createElement('div');
errorEl.className = 'error-msg'; errorEl.className = 'error-msg';
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "Terminus", monospace; font-size: 11px; color: #ff6688; word-break: break-all;'; errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
errorEl.textContent = '⚠ ' + text; errorEl.textContent = '⚠ ' + text;
output.insertBefore(errorEl, output.firstChild); output.insertBefore(errorEl, output.firstChild);
} }
+2 -2
View File
@@ -813,11 +813,11 @@ function renderUpdateStatus(data) {
<div style="display: grid; gap: 8px; font-size: 12px;"> <div style="display: grid; gap: 8px; font-size: 12px;">
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between;">
<span style="color: var(--text-dim);">Current Version</span> <span style="color: var(--text-dim);">Current Version</span>
<span style="font-family: 'Terminus', monospace; color: var(--text-primary);">v${data.current_version}</span> <span style="font-family: 'JetBrains Mono', monospace; color: var(--text-primary);">v${data.current_version}</span>
</div> </div>
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between;">
<span style="color: var(--text-dim);">Latest Version</span> <span style="color: var(--text-dim);">Latest Version</span>
<span style="font-family: 'Terminus', monospace; color: ${data.update_available ? 'var(--accent-green)' : 'var(--text-primary)'};">v${data.latest_version}</span> <span style="font-family: 'JetBrains Mono', monospace; color: ${data.update_available ? 'var(--accent-green)' : 'var(--text-primary)'};">v${data.latest_version}</span>
</div> </div>
${data.last_check ? ` ${data.last_check ? `
<div style="display: flex; justify-content: space-between;"> <div style="display: flex; justify-content: space-between;">
+1 -1
View File
@@ -1293,7 +1293,7 @@ function drawAudioVisualizer() {
} }
ctx.fillStyle = 'rgba(255, 255, 255, 0.3)'; ctx.fillStyle = 'rgba(255, 255, 255, 0.3)';
ctx.font = '8px Terminus'; ctx.font = '8px JetBrains Mono';
ctx.fillText('0', 2, canvas.height - 2); ctx.fillText('0', 2, canvas.height - 2);
ctx.fillText('4kHz', canvas.width / 4, canvas.height - 2); ctx.fillText('4kHz', canvas.width / 4, canvas.height - 2);
ctx.fillText('8kHz', canvas.width / 2, canvas.height - 2); ctx.fillText('8kHz', canvas.width / 2, canvas.height - 2);
+1 -1
View File
@@ -84,7 +84,7 @@ const SpyStations = (function() {
modeContainer.innerHTML = modes.map(m => ` modeContainer.innerHTML = modes.map(m => `
<label class="inline-checkbox"> <label class="inline-checkbox">
<input type="checkbox" data-mode="${m}" checked onchange="SpyStations.applyFilters()"> <input type="checkbox" data-mode="${m}" checked onchange="SpyStations.applyFilters()">
<span style="font-family: 'Terminus', monospace; font-size: 10px;">${m}</span> <span style="font-family: 'JetBrains Mono', monospace; font-size: 10px;">${m}</span>
</label> </label>
`).join(''); `).join('');
} }
Binary file not shown.
+4 -4
View File
@@ -8,7 +8,7 @@
{% if offline_settings.fonts_source == 'local' %} {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %} {% else %}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %} {% endif %}
<!-- Leaflet.js - Conditional CDN/Local loading --> <!-- Leaflet.js - Conditional CDN/Local loading -->
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
@@ -1387,7 +1387,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
// Range label // Range label
const rangeNm = Math.round(maxRange * ratio); const rangeNm = Math.round(maxRange * ratio);
ctx.fillStyle = 'rgba(0, 255, 255, 0.5)'; ctx.fillStyle = 'rgba(0, 255, 255, 0.5)';
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillText(`${rangeNm}`, this.centerX + r + 5, this.centerY + 4); ctx.fillText(`${rangeNm}`, this.centerX + r + 5, this.centerY + 4);
}); });
} }
@@ -1528,7 +1528,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
// Label // Label
if (blip.callsign || blip.selected) { if (blip.callsign || blip.selected) {
ctx.fillStyle = '#00ffff'; ctx.fillStyle = '#00ffff';
ctx.font = '9px Terminus'; ctx.font = '9px JetBrains Mono';
ctx.textAlign = 'left'; ctx.textAlign = 'left';
ctx.fillText(blip.callsign || blip.icao, blip.x + 8, blip.y - 5); ctx.fillText(blip.callsign || blip.icao, blip.x + 8, blip.y - 5);
if (blip.altitude) { if (blip.altitude) {
@@ -1646,7 +1646,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
// Range label // Range label
const rangeNm = Math.round(maxRange * ratio); const rangeNm = Math.round(maxRange * ratio);
ctx.fillStyle = 'rgba(0, 255, 255, 0.4)'; ctx.fillStyle = 'rgba(0, 255, 255, 0.4)';
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY); ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY);
}); });
+8 -4
View File
@@ -4,7 +4,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ADS-B History // INTERCEPT</title> <title>ADS-B History // INTERCEPT</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %}
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/adsb_history.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/adsb_history.css') }}">
@@ -466,7 +470,7 @@
if (!points.length) { if (!points.length) {
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)'; ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
ctx.font = '12px "Terminus", monospace'; ctx.font = '12px "JetBrains Mono", monospace';
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2); ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
return; return;
} }
@@ -474,7 +478,7 @@
const series = points.map(p => p[field]).filter(v => v !== null && v !== undefined); const series = points.map(p => p[field]).filter(v => v !== null && v !== undefined);
if (!series.length) { if (!series.length) {
ctx.fillStyle = 'rgba(156, 163, 175, 0.6)'; ctx.fillStyle = 'rgba(156, 163, 175, 0.6)';
ctx.font = '12px "Terminus", monospace'; ctx.font = '12px "JetBrains Mono", monospace';
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2); ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
return; return;
} }
@@ -515,7 +519,7 @@
} }
ctx.fillStyle = 'rgba(226, 232, 240, 0.8)'; ctx.fillStyle = 'rgba(226, 232, 240, 0.8)';
ctx.font = '11px "Terminus", monospace'; ctx.font = '11px "JetBrains Mono", monospace';
ctx.fillText(`${maxVal} ${unit}`, 12, padding); ctx.fillText(`${maxVal} ${unit}`, 12, padding);
ctx.fillText(`${minVal} ${unit}`, 12, height - padding); ctx.fillText(`${minVal} ${unit}`, 12, height - padding);
} }
+1 -1
View File
@@ -8,7 +8,7 @@
{% if offline_settings.fonts_source == 'local' %} {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %} {% else %}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Orbitron:wght@400;500;600;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Orbitron:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %} {% endif %}
<!-- Leaflet.js - Conditional CDN/Local loading --> <!-- Leaflet.js - Conditional CDN/Local loading -->
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
+6 -6
View File
@@ -22,7 +22,7 @@
{% if offline_settings.fonts_source == 'local' %} {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %} {% else %}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %} {% endif %}
<!-- Leaflet.js for APRS map - Conditional CDN/Local loading --> <!-- Leaflet.js for APRS map - Conditional CDN/Local loading -->
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
@@ -4223,7 +4223,7 @@
const infoEl = document.createElement('div'); const infoEl = document.createElement('div');
infoEl.className = 'info-msg'; infoEl.className = 'info-msg';
infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "Terminus", monospace; font-size: 11px; color: #888; word-break: break-all;'; infoEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #0a0a0a; border: 1px solid #1a1a1a; border-left: 2px solid #00d4ff; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #888; word-break: break-all;';
infoEl.textContent = text; infoEl.textContent = text;
output.insertBefore(infoEl, output.firstChild); output.insertBefore(infoEl, output.firstChild);
} }
@@ -4239,7 +4239,7 @@
const errorEl = document.createElement('div'); const errorEl = document.createElement('div');
errorEl.className = 'error-msg'; errorEl.className = 'error-msg';
errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "Terminus", monospace; font-size: 11px; color: #ff6688; word-break: break-all;'; errorEl.style.cssText = 'padding: 12px 15px; margin-bottom: 8px; background: #1a0a0a; border: 1px solid #2a1a1a; border-left: 2px solid #ff3366; font-family: "JetBrains Mono", monospace; font-size: 11px; color: #ff6688; word-break: break-all;';
errorEl.textContent = '⚠ ' + text; errorEl.textContent = '⚠ ' + text;
output.insertBefore(errorEl, output.firstChild); output.insertBefore(errorEl, output.firstChild);
} }
@@ -6855,7 +6855,7 @@
// Draw total in center // Draw total in center
ctx.fillStyle = '#fff'; ctx.fillStyle = '#fff';
ctx.font = 'bold 16px Terminus'; ctx.font = 'bold 16px JetBrains Mono';
ctx.textAlign = 'center'; ctx.textAlign = 'center';
ctx.textBaseline = 'middle'; ctx.textBaseline = 'middle';
ctx.fillText(total, cx, cy); ctx.fillText(total, cx, cy);
@@ -8625,7 +8625,7 @@
// Label // Label
if (el > 0) { if (el > 0) {
ctx.fillStyle = '#444'; ctx.fillStyle = '#444';
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.textAlign = 'center'; ctx.textAlign = 'center';
ctx.fillText(el + '°', cx, cy - r + 12); ctx.fillText(el + '°', cx, cy - r + 12);
} }
@@ -8698,7 +8698,7 @@
// Label // Label
ctx.fillStyle = '#fff'; ctx.fillStyle = '#fff';
ctx.font = '11px Terminus'; ctx.font = '11px JetBrains Mono';
ctx.fillText(pass.satellite, maxX + 10, maxY - 5); ctx.fillText(pass.satellite, maxX + 10, maxY - 5);
} }
} }
+1 -1
View File
@@ -10,7 +10,7 @@
{% if offline_settings and offline_settings.fonts_source == 'local' %} {% if offline_settings and offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %} {% else %}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %} {% endif %}
{# Core CSS (Design System) #} {# Core CSS (Design System) #}
+5 -1
View File
@@ -4,7 +4,11 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Network Monitor // INTERCEPT</title> <title>Network Monitor // INTERCEPT</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %}
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/responsive.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/agents.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/agents.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/global-nav.css') }}">
+2 -3
View File
@@ -52,7 +52,7 @@
<div class="settings-row"> <div class="settings-row">
<div class="settings-label"> <div class="settings-label">
<span class="settings-label-text">Web Fonts</span> <span class="settings-label-text">Web Fonts</span>
<span class="settings-label-desc">Inter, Terminus</span> <span class="settings-label-desc">JetBrains Mono</span>
</div> </div>
<select id="fontsSource" class="settings-select" onchange="Settings.setFontsSource(this.value)"> <select id="fontsSource" class="settings-select" onchange="Settings.setFontsSource(this.value)">
<option value="cdn">Google Fonts (Online)</option> <option value="cdn">Google Fonts (Online)</option>
@@ -105,7 +105,7 @@
<span class="asset-badge checking" id="statusInter">Checking...</span> <span class="asset-badge checking" id="statusInter">Checking...</span>
</div> </div>
<div class="asset-status-row"> <div class="asset-status-row">
<span class="asset-name">Terminus</span> <span class="asset-name">JetBrains Mono</span>
<span class="asset-badge checking" id="statusJetbrains">Checking...</span> <span class="asset-badge checking" id="statusJetbrains">Checking...</span>
</div> </div>
</div> </div>
@@ -315,4 +315,3 @@
</div> </div>
</div> </div>
</div> </div>
+5 -5
View File
@@ -8,7 +8,7 @@
{% if offline_settings.fonts_source == 'local' %} {% if offline_settings.fonts_source == 'local' %}
<link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}"> <link rel="stylesheet" href="{{ url_for('static', filename='css/fonts-local.css') }}">
{% else %} {% else %}
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
{% endif %} {% endif %}
<!-- Leaflet.js - Conditional CDN/Local loading --> <!-- Leaflet.js - Conditional CDN/Local loading -->
{% if offline_settings.assets_source == 'local' %} {% if offline_settings.assets_source == 'local' %}
@@ -593,7 +593,7 @@
ctx.stroke(); ctx.stroke();
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)'; ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillText(el + '°', cx + 5, cy - r + 12); ctx.fillText(el + '°', cx + 5, cy - r + 12);
} }
@@ -961,7 +961,7 @@
ctx.stroke(); ctx.stroke();
ctx.fillStyle = 'rgba(0, 212, 255, 0.4)'; ctx.fillStyle = 'rgba(0, 212, 255, 0.4)';
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillText(elRing + '°', cx + 5, cy - r + 12); ctx.fillText(elRing + '°', cx + 5, cy - r + 12);
} }
@@ -1028,7 +1028,7 @@
ctx.textAlign = 'center'; ctx.textAlign = 'center';
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20); ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444'; ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
ctx.fillText(el.toFixed(1) + '°', x, y + 25); ctx.fillText(el.toFixed(1) + '°', x, y + 25);
} else { } else {
@@ -1077,7 +1077,7 @@
ctx.textAlign = 'center'; ctx.textAlign = 'center';
ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20); ctx.fillText(satellites[selectedSatellite]?.name || 'SAT', x, y - 20);
ctx.font = '10px Terminus'; ctx.font = '10px JetBrains Mono';
ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444'; ctx.fillStyle = el > 0 ? '#00ff88' : '#ff4444';
ctx.fillText(el.toFixed(1) + '°', x, y + 25); ctx.fillText(el.toFixed(1) + '°', x, y + 25);
} }