/* ============================================================
   APTIVOO · Animations + scroll effects
   ============================================================ */

/* Reveal-on-scroll */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 900ms var(--e-out), transform 900ms var(--e-out);
  will-change: opacity, transform;
}
.reveal.is-in { opacity: 1; transform: none; }
.reveal[data-delay="1"] { transition-delay: 80ms; }
.reveal[data-delay="2"] { transition-delay: 160ms; }
.reveal[data-delay="3"] { transition-delay: 240ms; }
.reveal[data-delay="4"] { transition-delay: 320ms; }
.reveal[data-delay="5"] { transition-delay: 400ms; }
.reveal[data-delay="6"] { transition-delay: 480ms; }

/* Character-by-character display headline */
.headline-reveal .w {
  display: inline-block;
  overflow: hidden;
  padding-bottom: 0.08em;
}
.headline-reveal .w span {
  display: inline-block;
  transform: translateY(110%);
  transition: transform 1000ms var(--e-out);
}
.headline-reveal.is-in .w span { transform: translateY(0); }
.headline-reveal .w:nth-child(2) span { transition-delay: 80ms; }
.headline-reveal .w:nth-child(3) span { transition-delay: 160ms; }
.headline-reveal .w:nth-child(4) span { transition-delay: 240ms; }
.headline-reveal .w:nth-child(5) span { transition-delay: 320ms; }
.headline-reveal .w:nth-child(6) span { transition-delay: 400ms; }
.headline-reveal .w:nth-child(7) span { transition-delay: 480ms; }
.headline-reveal .w:nth-child(8) span { transition-delay: 560ms; }

/* Hero floating clay dot */
@keyframes floaty {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(8px, -12px) scale(1.04); }
}
.floaty { animation: floaty 6s ease-in-out infinite; }

/* Cursor magnet (applied to hover elements) */
.magnet { transition: transform 200ms var(--e-out); }

/* Page intro */
.page-enter {
  animation: page-enter 900ms var(--e-out) both;
}
@keyframes page-enter {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: none; }
}

/* Curtain intro (used on home first load) */
.curtain {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--paper);
  pointer-events: none;
  animation: curtain-out 1400ms var(--e-out) 600ms forwards;
}
.curtain svg { height: 56px; width: auto; }
@keyframes curtain-out {
  0%   { transform: translateY(0); }
  100% { transform: translateY(-100%); }
}
.curtain-mark {
  animation: curtain-fade 700ms var(--e-out) both;
}
@keyframes curtain-fade {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}

/* Parallax hint */
[data-parallax] { will-change: transform; }

/* Ticker for numeric values */
.ticker {
  font-variant-numeric: tabular-nums;
  display: inline-block;
}

/* Accordion arrow */
.accordion__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--s-4) 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: padding var(--d-fast) var(--e-out);
}
.accordion__head:hover { padding-left: 10px; }
.accordion__head h4 { transition: color var(--d-fast) var(--e-out); }
.accordion__head:hover h4 { color: var(--clay); }
.accordion__icon {
  width: 32px;
  height: 32px;
  border: 1px solid var(--border);
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--d-base) var(--e-out), background var(--d-base) var(--e-out);
  flex-shrink: 0;
}
.accordion.is-open .accordion__icon { transform: rotate(45deg); background: var(--ink); color: var(--paper); }
.accordion__body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 500ms var(--e-in-out);
}
.accordion.is-open .accordion__body { max-height: 400px; }
.accordion__body-inner {
  padding: 0 0 var(--s-4) 0;
  max-width: 68ch;
  color: var(--ink-2);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .reveal { opacity: 1; transform: none; }
  .headline-reveal .w span { transform: none; }
}
