/* ============================================================================
   port.css · what the port adds on top of the site's own sheets.

   The footer's region host now holds the storefront's language and currency
   (GET /Commerce/context); buy controls grey out when the storefront has no
   price or no stock for a product; and the order lookup form reports a bad
   reference in the site's own ink.
   ========================================================================== */

.ph-market { display: inline-flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ph-market label { display: inline-flex; align-items: center; gap: 8px; }
.ph-market-k {
  font-size: var(--ph-fs-12, 12px);
  color: var(--ph-text-2, #6e6e73);
}
.ph-market select {
  height: 34px;
  padding: 0 28px 0 12px;
  border: 1px solid var(--border-strong, rgba(32, 58, 133, .16));
  border-radius: 980px;
  background: #fff;
  color: var(--ink-900, #10214b);
  font: inherit;
  font-size: var(--ph-fs-12, 12px);
  cursor: pointer;
}

[data-ph-buy].is-unavailable,
[data-ph-buy][aria-disabled="true"] {
  opacity: .45;
  cursor: not-allowed;
}
.ph-unavailable { color: var(--ph-text-2, #6e6e73); }
/* One "Unavailable" in the buy box is enough: option chips and repeated
   figures stay blank rather than repeating it. */
.buy-choice .ph-unavailable,
.pdp-vs-price .ph-unavailable,
.bd-strap-p.ph-unavailable,
.bd-strap-p .ph-unavailable { display: none; }
[data-buy-now]:disabled { opacity: .45; cursor: not-allowed; }

.ph-site-state { padding: 48px 0; color: var(--ph-text-2, #6e6e73); }
.ph-site-state.is-error { color: #9c3347; }

.ph-form-note { margin-top: 16px; color: #9c3347; }

/* The product photograph placeholder used where the Band's earlier placeholder photos
   were removed: keep it neutral and never stretched. */
img[src$="/placeholder/product-photo.svg"] { object-fit: contain; background: #eef1f7; }
