/* Minimalism Nâu — portrait wedding stationery, mobile first. */
@font-face { font-family: "EB Garamond"; src: url("fonts/EBGaramond-Variable.ttf") format("truetype"); font-style: normal; font-weight: 400 800; font-display: swap; }
@font-face { font-family: "Lora"; src: url("fonts/Lora-Variable.ttf") format("truetype"); font-style: normal; font-weight: 400 700; font-display: swap; }
:root {
  --paper: #fff7f3; --paper-card: #f6eadd; --white: #fffaf3;
  --ink: #7c6a60; --green: #7c6a60; --wine: #7c6a60; --wine-dark: #69574b;
  --muted: #918077; --line: #7c6a6055; --olive-light: #f3eadd; --gold: #bca577;
  --serif: "Times New Roman", serif; --formal: "EB Garamond", "Times New Roman", serif;
  --paper-grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.045 .38' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.055' filter='url(%23p)'/%3E%3C/svg%3E");
}
html { background: #fff; scrollbar-gutter: auto; scroll-padding-block: 24px 80px; }
body.wedding-page { position: relative; max-width: 560px; margin: 0 auto; background: var(--paper); background-image: var(--paper-grain); font: 400 16px/1.6 var(--serif); color: var(--ink); box-shadow: 0 0 0 1px #7c6a6015; }
main { overflow: clip; }
.section { position: relative; padding: 35px 24px; }
.section-heading { display: block; margin: 0 0 28px; text-align: center; }
.eyebrow { font: 500 10px/1.8 var(--serif); letter-spacing: .2em; margin: 0 0 16px; color: var(--muted); }
h2, .letter-sheet h2, .gallery-heading h2, .wishes-copy h2, .gift-copy h2 { font: 700 20px/1.5 var(--serif); letter-spacing: .03em; text-transform: uppercase; color: var(--ink); }
h2 em { font-weight: 400; color: var(--ink); }
.text-link { min-height: 46px; font: 500 15px/1.5 var(--serif); }
.button { min-height: 46px; padding: 10px 23px; border-radius: 24px; border-color: var(--green); font: 600 16px/1.5 var(--serif); }
.button-primary { background: var(--green); color: #fffaf1; }
.button-primary:hover { background: #69564a; }
.page-noise, .falling-flowers { max-width: 560px; margin-inline: auto; }
.page-noise { opacity: .022; }
.falling-flowers span { color: #bca77c; text-shadow: none; }
.site-header { display: none; }
.botanical { color: #a49772; }
.floral { position: absolute; pointer-events: none; user-select: none; object-fit: contain; }
/* Tall dried flowers frame the paper edges, with slow vertical floating. */
.section-bouquet { position: absolute; display: block; z-index: 1; width: 78px; aspect-ratio: 2 / 3; pointer-events: none; user-select: none; transform: scaleX(var(--bouquet-mirror, 1)) rotate(var(--bouquet-tilt, 0deg)); }
.section-bouquet img { display: block; width: 100%; height: 100%; object-fit: contain; pointer-events: none; filter: drop-shadow(1px 3px 2px #695b4226); animation: bouquet-float var(--bouquet-duration, 7s) ease-in-out var(--bouquet-delay, 0s) infinite; }
.bouquet-letter { width: 84px; aspect-ratio: 5 / 12; bottom: -30px; right: -23px; --bouquet-tilt: -3deg; --bouquet-duration: 7.8s; --bouquet-rise: -10px; }
.bouquet-calendar { width: 68px; aspect-ratio: 5 / 12; bottom: -24px; left: -40px; --bouquet-mirror: -1; --bouquet-duration: 8.2s; --bouquet-delay: -4s; --bouquet-rise: -10px; }
.bouquet-celebration { width: 72px; top: -24px; right: -15px; --bouquet-tilt: 12deg; --bouquet-duration: 8.6s; --bouquet-delay: -3s; }
.bouquet-wishes { width: 66px; top: -12px; right: 4px; --bouquet-tilt: 16deg; --bouquet-duration: 7.2s; --bouquet-delay: -1.8s; }
.reveal-pending:not(.is-visible) .section-bouquet img { animation-play-state: paused; }
@keyframes bouquet-float { 0%, 100% { transform: translate3d(0, 0, 0); } 50% { transform: translate3d(0, var(--bouquet-rise, -6px), 0); } }
.draft-badge { position: static; width: fit-content; margin: 0 auto; padding: 4px 12px; background: #ece0d3; color: #7c6959; border: 0; border-radius: 0 0 7px 7px; box-shadow: none; font: 9px/1.6 var(--sans); letter-spacing: .02em; }

/* A taped Polaroid, dried flowers and a small golden wax heart. */
.hero { display: flex; flex-direction: column; gap: 0; padding: 44px 25px 80px; text-align: center; isolation: isolate; }
.hero-copy { width: 100%; padding: 0; z-index: 2; }
.hero .eyebrow { margin: 0 0 12px; font: 600 13px/1.5 "Cormorant Garamond", serif; letter-spacing: .16em; }
.hero h1 { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center; gap: .2em; width: 100%; margin: 0; font: italic 400 clamp(30px, 8.4vw, 37px)/1.3 var(--serif); letter-spacing: 0; color: #827771; }
.hero h1 > span, .hero h1 > span:first-child, .hero h1 > span:last-child { display: inline; padding: 0; }
.hero h1 i { position: static; transform: none; font: 400 42px/1 var(--script); color: #918077; }
.hero-leaf { position: absolute; z-index: -1; width: 165px; height: 350px; left: -65px; top: 95px; opacity: .23; transform: rotate(-16deg); }
.hero-visual { width: 81%; max-width: 365px; margin: 38px auto 0; padding: 0; transform: rotate(-4.78deg); }
.hero-visual::before { position: absolute; z-index: 4; content: ""; width: 76px; height: 25px; top: -10px; left: calc(50% - 38px); right: auto; bottom: auto; background: linear-gradient(110deg, #cfb2816e, #deccaa9c 34%, #cbb78b72 70%, #e5d4b798), var(--paper-grain); border: 0; border-radius: 0; transform: rotate(-2deg); box-shadow: 0 1px 3px #59472c0c; }
.hero-photo { aspect-ratio: .73; margin: 0; border: 9px solid #fffef9; border-bottom-width: 32px; border-radius: 1px; background: #eee4d9; box-shadow: 3px 7px 10px #4c372522; overflow: hidden; }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 52% center; }
.floral-hero-bottom { z-index: 4; width: 116px; height: 235px; left: -40px; bottom: -42px; transform: rotate(-10deg); filter: drop-shadow(1px 3px 2px #695b4220); }
.photo-seal { position: absolute; right: -18px; bottom: 10px; z-index: 5; display: grid; place-items: center; width: 63px; height: 64px; color: #ad965f; background: radial-gradient(circle at 32% 26%, #fcf2c9, #d6c18c 68%, #b29a67); border-radius: 42% 55% 43% 52% / 49% 44% 55% 43%; box-shadow: 2px 4px 5px #56422e35, inset 1px 2px 2px #fff8d9, inset -2px -2px 3px #9d875a; transform: rotate(15deg); }
.photo-seal::before { content: ""; position: absolute; inset: 6px; border: 1px solid #b5a074; border-radius: 50%; box-shadow: 0 1px 0 #fff0be; }
.photo-seal svg { width: 51px; height: 51px; fill: none; stroke: #aa935e; stroke-width: 1.8; filter: drop-shadow(1px 1px 0 #fff3c8); }
.hero-meta { display: none; }
.date-lockup { width: fit-content; margin: 0 auto; border: 0; padding: 0; gap: 12px; text-align: left; }
.date-lockup strong { font: 400 36px/1 var(--serif); }
.date-lockup > div { padding-left: 12px; gap: 2px; border-color: var(--line); }
.date-lockup span { font: 500 10px/1.5 var(--serif); letter-spacing: .1em; }
.hero-event-note { margin: 11px auto 0; font-size: 14px; color: var(--muted); }
.guest-line { font: italic 20px/1.5 var(--serif); margin: 13px 0 0; color: var(--ink); overflow-wrap: anywhere; }
.hero-link { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 44px; margin: 0; text-decoration: none; color: var(--muted); font: 10px/1.5 var(--sans); }
.hero-link span { font-size: 17px; }
html:not(.has-hero-photo) .hero-copy { margin-bottom: 20px; }

/* Raised pieces of textured paper, not arched cards. */
.invitation { display: block; padding-top: 0; padding-bottom: 0; }
.letter-aside { display: none; }
.letter-sheet { position: relative; padding: 36px 20px 40px; text-align: center; border: 0; border-radius: 13px; background: var(--paper-card); background-image: var(--paper-grain); box-shadow: 4px 4px 8px #0000002e; }
.letter-top { display: block; margin-bottom: 26px; padding: 0; border: 0; }
.letter-sheet h2 { font-size: 20px; }
.families { display: grid; grid-template-columns: 1fr 1fr; text-align: center; gap: 10px; }
.families > div + div { border-left: 1px solid #c8b9a4; padding-left: 10px; }
.families span { font-size: 12px; letter-spacing: 0; }
.families p { margin: 4px 0 0; font: 600 12px/1.6 var(--serif); }
.letter-salutation { font: italic 16px/1.5 var(--serif); margin: 24px 0 10px; color: var(--ink); overflow-wrap: anywhere; }
.formal-invitation { font: 400 14px/1.5 var(--serif); margin: 0; text-transform: uppercase; }
.formal-couple { display: flex; flex-direction: column; align-items: center; gap: 0; margin: 26px 0; font: 400 32px/1.6 var(--formal); }
.formal-couple small { font: 400 10px/1.5 var(--serif); text-transform: uppercase; color: #918077; letter-spacing: .12em; }
.formal-couple i { margin: 18px 0; font: 400 44px/1.2 var(--script); color: #9b8875; }
.formal-date p { margin: 28px 0 15px; font: 16px/1.6 var(--serif); text-transform: uppercase; }
.formal-date strong { font: 400 25px/1.5 var(--formal); }
.formal-date a { display: block; width: fit-content; margin: 18px auto 0; padding: 10px 0; font: 12px/1.5 var(--serif); text-decoration: none; }
.letter-sheet .invitation-text, .letter-sheet blockquote { display: none; }
.invitation-text { margin: 0; font: 400 17px/1.7 var(--serif); color: #786758; }
blockquote { margin: 23px 0 0; padding: 20px 0 0; font: italic 20px/1.45 var(--serif); color: var(--ink); border-color: #cfbfae; }
.letter-signature { display: none; }

/* Circular 3D coverflow: central print, angled photographs behind it. */
.gallery { padding: 40px 0; }
.gallery-heading { padding-inline: 24px; margin-bottom: 21px; }
.gallery-intro { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.gallery-intro > span { font: 10px/1.6 var(--sans); color: var(--muted); }
.gallery-grid { position: relative; display: block; height: clamp(300px, 88vw, 440px); margin: 0 24px; padding: 0; overflow: visible; perspective: 1000px; touch-action: pan-y pinch-zoom; user-select: none; -webkit-user-select: none; }
.gallery-grid figure, .gallery-grid figure:first-child, .gallery-grid figure:nth-child(2), .gallery-grid figure:nth-child(3) { position: absolute; left: 50%; top: 50%; height: 92%; width: auto; aspect-ratio: var(--photo-ratio, .667); margin: 0; min-width: 0; border-radius: 15px; transform: translate(-50%, -50%) translateX(var(--photo-x, 0%)) translateZ(var(--photo-z, 0px)) rotateY(var(--photo-angle, 0deg)) scale(var(--photo-scale, 1)); opacity: var(--photo-opacity, 1); transition: transform 1250ms cubic-bezier(.33, 0, .2, 1), opacity 1250ms cubic-bezier(.33, 0, .2, 1); will-change: transform, opacity; backface-visibility: hidden; cursor: pointer; }
.gallery-frame, .gallery-grid figure:first-child .gallery-frame, .gallery-grid figure:nth-child(2) .gallery-frame, .gallery-grid figure:nth-child(3) .gallery-frame { width: 100%; height: 100%; aspect-ratio: auto; border: 0; border-radius: 15px; box-shadow: 0 9px 20px #59463226; transform: none; overflow: hidden; }
.gallery-grid figure.is-current .gallery-frame { outline: 2px solid #ffffff60; outline-offset: -2px; }
.gallery-grid img, .gallery-grid figure:first-child img { width: 100%; height: 100%; object-fit: cover; object-position: center; transform: none; -webkit-user-drag: none; }
.gallery-grid figure:first-child img { object-position: 63% center; }
.gallery-grid figure:hover img { transform: none; }
.gallery-controls { display: flex; justify-content: center; align-items: center; gap: 12px; margin-top: 12px; }
.gallery-controls button { display: grid; place-content: center; width: 44px; height: 44px; border: 0; border-radius: 50%; color: var(--green); background: transparent; font-size: 20px; cursor: pointer; }
.gallery-controls button:disabled { opacity: .3; cursor: default; }
.gallery-controls span { min-width: 57px; text-align: center; color: var(--muted); font: 12px/1.5 var(--sans); letter-spacing: .1em; font-variant-numeric: tabular-nums; }
.gallery-controls #galleryAutoplay { width: 44px; height: 44px; margin-left: 2px; }
.gallery-controls #galleryAutoplay span { min-width: 0; font-size: 17px; letter-spacing: 0; }
.album-end { display: none; }
.gallery-grid figure, .gallery-grid figure:first-child, .gallery-grid figure:nth-child(2), .gallery-grid figure:nth-child(3) { backface-visibility: visible; aspect-ratio: .707; }
.gallery { overflow-x: clip; }
.gallery-controls { position: relative; gap: 6px; }
.gallery-controls #previousPhoto, .gallery-controls #nextPhoto { position: absolute; top: calc(-1 * clamp(300px, 88vw, 440px) / 2 - 34px); width: 34px; height: 34px; background: #fff7f3b8; border: 1px solid #7c6a6030; }
.gallery-controls #previousPhoto { left: 26px; }
.gallery-controls #nextPhoto { right: 26px; }
.gallery-controls #galleryAutoplay { opacity: .65; }
@media (max-width: 600px) {
  .gallery-controls #previousPhoto, .gallery-controls #nextPhoto { display: none; }
}

/* Three staggered flower fans: flight and petal flutter animate independently. */
.opening-bloom { position: fixed; inset: 0; z-index: 1000; overflow: hidden; pointer-events: none; }
.opening-bloom > span { position: absolute; display: block; width: var(--bloom-size); height: var(--bloom-size); opacity: 0; will-change: transform, opacity; animation: opening-bloom-flight var(--bloom-duration) linear both; animation-delay: var(--bloom-delay); }
.bloom-particle > i { display: block; width: 100%; height: 100%; animation: bloom-flutter var(--bloom-flutter) ease-in-out infinite alternate; animation-delay: var(--bloom-delay); }
.bloom-flower svg { display: block; width: 100%; height: 100%; filter: drop-shadow(0 1px 1px #836b4826); }
.bloom-petal { border-radius: 85% 18% 75% 30%; background: currentColor; box-shadow: inset 2px 1px 3px #fff9, 0 1px 2px #66513d18; }
.bloom-particle > .bloom-confetti { width: 36%; border-radius: 2px; background: linear-gradient(110deg, #d6b77d, #fff0c8, #bc9560); }
@keyframes opening-bloom-flight {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.35); animation-timing-function: cubic-bezier(.16,.65,.28,1); }
  7% { opacity: .98; }
  30% { opacity: .98; transform: translate(var(--bloom-peak-x), var(--bloom-rise)) scale(1); animation-timing-function: ease-in; }
  53% { opacity: .9; transform: translate(var(--bloom-mid-x), var(--bloom-mid-y)) scale(1); }
  78% { opacity: .8; transform: translate(var(--bloom-drift-x), var(--bloom-drift-y)) scale(.95); }
  100% { opacity: 0; transform: translate(var(--bloom-x), var(--bloom-fall)) scale(.8); }
}
@keyframes bloom-flutter { from { transform: rotate(var(--bloom-rotation)) rotateY(0deg) rotateX(18deg); } to { transform: rotate(calc(var(--bloom-rotation) + var(--bloom-spin))) rotateY(145deg) rotateX(-28deg); } }
@media (prefers-reduced-motion: reduce) { .opening-bloom { display: none; } }

.event-section { padding-top: 22px; background: transparent; color: var(--ink); border-radius: 0; }
.event-heading h2, .event-heading h2 em, .event-section .eyebrow { color: var(--ink); }
.event-heading { display: none; }
.event-heading .eyebrow { display: none; }
.event-intro { margin: 15px auto 0; max-width: 400px; color: #877464; font: 400 17px/1.65 var(--serif); }
.celebration-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 25px; }
.celebration { padding: 30px 20px; text-align: center; border: 0; border-radius: 13px; background: var(--paper-card); background-image: var(--paper-grain); box-shadow: 2px 4px 12px #69574b18; }
.celebration-paper { padding: 0; background: transparent; box-shadow: none; }
.celebration:nth-child(2) { border: 0; }
.celebration::before, .celebration::after { display: none; }
.ticket-heading { justify-content: center; }
.ticket-heading > span { display: none; }
.celebration .eyebrow { font: 700 20px/1.5 var(--serif); letter-spacing: .03em; margin: 0; color: var(--ink); }
.celebration h3 { font: 500 19px/1.5 "Lora", Georgia, serif; margin: 0 0 12px; color: var(--ink); }
.reception-welcome { margin: 0; font: italic 400 15px/1.7 "Lora", Georgia, serif; color: #8a7665; }
.reception-divider { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 17px auto; color: #b19b81; }
.reception-divider span { width: 43px; height: 1px; background: linear-gradient(90deg, transparent, #cbb79e); }
.reception-divider span:last-child { transform: scaleX(-1); }
.reception-divider svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.2; }
.celebration-detail { margin-top: 22px; padding-top: 20px; border-color: #d2c1ad; }
.label { margin-bottom: 10px; color: #7e6a59; font: 500 12px/1.5 var(--serif); letter-spacing: .055em; }
.celebration-detail strong { font: 500 25px/1.3 var(--serif); }
.celebration-detail p { font: 400 17px/1.7 var(--serif); color: #786758; margin: 8px 0 0; }
.celebration-time { border: 0; padding-top: 0; margin-top: 0; }
.celebration-time strong { font-size: 37px; }
.celebration-time .label { font: 400 13px/1.6 "Lora", Georgia, serif; letter-spacing: 0; text-transform: none; margin-bottom: 8px; }
.celebration-time > p { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.event-date-strip { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 9px; margin: 14px 0 0; text-transform: uppercase; font: 14px/1.5 var(--serif); }
.event-date-strip strong { font: 400 38px/1 var(--formal); border-inline: 1px solid #7c6a6055; padding-inline: 16px; }
.event-date-strip small { grid-column: 1 / -1; font-size: 16px; margin: 1px 0 4px; }
.celebration .venue-detail { padding: 17px 14px; margin-top: 19px; border: 1px solid #d8c8b580; border-radius: 10px; background: #fffaf44d; box-shadow: inset 0 1px 0 #fffaf580; }
.venue-detail .label { display: flex; align-items: center; justify-content: center; gap: 6px; margin-bottom: 7px; font: 400 11px/1.5 "Lora", Georgia, serif; text-transform: uppercase; letter-spacing: .06em; }
.venue-detail .label svg { width: 16px; height: 18px; flex: 0 0 16px; fill: none; stroke: currentColor; stroke-width: 1.25; }
.venue-detail strong { font: 500 17px/1.55 "Lora", Georgia, serif; overflow-wrap: anywhere; }
.venue-detail p { max-width: 300px; margin: 7px auto 0; font: 400 14px/1.65 var(--serif); }
.celebration .text-link { justify-content: center; width: 100%; margin-top: 13px; }
.celebration .reception-map { width: fit-content; min-height: 44px; margin: 6px auto -6px; padding: 8px 4px; gap: 8px; font: 400 13px/1.5 "Lora", Georgia, serif; }
.reception-map:focus-visible { outline: 2px solid #92775e; outline-offset: 3px; border-radius: 3px; }
.reception-signoff { margin: 22px auto 0; padding-top: 19px; border-top: 1px solid #cdbca54d; }
.reception-signoff p { margin: 0; font: italic 400 13px/1.75 "Lora", Georgia, serif; color: #8a7665; }
.reception-signoff > span { display: block; margin-top: 10px; font: 400 25px/1.5 var(--script); color: #806a58; }
.reception-signoff i { font-style: normal; font-size: .8em; }
.ticket-foot { display: none; }
.shared-calendar { margin: 23px 0 0; text-align: center; }
.calendar-paper { position: relative; width: 100%; max-width: 340px; margin: 0 auto; }
.calendar-month-nav { display: flex; justify-content: center; align-items: center; gap: 20px; margin-bottom: 10px; font: 13px/1.5 var(--sans); }
.calendar-month-nav button { width: 44px; height: 44px; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; }
.calendar-month-nav button:disabled { opacity: .3; cursor: default; }
.wedding-calendar { margin-top: 0; padding: 23px 15px 19px; background: #87776b; color: #fffaf1; border-radius: 12px; box-shadow: inset 0 1px 0 #ffffff24; }
.wedding-calendar table { width: 100%; table-layout: fixed; border-collapse: collapse; font: 400 17px/1.5 "Lora", Georgia, serif; font-variant-numeric: lining-nums tabular-nums; }
.wedding-calendar caption { font: 400 23px/1.5 "Lora", Georgia, serif; letter-spacing: 0; padding: 0 0 18px; color: inherit; }
.wedding-calendar th { padding: 10px 0; font: 500 12px/1.5 "Lora", Georgia, serif; border-top: 1px solid #fff4e52e; border-bottom: 1px solid #fff4e52e; color: #fff5e8; }
.wedding-calendar td { height: 40px; position: relative; text-align: center; }
.wedding-calendar td span { display: inline-grid; place-items: center; width: min(33px, 100%); height: 33px; position: relative; z-index: 1; padding: 0; line-height: 1; }
.wedding-day::before { content: none; }
.wedding-calendar .wedding-day span { width: 36px; height: 34px; border-radius: 0; padding-bottom: 4px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 36'%3E%3Cpath d='M20 33C17 30 3 21 3 12C3 2 15 1 20 9C25 1 37 2 37 12C37 21 23 30 20 33Z' fill='%23fff5e7' stroke='%23ddc5ae' stroke-width='.8'/%3E%3C/svg%3E") center / contain no-repeat; color: #6c5547; font-size: 15px; font-weight: 500; box-shadow: none; }
.calendar-link { display: flex; justify-content: flex-start; gap: 12px; width: min(100%, 274px); min-height: 66px; margin: 23px auto 0; padding: 11px 13px; border: 1px solid #d8c6b3; border-radius: 12px; background: #fcf5eb; background-image: var(--paper-grain); color: #786354; text-align: left; box-shadow: 0 3px 9px #69574b0b, inset 0 1px 0 #fffaf7; transition: background-color .25s ease, border-color .25s ease, box-shadow .25s ease; }
.calendar-link:hover { background-color: #f1e4d3; border-color: #bba58e; box-shadow: 0 4px 12px #69574b14; }
.calendar-link:focus-visible { outline: 2px solid #92775e; outline-offset: 4px; }
.calendar-link-icon { display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 40px; border-radius: 9px; background: #efe2d0; color: #8f765d; }
.calendar-link svg { fill: none; stroke: currentColor; stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; }
.calendar-link-icon svg { width: 25px; height: 25px; }
.calendar-link-copy { display: grid; gap: 3px; min-width: 0; }
.calendar-link-copy > span { font: 400 14px/1.45 "Lora", Georgia, serif; }
.calendar-link-copy small { font: 400 10px/1.5 var(--sans); letter-spacing: .035em; color: #998675; }
.calendar-link-arrow { flex: 0 0 14px; width: 14px; height: 14px; margin-left: auto; color: #aa937b; }
.celebration .calendar-link { position: relative; z-index: 2; margin-top: 30px; }
.celebration #rsvpLink { display: flex; width: fit-content; margin: 18px auto 0; }
.countdown { display: block; text-align: center; margin: 33px 0 0; padding: 28px 15px; border: 1px solid #e1d3c2; border-radius: 8px; background: #f3eadd; color: var(--ink); }
.countdown .eyebrow { color: var(--muted); font: 500 10px/1.7 var(--sans); letter-spacing: .11em; }
.countdown h2 { font: italic 400 25px/1.3 var(--serif); text-transform: none; letter-spacing: -.02em; color: var(--ink); }
.countdown h2 br { display: none; }
.countdown h2 em { color: var(--ink); }
.countdown-grid { margin-top: 22px; }
.countdown-grid > div { border-color: #d1beab; padding-inline: 4px; }
.countdown-grid > div:first-child { border: 0; }
.countdown-grid strong { font: 400 37px/1.15 var(--serif); }
.countdown-grid span { font: 9px/1.5 var(--sans); color: #8c7867; margin-top: 8px; }
.countdown-finished { font: italic 21px/1.5 var(--serif); }

.wishes { display: block; background: transparent; padding-top: 65px; }
.wishes-copy { position: relative; min-height: 86px; padding: 20px 64px 20px; text-align: center; }
.wishes-copy > p:not(.eyebrow) { display: none; }
.wishes-signature { display: none; }
.wishes-form { max-width: 340px; margin: 30px auto 0; padding: 16px; border: 0; background: #fffaf650; box-shadow: 0 3px 15px #7c6a600a; border-radius: 8px; }
.wishes-form > label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.wishes-form input[type="text"], .wishes-form textarea { font: 400 16px/1.5 var(--serif); padding: 12px 14px; border: 1px solid #7c6a60; border-radius: 8px; color: var(--ink); background: transparent; }
.wishes-form textarea { min-height: 96px; margin-top: 16px; resize: vertical; }
.wishes-form ::placeholder { color: #a18f7d; }
.wishes-privacy { margin: 2px 0 0; font: 12px/1.65 var(--serif); color: #806f64; }
.wish-actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 8px; }
.wish-actions .button { width: auto; border-radius: 999px; text-transform: uppercase; letter-spacing: 0; min-height: 44px; font: 600 14px/1.5 var(--serif); padding: 9px 20px; }
#suggestWish, #refreshWishes { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; padding: 0; border: 0; border-radius: 8px; background: #7c6a6018; color: var(--ink); font-size: 19px; cursor: pointer; }
.wishes-form .wish-publish { position: static; display: flex; align-items: center; gap: 8px; width: auto; height: auto; min-height: 44px; margin: 10px 0 0; overflow: visible; clip-path: none; cursor: pointer; font: 12px/1.5 var(--serif); }
.wish-publish input { width: 18px; height: 18px; flex: 0 0 18px; accent-color: #7c6a60; margin: 0; }
.wish-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.guestbook-board { margin: 42px auto 0; max-width: 600px; }
.guestbook-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.guestbook-heading h3 { margin: 0; font: 400 16px/1.5 var(--serif); }
#wishTotal { color: var(--muted); font-size: 12px; }
.wish-list { display: grid; align-content: start; gap: 12px; max-height: 500px; overflow-y: auto; overscroll-behavior-y: contain; padding-right: 5px; scrollbar-width: thin; scrollbar-color: #b9a697 transparent; }
.wish-card { padding: 16px; border: 1px solid #7c6a6055; border-radius: 8px; background: #ffffff8c; font: 14px/1.65 var(--serif); overflow-wrap: anywhere; }
.wish-card > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.wish-card strong { font-weight: 600; }
.wish-card time { flex-shrink: 0; max-width: 46%; font-size: 11px; color: #97877b; text-align: right; }
.wish-card p { margin: 8px 0 0; white-space: pre-wrap; }
.wish-list-status { margin: 0 0 12px; padding: 18px 14px; border: 1px dashed #cbb9a7; border-radius: 8px; text-align: center; color: #8d7b6d; font: 14px/1.7 var(--serif); }
.wish-list-status:empty { display: none; }
.wish-more { display: block; margin: 18px auto 0; background: transparent; font-size: 14px; }
.wish-status { font: 13px/1.65 var(--sans); }

.gift { display: flex; flex-direction: column; gap: 15px; padding-top: 34px; padding-bottom: 22px; }
.gift-copy { order: -1; text-align: center; }
.gift-copy > p:not(.eyebrow), .gift-open { display: none; }
.gift-copy > p:not(.eyebrow) { font: 400 17px/1.7 var(--serif); color: #897564; margin: 16px auto 0; }
.gift-open { font-size: 14px; margin-top: 10px; }
.gift-preview, .gift-preview:hover { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 200px; min-height: 200px; margin: 0 auto; padding: 30px 15px 10px; border: 0; background: transparent; box-shadow: none; transform: none; }
.gift-preview::before { display: none; }
.gift-preview-hint { font: 13px/1.7 var(--serif); letter-spacing: .03em; text-transform: none; margin-top: 22px; color: var(--muted); }
.present-box { position: relative; display: block; width: 110px; height: 91px; border-radius: 4px; background: linear-gradient(90deg, #a4866b, #c3a585 45%, #b49576); box-shadow: 0 10px 16px #65503b23; }
.present-box { animation: gift-float 4.8s ease-in-out infinite; }
@keyframes gift-float { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-6px) rotate(1deg); } }
.present-box::before { position: absolute; content: ""; inset: -30px -12px 48px; border-radius: 50%; background: radial-gradient(ellipse, #fff0cbbf, #f5dba73b 48%, transparent 72%); opacity: 0; transform: translateY(8px) scale(.8); transition: opacity 560ms ease, transform 680ms cubic-bezier(.22,.68,.25,1); }
.present-box::after { position: absolute; top: 0; bottom: 0; left: 44px; width: 22px; background: linear-gradient(90deg, #e1c9a2, #f6e7c6 50%, #dfc599); content: ""; }
.present-top { position: absolute; z-index: 2; inset: 0; transform-origin: 80% 0; transition: transform 680ms cubic-bezier(.22,.68,.25,1); }
.present-lid { position: absolute; z-index: 2; top: -8px; left: -5px; width: 120px; height: 23px; background: linear-gradient(90deg, #b79773, #c9ad88); border-radius: 4px; box-shadow: 0 3px 4px #6d54372a; }
.present-lid::after { content: ""; position: absolute; left: 49px; width: 22px; height: 23px; background: #eddbb6; }
.present-bow { position: absolute; z-index: 3; top: -38px; left: 17px; width: 76px; height: 34px; }
.present-bow::before, .present-bow::after { position: absolute; content: ""; width: 38px; height: 24px; border: 7px solid #dfcba5; border-radius: 55% 55% 8% 55%; transform: rotate(24deg); box-shadow: inset 1px 1px 0 #fff0cf; }
.present-bow::after { right: 0; transform: scaleX(-1) rotate(24deg); }
.present-heart { position: absolute; z-index: 3; right: 10px; bottom: 10px; color: #fff0d6; font: 27px/1 var(--serif); }
.gift-preview:focus-visible { outline: 1px solid #a58a70; outline-offset: 5px; border-radius: 18px; }
@media (hover: hover) and (pointer: fine) {
  .gift-preview:not(.is-unwrapping):hover .present-top { transform: translateY(-4px) rotate(-2deg); }
}
.gift-preview.is-unwrapping .present-box { animation-play-state: paused; }
.gift-preview.is-unwrapping .present-top { transform: translate(5px, -30px) rotate(-9deg); }
.gift-preview.is-unwrapping .present-box::before { opacity: 1; transform: translateY(-5px) scale(1.1); }

.closing { padding: 0 24px; }
.closing-card, .closing-card.has-photo { display: block; background: transparent; }
.closing-photo { display: none; }
.closing-copy { display: block; padding: 0; border: 0; text-align: center; }
.closing-copy > :not(#rsvpLink) { display: none; }
.closing-copy .eyebrow { display: none; }
.closing-copy h2 { font: 500 32px/1.3 var(--script); text-transform: none; letter-spacing: 0; }
.closing-copy h2 em { font-style: normal; }
.closing-warmth { color: #897563; font: 400 17px/1.7 var(--serif); margin: 20px 0; }
.closing-events { font: 15px/1.8 var(--serif); gap: 4px; padding-top: 17px; border-color: #ddccba; }
.closing-schedule { font-size: 14px; margin: 7px 0 17px; }
#closingMessage { font: 15px/1.8 var(--serif); color: #897563; margin-bottom: 20px; }
.closing-signature { font: 500 30px/1.5 var(--script); }
.wedding-footer { display: flex; flex-direction: column; text-align: center; margin: 0; padding: 25px 32px calc(86px + env(safe-area-inset-bottom)); border: 0; gap: 9px; }
.footer-emblem, .footer-date { display: none; }
.footer-names { display: block; order: 1; font: 400 22px/1.5 var(--formal); }
.footer-thanks { margin-top: 8px; font: 400 14px/1.7 var(--serif); color: var(--ink); }
.music-credit { font: 10px/1.7 var(--sans); margin-top: 10px; }

/* Discreet floating controls leave the whole width to the invitation. */
.invitation-dock { position: fixed; z-index: 35; right: max(14px, calc((100vw - 560px) / 2 + 14px)); bottom: max(15px, env(safe-area-inset-bottom)); left: auto; transform: none; display: flex; flex-direction: column; gap: 8px; width: 47px; padding: 0; background: transparent; border: 0; box-shadow: none; pointer-events: none; }
.invitation-dock > a { display: none; }
.invitation-dock > button { position: static; flex: none; display: grid; place-items: center; pointer-events: auto; width: 47px; height: 47px; min-height: 47px; padding: 0; margin: 0; border: 1px solid #f6eadb80; border-radius: 50%; color: #fff7e7; background: #806d60e8; box-shadow: 0 3px 9px #5d48342b; }
.invitation-dock > button > span:not(.music-disc) { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.invitation-dock .book-toggle { order: -1; width: 44px; height: 44px; min-height: 44px; justify-self: center; background: #f3e8dcbf; color: #806d60; box-shadow: none; border-color: #d1bdA8; }
.invitation-dock svg { width: 20px; height: 20px; stroke: currentColor; stroke-width: 1.35; stroke-linecap: round; stroke-linejoin: round; fill: none; }
.invitation-dock .music-disc { width: 30px; height: 30px; border: 0; font-size: 23px; }
body.book-locked .invitation-dock, body:has(dialog[open]) .invitation-dock { visibility: hidden; }
.music-status { bottom: 120px; right: max(16px, calc((100vw - 560px) / 2 + 16px)); left: auto; max-width: min(270px, 83vw); padding: 9px 12px; background: #fffaf1; color: var(--ink); font: 12px/1.6 var(--sans); }
.youtube-music-panel { bottom: 120px; right: max(16px, calc((100vw - 560px) / 2 + 16px)); }
.modal { width: min(calc(100% - 24px), 500px); border-radius: 11px; background: var(--paper); background-image: var(--paper-grain); }
.modal-content { padding: 52px 24px 28px; }
.modal-close { min-width: 44px; min-height: 44px; border-color: #cdb89f; }
/* Full-viewport overlay, compact floating stationery; the close button never scrolls away. */
#giftDialog { position: fixed; inset: 0; width: 100%; max-width: none; height: 100%; height: 100dvh; max-height: none; margin: 0; padding: max(20px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); border: 0; border-radius: 0; overflow: hidden; background: transparent; box-shadow: none; opacity: 0; transform: none; transition: opacity 380ms ease; }
#giftDialog[open] { display: grid; place-items: center; }
#giftDialog::backdrop { background: rgb(44 34 28 / 68%); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px); opacity: 0; transition: opacity 380ms ease; }
#giftDialog .gift-card { display: flex; flex-direction: column; width: min(100%, 360px); min-height: 0; max-height: 100%; border: 1px solid #e5d5be; border-radius: 23px; overflow: hidden; background: radial-gradient(ellipse at 50% 0%, #fffdf7, #f7ecde 100%); box-shadow: 0 28px 80px #20170f50, inset 0 0 0 5px #fffaf460; transform: translateY(22px) scale(.96); transition: transform 560ms cubic-bezier(.2,.75,.25,1); }
.gift-card-top { display: flex; flex: 0 0 auto; align-items: center; justify-content: space-between; padding: 10px 10px 0 22px; }
.gift-card-kicker { font: 500 10px/1.5 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: #99836c; }
#giftDialog .modal-close { position: static; flex: 0 0 44px; background: #fffaf3bf; color: #78614f; border-color: #d8c5ae; font: 300 27px/1 var(--sans); }
#giftDialog .modal-content { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 5px 22px 24px; scrollbar-width: thin; }
#giftDialog h2 { max-width: 260px; margin: 0 auto; font: 400 24px/1.35 "Lora", Georgia, serif; letter-spacing: -.025em; text-transform: none; color: #755e4f; }
#giftDialog .qr-frame { width: min(208px, 54vw); margin: 18px auto 0; padding: 10px; border: 1px solid #e4d7c5; border-radius: 13px; background: #fff; box-shadow: 0 6px 20px #8a6d4710; }
#giftDialog .qr-frame img { display: block; width: 100%; height: auto; object-fit: contain; border-radius: 3px; }
#giftDialog .qr-demo-stamp { bottom: 9px; right: -9px; padding: 4px 7px; font: 600 10px/1.4 var(--sans); border-width: 1px; }
#giftDialog .bank-details { margin-top: 15px; gap: 3px; overflow-wrap: anywhere; }
#giftDialog .bank-details span { font: 12px/1.6 var(--sans); }
#giftDialog .bank-details strong { font: 500 21px/1.4 var(--formal); letter-spacing: .03em; }
#giftDialog .bank-details code { font: 12px/1.6 var(--sans); }
#giftDialog #copyAccount { min-height: 44px; margin-top: 13px; padding: 9px 18px; font: 500 13px/1.5 var(--sans); }
#giftDialog .modal-note { margin: 13px auto 0; max-width: 270px; font: 11px/1.65 var(--sans); color: #917d6a; }
#giftDialog.is-visible { opacity: 1; }
#giftDialog.is-visible .gift-card { transform: translateY(0) scale(1); }
#giftDialog.is-visible::backdrop { opacity: 1; }
#giftDialog.is-closing, #giftDialog.is-closing .gift-card, #giftDialog.is-closing::backdrop { transition-duration: 260ms; transition-timing-function: ease-in-out; }
.image-modal { border-radius: 3px; background: #201c18; }
.image-modal img { min-height: 160px; }

/* The opening card still opens automatically, at the user's slower pace. */
.book-intro { max-width: none; margin: 0; background: transparent; }
.book-intro::before { position: absolute; inset: 0; content: ""; background: radial-gradient(ellipse at 30% 20%, #f0e4d6, #deccba); opacity: 1; transition: opacity 900ms ease; }
.book-intro.is-opening::before { opacity: 0; transition-delay: 850ms; }
.book-scene { display: grid; place-items: center; padding: 20px 18px; }
.invitation-book { position: relative; inset: auto; width: min(100%, 310px); height: 444px; border-radius: 8px; background: #fcf8f3; background-image: var(--paper-grain); box-shadow: 0 25px 60px -12px #00000073, 0 8px 24px #00000033; animation: invitation-arrive 550ms ease-out both; }
.invitation-door { display: none; }
.intro-dried { position: absolute; pointer-events: none; width: 90px; height: 180px; top: -5px; object-fit: contain; opacity: .8; }
.intro-dried-left { left: -20px; --sprig-mirror: 1; --sprig-shift: -60px; --sprig-tilt: -18deg; transform: rotate(18deg); }
.intro-dried-right { top: auto; bottom: -4px; right: -14px; --sprig-mirror: -1; --sprig-shift: 60px; --sprig-tilt: 18deg; transform: scaleX(-1) rotate(18deg); }
.intro-letter { top: 104px; bottom: auto; left: 18px; right: 18px; color: var(--ink); }
.intro-letter::before { content: none; }
.intro-heart-seal { position: absolute; z-index: 3; top: 19px; left: calc(50% - 25px); display: block; width: 50px; height: 50px; }
.intro-heart-seal > span { position: absolute; inset: 0; display: grid; place-items: center; border-radius: 50%; color: #fffcf6; background: #806d60; font: 27px/1 var(--serif); box-shadow: 0 5px 15px #66503f33; }
.intro-heart-seal::after { content: ""; position: absolute; inset: 0; border: 2px solid #a28b77; border-radius: 50%; opacity: 0; }
.book-cover-kicker { display: none; }
.book-cover-names { display: flex; flex-direction: column; gap: 0; margin: 10px 0 0; font: 400 30px/1.15 var(--formal); }
.book-cover-names i { font: italic 21px/1.1 var(--serif); color: var(--muted); }
.intro-bottom { top: 231px; left: 26px; right: 26px; }
.intro-bottom::before { content: "❦"; display: block; margin: -22px auto 12px; width: 90px; font: 14px/1 var(--serif); color: #ad9a8b; }
.book-cover-date { font: 400 19px/1.5 var(--serif); letter-spacing: .025em; color: var(--muted); }
.book-cover { top: 320px; left: 50%; bottom: auto; width: 148px; height: 47px; border-radius: 99px; transform: translateX(-50%); color: #fffaf3; background: #7c6a60; box-shadow: 0 5px 12px #806d6038; overflow: hidden; }
.book-cover::after { content: ""; position: absolute; inset: 0; transform: translateX(-130%); background: linear-gradient(100deg, transparent 20%, #fff6e850 50%, transparent 80%); animation: invitation-shine 3s ease-in-out infinite; }
.book-cover .wax-seal { display: none; }
.intro-open-label { font: 600 18px/1.5 var(--serif); }
.intro-open-label span { padding-left: 8px; }
.book-intro-hint { margin: 20px 0 0; font: 16px/1.4 var(--serif); color: #8b7563; }
.intro-music-note { position: absolute; top: 150px; left: 0; right: 0; margin: 0; font: 9px/1.5 var(--sans); color: #a18c78; }
.invitation-book.is-open { pointer-events: none; animation: invitation-unseal 1900ms cubic-bezier(.22,.61,.36,1) both; }
.invitation-book.is-open .intro-heart-seal > span { animation: invitation-seal-release 600ms ease-in both; }
.invitation-book.is-open .intro-heart-seal::after { animation: invitation-seal-ring 750ms ease-out both; }
.invitation-book.is-open .intro-dried { animation: invitation-sprig-flight 1450ms 180ms ease-in both; }
.invitation-book.is-open .intro-letter, .invitation-book.is-open .intro-bottom { opacity: 1; transform: none; }
.invitation-book.is-open .book-cover { opacity: 1; transform: translateX(-50%); }
.invitation-entering .hero-copy { animation: invitation-copy-reveal 900ms 850ms ease-out both; }
.invitation-entering .hero-visual { animation: invitation-photo-reveal 1000ms 850ms cubic-bezier(.2,.65,.25,1) both; }
@keyframes invitation-arrive { from { opacity: 0; transform: translateY(16px) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes invitation-unseal { 0%, 22% { opacity: 1; transform: none; } 52% { opacity: 1; transform: translateY(-9px) scale(1.055); } 100% { opacity: 0; transform: translateY(-42px) scale(1.2); } }
@keyframes invitation-seal-release { 0% { opacity: 1; transform: none; } 35% { opacity: 1; transform: scale(1.15) rotate(7deg); } 100% { opacity: 0; transform: scale(1.65) rotate(-12deg); } }
@keyframes invitation-seal-ring { from { opacity: .8; transform: scale(1); } to { opacity: 0; transform: scale(2.6); } }
@keyframes invitation-sprig-flight { from { opacity: .8; transform: translate(0, 0) scaleX(var(--sprig-mirror)) rotate(-9deg); } to { opacity: 0; transform: translate(var(--sprig-shift), -50px) scaleX(var(--sprig-mirror)) rotate(var(--sprig-tilt)) scale(2.15); } }
@keyframes invitation-shine { 0%, 60% { transform: translateX(-130%); } 100% { transform: translateX(130%); } }
@keyframes invitation-copy-reveal { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@keyframes invitation-photo-reveal { from { opacity: 0; transform: translateY(38px) scale(.92) rotate(-7deg); } to { opacity: 1; transform: rotate(-4deg); } }

@media (min-width: 480px) {
  .bouquet-letter { width: 126px; right: -34px; bottom: -34px; }
  .bouquet-calendar { width: 100px; left: -70px; bottom: -28px; }
  .section { padding-inline: 42px; }
  .hero { padding-top: 40px; }
  .hero h1 { font-size: 46px; }
  .hero-visual { width: 76%; }
  .hero-leaf { left: -45px; width: 205px; height: 430px; }
  .floral-hero-bottom { width: 145px; height: 280px; left: -45px; bottom: -40px; }
  .letter-sheet { padding: 40px 35px; }
  .gallery { padding-inline: 0; }
  .celebration { padding-inline: 24px; }
}
@media (max-width: 350px) {
  .bouquet-letter { width: 76px; right: -17px; bottom: -26px; }
  .bouquet-calendar { width: 50px; left: -30px; bottom: -20px; }
  .bouquet-celebration { width: 62px; right: -12px; top: -25px; }
  .bouquet-wishes { width: 58px; right: -2px; }
  .wishes-copy { padding-inline: 44px; }
  .section { padding-inline: 18px; }
  .hero { padding-inline: 20px; }
  .hero h1 { font-size: 38px; }
  .hero-visual { width: 84%; }
  .floral-hero-bottom { width: 98px; height: 204px; left: -30px; bottom: -37px; }
  .photo-seal { width: 55px; height: 56px; right: -14px; }
  .photo-seal svg { width: 44px; height: 44px; }
  .letter-sheet { padding-inline: 18px; }
  .celebration { padding-inline: 18px; }
  .families p { font-size: 12px; }
  .gallery { padding-inline: 0; }
  .wedding-calendar { padding-inline: 10px; }
  .wedding-calendar .wedding-day span { width: 28px; height: 28px; font-size: 13px; padding-bottom: 3px; }
  .countdown-grid strong { font-size: 32px; }
  .intro-dried { width: 88px; }
  .book-cover-kicker { font-size: 8px; }
}
@media (max-height: 560px) {
  .invitation-book { height: 380px; }
  .intro-letter { top: 65px; }
  .intro-heart-seal { top: 14px; width: 36px; height: 36px; left: calc(50% - 18px); }
  .intro-heart-seal > span { font-size: 21px; }
  .book-cover-names { margin-top: 8px; flex-direction: row; font-size: 31px; gap: 8px; }
  .intro-bottom { top: 148px; }
  .book-cover { top: 202px; }
  .book-intro-hint { margin-top: 94px; }
  .intro-dried { height: 190px; }
}
@media (prefers-reduced-motion: reduce) {
  .section-bouquet img { animation: none; }
  .gallery-grid figure { transition: none !important; will-change: auto; }
  .present-box { animation: none; }
  .present-top, .present-box::before, #giftDialog, #giftDialog .gift-card, #giftDialog::backdrop { transition: none; }
  .gift-preview.is-unwrapping .present-top, #giftDialog, #giftDialog .gift-card { transform: none; }
  .invitation-book, .invitation-book.is-open, .invitation-book.is-open .intro-heart-seal > span, .invitation-book.is-open .intro-heart-seal::after, .invitation-book.is-open .intro-dried, .book-cover::after, .invitation-entering .hero-copy, .invitation-entering .hero-visual { animation: none; }
  .book-intro::before { transition: none; }
  .invitation-book.is-open { opacity: 0; }
}
