/* Pergola configurator — reuses the same design tokens as the Custom Size
   configurator (assets/css/variables.css + frontend.css) so both read as
   one system instead of two differently-branded widgets on the same site.
   Falls back to sane literals if variables.css somehow isn't loaded. */
.rup-pg {
  --pg-ink: var(--rankup-front-text, #111827);
  --pg-muted: var(--rankup-front-muted, #667085);
  --pg-line: var(--rankup-front-border, #dbe2ec);
  --pg-line-strong: var(--rankup-front-border-strong, #9eb8e7);
  --pg-soft: var(--rankup-front-soft, #f7f9fc);
  --pg-soft-2: var(--rankup-front-soft-2, #eef4ff);
  --pg-bg: var(--rankup-front-bg, #fff);
  --pg-accent: var(--rankup-front-blue, #245fd2);
  --pg-danger: var(--rankup-front-danger, #c1121f);
  --pg-radius: var(--rankup-radius, 0px);
  --pg-radius-sm: var(--rankup-radius-sm, 4px);
  --pg-radius-md: var(--rankup-radius-md, 6px);
  --pg-radius-lg: var(--rankup-radius-lg, 8px);
  --pg-space-xs: var(--rankup-space-xs, 8px);
  --pg-space-sm: var(--rankup-space-sm, 12px);
  --pg-space-md: var(--rankup-space-md, 16px);
  --pg-space-lg: var(--rankup-space-lg, 20px);
  --pg-space-xl: var(--rankup-space-xl, 24px);
  width: 100%;
  margin: var(--pg-space-lg) 0 var(--pg-space-md);
  color: var(--pg-ink);
  font-family: inherit;
  box-sizing: border-box;
}

.rup-pg *,
.rup-pg *::before,
.rup-pg *::after {
  box-sizing: border-box;
}

.rup-pg button {
  font: inherit;
}

.rup-pg__section {
  margin-top: var(--pg-space-xl);
}

.rup-pg__section:first-child {
  margin-top: 0;
}

.rup-pg__label {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0 var(--pg-space-xs);
  margin: 0 0 var(--pg-space-sm);
  padding-bottom: var(--pg-space-sm);
  line-height: 1.3;
  border-bottom: 1px solid var(--pg-line);
}

.rup-pg__label strong {
  color: var(--pg-ink);
  font-size: 14px;
  font-weight: 700;
}

.rup-pg__label span {
  color: var(--pg-muted);
  font-size: 13px;
  font-weight: 500;
}

/* Color swatches */
.rup-pg__swatches {
  display: flex;
  flex-wrap: wrap;
  gap: var(--pg-space-sm);
}

/* Free-text shade under a "Let customer pick color" swatch. */
.rup-pg__custom-color {
  margin-top: var(--pg-space-sm);
}

.rup-pg__custom-color[hidden] {
  display: none;
}

.rup-pg__custom-color-field {
  display: block;
  max-width: 320px;
}

.rup-pg__custom-color-field span {
  display: block;
  margin-bottom: 4px;
  color: var(--pg-muted);
  font-size: 13px;
}

.rup-pg__custom-color-field input {
  width: 100%;
  padding: 10px var(--pg-space-sm);
  border: 1px solid var(--pg-line-strong);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-bg);
  color: var(--pg-ink);
  font: inherit;
  font-size: 14px;
}

.rup-pg__custom-color-field input:focus {
  border-color: var(--pg-accent);
  outline: none;
}

.rup-pg__swatch {
  position: relative;
  display: grid;
  width: 44px;
  min-width: 44px;
  height: 44px;
  place-items: center;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}

.rup-pg__swatch > span {
  display: block;
  width: 36px;
  height: 36px;
  border: 2px solid var(--pg-bg);
  border-radius: 50%;
  background-position: center;
  background-size: cover;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08), 0 0 0 1px var(--pg-line);
  transition: box-shadow .16s ease;
}

.rup-pg__swatch em {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
}

.rup-pg__swatch:hover > span {
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08), 0 0 0 1px var(--pg-line-strong);
}

.rup-pg__swatch.is-active > span {
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08), 0 0 0 2px var(--pg-accent);
}

/* Size pills / option buttons — same card language as .rankup-button-option */
.rup-pg__pills {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
  gap: var(--pg-space-sm);
}

.rup-pg__pill {
  min-height: 42px;
  padding: var(--pg-space-xs) var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-bg);
  color: var(--pg-ink);
  font-size: 13px;
  font-weight: 700;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease, transform .16s ease;
}

.rup-pg__pill:hover {
  border-color: var(--pg-line-strong);
  box-shadow: 0 6px 18px rgba(16, 24, 40, .07);
  transform: translateY(-1px);
}

.rup-pg__pill.is-active {
  border-color: var(--pg-accent);
  background: var(--pg-soft-2);
  color: var(--pg-ink);
  box-shadow: 0 0 0 1px rgba(36, 95, 210, .22);
  transform: none;
}

/* Layout cards */
.rup-pg__layouts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--pg-space-sm);
}

.rup-pg__layout {
  display: flex;
  min-width: 0;
  min-height: 76px;
  flex-direction: row;
  align-items: center;
  justify-content: flex-start;
  gap: var(--pg-space-sm);
  padding: var(--pg-space-sm) var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-bg);
  color: var(--pg-ink);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease, transform .16s ease;
}

.rup-pg__layout img {
  width: 56px;
  height: 42px;
  object-fit: contain;
}

.rup-pg__layout-icon {
  width: 48px;
  height: 32px;
  border: 2px solid var(--pg-muted);
  border-top: 6px double var(--pg-muted);
}

.rup-pg__layout strong {
  font-size: 13px;
  font-weight: 700;
}

.rup-pg__layout:hover {
  border-color: var(--pg-line-strong);
  box-shadow: 0 6px 18px rgba(16, 24, 40, .07);
  transform: translateY(-1px);
}

.rup-pg__layout.is-active {
  border-color: var(--pg-accent);
  background: var(--pg-soft-2);
  box-shadow: 0 0 0 1px rgba(36, 95, 210, .22);
  transform: none;
}

/* Price */
.rup-pg__price {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--pg-space-sm);
  margin-top: var(--pg-space-lg);
  padding: var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-bg);
}

