:root{--bg:#eef2f7;--card:#fff;--line:#dde5ef;--navy:#14365c;--blue:#1f6fd6;--ink:#243447;--mut:#5b6b7d;--ok:#15803d;--warn:#b45309;--bad:#b91c1c;color:var(--ink);background:var(--bg);font-family:-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-size:14px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0}button{font:inherit}header.top{background:var(--navy);color:#fff;flex-wrap:wrap;align-items:center;gap:14px;padding:10px 18px;display:flex}header .logo{letter-spacing:2px;font-size:16px;font-weight:800}header .site{opacity:.85;font-size:13px}.badge{background:#fff2;border-radius:12px;margin-left:auto;padding:3px 10px;font-size:12px}.badge.on{background:var(--ok)}.badge.off{background:var(--bad)}.badge.demo{background:var(--warn)}.linkbtn{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff4;border-radius:6px;padding:3px 10px;font-size:12px}nav.tabs{border-bottom:1px solid var(--line);background:#fff;gap:2px;padding:0 12px;display:flex;overflow-x:auto}nav.tabs button{color:var(--mut);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;padding:11px 16px}nav.tabs button.act{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}nav.tabs .cnt{background:var(--bad);color:#fff;border-radius:9px;margin-left:6px;padding:0 6px;font-size:11px}main{max-width:1180px;margin:0 auto;padding:16px}.grid{gap:12px;display:grid}.g4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.card h3{letter-spacing:.4px;text-transform:uppercase;color:var(--mut);margin:0 0 8px;font-size:12px}.big{font-size:26px;font-weight:700}.unit{color:var(--mut);font-size:13px;font-weight:400}.kv{border-bottom:1px dashed #eef2f7;justify-content:space-between;padding:3px 0;display:flex}.kv:last-child{border:0}.kv b{font-weight:600}.lv0{color:var(--ok)}.lv2{color:var(--warn)}.lv4{color:var(--bad);font-weight:700}.rack{cursor:pointer}.rack.sel{outline:2px solid var(--blue)}.hm{flex-wrap:wrap;gap:2px;margin:6px 0;display:flex}.hm span{color:#fff;border-radius:3px;justify-content:center;align-items:center;width:36px;height:19px;font-family:Consolas,Menlo,monospace;font-size:10px;display:inline-flex}.hm.k span{border-radius:2px;width:9px;height:9px;font-size:0}.pill{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:6px;padding:6px 13px}.pill.act{background:var(--blue);border-color:var(--blue);color:#fff}.pill.soft{color:var(--blue);background:#eef3fa;border-color:#c9d9ee;margin-left:auto}.ev{max-height:560px;font-family:Consolas,Menlo,monospace;font-size:12px;overflow:auto}.ev div{border-left:3px solid var(--line);background:#fff;border-radius:0 4px 4px 0;margin:2px 0;padding:3px 8px}.ev .al{border-color:var(--bad);background:#fef2f2}.ev .cl{border-color:var(--ok);background:#f0fdf4}.ev .hv{border-color:var(--blue);background:#eff6ff}.ev .op{background:#f5f3ff;border-color:#7c3aed}.fx-row{border:1px solid var(--line);background:#fff;border-radius:8px;margin:4px 0}.fx-row.open{border-color:var(--blue);box-shadow:0 0 0 2px #e0ebf8}.fx-line{cursor:pointer;flex-wrap:wrap;align-items:center;gap:10px;padding:7px 10px;display:flex}.fx-line:hover{background:#f5f8fc}.lv{color:#fff;text-align:center;border-radius:6px;min-width:40px;padding:2px 8px;font-size:11px;font-weight:700}.lv.w{background:var(--warn)}.lv.r{background:#c2410c}.lv.s{background:var(--bad)}.src{color:var(--navy);min-width:52px;font-weight:600}.nm{flex:1;font-weight:600}.ky{color:var(--mut);font-family:Consolas,Menlo,monospace;font-size:11px}.lt{color:var(--bad);text-transform:uppercase;margin-left:8px;font-size:10px;font-weight:700}.fx-desc{color:#3b4a5c;cursor:pointer;padding:0 10px 8px}.fx-panel{border-top:1px dashed var(--line);background:#f8fafc;padding:8px 12px 10px}.fx-h{color:var(--navy);text-transform:uppercase;letter-spacing:.4px;margin:8px 0 3px;font-size:11px;font-weight:700}.fx-panel ul,.fx-panel ol{margin:0;padding-left:20px}.fx-panel li{margin:3px 0}.fx-note{color:var(--mut);margin-top:8px;font-size:12px;font-style:italic}.allclear{color:var(--ok);padding:8px 0;font-weight:600}.login{max-width:420px;margin:8vh auto}.login label{color:var(--mut);font-size:12px}.login input{border:1px solid var(--line);width:100%;font:inherit;border-radius:7px;margin:5px 0 12px;padding:9px}.login button{background:var(--blue);color:#fff;cursor:pointer;border:0;border-radius:7px;width:100%;padding:11px;font-weight:700}.login button.alt{color:var(--blue);border:1px solid var(--blue);background:#fff;margin-top:8px}.foot{color:var(--mut);text-align:center;padding:14px;font-size:12px}
