.project-transition {
  position: fixed;
  inset: 0;
  z-index: 100000;
  background: var(--project-color, #080908);
  overflow: hidden;
  pointer-events: all;
  contain: layout paint;
}
.project-transition-bg {
  position: absolute;
  inset: 0;
}
.project-transition-grain {
  position: absolute;
  inset: 0;
  background: url('assets/axis-figma/grain.png') repeat;
  background-size: 128px 128px;
  opacity: 0.075;
  pointer-events: none;
}
.project-transition-logo {
  position: absolute;
  width: clamp(80px, 9vw, 120px);
  height: auto;
  max-height: 120px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  object-fit: contain;
}
.project-transition-art {
  position: absolute;
  left: 0;
  top: 0;
  width: 992px;
  height: 1240px;
  transform-origin: 0 0;
  will-change: transform, opacity;
  pointer-events: none;
}
.project-transition-boot,
.project-returning {
  overflow: hidden;
}
.project-returning #opening-intro {
  display: none !important;
}

.project-page-panel {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: #080908;
  z-index: 9000;
  visibility: hidden;
  pointer-events: none;
}
.project-page-panel.is-visible {
  visibility: visible;
  pointer-events: auto;
}
.project-view {
  overflow: hidden;
}
.project-view .bottom-dock {
  visibility: hidden;
  pointer-events: none;
}
.project-in-flight {
  overflow: hidden;
}
.project-transition-logo svg {
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
}

/* Content dissolves by the intermediate pose; only the card itself travels. */
html[data-page='home'] .hero,
html[data-page='home'] body > .bottom-dock {
  opacity: var(--project-content-opacity, 1);
}
