:root{--bg: #f5f7fa;--panel: #ffffff;--text: #1f2933;--muted: #66727f;--border: #e3e8ee;--border-strong: #cfd6de;--primary: #2a6fdb;--primary-soft: #e8f0fc;--good: #1f9d55;--good-soft: #e3f5ea;--warn: #b7791f;--warn-soft: #fdf3dc;--bad: #c53030;--bad-soft: #fde8e8;--info: #2b6cb0;--info-soft: #e6f0fa;--skip: #5f6b7a;--skip-soft: #eef1f4;--radius: 8px;--shadow: 0 1px 2px rgba(16, 24, 40, .06);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:4px 0 16px;display:flex;align-items:center;gap:10px}h2{font-size:15px;margin:0}h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:18px 0 8px}.mono{font-family:SF Mono,Menlo,Consolas,monospace;font-size:12.5px}.small{font-size:12px}.muted{color:var(--muted)}.strong{font-weight:600}.nowrap{white-space:nowrap}.break{word-break:break-all}.spacer{flex:1}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.topbar-row{display:flex;align-items:center;gap:24px;padding:10px 24px;flex-wrap:wrap}.brand{font-weight:700;font-size:16px;display:flex;align-items:center;gap:8px;white-space:nowrap}.brand span:not(.badge){font-weight:500;color:var(--muted)}.mock-tag{font-size:10px}.nav{display:flex;gap:2px;flex-wrap:wrap}.nav a{padding:6px 12px;border-radius:6px;color:var(--text);font-weight:500}.nav a:hover{background:var(--bg);text-decoration:none}.nav a.active{background:var(--primary-soft);color:var(--primary)}.user{margin-left:auto;display:flex;align-items:center;gap:10px}.user-email{color:var(--muted);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filters{display:flex;align-items:flex-end;gap:12px;padding:8px 24px 12px;flex-wrap:wrap;border-top:1px solid var(--border);background:#fbfcfd}.presets{display:flex;gap:4px}.filter-warn{color:var(--bad);font-size:12px;align-self:center}.main{flex:1;padding:20px 24px 32px;max-width:1600px;width:100%;margin:0 auto}.footer{text-align:center;color:var(--muted);font-size:12px;padding:14px;border-top:1px solid var(--border);background:var(--panel)}.center-page{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px}.page{display:flex;flex-direction:column;gap:16px}.page>h1{margin-bottom:0}.crumbs{color:var(--muted);font-size:13px}.link-row{font-size:13px;color:var(--muted)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-2-1{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:16px}.grid-1-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:16px}@media (max-width: 1100px){.grid-2,.grid-2-1,.grid-1-2{grid-template-columns:minmax(0,1fr)}}.field{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.field .inline{display:flex;gap:6px}input,select{font:inherit;font-size:13px;color:var(--text);padding:6px 8px;border:1px solid var(--border-strong);border-radius:6px;background:#fff;min-height:32px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--primary-soft);border-color:var(--primary)}select:disabled{background:var(--skip-soft);color:var(--muted)}input[type=search]{min-width:200px}.btn{font:inherit;font-size:13px;font-weight:500;padding:6px 12px;border-radius:6px;border:1px solid var(--border-strong);background:#fff;color:var(--text);cursor:pointer;min-height:32px}.btn:hover:not(:disabled){background:var(--bg)}.btn:disabled{opacity:.5;cursor:default}.btn-small{padding:4px 10px;min-height:28px;font-size:12px}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost.active{background:var(--primary-soft);color:var(--primary);border-color:var(--primary-soft)}.toolbar{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.card-actions{display:flex;align-items:center;gap:8px;font-size:13px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);border-top:3px solid var(--primary)}.kpi-good{border-top-color:var(--good)}.kpi-warn{border-top-color:#e0a000}.kpi-bad{border-top-color:var(--bad)}.kpi-label{color:var(--muted);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.03em}.kpi-value{font-size:26px;font-weight:700;margin-top:4px;font-variant-numeric:tabular-nums}.kpi-sub{color:var(--muted);font-size:12px;margin-top:2px}.table-scroll{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;padding:8px 10px;border-bottom:1px solid var(--border-strong);background:#fafbfc;white-space:nowrap;position:sticky;top:0}.table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.table tbody tr:last-child td{border-bottom:none}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table-compact td,.table-compact th{padding:5px 8px}.table-hover tbody tr:hover td{background:#f7f9fc}.table tr.clickable{cursor:pointer}.table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.sortable:hover{color:var(--text)}.sort-ind{margin-left:4px;font-size:10px}.table .pct{display:block;font-size:11px;color:var(--muted)}.cell-warn{background:var(--warn-soft)}.cell-bad{background:var(--bad-soft)}.cell-bad .pct{color:var(--bad);font-weight:600}.cell-warn .pct{color:var(--warn);font-weight:600}.reason-cell{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-row td{background:#fffaf0}.top-tag{display:inline-block;font-size:10px;font-weight:700;color:var(--warn);background:var(--warn-soft);border-radius:4px;padding:1px 5px;margin-right:6px;text-transform:uppercase}.pctbar{display:inline-flex;align-items:center;gap:6px;justify-content:flex-end;min-width:110px}.pctbar-fill{display:inline-block;height:6px;border-radius:3px;background:var(--primary);max-width:60px}.pctbar{position:relative}.pctbar-text{min-width:44px;text-align:right}.pager{display:flex;align-items:center;gap:8px}.pager-bottom{display:flex;justify-content:flex-end;margin-top:12px}.badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap;text-transform:capitalize;line-height:1.5}.badge-pass{background:var(--good-soft);color:var(--good)}.badge-fail{background:var(--bad-soft);color:var(--bad)}.badge-error{background:#fff0e6;color:#c05621}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-skip{background:var(--skip-soft);color:var(--skip)}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border:1px solid var(--border-strong);border-radius:999px;background:#fff;color:var(--text);margin:0 4px 2px 0;white-space:nowrap}a.chip:hover{border-color:var(--primary);text-decoration:none}.chip-rank{font-weight:700;color:var(--primary);font-size:11px}.chip-small{font-size:11px;padding:0 6px;margin-left:6px}.funnel{display:flex;flex-direction:column;gap:10px}.funnel-row{display:grid;grid-template-columns:110px 1fr 110px;align-items:center;gap:10px}.funnel-label{font-size:13px;color:var(--muted)}.funnel-bar{background:var(--skip-soft);border-radius:4px;height:22px;overflow:hidden}.funnel-fill{background:var(--primary);height:100%;border-radius:4px;transition:width .3s}.funnel-num{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.funnel-num .pct{color:var(--muted);font-weight:400;font-size:12px;margin-left:4px}.funnel-lost{color:var(--bad);font-size:11px;font-weight:500}.kv{display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;margin:0;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0;min-width:0}.notes{margin:8px 0;padding-left:18px;color:var(--muted);font-size:13px}.step{display:flex;flex-direction:column;gap:3px;align-items:flex-start}.step-reason{font-size:11.5px;color:var(--muted);max-width:220px}.insights{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.insight{border:1px solid var(--border);border-left:4px solid var(--info);border-radius:6px;padding:10px 14px}.insight-high{border-left-color:var(--bad)}.insight-medium{border-left-color:#e0a000}.insight-head{display:flex;align-items:center;gap:10px}.insight-title{font-weight:600;flex:1}.insight-metric{font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted)}.insight-detail{margin:6px 0 4px;color:var(--text);font-size:13px}.accordion{display:flex;flex-direction:column;gap:8px}.acc-item{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.acc-head{display:flex;align-items:center;gap:10px;width:100%;padding:12px 16px;background:none;border:0;font:inherit;color:inherit;cursor:pointer;text-align:left;flex-wrap:wrap}.acc-head:hover{background:#fafbfc}.acc-caret{color:var(--muted);width:12px}.acc-body{padding:4px 16px 16px 38px;border-top:1px solid var(--border)}.acc-body .kv{margin-top:12px}.state{padding:18px;border-radius:var(--radius);font-size:13px}.state-loading{color:var(--muted);display:flex;align-items:center;gap:10px}.state-error{background:var(--bad-soft);color:var(--bad);border:1px solid #f5c2c2}.state-empty{color:var(--muted);text-align:center;background:#fafbfc;border:1px dashed var(--border-strong)}.spinner{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.refreshing{opacity:.6;transition:opacity .2s}
