:root {
  --brand: #c2185b;
  --bg: #fffbfb;
  --text: #4a4a4a;
  --line: #f1e1e6;
}

* { box-sizing: border-box; }
body { 
  margin: 0; font-family: 'Montserrat', sans-serif; 
  background: var(--bg); color: var(--text); overflow-x: hidden; 
}

.script { font-family: 'Great Vibes', cursive; color: var(--brand); font-size: 32px; }
.serif { font-family: 'Playfair Display', serif; }
.serif-italic { font-family: 'Playfair Display', serif; font-style: italic; }
.center { text-align: center; }
.wrapper { max-width: 480px; margin: 0 auto; position: relative; z-index: 1; }

/* Gate - Màn hình chào */
.gate { 
  position: fixed; inset: 0; background: #fff; z-index: 9999; 
  display: flex; align-items: center; justify-content: center; 
  transition: opacity 0.8s ease, visibility 0.8s;
}
.gateCircle { 
  width: 85vw; height: 85vw; max-width: 350px; max-height: 350px; 
  border: 1px solid var(--line); border-radius: 50%; 
  display: flex; flex-direction: column; align-items: center; justify-content: center; 
  padding: 20px; text-align: center; box-shadow: 0 10px 40px rgba(194, 24, 91, 0.05);
}
.btn-open { 
  background: var(--brand); color: #fff; border: none; padding: 12px 30px; 
  border-radius: 50px; font-weight: 500; cursor: pointer; margin-top: 20px;
}

/* Card Styling */
.card { 
  background: #fff; margin: 20px 15px; padding: 30px 20px; 
  border-radius: 40px 10px 40px 10px; border: 1px solid rgba(194, 24, 91, 0.1);
  box-shadow: 0 10px 30px rgba(0,0,0,0.02);
}

/* Cover */
.section-cover { text-align: center; padding: 50px 20px; }
.main-photo img { 
  width: 100%; border-radius: 200px 200px 30px 30px; 
  box-shadow: 0 20px 50px rgba(194, 24, 91, 0.15); 
}
.names-hero { margin: 30px 0; font-size: 40px; display: flex; align-items: center; justify-content: center; gap: 10px; }
.date-hero { border-top: 1px solid var(--line); padding-top: 15px; letter-spacing: 4px; font-weight: 500; }

/* Family Section */
.twoCol { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 20px; }
.miniCard { text-align: center; border-right: 1px solid var(--line); padding-right: 10px; }
.miniCard:last-child { border-right: none; }
.miniTitle { color: var(--brand); font-weight: 600; font-size: 13px; margin-bottom: 8px; letter-spacing: 1px; }
.miniCard p { margin: 4px 0; font-size: 13px; }

/* Calendar & Schedule */
.ceremonyTimeGrid { display: flex; align-items: center; justify-content: center; gap: 20px; margin: 30px 0; }
.mid { border-left: 1px solid var(--line); border-right: 1px solid var(--line); padding: 0 20px; }
.midDay { font-size: 50px; font-weight: 700; line-height: 1; color: var(--brand); }
.midMonth { font-size: 12px; letter-spacing: 2px; }
.calGrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; text-align: center; }
.calCell { padding: 8px 0; font-size: 13px; border-radius: 50%; }
.calHighlight { background: var(--brand); color: #fff; font-weight: 700; }

/* Map */
.mapWrap { height: 250px; border-radius: 25px; overflow: hidden; border: 4px solid #fff; box-shadow: 0 5px 15px rgba(0,0,0,0.05); }
.mapWrap iframe { width: 100%; height: 100%; border: 0; }

/* Gift Cards */
.giftGrid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.flipCard { height: 200px; perspective: 1000px; }
.flipInner { position: relative; width: 100%; height: 100%; transition: 0.8s; transform-style: preserve-3d; cursor: pointer; }
.isFlipped { transform: rotateY(180deg); }
.flipFront, .flipBack { 
  position: absolute; inset: 0; backface-visibility: hidden; border-radius: 20px; 
  display: flex; flex-direction: column; align-items: center; justify-content: center; 
  background: #fff; border: 1px solid var(--line);
}
.flipBack { transform: rotateY(180deg); background: #fffafb; padding: 15px; text-align: center; }
.flipBack img { width: 90px; margin-bottom: 10px; }
.bankName { font-weight: 700; font-size: 12px; margin: 0; color: var(--brand); }
.bankNo { font-size: 11px; margin: 4px 0; }

/* Music Floating Button */
.music-control { 
  position: fixed; bottom: 25px; left: 25px; width: 45px; height: 45px; 
  background: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; 
  box-shadow: 0 5px 15px rgba(0,0,0,0.1); cursor: pointer; z-index: 1000;
}

/* Hiệu ứng hoa rơi */
#leaf-container { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.leaf { 
  position: absolute; width: 15px; height: 15px; background: #ffd1dc; 
  border-radius: 50% 0 50% 50%; opacity: 0.6; animation: fall linear infinite;
}
@keyframes fall {
  0% { transform: translateY(-10vh) rotate(0deg); opacity: 1; }
  100% { transform: translateY(110vh) rotate(360deg); opacity: 0; }
}