/* Cinematic portal door — slow-motion room entry */

.gate.is-concealed {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.gate.is-exiting-soft {
  transition:
    opacity 520ms var(--ease-silk),
    filter 520ms var(--ease-silk);
  opacity: 0;
  filter: blur(4px);
  pointer-events: none;
}

.portal-doors {
  position: fixed;
  inset: 0;
  z-index: 88;
  pointer-events: none;
  perspective: 1400px;
  overflow: hidden;
}

.portal-doors-backdrop {
  position: absolute;
  inset: 0;
  background: var(--cosmic-void);
  opacity: 1;
  transition: opacity 600ms var(--ease-silk);
}

.portal-doors-light {
  position: absolute;
  inset: 0;
  opacity: 0;
  background: radial-gradient(
    ellipse 42% 68% at 50% 50%,
    rgba(201, 191, 255, 0.55) 0%,
    rgba(123, 97, 255, 0.22) 28%,
    rgba(11, 11, 18, 0.4) 58%,
    rgba(11, 11, 18, 0.95) 100%
  );
  transform: scale(0.6);
  transition:
    opacity 1400ms var(--ease-silk),
    transform 2200ms var(--ease-silk);
}

.portal-doors--client .portal-doors-light {
  background: radial-gradient(
    ellipse 42% 68% at 50% 50%,
    rgba(255, 200, 200, 0.5) 0%,
    rgba(255, 146, 160, 0.2) 28%,
    rgba(11, 11, 18, 0.4) 58%,
    rgba(11, 11, 18, 0.95) 100%
  );
}

.portal-doors-seam {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 3px;
  transform: translateX(-50%);
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(201, 191, 255, 0.9) 35%,
    rgba(255, 255, 255, 0.95) 50%,
    rgba(255, 183, 183, 0.85) 65%,
    transparent 100%
  );
  box-shadow:
    0 0 30px rgba(201, 191, 255, 0.8),
    0 0 80px rgba(123, 97, 255, 0.5);
  opacity: 0;
  transition: opacity 400ms var(--ease-silk);
}

.portal-doors--client .portal-doors-seam {
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(255, 200, 200, 0.85) 35%,
    rgba(255, 255, 255, 0.95) 50%,
    rgba(255, 183, 183, 0.8) 65%,
    transparent 100%
  );
  box-shadow:
    0 0 30px rgba(255, 183, 183, 0.7),
    0 0 80px rgba(255, 146, 160, 0.45);
}

.portal-door {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 50.2%;
  background:
    linear-gradient(105deg, rgba(201, 191, 255, 0.06) 0%, transparent 42%),
    linear-gradient(180deg, #12121a 0%, var(--cosmic-void) 40%, #09090f 100%);
  border: 1px solid rgba(72, 69, 85, 0.35);
  box-shadow: inset 0 0 80px rgba(0, 0, 0, 0.65);
  will-change: transform;
  backface-visibility: hidden;
  transition: transform 2200ms cubic-bezier(0.16, 1, 0.3, 1);
}

.portal-door--left {
  left: 0;
  transform-origin: left center;
  border-right: 1px solid rgba(201, 191, 255, 0.12);
}

.portal-door--right {
  right: 0;
  transform-origin: right center;
  border-left: 1px solid rgba(201, 191, 255, 0.12);
}

.portal-doors.is-active .portal-door--left,
.portal-doors.is-active .portal-door--right {
  transform: rotateY(0deg);
}

.portal-doors.is-opening .portal-doors-seam {
  opacity: 1;
}

.portal-doors.is-opening .portal-doors-light {
  opacity: 1;
  transform: scale(1.08);
}

.portal-doors.is-opening .portal-door--left {
  transform: rotateY(-94deg) translateX(-2%);
}

.portal-doors.is-opening .portal-door--right {
  transform: rotateY(94deg) translateX(2%);
}

.portal-doors.is-open .portal-doors-backdrop {
  opacity: 0;
}

.portal-doors.is-open .portal-door--left {
  transform: rotateY(-102deg) translateX(-14%);
}

.portal-doors.is-open .portal-door--right {
  transform: rotateY(102deg) translateX(14%);
}

.portal-doors.is-fading {
  opacity: 0;
  transition: opacity 700ms var(--ease-silk);
}

/* Labyrinth behind doors — no flash */
.labyrinth.is-door-waiting {
  opacity: 0;
  visibility: hidden;
}

.labyrinth.is-door-entering {
  opacity: 1;
  visibility: visible;
  transition: opacity 900ms var(--ease-silk) 200ms;
}

.chamber.is-door-reveal {
  opacity: 1 !important;
}

.chamber.is-door-reveal .chamber-inner {
  opacity: 0;
  filter: brightness(0.25) blur(10px);
  transform: scale(0.92) translateY(24px);
  transition:
    opacity 1200ms var(--ease-silk),
    filter 1600ms var(--ease-silk),
    transform 1800ms var(--ease-silk);
}

.chamber.is-door-reveal.is-door-lit .chamber-inner {
  opacity: 1;
  filter: brightness(1) blur(0);
  transform: scale(1) translateY(0);
}

.tunnel-veil.is-door-phase {
  opacity: 0;
  transition: opacity 1200ms var(--ease-silk) 600ms;
}

body.is-labyrinth-active .tunnel-veil.is-door-phase.is-visible {
  opacity: 1;
}

body.is-portal-door-transition {
  overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .portal-doors,
  .portal-door,
  .portal-doors-light,
  .portal-doors-backdrop {
    transition: none;
  }

  .chamber.is-door-reveal .chamber-inner {
    opacity: 1;
    filter: none;
    transform: none;
    transition: none;
  }
}
