*{margin:0;padding:0;box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-head);font-weight:600;letter-spacing:-.02em}h1{font-size:20px}h2{font-size:16px;margin-bottom:8px}h3{font-size:13px;color:var(--ink2);text-transform:uppercase;letter-spacing:.06em}a{color:var(--brand-text)}button{font-family:var(--font-sans);cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.5}.wrap{max-width:1180px;margin:0 auto;padding:20px 18px 64px}.topbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:18px}.topbar .spacer{flex:1}.tabs{display:flex;gap:4px}.tab{background:none;border:1px solid transparent;border-radius:8px;padding:6px 12px;font-size:13.5px;color:var(--ink2)}.tab.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-text)}.filters{display:flex;gap:6px;align-items:center}.filters select,.filters input{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:5px 9px;font-size:13px;font-family:inherit}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:14px}.grid{display:grid;gap:12px}.grid.n5{grid-template-columns:repeat(5,1fr)}.grid.n4{grid-template-columns:repeat(4,1fr)}.grid.n3{grid-template-columns:repeat(3,1fr)}.grid.n2{grid-template-columns:repeat(2,1fr)}@media(max-width:900px){.grid.n5,.grid.n4{grid-template-columns:repeat(2,1fr)}.grid.n3,.grid.n2{grid-template-columns:1fr}}.stat .n{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15}.stat .k{font-size:12px;color:var(--ink2)}.stat.warn .n{color:var(--danger)}.stat.good .n{color:var(--brand-text)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:start;font-size:11.5px;color:var(--ink3);font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}.tbl tr:last-child td{border-bottom:none}.tbl .num{font-variant-numeric:tabular-nums;white-space:nowrap}.tbl .bad{color:var(--danger)}.scrollx{overflow:auto;max-height:75vh}.tbl>thead{position:sticky;top:0;z-index:2;background:var(--surface)}.tbl>thead th,.tbl>tbody>tr>:first-child{background:var(--surface)}.tbl>thead th:first-child,.tbl>tbody>tr>:first-child{position:sticky;inset-inline-start:0;z-index:1}.tbl>thead th:first-child{z-index:3}table[data-more]:not([data-all])>tbody>tr:nth-child(n+6){display:none}table>caption.morecap{caption-side:bottom;text-align:start;padding-top:6px}.mono,.ltr,.raw-json,.dup-link,.tbl .num{direction:ltr;unicode-bidi:isolate}.mono,.ltr,.dup-link,.tbl .num{text-align:right}.raw-json{text-align:left}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all}.dim{color:var(--ink2)}.err{color:var(--danger)}.note{font-size:12.5px;color:var(--ink2);background:var(--bg2);border-radius:8px;padding:8px 10px;margin-top:8px}.sankeywrap{position:relative}.sankey{width:100%;height:auto;display:block;direction:ltr}.sankey .flow{fill:none;stroke:var(--brand);opacity:.3}.sankey .flow.drop{stroke:var(--danger);opacity:.32}.sankey .flow:hover{opacity:.62}.sankey .node{fill:var(--brand)}.sankey .node.terminal{fill:var(--danger)}.sankey text{fill:var(--ink);font-size:11px;font-family:var(--font-sans)}.sankey text.v{fill:var(--ink2);font-variant-numeric:tabular-nums}.sankey text.v .r{fill:var(--ink3)}.sankey .hit{fill:transparent}.sankey .nodeg.on .node{filter:brightness(1.25)}.sankey .nodeg.on text{font-weight:700}.sankeytip{position:absolute;z-index:5;pointer-events:none;width:min(340px,80vw);background:var(--surface2);border:1px solid var(--line);border-radius:10px;padding:9px 11px;box-shadow:var(--shadow-lift);font-size:12.5px;line-height:1.6}.floattip{position:fixed;z-index:50;pointer-events:none;width:min(320px,80vw);background:var(--surface2);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:8px 11px;box-shadow:var(--shadow-lift);font-size:12.5px;font-weight:400;line-height:1.6;white-space:normal;text-align:start}.sankeytip .tiphead{font-weight:700;margin-bottom:3px}.sankeytip .tipnums{display:flex;gap:12px;flex-wrap:wrap;color:var(--ink2);font-variant-numeric:tabular-nums;margin-bottom:5px}.sankeytip .tipnums b{color:var(--ink);font-size:14px}.sankeytip p{margin:0;color:var(--ink2)}.sankeytip .tipex{margin-top:7px;padding-top:7px;border-top:1px solid var(--line);color:var(--ink2)}.sankeytip .tipex .mono{display:block;font-size:11px;word-break:normal;overflow-wrap:anywhere}.jgraph{width:100%;height:auto;display:block;direction:ltr}.jgraph .edge{fill:none;stroke:var(--ink3);opacity:.5}.jgraph .edgeg.back .edge{stroke-dasharray:5 4}.jgraph .edgeg:hover .edge{opacity:.9}.jgraph .arrow{fill:var(--ink2);opacity:.8}.jgraph .edgeg:hover .arrow{fill:var(--brand);opacity:1}.jgraph .hit{fill:transparent}.jgraph .gnode{stroke:var(--line);stroke-width:1.5}.jgraph .gnode.entry{stroke:var(--brand)}.jgraph text{fill:var(--ink);font-size:10.5px;font-family:var(--font-sans);text-anchor:middle;-webkit-user-select:none;user-select:none}.jgraph text.v{fill:var(--ink2);font-variant-numeric:tabular-nums}.jgraph .nodeg.on .gnode{stroke:var(--ink2);stroke-width:2.5}.jgraph .nodeg.on text{font-weight:700}.jgraph .nodeg{cursor:grab;touch-action:none}.jgraph .nodeg:active{cursor:grabbing}.jglegend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:12px}.jglegend .ramp{display:flex;border:1px solid var(--line);border-radius:4px}.jglegend .ramp i{display:block;width:26px;height:11px}.pflow{list-style:none;margin:12px 0 0}.pstage{background:var(--bg2);border:1px solid var(--line);border-radius:11px;padding:11px 12px}.pstage.idle{opacity:.72}.pstage:not(:last-child):after{content:"↓";display:block;text-align:center;color:var(--ink3);font-size:15px;line-height:1;margin:9px 0 -4px}.pstage+.pstage{margin-top:9px}.pstage-head{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}.pstage-no{flex:none;width:21px;height:21px;border-radius:50%;background:var(--brand-soft);color:var(--brand-text);font-size:11.5px;font-weight:700;text-align:center;line-height:21px;font-variant-numeric:tabular-nums}.pstage-title{font-size:14.5px}.pstage-unit{font-size:12px;color:var(--ink2)}.pstage-idle{font-size:11px;color:var(--ink3);border:1px solid var(--line);border-radius:999px;padding:0 7px}.pstage-what{font-size:13px;margin-top:5px}.pstage-like{font-size:12.5px;color:var(--ink2);margin-top:2px}.pstage-io{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;margin-top:7px;font-size:13px}.pstage-arrow{color:var(--ink3)}.pstage-shift{margin-top:6px}.pbar{display:flex;height:10px;margin-top:8px;border-radius:999px;overflow:hidden;background:var(--line)}.pbar.empty{opacity:.5}.pseg{min-width:3px}.pseg+.pseg{border-inline-start:1px solid var(--surface)}.pseg.pass{background:var(--brand)}.pseg.drop{background:var(--danger)}.pseg.hold{background:var(--warn)}.pseg.info{background:var(--ink3)}.pstage-fates{margin-top:7px}.pchip{cursor:help}.pchip b{font-variant-numeric:tabular-nums}.pchip.pass{border-color:var(--brand)}.pchip.drop{border-color:var(--danger);color:var(--danger)}.pchip.hold{border-color:var(--warn)}.ppanel{margin-top:9px;background:var(--surface);border:1px solid var(--line);border-radius:9px}.ppanel-head{width:100%;display:flex;gap:8px;align-items:baseline;background:none;border:none;border-radius:9px;padding:8px 10px;text-align:start;font-size:12.5px;font-weight:700;font-family:inherit}.ppanel-head:hover{background:var(--bg2)}.ppanel-caret{flex:none;color:var(--ink3);font-size:10px}.ppanel-title{flex:1}.ppanel-count{flex:none;font-weight:400;font-size:11.5px;color:var(--ink3);font-variant-numeric:tabular-nums}.ppanel-body{padding:0 10px 10px}.psample+.psample{margin-top:10px}.psample-head{margin-bottom:3px}.psample .dup-link{max-width:320px}.ppanel-note{font-size:12px;color:var(--ink2);margin:0 0 6px}.ppanel .tbl th,.ppanel .tbl td{padding:4px 6px}.ppanel .dup-link{max-width:340px}.phealth{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;margin-top:9px;padding-top:8px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink2)}.pfam{cursor:help}.plegend{white-space:nowrap;margin-inline-end:10px;cursor:help}.plegend i{display:inline-block;width:9px;height:9px;border-radius:3px;vertical-align:baseline}.plegend.pass i{background:var(--brand)}.plegend.drop i{background:var(--danger)}.plegend.hold i{background:var(--warn)}.plegend.info i{background:var(--ink3)}.login{max-width:320px;margin:14vh auto}.login input{width:100%;margin-bottom:8px;padding:9px 11px;font-size:14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:9px;font-family:inherit}.btn{background:var(--brand-soft);color:var(--brand-text);border:1px solid var(--brand);border-radius:9px;padding:8px 14px;font-size:13.5px;font-weight:600}.btn.block{width:100%}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn[disabled]{opacity:.5}.chiprow{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{display:inline-block;padding:2px 8px;font-size:12px;line-height:1.7;color:var(--ink2);background:var(--surface2);border:1px solid var(--line);border-radius:999px;text-decoration:none}.chip.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-text)}.chip.warn{border-color:var(--danger);color:var(--danger)}.linkbtn{background:none;border:none;padding:0;font:inherit;text-align:start;color:var(--brand-text);cursor:pointer;text-decoration:underline}.hint{text-decoration:underline dotted var(--ink3);text-underline-offset:3px;cursor:help}.input{width:100%;margin-bottom:8px;padding:9px 11px;font-size:14px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:9px;font-family:inherit}.textarea{min-height:84px;resize:vertical}.dup{padding:8px 0;border-bottom:1px solid var(--line)}.dup:last-child{border-bottom:none}.dup-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.dup-link{display:block;font-size:12.5px;color:var(--brand-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.raw-json{max-height:260px;overflow:auto;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px;white-space:pre-wrap;word-break:break-word}.detail{background:var(--bg2);border-radius:10px;padding:12px;margin:4px 0 8px}.detail h3{margin-bottom:4px}.detail .tbl th,.detail .tbl td{padding:4px 6px}.detail a{word-break:break-all}.chiprow label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:18px}.modal{max-width:420px;width:100%;max-height:84vh;overflow:auto;margin:0;box-shadow:var(--shadow-lift)}.modal.wide{max-width:940px}.steps{list-style:none;margin:10px 0 0}.step{border-bottom:1px solid var(--line)}.step:last-child{border-bottom:none}.step-head{width:100%;display:flex;gap:8px;align-items:baseline;background:none;border:none;padding:7px 6px;text-align:start;border-inline-start:3px solid transparent}.step-head:hover{background:var(--bg2)}.step.ok .step-head{border-inline-start-color:var(--brand)}.step.warn .step-head{border-inline-start-color:var(--warn)}.step.fail .step-head{border-inline-start-color:var(--danger)}.step-icon{flex:none}.step-name{flex:none;font-size:13px}.step-note{flex:1;font-size:12.5px;color:var(--ink2)}.step.fail .step-note{color:var(--danger)}.step-body{padding:4px 12px 12px}.step-body .tbl td{padding:3px 6px}.testpage{max-height:60vh}.testframe{width:100%;height:60vh;border:1px solid var(--line);border-radius:9px;background:var(--surface);direction:ltr}.stat.pair .pairline{display:flex;gap:16px;align-items:flex-start}.stat.pair .pairline .second .n{font-size:19px;color:var(--ink2)}.stat.pair .w{font-size:10.5px;color:var(--ink3);letter-spacing:.02em;margin-top:1px}.stat.pair .k{margin-top:6px}.stat.pair .tot{font-size:11px;color:var(--ink3);margin-top:2px}.stat.pair.warn .pairline .second .n,.stat.pair.good .pairline .second .n{opacity:.75}.two{font-variant-numeric:tabular-nums;white-space:nowrap}.two.bad{color:var(--danger)}.note.legend{margin:10px 0 0}.swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-inline-end:5px}.swatch.web{background:var(--brand)}.swatch.mobile{background:var(--accent)}.sharebar{display:flex;gap:2px;height:12px;margin-top:8px;border-radius:4px;overflow:hidden;background:var(--bg2)}.funnelchart{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px}.funnelchart .fcol{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:13px;text-align:center}.funnelchart .fval{min-height:1.4em}.funnelchart .fbarwrap{display:flex;align-items:flex-end;width:100%;height:140px;background:var(--bg2);border-radius:4px;overflow:hidden}.funnelchart .fbar{display:block;width:100%;background:var(--brand);border-start-start-radius:4px;border-start-end-radius:4px}.funnelchart .fnone{display:block;width:100%;height:2px;background:var(--line)}.daybars{display:flex;align-items:flex-end;gap:4px;height:110px;margin-top:10px}.daybars .col{flex:1 1 0;min-width:6px;display:flex;flex-direction:column;justify-content:flex-end;gap:2px;height:100%}.daybars .seg{display:block}.daybars .seg.top{border-start-start-radius:4px;border-start-end-radius:4px}.daybars .seg.web{background:var(--brand)}.daybars .seg.mobile{background:var(--accent)}.daybars .none{height:2px;background:var(--line)}.dayaxis{display:flex;gap:4px;margin-top:5px}.dayaxis span{flex:1 1 0;min-width:6px;font-size:10px;color:var(--ink3);text-align:center;overflow:hidden}.wrap:has(.gauges){max-width:none}.gauges-top .gauge{text-align:center}.gauges{display:grid;gap:10px;margin-top:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.gauge{margin-bottom:0;padding:10px 10px 12px;text-align:center}.gauge.big{padding:14px 10px}.gauge-city{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.gauge-city details{margin-top:4px;font-size:12px}.gauge-city details .tbl{margin-top:4px}.dial{display:block;margin:0 auto;direction:ltr;overflow:visible}.dial .band{fill:none;stroke-linecap:butt}.dial .band.ok{stroke:var(--accent)}.dial .band.warn{stroke:var(--warn)}.dial .band.bad{stroke:var(--danger)}.dial .band.off{stroke:var(--line)}.dial .needle{stroke:var(--ink)}.dial .pivot{fill:var(--ink)}.dial .unknown{fill:var(--ink3);font-size:22px;font-weight:700}.gauge-val{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;margin-top:4px;direction:ltr;unicode-bidi:isolate}.gauge.big .gauge-val{font-size:28px}.gauge-k{font-size:12px;color:var(--ink2);margin-top:2px}.gauge-verdict{font-size:12px;font-weight:600;margin-top:2px}.gauge-verdict.ok{color:var(--accent)}.gauge-verdict.warn{color:var(--warn)}.gauge-verdict.bad{color:var(--danger)}.gauge-verdict.unknown{color:var(--ink3)}.gauge-why{font-size:11.5px;color:var(--ink3);margin-top:6px;line-height:1.45}.gauge-chip.ok{border-color:var(--accent);color:var(--accent)}.gauge-chip.warn{border-color:var(--warn);color:var(--warn)}.gauge-chip.bad{border-color:var(--danger);color:var(--danger)}.gauge{position:relative}.gauge-info{position:absolute;top:6px;inset-inline-end:6px;width:20px;height:20px;padding:0;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink2);font:italic 700 12px/18px Georgia,serif;cursor:pointer}.gauge-info:hover,.gauge-info:focus-visible{border-color:var(--ink2);color:var(--ink)}.gauge .modal{text-align:start;max-width:520px}.guide h4{font-size:13px;color:var(--ink);margin:12px 0 4px}.guide p,.guide li{font-size:13px;line-height:1.65;color:var(--ink2)}.guide ol{margin:0;padding-inline-start:20px}.guide li{margin-bottom:4px}.guide-now{font-weight:600;color:var(--ink);margin-top:2px}.guide-bounds{font-size:12px;margin-top:2px}.guide-code{display:inline;text-align:left;font-size:12px;padding:1px 5px;background:var(--bg);border:1px solid var(--line);border-radius:5px;word-break:break-word}.guide+.btn{margin-top:14px}.guide-links{display:flex;flex-wrap:wrap;gap:6px}.guide-links a{text-decoration:none}.guide-samples td{font-size:12px;vertical-align:top;overflow-wrap:anywhere}.guide-samples td.num{white-space:nowrap}.trend{font-size:11.5px;color:var(--ink2);margin-top:6px}.trend.better{color:var(--accent)}.trend.worse{color:var(--danger)}.trend .delta{font-variant-numeric:tabular-nums;direction:ltr;unicode-bidi:isolate}.spark{display:block;margin:6px auto 0;direction:ltr}.spark polyline{fill:none;stroke:var(--ink3);stroke-width:1.5}.spark.better polyline{stroke:var(--accent)}.spark.worse polyline{stroke:var(--danger)}.markcell{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.markcell input{cursor:pointer;margin:0}.markcell input:disabled{cursor:not-allowed}.markcell:has(input:disabled){cursor:not-allowed}.markcell .dim{font-size:11px}.aliastbl{width:max-content;min-width:100%}.aliastbl th,.aliastbl td{white-space:nowrap}.aliastbl .mono{word-break:normal}.aliastbl .aliasrow.open td{background:var(--surface2)}.aliastbl .aliasopen>td{background:var(--surface2);padding:10px 12px}.aliasdetail{position:sticky;inset-inline-start:0;max-width:min(900px,85vw)}.aliasdetail .tbl{width:auto}.aliasdetail h3{margin-bottom:4px}.addrtbl{width:max-content}.addrtbl th{white-space:normal}.addrtbl td{white-space:nowrap}.addrtbl .cut{display:inline-block;max-width:12em;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.addrtbl .mono{word-break:normal}.addrtbl th .sortbtn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;display:block;width:0;min-width:100%;text-align:start;overflow-wrap:anywhere}.addrtbl tr.colfilters th{padding-top:0}.addrtbl tr.colfilters input{display:block;width:0;min-width:100%;font:inherit;font-size:12px;padding:2px 4px;box-sizing:border-box;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:6px}.addrtbl td{min-width:3em}.addrtbl td.sus{color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}.addrtbl td.flagged{color:var(--warn)}.addrflags{position:relative}.addrflags>summary{cursor:pointer;list-style:none}.addrflags[open]>.addrflags-pop{position:absolute;z-index:5;inset-inline-start:0;top:100%;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:8px 10px;box-shadow:var(--shadow-lift);display:grid;gap:4px;min-width:180px}
