/* ========== BASE & RESET ========== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 80px; }
body { min-height: 100vh; }
img { max-width: 100%; height: auto; display: block; }

/* ========== HERO GRADIENT ========== */
.hero-gradient {
  background: linear-gradient(135deg, #7B2D3B 0%, #c22635 30%, #ec8072 60%, #f9cfc0 85%, #fde4da 100%);
  background-size: 200% 200%;
  animation: gradientShift 12s ease infinite;
}

@keyframes gradientShift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

/* ========== FLOATING HERO SHAPES ========== */
.hero-shape {
  position: absolute;
  border-radius: 50%;
  opacity: 0.12;
  pointer-events: none;
  will-change: transform;
}

.shape-1 {
  width: 420px; height: 420px;
  background: radial-gradient(circle, #fce4e8, transparent 70%);
  top: -80px; right: -100px;
  animation: float1 8s ease-in-out infinite;
}

.shape-2 {
  width: 280px; height: 280px;
  background: radial-gradient(circle, #fde4da, transparent 70%);
  bottom: 10%; left: -60px;
  animation: float2 10s ease-in-out infinite;
}

.shape-3 {
  width: 180px; height: 180px;
  background: radial-gradient(circle, #f9c2ca, transparent 70%);
  top: 30%; left: 10%;
  animation: float3 7s ease-in-out infinite;
}

.shape-4 {
  width: 120px; height: 120px;
  background: radial-gradient(circle, #fdf0f2, transparent 70%);
  bottom: 20%; right: 15%;
  animation: float1 9s ease-in-out infinite reverse;
}

@keyframes float1 {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(20px, -30px) scale(1.05); }
}
@keyframes float2 {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  50% { transform: translate(-15px, 20px) rotate(5deg); }
}
@keyframes float3 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(10px, -15px); }
}

/* ========== NAVBAR ========== */
#navbar {
  background: transparent;
  transition: background 0.3s ease, box-shadow 0.3s ease, padding 0.3s ease;
}

#navbar.scrolled {
  background: rgba(253, 248, 246, 0.92);
  backdrop-filter: blur(12px);
  box-shadow: 0 1px 20px rgba(123, 45, 59, 0.08);
  padding-top: 0;
  padding-bottom: 0;
}

#navbar.scrolled .font-serif {
  color: #7B2D3B !important;
}

/* ========== MOBILE MENU ========== */
.menu-line { display: block; }

#mobile-menu.open .menu-line:nth-child(1) {
  transform: translateY(calc(0.375rem + 2px)) rotate(45deg);
}
#mobile-menu.open .menu-line:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}
#mobile-menu.open .menu-line:nth-child(3) {
  transform: translateY(calc(-0.375rem - 2px)) rotate(-45deg);
  width: 1.25rem;
}

.mobile-link {
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s;
}
.mobile-link:hover {
  border-bottom-color: #f9c2ca;
}

/* ========== REVEAL ANIMATIONS ========== */
.reveal {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1), transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}

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

/* Default state for below-fold reveals — hidden until JS adds class */
@media (prefers-reduced-motion: no-preference) {
  .reveal {
    opacity: 0;
    transform: translateY(24px);
  }
  .reveal.revealed {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ========== GALLERY HOVER ========== */
.group:hover .group-hover\:scale-110 {
  transform: scale(1.1);
}

/* ========== CUSTOM SCROLLBAR ========== */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #FDF8F6; }
::-webkit-scrollbar-thumb { background: #f9c2ca; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #f4969f; }

/* ========== FOCUS VISIBLE ========== */
*:focus-visible {
  outline: 2px solid #f9c2ca;
  outline-offset: 2px;
  border-radius: 4px;
}

/* ========== SELECTION ========== */
::selection {
  background: #fce4e8;
  color: #7B2D3B;
}
