/* =========================================================
   Parchment & Quill — Animation Library
   All animations respect prefers-reduced-motion (see style.css)
   ========================================================= */

@keyframes unfurl-fade{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}

@keyframes scroll-unfurl{
  from{ opacity:0; transform:scaleY(0); }
  to{ opacity:1; transform:scaleY(1); }
}

@keyframes torch-flicker{
  0%,100%{ text-shadow:0 0 6px rgba(169,120,31,.6); }
  45%{ text-shadow:0 0 14px rgba(201,152,47,.9), 0 0 2px rgba(122,31,31,.6); }
  55%{ text-shadow:0 0 4px rgba(169,120,31,.4); }
}

@keyframes ember-rise{
  0%{ transform:translateY(0) translateX(0) scale(1); opacity:0; }
  10%{ opacity:.9; }
  100%{ transform:translateY(-120vh) translateX(var(--drift,20px)) scale(.4); opacity:0; }
}
.ember{
  position:fixed; bottom:-10px; z-index:2; pointer-events:none;
  width:6px; height:6px; border-radius:50%;
  background:radial-gradient(circle, #ffd98a, var(--wax-red) 70%);
  box-shadow:0 0 8px 2px rgba(201,152,47,.7);
  animation:ember-rise linear forwards;
}

@keyframes page-turn-in{
  from{ opacity:0; transform:perspective(1200px) rotateY(-6deg) translateX(24px); }
  to{ opacity:1; transform:perspective(1200px) rotateY(0) translateX(0); }
}
.page-turn{ animation:page-turn-in .7s cubic-bezier(.22,.61,.36,1) both; }

@keyframes seal-stamp{
  0%{ transform:scale(2.2); opacity:0; }
  60%{ transform:scale(.9); opacity:1; }
  80%{ transform:scale(1.05); }
  100%{ transform:scale(1); }
}
.seal-stamp-in{ animation:seal-stamp .5s cubic-bezier(.34,1.56,.64,1) both; }

@keyframes shimmer-sweep{
  0%{ background-position:-200% 0; }
  100%{ background-position:200% 0; }
}
.shimmer{
  background:linear-gradient(100deg, transparent 30%, rgba(255,255,255,.55) 50%, transparent 70%);
  background-size:200% 100%;
  animation:shimmer-sweep 3.5s ease-in-out infinite;
}

@keyframes float-slow{
  0%,100%{ transform:translateY(0) rotate(0deg); }
  50%{ transform:translateY(-10px) rotate(1.5deg); }
}
.float-slow{ animation:float-slow 6s ease-in-out infinite; }

@keyframes candle-glow{
  0%,100%{ opacity:.7; filter:blur(6px); }
  50%{ opacity:1; filter:blur(9px); }
}
.candle-glow{ animation:candle-glow 2.4s ease-in-out infinite; }

/* Quiz transitions */
.quiz-question{ transition:opacity .45s ease, transform .45s ease; }
.quiz-question.is-leaving{ opacity:0; transform:translateX(-30px); }
.quiz-question.is-entering{ opacity:0; transform:translateX(30px); }
.quiz-question.is-active{ opacity:1; transform:translateX(0); }

@keyframes progress-fill{
  from{ transform:scaleX(var(--prev,0)); }
  to{ transform:scaleX(var(--next,0)); }
}

@keyframes bounce-in{
  0%{ transform:scale(.85); opacity:0; }
  100%{ transform:scale(1); opacity:1; }
}
.bounce-in{ animation:bounce-in .5s cubic-bezier(.34,1.56,.64,1) both; }
