Use Terminus font across app

This commit is contained in:
Smittix
2026-02-04 00:56:22 +00:00
parent 3ce8c1b2be
commit b5dbeb6b59
37 changed files with 22210 additions and 22184 deletions
+14 -14
View File
@@ -132,7 +132,7 @@ body {
display: flex; display: flex;
gap: 20px; gap: 20px;
align-items: center; align-items: center;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -624,7 +624,7 @@ body {
} }
.telemetry-value { .telemetry-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
@@ -680,7 +680,7 @@ body {
} }
.aircraft-icao { .aircraft-icao {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-secondary); color: var(--text-secondary);
background: rgba(74, 158, 255, 0.1); background: rgba(74, 158, 255, 0.1);
@@ -700,7 +700,7 @@ body {
} }
.aircraft-detail-value { .aircraft-detail-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--accent-cyan); color: var(--accent-cyan);
font-size: 11px; font-size: 11px;
} }
@@ -790,7 +790,7 @@ body {
border: 1px solid rgba(74, 158, 255, 0.3); border: 1px solid rgba(74, 158, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -801,7 +801,7 @@ body {
border: 1px solid rgba(74, 158, 255, 0.3); border: 1px solid rgba(74, 158, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -879,7 +879,7 @@ body {
border: none; border: none;
background: var(--accent-green); background: var(--accent-green);
color: #fff; color: #fff;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -911,7 +911,7 @@ body {
border: 1px solid rgba(74, 158, 255, 0.3); border: 1px solid rgba(74, 158, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
cursor: pointer; cursor: pointer;
} }
@@ -1023,7 +1023,7 @@ body {
cursor: pointer; cursor: pointer;
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
display: flex; display: flex;
align-items: center; align-items: center;
gap: 5px; gap: 5px;
@@ -1057,7 +1057,7 @@ body {
} }
.airband-status { .airband-status {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 0 8px; padding: 0 8px;
color: var(--text-muted); color: var(--text-muted);
@@ -1407,7 +1407,7 @@ body {
} }
.strip-value { .strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -1545,7 +1545,7 @@ body {
.report-grid span:nth-child(even) { .report-grid span:nth-child(even) {
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.report-highlights { .report-highlights {
@@ -1784,7 +1784,7 @@ body {
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
padding-left: 8px; padding-left: 8px;
border-left: 1px solid rgba(74, 158, 255, 0.2); border-left: 1px solid rgba(74, 158, 255, 0.2);
white-space: nowrap; white-space: nowrap;
@@ -1938,7 +1938,7 @@ body {
} }
.squawk-code { .squawk-code {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-weight: 700; font-weight: 700;
color: var(--accent-cyan); color: var(--accent-cyan);
font-size: 12px; font-size: 12px;
+5 -5
View File
@@ -27,7 +27,7 @@ body {
} }
.mono { .mono {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.radar-bg { .radar-bg {
@@ -91,7 +91,7 @@ body {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 12px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -268,7 +268,7 @@ body {
} }
.status-pill { .status-pill {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 8px 12px; padding: 8px 12px;
border-radius: 999px; border-radius: 999px;
@@ -306,7 +306,7 @@ body {
} }
.panel-meta { .panel-meta {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
@@ -347,7 +347,7 @@ body {
} }
.mono { .mono {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.empty-row td, .empty-row td,
+3 -3
View File
@@ -55,7 +55,7 @@
.agent-indicator-label { .agent-indicator-label {
font-size: 11px; font-size: 11px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.agent-indicator-count { .agent-indicator-count {
@@ -178,7 +178,7 @@
.agent-selector-item-url { .agent-selector-item-url {
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -203,7 +203,7 @@
background: rgba(0, 212, 255, 0.1); background: rgba(0, 212, 255, 0.1);
color: var(--accent-cyan); color: var(--accent-cyan);
border-radius: 10px; border-radius: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.agent-badge.local, .agent-badge.local,
+23 -23
View File
@@ -134,7 +134,7 @@ body {
display: flex; display: flex;
gap: 20px; gap: 20px;
align-items: center; align-items: center;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -183,7 +183,7 @@ body {
} }
.strip-value { .strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -287,7 +287,7 @@ body {
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
padding-left: 8px; padding-left: 8px;
border-left: 1px solid rgba(74, 158, 255, 0.2); border-left: 1px solid rgba(74, 158, 255, 0.2);
white-space: nowrap; white-space: nowrap;
@@ -367,7 +367,7 @@ body {
/* Leaflet overrides - Dark map styling */ /* Leaflet overrides - Dark map styling */
.leaflet-container { .leaflet-container {
background: var(--bg-dark) !important; background: var(--bg-dark) !important;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Using actual dark tiles now - no filter needed */ /* Using actual dark tiles now - no filter needed */
@@ -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', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', 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', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', monospace;
font-size: 16px; font-size: 16px;
font-weight: 700; font-weight: 700;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -518,7 +518,7 @@ body {
} }
.vessel-mmsi { .vessel-mmsi {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
background: rgba(74, 158, 255, 0.1); background: rgba(74, 158, 255, 0.1);
@@ -548,7 +548,7 @@ body {
} }
.detail-value { .detail-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
@@ -604,20 +604,20 @@ body {
} }
.vessel-item-name { .vessel-item-name {
font-family: 'Orbitron', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', monospace;
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
.vessel-item-type { .vessel-item-type {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-secondary); color: var(--text-secondary);
} }
.vessel-item-speed { .vessel-item-speed {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
text-align: right; text-align: right;
@@ -687,7 +687,7 @@ body {
border: 1px solid rgba(74, 158, 255, 0.3); border: 1px solid rgba(74, 158, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -698,7 +698,7 @@ body {
border: 1px solid rgba(74, 158, 255, 0.3); border: 1px solid rgba(74, 158, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -717,7 +717,7 @@ body {
border: none; border: none;
background: var(--accent-green); background: var(--accent-green);
color: #fff; color: #fff;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -1004,7 +1004,7 @@ body {
padding: 6px 12px; padding: 6px 12px;
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
border-bottom: 1px solid rgba(245, 158, 11, 0.1); border-bottom: 1px solid rgba(245, 158, 11, 0.1);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
} }
@@ -1079,7 +1079,7 @@ body {
} }
.dsc-message-category { .dsc-message-category {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 700; font-weight: 700;
text-transform: uppercase; text-transform: uppercase;
@@ -1096,13 +1096,13 @@ body {
} }
.dsc-message-time { .dsc-message-time {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
} }
.dsc-message-mmsi { .dsc-message-mmsi {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-orange); color: var(--accent-orange);
} }
@@ -1120,7 +1120,7 @@ body {
} }
.dsc-message-pos { .dsc-message-pos {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-secondary); color: var(--text-secondary);
} }
@@ -1148,7 +1148,7 @@ body {
} }
.dsc-distress-alert .dsc-alert-header { .dsc-distress-alert .dsc-alert-header {
font-family: 'Orbitron', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', monospace;
font-size: 24px; font-size: 24px;
font-weight: 700; font-weight: 700;
color: var(--accent-red); color: var(--accent-red);
@@ -1157,7 +1157,7 @@ body {
} }
.dsc-distress-alert .dsc-alert-mmsi { .dsc-distress-alert .dsc-alert-mmsi {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 16px; font-size: 16px;
color: var(--accent-cyan); color: var(--accent-cyan);
margin-bottom: 8px; margin-bottom: 8px;
@@ -1177,7 +1177,7 @@ body {
} }
.dsc-distress-alert .dsc-alert-position { .dsc-distress-alert .dsc-alert-position {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
color: var(--accent-cyan); color: var(--accent-cyan);
margin-bottom: 16px; margin-bottom: 16px;
@@ -1188,7 +1188,7 @@ body {
border: none; border: none;
color: white; color: white;
padding: 10px 24px; padding: 10px 24px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
+2 -2
View File
@@ -30,7 +30,7 @@
background: var(--timeline-bg); background: var(--timeline-bg);
border: 1px solid var(--timeline-border); border: 1px solid var(--timeline-border);
border-radius: 6px; border-radius: 6px;
font-family: 'JetBrains Mono', 'SF Mono', 'Consolas', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -497,7 +497,7 @@
pointer-events: none; pointer-events: none;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
max-width: 240px; max-width: 240px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.activity-timeline-tooltip-header { .activity-timeline-tooltip-header {
+22 -22
View File
@@ -67,7 +67,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -84,7 +84,7 @@
PROTOCOL BADGES PROTOCOL BADGES
============================================ */ ============================================ */
.signal-proto-badge.device-protocol { .signal-proto-badge.device-protocol {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -100,7 +100,7 @@
.device-heuristic-badge { .device-heuristic-badge {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 500; font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
@@ -159,7 +159,7 @@
} }
.rssi-current { .rssi-current {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
@@ -186,13 +186,13 @@
} }
.rssi-value { .rssi-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
} }
.rssi-current-value { .rssi-current-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 500; font-weight: 500;
margin-left: 6px; margin-left: 6px;
@@ -230,13 +230,13 @@
} }
.device-range-band .range-estimate { .device-range-band .range-estimate {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim, #666); color: var(--text-dim, #666);
} }
.device-range-band .range-confidence { .device-range-band .range-confidence {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim, #666); color: var(--text-dim, #666);
padding: 1px 4px; padding: 1px 4px;
@@ -280,7 +280,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 3px; gap: 3px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.device-seen-count .seen-icon { .device-seen-count .seen-icon {
@@ -289,7 +289,7 @@
} }
.device-timestamp { .device-timestamp {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* ============================================ /* ============================================
@@ -302,7 +302,7 @@
} }
.device-uuid { .device-uuid {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
padding: 2px 6px; padding: 2px 6px;
background: var(--bg-tertiary, #1a1a1a); background: var(--bg-tertiary, #1a1a1a);
@@ -342,7 +342,7 @@
} }
.heuristic-item .heuristic-status { .heuristic-item .heuristic-status {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
} }
@@ -440,7 +440,7 @@
} }
.message-card-details { .message-card-details {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim, #666); color: var(--text-dim, #666);
margin-top: 4px; margin-top: 4px;
@@ -476,7 +476,7 @@
} }
.message-action-btn { .message-action-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 500; font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
@@ -623,7 +623,7 @@
} }
.signal-details-modal-subtitle { .signal-details-modal-subtitle {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--text-dim, #666); color: var(--text-dim, #666);
} }
@@ -635,7 +635,7 @@
} }
.signal-details-copy-addr-btn { .signal-details-copy-addr-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 8px 16px; padding: 8px 16px;
background: var(--bg-secondary, #252525); background: var(--bg-secondary, #252525);
@@ -677,7 +677,7 @@
} }
.modal-section-title { .modal-section-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -698,7 +698,7 @@
} }
.modal-rssi-large { .modal-rssi-large {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 36px; font-size: 36px;
font-weight: 700; font-weight: 700;
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
@@ -744,7 +744,7 @@
} }
.modal-signal-stats .stat-value { .modal-signal-stats .stat-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
@@ -778,7 +778,7 @@
} }
.modal-info-grid .info-value.mono { .modal-info-grid .info-value.mono {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
} }
@@ -790,7 +790,7 @@
} }
.modal-uuid { .modal-uuid {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 4px 8px; padding: 4px 8px;
background: var(--bg-secondary, #1a1a1a); background: var(--bg-secondary, #1a1a1a);
@@ -822,7 +822,7 @@
} }
.heuristic-indicator { .heuristic-indicator {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--text-dim, #666); color: var(--text-dim, #666);
+2 -2
View File
@@ -37,7 +37,7 @@
} }
.function-strip .strip-value { .function-strip .strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -250,7 +250,7 @@
/* Time display */ /* Time display */
.function-strip .strip-time { .function-strip .strip-time {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-muted); color: var(--text-muted);
padding: 4px 8px; padding: 4px 8px;
+31 -31
View File
@@ -47,7 +47,7 @@
} }
.signal-feed-title { .signal-feed-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
letter-spacing: 0.06em; letter-spacing: 0.06em;
@@ -59,7 +59,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-green); color: var(--accent-green);
text-transform: uppercase; text-transform: uppercase;
@@ -144,7 +144,7 @@
.signal-filter-btn[data-filter="baseline"] .filter-dot { background: var(--signal-baseline); } .signal-filter-btn[data-filter="baseline"] .filter-dot { background: var(--signal-baseline); }
.signal-filter-count { .signal-filter-count {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
background: var(--bg-secondary); background: var(--bg-secondary);
padding: 1px 5px; padding: 1px 5px;
@@ -255,7 +255,7 @@
/* Protocol badge */ /* Protocol badge */
.signal-proto-badge { .signal-proto-badge {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -297,7 +297,7 @@
/* Frequency/Address badge */ /* Frequency/Address badge */
.signal-freq-badge { .signal-freq-badge {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 500; font-weight: 500;
color: var(--text-primary); color: var(--text-primary);
@@ -376,7 +376,7 @@
} }
.signal-sender { .signal-sender {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-green); color: var(--accent-green);
} }
@@ -392,7 +392,7 @@
} }
.signal-timestamp { .signal-timestamp {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
margin-left: auto; margin-left: auto;
@@ -400,7 +400,7 @@
/* Message content preview */ /* Message content preview */
.signal-message { .signal-message {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
color: var(--text-primary); color: var(--text-primary);
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -638,13 +638,13 @@
} }
.signal-advanced-value { .signal-advanced-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--text-primary); color: var(--text-primary);
} }
.signal-raw-data { .signal-raw-data {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
background: var(--bg-primary); background: var(--bg-primary);
@@ -716,7 +716,7 @@
position: absolute; position: absolute;
bottom: 4px; bottom: 4px;
right: 6px; right: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
background: var(--bg-card); background: var(--bg-card);
@@ -887,7 +887,7 @@
SEEN COUNT BADGE SEEN COUNT BADGE
============================================ */ ============================================ */
.signal-seen-count { .signal-seen-count {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -923,7 +923,7 @@
} }
.signal-sensor-reading .sensor-value { .signal-sensor-reading .sensor-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
color: var(--text-primary); color: var(--text-primary);
@@ -967,7 +967,7 @@
} }
.signal-meter-reading .meter-value { .signal-meter-reading .meter-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -1032,7 +1032,7 @@
} }
.meter-aggregated-value { .meter-aggregated-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -1049,7 +1049,7 @@
/* Delta badge */ /* Delta badge */
.meter-delta { .meter-delta {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 2px 6px; padding: 2px 6px;
border-radius: 3px; border-radius: 3px;
@@ -1078,14 +1078,14 @@
} }
.meter-sparkline-placeholder { .meter-sparkline-placeholder {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
} }
/* Rate display */ /* Rate display */
.meter-rate-value { .meter-rate-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 500; font-weight: 500;
color: var(--accent-cyan, #4a9eff); color: var(--accent-cyan, #4a9eff);
@@ -1161,7 +1161,7 @@
DISTANCE DISPLAY DISTANCE DISPLAY
============================================ */ ============================================ */
.signal-distance { .signal-distance {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-green); color: var(--accent-green);
font-weight: 500; font-weight: 500;
@@ -1308,7 +1308,7 @@
} }
.signal-strength-indicator.no-data { .signal-strength-indicator.no-data {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
opacity: 0.5; opacity: 0.5;
@@ -1324,7 +1324,7 @@
} }
.signal-strength-label { .signal-strength-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 500; font-weight: 500;
text-transform: uppercase; text-transform: uppercase;
@@ -1404,7 +1404,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -1520,7 +1520,7 @@
} }
.station-raw-modal-title { .station-raw-modal-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
@@ -1556,7 +1556,7 @@
} }
.station-raw-data-display { .station-raw-data-display {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
line-height: 1.6; line-height: 1.6;
color: var(--accent-green, #00ff88); color: var(--accent-green, #00ff88);
@@ -1581,7 +1581,7 @@
} }
.station-raw-copy-btn { .station-raw-copy-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 8px 16px; padding: 8px 16px;
background: var(--accent-purple, #8a2be2); background: var(--accent-purple, #8a2be2);
@@ -1751,7 +1751,7 @@
} }
.signal-details-modal-title { .signal-details-modal-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 15px; font-size: 15px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
@@ -1788,7 +1788,7 @@
} }
.signal-details-copy-btn { .signal-details-copy-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 8px 16px; padding: 8px 16px;
background: var(--accent-purple, #8a2be2); background: var(--accent-purple, #8a2be2);
@@ -1814,7 +1814,7 @@
} }
.signal-details-title { .signal-details-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -1826,7 +1826,7 @@
} }
.signal-details-message { .signal-details-message {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
background: var(--bg-secondary, #252525); background: var(--bg-secondary, #252525);
@@ -1857,14 +1857,14 @@
} }
.signal-details-value { .signal-details-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 13px; font-size: 13px;
color: var(--text-primary, #e0e0e0); color: var(--text-primary, #e0e0e0);
} }
/* Raw data in modal */ /* Raw data in modal */
.signal-details-modal .signal-raw-data { .signal-details-modal .signal-raw-data {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--text-secondary, #aaa); color: var(--text-secondary, #aaa);
background: var(--bg-tertiary, #1a1a1a); background: var(--bg-tertiary, #1a1a1a);
+1 -1
View File
@@ -11,7 +11,7 @@
background: var(--bg-card, #1a1a1a); background: var(--bg-card, #1a1a1a);
border: 1px solid var(--border-color, #333); border: 1px solid var(--border-color, #333);
border-radius: 6px; border-radius: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.signal-timeline.collapsed .signal-timeline-body { .signal-timeline.collapsed .signal-timeline-body {
+3 -3
View File
@@ -259,7 +259,7 @@
} }
.update-version-value { .update-version-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
color: var(--text-secondary, #9ca3af); color: var(--text-secondary, #9ca3af);
@@ -328,7 +328,7 @@
} }
.update-release-notes code { .update-release-notes code {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
background: var(--bg-tertiary, #151a23); background: var(--bg-tertiary, #151a23);
padding: 2px 6px; padding: 2px 6px;
@@ -444,7 +444,7 @@
} }
.update-result-text code { .update-result-text code {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
padding: 2px 6px; padding: 2px 6px;
+1 -1
View File
@@ -74,7 +74,7 @@
TYPOGRAPHY TYPOGRAPHY
============================================ */ ============================================ */
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
--font-mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; --font-mono: 'Terminus', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
/* Font sizes */ /* Font sizes */
--text-xs: 10px; --text-xs: 10px;
+9
View File
@@ -65,3 +65,12 @@
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');
}
+5 -5
View File
@@ -50,7 +50,7 @@
letter-spacing: 1px; letter-spacing: 1px;
margin-right: 8px; margin-right: 8px;
font-weight: 500; font-weight: 500;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.mode-nav-divider { .mode-nav-divider {
@@ -80,7 +80,7 @@
.mode-nav-btn .nav-label { .mode-nav-btn .nav-label {
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.08em; letter-spacing: 0.08em;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -127,7 +127,7 @@
.nav-action-btn .nav-label { .nav-action-btn .nav-label {
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.08em; letter-spacing: 0.08em;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -162,7 +162,7 @@
.mode-nav-dropdown-btn .nav-label { .mode-nav-dropdown-btn .nav-label {
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.08em; letter-spacing: 0.08em;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -268,7 +268,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
flex-shrink: 0; flex-shrink: 0;
white-space: nowrap; white-space: nowrap;
+58 -50
View File
@@ -1,5 +1,13 @@
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); @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;
@@ -259,7 +267,7 @@ body {
} }
.welcome-title { .welcome-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 2.5rem; font-size: 2.5rem;
font-weight: 700; font-weight: 700;
color: var(--text-primary); color: var(--text-primary);
@@ -269,7 +277,7 @@ body {
} }
.welcome-tagline { .welcome-tagline {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.9rem; font-size: 0.9rem;
color: var(--accent-cyan); color: var(--accent-cyan);
letter-spacing: 0.15em; letter-spacing: 0.15em;
@@ -278,7 +286,7 @@ body {
.welcome-version { .welcome-version {
display: inline-block; display: inline-block;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.65rem; font-size: 0.65rem;
color: var(--bg-primary); color: var(--bg-primary);
background: var(--accent-cyan); background: var(--accent-cyan);
@@ -297,7 +305,7 @@ body {
} }
.welcome-content h2 { .welcome-content h2 {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.75rem; font-size: 0.75rem;
color: var(--text-secondary); color: var(--text-secondary);
text-transform: uppercase; text-transform: uppercase;
@@ -333,7 +341,7 @@ body {
} }
.changelog-version { .changelog-version {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.8rem; font-size: 0.8rem;
color: var(--accent-cyan); color: var(--accent-cyan);
font-weight: 600; font-weight: 600;
@@ -364,7 +372,7 @@ body {
position: absolute; position: absolute;
left: -15px; left: -15px;
color: var(--accent-green); color: var(--accent-green);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Mode Selection Grid */ /* Mode Selection Grid */
@@ -435,7 +443,7 @@ body {
} }
.mode-card .mode-name { .mode-card .mode-name {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.75rem; font-size: 0.75rem;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -463,7 +471,7 @@ body {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 0.7rem; font-size: 0.7rem;
font-weight: 600; font-weight: 600;
color: var(--text-secondary); color: var(--text-secondary);
@@ -922,7 +930,7 @@ header h1 {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
flex-shrink: 0; flex-shrink: 0;
white-space: nowrap; white-space: nowrap;
@@ -1030,7 +1038,7 @@ header h1 {
.version-badge { .version-badge {
font-size: 0.6rem; font-size: 0.6rem;
font-weight: 500; font-weight: 500;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
letter-spacing: 0.05em; letter-spacing: 0.05em;
color: var(--text-secondary); color: var(--text-secondary);
background: var(--bg-tertiary); background: var(--bg-tertiary);
@@ -1089,7 +1097,7 @@ header h1 .tagline {
background: var(--bg-tertiary); background: var(--bg-tertiary);
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 6px; border-radius: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
transition: all 0.2s ease; transition: all 0.2s ease;
} }
@@ -1578,7 +1586,7 @@ header h1 .tagline {
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
transition: all 0.15s ease; transition: all 0.15s ease;
} }
@@ -1637,7 +1645,7 @@ header h1 .tagline {
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
color: var(--text-secondary); color: var(--text-secondary);
cursor: pointer; cursor: pointer;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
text-transform: uppercase; text-transform: uppercase;
letter-spacing: 0.05em; letter-spacing: 0.05em;
@@ -1757,7 +1765,7 @@ header h1 .tagline {
gap: 8px; gap: 8px;
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.stats>div { .stats>div {
@@ -1783,7 +1791,7 @@ header h1 .tagline {
flex: 1; flex: 1;
padding: 10px; padding: 10px;
overflow-y: auto; overflow-y: auto;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
background: var(--bg-primary); background: var(--bg-primary);
min-height: 0; /* Allow shrinking in flex context */ min-height: 0; /* Allow shrinking in flex context */
@@ -1855,7 +1863,7 @@ header h1 .tagline {
.message .address { .message .address {
color: var(--accent-green); color: var(--accent-green);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
margin-bottom: 8px; margin-bottom: 8px;
} }
@@ -1868,7 +1876,7 @@ header h1 .tagline {
} }
.message .content.numeric { .message .content.numeric {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 15px; font-size: 15px;
letter-spacing: 2px; letter-spacing: 2px;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -2357,7 +2365,7 @@ header h1 .tagline {
/* Dark theme for Leaflet */ /* Dark theme for Leaflet */
.leaflet-container { .leaflet-container {
background: #0a0a0a; background: #0a0a0a;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Using actual dark tiles now - no filter needed */ /* Using actual dark tiles now - no filter needed */
@@ -2394,7 +2402,7 @@ header h1 .tagline {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
z-index: 1000; z-index: 1000;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
text-shadow: 0 0 5px var(--accent-cyan); text-shadow: 0 0 5px var(--accent-cyan);
@@ -2411,7 +2419,7 @@ header h1 .tagline {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
z-index: 1000; z-index: 1000;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-cyan); color: var(--accent-cyan);
text-shadow: 0 0 5px var(--accent-cyan); text-shadow: 0 0 5px var(--accent-cyan);
@@ -2432,7 +2440,7 @@ header h1 .tagline {
} }
.aircraft-popup { .aircraft-popup {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -2476,7 +2484,7 @@ header h1 .tagline {
background: rgba(0, 0, 0, 0.8) !important; background: rgba(0, 0, 0, 0.8) !important;
border: 1px solid var(--accent-cyan) !important; border: 1px solid var(--accent-cyan) !important;
color: var(--accent-cyan) !important; color: var(--accent-cyan) !important;
font-family: 'JetBrains Mono', monospace !important; font-family: var(--font-mono) !important;
font-size: 10px !important; font-size: 10px !important;
padding: 2px 6px !important; padding: 2px 6px !important;
border-radius: 2px !important; border-radius: 2px !important;
@@ -2720,7 +2728,7 @@ header h1 .tagline {
color: var(--accent-cyan); color: var(--accent-cyan);
font-size: 22px; font-size: 22px;
font-weight: 700; font-weight: 700;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
text-shadow: 0 0 15px var(--accent-cyan-dim); text-shadow: 0 0 15px var(--accent-cyan-dim);
line-height: 1.2; line-height: 1.2;
} }
@@ -3114,7 +3122,7 @@ header h1 .tagline {
} }
.sensor-card .data-value { .sensor-card .data-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
@@ -3164,7 +3172,7 @@ header h1 .tagline {
display: flex; display: flex;
gap: 15px; gap: 15px;
font-size: 10px; font-size: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.recon-stats span { .recon-stats span {
@@ -3214,14 +3222,14 @@ header h1 .tagline {
.device-id { .device-id {
color: var(--text-dim); color: var(--text-dim);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
.device-meta { .device-meta {
text-align: right; text-align: right;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.device-meta.encrypted { .device-meta.encrypted {
@@ -3297,7 +3305,7 @@ header h1 .tagline {
} }
.hex-dump { .hex-dump {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
background: var(--bg-primary); background: var(--bg-primary);
@@ -3969,7 +3977,7 @@ header h1 .tagline {
} }
.bt-detail-address { .bt-detail-address {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: #00d4ff; color: #00d4ff;
} }
@@ -3983,7 +3991,7 @@ header h1 .tagline {
} }
.bt-detail-rssi-value { .bt-detail-rssi-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 20px; font-size: 20px;
font-weight: 700; font-weight: 700;
} }
@@ -4078,7 +4086,7 @@ header h1 .tagline {
} }
.bt-detail-services-list { .bt-detail-services-list {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
color: var(--text-dim); color: var(--text-dim);
white-space: nowrap; white-space: nowrap;
@@ -4325,7 +4333,7 @@ header h1 .tagline {
} }
.bt-rssi-value { .bt-rssi-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
min-width: 28px; min-width: 28px;
@@ -4684,7 +4692,7 @@ header h1 .tagline {
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
font-size: 10px; font-size: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.security-legend-item { .security-legend-item {
@@ -4731,7 +4739,7 @@ header h1 .tagline {
} }
.signal-value { .signal-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 28px; font-size: 28px;
color: var(--accent-cyan); color: var(--accent-cyan);
text-shadow: 0 0 10px var(--accent-cyan-dim); text-shadow: 0 0 10px var(--accent-cyan-dim);
@@ -5247,7 +5255,7 @@ body::before {
.meter-value { .meter-value {
font-size: 10px; font-size: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--text-secondary); color: var(--text-secondary);
width: 50px; width: 50px;
text-align: right; text-align: right;
@@ -5404,7 +5412,7 @@ body::before {
} }
.freq-digits { .freq-digits {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 56px; font-size: 56px;
font-weight: 700; font-weight: 700;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -5425,7 +5433,7 @@ body::before {
} }
.freq-unit { .freq-unit {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 20px; font-size: 20px;
color: var(--text-secondary); color: var(--text-secondary);
margin-left: 8px; margin-left: 8px;
@@ -5569,7 +5577,7 @@ body::before {
} }
.knob-value { .knob-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -5694,7 +5702,7 @@ body::before {
background: var(--bg-secondary); background: var(--bg-secondary);
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
border-radius: 4px; border-radius: 4px;
@@ -5756,13 +5764,13 @@ body::before {
} }
.signal-arc-label { .signal-arc-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
fill: var(--text-muted); fill: var(--text-muted);
} }
.signal-arc-value { .signal-arc-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
fill: var(--accent-cyan); fill: var(--accent-cyan);
@@ -5794,7 +5802,7 @@ body::before {
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
text-align: center; text-align: center;
@@ -5930,7 +5938,7 @@ body::before {
max-height: 200px; max-height: 200px;
overflow-y: auto; overflow-y: auto;
padding: 10px 15px; padding: 10px 15px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -6019,7 +6027,7 @@ body::before {
} }
.module-header { .module-header {
font-family: 'Orbitron', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', monospace;
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -6044,7 +6052,7 @@ body::before {
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
padding: 6px 8px; padding: 6px 8px;
text-align: center; text-align: center;
@@ -6102,7 +6110,7 @@ body::before {
} }
.stat-value { .stat-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 22px; font-size: 22px;
font-weight: bold; font-weight: bold;
} }
@@ -6150,7 +6158,7 @@ body::before {
.tune-btn { .tune-btn {
padding: 4px 8px; padding: 4px 8px;
font-size: 10px; font-size: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
background: var(--bg-elevated); background: var(--bg-elevated);
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
color: var(--text-secondary); color: var(--text-secondary);
@@ -6180,13 +6188,13 @@ body::before {
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
border-radius: 4px; border-radius: 4px;
padding: 8px; padding: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Listening Mode Selector Buttons */ /* Listening Mode Selector Buttons */
.radio-mode-btn { .radio-mode-btn {
padding: 12px 24px; padding: 12px 24px;
font-family: 'Orbitron', 'JetBrains Mono', monospace; font-family: 'Orbitron', 'Terminus', monospace;
font-size: 13px; font-size: 13px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -6227,7 +6235,7 @@ body::before {
/* Frequency Preset Buttons */ /* Frequency Preset Buttons */
.preset-freq-btn { .preset-freq-btn {
padding: 8px 14px; padding: 8px 14px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
background: var(--bg-elevated); background: var(--bg-elevated);
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
+6 -6
View File
@@ -37,7 +37,7 @@
/* Typography */ /* Typography */
.landing-title { .landing-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 2.2rem; font-size: 2.2rem;
font-weight: 700; font-weight: 700;
letter-spacing: 0.4em; letter-spacing: 0.4em;
@@ -48,7 +48,7 @@
} }
.landing-tagline { .landing-tagline {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--accent-cyan); color: var(--accent-cyan);
font-size: 0.9rem; font-size: 0.9rem;
letter-spacing: 0.15em; letter-spacing: 0.15em;
@@ -71,7 +71,7 @@
/* Hacker Style Error */ /* Hacker Style Error */
.flash-error { .flash-error {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-red); color: var(--accent-red);
background: rgba(239, 68, 68, 0.1); background: rgba(239, 68, 68, 0.1);
@@ -94,7 +94,7 @@
color: var(--accent-cyan); color: var(--accent-cyan);
padding: 12px; padding: 12px;
margin-bottom: 15px; margin-bottom: 15px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
outline: none; outline: none;
box-sizing: border-box; /* Crucial for visibility */ box-sizing: border-box; /* Crucial for visibility */
@@ -106,7 +106,7 @@
border: 2px solid var(--accent-cyan); border: 2px solid var(--accent-cyan);
color: var(--accent-cyan); color: var(--accent-cyan);
padding: 15px; padding: 15px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-weight: 600; font-weight: 600;
letter-spacing: 3px; letter-spacing: 3px;
cursor: pointer; cursor: pointer;
@@ -116,7 +116,7 @@
.landing-version { .landing-version {
margin-top: 25px; margin-top: 25px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: rgba(255, 255, 255, 0.3); color: rgba(255, 255, 255, 0.3);
letter-spacing: 2px; letter-spacing: 2px;
+2 -2
View File
@@ -28,7 +28,7 @@
border-color: rgba(74, 158, 255, 0.3); border-color: rgba(74, 158, 255, 0.3);
} }
.aprs-strip .strip-value { .aprs-strip .strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -186,7 +186,7 @@
/* Time display */ /* Time display */
.aprs-strip .strip-time { .aprs-strip .strip-time {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-muted); color: var(--text-muted);
padding: 4px 8px; padding: 4px 8px;
+44 -44
View File
@@ -46,7 +46,7 @@
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
color: var(--text-secondary); color: var(--text-secondary);
@@ -88,7 +88,7 @@
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
cursor: pointer; cursor: pointer;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
transition: all 0.15s ease; transition: all 0.15s ease;
@@ -143,7 +143,7 @@
} }
.mesh-sidebar-toggle-text { .mesh-sidebar-toggle-text {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
color: var(--text-secondary); color: var(--text-secondary);
@@ -242,14 +242,14 @@
} }
.mesh-strip-status-text { .mesh-strip-status-text {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
text-transform: uppercase; text-transform: uppercase;
} }
.mesh-strip-select { .mesh-strip-select {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 4px 8px; padding: 4px 8px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -260,7 +260,7 @@
} }
.mesh-strip-input { .mesh-strip-input {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 4px 8px; padding: 4px 8px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -281,7 +281,7 @@
} }
.mesh-strip-btn { .mesh-strip-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 5px 12px; padding: 5px 12px;
border: none; border: none;
@@ -325,7 +325,7 @@
} }
.mesh-strip-value { .mesh-strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -349,7 +349,7 @@
} }
.mesh-strip-label { .mesh-strip-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
color: var(--text-dim); color: var(--text-dim);
text-transform: uppercase; text-transform: uppercase;
@@ -408,7 +408,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -421,7 +421,7 @@
.mesh-map-stats { .mesh-map-stats {
display: flex; display: flex;
gap: 16px; gap: 16px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
} }
@@ -459,7 +459,7 @@
} }
.mesh-map .leaflet-popup-content { .mesh-map .leaflet-popup-content {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
margin: 10px 12px; margin: 10px 12px;
} }
@@ -479,7 +479,7 @@
0 0 20px 8px rgba(0, 255, 255, 0.7), /* Strong outer glow */ 0 0 20px 8px rgba(0, 255, 255, 0.7), /* Strong outer glow */
inset 0 0 8px rgba(255, 255, 255, 0.3); /* Inner highlight */ inset 0 0 8px rgba(255, 255, 255, 0.3); /* Inner highlight */
color: #000; color: #000;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: bold; font-weight: bold;
text-shadow: 0 0 2px rgba(255, 255, 255, 0.8); text-shadow: 0 0 2px rgba(255, 255, 255, 0.8);
@@ -573,7 +573,7 @@
.mesh-node-value { .mesh-node-value {
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.mesh-node-id { .mesh-node-id {
@@ -612,7 +612,7 @@
} }
.mesh-channel-index { .mesh-channel-index {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
color: var(--text-dim); color: var(--text-dim);
@@ -623,7 +623,7 @@
} }
.mesh-channel-name { .mesh-channel-name {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 500; font-weight: 500;
color: var(--text-primary); color: var(--text-primary);
@@ -640,7 +640,7 @@
} }
.mesh-channel-badge { .mesh-channel-badge {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -715,7 +715,7 @@
} }
.mesh-messages-title { .mesh-messages-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -735,7 +735,7 @@
} }
.mesh-messages-filter select { .mesh-messages-filter select {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 6px 10px; padding: 6px 10px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -800,7 +800,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -829,7 +829,7 @@
} }
.mesh-message-channel { .mesh-message-channel {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
background: var(--bg-secondary); background: var(--bg-secondary);
padding: 2px 6px; padding: 2px 6px;
border-radius: 3px; border-radius: 3px;
@@ -838,7 +838,7 @@
.mesh-message-time { .mesh-message-time {
color: var(--text-dim); color: var(--text-dim);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.mesh-message-body { .mesh-message-body {
@@ -849,7 +849,7 @@
} }
.mesh-message-body.app-type { .mesh-message-body.app-type {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -870,7 +870,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
} }
@@ -921,7 +921,7 @@
} }
.mesh-message-status { .mesh-message-status {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
padding: 2px 6px; padding: 2px 6px;
border-radius: 3px; border-radius: 3px;
@@ -986,7 +986,7 @@
#meshChannelModal input[type="text"], #meshChannelModal input[type="text"],
#meshChannelModal select { #meshChannelModal select {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
padding: 10px; padding: 10px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -1020,7 +1020,7 @@
} }
.mesh-compose-channel { .mesh-compose-channel {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 6px 10px; padding: 6px 10px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -1037,7 +1037,7 @@
} }
.mesh-compose-to { .mesh-compose-to {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
padding: 6px 10px; padding: 6px 10px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -1064,7 +1064,7 @@
.mesh-compose-input { .mesh-compose-input {
flex: 1; flex: 1;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
padding: 10px 12px; padding: 10px 12px;
background: var(--bg-primary); background: var(--bg-primary);
@@ -1111,7 +1111,7 @@
} }
.mesh-compose-hint { .mesh-compose-hint {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
margin-top: 6px; margin-top: 6px;
@@ -1232,7 +1232,7 @@
border: none; border: none;
border-radius: 4px; border-radius: 4px;
color: #000; color: #000;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -1289,7 +1289,7 @@
} }
.mesh-traceroute-label { .mesh-traceroute-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
color: var(--text-dim); color: var(--text-dim);
@@ -1321,7 +1321,7 @@
} }
.mesh-traceroute-hop-node { .mesh-traceroute-hop-node {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -1329,14 +1329,14 @@
} }
.mesh-traceroute-hop-id { .mesh-traceroute-hop-id {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
margin-bottom: 6px; margin-bottom: 6px;
} }
.mesh-traceroute-snr { .mesh-traceroute-snr {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
padding: 2px 8px; padding: 2px 8px;
@@ -1371,7 +1371,7 @@
.mesh-traceroute-timestamp { .mesh-traceroute-timestamp {
margin-top: 12px; margin-top: 12px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
text-align: right; text-align: right;
@@ -1402,7 +1402,7 @@
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -1426,7 +1426,7 @@
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 600; font-weight: 600;
cursor: pointer; cursor: pointer;
@@ -1459,7 +1459,7 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
color: var(--text-secondary); color: var(--text-secondary);
@@ -1494,7 +1494,7 @@
} }
.mesh-chart-label { .mesh-chart-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
fill: var(--text-dim); fill: var(--text-dim);
} }
@@ -1525,7 +1525,7 @@
} }
.mesh-network-node-id { .mesh-network-node-id {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -1553,13 +1553,13 @@
} }
.mesh-network-neighbor-id { .mesh-network-neighbor-id {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
} }
.mesh-network-neighbor-snr { .mesh-network-neighbor-snr {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 600; font-weight: 600;
padding: 2px 6px; padding: 2px 6px;
@@ -1592,7 +1592,7 @@
.mesh-badge { .mesh-badge {
display: inline-block; display: inline-block;
padding: 3px 8px; padding: 3px 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
border-radius: 10px; border-radius: 10px;
+8 -8
View File
@@ -27,7 +27,7 @@
} }
.spy-stations-title { .spy-stations-title {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -101,7 +101,7 @@
} }
.spy-station-name { .spy-station-name {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 14px; font-size: 14px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -117,7 +117,7 @@
/* Type Badge */ /* Type Badge */
.spy-station-badge { .spy-station-badge {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
@@ -173,7 +173,7 @@
} }
.spy-meta-mode { .spy-meta-mode {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-orange); color: var(--accent-orange);
} }
@@ -186,7 +186,7 @@
} }
.spy-freq-list { .spy-freq-list {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
line-height: 1.6; line-height: 1.6;
@@ -199,7 +199,7 @@
} }
.spy-freq-item { .spy-freq-item {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -236,7 +236,7 @@
} }
.spy-freq-select { .spy-freq-select {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 6px 8px; padding: 6px 8px;
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -273,7 +273,7 @@
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
gap: 6px; gap: 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
font-weight: 600; font-weight: 600;
text-transform: uppercase; text-transform: uppercase;
+21 -21
View File
@@ -86,14 +86,14 @@
} }
.sstv-strip-status-text { .sstv-strip-status-text {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
text-transform: uppercase; text-transform: uppercase;
} }
.sstv-strip-btn { .sstv-strip-btn {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
padding: 5px 12px; padding: 5px 12px;
border: none; border: none;
@@ -137,7 +137,7 @@
} }
.sstv-strip-value { .sstv-strip-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -148,7 +148,7 @@
} }
.sstv-strip-label { .sstv-strip-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
color: var(--text-dim); color: var(--text-dim);
text-transform: uppercase; text-transform: uppercase;
@@ -165,7 +165,7 @@
.sstv-loc-input { .sstv-loc-input {
width: 70px; width: 70px;
padding: 4px 6px; padding: 4px 6px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
background: var(--bg-secondary); background: var(--bg-secondary);
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
@@ -236,7 +236,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -278,7 +278,7 @@
} }
.sstv-mode-label { .sstv-mode-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
color: var(--accent-cyan); color: var(--accent-cyan);
text-align: center; text-align: center;
@@ -300,7 +300,7 @@
} }
.sstv-status-message { .sstv-status-message {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
text-align: center; text-align: center;
@@ -362,14 +362,14 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
} }
.sstv-gallery-count { .sstv-gallery-count {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-cyan); color: var(--accent-cyan);
background: var(--bg-secondary); background: var(--bg-secondary);
@@ -416,7 +416,7 @@
} }
.sstv-image-mode { .sstv-image-mode {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: 600; font-weight: 600;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -424,7 +424,7 @@
} }
.sstv-image-timestamp { .sstv-image-timestamp {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
} }
@@ -500,7 +500,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 12px; gap: 12px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.sstv-map-label { .sstv-map-label {
@@ -526,7 +526,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 8px; gap: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.sstv-pass-label { .sstv-pass-label {
@@ -561,7 +561,7 @@
} }
.sstv-iss-label { .sstv-iss-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
font-weight: bold; font-weight: bold;
color: #ffcc00; color: #ffcc00;
@@ -607,7 +607,7 @@
padding: 10px 14px; padding: 10px 14px;
background: rgba(0, 0, 0, 0.2); background: rgba(0, 0, 0, 0.2);
border-bottom: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -635,7 +635,7 @@
} }
.sstv-countdown-value { .sstv-countdown-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 28px; font-size: 28px;
font-weight: 700; font-weight: 700;
color: var(--accent-cyan); color: var(--accent-cyan);
@@ -661,7 +661,7 @@
} }
.sstv-countdown-label { .sstv-countdown-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--text-dim); color: var(--text-dim);
text-transform: uppercase; text-transform: uppercase;
@@ -686,7 +686,7 @@
} }
.sstv-detail-label { .sstv-detail-label {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 8px; font-size: 8px;
color: var(--text-dim); color: var(--text-dim);
text-transform: uppercase; text-transform: uppercase;
@@ -694,7 +694,7 @@
} }
.sstv-detail-value { .sstv-detail-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
font-weight: 600; font-weight: 600;
color: var(--text-primary); color: var(--text-primary);
@@ -708,7 +708,7 @@
padding: 8px 14px; padding: 8px 14px;
background: rgba(0, 0, 0, 0.15); background: rgba(0, 0, 0, 0.15);
border-top: 1px solid var(--border-color); border-top: 1px solid var(--border-color);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 9px; font-size: 9px;
color: var(--text-dim); color: var(--text-dim);
text-transform: uppercase; text-transform: uppercase;
+3 -3
View File
@@ -167,7 +167,7 @@
} }
.tscm-privilege-warning .warning-action { .tscm-privilege-warning .warning-action {
margin-top: 4px; margin-top: 4px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 10px; font-size: 10px;
color: var(--accent-cyan); color: var(--accent-cyan);
background: rgba(0, 0, 0, 0.3); background: rgba(0, 0, 0, 0.3);
@@ -972,7 +972,7 @@
.known-device-id { .known-device-id {
font-size: 10px; font-size: 10px;
color: var(--text-muted); color: var(--text-muted);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.known-device-actions { .known-device-actions {
display: flex; display: flex;
@@ -1211,7 +1211,7 @@
color: var(--text-muted); color: var(--text-muted);
display: block; display: block;
margin-top: 4px; margin-top: 4px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.cap-can-list, .cap-cannot-list { .cap-can-list, .cap-cannot-list {
list-style: none; list-style: none;
+9
View File
@@ -3,6 +3,15 @@
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 */
+5 -5
View File
@@ -142,7 +142,7 @@ body {
border: 1px solid rgba(0, 212, 255, 0.3); border: 1px solid rgba(0, 212, 255, 0.3);
border-radius: 4px; border-radius: 4px;
padding: 4px 10px; padding: 4px 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -164,7 +164,7 @@ body {
display: flex; display: flex;
gap: 20px; gap: 20px;
align-items: center; align-items: center;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
@@ -457,7 +457,7 @@ body {
} }
.telemetry-value { .telemetry-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 12px; font-size: 12px;
color: var(--accent-cyan); color: var(--accent-cyan);
} }
@@ -543,7 +543,7 @@ body {
} }
.pass-time { .pass-time {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Bottom controls bar */ /* Bottom controls bar */
@@ -579,7 +579,7 @@ body {
border: 1px solid rgba(0, 212, 255, 0.3); border: 1px solid rgba(0, 212, 255, 0.3);
border-radius: 4px; border-radius: 4px;
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 11px; font-size: 11px;
} }
+1 -1
View File
@@ -364,7 +364,7 @@
} }
.about-version { .about-version {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
} }
+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: "JetBrains Mono", 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: "Terminus", 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: "JetBrains Mono", 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: "Terminus", 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: 'JetBrains Mono', monospace; color: var(--text-primary);">v${data.current_version}</span> <span style="font-family: 'Terminus', 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: 'JetBrains Mono', monospace; color: ${data.update_available ? 'var(--accent-green)' : 'var(--text-primary)'};">v${data.latest_version}</span> <span style="font-family: 'Terminus', 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 JetBrains Mono'; ctx.font = '8px Terminus';
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: 'JetBrains Mono', monospace; font-size: 10px;">${m}</span> <span style="font-family: 'Terminus', monospace; font-size: 10px;">${m}</span>
</label> </label>
`).join(''); `).join('');
} }
Binary file not shown.
+8 -8
View File
@@ -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 JetBrains Mono'; ctx.font = '10px Terminus';
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 JetBrains Mono'; ctx.font = '9px Terminus';
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 JetBrains Mono'; ctx.font = '10px Terminus';
ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY); ctx.fillText(`${rangeNm}nm`, centerX + r + 5, centerY);
}); });
@@ -2352,7 +2352,7 @@ ACARS: ${r.statistics.acarsMessages} messages`;
<details style="font-size: 11px;"> <details style="font-size: 11px;">
<summary style="cursor: pointer; margin-bottom: 8px;">Installation Instructions</summary> <summary style="cursor: pointer; margin-bottom: 8px;">Installation Instructions</summary>
<div style="background: rgba(0,0,0,0.1); padding: 10px; border-radius: 4px; margin-top: 5px;"> <div style="background: rgba(0,0,0,0.1); padding: 10px; border-radius: 4px; margin-top: 5px;">
<code style="display: block; white-space: pre-wrap; font-family: 'JetBrains Mono', monospace; font-size: 10px;">sudo apt install build-essential libsoapysdr-dev librtlsdr-dev <code style="display: block; white-space: pre-wrap; font-family: var(--font-mono); font-size: 10px;">sudo apt install build-essential libsoapysdr-dev librtlsdr-dev
git clone https://github.com/wiedehopf/readsb.git git clone https://github.com/wiedehopf/readsb.git
cd readsb cd readsb
make HAVE_SOAPYSDR=1 make HAVE_SOAPYSDR=1
@@ -4204,7 +4204,7 @@ sudo make install</code>
background: var(--bg-tertiary, #252525); background: var(--bg-tertiary, #252525);
} }
.squawk-current-code { .squawk-current-code {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-size: 32px; font-size: 32px;
font-weight: bold; font-weight: bold;
} }
@@ -4251,7 +4251,7 @@ sudo make install</code>
background: rgba(255, 0, 0, 0.2); background: rgba(255, 0, 0, 0.2);
} }
.squawk-ref-table .squawk-code { .squawk-ref-table .squawk-code {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-weight: bold; font-weight: bold;
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
} }
@@ -4399,7 +4399,7 @@ sudo make install</code>
flex-wrap: wrap; flex-wrap: wrap;
} }
.watchlist-value { .watchlist-value {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
font-weight: bold; font-weight: bold;
color: var(--accent-cyan, #00d4ff); color: var(--accent-cyan, #00d4ff);
font-size: 13px; font-size: 13px;
@@ -4467,7 +4467,7 @@ sudo make install</code>
padding: 4px 8px; padding: 4px 8px;
border-radius: 4px; border-radius: 4px;
font-size: 11px; font-size: 11px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
cursor: pointer; cursor: pointer;
} }
.agent-select-sm:focus { .agent-select-sm:focus {
+3 -3
View File
@@ -466,7 +466,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 "JetBrains Mono", monospace'; ctx.font = '12px "Terminus", monospace';
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2); ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
return; return;
} }
@@ -474,7 +474,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 "JetBrains Mono", monospace'; ctx.font = '12px "Terminus", monospace';
ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2); ctx.fillText(`No ${label.toLowerCase()} data`, 12, height / 2);
return; return;
} }
@@ -515,7 +515,7 @@
} }
ctx.fillStyle = 'rgba(226, 232, 240, 0.8)'; ctx.fillStyle = 'rgba(226, 232, 240, 0.8)';
ctx.font = '11px "JetBrains Mono", monospace'; ctx.font = '11px "Terminus", 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);
} }
+2 -2
View File
@@ -95,7 +95,7 @@
.agent-url { .agent-url {
font-size: 12px; font-size: 12px;
color: #888; color: #888;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
margin-bottom: 10px; margin-bottom: 10px;
} }
@@ -203,7 +203,7 @@
border: 1px solid var(--border-color); border: 1px solid var(--border-color);
border-radius: 4px; border-radius: 4px;
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.form-group input:focus { .form-group input:focus {
+1 -1
View File
@@ -1499,7 +1499,7 @@
padding: 4px 8px; padding: 4px 8px;
border-radius: 4px; border-radius: 4px;
font-size: 11px; font-size: 11px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
cursor: pointer; cursor: pointer;
} }
.agent-select-sm:focus { .agent-select-sm:focus {
+14 -14
View File
@@ -290,7 +290,7 @@
╚═════╝ ╚══════╝╚═╝ ╚═══╝╚═╝╚══════╝╚═════╝</pre> ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚═╝╚══════╝╚═════╝</pre>
<div style="margin: 25px 0; padding: 15px; background: #0a0a0a; border-left: 3px solid var(--accent-red);"> <div style="margin: 25px 0; padding: 15px; background: #0a0a0a; border-left: 3px solid var(--accent-red);">
<p <p
style="font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #888; text-align: left; margin: 0;"> style="font-family: var(--font-mono); font-size: 11px; color: #888; text-align: left; margin: 0;">
<span style="color: var(--accent-red);">root@intercepted:</span><span <span style="color: var(--accent-red);">root@intercepted:</span><span
style="color: var(--accent-cyan);">~#</span> sudo access --grant-permission<br> style="color: var(--accent-cyan);">~#</span> sudo access --grant-permission<br>
<span style="color: #666;">[sudo] password for user: ********</span><br> <span style="color: #666;">[sudo] password for user: ********</span><br>
@@ -989,7 +989,7 @@
style="color: var(--accent-orange); text-shadow: 0 0 10px var(--accent-orange); margin-bottom: 8px;"> style="color: var(--accent-orange); text-shadow: 0 0 10px var(--accent-orange); margin-bottom: 8px;">
PACKET LOG</h5> PACKET LOG</h5>
<div id="aprsPacketLog" <div id="aprsPacketLog"
style="flex: 1; overflow-y: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; background: rgba(0,0,0,0.3); padding: 8px; border-radius: 4px;"> style="flex: 1; overflow-y: auto; font-family: var(--font-mono); font-size: 10px; background: rgba(0,0,0,0.3); padding: 8px; border-radius: 4px;">
<div style="color: var(--text-muted);">Waiting for packets...</div> <div style="color: var(--text-muted);">Waiting for packets...</div>
</div> </div>
</div> </div>
@@ -1009,7 +1009,7 @@
STOPPED</div> STOPPED</div>
<div style="display: flex; justify-content: center; align-items: baseline; gap: 8px;"> <div style="display: flex; justify-content: center; align-items: baseline; gap: 8px;">
<div class="freq-digits" id="mainScannerFreq" <div class="freq-digits" id="mainScannerFreq"
style="font-size: 52px; font-weight: bold; color: var(--accent-cyan); text-shadow: 0 0 30px var(--accent-cyan); font-family: 'JetBrains Mono', monospace; letter-spacing: 3px;"> style="font-size: 52px; font-weight: bold; color: var(--accent-cyan); text-shadow: 0 0 30px var(--accent-cyan); font-family: var(--font-mono); letter-spacing: 3px;">
118.000</div> 118.000</div>
<span class="freq-unit" <span class="freq-unit"
style="font-size: 20px; color: var(--text-secondary); font-weight: 500;">MHz</span> style="font-size: 20px; color: var(--text-secondary); font-weight: 500;">MHz</span>
@@ -1237,7 +1237,7 @@
START</div> START</div>
<input type="number" id="radioScanStart" value="118" step="0.1" <input type="number" id="radioScanStart" value="118" step="0.1"
class="radio-input" class="radio-input"
style="width: 100%; font-size: 16px; padding: 8px 6px; text-align: center; font-family: 'JetBrains Mono', monospace; font-weight: bold; color: var(--accent-cyan);"> style="width: 100%; font-size: 16px; padding: 8px 6px; text-align: center; font-family: var(--font-mono); font-weight: bold; color: var(--accent-cyan);">
</div> </div>
<span <span
style="color: var(--text-muted); font-size: 16px; padding-top: 12px;">→</span> style="color: var(--text-muted); font-size: 16px; padding-top: 12px;">→</span>
@@ -1246,7 +1246,7 @@
END</div> END</div>
<input type="number" id="radioScanEnd" value="137" step="0.1" <input type="number" id="radioScanEnd" value="137" step="0.1"
class="radio-input" class="radio-input"
style="width: 100%; font-size: 16px; padding: 8px 6px; text-align: center; font-family: 'JetBrains Mono', monospace; font-weight: bold; color: var(--accent-cyan);"> style="width: 100%; font-size: 16px; padding: 8px 6px; text-align: center; font-family: var(--font-mono); font-weight: bold; color: var(--accent-cyan);">
</div> </div>
</div> </div>
</div> </div>
@@ -1312,19 +1312,19 @@
<div style="display: flex; align-items: center; justify-content: space-between;"> <div style="display: flex; align-items: center; justify-content: space-between;">
<span style="font-size: 9px; color: var(--text-muted);">SIGNALS</span> <span style="font-size: 9px; color: var(--text-muted);">SIGNALS</span>
<span <span
style="color: var(--accent-green); font-size: 18px; font-weight: bold; font-family: 'JetBrains Mono', monospace;" style="color: var(--accent-green); font-size: 18px; font-weight: bold; font-family: var(--font-mono);"
id="mainSignalCount">0</span> id="mainSignalCount">0</span>
</div> </div>
<div style="display: flex; align-items: center; justify-content: space-between;"> <div style="display: flex; align-items: center; justify-content: space-between;">
<span style="font-size: 9px; color: var(--text-muted);">SCANNED</span> <span style="font-size: 9px; color: var(--text-muted);">SCANNED</span>
<span <span
style="color: var(--accent-cyan); font-size: 18px; font-weight: bold; font-family: 'JetBrains Mono', monospace;" style="color: var(--accent-cyan); font-size: 18px; font-weight: bold; font-family: var(--font-mono);"
id="mainFreqsScanned">0</span> id="mainFreqsScanned">0</span>
</div> </div>
<div style="display: flex; align-items: center; justify-content: space-between;"> <div style="display: flex; align-items: center; justify-content: space-between;">
<span style="font-size: 9px; color: var(--text-muted);">CYCLES</span> <span style="font-size: 9px; color: var(--text-muted);">CYCLES</span>
<span <span
style="color: var(--accent-orange); font-size: 18px; font-weight: bold; font-family: 'JetBrains Mono', monospace;" style="color: var(--accent-orange); font-size: 18px; font-weight: bold; font-family: var(--font-mono);"
id="mainScanCycles">0</span> id="mainScanCycles">0</span>
</div> </div>
</div> </div>
@@ -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: "JetBrains Mono", 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: "Terminus", 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: "JetBrains Mono", 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: "Terminus", 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 JetBrains Mono'; ctx.font = 'bold 16px Terminus';
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 JetBrains Mono'; ctx.font = '10px Terminus';
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 JetBrains Mono'; ctx.font = '11px Terminus';
ctx.fillText(pass.satellite, maxX + 10, maxY - 5); ctx.fillText(pass.satellite, maxX + 10, maxY - 5);
} }
} }
@@ -12145,7 +12145,7 @@
<textarea id="tleInput" placeholder="ISS (ZARYA) <textarea id="tleInput" placeholder="ISS (ZARYA)
1 25544U 98067A 24001.50000000 .00016717 00000-0 10270-3 0 9002 1 25544U 98067A 24001.50000000 .00016717 00000-0 10270-3 0 9002
2 25544 51.6400 208.9163 0006703 296.5855 63.4606 15.49995465478450" 2 25544 51.6400 208.9163 0006703 296.5855 63.4606 15.49995465478450"
style="width: 100%; height: 150px; background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 4px; padding: 10px; font-family: 'JetBrains Mono', monospace; font-size: 11px; resize: vertical;"></textarea> style="width: 100%; height: 150px; background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border-color); border-radius: 4px; padding: 10px; font-family: var(--font-mono); font-size: 11px; resize: vertical;"></textarea>
<button class="preset-btn" onclick="addFromTLE()" style="margin-top: 10px; width: 100%;">Add <button class="preset-btn" onclick="addFromTLE()" style="margin-top: 10px; width: 100%;">Add
Satellite</button> Satellite</button>
</div> </div>
+9 -9
View File
@@ -111,7 +111,7 @@
.status-value { .status-value {
color: var(--text-primary); color: var(--text-primary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.main-grid { .main-grid {
@@ -154,7 +154,7 @@
background: rgba(0, 212, 255, 0.2); background: rgba(0, 212, 255, 0.2);
color: var(--accent-cyan); color: var(--accent-cyan);
border-radius: 10px; border-radius: 10px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.panel-tabs { .panel-tabs {
@@ -224,7 +224,7 @@
} }
.mono { .mono {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.source-badges { .source-badges {
@@ -242,7 +242,7 @@
background: rgba(0, 212, 255, 0.15); background: rgba(0, 212, 255, 0.15);
color: var(--accent-cyan); color: var(--accent-cyan);
border-radius: 8px; border-radius: 8px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.source-badge .dot { .source-badge .dot {
@@ -362,7 +362,7 @@
.agent-url { .agent-url {
font-size: 10px; font-size: 10px;
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -379,7 +379,7 @@
.agent-stat-value { .agent-stat-value {
color: var(--accent-cyan); color: var(--accent-cyan);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
/* Event log */ /* Event log */
@@ -398,7 +398,7 @@
overflow-y: auto; overflow-y: auto;
padding: 10px; padding: 10px;
font-size: 11px; font-size: 11px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.event-entry { .event-entry {
@@ -459,13 +459,13 @@
} }
.location-coords { .location-coords {
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
color: var(--text-primary); color: var(--text-primary);
} }
.location-accuracy { .location-accuracy {
color: var(--text-secondary); color: var(--text-secondary);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.location-badge { .location-badge {
+1 -1
View File
@@ -19,7 +19,7 @@
</div> </div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;"> <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Frequency</span> <span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Frequency</span>
<span id="lpQuickFreq" style="font-size: 14px; font-family: 'JetBrains Mono', monospace; color: var(--text-primary);">---.--- MHz</span> <span id="lpQuickFreq" style="font-size: 14px; font-family: var(--font-mono); color: var(--text-primary);">---.--- MHz</span>
</div> </div>
<div style="display: flex; justify-content: space-between; align-items: center;"> <div style="display: flex; justify-content: space-between; align-items: center;">
<span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Signals</span> <span style="font-size: 10px; color: var(--text-muted); text-transform: uppercase;">Signals</span>
+3 -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, JetBrains Mono</span> <span class="settings-label-desc">Inter, Terminus</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">JetBrains Mono</span> <span class="asset-name">Terminus</span>
<span class="asset-badge checking" id="statusJetbrains">Checking...</span> <span class="asset-badge checking" id="statusJetbrains">Checking...</span>
</div> </div>
</div> </div>
@@ -168,7 +168,7 @@
<div class="settings-group"> <div class="settings-group">
<div class="settings-group-title">Current Location</div> <div class="settings-group-title">Current Location</div>
<div id="currentLocationDisplay" style="padding: 12px; background: var(--bg-tertiary); border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-size: 12px;"> <div id="currentLocationDisplay" style="padding: 12px; background: var(--bg-tertiary); border-radius: 6px; font-family: var(--font-mono); font-size: 12px;">
<div style="display: flex; justify-content: space-between; margin-bottom: 6px;"> <div style="display: flex; justify-content: space-between; margin-bottom: 6px;">
<span style="color: var(--text-dim);">Latitude</span> <span style="color: var(--text-dim);">Latitude</span>
<span id="currentLatDisplay" style="color: var(--accent-cyan);">Not set</span> <span id="currentLatDisplay" style="color: var(--accent-cyan);">Not set</span>
+6 -6
View File
@@ -221,7 +221,7 @@
.location-label { .location-label {
font-size: 11px; font-size: 11px;
color: var(--text-secondary, #8899aa); color: var(--text-secondary, #8899aa);
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
} }
.location-select { .location-select {
background: rgba(0, 40, 60, 0.8); background: rgba(0, 40, 60, 0.8);
@@ -230,7 +230,7 @@
padding: 4px 8px; padding: 4px 8px;
border-radius: 4px; border-radius: 4px;
font-size: 11px; font-size: 11px;
font-family: 'JetBrains Mono', monospace; font-family: var(--font-mono);
cursor: pointer; cursor: pointer;
min-width: 140px; min-width: 140px;
} }
@@ -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 JetBrains Mono'; ctx.font = '10px Terminus';
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 JetBrains Mono'; ctx.font = '10px Terminus';
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 JetBrains Mono'; ctx.font = '10px Terminus';
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 JetBrains Mono'; ctx.font = '10px Terminus';
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);
} }