/* ── Reveal on scroll ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.75s var(--ease-out),
    transform 0.75s var(--ease-out);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger siblings */
.services-grid .reveal:nth-child(1) { transition-delay: 0.00s; }
.services-grid .reveal:nth-child(2) { transition-delay: 0.08s; }
.services-grid .reveal:nth-child(3) { transition-delay: 0.16s; }
.services-grid .reveal:nth-child(4) { transition-delay: 0.24s; }

.process-list .reveal:nth-child(1) { transition-delay: 0.00s; }
.process-list .reveal:nth-child(2) { transition-delay: 0.09s; }
.process-list .reveal:nth-child(3) { transition-delay: 0.18s; }
.process-list .reveal:nth-child(4) { transition-delay: 0.27s; }

.projects-grid .reveal:nth-child(1) { transition-delay: 0.00s; }
.projects-grid .reveal:nth-child(2) { transition-delay: 0.10s; }
.projects-grid .reveal:nth-child(3) { transition-delay: 0.20s; }
.projects-grid .reveal:nth-child(4) { transition-delay: 0.30s; }

.stats-row .reveal:nth-child(1) { transition-delay: 0.00s; }
.stats-row .reveal:nth-child(2) { transition-delay: 0.08s; }
.stats-row .reveal:nth-child(3) { transition-delay: 0.16s; }
.stats-row .reveal:nth-child(4) { transition-delay: 0.24s; }

/* Hero stagger */
.hero__content .reveal:nth-child(1) { transition-delay: 0.10s; }
.hero__content .reveal:nth-child(2) { transition-delay: 0.22s; }
.hero__content .reveal:nth-child(3) { transition-delay: 0.34s; }
.hero__content .reveal:nth-child(4) { transition-delay: 0.46s; }

/* ── Cursor custom ── */
@media (pointer: fine) {
  body { cursor: none; }

  .cursor {
    position: fixed;
    width: 8px; height: 8px;
    background: var(--clr-accent);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9999;
    transform: translate(-50%, -50%);
    transition: transform 0.1s var(--ease), width 0.3s var(--ease), height 0.3s var(--ease), background 0.3s;
    mix-blend-mode: multiply;
  }

  .cursor-follower {
    position: fixed;
    width: 32px; height: 32px;
    border: 1px solid rgba(200, 169, 110, 0.5);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9998;
    transform: translate(-50%, -50%);
    transition: transform 0.35s var(--ease-out), width 0.3s var(--ease), height 0.3s var(--ease), opacity 0.3s;
  }

  a:hover ~ .cursor,
  button:hover ~ .cursor { transform: translate(-50%,-50%) scale(2); }
}

/* ── Page load animation ── */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.navbar {
  animation: fadeInUp 0.6s var(--ease-out) 0.1s both;
}