/* ==========================================================================
   COMPONENT: Story Section
   Layout: Image pair (large + overlapping small) + content with stats
   Configurable: image left/right, mobile image top/bottom
   ========================================================================== */

/* ------------------------------------------------------------------
   SECTION
   ------------------------------------------------------------------ */

.c-story {
  background-color: var(--color-surface-container-low);
  overflow: hidden;
}

/* ------------------------------------------------------------------
   GRID — Two-column layout
   ------------------------------------------------------------------ */

.c-story .container {
  position: relative;
  z-index: 2;
}

.c-story__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-12);
  align-items: center;
}

/* Image left (default): images first in DOM order */
.c-story--image-right .c-story__grid {
  direction: rtl;
}

.c-story--image-right .c-story__grid > * {
  direction: ltr;
}

/* ------------------------------------------------------------------
   IMAGE PAIR — Large image with overlapping small image
   ------------------------------------------------------------------ */

.c-story__images {
  position: relative;
}

.c-story__image-large {
  position: relative;
  z-index: 1;
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.c-story__image-large img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}

/* Small image — overlapping corner */
.c-story__image-small {
  position: absolute;
  z-index: 2;
  width: 40%;
  max-width: 200px;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-medium);
  /* White border effect via background on wrapper */
  background-color: var(--color-surface);
  padding: var(--space-1);
}

.c-story__image-small img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: calc(var(--radius-lg) - var(--space-1));
}

/* Image LEFT → small image bottom-right */
.c-story--image-left .c-story__image-small {
  bottom: calc(-1 * var(--space-6));
  right: calc(-1 * var(--space-4));
}

/* Image RIGHT → small image bottom-left */
.c-story--image-right .c-story__image-small {
  bottom: calc(-1 * var(--space-6));
  left: calc(-1 * var(--space-4));
}

/* ------------------------------------------------------------------
   CONTENT
   ------------------------------------------------------------------ */

.c-story__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.c-story__label {
  color: var(--color-on-surface-variant);
  letter-spacing: var(--text-label-sm-tracking);
}

.c-story__headline {
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 3vw, 2.5rem);
  line-height: 1.15;
  font-weight: 400;
  color: var(--color-on-surface);
}

.c-story__headline em,
.c-story__headline i {
  font-style: italic;
}

.c-story__text {
  color: var(--color-on-surface-variant);
  font-size: var(--text-body-lg);
  line-height: var(--text-body-lg-lh);
}

/* CTA — underline style tertiary button */
.c-story__cta {
  align-self: flex-start;
  margin-top: var(--space-2);
  font-weight: 600;
}

/* ------------------------------------------------------------------
   STATS / POINTS — Grid up to 3x2
   ------------------------------------------------------------------ */

.c-story__points {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-4);
  margin-top: var(--space-4);
  max-width: 100%;
}

.c-story__point {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding-left: var(--space-5);
  border-left: 1.5px solid var(--color-outline-variant);
}

/* First item in each row — no left border */
.c-story__point:first-child {
  border-left: none;
  padding-left: 0;
}

/* On 3-col grid, 4th item starts new row without border */
.c-story__point:nth-child(3n + 1) {
  border-left: none;
  padding-left: 0;
}

.c-story__point-value {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 2.5vw, 2rem);
  font-weight: 400;
  line-height: 1.1;
  color: var(--color-on-surface);
}

.c-story__point-label {
  color: var(--color-on-surface-variant);
}

/* ------------------------------------------------------------------
   SCROLL ANIMATIONS
   Elements start hidden, animate in when scrolled into view.
   Triggered by IntersectionObserver in main.js
   ------------------------------------------------------------------ */

[data-animate] {
  opacity: 0;
  transition:
    opacity var(--duration-slow) var(--ease-default),
    transform var(--duration-slow) var(--ease-default);
}

[data-animate].is-visible {
  opacity: 1;
}

/* Fade in (images) */
[data-animate="fade-in"] {
  transform: scale(0.97);
}

[data-animate="fade-in"].is-visible {
  transform: scale(1);
}

/* Fade up (content) */
[data-animate="fade-up"] {
  transform: translateY(24px);
}

[data-animate="fade-up"].is-visible {
  transform: translateY(0);
}

/* Staggered fade up (stat points) */
[data-animate="fade-up-stagger"] .c-story__point {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity var(--duration-slow) var(--ease-default),
    transform var(--duration-slow) var(--ease-spring);
}

[data-animate="fade-up-stagger"].is-visible .c-story__point {
  opacity: 1;
  transform: translateY(0);
  transition-delay: calc(var(--stagger) * 80ms);
}

/* ------------------------------------------------------------------
   RESPONSIVE
   ------------------------------------------------------------------ */

@media (max-width: 1024px) {
  .c-story__grid {
    gap: var(--space-8);
  }

  .c-story__image-small {
    width: 35%;
  }
}

@media (max-width: 768px) {
  .c-story__grid {
    grid-template-columns: 1fr;
    gap: var(--space-8);
  }

  /* Reset RTL direction trick on mobile */
  .c-story--image-right .c-story__grid {
    direction: ltr;
  }

  /* Mobile image position: top (default) or bottom */
  .c-story--mobile-image-top .c-story__images {
    order: -1;
  }

  .c-story--mobile-image-bottom .c-story__images {
    order: 1;
  }

  .c-story__images {
    max-width: 480px;
  }

  .c-story__image-small {
    width: 38%;
    max-width: 160px;
  }

  /* On mobile, always position small image bottom-right */
  .c-story--image-right .c-story__image-small,
  .c-story--image-left .c-story__image-small {
    bottom: calc(-1 * var(--space-5));
    right: calc(-1 * var(--space-3));
    left: auto;
  }

  .c-story__points {
    grid-template-columns: repeat(2, 1fr);
  }

  /* Reset border logic for 2-col on mobile */
  .c-story__point:nth-child(3n + 1) {
    border-left: 1.5px solid var(--color-outline-variant);
    padding-left: var(--space-5);
  }

  .c-story__point:nth-child(2n + 1) {
    border-left: none;
    padding-left: 0;
  }
}

@media (max-width: 480px) {
  .c-story__points {
    grid-template-columns: 1fr 1fr;
  }
}