:root{
  --bg:#f4f6fb;--surface:#fff;--border:#e6eaf2;--border-soft:#eef1f7;
  --text:#1a2233;--text-muted:#667085;--text-faint:#98a2b3;
  --blue:#2f6fed;--blue-light:#eaf1fe;--blue-dark:#1d4fb8;
  --teal:#0f9488;--teal-light:#e6f7f5;
  --success:#16a34a;--success-light:#e8f8ee;
  --warning:#d97706;--warning-light:#fef3e0;
  --danger:#dc2626;--danger-light:#fdeaea;
  --gray:#667085;--gray-light:#eef1f6;
  --radius:12px;--radius-sm:8px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--text);background:var(--bg)
}
*{box-sizing:border-box}
body{margin:0;-webkit-font-smoothing:antialiased}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
svg{display:block;flex:none}

.shell{display:flex;min-height:100vh}
.sidebar{width:248px;flex:none;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:18px 14px}
.sidebar .brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:17px;padding:4px 10px 20px;color:var(--text)}
.sidebar .brand svg{color:var(--blue)}
.nav-items{display:flex;flex-direction:column;gap:2px}
.nav-items a{display:flex;align-items:center;gap:11px;color:var(--text-muted);padding:9px 10px;border-radius:var(--radius-sm);font-size:14px;font-weight:500}
.nav-items a:hover{background:var(--gray-light);text-decoration:none;color:var(--text)}
.nav-items a.active{background:var(--blue-light);color:var(--blue-dark)}
.nav-items a.active svg{color:var(--blue-dark)}
.help-card{margin-top:22px;background:var(--gray-light);border-radius:var(--radius);padding:14px;font-size:13px;color:var(--text-muted)}
.help-card svg{color:var(--text-faint);margin-bottom:6px}
.help-card p{margin:0 0 10px}
.help-card strong{color:var(--text)}
.logout{margin-top:auto;padding-top:16px;display:flex;align-items:center;gap:11px;color:var(--text-faint);font-size:14px;padding-left:10px}
.logout:hover{color:var(--danger);text-decoration:none}

main{flex:1;padding:22px 28px 40px;max-width:1360px;min-width:0}
.centered{max-width:400px;margin:70px auto;padding:0}
.auth-brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:18px;margin-bottom:22px;color:var(--text)}
.auth-brand svg{color:var(--blue)}

.topbar{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:18px;gap:16px;flex-wrap:wrap}
.topbar-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.topbar-title h1{margin:0}
.topbar-actions{display:flex;align-items:center;gap:8px}
.icon-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);cursor:pointer}
.icon-btn:hover{background:var(--gray-light);text-decoration:none}
.avatar{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;background:var(--blue);color:#fff;font-size:13px;font-weight:700;text-decoration:none}
.avatar:hover{background:var(--blue-dark);text-decoration:none}

h1{font-size:22px;margin:0;font-weight:700}
h2{font-size:15px;margin:26px 0 12px;font-weight:700;color:var(--text)}
.muted{color:var(--text-muted)}
.small{font-size:12.5px;color:var(--text-muted)}
.block{display:block}
.pill{display:inline-flex;align-items:center;background:var(--blue-light);color:var(--blue-dark);font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:6px}
.grid-2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;margin-bottom:16px}
.card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.panel-header h2{margin:0}
.panel-header .count{background:var(--danger-light);color:var(--danger);font-size:12px;font-weight:700;border-radius:999px;padding:1px 9px;margin-left:8px}
.panel-link{font-size:13px;font-weight:600;display:inline-flex;align-items:center;gap:3px}
.metric{font-size:22px;font-weight:700}

.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.kpi-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.kpi-icon.blue{background:var(--blue-light);color:var(--blue-dark)}
.kpi-icon.teal{background:var(--teal-light);color:var(--teal)}
.kpi-icon.warning{background:var(--warning-light);color:var(--warning)}
.kpi-icon.danger{background:var(--danger-light);color:var(--danger)}
.kpi-value{font-size:24px;font-weight:700;line-height:1.15}
.kpi-label{font-size:12.5px;color:var(--text-muted);margin-top:2px}
.kpi-sub{font-size:12px;margin-top:8px;font-weight:600}
.kpi-sub.muted{color:var(--text-faint);font-weight:500}
.kpi-sub.success{color:var(--success)}
.kpi-sub.warning{color:var(--warning)}
.kpi-sub.danger{color:var(--danger)}

table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle;font-size:13.5px}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#fafbfe}
th{background:#fbfcfe;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-weight:700}

.btn,button{display:inline-flex;align-items:center;gap:7px;border:0;border-radius:var(--radius-sm);background:var(--blue);color:#fff;padding:9px 14px;text-decoration:none;cursor:pointer;font-size:13.5px;font-weight:600;font-family:inherit}
.btn:hover,button:hover{background:var(--blue-dark);text-decoration:none}
.btn.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}
.btn.secondary:hover{background:var(--gray-light)}
.btn.danger{background:var(--danger)}
.btn.danger:hover{background:#b91c1c}
.btn.block{display:flex;justify-content:center;width:100%}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:12px 0}
form.inline{display:inline}

.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin:10px 0 18px}
.tabs a{padding:9px 14px;font-size:13.5px;font-weight:600;color:var(--text-muted);border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a:hover{color:var(--text);text-decoration:none}
.tabs a.active{color:var(--blue-dark);border-bottom-color:var(--blue)}

label{display:block;font-weight:600;margin:14px 0 5px;font-size:13.5px}
input,select,textarea{width:100%;max-width:480px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font:inherit;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--blue-light);border-color:var(--blue)}
input[type=checkbox]{width:auto}

