:root{--bg: #f4f6f9;--bg-elevated: #ffffff;--ink: #242529;--ink-muted: #6b7280;--line: #e4e8ee;--accent: #0daa5d;--accent-hover: #0b9551;--accent-soft: #d5efcd;--danger: #e31b23;--danger-soft: #fde8e8;--warn: #f7941d;--warn-soft: #fff3e0;--map-idle: #d5dbe3;--map-stroke: #ffffff;--header: #1c2125;--header-ink: #f4f6f9;--radius: 20px;--radius-sm: 12px;--shadow: 0 1px 2px rgb(36 37 41 / 4%), 0 16px 40px rgb(36 37 41 / 6%);font-family:Inter,system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.45;font-feature-settings:"cv11","ss01"}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:var(--bg)}button,select,input{font:inherit}button:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent);text-decoration:none;font-weight:600}a:hover{color:var(--accent-hover);text-decoration:underline}.app{min-height:100%}.topbar{background:var(--header);color:var(--header-ink);padding:1.15rem 1.5rem 1.25rem}.topbar-inner{max-width:1280px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.25rem}.brand{display:flex;align-items:center;gap:.85rem}.brand-mark{flex-shrink:0;display:block;width:auto;height:3rem}.brand-kicker{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.topbar h1{margin:.1rem 0 0;font-size:1.35rem;font-weight:800;letter-spacing:-.03em;line-height:1.15}.topbar .lede{margin:.2rem 0 0;color:#a7a7a7;font-size:.85rem;font-weight:500}.stats{display:flex;gap:.65rem}.stat{background:#ffffff12;border:1px solid rgb(255 255 255 / 10%);border-radius:16px;padding:.7rem 1.05rem;min-width:7.5rem}.stat .label{display:block;font-size:.7rem;font-weight:600;color:#a7a7a7;text-transform:uppercase;letter-spacing:.06em}.stat .value{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.5rem;font-weight:500;letter-spacing:-.03em;line-height:1.2}.stat.open{background:#e31b2329;border-color:#e31b2347}.stat.open .value{color:#ff8b90}.content{max-width:1280px;margin:0 auto;padding:1.35rem 1.25rem 3rem}.layout{display:flex;flex-direction:column;gap:1rem}.map-panel.collapsed .panel-header{border-bottom:0}.map-toggle{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .85rem;cursor:pointer;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--ink);font-size:.85rem;font-weight:600}.map-toggle:hover{background:var(--accent-soft);border-color:#b7e0b0}.panel{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.panel-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.15rem;border-bottom:1px solid var(--line)}.panel-header h2{margin:0;font-size:1.05rem;font-weight:700;letter-spacing:-.02em}.filters{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.filters select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%236b7280' d='M1.4.6 6 5.2 10.6.6 12 2 6 8 0 2z'/></svg>") no-repeat right .75rem center;border:1px solid var(--line);border-radius:999px;padding:.42rem 2rem .42rem .85rem;color:var(--ink);font-weight:500;cursor:pointer}.filters select:hover{border-color:#c5ccd6}.seg{display:inline-flex;gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;background:var(--bg)}.seg button{border:0;background:transparent;padding:.38rem .85rem;cursor:pointer;color:var(--ink-muted);font-weight:600;font-size:.85rem;border-radius:999px}.seg button:hover{color:var(--ink)}.seg button.active{background:var(--ink);color:#fff}.map-wrap{padding:.5rem .9rem .2rem;overflow:hidden;background:linear-gradient(180deg,#eef6f0,#f4f6f9)}.map-wrap svg{display:block;max-width:100%;overflow:hidden}.map-legend{display:flex;flex-wrap:wrap;gap:1.15rem;padding:.35rem 1.15rem 1rem;font-size:.8rem;font-weight:500;color:var(--ink-muted);background:linear-gradient(180deg,#f4f6f9,#fff)}.legend-swatch{display:inline-block;width:.75rem;height:.75rem;border-radius:4px;margin-right:.4rem;vertical-align:-1px}.legend-dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;margin-right:.35rem;vertical-align:0;box-shadow:0 0 0 1.5px #fff}.legend-dot-md{width:.7rem;height:.7rem}.legend-dot-lg{width:.85rem;height:.85rem}.outage-dot{transition:r .12s ease,fill .12s ease}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:.85rem 1.05rem;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.75rem;font-weight:600;color:var(--ink-muted);background:#fafbfc;position:sticky;top:0}tr:last-child td{border-bottom:0}tr.clickable{cursor:pointer}tr.clickable:hover td{background:#f7fbf8}tr.selected td{background:var(--accent-soft)}.badge{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:.22rem .55rem;border-radius:999px}.badge-dot{width:.45rem;height:.45rem;border-radius:50%;background:currentColor}.badge.open{background:var(--danger-soft);color:var(--danger)}.badge.open .badge-dot{box-shadow:0 0 #e31b238c;animation:pulse 1.8s ease-out infinite}.badge.closed{background:#eef2f6;color:var(--ink-muted)}.badge.lookup{margin-left:.4rem;background:#e8eef4;color:var(--ink-muted);vertical-align:middle;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:500;letter-spacing:0}.network-name{font-weight:600}.mono{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.84rem}.muted{color:var(--ink-muted)}.error,.empty{padding:2rem 1.15rem;color:var(--ink-muted);font-weight:500}.error{color:var(--danger)}.hint{margin:1rem 0 0;font-size:.85rem;color:var(--ink-muted)}.hint code{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:.8rem;background:#eef2f6;padding:.1rem .35rem;border-radius:6px}@keyframes pulse{0%{box-shadow:0 0 #e31b2373}70%{box-shadow:0 0 0 6px #e31b2300}to{box-shadow:0 0 #e31b2300}}@media(prefers-reduced-motion:reduce){.badge.open .badge-dot{animation:none}}
