/* ==========================================================================
   Base Reset, Typography, Layout Containers & Scroll-Reveal Animations
   Mobile-first | Zero frameworks | Respects prefers-reduced-motion
   ========================================================================== */

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

html {
  font-size: 16px;
  -webkit-text-size-adjust: 100%;
  overflow-x: clip;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  padding: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  font-family: var(--font-primary);
  font-size: var(--fs-base);
  font-weight: var(--fw-regular);
  line-height: var(--lh-snug);
  color: var(--color-dark);
  background-color: var(--color-white);
  overflow-x: clip;
  -webkit-font-smoothing: antialiased;
}

.site-main {
  flex: 1 0 auto;
  width: 100%;
  min-height: 520px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin-top: 0;
  margin-bottom: 0.5rem;
  font-family: var(--font-primary);
  font-weight: var(--fw-medium);
  line-height: var(--lh-snug);
}

p {
  margin-top: 0;
  margin-bottom: 1rem;
}

ul,
ol {
  margin-top: 0;
  margin-bottom: 1rem;
}

a {
  color: inherit;
  text-decoration: none;
}

img,
svg {
  vertical-align: middle;
  max-width: 100%;
}

img {
  height: auto;
}

button,
input,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
  margin: 0;
}

button {
  cursor: pointer;
}

/* Screen-reader only utility */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ==========================================================================
   Responsive Container Tiers (Mobile-First, matching live widths)
   ========================================================================== */

.container,
.container-fluid {
  position: relative;
  width: 100%;
  padding-inline: var(--gutter-inline);
  margin-inline: auto;
}

@media (min-width: 576px) {
  .container {
    max-width: var(--container-sm);
  }
}

@media (min-width: 768px) {
  .container {
    max-width: var(--container-md);
  }
}

@media (min-width: 992px) {
  .container {
    max-width: var(--container-lg);
  }
}

@media (min-width: 1200px) {
  .container {
    max-width: var(--container-xl);
  }
}

@media (min-width: 1400px) {
  .container {
    max-width: var(--container-xxl);
  }
}

/* ==========================================================================
   Scroll-Reveal System (Replicates AOS 600ms / 1000ms via IntersectionObserver)
   Only hides/transforms when html.js is active so no-JS degrades cleanly.
   ========================================================================== */

html.js [data-aos] {
  transition-timing-function: ease;
  transition-duration: var(--duration-aos-default);
}

html.js [data-aos][data-aos-duration="500"] {
  transition-duration: var(--duration-media);
}

html.js [data-aos][data-aos-duration="1000"] {
  transition-duration: var(--duration-aos-long);
}

/* Fade variants */
html.js [data-aos^="fade"] {
  opacity: 0;
  transition-property: opacity, transform;
}

html.js [data-aos="fade-up"] {
  transform: translate3d(0, 100px, 0);
}

html.js [data-aos="fade-down"] {
  transform: translate3d(0, -100px, 0);
}

html.js [data-aos="fade-left"] {
  transform: translate3d(100px, 0, 0);
}

html.js [data-aos="fade-right"] {
  transform: translate3d(-100px, 0, 0);
}

html.js [data-aos^="fade"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* 3D Flip variants */
html.js [data-aos^="flip"] {
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  transition-property: transform;
}

html.js [data-aos="flip-left"] {
  transform: perspective(2500px) rotateY(-100deg);
}

html.js [data-aos="flip-right"] {
  transform: perspective(2500px) rotateY(100deg);
}

html.js [data-aos="flip-up"] {
  transform: perspective(2500px) rotateX(-100deg);
}

html.js [data-aos="flip-down"] {
  transform: perspective(2500px) rotateX(100deg);
}

html.js [data-aos="flip-left"].aos-animate,
html.js [data-aos="flip-right"].aos-animate {
  transform: perspective(2500px) rotateY(0deg);
}

html.js [data-aos="flip-up"].aos-animate,
html.js [data-aos="flip-down"].aos-animate {
  transform: perspective(2500px) rotateX(0deg);
}

/* Reduced Motion Accessibility */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    transition-duration: 0.01ms;
  }

  html.js [data-aos],
  html.js [data-aos^="fade"],
  html.js [data-aos^="flip"] {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

