.rsvp-section .rsvp-card { background: #fff8f012; border: 1px solid #fff8f055; border-radius: 24px; box-shadow: 0 16px 36px rgba(0, 0, 0, .25); color: var(--cream); max-width: 620px; padding: clamp(2rem, 6vw, 3.5rem); text-align: left; }.rsvp-section .rsvp-heart { align-content: center; background: #fff8f014; border: 1px solid #fff8f055; border-radius: 50%; color: var(--cream); font-family: var(--font-serif); font-size: 2.7rem; height: 72px; margin: -4.5rem auto 1rem; outline: 9px solid #fff8f00f; text-align: center; width: 72px; }.rsvp-section .rsvp-card h3, .rsvp-section .family-name { color: var(--cream); font-family: var(--font-serif); font-size: 2rem; font-weight: 400; text-align: center; }.rsvp-section .rsvp-card-subtitle, .rsvp-section .rsvp-deadline { color: var(--gold-light); font-size: .66rem; letter-spacing: .16em; text-align: center; }.rsvp-section .family-name { font-size: 1.25rem; font-style: italic; margin: 1rem 0 2rem; }.rsvp-section .rsvp-form { gap: 1.25rem; }.rsvp-section .rsvp-form label, .rsvp-section .rsvp-form legend, .rsvp-section .field-label { color: var(--cream); font-size: .68rem; letter-spacing: .13em; }.rsvp-section .rsvp-form input[type=text], .rsvp-section .rsvp-form textarea { background: transparent; border: 0; border-bottom: 1px solid #fff8f088; color: var(--cream); padding: .65rem 0; }.rsvp-section .rsvp-form input::placeholder { color: #fff8f099; }.rsvp-section .rsvp-form fieldset { border-top: 1px solid #fff8f055; padding-top: 1rem; }.rsvp-section .rsvp-form fieldset label, .rsvp-section .guest-choice { align-items: center; border-bottom: 1px solid #fff8f044; color: var(--cream); display: flex; font-family: var(--font-serif); font-size: 1.15rem; gap: .7rem; letter-spacing: 0; padding: .65rem 0; text-transform: none; }.rsvp-section .guest-choice { display: grid; grid-template-columns: auto 1fr; }.rsvp-section .guest-menu { background: #fff8f012; border: 1px solid #fff8f055; color: var(--cream); grid-column: 2; margin-top: .25rem; padding: .5rem; }.rsvp-section .guest-menu option { color: var(--text-dark); }.rsvp-section .rsvp-submit { background: var(--cream); border: 6px double var(--beige-dark); color: var(--burgundy); cursor: pointer; font-size: .72rem; font-weight: 600; letter-spacing: .16em; padding: 1rem; text-transform: uppercase; }.rsvp-section .form-status { color: var(--cream); }.rsvp-section .form-status.is-error { color: #ffd4d4; }.rsvp-section .form-status.is-success { color: #dcf2cb; }.rsvp-section .rsvp-deadline { border-top: 1px solid #fff8f044; margin: 1.5rem 0 0; padding-top: 1rem; }.rsvp-section .rsvp-menu-instruction { color: var(--gold-light); font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; letter-spacing: .02em; margin: -.25rem 0 .75rem; }

.rsvp-section.is-public-notice { align-content: center; display: grid; min-height: 440px; }.rsvp-section.is-public-notice .public-rsvp-notice { color: var(--cream); font-family: var(--font-serif); font-size: clamp(1.5rem, 4vw, 2.2rem); font-style: italic; line-height: 1.5; margin: auto; max-width: 560px; }.rsvp-section.is-public-notice .section-heading { display: none; }.rsvp-section.is-public-notice .rsvp-card { background: transparent; border: 0; box-shadow: none; max-width: 620px; padding: 0; }.rsvp-section .rsvp-card.is-public-notice { align-content: center; display: grid; min-height: 210px; text-align: center; }.rsvp-section .is-public-notice .rsvp-heart, .rsvp-section .is-public-notice h3, .rsvp-section .is-public-notice .rsvp-card-subtitle, .rsvp-section .is-public-notice .family-name, .rsvp-section .is-public-notice .rsvp-deadline, .rsvp-section .is-public-notice .rsvp-notice-box { display: none; }.rsvp-section .is-public-notice .form-status { font-family: var(--font-serif); font-size: 1.45rem; font-style: italic; line-height: 1.5; margin: 0 auto; max-width: 430px; }

.photo-sharing-section .section-heading { margin-bottom: 2rem; }.photo-share-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); margin: auto; max-width: 680px; padding: clamp(2rem, 6vw, 3.5rem); }.vintage-camera { width: min(88vw, 290px); margin: 0 auto 1.4rem; position: relative; cursor: default; }.camera-svg { width: 100%; height: auto; display: block; overflow: visible; }.camera-polaroid { transition: transform .45s cubic-bezier(0.34, 1.4, 0.64, 1); }.photo-share-card:hover .camera-polaroid { transform: translate(93px, 2px); }.photo-share-description { font-family: var(--font-serif); font-size: 1.25rem; font-style: italic; line-height: 1.5; margin: 0 auto 1.7rem; max-width: 560px; }.photo-hashtag-wrap { margin: -0.6rem auto 1.6rem; }.photo-hashtag-badge { align-items: center; background: #fff8f0; border: 1px solid var(--gold); border-radius: 999px; color: var(--burgundy); display: inline-flex; font-size: .76rem; font-weight: 600; gap: .45rem; letter-spacing: .1em; padding: .45rem 1.15rem; text-transform: uppercase; }.photo-upload-form { display: grid; justify-items: center; }.photo-upload-form input { height: 1px; opacity: 0; position: absolute; width: 1px; }.photo-upload-label, .photo-submit { background: #fffdfb; border: 1px solid var(--gold-dark); color: var(--burgundy); cursor: pointer; font-size: .72rem; font-weight: 600; letter-spacing: .18em; padding: 1rem 1.5rem; text-transform: uppercase; }.photo-upload-label { outline: 1px solid var(--gold-dark); outline-offset: -6px; }.photo-submit { margin-top: .75rem; }.photo-file-name { color: #78636b; font-size: .86rem; margin: .85rem 0 0; }.photo-upload-form .form-status { margin-bottom: 0; }.qr-divider { align-items: center; color: #8d7b81; display: flex; font-size: .64rem; font-weight: 600; gap: 1rem; letter-spacing: .16em; margin: 2rem 0; }.qr-divider::before, .qr-divider::after { background: var(--beige-dark); content: ''; flex: 1; height: 1px; }.photo-qr-panel { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 12px 28px rgba(58, 42, 42, .12); display: grid; height: min(72vw, 290px); margin: auto; place-items: center; width: min(72vw, 290px); padding: 1.25rem; text-decoration: none; transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }.photo-qr-panel:hover { transform: translateY(-3px); box-shadow: 0 18px 38px rgba(58, 42, 42, .18); border-color: var(--burgundy); }.photo-qr-art { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }.qr-code-svg { width: 100%; height: 100%; display: block; }.qr-title { color: var(--burgundy); font-family: var(--font-serif); font-size: 1.5rem; margin: 1.5rem 0 .2rem; }.qr-note { font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; margin: 0; }

.guestbook-section .guestbook-heading { margin-bottom: 1.8rem; }
.guestbook-subtitle { font-family: var(--font-serif); font-size: 1.2rem; font-style: italic; line-height: 1.5; color: var(--cream); max-width: 620px; margin: .5rem auto 0; }
.guestbook-wrapper { max-width: 720px; margin: 0 auto; padding: 0 1rem; }
.guestbook-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 40px rgba(22, 6, 10, .35); padding: clamp(1.8rem, 5vw, 3rem); color: var(--text-dark); text-align: center; position: relative; }
.guestbook-badge { display: inline-block; background: var(--burgundy); color: var(--cream); font-size: .65rem; font-weight: 700; letter-spacing: .14em; padding: .35rem .85rem; border-radius: 999px; text-transform: uppercase; margin-bottom: .85rem; box-shadow: 0 4px 10px rgba(107, 44, 62, .2); }
.guestbook-seal { width: 56px; height: 56px; margin: 0 auto .9rem; border-radius: 50%; background: #fbf6ee; border: 2px solid var(--gold); display: grid; place-items: center; font-size: 1.6rem; box-shadow: 0 4px 14px rgba(201, 169, 97, .25); }
.guestbook-card-header h3 { color: var(--burgundy); font-family: var(--font-serif); font-size: clamp(1.8rem, 3.5vw, 2.3rem); font-weight: 600; margin: 0 0 .35rem; }
.guestbook-greeting { color: #6a5656; font-family: var(--font-serif); font-size: 1.12rem; font-style: italic; line-height: 1.45; margin: 0 0 1.8rem; }
.guestbook-greeting strong { color: var(--burgundy); font-style: normal; }
.guestbook-field { text-align: left; margin-bottom: 1.25rem; }
.guestbook-field label { display: block; font-size: .74rem; font-weight: 700; color: #4a1e2b; letter-spacing: .08em; text-transform: uppercase; margin-bottom: .45rem; }
.guestbook-family-tag { color: var(--gold-dark); font-weight: 600; font-size: .74rem; text-transform: none; letter-spacing: 0; }
.guestbook-label-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: .45rem; }
.guestbook-label-row label { margin-bottom: 0; }
.char-count { font-size: .72rem; color: #8a7a7a; font-weight: 600; }
.guestbook-field input, .guestbook-field textarea { width: 100%; box-sizing: border-box; background: #fff; border: 1px solid #dfd3c3; border-radius: 8px; padding: .85rem 1rem; font-family: inherit; font-size: .95rem; color: #3a2a2a; transition: border-color .2s, box-shadow .2s; }
.guestbook-field textarea { resize: vertical; min-height: 110px; line-height: 1.5; }
.guestbook-field input:focus, .guestbook-field textarea:focus { border-color: #c9a961; outline: none; box-shadow: 0 0 0 3px rgba(201, 169, 97, .25); }
.guestbook-submit-btn { width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: .55rem; background: linear-gradient(135deg, #6b2c3e, #4a1e2b); color: #fff8f0; border: 1px solid #c9a961; border-radius: 8px; padding: .95rem 1.5rem; font-size: .82rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; transition: all .2s ease; box-shadow: 0 4px 14px rgba(107, 44, 62, .3); }
.guestbook-submit-btn:hover { background: linear-gradient(135deg, #82364c, #5b2434); transform: translateY(-1px); box-shadow: 0 6px 18px rgba(107, 44, 62, .4); }
.guestbook-submit-btn:active { transform: translateY(0); }
.guestbook-notice-box { margin-top: 1rem; }
.guestbook-entries-wrapper { margin-top: 2.8rem; }
.guestbook-entries-header { display: flex; align-items: center; justify-content: center; gap: .8rem; margin-bottom: 1.4rem; color: var(--gold-light); }
.guestbook-entries-header h4 { font-family: var(--font-serif); font-size: 1.6rem; color: var(--cream); margin: 0; font-weight: 400; letter-spacing: .02em; }
.entries-ornament { font-size: .8rem; color: var(--gold-light); }
.guestbook-entries { display: grid; gap: 1.15rem; }
.guestbook-entry-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 18px; padding: 1.35rem 1.6rem; text-align: left; box-shadow: 0 8px 24px rgba(0, 0, 0, .2); position: relative; color: var(--text-dark); transition: transform .2s ease, box-shadow .2s ease; }
.guestbook-entry-card:hover { transform: translateY(-2px); box-shadow: 0 12px 28px rgba(0, 0, 0, .25); }
.entry-header { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; flex-wrap: wrap; border-bottom: 1px solid #ebd9c3; padding-bottom: .6rem; margin-bottom: .75rem; }
.entry-author-info { display: flex; align-items: baseline; gap: .4rem; flex-wrap: wrap; }
.entry-author { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 700; color: #6b2c3e; line-height: 1.2; }
.entry-family { font-size: .82rem; color: #7a6a6a; font-style: italic; }
.entry-time { font-size: .72rem; color: #887a6b; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.entry-quote-mark { position: absolute; right: 1.2rem; top: 2rem; font-family: var(--font-serif); font-size: 3.5rem; color: rgba(201, 169, 97, .18); line-height: 1; pointer-events: none; user-select: none; }
.entry-message { font-family: var(--font-serif); font-size: 1.15rem; font-style: italic; line-height: 1.6; color: #3a2a2a; margin: 0; word-break: break-word; }
.guestbook-empty { background: rgba(255, 248, 240, .08); border: 1px dashed rgba(255, 248, 240, .4); border-radius: 18px; padding: 2.5rem 1.5rem; text-align: center; color: var(--cream); }
.guestbook-empty .empty-icon { font-size: 2rem; display: block; margin-bottom: .5rem; }
.guestbook-empty p { font-family: var(--font-serif); font-size: 1.25rem; font-style: italic; margin: 0; }
.guestbook-closing { color: var(--gold-light); font-family: var(--font-serif); margin: 3rem auto 0; max-width: 550px; text-align: center; }
.closing-heart { border: 1px solid rgba(255, 248, 240, .4); border-radius: 50%; display: inline-grid; height: 48px; place-items: center; width: 48px; margin: 0 auto; font-size: 1.3rem; }
.guestbook-closing p { font-size: 1.3rem; margin: .75rem 0 .2rem; color: var(--cream); }
.guestbook-closing small { font-size: 1rem; font-style: italic; color: var(--gold-light); }

.guestbook-form[hidden] { display: none !important; }

.music-section .section-heading { margin-bottom: 1.4rem; }.music-section h2 { font-family: var(--font-serif); font-size: clamp(3rem, 8vw, 5rem); font-style: italic; font-weight: 600; }.record-player { display: flex; flex-direction: column; align-items: center; margin: 0 auto 1.5rem; max-width: 360px; cursor: pointer; user-select: none; outline: none; transition: transform .25s ease; }.record-player:hover { transform: translateY(-2px); }.record-player:focus-visible { outline: 2px solid var(--gold); outline-offset: 4px; border-radius: 24px; }.turntable-wrapper { position: relative; width: min(92vw, 340px); aspect-ratio: 320 / 220; display: grid; place-items: center; }.turntable-svg { width: 100%; height: 100%; overflow: visible; }.turntable-vinyl { transform-origin: 118px 105px; transition: transform .6s cubic-bezier(0.2, 0.8, 0.2, 1); }.record-player.is-playing .turntable-vinyl { animation: spinVinyl 3.2s linear infinite; }@keyframes spinVinyl { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }.turntable-tonearm { transform-origin: 240px 52px; transform: rotate(0deg); transition: transform .9s cubic-bezier(0.34, 1.4, 0.64, 1); }.record-player.is-playing .turntable-tonearm { transform: rotate(-21deg); }.turntable-led { transition: fill .3s ease, filter .3s ease; }.record-player.is-playing .turntable-led { fill: #5fd471; filter: drop-shadow(0 0 5px #5fd471); animation: pulseLed 1.8s ease-in-out infinite alternate; }@keyframes pulseLed { from { opacity: 0.85; filter: drop-shadow(0 0 3px #5fd471); } to { opacity: 1; filter: drop-shadow(0 0 8px #5fd471); } }.turntable-music-notes { opacity: 0; transition: opacity .4s ease; pointer-events: none; }.record-player.is-playing .turntable-music-notes { opacity: 1; }.turntable-note { font-family: var(--font-serif); font-weight: 700; fill: var(--gold); opacity: 0; }.record-player.is-playing .note-1 { animation: floatNote 2.4s ease-out infinite; }.record-player.is-playing .note-2 { animation: floatNote 2.4s ease-out infinite 0.8s; }.record-player.is-playing .note-3 { animation: floatNote 2.4s ease-out infinite 1.6s; }@keyframes floatNote { 0% { transform: translate(0, 0) scale(0.7); opacity: 0; fill: #d4b876; } 30% { opacity: 0.9; } 80% { opacity: 0.6; } 100% { transform: translate(12px, -36px) scale(1.1); opacity: 0; fill: #fff8f0; } }.record-player-badge { margin-top: .6rem; display: inline-flex; align-items: center; gap: .5rem; background: #fffdfb; border: 1px solid var(--gold); border-radius: 999px; padding: .35rem .95rem; box-shadow: 0 4px 12px rgba(58, 42, 42, .08); transition: all .2s ease; }.record-player:hover .record-player-badge { box-shadow: 0 6px 16px rgba(58, 42, 42, .14); border-color: var(--burgundy); }.player-status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gold-dark); display: inline-block; transition: background .3s ease, transform .3s ease; }.record-player.is-playing .player-status-dot { background: #47a35a; box-shadow: 0 0 6px #47a35a; animation: pulseDot 1.4s infinite ease-in-out; }@keyframes pulseDot { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.3); } }.player-status-text { font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--burgundy); }.playlist-description { font-family: var(--font-serif); font-size: 1.25rem; font-style: italic; line-height: 1.5; margin: 0 auto 2rem; max-width: 570px; }.playlist-card { background: linear-gradient(150deg, #571022, #350814); border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 18px 36px rgba(58, 42, 42, .3); color: var(--cream); margin: auto; max-width: 600px; overflow: hidden; text-align: left; }.playlist-play-all { align-items: center; background: transparent; border: 0; color: var(--cream); cursor: pointer; display: grid; gap: .1rem .9rem; grid-template-columns: 58px 1fr; padding: 1.5rem; text-align: left; width: 100%; }.playlist-play-all span { align-content: center; background: radial-gradient(circle at 32% 28%, var(--cream), var(--gold-dark)); border-radius: 50%; color: var(--burgundy-dark); grid-row: span 2; height: 58px; text-align: center; width: 58px; }.playlist-play-all strong { font-size: .75rem; letter-spacing: .15em; }.playlist-play-all small { color: var(--gold-light); font-family: var(--font-serif); font-size: 1rem; font-style: italic; }.playlist-tracks { border-top: 1px solid #fff8f033; }.playlist-track { align-items: center; background: transparent; border: 0; border-bottom: 1px solid #fff8f022; color: var(--cream); cursor: pointer; display: grid; gap: 1rem; grid-template-columns: 28px 1fr auto; padding: 1rem 1.5rem; text-align: left; width: 100%; }.playlist-track:hover, .playlist-track.is-playing { background: #fff8f01a; }.track-number { color: var(--gold-light); font-size: .75rem; }.track-info strong { display: block; font-family: var(--font-serif); font-size: 1.35rem; font-weight: 600; }.track-info small, .track-duration { color: #fff8f0aa; font-size: .8rem; }.playlist-note { color: var(--burgundy); font-family: var(--font-serif); font-size: 1.1rem; font-style: italic; margin: 1.8rem 0 0; }.playlist-iframe { height: 1px; opacity: 0; position: absolute; width: 1px; }

#music-player-container .music-section { padding-bottom: 0; }
#music-player-container { overflow: hidden; }.playlist-iframe { border: 0; bottom: 0; left: -9999px; position: fixed; }

:root {
    --burgundy-dark: #6B2C3E; --burgundy: #8B3A4E; --burgundy-light: #A85468;
    --cream: #FFF8F0; --beige: #F5EFE7; --beige-dark: #E8DFD3;
    --gold: #C9A961; --gold-light: #D4B876; --gold-dark: #B39450;
    --text-dark: #3A2A2A; --text-light: #FFF8F0;
    --font-script: 'Great Vibes', cursive; --font-serif: 'Cormorant Garamond', serif; --font-body: 'Montserrat', sans-serif;
}
* { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; overflow-x: hidden; background: var(--cream); color: var(--text-dark); font-family: var(--font-body); font-size: 16px; line-height: 1.6; } button, input, textarea { font: inherit; } button, a { -webkit-tap-highlight-color: transparent; } img { max-width: 100%; display: block; }
.loading { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; background: var(--cream); transition: opacity .3s ease, visibility .3s ease; }.loading.is-hidden { opacity: 0; visibility: hidden; }.spinner { width: 42px; height: 42px; border: 3px solid var(--beige-dark); border-top-color: var(--burgundy); border-radius: 50%; animation: spin .75s linear infinite; }
.page-content { min-height: 100vh; }.invitation-section { position: relative; padding: clamp(4.5rem, 10vw, 8rem) 1.5rem; text-align: center; }.section-heading { max-width: 720px; margin: 0 auto 3rem; }.eyebrow, .timeline-time { color: var(--gold-dark); font-size: .72rem; font-weight: 600; letter-spacing: .24em; text-transform: uppercase; }.section-heading h2, .save-date-section h2, .music-section h2 { color: var(--burgundy); font-family: var(--font-script); font-size: clamp(3.3rem, 8vw, 5.8rem); font-weight: 400; line-height: 1; margin: .5rem 0 1rem; }.section-description { margin: 0 auto; max-width: 620px; font-family: var(--font-serif); font-size: 1.24rem; }.ornament { color: var(--gold); font-size: .8rem; letter-spacing: .75rem; margin: 1.6rem 0; }.burgundy-button, .outline-button { display: inline-flex; justify-content: center; align-items: center; border: 1px solid var(--burgundy); cursor: pointer; color: var(--cream); background: var(--burgundy); font-size: .72rem; font-weight: 600; letter-spacing: .14em; padding: .85rem 1.25rem; text-decoration: none; text-transform: uppercase; transition: background .2s ease, color .2s ease, transform .2s ease; }.burgundy-button:hover, .outline-button:hover { background: var(--burgundy-dark); transform: translateY(-2px); }.outline-button { background: transparent; color: var(--burgundy); }.outline-button.light { border-color: var(--cream); color: var(--cream); }.outline-button.light:hover { background: var(--cream); color: var(--burgundy); }
.intro-envelope { align-content: center; background: radial-gradient(circle at 50% 25%, #fffdf9 0%, #fbf4ec 45%, var(--beige) 100%); display: grid; min-height: 100svh; overflow: hidden; padding: clamp(2rem, 5vw, 3.5rem) 1rem; position: relative; text-align: center; place-items: center; box-sizing: border-box; }
.intro-skip { position: absolute; top: clamp(1rem, 3vw, 1.5rem); right: clamp(1rem, 3vw, 1.5rem); background: rgba(255, 253, 251, 0.88); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(201, 169, 97, 0.55); border-radius: 999px; color: var(--burgundy); cursor: pointer; font-size: .66rem; font-weight: 700; letter-spacing: .12em; padding: .4rem .95rem; text-transform: uppercase; transition: all .2s ease; z-index: 20; box-shadow: 0 2px 8px rgba(58, 42, 42, .06); }
.intro-skip:hover { background: #fffdfb; border-color: var(--burgundy); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(58, 42, 42, .12); }
.envelope-stage { cursor: pointer; height: min(52vw, 290px); margin: .5rem auto 1.2rem; max-height: 290px; max-width: 460px; perspective: 1200px; position: relative; width: min(88vw, 460px); user-select: none; outline: none; }
.envelope-stage:focus-visible { outline: 2px solid var(--gold); outline-offset: 6px; border-radius: 12px; }
.envelope-stage::after { content: ''; position: absolute; bottom: -16px; left: 10%; width: 80%; height: 20px; background: radial-gradient(ellipse at center, rgba(58, 42, 42, 0.38) 0%, rgba(58, 42, 42, 0) 72%); border-radius: 50%; transition: transform .4s ease, opacity .4s ease; pointer-events: none; z-index: 0; }
.intro-envelope:not(.is-open) .envelope-stage:hover::after { transform: scale(0.92); opacity: 0.8; }
.envelope-back { position: absolute; inset: 0; border-radius: 6px; background: linear-gradient(145deg, #5a1424, #350814); box-shadow: 0 20px 42px rgba(45, 12, 19, 0.45); z-index: 1; overflow: hidden; }
.envelope-liner { position: absolute; inset: 0; background: radial-gradient(circle at 50% 30%, #fdf8ee 0%, #e6d3a5 100%); background-image: radial-gradient(circle at 50% 50%, rgba(201, 169, 97, 0.28) 1.5px, transparent 1.5px), linear-gradient(45deg, rgba(201, 169, 97, 0.14) 25%, transparent 25%, transparent 75%, rgba(201, 169, 97, 0.14) 75%), linear-gradient(-45deg, rgba(201, 169, 97, 0.14) 25%, transparent 25%, transparent 75%, rgba(201, 169, 97, 0.14) 75%); background-size: 18px 18px; box-shadow: inset 0 0 20px rgba(74, 21, 33, 0.4); opacity: 0; transition: opacity .5s ease .2s; }
.intro-envelope.is-open .envelope-liner { opacity: 1; }
.envelope-letter { position: absolute; top: 10%; left: 4.5%; right: 4.5%; bottom: 8%; background: #fffdfb; border-radius: 8px; box-shadow: 0 8px 24px rgba(45, 12, 19, 0.25); display: flex; align-items: center; justify-content: center; padding: .85rem; box-sizing: border-box; z-index: 2; opacity: 0; transform: translateY(0); transition: transform .85s cubic-bezier(0.34, 1.25, 0.64, 1) .2s, opacity .35s ease .25s, box-shadow .35s ease; }
.envelope-letter-card { border: 1.5px solid var(--gold); border-radius: 6px; padding: clamp(.5rem, 2vw, .9rem) clamp(.6rem, 2.5vw, 1.2rem); width: 100%; height: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; background: radial-gradient(ellipse at center, #fffdfb 60%, #faf3eb 100%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.8), inset 0 0 10px rgba(201, 169, 97, 0.12); }
.envelope-letter-tag { color: var(--gold-dark); font-size: clamp(.5rem, 1.4vw, .62rem); font-weight: 700; letter-spacing: .24em; margin-bottom: .25rem; text-transform: uppercase; }
.envelope-letter-for { color: var(--burgundy); font-size: clamp(.52rem, 1.5vw, .64rem); font-weight: 700; letter-spacing: .2em; margin-bottom: .3rem; text-transform: uppercase; }
.envelope-letter span#envelope-family-name { color: var(--burgundy); display: block; font-family: var(--font-script); font-size: clamp(1.4rem, 4.2vw, 2.3rem); font-weight: 400; line-height: 1.1; max-width: 100%; overflow-wrap: break-word; text-wrap: balance; word-break: normal; }
.envelope-letter.is-long-name span#envelope-family-name { font-size: clamp(1.15rem, 3.4vw, 1.8rem); line-height: 1.05; }
.envelope-letter-date { color: var(--gold-dark); font-family: var(--font-serif); font-size: clamp(.6rem, 1.7vw, .76rem); font-weight: 600; letter-spacing: .12em; margin-top: .4rem; }
.envelope-pocket { position: absolute; inset: 0; border-radius: 6px; pointer-events: none; z-index: 3; overflow: hidden; }
.envelope-pocket-left { position: absolute; inset: 0; background: linear-gradient(135deg, #6b1b2d 0%, #470f1d 100%); clip-path: polygon(0 0, 0 100%, 51% 50%); filter: drop-shadow(2px 0 5px rgba(0, 0, 0, 0.25)); }
.envelope-pocket-right { position: absolute; inset: 0; background: linear-gradient(225deg, #781f33 0%, #4e1120 100%); clip-path: polygon(100% 0, 49% 50%, 100% 100%); filter: drop-shadow(-2px 0 5px rgba(0, 0, 0, 0.25)); }
.envelope-pocket-bottom { position: absolute; inset: 0; background: linear-gradient(0deg, #380814 0%, #5d1424 100%); clip-path: polygon(0 100%, 50% 48%, 100% 100%); border-bottom: 2px solid #2d0610; filter: drop-shadow(0 -3px 6px rgba(0, 0, 0, 0.28)); }
.envelope-flap { position: absolute; inset: 0; border-radius: 6px 6px 0 0; background: linear-gradient(180deg, #822237 0%, #601526 70%, #440c1a 100%); clip-path: polygon(0 0, 50% 56%, 100% 0); transform-origin: top; transition: transform .85s cubic-bezier(0.4, 0, 0.2, 1); z-index: 4; filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.3)); }
.envelope-flap-edge { position: absolute; inset: 0; clip-path: polygon(0 0, 50% 56%, 100% 0); box-shadow: inset 0 -2px 0 var(--gold); }
.wax-seal { position: absolute; top: 56%; left: 50%; transform: translate(-50%, -50%); width: clamp(62px, 12vw, 84px); aspect-ratio: 1; cursor: pointer; z-index: 5; transition: transform .45s cubic-bezier(0.34, 1.4, 0.64, 1), opacity .3s ease; filter: drop-shadow(0 6px 14px rgba(45, 12, 19, 0.45)); }
.envelope-stage:hover .wax-seal { transform: translate(-50%, -50%) scale(1.06); }
.wax-seal-svg { display: block; width: 100%; height: 100%; }
.intro-envelope.is-open .envelope-stage { overflow: visible; }
.intro-envelope.is-open .envelope-flap { transform: rotateX(-175deg); z-index: 1; filter: drop-shadow(0 -4px 8px rgba(0, 0, 0, 0.2)); }
.intro-envelope.is-open .wax-seal { opacity: 0; transform: translate(-50%, -90%) scale(0.9); pointer-events: none; }
.intro-envelope.is-open .envelope-letter { opacity: 1; transform: translateY(-84%); z-index: 5; box-shadow: 0 24px 48px rgba(45, 12, 19, 0.38), 0 0 0 1px var(--gold); }
.envelope-cta { display: inline-flex; align-items: center; gap: .65rem; background: #fffdfb; border: 1px solid var(--gold); border-radius: 999px; color: var(--burgundy); cursor: pointer; font-size: .74rem; font-weight: 700; letter-spacing: .16em; padding: .75rem 1.8rem; box-shadow: 0 6px 18px rgba(58, 42, 42, .12); transition: all .25s ease; margin-top: .8rem; text-transform: uppercase; position: relative; z-index: 10; }
.envelope-cta:hover { transform: translateY(-2px); box-shadow: 0 10px 24px rgba(58, 42, 42, .18); border-color: var(--burgundy); }
.envelope-cta-pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--gold-dark); box-shadow: 0 0 0 0 rgba(201, 169, 97, 0.7); animation: ctaPulse 1.8s infinite; }
@keyframes ctaPulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(201, 169, 97, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 8px rgba(201, 169, 97, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(201, 169, 97, 0); } }
.envelope-cta-arrow { color: var(--gold-dark); font-size: 1.1rem; line-height: 1; transition: transform .2s ease; }
.envelope-cta:hover .envelope-cta-arrow { transform: translateX(3px); }
.intro-envelope.is-open .envelope-cta-arrow { transform: translateY(2px); }
.intro-envelope.is-complete { min-height: 0; opacity: 0; max-height: 0; padding-block: 0; pointer-events: none; transition: max-height .5s ease, opacity .5s ease, padding .5s ease; }
.formal-invitation { background: var(--cream); }.paper-card { background: #fffdf9; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); margin: auto; max-width: 710px; padding: clamp(3rem, 8vw, 6rem) clamp(1.5rem, 6vw, 4rem); }.floral-corners { background-image: radial-gradient(circle at 8% 10%, #a8546822 0 24px, transparent 25px), radial-gradient(circle at 92% 88%, #c9a96130 0 36px, transparent 37px); }.invitation-copy { font-family: var(--font-serif); font-size: 1.25rem; }.paper-card h2 { color: var(--burgundy); font-family: var(--font-script); font-size: clamp(4rem, 10vw, 7rem); font-weight: 400; line-height: .85; margin: 2rem 0; }.paper-card h2 span, .couple-line span { color: var(--gold); }.formal-date { border-bottom: 2px solid var(--gold); color: var(--gold-dark); display: inline-block; font-family: var(--font-serif); font-size: clamp(2.25rem, 4vw, 3.3rem); font-weight: 600; letter-spacing: .04em; line-height: 1.15; margin: 1.5rem 0; padding-bottom: .35rem; }.formal-date span { display: block; }.formal-date span + span { font-size: .68em; margin-top: .2rem; }.signature { color: var(--burgundy); font-family: var(--font-script); font-size: 2.2rem; }.formal-rsvp-button { margin-top: 1rem; }
.countdown-section, .itinerary-section, .accommodation-section, .gifts-section, .gallery-section, .photo-sharing-section { background: var(--beige); }.couple-line { color: var(--burgundy); font-family: var(--font-serif); font-size: 1.9rem; margin: .2rem; }.countdown-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); margin: 0 auto; max-width: 680px; overflow: hidden; padding: clamp(2rem, 6vw, 3.5rem) clamp(1.2rem, 4vw, 2.5rem); position: relative; }.countdown-timer { display: grid; gap: 1px; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 auto 2.2rem; max-width: 660px; }.countdown-timer div { background: var(--cream); padding: 1.1rem .5rem; }.countdown-timer strong { color: var(--burgundy); display: block; font-family: var(--font-serif); font-size: clamp(2rem, 6vw, 3.6rem); line-height: 1; }.countdown-timer span { color: var(--gold-dark); font-size: .65rem; font-weight: 600; letter-spacing: .13em; }.couple-photo { background: #fffdfb; border: 1px solid var(--gold); border-radius: 22px; box-shadow: 0 18px 40px rgba(58, 42, 42, .18); margin: 0 auto; max-width: 420px; padding: .85rem; position: relative; transition: transform .3s ease, box-shadow .3s ease; }.couple-photo:hover { transform: translateY(-3px); box-shadow: 0 24px 48px rgba(58, 42, 42, .24); }.couple-photo-inner { position: relative; border-radius: 14px; overflow: hidden; }.couple-photo img { aspect-ratio: 3 / 4; display: block; object-fit: cover; width: 100%; transition: transform .45s ease; }.couple-photo:hover img { transform: scale(1.03); }.couple-photo-seal { position: absolute; bottom: 12px; right: 12px; width: 42px; height: 42px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, var(--gold-light), var(--gold-dark)); border: 1.5px solid #fffdfb; box-shadow: 0 4px 10px rgba(0, 0, 0, .35); display: grid; place-items: center; color: var(--cream); font-family: var(--font-serif); font-size: .85rem; font-weight: 700; pointer-events: none; }
.parents-section, .dress-section, .guestbook-section, .rsvp-section { background: radial-gradient(ellipse at 50% 30%, #7a1d36 0%, #571022 48%, #350814 100%); color: var(--text-light); }.rsvp-section .section-heading h2 { color: var(--cream); }.rsvp-section .eyebrow { color: var(--gold-light); }.rsvp-section .section-description { color: var(--cream); }.music-section { background: var(--beige); color: var(--text-dark); }.parents-section .blessing { font-family: var(--font-serif); font-size: 1.7rem; font-style: italic; }.parents-section .ornament, .dress-section .eyebrow, .guestbook-section .eyebrow { color: var(--gold-light); }.parents-grid { display: grid; gap: 2rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0 auto 2.5rem; max-width: 800px; }.parents-grid article { border: 1px solid #fff8f055; padding: 2rem 1rem; }.parents-grid h3, .godparents-title { color: var(--gold-light); font-size: .72rem; letter-spacing: .18em; }.parents-grid p { font-family: var(--font-serif); font-size: 1.35rem; margin: .35rem; }.parents-grid span { color: var(--gold); }.godparents-list { display: grid; gap: .85rem; margin: 1.5rem auto 3rem; max-width: 620px; }.godparents-list p { display: grid; gap: .25rem; margin: 0; }.godparents-list strong { color: var(--gold-light); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; }.godparents-list span { font-family: var(--font-serif); font-size: 1.2rem; }.parents-closing { font-family: var(--font-serif); font-size: 1.35rem; }.parents-closing strong { color: var(--gold-light); display: block; font-family: var(--font-script); font-size: 3.3rem; font-weight: 400; margin: .5rem; }
.timeline { margin: auto; max-width: 760px; position: relative; text-align: left; }.timeline::before { background: var(--gold); bottom: 1rem; content: ''; left: 27px; position: absolute; top: 1rem; width: 1px; }.timeline-item { display: grid; gap: 1.25rem; grid-template-columns: 56px 1fr; padding-bottom: 2.5rem; position: relative; }.timeline-icon { align-content: center; background: var(--cream); border: 2px solid var(--gold); border-radius: 50%; box-shadow: 0 6px 16px rgba(58, 42, 42, .12), 0 0 0 3px rgba(201, 169, 97, .18); height: 56px; overflow: hidden; position: relative; transition: transform .25s ease, box-shadow .25s ease; width: 56px; z-index: 1; }.timeline-icon:hover { transform: scale(1.08); box-shadow: 0 8px 22px rgba(58, 42, 42, .2), 0 0 0 4px rgba(201, 169, 97, .3); }.timeline-icon img { display: block; height: 100%; object-fit: cover; width: 100%; }.timeline-lightbox { cursor: zoom-in; padding: 0; }.timeline-item:nth-child(1) .timeline-icon img { transform: scale(2.5); transform-origin: 100% 30%; }.timeline-item:nth-child(2) .timeline-icon img { transform: scale(3); transform-origin: 100% 59%; }.timeline-item:nth-child(5) .timeline-icon img { transform: scale(8.5); transform-origin: 49% 80%; }.timeline-item:nth-child(7) .timeline-icon img { transform: scale(2.6); transform-origin: 11% 15%; }.timeline-day-badge { display: inline-block; background: var(--burgundy); color: var(--cream); font-size: .65rem; font-weight: 600; letter-spacing: .12em; padding: .25rem .75rem; border-radius: 999px; margin-bottom: .45rem; text-transform: uppercase; }.timeline-desc { font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; line-height: 1.45; color: var(--text-dark); margin: .4rem 0 .5rem; }.timeline-note-box { align-items: center; background: #fff8f0e6; border: 1px solid var(--gold); border-radius: 8px; color: var(--burgundy); display: inline-flex; font-size: .75rem; font-weight: 600; gap: .45rem; letter-spacing: .08em; margin-top: .4rem; padding: .45rem .85rem; text-transform: uppercase; }.timeline-note-icon { color: var(--gold-dark); font-size: .85rem; }.timeline-content h3 { color: var(--burgundy); font-size: .88rem; letter-spacing: .1em; margin: .3rem 0; }.timeline-venue { color: var(--burgundy-light); font-size: .84rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; margin: .15rem 0 .35rem; }.timeline-content p { margin: .25rem 0; }.timeline-content .address { font-size: .82rem; }.timeline-content .outline-button { margin-top: .8rem; }
.dress-section .section-heading h2, .guestbook-section h2 { color: var(--cream); }.dress-main { color: var(--cream); font-family: var(--font-serif); font-size: 2.8rem; margin: .3rem; }.dress-heading { margin-bottom: 2rem; }.dress-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(53, 8, 20, .45); color: var(--text-dark); margin: 0 auto 1.8rem; max-width: 560px; overflow: hidden; padding: .65rem .65rem 0; position: relative; }.dress-card img { aspect-ratio: 16 / 9; border-radius: 16px 16px 0 0; object-fit: cover; object-position: center 40%; width: 100%; }.dress-card figcaption { color: var(--burgundy); font-size: .74rem; font-weight: 700; letter-spacing: .12em; padding: 1rem .5rem; text-transform: uppercase; }.dress-guidelines { color: var(--cream); font-family: var(--font-serif); margin: auto; max-width: 540px; }.dress-guidelines p { margin: .2rem; }.dress-guidelines strong { color: var(--gold-light); font-family: var(--font-body); font-size: .68rem; letter-spacing: .14em; }.dress-message, .look-note { font-family: var(--font-serif); font-size: 1.12rem; font-style: italic; line-height: 1.45; margin: 1.4rem auto 2rem; max-width: 560px; }.looks-title { color: var(--gold-light); font-size: .68rem; font-weight: 600; letter-spacing: .18em; margin: 2.5rem 0 1.4rem; }.look-grid { display: grid; gap: 1.25rem; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: auto; max-width: 560px; }.look-grid article { background: #fffdfb; border: 1px solid var(--gold); border-radius: 20px; box-shadow: 0 12px 28px rgba(53, 8, 20, .35); color: var(--text-dark); overflow: hidden; padding: .65rem .65rem 1.25rem; text-align: center; transition: transform .25s ease, box-shadow .25s ease; }.look-grid article:hover { transform: translateY(-3px); box-shadow: 0 18px 36px rgba(53, 8, 20, .45); }.look-grid img { aspect-ratio: 3 / 4; background: #fffdfb; border-radius: 14px; object-fit: none; width: 100%; }.look-grid .look-women { object-position: 39% 30%; }.look-grid .look-men { object-position: 66% 23%; }.look-grid h3 { color: var(--burgundy); font-size: .75rem; font-weight: 700; letter-spacing: .16em; margin: .9rem 0 .25rem; }.look-grid p { color: #554448; font-family: var(--font-serif); font-size: 1rem; margin: 0; }.look-note { margin-bottom: 1.5rem; }.white-note { align-items: center; background: #fff8f01a; border: 1px solid #fff8f055; border-radius: 999px; color: var(--cream); display: flex; font-size: .65rem; font-weight: 600; justify-content: center; letter-spacing: .08em; margin: 0 auto; max-width: 580px; min-height: 58px; padding: .8rem 1.4rem; }.white-note + .white-note { margin-top: .75rem; }

/* Accommodation Section */
.accommodation-section { background: var(--beige); }
.accommodation-wrapper { margin: 0 auto; max-width: 860px; }
.accommodation-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); overflow: hidden; position: relative; text-align: left; }
.accommodation-badge-wrap { position: absolute; right: 1.25rem; top: 1.25rem; z-index: 2; }
.accommodation-badge { background: var(--burgundy); border-radius: 999px; box-shadow: 0 4px 12px rgba(58, 42, 42, .2); color: var(--cream); font-size: .65rem; font-weight: 600; letter-spacing: .12em; padding: .4rem .9rem; text-transform: uppercase; }
.accommodation-grid { display: grid; grid-template-columns: 340px 1fr; }
.accommodation-media { background: #162c2c; min-height: 100%; position: relative; }
.accommodation-figure { height: 100%; margin: 0; min-height: 100%; position: relative; }
.accommodation-lightbox { background: transparent; border: 0; cursor: zoom-in; display: block; height: 100%; padding: 0; position: relative; width: 100%; }
.accommodation-lightbox img { display: block; height: 100%; object-fit: cover; object-position: center 25%; width: 100%; }
.accommodation-zoom-badge { backdrop-filter: blur(4px); background: #1b1617b3; border: 1px solid #ffffff33; border-radius: 999px; bottom: 14px; color: var(--cream); font-size: .65rem; font-weight: 500; left: 50%; letter-spacing: .08em; padding: .35rem .75rem; pointer-events: none; position: absolute; transform: translateX(-50%); white-space: nowrap; }
.accommodation-info { display: flex; flex-direction: column; justify-content: center; padding: clamp(1.8rem, 4vw, 2.75rem); }
.accommodation-logo-wrap { margin-bottom: 1.1rem; max-width: 210px; }
.accommodation-logo { border-radius: 8px; display: block; height: auto; width: 100%; }
.accommodation-info h3 { color: var(--burgundy); font-family: var(--font-serif); font-size: clamp(1.8rem, 3.5vw, 2.4rem); font-weight: 600; line-height: 1.15; margin: 0 0 .25rem; }
.accommodation-tagline { color: var(--gold-dark); font-size: .75rem; font-weight: 600; letter-spacing: .18em; margin: 0 0 .75rem; text-transform: uppercase; }
.accommodation-desc { color: var(--text-dark); font-family: var(--font-serif); font-size: 1.12rem; font-style: italic; line-height: 1.5; margin: 0 0 1.25rem; }
.accommodation-amenities { display: grid; gap: .55rem; list-style: none; margin: 0 0 1.5rem; padding: 0; }
.accommodation-amenities li { align-items: baseline; color: var(--text-dark); display: flex; font-size: .88rem; gap: .6rem; }
.amenity-bullet { color: var(--gold-dark); font-size: .75rem; }
.wedding-notice-box, .accommodation-contact-box { align-items: center; background: #fff8f0; border: 1px solid var(--gold); border-radius: 16px; box-shadow: 0 6px 18px rgba(58, 42, 42, .06); display: flex; gap: .95rem; padding: 1.05rem 1.35rem; text-align: left; }
.wedding-notice-icon, .contact-box-icon { background: #fffdfb; border: 1px solid var(--gold); border-radius: 50%; color: var(--gold-dark); display: grid; flex-shrink: 0; font-size: 1.15rem; height: 42px; place-items: center; width: 42px; }
.wedding-notice-content strong, .contact-box-content strong { color: var(--burgundy); display: block; font-size: .76rem; font-weight: 600; letter-spacing: .1em; margin-bottom: .2rem; text-transform: uppercase; }
.wedding-notice-content p, .contact-box-content p { color: var(--text-dark); font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; line-height: 1.35; margin: 0; }

.wedding-notice-box-dark { align-items: center; background: #fff8f018; border: 1px solid #fff8f055; border-radius: 16px; box-shadow: 0 6px 18px rgba(0, 0, 0, .22); display: flex; gap: .95rem; padding: 1.05rem 1.35rem; text-align: left; }
.wedding-notice-box-dark .wedding-notice-icon { background: #fff8f014; border: 1px solid var(--gold-light); border-radius: 50%; color: var(--gold-light); display: grid; flex-shrink: 0; font-size: 1.15rem; height: 42px; place-items: center; width: 42px; }
.wedding-notice-box-dark .wedding-notice-content strong { color: var(--gold-light); display: block; font-size: .74rem; font-weight: 600; letter-spacing: .12em; margin-bottom: .2rem; text-transform: uppercase; }
.wedding-notice-box-dark .wedding-notice-content p { color: var(--cream); font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; line-height: 1.35; margin: 0; }

.timeline-notice-box { margin-top: .9rem; max-width: 520px; }
.dress-notices-wrap { display: grid; gap: 1rem; margin: 2rem auto 0; max-width: 580px; }
.gift-notice-box { margin: 2.5rem auto 0; max-width: 560px; }
.rsvp-notice-box { margin-top: 1.6rem; }

.gift-heading { margin-bottom: 1.2rem; }.gift-stack-wrap { display: inline-block; margin: 0 auto 1.5rem; position: relative; }.gift-stack { display: block; height: auto; margin: 0 auto; max-width: 360px; width: min(100%, 360px); filter: drop-shadow(0 14px 24px rgba(58, 42, 42, .18)); transition: transform .35s ease, filter .35s ease; }.gift-stack:hover { transform: translateY(-3px); filter: drop-shadow(0 18px 30px rgba(58, 42, 42, .25)); }.gift-box { background: linear-gradient(135deg, #8b2138, #571022); box-shadow: 0 8px 12px #3a2a2a33; position: absolute; }.gift-box::before, .gift-box::after { background: var(--gold); content: ''; position: absolute; }.gift-box::before { height: 100%; left: 46%; width: 12%; }.gift-box::after { height: 14%; left: 0; top: 43%; width: 100%; }.gift-box-top { height: 82px; left: 63px; top: 8px; width: 110px; }.gift-box-bottom { height: 108px; left: 25px; top: 72px; width: 170px; }.gift-envelope { align-content: center; background: var(--cream); border: 2px solid var(--gold); color: var(--burgundy); font-size: 1.7rem; height: 62px; left: 81px; position: absolute; text-align: center; top: 115px; transform: rotate(-5deg); width: 88px; z-index: 1; }.gift-intro { font-family: var(--font-serif); font-size: 1.2rem; font-style: italic; line-height: 1.5; margin: 0 auto 2rem; max-width: 620px; }.gift-grid { display: grid; gap: 1rem; margin: auto; max-width: 560px; }.gift-option { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); padding: 2.2rem 1.6rem; transition: transform .25s ease, box-shadow .25s ease; }.gift-option h3 { color: var(--burgundy); font-family: var(--font-serif); font-size: 2rem; font-weight: 600; margin: .55rem; }.gift-option p { font-family: var(--font-serif); font-size: 1.05rem; font-style: italic; margin: 0 auto 1.3rem; max-width: 420px; }.gift-icon { align-content: center; background: var(--cream); border: 1px solid var(--beige-dark); border-radius: 50%; color: var(--burgundy); display: grid; height: 55px; margin: auto; overflow: hidden; place-items: center; width: 55px; }.gift-icon svg { height: 28px; width: 34px; }.gift-icon img { height: 100%; object-fit: cover; width: 100%; }.gift-link { color: var(--gold-dark); display: inline-block; font-size: .68rem; font-weight: 600; letter-spacing: .16em; padding-bottom: .4rem; text-decoration: none; text-transform: uppercase; border-bottom: 1px solid var(--gold); }.closing-text { color: var(--burgundy); font-family: var(--font-serif); font-size: 1.15rem; font-style: italic; margin: 2rem auto 0; }.save-date-section { background: #fffaf7; color: var(--text-dark); }.save-date-section .section-heading { margin-bottom: 2.4rem; }.save-date-section h2 { color: var(--burgundy); font-family: var(--font-serif); font-size: clamp(3rem, 8vw, 5rem); font-style: italic; font-weight: 600; }.calendar-card { background: #fffdfb; border: 1px solid var(--gold); border-radius: 24px; box-shadow: 0 16px 36px rgba(58, 42, 42, .14); margin: 0 auto 1.8rem; max-width: 660px; padding: clamp(1.5rem, 5vw, 3rem); position: relative; }.calendar-month { color: var(--burgundy); font-size: .9rem; font-weight: 600; letter-spacing: .25em; margin: 0 0 1.8rem; text-transform: uppercase; }.calendar-weekdays, .calendar-days { display: grid; grid-template-columns: repeat(7, 1fr); }.calendar-weekdays { border-bottom: 1px solid var(--beige-dark); color: #7d6870; font-size: .66rem; font-weight: 600; letter-spacing: .1em; padding-bottom: .85rem; }.calendar-days { align-items: center; font-family: var(--font-serif); font-size: 1.3rem; gap: .85rem 0; padding: 1.2rem 0 1.8rem; }.calendar-days span { display: grid; min-height: 34px; place-items: center; }.calendar-day-heart { align-self: center; background: var(--gold); clip-path: path('M17 31C5 22 1 17 1 10A9 9 0 0 1 17 4a9 9 0 0 1 16 6c0 7-4 12-16 21Z'); color: var(--cream); font-size: 1.15rem; height: 34px; justify-self: center; line-height: 1; margin: 0; padding: 0 0 6px; width: 34px; }.calendar-description { border-top: 1px solid var(--beige-dark); font-family: var(--font-serif); font-size: 1.25rem; font-style: italic; margin: 0; padding: 1.5rem 0; }.calendar-details { border-top: 1px solid var(--beige-dark); display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; padding-top: 1.4rem; }.calendar-details p { margin: 0; }.calendar-details strong { color: var(--gold-dark); display: block; font-size: .65rem; letter-spacing: .16em; }.calendar-details span { display: block; font-family: var(--font-serif); font-size: 1.15rem; margin-top: .3rem; }
.gallery-grid { display: grid; gap: .75rem; grid-template-columns: repeat(4, 1fr); margin: auto; max-width: 980px; }.gallery-item { background: transparent; border: 1px solid rgba(201, 169, 97, .35); border-radius: 14px; box-shadow: 0 6px 16px rgba(58, 42, 42, .08); cursor: zoom-in; overflow: hidden; padding: 0; transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease; }.gallery-item:hover { border-color: var(--gold); box-shadow: 0 12px 28px rgba(58, 42, 42, .18); transform: translateY(-3px); }.gallery-item img { aspect-ratio: 1; display: block; object-fit: cover; transition: transform .45s cubic-bezier(0.2, 0.8, 0.2, 1); width: 100%; }.gallery-item:hover img { transform: scale(1.06); }.lightbox { align-items: center; background: #23191ceb; display: none; inset: 0; justify-content: center; padding: 3rem 1.5rem; position: fixed; z-index: 99; }.lightbox.active { display: flex; }.lightbox-viewer { align-items: center; display: flex; flex-direction: column; gap: .85rem; max-height: 88vh; position: relative; }.lightbox-content { border-radius: 10px; box-shadow: 0 20px 48px rgba(0, 0, 0, .7); max-height: 80vh; max-width: min(920px, 88vw); object-fit: contain; }.lightbox-counter { background: #161213cc; border: 1px solid #c9a96166; border-radius: 999px; color: var(--gold-light); font-size: .75rem; font-weight: 600; letter-spacing: .15em; padding: .3rem .9rem; }.lightbox button { background: transparent; border: 0; color: var(--cream); cursor: pointer; font-size: 3rem; position: absolute; transition: color .2s ease; }.lightbox button:hover { color: var(--gold-light); }.lightbox-close { height: 48px; line-height: 48px; right: 1.5rem; text-align: center; top: 1rem; width: 48px; z-index: 10; }.lightbox-prev { left: 1rem; z-index: 10; }.lightbox-next { right: 1rem; z-index: 10; }
.rsvp-section { background: radial-gradient(ellipse at 50% 30%, #7a1d36 0%, #571022 48%, #350814 100%); }.rsvp-card, .upload-card { background: var(--beige); margin: auto; max-width: 600px; padding: clamp(1.5rem, 6vw, 3rem); text-align: left; }.family-name { color: var(--burgundy); font-family: var(--font-serif); font-size: 1.8rem; text-align: center; }.rsvp-form { display: grid; gap: 1.2rem; }.rsvp-form label { display: grid; font-size: .72rem; font-weight: 600; gap: .45rem; letter-spacing: .07em; text-transform: uppercase; }.rsvp-form input[type=text], .rsvp-form textarea { background: var(--cream); border: 1px solid var(--beige-dark); border-radius: 0; color: var(--text-dark); padding: .8rem; resize: vertical; }.rsvp-form fieldset { border: 0; display: grid; gap: .5rem; margin: 0; padding: 0; }.rsvp-form legend, .field-label { font-size: .72rem; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; }.rsvp-form fieldset label, .guest-choice { display: flex; font-size: .9rem; font-weight: 400; letter-spacing: 0; text-transform: none; }.guest-choices { display: grid; gap: .4rem; }.form-status { margin: 1rem 0 0; text-align: center; }.form-status.is-success { color: #476438; }.form-status.is-error { color: #9b263b; }.upload-card { display: grid; justify-items: center; text-align: center; }.upload-card input { height: 1px; opacity: 0; position: absolute; width: 1px; }.upload-card p { font-size: .85rem; }.music-section { padding-bottom: clamp(4.5rem, 10vw, 8rem); }.music-section > p:not(.eyebrow) { margin: 0 auto 1.5rem; }.youtube-player { aspect-ratio: 16 / 9; margin: auto; max-width: 650px; }.youtube-player iframe { border: 0; height: 100%; width: 100%; }

/* Footer & Portfolio Link */
.invitation-footer {
    background: var(--beige);
    padding: 2.2rem 1.5rem 3rem;
    text-align: center;
    border-top: 1px solid rgba(201, 169, 97, 0.3);
    position: relative;
}
.invitation-footer .footer-credit {
    color: var(--text-muted, #7a6a65);
    font-family: var(--font-serif);
    font-size: 1.05rem;
    font-style: italic;
    margin: 0;
    letter-spacing: 0.02em;
}
.invitation-footer .footer-heart {
    color: var(--burgundy);
    display: inline-block;
    font-style: normal;
    font-size: 1.15rem;
    margin: 0 0.2rem;
    transition: transform 0.25s ease;
}
.invitation-footer:hover .footer-heart {
    transform: scale(1.25);
}
.invitation-footer .footer-link {
    color: var(--burgundy);
    font-weight: 600;
    font-style: normal;
    text-decoration: none;
    border-bottom: 1px dashed var(--gold);
    padding-bottom: 2px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.invitation-footer .footer-link:hover {
    color: var(--burgundy-dark);
    border-bottom-style: solid;
    border-color: var(--burgundy);
}

