/* V119 unified transition: same visual language, lighter compositor load. */
html.site-transition-lock,
body.site-transition-lock { overscroll-behavior:none; }
body.site-transition-lock { touch-action:none; }

.site-logo-transition {
  position:fixed;
  inset:0;
  z-index:30000;
  overflow:hidden;
  isolation:isolate;
  contain:layout paint style;
  background:#000;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.site-logo-transition.is-active { opacity:1; visibility:visible; pointer-events:auto; }
.site-logo-transition.is-idle { opacity:0!important; visibility:hidden!important; pointer-events:none!important; }
.site-logo-transition-black { position:absolute; inset:0; z-index:1; background:#000; opacity:1; }
.site-logo-transition-name {
  position:absolute;
  left:50%;
  top:50%;
  z-index:2;
  width:clamp(280px,50vw,900px);
  opacity:0;
  transform:translate3d(-50%,-50%,0) scale(.12);
  transform-origin:center;
  will-change:transform,opacity;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.site-logo-transition-logo {
  display:block;
  width:100%;
  height:auto;
  filter:none;
  transform:translateZ(0);
  backface-visibility:hidden;
  user-select:none;
  -webkit-user-drag:none;
}

/* V127: use one unified logo size for both the first direct-entry intro
   and the between-page click transition. Logo.png contains transparent canvas,
   so the box is intentionally large. Timing and motion remain unchanged. */
#siteIntroTransition .site-logo-transition-name,
#siteClickTransition .site-logo-transition-name {
  width:clamp(280px,50vw,900px);
}

/* V125: the first direct-entry intro no longer uses a black full-screen
   backdrop. Keep the intro logo animation itself, but reveal it over the
   actual homepage so the first visit matches the lighter page-transition
   language. */
#siteIntroTransition { opacity:1; visibility:visible; pointer-events:auto; background:transparent; }
#siteIntroTransition .site-logo-transition-black { background:transparent; opacity:0!important; }
html.site-transition-inbound #siteIntroTransition,
#siteIntroTransition.is-idle { opacity:0; visibility:hidden; pointer-events:none; }

/* Click transition remains transparent, as before. We no longer animate this
   invisible full-screen black layer, which reduces GPU work considerably. */
#siteClickTransition { background:transparent; }
#siteClickTransition .site-logo-transition-black { background:transparent; opacity:0!important; }

@media (prefers-reduced-motion: reduce) {
  .site-logo-transition-name { will-change:auto; }
}

/* V121: no black hold between pages. The current page stays visible until navigation commits. */
#siteClickTransition.is-holding { background:transparent!important; }
#siteClickTransition.is-holding .site-logo-transition-black { background:transparent!important; opacity:0!important; }
