/* parser.ch Security Portal: design system and app shell. Calm business look: white surfaces, hairlines,
   status by badges, dots and bars (never coloured left borders), dates dd.mm.yyyy. */
:root{
  --bg:#F6F7F9;--paper:#FFFFFF;--ink:#101828;--ink-2:#344054;--muted:#475467;--subtle:#667085;--faint:#98A2B3;
  --line:#E4E7EC;--line-2:#EAECF0;--line-3:#F2F4F7;--fill:#F2F4F7;--hover:#F9FAFB;
  --teal:#0B7A66;--teal-ink:#0B6B5A;--teal-bg:#E6F4F1;
  --blue:#175CD3;--blue-dot:#2E90FA;--blue-bg:#EFF8FF;--blue-line:#B2DDFF;
  --red:#B42318;--red-dot:#D92D20;--red-bg:#FEF3F2;--red-line:#FECDCA;
  --amber:#B54708;--amber-dot:#F79009;--amber-bg:#FFFAEB;--amber-line:#FEDF89;
  --green:#067647;--green-dot:#17B26A;--green-bg:#ECFDF3;--green-line:#ABEFC6;
  --gray-line:#D0D5DD;
  --navy:#101828;--radius:14px;
  --font:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --mono:"Cascadia Mono",Consolas,"SFMono-Regular",monospace;
  font-family:var(--font);color:var(--ink);background:var(--bg);font-synthesis:none;font-size:14px;line-height:1.5;font-variant-numeric:tabular-nums}
*{box-sizing:border-box}body{margin:0;background:var(--bg)}
button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:var(--teal-ink)}a:hover{color:#08523F}a,button{touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--teal);outline-offset:2px}
[hidden]{display:none!important}
h1,h2,h3,p{margin-top:0}
h1{font-size:26px;line-height:1.2;letter-spacing:-.02em;font-weight:700;margin-bottom:4px}
h2{font-size:15px;line-height:1.4;font-weight:600;margin-bottom:2px}
h3{font-size:14px;line-height:1.45;font-weight:600}
code{font-family:var(--mono);font-size:12px}
.muted{color:var(--subtle)}.small{font-size:12px}
.eyebrow{display:block;color:var(--subtle);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}
.icon{display:inline-block;width:18px;height:18px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* App shell: light sidebar, white top bar. */
.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.sidebar{background:var(--paper);border-right:1px solid var(--line);padding:20px 14px 14px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;height:100vh;z-index:3;overflow-y:auto}
.sidebar .wordmark{display:flex;align-items:center;gap:10px;padding:4px 8px;color:var(--ink);text-decoration:none;font-size:16px;font-weight:700;letter-spacing:-.01em}
.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--teal);color:#fff;display:grid;place-items:center}.brand-mark .icon{width:16px;height:16px;stroke-width:2}
.brand-tag{margin-left:auto;font-size:11px;font-weight:500;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:0 6px;letter-spacing:0}
.sidebar nav{display:flex;flex-direction:column;gap:2px}
.nav-item{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:8px;color:var(--ink-2);font-size:14px;font-weight:500;text-decoration:none;transition:background .12s}
.nav-item .icon{width:18px;height:18px;color:var(--subtle)}
.nav-item:hover{background:var(--hover);color:var(--ink)}
.nav-item.active{background:var(--fill);color:var(--ink);font-weight:600}.nav-item.active .icon{color:var(--ink)}
.nav-count{margin-left:auto;font-size:12px;color:var(--muted);font-weight:500}
.nav-count.active-count{color:var(--blue);background:var(--blue-bg);border-radius:999px;padding:0 8px;font-weight:600}
.sidebar-bottom{margin-top:auto;display:flex;flex-direction:column;gap:10px}
.server-status{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.server-status strong{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--green)}
.server-status strong:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green-dot)}
.server-status.warning strong{color:var(--amber)}.server-status.warning strong:before{background:var(--amber-dot)}
.server-status code{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.sidebar-footer{display:flex;align-items:center;gap:10px;padding:4px 4px 0 8px;font-size:13px;font-weight:600}
.sidebar-footer small{display:block;font-size:12px;font-weight:400;color:var(--subtle)}
.sidebar-footer .icon-button{margin-left:auto}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--teal-bg);color:var(--teal-ink);display:grid;place-items:center;font-weight:600;font-size:13px;flex-shrink:0}
.main-shell{min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px;padding:0 32px;background:var(--paper);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}
.breadcrumb{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px;color:var(--subtle)}
.breadcrumb a{color:var(--subtle);text-decoration:none}.breadcrumb a:hover{color:var(--ink)}
.breadcrumb strong{font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar-right{display:flex;align-items:center;gap:10px}
.live-label{display:inline-flex;align-items:center;font-size:12px;color:var(--muted);white-space:nowrap}
.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green-dot);margin-right:6px}
.icon-button{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid transparent;border-radius:9px;background:none;color:var(--subtle)}
.icon-button:hover{background:var(--fill);color:var(--ink)}.icon-button .icon{width:18px;height:18px}
main{padding:28px 32px 0;max-width:1320px;margin:0 auto}
#main-content:focus{outline:none}
.page-heading{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin:4px 0 22px}
.page-heading .eyebrow{display:none}
.page-heading p{font-size:14px;color:var(--muted);margin:0;max-width:760px}
.page-actions{display:flex;flex-wrap:wrap;gap:8px}
.back-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;text-decoration:none;color:var(--muted);margin:0 0 10px}
.back-link .icon{width:16px;height:16px}.back-link:hover{color:var(--ink)}
.main-footer{display:flex;justify-content:space-between;gap:16px;color:var(--subtle);font-size:12px;padding:28px 0}
.footer-dot{color:var(--faint);padding:0 6px}

