.css-table {
  --_border-color: var(--color-muted);
  --_padding: calc(20 / 16 * 1rem) 0.5rem;
  margin: 0;
  box-sizing: border-box;
  border-collapse: collapse;
  color: rgb(var(--rgb-ink));
  font-weight: normal;
  font-size: var(--css-typography-text-normal-2-font-size);
  line-height: var(--css-typography-text-normal-2-line-height);
  font-family: var(--font-family-sans);
  letter-spacing: var(--css-typography-text-normal-2-letter-spacing);
}

.css-table[css-type="dense"] {
  --_padding: calc(12 / 16 * 1rem) 0.1rem;
  line-height: var(--css-typography-text-tight-3-line-height);
}

.css-table caption {
  font-weight: bold;
  font-size: var(--css-typography-text-normal-1-font-size);
  text-align: left;
  margin-bottom: calc(16 / 16 * 1rem);
}

.css-table :is(td, th) {
  padding: var(--_padding);
  text-align: left;
  vertical-align: baseline;
}

.css-table th {
  font-weight: bold;
}

.css-table thead th {
  --_border-color: var(--color-muted);
  background-color: rgb(var(--rgb-light-gray) / 0.3);
  color: rgb(var(--rgb-ink));
}

.css-table tbody th {
  --_border-color: var(--color-muted);
  background-color: rgb(var(--rgb-light-gray) / 0.3);
  color: rgb(var(--rgb-ink));
}

/* Stripe */

.css-table[css-stripe] {
  --_border-color: var(--color-muted);
}

.css-table[css-stripe] tr:nth-child(even) {
  background-color: rgb(var(--rgb-light-gray) / 0.2);
}

/* Hover highlight */

.css-table[css-hover] {
  --_border-color: var(--color-muted);
}

@media (hover: hover) {
  .css-table[css-hover] tr:hover {
    background-color: rgb(var(--rgb-emphasis) / 8%);
  }
}

/* With checkbox */

.css-table[css-selectable] {
  --_border-color: var(--color-muted);
}

.css-table[css-selectable] tr:has(:checked) {
  background-color: rgb(var(--rgb-emphasis) / 15%);
}

@supports (selector(:has(.x))) {
  .css-table td:has(.css-checkbox:only-child, .css-radio:only-child),
  .css-table th:has(.css-checkbox:only-child, .css-radio:only-child) {
    position: relative;
    box-sizing: border-box;
    width: calc(40 / 16 * 1rem);
    padding: 0;
  }

  .css-table td > :is(.css-checkbox:only-child, .css-radio:only-child),
  .css-table th > :is(.css-checkbox:only-child, .css-radio:only-child) {
    position: absolute;
    inset: 0;
    display: grid;
    justify-content: center;
    width: auto;
    padding-top: calc(10 / 16 * 1rem);
  }
}

/* Sort */

.css-table th[css-sort] {
  --_border-color: var(--color-muted);
  background-color: rgb(var(--rgb-light-gray) / 0.3);
  padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem);
  color: rgb(var(--rgb-ink));
  white-space: nowrap;
}

.css-table[css-type="dense"] th[css-sort] {
  padding-top: 0;
  padding-bottom: 0;
}

.css-sort {
  display: inline-flex;
  flex-direction: column;
  vertical-align: middle;
  margin-inline-start: calc(4 / 16 * 1rem);
}

:is(.css-sort-up, .css-sort-down) {
  display: block;
  width: calc(24 / 16 * 1rem);
  height: calc(12 / 16 * 1rem);
  border: 0;
  background-color: transparent;
  padding: 0;
  color: var(--color-muted);
  cursor: pointer;
}

:is(.css-sort-up, .css-sort-down)::after {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  background-color: currentcolor;
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
}

.css-sort-up::after {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M2 10l10-9 10 9H2z'/%3E%3C/svg%3E");
}

.css-sort-down::after {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M2 2l10 9 10-9H2z'/%3E%3C/svg%3E");
}

.css-table th[css-sort][aria-sort="ascending"] .css-sort-up,
.css-table th[css-sort][aria-sort="descending"] .css-sort-down {
  color: rgb(var(--rgb-ink));
}

:is(.css-sort-up, .css-sort-down):hover {
  color: rgb(var(--rgb-ink));
}

:is(.css-sort-up, .css-sort-down):focus-visible {
  outline: calc(2 / 16 * 1rem) solid rgb(var(--rgb-border));
  outline-offset: calc(2 / 16 * 1rem);
  border-radius: calc(2 / 16 * 1rem);
  background-color: rgb(var(--rgb-focus));
  box-shadow: 0 0 0 calc(2 / 16 * 1rem) rgb(var(--rgb-focus));
}

/* Utilities */

.css-table[css-border=""] :where(td, th) {
  border: 1px solid var(--_border-color);
}

.css-table[css-border~="top"] :where(td, th) {
  border-top: 1px solid var(--_border-color);
}

.css-table[css-border~="right"] :where(td, th) {
  border-right: 1px solid var(--_border-color);
}

.css-table[css-border~="bottom"] :where(td, th) {
  border-bottom: 1px solid var(--_border-color);
}

.css-table[css-border~="left"] :where(td, th) {
  border-left: 1px solid var(--_border-color);
}

/* Header cell's black border should take precedence over [css-border] */
.css-table thead tr:last-of-type th {
  border-bottom: 1px solid rgb(var(--rgb-border));
}

.css-table tbody th:last-of-type {
  border-right: 1px solid rgb(var(--rgb-border));
}

@media (width >= 40rem) {
  .css-table {
    --_padding: calc(20 / 16 * 1rem) calc(16 / 16 * 1rem);
  }
}
