@font-face{font-family:Cormorant;src:url('fonts/cormorant-regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Cormorant;src:url('fonts/cormorant-italic.ttf') format('truetype');font-style:italic;font-weight:400;font-display:swap}
:root{--plum:#35202e;--plum-light:#513348;--blush:#f5ded5;--paper:#fff4ea;--ink:#4e3039;--gold:#e3bf7e;--serif:Cormorant,Georgia,serif;--sans:Arial,Helvetica,sans-serif;color-scheme:light;font-family:var(--sans);font-size:16px;background:var(--plum);color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #bc894b;outline-offset:5px}button[hidden],[hidden]{display:none!important}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400}p{line-height:1.65}h2{font-size:clamp(2.7rem,8vw,3.7rem);line-height:1.08}h3{font-size:2.2rem;line-height:1.1}button{border:0}button:disabled{cursor:default}main:focus{outline:0}
.toolbar{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;color:var(--paper);position:relative;z-index:50;background:var(--plum);border-bottom:1px solid #ffffff12}.wordmark{font-family:var(--serif);font-size:1.6rem;text-decoration:none;white-space:nowrap}.brand-star{color:var(--gold);margin-left:.35em}.toolbar-right{display:flex;align-items:center;gap:20px}.demo-tag{font-size:.75rem;letter-spacing:.08em;border:1px solid #dbc2aa55;padding:7px 11px;border-radius:2px}.replay{background:none;color:var(--paper);font-size:.875rem;text-decoration:underline;text-underline-offset:4px;padding:10px 0}
main{width:min(100%,680px);margin:0 auto;background:var(--blush);box-shadow:0 16px 100px #120d1466;overflow:hidden}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:.78rem;font-weight:400;line-height:1.75}.hero{text-align:center;background:var(--blush)}.hero-copy{padding:42px 22px 27px;background:linear-gradient(#fae5dc,#f5ded5);position:relative;z-index:1}.hero-copy h1{font-size:clamp(3.25rem,9.4vw,5rem);line-height:1.12;margin:12px 0 9px}.hero-copy h1 em{color:#997045;font-size:.67em;margin:0 .08em}.hero-copy>p:last-child{font-family:var(--serif);font-size:1.25rem}.palace{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.hero-ending{padding:38px 25px 50px;background:linear-gradient(#f5ded5,#fae7de)}.ornament{display:block;color:#976832;font-size:2.25rem;line-height:1;margin-bottom:20px}.hero-ending h2{margin:15px 0 19px}.hero-ending>p:last-child{font-family:var(--serif);font-size:1.35rem;line-height:1.5}
.reveal-section{padding:50px 28px 44px;background:var(--plum);color:var(--paper);text-align:center;position:relative}.reveal-section>.eyebrow{color:var(--gold)}.reveal-section h2{margin:16px 0 12px}.scratch-instruction{font-size:1rem;color:#ead6cd}.scratch-row{display:flex;gap:clamp(16px,5vw,34px);justify-content:center;margin:32px 0 22px}.scratch-item{width:clamp(78px,23vw,132px)}.scratch-spot{border-radius:50%;display:grid;place-items:center;position:relative;width:100%;aspect-ratio:1;background:var(--blush);color:var(--plum);padding:0;box-shadow:0 0 0 1px #e3bf7e77,0 6px 20px #170d1744;overflow:hidden;touch-action:none}.scratch-spot::after{content:'';position:absolute;inset:7%;border:1px solid #75553266;border-radius:50%;pointer-events:none}.date-value{font-family:var(--serif);font-size:clamp(1.75rem,6.2vw,2.4rem);line-height:1;font-weight:400}.day-value{font-size:clamp(2.5rem,9vw,3.6rem)}.scratch-spot canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:50%;transition:opacity .5s;z-index:2}.scratch-spot.is-revealed canvas{opacity:0;pointer-events:none}.scratch-label{display:block;text-transform:uppercase;font-size:.75rem;letter-spacing:.2em;margin-top:18px;color:#e0c5b6}.date-status{min-height:27px;color:#ead6cd;font-family:var(--serif);font-size:1.25rem}.text-button{background:none;color:var(--gold);font-size:.875rem;padding:8px;text-decoration:underline;text-underline-offset:5px;margin:12px 0 18px}.calendar-link{display:table;margin:8px auto 0;padding:14px 20px;border:1px solid #ba965e80;border-radius:2px;font-size:.875rem;text-decoration:none;color:var(--gold)}.calendar-link span{margin-left:14px}.calendar-link:hover{background:#e3bf7e11}
.section-pad{padding:52px 40px}.celebration{background:var(--paper)}.celebration>.eyebrow,.celebration>h2{text-align:center}.celebration>h2{margin:13px 0 33px}.event{display:grid;grid-template-columns:40px 1fr;gap:20px;padding:30px 0;border-top:1px solid #a3785333}.event-number{font-family:var(--serif);font-size:1.75rem;color:#927148;line-height:1.2}.event-time{font-size:.8rem;letter-spacing:.05em;color:#795a55;margin-bottom:11px}.event h3{margin-bottom:10px}.event p:not(.event-time){font-family:var(--serif);font-size:1.25rem;line-height:1.4}.event-detail{display:block;font-size:.875rem;line-height:1.5;margin-top:13px;color:#795a55}.venue{text-align:center;margin-top:16px;padding:39px 20px 15px;border-top:1px solid #a3785333}.venue h3{font-size:2.5rem;line-height:1.1;margin:15px 0}.venue>p:not(.eyebrow):not(.sample-note){font-family:var(--serif);font-size:1.25rem}.underlined{display:inline-block;border:0;background:none;text-decoration:underline;text-underline-offset:5px;font-size:.875rem;padding:8px 0}.venue>a{margin-top:15px}.sample-note{font-size:.75rem;line-height:1.6;color:#7e625d;margin-top:25px;max-width:320px;margin-inline:auto}
.rsvp-section{background:var(--blush);border-top:1px solid #bd987533}.rsvp-section>.eyebrow,.rsvp-section>h2,.rsvp-intro{text-align:center}.rsvp-section h2{margin:13px 0 12px}.rsvp-intro{font-family:var(--serif);font-size:1.35rem}.preview-note{font-size:.875rem;line-height:1.55;color:#725255}.rsvp-section>.preview-note{text-align:center;max-width:360px;margin:24px auto 29px}.preview-note>span{font-weight:600;display:block;margin-bottom:3px}form{max-width:440px;margin:auto}form>label,.guest-count-field>label,legend{display:block;font-size:.875rem;margin-bottom:10px}input[type=text],select{width:100%;height:49px;background:#fff8f16b;border:1px solid #a77d7370;border-radius:2px;color:var(--ink);padding:0 14px;font-size:1rem}input::placeholder{color:#8b6d6b}fieldset{border:0;padding:0;margin:25px 0;min-width:0}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.attendance-options label{position:relative;cursor:pointer}.attendance-options input{position:absolute;left:14px;top:50%;transform:translateY(-50%);margin:0;accent-color:var(--plum);width:16px;height:16px}.attendance-options span{display:flex;align-items:center;min-height:53px;padding:10px 10px 10px 40px;border:1px solid #a77d7366;background:#fff8f136;border-radius:2px;font-size:.875rem;line-height:1.4}.attendance-options input:checked+span{border-color:var(--plum);background:#fff8f1aa}.attendance-options input:focus-visible+span{outline:3px solid #bc894b;outline-offset:3px}.guest-count-field{margin-bottom:27px}.primary-button{width:100%;background:var(--plum);color:var(--paper);padding:18px 22px;display:flex;justify-content:space-between;font-size:1rem;border-radius:2px;transition:background .2s}.primary-button:hover{background:var(--plum-light)}.rsvp-result{text-align:center;padding:30px 8px 15px}.rsvp-result h3{margin-bottom:16px;overflow-wrap:anywhere}.rsvp-result>p:not(.preview-note){font-family:var(--serif);font-size:1.4rem;line-height:1.5}.rsvp-result>.preview-note{margin-top:24px}.try-again{margin-top:17px}.rsvp-result:focus{outline:0}
.invitation-footer{padding:45px 20px 30px;text-align:center;background:var(--plum);color:var(--paper)}.closing{font-family:var(--serif);font-style:italic;font-size:1.35rem;color:#e5c8bb}.couple-signoff{font-family:var(--serif);font-size:2.9rem;line-height:1.2;margin:9px 0 24px}.invitation-footer>.ornament{color:var(--gold);font-size:1.5rem}.invitation-footer>a{font-family:var(--serif);text-decoration:none;font-size:1.15rem;line-height:1.5;display:block}.invitation-footer strong{font-weight:400;color:var(--gold)}.invitation-footer>p:not(.closing):not(.couple-signoff){font-size:.75rem;letter-spacing:.1em;margin-top:17px;color:#c8abb4}.invitation-footer .disclaimer{letter-spacing:0!important;margin-top:8px!important}
.intro{display:none}
.js-ready .intro{display:flex;position:fixed;inset:70px 0 0;z-index:40;align-items:center;justify-content:center;flex-direction:column;background:var(--plum);padding:24px 20px 22px;overflow:hidden}
.intro-heading{font-family:var(--serif);font-style:italic;font-size:1.25rem;color:#f0d4c6;margin:0 0 18px;text-align:center}
.envelope{position:relative;width:min(460px,calc((100svh - 194px)*.75),100%);aspect-ratio:3/4;perspective:1500px;isolation:isolate}
.envelope-base,.envelope-flap{position:absolute;display:block;width:100%;height:100%;inset:0;object-fit:cover;pointer-events:none}
.envelope-rear{position:absolute;inset:0;z-index:0;background:#e2b5a5 url('envelope-paper.webp') 50% 90% / 200% 400%;box-shadow:0 18px 38px #12071180}
.envelope-base{z-index:3;clip-path:polygon(0 11%,50% 51%,100% 11%,100% 100%,0 100%)}
.envelope-flap{z-index:4;clip-path:polygon(0 0,100% 0,100% 11%,50% 51.15%,0 11%);transform-origin:50% 11%;backface-visibility:visible}
.invitation-slip{position:absolute;inset:4%;z-index:2;background:var(--blush);overflow:hidden;box-shadow:0 5px 22px #3e1f2b38;visibility:hidden;pointer-events:none}
.slip-copy{text-align:center;padding:9% 3% 7%;background:#f5ded5}
.slip-copy>p:first-child{font-size:.75rem;line-height:1.5;letter-spacing:.16em;text-transform:uppercase}
.slip-copy>.slip-names{font-family:var(--serif);font-size:clamp(1.5rem,5.5vw,2.4rem);line-height:1.2;margin-top:8px}
.slip-names em{color:#997045;font-size:.75em}
.invitation-slip>img{display:block;width:100%;height:auto;object-fit:cover}
.seal{position:absolute;z-index:5;left:33.9%;top:36.2%;width:32.2%;height:24.1%;padding:0;display:grid;place-items:center;border-radius:50%;background:#bb914d url('envelope.webp') 50% 47.6943% / 310.559% 414.938%;box-shadow:0 5px 8px #643d2038;transition:filter .2s ease}
.seal>span{font-family:var(--serif);font-size:clamp(1.75rem,6vw,2.65rem);line-height:1;color:#6a3f17;text-shadow:0 1px #fbe3a3;white-space:nowrap;transform:translateY(-2%)}
.seal-and{font-style:italic;font-size:.65em;padding:0 .04em}
.seal:hover{filter:brightness(1.07)}
.seal:focus-visible{outline:3px solid var(--plum);outline-offset:5px}
.open-hint{font-size:.875rem;letter-spacing:.03em;color:#e7c9b9;margin-top:18px;text-align:center}
.open-hint>span{color:var(--gold);margin-left:8px}
.intro-open{overflow:hidden}
.intro-open main{visibility:hidden}
.envelope-opening main{visibility:visible;opacity:0}
.envelope-opening .intro{pointer-events:none}
.envelope-opening .invitation-slip{visibility:visible}
.envelope-opening .seal,.envelope-opening .envelope-base,.envelope-opening .envelope-flap,.envelope-opening .envelope-rear,.envelope-opening .invitation-slip{will-change:transform,opacity}
@media(min-width:1000px){.toolbar{padding-inline:48px}.toolbar-right{gap:26px}main{margin-block:30px}.intro-heading{font-size:1.45rem}.open-hint{font-size:1rem}}
@media(max-width:520px){.toolbar{height:60px;padding:0 16px}.wordmark{font-size:1.35rem}.toolbar-right{gap:13px}.demo-tag{font-size:.75rem;padding:5px 8px}.replay{font-size:.875rem}.js-ready .intro{inset:60px 0 0;padding:18px 16px}.envelope{width:min(100%,calc((100svh - 180px)*.75))}.hero-copy{padding:32px 16px 24px}.hero-copy>.eyebrow{font-size:.75rem;letter-spacing:.1em}.hero-copy>p:last-child{font-size:1.15rem}.hero-ending{padding:34px 20px 43px}.reveal-section{padding:44px 20px 36px}.reveal-section>.eyebrow{font-size:.75rem;letter-spacing:.12em}.section-pad{padding:43px 25px}.celebration>.eyebrow{font-size:.75rem;letter-spacing:.075em}.event{grid-template-columns:28px 1fr;gap:15px}.event-time{font-size:.75rem;letter-spacing:.025em}.event h3{font-size:2rem}.venue{padding-inline:0}.attendance-options{gap:9px}.attendance-options span{padding-left:34px;padding-right:6px}.attendance-options input{left:10px}.scratch-row{margin-top:27px}.hero-copy h1{font-size:clamp(2.7rem,9.4vw,3.5rem)}}
@media(max-width:360px){.section-pad{padding-inline:20px}.scratch-row{gap:16px}.wordmark{font-size:1.2rem}.toolbar-right{gap:9px}.demo-tag{padding-inline:5px}.hero-copy h1{font-size:2.65rem}.hero-copy>p:last-child{font-size:1.075rem}.attendance-options{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
