/* Keyframes */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: none; }
}
@keyframes shimmer {
  0%   { opacity: .4; }
  50%  { opacity: .9; }
  100% { opacity: .4; }
}
@keyframes drawA {
  from { stroke-dashoffset: 1200; }
  to   { stroke-dashoffset: 0; }
}
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* Animation utilities */
.reveal { animation: fadeUp .9s cubic-bezier(.2,.7,.2,1) both; }
.shimmer { animation: shimmer 4s ease-in-out infinite; }

/* Marquee */
.marquee { overflow: hidden; }
.marquee-track {
  display: inline-flex;
  gap: 64px;
  animation: marquee 40s linear infinite;
  white-space: nowrap;
}

/* Subtle grain overlay (CSS-only) */
.grain { position: relative; }
.grain::before {
  content: "";
  position: absolute; inset: 0;
  pointer-events: none;
  background-image: radial-gradient(rgba(100,81,61,0.04) 1px, transparent 1px);
  background-size: 3px 3px;
  mix-blend-mode: multiply;
}
