/* OnlyFanOuts - Table Styles */

table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
th { background: #f8f9fa; font-weight: 600; color: #333; }
:where(th[title]:not([title=""])) { cursor: help; } /* signal that a tooltip exists while the browser delays showing it. :where() zeros specificity so sortable-header pointer cursors (th[data-sort-key], .bs-sortable, etc.) always win for clickable headers. */
thead th { position: sticky; top: 0; background: #f8f9fa; z-index: 10; }
tbody tr:nth-child(odd) { background: #ffffff; }
tbody tr:nth-child(even) { background: #f5f5f5; }
tbody tr:hover { background: #eef6ff; }

/* Rotated table headers */
th.rotate { height: 180px; white-space: nowrap; vertical-align: bottom; padding: 8px 4px; text-align: center; }
th.rotate > div:not(.col-tooltip) { writing-mode: vertical-rl; transform: rotate(180deg); display: inline-block; white-space: nowrap; text-align: left; margin-bottom: 10px; }

/* Responsive actions column */
@media (max-width: 900px) {
  th.actions-col, td.actions-col { width: 340px; }
}

/* Scroll wrapper for wide tables */
.table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.table-scroll > table.vis-table,
.table-scroll > table.wa-table,
.table-scroll > table.wa-results-table {
  width: max-content;
  min-width: 100%;
}
