.shop-body-content h1.product-title { margin: 0 0 var(--frame-spacing); text-align: left; }
.shop-product-summary { display: grid; grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
.shop-product-overview, .shop-product-media { min-width: 0; }
.shop-product-images { max-width: 24rem; margin: 0 0 1rem auto; }
.shop-product-teaser > :last-child { margin-bottom: 0; }
.shop-product-purchase { margin-top: 1.5rem; }
.shop-product-price-value { margin: 0; font-size: 2rem; font-weight: 600; line-height: 1.2; }
.shop-product-tax { display: block; margin-top: .35rem; color: var(--shop-muted); }
.shop-product-number { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin: .75rem 0 0; color: var(--shop-muted); font-size: .875rem; }
.shop-product-number dt { font-weight: 400; }
.shop-product-number dd { margin: 0; }
.shop-product-actions { margin-top: 1rem; }
.shop-product-inquiry { margin: var(--shop-field-gap) 0 0; }

/* Match the reference shop's rich-text typography. */
.shop-product-description { overflow-wrap: anywhere; }
/* Without an order form in between (digital products), spaced like the order form. */
.shop-product-summary + .shop-product-description { margin-top: 2.5rem; }
.shop-product-description :is(h2, h3, h4) { margin: 1.6em 0 10px; font-family: inherit; font-weight: 600; line-height: 1.2; }
.shop-product-description .frame-header > :first-child { margin-top: 0; }
.shop-product-description h2 { font-size: 1.6em; }
.shop-product-description h3 { font-size: 1.3em; }
.shop-product-description h4 { font-size: 1.1em; }
.shop-product-description p { margin: 0 0 1em; }
.shop-product-description :is(ul, ol) { margin: 0 0 25px; padding-inline-start: 40px; }
.shop-product-description li { margin-bottom: 10px; }

@media (max-width: 767px) {
    .shop-product-summary { grid-template-columns: 1fr; gap: 1.5rem; }
    .shop-product-media { order: -1; }
    .shop-product-media .shop-product-images { max-width: 18rem; margin-inline: auto; }
}
/* Services billed by time have no fixed price to show. */
.shop-price-by-time .shop-product-price { display: none; }
