:root {
  --esh-red: #c8102e;
  --ink: #1a1a1a;
  --muted: #666;
  --line: #e2e2e2;
  --bg: #f6f7f9;
  --card: #ffffff;
  --ok: #1a7f37;
  --err: #c8102e;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--ink);
  background: var(--bg);
  line-height: 1.5;
}

.wrap { max-width: 860px; margin: 0 auto; padding: 0 20px; }

.topbar { background: #fff; border-bottom: 3px solid var(--esh-red); }
.topbar .wrap { display: flex; align-items: center; gap: 18px; padding: 14px 20px; }
.topbar .logo { height: 40px; width: auto; }
.topbar h1 { font-size: 1.25rem; margin: 0; font-weight: 600; }

.intro { color: var(--muted); font-size: 0.95rem; }
.intro code { background: #eee; padding: 1px 5px; border-radius: 4px; }

.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 22px;
  margin: 18px 0;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}

.dates { display: flex; gap: 24px; flex-wrap: wrap; margin-bottom: 16px; }
.dates label { display: block; font-size: 0.8rem; color: var(--muted); margin-bottom: 4px; text-transform: uppercase; letter-spacing: .03em; }
.dates input {
  border: 1px solid var(--line); border-radius: 8px; padding: 9px 12px; font-size: 1rem;
}

.tools { display: flex; gap: 10px; margin-bottom: 8px; }

.group-title {
  font-size: 0.8rem; text-transform: uppercase; letter-spacing: .05em;
  color: var(--esh-red); margin: 18px 0 6px; border-bottom: 1px solid var(--line); padding-bottom: 4px;
}

.rub-table { width: 100%; border-collapse: collapse; }
.rub-table th { text-align: left; font-size: 0.75rem; color: var(--muted); font-weight: 600; padding: 6px 8px; }
.rub-table th:nth-child(2), .rub-table th:nth-child(3) { text-align: center; width: 60px; }
.rub-table td { padding: 7px 8px; border-top: 1px solid var(--line); }
.rub-table .cell-check { text-align: center; }
.rub-table .na { color: #bbb; }
.rub-cb { width: 18px; height: 18px; cursor: pointer; accent-color: var(--esh-red); }

.actions { display: flex; align-items: center; gap: 14px; margin-top: 20px; }

.btn-primary {
  background: var(--esh-red); color: #fff; border: 0; border-radius: 8px;
  padding: 11px 22px; font-size: 1rem; font-weight: 600; cursor: pointer;
}
.btn-primary:disabled { opacity: .5; cursor: not-allowed; }

.btn-ghost {
  background: #fff; border: 1px solid var(--line); border-radius: 8px;
  padding: 7px 14px; font-size: 0.85rem; cursor: pointer; color: var(--ink);
}
.btn-ghost:hover { border-color: var(--esh-red); color: var(--esh-red); }

.btn-download {
  background: var(--ok); color: #fff; text-decoration: none; border-radius: 8px;
  padding: 11px 22px; font-weight: 600;
}

.hidden { display: none !important; }

.global-status { font-weight: 600; margin-bottom: 10px; }
.global-status.running { color: var(--muted); }
.global-status.done { color: var(--ok); }
.global-status.error { color: var(--err); }

.progress-list { list-style: none; margin: 0; padding: 0; }
.progress-item {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 8px 10px; border-radius: 6px; border: 1px solid var(--line); margin-bottom: 6px;
  font-size: 0.92rem;
}
.progress-item .pi-state { color: var(--muted); font-variant-numeric: tabular-nums; }
.progress-item.status-done { border-color: #bfe4c6; background: #f2fbf4; }
.progress-item.status-done .pi-state { color: var(--ok); }
.progress-item.status-error { border-color: #f2c2c9; background: #fdf2f3; }
.progress-item.status-error .pi-state { color: var(--err); }
.progress-item.status-running { border-color: #cfe0ff; background: #f4f8ff; }

.footer { margin-top: 30px; padding: 18px 0; color: var(--muted); font-size: 0.85rem; border-top: 1px solid var(--line); }
