* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: #111827;
  background: radial-gradient(circle at top left, #eef2ff, transparent 32rem), #f8fafc;
}
.shell { width: min(1180px, calc(100% - 32px)); margin: 0 auto; padding: 44px 0; }
.hero { margin-bottom: 24px; }
.eyebrow { margin: 0 0 8px; text-transform: uppercase; letter-spacing: .12em; font-weight: 800; color: #4f46e5; font-size: 12px; }
h1 { margin: 0; font-size: clamp(34px, 5vw, 58px); line-height: 1; }
.sub { max-width: 760px; color: #475569; font-size: 17px; line-height: 1.6; }
.card, .table-card, .metric {
  background: rgba(255,255,255,.9);
  border: 1px solid #e5e7eb;
  border-radius: 24px;
  box-shadow: 0 20px 60px rgba(15, 23, 42, .08);
}
.card { padding: 22px; }
.dropzone {
  display: grid;
  gap: 8px;
  justify-items: center;
  padding: 34px;
  border: 2px dashed #c7d2fe;
  border-radius: 20px;
  background: #f8fafc;
  cursor: pointer;
}
.dropzone input { display: none; }
.drop-title { font-size: 20px; font-weight: 800; }
.drop-sub { color: #64748b; text-align: center; }
.actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
button {
  border: 0;
  border-radius: 14px;
  background: #111827;
  color: white;
  padding: 12px 18px;
  font-weight: 800;
  cursor: pointer;
}
button:disabled { background: #cbd5e1; cursor: not-allowed; }
.status { margin-top: 14px; color: #475569; font-weight: 650; }
.summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 20px 0; }
.metric { padding: 20px; }
.metric span { display: block; color: #64748b; font-size: 14px; margin-bottom: 8px; }
.metric strong { font-size: 34px; }
.table-card { overflow: hidden; }
.table-head { padding: 18px 22px; border-bottom: 1px solid #e5e7eb; }
.table-head h2 { margin: 0; }
.table-wrap { overflow: auto; max-height: 560px; }
table { border-collapse: collapse; width: 100%; min-width: 920px; }
th, td { text-align: left; padding: 13px 16px; border-bottom: 1px solid #e5e7eb; font-size: 14px; vertical-align: top; }
th { background: #f8fafc; position: sticky; top: 0; z-index: 1; }
.empty { text-align: center; color: #64748b; padding: 36px; }
@media (max-width: 760px) {
  .summary-grid { grid-template-columns: 1fr; }
}
