/* Joy's Box V19 — silk-wave entrance + staged interface reveal */
:root{--v19-ease:cubic-bezier(.22,1,.36,1);--v19-soft:cubic-bezier(.2,.72,.2,1)}

body.is-loading{overflow:hidden}

/* Keep the hero crop absolutely fixed from the first painted frame to the final frame. */
.js .hero-v11__media,
.js body.is-loading .hero-v11__media,
.js body.is-ready .hero-v11__media{
  clip-path:inset(0)!important;
  transition:none!important;
}
.hero-v11__media>img,
body.is-loading .hero-v11__media>img,
body.is-ready .hero-v11__media>img{
  object-fit:cover!important;
  object-position:center 48%!important;
  transform:none!important;
  will-change:opacity,filter;
  filter:blur(7px) saturate(.84) brightness(.70)!important;
  transition:opacity .34s ease,filter 1.15s var(--v19-soft)!important;
}
body.is-ready .hero-v11__media:not(.is-webgl-ready)>img{
  filter:blur(0) saturate(.92) brightness(.92)!important;
}

/* V15 used a scale animation on the canvas wrapper. That was the visible image resize. */
.hero-v15__webgl,
body.is-loading .hero-v15__webgl,
body.is-ready .hero-v15__webgl{
  opacity:0;
  transform:none!important;
  transition:opacity .28s ease!important;
  will-change:opacity;
}
.hero-v11__media.is-webgl-ready .hero-v15__webgl{opacity:1!important}
.hero-v11__media.is-webgl-ready>img{opacity:0!important}

/* No whole-header pop. The pieces arrive independently after the silk wave settles. */
body.is-loading .site-header.header-v14,
body.is-ready .site-header.header-v14{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  transition:color .28s ease,top .3s ease!important;
}
body.is-loading .site-header.header-v14{pointer-events:none!important}
body.is-ready .site-header.header-v14{pointer-events:auto}

.brand-logo-v14,
.header-v14__nav a,
.menu-toggle-v14{
  will-change:transform,opacity,filter;
}
body.is-loading .brand-logo-v14{
  opacity:0!important;
  transform:translateY(-11px) scale(.955)!important;
  filter:blur(7px)!important;
}
body.is-ready .brand-logo-v14{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  transition:opacity .64s ease .08s,transform .82s var(--v19-ease) .08s,filter .68s ease .08s!important;
}
body.is-loading .header-v14__nav a{
  opacity:0;
  transform:translateY(-10px);
  filter:blur(5px);
}
body.is-ready .header-v14__nav a{
  opacity:1;
  transform:none;
  filter:none;
  transition:opacity .58s ease,transform .78s var(--v19-ease),filter .58s ease,color .28s ease!important;
}
body.is-ready .header-v14__nav a:nth-child(1){transition-delay:.16s!important}
body.is-ready .header-v14__nav a:nth-child(2){transition-delay:.23s!important}
body.is-ready .header-v14__nav a:nth-child(3){transition-delay:.30s!important}
body.is-loading .menu-toggle-v14{
  opacity:0!important;
  transform:translateY(-9px) scale(.965)!important;
  filter:blur(5px)!important;
}
body.is-ready .menu-toggle-v14{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  transition:opacity .6s ease .34s,transform .82s var(--v19-ease) .34s,filter .62s ease .34s,color .28s ease,border-color .28s ease,background .28s ease!important;
}

/* Hero metadata enters as quiet editorial details. */
.hero-v11__topline{overflow:hidden}
body.is-loading .hero-v11__topline,
body.is-ready .hero-v11__topline{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  transition:none!important;
}
.hero-v11__topline span{display:block;will-change:transform,opacity,filter}
body.is-loading .hero-v11__topline span{
  opacity:0;
  transform:translateY(12px);
  filter:blur(5px);
}
body.is-ready .hero-v11__topline span{
  opacity:1;
  transform:none;
  filter:none;
  transition:opacity .62s ease .20s,transform .82s var(--v19-ease) .20s,filter .62s ease .20s;
}
body.is-ready .hero-v11__topline span:last-child{transition-delay:.27s}

body.is-loading .hero-v11__copy,
body.is-ready .hero-v11__copy{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
body.is-loading .hero-v11__eyebrow{
  opacity:0!important;
  transform:translateY(12px)!important;
  filter:blur(5px)!important;
  letter-spacing:.235em;
}
body.is-ready .hero-v11__eyebrow{
  opacity:1!important;
  transform:none!important;
  filter:none!important;
  letter-spacing:.18em;
  transition:opacity .62s ease .29s,transform .86s var(--v19-ease) .29s,filter .64s ease .29s,letter-spacing 1.05s var(--v19-ease) .29s!important;
}

/* Masked title reveal: no sudden blur-to-text pop, no violent overshoot. */
.hero-v11__line{overflow:hidden}
.js body.is-loading .hero-v11__line b,
.js body.is-loading .hero-v11__line i{
  transform:translateY(108%) rotate(.18deg)!important;
  opacity:0!important;
  filter:blur(3px)!important;
}
.js body.is-ready .hero-v11__line b,
.js body.is-ready .hero-v11__line i{
  transform:translateY(0) rotate(0)!important;
  opacity:1!important;
  filter:blur(0)!important;
  transition:transform 1.02s var(--v19-ease) .38s,opacity .62s ease .38s,filter .78s ease .38s!important;
}
.js body.is-ready .hero-v11__line:nth-child(2) b,
.js body.is-ready .hero-v11__line:nth-child(2) i{
  transition-delay:.51s!important;
}

/* Frame is a final quiet detail rather than another simultaneous pop. */
body.is-loading .hero-v11__frame{opacity:0!important}
body.is-ready .hero-v11__frame{opacity:1!important;transition:opacity .9s ease .58s,border-color .3s ease!important}

/* Gentle ambient highlight while the reveal travels — intentionally restrained. */
.hero-v11::after{
  content:"";
  position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(circle at 53% 48%,rgba(216,184,95,.075),transparent 24%);
  opacity:0;
}
body.is-loading .hero-v11.is-entrance-live::after{animation:v19Ambient 2.15s var(--v19-soft) both}
@keyframes v19Ambient{0%{opacity:0}34%{opacity:.44}72%{opacity:.12}100%{opacity:0}}

@media(max-width:720px){
  body.is-ready .menu-toggle-v14{transition-delay:.22s!important}
  .js body.is-ready .hero-v11__line b,.js body.is-ready .hero-v11__line i{transition-delay:.30s!important}
  .js body.is-ready .hero-v11__line:nth-child(2) b,.js body.is-ready .hero-v11__line:nth-child(2) i{transition-delay:.42s!important}
}

@media(prefers-reduced-motion:reduce){
  .brand-logo-v14,.header-v14__nav a,.menu-toggle-v14,.hero-v11__topline span,.hero-v11__eyebrow,.hero-v11__line b,.hero-v11__line i,.hero-v11__frame{transition:none!important;transform:none!important;filter:none!important;opacity:1!important}
  .hero-v11::after{display:none!important}
}
