/* ============================================================
   v125 — PREMIUM DETAILS (hover transforms, underlines, touch, hairlines)
   ============================================================ */

/* 1a. Card hover lift — consistent 2px translate, transforms only
   (no layout reflow). Combined with v124 elevation upgrade for the
   classic "lifts off the page" feel. */
body .pz-card:hover,
body .pz-card-a:hover,
body .pz-shortlist-card:hover,
body .pz-smart-rec__card:hover,
body .pz-explore-card:hover {
  transform: translate3d(0, -2px, 0) !important;
}

/* 1b. Button hover — subtle 1px lift, matches "released" out-expo timing */
body .pz-btn:hover,
body .pz-btn--primary:hover,
body .pz-shortlist__cta:hover,
body .pz-explore__reset:hover,
body .pz-philosophy__cta--primary:hover {
  transform: translate3d(0, -1px, 0) !important;
}

/* 1c. Heart button hover — slight scale-up gives tactile "toy" feel */
body .pz-heart:hover,
body .pz-heart-btn:hover,
body .pz-mob-heart:hover {
  transform: scale(1.08) !important;
}

/* 1d. Press states — quick downward feedback */
body .pz-btn:active,
body .pz-card:active,
body .pz-card-a:active,
body .pz-shortlist__cta:active,
body .pz-philosophy__cta--primary:active {
  transform: translate3d(0, 1px, 0) scale(0.98) !important;
}
body .pz-heart:active,
body .pz-heart-btn:active {
  transform: scale(0.92) !important;
}

/* 1e. Filter chip / quiz option hover — subtle background lift only,
   no transform (preserves grid layout) */
body .pz-explore__chip:hover,
body .pz-fyt__option:hover {
  transform: translate3d(0, -1px, 0) !important;
}

/* 2. Premium content-link underline rendering.
   Replaces the default browser underline (touches descenders, thick,
   bureaucratic) with a tuned editorial underline. */
body .entry-content a:not(.pz-btn):not(.pz-card-a):not(.pz-card),
body.pz-clean-post .entry-content a:not(.pz-btn) {
  text-decoration: underline !important;
  text-decoration-thickness: 1.5px !important;
  text-decoration-skip-ink: auto !important;
  text-underline-offset: 0.18em !important;
  text-decoration-color: rgba(194, 65, 12, 0.5) !important;
  transition: text-decoration-color var(--pz-t-fast, 180ms) var(--pz-standard, cubic-bezier(0.4, 0, 0.2, 1)) !important;
}

body .entry-content a:not(.pz-btn):not(.pz-card-a):not(.pz-card):hover,
body.pz-clean-post .entry-content a:not(.pz-btn):hover {
  text-decoration-color: var(--pz-orange, #c2410c) !important;
}

/* 3. Mobile touch-target enforcement — WCAG 2.5.5 + Apple HIG (44pt).
   Only applies on actual touch viewports (avoids forcing chunky buttons
   on desktop where they look indie). */
@media (hover: none) and (pointer: coarse) {
  body .pz-btn,
  body .pz-heart-btn,
  body .pz-mob-btn,
  body .pz-overlay-nav__close,
  body .pz-explore__chip,
  body .pz-fyt__option,
  body .pz-shortlist__cta,
  body .pz-shortlist-card__remove,
  body .pz-compare__dropdown {
    min-height: 44px !important;
    min-width: 44px !important;
  }
}

/* 4. Hairline dividers — brand-tinted, semi-transparent.
   Eliminates the "stark border" feel of pure black/gray 1px borders. */
body .pz-card,
body .pz-shortlist-card,
body .pz-smart-rec__card {
  border-color: rgba(28, 25, 23, 0.06) !important;
}

/* Editorial section dividers — wide-and-thin, brand-aware */
body .pz-section-divider,
body hr {
  border: 0 !important;
  border-top: 1px solid rgba(28, 25, 23, 0.08) !important;
  margin: 2.4rem 0 !important;
}

/* 5. Optional paper-texture utility (opt-in via class) — for editorial
   surfaces that want the magazine grain. Doesn't apply automatically. */
.pz-paper-texture {
  position: relative;
}
.pz-paper-texture::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(28, 25, 23, 0.015) 0%, transparent 60%),
    radial-gradient(circle at 80% 70%, rgba(194, 65, 12, 0.01) 0%, transparent 50%);
  mix-blend-mode: multiply;
}

/* 6. Image aspect-ratio fallback for cards without enforced ratios.
   Cards without explicit aspect-ratio get 3:2 by default (premium
   editorial standard). Snippet-defined ratios still win. */
body .pz-card:not([style*="aspect-ratio"]) > .pz-card__media:not([style*="aspect-ratio"]),
body .pz-explore-card:not([style*="aspect-ratio"]) {
  aspect-ratio: 3 / 2;
}

/* 7. Smooth gradient overlays on card images (when they have one) —
   premium products use subtle gradients for text legibility on imagery */
body .pz-explore-card::before,
body .pz-card[style*="background-image"]::before {
  pointer-events: none;
}

/* 8. Reduce motion across hover-transforms when prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  body .pz-card:hover,
  body .pz-card-a:hover,
  body .pz-shortlist-card:hover,
  body .pz-smart-rec__card:hover,
  body .pz-explore-card:hover,
  body .pz-btn:hover,
  body .pz-heart:hover,
  body .pz-heart-btn:hover,
  body .pz-mob-heart:hover,
  body .pz-explore__chip:hover,
  body .pz-fyt__option:hover {
    transform: none !important;
  }
}