/* ============================================================
   MOMENTI INTERIOR — animations.css
   Cursore custom · Scroll reveal · Particelle hero · Grain
   ============================================================ */

/* ── NASCONDI CURSORE NATIVO (solo desktop) ── */
@media (pointer: fine) {
  *, *::before, *::after { cursor: none !important; }
}

/* ── CUSTOM CURSOR ── */
.cursor {
  position: fixed;
  top: -5px;
  left: -5px;
  width: 10px;
  height: 10px;
  background: var(--color-gold);
  border-radius: 50%;
  pointer-events: none;
  z-index: 2147483646;
  transition: width 0.25s ease, height 0.25s ease, background 0.25s ease, top 0.25s ease, left 0.25s ease;
  will-change: transform;
}

.cursor-follower {
  position: fixed;
  top: -18px;
  left: -18px;
  width: 36px;
  height: 36px;
  border: 1px solid rgba(201, 169, 110, 0.5);
  border-radius: 50%;
  pointer-events: none;
  z-index: 2147483645;
  transition: width 0.35s ease, height 0.35s ease, border-color 0.35s ease, top 0.35s ease, left 0.35s ease;
  will-change: transform;
}

.cursor.is-hovered {
  width: 6px;
  height: 6px;
  top: -3px;
  left: -3px;
  background: var(--color-gold-light);
}

.cursor-follower.is-hovered {
  width: 56px;
  height: 56px;
  top: -28px;
  left: -28px;
  border-color: rgba(201, 169, 110, 0.8);
}


/* ── GRAIN OVERLAY (texture su tutto il sito) ── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 9997;
  pointer-events: none;
  opacity: 0.028;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 180px 180px;
}

/* ── SCROLL REVEAL ── */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.75s cubic-bezier(0.25, 0.46, 0.45, 0.94),
    transform 0.75s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

[data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0);
}

/* ── GOLD LINE DIVIDER animato ── */
.section-tag {
  position: relative;
  overflow: hidden;
}

.section-tag::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0%;
  height: 1px;
  background: var(--color-gold);
  opacity: 0.5;
  transition: width 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.3s;
}

.section-tag.is-revealed::after,
[data-reveal].is-revealed .section-tag::after {
  width: 100%;
}

/* ── HERO CONTENT: stagger entrance ── */
.hero__subtitle {
  opacity: 0;
  transform: translateY(16px);
  animation: heroFadeIn 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.4s forwards;
}

.hero__title {
  opacity: 0;
  transform: translateY(20px);
  animation: heroFadeIn 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.7s forwards;
}

.hero__text {
  opacity: 0;
  transform: translateY(16px);
  animation: heroFadeIn 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 0.95s forwards;
}

.hero__cta {
  opacity: 0;
  transform: translateY(14px);
  animation: heroFadeIn 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 1.15s forwards;
}

.hero__scroll {
  opacity: 0;
  animation: heroFadeIn 0.9s cubic-bezier(0.25, 0.46, 0.45, 0.94) 1.6s forwards;
}

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

/* ── ABOUT STATS: contatore visivo ── */
.about-stat__number {
  display: inline-block;
  transition: transform 0.4s ease;
}

.about-stat:hover .about-stat__number {
  transform: scale(1.08);
}

/* ── NAV: linea dorata animata al caricamento ── */
.nav__logo-text {
  position: relative;
  overflow: hidden;
}

.nav__logo-text::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--color-gold);
  transition: width 0.6s ease;
  opacity: 0.5;
}

.nav__brand:hover .nav__logo-text::after {
  width: 100%;
}

/* ── MOBILE: disabilita cursor custom e grain ── */
@media (pointer: coarse) {
  .cursor, .cursor-follower { display: none; }
}