/* ═══════════════════════════════════════════════
   css/animations.css
═══════════════════════════════════════════════ */
@keyframes fadeIn      { from { opacity:0; transform:translateY(6px)  } to { opacity:1; transform:translateY(0) } }
@keyframes fadeUp      { from { opacity:0; transform:translateY(20px) } to { opacity:1; transform:translateY(0) } }
@keyframes pulse       { 0%,100%{ opacity:.7 } 50%{ opacity:1 } }
@keyframes spin        { to { transform: rotate(360deg) } }
@keyframes spinSlow    { to { transform: rotate(360deg) } }
@keyframes shimmer     { 0%{ background-position:200% center } 100%{ background-position:-200% center } }
@keyframes float       { 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-10px) } }
@keyframes glowPulse   { 0%,100%{ box-shadow:0 0 10px rgba(201,168,76,.2) } 50%{ box-shadow:0 0 25px rgba(201,168,76,.5) } }
@keyframes maraShimmer { 0%,100%{ filter:hue-rotate(0deg) brightness(1) } 50%{ filter:hue-rotate(30deg) brightness(1.2) } }
@keyframes combatEntry { from{ opacity:0; transform:scale(.9) } to{ opacity:1; transform:scale(1) } }
@keyframes screenShake {
  0%,100%{ transform:translate(0) }
  20%    { transform:translate(-3px, 2px) }
  40%    { transform:translate(3px,-2px) }
  60%    { transform:translate(-2px, 3px) }
  80%    { transform:translate(2px,-3px) }
}
@keyframes notifDrop {
  0%  { opacity:0; transform:translateY(-10px) scale(.95) }
  15% { opacity:1; transform:translateY(0) scale(1) }
  80% { opacity:1 }
  100%{ opacity:0; transform:translateY(-5px) }
}
@keyframes achievementPop {
  0%  { opacity:0; transform:translateX(-50%) translateY(20px) scale(.9) }
  15% { opacity:1; transform:translateX(-50%) translateY(0) scale(1) }
  80% { opacity:1 }
  100%{ opacity:0; transform:translateX(-50%) translateY(10px) }
}

/* ── Typewriter cursor ── */
@keyframes blink { 0%,100%{ opacity:1 } 50%{ opacity:0 } }

/* ── Scene text transition ── */
.scene-text-transition {
  animation: fadeIn .45s ease both;
}

.story-typewriter::after {
  content: '▍';
  display: inline;
  animation: blink .8s step-end infinite;
  opacity: .5;
  color: var(--gold-dim);
}

/* ── Combat HP bar hit flash ── */
.log-hit   { animation: logFlash 1s ease; }
.log-crit  { animation: logFlashCrit .8s ease; }
.log-dharma{ animation: logFlashDharma .8s ease; }

@keyframes logFlashCrit {
  0%   { background:rgba(139,26,26,.3) }
  100% { background:transparent }
}
@keyframes logFlashDharma {
  0%   { background:rgba(46,125,110,.25) }
  100% { background:transparent }
}
@keyframes logFlash {
  0%   { background:rgba(74,55,40,.2) }
  100% { background:transparent }
}

/* ── Combat entry bounce ── */
.combat-scene { animation: combatEntry .4s ease both; }
.enemy-glyph  { display: inline-block; animation: float 3s ease-in-out infinite; }

/* ── Choice hover glow feedback ── */
.choice-item {
  transition: all .2s ease;
}
.choice-item:hover {
  background: rgba(201,168,76,.08);
  border-color: var(--gold-dim);
  transform: translateX(4px);
}
.ci-dharma:hover {
  border-color: var(--dharma-mid);
  background: rgba(46,125,110,.08);
}
.ci-blood:hover {
  border-color: var(--blood-mid);
  background: rgba(139,26,26,.08);
}
.ci-intel:hover {
  border-color: var(--ash-light);
  background: rgba(122,98,72,.08);
}
