/* Hide price text only when the cached HTML is not this visitor's group.
   The slot keeps the height of its own content: no extra reserved space. */
html.edge-price-hydrate .group_price,
html.edge-price-hydrate .plp-list__price-inner,
html.edge-price-hydrate .plp-list__price,
html.edge-price-hydrate h2.price,
html.edge-price-hydrate .edge-price-slot {
	box-sizing: border-box;
}
html.edge-price-hydrate .group_price > *,
html.edge-price-hydrate .plp-list__price-inner > *,
html.edge-price-hydrate .plp-list__price > *:not(.edge-price-slot),
html.edge-price-hydrate h2.price > *,
html.edge-price-hydrate .price-new-live,
html.edge-price-hydrate .price-old-live,
html.edge-price-hydrate .price-tax-live,
html.edge-price-hydrate .discount-live,
html.edge-price-hydrate .stock-live,
html.edge-price-hydrate .price-per-unit-live,
html.edge-price-hydrate .stock-status {
	visibility: hidden;
}
/* Empty guest slot has no message, HTML, or login button: do not keep a padded row. */
.product-thumb .group_price.edge-price-slot:empty,
.plp-list__price-inner.edge-price-slot:empty {
	display: none;
}
h2.price:has(.price-new-live) {
	min-height: 1.2em;
	box-sizing: border-box;
}
/* Buy controls travel in guest HTML and stay out of the layout until reveal. */
.edge-buy-live--pending {
	display: none !important;
}
/* List rows lay spinner and button out as flex items. */
.plp-list__actions > .edge-buy-live {
	display: contents;
}