/* Buttons and inputs. */
.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border:1px solid transparent;border-radius:9px;font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .12s,border-color .12s}
.button .icon{width:16px;height:16px}
.primary{background:var(--teal);border-color:var(--teal);color:#fff}.primary:hover{background:#086453;color:#fff}
.secondary{background:var(--paper);border-color:var(--gray-line);color:var(--ink-2)}.secondary:hover{background:var(--hover);color:var(--ink)}
.danger{background:var(--paper);border-color:var(--red-line);color:var(--red)}.danger:hover{background:var(--red-bg)}
.small-button{height:30px;padding:0 11px;font-size:12px;border-radius:8px}
label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin:16px 0 6px}
input,textarea,select{color:var(--ink);border:1px solid var(--gray-line);border-radius:9px;padding:8px 12px;background:var(--paper);font-size:14px}
input,select{min-height:38px}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px #0B7A6622}
input::placeholder,textarea::placeholder{color:var(--faint)}
select{max-width:100%}textarea{resize:vertical;line-height:1.6;width:100%}

/* Badges, chips, panels. */
.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:600;line-height:1.5;border:1px solid transparent;border-radius:6px;white-space:nowrap}
.badge-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:currentColor}
.badge .icon{width:12px;height:12px;stroke-width:2.4}
.badge.red{color:var(--red);background:var(--red-bg);border-color:var(--red-line)}
.badge.green{color:var(--green);background:var(--green-bg);border-color:var(--green-line)}
.badge.amber{color:var(--amber);background:var(--amber-bg);border-color:var(--amber-line)}
.badge.gray{color:var(--ink-2);background:var(--fill);border-color:var(--line)}
.badge.blue{color:var(--blue);background:var(--blue-bg);border-color:var(--blue-line)}
.badge.purple{color:#5925DC;background:#F4F3FF;border-color:#D9D6FE}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;white-space:nowrap}
.pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.blue{color:var(--blue);background:var(--blue-bg)}.pill.blue:before{background:var(--blue-dot)}
.pill.green{color:var(--green);background:var(--green-bg)}.pill.green:before{background:var(--green-dot)}
.pill.red{color:var(--red);background:var(--red-bg)}.pill.red:before{background:var(--red-dot)}
.pill.amber{color:var(--amber);background:var(--amber-bg)}.pill.amber:before{background:var(--amber-dot)}
.pill.gray{color:var(--ink-2);background:var(--fill)}.pill.gray:before{background:var(--faint)}
.impact-badge{display:inline-flex;align-items:center;font-size:12px;font-weight:600;color:var(--green);white-space:nowrap}
.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);min-width:0}
.panel-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.panel-heading h2{margin:0}.panel-heading p{font-size:12px;color:var(--subtle);margin:2px 0 0}
.panel-icon{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:9px;flex-shrink:0;color:var(--muted);background:var(--fill)}
.panel-icon .icon{width:17px;height:17px}
.panel-icon.green,.check-icon.green{color:var(--green);background:var(--green-bg)}
.panel-icon.blue,.check-icon.blue{color:var(--blue);background:var(--blue-bg)}
.panel-icon.red,.check-icon.red{color:var(--red);background:var(--red-bg)}
.panel-icon.purple{color:#5925DC;background:#F4F3FF}
.panel-icon.slate,.check-icon.gray{color:var(--muted);background:var(--fill)}
.check-icon.amber{color:var(--amber);background:var(--amber-bg)}
.section-heading{display:flex;align-items:center;gap:12px}
.section-heading h2{font-size:15px;margin:0}.section-heading p{font-size:12px;color:var(--subtle);margin:2px 0 0}
.section-heading>.button{margin-left:auto}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0 14px}.section-title h2{font-size:16px;margin:0}
.subtle-count{font-size:12px;color:var(--muted);background:var(--fill);padding:2px 8px;border-radius:999px;white-space:nowrap}
.chart-link{display:inline-flex;align-items:center;gap:6px;color:var(--teal-ink);font-size:13px;font-weight:600;text-decoration:none}
.chart-link .icon{width:15px;height:15px}

