/* /////////////////////////////////////
   TABLES
   Desktop data tables and scroll wrappers
///////////////////////////////////// */

.table-wrap {
  width: 100%;
  margin-top: 1.125rem;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--cc-colour-border-soft);
  border-radius: var(--cc-radius-card, 0.875rem);
  overflow-x: auto;
  overflow-y: hidden;
  background: var(--cc-colour-surface);
  background-clip: padding-box;
}

.data-table {
  width: 100%;
  min-inline-size: 42.5rem;
  border-collapse: collapse;
  background: var(--cc-table-row-bg);
}

.data-table th,
.data-table td {
  text-align: left;
  padding: 0.75rem;
  border-bottom: 1px solid var(--cc-table-line);
  vertical-align: top;
}

.data-table th {
  font-size: var(--cc-table-head-size);
  color: var(--muted);
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0.02em;
  padding-block: 0.45rem;
}

.data-table td {
  font-weight: 400;
}

.desktop-table {
  display: none;
}

@media (min-width: 43.75rem) {
  .desktop-table {
    display: block;
  }
}

@media (min-width: 47.5rem) {
  .data-table th,
  .data-table td {
    padding: 0.625rem 0.75rem;
  }
}

/* /////////////////////////////////////
   STANDARD SHEET TABLES
   Compact, consistent admin table styling
///////////////////////////////////// */

.sheet-card .table-wrap {
  overflow-x: auto;
  margin-top: 0.5rem;
}

.sheet-card .data-table {
  inline-size: 100%;
  min-inline-size: 72rem;
  border-collapse: collapse;
  font-family: var(--cc-font-sans);
  font-size: var(--cc-table-text-size);
  line-height: 1.25;
}

.sheet-card .data-table th,
.sheet-card .data-table td {
  padding: 0.32rem 0.5rem;
  border-bottom: 1px solid var(--cc-table-line);
  vertical-align: middle;
  font-family: var(--cc-font-sans);
}

.sheet-card .data-table th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--cc-table-head-bg);
  color: var(--cc-table-head-text);
  font-size: var(--cc-table-head-size);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  padding: 0.5rem 0.5rem;
}

.sheet-card .data-table td {
  color: var(--cc-colour-ink-soft-strong);
  font-size: var(--cc-table-text-size);
  font-weight: 400;
}

.sheet-card .data-table tbody tr:nth-child(odd) {
  background: var(--cc-table-row-bg);
}

.sheet-card .data-table tbody tr:nth-child(even) {
  background: var(--cc-table-row-alt-bg);
}

.sheet-card .data-table tbody tr:hover {
  background: var(--cc-table-row-hover-bg);
}

.sheet-card .data-table .item-title,
.sheet-card .data-table strong {
  display: inline-block;
  color: var(--cc-colour-ink-soft-strong);
  font-family: var(--cc-font-sans);
  font-size: var(--cc-table-text-size);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: 0.01em;
  text-transform: lowercase;
}

.sheet-card .data-table .muted {
  color: var(--cc-table-muted-text);
  font-family: var(--cc-font-sans);
  font-size: var(--cc-text-sm);
  font-weight: 400;
  line-height: 1.25;
  text-transform: lowercase;
}

.sheet-card .small-link {
  font-family: var(--cc-font-sans);
  font-size: clamp(0.62rem, 0.62vw, 0.68rem);
  font-weight: 400;
}

.table-wrap--scroll-frame {
  max-block-size: min(72vh, calc(100vh - 12rem));
  overflow: auto;
  scrollbar-gutter: stable both-edges;
}

.sheet-card .data-table--compact {
  min-inline-size: 86rem;
  font-size: clamp(0.8rem, 0.12vw + 0.78rem, 0.9rem);
  line-height: 1.2;
}

.sheet-card .data-table--compact th,
.sheet-card .data-table--compact td {
  padding: 0.25rem 0.4rem;
}

.sheet-card .data-table--compact th {
  font-size: clamp(0.72rem, 0.12vw + 0.7rem, 0.8rem);
}

.sheet-card .data-table--compact td,
.sheet-card .data-table--compact strong {
  font-size: clamp(0.8rem, 0.12vw + 0.78rem, 0.9rem);
}

.sheet-card .data-table--compact .muted {
  font-size: clamp(0.72rem, 0.1vw + 0.7rem, 0.8rem);
}

.sheet-card .data-table--fit {
  min-inline-size: 42.5rem;
}

.sheet-card .data-table--mobile-stack {
  min-inline-size: 56rem;
}

.sheet-card .data-table--mobile-stack :where(input, select, textarea) {
  max-inline-size: 100%;
}

.sheet-card .data-table--mobile-stack textarea {
  min-block-size: 5rem;
}