.rup-pg__price > strong {
  color: var(--pg-ink);
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
}

.rup-pg__price del {
  color: var(--pg-muted);
  font-size: 15px;
}

.rup-pg__price > span {
  padding: 4px var(--pg-space-xs);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-soft-2);
  color: var(--pg-accent);
  font-size: 12px;
  font-weight: 700;
}

/* Side wall slots ("from above" floor plan) */
.rup-pg__slots {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--pg-space-xs);
}

.rup-pg__slot {
  position: relative;
  min-width: 0;
  min-height: 168px;
  overflow: hidden;
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-soft);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.rup-pg__slot:hover,
.rup-pg__slot:focus-within {
  border-color: var(--pg-line-strong);
  box-shadow: 0 6px 18px rgba(16, 24, 40, .07);
}

.rup-pg__slot.is-selected {
  border-color: var(--pg-accent);
  background: var(--pg-bg);
  box-shadow: 0 0 0 1px rgba(36, 95, 210, .22);
}

.rup-pg__slot-hit {
  display: flex;
  width: 100%;
  min-height: 168px;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 4px;
  padding: var(--pg-space-sm) var(--pg-space-xs) var(--pg-space-md);
  border: 0;
  background: transparent;
  color: var(--pg-ink);
  text-align: center;
  cursor: pointer;
}

.rup-pg__slot-hit img {
  width: 100%;
  height: 96px;
  margin-bottom: 3px;
  object-fit: contain;
}

