/* Ken Burns — desktop only (mobile skips for CPU + LCP) */
@keyframes mihadaKenBurns {
  0%   { transform: scale(1.00) translate(0%, 0%); }
  33%  { transform: scale(1.07) translate(-1.2%, 0.6%); }
  66%  { transform: scale(1.05) translate(0.9%, -0.5%); }
  100% { transform: scale(1.00) translate(0%, 0%); }
}
.hero-wrap { overflow: hidden; position: relative; }
.hero-wrap .hero-img {
  animation: mihadaKenBurns 22s ease-in-out infinite;
  will-change: transform;
  transform-origin: center center;
}

@media (max-width: 768px) {
  .hero-wrap .hero-img {
    animation: none !important;
    transform: none !important;
  }
  .hero-shimmer-sweep { display: none; }
}

/* Shimmer sweep — desktop only */
@keyframes mihadaShimmer {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(200%); }
}
.hero-shimmer-sweep {
  position: absolute;
  top: 0; bottom: 0; left: 0;
  width: 50%;
  pointer-events: none;
  background: linear-gradient(105deg, transparent 20%, rgba(255,255,255,0.13) 50%, transparent 80%);
  animation: mihadaShimmer 4s linear infinite;
  will-change: transform;
}
[data-theme="dark"] .hero-shimmer-sweep {
  background: linear-gradient(105deg, transparent 20%, rgba(255,255,255,0.06) 50%, transparent 80%);
}

/* NOTE: body / .site-main fade-in animations REMOVED 2026-05-02 — they were
 * killing LCP. animations.css is loaded with media="print" + onload, so when
 * it finally arrived, the body's `animation: mihadaPageIn ... both` fill-mode
 * snapped opacity back to 0 and re-faded, invalidating the hero paint that
 * had already happened. Cosmetic page-load fade is not worth a 9s LCP.
 */

/* FadeUp 初期状態は JS で付与。reduced-motion で無効化 */
@media (prefers-reduced-motion: reduce) {
  .hero-img,
  .hero-shimmer-sweep,
  [data-fadein] {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
