:root{--bg:#0f172a;--card:#fff;--ink:#0f172a;--muted:#64748b;--line:#e2e8f0;--brand:#c8102e;--brand2:#1d4ed8;--ok:#16a34a;--warn:#d97706;--crit:#dc2626;--info:#0ea5e9}*{box-sizing:border-box}body{margin:0;background:#f1f5f9;color:var(--ink);font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:inherit;text-decoration:none}.topbar{display:flex;align-items:center;gap:24px;padding:0 24px;background:var(--bg);color:#fff;height:56px}.topbar .brand{font-weight:700}.topbar nav{display:flex;gap:18px;flex:1 1}.topbar nav a{color:#cbd5e1;padding:6px 0;font-weight:500}.topbar nav a:hover{color:#fff}.topbar .logout{background:transparent;border:1px solid #334155;color:#cbd5e1;padding:6px 14px;border-radius:8px;cursor:pointer}.container{max-width:1080px;margin:0 auto;padding:24px}h1{font-size:22px;margin:4px 0 20px}h2{font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:28px 0 12px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}.stat .n{font-size:30px;font-weight:700}.stat .l{color:var(--muted);font-size:13px;margin-top:4px}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600}.badge.CRITICAL{background:#fee2e2;color:var(--crit)}.badge.HIGH{background:#ffedd5;color:var(--warn)}.badge.INFO{background:#e0f2fe;color:#0369a1}.pill{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.pill.OK{background:#dcfce7;color:var(--ok)}.pill.FAIL{background:#fee2e2;color:var(--crit)}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;border:1px solid var(--line)}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:top}th{background:#f8fafc;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:none}.tablewrap{overflow-x:auto}form.settings{display:grid;grid-gap:16px;gap:16px;max-width:560px}form.settings label{display:block;font-weight:600;margin-bottom:6px}form.settings input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit}form.settings .row{display:flex;align-items:center;gap:10px}.hint{color:var(--muted);font-size:13px;margin-top:4px}button.primary{background:var(--brand2);color:#fff;border:0;padding:11px 20px;border-radius:10px;font-weight:600;cursor:pointer}.saved{background:#dcfce7;color:var(--ok);padding:10px 14px;border-radius:10px}.filters{display:flex;gap:10px;margin-bottom:14px;flex-wrap:wrap}.filters a{padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:13px}.filters a.active{background:var(--bg);color:#fff;border-color:var(--bg)}.dl{color:var(--brand2);font-size:13px;display:block}.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:20px}.tab{padding:9px 16px;border:1px solid var(--line);border-bottom:none;border-radius:10px 10px 0 0;background:#f8fafc;font-size:14px;font-weight:500;margin-bottom:-1px;color:var(--muted)}.tab.active{color:var(--brand2);border-color:var(--line)}.tab.active,button.danger{background:#fff;font-weight:600}button.danger{color:var(--crit);border:1px solid #fecaca;padding:9px 16px;border-radius:10px;cursor:pointer}.clientsel{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.clientsel a{padding:6px 13px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:13px}.clientsel a.active{background:var(--bg);color:#fff;border-color:var(--bg)}.pagehead{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:12px;flex-wrap:wrap}.rowactions{white-space:nowrap}.rowactions button{background:#f1f5f9;border:1px solid var(--line);border-radius:8px;padding:5px 9px;font-size:15px;cursor:pointer;margin-right:4px;line-height:1}.rowactions button:hover{background:#e2e8f0}.rowactions form{display:inline}.testres{font-size:12px;white-space:nowrap;line-height:1.4}.testres .ok{color:var(--ok)}.testres .no{color:var(--crit)}.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);display:grid;place-items:center;z-index:50;padding:20px}.modal{background:#fff;border-radius:16px;width:100%;max-width:560px;max-height:92vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:18px}.modal .x{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted)}.modal-tabs{display:flex;gap:4px;padding:14px 22px 0}.modal-tabs button{padding:9px 18px;border:1px solid var(--line);border-bottom:none;border-radius:10px 10px 0 0;background:#f8fafc;cursor:pointer;font-weight:500;color:var(--muted)}.modal-tabs button.active{background:#fff;color:var(--brand2);font-weight:600}.modal form{padding:18px 22px 22px;border-top:1px solid var(--line);margin-top:-1px}.fields{display:grid;grid-gap:14px;gap:14px}.fields label{display:block;font-weight:600;margin-bottom:6px}.fields input[type=number],.fields input[type=password],.fields input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font:inherit}.fields input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.fields .row{display:flex;align-items:center;gap:10px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;border-top:1px solid var(--line);padding-top:16px}button.ghost{background:#fff;border:1px solid var(--line);padding:10px 18px;border-radius:10px;cursor:pointer;font-weight:500}.logl{padding:2px 8px;border-radius:6px;font-size:12px;font-weight:600;text-transform:uppercase}.logl.info{background:#e0f2fe;color:#0369a1}.logl.warn{background:#ffedd5;color:var(--warn)}.logl.error{background:#fee2e2;color:var(--crit)}.dot{width:11px;height:11px;border-radius:50%;display:inline-block}.dot.on{background:var(--ok)}.dot.off{background:#94a3b8}.rowactions button{color:var(--muted)}.rowactions button svg{display:block}.rowactions button:disabled{opacity:.5;cursor:default}.rowactions button.del:hover{color:var(--crit);border-color:#fecaca}.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:12px 24px;border-radius:10px;color:#fff;font-weight:600;z-index:60;box-shadow:0 8px 26px rgba(0,0,0,.25)}.toast.ok{background:var(--ok)}.toast.error{background:var(--crit)}.acctfilter{position:relative;display:flex;gap:8px;align-items:center;margin-bottom:18px;flex-wrap:wrap}.filterbtn{padding:8px 15px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer;font-size:14px;font-weight:500}.fchip{background:var(--bg);color:#fff;padding:4px 6px 4px 12px;border-radius:999px;font-size:13px;display:inline-flex;align-items:center;gap:7px}.fchip button{background:hsla(0,0%,100%,.25);border:none;color:#fff;width:18px;height:18px;border-radius:50%;line-height:1}.fchip button,.fclear{cursor:pointer;font-size:13px}.fclear{background:none;border:none;color:var(--brand2);font-weight:500}.dropdown-back{position:fixed;inset:0;z-index:40}.dropdown{position:absolute;top:46px;left:0;z-index:41;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.16);min-width:260px;max-height:340px;overflow:auto;padding:6px}.dd-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;cursor:pointer;font-size:14px}.dd-item:hover{background:#f1f5f9}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;margin:20px 0 4px}.pagination a{padding:8px 16px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:14px;font-weight:500}.pagination a:hover{background:#f1f5f9}.pagination .disabled{padding:8px 16px;color:#cbd5e1;font-size:14px}.pagination .pinfo{color:var(--muted);font-size:13px}.spin{width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--brand2);border-radius:50%;display:inline-block;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.teststeps{display:grid;grid-gap:16px;gap:16px;margin:8px 0}.teststep{display:grid;grid-template-columns:24px 130px 1fr;align-items:center;grid-gap:10px;gap:10px}.teststep .tsicon{display:flex;justify-content:center;font-weight:700;font-size:16px}.teststep .tslabel{font-weight:600}.tserr{grid-column:1/-1;color:var(--crit);font-size:12px;background:#fee2e2;padding:6px 10px;border-radius:8px;word-break:break-word}.testsummary{margin-top:18px;padding:12px 14px;border-radius:10px;font-weight:600}.testsummary.ok{background:#dcfce7;color:var(--ok)}.testsummary.warn{background:#fef3c7;color:#92400e}.testtimer{margin-top:16px;font-size:14px;color:var(--muted);border-top:1px solid var(--line);padding-top:14px}.testtimer b{color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:16px}.settingnote{background:#f0f9ff;border:1px solid #bae6fd;color:#075985;padding:12px 14px;border-radius:10px;font-size:13px;line-height:1.55;margin-bottom:18px}.settingnote code{background:#e0f2fe;padding:1px 5px;border-radius:4px}.settingactions{display:flex;gap:12px;align-items:center;margin-top:20px;padding-top:18px;border-top:1px solid var(--line);flex-wrap:wrap}.row2{display:grid;grid-template-columns:2fr 1fr;grid-gap:12px;gap:12px}.testline{font-size:13px;padding:8px 12px;border-radius:8px;display:inline-flex;align-items:center;gap:8px}.testline.ok{background:#dcfce7;color:var(--ok);font-weight:600}.testline.no{background:#fee2e2;color:var(--crit);font-weight:600;max-width:340px}.login{min-height:100vh;display:grid;place-items:center}.login .card{width:320px;text-align:center}.login input{width:100%;padding:11px 12px;margin:14px 0;border:1px solid var(--line);border-radius:10px;font:inherit}.login button{width:100%;background:var(--brand);color:#fff;border:0;padding:11px;border-radius:10px;font-weight:600;cursor:pointer}.login .error{color:var(--crit);font-size:13px}.muted{color:var(--muted)}