.rup-pg__slot-placeholder {
  width: 60px;
  height: 48px;
  margin: var(--pg-space-md) 0 var(--pg-space-lg);
  border: 2px solid var(--pg-line-strong);
  border-top: 6px double var(--pg-line-strong);
}

.rup-pg__slot-hit strong {
  overflow-wrap: anywhere;
  color: var(--pg-ink);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.25;
}

.rup-pg__plus {
  font-size: 16px;
  font-weight: 400;
  vertical-align: -1px;
}

.rup-pg__slot-hit > span:not(.rup-pg__slot-placeholder) {
  color: var(--pg-muted);
  font-size: 12px;
  line-height: 1.25;
}

.rup-pg__slot-hit b {
  color: var(--pg-accent);
  font-size: 13px;
  font-weight: 700;
}

.rup-pg__slot-remove {
  position: absolute;
  z-index: 2;
  top: 7px;
  right: 7px;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--pg-line);
  border-radius: 50%;
  background: var(--pg-bg);
  color: var(--pg-ink);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
}

.rup-pg__empty {
  margin: 0 0 var(--pg-space-sm);
  color: var(--pg-muted);
  font-size: 13px;
}

/* Visual "from above" side configurator: named grid areas for the standard
   freestanding (6-side) / wall-mounted (3-side) side ids. Any side id that
   ProductOptions exposes but isn't one of these still renders — it just
   falls back to plain grid auto-flow instead of a named spot. */
.rup-pg__slots[data-pg-layout-mode="freestanding"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-areas:
    "back-left back back-right"
    "left center right"
    "front-left front front-right";
}

.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="back-left"] { grid-area: back-left; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="back"] { grid-area: back; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="back-right"] { grid-area: back-right; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="left"] { grid-area: left; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="right"] { grid-area: right; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="front-left"] { grid-area: front-left; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="front"] { grid-area: front; }
.rup-pg__slots[data-pg-layout-mode="freestanding"] [data-side="front-right"] { grid-area: front-right; }

.rup-pg__slots[data-pg-layout-mode="wallmounted"] {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-areas:
    "wall wall wall"
    "left front right";
  gap: 4px var(--pg-space-xs);
}

