/* Saved text may be longer than the art-directed demo. No clipping of guest facts. */
[hidden] { display: none !important; }
.keepsake-copy, .keepsake-story-items, .event-name, .event-place, .event-note, .event-description, .event-dress, .timeline-title, .timeline-note { overflow-wrap: anywhere; white-space: pre-line; }
.keepsake-copy { max-width: 34rem; margin: 1rem auto; text-align: center; line-height: 1.65; }
.keepsake-story-items { max-width: 34rem; margin: 1.5rem auto; text-align: center; }
.keepsake-story-items article { margin: 1.5rem 0; }
.keepsake-event-map { display: inline-block; margin-top: .7rem; text-underline-offset: .2em; }
.keepsake-rsvp-events { border: 0; padding: .5rem 0; margin: .5rem 0; min-width: 0; }
.keepsake-rsvp-events legend { font-size: .9rem; margin-bottom: .5rem; }
.keepsake-rsvp-event { display: flex !important; gap: .7rem; align-items: center; text-align: left; margin: .5rem 0; }
.keepsake-rsvp-event input { width: 1rem !important; height: 1rem; flex: 0 0 1rem; }
.keepsake-error { max-width: 32rem; margin: 20vh auto; padding: 2rem; text-align: center; }
#rsvp-status { overflow-wrap: anywhere; }
#rsvp-form input[type=email] { box-sizing: border-box; max-width: 100%; }

h1, h2, [data-config], [data-bride], [data-groom], [data-initials] { overflow-wrap: anywhere; }

/* Explicit catalog static/save-data mode is independent of OS motion settings. */
html.keepsake-static-preview, html.keepsake-static-preview *, html.keepsake-static-preview *::before, html.keepsake-static-preview *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }

/* Optional customer photographs sit on the invitation's own paper. The
   artwork stays intact and the collection never reserves empty photo slots. */
.keepsake-photo-section { padding: 76px clamp(20px, 5vw, 42px); text-align: center; }
.keepsake-photo-section > h2 { font: inherit; font-family: var(--serif, Georgia, serif); font-size: clamp(34px, 7vw, 54px); font-weight: 400; line-height: 1.15; margin: 14px 0 32px; }
.keepsake-photo-section > .eyebrow { font-size: 10px; letter-spacing: .18em; text-transform: uppercase; }
.keepsake-photo-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: clamp(20px, 4vw, 34px); max-width: 780px; margin: 0 auto; align-items: start; }
.keepsake-photo { min-width: 0; margin: 0; padding: 10px 10px 14px; background: var(--paper, #faf7ef); border: 1px solid currentColor; border-color: color-mix(in srgb, currentColor 18%, transparent); box-shadow: 0 5px 18px #38251b0c; }
.keepsake-photo img { display: block; width: 100%; height: auto; max-height: 560px; object-fit: contain; }
.keepsake-photo figcaption { margin-top: 13px; font-family: var(--serif, Georgia, serif); font-size: 19px; line-height: 1.45; white-space: pre-line; overflow-wrap: anywhere; }
