:root{--bg: #0b1220;--panel: #101a2e;--panel2: #0d1626;--edge: #1e2c47;--ink: #c8d6ee;--bright: #eef4ff;--dim: #5f7396;--signal: #34d399;--warn: #fbbf24;--fault: #f87171;--accent: #60a5fa}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:IBM Plex Sans,system-ui,-apple-system,Segoe UI,sans-serif}app-root{min-height:100vh;display:flex;flex-direction:column}app-diagnostics{display:flex;flex-direction:column;flex:1;min-height:0}.mono{font-family:IBM Plex Mono,ui-monospace,Menlo,Consolas,monospace}header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--edge);background:var(--panel);position:sticky;top:0;z-index:5}.lamp{width:10px;height:10px;border-radius:50%;background:var(--dim);box-shadow:0 0 0 3px #5f739626;flex:none;transition:background .3s,box-shadow .3s}.lamp.on{background:var(--signal);box-shadow:0 0 8px var(--signal)}.lamp.busy{background:var(--warn);box-shadow:0 0 8px var(--warn);animation:pulse 1s infinite}.lamp.err{background:var(--fault);box-shadow:0 0 8px var(--fault)}@keyframes pulse{50%{opacity:.4}}h1{font-size:14px;font-weight:600;letter-spacing:.12em}#state{margin-left:auto;font-size:11px;color:var(--dim);text-align:right;white-space:nowrap}header button{flex:none;font-size:12px;padding:6px 12px}.controls{display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px 4px}button{font:inherit;font-size:13px;padding:9px 16px;border-radius:6px;border:1px solid var(--edge);background:var(--panel);color:var(--ink);cursor:pointer}button.primary{border-color:var(--accent);color:var(--accent)}button:disabled{opacity:.35;cursor:not-allowed}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#progress{height:3px;background:var(--edge);margin:8px 16px 0;border-radius:2px;overflow:hidden;visibility:hidden}#progressBar{height:100%;width:0%;background:var(--accent);transition:width .1s linear}main{flex:1;padding:12px 16px 32px}#placeholder{color:var(--dim);font-size:14px;padding:24px 4px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.card{background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:14px 16px;min-width:0}.card.wide{grid-column:1/-1}.card h2{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:10px}.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px}.kv dt{color:var(--dim);white-space:nowrap}.kv dd{color:var(--bright);overflow-wrap:anywhere}.hero{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:baseline}.hero .big{font-size:22px;font-weight:600;color:var(--bright)}.hero .sub{font-size:12px;color:var(--dim)}.hero .stat{font-size:13px}.hero .stat b{color:var(--bright);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:12px;padding:2px 10px;border-radius:999px;border:1px solid var(--edge);background:var(--panel2);color:var(--bright)}.pill{display:inline-block;font-size:11px;padding:1px 9px;border-radius:999px}.pill.ok{background:#34d3991f;color:var(--signal)}.pill.bad{background:#f871711f;color:var(--fault)}.pill.na{background:#5f739626;color:var(--dim)}.pill.info{background:#60a5fa1f;color:var(--accent)}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12.5px}th,td{text-align:left;padding:6px 10px 6px 0;white-space:nowrap}th{color:var(--dim);font-weight:500;border-bottom:1px solid var(--edge)}td{border-bottom:1px solid rgba(30,44,71,.5);color:var(--bright)}tr:last-child td{border-bottom:none}pre.raw{font-family:IBM Plex Mono,ui-monospace,Menlo,Consolas,monospace;font-size:12px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);background:var(--panel2);border:1px solid var(--edge);border-radius:6px;padding:10px}#log{font-size:11px;color:var(--dim);padding:8px 16px;border-top:1px solid var(--edge);max-height:90px;overflow:auto;font-family:IBM Plex Mono,ui-monospace,Menlo,Consolas,monospace}.unsupported{margin:12px 16px;padding:12px;border:1px solid var(--fault);border-radius:6px;color:var(--fault);font-size:13px}