.rup-pg__slots-center,
.rup-pg__slots-wall {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 60px;
  padding: var(--pg-space-xs);
  border: 1px dashed var(--pg-line);
  border-radius: var(--pg-radius);
  color: var(--pg-muted);
  font-size: 11px;
  font-weight: 700;
  text-align: center;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.rup-pg__slots-center {
  grid-area: center;
}

.rup-pg__slots-wall {
  grid-area: wall;
  min-height: 20px;
}

@media (max-width: 480px) {
  .rup-pg__slots[data-pg-layout-mode="freestanding"],
  .rup-pg__slots[data-pg-layout-mode="wallmounted"] {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas: none;
  }

  .rup-pg__slots[data-pg-layout-mode] [data-side] {
    grid-area: auto;
  }

  .rup-pg__slots-center {
    grid-column: 1 / -1;
  }
}

/* Accessories — rendered with the shared .rankup-accessory-option markup from
   frontend.css (already a dependency of this stylesheet) so the rows look
   exactly like the accessory list on Custom Size products. Only the bits that
   list has no equivalent for live here. */
.rup-pg .rankup-accessory-option {
  border-radius: var(--pg-radius);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.rup-pg .rankup-accessory-option:hover {
  border-color: var(--pg-line-strong);
  box-shadow: 0 6px 18px rgba(16, 24, 40, .07);
}

.rup-pg .rankup-accessory-option:has(input:checked) {
  border-color: var(--pg-accent);
  background: var(--pg-soft-2);
  box-shadow: 0 0 0 1px rgba(36, 95, 210, .22);
}

.rup-pg .rankup-accessory-name {
  font-size: 13px;
  font-weight: 700;
}

.rup-pg .rankup-accessory-price {
  font-size: 13px;
  font-weight: 600;
}

.rup-pg .rankup-accessory-price del,
.rup-pg .rankup-accessory-price small {
  margin-inline-start: 4px;
  color: var(--pg-muted);
  font-size: 12px;
  font-weight: 400;
}

.rup-pg__accessory-image--empty {
  background: var(--pg-soft);
}

/* Out of stock: still listed (so the range reads the same every visit) but
   not tickable. */
.rup-pg .rankup-accessory-option.is-unavailable {
  opacity: .55;
  cursor: default;
}

.rup-pg .rankup-accessory-option.is-unavailable:hover {
  border-color: var(--pg-line);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
}

/* Quantity, which the Custom Size accessory rows don't have — appears only
   once a row is ticked, so an untouched list reads exactly like theirs. */
.rup-pg__accessory-qty {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: var(--pg-space-xs);
  margin-inline-start: auto;
}

.rup-pg__accessory-qty button {
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--pg-line);
  border-radius: 50%;
  background: var(--pg-bg);
  color: var(--pg-ink);
  font-size: 15px;
  line-height: 1;
  cursor: pointer;
}

.rup-pg__accessory-qty button:hover {
  border-color: var(--pg-accent);
  color: var(--pg-accent);
}

.rup-pg__accessory-qty > span {
  min-width: 16px;
  font-size: 13px;
  font-weight: 700;
  text-align: center;
}

/* Upload Your Design */
.rup-pg__design-drop {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: var(--pg-space-lg);
  border: 1px dashed var(--pg-line-strong);
  border-radius: var(--pg-radius);
  background: var(--pg-soft);
  text-align: center;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}

.rup-pg__design-drop:hover,
.rup-pg__design-drop:focus-within {
  border-color: var(--pg-accent);
  background: var(--pg-soft-2);
}

.rup-pg__design-drop.is-busy {
  opacity: .65;
  cursor: progress;
}

.rup-pg__design-drop strong {
  font-size: 14px;
}

.rup-pg__design-drop small {
  color: var(--pg-muted);
  font-size: 12px;
}

/* Visually hidden, still focusable and still the element the wrapping
   label activates — the dashed box above is the whole click target. */
.rup-pg__design-input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

.rup-pg__design-file {
  display: flex;
  align-items: center;
  gap: var(--pg-space-sm);
  padding: var(--pg-space-sm) var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-bg);
}

.rup-pg__design-file img,
.rup-pg__design-badge {
  flex: 0 0 48px;
  width: 48px;
  height: 48px;
  border-radius: var(--pg-radius-sm);
  object-fit: cover;
}

.rup-pg__design-badge {
  display: grid;
  place-items: center;
  background: var(--pg-soft-2);
  color: var(--pg-muted);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
}

.rup-pg__design-meta {
  flex: 1 1 auto;
  min-width: 0;
}

