/* ==========================================================================
   Scroll reveal system (driven by IntersectionObserver in js/main.js)
   ========================================================================== */
[data-reveal] {
  opacity: 0;
  transition: opacity 0.7s var(--ease-out), transform 0.7s var(--ease-out);
  will-change: transform, opacity;
}
[data-reveal="up"] { transform: translateY(28px); }
[data-reveal="left"] { transform: translateX(-32px); }
[data-reveal="right"] { transform: translateX(32px); }
[data-reveal="scale"] { transform: scale(0.92); }
[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* stagger children */
[data-reveal-group] > * { transition-delay: calc(var(--i, 0) * 90ms); }

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}

/* ==========================================================================
   Hero motion
   ========================================================================== */
.hero {
  position: relative;
  overflow: hidden;
  background: var(--navy);
  color: var(--cream);
  padding-block: var(--space-6) var(--space-5);
  isolation: isolate;
}

.hero__contours {
  position: absolute;
  inset: 0;
  z-index: 0;
  opacity: 0.35;
  animation: driftContours 40s linear infinite;
}
@keyframes driftContours {
  from { transform: translate(0, 0); }
  to { transform: translate(-120px, -60px); }
}

.hero__grid {
  position: relative;
  z-index: 1;
  display: grid;
  gap: var(--space-5);
  align-items: center;
  grid-template-columns: 1fr;
}
@media (min-width: 900px) {
  .hero__grid { grid-template-columns: 1.05fr 0.95fr; }
}

.hero__eyebrow {
  font-family: var(--font-script);
  color: var(--gold);
  font-size: var(--step-2);
  display: inline-block;
  transform: rotate(-3deg);
  margin-bottom: 0.2em;
}

.hero h1 {
  color: var(--cream);
  font-size: var(--step-5);
}
.hero h1 mark {
  background: none;
  color: var(--gold);
  -webkit-text-stroke: 2px var(--ink);
  paint-order: stroke fill;
}

.hero__lede {
  color: var(--cream);
  opacity: 0.9;
  margin-block: var(--space-3) var(--space-4);
  font-size: var(--step-1);
}

.hero__ctas { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: var(--space-4); }

.hero__stats {
  display: flex;
  gap: var(--space-5);
  flex-wrap: wrap;
}

.hero__art {
  position: relative;
}
.hero__art .stamp {
  position: absolute;
  top: -18px;
  right: -6px;
  z-index: 2;
  animation: floaty 6s ease-in-out infinite;
}
@keyframes floaty {
  0%, 100% { transform: rotate(-8deg) translateY(0); }
  50% { transform: rotate(-8deg) translateY(-10px); }
}

.hero__frame {
  border: var(--border-thick) solid var(--ink);
  border-radius: var(--radius-tag);
  overflow: hidden;
  box-shadow: 0.6rem 0.6rem 0 0 var(--gold), 1.1rem 1.1rem 0 0 var(--ink);
  transform: rotate(1.5deg);
}
.hero__frame img { width: 100%; aspect-ratio: 4/3.1; object-fit: cover; }

/* ==========================================================================
   Parallax mountain layers (about/hero backdrop)
   ========================================================================== */
.parallax {
  position: relative;
  overflow: hidden;
}
.parallax__layer {
  position: absolute;
  inset: -5% -5% -5% -5%;
  background-repeat: repeat-x;
  background-position: bottom;
}

/* ==========================================================================
   Gallery hover / lightbox trigger
   ========================================================================== */
.gallery {
  display: grid;
  gap: var(--space-3);
  grid-template-columns: repeat(2, 1fr);
}
@media (min-width: 700px) {
  .gallery { grid-template-columns: repeat(4, 1fr); }
  .gallery .photo-frame:nth-child(4n+1) { grid-row: span 2; }
}
.gallery .photo-frame { --ar: 1/1; cursor: zoom-in; }
@media (min-width: 700px) {
  .gallery .photo-frame:nth-child(4n+1) { --ar: auto; height: 100%; }
}

/* button ripple-free press */
.btn, .tag-card, .photo-frame { transform-origin: center; }
