@@ -438,10 +438,10 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
438438
439439 <!-- Target List -->
440440 <details open>
441- <summary style="cursor:pointer;font-weight:bold;color:var(--accent );margin-bottom:8px;"><span>▶</span> Target List</summary>
441+ <summary style="cursor:pointer;font-weight:bold;color:var(--acc );margin-bottom:8px;"><span>▶</span> Target List</summary>
442442 <form id="f" method="POST" action="/save">
443443 <textarea id="list" name="list" placeholder="AA:BB:CC AA:BB:CC:DD:EE:FF" rows="3"></textarea>
444- <div id="targetCount" style="margin:4px 0 8px;color:var(--muted );font-size:11px;">0 targets</div>
444+ <div id="targetCount" style="margin:4px 0 8px;color:var(--mut );font-size:11px;">0 targets</div>
445445 <div style="display:flex;gap:8px;">
446446 <button class="btn primary" type="submit">Save</button>
447447 <a class="btn alt" href="/export" download="targets.txt" data-ajax="false">Export</a>
@@ -451,10 +451,10 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
451451
452452 <!-- Allowlist -->
453453 <details style="margin-top:12px;">
454- <summary style="cursor:pointer;font-weight:bold;color:var(--accent );margin-bottom:8px;"><span>▶</span> Allow List</summary>
454+ <summary style="cursor:pointer;font-weight:bold;color:var(--acc );margin-bottom:8px;"><span>▶</span> Allow List</summary>
455455 <form id="af" method="POST" action="/allowlist-save">
456456 <textarea id="wlist" name="list" placeholder="DD:EE:FF 11:22:33:44:55:66" rows="3"></textarea>
457- <div id="allowlistCount" style="margin:4px 0 8px;color:var(--muted );font-size:11px;">0 allowlisted</div>
457+ <div id="allowlistCount" style="margin:4px 0 8px;color:var(--mut );font-size:11px;">0 allowlisted</div>
458458 <div style="display:flex;gap:8px;">
459459 <button class="btn primary" type="submit">Save</button>
460460 <a class="btn alt" href="/allowlist-export" download="allowlist.txt" data-ajax="false">Export</a>
@@ -501,18 +501,18 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
501501
502502 <label style="font-size:11px;margin-top:12px;display:block;">Distance Tuning</label>
503503 <div style="margin-bottom:6px;">
504- <label style="font-size:10px;color:var(--muted );">WiFi: <span id="wifiPwrDisplay">1.0x</span></label>
504+ <label style="font-size:10px;color:var(--mut );">WiFi: <span id="wifiPwrDisplay">1.0x</span></label>
505505 <input type="range" name="wifiPwr" id="wifiPwrSlider" min="0.1" max="5.0" step="0.1" value="1.0"
506506 oninput="document.getElementById('wifiPwrDisplay').innerText = this.value + 'x'"
507507 style="width:100%;">
508508 </div>
509509 <div style="margin-bottom:4px;">
510- <label style="font-size:10px;color:var(--muted );">BLE: <span id="blePwrDisplay">1.0x</span></label>
510+ <label style="font-size:10px;color:var(--mut );">BLE: <span id="blePwrDisplay">1.0x</span></label>
511511 <input type="range" name="blePwr" id="blePwrSlider" min="0.1" max="5.0" step="0.1" value="1.0"
512512 oninput="document.getElementById('blePwrDisplay').innerText = this.value + 'x'"
513513 style="width:100%;">
514514 </div>
515- <p style="font-size:9px;color:var(--muted );margin:4px 0 0 0;"><1.0 closer | >1.0 farther</p>
515+ <p style="font-size:9px;color:var(--mut );margin:4px 0 0 0;"><1.0 closer | >1.0 farther</p>
516516 </div>
517517
518518 <button class="btn primary" type="submit" style="width:100%;">Start Scan</button>
@@ -600,15 +600,15 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
600600
601601 <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:8px;">
602602 <div>
603- <label style="font-size:10px;color:var(--muted );" title="Time a device must be unseen before marked as disappeared from baseline">Marked Absent (s)</label>
603+ <label style="font-size:10px;color:var(--mut );" title="Time a device must be unseen before marked as disappeared from baseline">Marked Absent (s)</label>
604604 <input type="number" id="absenceThreshold" min="30" max="600" value="120" style="padding:4px;font-size:11px;">
605605 </div>
606606 <div>
607- <label style="font-size:10px;color:var(--muted );" title="Window after disappearance during which reappearance triggers an anomaly alert">Seen Reappear (s)</label>
607+ <label style="font-size:10px;color:var(--mut );" title="Window after disappearance during which reappearance triggers an anomaly alert">Seen Reappear (s)</label>
608608 <input type="number" id="reappearanceWindow" min="60" max="1800" value="300" style="padding:4px;font-size:11px;">
609609 </div>
610610 <div>
611- <label style="font-size:10px;color:var(--muted );" title="Minimum RSSI change in dBm to flag as significant signal strength variation">RSSI Variation dB</label>
611+ <label style="font-size:10px;color:var(--mut );" title="Minimum RSSI change in dBm to flag as significant signal strength variation">RSSI Variation dB</label>
612612 <input type="number" id="rssiChangeDelta" min="5" max="50" value="20" style="padding:4px;font-size:11px;">
613613 </div>
614614 </div>
@@ -619,8 +619,8 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
619619 <input type="checkbox" id="foreverBaseline" name="forever" value="1" style="width:auto;margin:0;">
620620 <span>Forever</span>
621621 </label>
622- <div id="baselineStatus" style="padding:8px;background:var(--card );border:1px solid #888 ;border-radius:6px;font-size:11px;margin-bottom:8px;">
623- <div style="color:#888 ;">No baseline data</div>
622+ <div id="baselineStatus" style="padding:8px;background:var(--surf );border:1px solid var(--bord) ;border-radius:6px;font-size:11px;margin-bottom:8px;">
623+ <div style="color:var(--mut) ;">No baseline data</div>
624624 </div>
625625 </div>
626626
@@ -648,9 +648,9 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
648648 oninput="document.getElementById('globalRssiValue').innerText = this.value + ' dBm'">
649649 <span id="globalRssiValue" style="font-size:12px;min-width:70px;">-90 dBm</span>
650650 </div>
651- <p style="font-size:10px;color:var(--muted );margin-bottom:12px;">Filters weak signals (triangulation exempt)</p>
651+ <p style="font-size:10px;color:var(--mut );margin-bottom:12px;">Filters weak signals (triangulation exempt)</p>
652652
653- <hr style="margin:12px 0;border:none;border-top:1px solid var(--border );">
653+ <hr style="margin:12px 0;border:none;border-top:1px solid var(--bord );">
654654
655655 <select id="rfPreset" onchange="updateRFPresetUI()">
656656 <option value="0">Relaxed (Stealthy)</option>
@@ -662,33 +662,33 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
662662 <div id="customRFSettings" style="display:none;margin-top:10px;">
663663 <div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;">
664664 <div>
665- <label style="font-size:10px;color:var(--muted );">WiFi Channel Time (ms)</label>
665+ <label style="font-size:10px;color:var(--mut );">WiFi Channel Time (ms)</label>
666666 <input type="number" id="wifiChannelTime" min="110" max="300" value="120" style="padding:4px;font-size:11px;">
667667 </div>
668668 <div>
669- <label style="font-size:10px;color:var(--muted );">WiFi Scan Interval (ms)</label>
669+ <label style="font-size:10px;color:var(--mut );">WiFi Scan Interval (ms)</label>
670670 <input type="number" id="wifiScanInterval" min="1000" max="10000" value="4000" style="padding:4px;font-size:11px;">
671671 </div>
672672 </div>
673673 <div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;">
674674 <div>
675- <label style="font-size:10px;color:var(--muted );">BLE Scan Duration (ms)</label>
675+ <label style="font-size:10px;color:var(--mut );">BLE Scan Duration (ms)</label>
676676 <input type="number" id="bleScanDuration" min="1000" max="5000" value="2000" style="padding:4px;font-size:11px;">
677677 </div>
678678 <div>
679- <label style="font-size:10px;color:var(--muted );">BLE Scan Interval (ms)</label>
679+ <label style="font-size:10px;color:var(--mut );">BLE Scan Interval (ms)</label>
680680 <input type="number" id="bleScanInterval" min="1000" max="10000" value="2000" style="padding:4px;font-size:11px;">
681681 </div>
682682 </div>
683683 <div style="margin-bottom:8px;">
684- <label style="font-size:10px;color:var(--muted );">WiFi Channels</label>
684+ <label style="font-size:10px;color:var(--mut );">WiFi Channels</label>
685685 <input type="text" id="wifiChannels" placeholder="1..14" value="1..14" style="padding:4px;font-size:11px;">
686686 </div>
687687 </div>
688688 </div>
689689 <button class="btn primary" type="button" onclick="saveRFConfig()" style="width:100%;margin-top:8px;">Save RF Settings</button>
690690
691- <hr style="margin:16px 0;border:none;border-top:1px solid var(--border );">
691+ <hr style="margin:16px 0;border:none;border-top:1px solid var(--bord );">
692692 <div class="card-header" onclick="toggleCollapse('wifiApCard')" style="cursor:pointer;padding:0;margin-bottom:12px;border:none;background:none;box-shadow:none;">
693693 <h4 style="margin:0;font-size:13px;">WiFi Access Point</h4>
694694 <span class="collapse-icon" id="wifiApCardIcon">▶</span>
@@ -708,7 +708,7 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
708708 <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:12px;">
709709 <h3 style="margin:0;">Scan Results</h3>
710710 <div style="display:flex;gap:8px;align-items:center;">
711- <label style="font-size:11px;color:var(--muted );">Sort:</label>
711+ <label style="font-size:11px;color:var(--mut );">Sort:</label>
712712 <select id="sortBy" onchange="applySorting()" style="padding:6px 8px;border-radius:6px;font-size:11px;">
713713 <option value="default">Default</option>
714714 <option value="rssi-desc">RSSI (Strongest)</option>
@@ -828,11 +828,11 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
828828 </div>
829829 </form>
830830
831- <div id="eraseStatus" style="display:none;margin-top:10px;padding:8px;background:var(--card );border:1px solid #003b24 ;border-radius:6px;font-size:12px;"></div>
831+ <div id="eraseStatus" style="display:none;margin-top:10px;padding:8px;background:var(--surf );border:1px solid var(--bord) ;border-radius:6px;font-size:12px;"></div>
832832
833833 <div style="margin-top:16px;">
834834 <div style="display:flex;align-items:center;gap:8px;margin-bottom:12px;">
835- <span style="font-weight:bold;color:var(--accent );">Auto-Erase Configuration</span>
835+ <span style="font-weight:bold;color:var(--acc );">Auto-Erase Configuration</span>
836836 <span style="cursor:help;padding:2px 6px;background:rgba(74,144,226,0.2);border:1px solid #4a90e2;border-radius:4px;font-size:10px;" onclick="showAutoEraseHelp()" title="Click for help">?</span>
837837 </div>
838838
@@ -1306,25 +1306,25 @@ static const char INDEX_HTML[] PROGMEM = R"HTML(
13061306 if (stats.scanning && !stats.phase1Complete) {
13071307 // Phase 1: Establishing baseline
13081308 const progress = Math.min(100, (stats.elapsedTime / stats.totalDuration) * 100);
1309- statusHTML = '<div style="color:#00cc66 ;font-weight:bold;">⬤ Phase 1: Establishing Baseline...</div>';
1310- progressHTML = '<div style="margin-top:10px;">' + '<div style="display:flex;justify-content:space-between;margin-bottom:4px;font-size:11px;">' + '<span>Progress</span>' + '<span>' + Math.floor(progress) + '%</span>' + '</div>' + '<div style="width:100%;height:6px;background:#001a10 ;border-radius:3px;overflow:hidden;">' + '<div style="height:100%;width:' + progress + '%;background:linear-gradient(90deg,#00cc66,#0aff9d );transition:width 0.5s;"></div>' + '</div>' + '</div>';
1309+ statusHTML = '<div style="color:var(--succ) ;font-weight:bold;">⬤ Phase 1: Establishing Baseline...</div>';
1310+ progressHTML = '<div style="margin-top:10px;">' + '<div style="display:flex;justify-content:space-between;margin-bottom:4px;font-size:11px;">' + '<span>Progress</span>' + '<span>' + Math.floor(progress) + '%</span>' + '</div>' + '<div style="width:100%;height:6px;background:var(--bord) ;border-radius:3px;overflow:hidden;">' + '<div style="height:100%;width:' + progress + '%;background:linear-gradient(90deg,var(--succ),var(--acc) );transition:width 0.5s;"></div>' + '</div>' + '</div>';
13111311 } else if (stats.scanning && stats.phase1Complete) {
13121312 // Phase 2: Monitoring - add active status indicator
1313- statusHTML = '<div style="color:#0aff9d ;font-weight:bold;">⬤ Phase 2: Monitoring for Anomalies</div>';
1313+ statusHTML = '<div style="color:var(--acc) ;font-weight:bold;">⬤ Phase 2: Monitoring for Anomalies</div>';
13141314 // Add elapsed time indicator for Phase 2
13151315 const monitorTime = Math.floor(stats.elapsedTime / 1000);
13161316 const monitorMins = Math.floor(monitorTime / 60);
13171317 const monitorSecs = monitorTime % 60;
1318- progressHTML = '<div style="margin-top:10px;color:#00cc66 ;font-size:11px;">' + 'Active monitoring: ' + monitorMins + 'm ' + monitorSecs + 's' + '</div>';
1318+ progressHTML = '<div style="margin-top:10px;color:var(--succ) ;font-size:11px;">' + 'Active monitoring: ' + monitorMins + 'm ' + monitorSecs + 's' + '</div>';
13191319 } else if (stats.established) {
13201320 // Complete
1321- statusHTML = '<div style="color:#00cc66 ;">✓ Baseline Complete</div>';
1321+ statusHTML = '<div style="color:var(--succ) ;">✓ Baseline Complete</div>';
13221322 } else {
1323- statusHTML = '<div style="color:#888 ;">No baseline data</div>';
1323+ statusHTML = '<div style="color:var(--mut) ;">No baseline data</div>';
13241324 }
13251325 let statsHTML = '';
13261326 if (stats.scanning) {
1327- statsHTML = '<div style="margin-top:12px;padding:10px;background:#000;border:1px solid #003b24;border-radius:8px;">' + '<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:11px;">' + '<div>' + '<div style="color:var(--muted);">WiFi Devices</div>' + '<div style="color:var(--fg);font-size:16px;font-weight:bold;">' + stats.wifiDevices + '</div>' + '<div style="color:var(--muted);font-size:10px;">' + stats.wifiHits + ' frames</div>' + '</div>' + '<div>' + '<div style="color:var(--muted);">BLE Devices</div>' + '<div style="color:var(--fg);font-size:16px;font-weight:bold;">' + stats.bleDevices + '</div>' + '<div style="color:var(--muted);font-size:10px;">' + stats.bleHits + ' frames</div>' + '</div>' + '<div>' + '<div style="color:var(--muted);">Total Devices</div>' + '<div style="color:var(--accent);font-size:16px;font-weight:bold;">' + stats.totalDevices + '</div>' + '</div>' + '<div>' + '<div style="color:var(--muted);">Anomalies</div>' + '<div style="color:' + (stats.anomalies > 0 ? '#ff6666' : 'var(--fg)') + ';font-size:16px;font-weight:bold;">' + stats.anomalies + '</div>' + '</div>' + '</div>' + '</div>';
1327+ statsHTML = '<div style="margin-top:12px;padding:10px;background:var(--surf);border:1px solid var(--bord);border-radius:8px;">' + '<div style="display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:11px;">' + '<div>' + '<div style="color:var(--mut);">WiFi Devices</div>' + '<div style="color:var(--txt);font-size:16px;font-weight:bold;">' + stats.wifiDevices + '</div>' + '<div style="color:var(--mut);font-size:10px;">' + stats.wifiHits + ' frames</div>' + '</div>' + '<div>' + '<div style="color:var(--mut);">BLE Devices</div>' + '<div style="color:var(--txt);font-size:16px;font-weight:bold;">' + stats.bleDevices + '</div>' + '<div style="color:var(--mut);font-size:10px;">' + stats.bleHits + ' frames</div>' + '</div>' + '<div>' + '<div style="color:var(--mut);">Total Devices</div>' + '<div style="color:var(--acc);font-size:16px;font-weight:bold;">' + stats.totalDevices + '</div>' + '</div>' + '<div>' + '<div style="color:var(--mut);">Anomalies</div>' + '<div style="color:' + (stats.anomalies > 0 ? 'var(--dang)' : 'var(--txt)') + ';font-size:16px;font-weight:bold;">' + stats.anomalies + '</div>' + '</div>' + '</div>' + '</div>';
13281328 }
13291329 statusDiv.innerHTML = statusHTML + progressHTML + statsHTML;
13301330 const startDetectionBtn = document.getElementById('startDetectionBtn');
0 commit comments