body {
  font-family: var(--ff-body);
  color: var(--clr-text-dark);
  background-color: var(--clr-white);
  overflow-x: hidden;
  font-size: 16px;
  line-height: 1.6;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--ff-heading);
  font-weight: 700;
  line-height: 1.2;
  color: var(--clr-primary);
  margin-bottom: var(--space-sm);
}

h1 {
  font-size: clamp(3rem, 6vw, 4rem);
  letter-spacing: -0.02em;
}

h2 {
  font-size: clamp(2rem, 4vw, 2.5rem);
}

h3 {
  font-size: clamp(1.25rem, 3vw, 1.5rem);
}

p {
  margin-bottom: var(--space-md);
  color: var(--clr-text-dark);
}

.text-light {
  color: var(--clr-text-light);
}

.bg-light {
  background-color: var(--clr-bg-light);
}

.bg-primary {
  background-color: var(--clr-primary);
  color: var(--clr-white);
}

.bg-primary h1, .bg-primary h2, .bg-primary h3, .bg-primary h4, .bg-primary h5, .bg-primary h6, .bg-primary p {
  color: var(--clr-white);
}

section {
  padding: var(--space-lg) 0;
}

@media (min-width: 768px) {
  section {
    padding: var(--space-xl) 0;
  }
}

a {
  color: var(--clr-primary);
  text-decoration: none;
  transition: color var(--transition-fast);
}

a.text-link {
  position: relative;
  font-weight: 600;
}

a.text-link::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: var(--clr-accent);
  transform: scaleX(1);
  transform-origin: bottom left;
  transition: transform var(--transition-fast);
}

a.text-link:hover::after {
  transform: scaleX(0);
}

/* Visible Cinematic Scroll Reveal */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(35px);
  transition: opacity 0.65s cubic-bezier(0.2, 0.9, 0.3, 1), transform 0.65s cubic-bezier(0.2, 0.9, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Cinematic Ken Burns Motion for Large Photography & Banners */
.hero-bg, .hero-bg-cinematic {
  animation: heroCinematic 18s ease-in-out infinite alternate;
  transform-origin: center center;
  will-change: transform;
}

@keyframes heroCinematic {
  0% {
    transform: scale(1.0) translate(0, 0);
  }
  50% {
    transform: scale(1.08) translate(-1.5%, -1%);
  }
  100% {
    transform: scale(1.05) translate(1.2%, 0.8%);
  }
}

.ken-burns-container {
  overflow: hidden;
  position: relative;
}

.ken-burns-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  animation: kenBurnsCinematic 20s ease-in-out infinite alternate;
  transform-origin: center center;
  will-change: transform;
}

@keyframes kenBurnsCinematic {
  0% {
    transform: scale(1.0) translate(0, 0);
  }
  50% {
    transform: scale(1.08) translate(-1.5%, -1.2%);
  }
  100% {
    transform: scale(1.04) translate(1.2%, 1%);
  }
}

/* Accessibility: Respect Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll,
  .hero-bg,
  .hero-bg-cinematic,
  .ken-burns-img,
  .image-card img,
  .portfolio-item img,
  .service-detail-card img {
    animation: none !important;
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}
