/* --- CINEMATIC SCROLL REVEALS --- */
.reveal-element {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

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

/* --- ORBIT ROTATION & FLOAT EFFECTS --- */
@keyframes spinSlow {
  from { transform: rotate(-20deg); }
  to { transform: rotate(340deg); }
}

@keyframes spinReverse {
  from { transform: rotate(35deg); }
  to { transform: rotate(-325deg); }
}

.orbit-a {
  animation: spinSlow 35s linear infinite;
}

.orbit-b {
  animation: spinReverse 45s linear infinite;
}

/* Float cards subtle breathing effect */
.float-card {
  transition: transform 0.3s ease, border-color 0.3s ease;
}

.float-card:hover {
  transform: translateY(-5px);
  border-color: var(--accent);
}