.rup-pg__design-meta a {
  display: block;
  overflow: hidden;
  color: var(--pg-ink);
  font-size: 14px;
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.rup-pg__design-meta small {
  display: block;
  margin-top: 2px;
  color: var(--pg-muted);
  font-size: 12px;
}

.rup-pg__design-remove {
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid var(--pg-line);
  border-radius: 50%;
  background: var(--pg-bg);
  color: var(--pg-muted);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.rup-pg__design-remove:hover {
  border-color: var(--pg-danger);
  color: var(--pg-danger);
}

.rup-pg__design-error {
  margin: var(--pg-space-xs) 0 0;
  color: var(--pg-danger);
  font-size: 13px;
}

/* An author `display:flex` outranks the UA stylesheet's `[hidden]` rule, so
   the toggled-off state has to be spelled out — same as .rup-pg-modal below. */
.rup-pg__design-drop[hidden],
.rup-pg__design-file[hidden],
.rup-pg__design-error[hidden] {
  display: none;
}

/* Assembly */
.rup-pg__assembly {
  display: flex;
  align-items: flex-start;
  gap: var(--pg-space-sm);
  margin-top: var(--pg-space-lg);
  padding: var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-bg);
  cursor: pointer;
}

.rup-pg__assembly input {
  margin-top: 3px;
}

.rup-pg__assembly strong,
.rup-pg__assembly small {
  display: block;
}

.rup-pg__assembly small {
  margin-top: 3px;
  color: var(--pg-muted);
}

/* Summary */
.rup-pg__summary {
  margin-top: var(--pg-space-lg);
  padding-top: var(--pg-space-md);
  border-top: 1px solid var(--pg-line);
}

.rup-pg__summary summary {
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
}

.rup-pg__summary [data-pg-summary] {
  margin-top: var(--pg-space-xs);
}

.rup-pg__summary [data-pg-summary] > div,
.rup-pg__summary-row,
.rup-pg__total {
  display: flex;
  justify-content: space-between;
  gap: var(--pg-space-md);
  padding: var(--pg-space-xs) 0;
  color: var(--pg-muted);
  font-size: 13px;
}

.rup-pg__summary [data-pg-summary] strong,
.rup-pg__summary-row strong {
  color: var(--pg-ink);
  font-weight: 700;
}

.rup-pg__total {
  margin-top: 4px;
  padding-top: var(--pg-space-sm);
  border-top: 1px solid var(--pg-line);
  color: var(--pg-ink);
  font-size: 16px;
}

.rup-pg__summary-row--base strong {
  font-weight: 700;
}

.rup-pg__summary-row--meta span {
  color: var(--pg-muted);
}

.rup-pg__summary-row--promo {
  color: var(--pg-accent);
}

.rup-pg__summary-row--promo strong {
  color: var(--pg-accent);
}

.rup-pg__summary-row--availability.rup-pg__summary-row--unavailable strong {
  color: var(--pg-danger);
}

.rup-pg__summary-row--availability.rup-pg__summary-row--available strong {
  color: var(--pg-accent);
}

/* Non-blocking notice (e.g. "removed X — not available for this size") */
.rup-pg__notice {
  min-height: 0;
  margin-top: 0;
  opacity: 0;
  transition: opacity .15s ease;
}

.rup-pg__notice.is-visible {
  margin-top: var(--pg-space-xs);
  padding: var(--pg-space-xs) var(--pg-space-sm);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-soft);
  color: var(--pg-ink);
  font-size: 13px;
  opacity: 1;
}

.rup-pg__notice.is-visible.rup-pg__notice--error {
  border-color: #f3b6b9;
  background: #fff7f7;
  color: var(--pg-danger);
}

/* Promotion banner */
.rup-pg__promo {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 4px var(--pg-space-sm);
  margin: 0 0 var(--pg-space-lg);
  padding: var(--pg-space-sm) var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  background: var(--pg-soft-2);
  color: var(--pg-accent);
}

.rup-pg__promo[hidden] {
  display: none;
}

.rup-pg__promo strong {
  font-size: 14px;
  font-weight: 700;
}

.rup-pg__promo span {
  font-size: 13px;
  color: var(--pg-ink);
}

.rup-pg-fields {
  display: none;
}

/* Modal (side wall picker) */
.rup-pg-modal[hidden] {
  display: none;
}

.rup-pg-modal {
  position: fixed;
  z-index: 100000;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--pg-space-lg);
  background: rgba(16, 24, 40, .6);
}

.rup-pg-modal__dialog {
  width: min(980px, 100%);
  max-height: min(820px, 92vh);
  overflow: auto;
  border-radius: var(--pg-radius-lg);
  background: var(--pg-bg);
  box-shadow: 0 20px 40px rgba(16, 24, 40, .18);
}

.rup-pg-modal__dialog > header {
  position: sticky;
  z-index: 2;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--pg-space-lg);
  border-bottom: 1px solid var(--pg-line);
  background: var(--pg-bg);
}

