@layer components {
  .products {
    --product-max-inline-size: 9rem;

    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(var(--product-max-inline-size), 1fr));
    gap: var(--block-space);

    @media (width >= 32rem) {
      --product-max-inline-size: 12rem;
    }

    @media (width >= 48rem) {
      --product-max-inline-size: 18rem;
    }
  }

  .product__hero {
    display: grid;

    max-height: 70vh;
    width: 100%;
    margin-block-end: var(--block-space);

    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr) min-content;
    gap: var(--block-space);
    overflow: hidden;

    @media (width >= 64rem) {
      height: auto;
      grid-template-columns: minmax(min-content, 1fr) minmax(0, 1fr);
      gap: var(--block-space-double);
    }
  }

  .product__hero-text {
    display: flex;
    flex-direction: column;
    gap: var(--block-space);
    order: 2;

    @media (width >= 64rem) {
      order: 0;
      justify-content: end;
    }
  }

  .product__hero-image-container {
    /* --aspect-ratio: 1536 / 1920; */
    margin-inline: auto;
    aspect-ratio: var(--aspect-ratio);
    width: auto;
    height: 100%;
    object-fit: cover;
    border-radius: var(--radius);
    overflow: hidden;

    background: var(--ink-weakest);

    @media (width >= 64rem) {
      --image-height: 70vh;

      width: min(100%, calc(var(--image-height) * var(--aspect-ratio)));
      max-height: var(--image-height);

      margin-block-start: auto;
      margin-inline-end: 0;
    }

    > img { position: relative; }
  }

  .product__name, .product__type, .product__price {
    /* margin-block-end: var(--product-name-spacing, var(--block-space-responsive)); */
    /* margin-block-end: calc(pow(var(--responsive), 0.2) * 1rem); */
    font-family: var(--font-header);
    line-height: var(--product-name-line-height, 1.15cap);
    text-box: var(--product-name-text-box, var(--text-box-font-header));
    text-transform: var(--product-name-text-transform, uppercase);
  }

  .product__badges {
    display: flex;
    gap: var(--block-space);
  }

  .product__badge {
    padding-inline: var(--inline-space);
    font-size: var(--text-base-resp);
    font-weight: 600;
    text-transform: uppercase;
    border-radius: var(--radius);
    color: var(--color-canvas);
    background-color: var(--color-highlight);
  }

  .product__name { font-size: var(--text-xxx-large-resp); }
  .product__type { font-size: var(--text-x-large-resp); }
  .product__price { font-size: var(--text-base-resp); }

  .product__price {
    &::after {
      content: "(loading...)";
      display: none;
      margin-inline: 0.5ch;
    }

    [busy] &::after {
      display: inline-block;
    }
  }
}