/* KPI cards. */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:16px}
.stat{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:10px;min-width:0}
.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:500;color:var(--muted)}
.stat-top a,.stat-top small{font-size:12px;font-weight:600;text-decoration:none}.stat-top small{color:var(--subtle);font-weight:400}
.stat-number{display:block;font-size:30px;line-height:1;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.stat-number small{font-size:14px;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:4px}
.stat-note{margin:0;font-size:12px;color:var(--subtle)}
.stat-lines{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}
.stat-score{flex-direction:row;align-items:center;gap:18px}
.stat-score>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.ring text{font-family:var(--font);font-weight:700;fill:var(--ink)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--faint);flex-shrink:0;margin-right:6px}
.dot.green{background:var(--green-dot)}.dot.red{background:var(--red-dot)}.dot.amber{background:var(--amber-dot)}.dot.blue{background:var(--blue-dot)}
.stackbar{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:2px;background:var(--line-2)}
.stackbar>span{min-width:3px}
.sev-critical{background:var(--red-dot)}.sev-high{background:var(--amber-dot)}.sev-medium{background:#FDB022}.sev-low{background:var(--faint)}
.cov-checked{background:var(--green-dot)}.cov-affected{background:var(--red-dot)}.cov-unclear{background:#FDB022}.cov-unsupported{background:var(--gray-line)}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--muted)}
.legend button,.legend span{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;color:inherit;font-size:12px}
.legend button:not(:disabled):hover{color:var(--ink)}
.legend i{display:inline-block;width:8px;height:8px;border-radius:2px}

/* Tables. */
.table-scroll{overflow:auto}
table{border-collapse:collapse;width:100%;text-align:left;font-size:13px;white-space:nowrap}
thead{color:var(--subtle);font-size:12px}
th{padding:10px 12px;font-weight:500;border-bottom:1px solid var(--line-2)}
td{padding:12px;border-top:1px solid var(--line-3);color:var(--ink-2);vertical-align:middle}
th:first-child,td:first-child{padding-left:20px}th:last-child,td:last-child{padding-right:20px}
tbody tr:hover{background:#FCFCFD}
.cell-main{display:block;font-weight:600;color:var(--ink)}.cell-sub{display:block;font-size:12px;color:var(--subtle)}
.num{text-align:right}
.host-cell{display:flex;align-items:center;gap:10px}
.host-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--fill);color:var(--muted);flex-shrink:0}
.host-icon .icon{width:16px;height:16px}
.host-link{text-decoration:none;color:var(--ink);font-weight:600;text-align:left}
.host-link:hover{color:var(--teal-ink)}
.host-link small{display:block;font-size:12px;color:var(--subtle);font-weight:400}
.row-action{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;color:var(--subtle)}
.row-action:hover{color:var(--ink);background:var(--fill)}.row-action .icon{width:16px;height:16px}
.score-cell{display:flex;align-items:center;gap:8px}
.score-cell strong{width:24px}.score-cell strong.red{color:var(--red)}.score-cell strong.amber{color:var(--amber)}.score-cell strong.green{color:var(--green)}
.bar{display:block;width:64px;height:6px;border-radius:3px;background:var(--line-2);overflow:hidden}
.bar>span{display:block;height:100%;background:var(--faint)}
.bar>span.red{background:var(--red-dot)}.bar>span.amber{background:var(--amber-dot)}.bar>span.green{background:var(--green-dot)}
.sev-chips{display:flex;gap:4px;font-size:12px;font-weight:600}
.sev-chips span{border-radius:5px;padding:1px 6px}
.sev-chips .critical{color:var(--red);background:var(--red-bg)}.sev-chips .high{color:var(--amber);background:var(--amber-bg)}
.sev-chips .medium,.sev-chips .low{color:var(--ink-2);background:var(--fill)}
.cov-bar{display:flex;width:120px;height:6px;border-radius:3px;overflow:hidden;gap:1px;background:var(--line-2)}
.agent-cell{display:flex;flex-direction:column;font-size:12px;line-height:1.45}
.agent-cell strong{display:flex;align-items:center;font-weight:500;color:var(--ink)}
.agent-cell .blue{color:var(--blue);font-weight:600}.agent-cell .red{color:var(--red);font-weight:600}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;border-bottom:1px solid var(--line-2)}
.search-field{display:flex;align-items:center;gap:8px;flex:1;min-width:200px;max-width:360px;height:36px;padding:0 10px;margin:0;border:1px solid var(--line);border-radius:9px;background:var(--hover);color:var(--subtle);font-weight:400}
.search-field .icon{width:16px;height:16px}
.search-field input{flex:1;min-width:0;min-height:0;border:0;padding:0;background:transparent;font-size:13px;box-shadow:none}
.search-field:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px #0B7A6622}
.toolbar select{font-size:13px;min-height:36px;padding:6px 10px;max-width:220px}.toolbar select:first-of-type{margin-left:auto}
.table-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:12px 20px;border-top:1px solid var(--line-2);font-size:12px;color:var(--muted)}
.table-footer>span:last-child{display:flex;align-items:center}
.risk-count{display:inline-flex;align-items:center;gap:5px;color:var(--red);font-weight:600}.risk-count .icon{width:13px;height:13px}

/* Notices and empty states. */
.notice{display:flex;align-items:flex-start;gap:10px;border-radius:10px;font-size:13px;line-height:1.5;padding:10px 14px;margin-bottom:14px;border:1px solid var(--line);background:var(--paper);color:var(--ink-2)}
.notice .icon{width:16px;height:16px;margin-top:2px}
.notice.demo,.notice.info{background:var(--blue-bg);border-color:var(--blue-line);color:#194185}
.notice.warning{background:var(--amber-bg);border-color:var(--amber-line);color:#93370D}.notice.warning .icon{color:var(--amber)}
.notice-divider{margin:0 6px;color:var(--faint)}
.empty{text-align:center;padding:44px 24px;color:var(--subtle);white-space:normal}
.empty strong{display:block;font-size:15px;color:var(--ink);margin-bottom:4px}
.empty p{font-size:13px;margin:0}
.empty-icon{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 12px;border-radius:12px;background:var(--fill);color:var(--muted)}
.empty-icon .icon{width:22px;height:22px}
