:root{--ink: #12161d;--ink-2: #1b222d;--ink-line: #2a333f;--ink-text: #c7d0dc;--ink-text-dim: #7f8b9c;--surface: #eceff3;--card: #ffffff;--line: #dbe1e8;--line-soft: #e8ecf1;--text: #171c24;--muted: #5a6472;--accent: #0e7c86;--accent-ink: #0a5960;--accent-soft: #e2f1f2;--v-deliver: #1a7f4b;--v-deliver-bg: #e6f4ec;--v-quarantine: #a4620a;--v-quarantine-bg: #f8eddb;--v-reject: #b3261e;--v-reject-bg: #f8e4e2;--v-defer: #5a6472;--v-defer-bg: #eaedf1;--radius: 8px;--sans: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);color:var(--text);background:var(--surface);-webkit-font-smoothing:antialiased}.app{display:grid;grid-template-columns:232px 1fr;height:100%}.rail{background:var(--ink);color:var(--ink-text);display:flex;flex-direction:column;border-right:1px solid var(--ink-line)}.wordmark{font-family:var(--mono);font-weight:600;font-size:15px;letter-spacing:.18em;color:#fff;padding:20px 20px 18px;border-bottom:1px solid var(--ink-line);display:flex;align-items:center;gap:9px}.wordmark .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #0e7c8640}.nav{padding:12px 10px;display:flex;flex-direction:column;gap:2px}.nav button{all:unset;cursor:pointer;display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:6px;color:var(--ink-text-dim);font-size:14px;font-weight:500}.nav button:hover{background:var(--ink-2);color:var(--ink-text)}.nav button[aria-current=true]{background:var(--ink-2);color:#fff}.nav button[aria-current=true] .tick{background:var(--accent)}.nav .tick{width:3px;height:15px;border-radius:2px;background:transparent}.rail-foot{margin-top:auto;padding:14px 20px;border-top:1px solid var(--ink-line);font-size:12px;color:var(--ink-text-dim);font-family:var(--mono)}.main{min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:baseline;gap:14px;padding:20px 28px 16px;border-bottom:1px solid var(--line);background:var(--card)}.topbar h1{font-size:19px;font-weight:600;margin:0;letter-spacing:-.01em}.topbar .sub{color:var(--muted);font-size:13px}.content{padding:22px 28px 40px;overflow:auto}.demo-banner{background:var(--v-quarantine-bg);color:var(--v-quarantine);border:1px solid #ecdcbf;border-radius:6px;padding:8px 12px;font-size:12.5px;margin-bottom:18px;display:flex;gap:8px}.controls{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}input,select,textarea{font-family:var(--sans);font-size:13.5px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:8px 11px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea{width:100%;resize:vertical;min-height:64px;font-family:var(--mono);font-size:12.5px;line-height:1.5}input.search{flex:1;min-width:220px}button.btn{all:unset;cursor:pointer;font-size:13.5px;font-weight:500;padding:8px 14px;border-radius:6px;background:var(--accent);color:#fff;text-align:center}button.btn:hover{background:var(--accent-ink)}button.btn:focus-visible{box-shadow:0 0 0 3px var(--accent-soft)}button.btn.ghost{background:transparent;color:var(--accent);border:1px solid var(--line)}button.btn.ghost:hover{background:var(--accent-soft)}button.btn:disabled{cursor:not-allowed;background:var(--line);color:var(--muted)}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:11px 16px;border-bottom:1px solid var(--line);background:#fafbfc}tbody td{padding:12px 16px;border-bottom:1px solid var(--line-soft);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover{background:#f7f9fb}.mono{font-family:var(--mono);font-size:12.5px}.addr{font-family:var(--mono);font-size:12.5px;color:var(--text)}.subject{font-weight:500}.muted{color:var(--muted)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;font-family:var(--mono);letter-spacing:.02em;padding:3px 8px;border-radius:5px;text-transform:uppercase}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.deliver{color:var(--v-deliver);background:var(--v-deliver-bg)}.badge.quarantine{color:var(--v-quarantine);background:var(--v-quarantine-bg)}.badge.reject,.badge.malware{color:var(--v-reject);background:var(--v-reject-bg)}.badge.defer,.badge.pending{color:var(--v-defer);background:var(--v-defer-bg)}.badge.spam,.badge.phish,.badge.policy{color:var(--v-quarantine);background:var(--v-quarantine-bg)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#12161d6b;display:flex;justify-content:flex-end;z-index:20}.drawer{width:min(560px,94vw);height:100%;background:var(--card);border-left:1px solid var(--line);overflow:auto;animation:slide .22s cubic-bezier(.2,.7,.3,1)}@keyframes slide{0%{transform:translate(24px);opacity:.6}}@media(prefers-reduced-motion:reduce){.drawer{animation:none}}.drawer-head{padding:20px 24px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.drawer-head h2{margin:0 0 6px;font-size:16px;font-weight:600}.drawer-close{all:unset;cursor:pointer;color:var(--muted);font-size:20px;line-height:1;padding:2px 6px;border-radius:5px}.drawer-close:hover{background:var(--surface);color:var(--text)}.kv{display:grid;grid-template-columns:96px 1fr;gap:6px 14px;padding:18px 24px;font-size:13px;border-bottom:1px solid var(--line)}.kv dt{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding-top:2px}.kv dd{margin:0}.timeline{padding:20px 24px 28px}.timeline h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin:0 0 16px}.tl{position:relative;margin:0;padding:0 0 0 22px;list-style:none}.tl:before{content:"";position:absolute;left:5px;top:4px;bottom:8px;width:2px;background:var(--line)}.tl li{position:relative;padding:0 0 20px}.tl li:last-child{padding-bottom:0}.tl .dot{position:absolute;left:-22px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--v-defer);box-shadow:0 0 0 3px var(--card)}.tl .dot.received{background:var(--v-defer)}.tl .dot.scanned{background:var(--accent)}.tl .dot.quarantined{background:var(--v-quarantine)}.tl .dot.delivered,.tl .dot.released{background:var(--v-deliver)}.tl .dot.rejected,.tl .dot.bounced,.tl .dot.deleted{background:var(--v-reject)}.tl .ev{font-weight:600;font-size:13.5px;text-transform:capitalize}.tl .meta{font-family:var(--mono);font-size:11.5px;color:var(--muted);margin-top:2px}.tl .actor{color:var(--accent-ink)}.empty{text-align:center;padding:54px 20px;color:var(--muted)}.empty strong{display:block;color:var(--text);font-size:15px;margin-bottom:5px}.row-actions{display:flex;gap:8px;align-items:center}.hint{font-size:11.5px;color:var(--muted)}.count{font-family:var(--mono);font-size:12px;color:var(--muted);margin-left:auto;align-self:center}.addform{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line);background:#fafbfc}.scope{font-family:var(--mono);font-size:11.5px;color:var(--muted)}.subhead{display:flex;align-items:baseline;gap:10px;padding:14px 16px 4px}.subhead h3{font-size:13px;font-weight:600;letter-spacing:.02em}.subhead .hint{font-size:12px;color:var(--muted)}.discform{display:flex;flex-direction:column;gap:10px;padding:6px 16px 16px;max-width:720px}.discform .row{display:flex;gap:10px;align-items:center}.discform label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.saved{font-size:12px;color:var(--ok, #1a7f37)}.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.tile{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.tile .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px}.tile .value{font-family:var(--mono);font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.tile .value.accent{color:var(--accent)}.tile .foot{font-size:12px;color:var(--muted);margin-top:5px}.cols{display:grid;grid-template-columns:1.7fr 1fr;gap:16px}.card-h{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:14px 18px;border-bottom:1px solid var(--line)}.chart{display:flex;align-items:flex-end;gap:10px;height:200px;padding:20px 18px 12px}.chart .bar{flex:1;display:flex;flex-direction:column-reverse;justify-content:flex-start;min-width:0;gap:2px}.chart .seg{width:100%;border-radius:2px}.chart .seg.deliver{background:var(--v-deliver)}.chart .seg.quarantine{background:var(--v-quarantine)}.chart .seg.reject{background:var(--v-reject)}.chart .xlabel{text-align:center;font-family:var(--mono);font-size:10.5px;color:var(--muted);margin-top:6px}.legend{display:flex;gap:16px;padding:0 18px 16px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:9px;height:9px;border-radius:2px;display:inline-block}.attackers{padding:6px 0}.attackers .row{display:flex;align-items:center;gap:12px;padding:9px 18px}.attackers .dom{font-family:var(--mono);font-size:12.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attackers .track{width:84px;height:6px;background:var(--line-soft);border-radius:3px;overflow:hidden}.attackers .fill{height:100%;background:var(--v-quarantine)}.attackers .n{font-family:var(--mono);font-size:12px;color:var(--muted);width:42px;text-align:right}@media(max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}.cols{grid-template-columns:1fr}}@media(max-width:720px){.app{grid-template-columns:1fr}.rail{flex-direction:row;align-items:center;border-right:none;border-bottom:1px solid var(--ink-line)}.wordmark{border-bottom:none;border-right:1px solid var(--ink-line)}.nav{flex-direction:row;padding:8px}.rail-foot{display:none}.content{padding:16px}}
