.hero { background: url('./hero-garden-poster.jpg') center / cover !important; }
.hero-title h1 { font-size: clamp(3rem, 12vw, 4.5rem) !important; line-height: 1.15; }
.hero-title .date { font-size: 1rem; }
body .invitation .welcome h2, body .invitation .welcome p { color: #000000 !important; text-shadow: none !important; }
.scroll-blur { opacity: 1 !important; filter: none !important; transform: none !important; }
.verse-section { min-height: 280px; background: #eee7f5 !important; }
.verse-overlay { display: none; }
.verse-card { position: relative; }
.verse-text { white-space: pre-line; }
.timeline li:last-child time { font-size: .85rem; }
#rsvp-form { display: grid; gap: 12px; text-align: left; }
#rsvp-form label { color: #000000; font-size: .95rem; }
#guest-name { width: 100%; box-sizing: border-box; padding: 14px; border: 1px solid #ed4b92; border-radius: 8px; background: white; font: inherit; color: #000000; }
#rsvp-form button { cursor: pointer; border: none; font: inherit; background: #e82e83; color: white; }
.rsvp-contact { display: inline-block; margin-top: 20px; color: #000000; }
.music-toggle[hidden] { display: none !important; }
body .hero .garden-video { display: block !important; width: 100%; height: 100%; opacity: 1 !important; object-fit: cover; }
body .hero .hero-wash { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; background: linear-gradient(180deg, #ffffff55, #ffffff33 70%, #fff) !important; }
.invitation-veil { position: fixed; inset: 0; width: 100%; height: 100dvh; object-fit: cover; mix-blend-mode: multiply; opacity: .42; z-index: 20; pointer-events: none; }
.video-unavailable { display: none !important; }
.reveal-on-scroll { opacity: 0; transform: translateY(28px); transition: opacity .9s ease, transform .9s ease; }
.reveal-on-scroll.is-visible { opacity: 1; transform: translateY(0); }
.invitation-open .hero-title { animation: invitation-title 1.5s ease both; }
.hero-flowers img { animation: flower-sway 7s ease-in-out infinite alternate; transform-origin: bottom center; }
@keyframes invitation-title { from { opacity: 0; transform: translateY(24px); filter: blur(6px); } to { opacity: 1; transform: translateY(0); filter: blur(0); } }
@keyframes flower-sway { from { transform: rotate(-2deg); } to { transform: rotate(2deg); } }
@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll { opacity: 1; transform: none; transition: none; }
  .invitation-open .hero-title, .hero-flowers img { animation: none; }
}

/* Paleta solicitada: pink, preto e dourado nas manuscritas. */
:root {
  --mc-green: #e82e83;
  --mc-green-dark: #000;
  --mc-olive: #e82e83;
  --mc-olive-dark: #000;
  --fj-ink: #000 !important;
  --fj-rose-dark: #000 !important;
  --fj-rose: #ed4b92 !important;
  --wine: #e82e83 !important;
  --primary: #e82e83 !important;
  --ink: #000 !important;
}
body .invitation.invitation.invitation p, body .invitation.invitation.invitation label, body .invitation.invitation.invitation input,
body .invitation.invitation.invitation .date, body .invitation.invitation.invitation h3, body .invitation.invitation.invitation .clock span,
body .invitation.invitation.invitation .clock small, body .invitation.invitation.invitation .timeline time,
body .invitation.invitation.invitation .timeline li > span:last-child, body .invitation.invitation.invitation .rsvp-contact {
  color: #000 !important;
  text-shadow: none !important;
}
body .music-toggle, body .music-toggle:hover,
body .open-envelope span, body .open-envelope:hover span,
body .invitation.invitation.invitation .map-card, body .invitation.invitation.invitation .map-link,
body .invitation.invitation.invitation .pix-copy-button, body .invitation.invitation.invitation .rsvp-button,
body #rsvp-form button, body .invitation.invitation.invitation .rsvp-button:hover {
  background: linear-gradient(180deg, #f45a9c, #df2276) !important;
  border-color: #df2276 !important;
  color: #fff !important;
  box-shadow: 0 10px 22px rgba(223,34,118,.22) !important;
  text-shadow: none !important;
}
body .invitation.invitation.invitation .map-card span, body .invitation.invitation.invitation .map-card small {
  color: #fff !important;
  text-shadow: none !important;
}
body .invitation.invitation.invitation .rsvp-panel { border-color: #f4a2c5 !important; }
body .invitation.invitation.invitation h1, body .invitation.invitation.invitation h1 span,
body .invitation.invitation.invitation h2, body .invitation.invitation.invitation .script {
  background-image: linear-gradient(160deg, #785014 0%, #b98524 20%, #f4d47c 39%, #a87317 56%, #e9c464 75%, #805117 100%) !important;
  background-clip: text !important;
  -webkit-background-clip: text !important;
  color: transparent !important;
  -webkit-text-fill-color: transparent !important;
  text-shadow: none !important;
}

/* Texto da hero branco com sombra rosa suave. */
body .invitation.invitation.invitation .hero .hero-title h1,
body .invitation.invitation.invitation .hero .hero-title h1 span,
body .invitation.invitation.invitation .hero .hero-title .script,
body .invitation.invitation.invitation .hero .hero-title .date {
  background: none !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
  text-shadow: 0 2px 3px rgba(151, 75, 103, .65), 0 5px 12px rgba(225, 134, 166, .7), 0 9px 22px rgba(232, 160, 185, .45) !important;
}

/* Mantém as três etapas nas mesmas colunas, inclusive no celular. */
body .invitation .timeline-scene .timeline li {
  grid-template-columns: minmax(0, 1fr) 26px minmax(0, 1.5fr);
}
body .invitation .timeline-scene .timeline li > * { min-width: 0; }
body .invitation .timeline-scene .timeline li:last-child time {
  font-size: 1.05rem !important;
  line-height: 1.35;
  white-space: normal;
  overflow-wrap: normal;
  text-wrap: balance;
}

/* Dourado nos mapas da cerimônia e recepção. */
body .invitation.invitation.invitation .location .map-card,
body .invitation.invitation.invitation .location .map-card:hover {
  background: linear-gradient(135deg, #8b601c 0%, #c7983c 30%, #efd184 50%, #c29537 72%, #91621d 100%) !important;
  border-color: #b18735 !important;
  box-shadow: 0 10px 22px rgba(151, 110, 34, .25) !important;
}

/* Ícones dos mapas sem o quadrado rosa. */
body .invitation.invitation.invitation .location .map-card .map-pin {
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  box-shadow: none !important;
}

/* Versículo sem painel roxo, revelado letra por letra. */
body .invitation.invitation.invitation .verse-section,
body .invitation.invitation.invitation .verse-card {
  background: transparent !important;
  background-image: none !important;
}
.verse-letter { opacity: 0; }
.is-typing .verse-letter { animation: verse-letter-in 650ms ease both; animation-delay: var(--letter-delay); }
@keyframes verse-letter-in { from { opacity: 0; filter: blur(3px); } to { opacity: 1; filter: blur(0); } }
@media (prefers-reduced-motion: reduce) {
  .verse-letter { opacity: 1; animation: none !important; }
}

/* Foto inteira com o versículo sobre a área branca superior. */
body .invitation.invitation.invitation .verse-with-couple {
  display: block !important;
  padding: 0 !important;
  min-height: 0 !important;
  overflow: hidden;
  background: #fff !important;
}
.couple-full-photo {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}
body .invitation.invitation.invitation .verse-with-couple .verse-card {
  position: absolute;
  top: clamp(20px, 6vw, 30px);
  left: 50%;
  transform: translateX(-50%) !important;
  width: calc(100% - 48px) !important;
  max-width: 370px !important;
  margin: 0 !important;
  padding: 0 !important;
}
body .invitation.invitation.invitation .verse-with-couple .verse-text {
  margin: 0 !important;
  font-size: clamp(14px, 3.8vw, 17px) !important;
  line-height: 1.75 !important;
}

/* Boas-vindas e programação sem o papel roxo. */
body .invitation.invitation.invitation .welcome,
body .invitation.invitation.invitation .schedule {
  background: transparent !important;
  background-image: none !important;
}
body .invitation.invitation.invitation .welcome::before,
body .invitation.invitation.invitation .welcome::after,
body .invitation.invitation.invitation .schedule::before,
body .invitation.invitation.invitation .schedule::after {
  background: none !important;
  background-image: none !important;
}

/* Uma única textura contínua por trás das seções transparentes. */
body .invitation.invitation.invitation {
  background: #f4f3f0 url('./papel-fundo-continuo.png') center top / 100% 100% no-repeat !important;
}
body .invitation.invitation.invitation .welcome,
body .invitation.invitation.invitation .schedule,
body .invitation.invitation.invitation .location,
body .invitation.invitation.invitation .rsvp {
  background: transparent !important;
  background-image: none !important;
}

/* Textura proporcional em uma camada contínua, sem esticar na altura. */
body .invitation.invitation.invitation {
  background: #f4f3f0 url('./papel-fundo-continuo.png') center top / cover no-repeat fixed !important;
}
/* As bordas das imagens se misturam ao mesmo papel de fundo. */
body .invitation.invitation.invitation .hero {
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 calc(100% - 110px), transparent 100%);
  mask-image: linear-gradient(to bottom, #000 0%, #000 calc(100% - 110px), transparent 100%);
}
body .invitation.invitation.invitation .countdown {
  background-color: transparent !important;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 35px, #000 calc(100% - 35px), transparent 100%);
  mask-image: linear-gradient(to bottom, transparent 0%, #000 35px, #000 calc(100% - 35px), transparent 100%);
}
body .invitation.invitation.invitation .verse-with-couple {
  background: transparent !important;
}
.couple-full-photo {
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, transparent 10%, #000 29%, #000 100%);
  mask-image: linear-gradient(to bottom, transparent 0%, transparent 10%, #000 29%, #000 100%);
}

/* Ilustrações inteiras dos locais, integradas ao papel. */
body .invitation .location .venue-illustration {
  display: block;
  width: 100%;
  max-width: 370px;
  height: auto;
  object-fit: contain;
  margin: 20px auto 24px;
}

/* Halo rosa amplo por trás dos textos para leitura sobre o vídeo. */
body .invitation.invitation.invitation .hero .hero-wash {
  display: block !important;
  background: radial-gradient(ellipse at 50% 43%, rgba(149, 63, 99, .39) 0%, rgba(181, 91, 126, .32) 33%, rgba(211, 139, 166, .17) 57%, transparent 79%) !important;
  backdrop-filter: blur(2px) !important;
  -webkit-backdrop-filter: blur(2px) !important;
  -webkit-mask-image: radial-gradient(ellipse at 50% 43%, #000 25%, #000b 60%, transparent 88%);
  mask-image: radial-gradient(ellipse at 50% 43%, #000 25%, #000b 60%, transparent 88%);
}
body .invitation.invitation.invitation .welcome h2 {
  font-size: clamp(2.5rem, 10.5vw, 2.9rem) !important;
  line-height: 1.18 !important;
  max-width: 100% !important;
  margin-bottom: 30px !important;
}
body .invitation.invitation.invitation .welcome p {
  font-size: clamp(16px, 4.3vw, 18px) !important;
  line-height: 1.65 !important;
  max-width: 340px !important;
}
