/* Cinematic intro animation — book opens, pages flip, plane flies, reveal */

.intro-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: radial-gradient(ellipse at center, #1B3055 0%, #0A1830 70%, #050B1A 100%);
  display: grid;
  place-items: center;
  overflow: hidden;
  perspective: 2200px;
  perspective-origin: 50% 50%;
}

.intro-overlay.fade-out {
  animation: introFade 0.9s ease forwards;
}
@keyframes introFade {
  to { opacity: 0; visibility: hidden; pointer-events: none; }
}

/* Skip button */
.intro-skip {
  position: absolute;
  top: 24px;
  right: 24px;
  background: transparent;
  color: rgba(247, 243, 234, 0.5);
  border: 1px solid rgba(247, 243, 234, 0.2);
  padding: 8px 16px;
  border-radius: 4px;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  cursor: pointer;
  font-family: 'Inter', sans-serif;
  transition: all .2s ease;
  z-index: 5;
}
.intro-skip:hover {
  color: #C9A84C;
  border-color: #C9A84C;
}

/* Stars/particles */
.intro-stars {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.intro-stars span {
  position: absolute;
  width: 2px;
  height: 2px;
  background: #C9A84C;
  border-radius: 50%;
  opacity: 0;
  animation: twinkle 3s ease-in-out infinite;
}
@keyframes twinkle {
  0%, 100% { opacity: 0; transform: scale(0.5); }
  50% { opacity: 0.8; transform: scale(1); }
}

/* Stage container — controls overall scene transforms */
.intro-stage {
  position: relative;
  width: 720px;
  height: 480px;
  transform-style: preserve-3d;
  animation: stageZoom 10s cubic-bezier(0.7, 0, 0.3, 1) forwards;
}
@keyframes stageZoom {
  0%, 65% { transform: translateZ(0) scale(1); }
  78% { transform: translateZ(400px) scale(2.2); }
  88% { transform: translateZ(1500px) scale(8); opacity: 0; }
  100% { opacity: 0; }
}

/* ============ BOOK ============ */
.book {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 720px;
  height: 480px;
  transform-style: preserve-3d;
  transform: rotateX(28deg) rotateY(0deg) translateY(40px) scale(0);
  animation:
    bookEnter 1.4s cubic-bezier(0.16, 1, 0.3, 1) 0.3s forwards,
    bookFlatten 1.2s cubic-bezier(0.7, 0, 0.3, 1) 2.5s forwards;
}
@keyframes bookEnter {
  0% { transform: rotateX(28deg) rotateY(180deg) translateY(120px) translateZ(-300px) scale(0.2); opacity: 0; }
  60% { opacity: 1; }
  100% { transform: rotateX(28deg) rotateY(0deg) translateY(40px) translateZ(0) scale(1); opacity: 1; }
}
@keyframes bookFlatten {
  to { transform: rotateX(55deg) rotateY(0deg) translateY(20px) translateZ(0) scale(1); }
}

/* Closed book cover (initial state) */
.book-cover {
  position: absolute;
  width: 50%;
  height: 100%;
  left: 50%;
  top: 0;
  background:
    linear-gradient(135deg, #0D1F3C 0%, #1B3055 50%, #081428 100%);
  border: 2px solid #C9A84C;
  transform-origin: left center;
  transform-style: preserve-3d;
  backface-visibility: hidden;
  box-shadow:
    inset 0 0 60px rgba(0, 0, 0, 0.6),
    inset -10px 0 30px rgba(0, 0, 0, 0.5),
    inset 10px 0 20px rgba(201, 168, 76, 0.08),
    0 30px 70px rgba(0, 0, 0, 0.7),
    0 60px 100px -20px rgba(0, 0, 0, 0.5);
  animation: coverOpen 1.4s cubic-bezier(0.65, 0, 0.35, 1) 1.8s forwards;
  z-index: 10;
}

/* Leather/embossed texture overlay */
.book-cover::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(45deg, transparent 0 3px, rgba(0,0,0,0.05) 3px 4px),
    radial-gradient(ellipse at 30% 30%, rgba(201,168,76,0.06), transparent 60%);
  pointer-events: none;
}
.book-cover::after {
  content: '';
  position: absolute;
  top: 8px; bottom: 8px; left: 8px; right: 8px;
  border: 1px solid rgba(201, 168, 76, 0.35);
  pointer-events: none;
}

/* Book spine — visual depth on left edge */
.book-spine {
  position: absolute;
  left: calc(50% - 12px);
  top: 0;
  bottom: 0;
  width: 24px;
  background: linear-gradient(to right, #050B1A 0%, #0D1F3C 50%, #1B3055 100%);
  border-top: 1.5px solid #C9A84C;
  border-bottom: 1.5px solid #C9A84C;
  z-index: 11;
  box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.7);
  transform: translateZ(-2px);
}
.book-spine::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 20%;
  bottom: 20%;
  width: 1px;
  background: rgba(201, 168, 76, 0.4);
  transform: translateX(-50%);
}

