/* P0 jitter v2 — root-cause kills (2026-09-19)
   Mobile flash: p0-r4 .quick-add:hover{transform:translate(1px,-1px)} sticky :hover on touch
   + p0-r5 opacity 0.88→1 + underline hovers from p0-r2/r3
   Desktop bounce: catalog-campaign vh/svh/100vh + card img scale/opacity transition + font swap
*/

/* CTA: no paint flash on touch; hover only on real pointer */
.catalog-page .quick-add,
.catalog-page button.quick-add,
button.quick-add{
  transition:none !important;
  transform:none !important;
  opacity:1 !important;
  text-decoration:none !important;
  -webkit-tap-highlight-color:transparent;
}
.catalog-page .quick-add:hover,
.catalog-page .quick-add:active,
.catalog-page .quick-add:focus,
button.quick-add:hover,
button.quick-add:active,
button.quick-add:focus{
  transform:none !important;
  opacity:1 !important;
  background:transparent !important;
  text-decoration:none !important;
}
@media (hover:hover) and (pointer:fine){
  .catalog-page .quick-add:hover,
  button.quick-add:hover{
    text-decoration:underline !important;
    text-underline-offset:4px;
    text-decoration-color:rgba(228,199,106,.55);
    /* no translate, no opacity, no bg fill */
  }
}
@media (hover:none), (pointer:coarse){
  .catalog-page .quick-add:hover,
  .catalog-page .quick-add:active,
  button.quick-add:hover,
  button.quick-add:active{
    color:#e4c76a !important;
    border-bottom-color:rgba(228,199,106,.35) !important;
    text-decoration:none !important;
    transform:none !important;
    opacity:1 !important;
    background:transparent !important;
  }
}

/* Card photos: no scale / crossfade motion (desktop bounce feel) */
.catalog-page .card-photo img,
.catalog-page .card-image-primary,
.catalog-page .card-image-secondary{
  transition:none !important;
  transform:none !important;
}
.catalog-page .card-photo>button:first-child:hover .card-image-primary,
.catalog-page .card-photo>button:first-child:hover .card-image-secondary{
  transform:none !important;
  opacity:inherit; /* cancel secondary fade-in */
}
.catalog-page .card-photo>button:first-child:hover .card-image-secondary{
  opacity:0 !important; /* keep primary only — no swap flash */
}

/* Campaign: fixed px, beat all leftover vh/svh/dvh */
.catalog-page section.catalog-campaign,
.catalog-page .catalog-campaign{
  height:420px !important;
  min-height:420px !important;
  max-height:420px !important;
  aspect-ratio:auto !important;
}
@media (max-width:768px){
  .catalog-page section.catalog-campaign,
  .catalog-page .catalog-campaign{
    height:240px !important;
    min-height:240px !important;
    max-height:240px !important;
  }
}
@media (max-width:430px){
  .catalog-page section.catalog-campaign,
  .catalog-page .catalog-campaign{
    height:220px !important;
    min-height:220px !important;
    max-height:220px !important;
  }
}

/* One-shot reveals / continuous anim leftovers */
.reveal{animation:none !important;opacity:1 !important;transform:none !important}
.campaign-scroll-arrow{animation:none !important;transform:none !important}
.catalog-page .card,
.catalog-page .card *{
  /* do not blanket-kill all transitions — only motion-prone */
}
.catalog-page .campaign-cta,
.catalog-page a.campaign-cta{
  transition:none !important;
}
.catalog-page a.campaign-cta:hover,
.catalog-page a.campaign-cta:active{
  transform:none !important;
}

/* Prefer stable scroll (less rubber-feel with sticky) */
html{scroll-behavior:auto !important}
