/* ============================================================
   Dual Skin Demo — animations.css
   FOUC gate + animation state placeholders.
   Phase 2+ will add skin-specific animation rules here.
   ============================================================ */

/* FOUC gate: hide data-animate elements until GSAP boot */
.mcs-ani-init [data-animate] {
  opacity: 0;
}

/* Page transition overlay placeholder (Phase 2+) */
.page-transition-active {
  overflow: hidden;
}

/* Reduced motion: show all animated content immediately, header stays visible */
@media (prefers-reduced-motion: reduce) {
  [data-animate] {
    opacity: 1 !important;
    transform: none !important;
  }

  .site-header {
    transform: none !important;
  }
}

/* ── Bento-grid base hide — skins opt-in via [data-skin] override ── */
.bento-grid {
  display: none;
}

/* ── Hero accent sweep — shared base (overlay hidden by default) ── */
.hero-accent-sweep {
  position: relative;
  display: inline-block;
}

.hero-accent-sweep__overlay {
  position: absolute;
  left: 0;
  top: 0;
  clip-path: inset(0 100% 0 0);
  pointer-events: none;
}

/* Hide accent sweep overlay on non-cinematic skins */
[data-skin="brutaliste"] .hero-accent-sweep__overlay,
[data-skin="retro"] .hero-accent-sweep__overlay,
[data-skin="glass"] .hero-accent-sweep__overlay {
  display: none;
}

/* ── Parallax backgrounds (CINE-07) ── */
.hero-parallax-bg {
  position: absolute;
  top: -30%;
  left: 50%;
  transform: translateX(-50%);
  width: 900px;
  height: 900px;
  background: radial-gradient(circle, rgba(213, 196, 232, 0.15) 0%, transparent 70%);
  pointer-events: none;
  will-change: transform;
  z-index: 0;
}

.parallax-blob {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(80px);
  opacity: 0;
  z-index: 0;
  will-change: transform;
}

@media (max-width: 768px), (prefers-reduced-motion: reduce) {
  .parallax-blob,
  .hero-parallax-bg {
    display: none;
  }
}

/* ── Reduced motion: card hover + CTA fill-reveal overrides ── */
@media (prefers-reduced-motion: reduce) {
  .service-card:hover,
  .sector-card:hover,
  .value-card:hover,
  .team-card:hover,
  .article-card:hover {
    transform: none;
  }

  .hero-cta::before,
  .cta-btn::before {
    display: none;
  }
}

/* ── Custom Cursor (SHARE-03, SHARE-04) ── */
.cursor-dot,
.cursor-ring {
  pointer-events: none;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
  mix-blend-mode: difference;
}

.cursor-dot {
  top: -5px;
  left: -5px;
  width: 10px;
  height: 10px;
  background: #fff;
  border-radius: 50%;
}

.cursor-ring {
  top: -20px;
  left: -20px;
  width: 40px;
  height: 40px;
  border: 1.5px solid #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.cursor-label {
  font-size: 0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #fff;
  opacity: 0;
  white-space: nowrap;
  pointer-events: none;
}

/* Hide cursor on mobile/tablet and reduced motion */
@media (max-width: 990px), (prefers-reduced-motion: reduce) {
  .cursor-dot,
  .cursor-ring {
    display: none;
  }

  body {
    cursor: auto !important;
  }
}
