.wg-json { font-size: 12px; line-height: 1.45; padding: 12px; border-radius: 6px;
  background: rgba(15, 76, 92, .06); max-height: 480px; overflow: auto; white-space: pre; }
.wg-table { border-collapse: collapse; font-size: 13px; }
.wg-table th, .wg-table td { padding: 4px 14px 4px 0; text-align: left; vertical-align: top; }
.wg-table th { font-weight: 600; white-space: nowrap; }
.wg-warn { color: #b45309; font-weight: 600; }
.wg-danger { color: #b91c1c; font-weight: 600; }
.wg-warning { color: #b45309; font-weight: 600; }

/* --- Pods console ------------------------------------------------------ */
.wg { --wg-teal:#0f4c5c; --wg-amber:#d97706; --wg-line:#e5e7eb; --wg-card:#fff; --wg-muted:#6b7280;
      --wg-soft:#f0f9fa; display:flex; flex-direction:column; gap:28px; max-width:1100px; }
.dark .wg { --wg-line:#2a2f37; --wg-card:#111827; --wg-muted:#9ca3af; --wg-soft:#0b2a31; }
.wg h1 { font-size:20px; font-weight:650; margin:0; }
.wg-sub { color:var(--wg-muted); margin:4px 0 0; }
.wg-head { display:flex; justify-content:space-between; align-items:flex-end; gap:16px; margin-bottom:12px; }
.wg-listening { display:inline-flex; align-items:center; gap:8px; font-size:13px; color:var(--wg-muted); white-space:nowrap; }
.wg-link { color:var(--wg-teal); font-weight:600; white-space:nowrap; }
.dark .wg-link { color:#5fb8c6; }
.wg-card { display:grid; grid-template-columns: minmax(220px,1.2fr) minmax(260px,1.4fr) auto; gap:16px; align-items:center;
  padding:16px 18px; border:1px solid var(--wg-line); border-left:4px solid var(--wg-amber); border-radius:10px;
  background:var(--wg-card); margin-bottom:10px; }
.wg-card-alert { border-left-color:#b91c1c; grid-template-columns: 1fr auto; }
.wg-title { display:flex; align-items:center; gap:8px; font-weight:650; font-size:15px; }
.wg-meta { color:var(--wg-muted); font-size:13px; margin-top:4px; }
.wg-chip { font-weight:500; font-size:12px; padding:2px 8px; border-radius:999px; background:var(--wg-soft); color:var(--wg-teal); }
.dark .wg-chip { color:#5fb8c6; }
.wg-fields { display:flex; gap:10px; }
.wg-fields label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--wg-muted); flex:1; }
.wg-fields input, .wg-fields select { height:36px; padding:0 10px; border:1px solid var(--wg-line); border-radius:8px;
  background:transparent; color:inherit; font-size:14px; }
.wg-fields input[name=new_site] { margin-top:6px; }
.wg-actions { display:flex; gap:8px; align-items:center; }
.wg-actions form { margin:0; }
.wg-btn { display:inline-flex; align-items:center; gap:6px; height:36px; padding:0 14px; border-radius:8px;
  border:1px solid var(--wg-line); background:transparent; font-weight:600; cursor:pointer; color:inherit; }
.wg-btn .material-symbols-outlined { font-size:18px; }
.wg-btn-primary { background:var(--wg-teal); border-color:var(--wg-teal); color:#fff; }
.wg-btn-primary:hover { filter:brightness(1.15); }
.wg-btn-quiet { border-color:transparent; color:var(--wg-muted); font-weight:500; }
.wg-empty { display:flex; gap:14px; align-items:center; padding:22px; border:1px dashed var(--wg-line);
  border-radius:10px; color:var(--wg-muted); }
.wg-empty .material-symbols-outlined { font-size:32px; color:var(--wg-teal); }
.wg-dot { width:10px; height:10px; border-radius:50%; display:inline-block; flex:none; }
.wg-dot-on { background:#16a34a; }
.wg-dot-bad { background:#dc2626; }
.wg-dot-off { background:#9ca3af; }
.wg-dot-live { background:#16a34a; box-shadow:0 0 0 0 rgba(22,163,74,.6); animation:wg-pulse 1.6s infinite; }
@keyframes wg-pulse { 0%{box-shadow:0 0 0 0 rgba(22,163,74,.55)} 70%{box-shadow:0 0 0 9px rgba(22,163,74,0)} 100%{box-shadow:0 0 0 0 rgba(22,163,74,0)} }
.wg-ok { color:#16a34a; font-weight:600; }
.wg-muted { color:var(--wg-muted); font-size:12px; margin-left:4px; }
.wg-fleet { width:100%; border-collapse:separate; border-spacing:0; border:1px solid var(--wg-line); border-radius:10px; overflow:hidden; }
.wg-fleet th { text-align:left; font-size:12px; text-transform:uppercase; letter-spacing:.04em; color:var(--wg-muted);
  padding:10px 14px; border-bottom:1px solid var(--wg-line); }
.wg-fleet td { padding:12px 14px; border-bottom:1px solid var(--wg-line); }
.wg-fleet tr:last-child td { border-bottom:0; }
.wg-fleet tbody tr { cursor:pointer; }
.wg-fleet tbody tr:hover { background:var(--wg-soft); }
.wg-tag { display:inline-block; font-size:12px; font-weight:600; padding:2px 8px; border-radius:6px; margin-right:4px; }
.wg-tag-ok { background:#dcfce7; color:#166534; }
.wg-tag-bad { background:#fee2e2; color:#991b1b; }
.wg-tag-warn { background:#fef3c7; color:#92400e; }
.wg-tag-info { background:#e0f2fe; color:#075985; }
.wg-help { color:var(--wg-muted); font-size:13px; }
.wg-help summary { cursor:pointer; font-weight:600; }
.wg-help code { font-size:12px; }
@media (max-width: 900px) { .wg-card { grid-template-columns:1fr; } .wg-fields { flex-direction:column; } }

/* --- Schedule & settings ------------------------------------------------- */
.wg h2 { font-size:16px; font-weight:650; margin:0; display:flex; align-items:center; gap:8px; }
.wg-form { display:flex; flex-direction:column; gap:18px; }
.wg-panel { border:1px solid var(--wg-line); border-radius:12px; padding:18px 20px; background:var(--wg-card);
  display:flex; flex-direction:column; gap:14px; }
.wg-panel-head { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
.wg-seg { display:inline-flex; border:1px solid var(--wg-line); border-radius:8px; overflow:hidden; font-size:13px; }
.wg-seg label { padding:6px 12px; cursor:pointer; display:flex; align-items:center; gap:6px; }
.wg-seg label:has(input:checked) { background:var(--wg-teal); color:#fff; }
.wg-seg input { display:none; }
.wg-inherited { padding:10px 14px; border-radius:8px; background:var(--wg-soft); font-size:14px; }
.wg-choice { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.wg-option { display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border:1px solid var(--wg-line);
  border-radius:10px; cursor:pointer; }
.wg-option:has(input:checked) { border-color:var(--wg-teal); box-shadow:0 0 0 1px var(--wg-teal); background:var(--wg-soft); }
.wg-option small, .wg-field small { color:var(--wg-muted); font-size:12px; }
.wg-option input { margin-top:3px; accent-color:var(--wg-teal); }
.wg-grid { display:grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap:16px; margin-top:4px; }
.wg-field { display:flex; flex-direction:column; gap:6px; }
.wg-field > span { font-size:12px; font-weight:600; color:var(--wg-muted); text-transform:uppercase; letter-spacing:.04em; }
.wg-field input:not([type=checkbox]), .wg-field select { height:38px; padding:0 10px; border:1px solid var(--wg-line);
  border-radius:8px; background:transparent; color:inherit; font-size:14px; min-width:0; }
.wg-field input[type=number] { width:80px; }
.wg-narrow { max-width:420px; }
.wg-row { display:flex; align-items:center; gap:8px; }
.wg-and { color:var(--wg-muted); }
.wg-check { display:flex; align-items:center; gap:6px; font-size:13px; }
.wg-check input { accent-color:var(--wg-teal); }
.wg-timeline { margin-top:6px; }
.wg-track { position:relative; height:30px; border-radius:8px; background:var(--wg-soft); border:1px solid var(--wg-line); overflow:hidden; }
.wg-track i { position:absolute; top:4px; bottom:4px; background:var(--wg-amber); border-radius:3px; }
.wg-hours { display:flex; justify-content:space-between; font-size:11px; color:var(--wg-muted); margin-top:4px; }
.wg-summary { margin:8px 0 0; font-weight:600; }
.wg-savebar { display:flex; justify-content:space-between; align-items:center; gap:12px; padding-top:4px; }
.wg-banner { display:flex; gap:10px; align-items:center; padding:12px 16px; border-radius:10px; font-size:14px; }
.wg-banner-in_sync { background:#dcfce7; color:#166534; }
.wg-banner-pending { background:#e0f2fe; color:#075985; }
.wg-banner-failed { background:#fee2e2; color:#991b1b; align-items:flex-start; }
.wg-banner-none { background:var(--wg-soft); }
.wg-sched { display:inline-flex; align-items:center; gap:4px; color:var(--wg-teal); font-size:13px; }
.wg-sched .material-symbols-outlined { font-size:16px; }
.dark .wg-sched { color:#5fb8c6; }
[hidden] { display:none !important; }
@media (max-width: 900px) { .wg-grid, .wg-choice { grid-template-columns:1fr; } }

/* --- Pod overview ---------------------------------------------------------- */
.wg-wide { max-width:1240px; }
.wg-podhead { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; flex-wrap:wrap; margin-top:6px; }
.wg-podhead h1 { display:flex; align-items:center; gap:10px; font-size:24px; }
.wg-issues { margin-top:8px; }
.wg-tiles { display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:12px; }
.wg-tile { border:1px solid var(--wg-line); border-radius:12px; padding:14px 16px; background:var(--wg-card);
  border-top:3px solid var(--wg-line); }
.wg-tile-ok { border-top-color:#16a34a; }
.wg-tile-warn { border-top-color:#d97706; }
.wg-tile-bad { border-top-color:#dc2626; }
.wg-tile-info { border-top-color:#5fa8b8; }
.wg-tile-label { display:flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--wg-muted);
  text-transform:uppercase; letter-spacing:.04em; }
.wg-tile-label .material-symbols-outlined { font-size:18px; }
.wg-tile-value { font-size:22px; font-weight:650; margin-top:6px; }
.wg-tile-value span { font-size:14px; font-weight:500; color:var(--wg-muted); }
.wg-tile-sub { font-size:13px; color:var(--wg-muted); margin-top:2px; }
.wg-charts { display:grid; grid-template-columns:repeat(auto-fit, minmax(320px, 1fr)); gap:12px; }
.wg-chartcard { border:1px solid var(--wg-line); border-radius:12px; padding:12px 14px 6px; background:var(--wg-card); }
.wg-charttitle { font-weight:600; font-size:14px; margin-bottom:4px; }
.wg-charttitle span { color:var(--wg-muted); font-weight:500; font-size:12px; }
.wg-chart { display:block; width:100%; height:auto; overflow:visible; }
.wg-chart .wg-grid { stroke:var(--wg-line); stroke-width:1; }
.wg-chart .wg-axis { fill:var(--wg-muted); font-size:11px; }
.wg-chart .wg-line { fill:none; stroke:#0f4c5c; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.wg-chart .wg-endpoint { fill:#0f4c5c; stroke:var(--wg-card); stroke-width:2; }
.wg-chart .wg-ref { stroke:#b45309; stroke-width:1; stroke-dasharray:4 4; }
.wg-chart .wg-cross { stroke:var(--wg-muted); stroke-width:1; }
.dark .wg-chart .wg-line { stroke:#5fb8c6; }
.dark .wg-chart .wg-endpoint { fill:#5fb8c6; }
.wg-nodata { height:150px; display:flex; align-items:center; justify-content:center; color:var(--wg-muted); font-size:13px; }
.wg-tip { position:fixed; z-index:1000; pointer-events:none; background:#111827; color:#fff; border-radius:8px;
  padding:6px 10px; font-size:12px; display:flex; flex-direction:column; gap:2px; box-shadow:0 4px 14px rgba(0,0,0,.2); }
.wg-tip[hidden] { display:none; }
.wg-seg-links a { padding:6px 12px; display:inline-block; }
.wg-seg-links a.on { background:var(--wg-teal); color:#fff; }
.wg-h2gap { margin-top:8px !important; }
.wg-scroll { overflow-x:auto; }
.wg-reports td { white-space:nowrap; font-size:13px; padding:9px 12px; }
.wg-reports tbody tr { cursor:default; }
.wg-two { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.wg-details { border:1px solid var(--wg-line); border-radius:12px; padding:12px 16px; background:var(--wg-card); }
.wg-details summary { cursor:pointer; font-weight:600; }
.wg-details table { margin-top:8px; }
@media (max-width: 900px) { .wg-two { grid-template-columns:1fr; } }
.wg-podhead { margin-bottom:14px; }

/* signal bars + chart zones */
.wg-bars { display:inline-flex; align-items:flex-end; gap:2px; height:18px; margin-right:8px; vertical-align:-1px; }
.wg-bars i { width:5px; border-radius:2px; background:var(--wg-line); }
.wg-bars i:nth-child(1) { height:30%; } .wg-bars i:nth-child(2) { height:55%; }
.wg-bars i:nth-child(3) { height:80%; } .wg-bars i:nth-child(4) { height:100%; }
.wg-bars-ok i.on { background:#16a34a; }
.wg-bars-warn i.on { background:#d97706; }
.wg-bars-bad i.on { background:#dc2626; }
.wg-chart .wg-zone { opacity:.07; }
.wg-chart .wg-zone-ok { fill:#16a34a; }
.wg-chart .wg-zone-warn { fill:#d97706; }
.wg-chart .wg-zone-bad { fill:#dc2626; }
.wg-chart .wg-zonelabel { fill:var(--wg-muted); font-size:10px; }
.dark .wg-chart .wg-zone { opacity:.14; }

/* tonight alerts */
.wg-alert { display:block; padding:12px 16px; border:1px solid var(--wg-line); border-left:4px solid #0f4c5c;
  border-radius:10px; background:var(--wg-card); margin-bottom:8px; color:inherit; }
.wg-alert-new { border-left-color:#d97706; background:#fffbeb; }
.dark .wg-alert-new { background:#2a1f0a; }
.wg-alert-main { font-size:16px; font-weight:600; }
.wg-alert-sub { color:var(--wg-muted); font-size:13px; margin-top:2px; }

/* bat watch card */
.wg-watch { margin-top:4px; }
.wg-watch-row { display:flex; justify-content:space-between; gap:16px; align-items:center; flex-wrap:wrap; }
.wg-watch-state { display:flex; flex-direction:column; gap:4px; }
.wg-watch-state > b, .wg-watch-state > .wg-dot { display:inline; }
.wg-fps { display:flex; gap:6px; flex-wrap:wrap; align-items:center; font-size:13px; color:var(--wg-muted); margin-top:4px; }
.wg-select { height:36px; padding:0 10px; border:1px solid var(--wg-line); border-radius:8px; background:transparent; color:inherit; }

.wg-alert-top { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.wg-reports-details { margin-top:8px; font-size:13px; }
.wg-reports-details summary { cursor:pointer; color:var(--wg-muted); }
.wg-reports-table { margin-top:6px; }
.wg-reports-table th { color:var(--wg-muted); font-weight:600; font-size:12px; }
.wg-reports-table code { font-size:12px; }

/* detections page */
.wg-chart .wg-bar { fill:#0f4c5c; }
.wg-chart .wg-bar.on { fill:#d97706; }
.dark .wg-chart .wg-bar { fill:#5fb8c6; }
.wg-row-hot td { background:#fffbeb; }
.dark .wg-row-hot td { background:#2a1f0a; }
.wg-share { display:inline-block; width:48px; height:6px; border-radius:3px; background:var(--wg-line);
  vertical-align:middle; overflow:hidden; }
.wg-share i { display:block; height:100%; background:#0f4c5c; border-radius:3px; }

/* network: roles, spoke grouping, topology */
.wg-role { display:inline-block; font-size:12px; font-weight:700; padding:2px 8px; border-radius:6px; }
.wg-role-hub { background:#0f4c5c; color:#fff; }
.wg-role-spoke { background:#e0f2fe; color:#075985; }
.wg-role-direct { background:var(--wg-soft); color:var(--wg-muted); }
.wg-stale { color:#b91c1c !important; font-weight:600; }
.wg-spoke-row td:first-child { padding-left:28px; }
.wg-tree { color:var(--wg-muted); margin:0 6px 0 -16px; }
.wg-topos { display:grid; grid-template-columns:repeat(auto-fill, minmax(420px, 1fr)); gap:12px; }
.wg-topo { width:100%; height:auto; border:1px solid var(--wg-line); border-radius:12px; background:var(--wg-card); }
.wg-edge { stroke-width:2; }
.wg-edge.live { stroke:#16a34a; }
.wg-edge.quiet { stroke:#dc2626; stroke-dasharray:5 5; }
.wg-edge.lora { stroke-width:3; }
.wg-edge-label { font-size:11px; fill:var(--wg-muted); paint-order:stroke; stroke:var(--wg-card); stroke-width:4px; }
.wg-node { stroke:var(--wg-card); stroke-width:3; }
.wg-node.hub { fill:#0f4c5c; }
.wg-node.live { fill:#16a34a; }
.wg-node.quiet { fill:#dc2626; }
.wg-node-label.hub { fill:#fff; font-size:10px; font-weight:700; }
.wg-node-name { font-size:12px; font-weight:600; fill:currentColor; }
.wg-node-seen { font-size:10px; fill:var(--wg-muted); }
