:root{--bg:#0c0d12;--bg-grad:radial-gradient(1100px 560px at 84% -12%,#191a2b 0%,transparent 58%);--panel:#14151d;--panel-2:#171922;--panel-hover:#1b1d28;--border:rgba(255,255,255,.07);--border-strong:rgba(255,255,255,.12);--text:#ecedf3;--text-muted:#9aa1b2;--text-faint:#6a7080;--accent:#8480ff;--accent-ink:#9b98ff;--accent-soft:rgba(132,128,255,.14);--good:#34c98c;--good-soft:rgba(52,201,140,.14);--bad:#f2595f;--bad-soft:rgba(242,89,95,.14);--warn:#e5a94b;--warn-soft:rgba(229,169,75,.15);--info:#5aa6fb;--info-soft:rgba(90,166,251,.15);--shadow:0 1px 0 rgba(255,255,255,.02),0 22px 50px -28px rgba(0,0,0,.8);--ring:rgba(132,128,255,.5);--mono:"Cascadia Code",ui-monospace,"SF Mono",Consolas,"Segoe UI Mono",monospace}@media (prefers-color-scheme:light){:root{--bg:#f6f7fb;--bg-grad:radial-gradient(1200px 600px at 82% -10%,#eef0fb 0%,transparent 60%);--panel:#fff;--panel-2:#fbfbfe;--panel-hover:#f5f6fd;--border:#e9eaf2;--border-strong:#dde0ec;--text:#1a1c24;--text-muted:#5d6577;--text-faint:#949bad;--accent:#5a56e0;--accent-ink:#4b47d6;--accent-soft:rgba(90,86,224,.09);--good:#17915f;--good-soft:rgba(23,145,95,.12);--bad:#d23b41;--bad-soft:rgba(210,59,65,.12);--warn:#b07219;--warn-soft:rgba(176,114,25,.14);--info:#2b7de0;--info-soft:rgba(43,125,224,.12);--shadow:0 1px 2px rgba(20,22,40,.04),0 10px 30px -16px rgba(20,22,40,.14);--ring:rgba(90,86,224,.4)}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;color:var(--text);font-family:Segoe UI,ui-sans-serif,-apple-system,system-ui,Roboto,sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}.mono{font-family:var(--mono)}.mono,.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:6px}.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.side{border-right:1px solid var(--border);background:var(--panel);position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}.brand{display:flex;align-items:center;gap:11px;padding:20px 18px 14px}.brand .mark{width:30px;height:30px;border-radius:9px;flex:none;background:linear-gradient(150deg,var(--accent),#b3b0ff 130%);box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 4px 12px -3px var(--ring)}.brand .name{font-weight:660;letter-spacing:-.01em;font-size:15px}.brand .sub{font-size:11px;color:var(--text-faint);margin-top:1px}.nav{padding:6px 12px;flex-direction:column;gap:1px}.nav,.nav a{display:flex}.nav a{align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--text-muted);font-weight:500;font-size:13.5px;position:relative}.nav a:hover{background:var(--panel-hover);color:var(--text)}.nav a.active{color:var(--text);background:var(--accent-soft)}.nav a.active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;background:var(--accent);border-radius:0 3px 3px 0}.nav a .em{width:18px;text-align:center;flex:none}.side .foot{margin-top:auto;padding:14px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.side .foot,.side .foot button{font-size:11.5px;color:var(--text-faint)}.side .foot button{background:none;border:0}.side .foot button:hover{color:var(--text)}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:14px;padding:16px 30px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar h1{margin:0;font-size:19px;font-weight:650;letter-spacing:-.02em}.topbar p{margin:2px 0 0;font-size:12.5px;color:var(--text-muted)}.content{padding:24px 30px 60px;max-width:1240px;width:100%}.spacer{flex:1 1}h2{font-size:15px;font-weight:650;margin:26px 0 12px}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.grid{display:grid;grid-gap:14px;gap:14px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}.box{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px 17px;box-shadow:var(--shadow)}.box.clk,a.box{transition:transform .12s,border-color .12s;cursor:pointer;display:block}.box.clk:hover,a.box:hover{transform:translateY(-2px);border-color:var(--accent)}.kpi .lab{font-size:12px;color:var(--text-muted);font-weight:550}.kpi .val{font-size:26px;font-weight:680;letter-spacing:-.025em;margin-top:7px}.kpi .val small{font-size:15px;color:var(--text-faint)}.kpi .delta{font-size:12px;font-weight:600;margin-top:8px}.up{color:var(--good)}.down{color:var(--bad)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.panel .ph{padding:13px 17px;border-bottom:1px solid var(--border);font-weight:640;font-size:13.5px;background:var(--panel-2);display:flex;align-items:center;gap:8px}.panel .pb{padding:15px 17px}.scroll{overflow-x:auto}table.tbl{width:100%;border-collapse:collapse;font-size:13px;min-width:640px}table.tbl th{text-align:left;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint);font-weight:650;background:var(--panel-2);position:-webkit-sticky;position:sticky;top:0}table.tbl td,table.tbl th{padding:11px 14px;border-bottom:1px solid var(--border)}table.tbl td{vertical-align:middle}table.tbl tr:last-child td{border-bottom:0}table.tbl tr.clk{cursor:pointer}table.tbl tr.clk:hover td{background:var(--panel-hover)}.right{text-align:right}.center{text-align:center}.nowrap,.pill{white-space:nowrap}.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:650;padding:3px 9px;border-radius:999px}.pill .dot{width:6px;height:6px;border-radius:50%}.pill.ok{color:var(--good);background:var(--good-soft)}.pill.ok .dot{background:var(--good)}.pill.no{color:var(--bad);background:var(--bad-soft)}.pill.no .dot{background:var(--bad)}.pill.warn{color:var(--warn);background:var(--warn-soft)}.pill.warn .dot{background:var(--warn)}.pill.info{color:var(--info);background:var(--info-soft)}.pill.info .dot{background:var(--info)}.pill.mut,.tag{color:var(--text-muted);background:var(--panel-2);border:1px solid var(--border)}.tag{display:inline-block;font-size:11.5px;border-radius:6px;padding:2px 8px;margin:2px 4px 2px 0}.tag.mono{font-family:var(--mono)}.btn{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:600;border-radius:9px;padding:9px 15px;border:1px solid var(--border-strong);background:var(--panel);color:var(--text)}.btn:hover{border-color:var(--text-faint)}.btn.primary{border-color:transparent;color:#fff;background:linear-gradient(180deg,var(--accent),var(--accent-ink))}.input{width:100%;background:var(--panel-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;color:var(--text);font:inherit}.seg{display:inline-flex;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:3px}.seg button{border:0;background:transparent;color:var(--text-muted);font-weight:550;padding:6px 13px;border-radius:7px;font-size:13px}.seg button.on{background:var(--accent-soft);color:var(--accent-ink)}.center-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.loading{color:var(--text-faint);padding:40px;text-align:center}.scrim{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:color-mix(in srgb,#05060a 58%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.modal{width:100%;max-width:620px;max-height:88vh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border-strong);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}.modal .mh{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border-bottom:1px solid var(--border)}.modal .mb{padding:16px 20px;overflow-y:auto}.mclose{margin-left:auto;width:32px;height:32px;border-radius:8px;border:1px solid var(--border);color:var(--text-muted)}.bar,.mclose{background:var(--panel-2)}.bar{height:7px;border-radius:999px;border:1px solid var(--border);overflow:hidden;min-width:80px}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#b3b0ff)}.pagehead{display:flex;align-items:flex-start;gap:14px;margin-bottom:6px}.pagehead .big{font-size:26px;line-height:1}.minirow{display:flex;align-items:center;gap:11px;padding:9px 2px;border-bottom:1px solid var(--border);font-size:13px}.minirow:last-child{border-bottom:0}.kpi{position:relative;overflow:hidden}.kpi .spark{position:absolute;right:12px;bottom:12px;width:90px;height:32px;opacity:.9}.kpi .ring{position:absolute;right:14px;top:14px}.chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:500;background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:7px 11px;color:var(--text-muted);cursor:pointer;box-shadow:var(--shadow)}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip b{color:var(--text);font-weight:600}.chip select{border:0;background:transparent;color:var(--text);font:inherit;font-weight:600;outline:none}.cardcell{display:flex;align-items:center;gap:11px;min-width:0}.cardglyph{width:34px;height:22px;border-radius:5px;flex:none;background:linear-gradient(135deg,#2b2f45,#3a4066);display:grid;place-items:center;font-size:8px;font-weight:800;color:#c9ccff;letter-spacing:.03em}@media (prefers-color-scheme:light){.cardglyph{background:linear-gradient(135deg,#e7e8f5,#d8daf0);color:#5a56e0}}.cardcell .nm{font-weight:580;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cardcell .pan{font-size:11.5px;color:var(--text-faint)}.retryflag{font-size:10px;font-weight:700;letter-spacing:.04em;color:var(--warn);background:var(--warn-soft);border-radius:5px;padding:1px 5px;margin-left:6px;vertical-align:middle}.mid-chip{font-size:12px;color:var(--text-muted);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:2px 7px;font-family:var(--mono)}.stat-proc .dot{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.m-meta{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1px;gap:1px;background:var(--border);border-bottom:1px solid var(--border)}.m-meta>div{background:var(--panel);padding:12px 20px}.m-meta .k{font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-weight:650}.m-meta .v{margin-top:4px;font-size:14px;font-weight:600}.att{position:relative;padding-left:26px}.att:before{content:"";position:absolute;left:5px;top:8px;bottom:20px;width:2px;background:var(--border-strong)}.step{position:relative;padding-bottom:18px}.step:last-child{padding-bottom:0}.step .node{position:absolute;left:-26px;top:2px;width:12px;height:12px;border-radius:50%;border:2px solid var(--panel)}.step.fail .node{background:var(--bad);box-shadow:0 0 0 4px var(--bad-soft)}.step.pass .node{background:var(--good);box-shadow:0 0 0 4px var(--good-soft)}.step .top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.step .verdict{font-size:13px;font-weight:700;letter-spacing:.02em}.step.fail .verdict{color:var(--bad)}.step.pass .verdict{color:var(--good)}.step .stamp{font-size:12px;color:var(--text-faint)}.step .line{margin-top:5px;font-size:13px;color:var(--text-muted)}.step .tags{margin-top:8px;display:flex;gap:7px;flex-wrap:wrap}.raw{margin-top:14px;border:1px solid var(--border);border-radius:10px;overflow:hidden}.raw summary{list-style:none;cursor:pointer;padding:10px 13px;font-size:12.5px;font-weight:600;color:var(--text-muted);background:var(--panel-2)}.raw summary::-webkit-details-marker{display:none}.raw pre{margin:0;padding:13px;font-size:11px;line-height:1.55;color:var(--text-muted);overflow-x:auto;background:var(--panel);white-space:pre-wrap;word-break:break-all;max-height:260px}.m-foot{display:flex;gap:10px;padding:14px 20px;border-top:1px solid var(--border);background:var(--panel-2)}@media (max-width:820px){.app{grid-template-columns:1fr}.side{display:none}.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:1fr}.m-meta{grid-template-columns:repeat(2,1fr)}}