/* Extracted from main.cpp */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0a0e1a;--bg2:#111827;--surface:rgba(255,255,255,0.04);
  --border:rgba(255,255,255,0.06);--text:#e2e8f0;--text2:#94a3b8;
  --accent:#38bdf8;--accent2:#818cf8;--green:#34d399;--red:#f87171;
  --orange:#fb923c;--yellow:#fbbf24;
  --glow:0 0 40px rgba(56,189,248,0.15);
}
html{font-size:16px}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden}
body::before{content:'';position:fixed;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(ellipse at 30% 20%,rgba(56,189,248,0.06) 0%,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(129,140,248,0.04) 0%,transparent 50%);pointer-events:none;z-index:0}

.app{position:relative;z-index:1;max-width:960px;margin:0 auto;padding:24px 16px}
header{text-align:center;margin-bottom:12px}
header h1{font-size:1.5rem;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-0.02em}
header p{font-size:.8rem;color:var(--text2);margin-top:4px;font-weight:400}

.tab-nav a{flex:1;text-align:center;padding:8px 16px;border-radius:8px;font-size:.8rem;font-weight:600;color:var(--text2);text-decoration:none;transition:all .3s}
.tab-nav a.active{background:rgba(56,189,248,0.15);color:var(--accent);box-shadow:0 0 12px rgba(56,189,248,0.1)}
.tab-nav a:hover:not(.active){color:var(--text);background:rgba(255,255,255,0.03)}

.status-bar{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:28px}
.status-dot{width:8px;height:8px;border-radius:50%;background:var(--red);flex-shrink:0;transition:background .4s}
.status-dot.ok{background:var(--green);box-shadow:0 0 8px rgba(52,211,153,0.5);animation:pulse-dot 2s infinite}
.status-text{font-size:.75rem;color:var(--text2);font-weight:500}
@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.5}}

.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:600px){.grid{grid-template-columns:1fr}}

.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;backdrop-filter:blur(12px);position:relative;overflow:hidden;transition:border-color .3s}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.08),transparent)}
.card:hover{border-color:rgba(255,255,255,0.1)}
.card-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text2);margin-bottom:16px}

.card.full{grid-column:1/-1}

/* GAUGE */
.gauge-wrap{display:flex;flex-direction:column;align-items:center}
.gauge-svg{width:100%;max-width:220px}
.gauge-value{font-family:'JetBrains Mono',monospace;font-size:2.4rem;font-weight:600;margin-top:-8px;line-height:1}
.gauge-label{font-size:.75rem;color:var(--text2);margin-top:4px}

/* COMPASS */
.compass-wrap{display:flex;flex-direction:column;align-items:center}
.compass-svg{width:100%;max-width:220px}
.compass-value{font-family:'JetBrains Mono',monospace;font-size:2.4rem;font-weight:600;margin-top:-8px;line-height:1}
.compass-label{font-size:.75rem;color:var(--text2);margin-top:4px}

/* INFO CARDS */
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:400px){.info-grid{grid-template-columns:1fr}}
.info-item{background:rgba(255,255,255,0.02);border:1px solid var(--border);border-radius:12px;padding:16px;text-align:center}
.info-val{font-family:'JetBrains Mono',monospace;font-size:1.3rem;font-weight:600;color:var(--accent)}
.info-lbl{font-size:.65rem;color:var(--text2);margin-top:4px;text-transform:uppercase;letter-spacing:.08em}

/* HISTORY */
.history-canvas{width:100%;height:120px;border-radius:8px}

footer{text-align:center;margin-top:32px;font-size:.65rem;color:var(--text2);opacity:.5}
