/* Exo Product Announcements -- product-specific and tag campaigns. */
.exo-pa-group { box-sizing: border-box; display: flex; flex-wrap: wrap; align-items: flex-start; gap: 5px; max-width: 100%; }
.exo-pa-group[hidden], .exo-pa-banner[hidden] { display: none !important; }
.exo-pa-group--single { width: fit-content; margin: 9px 0 10px; gap: 6px; }
.exo-pa-group--card { margin: 7px 0 2px; }
.exo-pa-banner {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  width: fit-content;
  padding: 4px 9px;
  background: var(--exo-pa-bg, #16b83f);
  border: var(--exo-pa-border-width, 1px) solid var(--exo-pa-border, #119932);
  border-radius: var(--exo-pa-radius, 3px);
  color: var(--exo-pa-text, #fff) !important;
  font-family: inherit;
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: 0;
  text-align: center;
  text-decoration: none !important;
  text-transform: none;
  box-shadow: none;
  white-space: normal;
  overflow-wrap: anywhere;
  flex: 0 1 auto;
}
.exo-pa-banner--single { font-size: var(--exo-pa-single-size, 16px); vertical-align: top; }
.exo-pa-banner--card { font-size: var(--exo-pa-card-size, 12px); vertical-align: middle; }
.exo-pa-banner--clickable { cursor: pointer; }
.exo-pa-banner--clickable:hover,
.exo-pa-banner--clickable:focus,
.exo-pa-banner--clickable:visited { color: var(--exo-pa-text, #fff) !important; text-decoration: none !important; }
.exo-pa-banner--clickable:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
/* Image groups are relocated to the image wrapper by frontend.js. */
.exo-pa-image-host > .exo-pa-group--overlay {
  position: absolute;
  left: 8px;
  right: 8px;
  z-index: 15;
  width: auto;
  max-width: none;
  margin: 0;
  pointer-events: none;
}
.exo-pa-image-host > .exo-pa-group--overlay .exo-pa-banner--clickable { pointer-events: auto; }
.exo-pa-image-host > .exo-pa-group--image_top { top: 8px; }
.exo-pa-image-host > .exo-pa-group--image_bottom { bottom: 8px; }
/* Support markup served from older cached pages until their HTML is refreshed. */
.box-image > .exo-pa-banner--card.exo-pa-is-overlay,
.exo-pa-image-host > .exo-pa-banner--card.exo-pa-is-overlay {
  position: absolute;
  left: 8px;
  right: 8px;
  z-index: 15;
  display: flex;
  width: auto;
  max-width: none;
  margin: 0;
  pointer-events: none;
}
.exo-pa-banner--card.exo-pa-is-overlay.exo-pa-has-link { pointer-events: auto; }
.exo-pa-banner--card.exo-pa-overlay-top { top: 8px; }
.exo-pa-banner--card.exo-pa-overlay-bottom { bottom: 8px; }
@media (max-width: 549px) {
  .exo-pa-image-host > .exo-pa-group--overlay { left: 5px; right: 5px; }
}
/* Flatsome UX Builder may wrap a shortcode in <p> with a large bottom margin. */
.single-product .product-info p:has(> .exo-pa-group--single) { margin-bottom: 0 !important; }

/* Align the price + Add to Cart as a bottom pair on ALL multi-product rows,
   even if a card has no reviews or announcements. Keep titles at the top. */
.product-small .box-text.exo-pa-row-aligned,
li.product .box-text.exo-pa-row-aligned {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
  box-sizing: border-box;
}
.product-small .box-text.exo-pa-row-aligned .price-wrapper,
li.product .box-text.exo-pa-row-aligned .price-wrapper {
  margin-top: auto !important;
  margin-bottom: 0 !important;
}
/* Compact and consistent price-to-button gap for all Flatsome shop cards. */
.product-small .box-text .add-to-cart-button,
li.product .box-text .add-to-cart-button {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
.product-small .box-text .add-to-cart-button > a.button,
li.product .box-text .add-to-cart-button > a.button {
  margin-top: 0.3rem !important;
  margin-bottom: 0 !important;
}
/* Flatsome mobile breakpoint: space between announcement and review stars. */
@media (max-width: 549px) {
  .product-small .box-text > .exo-pa-group--card:not([hidden]),
  li.product .box-text > .exo-pa-group--card:not([hidden]) {
    margin-bottom: 10px;
  }
}