@media (max-width: 43.75rem) {
  .table-wrap--mobile-stack {
    border: 0;
    overflow: visible;
    background: transparent;
  }

  .table-wrap--mobile-stack > .data-table--mobile-stack {
    display: block;
    min-inline-size: 0;
    background: transparent;
  }

  .data-table--mobile-stack thead {
    position: absolute;
    overflow: hidden;
    inline-size: 1px;
    block-size: 1px;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  .data-table--mobile-stack tbody {
    display: grid;
    gap: var(--cc-card-gap, 0.75rem);
  }

  .sheet-card .data-table--mobile-stack tr {
    display: grid;
    gap: var(--cc-space-2, 0.5rem);
    padding: var(--cc-card-padding, 0.875rem);
    background: var(--cc-colour-white);
    border: 1px solid var(--cc-colour-card-border);
    border-radius: var(--cc-radius-lg);
  }

  .sheet-card .data-table--mobile-stack td {
    display: grid;
    gap: var(--cc-space-1, 0.25rem);
    padding: 0;
    border: 0;
    color: var(--cc-colour-ink-soft-strong);
  }

  .sheet-card .data-table--mobile-stack td::before {
    content: attr(data-label);
    color: var(--cc-colour-ink-strong);
    font-weight: 500;
  }

  .sheet-card .data-table--mobile-stack :where(label, textarea) {
    inline-size: 100%;
  }
}

.table-wrap--key-value {
  overflow-x: visible;
}

.data-table--key-value,
.sheet-card .data-table--key-value {
  min-inline-size: 0;
  table-layout: fixed;
}

.data-table--key-value th,
.sheet-card .data-table--key-value th {
  inline-size: min(14rem, 36%);
}

.data-table--key-value td,
.sheet-card .data-table--key-value td {
  min-inline-size: 0;
  overflow-wrap: anywhere;
}

.data-table--key-value :where(input, select, textarea),
.sheet-card .data-table--key-value :where(input, select, textarea) {
  max-inline-size: 100%;
}

@media (max-width: 43.75rem) {
  .table-wrap--key-value {
    overflow: visible;
  }

  .data-table--key-value,
  .data-table--key-value tbody,
  .data-table--key-value tr,
  .data-table--key-value th,
  .data-table--key-value td {
    display: block;
    inline-size: 100%;
  }

  .sheet-card .data-table--key-value th,
  .sheet-card .data-table--key-value td {
    padding-inline: 0.75rem;
  }

  .sheet-card .data-table--key-value th {
    padding-block-end: 0.15rem;
    border-block-end: 0;
    background: transparent;
    white-space: normal;
  }

  .sheet-card .data-table--key-value td {
    padding-block-start: 0.15rem;
  }

  .sheet-card .data-table--key-value .status-pill {
    white-space: normal;
  }
}

.sheet-card .data-table--planner {
  min-inline-size: 56rem;
  table-layout: fixed;
}

.data-table--planner .table-cell--equipment {
  inline-size: 18%;
}

.data-table--planner .table-cell--tasks {
  inline-size: 26%;
}

.data-table--planner .table-cell--method {
  inline-size: 34%;
  color: var(--cc-table-muted-text);
}

.data-table--planner .table-cell--control,
.data-table--planner .table-cell--status {
  inline-size: 8rem;
  white-space: nowrap;
}

.data-table--planner .table-cell--status {
  text-align: center;
}

.data-table--planner .table-cell--status .status-pill {
  justify-content: center;
}

/* /////////////////////////////////////
   INVOICE DETAIL LABEL FIX
   Keep invoice key/value labels in normal site colour
///////////////////////////////////// */

.sheet-card .invoice-details-table th,
.sheet-card .invoice-details-table td,
.sheet-card .invoice-summary-table th,
.sheet-card .invoice-summary-table td {
  color: var(--cc-colour-ink);
  font-family: var(--cc-font-sans);
  text-transform: none;
  letter-spacing: normal;
  font-weight: 400;
}

.sheet-card .invoice-details-table,
.sheet-card .invoice-summary-table {
  min-inline-size: 0;
}

.sheet-card .invoice-details-table th,
.sheet-card .invoice-summary-table th {
  color: var(--cc-colour-ink);
  font-size: 0.78rem;
  font-weight: 500;
  background: transparent;
}

.sheet-card .invoice-details-table td,
.sheet-card .invoice-summary-table td {
  font-size: 0.82rem;
}

.sheet-card .invoice-details-table tr:nth-child(even),
.sheet-card .invoice-summary-table tr:nth-child(even) {
  background: var(--cc-table-row-alt-bg);
}

.sheet-card .invoice-details-table tr:nth-child(odd),
.sheet-card .invoice-summary-table tr:nth-child(odd) {
  background: var(--cc-table-row-bg);
}

/* /////////////////////////////////////
   SHARED TABLE FALLBACK
   Existing markup fallback
///////////////////////////////////// */

:where(table) {
  width: 100%;
  border-collapse: collapse;
  background: var(--cc-colour-surface);
  color: var(--cc-colour-text);
}

:where(th) {
  color: var(--cc-colour-muted);
  font-size: var(--cc-table-head-size);
  font-weight: 600;
  text-align: left;
  background: var(--cc-colour-surface-soft);
}

:where(th, td) {
  border-bottom: 1px solid var(--cc-colour-border-soft);
  padding-block: clamp(0.5rem, 1vw, 0.75rem);
  padding-inline: clamp(0.55rem, 1vw, 0.8rem);
  vertical-align: top;
}

:where(tr:hover td) {
  background: var(--cc-table-row-hover-bg);
}


.table-wrap > .data-table {
  margin: 0;
}


.section-card .table-wrap {
  margin-block-start: clamp(0.6rem, 1.5vw, 1rem);
}
