/* ========================================
   ESKO — 모든 @keyframes 정의
   원본 React 프로젝트에서 1:1 추출
   ======================================== */

/* --- 공통 --- */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes pulse-red {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,0.4); }
  50%      { box-shadow: 0 0 0 10px rgba(220,38,38,0); }
}

@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%      { transform: translateY(-10px); }
}

/* --- TickerBand --- */
@keyframes ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

/* --- Gallery --- */
@keyframes shimmer {
  0%   { background-position: -600px 0; }
  100% { background-position: 600px 0; }
}

/* --- Partners Marquee --- */
@keyframes marquee-left {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@keyframes marquee-right {
  0%   { transform: translateX(-50%); }
  100% { transform: translateX(0); }
}

/* --- Business --- */
@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes slideInRight {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* --- DynamicShowcase --- */
@keyframes sc-scan {
  0%   { top: -3%; }
  100% { top: 103%; }
}
@keyframes sc-word-in {
  from { opacity: 0; transform: translateY(40px) skewY(4deg); clip-path: inset(100% 0 0 0); }
  to   { opacity: 1; transform: translateY(0) skewY(0); clip-path: inset(0% 0 0 0); }
}
@keyframes sc-line-grow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
@keyframes sc-stat-in {
  from { opacity: 0; transform: translateX(-24px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes sc-glow-pulse {
  0%, 100% { opacity: 0.6; filter: blur(80px); }
  50%      { opacity: 1; filter: blur(100px); }
}
@keyframes sc-ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@keyframes sc-ticker-rev {
  0%   { transform: translateX(-50%); }
  100% { transform: translateX(0); }
}
@keyframes sc-corner-blink {
  0%, 100% { opacity: 0.4; }
  50%      { opacity: 1; }
}
@keyframes sc-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-12px); }
}

/* --- ServicesSection --- */
@keyframes icon-bounce {
  0%, 100% { transform: translateY(0) scale(1); }
  30%      { transform: translateY(-7px) scale(1.12); }
  60%      { transform: translateY(-2px) scale(1.04); }
}
@keyframes shine-sweep {
  0%   { left: -80%; }
  100% { left: 140%; }
}
@keyframes badge-pop {
  0%   { transform: scale(0) rotate(-10deg); opacity: 0; }
  70%  { transform: scale(1.18) rotate(2deg); }
  100% { transform: scale(1) rotate(0deg); opacity: 1; }
}
@keyframes corner-flicker {
  0%, 100% { opacity: 0.5; }
  50%      { opacity: 1; }
}
@keyframes radar-sweep {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes neon-border-in {
  from { opacity: 0; transform: scaleX(0); }
  to   { opacity: 1; transform: scaleX(1); }
}

/* --- TestimonialsSection --- */
@keyframes t-scan {
  0%   { top: -3%; }
  100% { top: 103%; }
}
@keyframes t-card-in {
  from { opacity: 0; transform: translateY(36px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes t-quote-glow {
  0%, 100% { opacity: 0.12; }
  50%      { opacity: 0.22; }
}
@keyframes t-badge-pop {
  from { transform: scale(0); opacity: 0; }
  to   { transform: scale(1); opacity: 1; }
}
@keyframes star-fill {
  from { clip-path: inset(0 100% 0 0); }
  to   { clip-path: inset(0 0% 0 0); }
}

/* --- Footer --- */
@keyframes neon-top-line {
  0%, 100% { opacity: 0.4; box-shadow: 0 0 6px rgba(220,38,38,0.4); }
  50%      { opacity: 1;   box-shadow: 0 0 14px rgba(220,38,38,0.7); }
}
@keyframes blink-dot {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.2; }
}

/* --- Contact --- */
@keyframes form-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(220,38,38,0); }
  50%      { box-shadow: 0 0 0 3px rgba(220,38,38,0.08); }
}
@keyframes scan-horizontal {
  0%   { top: 0; opacity: 0.4; }
  100% { top: 100%; opacity: 0; }
}

/* --- AboutSection --- */
@keyframes corner-pop {
  0%   { transform: rotate(45deg) scale(0.6); opacity: 0; }
  100% { transform: rotate(45deg) scale(1);   opacity: 1; }
}
@keyframes label-strip-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ek-scan {
  0%   { top: 0; opacity: 0.5; }
  100% { top: 100%; opacity: 0; }
}
