/* ── Animazioni ─────────────────────────────────────────── */
@keyframes float {
  0%, 100% { transform: translateY(0px) rotate(-2deg); }
  50%       { transform: translateY(-14px) rotate(2deg); }
}
@keyframes floatB {
  0%, 100% { transform: translateY(0px) rotate(3deg); }
  50%       { transform: translateY(-10px) rotate(-3deg); }
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}
@keyframes sparkle {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .4; transform: scale(.7); }
}
@keyframes confettiFall {
  0%   { transform: translateY(-20px) rotate(0deg); opacity: 1; }
  100% { transform: translateY(100vh) rotate(720deg); opacity: 0; }
}

.float-a  { animation: float  3.8s ease-in-out infinite; }
.float-b  { animation: floatB 4.6s ease-in-out infinite; }
.float-c  { animation: float  5.2s ease-in-out infinite 0.8s; }
.float-d  { animation: floatB 4.1s ease-in-out infinite 1.3s; }
.fade-up  { animation: fadeInUp .7s ease forwards; }

.sparkle-1 { animation: sparkle 2s ease-in-out infinite; }
.sparkle-2 { animation: sparkle 2s ease-in-out infinite .6s; }
.sparkle-3 { animation: sparkle 2s ease-in-out infinite 1.2s; }

/* ── Testi con gradiente ─────────────────────────────────── */
.gradient-text {
  background: linear-gradient(135deg, #ec4899, #8b5cf6, #06b6d4);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.shimmer-text {
  background: linear-gradient(90deg, #ec4899 0%, #8b5cf6 30%, #ec4899 60%, #f59e0b 100%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* ── Sfondi ──────────────────────────────────────────────── */
.hero-bg {
  background-color: #fffbfe;
  background-image: radial-gradient(rgba(236,72,153,.07) 1.2px, transparent 1.2px);
  background-size: 26px 26px;
}

/* Blob morbidi hero */
.hero-blob {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
}

/* Dot e stelle decorative hero */
.hdot {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  z-index: 0;
  opacity: .55;
  display: block;
}
.hdot-star {
  position: absolute;
  width: 14px;
  height: 14px;
  pointer-events: none;
  z-index: 0;
  opacity: .38;
  display: block;
  clip-path: polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);
}
.section-dots {
  background-image: radial-gradient(circle, #e9d5ff 1px, transparent 1px);
  background-size: 28px 28px;
}
.section-wavy {
  background: linear-gradient(180deg, #fff7ed 0%, #fdf4ff 100%);
}
.ribbon-pink {
  background: linear-gradient(135deg, #fce7f3, #fdf4ff);
  border-left: 4px solid #f472b6;
}

/* ── Carte ───────────────────────────────────────────────── */
.card-glass {
  background: rgba(255,255,255,.85);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.9);
}
.card-hover {
  transition: transform .25s, box-shadow .25s;
}
.card-hover:hover {
  transform: translateY(-6px);
  box-shadow: 0 24px 50px rgba(168,85,247,.15);
}
.card-event:hover { box-shadow: 0 20px 40px rgba(236,72,153,.15); }

/* ── Bottoni ─────────────────────────────────────────────── */
.btn-main {
  background: linear-gradient(135deg, #ec4899 0%, #8b5cf6 100%);
  box-shadow: 0 8px 24px rgba(236,72,153,.35);
  transition: transform .2s, box-shadow .2s;
}
.btn-main:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(236,72,153,.45);
}
.btn-outline {
  border: 2px solid #f472b6;
  color: #ec4899;
  transition: background .2s;
}
.btn-outline:hover { background: #fce7f3; }

/* ── Step indicator ──────────────────────────────────────── */
.step-dot-active {
  background: linear-gradient(135deg, #ec4899, #8b5cf6);
  box-shadow: 0 4px 12px rgba(236,72,153,.4);
}

/* ── Input focus ─────────────────────────────────────────── */
input:focus, select:focus, textarea:focus {
  box-shadow: 0 0 0 3px rgba(236,72,153,.18);
}

/* ── Decorazioni flottanti hero ──────────────────────────── */
.deco-wrap {
  pointer-events: none;
  position: absolute;
  inset: 0;
  overflow: hidden;
}
.deco {
  position: absolute;
  font-size: 2.2rem;
  opacity: .55;
  user-select: none;
}

/* ── Badge nastro ────────────────────────────────────────── */
.badge-nastro {
  position: relative;
  display: inline-block;
}
.badge-nastro::before, .badge-nastro::after {
  content: '';
  position: absolute;
  top: 50%; transform: translateY(-50%);
  width: 20px; height: 2px;
  background: #f472b6;
}
.badge-nastro::before { right: 100%; margin-right: 8px; }
.badge-nastro::after  { left: 100%;  margin-left:  8px; }

/* ── Divisore ondulato ────────────────────────────────────── */
.wave-divider {
  width: 100%;
  overflow: hidden;
  line-height: 0;
}
.wave-divider svg { display: block; width: 100%; }

/* ── Scrollbar dolce ──────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: #fdf4ff; }
::-webkit-scrollbar-thumb { background: #e879f9; border-radius: 999px; }
