/* =========================================================
   transitions.css — page transition curtain + monogram flash.
   Paired with public/assets/js/modules/transitions.js.
   ========================================================= */

.page-transition {
  position: fixed;
  inset: 0;
  z-index: 9998;            /* below cursor (9999), above everything else */
  pointer-events: none;
  overflow: hidden;
}

.page-transition__panel {
  position: absolute;
  left: 0;
  right: 0;
  height: 51%;              /* 1% overlap to avoid hairline gap on subpixel rendering */
  background: var(--ink, #060517);
  /* Subtle inner shadow for depth as the panels close */
  box-shadow: inset 0 0 80px rgba(0, 0, 0, .55);
  transition: transform 380ms cubic-bezier(.76, 0, .24, 1);
  will-change: transform;
}

.page-transition__panel--top    { top: 0;    transform: translateY(-101%); }
.page-transition__panel--bottom { bottom: 0; transform: translateY( 101%); }

.page-transition.is-closed .page-transition__panel--top    { transform: translateY(0); }
.page-transition.is-closed .page-transition__panel--bottom { transform: translateY(0); }

/* ---- Center monogram ---- */
.page-transition__mark {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(.94);
  font-family: var(--font-display, 'Clash Display', 'General Sans', system-ui, sans-serif);
  font-weight: 700;
  font-style: italic;
  font-size: clamp(40px, 6vw, 84px);
  letter-spacing: .04em;
  color: var(--paper, #f0ede5);
  /* Soft glow */
  text-shadow:
    0 0 20px rgba(255, 165, 235, .25),
    0 0 60px rgba(108, 61, 255, .18);
  opacity: 0;
  transition:
    opacity 120ms ease,
    transform 280ms cubic-bezier(.16, 1, .3, 1);
  user-select: none;
  white-space: nowrap;
}

.page-transition.is-closed .page-transition__mark {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  /* Hold until just after panels meet so it doesn't flash too early */
  transition:
    opacity 90ms ease 220ms,
    transform 320ms cubic-bezier(.16, 1, .3, 1) 200ms;
}

/* While we're entering a new page (incoming), keep the body slightly
   delayed before settling so the curtain reveal feels purposeful. */
html.is-curtain-incoming body {
  /* nothing visual here yet — hook reserved for future cinematic intro */
}

/* ---- Reduced motion: hide the curtain entirely, no transition ---- */
@media (prefers-reduced-motion: reduce) {
  .page-transition,
  .page-transition * {
    transition: none !important;
    animation: none !important;
  }
  .page-transition.is-closed .page-transition__panel--top,
  .page-transition.is-closed .page-transition__panel--bottom {
    transform: translateY(-101%);
  }
  .page-transition.is-closed .page-transition__panel--bottom {
    transform: translateY(101%);
  }
}