.rup-pg-modal__dialog > header h2 {
  margin: 0 !important;
  color: var(--pg-ink);
  font-size: 20px !important;
  font-weight: 700 !important;
}

.rup-pg-modal__dialog > header button {
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-bg);
  color: var(--pg-muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}

.rup-pg-modal__dialog > header button:hover {
  border-color: var(--pg-accent);
  color: var(--pg-accent);
}

.rup-pg-modal__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--pg-space-md);
  padding: var(--pg-space-lg);
}

.rup-pg-product {
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: center;
  padding: var(--pg-space-md);
  border: 1px solid var(--pg-line);
  border-radius: var(--pg-radius);
  text-align: center;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
}

.rup-pg-product img {
  width: 100%;
  height: 160px;
  object-fit: contain;
}

.rup-pg-product h3 {
  min-height: 36px;
  margin: var(--pg-space-sm) 0 4px !important;
  color: var(--pg-ink);
  font-size: 14px !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
}

.rup-pg-product p {
  min-height: 18px;
  margin: 4px 0;
  color: var(--pg-muted);
  font-size: 12px;
}

.rup-pg-product__meta {
  min-height: 18px;
  margin: 0 0 var(--pg-space-xs);
  color: var(--pg-muted);
  font-size: 12px;
}

.rup-pg-product__price {
  display: flex;
  align-items: center;
  gap: var(--pg-space-xs);
  margin-bottom: var(--pg-space-xs);
  min-height: 18px;
}

.rup-pg-product__price strong {
  color: var(--pg-ink);
  font-weight: 700;
}

.rup-pg-product__price del {
  color: var(--pg-muted);
  font-size: 12px;
}

.rup-pg-product > button {
  width: 100%;
  min-height: 38px;
  margin-top: auto;
  border: 1px solid var(--pg-ink);
  border-radius: var(--pg-radius-sm);
  background: var(--pg-ink);
  color: var(--pg-bg);
  font-weight: 700;
  cursor: pointer;
}

.rup-pg-product > button[aria-pressed="true"] {
  border-color: var(--pg-accent);
  background: var(--pg-accent);
}

.rup-pg-product > button:disabled,
.rup-pg-product.is-disabled {
  opacity: .55;
}

.rup-pg-product__more {
  display: block;
  margin-top: var(--pg-space-xs);
  color: var(--pg-muted);
  font-size: 12px;
  font-weight: 600;
}

.rup-pg-modal-open {
  overflow: hidden;
}

@media (max-width: 900px) {
  .rup-pg-modal__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 600px) {
  .rup-pg-modal {
    padding: 0;
  }

  .rup-pg-modal__dialog {
    height: 100%;
    max-height: none;
    border-radius: 0;
  }

  .rup-pg-modal__dialog > header {
    padding: var(--pg-space-md);
  }

  .rup-pg-modal__grid {
    grid-template-columns: 1fr;
    padding: var(--pg-space-md);
  }

  .rup-pg-product img {
    height: 190px;
  }
}

.rup-pg button:focus-visible,
.rup-pg-modal button:focus-visible {
  outline: 2px solid var(--pg-accent);
  outline-offset: 2px;
}

/* The native Add to Cart button is deliberately left unstyled here so it
   matches every other product on the site instead of standing out with a
   one-off color. The native price block (`.summary .price`) is intentionally
   left visible too — pergola-frontend.js keeps its
   `.woocommerce-Price-amount.amount` text in sync with the live selection,
   alongside the configurator's own `.rup-pg__price`. */

@media (max-width: 600px) {
  .rup-pg__section {
    margin-top: var(--pg-space-lg);
  }

  .rup-pg__slot,
  .rup-pg__slot-hit {
    min-height: 150px;
  }

  .rup-pg__slot-hit img {
    height: 82px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rup-pg *,
  .rup-pg *::before,
  .rup-pg *::after {
    scroll-behavior: auto !important;
  }
}
