@font-face{font-family:"Be Vietnam Pro";src:url("../assets/fonts/be-vietnam-pro-regular.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Be Vietnam Pro";src:url("../assets/fonts/be-vietnam-pro-semibold.ttf") format("truetype");font-style:normal;font-weight:600;font-display:swap}
@font-face{font-family:"Noto Serif";src:url("../assets/fonts/noto-serif-regular.ttf") format("truetype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:"Noto Serif";src:url("../assets/fonts/noto-serif-semibold.ttf") format("truetype");font-style:normal;font-weight:600;font-display:swap}
:root{--ivory:#faf7f2;--paper:#fffdf9;--white:#fff;--ink:#40352f;--muted:#70675f;--gold:#b99a65;--gold-deep:#7f633c;--blush:#ead8d3;--line:#dfd4c4;--shadow:0 20px 60px rgba(58,42,29,.10);--serif:"Noto Serif",Georgia,serif;--sans:"Be Vietnam Pro",Arial,sans-serif;--container:1180px}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:78px}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.8;-webkit-font-smoothing:antialiased}
body.lightbox-open{overflow:hidden}
img{display:block;max-width:100%}
button,input,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
p,h1,h2,h3,figure{margin-top:0}
p{margin-bottom:1.15em}
h1,h2,h3{font-family:var(--serif);line-height:1.22;font-weight:400}
h2{font-size:clamp(2.1rem,5vw,3.65rem);letter-spacing:-.045em;margin-bottom:.5em}
h2 em{font-weight:400;color:var(--gold-deep)}
h3{font-size:clamp(1.35rem,2.4vw,1.8rem)}
h1,h2,h3,p,dd{overflow-wrap:anywhere}
.hero h1>span{max-width:100%}
:focus-visible{outline:3px solid #8b6231;outline-offset:4px}
[hidden]{display:none!important}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.container{width:min(calc(100% - 40px),var(--container));margin-inline:auto}
.narrow{max-width:820px}.center{text-align:center}
.section{padding:clamp(76px,9vw,140px) 0;scroll-margin-top:70px}
.eyebrow{color:var(--gold-deep);font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;line-height:1.7;margin-bottom:20px}
.section-heading{text-align:center;max-width:750px;margin:0 auto 56px}
.section-heading p:last-child{color:var(--muted);max-width:610px;margin-inline:auto}
.lead{font-family:var(--serif);font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.7;color:#5a4739}
.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:50px;padding:12px 24px;border:1px solid transparent;border-radius:2px;font-size:.82rem;font-weight:600;line-height:1.4;letter-spacing:.02em;text-align:center;transition:background-color .25s,color .25s,transform .25s,border-color .25s}
.button:hover{transform:translateY(-2px)}.button-dark{background:var(--ink);color:white}.button-dark:hover{background:#624b3a}.button-light{background:#fff;color:var(--ink)}.button-light:hover{background:var(--ivory)}.button-outline{border-color:var(--gold-deep);color:var(--gold-deep);background:transparent}.button-outline:hover{background:var(--gold-deep);color:white}
.text-link{display:inline-flex;gap:10px;align-items:center;border-bottom:1px solid var(--gold);padding-bottom:5px;color:var(--gold-deep);font-size:.82rem;font-weight:600;letter-spacing:.02em}
.text-link:hover{color:var(--ink)}
.skip-link{position:fixed;z-index:200;top:-60px;left:12px;padding:8px 14px;background:white;color:var(--ink)}.skip-link:focus{top:12px}
.site-header{position:absolute;z-index:30;top:0;left:0;width:100%;height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,66px);color:white;transition:background .25s,box-shadow .25s}
.site-header.is-scrolled{position:fixed;background:rgba(250,247,242,.97);box-shadow:0 3px 22px rgba(58,42,29,.08);color:var(--ink);backdrop-filter:blur(12px)}
.brand{display:flex;align-items:center;gap:11px;white-space:nowrap;font-family:var(--serif);font-size:1.07rem;font-weight:600;letter-spacing:.03em}.brand-mark{font-size:1.8rem;color:#e3cda6;line-height:1}.site-header.is-scrolled .brand-mark{color:var(--gold)}
.primary-nav{display:flex;align-items:center;gap:clamp(15px,2vw,29px)}.primary-nav a{font-size:.72rem;font-weight:600;letter-spacing:.03em;white-space:nowrap;opacity:.96}.primary-nav a:hover{color:#eacfa8}.site-header.is-scrolled .primary-nav a:hover{color:var(--gold-deep)}
.menu-toggle{display:none}
.hero{position:relative;min-height:700px;min-height:100svh;display:flex;align-items:center;overflow:hidden;background:#4d4a41;color:white}
.hero-picture,.hero-picture img,.hero-shade{position:absolute;inset:0;width:100%;height:100%}.hero-picture img{object-fit:cover;object-position:center 48%}.hero-shade{background:linear-gradient(90deg,rgba(18,16,15,.76) 0%,rgba(18,16,15,.57) 42%,rgba(18,16,15,.08) 100%),linear-gradient(0deg,rgba(18,16,15,.4),transparent 32%)}
.hero-content{position:relative;z-index:2;padding-top:105px;padding-bottom:108px}.hero-eyebrow{color:#e7cfa6;margin-bottom:29px}.hero h1{display:flex;flex-direction:column;align-items:flex-start;font-size:clamp(3.2rem,7vw,7.15rem);line-height:1.12;letter-spacing:-.065em;margin:0;max-width:900px;text-shadow:0 2px 14px rgba(0,0,0,.18)}.hero-amp{font-size:.48em;color:#e8d4b3;line-height:1.25;margin-left:2.15em;font-style:italic}.hero-rule{display:block;width:66px;height:1px;background:#e8d4b3;margin:29px 0 20px}.hero-subtitle{font-family:var(--serif);font-size:clamp(1rem,2vw,1.35rem);max-width:500px;line-height:1.6;margin-bottom:15px}.hero-date{font-size:.84rem;letter-spacing:.18em;text-transform:uppercase;color:#eedfc9;margin-bottom:30px}.hero-action{min-width:155px}.scroll-cue{position:absolute;z-index:2;bottom:26px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:1px;text-transform:uppercase;letter-spacing:.2em;font-size:.55rem}.scroll-cue span:first-child{font-size:1.65rem;line-height:1.1}
.demo-ribbon{background:#e8d9bd;color:#493721;text-align:center;padding:10px 20px;font-size:.76rem;font-weight:600;line-height:1.5}
.intro-section{position:relative;overflow:hidden;background:var(--paper)}.intro-section:before{content:"";position:absolute;top:16px;left:-14px;width:165px;height:260px;background:url("../assets/icons/botanical.svg") center/contain no-repeat;opacity:.17;pointer-events:none}.intro-grid{position:relative;z-index:1;display:grid;grid-template-columns:.95fr 1.05fr;align-items:center;gap:clamp(45px,7vw,110px)}.intro-copy{max-width:500px}.intro-copy h2{margin-bottom:22px}.intro-copy>p:not(.eyebrow){color:var(--muted)}.intro-copy .lead{color:#564638}.flourish{display:flex;align-items:center;gap:16px;color:var(--gold);font-size:1rem;margin:22px 0}.flourish:after{content:"";width:76px;height:1px;background:var(--line)}.intro-photo{position:relative;margin:0 12px 25px 0}.intro-photo:after{content:"";position:absolute;z-index:0;inset:24px -24px -24px 24px;border:1px solid var(--gold);pointer-events:none}.intro-photo img{position:relative;z-index:1;width:100%;aspect-ratio:3/4;object-fit:cover;object-position:58% 50%;box-shadow:var(--shadow)}.intro-photo figcaption{position:relative;z-index:2;margin-top:34px;text-align:center;color:var(--muted);font-family:var(--serif);font-style:italic;font-size:.9rem}
.couple-section{background:var(--ivory)}.couple-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(22px,5vw,64px);max-width:1040px;margin:auto}.person-card{text-align:center}.person-image-wrap{overflow:hidden;background:#e9e0d4;aspect-ratio:4/5;margin-bottom:25px}.person-image-wrap img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}.person-card:hover img{transform:scale(1.035)}.person-role{color:var(--gold-deep);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:9px}.person-card h3{margin-bottom:13px}.person-card p:not(.person-role){max-width:390px;color:var(--muted);margin:0 auto 8px}.person-parents{font-size:.79rem;font-style:italic}
.countdown-section{position:relative;overflow:hidden;background:#e8d9d0;background:radial-gradient(circle at 90% 10%,rgba(255,255,255,.48),transparent 29%),linear-gradient(130deg,#e8d5cf,#f4e9de 58%,#e6d2c3)}.countdown-section:before,.countdown-section:after{content:"✳";position:absolute;color:rgba(185,154,101,.22);font-size:clamp(7rem,15vw,14rem);line-height:1}.countdown-section:before{left:-20px;top:0}.countdown-section:after{right:0;bottom:-20px}.countdown-section .container{position:relative;z-index:1}.countdown-section h2{margin-bottom:14px}.countdown-section p:not(.eyebrow){color:#63534c}.countdown-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;max-width:660px;margin:45px auto 0}.countdown-grid>div{min-height:130px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:rgba(255,255,255,.52);border:1px solid rgba(255,255,255,.72)}.countdown-grid strong{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,4vw,3.3rem);line-height:1.3}.countdown-grid span{color:var(--gold-deep);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase}.countdown-status{min-height:1.5em;margin:20px 0 0;font-size:.88rem}
.calendar-section{background:var(--paper)}.calendar-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,8vw,110px);align-items:center;max-width:1000px}.calendar-copy{max-width:440px}.calendar-copy>p:not(.eyebrow){color:var(--muted)}.calendar-date-note{font-family:var(--serif);font-size:1.15rem!important;color:var(--gold-deep)!important}.calendar-card{padding:clamp(20px,3vw,38px);border:1px solid var(--line);box-shadow:var(--shadow);background:white}.calendar-card h3{text-align:center;font-size:1.25rem;margin:0 0 24px}.calendar-table{width:100%;border-collapse:collapse;table-layout:fixed;text-align:center}.calendar-table th{padding:5px 0 13px;color:var(--gold-deep);font-size:.65rem;font-weight:600}.calendar-table td{height:49px;font-size:.78rem}.calendar-table td span{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:50%}.calendar-table .is-wedding-day span{background:var(--gold-deep);color:white;font-weight:600}.calendar-table .is-empty{color:transparent}
.story-section{background:var(--ivory)}.story-timeline{position:relative;list-style:none;margin:0;padding:0;max-width:1060px;margin-inline:auto}.story-timeline:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--line)}.story-item{position:relative;display:flex;width:50%;padding:0 53px 54px 0}.story-item:nth-child(even){margin-left:50%;padding:0 0 54px 53px}.story-item:before{content:"";position:absolute;top:24px;right:-6px;width:13px;height:13px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 6px var(--ivory)}.story-item:nth-child(even):before{right:auto;left:-7px}.story-card{width:100%;background:white;box-shadow:0 12px 35px rgba(58,42,29,.07)}.story-card img{width:100%;aspect-ratio:16/9;object-fit:cover}.story-card-body{padding:24px 27px}.story-date{color:var(--gold-deep);font-size:.68rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px}.story-card h3{font-size:1.35rem;margin:0 0 9px}.story-card p:last-child{font-size:.83rem;color:var(--muted);margin-bottom:0}
.events-section{background:var(--paper)}.event-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.event-card{background:white;box-shadow:var(--shadow);border:1px solid #efe8df;overflow:hidden}.event-card>img{width:100%;aspect-ratio:16/10;object-fit:cover}.event-body{padding:clamp(24px,3vw,38px)}.event-index{color:var(--gold-deep);font-size:.69rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;margin-bottom:10px}.event-body h3{margin-bottom:16px}.event-detail{display:grid;grid-template-columns:72px 1fr;gap:12px;font-size:.82rem;margin-bottom:8px}.event-detail dt{color:var(--gold-deep);font-weight:600}.event-detail dd{margin:0}.event-demo{color:#755329;font-size:.74rem;font-style:italic}.event-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:25px}.event-actions .button{min-height:43px;padding:9px 14px;font-size:.7rem}.event-unavailable{color:var(--muted);font-size:.75rem;margin:12px 0 0}
.gallery-section{background:var(--ivory)}.gallery-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:dense;gap:14px}.gallery-tile{position:relative;grid-column:span 4;overflow:hidden;border:0;padding:0;background:#e4ddd3;aspect-ratio:4/5}.gallery-tile:nth-child(2),.gallery-tile:nth-child(5){grid-column:span 8;aspect-ratio:16/10}.gallery-tile img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1),filter .4s}.gallery-tile:hover img,.gallery-tile:focus-visible img{transform:scale(1.045);filter:brightness(.84)}.gallery-tile:after{content:"Xem ảnh ↗";position:absolute;left:18px;bottom:16px;color:white;font-size:.76rem;font-weight:600;opacity:0;transform:translateY(7px);transition:.3s;text-shadow:0 1px 5px #333}.gallery-tile:hover:after,.gallery-tile:focus-visible:after{opacity:1;transform:none}
.forms-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(35px,8vw,110px);align-items:start}.forms-intro{position:sticky;top:125px}.forms-intro>p:not(.eyebrow){color:var(--muted)}.demo-note{border-left:2px solid var(--gold);padding:13px 0 13px 18px;font-size:.77rem;color:#654b34!important;background:rgba(185,154,101,.07)}.wishes-section{background:var(--paper)}.rsvp-section{background:#f5ece8}.form-panel{background:white;padding:clamp(24px,4vw,47px);box-shadow:var(--shadow)}.field{margin-bottom:22px}.field label,.field legend{display:block;margin-bottom:8px;font-size:.79rem;font-weight:600;color:var(--ink)}.field label span[aria-hidden],.field legend span[aria-hidden]{color:#8d473d}.field .optional{font-weight:400;color:var(--muted)}.field input:not([type=radio]),.field textarea{display:block;width:100%;border:1px solid #9a8a79;background:#fffefa;color:var(--ink);border-radius:0;padding:12px 15px;min-height:47px;font-size:.84rem;transition:border-color .2s,box-shadow .2s}.field textarea{min-height:115px;resize:vertical}.field input:not([type=radio]):focus,.field textarea:focus{outline:0;border-color:var(--gold-deep);box-shadow:0 0 0 3px rgba(185,154,101,.16)}.field input::placeholder,.field textarea::placeholder{color:var(--muted);opacity:1}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:#a04435}.form-panel .button{width:100%}.form-status{min-height:1.5em;margin:16px 0 0;font-size:.79rem;color:#345c45}.form-status.is-error{color:#9b3f32}.wishes-list{border-top:1px solid var(--line);margin-top:25px;padding-top:12px;max-height:320px;overflow:auto}.wishes-list:empty{display:none}.wish-entry{padding:17px 0;border-bottom:1px solid #eee7de}.wish-entry h3{font-family:var(--sans);font-weight:600;font-size:.84rem;margin:0 0 4px}.wish-entry p{color:var(--muted);font-size:.8rem;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.attendance-field{border:0;padding:0;margin:0 0 22px}.radio-row{display:flex;flex-wrap:wrap;gap:10px}.radio-row label{position:relative;display:flex;align-items:center;gap:8px;border:1px solid var(--line);padding:10px 14px;margin:0;cursor:pointer;font-size:.77rem;font-weight:400}.radio-row label:has(input:checked){border-color:var(--gold-deep);background:#faf5ec}.radio-row input{accent-color:var(--gold-deep);width:16px;height:16px;margin:0}
.gifts-section{background:var(--ivory)}.gift-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;max-width:950px;margin:auto}.gift-card{display:grid;grid-template-columns:125px 1fr;gap:22px;align-items:center;padding:25px;background:white;border:1px solid var(--line)}.gift-card img{width:125px;height:125px;object-fit:contain;background:#f5f0e9}.gift-card h3{font-size:1.13rem;margin:0 0 9px}.gift-card p{font-size:.78rem;color:var(--muted);margin:0 0 4px;overflow-wrap:anywhere}.gift-card .gift-placeholder{color:#745a3d;font-style:italic}.copy-button{border:0;background:transparent;color:var(--gold-deep);border-bottom:1px solid var(--gold);padding:2px 0;margin-top:7px;font-size:.73rem;font-weight:600}.copy-button:hover{color:var(--ink)}.copy-status{display:block;min-height:1.3em;font-size:.68rem;color:#345c45}
.footer{background:#3f352f;color:white;text-align:center;padding:82px 0 44px}.footer-inner{max-width:760px}.footer-heart{display:block;color:#d8b995;font-size:2.4rem;line-height:1;margin-bottom:17px}.footer .eyebrow{color:#ddc4a0}.footer h2{font-size:clamp(2.15rem,5vw,3.8rem);margin-bottom:20px}.footer p:not(.eyebrow){color:#e6dfd8}.footer-date{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;margin:21px 0 33px}.back-to-top{display:inline-flex;gap:8px;align-items:center;border-bottom:1px solid #cab08a;padding-bottom:4px;font-size:.8rem}.back-to-top:hover{color:#e3c79d}
.music-button{position:fixed;z-index:35;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;min-height:48px;padding:5px 15px 5px 5px;border:1px solid rgba(124,92,55,.28);border-radius:999px;background:rgba(255,253,249,.96);color:var(--ink);box-shadow:0 8px 28px rgba(25,20,18,.18);font-size:.69rem;font-weight:600;backdrop-filter:blur(8px)}.music-disc{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:50%;background:var(--ink);color:white;font-size:1rem}.music-button[disabled]{opacity:.76;cursor:not-allowed}.music-button.is-playing .music-disc{animation:disc-spin 7s linear infinite}
.lightbox{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:18px}.lightbox-backdrop{position:absolute;inset:0;background:rgba(23,19,17,.94)}.lightbox-dialog{position:relative;z-index:1;width:min(100%,1100px);height:min(90svh,800px);display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;gap:5px;color:white}.lightbox-dialog figure{grid-column:2;min-width:0;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.lightbox-dialog img{max-width:100%;max-height:calc(100% - 60px);width:auto;height:auto;object-fit:contain}.lightbox-dialog figcaption{text-align:center;font-size:.79rem;margin-top:12px;color:#eee5dd}.lightbox-close,.lightbox-arrow{border:0;background:transparent;color:white;min-width:46px;min-height:46px;line-height:1}.lightbox-close{position:absolute;top:0;right:0;z-index:2;font-size:2.4rem}.lightbox-arrow{font-size:3rem}.lightbox-prev{grid-column:1;grid-row:1}.lightbox-next{grid-column:3;grid-row:1}.lightbox-arrow:hover,.lightbox-close:hover{color:#e4c89d}.lightbox-count{position:absolute;bottom:0;left:50%;transform:translateX(-50%);font-size:.69rem;color:#e7dcd2}

/* A short, optional opening scene; the invitation remains usable without JavaScript. */
body.invitation-open{overflow:hidden}
.invitation-overlay{position:fixed;z-index:120;inset:0;display:grid;place-items:center;overflow-y:auto;overscroll-behavior:contain;padding:34px 20px max(34px,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 28%,#fffdf9 0,#f7f0e8 55%,#eee0d5 100%);text-align:center}
.invitation-overlay::before,.invitation-overlay::after{content:"";position:absolute;width:clamp(140px,25vw,360px);height:clamp(220px,35vw,470px);background:url("../assets/icons/botanical.svg") center/contain no-repeat;opacity:.17;pointer-events:none}
.invitation-overlay::before{left:-5%;top:-12%;transform:rotate(-23deg)}
.invitation-overlay::after{right:-5%;bottom:-12%;transform:rotate(157deg)}
.invitation-intro{position:relative;z-index:1;width:min(100%,530px);margin:auto;animation:invitation-appear .65s ease both}
.invitation-intro>.eyebrow{margin-bottom:20px}
.invitation-intro h2{font-size:clamp(1.9rem,4vw,2.8rem);margin:25px 0 8px}
.invitation-names{font-family:var(--serif);font-size:clamp(1.15rem,2.5vw,1.5rem);color:var(--gold-deep);margin:0 0 4px}
.invitation-date{font-size:.72rem;font-weight:600;letter-spacing:.2em;color:var(--muted);margin:0 0 18px}
.invitation-description{max-width:360px;margin:0 auto 22px;color:var(--muted);font-size:.85rem}
.invitation-actions{display:flex;flex-direction:column;align-items:center;gap:9px}
.invitation-actions .button{min-width:165px}
.invitation-skip{min-height:42px;border:0;background:transparent;color:var(--gold-deep);font-size:.76rem;text-decoration:underline;text-underline-offset:4px}
.envelope{position:relative;isolation:isolate;width:min(72vw,340px);aspect-ratio:1.46;margin:0 auto;filter:drop-shadow(0 20px 22px rgba(69,48,32,.16));perspective:700px}
.envelope-back,.envelope-front,.envelope-flap{position:absolute;inset:0}
.envelope-back{z-index:0;background:#d7b79e;border:1px solid #c9a789}
.envelope-letter{position:absolute;z-index:1;top:28%;left:10%;width:80%;height:64%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#fffdf9;border:1px solid #e6d8c7;box-shadow:0 3px 12px rgba(69,48,32,.1);transition:transform .7s cubic-bezier(.2,.7,.2,1) .15s}
.envelope-letter-mark{font-size:1.6rem;line-height:1;color:var(--gold)}
.envelope-letter-label{font-family:var(--serif);font-size:1.1rem;color:var(--ink)}
.envelope-front{z-index:2;background:linear-gradient(145deg,#ead4bf,#d9b79d);clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%)}
.envelope-flap{z-index:3;height:56%;background:linear-gradient(170deg,#ecd9c7,#ddbea6);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top center;transition:transform .65s ease;backface-visibility:hidden}
.envelope-seal{position:absolute;z-index:4;left:50%;top:53%;display:grid;place-items:center;width:43px;height:43px;border-radius:50%;background:#a77c62;color:#fff8ed;font-size:1rem;box-shadow:0 3px 10px rgba(74,43,31,.18);transform:translate(-50%,-50%);transition:opacity .25s}
.invitation-overlay.is-opening .envelope-flap{transform:rotateX(180deg)}
.invitation-overlay.is-opening .envelope-letter{transform:translateY(-47%)}
.invitation-overlay.is-opening .envelope-seal{opacity:0}
.invitation-overlay.is-leaving{opacity:0;transition:opacity .22s ease}

/* Small editorial details shared by the image and form sections. */
.person-image-wrap,.event-card,.gallery-tile{box-shadow:0 14px 32px rgba(58,42,29,.07)}
.event-actions .button{min-height:46px}
.field input:not([type=radio]),.field textarea{font-size:1rem}
.music-button{transition:transform .25s ease,box-shadow .25s ease}
.music-button:hover{transform:translateY(-3px);box-shadow:0 12px 30px rgba(25,20,18,.21)}
.button:disabled{cursor:not-allowed;opacity:.65;transform:none}
