:root{
  --bg:#f6f7f9; --card:#fff; --ink:#1c2024; --muted:#666e79; --line:#e2e5ea;
  --accent:#1f6feb; --ok:#18794e; --bad:#b42318; --warn:#8a5a00; --warn-bg:#fff8e6;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#14171a;--card:#1c2024;--ink:#e6e9ed;--muted:#99a2ad;--line:#2c333b;
        --accent:#6aa4ff;--ok:#4ac08a;--bad:#ff6b5e;--warn:#e0b341;--warn-bg:#2a2314;}
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
nav{display:flex;gap:20px;align-items:center;padding:0 24px;height:52px;
  background:var(--card);border-bottom:1px solid var(--line)}
nav a{color:var(--muted);text-decoration:none;font-size:14px}
nav a:hover{color:var(--ink)}
nav .brand{font-weight:640;color:var(--ink);margin-right:8px}
nav .right{margin-left:auto}
main{max-width:1060px;margin:0 auto;padding:28px 24px 60px}
h1{font-size:22px;font-weight:640;margin:0 0 18px}
h2{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);margin:0 0 10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:20px;margin-bottom:18px}
.card.narrow{max-width:460px}
.card.warn{background:var(--warn-bg);border-color:var(--warn)}
.card.scroll{overflow-x:auto}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.big{font-size:26px;font-weight:640;margin:0 0 4px}
.muted{color:var(--muted)}
.small{font-size:13px}
.ok{color:var(--ok)} .bad{color:var(--bad)}
label{display:block;margin-bottom:14px;font-size:13px;font-weight:560;color:var(--muted)}
input,select,textarea{width:100%;margin-top:5px;padding:9px 11px;font:inherit;
  color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:7px}
textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
button,.btn{display:inline-block;padding:9px 16px;font:inherit;font-weight:560;
  border:1px solid var(--line);border-radius:7px;background:var(--card);
  color:var(--ink);cursor:pointer;text-decoration:none}
button.primary{background:var(--accent);border-color:var(--accent);color:#fff}
button:disabled{opacity:.45;cursor:not-allowed}
button.link{border:none;background:none;color:var(--muted);padding:0;font-size:14px}
form.inline{display:inline}
.flash{padding:11px 15px;border-radius:8px;margin-bottom:16px;font-size:14px}
.flash.error{background:var(--warn-bg);color:var(--bad);border:1px solid var(--bad)}
.flash.ok{background:var(--warn-bg);color:var(--ok);border:1px solid var(--ok)}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-weight:600;color:var(--muted);padding:8px 10px;
  border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:7px 10px;border-bottom:1px solid var(--line)}
tr.sev-missing td:first-child{color:var(--bad);font-weight:560}
tr.sev-forbidden td:first-child{color:var(--warn);font-weight:560}
tr.sev-unauditable td:first-child{color:var(--muted)}
pre.console{background:var(--bg);border:1px solid var(--line);border-radius:8px;
  padding:14px;overflow-x:auto;font-size:12.5px;line-height:1.55;white-space:pre-wrap}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}

/* drill-down + tables */
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:18px}
a.nolink{text-decoration:none;display:inline-block}
a.nolink:hover{text-decoration:underline}
.warnink{color:var(--warn)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.nowrap{white-space:nowrap}
table a{color:var(--accent);text-decoration:none}
table a:hover{text-decoration:underline}
.filters{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}
.filters label{margin-bottom:0;min-width:150px;flex:1 1 150px}
.filters .filter-actions{display:flex;gap:8px}
.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;
  font-weight:600;border:1px solid var(--line);color:var(--muted)}
.pill.high{color:var(--ok);border-color:var(--ok)}
.pill.medium{color:var(--warn);border-color:var(--warn)}
.pill.low{color:var(--bad);border-color:var(--bad)}

/* checkbox GUI */
.checkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px 18px}
label.check{display:flex;align-items:flex-start;gap:9px;margin-bottom:0;
  font-weight:400;color:var(--ink);font-size:14px;cursor:pointer;padding:4px 0}
label.check input[type=checkbox]{width:auto;margin:2px 0 0;flex:none;cursor:pointer}
form.inline-form{display:inline}
form.inline-form select{min-width:160px;font-size:13px;padding:5px 8px}

/* sortable headers */
th a.sort{color:var(--muted);text-decoration:none;display:block;white-space:nowrap}
th a.sort:hover{color:var(--accent)}
details.card summary{cursor:pointer;list-style:revert}
details.card .colpicker{margin-top:14px}

/* column menu, anchored to the table header row */
.scroll-x{overflow-x:auto}
.table-toolbar{display:flex;justify-content:flex-end;position:relative;z-index:5;
  height:0}
.colmenu{position:relative}
.colmenu>summary{cursor:pointer;list-style:none;font-size:13px;font-weight:560;
  color:var(--muted);padding:5px 11px;border:1px solid var(--line);
  border-radius:7px;background:var(--card);white-space:nowrap}
.colmenu>summary::-webkit-details-marker{display:none}
.colmenu>summary::after{content:" \25be";font-size:11px}
.colmenu>summary:hover{color:var(--ink);border-color:var(--accent)}
.colmenu[open]>summary{color:var(--ink);border-color:var(--accent)}
.colmenu-panel{position:absolute;right:0;top:34px;min-width:240px;
  background:var(--card);border:1px solid var(--line);border-radius:9px;
  padding:14px;box-shadow:0 8px 24px rgba(0,0,0,.14)}
.checkcol{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}

/* service model selector */
select.model-CMIT{border-color:var(--accent);color:var(--accent);font-weight:600}
select.model-FMIT{border-color:var(--ok);color:var(--ok);font-weight:600}
select.model-unset{color:var(--muted)}
td form.inline-form select{min-width:86px}

/* in-place save feedback */
#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(140%);
  background:var(--ink);color:var(--card);padding:11px 20px;border-radius:9px;
  font-size:14px;font-weight:560;box-shadow:0 8px 26px rgba(0,0,0,.26);
  transition:transform .22s ease, opacity .22s ease;opacity:0;z-index:60;
  pointer-events:none;max-width:80vw}
#toast.show{transform:translateX(-50%) translateY(0);opacity:1}
#toast.bad{background:var(--bad);color:#fff}
tr.saved{animation:savedflash 1.2s ease}
@keyframes savedflash{0%{background:rgba(31,111,235,.16)}100%{background:transparent}}
select:disabled{opacity:.55}

/* per-column filter row */
tr.filter-row td{padding:6px 10px 10px;border-bottom:1px solid var(--line)}
tr.filter-row input{margin-top:0;padding:5px 8px;font-size:12.5px}
button.small{padding:5px 12px;font-size:12.5px}

a.define-link{display:block;margin-top:5px;text-decoration:none;color:var(--accent)}
a.define-link:hover{text-decoration:underline}
