*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-h);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: 300;
  line-height: 1.7;
  color: var(--text);
  background: var(--ivory);
  overflow-x: hidden;
}

/* Typography — Cormorant for headings, Inter for body text */
h1, h2, h3, h4, h5, h6,
.heading-display,
.heading-xl,
.heading-lg,
.quote-block__text {
  font-family: var(--font-display);
  font-weight: 400;
}

.text-body,
.text-lead,
.label,
.btn,
.scene-hero__tagline,
.review-frame__quote,
.review-frame__author,
.review-frame__source,
.contact-links,
.site-footer__copy,
.voice-play,
.reel-card__label,
.nav__links a {
  font-family: var(--font-body);
}

body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  opacity: 0.022;
  mix-blend-mode: multiply;
  background-image: var(--grain);
  animation: grainShift 10s steps(6) infinite;
}

@keyframes grainShift {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-0.5%, 0.5%); }
  50% { transform: translate(0.5%, -0.5%); }
  75% { transform: translate(-0.25%, -0.25%); }
}

img, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
figure { margin: 0; }
button { font: inherit; cursor: pointer; border: none; background: none; }

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.photo-grade {
  filter: contrast(0.94) saturate(0.88) brightness(1.02) sepia(0.05);
}

.photo-grade--warm {
  filter: contrast(0.92) saturate(0.86) brightness(1.03) sepia(0.08);
}

.scene--dark { background: var(--black); color: var(--text-light); }
.scene--ivory { background: var(--ivory); }
.scene--champagne { background: var(--champagne); }
