.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;
}

/* Letra rosinha no convite fechado, conforme a cliente. */
body .envelope-screen .open-envelope span,
body .envelope-screen .open-envelope:hover span {
  color: #cc7898 !important;
  -webkit-text-fill-color: #cc7898 !important;
  background: #fffaf5 !important;
  border-color: #ead8d6 !important;
  text-shadow: none !important;
  box-shadow: 0 6px 18px rgba(137, 99, 92, .14) !important;
}

/* Hero em papel floral com escrita bronze, sem sombra. */
body .invitation.invitation.invitation .hero {
  background: #f7f0e5 url('./hero-papel-floral.png') center / cover no-repeat !important;
}
body .invitation.invitation.invitation .hero .hero-wash,
body .invitation.invitation.invitation .hero .hero-flowers { display: none !important; }
body .invitation.invitation.invitation .hero .hero-title,
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: #855d39 !important;
  -webkit-text-fill-color: #855d39 !important;
  text-shadow: none !important;
}
body .invitation.invitation.invitation .hero .hero-title { animation: none !important; }
.hero-letter { opacity: 0; }
.hero-writing .hero-letter { animation: hero-letter-appear 800ms ease both; animation-delay: var(--hero-letter-delay); }
@keyframes hero-letter-appear { from { opacity: 0; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
 .hero-letter { opacity: 1; animation: none !important; }
}

body .invitation.invitation.invitation .hero .hero-title .hero-letter {
  display: inline !important;
  font: inherit !important;
  line-height: inherit !important;
  letter-spacing: inherit !important;
}

/* Ordem do texto conforme a referência da cliente. */
body .invitation.invitation.invitation .hero .hero-title { text-align: center; padding: 0 16px; }
body .invitation.invitation.invitation .hero .hero-title h1 { margin: 0 0 36px; line-height: 1.05 !important; }
body .invitation.invitation.invitation .hero .hero-title h1 .hero-name {
  display: block; font: inherit !important; font-size: clamp(3.3rem, 14vw, 4.1rem) !important; line-height: 1.05 !important; white-space: nowrap;
}
body .invitation.invitation.invitation .hero .hero-title h1 .hero-amp {
  display: block; font-size: 2.6rem !important; line-height: .85 !important;
}
body .invitation.invitation.invitation .hero .hero-title .hero-invite-copy,
body .invitation.invitation.invitation .hero .hero-title .hero-event-date,
body .invitation.invitation.invitation .hero .hero-title .hero-event-time {
  color: #855d39 !important; -webkit-text-fill-color: #855d39 !important; text-shadow: none !important; font-family: Ovo, Georgia, serif;
}
.hero-invite-copy { font-size: 17px; line-height: 1.65; margin: 0 0 22px; }
.hero-event-date { font-size: clamp(20px, 5.5vw, 25px); font-weight: 700; margin: 0 0 8px; }
.hero-event-time { font-size: 19px; margin: 0; letter-spacing: .04em; }
body .invitation.invitation.invitation .hero .scroll-link { margin-top: 36px; }
body .invitation.invitation.invitation .hero .scroll-label { display: block; white-space: nowrap; }

/* Bênção dos pais e encerramento na sequência aprovada. */
body .invitation.invitation.invitation .welcome .blessing-parents {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); margin-top: 36px; gap: 0;
}
body .invitation.invitation.invitation .welcome .blessing-parents p {
  font-family: Ovo, Georgia, serif; font-size: clamp(12px, 3.3vw, 15px) !important;
  text-transform: uppercase; letter-spacing: .07em; line-height: 1.8 !important; padding: 0 12px;
}
.blessing-parents p + p { border-left: 1px solid #b89356; }
body .invitation.invitation.invitation .couple-website,
body .invitation.invitation.invitation .dress-code { background: transparent !important; text-align: center; }
.couple-site-link { display: flex; flex-direction: column; align-items: center; gap: 18px; text-decoration: none; color: #855d39; }
.couple-site-link img { width: 150px; height: 150px; object-fit: contain; margin: 20px 0 4px; }
.couple-site-link .script { font-size: 2rem; }
.site-caption { text-transform: uppercase; font-size: 12px; letter-spacing: .15em; }
.dress-code p { font-family: Ovo, Georgia, serif; font-size: 16px; line-height: 1.7; }
body .invitation.invitation.invitation .verse-finale { min-height: 320px !important; padding: 60px 28px 90px !important; background: transparent !important; }
body .invitation.invitation.invitation .verse-finale .verse-card { position: relative; width: 100% !important; max-width: 360px !important; margin: 0 auto !important; }

/* Papel floral único do início ao encerramento, com proporção preservada. */
body .invitation.invitation.invitation {
  background: #f5eee2 url('./papel-floral-v8-continuo.svg') center top / 100% auto repeat-y scroll !important;
}
body .invitation.invitation.invitation > section,
body .invitation.invitation.invitation .hero,
body .invitation.invitation.invitation .countdown,
body .invitation.invitation.invitation .verse-finale {
  background: transparent !important;
  background-image: none !important;
  -webkit-mask-image: none !important;
  mask-image: none !important;
}
body .invitation .couple-site-link img {
  width: 160px; height: 160px; object-fit: contain;
}

/* Espaçamento compacto e o mesmo bronze sólido da outra versão. */
body .invitation.invitation.invitation .hero {
  min-height: 0 !important;
  padding: 72px 20px 36px !important;
}
body .invitation.invitation.invitation .welcome {
  min-height: 0 !important;
  width: 100% !important;
  box-sizing: border-box;
  margin: 0 !important;
  padding: 36px 26px 48px !important;
}
body .invitation.invitation.invitation h2,
body .invitation.invitation.invitation .couple-site-link .script {
  background: none !important;
  -webkit-text-fill-color: #8f7540 !important;
  color: #8f7540 !important;
  text-shadow: none !important;
}
body .invitation.invitation.invitation .blessing-parents p,
body .invitation.invitation.invitation .blessing-parents span,
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 {
  color: #705b49 !important;
  text-shadow: none !important;
}
body .invitation.invitation.invitation .welcome .blessing-parents { margin-top: 24px; }
body .invitation.invitation.invitation .timeline-track,
body .invitation.invitation.invitation .timeline-dot { background: #b6975d !important; border-color: #b6975d !important; }
body .invitation.invitation.invitation .timeline-rose { filter: drop-shadow(0 4px 7px #98702433) !important; }

/* Títulos dos mapas em uma linha, com endereços livres para quebrar. */
body .invitation.invitation.invitation .location .map-card > span:not(.map-pin) {
  white-space: nowrap !important;
  font-size: clamp(11px, 3.15vw, 14px) !important;
  line-height: 1.4 !important;
}

body .invitation .map-card .map-address-city { white-space: nowrap; }

/* Letras originais da cliente na hero. */
body .invitation.invitation.invitation .hero .hero-title h1 { margin-bottom: 20px !important; }
.hero-couple-lettering { display: block; width: 100%; max-width: 390px; height: auto; margin: 0 auto; }
.invitation-open .hero-couple-lettering { animation: lettering-reveal 2.8s ease both; }
@keyframes lettering-reveal { from { opacity: 0; } to { opacity: 1; } }
.dress-code-button { display: inline-flex; align-items: center; justify-content: center; padding: 14px 28px; margin: 20px auto 0; border: 1px solid #a47e32; border-radius: 8px; background: linear-gradient(135deg, #8b601c, #c7983c 35%, #d9b767 55%, #91621d); color: white; text-decoration: none; font-family: Ovo, Georgia, serif; font-size: 16px; box-shadow: 0 8px 18px #98702430; }
@media (prefers-reduced-motion: reduce) { .invitation-open .hero-couple-lettering { animation: none; } }

/* Todos os botões no mesmo pink da confirmação e dos presentes. */
body .invitation.invitation.invitation .location .map-card,
body .invitation.invitation.invitation .location .map-card:hover,
body .invitation.invitation.invitation .dress-code-button,
body .invitation.invitation.invitation .dress-code-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;
}
