/* FWB 1.12.1+build117 · public/css/site.css · © 2026 RuleFort, all rights reserved · managed by tools/stamp-version.js — integrity in BUILD.json */
/* RuleFort: one stylesheet for marketing, auth, app, account, help and legal pages.
   Layout idea: calm operations-console feel; teal accent, IBM Plex for UI and config text. */
:root{
  --bg:#f3f6f5; --surface:#ffffff; --ink:#15201e; --muted:#566864; --line:#d6dfdc; --soft:#e9efed;
  --accent:#0d6b61; --accent-ink:#ffffff; --accent-soft:#dcefeb; --code:#eef3f1;
  --high:#b42318; --high-bg:#fdecea; --med:#a34a06; --med-bg:#fdf1e3;
  --low:#4a5c58; --low-bg:#eaf0ee; --info:#1c5a9e; --info-bg:#e8f0fa; --ok:#16774a; --ok-bg:#e4f3ea;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --r:10px;
  /* colours that identify each chosen standard (checked for colour-blind separation; always shown next to the standard's name) */
  --crit:#7a1410; --crit-bg:#f9dcd8;
  --std1:#2a78d6; --std2:#d55181; --std3:#1a9bb0; --std4:#6250d6; --std5:#b8860b; --std6:#9b4dca;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#0e1413; --surface:#151d1c; --ink:#e2ebe8; --muted:#93a6a1; --line:#26312f; --soft:#1b2523;
  --accent:#3db3a3; --accent-ink:#06201c; --accent-soft:#123430; --code:#101817;
  --high:#ff8a7d; --high-bg:#3a1714; --med:#f6b26b; --med-bg:#35240f;
  --low:#a9bab6; --low-bg:#1e2826; --info:#8cbcf2; --info-bg:#14243a; --ok:#6fd39a; --ok-bg:#12301f; color-scheme:dark;
  --std1:#3987e5; --std2:#d55181; --std3:#1d98ad; --std4:#8a7fe6; --std5:#b8860b; --std6:#a865d6;}}
:root[data-theme="dark"]{
  --bg:#0e1413; --surface:#151d1c; --ink:#e2ebe8; --muted:#93a6a1; --line:#26312f; --soft:#1b2523;
  --accent:#3db3a3; --accent-ink:#06201c; --accent-soft:#123430; --code:#101817;
  --high:#ff8a7d; --high-bg:#3a1714; --med:#f6b26b; --med-bg:#35240f;
  --low:#a9bab6; --low-bg:#1e2826; --info:#8cbcf2; --info-bg:#14243a; --ok:#6fd39a; --ok-bg:#12301f; color-scheme:dark;
  --std1:#3987e5; --std2:#d55181; --std3:#1d98ad; --std4:#8a7fe6; --std5:#b8860b; --std6:#a865d6;}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.55;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--accent)}
img{max-width:100%}
[hidden]{display:none!important}
h1,h2,h3{text-wrap:balance;line-height:1.25;margin:0}
code,.mono{font-family:var(--mono)}
.wrap{max-width:1180px;margin:0 auto;padding-inline:20px;width:100%}
.wide{max-width:1360px}
.narrow{max-width:460px}
.prose-w{max-width:780px}

/* header */
.demo-bar{background:var(--med-bg);color:var(--med);font-size:13px;text-align:center;padding:6px 16px}
.demo-bar button{font-size:12px;padding:2px 8px;margin-left:8px}
.site-h{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
.site-h .wrap{display:flex;align-items:center;gap:14px;min-height:58px;flex-wrap:wrap;padding-block:6px}
.site-f{border-top:1px solid var(--line);margin-top:28px;background:var(--surface)}
.site-f .wrap{padding:16px 0;color:var(--muted);font-size:12px;text-align:center;line-height:1.5}
.logo{display:flex;align-items:center;gap:9px;font-weight:600;color:var(--ink);text-decoration:none;font-size:15.5px}
.logo-mark{width:26px;height:26px;border-radius:7px;background:var(--accent);display:grid;place-items:center;flex:none}
.logo-mark svg{display:block}
.nav{display:flex;gap:4px;margin-left:auto;align-items:center;flex-wrap:wrap}
.nav a{color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:7px;font-size:14px}
.nav a:hover,.nav a[aria-current="page"]{color:var(--ink);background:var(--soft)}
.orgsel{max-width:200px}
.menu-toggle{display:none}
@media (max-width:760px){
  .menu-toggle{display:inline-flex;margin-left:auto}
  .nav{display:none;width:100%;flex-direction:column;align-items:stretch;padding-bottom:8px}
  .nav.open{display:flex}
  .orgsel{max-width:none}
}

/* primary nav: a dark strip of grouped dropdown menus under the header */
.maintabs{background:#10211e;border-top:1px solid #0b1816}
.maintabs .wrap{display:flex;align-items:center;gap:2px;min-height:0!important;padding-block:0!important;flex-wrap:wrap}
.maintabs .mt-link,.maintabs .mt-btn{font:inherit;color:rgba(214,236,231,.82);background:none;border:0;cursor:pointer;text-decoration:none;font-size:13.5px;font-weight:600;padding:9px 13px;margin:5px 1px;border-radius:8px;display:inline-flex;align-items:center;gap:6px;transition:background .13s,color .13s}
.maintabs .mt-link:hover,.maintabs .mt-btn:hover{color:#fff;background:rgba(255,255,255,.08)}
.maintabs .mt-btn[aria-current="page"],.maintabs .mt-link[aria-current="page"]{color:#06201c;background:#5fd0bf;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.maintabs .mt-btn:focus-visible,.maintabs .mt-link:focus-visible{outline:2px solid #5fd0bf;outline-offset:-2px}
.maintabs .caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;opacity:.75;transition:transform .13s}
.maintabs .mt-menu.open .caret{transform:rotate(180deg)}
.mt-menu{position:relative;display:inline-flex}
.mt-panel{position:absolute;top:calc(100% - 3px);left:0;z-index:40;min-width:234px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.20);padding:8px;display:none;flex-direction:column;max-height:calc(100vh - 120px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.mt-menu.open .mt-panel{display:flex}
.mt-grp{display:flex;flex-direction:column}
.mt-grp+.mt-grp{margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.mt-gh{margin:3px 8px 3px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.mt-panel a{color:var(--ink);text-decoration:none;font-size:14px;font-weight:500;padding:7px 10px;border-radius:7px;white-space:nowrap}
.mt-panel a:hover{background:var(--soft)}
.mt-panel a[aria-current="page"]{color:var(--accent-ink);background:var(--accent)}
@media (max-width:760px){
  .maintabs .wrap{flex-direction:column;align-items:stretch;gap:0}
  .mt-menu{display:block}
  .maintabs .mt-btn,.maintabs .mt-link{width:100%;justify-content:space-between;margin:2px 0}
  .mt-panel{position:static;border:0;border-radius:0;box-shadow:none;padding:0 0 6px 12px;min-width:0;max-height:none;overflow:visible}
  .maintabs .mt-menu:not(.open) .mt-panel{display:none}
}

/* footer */
.site-f{border-top:1px solid var(--line);margin-top:56px;padding-block:32px 24px;color:var(--muted);font-size:13.5px;background:var(--surface)}
.site-f a{color:var(--muted);text-decoration:none}
.site-f a:hover{color:var(--ink);text-decoration:underline}
.fcols{display:grid;grid-template-columns:1.3fr repeat(4,minmax(0,1fr));gap:24px}
.fcols>div{display:flex;flex-direction:column;gap:5px;min-width:0}
.fcols .fh{margin:0 0 4px;font-weight:600;color:var(--ink);font-size:13px;letter-spacing:.02em}
.fbrand .logo{color:var(--ink)} .fbrand p{margin:6px 0 0}
.fcols a{overflow-wrap:anywhere}
@media (max-width:860px){.fcols{grid-template-columns:repeat(2,minmax(0,1fr))}.fbrand{grid-column:1/-1}}
#rp{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.rpform{max-width:560px;color:var(--ink)} .rpform h2{font-size:16px}
.fcopy{margin:18px 0 0;font-size:12.5px}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.announce{background:var(--info-bg);color:var(--ink);font-size:14px;border-bottom:1px solid var(--line)}
.announce.warn{background:var(--med-bg)} .announce.ok{background:var(--ok-bg)}
.announce .wrap{display:flex;gap:12px;align-items:center;justify-content:space-between;padding-block:8px}

/* controls */
button,.btn{font:inherit;font-size:14px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:8px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.3}
button:hover,.btn:hover{border-color:var(--accent)}
button:disabled{opacity:.55;cursor:not-allowed}
.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:500}
.danger{color:var(--high);border-color:var(--high)}
.ghost{border-color:transparent;background:none}
.sm{font-size:12.5px;padding:4px 10px}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
label{display:grid;gap:5px;font-size:13.5px;font-weight:500}
label .hint{font-weight:400;color:var(--muted);font-size:12.5px}
input,select,textarea{font:inherit;font-size:14.5px;padding:9px 11px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);width:100%;max-width:100%}
input[type=checkbox]{width:auto}
.check{display:flex;gap:9px;align-items:flex-start;font-weight:400}
.check input{margin-top:4px}
.form{display:grid;gap:14px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row>*{min-width:0}
.grow{flex:1}
.err{color:var(--high);font-size:13.5px;margin:0}
.okmsg{color:var(--ok);font-size:13.5px;margin:0}
.muted{color:var(--muted)}
.small{font-size:13px}

/* cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.card h2{font-size:18px;margin-bottom:6px}
.card>p:first-of-type{margin-top:0}
.stack{display:grid;gap:18px}
.auth{padding-block:56px}
.auth h1{font-size:26px;margin-bottom:6px}
.auth .sub{color:var(--muted);margin:0 0 22px}
.pill{font-family:var(--mono);font-size:11.5px;padding:2px 8px;border-radius:999px;white-space:nowrap;background:var(--soft);color:var(--muted)}
.pill.ok{color:var(--ok);background:var(--ok-bg)} .pill.warn{color:var(--med);background:var(--med-bg)} .pill.bad{color:var(--high);background:var(--high-bg)} .pill.acc{color:var(--accent);background:var(--accent-soft)}

/* tables */
.tblwrap{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:500;padding:9px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl td.m{font-family:var(--mono);font-size:12.5px}
.tbl .num{font-variant-numeric:tabular-nums}

/* tabs */
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:22px}
.tabs a,.tabs button{border:0;background:none;border-radius:0;padding:10px 14px;color:var(--muted);text-decoration:none;font-size:14.5px;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs [aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:500}

/* modal + toast */
.modal-bg{position:fixed;inset:0;background:rgba(10,20,18,.45);display:grid;place-items:center;padding:16px;z-index:50}
.modal{background:var(--surface);border-radius:12px;max-width:480px;width:100%;padding:22px;border:1px solid var(--line);display:grid;gap:14px;max-height:90vh;overflow:auto}
.modal h2{font-size:18px}
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:9px;font-size:14px;z-index:60;max-width:calc(100% - 32px)}

/* marketing */
.hero{padding-block:64px 40px}
.hero .eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.hero h1{font-size:clamp(30px,4.8vw,50px);letter-spacing:-.02em;max-width:18ch;margin-top:10px}
.hero p.lede{font-size:18px;color:var(--muted);max-width:60ch;margin:16px 0 26px}
.hero .ctas{display:flex;gap:10px;flex-wrap:wrap}
.lockline{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;margin-top:20px;color:var(--muted)}
.term{background:#0f1716;color:#cfe3de;border-radius:12px;padding:18px;font-family:var(--mono);font-size:12.5px;line-height:1.7;overflow-x:auto;border:1px solid #23302d}
.term .h{color:#ff8a7d} .term .m{color:#f6b26b} .term .k{color:#6fd39a} .term .c{color:#7d918c}
.split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:40px;align-items:center}
@media (max-width:900px){.split{grid-template-columns:minmax(0,1fr)}}
.sec{padding-block:48px}
.sec h2{font-size:clamp(22px,3vw,30px);margin-bottom:10px}
.sec .intro{color:var(--muted);max-width:66ch;margin:0 0 26px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.feat h3{font-size:16px;margin-bottom:6px}
.feat p{margin:0;color:var(--muted);font-size:14.5px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font-size:13.5px}
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.steps li{list-style:none;counter-increment:s}
.steps li::before{content:counter(s);font-family:var(--mono);color:var(--accent);font-size:13px;display:block;margin-bottom:4px}
.priv{background:var(--accent-soft);border-radius:14px;padding:28px}
.priv h2{color:var(--ink)}

/* pricing */
.period{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--surface);margin-bottom:22px}
.period button{border:0;border-radius:999px;padding:6px 14px;font-size:13.5px}
.period button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px;align-items:stretch}
.plan{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:22px;display:flex;flex-direction:column;gap:12px}
.plan.pop{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.plan h3{font-size:17px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.plan .price{font-size:32px;font-weight:600;font-variant-numeric:tabular-nums}
.plan .price small{font-size:14px;color:var(--muted);font-weight:400}
.plan ul{margin:0;padding-left:18px;font-size:14px;display:grid;gap:5px;flex:1}
.plan .who{color:var(--muted);font-size:14px;margin:0}
.plan.current{outline:2px solid var(--accent);outline-offset:2px}
.faq details{border-bottom:1px solid var(--line);padding:14px 0}
.faq summary{cursor:pointer;font-weight:500}
.faq p{color:var(--muted);margin:8px 0 0;max-width:72ch}

/* prose (help + legal) */
.doc{display:grid;grid-template-columns:220px minmax(0,1fr);gap:40px;padding-block:40px}
@media (max-width:860px){.doc{grid-template-columns:minmax(0,1fr)}.toc{position:static!important}}
.toc{position:sticky;top:80px;align-self:start;font-size:14px;display:grid;gap:4px}
.toc a{color:var(--muted);text-decoration:none;padding:3px 0}
.toc a:hover{color:var(--ink)}
.prose{max-width:76ch}
.prose h1{font-size:30px;margin-bottom:8px}
.prose h2{font-size:21px;margin:36px 0 10px;scroll-margin-top:80px}
.prose h3{font-size:16.5px;margin:22px 0 6px;scroll-margin-top:80px}
.prose p,.prose li{color:var(--ink)}
.prose ul,.prose ol{padding-left:22px}
.prose li{margin:4px 0}
.prose .note{background:var(--soft);border-left:3px solid var(--accent);padding:12px 14px;border-radius:0 8px 8px 0;margin:16px 0}
.prose .warn{background:var(--med-bg);border-left-color:var(--med)}
.prose code{background:var(--code);padding:1px 6px;border-radius:4px;font-size:13px;overflow-wrap:anywhere}
.prose table{border-collapse:collapse;width:100%;font-size:14px;margin:12px 0}
.prose th,.prose td{border-bottom:1px solid var(--line);padding:8px;text-align:left;vertical-align:top}
.draft{background:var(--med-bg);color:var(--med);padding:10px 14px;border-radius:8px;font-size:13.5px;margin-bottom:22px}

/* workbench (app) */
.wb{padding-block:22px 10px;display:grid;gap:16px}
.wb-top{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.modes{display:flex;flex-wrap:wrap;gap:12px 22px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:11px 15px}
.modes .mg{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.modes .mgl{flex-basis:100%;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 1px 2px}
.modes button{border:1px solid var(--line);border-radius:999px;padding:5px 13px;font-weight:500;font-size:13.5px;color:var(--ink);background:var(--soft);white-space:nowrap;transition:background .12s,color .12s,border-color .12s}
.modes button:hover{border-color:var(--accent);color:var(--accent)}
.modes button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
@media (max-width:760px){.modes{gap:10px 16px}}
.planline{font-size:13.5px;color:var(--muted)}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button{font-size:13px;padding:5px 11px;border-radius:999px}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.seg .det{font-family:var(--mono);font-size:11px;margin-left:4px;opacity:.75}
.hintline{margin:0;font-size:13.5px;color:var(--muted);max-width:120ch}
.hintline code{font-family:var(--mono);font-size:12.5px;background:var(--code);color:var(--ink);padding:1px 6px;border-radius:4px;overflow-wrap:anywhere}
.stats{display:flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.stat{flex:1 1 110px;padding:10px 16px;border-right:1px solid var(--line);display:grid;gap:1px}
.stat:last-child{border-right:0}
.stat b{font-family:var(--mono);font-size:21px;font-weight:500;font-variant-numeric:tabular-nums}
.stat span{font-size:11.5px;color:var(--muted);letter-spacing:.03em;text-transform:uppercase}
.stat.h b{color:var(--high)} .stat.m b{color:var(--med)} .stat.g b{color:var(--accent)}
.work{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.25fr);gap:18px;align-items:start}
@media (max-width:960px){.work{grid-template-columns:minmax(0,1fr)}}
.pane{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);display:grid;min-width:0}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.bar h2{margin:0 auto 0 4px;font-size:14px;font-weight:600}
.bar button,.bar .btn{font-size:13px;padding:6px 11px}
label.filebtn{font-size:13px;border-radius:8px;border:1px solid var(--line);padding:6px 11px;cursor:pointer;position:relative;display:inline-flex;font-weight:400}
label.filebtn input{position:absolute;inset:0;opacity:0;cursor:pointer}
textarea.cfg{min-height:560px;resize:vertical;border:0;background:var(--code);font-family:var(--mono);font-size:12.5px;line-height:1.6;padding:14px;border-radius:0 0 var(--r) var(--r);white-space:pre;overflow:auto}
.wtabs{display:flex;flex-wrap:wrap;gap:2px}
.wtabs button{border:0;background:none;padding:6px 10px;color:var(--muted);border-radius:6px;font-size:13.5px}
.wtabs button[aria-selected="true"]{background:var(--code);color:var(--ink);font-weight:500}
.count{font-family:var(--mono);font-size:11px;margin-left:4px;padding:1px 6px;border-radius:999px;background:var(--high-bg);color:var(--high)}
.view{max-height:560px;min-height:560px;overflow:auto;position:relative}
@media (max-width:960px){textarea.cfg{min-height:240px}.view{min-height:0;max-height:none}}
pre.out{margin:0;background:var(--code);font-family:var(--mono);font-size:12.5px;line-height:1.6;padding:14px;tab-size:4;min-height:100%}
.c-cmt{color:var(--muted)} .c-kw{color:var(--accent);font-weight:500} .c-str{color:var(--info)}
.sev{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:5px;white-space:nowrap;height:fit-content}
.sev.high{color:var(--high);background:var(--high-bg)} .sev.med{color:var(--med);background:var(--med-bg)}
.sev.low{color:var(--low);background:var(--low-bg)} .sev.info{color:var(--info);background:var(--info-bg)}
.score{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:16px;border-bottom:1px solid var(--line)}
.grade{width:62px;height:62px;border-radius:12px;display:grid;place-items:center;font-family:var(--mono);font-size:32px;font-weight:500;color:var(--accent-ink);background:var(--accent);flex:none}
.grade.D,.grade.F{background:var(--high);color:#fff} .grade.C{background:var(--med);color:#fff}
.score .meta{display:grid;gap:2px;min-width:0;flex:1}
.score .meta b{font-size:16px}
.score .meta span{font-size:13px;color:var(--muted)}
.filters{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px;border-bottom:1px solid var(--line);align-items:center}
.filters button{font-size:12.5px;padding:4px 10px;border-radius:999px}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.filters .note{font-size:12.5px;color:var(--muted);margin-left:auto}
.cat{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:12px 14px 4px;font-weight:500}
.f{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 10px;padding:11px 14px;border-bottom:1px solid var(--line)}
.f h3{margin:0;font-size:14.5px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.f .d{grid-column:2;font-size:13.5px;color:var(--muted);overflow-wrap:anywhere}
.f .fix{grid-column:2;font-size:13.5px;overflow-wrap:anywhere}
.tags{grid-column:2;display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.tag{font-family:var(--mono);font-size:11px;padding:1px 6px;border-radius:4px;background:var(--code);color:var(--muted);border:1px solid var(--line)}
.status{font-family:var(--mono);font-size:11px;padding:2px 7px;border-radius:999px;white-space:nowrap}
.status.pass,.status.accept{color:var(--ok);background:var(--ok-bg)} .status.fail,.status.deny{color:var(--high);background:var(--high-bg)} .status.partial{color:var(--med);background:var(--med-bg)} .status.na{color:var(--low);background:var(--low-bg)}
.badge{display:inline-block;font-size:11px;padding:1px 6px;border-radius:4px;margin:1px 2px 1px 0;background:var(--med-bg);color:var(--med)}
.badge.hot{background:var(--high-bg);color:var(--high)}
.stdhead{display:flex;flex-wrap:wrap;gap:8px 16px;padding:14px;border-bottom:1px solid var(--line);font-size:13.5px;align-items:center}
.disc{font-size:12.5px;color:var(--muted);padding:12px 14px;margin:0}
.lock{border-top:1px solid var(--line);padding:22px 16px;text-align:center;display:grid;gap:10px;justify-items:center;background:linear-gradient(var(--surface),var(--soft))}
.lock p{margin:0;max-width:52ch;color:var(--muted);font-size:14px}
.locked{filter:blur(3px);pointer-events:none;user-select:none;max-height:240px;overflow:hidden}
.empty{padding:34px 18px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-size:16px;margin-bottom:6px}

/* fix commands, vulnerabilities, devices, accepted risks */
.refs{grid-column:2;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12.5px}
.cmds{grid-column:2;border:1px solid var(--line);border-radius:8px;background:var(--code);margin-top:4px;font-size:13px}
.cmds summary{cursor:pointer;padding:6px 10px;font-weight:500;color:var(--accent)}
.cmds pre{margin:0;padding:8px 12px;font-family:var(--mono);font-size:12px;line-height:1.55;overflow:auto;max-height:340px;border-top:1px solid var(--line);white-space:pre}
.cmds .ph{color:var(--med);font-weight:500}
.cmdbar{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;padding:6px 10px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.lockedcmd{padding:6px 10px;color:var(--muted)}
button.sm{font-size:12px;padding:3px 9px}
.facts{grid-column:2;margin-top:2px}
.f.acc{opacity:.78}
.accnote{grid-column:2;font-size:13px;background:var(--info-bg);color:var(--ink);border-radius:6px;padding:6px 10px}
.devbar{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;padding:9px 14px;border-bottom:1px solid var(--line);font-size:13px;background:var(--soft)}
.devbar span{display:inline-flex;flex-wrap:wrap;gap:4px 6px;align-items:center}
.devbar input{width:130px;padding:3px 7px;font-size:12.5px}
.spark{color:var(--accent);vertical-align:middle}
.cfglabel{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;padding:6px 12px;font-size:12.5px;font-weight:600;color:var(--muted);background:var(--soft);border-bottom:1px solid var(--line)}
.cfglabel .filebtn{font-weight:400;padding:3px 9px;font-size:12px}
textarea.cfg.half{min-height:262px;border-radius:0}
textarea#src2.cfg.half{border-radius:0 0 var(--r) var(--r)}
.verdict{display:grid;gap:2px;padding:14px 16px;border-bottom:1px solid var(--line);border-left:5px solid var(--ok);background:var(--ok-bg)}
.verdict.review{border-left-color:var(--med);background:var(--med-bg)} .verdict.block{border-left-color:var(--high);background:var(--high-bg)}
.verdict b{font-size:15.5px} .verdict span{font-size:13.5px}
.cmpgrid{display:flex;flex-wrap:wrap;gap:14px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.cmpgrid>div{display:grid;gap:2px;justify-items:start}
.cmpgrid span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.cmpgrid em{font-style:normal;font-size:13px;color:var(--muted)}
.cmpgrid .g{font-family:var(--mono);font-size:24px;width:44px;height:44px;display:grid;place-items:center;border-radius:10px;background:var(--accent);color:var(--accent-ink)}
.cmpgrid .g.D,.cmpgrid .g.F{background:var(--high);color:#fff} .cmpgrid .g.C{background:var(--med);color:#fff}
.cmpgrid .arrow{font-size:22px;color:var(--muted)}
pre.sumtxt{margin:0 14px 14px;padding:12px;background:var(--code);border-radius:8px;font-family:var(--mono);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.modal textarea{min-height:90px}
@media (max-width:960px){textarea.cfg.half{min-height:180px}}

/* sign-off, hit counts, Cyber Essentials notes */
.devbar .signed{color:var(--ok)} .overdue{color:var(--high);font-weight:600}
.hintbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted);background:var(--soft)}
.cenotes{display:grid;gap:10px;max-height:52vh;overflow:auto;margin:10px 0}
.cenotes>div{border:1px solid var(--line);border-radius:8px;padding:9px 11px;display:grid;gap:4px;font-size:13.5px}
.cenotes .status{justify-self:start}
.cenotes p{margin:0;color:var(--muted)} .cenotes ul{margin:0;padding-left:18px;font-size:13px}
.modal{max-width:min(640px,calc(100vw - 32px))}

/* guides */
.crumbs{margin-bottom:14px;color:var(--muted)} .crumbs a{color:var(--muted)}
pre.code{background:var(--code);border:1px solid var(--line);border-radius:8px;padding:12px;font-family:var(--mono);font-size:12.5px;overflow:auto}
.cta{margin:30px 0 16px;padding:18px}
.prose .sev{margin-right:6px}

/* free tools */
.toolwrap{display:grid;grid-template-columns:230px minmax(0,1fr);gap:20px 24px;padding-block:28px;align-items:start}
.toollist{display:grid;gap:2px;position:sticky;top:76px;grid-column:1;align-self:start}
.toolmain{grid-column:2;min-width:0;display:flex;flex-direction:column;gap:20px}
.toollist .tg{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:12px 0 4px;font-weight:600}
.toollist .tg:first-child{margin-top:0}
.toollist a{padding:6px 10px;border-radius:7px;color:var(--ink);text-decoration:none;font-size:14px}
.toollist a:hover{background:var(--soft)} .toollist a[aria-current="page"]{background:var(--accent-soft);color:var(--accent);font-weight:600}
.toolpane{padding:22px;min-width:0} .toolpane h1{font-size:24px;margin-bottom:4px}
.toolform{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:16px}
.toolform input#t-q{flex:1 1 260px;font-family:var(--mono);font-size:14px} .toolform textarea{flex:1 1 100%;font-size:13px}
.toolout{display:grid;gap:10px;min-width:0} .toolout p{margin:0} .toolout h3{margin:8px 0 0;font-size:15px}
.toolout .score .grade{width:52px;height:52px;font-size:26px}
.m.wrap,.wrap.m{white-space:normal;word-break:break-all}
.spfnode{border-left:2px solid var(--line);padding:4px 0 6px 10px;display:grid;gap:3px}
.bigip{font-size:30px;font-weight:500;word-break:break-all}
.toolabout h2{font-size:19px;margin-bottom:2px}
.toolabout h3{font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px}
.toolabout>p{color:var(--muted);font-size:14px;line-height:1.55;max-width:70ch}
.toolcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(236px,1fr));gap:10px}
.toolcard{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface);text-decoration:none;transition:border-color .12s,box-shadow .12s}
.toolcard:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)}
.toolcard b{color:var(--ink);font-size:14px;font-weight:600}
.toolcard span{color:var(--muted);font-size:12.5px;line-height:1.45}
@media (max-width:860px){.toolwrap{grid-template-columns:1fr}.toolmain{grid-column:1;order:-1}.toollist{position:static;grid-column:1;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.toollist .tg{grid-column:1/-1}}

/* account */
.up{color:var(--ok);font-family:var(--mono);font-size:12.5px} .down{color:var(--high);font-family:var(--mono);font-size:12.5px}
.gpill{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:6px;font-family:var(--mono);font-size:12.5px;background:var(--accent);color:var(--accent-ink)}
.gpill.gD,.gpill.gF{background:var(--high);color:#fff} .gpill.gC{background:var(--med);color:#fff}
.nowrap{white-space:nowrap}
.soon{color:var(--med)}
select.mini{width:auto;padding:3px 7px;font-size:12.5px}
tr.hist>td{background:var(--soft)}
.acct{padding-block:30px}
.acct h1{font-size:26px;margin-bottom:4px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;font-size:14.5px}
.kv dt{color:var(--muted)}
.kv dd{margin:0}
.meter{height:8px;border-radius:999px;background:var(--soft);overflow:hidden;margin-top:6px}
.meter i{display:block;height:100%;background:var(--accent)}
.qr{background:#fff;padding:10px;border-radius:8px;width:fit-content}
.qr img{display:block;width:180px;height:180px}

@media (prefers-reduced-motion:no-preference){button,.btn{transition:border-color .15s,background-color .15s}}
@media print{.site-h,.site-f,.demo-bar{display:none}}

/* contact and report pages */
.contact-w{padding-block:40px}
.contact-w h1{font-size:30px;margin-bottom:6px}
.lede-s{color:var(--muted);margin:0 0 20px;max-width:62ch}
.contact-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:28px;align-items:start}
.contact-side{display:grid;gap:16px}
@media (max-width:900px){.contact-grid{grid-template-columns:minmax(0,1fr)}}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:640px){.grid2{grid-template-columns:minmax(0,1fr)}}
.grid2.gap{gap:16px;margin-bottom:16px}
ul.plain{padding-left:18px;margin:0;display:grid;gap:8px;font-size:14px}
.note-c{background:var(--soft);border-left:3px solid var(--accent);margin-bottom:16px}
.note-c ul,.note-c ol{margin:6px 0 0;padding-left:20px}
.kv dd{overflow-wrap:anywhere}

/* admin area: a strip of section links under the header, as on BoatHub */
.adminnav{background:var(--soft);border-bottom:1px solid var(--line)}
.adminnav .wrap{display:flex;flex-wrap:wrap;gap:2px;padding-block:5px}
.adminnav .mt-btn{font:inherit;color:var(--ink);background:none;border:0;cursor:pointer;font-size:13.5px;font-weight:600;padding:7px 12px;border-radius:8px;display:inline-flex;align-items:center;gap:6px}
.adminnav .mt-btn:hover{background:var(--surface)}
.adminnav .mt-btn[aria-current="page"]{color:var(--accent-ink);background:var(--accent)}
.adminnav .mt-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.adminnav .caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid currentColor;opacity:.7;transition:transform .13s}
.adminnav .mt-menu.open .caret{transform:rotate(180deg)}
@media (max-width:760px){.adminnav .wrap{flex-direction:column;align-items:stretch}.adminnav .mt-menu{display:block}.adminnav .mt-btn{width:100%;justify-content:space-between}.adminnav .mt-panel{position:static;border:0;border-radius:0;box-shadow:none;padding:0 0 6px 12px}.adminnav .mt-menu:not(.open) .mt-panel{display:none}}
.adm{padding-block:26px 10px;display:grid;gap:16px;align-content:start}
.adm>*{min-width:0}
.ahead{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start;justify-content:space-between}
.ahead h1{font-size:26px} .ahead p{margin:4px 0 0;max-width:90ch}
.adm .card h2{font-size:16px;margin-bottom:10px}
.h2s{font-size:18px;margin:10px 0 0} .h3s{font-size:14px;margin:14px 0 6px}
.bad-t{color:var(--high)}
.narrow-c{max-width:620px}
.alert{background:var(--high-bg);color:var(--high);border-radius:8px;padding:10px 14px;margin:0;font-size:14px}
.alert code{color:inherit}
.demo-tools{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:12px 16px;background:var(--med-bg);border-color:transparent}
.demo-tools .row{margin-left:auto}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;display:grid;gap:2px;text-decoration:none;color:var(--ink)}
a.tile:hover{border-color:var(--accent)}
.tile b{font-family:var(--mono);font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}
.tile span{font-size:12px;color:var(--muted)}
.tile.bad b{color:var(--high)} .tile.warn b{color:var(--med)}
.qsec h2{font-size:18px;margin-bottom:10px} .qsec h2 a{font-size:13px;font-weight:400}
.qlist{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.qitem{display:flex;flex-wrap:wrap;gap:12px 18px;justify-content:space-between;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.qtext{flex:1 1 380px;min-width:0}
.qt{margin:0;font-weight:600;overflow-wrap:anywhere} .qs{margin:2px 0 0;font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.qb{margin:6px 0 0;font-size:14px;white-space:pre-line;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.qbtns{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start}
.anote{color:var(--info)}
.afilter{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.afilter input:not([type=date]){flex:1 1 220px;width:auto}
.afilter select,.afilter input[type=date]{width:auto}
.afilter label.inl{display:flex;align-items:center;gap:6px;font-weight:400;font-size:13px;color:var(--muted)}
.bulkbar{padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.bulkbar span{margin-right:auto}
.empty-s{color:var(--muted);margin:0;padding:10px 0}
.hbars{display:grid;gap:6px}
.hb{display:grid;grid-template-columns:minmax(90px,30%) 1fr 44px;gap:10px;align-items:center;font-size:13px}
.hb span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb i{display:block;height:10px;border-radius:5px;background:linear-gradient(90deg,var(--accent) var(--w),var(--soft) var(--w))}
.hb b{font-family:var(--mono);font-weight:500;text-align:right;font-variant-numeric:tabular-nums}
.vchart{display:flex;align-items:flex-end;gap:2px;height:120px;border-bottom:1px solid var(--line)}
.vchart i{flex:1;min-height:1px;height:var(--h);background:var(--accent);border-radius:2px 2px 0 0;opacity:.85}
.vchart i:hover{opacity:1}
.vaxis{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);margin-top:4px}
.chiprow{display:flex;flex-wrap:wrap;gap:6px}
.chiprow button{font-size:13px;padding:5px 11px;border-radius:999px}
.chiprow button[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.chiprow button[aria-pressed="true"] .muted{color:inherit;opacity:.7}
ul.checks{list-style:none;padding:0;margin:0;display:grid;gap:8px;font-size:14px}
ul.checks li{padding-left:44px;position:relative} ul.checks li b{position:absolute;left:0;top:1px;font-family:var(--mono);font-size:11px;padding:1px 6px;border-radius:4px}
ul.checks li.good b{background:var(--ok-bg);color:var(--ok)} ul.checks li.bad b{background:var(--high-bg);color:var(--high)} ul.checks li.unk b{background:var(--soft);color:var(--muted)}
.breach{display:grid;gap:8px} .breach h2{margin:0}
.breach.overdue,.breach.due{border-color:var(--high)}
.dlist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ditem{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:space-between;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.ditem>div:first-child{flex:1 1 320px;min-width:0}
.ditem p{margin:4px 0 0}
input.mini{width:86px;padding:4px 7px;font-size:13px}
details.card>summary{cursor:pointer}
.adm .kv{font-size:14px}
@media (max-width:760px){.adminnav .wrap{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}}

/* standards: picker, overview bars, findings matrix, per-standard tables */
.stdpick{position:relative}
#stdbtn{font-size:13px;padding:5px 10px;gap:5px;max-width:320px}
.sdot{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none;border:1px solid var(--line)}
.stdpanel{position:absolute;right:0;top:calc(100% + 6px);z-index:30;max-height:min(70vh,600px);overflow:auto;width:min(560px,calc(100vw - 40px));background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(10,20,18,.18);padding:14px;display:grid;gap:8px;max-height:70vh;overflow:auto}
.stdpanel fieldset{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px}
.stdpanel legend{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:6px 0 2px}
.stdpanel label.check{align-items:center;font-size:13.5px;padding:3px 0}
.stdpanel label.check input{margin:0}
@media (max-width:560px){.stdpanel fieldset{grid-template-columns:minmax(0,1fr)}.stdpanel{position:fixed;left:16px;right:16px;top:auto;bottom:16px;width:auto}}
.stdsets{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.slegend{display:flex;flex-wrap:wrap;gap:4px 12px;margin-left:auto;color:var(--muted)}
.slegend span{display:inline-flex;align-items:center;gap:5px}
.slegend .seg{width:14px;height:8px;border-radius:2px;display:inline-block}
.seg.fail{background:var(--high)} .seg.partial{background:var(--med)} .seg.pass{background:var(--ok)} .seg.na{background:var(--line)}
.sbars{display:grid;gap:2px;padding:10px 14px;border-bottom:1px solid var(--line)}
.sbrow{display:grid;grid-template-columns:minmax(150px,230px) minmax(120px,1fr) 330px;gap:6px 14px;align-items:center;padding:6px 0;font-size:13.5px}
.sbname{display:flex;align-items:center;gap:8px;min-width:0} .sbname b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sbar{display:flex;gap:2px;height:12px;border-radius:4px;overflow:hidden;background:var(--soft)}
.sbar .seg{display:block;height:100%;min-width:3px}
.sbnums{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-end}
.sbnums .rate{font-family:var(--mono);font-size:12px;color:var(--ink);min-width:62px;text-align:right}
@media (max-width:1250px){.sbrow{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.sbnums{grid-column:1/-1;justify-content:flex-start}}
@media (max-width:700px){.sbrow{grid-template-columns:minmax(0,1fr)}.sbnums .rate{text-align:left}}
.tag.stdtag{border-left:3px solid var(--sc);color:var(--ink)}
.smx th.sx{border-bottom:3px solid var(--sc);text-align:center;white-space:nowrap}
.smx td.sxc{text-align:center;font-family:var(--mono);font-size:12px;background:color-mix(in srgb,var(--sc) 14%,transparent);border-left:2px solid var(--surface)}
.smx td.sxn{text-align:center;color:var(--muted);border-left:2px solid var(--surface)}
.smx td:first-child{min-width:240px}
details.stdsec{border-bottom:1px solid var(--line);border-left:4px solid var(--sc)}
details.stdsec>summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:12px 14px;background:var(--soft)}
details.stdsec>summary b{margin-right:auto}

/* discount codes on the billing page */
.vbox details summary{cursor:pointer;color:var(--accent);font-size:14px;font-weight:500}
.vform{margin-top:10px;max-width:460px}
.vok{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;background:var(--ok-bg);border-radius:8px;padding:10px 12px;font-size:14px}
.vok button{margin-left:auto}
.plan .vprice{margin:-4px 0 0;font-size:13.5px;color:var(--ok);background:var(--ok-bg);border-radius:6px;padding:5px 8px}
fieldset.vplans{border:1px solid var(--line);border-radius:8px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px 18px;margin:0}
fieldset.vplans legend{font-size:13.5px;font-weight:500;padding:0 4px}

/* assets & vulnerabilities */
.ast{padding-block:26px 10px;display:grid;gap:16px;align-content:start}
.ast>*{min-width:0}
.upsell{background:var(--accent-soft);border-color:transparent}
.abar{gap:8px}
.alist{display:grid;gap:10px}
.acard{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--r);overflow:hidden}
.acard.critrow{border-left-color:var(--high)} .acard.kevrow{border-left-color:var(--crit)}
.ahead2{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;padding:12px 14px}
.aname{flex:1 1 260px;min-width:0} .aname b{font-size:15.5px}
.acounts{display:flex;flex-wrap:wrap;gap:5px}
.cv{display:inline-block;font-family:var(--mono);font-size:11.5px;padding:2px 8px;border-radius:999px;white-space:nowrap;background:var(--soft);color:var(--muted)}
.cv.critical{background:var(--crit-bg);color:var(--crit);font-weight:500} .cv.high{background:var(--high-bg);color:var(--high)} .cv.medium{background:var(--med-bg);color:var(--med)} .cv.low{background:var(--low-bg);color:var(--low)}
.cv.kev{background:var(--crit);color:#fff;font-weight:500} .cv.ok{background:var(--ok-bg);color:var(--ok)}
.fixline{margin:0;padding:8px 14px;background:var(--ok-bg);border-top:1px solid var(--line)}
.cvetbl td{vertical-align:top} .cvetbl tr.kev td:first-child{box-shadow:inset 3px 0 0 var(--crit)} .cvetbl .vec{font-size:11px;margin-top:3px;max-width:220px;overflow-wrap:anywhere}
.aform h2{font-size:17px}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--crit:#ff6b5e;--crit-bg:#3d1210}}
:root[data-theme="dark"]{--crit:#ff6b5e;--crit-bg:#3d1210}
.fixline.warnline{background:var(--med-bg)}

/* ---- multi-firewall review ---- */
.slots{display:grid;align-content:start;max-height:900px;overflow:auto;border-radius:0 0 var(--r) var(--r)}
.slot{border-bottom:1px solid var(--line)}
.slot.ha{box-shadow:inset 3px 0 0 var(--accent)}
.slothead{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;padding:8px 10px;background:var(--soft);border-bottom:1px solid var(--line)}
.slotn{font-family:var(--mono);font-size:12px;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--muted);flex:none}
.slotname{flex:1 1 140px;min-width:110px;max-width:220px;padding:4px 8px;font-size:13px}
.slotdet{font-family:var(--mono);font-size:11px;padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}
.slotdet.none{background:none;color:var(--muted);padding-left:0}
.slotdet.bad{background:var(--high-bg);color:var(--high)}
.slotha{align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}
.slotha input{margin:0}
.slotacts{display:flex;gap:6px;align-items:center;margin-left:auto}
label.filebtn.sm{padding:3px 9px;font-size:12px}
textarea.cfg.slotcfg{min-height:150px;border-radius:0;font-size:12px}
.cfglabel.slot2{justify-content:flex-start;border-top:1px dashed var(--line);font-weight:500}
.cfglabel.slot2 .filebtn{margin-left:auto}
.slotfoot{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;padding:10px 12px;font-size:13px;color:var(--muted)}
.slotfoot b{color:var(--ink);font-family:var(--mono)}
/* network review: comprehensive findings groups */
.cat.devcat{display:flex;align-items:center;gap:8px;margin-top:18px;font-size:14px;font-weight:600;border-top:2px solid var(--line);padding-top:10px}
.cat.devcat .status{font-weight:500}
.subcat{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:10px 0 4px}
/* network review: scope selector + wifi/switch groups */
.netextra{display:block}
.netscope{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft);margin:10px 0}
.netscope .check.inl{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:500;margin:0}
.netgrp{margin:10px 0 4px}
.netgrphd{display:flex;align-items:baseline;gap:8px;margin:0 0 6px;font-size:13.5px}
.netextra .slot{margin-bottom:8px}
details.iotdev{border:1px solid var(--line);border-radius:10px;background:var(--surface);margin-bottom:8px;padding:0 10px}
details.iotdev>summary{cursor:pointer;padding:9px 2px;font-size:13.5px;display:flex;align-items:center;gap:8px;list-style:none}
details.iotdev>summary::-webkit-details-marker{display:none}
details.iotdev[open]>summary{border-bottom:1px solid var(--line);margin-bottom:8px}
.iotbody{padding:0 0 10px}
.iotbody .slothead{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}
.iotbody .slothead .inl{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
/* device hardening checklist */
.harden{display:block}
.harden .hbody{padding:12px 14px 16px;max-height:620px;overflow:auto}
@media (max-width:960px){.harden .hbody{max-height:none}}
.harden .hhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.harden .hhead .inl{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);font-weight:400}
.harden .hhead .inl select{font-size:13px}
.harden .hhead .small.muted{margin-left:auto}
details.hpaste{border:1px solid var(--line);border-radius:10px;padding:0 10px;margin-bottom:10px;background:var(--soft)}
details.hpaste>summary{cursor:pointer;padding:9px 2px;font-size:13px;color:var(--accent);list-style:none}
details.hpaste>summary::-webkit-details-marker{display:none}
details.hpaste[open]>summary{border-bottom:1px solid var(--line);margin-bottom:8px}
details.hpaste textarea.cfg{min-height:120px;border:1px solid var(--line);border-radius:8px;background:var(--code)}
.hquestions{display:grid;gap:8px}
.hq{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.hqt{flex:1 1 240px;min-width:0;font-size:13.5px;line-height:1.4}
.hqa{display:inline-flex;gap:4px;flex:none;background:var(--soft);border-radius:999px;padding:3px}
.hopt{position:relative;cursor:pointer;font-size:12.5px;font-weight:500;color:var(--muted);padding:4px 11px;border-radius:999px;user-select:none;white-space:nowrap}
.hopt input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}
.hopt:hover{color:var(--ink)}
.hopt.on.yes{background:var(--ok);color:#fff}
.hopt.on.no{background:var(--high);color:#fff}
.hopt.on.unknown{background:var(--line);color:var(--ink)}
.emap{border-bottom:1px solid var(--line);padding:6px 10px 10px;background:var(--soft)}
.emap svg{display:block;width:100%;height:auto;max-height:440px}
.emap .edge{fill:none;stroke-width:3;stroke-linecap:round}
.emap .edge.ok{stroke:var(--ok)} .emap .edge.minor{stroke:var(--low)} .emap .edge.warn{stroke:var(--med)} .emap .edge.broken{stroke:var(--high)}
.emap .edge.unknown{stroke:var(--muted);stroke-dasharray:4 5}
.emap .edge.one{stroke-dasharray:7 6}
.emap .edge.ext{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:2 4}
.emap .arrhead{fill:var(--high)}
.emap .node rect{fill:var(--surface);stroke:var(--line);stroke-width:1.2}
.emap .node rect.haback{fill:var(--soft);stroke:var(--line)}
.emap .node rect.gb{fill:var(--accent);stroke:none}
.emap .node.gC rect.gb{fill:var(--med)} .emap .node.gD rect.gb,.emap .node.gF rect.gb,.emap .node.g\? rect.gb{fill:var(--high)}
.emap .node .gt{fill:#fff;font-family:var(--mono);font-size:15px;text-anchor:middle}
.emap .node.gA .gt,.emap .node.gB .gt{fill:var(--accent-ink)}
.emap .node .nt{fill:var(--ink);font-size:12.5px;font-weight:600}
.emap .node .st{fill:var(--muted);font-size:10.5px}
.emap .xnode rect{fill:var(--surface);stroke:var(--line);stroke-dasharray:3 3}
.emap .xnode text{fill:var(--muted);font-family:var(--mono);font-size:10px;text-anchor:middle}
.elegend{display:flex;flex-wrap:wrap;gap:4px 14px;color:var(--muted);padding:2px 4px 0}
.elegend span{display:inline-flex;align-items:center;gap:6px}
.elegend .ln{display:inline-block;width:20px;height:0;border-top:3px solid var(--muted)}
.elegend .ln.ok{border-color:var(--ok)} .elegend .ln.minor{border-color:var(--low)} .elegend .ln.warn{border-color:var(--med)} .elegend .ln.broken{border-color:var(--high)}
.elegend .ln.one{border-top-style:dashed;border-color:var(--high)} .elegend .ln.ext{border-top:2px dotted var(--muted)}
.elegend .ln.lan{border-top:1.5px dashed var(--muted);opacity:.7}
.emap .edge.lan{stroke:var(--muted);stroke-width:1.4;stroke-dasharray:2 4;opacity:.55}
.emap .hub rect{fill:var(--soft);stroke:var(--line);stroke-width:1.2}
.emap .hub text{fill:var(--muted);font-size:11px;font-weight:600}
.emap .node.exn .nt{font-size:11.5px} .emap .node.exn .st{font-size:9.5px}
.fwtag{color:var(--accent);background:var(--accent-soft);border-color:transparent}
.fwcard{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:14px 14px 10px;border-top:1px solid var(--line)}
.fwcard:first-child{border-top:0}
.fwcard .grade{width:46px;height:46px;font-size:24px;border-radius:10px}
.fwmeta{flex:1 1 260px;min-width:0;display:grid;gap:3px}
.fwmeta b{font-size:15.5px}
.fwact{margin-left:auto}
.fwfind{border-bottom:1px solid var(--line)}
.fwfind>summary{padding:6px 14px 12px 72px;font-size:13px;color:var(--accent);cursor:pointer}
.fwfind[open]>summary{border-bottom:1px solid var(--line);padding-bottom:8px}
.tuntbl td{vertical-align:top;font-size:13px}
.tuntbl td.m{font-size:11.5px}
@media (max-width:960px){.slots{max-height:none}.fwfind>summary{padding-left:14px}}
.wb.estate .view{max-height:940px;min-height:640px}
@media (max-width:960px){.wb.estate .view{max-height:none;min-height:0}}

/* ---- MITRE ATT&CK view ---- */
.atk{padding:9px 14px;border-bottom:1px solid var(--line)}
.atkhd{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.atkhd b{font-size:14.5px}
.atkid{font-family:var(--mono);font-size:12px;padding:2px 7px;border-radius:5px;background:var(--code);color:var(--accent);border:1px solid var(--line);text-decoration:none}
.atkid:hover{border-color:var(--accent)}
.atkf{margin:7px 0 0;padding:0;list-style:none;display:grid;gap:4px}
.atkf li{display:flex;flex-wrap:wrap;gap:7px;align-items:baseline;font-size:13.5px;color:var(--muted)}
.atkf li .sev{flex:none}

/* ---- billing add-ons ---- */
.addon{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-start;padding:12px 0;border-top:1px solid var(--line)}
.addon:first-of-type{border-top:0}
.addonact{display:flex;gap:10px;align-items:center;white-space:nowrap}

/* ---- vulnerability scanner page ---- */
.scn{display:block}
.scnhead h1{margin:0 0 2px;font-size:24px}
.scnhead p{margin:0 0 14px}
.subtabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px}
.subtabs a{padding:8px 14px;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;font-weight:500;font-size:14px}
.subtabs a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.subtabs a:hover{color:var(--ink)}
.scnstats{margin-bottom:16px}
.card.inset{background:var(--soft);box-shadow:none;border:1px solid var(--line);margin-top:12px;padding:12px 14px}
.card.inset+.card.inset{margin-top:8px}
.cvrow{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.report .vtab[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.report .cat:first-child{padding-top:4px}
.scn .facts{grid-column:2;margin-top:3px}
.scn .f .tags a.tag{text-decoration:none}
@media (max-width:700px){.subtabs{overflow-x:auto;white-space:nowrap;flex-wrap:nowrap}}

/* ===== ATT&CK & threat posture page ===== */
.atkpg{padding-top:18px}
.atkpg .ahead{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;justify-content:space-between;margin-bottom:14px}
.atkpg .ahead h1{margin:0 0 4px}
.atkpg .ahead .muted{margin:0;max-width:72ch}
.arep{display:flex;gap:10px;align-items:center;flex:none}
.atkstats{margin-bottom:14px}
.afilters{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin-bottom:14px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.afilters .fgroup{display:flex;flex-wrap:wrap;gap:6px}
.afilters .chip{cursor:pointer;font-size:13px;padding:5px 11px}
.afilters .chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.afilters .inl{display:inline-flex;align-items:center;gap:6px}
.afilters select{padding:5px 8px}
.selpill{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--muted);background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:3px 6px 3px 11px}
.selpill b{color:var(--ink)}
.selpill button{border:0;background:var(--line);color:var(--ink);width:20px;height:20px;border-radius:50%;cursor:pointer;font-size:14px;line-height:1}
.atkgrid{display:grid;grid-template-columns:1fr 320px;gap:14px;margin-bottom:14px;align-items:start}
@media (max-width:900px){.atkgrid{grid-template-columns:1fr}}
.panel{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}
.panel .phd{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--soft)}
.panel .phd b{font-size:14.5px}
/* heat map */
.heat{display:flex;gap:7px;padding:12px;overflow-x:auto}
.hcol{display:flex;flex-direction:column;gap:5px;min-width:118px;flex:1}
.hcolh{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);background:transparent;border:0;border-bottom:1px solid var(--line);padding:0 2px 5px;text-align:left;cursor:pointer;display:flex;justify-content:space-between;gap:6px;line-height:1.25}
.hcolh:hover{color:var(--ink)}
.hcolh.on{color:var(--accent)}
.hcolh .hn{font-family:var(--mono);color:var(--muted)}
.hcell{position:relative;text-align:left;border:1px solid var(--line);border-radius:7px;padding:7px 8px;cursor:pointer;display:grid;gap:2px;background:var(--surface);transition:transform .08s}
.hcell:hover{transform:translateY(-1px)}
.hcell .tid{font-family:var(--mono);font-size:11px;font-weight:500}
.hcell .tn{font-size:11.5px;line-height:1.2}
.hcell .tc{position:absolute;top:6px;right:8px;font-family:var(--mono);font-size:11px;font-weight:600}
.hcell.high{background:color-mix(in srgb,var(--high-bg) calc(45% + var(--i,0)*55%),var(--surface));border-color:var(--high)}
.hcell.med{background:color-mix(in srgb,var(--med-bg) calc(45% + var(--i,0)*55%),var(--surface));border-color:var(--med)}
.hcell.low{background:color-mix(in srgb,var(--low-bg) calc(45% + var(--i,0)*55%),var(--surface));border-color:var(--low)}
.hcell.high .tid,.hcell.high .tc{color:var(--high)} .hcell.med .tid,.hcell.med .tc{color:var(--med)} .hcell.low .tid,.hcell.low .tc{color:var(--low)}
.hcell.on{outline:2px solid var(--ink);outline-offset:1px}
/* radar */
.radar{width:100%;height:auto;display:block;padding:10px 6px 0}
.radar .rgrid{fill:none;stroke:var(--line)}
.radar .rspoke{stroke:var(--line)}
.radar .rarea{fill:color-mix(in srgb,var(--accent) 26%,transparent);stroke:var(--accent);stroke-width:2;stroke-linejoin:round}
.radar .rdot{fill:var(--accent)}
.radar .rlabel{fill:var(--muted);font-size:9.5px;font-weight:600}
.radar .rval{fill:var(--ink);font-family:var(--mono);font-size:10px}
/* prioritised list */
.lgrp{border-top:1px solid var(--line)}
.lgrp:first-child{border-top:0}
.lgrph{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding:9px 14px;background:var(--soft)}
.lgrph b{font-size:13.5px}
table.tbl.threat td{vertical-align:middle}
table.tbl.threat tr.kev td:first-child{box-shadow:inset 3px 0 0 var(--crit)}
.atkid.sm{font-size:10.5px;padding:1px 5px;margin-right:2px;display:inline-block}
#listpanel .empty{border-top:1px solid var(--line)}

/* ===== Asset posture score & trend ===== */
.posture{display:grid;grid-template-columns:auto 1fr auto;gap:16px 24px;align-items:center;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:14px 18px;margin:0 0 12px}
.posture.h{border-left:4px solid var(--high)} .posture.m{border-left:4px solid var(--med)} .posture.g{border-left:4px solid var(--accent)}
.posture .pscore{display:flex;align-items:center;gap:12px}
.posture .pscore b{font-family:var(--mono);font-size:26px;font-weight:500;font-variant-numeric:tabular-nums;display:block;line-height:1.05}
.posture .pscore b .muted{font-size:15px}
.posture .pscore>div span{display:block}
.posture .ptrend{display:flex;align-items:center;gap:12px}
.posture .pnote{max-width:34ch}
@media (max-width:760px){.posture{grid-template-columns:1fr;gap:10px}.posture .pnote{max-width:none}}
.spark{overflow:visible}
.spark path{stroke:var(--muted)} .spark circle{fill:var(--muted)}
.spark.up path{stroke:var(--ok)} .spark.up circle{fill:var(--ok)}
.spark.down path{stroke:var(--high)} .spark.down circle{fill:var(--high)}
.ascore{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none;min-width:80px}
.rgrade{font-family:var(--mono);font-size:17px;font-weight:600;line-height:1}
.rgrade.g{color:var(--accent)} .rgrade.m{color:var(--med)} .rgrade.h{color:var(--high)}
.dlt{font-size:10.5px;font-family:var(--mono);white-space:nowrap}
.dlt.up{color:var(--ok)} .dlt.down{color:var(--high)} .dlt.flat{color:var(--muted)}
@media (max-width:640px){.ascore{flex-direction:row;min-width:0}}

/* ============================================================
   2026 refresh layer — elevation, crisper nav, fresher controls.
   Appended last so it recoats shared components site-wide.
   ============================================================ */
:root{
  --r:12px; --r-sm:8px; --r-lg:16px;
  --shadow-sm:0 1px 2px rgba(16,33,30,.05), 0 1px 3px rgba(16,33,30,.05);
  --shadow-md:0 2px 6px rgba(16,33,30,.05), 0 10px 24px rgba(16,33,30,.08);
  --ring:color-mix(in srgb, var(--accent) 24%, transparent);
  --nav-1:#122622; --nav-2:#0d1a18;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 6px 22px rgba(0,0,0,.5);
  --nav-1:#14201e; --nav-2:#0c1413;
}}
:root[data-theme="dark"]{
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 6px 22px rgba(0,0,0,.5);
  --nav-1:#14201e; --nav-2:#0c1413;
}
h1{letter-spacing:-.021em;font-weight:650}
h2{letter-spacing:-.013em}
h3{letter-spacing:-.008em}

/* Header: faint elevation + sticky translucency */
.site-h{box-shadow:var(--shadow-sm)}
.logo-mark{box-shadow:0 1px 2px rgba(0,0,0,.18)}

/* Primary nav: softer gradient background for the dropdown-menu bar */
.maintabs{background:linear-gradient(180deg,var(--nav-1),var(--nav-2));border-top:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}

/* Controls: smooth transitions, primary gets lift, inputs get a focus ring */
button,.btn{border-radius:var(--r-sm);transition:border-color .12s,background .12s,box-shadow .12s,transform .05s}
button:active,.btn:active{transform:translateY(.5px)}
.primary{box-shadow:var(--shadow-sm)}
.primary:hover{background:color-mix(in srgb,var(--accent) 88%,#000);border-color:color-mix(in srgb,var(--accent) 88%,#000)}
.ghost:hover{background:var(--soft);border-color:transparent}
input,select,textarea{border-radius:var(--r-sm);transition:border-color .12s,box-shadow .12s}
input:focus-visible,select:focus-visible,textarea:focus-visible,input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}

/* Surfaces: gentle elevation so the page reads as layered, not flat */
.card,.panel,.stats{box-shadow:var(--shadow-sm)}
.acard,.posture,.tile,.fwcard{box-shadow:var(--shadow-sm)}
.card{border-radius:var(--r-lg)}
.panel .phd,.stats{border-radius:var(--r) var(--r) 0 0}

/* Page header rhythm, shared by app pages (.ahead) */
.ahead h1,.ahead2 h1{font-size:25px}
.ahead{margin-bottom:16px;align-items:flex-start}

/* Chips/pills a touch softer */
.chip{border-radius:999px}
.pill,.cv{letter-spacing:.01em}

/* ===== Remediation tracker + Reports ===== */
.rem,.rpt{padding-top:18px}
.remstats,.rptstats{margin-bottom:14px}
/* priority pill */
.pr{font-family:var(--mono);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px;white-space:nowrap}
.pr.crit{color:#fff;background:var(--crit)} .pr.high{color:var(--high);background:var(--high-bg)} .pr.med{color:var(--med);background:var(--med-bg)} .pr.low{color:var(--low);background:var(--low-bg)}
/* status select coloured by state */
.stsel{font-size:12.5px;padding:4px 8px;width:auto;max-width:150px;border-left-width:3px}
.stsel.warn{border-left-color:var(--med)} .stsel.info{border-left-color:var(--info)} .stsel.ok{border-left-color:var(--ok)} .stsel.acc{border-left-color:var(--accent)} .stsel.mut{border-left-color:var(--muted)}
table.remtbl td{vertical-align:middle}
table.remtbl tr.od td:first-child{box-shadow:inset 3px 0 0 var(--high)}
.oddue{color:var(--high);font-weight:500}
.astid{opacity:.85}
/* report registry */
.rtag{display:inline-block;font-size:11.5px;padding:2px 9px;border-radius:999px;background:var(--soft);color:var(--muted);border:1px solid var(--line);white-space:nowrap}
.rtag.rev{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.rtag.net{background:var(--info-bg);color:var(--info);border-color:transparent}
.rtag.atk{background:var(--crit-bg);color:var(--crit);border-color:transparent}
.rtag.sgn{background:var(--ok-bg);color:var(--ok);border-color:transparent}
.gr{font-family:var(--mono);font-weight:600;font-size:13.5px} .gr.g{color:var(--accent)} .gr.m{color:var(--med)} .gr.h{color:var(--high)}
table.rpttbl td{vertical-align:middle}
/* dashboard charts */
.rptgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px;align-items:start}
@media (max-width:820px){.rptgrid{grid-template-columns:1fr}}
.chartbox{padding:12px 14px}
.chart{width:100%;height:auto;display:block}
.chart .bar{fill:var(--accent)}
.chart .caxis{fill:var(--muted);font-size:9px} .chart .cval{fill:var(--ink);font-size:9px;font-family:var(--mono)}
.chart .cline{stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.chart .cdot{fill:var(--accent)} .chart .cgrid{stroke:var(--line);stroke-dasharray:3 3}
/* remediation progress bar */
.remprog .phd a{flex:none}
.progbar{display:flex;height:16px;border-radius:999px;overflow:hidden;background:var(--soft);border:1px solid var(--line)}
.progbar .seg{display:block;height:100%}
.progbar .seg.open{background:var(--med)} .progbar .seg.in_progress{background:var(--info)} .progbar .seg.resolved{background:var(--ok)} .progbar .seg.accepted{background:var(--accent)} .progbar .seg.wontfix{background:var(--low)} .progbar .seg.untracked{background:var(--line)}
.leg{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:12.5px;color:var(--muted)}
.leg .legi{display:inline-flex;align-items:center;gap:6px} .leg b{color:var(--ink);font-family:var(--mono)}
.leg .dot{width:10px;height:10px;border-radius:3px;flex:none}
.leg .dot.open{background:var(--med)} .leg .dot.in_progress{background:var(--info)} .leg .dot.resolved{background:var(--ok)} .leg .dot.accepted{background:var(--accent)} .leg .dot.wontfix{background:var(--low)} .leg .dot.untracked{background:var(--line);border:1px solid var(--muted)}

/* ATT&CK sample-data badge */
.samptag{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:999px;background:var(--med-bg);color:var(--med);vertical-align:1px}

/* Known IOCs tool */
.iocfeeds{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.iocfeeds ul{margin:0;padding-left:18px;display:grid;gap:3px}
.conv-warn{background:var(--med-bg);color:var(--med);border-left:3px solid var(--med);padding:10px 14px;margin:0 0 10px;font-size:13px;line-height:1.5;border-radius:0 8px 8px 0}
.conv-warn a{color:inherit;text-decoration:underline}
