/* Section transitions & subtle motion hooks — AURA shape language */
section[class*="section-"] {
  isolation: isolate;
}

.section-wave-cap::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 72px;
  background: var(--color-surface-lowest);
  clip-path: ellipse(55% 100% at 50% 100%);
  pointer-events: none;
  z-index: 1;
}

.section-rounded-inset {
  margin-top: -32px;
  padding-top: calc(clamp(56px, 8vw, 120px) + 32px);
  background: var(--color-secondary);
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
  box-shadow: 0 -12px 40px rgba(31, 75, 122, 0.06);
}

.section-diagonal-paper {
  clip-path: polygon(0 5%, 100% 0, 100% 100%, 0 100%);
  padding-top: calc(clamp(56px, 8vw, 120px) + 24px);
}

.section-route-overlap::before {
  content: "";
  position: absolute;
  top: -40px;
  left: 10%;
  right: 10%;
  height: 80px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 80' fill='none'%3E%3Cpath d='M0 40 Q100 0 200 40 T400 40' stroke='%23C7D4E6' stroke-width='4' stroke-dasharray='8 8'/%3E%3C/svg%3E") center/contain no-repeat;
  opacity: 0.7;
  pointer-events: none;
  z-index: 2;
}

.section-notched-divider::before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(320px, 60%);
  height: 28px;
  background: var(--color-background);
  clip-path: polygon(0 0, 15% 100%, 50% 60%, 85% 100%, 100% 0);
  z-index: 1;
}

.section-soft-arc {
  border-radius: 0 0 var(--radius-xl) var(--radius-xl);
  overflow: hidden;
}

.section-asymmetrical-arc::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 64px;
  background: var(--color-surface-low);
  clip-path: ellipse(70% 100% at 65% 100%);
  z-index: 1;
}

.section-cta-arc {
  margin-top: -40px;
  padding-top: calc(clamp(56px, 8vw, 120px) + 40px);
  z-index: 2;
}

.section-cta-arc::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 48px;
  background: inherit;
  clip-path: ellipse(60% 100% at 50% 0%);
  transform: translateY(-50%);
  z-index: -1;
}

.section-footer-settle {
  padding-bottom: clamp(72px, 10vw, 140px);
}

.section-soft-cap::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 48px;
  background: linear-gradient(to bottom, transparent, var(--color-surface-lowest));
}

.section-band-overlap {
  background: var(--color-secondary);
  margin-top: -24px;
  border-radius: var(--radius-xl) var(--radius-xl) 0 0;
}

.section-rounded-band-cap {
  border-radius: var(--radius-xl);
  margin-inline: clamp(8px, 2vw, 24px);
}

.section-sheet-overlap {
  box-shadow: 0 -20px 60px rgba(31, 75, 122, 0.08);
}

.section-technical-note-notch::before {
  content: "";
  position: absolute;
  top: 0;
  left: 24px;
  width: 48px;
  height: 6px;
  background: var(--color-primary);
  border-radius: 0 0 6px 6px;
}

[data-motion],
.motion-fade-up,
.hero-content,
.hero-visual,
.card,
.faq-item,
.step {
  will-change: transform, opacity;
}

.hero-visual img {
  animation: float-soft 6s var(--ease-standard, cubic-bezier(0.16, 1, 0.3, 1)) infinite alternate;
}

@keyframes float-soft {
  from { transform: translateY(0); }
  to { transform: translateY(-8px); }
}

.is-inview .card,
.is-inview .faq-item,
.is-inview .step {
  animation: fade-up 0.6s var(--ease-standard) both;
}

@keyframes fade-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 768px) {
  .section-wave-cap::after { height: 48px; }

  .section-diagonal-paper {
    clip-path: polygon(0 2%, 100% 0, 100% 100%, 0 100%);
  }

  .section-route-overlap::before { display: none; }

  .section-rounded-inset {
    margin-top: -16px;
    padding-top: calc(56px + 16px);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-visual img { animation: none; }

  .is-inview .card,
  .is-inview .faq-item,
  .is-inview .step {
    animation: none;
  }
}

html.is-reduced-motion .hero-visual img { animation: none; }
