@layer components {
  .catalog-head {
    max-inline-size: 48rem;
    margin-block-end: clamp(3rem, 6vw, 4.5rem);

    & .lead {
      max-inline-size: 44rem;
      margin-block-end: 0;
      text-wrap: pretty;
    }
  }

  .catalog-section {
    container-type: inline-size;
    margin-block-start: clamp(4rem, 8vw, 6rem);
  }

  .catalog-section--first { margin-block-start: 0; }

  .catalog-section__head {
    display: grid;
    gap: .65rem;
    max-inline-size: 46rem;
    margin-block-end: 1.5rem;
  }

  .docs-main .catalog-section__title {
    margin: 0;
    color: var(--pw-fg-strong);
    font-size: clamp(1.65rem, 2.8vw, 2.2rem);
    font-weight: 400;
    letter-spacing: var(--pw-track-snug);
    line-height: 1.15;
    text-wrap: balance;
  }

  .docs-main .catalog-section__desc {
    max-inline-size: 42rem;
    margin: 0;
    color: var(--pw-fg-meta);
    font-size: var(--pw-fs-sm);
    line-height: 1.6;
    text-wrap: pretty;
  }

  .catalog-list {
    display: grid;
    gap: .65rem;
  }

  @container (min-width: 44rem) {
    .catalog-list--columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }

  .catalog-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: center;
    min-block-size: 6.25rem;
    padding: 1.1rem 1.2rem;
    border-radius: var(--pw-r-md);
    background: color-mix(in oklch, var(--pw-card-flat) 72%, transparent);
    color: inherit;
    transition-property: background-color;
    transition-duration: 160ms;
    transition-timing-function: var(--pw-ease-scene);

    &:hover { background: color-mix(in oklch, var(--pw-card-flat) 86%, var(--pw-primary)); }
    &:focus-visible {
      outline: .125rem solid var(--pw-primary-soft);
      outline-offset: .1875rem;
    }
  }

  .catalog-item__copy {
    display: grid;
    gap: .3rem;
    min-inline-size: 0;
  }

  .catalog-item__title {
    color: var(--pw-fg-strong);
    font-size: var(--pw-fs-md);
    font-weight: 450;
    line-height: 1.25;
    text-wrap: balance;
  }

  .catalog-item__desc {
    color: var(--pw-fg-meta);
    font-size: var(--pw-fs-sm);
    font-weight: 300;
    line-height: 1.45;
    text-wrap: pretty;
  }

  .catalog-item__number {
    min-inline-size: 2rem;
    font-family: var(--pw-font-mono);
    font-size: var(--pw-fs-2xs);
    color: var(--pw-fg-faint);
  }

  .catalog-item__arrow {
    color: var(--pw-primary-soft);
    font-size: var(--pw-fs-md);
    transition-property: translate;
    transition-duration: 160ms;
    transition-timing-function: var(--pw-ease-scene);
  }

  .catalog-item:hover .catalog-item__arrow { translate: .2rem 0; }

  .catalog-grid {
    display: grid;
    gap: 1rem;
  }

  @container (min-width: 44rem) {
    .catalog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }

  .catalog-group {
    display: grid;
    align-content: start;
    gap: .85rem;
    min-inline-size: 0;
    padding: 1.35rem 1.4rem;
    border-radius: var(--pw-r-md);
    background: color-mix(in oklch, var(--pw-card-flat) 58%, transparent);
  }

  .catalog-group__title {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    width: fit-content;
    color: var(--pw-fg-strong);
    font-size: clamp(1.2rem, 2vw, 1.45rem);
    font-weight: 450;
    line-height: 1.25;
    text-wrap: balance;

    &::after {
      content: "\2192";
      color: var(--pw-primary-soft);
      font-size: var(--pw-fs-sm);
      transition-property: translate;
      transition-duration: 160ms;
      transition-timing-function: var(--pw-ease-scene);
    }

    &:hover { color: var(--pw-primary-soft); }
    &:hover::after { translate: .2rem 0; }
  }

  .catalog-group__desc {
    color: var(--pw-fg-meta);
    font-size: var(--pw-fs-sm);
    font-weight: 300;
    line-height: 1.55;
    text-wrap: pretty;
  }

  .catalog-group__links {
    display: grid;
    gap: .1rem;
    margin: .1rem 0 0;
    padding: 0;
    list-style: none;
  }

  .catalog-group__link {
    display: flex;
    align-items: center;
    gap: .55rem;
    min-block-size: 2.5rem;
    color: var(--pw-fg-subtle);
    font-size: var(--pw-fs-sm);
    font-weight: 300;
    line-height: 1.35;

    &::before {
      content: "\2192";
      flex: none;
      color: var(--pw-primary-soft);
    }

    &:hover { color: var(--pw-primary-soft); }
  }

  .catalog-context {
    margin-block-start: clamp(3rem, 6vw, 4.5rem);
    border-radius: var(--pw-r-md);
    background: color-mix(in oklch, var(--pw-card-flat) 54%, transparent);
  }

  .catalog-context__toggle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-block-size: 3.75rem;
    padding: .9rem 1.2rem;
    cursor: pointer;
    list-style: none;
    color: var(--pw-fg-strong);
    font-size: var(--pw-fs-md);
    font-weight: 400;

    &::-webkit-details-marker { display: none; }
    &::after {
      content: "+";
      color: var(--pw-primary-soft);
      font-family: var(--pw-font-mono);
      font-size: var(--pw-fs-lg);
      font-weight: 200;
    }
  }

  .catalog-context[open] > .catalog-context__toggle::after { content: "-"; }
  .catalog-context__body { padding: 0 1.2rem 1.35rem; }
  .catalog-context__body.doc-body h2:first-child { margin-block-start: 1rem; }

  @media (width <= 34rem) {
    .catalog-item {
      grid-template-columns: minmax(0, 1fr) auto;
      gap: .75rem;
      padding: 1rem;
    }

    .catalog-item > :is(.editorial-icon, .catalog-item__number) { display: none; }
  }

  @media (prefers-reduced-motion: reduce) {
    .catalog-item,
    .catalog-item__arrow,
    .catalog-group__title::after { transition: none; }
  }
}
