/* Grid de slots — mantido igual ao layout original */
:root {
  --on: #0e9f3e;
  --off: #d0d7de;
  --border: #ccc;
  --head: #f6f8fa;
}

.coverage-table-wrap {
  overflow: auto;
  max-height: calc(100vh - 220px);
  border: 1px solid var(--border);
}

#coverage-table {
  border-collapse: collapse;
  width: max-content;
  min-width: 100%;
  font-size: 12px;
  --bs-table-bg: transparent;
}

#coverage-table th,
#coverage-table td {
  border: 1px solid var(--border);
  padding: 2px 4px;
  vertical-align: middle;
}

#coverage-table thead th {
  position: sticky;
  top: 0;
  background: var(--head);
  z-index: 2;
  font-weight: 600;
}

#coverage-table td.ts {
  position: sticky;
  left: 0;
  background: #fff;
  z-index: 1;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  color: #333;
}

#coverage-table thead th:first-child {
  left: 0;
  z-index: 3;
}

#coverage-table .cam {
  font-size: 11px;
}

#coverage-table .mini {
  display: grid;
  grid-template-columns: repeat(6, 7px);
  gap: 1px;
}

#coverage-table .slot {
  width: 7px;
  height: 14px;
  border-radius: 1px;
  background: var(--off);
  border: 1px solid #b6bec6;
}

#coverage-table .slot.on {
  background: var(--on);
  border-color: #087a2f;
}

#coverage-table tbody tr:nth-child(even) td {
  background: #fafafa;
}

#coverage-table tbody tr:nth-child(even) td.ts {
  background: #f5f5f5;
}

#coverage-table tbody tr.row-gap td {
  background: #fff8f0;
}

#coverage-table tbody tr.row-gap td.ts {
  background: #fff3e6;
}

.legend .slot {
  display: inline-block;
  width: 10px;
  height: 10px;
  vertical-align: middle;
  margin-right: 4px;
  border-radius: 1px;
  border: 1px solid #b6bec6;
}

.legend .slot.on {
  background: var(--on);
  border-color: #087a2f;
}

.legend .slot.off {
  background: var(--off);
}

.range-date {
  min-width: 9.5rem;
  font-variant-numeric: tabular-nums;
}

.range-time {
  min-width: 6.5rem;
  font-variant-numeric: tabular-nums;
}

.range-block {
  min-width: 0;
}

.range-controls .btn {
  white-space: nowrap;
}