/* Page edges — visible thickness on the right side */
.book-edge {
  position: absolute;
  right: -2px;
  top: 4px;
  bottom: 4px;
  width: 8px;
  background: repeating-linear-gradient(
    to bottom,
    #FBF8F1 0px, #FBF8F1 1px,
    #E8DFC9 1px, #E8DFC9 2px
  );
  box-shadow:
    inset -2px 0 4px rgba(0, 0, 0, 0.15),
    inset 1px 0 2px rgba(255, 255, 255, 0.6);
  z-index: 4;
}

/* Bottom shadow under the book */
.book-shadow {
  position: absolute;
  left: 5%;
  right: 5%;
  bottom: -30px;
  height: 40px;
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.6) 0%, transparent 70%);
  filter: blur(10px);
  z-index: 0;
  animation: shadowFade 1.4s ease 0.3s forwards;
  opacity: 0;
}
@keyframes shadowFade { to { opacity: 1; } }
@keyframes coverOpen {
  0% { transform: rotateY(0deg); }
  100% { transform: rotateY(-170deg); }
}

.book-cover-content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 40px;
  text-align: center;
  backface-visibility: hidden;
}
.book-cover-content .cover-frame {
  border: 1px solid rgba(201, 168, 76, 0.5);
  padding: 30px 24px;
  position: relative;
}
.book-cover-content .cover-frame::before,
.book-cover-content .cover-frame::after {
  content: '';
  position: absolute;
  width: 18px; height: 18px;
  border: 1.5px solid #C9A84C;
}
.book-cover-content .cover-frame::before { top: -1.5px; left: -1.5px; border-right: none; border-bottom: none; }
.book-cover-content .cover-frame::after { bottom: -1.5px; right: -1.5px; border-left: none; border-top: none; }

.book-cover-content .crest {
  font-family: Georgia, serif;
  color: #C9A84C;
  font-size: 36px;
  font-style: italic;
  margin-bottom: 14px;
  letter-spacing: 0.04em;
}
.book-cover-content .cover-title {
  font-family: Georgia, serif;
  color: #F7F3EA;
  font-size: 18px;
  letter-spacing: 0.04em;
  line-height: 1.3;
  font-weight: 400;
}
.book-cover-content .cover-sub {
  font-size: 9px;
  letter-spacing: 0.3em;
  color: rgba(201, 168, 76, 0.8);
  margin-top: 14px;
  text-transform: uppercase;
  font-weight: 600;
  font-family: 'Inter', sans-serif;
}

/* Book spine glow effect */
.book::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 4px;
  background: linear-gradient(to bottom, transparent, #C9A84C, transparent);
  transform: translateX(-50%);
  opacity: 0;
  animation: spineGlow 0.6s ease 1.6s forwards;
}
@keyframes spineGlow { to { opacity: 0.6; } }

/* Pages */
.book-page {
  position: absolute;
  width: 50%;
  height: 100%;
  top: 0;
  background:
    linear-gradient(180deg, #FBF8F1 0%, #EFE8D6 100%);
  box-shadow:
    inset 0 0 40px rgba(13, 31, 60, 0.12),
    inset 0 -8px 12px rgba(13, 31, 60, 0.08);
  border: 1px solid rgba(13, 31, 60, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px;
  text-align: center;
  font-family: Georgia, serif;
  color: #0D1F3C;
}
/* page paper texture */
.book-page::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(0deg, transparent 0 2px, rgba(13,31,60,0.015) 2px 3px),
    radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(13,31,60,0.06) 100%);
  pointer-events: none;
}

