/* Only an entering category root is quiet; header/background never disappear. */
.jz-soft-entering .jz-category-hero-media{
  visibility:hidden!important;
}
.jz-soft-entering .jz-category-section-title{
  visibility:hidden!important;
}
/* Outrank the existing category float animation while geometry is measured. */
:root.jz-soft-navigation body .elementor.jz-soft-entering .jz-category-hero .jz-category-hero-media.jz-category-bubble-enhanced.jz-category-motion-active{
  animation:none!important;
}
/* Begin the real glass/gloss reveal at handoff, rather than completing its
   opacity transitions while the target is still hidden behind the bridge. */
:root.jz-soft-navigation body .elementor.jz-soft-entering .jz-category-hero .jz-category-hero-media.jz-category-bubble-enhanced::before,
:root.jz-soft-navigation body .elementor.jz-soft-entering .jz-category-hero .jz-category-hero-media.jz-category-bubble-enhanced::after,
:root.jz-soft-navigation body .elementor.jz-soft-entering .jz-category-hero .jz-category-hero-media.jz-category-bubble-enhanced .jz-category-hero-photo-layer::after{
  opacity:0!important;
}
.jz-soft-navigation .jz-category-hero-media.jz-category-bubble-enhanced::after{
  transition:opacity .42s cubic-bezier(.22,1,.36,1)!important;
}
.jz-soft-entering .jz-category-hero-content:not(.jz-category-hero-labels){
  opacity:0!important;
  pointer-events:none!important;
}
/* An opacity-animated ancestor becomes a separate backdrop root in Chromium.
   Keep the moving label group live over the photo and fade the glass surfaces
   themselves, so their backdrop-filter can sample the actual scene throughout. */
:root.jz-soft-navigation .jz-category-hero .jz-category-hero-labels,
:root.jz-soft-navigation .jz-category-hero .jz-subcategory-label-anchor{
  opacity:1!important;
}
.jz-soft-entering .jz-category-hero-labels{pointer-events:none!important}
:root.jz-soft-navigation .jz-category-hero .jz-subcategory-label{
  opacity:1!important;
  transition:opacity .62s cubic-bezier(.22,.61,.36,1),scale .42s cubic-bezier(.22,1,.36,1),box-shadow .42s ease!important;
}
:root.jz-soft-navigation .jz-soft-entering .jz-category-hero .jz-subcategory-label{
  opacity:0!important;
  pointer-events:none!important;
}
/* The filter panel and product-card pseudo elements sample the page backdrop.
   Fading their common grid ancestor flattens those glass layers. The grid is
   below the hero: its individual surfaces reveal without an opacity ancestor. */
.jz-soft-entering #jz-product-grid{visibility:hidden!important}
.jz-soft-navigation .jz-category-hero-content:not(.jz-category-hero-labels){transition:opacity .62s cubic-bezier(.22,.61,.36,1)}
@media(prefers-reduced-motion:reduce){
  .jz-soft-navigation .jz-category-hero-media.jz-category-bubble-enhanced::after{
    transition:none!important;
  }
  :root.jz-soft-navigation .jz-category-hero .jz-subcategory-label{
    transition:none!important;
  }
  .jz-soft-navigation .jz-category-hero-content:not(.jz-category-hero-labels){transition:none}
}

/* One-shot, viewport-driven arrivals. Never fade card/image/info ancestors:
   each glass surface must keep sampling the real page behind it. */
:root.jz-soft-navigation .jz-reveal-item.jzb-card,
:root.jz-soft-navigation .jz-reveal-item.jzb-card .jzb-image-link,
:root.jz-soft-navigation .jz-reveal-item.jzb-card .jzb-info{opacity:1!important}
:root.jz-soft-navigation .jz-reveal-pending{pointer-events:none!important}
:root.jz-soft-navigation .jz-reveal-pending:is(.jz-category-section-title,.jzh-filter,.jzh-more),
:root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-image-link::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-info::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-heart::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-pending :is(.jzb-image,.jzb-bubble-background,.jzb-rating,.jzb-heart>svg,.jzb-heart>.heartplus,.jzb-info>*){opacity:0!important}
:root.jz-soft-navigation .jz-reveal-shown:is(.jz-category-section-title,.jzh-filter,.jzh-more),
:root.jz-soft-navigation .jzb-card.jz-reveal-shown .jzb-image-link::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-shown .jzb-info::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-shown .jzb-heart::before,
:root.jz-soft-navigation .jzb-card.jz-reveal-shown :is(.jzb-image,.jzb-bubble-background,.jzb-rating,.jzb-heart>svg,.jzb-heart>.heartplus,.jzb-info>*){
  animation:jz-soft-content-in .62s cubic-bezier(.22,.61,.36,1) backwards!important;
}
@keyframes jz-soft-content-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){
  :root.jz-soft-navigation .jz-reveal-pending{pointer-events:auto!important}
  :root.jz-soft-navigation .jz-reveal-pending:is(.jz-category-section-title,.jzh-filter,.jzh-more),
  :root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-image-link::before,
  :root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-info::before,
  :root.jz-soft-navigation .jzb-card.jz-reveal-pending .jzb-heart::before,
  :root.jz-soft-navigation .jzb-card.jz-reveal-pending :is(.jzb-image,.jzb-bubble-background,.jzb-rating,.jzb-heart>svg,.jzb-heart>.heartplus,.jzb-info>*){opacity:1!important}
  :root.jz-soft-navigation .jz-reveal-shown,
  :root.jz-soft-navigation .jzb-card.jz-reveal-shown *,
  :root.jz-soft-navigation .jzb-card.jz-reveal-shown *::before{animation:none!important}
}

/* Labels keep their real glass and existing float animations. Hold those
   animations at their current phase only while the opacity entry runs. */
:root.jz-soft-navigation body .elementor[data-elementor-type="wp-page"][data-elementor-id]:is(.jz-label-entry-pending,.jz-label-entry-running) .jz-category-hero .jz-category-hero-labels,
:root.jz-soft-navigation body .elementor[data-elementor-type="wp-page"][data-elementor-id]:is(.jz-label-entry-pending,.jz-label-entry-running) .jz-category-hero .jz-subcategory-label{
  animation-play-state:paused!important;
}
:root.jz-soft-navigation body .elementor[data-elementor-type="wp-page"][data-elementor-id].jz-label-entry-pending .jz-category-hero .jz-subcategory-label{
  opacity:0!important;
  transition:none!important;
  pointer-events:none!important;
}
:root.jz-soft-navigation body .elementor[data-elementor-type="wp-page"][data-elementor-id].jz-label-entry-running .jz-category-hero .jz-subcategory-label{
  transition:opacity .62s cubic-bezier(.22,.61,.36,1)!important;
}
@media(prefers-reduced-motion:reduce){
  :root.jz-soft-navigation body .elementor[data-elementor-type="wp-page"][data-elementor-id].jz-label-entry-running .jz-category-hero .jz-subcategory-label{
    transition:none!important;
  }
}
