.chapter-briefing[data-theme="oracle"] {
  --chapter-overlay: linear-gradient(180deg, rgba(224, 255, 255, 0.02) 0 46%, rgba(22, 52, 75, 0.9) 100%);
  --chapter-position: 50% 50%;
}

.chapter-briefing[data-theme="eclipse"] {
  --chapter-overlay: linear-gradient(180deg, rgba(37, 8, 61, 0.04) 0 43%, rgba(15, 5, 31, 0.94) 100%);
  --chapter-position: 50% 50%;
}

.battle-view[data-theme="oracle"] {
  --battle-accent: #71e7e0;
  --battle-accent-soft: rgba(113, 231, 224, 0.32);
}

.battle-view[data-theme="eclipse"] {
  --battle-accent: #d15af4;
  --battle-accent-soft: rgba(209, 90, 244, 0.34);
}

.battle-view[data-theme="oracle"] .battlefield::after,
.battle-view[data-theme="eclipse"] .battlefield::after {
  position: absolute;
  z-index: 0;
  inset: 0;
  pointer-events: none;
  content: "";
}

.battle-view[data-theme="oracle"] .battlefield::after {
  background:
    radial-gradient(circle at 74% 34%, rgba(255, 248, 180, 0.2), transparent 21%),
    repeating-linear-gradient(118deg, transparent 0 42px, rgba(100, 235, 230, 0.08) 43px 44px, transparent 45px 86px);
  animation: oracle-grid-drift 5s linear infinite;
}

.battle-view[data-theme="eclipse"] .battlefield::after {
  background:
    radial-gradient(circle at 78% 26%, rgba(11, 2, 22, 0.72) 0 7%, rgba(221, 64, 245, 0.24) 8%, transparent 17%),
    radial-gradient(ellipse at 74% 65%, rgba(213, 69, 246, 0.16), transparent 42%);
  animation: eclipse-pulse 2.4s ease-in-out infinite;
}

.battle-view[data-theme="oracle"] .battle-line {
  border-color: rgba(104, 229, 222, 0.5);
  box-shadow: inset 0 0 26px rgba(82, 218, 212, 0.14);
}

.battle-view[data-theme="eclipse"] .battle-line {
  border-color: rgba(213, 86, 243, 0.48);
  box-shadow: inset 0 0 30px rgba(124, 31, 169, 0.2);
}

.enemy-oracle.has-enemy-art {
  width: 142px;
  height: 148px;
}

.enemy-oracle .enemy-art-motion {
  width: 140%;
  height: 140%;
  top: 48%;
}

.enemy-oracle .enemy-art {
  filter: drop-shadow(0 12px 8px rgba(21, 58, 72, 0.52)) drop-shadow(0 0 13px rgba(105, 230, 224, 0.8));
}

.enemy-formation:not(.is-entering):not(.is-defeated) .enemy-oracle:not(.is-acting):not(.is-hit) .enemy-art-motion {
  animation: oracle-orbit 1.7s ease-in-out infinite;
  animation-delay: var(--slot-delay);
}

.enemy-oracle.is-acting .enemy-art-motion {
  animation: oracle-cast 0.48s cubic-bezier(0.16, 0.78, 0.22, 1);
}

