/* -- Load More (website · Search & Navigation) ----------------------------
   Loads another batch into the current collection - how many are shown, a progress bar and the button, with a busy state while loading. */

@layer components {
  /* every box in the block measures border-box - the same on any page */
  :where(.mk-load-more, .mk-load-more *, .mk-load-more ::before, .mk-load-more ::after) {
    box-sizing: border-box;
  }

  .mk-load-more {
    display: grid;
    justify-items: center;
    gap: 0.75rem;
    width: 100%;
    padding-block: 1.5rem;
    & output {
      color: var(--muted-foreground);
      font-size: 0.875rem;
    }
    & output strong {
      color: var(--foreground);
    }
    & progress {
      width: min(100%, 14rem);
      height: 0.25rem;
    }
  }
  .mk-load-more-button {
    & .mk-load-more-spin {
      display: none;
      width: 1rem;
      height: 1rem;
      border: 2px solid currentColor;
      border-inline-end-color: transparent;
      border-radius: 50%;
      animation: mk-load-more-spin 700ms linear infinite;
    }
    &[aria-busy="true"] {
      pointer-events: none;
      opacity: 0.75;
    }
    &[aria-busy="true"] .mk-load-more-spin {
      display: inline-block;
    }
    &[aria-busy="true"] svg {
      display: none;
    }
  }
  @keyframes mk-load-more-spin {
    to {
      rotate: 1turn;
    }
  }

  /* -- Accessibility ------------------------------------------- */
  @media (prefers-reduced-motion: reduce) {
    .mk-load-more-spin {
      animation-duration: 2.4s;
    }
  }

  @media (forced-colors: active) {
    .mk-load-more-spin {
      border-color: CanvasText;
      border-inline-end-color: transparent;
    }
  }
}
