:root{--ink:#18333b;--muted:#71858b;--teal:#087e74;--border:#dbe5e5;--bg:#f3f7f7;--blue:#146082;--red:#b94337;--side:234px}*{box-sizing:border-box}body{margin:0;color:var(--ink);font:14px/1.6 'Segoe UI',Arial,sans-serif;background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer;transition:background .15s}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible{outline:3px solid #78d5c5;outline-offset:3px}input,select{padding:10px 11px;border:1px solid #ccdadb;border-radius:6px;background:white;color:var(--ink);min-width:0;outline:none}input:focus,select:focus{border-color:#268e87;box-shadow:0 0 0 3px #dff1ed}a{color:var(--teal)}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);background:#10333b;color:#e7f0f1;padding:29px 19px;display:flex;flex-direction:column}.brand{display:flex;gap:11px;align-items:center;color:white;text-decoration:none;font-size:13px;font-weight:700;letter-spacing:1px}.logo{height:39px;width:37px;border-radius:10px;line-height:37px;font-size:26px;text-align:center;background:#254e56;letter-spacing:-2px}.logo span{font-size:20px;color:#86d3bf}.brand small{font-size:10px;font-weight:400;letter-spacing:0;color:#a4bdc1;display:block;margin-top:3px}.nav-label{font-size:9px;letter-spacing:1.6px;color:#85a8ad;margin:44px 10px 18px}nav{display:grid;gap:7px}nav button{color:#b7cfd1;background:transparent;border:0;text-align:left;padding:13px 11px;border-radius:7px;font-size:12px}nav button span{font-size:10px;color:#779fa6;margin-right:12px}nav button.active{background:#24565d;color:white}nav button.active span{color:#9ae2d3}nav button:hover{background:#1e4951}.sidebar-foot{margin-top:auto;border-top:1px solid #36555c;padding:23px 9px 0;font-size:9px;color:#96b9bb;letter-spacing:1.4px}.sidebar-foot p{font-size:19px;line-height:1.5;letter-spacing:0;color:#e1eded;margin:16px 0}.sidebar-foot a{display:block;color:#b1d9ce;font-size:11px;letter-spacing:0;text-decoration:none}.sidebar-foot small{display:block;margin-top:20px;letter-spacing:0;color:#819ea6}.dot{display:inline-block;width:6px;height:6px;background:#70c9b1;border-radius:50%;margin-right:6px}main{margin-left:var(--side);padding:0 36px;max-width:1800px}header{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);gap:15px}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{margin:0 12px;color:#a9babc}.group{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.primary,.secondary,.danger{padding:10px 17px;border-radius:7px;border:1px solid transparent;font-size:12px;font-weight:600}.primary{background:var(--teal);color:white}.primary:hover{background:#05665e}.secondary{background:white;color:var(--ink);border-color:var(--border)}.secondary:hover{background:#ebf4f2}.danger{background:#fff2ed;color:var(--red);border-color:#edcec6}.text{background:none;border:0;color:var(--teal);font-size:12px;padding:0}.badge{display:inline-block;font-size:10px;border-radius:20px;padding:4px 10px;white-space:nowrap;background:#e8eef0;color:#627980}.badge.good{background:#e0f2e9;color:#1b7654}.badge.warn{background:#fff1d8;color:#98701c}.badge.bad{background:#fdebe7;color:#b24e3e}.badge.blue{background:#e5f1f7;color:#2c7193}.page-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:32px 0 25px}.eyebrow{font-size:10px;letter-spacing:1.7px;color:var(--teal);font-weight:700;margin-bottom:9px}h1{margin:0 0 10px;font-size:30px;letter-spacing:-.8px;font-weight:650;line-height:1.25}h2{font-size:17px;letter-spacing:-.3px;margin:0 0 5px;font-weight:650}h3{font-size:14px;margin:0 0 12px}.subtitle{font-size:13px;color:var(--muted);margin:0;max-width:770px}.panel{background:white;border:1px solid var(--border);border-radius:11px;padding:23px;margin-bottom:20px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.panel-head p{font-size:12px;color:var(--muted);margin:0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:25px}.stat{background:white;border:1px solid var(--border);padding:18px 22px;border-radius:9px}.stat small{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.stat strong{font-size:27px;letter-spacing:-.5px;font-weight:650}.stat .suffix{font-size:12px;font-weight:400;margin-left:6px;color:var(--muted)}.sources-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(295px,1fr));gap:17px}.source-card{background:white;border:1px solid var(--border);border-radius:10px;padding:23px}.source-card h2{font-size:17px;margin:0;overflow-wrap:anywhere}.source-address{font-family:Consolas,monospace;font-size:13px;color:#607b83;margin:14px 0}.source-summary{font-size:12px;color:var(--muted);margin-bottom:14px}.card-error{font-size:11px;color:#b65b42;min-height:18px;overflow-wrap:anywhere;margin:10px 0}.source-card .group{padding-top:16px;border-top:1px solid #eaf0f0}.empty{padding:42px 22px;text-align:center;background:white;border:1px dashed #bcd4cf;border-radius:11px}.empty .empty-icon{font-size:32px;color:var(--teal);margin-bottom:12px}.empty p{max-width:530px;color:var(--muted);font-size:13px;margin:10px auto 23px}.empty .group{justify-content:center}.hint{font-size:12px;color:#638078;line-height:1.8;margin-top:18px}.hint strong{color:#315b53}.notice{background:#edf7f3;color:#426c60;border:1px solid #d3e8de;border-radius:7px;padding:13px 16px;font-size:12px;margin:16px 0}.notice.error{background:#fff0ec;color:#a13e30;border-color:#eecbc1}.notice.warn{background:#fff7e6;color:#886622;border-color:#eadcb9}[hidden]{display:none!important}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.field{display:block;color:#577078;font-size:12px}.field input,.field select{display:block;width:100%;margin-top:6px}.field small{display:block;color:#8b9b9f;font-size:10px;margin-top:6px}.range-row{background:#f7f9f9;border:1px solid #e1e9e8;padding:18px;border-radius:8px;margin-bottom:14px}.range-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;font-size:12px;font-weight:600}.range-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr 1fr 1fr;gap:12px}.action-bar{display:flex;justify-content:space-between;gap:15px;align-items:center;margin:23px 0}.muted{color:var(--muted)}.test-result{font-size:12px;margin-top:16px;line-height:1.9}.test-line{padding:7px 0;border-bottom:1px solid #e9efed}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;font-size:10px;letter-spacing:.3px;font-weight:500;background:#f3f7f7;color:#789099;padding:12px 11px;white-space:nowrap}td{padding:12px 11px;border-bottom:1px solid #e8eeee;vertical-align:middle}.mono{font-family:Consolas,monospace;font-variant-numeric:tabular-nums}.live-table{min-width:940px}.live-table td{white-space:nowrap}.live-table td.source-name{white-space:normal;min-width:120px;max-width:200px;overflow-wrap:anywhere}.live-table .val{font-size:15px;font-weight:650;color:#216758}.live-table tr.changed td{background:#e6f6ed}.live-table tr.stale .val{color:#9d7e4b}.live-table small{display:block;color:#899b9b;font-size:10px;font-weight:400}.toolbar{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:20px;flex-wrap:wrap}.toolbar select{padding:8px 11px;font-size:12px;max-width:260px}.toolbar label{font-size:11px;color:var(--muted)}.last-note{font-size:11px;color:#84999e;margin-top:16px}.scan-progress{display:flex;justify-content:space-between;align-items:center;margin:16px 0;gap:15px}.scan-progress progress{accent-color:var(--teal);flex:1;height:8px}.scan-results td{overflow-wrap:anywhere}.scan-results th:first-child{width:24%}.scan-results td small{display:block;color:var(--muted);margin-top:4px;font-size:11px}.scan-footer{font-size:11px;color:var(--muted);margin:10px 0}.tiny-check{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}.tiny-check input{accent-color:var(--teal)}#toast{position:fixed;bottom:25px;right:25px;max-width:460px;background:#16483e;color:white;border-radius:9px;padding:15px 22px;box-shadow:0 5px 25px #1c4c4030;font-size:13px;display:none;z-index:10}#toast.show{display:block}#toast.error{background:#a34837}footer{border-top:1px solid var(--border);margin:34px 0 20px;padding-top:18px;display:flex;justify-content:space-between;gap:15px;color:#8a9ea3;font-size:10px}dialog{border:1px solid var(--border);border-radius:12px;color:var(--ink);padding:27px;width:620px;max-width:92vw}dialog::backdrop{background:#153b4255}dialog p,dialog li{font-size:13px}code{background:#eaf1ef;padding:2px 5px;border-radius:3px;font-size:12px}
@media(max-width:1150px){.range-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{gap:10px}.stat{padding:16px}}
@media(max-width:850px){:root{--side:190px}.sidebar{padding:25px 12px}main{padding:0 22px}.brand{font-size:11px}.brand small{font-size:9px}h1{font-size:25px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stats{grid-template-columns:repeat(2,1fr)}.breadcrumb{display:none}header>.group{width:100%;justify-content:space-between}.sources-grid{grid-template-columns:1fr}}
@media(max-width:620px){.sidebar{position:static;width:100%;padding:16px}.sidebar-foot,.nav-label{display:none}.brand{font-size:12px}.logo{height:32px;width:32px;line-height:30px;font-size:23px}nav{display:flex;gap:3px;margin-top:16px;overflow:auto}nav button{white-space:nowrap;padding:9px;font-size:10px}nav button span{margin-right:5px}main{margin:0;padding:0 16px}header{height:73px}.page-head{margin:25px 0 22px}.panel{padding:18px}.range-grid,.form-grid,.form-grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}.range-grid .field:first-child{grid-column:1/-1}.action-bar{align-items:flex-start;flex-direction:column}.panel-head{align-items:flex-start}footer span:nth-child(2){display:none}.stats{gap:9px}.source-card{padding:19px}.scan-results{min-width:620px}#toast{left:16px;right:16px;bottom:16px}.toolbar{align-items:flex-start}.toolbar .group{align-items:flex-start;flex-direction:column}.primary,.secondary,.danger{padding:9px 12px;font-size:11px}.scan-progress{flex-wrap:wrap}}