.enemy-formation.is-phase-two .enemy-oracle .enemy-art {
  filter: brightness(1.28) saturate(1.42) drop-shadow(0 0 18px white) drop-shadow(0 0 34px #55e3df);
}

.enemy-nox.has-enemy-art.is-boss {
  width: 202px;
  height: 190px;
  right: -2% !important;
  bottom: 4% !important;
}

.enemy-nox .enemy-art-motion {
  width: 148%;
  height: 148%;
  top: 47%;
}

.enemy-nox .enemy-art {
  filter: drop-shadow(0 15px 10px rgba(19, 4, 34, 0.72)) drop-shadow(0 0 16px rgba(218, 61, 240, 0.72));
}

.enemy-formation:not(.is-entering):not(.is-defeated) .enemy-nox:not(.is-acting):not(.is-hit) .enemy-art-motion {
  animation: nox-hover 1.5s ease-in-out infinite;
}

.enemy-nox.is-acting .enemy-art-motion {
  animation: nox-salvo 0.52s cubic-bezier(0.14, 0.76, 0.2, 1);
}

.enemy-formation.is-phase-two .enemy-nox .enemy-art {
  filter: brightness(1.34) saturate(1.62) drop-shadow(0 0 18px #fff) drop-shadow(0 0 38px #e02fff);
}

.enemy-formation.is-phase-two .enemy-nox .actor-art-motion::after {
  position: absolute;
  width: 58%;
  aspect-ratio: 1;
  top: 48%;
  left: 50%;
  border: 3px solid rgba(246, 164, 255, 0.88);
  border-radius: 50%;
  content: "";
  box-shadow: 0 0 20px #d936ef, inset 0 0 24px rgba(120, 16, 164, 0.66);
  transform: translate(-50%, -50%);
  animation: nox-crown-ring 0.85s linear infinite;
}

.enemy-muzzle.is-oracle {
  width: 84px;
  height: 84px;
  top: calc(22% + var(--source-offset));
  right: 23%;
  border: 2px dotted #fffbd1;
  background: conic-gradient(from 0deg, transparent 0 8%, #6ce4df 9% 16%, transparent 17% 31%, white 32% 39%, transparent 40% 57%, #f4d66f 58% 65%, transparent 66%);
  filter: drop-shadow(0 0 16px #5be1dc);
  animation: oracle-muzzle 0.3s ease-out forwards;
}

.enemy-muzzle.is-nox {
  width: 96px;
  height: 28px;
  top: calc(25% + var(--source-offset));
  right: 19%;
  border-radius: 50%;
  background: radial-gradient(ellipse, white 0 5%, #f25fff 7% 18%, #4d075f 20% 39%, transparent 65%);
  filter: drop-shadow(0 0 18px #e344f1);
  animation: nox-muzzle 0.32s ease-out forwards;
}

.hero-field-skill.is-noa::before,
.hero-field-skill.is-noa::after {
  position: absolute;
  width: 132px;
  aspect-ratio: 1;
  top: 25%;
  right: 4%;
  border: 4px dotted #fffbd4;
  border-radius: 50%;
  content: "";
  background: conic-gradient(from 0deg, transparent 0 6%, #66eee6 7% 13%, transparent 14% 25%, #ffe680 26% 32%, transparent 33% 48%, #7ee8ff 49% 57%, transparent 58%);
  box-shadow: 0 0 22px #56ded8, inset 0 0 28px rgba(255, 230, 109, 0.54);
  animation: noa-rondo 0.84s cubic-bezier(0.2, 0.76, 0.24, 1) forwards;
}

.hero-field-skill.is-noa::after {
  width: 80px;
  top: 50%;
  right: 33%;
  animation-delay: 0.12s;
}

.impact-burst.is-noa {
  filter: hue-rotate(125deg) saturate(1.35) drop-shadow(0 0 18px #5de5dd);
}

.restart-game-hint {
  margin: 14px 0 5px;
  color: #72808c;
  font-size: 11px;
  line-height: 1.45;
  text-align: center;
}

@keyframes oracle-grid-drift {
  from { background-position: 0 0, 0 0; }
  to { background-position: 0 0, 86px 0; }
}

@keyframes eclipse-pulse {
  0%, 100% { opacity: 0.62; filter: saturate(1); }
  50% { opacity: 1; filter: saturate(1.35); }
}

@keyframes oracle-orbit {
  0%, 100% { transform: translate(-50%, -50%) rotate(-1deg); }
  50% { transform: translate(-50%, -55%) rotate(1.5deg); filter: brightness(1.1) drop-shadow(0 0 12px #64e7df); }
}

@keyframes oracle-cast {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  24% { transform: translate(-42%, -54%) scale(0.96); }
  48% { transform: translate(-57%, -48%) scale(1.08); filter: brightness(1.55) drop-shadow(0 0 20px #69eee5); }
}

@keyframes nox-hover {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50% { transform: translate(-50%, -54%) scale(1.035); filter: brightness(1.09) drop-shadow(0 0 16px #d745ed); }
}

@keyframes nox-salvo {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  22% { transform: translate(-39%, -52%) scaleX(0.92); }
  46% { transform: translate(-59%, -48%) scale(1.09); filter: brightness(1.7) drop-shadow(0 0 25px #eb4fff); }
}

@keyframes nox-crown-ring {
  from { opacity: 0.48; transform: translate(-50%, -50%) rotate(0) scale(0.76); }
  to { opacity: 1; transform: translate(-50%, -50%) rotate(180deg) scale(1.12); }
}

@keyframes oracle-muzzle {
  from { opacity: 0; transform: rotate(-55deg) scale(0.2); }
  to { opacity: 1; transform: rotate(16deg) scale(1); }
}

@keyframes nox-muzzle {
  from { opacity: 0; transform: scaleX(0.12); }
  to { opacity: 1; transform: scaleX(1); }
}

@keyframes noa-rondo {
  from { opacity: 0; transform: rotate(-90deg) scale(0.16); }
  to { opacity: 1; transform: rotate(35deg) scale(1.08); }
}

@media (max-width: 430px) {
  .enemy-oracle.has-enemy-art {
    width: 126px;
    height: 132px;
  }

  .enemy-nox.has-enemy-art.is-boss {
    width: 180px;
    height: 172px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .battle-view[data-theme="oracle"] .battlefield::after,
  .battle-view[data-theme="eclipse"] .battlefield::after,
  .enemy-oracle .enemy-art-motion,
  .enemy-nox .enemy-art-motion,
  .enemy-formation.is-phase-two .enemy-nox .actor-art-motion::after {
    animation: none !important;
  }
}
