:root {
  --index-layout-width: var(--size-1060);
  --index-layout-inset: var(--space-10);
  --index-layout-gap: var(--space-6);
  --index-layout-control-gap: var(--space-3);
  --index-layout-copy-gap: var(--space-2);
  --index-layout-search-width: var(--size-400);
  --index-layout-filter-width: var(--size-140);
  --index-layout-font: var(--font-type-body);
  --index-layout-title-font: var(--font-type-heading);
  --index-layout-count-font: var(--font-type-caption);
}

.index-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--index-layout-gap);
  box-sizing: border-box;
  inline-size: 100%;
  max-inline-size: var(--index-layout-width);
  min-inline-size: 0;
  margin-inline: auto;
  padding: var(--index-layout-inset);
  border: 0;
  border-radius: 0;
  background: var(--color-surface);
  color: var(--color-surface-foreground);
  font: var(--index-layout-font);
  overflow-wrap: anywhere;
  container-type: inline-size;
}

.index-layout__header,
.index-layout__actions,
.index-layout__toolbar,
.index-layout__footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--index-layout-control-gap);
  min-inline-size: 0;
}

.index-layout__header,
.index-layout__footer { justify-content: space-between; }
.index-layout__copy { display: grid; gap: var(--index-layout-copy-gap); flex: 1; min-inline-size: 0; }
.index-layout__title { display: flex; align-items: center; gap: var(--index-layout-control-gap); margin: 0; font: var(--index-layout-title-font); }
.index-layout__title > span { min-inline-size: 0; }
.index-layout__icon { display: flex; flex: none; }
.index-layout__description { margin: 0; color: var(--color-muted-foreground); }
.index-layout__body { min-inline-size: 0; }
.index-layout__count { margin: 0; color: var(--color-muted-foreground); font: var(--index-layout-count-font); }
.index-layout__search { flex: 1 1 var(--index-layout-search-width); min-inline-size: 0; }
.index-layout__filter { flex: 1 1 var(--index-layout-filter-width); min-inline-size: 0; }
.index-layout__toolbar > *,
.index-layout__actions > *,
.index-layout__footer > * { min-inline-size: 0; max-inline-size: 100%; }

@container (max-width: 380px) {
  .index-layout__header { flex-direction: column; align-items: stretch; }
}

@media (max-width: 600px) {
  .index-layout { --index-layout-inset: var(--space-4); }
}
