/* 本文の文字エフェクト(layouts/_shortcodes/ と対応) */
.fx-yura span { display: inline-block; animation: fx-yura 1.6s ease-in-out infinite; animation-delay: calc(var(--i) * -0.12s); }
@keyframes fx-yura { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-0.3em); } }

.fx-niji {
  background: linear-gradient(90deg, #ff4d4d, #ffa53d, #f7e03c, #4cd964, #3fa9f5, #8e5cf7, #ff4d4d);
  background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text;
  color: transparent; font-weight: bold;
  animation: fx-niji 4s linear infinite;
}
@keyframes fx-niji { to { background-position: 300% 0; } }

.fx-buru { display: inline-block; animation: fx-buru .25s linear infinite; }
@keyframes fx-buru { 0% { transform: translate(0,0); } 25% { transform: translate(1px,-1px); } 50% { transform: translate(-1px,1px); } 75% { transform: translate(1px,1px); } 100% { transform: translate(0,0); } }

.fx-pika { animation: fx-pika 1s steps(2, start) infinite; }
@keyframes fx-pika { to { visibility: hidden; } }

/* 「動きを減らす」設定の人には動かさない */
@media (prefers-reduced-motion: reduce) {
  .fx-yura span, .fx-niji, .fx-buru, .fx-pika { animation: none; }
}
