/* ==========================================================================
   Doll photo carousel — CSS scroll-snap, works before (and without) JavaScript.
   Normal doll PDP: phones only (WooCommerce gallery + thumbnails stay on desktop).
   TrafficJunky landing: all widths (it replaces the hero + photo strip).
   Tokens only.
   ========================================================================== */
.pp-carousel { position: relative; }
.pp-carousel__track {
  display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth;
  scrollbar-width: none; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain;
  background: var(--pp-white);
}
.pp-carousel__track::-webkit-scrollbar { display: none; }
.pp-carousel__track:focus-visible { outline: 2px solid var(--pp-pink); outline-offset: -2px; }
.pp-carousel__slide { flex: 0 0 100%; margin: 0; scroll-snap-align: start; scroll-snap-stop: always; aspect-ratio: 1 / 1; }
.pp-carousel__slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pp-carousel__badge {
  position: absolute; top: 12px; left: 12px; padding: 5px 10px; border-radius: var(--pp-radius-sm);
  background: var(--pp-cta); color: var(--pp-on-accent); font-size: 12px; font-weight: var(--pp-w-bold); letter-spacing: 0.04em; text-transform: uppercase;
}
.pp-carousel__dots { display: flex; justify-content: center; flex-wrap: wrap; gap: 0; padding: 6px 0 2px; }
.pp-carousel__dot { width: 20px; height: 20px; padding: 0; border: 0; background: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.pp-carousel__dot::after { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--pp-rose-deep); transition: background .2s, transform .2s; }
.pp-carousel__dot.is-on::after { background: var(--pp-plum); transform: scale(1.25); }
@media (prefers-reduced-motion: reduce) { .pp-carousel__track { scroll-behavior: auto; } }

/* Klarna message slot (inc/klarna.php): takes no space until Stripe's element is ready. */
.pp-klarna { min-height: 0; margin: 0; }
.pp-klarna.is-ready { margin: -2px 0 10px; }
/* PayPal Pay Later slot (pp-core PP_PayPal): empty and zero-height until PayPal renders after consent. */
.pp-paylater { margin: 0; }
.pp-paylater:not(:empty) { margin: 0 0 10px; }

/* Normal doll PDP: carousel on phones, WooCommerce gallery on desktop. */
.doll .pp-carousel { display: none; }
@media (max-width: 760px) {
  .doll .pp-carousel { display: block; margin: 0 calc(-1 * var(--pp-gutter, 16px)); }
  .doll .pp-pdp-gallery .woocommerce-product-gallery,
  .doll .pp-pdp-gallery > .onsale { display: none !important; }
}
