@font-face{font-family:'Allura';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/allura-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Allura';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/allura-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 700;font-display:swap;src:url('/fonts/cormorant-garamond-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 700;font-display:swap;src:url('/fonts/cormorant-garamond-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 700;font-display:swap;src:url('/fonts/cormorant-garamond-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 700;font-display:swap;src:url('/fonts/cormorant-garamond-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{--paper:#fbf8f4;--ivory:#faf5ef;--warm-paper:#f6efe7;--champagne:#f2e8db;--gold:#c7a35b;--gold-deep:#b99049;--gold-light:#d7bd83;--gold-text:#a17a3d;--muted-text:#786960;--ink:#6d5d57;--muted:#8d7b72;--serif:'Cormorant Garamond',Georgia,serif;--script:'Allura','Cormorant Garamond',cursive;--sheet-width:520px;--paper-ease:cubic-bezier(.22,.7,.25,1);--paper-grain:repeating-linear-gradient(0deg,#a4896803 0px,#a4896803 1px,transparent 1px,transparent 3px)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body.paper-page{margin:0;background:linear-gradient(90deg,#f2e8db,#faf6f0 28%,#faf6f0 72%,#f2e8db);color:var(--ink);font-family:var(--serif);font-size:19px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}
body.intro-active{overflow:hidden;overscroll-behavior:none}
[hidden]{display:none!important}
img,svg{display:block;max-width:100%}
img{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:disabled{cursor:default}
button{border-radius:0}
a{color:inherit;text-underline-offset:.2em}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--gold-deep);outline-offset:5px}
::selection{background:#e8d5af;color:#58493f}
h1,h2,h3,p,figure{margin:0}
button svg{flex:none}
.sr-only,.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}
.skip-link{position:fixed;top:10px;left:10px;z-index:200;transform:translateY(-180%);padding:10px 16px;background:var(--paper);border:1px solid var(--gold-light)}
.skip-link:focus{transform:none}
.invitation-sheet{position:relative;isolation:isolate;width:100%;max-width:var(--sheet-width);min-height:100dvh;margin-inline:auto;background-image:var(--paper-grain),linear-gradient(105deg,#fbf8f4,#fffdf9 52%,#faf5ef);box-shadow:0 0 50px #b9a18108}
.invitation-section{position:relative;padding:76px 32px;text-align:center;isolation:isolate}
.script-heading{font-family:var(--script);font-size:clamp(43px,11.8vw,57px);font-weight:400;line-height:1.1;color:var(--gold-text);margin-bottom:25px}
.eyebrow{font-size:12px;line-height:1.65;letter-spacing:.14em;text-transform:uppercase}
.copy{font-size:20px;line-height:1.6;max-width:345px;margin-inline:auto}
.copy+.copy{margin-top:18px}
.fine-print{font-size:14px;line-height:1.55;color:var(--muted-text);max-width:355px;margin:18px auto 0}
.divider{display:block;width:190px;height:auto;margin:37px auto;opacity:.77}
.divider>img{width:100%}
.floral{position:absolute;z-index:1;width:160px;pointer-events:none;opacity:.58}
.floral img{width:100%;height:auto}
.floral-top{top:0;right:0;transform:scaleX(-1)}
.floral-bottom{bottom:0;left:0;transform:scaleY(-1)}
.arch-frame{position:relative;isolation:isolate;background:url('/assets/invitation/arch.svg') center/100% 100% no-repeat}

/* The phone keeps the original portrait invitation; desktop has its own companion sheet. */
.paper-hero{position:relative;min-height:100dvh;padding:25px 16px 22px;overflow:hidden}
.paper-hero .arch-frame{min-height:calc(100dvh - 47px);padding:112px 34px 250px}
.hero-copy{position:relative;z-index:4;text-align:center}
.hero-copy>:not(.hero-art){position:relative;z-index:2}
.hero-copy>.eyebrow{font-size:12px;letter-spacing:.12em;margin-bottom:18px}
.brand-title{font-family:var(--script);font-size:clamp(65px,18vw,88px);font-weight:400;line-height:.92;color:var(--gold-text)}
.brand-title>span{display:block}
.brand-title>span+span{font-size:.75em;line-height:1.12;margin-top:7px}
.hero-tagline{font-size:24px;font-style:italic;line-height:1.2;margin-top:16px}
.hero-copy>.divider{width:120px;margin:20px auto}
.hero-date{display:block;font-family:var(--script);font-size:35px;line-height:1.3;margin-top:0;color:var(--gold-text)}
.hero-time{font-size:19px;letter-spacing:.16em;margin-top:1px}
.hero-copy>.hero-signature{position:absolute;left:20px;right:20px;bottom:77px;margin:0;font-size:10px;letter-spacing:.13em}
#hero-title:focus{outline:none}
.hero-art{position:absolute!important;left:16px;right:16px;bottom:57px;z-index:1;min-height:0!important;height:36%;margin:0!important;overflow:hidden;mask-image:linear-gradient(180deg,transparent,#000 15%,#000 77%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 15%,#000 77%,transparent)}
.hero-art>img{width:100%;height:100%;object-fit:cover;object-position:center 55%}
.hero-art.asset-slot:not(:has(img)){height:225px;min-height:0;background:linear-gradient(180deg,transparent,#f2e8db70,transparent);display:flex;align-items:center;justify-content:center;padding:25px 35px}
.hero-art .asset-note{font-size:14px;max-width:240px;color:var(--muted-text)}
.scroll-cue{position:absolute;z-index:5;bottom:24px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:3px;font:29px/1 var(--script);text-decoration:none;white-space:nowrap;color:var(--gold-text)}
.scroll-cue>span{font:20px/1 var(--serif);animation:paper-arrow 3s ease-in-out infinite}
.scroll-cue svg{width:12px;height:18px;animation:paper-arrow 3s ease-in-out infinite}
@keyframes paper-arrow{0%,100%{translate:0 0}50%{translate:0 5px}}

.scratch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;width:100%;max-width:320px;margin:32px auto 22px}
.scratch-item{min-width:0}
.scratch-card{position:relative;display:grid;place-items:center;width:100%;height:125px;padding:0;overflow:hidden;border:1px solid #d7bd8375;background:linear-gradient(135deg,#fdf9f0,#f0e0bc 62%,#fbf6e8);box-shadow:inset 0 0 0 4px #fffaf580;border-radius:2px;touch-action:none}
.scratch-card canvas{position:absolute;inset:0;z-index:2;width:100%;height:100%;touch-action:none}
.scratch-value{font-size:35px;line-height:1;font-weight:500;color:var(--gold-text)}
.scratch-item:nth-child(2) .scratch-value{font-size:24px;letter-spacing:.035em}
.scratch-label{display:block;font-size:12px;letter-spacing:.18em;margin-top:11px;color:var(--muted-text)}
.scratch-hint{font-size:17px;color:var(--muted-text);margin-top:-10px}
.scratch-reset,.text-button{appearance:none;border:0;background:transparent;padding:10px 3px;min-height:44px;font-size:15px;text-decoration:underline;text-decoration-color:#c7a35b70;text-underline-offset:5px}
.invitation-copy.arch-frame{padding:110px 42px 74px;margin:0 2px;min-height:555px}
.invitation-copy>.script-heading{font-size:45px;margin-bottom:25px}
.invitation-copy .copy{font-size:21px;line-height:1.55}
.invitation-copy .eyebrow{margin-bottom:25px}
.invitation-copy .divider{width:145px;margin:30px auto}
.invitation-copy .closing-script{font-size:39px;margin-top:32px}
.invitation-copy>.outline-button{margin-top:30px}
.antique-illustration{width:80px;height:85px;margin:0 auto 26px;color:var(--gold);opacity:.8}
.paper-timeline{list-style:none;padding:10px 0 20px;margin:40px 0 0;position:relative}
.paper-timeline::before{content:'';position:absolute;width:1px;left:50%;top:0;bottom:0;background:linear-gradient(transparent,#d7bd8390 7%,#d7bd8390 92%,transparent)}
.timeline-item{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:44px;min-height:145px;padding:12px 0 34px;align-items:start}
.timeline-item::after{content:'';position:absolute;left:calc(50% - 3px);top:32px;width:6px;height:6px;transform:rotate(45deg);border:1px solid #c7a35b85;background:var(--paper)}
.timeline-mark{display:flex;align-items:center;justify-content:center;grid-column:1;grid-row:1;justify-self:center;width:70px;height:76px;color:var(--gold);opacity:.8}
.timeline-mark>svg,.timeline-mark>img{width:100%;height:100%;object-fit:contain;stroke-width:.9}
.timeline-copy{grid-column:2;grid-row:1;min-width:0;text-align:left}
.timeline-item:nth-child(even) .timeline-copy{grid-column:1;text-align:right}
.timeline-item:nth-child(even) .timeline-mark{grid-column:2}
.timeline-time{display:block;font-family:var(--script);font-size:27px;line-height:1.15;color:var(--gold-text);margin-bottom:9px}
.timeline-copy h3{font-size:22px;font-weight:400;line-height:1.2}
.timeline-copy p{font-size:16px;line-height:1.4;margin-top:8px;color:var(--muted-text)}
.timeline-copy small{display:block;font-size:13px;line-height:1.5;color:var(--muted-text);margin-top:10px}
.paper-countdown .countdown-clock{display:flex;justify-content:center;gap:0;margin:31px auto 12px;max-width:350px}
.countdown-unit{position:relative;flex:1;min-width:0;text-align:center}
.countdown-unit+.countdown-unit::before{content:':';position:absolute;left:-3px;top:0;font:36px/1.15 var(--serif);color:var(--gold-text)}
.countdown-unit>[data-countdown-unit]{display:block;font:46px/1 var(--serif);font-variant-numeric:lining-nums tabular-nums;color:var(--gold-text);min-width:2ch}
.countdown-unit>small,.countdown-label{display:block;margin-top:12px;font-size:11px;line-height:1.4;letter-spacing:.13em;text-transform:uppercase;color:var(--muted-text)}
.countdown-date{display:block;font-size:19px;margin-top:17px}
.countdown-status{font-size:16px;margin-top:20px}
.asset-slot{position:relative;margin:28px auto 20px;min-width:0}
.asset-slot>img{width:100%;height:auto;object-fit:cover}
.asset-slot:not(:has(img)){min-height:180px;display:flex;align-items:center;justify-content:center;background:linear-gradient(150deg,#f6efe755,#f2e8db44,#fbf8f400);padding:28px;color:var(--muted-text)}
.asset-note{font-size:15px;line-height:1.5;max-width:300px;margin-inline:auto}
.venue-art,.venue-photo{margin-inline:-32px;mask-image:linear-gradient(transparent,#000 12%,#000 85%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 12%,#000 85%,transparent)}
.venue-name{font-family:var(--serif);font-size:27px;line-height:1.3;font-weight:400;margin-bottom:20px}
.map-frame{padding:8px;border:1px solid #d7bd8380;background:linear-gradient(135deg,#f9f3e8,#fffdf9);margin-top:30px;position:relative}
.map-frame::before{content:'';position:absolute;inset:3px;border:1px solid #d7bd8338;pointer-events:none}
.map-frame iframe{display:block;width:100%;height:270px;border:0}
.dress-notes{margin-top:42px;text-align:center}
.dress-notes+.dress-notes{margin-top:44px}
.dress-notes h3{font:35px/1.25 var(--script);color:var(--gold-text);margin-bottom:16px}
.dress-notes p{font-size:19px;line-height:1.55;max-width:330px;margin:auto}
.dress-notes p+h3{margin-top:36px}
.dress-notes+.copy{margin-top:32px}
.dress-notes ul{list-style:none;padding:0;margin:15px auto 0;max-width:320px}
.dress-notes li{margin:8px 0;font-size:18px}
.dress-notes li::before{content:'✦';font-size:8px;color:var(--gold);margin-right:10px;vertical-align:2px}
.outline-button,.paper-dialog .button{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:17px;min-height:48px;padding:13px 21px;background:transparent;border:1px solid #c7a35b99;color:var(--ink);font-family:var(--serif);font-size:13px;font-weight:500;line-height:1.4;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;transition:background .25s,border-color .25s;max-width:100%}
.outline-button:hover,.paper-dialog .button:hover{background:#f2e8db70;border-color:var(--gold-text)}
.outline-button svg,.paper-dialog .button svg{width:25px;height:15px}
.invitation-section>.outline-button{margin-top:30px}
.paper-ending{position:relative;max-width:520px;margin:auto;padding:70px 32px 48px;text-align:center;background-image:var(--paper-grain),linear-gradient(#fbf8f4,#faf5ef);overflow:hidden}
.paper-ending .brand-title{font-size:49px;line-height:1.05;position:relative;z-index:2}
.paper-ending>time,.paper-ending>.ending-date{display:block;font-size:19px;margin:20px auto}
.paper-ending [data-replay-intro]{display:block;margin:26px auto 0;font-size:14px}
.paper-ending .fine-print{font-size:12px;margin-top:30px}
.paper-ending .floral{width:135px;opacity:.45}
.paper-ending .legal-links{display:flex;justify-content:center;flex-wrap:wrap;gap:0 16px;margin-top:18px}
.paper-ending .legal-links .text-button{font-size:13px}
.no-js-note{max-width:520px;margin:0 auto;padding:20px 30px;background:var(--paper);font-size:16px;text-align:center}
.audio-toggle{position:fixed;z-index:40;right:max(17px,calc((100vw - 520px)/2 + 17px));bottom:calc(18px + env(safe-area-inset-bottom));display:grid;place-items:center;width:44px;height:44px;border:1px solid #cfb471;border-radius:50%;background:linear-gradient(140deg,#eedba1,#d9b969);color:#705622;box-shadow:0 3px 10px #a4844220}
.audio-toggle svg{width:16px;height:16px}
.audio-toggle:disabled{opacity:.5}
.paper-dialog{width:calc(100% - 32px);max-width:450px;max-height:calc(100dvh - 32px);margin:auto;padding:38px 28px 32px;border:1px solid #d7bd8380;background-image:var(--paper-grain),linear-gradient(120deg,#fbf8f4,#fffdf9);color:var(--ink);overflow:auto;box-shadow:0 16px 75px #80654416}
.paper-dialog::backdrop{background:#bdae9694}
.paper-dialog .dialog-close{display:block;margin:-15px 0 22px auto;text-decoration:none}
.paper-dialog h2{font:47px/1.05 var(--script);font-weight:400;color:var(--gold-text);text-align:center;margin:14px 0 25px}
.paper-dialog h2 em{font-style:normal}
.paper-dialog h3{font-size:26px;font-weight:400}
.paper-dialog .chapter-label{font-size:12px;letter-spacing:.13em;text-transform:uppercase;text-align:center;color:var(--muted-text)}
.dialog-notice,.form-privacy{font-size:16px;line-height:1.5}
.dialog-notice strong{font-weight:500}
.request-form{margin-top:27px}
.form-field{margin-bottom:25px;text-align:left}
.form-field label{display:block;font-size:17px;margin-bottom:4px}
.form-field label>span{font-size:14px;color:var(--muted-text)}
.form-field input,.form-field select,.form-field textarea{width:100%;max-width:100%;padding:10px 2px;border:0;border-bottom:1px solid #c7a35b8c;background:transparent;border-radius:0;font-size:19px;box-shadow:none;min-height:46px}
.form-field textarea{resize:vertical;min-height:105px}
.form-field select{padding-right:18px}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-bottom-color:var(--gold-text)}
.request-form>.button,.request-form>.outline-button{width:100%;margin:8px 0 17px}
.draft-preview{border-top:1px solid #d7bd8355;margin-top:25px;padding-top:25px;outline-offset:6px}
.draft-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;font:16px/1.5 var(--serif);padding:0;margin:16px 0 24px}
.draft-preview .button{font-size:12px}
.draft-edit{margin-left:12px}
.draft-status{font-size:15px;margin-top:20px}
.note-dialog [data-note-text]{font-size:18px;line-height:1.65}
.note-dialog .small-monogram{width:40px;height:40px;margin:10px auto;color:var(--gold)}

/* The folds and embossed seal share a physical portrait envelope, not a modal card. */
.envelope-intro{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;padding:50px 20px;background-image:var(--paper-grain),radial-gradient(ellipse at 50% 42%,#fffdf9,#f5ede2 75%);perspective:1400px}
.intro-skip{position:absolute;z-index:20;top:calc(15px + env(safe-area-inset-top));right:max(20px,calc((100vw - 520px)/2 + 24px));border:0;background:none;min-height:44px;padding:8px;font-size:13px;color:var(--muted-text);letter-spacing:.025em}
.envelope-stage{position:relative;width:min(calc(100vw - 62px),360px,calc(76dvh * .60));height:min(76dvh,640px);perspective:1200px;flex:none}
.envelope{position:relative;width:100%;height:100%;transform-style:preserve-3d;filter:drop-shadow(0 16px 21px #907a5b26)}
.envelope-back{position:absolute;inset:0;z-index:0;background:linear-gradient(120deg,#f8f0e2,#ead8b6 54%,#f9f1e4);border:1px solid #d2bd9660}
.envelope-back::after{content:'';position:absolute;inset:15px;background:url('/assets/invitation/ornament-01.svg') left top/50% 42% space;filter:grayscale(1) brightness(1.06);opacity:.3}
.envelope-letter{position:absolute;inset:5% 7%;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 25px;background-image:var(--paper-grain),linear-gradient(115deg,#fffdf8,#f9f2e7);box-shadow:0 0 18px #9c7e4c20;text-align:center;font:46px/1.1 var(--script);color:var(--gold-text);transform-origin:center bottom}
.envelope-letter::before{content:'';position:absolute;inset:15px;z-index:-1;background:url('/assets/invitation/arch.svg') center/100% 100% no-repeat;opacity:.7}
.envelope-letter .brand-title{font-size:51px}
.envelope-letter>.script-heading{font-size:44px;margin:22px 0}
.envelope-letter>.eyebrow{font:12px/1.5 var(--serif);color:var(--ink)}
.envelope-letter>span:last-child{font:20px/1.35 var(--serif);color:var(--ink)}
.envelope-letter p{font-size:27px;margin-top:25px}
.envelope-pocket{position:absolute;inset:0;z-index:3;clip-path:polygon(0 0,50% 49%,100% 0,100% 100%,0 100%);background:linear-gradient(145deg,#fdf9f3,#f2eadb 70%,#fffaf3);box-shadow:inset 0 0 0 1px #e0d4c0}
.envelope-pocket::before{content:'';position:absolute;inset:0;clip-path:polygon(0 100%,.3% 100%,50% 49.3%,99.7% 100%,100% 100%,50% 49%);background:#b9a17a42}
.envelope-pocket::after{content:'';position:absolute;inset:53% 10% 5%;background:url('/assets/invitation/ornament-01.svg') center/contain no-repeat;filter:grayscale(1) brightness(1.06) drop-shadow(0 1px 0 white);opacity:.36;transform:rotate(180deg)}
.envelope-flap{position:absolute;inset:0 0 auto;height:51%;z-index:5;clip-path:polygon(0 0,100% 0,50% 100%);background-image:var(--paper-grain),linear-gradient(135deg,#fdf9f4,#efe7dc 75%,#fffaf3);transform-origin:center top;backface-visibility:hidden;box-shadow:inset 0 1px 0 #fffdfa}
.envelope-flap::before{content:'';position:absolute;inset:4% 12% 22%;background:url('/assets/invitation/ornament-01.svg') center/contain no-repeat;filter:grayscale(1) brightness(1.06) drop-shadow(0 1px 0 white);opacity:.44}
.envelope-flap::after{content:'';position:absolute;inset:0;clip-path:polygon(0 0,50% 99.5%,100% 0,100% .5%,50% 100%,0 .5%);background:#b9a17a42}
.wax-seal{position:absolute;z-index:7;left:50%;top:50%;translate:-50% -50%;width:82px;height:80px;display:grid;place-items:center;padding:0;border:1px solid #cdb793;border-radius:47% 53% 49% 45% / 46% 48% 53% 54%;background:radial-gradient(ellipse at 30% 23%,#fffdf5e6 0,transparent 36%),radial-gradient(ellipse at 60% 71%,#d8c5a79c,transparent 62%),linear-gradient(128deg,#f6eee0,#e1cfb1 53%,#f8f0e2);color:#b39158;box-shadow:0 7px 8px #8b71442b,0 2px 2px #b39a6866,inset 0 2px 2px #fffaf1,inset 0 -3px 5px #aa8c5959,inset 3px 0 4px #fffbefb3;transform:rotate(-7deg);transition:filter .2s}
.wax-seal::before{content:'';position:absolute;inset:8px;border:1px solid #bfa27588;border-radius:50%;box-shadow:inset 0 1px 1px #fffaf4,0 1px 1px #fffaf4}
.wax-seal::after{content:'';position:absolute;inset:3px;border:1px solid #fff8e89c;border-radius:47% 51% 47% 51%;opacity:.8;pointer-events:none}
.wax-seal:hover{filter:brightness(1.035)}
.seal-monogram{position:relative;font:39px/1 var(--script);letter-spacing:-.08em;padding-right:3px;transform:rotate(7deg);text-shadow:0 1px 0 #fff9eb,0 -1px 0 #94734360}
.intro-label{margin-top:30px;font:27px/1.2 var(--script);color:var(--gold-text);text-align:center}
.envelope::after{content:'';position:absolute;z-index:6;inset:-8%;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,#fff4caba,transparent 55%);opacity:0;mix-blend-mode:screen}
.envelope-intro.is-opening .wax-seal{animation:paper-seal-open .65s var(--paper-ease) both}
.envelope-intro.is-opening .envelope-flap{animation:paper-flap-open .95s .3s var(--paper-ease) both}
.envelope-intro.is-opening .envelope-letter{animation:paper-letter-rise 1.7s .65s var(--paper-ease) both}
.envelope-intro.is-opening .envelope::after{animation:paper-open-light 1.7s .2s ease both}
.envelope-intro.is-opening .envelope{animation:paper-envelope-leave .85s 1.8s var(--paper-ease) both}
.envelope-intro.is-opening .intro-label,.envelope-intro.is-opening .intro-skip{opacity:0;transition:opacity .25s}
.envelope-intro.is-opening{animation:paper-intro-fade .7s 2s ease both;pointer-events:none}
@keyframes paper-seal-open{0%{transform:rotate(-7deg) scale(1)}24%{transform:rotate(-7deg) scale(.92)}55%{transform:rotate(-3deg) scale(1.055);opacity:1}100%{transform:rotate(4deg) translateY(15px) scale(.83);opacity:0}}
@keyframes paper-flap-open{0%{transform:rotateX(0)}100%{transform:rotateX(-178deg)}}
@keyframes paper-letter-rise{0%{transform:translateY(0) scale(.98)}62%{transform:translateY(-33%) scale(1.035);opacity:1}100%{transform:translateY(-61%) scale(1.05);opacity:0}}
@keyframes paper-open-light{0%{opacity:0}35%{opacity:1}75%{opacity:.5}100%{opacity:0}}
@keyframes paper-envelope-leave{to{transform:translateY(82dvh) scale(.95);opacity:0}}
@keyframes paper-intro-fade{to{opacity:0}}

.motion-ready [data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .9s var(--paper-ease),transform .9s var(--paper-ease)}
.motion-ready [data-reveal].is-visible{opacity:1;transform:translateY(0)}
@media(min-width:600px){.invitation-sheet{box-shadow:0 0 50px #a88b5a08}.invitation-section{padding-inline:46px}.paper-hero{padding-inline:22px}.paper-hero .arch-frame{padding-top:126px;padding-inline:47px}.hero-art{left:22px;right:22px}.venue-art,.venue-photo{margin-inline:-46px}.script-heading{font-size:57px}}
@media(max-width:380px){.invitation-section{padding-inline:25px}.paper-hero{padding-inline:12px}.paper-hero .arch-frame{padding-inline:24px;padding-top:102px}.hero-copy>.eyebrow{font-size:11px}.hero-tagline{font-size:22px}.hero-date{font-size:32px}.timeline-item{column-gap:34px}.timeline-time{font-size:24px}.timeline-copy h3{font-size:20px}.venue-art,.venue-photo{margin-inline:-25px}.invitation-copy.arch-frame{padding-inline:32px}.countdown-unit>[data-countdown-unit]{font-size:42px}.paper-dialog{padding-inline:23px}}
@media(max-height:660px){.envelope-intro{padding-top:42px;padding-bottom:35px}.envelope-stage{height:72dvh;width:min(300px,calc(72dvh * .6))}.intro-label{font-size:23px;margin-top:18px;color:var(--muted-text)}.wax-seal{width:65px;height:64px}.seal-monogram{font-size:32px}.paper-hero .arch-frame{min-height:760px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.motion-ready [data-reveal],.motion-ready [data-reveal].is-visible{opacity:1;transform:none;transition:none}.scroll-cue>span,.scroll-cue svg{animation:none}.envelope-intro.is-opening .envelope,.envelope-intro.is-opening .envelope-flap,.envelope-intro.is-opening .envelope-letter,.envelope-intro.is-opening .wax-seal,.envelope-intro.is-opening .envelope::after{animation:none}.envelope-intro.is-opening{animation:paper-intro-fade .2s ease both}*,*::before,*::after{transition-duration:.01ms!important}}

/* Photographs already made for this invitation, gently printed into the paper. */
.section-floral{top:10px;right:0;width:130px;opacity:.32;z-index:-1;transform:scaleX(-1)}
#the-night>.section-floral,#dress-code>.section-floral{right:auto;left:0;transform:none}
.scene-image{position:relative;isolation:isolate;margin:30px -18px 34px;min-width:0;overflow:clip}
.scene-image>img{display:block;width:100%;height:auto;object-fit:cover;filter:saturate(.58) contrast(.82) brightness(1.17);opacity:.83;mask-image:linear-gradient(180deg,transparent,#000 13%,#000 83%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 13%,#000 83%,transparent);transform-origin:center 58%}
.scene-image>figcaption{position:relative;z-index:2;max-width:360px;margin:7px auto 0;padding-inline:12px;font-size:12px;line-height:1.5;color:var(--muted-text)}
.story-scene{margin-top:-20px;margin-bottom:10px}
.story-scene>img{aspect-ratio:5/4;object-position:center 53%;opacity:.68}
.mask-scene>img,.music-scene>img{aspect-ratio:4/3}
.midnight-scene>img{aspect-ratio:3/2;object-position:54% center}
.venue-art.scene-image{margin-inline:-32px;mask-image:none;-webkit-mask-image:none}
.venue-art.scene-image>img{aspect-ratio:3/2;object-position:50% 50%;opacity:.78;filter:saturate(.48) contrast(.76) brightness(1.24)}
.venue-art.scene-image>figcaption{margin-top:3px;margin-bottom:25px}
.dress-portraits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:34px -18px 32px}
.dress-portraits>figure{min-width:0;isolation:isolate;overflow:clip}
.dress-portraits img{width:100%;height:auto;aspect-ratio:2/3;object-fit:cover;object-position:center top;filter:saturate(.5) contrast(.77) brightness(1.2);opacity:.9;mask-image:linear-gradient(180deg,transparent,#000 8%,#000 87%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 8%,#000 87%,transparent);transform-origin:center 55%}
.dress-portraits figcaption{position:relative;margin-top:12px;font:30px/1.3 var(--script);color:var(--gold-text)}
.hero-art{left:10px;right:10px;bottom:62px;height:62%;isolation:isolate;pointer-events:none;mask-image:linear-gradient(180deg,transparent,#000 16%,#000 82%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 16%,#000 82%,transparent)}
.hero-art>img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center bottom}
.hero-art>.hero-palace{z-index:0;filter:saturate(.34) contrast(.56) brightness(1.8);opacity:.25;mix-blend-mode:multiply}
.hero-art>.hero-couple{z-index:1;width:108%;height:108%;left:-4%;top:-8%;object-fit:contain;filter:saturate(.52) contrast(.8) brightness(1.2);opacity:.9;transform-origin:center bottom}
.scene-glow{position:absolute;z-index:2;inset:0;pointer-events:none;background:radial-gradient(ellipse at 52% 18%,#fff8eeb0,transparent 58%),linear-gradient(transparent 78%,#fbf8f4b0);opacity:.5}
.hero-art::after{content:'';position:absolute;z-index:3;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--paper),transparent 7%,transparent 93%,var(--paper))}
.scene-image>img,.dress-portraits img{mask-image:linear-gradient(180deg,transparent,#000 13%,#000 83%,transparent),linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 13%,#000 83%,transparent),linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-composite:intersect;-webkit-mask-composite:source-in}
.hero-copy>.hero-signature{bottom:48px;font-size:9px;letter-spacing:.1em}
.paper-hero .floral-top{width:170px;opacity:.66}
.paper-hero::after{content:'';position:absolute;z-index:5;left:-26px;bottom:28px;width:135px;height:230px;pointer-events:none;background:url('/assets/invitation/ornament-01.svg') center/contain no-repeat;transform:rotate(180deg);opacity:.5}
.scratch-card::after{content:'';position:absolute;z-index:3;inset:-25%;pointer-events:none;background:linear-gradient(112deg,transparent 30%,#fff8df00 39%,#fffaf166 49%,#fff8df00 59%,transparent 68%);transform:translateX(-100%);opacity:.65}
.scratch-card.is-revealed::after{display:none}
@keyframes paper-photo-zoom{from{scale:1}to{scale:1.035}}
@keyframes paper-couple-drift{from{translate:0 0;scale:1}to{translate:0 -3px;scale:1.015}}
@keyframes paper-photo-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes paper-scratch-sheen{0%,40%{transform:translateX(-100%)}72%,100%{transform:translateX(100%)}}
@media(prefers-reduced-motion:no-preference){
  .motion-ready .scene-image>img,.motion-ready .dress-portraits img{animation:paper-photo-zoom 18s ease-in-out infinite alternate;animation-play-state:paused}
  .motion-ready .scene-image.is-photo-visible>img,.motion-ready .dress-portraits.is-photo-visible img{animation-play-state:running}
  .motion-ready .hero-art>.hero-couple{animation:paper-couple-drift 16s ease-in-out infinite alternate;animation-play-state:paused}
  .invitation-open .hero-art.is-photo-visible>.hero-couple{animation-play-state:running}
  .motion-ready.invitation-open .hero-art{animation:paper-photo-arrive 1.5s var(--paper-ease) both}
  .motion-ready .date-section.is-visible .scratch-card::after{animation:paper-scratch-sheen 6.5s ease-in-out infinite}
  .scratch-item:nth-child(2) .scratch-card::after{animation-delay:.25s}
  .scratch-item:nth-child(3) .scratch-card::after{animation-delay:.5s}
}
body.page-hidden *,body.page-hidden *::before,body.page-hidden *::after,body.intro-active .hero-art,body.intro-active .hero-art>img{animation-play-state:paused!important}
@media(min-width:600px) and (max-width:1023px){.venue-art.scene-image{margin-inline:-46px}.hero-art{left:18px;right:18px}}
@media(max-width:380px){.venue-art.scene-image{margin-inline:-25px}.hero-art{bottom:60px;height:60%}.scene-image{margin-inline:-12px}.dress-portraits{gap:9px;margin-inline:-13px}}
@media(max-width:1023px) and (max-height:740px){.paper-hero{min-height:790px}.paper-hero .arch-frame{min-height:743px}.hero-art{height:60%}}
@media(prefers-reduced-motion:reduce){.scene-image>img,.dress-portraits img,.hero-art,.hero-art>img,.scratch-card::after{animation:none!important;scale:1;translate:none}.scene-glow{opacity:.5}}
