:root{--bg:#010102;--bg-panel:#0b0c0e;--bg-elevated:#141518;--surface-3:#1c1d21;--surface-4:#232529;--border:#23252a;--border-strong:#2e3036;--border-tertiary:#1a1b1f;--text:#f7f8f8;--ink-muted:#d0d6e0;--text-dim:#8a8f98;--text-faint:#62666d;--primary:#5e6ad2;--primary-hover:#828fff;--primary-focus:#5e69d1;--on-primary:#fff;--primary-dim:#181a2e;--blue:#5e6ad2;--base-blue:#5e6ad2;--green:#27a644;--green-dim:#0f2a18;--red:#e5484d;--red-dim:#3a1618;--amber:#8a8f98;--sans:"Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-pill:9999px;--radius:12px;--s-xxs:4px;--s-xs:8px;--s-sm:12px;--s-md:16px;--s-lg:24px;--s-xl:32px;--edge-highlight:inset 0 1px 0 0 #ffffff09}*{box-sizing:border-box;min-width:0;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.5}a{color:var(--primary-hover);text-decoration:none}a:hover{color:var(--primary)}a:focus-visible,button:focus-visible{outline:2px solid var(--primary-focus);outline-offset:2px;border-radius:var(--r-xs)}.app{flex-direction:column;gap:12px;height:100vh;padding:14px;display:flex;overflow:hidden}.topbar{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--edge-highlight);flex-wrap:wrap;flex:none;align-items:center;gap:10px 18px;padding:10px 16px;display:flex}.brand{align-items:center;gap:var(--s-xs);letter-spacing:-.02em;white-space:nowrap;font-size:16px;font-weight:600;display:flex}.brand .shield{color:var(--primary);font-size:15px}.vault{font-family:var(--mono);letter-spacing:0;color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-sm);overflow-wrap:anywhere;padding:4px 9px;font-size:11px}.board{flex:1;grid-template-columns:1.12fr 1fr .96fr;gap:12px;min-height:0;display:grid}.col{flex-direction:column;gap:12px;min-width:0;min-height:0;display:flex}.col>.panel{flex:1}.col>.assurance-panel,.col>.chart-wrap{flex:none}@media (width<=1180px){.app{height:auto;min-height:100vh;overflow:visible}.board{grid-template-columns:1fr}.col{display:contents}.col>.panel{flex:none}.alert-list,.trace-list,.invariant-grid{max-height:360px}}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--edge-highlight);flex-direction:column;min-height:0;padding:14px 16px;display:flex}.panel-title{letter-spacing:.07em;text-transform:uppercase;color:var(--text-dim);flex:none;margin-bottom:12px;font-size:11px;font-weight:600}.topbar-status{flex-wrap:wrap;flex:1;align-items:center;gap:6px 20px;display:flex}.topbar-status .item{align-items:baseline;gap:6px;display:flex}.topbar-status .item .label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap;font-size:9.5px}.topbar-status .item .value{font-family:var(--mono);letter-spacing:0;color:var(--text);font-size:12px}.live-pill{align-items:center;gap:var(--s-xs);margin-left:auto;font-size:12px;font-weight:600;display:flex}.dot{border-radius:var(--r-pill);flex:none;width:8px;height:8px}.dot.live{background:var(--green);animation:1.8s infinite pulse}.dot.down{background:var(--red)}@keyframes pulse{0%{box-shadow:0 0 #27a64480}70%{box-shadow:0 0 0 7px #27a64400}to{box-shadow:0 0 #27a64400}}.realtime-banner{align-items:center;gap:var(--s-xs);padding:var(--s-xs) var(--s-md);background:var(--red-dim);color:var(--red);border-bottom:1px solid #e5484d40;font-size:12px;font-weight:500;display:flex}.realtime-banner .dot{background:var(--red);animation:1.6s infinite pulse-red}@keyframes pulse-red{0%{box-shadow:0 0 #e5484d80}70%{box-shadow:0 0 0 7px #e5484d00}to{box-shadow:0 0 #e5484d00}}.invariant-grid{flex:1;grid-template-columns:repeat(2,1fr);grid-auto-rows:min-content;gap:10px;min-height:0;display:grid;overflow-y:auto}@media (width>=1100px){.invariant-grid{grid-template-columns:repeat(3,1fr)}}.inv-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-md);border-left-width:3px;padding:12px 13px}.inv-card .top{justify-content:space-between;align-items:center;gap:var(--s-xs);margin-bottom:5px;display:flex}.inv-card .id{font-family:var(--mono);letter-spacing:0;color:var(--text-dim);font-size:11px}.inv-card .name{letter-spacing:-.01em;font-size:13px;font-weight:600}.inv-card .desc{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);overflow-wrap:anywhere;margin-top:4px;font-size:10.5px}.badge{letter-spacing:.05em;border-radius:var(--r-sm);white-space:nowrap;flex:none;padding:3px 7px;font-size:9.5px;font-weight:700}.badge.healthy{background:var(--green-dim);color:var(--green)}.badge.violated{background:var(--red-dim);color:var(--red)}.badge.checking{background:var(--surface-3);color:var(--text-dim)}.alert-list{gap:var(--s-xs);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.alert-row{align-items:flex-start;gap:var(--s-sm);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-md);padding:11px 12px;display:flex}.alert-row .pill{font-family:var(--mono);letter-spacing:0;background:var(--red-dim);color:var(--red);border-radius:var(--r-sm);white-space:nowrap;flex:none;padding:3px 7px;font-size:10px;font-weight:600}.alert-row .body{flex:1}.alert-row .body .name{letter-spacing:-.01em;font-size:13px;font-weight:600}.alert-row .body .meta{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);flex-wrap:wrap;gap:4px 14px;margin-top:3px;font-size:11px;display:flex}.empty{text-align:center;color:var(--text-faint);padding:40px 12px;font-size:13px}.chart{width:100%;height:96px;display:block}.btn{font:500 11px/1 var(--sans);letter-spacing:.01em;color:var(--text);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--r-sm);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:6px 12px;transition:background .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--primary-focus);color:var(--primary-hover)}.btn:active:not(:disabled){background:var(--surface-4)}.btn:disabled{color:var(--text-faint);cursor:not-allowed}.boundary-fallback{flex-direction:column;gap:12px;padding:12px 16px 14px;font-size:12px;display:flex}.boundary-fallback code{font-family:var(--mono);color:var(--text-dim);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--r-sm);white-space:pre-wrap;overflow-wrap:anywhere;padding:8px 10px;font-size:11px;display:block}.boundary-fallback .actions{justify-content:flex-end;display:flex}.realtime-banner.is-inline{border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);border-bottom:none;margin:-14px -16px 0}.alert-list-footer{border-top:1px solid var(--border-tertiary);justify-content:center;align-items:center;margin-top:4px;padding:10px 0 4px;display:flex}.alert-list-footer .end-label{color:var(--text-faint);font-size:11px}.scrollbar::-webkit-scrollbar{width:8px}.scrollbar::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-xs)}.scrollbar::-webkit-scrollbar-track{background:0 0}.assurance-hero{justify-content:space-between;align-items:center;gap:10px var(--s-lg);border-bottom:1px solid var(--border);flex-wrap:wrap;margin-bottom:12px;padding-bottom:10px;display:flex}.score-readout{align-items:baseline;gap:10px;display:flex}.score-num{font-family:var(--sans);letter-spacing:-.03em;font-size:40px;font-weight:600;line-height:1}.score-denom{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);font-size:17px}.score-grade{font-family:var(--mono);letter-spacing:0;border-radius:var(--r-md);border:1.5px solid;padding:4px 10px;font-size:15px;font-weight:500}.score-meta{text-align:right;color:var(--text-dim);font-size:12px}.score-meta-dim{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);margin-top:3px;font-size:11px}.score-comps{grid-template-columns:1fr 1fr;gap:10px 18px;display:grid}@media (width<=560px){.score-comps{grid-template-columns:1fr}}.score-comp-head{align-items:baseline;gap:var(--s-xs);margin-bottom:5px;display:flex}.score-comp-label{letter-spacing:-.01em;font-size:13px;font-weight:600}.score-comp-weight{letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap;font-size:10px}.score-comp-value{font-family:var(--mono);letter-spacing:0;margin-left:auto;font-size:14px;font-weight:500}.score-comp-detail{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);overflow-wrap:anywhere;margin-top:4px;font-size:10.5px;line-height:1.45}.score-bar-track{background:var(--surface-3);border-radius:var(--r-pill);height:6px;overflow:hidden}.score-bar-fill{border-radius:var(--r-pill);height:100%;transition:width .4s}.gate-strip{align-items:center;gap:var(--s-xs);border-radius:var(--r-md);margin-top:12px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.gate-strip.gate-pass{background:var(--green-dim);color:var(--green)}.gate-strip.gate-fail{background:var(--red-dim);color:var(--red)}.gate-mark{font-size:13px}.trace-summary{gap:var(--s-md) var(--s-xl);border-bottom:1px solid var(--border);flex-wrap:wrap;flex:none;margin-bottom:10px;padding-bottom:10px;display:flex}.trace-stat{flex-direction:column;gap:2px;display:flex}.trace-stat-num{font-family:var(--mono);letter-spacing:-.01em;font-size:21px;font-weight:500}.trace-stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:10px}.trace-list{gap:var(--s-xs);flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.trace-row,.exploit-row{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;gap:7px;padding:9px 11px;display:flex}.trace-main,.exploit-main{align-items:center;gap:6px var(--s-xs);flex-wrap:wrap;display:flex}.trace-side,.exploit-side{justify-content:flex-start;align-items:center;gap:6px var(--s-xs);flex-wrap:wrap;display:flex}.trace-id{font-family:var(--mono);letter-spacing:0;color:var(--text-dim);white-space:nowrap;font-size:11px}.trace-title,.exploit-name{letter-spacing:-.01em;font-size:12.5px;font-weight:500}.exploit-class{color:var(--text-faint);font-size:11px}.exploit-net{font-family:var(--mono);letter-spacing:0;color:var(--text-faint);font-size:10px}.trace-warn{margin-top:var(--s-sm);background:var(--red-dim);color:var(--red);border-radius:var(--r-md);flex:none;padding:10px 12px;font-size:11.5px}.sev-tag,.tier-tag,.outcome-tag{letter-spacing:.04em;text-transform:uppercase;border-radius:var(--r-sm);white-space:nowrap;flex:none;padding:3px 7px;font-size:9.5px;font-weight:700}.sev-critical{background:var(--red-dim);color:var(--red)}.sev-high{color:#f08a8d;background:#e5484d1f}.sev-medium{background:var(--surface-3);color:var(--ink-muted)}.sev-low,.sev-info,.sev-gas{background:var(--surface-3);color:var(--text-dim)}.tier-full{background:var(--green-dim);color:var(--green)}.tier-partial{background:var(--surface-3);color:var(--ink-muted)}.tier-gap{background:var(--red-dim);color:var(--red)}.tier-na{background:var(--surface-3);color:var(--text-faint)}.layer-chips{flex-wrap:wrap;gap:4px;display:flex}.layer-chip{font-family:var(--mono);letter-spacing:0;border-radius:var(--r-xs);white-space:nowrap;padding:3px 6px;font-size:9.5px}.layer-on{background:var(--primary-dim);color:var(--primary-hover)}.layer-off{background:var(--surface-3);color:var(--text-faint)}.out-prevented{background:var(--green-dim);color:var(--green)}.out-detected{background:var(--primary-dim);color:var(--primary-hover)}.out-missed{background:var(--red-dim);color:var(--red)}.panel-head{flex:none;margin-bottom:12px}.panel-head .panel-title{align-items:center;margin-bottom:0;display:flex}.panel-sub{letter-spacing:-.005em;text-transform:none;color:var(--text-dim);margin-top:4px;font-size:11.5px;font-weight:400;line-height:1.45}.tip-trigger{width:14px;height:14px;font:600 9px/1 var(--mono);color:var(--text-faint);background:var(--surface-3);border:1px solid var(--border-strong);border-radius:var(--r-pill);cursor:help;vertical-align:middle;flex:none;justify-content:center;align-items:center;margin-left:5px;padding:0;transition:color .12s,border-color .12s,background .12s;display:inline-flex}.tip-trigger:hover,.tip-trigger[aria-expanded=true]{color:var(--primary-hover);border-color:var(--primary-focus);background:var(--primary-dim)}.tip-i{transform:translateY(.5px)}.tip-as-child{font:inherit;letter-spacing:inherit;color:inherit;cursor:help;background:0 0;border:none;align-items:center;margin:0;padding:0;transition:opacity .12s;display:inline-flex}.tip-as-child:hover,.tip-as-child[aria-expanded=true]{opacity:.82}.tip-pop{z-index:50;font-family:var(--sans);background:var(--surface-4);border:1px solid var(--border-strong);border-radius:var(--r-md);box-shadow:0 8px 28px #0000008c, var(--edge-highlight);padding:10px 12px;animation:.11s tip-in;position:fixed}@keyframes tip-in{0%{opacity:0}}.tip-title{letter-spacing:-.01em;color:var(--text);margin-bottom:4px;font-size:12px;font-weight:600}.tip-plain{color:var(--ink-muted);font-size:12.5px;line-height:1.5}.tip-divider{background:var(--border);height:1px;margin:9px 0 8px}.tip-tech-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-bottom:3px;font-size:9px;font-weight:700}.tip-tech{font-family:var(--mono);letter-spacing:0;color:var(--text-dim);overflow-wrap:anywhere;font-size:11px;line-height:1.5}.inv-card .top .id-group{align-items:center;gap:2px;display:inline-flex}.score-comp-head .tip-trigger{margin-left:4px}.intro{background:var(--bg-panel);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--r-lg);box-shadow:var(--edge-highlight);flex:none;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.intro-icon{color:var(--primary);flex:none;font-size:15px;line-height:1.4}.intro-body{flex:1;min-width:0}.intro-title{letter-spacing:-.01em;margin-bottom:3px;font-size:13px;font-weight:600}.intro-text{color:var(--ink-muted);font-size:12.5px;line-height:1.5}.intro-tech{font-family:var(--mono);letter-spacing:0;color:var(--text-dim);overflow-wrap:anywhere;margin-top:6px;font-size:11px;line-height:1.5}.intro-dismiss{width:24px;height:24px;color:var(--text-faint);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;padding:0;font-size:14px;line-height:1;transition:color .12s,background .12s,border-color .12s}.intro-dismiss:hover{color:var(--text);background:var(--bg-elevated);border-color:var(--border)}.help-btn{flex:none}.intro-glossary{flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;display:flex}.intro-glossary-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);margin-right:2px;font-size:9.5px;font-weight:600}.gl-chip{color:var(--ink-muted);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--r-pill);cursor:help;padding:2px 9px;font-size:11px;transition:color .12s,border-color .12s}.gl-chip:hover{color:var(--primary-hover);border-color:var(--primary-focus)}.recorded-banner{padding:var(--s-xs) var(--s-md);background:var(--bg-elevated);color:var(--text);border-bottom:1px solid var(--border-strong);font-size:12px;line-height:1.5}.recorded-banner strong{font-weight:600}.recorded-banner code{font-family:var(--mono)}.recorded-banner a{color:inherit;text-decoration:underline}.dot.recorded{background:var(--text-dim)}
