/* ==========================================================================
   CLEAN EDITS — Animations
   ========================================================================== */

@keyframes gradientShift{
  0%{ background-position: 0% 50%; }
  50%{ background-position: 100% 50%; }
  100%{ background-position: 0% 50%; }
}

@keyframes rippleAnim{
  to{ transform: scale(3); opacity:0; }
}

@keyframes shimmer{
  100%{ transform: translateX(100%); }
}

@keyframes float{
  0%,100%{ transform: translateY(0px) rotate(0deg); }
  50%{ transform: translateY(-16px) rotate(2deg); }
}
.float{ animation: float 6s ease-in-out infinite; }
.float-delay{ animation-delay: 1.4s; }

@keyframes fadeIn{
  from{ opacity:0; } to{ opacity:1; }
}
.fade-in{ animation: fadeIn 1s var(--ease) both; }

@keyframes slideUp{
  from{ opacity:0; transform: translateY(40px); } to{ opacity:1; transform:none; }
}
.slide-up{ animation: slideUp .9s var(--ease) both; }

@keyframes textReveal{
  from{ clip-path: inset(0 100% 0 0); } to{ clip-path: inset(0 0 0 0); }
}
.text-reveal{ animation: textReveal 1.1s var(--ease) both; }

@keyframes zoomSlow{
  from{ transform: scale(1); } to{ transform: scale(1.12); }
}
.hero-media img, .hero-media video{ animation: zoomSlow 14s var(--ease) infinite alternate; }

@keyframes spin{
  to{ transform: rotate(360deg); }
}
.loader{
  width:46px; height:46px; border-radius:50%;
  border: 3px solid rgba(0,0,53,.12); border-top-color: var(--ink);
  animation: spin .8s linear infinite;
  margin: var(--sp-6) auto;
}

.page-loader{
  position:fixed; inset:0; z-index: 3000; background: var(--cream);
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap: var(--sp-3);
  transition: opacity .6s var(--ease), visibility .6s;
}
.page-loader.is-hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.page-loader .mark{ font-family: var(--font-display); font-size:1.4rem; letter-spacing:.3em; text-transform:uppercase; }
.page-loader .bar{ width:200px; height:2px; background: rgba(0,0,53,.1); overflow:hidden; border-radius:2px; }
.page-loader .bar::after{
  content:''; display:block; width:40%; height:100%; background: linear-gradient(90deg, var(--ink), var(--glow));
  animation: loaderBar 1.1s ease-in-out infinite;
}
@keyframes loaderBar{
  0%{ transform: translateX(-100%); } 100%{ transform: translateX(350%); }
}

/* Glow pulse for badges / CTAs */
@keyframes glowPulse{
  0%,100%{ box-shadow: 0 0 0 0 var(--glow-soft); }
  50%{ box-shadow: 0 0 26px 6px var(--glow-soft); }
}
.glow-pulse{ animation: glowPulse 2.6s ease-in-out infinite; }

/* Glass reflection sweep on hover */
.reflect{ position:relative; overflow:hidden; }
.reflect::before{
  content:''; position:absolute; top:0; left:-140%; width:60%; height:100%;
  background: linear-gradient(115deg, transparent, rgba(255,255,255,.55), transparent);
  transform: skewX(-18deg); transition: left .9s var(--ease);
}
.reflect:hover::before{ left: 140%; }

/* Page transition overlay */
.page-transition{
  position:fixed; inset:0; z-index:4000; background: var(--ink);
  transform: translateY(101%); transition: transform .6s var(--ease);
  pointer-events:none;
}
.page-transition.is-active{ transform: translateY(0%); }
