:root{--bg:#0b0f17;--panel:#131a26;--panel-2:#1a2230;--border:#243044;--text:#e6edf6;--muted:#8aa0bd;--muted-2:#5f7088;--good:#2ea043;--good-bg:#0f2a17;--warn:#d29922;--warn-bg:#2b210a;--bad:#f85149;--bad-bg:#2d1113;--unknown:#6b7a90;--unknown-bg:#1b222e;--accent:#4493f8;--shadow:0 1px 3px rgba(0,0,0,0.4)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.wrap{max-width:1320px;margin:0 auto;padding:20px 20px 60px}.topbar{justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.brand,.topbar{display:flex;align-items:center}.brand{gap:12px}.brand .logo{flex:none;border-radius:8px}.topbar h1{font-size:18px;font-weight:650;margin:0;letter-spacing:.2px}.topbar .sub{margin-top:2px}.topbar .sub,.topbar-right{color:var(--muted);font-size:12px}.topbar-right{display:flex;align-items:center;gap:12px}.btn{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:7px;padding:6px 12px;font-size:13px;cursor:pointer;font-family:inherit}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:#04122b;font-weight:600}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--good);margin-right:5px;box-shadow:0 0 0 0 rgba(46,160,67,.6);animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(46,160,67,.5)}70%{box-shadow:0 0 0 6px rgba(46,160,67,0)}to{box-shadow:0 0 0 0 rgba(46,160,67,0)}}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:12px;gap:12px;margin-bottom:22px}.tile{background:var(--panel);border:1px solid var(--border);border-left-width:4px;border-radius:10px;padding:14px 16px;box-shadow:var(--shadow)}.tile .label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px}.tile .value{font-size:22px;font-weight:680;line-height:1.1}.tile .detail{color:var(--muted);font-size:12px;margin-top:5px}.tile.good{border-left-color:var(--good)}.tile.warn{border-left-color:var(--warn)}.tile.bad{border-left-color:var(--bad)}.tile.unknown{border-left-color:var(--unknown)}.section{margin-top:26px}.section h2{font-size:14px;font-weight:620;margin:0 0 10px;color:var(--text)}.section h2 .count{color:var(--muted);font-weight:400}.tablewrap{background:var(--panel);border:1px solid var(--border);border-radius:10px;overflow:hidden;box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{text-align:left;padding:9px 12px;background:var(--panel-2);color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:-webkit-sticky;position:sticky;top:0}thead th.no-sort{cursor:default}thead th .arrow{color:var(--accent);margin-left:3px}tbody td{padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--panel-2)}.book{font-weight:600}.role-tag{font-size:10px;text-transform:uppercase;letter-spacing:.4px;margin-left:6px}.muted,.role-tag{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600;line-height:1.5}.badge.good{color:#7ee2a8;background:var(--good-bg)}.badge.warn{color:#f0c674;background:var(--warn-bg)}.badge.bad{color:#ff9a93;background:var(--bad-bg)}.badge.unknown{color:#9fb0c5;background:var(--unknown-bg)}.badge.blocked{color:#c9a7f0;background:rgba(150,100,220,.14)}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:-1px}.dot.good{background:var(--good)}.dot.warn{background:var(--warn)}.dot.bad{background:var(--bad)}.dot.unknown{background:var(--unknown)}.proxy-tag{font-size:10px;font-weight:600;color:#c9a4f5;background:#1f1733;padding:2px 7px;border-radius:20px}.notecell{white-space:normal;max-width:520px}.footer{margin-top:28px;padding-top:14px;border-top:1px solid var(--border);color:var(--muted);font-size:12px;line-height:1.6}.errbar{background:var(--bad-bg);color:#ff9a93;border:1px solid #5a2222;border-radius:8px;padding:9px 13px;font-size:12px;margin-bottom:16px}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:30px 28px;width:100%;max-width:340px;box-shadow:var(--shadow)}.login-card h1{font-size:17px;margin:0 0 4px}.login-card p{color:var(--muted);font-size:12px;margin:0 0 20px}.login-card input{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px;font-family:inherit}.login-card input:focus{outline:none;border-color:var(--accent)}.login-card button{width:100%;margin-top:12px;padding:10px}.login-err{color:var(--bad);font-size:12px;margin-top:10px;min-height:16px}.section>table,table.grid{background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}.section.incidents h2{font-size:15px}.section.incidents .count{margin-left:4px}.section.incidents{margin-bottom:26px}.inc-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.inc-head h2{margin:0}.inc-hint{color:var(--muted);font-size:12px}.btn.audit,.btn.fixall{border-color:var(--accent);color:var(--accent);font-weight:600}.incwrap{background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);max-height:420px;overflow:auto}.incwrap table{background:transparent;border:0;border-radius:0;box-shadow:none}.incwrap thead th{z-index:1}.section.incidents td.sym{max-width:480px;overflow:hidden;text-overflow:ellipsis}.toolbar{display:flex;align-items:center;gap:10px;margin-top:22px}.search{flex:1 1;max-width:460px;padding:8px 12px;background:var(--panel);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;font-family:inherit}.search:focus{outline:none;border-color:var(--accent)}.empty{color:var(--muted);padding:16px;text-align:center;background:var(--panel);border:1px dashed var(--border);border-radius:10px}.booklink{color:var(--text)}.booklink:hover{color:var(--accent)}.chronic-tag{display:inline-block;margin-left:6px;font-size:10px;font-weight:600;color:#f0c674;background:var(--warn-bg);padding:1px 6px;border-radius:20px;vertical-align:1px}.btn-mini{padding:3px 8px;font-size:11px;border-radius:6px}.spark{display:inline-flex;align-items:center;gap:6px}.spark-last{font-weight:600;color:var(--muted)}.spark-empty,.spark-last{font-size:12px}.tile-spark{margin-top:8px}.book-detail{max-width:1100px;margin:0 auto;padding:20px 20px 60px}.book-detail .back{color:var(--muted);font-size:13px}.book-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px 18px;margin:6px 0 18px}.book-head h1{font-size:22px;font-weight:660;margin:0}.book-head .actions{margin-left:auto}.warn-banner{width:100%;margin:0;color:#f0c674;background:var(--warn-bg);border:1px solid #5a4410;border-radius:8px;padding:8px 12px;font-size:12px}.book-detail .errors{list-style:none;padding:0;margin:0 0 16px}.book-detail .error{color:#ff9a93;background:var(--bad-bg);border:1px solid #5a2222;border-radius:8px;padding:8px 12px;font-size:12px;margin-bottom:8px}.book-detail h2{font-size:14px;font-weight:620;margin:26px 0 10px}.book-detail .url{white-space:normal;word-break:break-all;max-width:480px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:14px;gap:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 16px;box-shadow:var(--shadow)}.card h3{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0 0 10px}.card dl{display:grid;grid-template-columns:auto 1fr;grid-gap:6px 14px;gap:6px 14px;margin:0}.card dt{color:var(--muted);font-size:12px}.card dd{margin:0;font-size:13px;text-align:right}