.flash,.secret{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--radius-sm);margin:0 0 16px;font-size:13.5px}
.flash.ok{background:var(--success-light);color:#0d6b32}
.flash.ok svg{color:var(--success)}
.flash.err{background:var(--danger-light);color:#9f1b1b}
.flash.err svg{color:var(--danger)}
.secret{background:var(--warning-light);border:1px solid #f2cf8f;flex-direction:column}
.secret code{display:block;padding:10px;background:var(--surface);border-radius:var(--radius-sm);margin:6px 0;overflow-wrap:anywhere}

.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;letter-spacing:.02em;background:var(--gray-light);color:var(--gray)}
.badge.pass{background:var(--success-light);color:#0d6b32}
.badge.fail{background:var(--danger-light);color:#9f1b1b}
.badge.inconclusive{background:var(--warning-light);color:#8a5307}
.badge.not-tested,.badge.not-applicable{background:var(--gray-light);color:var(--gray)}
.badge.missing{background:var(--warning-light);color:#8a5307}

.timeline-legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:var(--text-muted);margin:2px 0 14px}
.timeline-legend span{display:inline-flex;align-items:center;gap:6px}
.legend-dot{width:9px;height:9px;border-radius:999px;display:inline-block}
.legend-dot.pass{background:var(--success)}
.legend-dot.missing{background:var(--warning)}
.legend-dot.none{background:var(--border);border:1px solid var(--text-faint)}
.timeline-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border-soft)}
.timeline-row:last-child{border-bottom:0}
.timeline-row.timeline-axis{padding-bottom:10px;margin-bottom:2px;border-bottom:1px dashed var(--border)}
.timeline-label{width:180px;flex:none;font-size:13px}
.timeline-dots{display:flex;gap:4px;flex-wrap:wrap;flex:1}
.dot{width:11px;height:11px;border-radius:999px;background:var(--border);cursor:default}
.dot-pass{background:var(--success)}
.dot-fail{background:var(--danger)}
.dot-missing{background:var(--warning)}
.dot-pending{background:var(--surface);border:1.5px solid var(--border)}
.dot-none{background:transparent;border:1.5px dashed var(--border-soft)}
.dot-label{width:11px;font-size:10px;color:var(--text-faint);text-align:center;white-space:nowrap;overflow:visible}

.anomaly-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.anomaly-item{display:flex;gap:11px;padding:11px 4px;border-bottom:1px solid var(--border-soft)}
.anomaly-item:last-child{border-bottom:0}
.anomaly-icon{width:30px;height:30px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center}
.anomaly-icon.missing_run{background:var(--warning-light);color:var(--warning)}
.anomaly-icon.restore_failed{background:var(--danger-light);color:var(--danger)}
.anomaly-icon.table_count_variation{background:var(--blue-light);color:var(--blue-dark)}
.anomaly-icon.cadence_irregular{background:var(--warning-light);color:var(--warning)}
.anomaly-body{flex:1;min-width:0}
.anomaly-title-row{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.anomaly-title{font-size:13.5px;font-weight:700}
.anomaly-time{font-size:12px;color:var(--text-faint);white-space:nowrap}
.anomaly-detail{font-size:12.5px;color:var(--text-muted);margin-top:2px}

.evidence-card{background:var(--gray-light);border-radius:var(--radius-sm);padding:14px;margin:12px 0}
.evidence-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px}
.evidence-card dt{color:var(--text-muted)}
.evidence-card dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.checksum-row{display:flex;align-items:center;gap:8px;font-family:ui-monospace,Consolas,monospace;font-size:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 11px;margin-top:4px;overflow-wrap:anywhere}
.checksum-row button{padding:5px 8px;flex:none}

pre{white-space:pre-wrap;background:#fbfcfe;border:1px solid var(--border);padding:12px;border-radius:var(--radius-sm);overflow-x:auto;font-size:12.5px}
.right{text-align:right}
.pagination{display:flex;gap:6px;margin:14px 0}
.pagination a{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}

@media(max-width:1000px){.grid-2{grid-template-columns:1fr}}
@media(max-width:700px){
  .shell{flex-direction:column}
  .sidebar{width:100%;flex-direction:column;padding:12px}
  .nav-items{flex-direction:row;overflow-x:auto;gap:4px}
  .nav-items a{white-space:nowrap}
  .nav-items a span{display:none}
  .help-card{display:none}
  .logout{margin-top:8px;padding-top:0}
  main{padding:14px}
  table{font-size:13px}
  .timeline-label{width:120px}
  .home-anomalies{order:-4}.home-missing{order:-3}.home-recent{order:-2}.home-tenants{order:-1}
}