.sor-table-module {
  --sor-th-bg: #f8f8f8;
  --sor-th-text: #111111;
  --sor-border-width: 1px;
  --sor-border-color: #dddddd;
  --sor-cell-text: #111111;
  --sor-cell-padding: 10px;
  --sor-table-radius: 10px;
}

.sor-table-module {
  width: 100%;
}

.sor-table-toolbar {
  margin-bottom: 10px;
  display: flex;
}

.sor-filter-left .sor-table-toolbar {
  justify-content: flex-start;
}

.sor-filter-right .sor-table-toolbar {
  justify-content: flex-end;
}

.sor-table-search {
  width: min(360px, 100%);
  border: 1px solid #d3d3d3;
  border-radius: 8px;
  padding: 8px 10px;
  box-sizing: border-box;
}

.sor-table-wrap {
  width: 100%;
  overflow-x: auto;
  border-radius: var(--sor-table-radius);
}

.sor-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 560px;
}

.sor-table th,
.sor-table td {
  border: var(--sor-border-width) solid var(--sor-border-color);
  padding: var(--sor-cell-padding);
  text-align: left;
  color: var(--sor-cell-text);
}

.sor-table thead th {
  background: var(--sor-th-bg);
  color: var(--sor-th-text);
}

.sor-sortable {
  cursor: pointer;
  user-select: none;
  position: relative;
  padding-right: 18px;
}

.sor-sortable::after {
  content: "↕";
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 11px;
  opacity: 0.6;
}

.sor-sortable[data-sort-dir="asc"]::after { content: "↑"; }
.sor-sortable[data-sort-dir="desc"]::after { content: "↓"; }

@media (max-width: 820px) {
  .sor-table {
    min-width: 0;
    border: 0;
  }

  .sor-table thead {
    display: none;
  }

  .sor-table,
  .sor-table tbody,
  .sor-table tr,
  .sor-table td {
    display: block;
    width: 100%;
  }

  .sor-table tr {
    margin: 0 0 12px;
    border: var(--sor-border-width) solid var(--sor-border-color);
    border-radius: var(--sor-table-radius);
    overflow: hidden;
    background: #fff;
  }

  .sor-table td {
    border: 0;
    border-bottom: var(--sor-border-width) solid var(--sor-border-color);
    position: relative;
    padding-left: 42%;
    min-height: 40px;
  }

  .sor-table td:last-child {
    border-bottom: 0;
  }

  .sor-table td::before {
    content: attr(data-label);
    position: absolute;
    left: 10px;
    top: 10px;
    width: 36%;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
}
