/**
 * Tabelle: .table-wrap fängt schmale Bildschirme ab, damit die Seite nie
 * seitlich scrollt. Liste ohne Spalten: .list.
 * .table--stack: unter 40rem steht jede Zelle mit ihrer Spaltenbeschriftung
 * (data-label) untereinander, damit nichts aus dem Bild scrollt.
 */
@layer components {
  .table-wrap {
    overflow-x: auto;
    border: var(--border-width-thin) solid var(--theme-table-border);
    border-radius: var(--theme-card-radius);
    background-color: var(--theme-card-bg);
  }

  .table {
    inline-size: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-label);
  }

  .table__head {
    border-block-end: var(--border-width-thin) solid var(--theme-table-border);
    color: var(--theme-table-head-text);
    font-size: var(--font-size-small);
    font-weight: var(--font-weight-medium);
    text-align: start;
  }

  .table__head,
  .table__cell {
    padding: var(--space-3) var(--space-5);
    text-align: start;
    vertical-align: middle;
  }

  .table__cell--mono {
    font-family: var(--font-mono);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }

  @media (hover: hover) and (pointer: fine) {
    .table__row:hover {
      background-color: var(--theme-row-hover);
    }
  }

  .table__row + .table__row .table__cell {
    border-block-start: var(--border-width-thin) solid var(--theme-table-border);
  }

  .list {
    display: grid;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  .list__item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2) var(--space-4);
    padding: var(--space-3) 0;
  }

  .list__item + .list__item {
    border-block-start: var(--border-width-thin) solid var(--theme-table-border);
  }

  /* Variante für Tabellen mit Zeilenmenü: das Menü darf über den Rand ragen */
  .table-wrap--open {
    overflow: visible;
  }

  .table__head--actions,
  .table__cell--actions {
    inline-size: 1%;
    text-align: end;
  }

  .table__cell--muted {
    color: var(--theme-meta-color);
  }

  .table__since-label {
    display: none;
  }

  .row-menu {
    position: relative;
    display: inline-block;
  }

  .row-menu__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-inline-size: 2rem;
    min-block-size: 2rem;
    border-radius: var(--radius-md);
    color: var(--theme-meta-color);
    cursor: pointer;
    list-style: none;
  }

  .row-menu__toggle::-webkit-details-marker {
    display: none;
  }

  .row-menu[open] > .row-menu__toggle {
    background-color: var(--surface-selected);
    color: var(--text-primary);
  }

  @media (hover: hover) and (pointer: fine) {
    .row-menu__toggle:hover {
      background-color: var(--surface-selected);
      color: var(--text-primary);
    }
  }

  .row-menu__panel {
    position: absolute;
    inset-block-start: calc(100% + var(--space-1));
    inset-inline-end: 0;
    z-index: 2;
    display: grid;
    min-inline-size: 12rem;
    padding: var(--space-1);
    border: var(--border-width-thin) solid var(--theme-floating-border);
    border-radius: var(--radius-lg);
    background-color: var(--theme-floating-bg);
    box-shadow: var(--shadow-overlay);
  }

  .row-menu__panel form {
    margin: 0;
  }

  .row-menu__item {
    display: flex;
    align-items: center;
    inline-size: 100%;
    min-block-size: 2rem;
    padding: var(--space-1) var(--space-3);
    border: 0;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    font-size: var(--font-size-small);
    text-align: start;
    white-space: nowrap;
    cursor: pointer;
  }

  @media (hover: hover) and (pointer: fine) {
    .row-menu__item:hover {
      background-color: var(--surface-hover);
    }
  }

  .row-menu__item--danger {
    color: var(--theme-error-text);
  }

  @media (max-width: 40rem) {
    .table--list thead {
      position: absolute;
      inline-size: 1px;
      block-size: 1px;
      overflow: hidden;
      clip-path: inset(50%);
    }

    .table--list,
    .table--list tbody {
      display: block;
    }

    .table--list .table__row {
      display: grid;
      grid-template-columns: auto auto minmax(0, 1fr) auto;
      grid-template-areas:
        "email email email menu"
        "role status since menu";
      align-items: center;
      gap: var(--space-1) var(--space-2);
      padding: var(--space-3) var(--space-4);
    }

    .table--invitations .table__row {
      grid-template-columns: auto minmax(0, 1fr) auto;
      grid-template-areas:
        "email email menu"
        "role until menu";
    }

    .table--list .table__cell {
      padding: 0;
      border: 0;
    }

    .table--list .table__row + .table__row {
      border-block-start: var(--border-width-thin) solid var(--theme-table-border);
    }

    .table--list .table__row + .table__row .table__cell {
      border-block-start: 0;
    }

    @media (hover: hover) and (pointer: fine) {
      .table--list .table__row:hover {
        background-color: transparent;
      }
    }

    .table--list [data-cell="email"] {
      grid-area: email;
      overflow-wrap: anywhere;
    }

    .table--list [data-cell="role"] {
      grid-area: role;
    }

    .table--list [data-cell="status"] {
      grid-area: status;
    }

    .table--list [data-cell="since"] {
      grid-area: since;
      font-size: var(--font-size-small);
    }

    .table--list [data-cell="until"] {
      grid-area: until;
      font-size: var(--font-size-small);
    }

    .table--list [data-cell="actions"] {
      grid-area: menu;
      inline-size: auto;
    }

    .table--list .table__since-label {
      display: inline;
    }

    .row-menu__toggle {
      min-inline-size: 2.75rem;
      min-block-size: 2.75rem;
    }

    .row-menu__item {
      min-block-size: 2.75rem;
    }
  }

  @media (max-width: 40rem) {
    .table--stack thead {
      position: absolute;
      inline-size: 1px;
      block-size: 1px;
      overflow: hidden;
      clip-path: inset(50%);
    }

    .table--stack,
    .table--stack tbody,
    .table--stack .table__row {
      display: block;
    }

    .table--stack .table__row {
      padding-block: var(--space-2);
    }

    @media (hover: hover) and (pointer: fine) {
      .table--stack .table__row:hover {
        background-color: transparent;
      }
    }

    .table--stack .table__cell {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: var(--space-1) var(--space-3);
      padding-block: var(--space-1);
      border: 0;
    }

    .table--stack .table__row + .table__row {
      border-block-start: var(--border-width-thin) solid var(--theme-table-border);
    }

    .table--stack .table__row + .table__row .table__cell {
      border-block-start: 0;
    }

    .table--stack .table__cell::before {
      content: attr(data-label);
      min-inline-size: 6rem;
      font-family: var(--font-sans);
      font-variant-numeric: normal;
      color: var(--theme-meta-color);
      font-weight: var(--font-weight-semibold);
    }
  }

  .table__person {
    display: inline-flex;
    align-items: center;
    gap: var(--space-3);
    min-inline-size: 0;
  }

  .table__person > span:last-child {
    overflow-wrap: anywhere;
  }
}
