html {
  scroll-behavior: smooth;
}

.motion-ready .reveal {
  opacity: 0;
  transform: translateY(42px) scale(.985);
  transition:
    opacity .85s cubic-bezier(.22, 1, .36, 1),
    transform .85s cubic-bezier(.22, 1, .36, 1);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

.motion-ready .reveal.reveal-left {
  transform: translateX(-42px) scale(.985);
}

.motion-ready .reveal.reveal-right {
  transform: translateX(42px) scale(.985);
}

.motion-ready .reveal.is-visible {
  opacity: 1;
  transform: translate(0, 0);
  will-change: auto;
}

.photo-grid,
.photo-grid figure,
.photo-grid img,
.media-layout,
.media-layout figure,
.media-layout video,
.photo-gallery,
.photo-gallery figure,
.photo-gallery img {
  opacity: 1;
  visibility: visible;
}

.hero-logo {
  animation: heroLogoIn .9s cubic-bezier(.22, 1, .36, 1) both;
}

.hero-copy {
  animation: heroCopyIn .85s .14s cubic-bezier(.22, 1, .36, 1) both;
}

.grade-card,
.product-grid article,
.photo-gallery figure,
.market-grid span {
  transition: transform .28s ease, box-shadow .28s ease;
}

.grade-card:hover,
.product-grid article:hover,
.photo-gallery figure:hover,
.market-grid span:hover {
  transform: translateY(-9px) scale(1.008);
  box-shadow: 0 22px 48px rgba(7, 43, 35, .18);
}

.primary,
.secondary,
.gold,
.text-button,
.footer-social a {
  transition: transform .22s ease, background-color .22s ease, color .22s ease, border-color .22s ease;
}

.primary:hover,
.secondary:hover,
.gold:hover,
.text-button:hover {
  transform: translateY(-2px);
}

@keyframes heroLogoIn {
  from { opacity: 0; transform: translateY(-34px) scale(.94); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes heroCopyIn {
  from { opacity: 0; transform: translateY(38px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 520px) {
  .motion-ready .reveal {
    transform: translateY(26px) scale(.99);
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  .hero-logo,
  .hero-copy,
  .motion-ready .reveal {
    animation: none;
    opacity: 1;
    transform: none;
    transition: none;
  }

  .grade-card,
  .product-grid article,
  .photo-gallery figure,
  .market-grid span,
  .primary,
  .secondary,
  .gold,
  .text-button {
    transition: none;
  }
}
