:root{--ink:#131a21;--ink2:#3c4853;--muted:#6b7884;--line:#d4dce3;--line-soft:#e4eaef;--surface:#fff;--surface2:#edf1f4;--bg:#f5f7f9;--accent:#0f6b7b;--accent-soft:#dceef1;--good:#1c7a46;--good-soft:#ddf0e4;--warn:#9a5f09;--warn-soft:#f7ebd8;--crit:#a32b22;--crit-soft:#f7e2e0;--mono:ui-monospace, SFMono-Regular, Menlo, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--sans);margin:0;font-size:14px}a{color:inherit}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;position:sticky;top:0}.topbar-inner{flex-wrap:wrap;align-items:center;gap:18px;max-width:1360px;min-height:54px;margin:0 auto;padding:0 20px;display:flex}.brand{letter-spacing:-.01em;white-space:nowrap;font-size:15px;font-weight:650}.brand span{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-size:10px;font-weight:500;display:block}.tabs{flex-wrap:wrap;flex:1;gap:2px;display:flex}.tab{color:var(--ink2);white-space:nowrap;border-radius:7px;padding:7px 12px;font-size:13.5px;text-decoration:none}.tab:hover{background:var(--surface2)}.tab[data-on="1"]{background:var(--accent-soft);color:var(--accent);font-weight:600}.tab-badge{font-family:var(--mono);background:var(--warn-soft);color:var(--warn);border-radius:4px;margin-left:6px;padding:1px 5px;font-size:10px}.tab-badge[data-crit="1"]{background:var(--crit-soft);color:var(--crit)}.page{max-width:1360px;margin:0 auto;padding:22px 20px 72px}.filterbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:15;position:sticky;top:54px}.filterbar-inner{flex-wrap:wrap;align-items:center;gap:10px;max-width:1360px;margin:0 auto;padding:9px 20px;display:flex}.field{align-items:center;gap:6px;display:flex}.field>label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:10px}select,input[type=text],input[type=number],textarea{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-family:inherit;font-size:13px}select:focus,input:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}textarea{resize:vertical;width:100%;font-size:13px}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink2);cursor:pointer;white-space:nowrap;border-radius:7px;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:13px;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background:#0c5966}.btn-good{background:var(--good);border-color:var(--good);color:#fff;font-weight:600}.btn-good:hover:not(:disabled){background:#166237}.btn-danger{border-color:var(--crit);color:var(--crit);background:var(--crit-soft);font-weight:600}.btn-danger:hover:not(:disabled){background:#f3d4d1}.btn-sm{padding:4px 9px;font-size:12px}.card{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:15px}.card-pad0{padding:0;overflow:hidden}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}h1{letter-spacing:-.02em;margin:0 0 4px;font-size:22px}h2{letter-spacing:-.01em;margin:0;font-size:15px}.sub{color:var(--muted);margin:0;font-size:12.5px;line-height:1.55}.grid-cards{gap:12px;display:grid}.mono{font-family:var(--mono)}.stat{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:11px 14px}.stat-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:5px;font-size:10px}.stat-value{letter-spacing:-.01em;font-size:19px;font-weight:650}.stat-unit{color:var(--muted);font-size:12px;font-weight:500}.stat-value.sm{font-size:13px;font-family:var(--mono);font-weight:600}.stat-note{color:var(--muted);margin-top:3px;font-size:11.5px}.banner{border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:11px 15px;display:flex}.banner-crit{border-color:var(--crit);background:var(--crit-soft)}.banner-good{border-color:var(--good);background:var(--good-soft)}.banner-warn{border-color:var(--warn);background:var(--warn-soft)}.banner-title{font-size:13.5px;font-weight:650}.banner-body{color:var(--ink2);margin-top:2px;font-size:12.5px}.pill{font-family:var(--mono);background:var(--surface2);color:var(--ink2);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:10.5px;font-weight:600}button.pill{cursor:pointer;font-family:var(--mono);border:0}button.pill:hover{background:var(--line-soft);color:var(--ink)}.pill-crit{background:var(--crit-soft);color:var(--crit)}.pill-warn{background:var(--warn-soft);color:var(--warn)}.pill-good{background:var(--good-soft);color:var(--good)}.pill-accent{background:var(--accent-soft);color:var(--accent)}.tone-good{color:var(--good)}.tone-warn{color:var(--warn)}.tone-crit{color:var(--crit)}.tone-muted{color:var(--muted)}table.t{border-collapse:collapse;width:100%;font-size:13px}table.t th{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 11px;font-size:10px;font-weight:600}table.t td{border-bottom:1px solid var(--line-soft);color:var(--ink2);vertical-align:top;padding:9px 11px}table.t tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums}.split{grid-template-columns:1fr;gap:14px;display:grid}@media (min-width:1100px){.split{grid-template-columns:minmax(0,1fr) 420px}}.kv{grid-template-columns:auto 1fr;gap:5px 12px;font-size:12.5px;display:grid}.kv dt{color:var(--muted);font-family:var(--mono);font-size:11px}.kv dd{color:var(--ink);margin:0}.compare{grid-template-columns:1fr 1fr;gap:8px;display:grid}.compare>div{border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:9px 11px}.compare .big{font-variant-numeric:tabular-nums;font-size:18px;font-weight:650}.modal-backdrop{z-index:50;background:#131a216b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:12px;width:100%;max-width:540px;padding:20px;box-shadow:0 18px 48px #131a213d}.modal-sec{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:18px 0 7px;font-size:10px;font-weight:600}.modal-wide{max-width:880px;max-height:86vh;overflow-y:auto}.rule-list{flex-direction:column;gap:10px;display:flex}.rule{border:1px solid var(--line);background:var(--surface2);border-radius:9px;padding:10px 12px}.rule-head{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.rule-id{color:var(--accent);font-size:12.5px;font-weight:600}.rule-msg{color:var(--ink2);margin:6px 0 0;font-size:12.5px;line-height:1.5}.rule details{margin-top:7px}.rule summary{cursor:pointer;color:var(--muted);font-size:11.5px;font-family:var(--mono)}.rule summary:hover{color:var(--accent)}.rule-off{opacity:.6}.linklike{font:inherit;color:var(--accent);cursor:pointer;text-underline-offset:2px;background:0 0;border:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.rule-actions{gap:6px;margin-left:auto;display:flex}.rule-deleted{background:0 0;border-style:dashed}.rule-form{flex-direction:column;gap:12px;display:flex}.rule-form .lbl{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:10px;display:block}.hint{color:var(--muted);margin-top:4px;font-size:11.5px;line-height:1.45}.rule-form input[type=text]{width:100%}.rule-form textarea.sql{font-family:var(--mono);min-height:190px;font-size:12px;line-height:1.5}.scope-grid{flex-wrap:wrap;gap:4px 12px;font-size:12.5px;display:flex}.scope-grid label,.check{cursor:pointer;align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.preview-box{border:1px solid var(--line);background:var(--surface2);border-radius:8px;padding:10px 12px}.preview-box table.t{margin-top:8px;font-size:12px}.preview-box table.t td{padding:5px 8px}.code-block{background:var(--surface);border:1px solid var(--line);font-family:var(--mono);color:var(--ink2);white-space:pre;border-radius:7px;margin:7px 0 0;padding:10px 12px;font-size:11.5px;line-height:1.55;overflow-x:auto}.spin{color:var(--muted);padding:14px 2px;font-size:13px}.err{border-left:3px solid var(--crit);background:var(--crit-soft);color:var(--crit);border-radius:0 7px 7px 0;padding:9px 12px;font-size:12.5px}.ag-cell.cell-key{font-family:var(--mono);color:var(--accent);font-weight:600}.ag-cell.cell-mono{font-family:var(--mono)}.ag-cell.cell-code{font-family:var(--mono);font-size:12px}.ag-cell.cell-strong{color:var(--ink);font-weight:500}.ag-cell.cell-dim{color:var(--muted)}.ag-cell.cell-obs{font-family:var(--mono);color:var(--muted);font-size:11.5px}.qc-dot{cursor:pointer;font-family:var(--mono);background:0 0;border:0;border-radius:5px;align-items:center;gap:4px;padding:2px 4px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.qc-dot:hover{background:var(--surface2)}.qc-dot-critical{color:var(--crit)}.qc-dot-warning{color:var(--warn)}.qc-dot-info{color:var(--muted)}.qc-dot-n{font-size:10.5px}.ag-row.row-viol-crit{box-shadow:inset 3px 0 0 var(--crit)}.ag-row.row-viol-warn{box-shadow:inset 3px 0 0 var(--warn)}.viol-row{border-top:1px solid var(--line-soft);padding:10px 0}.viol-row:first-of-type{border-top:0;padding-top:0}.langswitch{border:1px solid var(--line);background:var(--surface);border-radius:7px;display:inline-flex;overflow:hidden}.langswitch-btn{font-family:var(--mono);letter-spacing:.08em;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:5px 9px;font-size:10.5px;font-weight:600}.langswitch-btn:hover{background:var(--surface2)}.langswitch-btn[data-on="1"]{background:var(--accent-soft);color:var(--accent)}.identity-pick{text-align:left;width:100%;color:var(--ink2);background:0 0;border:0;margin-bottom:2px;display:block}.identity-pick[data-on="1"]{background:var(--accent-soft);color:var(--accent)}.identity-pick-mail{color:var(--muted);margin-top:1px;font-size:10.5px;display:block}.identity-pick-role{gap:4px;margin-top:4px;display:flex}