.book-page.left {
  left: 0;
  border-right: 1px solid rgba(13, 31, 60, 0.15);
}
.book-page.right {
  left: 50%;
  border-left: 1px solid rgba(13, 31, 60, 0.15);
  transform-origin: left center;
  backface-visibility: hidden;
}

/* Flipping pages stack — each animates in turn */
.flip-page {
  position: absolute;
  width: 50%;
  height: 100%;
  left: 50%;
  top: 0;
  transform-origin: left center;
  transform-style: preserve-3d;
  background: linear-gradient(180deg, #FBF8F1 0%, #EFE8D6 100%);
  border: 1px solid rgba(13, 31, 60, 0.1);
  box-shadow: inset 0 0 30px rgba(13, 31, 60, 0.08);
  z-index: 5;
}
.flip-page .face {
  position: absolute;
  inset: 0;
  backface-visibility: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.flip-page .face.back {
  transform: rotateY(180deg);
  background: linear-gradient(180deg, #FBF8F1 0%, #EFE8D6 100%);
}

/* Each flip page animates with a delay */
.flip-page-1 { animation: flipPage 0.9s cubic-bezier(0.65, 0, 0.35, 1) 3.4s forwards; z-index: 8; }
.flip-page-2 { animation: flipPage 0.9s cubic-bezier(0.65, 0, 0.35, 1) 4.0s forwards; z-index: 7; }
.flip-page-3 { animation: flipPage 0.9s cubic-bezier(0.65, 0, 0.35, 1) 4.6s forwards; z-index: 6; }

@keyframes flipPage {
  0% { transform: rotateY(0deg); }
  100% { transform: rotateY(-175deg); }
}

/* Page illustrations */
.page-illust {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.page-illust .icon {
  width: 80px; height: 80px;
  color: #0D1F3C;
}
.page-illust .label {
  font-family: Georgia, serif;
  font-size: 16px;
  font-style: italic;
  color: #0D1F3C;
}
.page-illust .sub {
  font-size: 9px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(13, 31, 60, 0.55);
  font-weight: 600;
  font-family: 'Inter', sans-serif;
}

/* Pop-out 3D elements */
.popout {
  position: absolute;
  z-index: 30;
  opacity: 0;
  transform-style: preserve-3d;
}

.popout-globe {
  top: 5%;
  left: 12%;
  width: 90px; height: 90px;
  animation: popoutGlobe 4s cubic-bezier(0.16, 1, 0.3, 1) 3.6s forwards;
}
@keyframes popoutGlobe {
  0% { opacity: 0; transform: translateZ(0) translateY(0) scale(0); }
  30% { opacity: 1; transform: translateZ(180px) translateY(-30px) scale(1); }
  70% { opacity: 1; transform: translateZ(180px) translateY(-30px) scale(1) rotate(360deg); }
  100% { opacity: 0; transform: translateZ(220px) translateY(-50px) scale(1.1) rotate(360deg); }
}

.popout-cap {
  top: 8%;
  right: 10%;
  width: 100px; height: 100px;
  animation: popoutCap 4s cubic-bezier(0.16, 1, 0.3, 1) 4.2s forwards;
}
@keyframes popoutCap {
  0% { opacity: 0; transform: translateZ(0) translateY(0) scale(0) rotate(-20deg); }
  30% { opacity: 1; transform: translateZ(160px) translateY(-20px) scale(1) rotate(0deg); }
  70% { opacity: 1; transform: translateZ(160px) translateY(-20px) scale(1) rotate(10deg); }
  100% { opacity: 0; transform: translateZ(200px) translateY(-40px) scale(1.1) rotate(15deg); }
}

.popout-book {
  bottom: 18%;
  left: 8%;
  width: 70px; height: 90px;
  animation: popoutBook 4s cubic-bezier(0.16, 1, 0.3, 1) 4.6s forwards;
}
@keyframes popoutBook {
  0% { opacity: 0; transform: translateZ(0) scale(0); }
  30% { opacity: 1; transform: translateZ(140px) translateY(-25px) scale(1) rotate(-10deg); }
  70% { opacity: 1; transform: translateZ(140px) translateY(-25px) scale(1) rotate(-10deg); }
  100% { opacity: 0; transform: translateZ(180px) translateY(-40px) scale(1.1); }
}

.popout-diploma {
  bottom: 12%;
  right: 12%;
  width: 90px; height: 70px;
  animation: popoutDip 4s cubic-bezier(0.16, 1, 0.3, 1) 4.8s forwards;
}
@keyframes popoutDip {
  0% { opacity: 0; transform: translateZ(0) scale(0); }
  30% { opacity: 1; transform: translateZ(150px) translateY(-15px) scale(1) rotate(8deg); }
  70% { opacity: 1; transform: translateZ(150px) translateY(-15px) scale(1) rotate(8deg); }
  100% { opacity: 0; transform: translateZ(190px) translateY(-30px) scale(1.1); }
}

/* Floating sparkles around popouts */
.popout-sparkle {
  position: absolute;
  width: 4px; height: 4px;
  background: #C9A84C;
  border-radius: 50%;
  z-index: 25;
  opacity: 0;
  animation: sparkleFly 3s ease-out infinite;
}
@keyframes sparkleFly {
  0% { opacity: 0; transform: translate(0, 0) scale(0); }
  20% { opacity: 1; transform: translate(20px, -30px) scale(1); }
  100% { opacity: 0; transform: translate(50px, -100px) scale(0); }
}

/* ============ PAPER PLANE ============ */
.plane {
  position: absolute;
  z-index: 50;
  width: 60px;
  height: 60px;
  top: 30%;
  left: -10%;
  opacity: 0;
  animation: planeFly 3.5s cubic-bezier(0.45, 0, 0.55, 1) 5.5s forwards;
}

@keyframes planeFly {
  0% {
    opacity: 0;
    left: -10%;
    top: 30%;
    transform: rotate(20deg) scale(0.5);
  }
  10% {
    opacity: 1;
    transform: rotate(20deg) scale(1);
  }
  40% {
    left: 40%;
    top: 25%;
    transform: rotate(-10deg) scale(1.1);
  }
  70% {
    left: 50%;
    top: 50%;
    transform: rotate(0deg) scale(1.4);
    opacity: 1;
  }
  100% {
    left: 50%;
    top: 50%;
    transform: rotate(0deg) scale(8);
    opacity: 0;
  }
}

/* Plane trail */
.plane-trail {
  position: absolute;
  width: 0;
  height: 1.5px;
  background: linear-gradient(to right, transparent, rgba(201, 168, 76, 0.8), transparent);
  top: 50%;
  left: 0;
  transform: translateY(-50%);
  animation: trailGrow 2s ease 5.6s forwards;
}
@keyframes trailGrow {
  0% { width: 0; opacity: 0; }
  50% { width: 200px; opacity: 1; }
  100% { width: 400px; opacity: 0; }
}

/* ============ TITLE FLASH at end ============ */
.intro-title-flash {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  z-index: 60;
  opacity: 0;
  animation: titleFlash 3s ease 7s forwards;
  pointer-events: none;
}
@keyframes titleFlash {
  0% { opacity: 0; transform: scale(0.95); }
  15% { opacity: 1; transform: scale(1); }
  85% { opacity: 1; transform: scale(1.02); }
  100% { opacity: 0; transform: scale(1.1); }
}

.intro-title-flash .lockup {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  text-align: center;
}
.intro-title-flash img {
  width: 110px;
  height: 110px;
  filter: drop-shadow(0 0 30px rgba(201, 168, 76, 0.4));
}
.intro-title-flash .ttext {
  font-family: Georgia, serif;
  color: #F7F3EA;
  font-size: 36px;
  letter-spacing: -0.01em;
  font-weight: 400;
}
.intro-title-flash .ttext em {
  font-style: italic;
  color: #C9A84C;
}
.intro-title-flash .ttag {
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: rgba(247, 243, 234, 0.6);
  font-weight: 600;
  font-family: 'Inter', sans-serif;
}

/* Logo in nav */
.nav-logo .logo-img {
  width: 56px;
  height: 56px;
  object-fit: contain;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3)) brightness(1.15);
  background: rgba(247, 243, 234, 0.06);
  border-radius: 6px;
  padding: 4px;
}

@media (max-width: 800px) {
  .intro-stage {
    width: 90vw;
    height: 60vw;
  }
}
