/* ===== keyframes ===== */


/* 浮動效果 */
@keyframes float{
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}

/* 閃光白光效果 */
    /* 閃光：忽明忽暗 + 微位移 */
    @keyframes sparkle-twinkle{
      0%   { opacity: 0; transform: translateY(0) scale(1); }
      20%  { opacity: .9; transform: translateY(-2px) scale(1.02); }
      50%  { opacity: .25; transform: translateY(1px) scale(1); }
      70%  { opacity: .8; transform: translateY(-1px) scale(1.01); }
      100% { opacity: 0; transform: translateY(0) scale(1); }
    }

    /* 白光掃過：有停頓，不會一直刷 */
    @keyframes shine-sweep{
      0%   { opacity: 0; transform: translateY(-6%) translateX(45%) skewX(-7deg); }
      18%  { opacity: 0; transform: translateY(-6%) translateX(45%) skewX(-7deg); }
      35%  { opacity: 1; transform: translateY(-6%) translateX(-15%) skewX(-7deg); }
      45%  { opacity: 0; transform: translateY(-6%) translateX(-45%) skewX(-7deg); }
      100% { opacity: 0; transform: translateY(-6%) translateX(-45%) skewX(-7deg); }
    }


    /* 偏好減少動態，就停掉 */
    @media (prefers-reduced-motion: reduce){
      .frame-top .frame_slogan,
      .frame-top::before,
      .frame-top::after{
        animation: none !important;
      }
    }


/* 背景 X 羽毛飄落 3種飄落效果 */
@keyframes featherDriftSoft {
  0%   { transform: translateX(-8px); }
  50%  { transform: translateX(8px); }
  100% { transform: translateX(-8px); }
}
@keyframes featherDriftMedium {
  0%   { transform: translateX(-18px); }
  50%  { transform: translateX(18px); }
  100% { transform: translateX(-18px); }
}
@keyframes featherDriftFar {
  0%   { transform: translateX(-12px) rotate(-0.4deg); }
  50%  { transform: translateX(12px) rotate(0.4deg); }
  100% { transform: translateX(-12px) rotate(-0.4deg); }
}