:root{--surface: #ffffff;--surface-2: #f7f8fa;--surface-sel: #e8f4f2;--divider: #eceef1;--divider-strong: #d5d9df;--text: #14181f;--text-2: #4e5663;--text-3: #636b78;--accent: #0b7a70;--accent-text: #ffffff;--danger: #b3261e;--warn: #8a5a00;--warn-dot: #e0a020;--ok: #0b7a70;--info: #3b5bdb;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-xs: 11px;--fs-s: 12px;--fs-m: 13px;--fs-l: 15px;--fs-xl: 20px;--fs-xxl: 26px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--radius-s: 4px;--radius-m: 6px;--focus: 0 0 0 2px var(--surface), 0 0 0 4px var(--accent);color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--surface: #111418;--surface-2: #171b20;--surface-sel: #16302d;--divider: #22272e;--divider-strong: #323943;--text: #e8ebef;--text-2: #b4bcc8;--text-3: #9aa3b0;--accent: #4fd1c5;--accent-text: #0b1a19;--danger: #ff8a80;--warn: #f2c14e;--warn-dot: #f2c14e;--ok: #4fd1c5;--info: #9db4ff;color-scheme:dark}}:root[data-theme=dark]{--surface: #111418;--surface-2: #171b20;--surface-sel: #16302d;--divider: #22272e;--divider-strong: #323943;--text: #e8ebef;--text-2: #b4bcc8;--text-3: #9aa3b0;--accent: #4fd1c5;--accent-text: #0b1a19;--danger: #ff8a80;--warn: #f2c14e;--warn-dot: #f2c14e;--ok: #4fd1c5;--info: #9db4ff;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--surface);color:var(--text);font:var(--fs-m)/1.45 var(--sans);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-s)}.mono{font-family:var(--mono);font-size:var(--fs-s)}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:var(--fs-s)}.xs{font-size:var(--fs-xs)}.nowrap{white-space:nowrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break{word-break:break-all}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}h1{font-size:var(--fs-xxl);font-weight:650;margin:0;letter-spacing:-.01em}h2{font-size:var(--fs-l);font-weight:650;margin:0}h3{font-size:var(--fs-m);font-weight:650;margin:0}button,.btn{font:inherit;font-size:var(--fs-s);font-weight:550;border:1px solid var(--divider-strong);background:var(--surface);color:var(--text);padding:6px 12px;border-radius:var(--radius-m);cursor:pointer;white-space:nowrap}button:hover:not(:disabled){background:var(--surface-2)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}button.danger{color:var(--danger)}button.link{border:none;background:none;color:var(--accent);padding:2px 0}button.link:hover{text-decoration:underline;background:none}button.ghost{border-color:transparent;background:none}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--divider-strong);border-radius:var(--radius-m);padding:6px 10px}textarea{resize:vertical}label.field{display:grid;gap:4px;font-size:var(--fs-s);color:var(--text-2)}label.field>span{font-weight:550}.row{display:flex;gap:var(--sp-2);align-items:center}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{display:grid;gap:var(--sp-3)}.error{color:var(--danger);font-size:var(--fs-s)}.notice{border-left:3px solid var(--warn-dot);padding:var(--sp-2) var(--sp-3);background:var(--surface-2);font-size:var(--fs-s)}.notice.danger{border-color:var(--danger)}.shell{display:grid;grid-template-rows:48px 1fr;height:100%}.topbar{display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-4);border-bottom:1px solid var(--divider);min-width:0}.logo{display:flex;align-items:center;gap:6px;font-weight:700;font-size:var(--fs-l);color:var(--text)}.logo svg{color:var(--accent)}.case-switch{display:flex;align-items:center;gap:6px;font-size:var(--fs-s);min-width:0}.case-switch select{border:none;font-weight:600;padding:4px;max-width:320px}.search-box{flex:1;max-width:520px;margin:0 auto;display:flex;align-items:center;gap:6px;border:1px solid var(--divider-strong);border-radius:var(--radius-m);padding:0 10px;color:var(--text-3)}.search-box input{border:none;flex:1;padding:6px 0;background:transparent}.search-box input:focus{box-shadow:none;outline:none}.avatars{display:flex}.avatar{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:9px;font-weight:700;background:var(--surface-2);border:1px solid var(--divider-strong);margin-left:-4px;color:var(--text-2)}.avatar.me{background:var(--surface-sel);color:var(--accent)}.body{display:grid;grid-template-columns:208px 1fr;min-height:0}.sidenav{border-right:1px solid var(--divider);padding:var(--sp-3) var(--sp-2);display:flex;flex-direction:column;gap:1px;overflow-y:auto;font-size:var(--fs-s)}.sidenav a{color:var(--text);padding:5px 10px;border-radius:var(--radius-m);display:flex;align-items:center;gap:8px}.sidenav a:hover{background:var(--surface-2);text-decoration:none}.sidenav a.active{background:var(--surface-sel);color:var(--accent);font-weight:600}.sidenav .group{color:var(--text-3);font-size:var(--fs-xs);padding:14px 10px 4px}.sidenav .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}.sidenav .bottom{margin-top:auto;padding-top:var(--sp-4)}.main{overflow:auto;min-width:0}.page{padding:var(--sp-5) var(--sp-5) var(--sp-6);max-width:1440px}.page-head{display:flex;align-items:flex-start;gap:var(--sp-4);margin-bottom:var(--sp-4)}.page-head .sub{color:var(--text-2);font-size:var(--fs-s);margin-top:4px}.split{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--sp-5);align-items:start}.split.wide-detail{grid-template-columns:minmax(0,1fr) clamp(360px,34%,460px)}.detail{border-left:1px solid var(--divider);padding-left:var(--sp-5);position:sticky;top:0;min-width:0}.detail h2{margin:4px 0 2px;font-size:var(--fs-xl)}.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;font-size:var(--fs-s);margin:var(--sp-3) 0}.kv dt{color:var(--text-2)}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}.section-title{font-size:var(--fs-s);font-weight:650;margin:var(--sp-4) 0 var(--sp-2)}table.list{width:100%;border-collapse:collapse;font-size:var(--fs-s)}table.list th{text-align:left;font-weight:500;color:var(--text-2);padding:6px 8px;border-bottom:1px solid var(--divider);position:sticky;top:0;background:var(--surface);z-index:1;white-space:nowrap}table.list th button{all:unset;cursor:pointer}table.list td{padding:7px 8px;border-bottom:1px solid var(--divider);vertical-align:top}table.list tr.sel td{background:var(--surface-sel)}table.list tbody tr{cursor:pointer}table.list tbody tr:hover td{background:var(--surface-2)}table.list tbody tr.sel:hover td{background:var(--surface-sel)}table.list td.num,table.list th.num{text-align:right;font-variant-numeric:tabular-nums}table.list td.mono{white-space:nowrap}td .ellipsis{width:0;min-width:100%}.deleted{color:var(--danger)}.chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--divider-strong);border-radius:999px;padding:2px 4px 2px 10px;font-size:var(--fs-s);background:var(--surface-2)}.chip button{border:none;background:none;padding:0 4px;color:var(--text-2);font-size:var(--fs-m)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--divider);margin-bottom:var(--sp-3)}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:8px 12px;color:var(--text-2)}.tabs button.on{border-bottom-color:var(--accent);color:var(--text)}.seg{display:inline-flex;border:1px solid var(--divider-strong);border-radius:var(--radius-m);overflow:hidden}.seg button{border:none;border-radius:0;padding:4px 10px}.seg button.on{background:var(--surface-sel);color:var(--accent)}.status{display:inline-flex;gap:5px;align-items:center;font-size:var(--fs-s);white-space:nowrap}.status .sym{font-size:11px;width:12px;text-align:center}.s-ok{color:var(--ok)}.s-warn{color:var(--warn)}.s-bad{color:var(--danger)}.s-info{color:var(--info)}.s-none{color:var(--text-3)}.cat-dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:6px;flex:none}.prov{display:grid;grid-template-columns:16px 64px 1fr;gap:8px 6px;font-size:var(--fs-s);align-items:start}.prov .node{width:9px;height:9px;border:1.5px solid var(--accent);border-radius:50%;margin-top:4px}.prov .node.last{background:var(--accent)}.prov dt{color:var(--text-2)}.prov dd{margin:0;font-family:var(--mono);font-size:var(--fs-xs);overflow-wrap:anywhere}.stats{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--divider);margin-bottom:var(--sp-4)}.stat{padding:var(--sp-3) 0;border-left:1px solid var(--divider);padding-left:var(--sp-4)}.stat:first-child{border-left:none;padding-left:0}.stat b{font-size:var(--fs-xl);display:block}.stat span{font-size:var(--fs-s);color:var(--text-2)}.pipeline{display:grid;grid-template-columns:repeat(8,1fr);margin:var(--sp-4) 0 var(--sp-5)}.stage{position:relative;padding-top:18px;font-size:var(--fs-s)}.stage:before{content:"";position:absolute;top:5px;left:0;right:0;height:2px;background:var(--divider-strong)}.stage.done:before,.stage.active:before{background:var(--accent)}.stage .pt{position:absolute;top:0;left:0;width:12px;height:12px;border-radius:50%;background:var(--surface);border:2px solid var(--divider-strong)}.stage.done .pt{background:var(--accent);border-color:var(--accent)}.stage.active .pt{border-color:var(--accent)}.stage b{display:block;font-weight:600}.hist{display:flex;align-items:flex-end;gap:1px;height:64px;border-bottom:1px solid var(--divider)}.hist button{flex:1;border:none;border-radius:1px 1px 0 0;padding:0;background:var(--divider-strong);min-height:1px}.hist button:hover,.hist button.hot{background:var(--accent)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:grid;place-items:center;z-index:50}.dialog{background:var(--surface);border:1px solid var(--divider-strong);border-radius:10px;width:min(760px,94vw);max-height:90vh;overflow:auto;padding:var(--sp-5);box-shadow:0 20px 60px #00000040}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:var(--sp-5)}.auth-card{width:min(400px,100%);display:grid;gap:var(--sp-4)}.auth-card h1{font-size:var(--fs-xl)}.codes{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px;font-family:var(--mono);padding:var(--sp-3);background:var(--surface-2);border-radius:var(--radius-m)}.explorer{display:grid;grid-template-columns:260px minmax(0,1fr);height:calc(100vh - 48px)}.tree{border-right:1px solid var(--divider);overflow:auto;padding:var(--sp-2) 0;font-size:var(--fs-s)}.tree-row{display:flex;align-items:center;gap:2px;padding:3px 8px;cursor:pointer;white-space:nowrap}.tree-row:hover{background:var(--surface-2)}.tree-row.sel{background:var(--surface-sel);color:var(--accent)}.tree-row .tw{width:14px;color:var(--text-3);flex:none;text-align:center}.explorer-main{display:grid;grid-template-rows:auto minmax(160px,42%) minmax(0,1fr);min-height:0}.explorer-bar{display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--divider);font-size:var(--fs-s)}.vlist{overflow:auto;min-height:0;border-bottom:1px solid var(--divider)}.vgrid{display:grid;grid-template-columns:minmax(220px,2fr) 84px repeat(4,158px) 64px;font-size:var(--fs-s)}.vgrid .mono{font-size:11.5px}.vhead button{all:unset;cursor:pointer}.vhead button:focus-visible{box-shadow:var(--focus)}.vgrid>div{padding:5px 8px;border-bottom:1px solid var(--divider);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vhead>div{color:var(--text-2);position:sticky;top:0;background:var(--surface);z-index:1}.vrow{cursor:pointer}.vrow:hover>div{background:var(--surface-2)}.vrow.sel>div{background:var(--surface-sel)}.viewer{display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:0}.viewer-pane{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;border-right:1px solid var(--divider)}.meta-pane{overflow:auto;padding:var(--sp-3) var(--sp-4)}.hex{font-family:var(--mono);font-size:12px;overflow:auto;min-height:0;-webkit-user-select:none;user-select:none}.hex-row{display:flex;gap:16px;height:20px;align-items:center;padding:0 12px;white-space:pre}.hex-off{color:var(--text-3);width:96px;flex:none}.hex-bytes{display:flex;gap:0}.hex-bytes span,.hex-ascii span{cursor:text}.hex-bytes span{width:22px;text-align:center}.hex-bytes span:nth-child(8){margin-right:8px}.hex-bytes span.sel,.hex-ascii span.sel{background:var(--surface-sel);color:var(--accent)}.hex-ascii{color:var(--text-2)}.decode{font-family:var(--mono);font-size:var(--fs-xs);display:grid;grid-template-columns:110px 1fr;gap:2px 8px}.textview{overflow:auto;font-family:var(--mono);font-size:12px;min-height:0}.textview table{border-collapse:collapse}.textview td{padding:0 10px;vertical-align:top}.textview td.ln{color:var(--text-3);text-align:right;-webkit-user-select:none;user-select:none;border-right:1px solid var(--divider)}.textview td.tx{white-space:pre}.textview.wrap td.tx{white-space:pre-wrap;word-break:break-all}mark{background:color-mix(in srgb,var(--warn-dot) 45%,transparent);color:inherit}.empty{color:var(--text-3);padding:var(--sp-5);text-align:center;font-size:var(--fs-s)}.progress{height:4px;background:var(--divider);border-radius:2px;overflow:hidden;width:80px;display:inline-block;vertical-align:middle}.progress>i{display:block;height:100%;background:var(--accent)}.store-list{border:1px solid var(--divider);border-radius:var(--radius-m);max-height:260px;overflow:auto}.store-list div{padding:6px 10px;border-bottom:1px solid var(--divider);cursor:pointer;display:flex;gap:8px;font-size:var(--fs-s)}.store-list div:hover{background:var(--surface-2)}.store-list div.sel{background:var(--surface-sel)}.src-dots{display:inline-flex;gap:6px;font-size:13px}.src-dot{display:inline-block;width:14px;text-align:center;line-height:1}.v-ran{color:var(--ok)}.v-present{color:var(--warn)}.v-none,.v-na{color:var(--text-3)}.legend{display:inline-flex;gap:var(--sp-3)}.legend .src-dot{margin-right:3px}table.sources td{vertical-align:top}button.on,.chip.on{background:var(--surface-sel);color:var(--accent);border-color:var(--accent)}button.chip{padding:2px 10px}.chip.tag{padding-right:8px}.chip.tag:has(button){padding-right:2px}.note{border-top:1px solid var(--divider);padding:var(--sp-2) 0;font-size:var(--fs-s)}.attention{border:1px solid var(--divider);border-radius:var(--radius-m)}.att-item{display:flex;gap:var(--sp-3);align-items:flex-start;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--divider)}.att-item:last-child{border-bottom:none}.att-item .status{width:72px;flex:none;padding-top:2px}.hist a.bar{flex:1;border-radius:1px 1px 0 0;background:var(--divider-strong);min-height:1px}.hist a.bar:hover{background:var(--accent)}.event-row{display:grid;grid-template-columns:140px minmax(0,1fr);gap:2px var(--sp-2);width:100%;text-align:left;border:none;border-top:1px solid var(--divider);border-radius:0;background:none;padding:6px 0;white-space:normal;font-weight:450;overflow-wrap:anywhere}.event-row>.faint{grid-column:2}.event-row:hover{background:var(--surface-2)}.hit{padding:var(--sp-2) 0;border-bottom:1px solid var(--divider)}.frag{color:var(--text-2);white-space:pre-wrap;word-break:break-all;margin-top:2px}.card{border:1px solid var(--divider);border-radius:var(--radius-m);padding:var(--sp-3) var(--sp-4);background:var(--surface)}.volume{padding:var(--sp-2) 0;border-bottom:1px solid var(--divider)}.volume:last-of-type{border-bottom:none}label>input:not([type=checkbox]):not([type=radio]),label>select,label>textarea{display:block;width:100%;margin-top:4px}:root{--found-bg: #fdecea;--found-fg: #9c221b;--partial-bg: #fdf3dd;--partial-fg: #7a4f00;--checked-bg: #e6f4f1;--checked-fg: #0a665e}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--found-bg: #3a1c1b;--found-fg: #ffb4ab;--partial-bg: #362a12;--partial-fg: #f2c14e;--checked-bg: #14302c;--checked-fg: #7fe0d4}}:root[data-theme=dark]{--found-bg: #3a1c1b;--found-fg: #ffb4ab;--partial-bg: #362a12;--partial-fg: #f2c14e;--checked-bg: #14302c;--checked-fg: #7fe0d4}.matrix{display:flex;gap:6px;overflow-x:auto;padding-bottom:var(--sp-2)}.tactic{flex:1 0 108px;min-width:108px;max-width:150px;display:flex;flex-direction:column;gap:4px;padding:4px;border:1px solid transparent;border-radius:var(--radius-m)}.tactic.on{border-color:var(--accent)}button.tactic-head{all:unset;cursor:pointer;display:grid;padding:2px 4px 6px;font-size:var(--fs-s);line-height:1.25;min-height:48px;align-content:start}button.tactic-head:focus-visible{box-shadow:var(--focus);border-radius:var(--radius-s)}button.tech{display:grid;gap:1px;text-align:left;padding:4px 6px;border:1px solid transparent;border-radius:var(--radius-s);white-space:normal;min-width:0;font-weight:450}button.tech .ellipsis{display:block}button.tech.t-found{background:var(--found-bg);color:var(--found-fg)}button.tech.t-partial{background:var(--partial-bg);color:var(--partial-fg)}button.tech.t-checked{background:var(--checked-bg);color:var(--checked-fg)}button.tech.t-none{background:none;color:var(--text-2);border-color:var(--divider-strong)}button.tech.t-found:hover:not(:disabled){background:var(--found-bg);filter:brightness(.97)}button.tech.t-partial:hover:not(:disabled){background:var(--partial-bg);filter:brightness(.97)}button.tech.t-checked:hover:not(:disabled){background:var(--checked-bg);filter:brightness(.97)}button.tech.sel{outline:2px solid currentColor;outline-offset:-1px}.t-sym{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:var(--radius-s);font-size:11px;font-weight:700;vertical-align:2px}.t-sym.t-found,.xs.t-found{color:var(--found-fg)}.t-sym.t-found{background:var(--found-bg)}.t-sym.t-partial,.xs.t-partial{color:var(--partial-fg)}.t-sym.t-partial{background:var(--partial-bg)}.t-sym.t-checked,.xs.t-checked{color:var(--checked-fg)}.t-sym.t-checked{background:var(--checked-bg)}.t-sym.t-none,.xs.t-none{color:var(--text-3)}.t-sym.t-none{border:1px solid var(--divider-strong)}.rule-mark{color:var(--info)}button.finding-row{display:grid;gap:1px;width:100%;text-align:left;white-space:normal;font-weight:450;border:none;border-top:1px solid var(--divider);border-radius:0;background:none;padding:6px 8px}button.finding-row.sel{background:var(--surface-sel)}button.finding-row:hover:not(:disabled):not(.sel){background:var(--surface-2)}a.btn{display:inline-block;color:var(--text)}a.btn:hover{background:var(--surface-2);text-decoration:none}.drawer{display:contents}.drawer-close{display:none}.case-switch .mono{white-space:nowrap}@media (max-width: 1280px){.split,.split.wide-detail{grid-template-columns:minmax(0,1fr)}.detail{border-left:none;padding-left:0;position:static;border-top:1px solid var(--divider);padding-top:var(--sp-4)}.split>.detail.faint,.drawer:not(.open){display:none}.drawer.open{display:block;position:fixed;top:48px;right:0;bottom:0;width:min(480px,100vw);z-index:40;overflow-y:auto;background:var(--surface);border-left:1px solid var(--divider-strong);box-shadow:-12px 0 32px #0000002e;padding:0 var(--sp-5) var(--sp-5)}.drawer .detail{border:none;padding:0}.drawer-close{display:block;position:sticky;top:0;z-index:1;margin:0 calc(-1 * var(--sp-5)) 0 auto;padding:var(--sp-3) var(--sp-4);background:var(--surface)}.explorer{grid-template-columns:200px minmax(0,1fr)}.viewer{grid-template-columns:minmax(0,1fr) 260px}.stats{grid-template-columns:repeat(2,1fr)}.stat:nth-child(odd){border-left:none;padding-left:0}}@media (max-width: 960px){.body{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.sidenav{flex-direction:row;overflow-x:auto;border-right:none;border-bottom:1px solid var(--divider);padding:var(--sp-1) var(--sp-2)}.sidenav .group{display:none}.sidenav .bottom{margin:0;padding:0}.sidenav a{white-space:nowrap}.search-box,.case-switch .mono{display:none}.topbar{gap:var(--sp-2)}.explorer{grid-template-columns:minmax(0,1fr);grid-template-rows:140px minmax(0,1fr);height:calc(100vh - 90px)}.tree{border-right:none;border-bottom:1px solid var(--divider)}.viewer{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(240px,1fr) auto}.viewer-pane{border-right:none}.meta-pane{border-top:1px solid var(--divider)}.page{padding:var(--sp-4)}.pipeline{grid-template-columns:repeat(4,1fr);row-gap:var(--sp-3)}}
