/* 04 Sword & Sorcery: firelight from below. Titles ignite left to right; embers rise (sword-and-sorcery.js). */
[data-world="sword-and-sorcery"] {
  --grain: 0.08;
  --enter: rise-in 700ms cubic-bezier(.2, .7, .2, 1);
}
@keyframes ignite { from { -webkit-mask-position: 100% 0; mask-position: 100% 0; } to { -webkit-mask-position: 0 0; mask-position: 0 0; } }
@keyframes heat { 0%, 100% { transform: none; } 50% { transform: skewX(0.35deg) scaleY(1.004); } }

[data-world="sword-and-sorcery"] .hero-title {
  text-shadow: 0 0 24px color-mix(in srgb, var(--accent) 40%, transparent);
  -webkit-mask-image: linear-gradient(90deg, #000 40%, transparent 60%); mask-image: linear-gradient(90deg, #000 40%, transparent 60%);
  -webkit-mask-size: 250% 100%; mask-size: 250% 100%;
  -webkit-mask-position: 0 0; mask-position: 0 0;
  animation: ignite 600ms ease-out both;
}
[data-world="sword-and-sorcery"] .hero-media { border-bottom: 2px solid var(--rule); }
[data-world="sword-and-sorcery"] .hero-media:hover .hero-img img { animation: heat 1.8s ease-in-out infinite; transform-origin: bottom; }
[data-world="sword-and-sorcery"] .embers { position: absolute; inset: 0; width: 100%; height: 100%; }
/* the calligraphic italic, for spells and quotes */
[data-world="sword-and-sorcery"] .tagline, [data-world="sword-and-sorcery"] .empty,
[data-world="sword-and-sorcery"] blockquote { font-style: italic; }
