:root {
  --ink: #162820;
  --ink-deep: #101e19;
  --pine: #263d33;
  --olive: #5d705d;
  --gold: #c3a26a;
  --light-gold: #e4cb9c;
  --ivory: #f8f3ea;
  --paper: #f4ece0;
  --white: #fffdfa;
  --charcoal: #34332b;
  --subtle: #8e8171;
  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --script: 'Great Vibes', cursive;
  --sans: 'DM Sans', Arial, sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.is-locked{overflow:hidden}
::selection{background:var(--gold);color:var(--ink-deep)}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer}
button:focus-visible,a:focus-visible{outline:2px solid #e9bc6a;outline-offset:5px}
img{display:block;width:100%;height:auto}
[hidden]{display:none!important}
.skip-link{position:fixed;z-index:120;top:-100px;left:12px;background:var(--ivory);padding:12px;color:var(--ink)}.skip-link:focus{top:12px}
.reading-progress{position:fixed;z-index:85;top:0;left:0;right:0;height:2px;pointer-events:none}.reading-progress span{display:block;background:var(--light-gold);width:0;height:100%;transition:width .08s linear}
.section-pad{padding:105px 24px}.narrow{max-width:780px;margin-inline:auto}.text-center{text-align:center}
.eyebrow{margin:0;color:#9b7951;letter-spacing:.31em;font-size:10px;line-height:1.7;font-weight:700}.eyebrow--light{color:var(--light-gold)}
.section-title{font-family:var(--serif);font-size:clamp(48px,6.5vw,86px);font-weight:400;line-height:.99;letter-spacing:-.045em;margin:18px 0 18px}.section-title em{font-weight:300;color:#9a8058}.section-title--light{color:var(--ivory)}.section-title--light em{color:var(--light-gold)}
.section-subtitle{font-size:13px;line-height:1.9;letter-spacing:.025em;color:#817768;margin:0 auto;max-width:460px}.section-subtitle--light{color:#d8d0be}
[data-reveal]{transition:opacity .9s ease,transform 1s cubic-bezier(.2,.75,.2,1)}.js-on [data-reveal]:not(.visible){opacity:0;transform:translateY(30px)}

/* OPENING COVER */
.invitation-cover{position:fixed;z-index:100;inset:0;display:grid;place-items:center;overflow:hidden;color:var(--ivory);background:#11241d;isolation:isolate;transition:opacity .75s ease .8s,visibility 0s linear 1.55s}
.invitation-cover.is-opened{opacity:0;visibility:hidden;pointer-events:none}
.cover-panel{position:absolute;z-index:0;top:0;bottom:0;width:51%;background:linear-gradient(110deg,#1e3a2e 0%,#152a21 45%,#10231c 100%);transition:transform 1.55s cubic-bezier(.65,0,.12,1);box-shadow:inset 0 0 140px #07161080}
.cover-panel--left{left:0;transform-origin:left}.cover-panel--right{right:0;transform-origin:right;transform:scaleX(-1)}
.invitation-cover.is-opened .cover-panel--left{transform:translateX(-101%)}.invitation-cover.is-opened .cover-panel--right{transform:scaleX(-1) translateX(-101%)}
.cover-vignette{position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at center,#ecd8aa13 0%,#0d1c1799 78%);transition:opacity 1s}
.cover-vignette::before,.hero-noise::before{content:"";position:absolute;inset:0;opacity:.1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E")}
.cover-content{position:relative;z-index:2;width:min(580px,calc(100vw - 32px));padding:clamp(45px,8vh,85px) 25px 35px;min-height:min(770px,calc(100dvh - 50px));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transition:opacity .45s ease,transform 1.05s ease}
.invitation-cover.is-opened .cover-content{opacity:0;transform:scale(1.11)}
.cover-outline{position:absolute;inset:11px;border:1px solid #b3945890;pointer-events:none}.cover-outline::before,.cover-outline::after{content:"✦";position:absolute;background:#173027;color:#e4c992;font-size:19px;padding:0 12px;left:50%;transform:translateX(-50%)}.cover-outline::before{top:-12px}.cover-outline::after{bottom:-13px}
.cover-content::before,.cover-content::after{content:"";position:absolute;inset:23px;pointer-events:none;border:1px solid #b394583b}.cover-content::after{inset:32px;border-color:#b394581e}
.cover-eyebrow{font-family:var(--script);font-size:clamp(27px,6vw,39px);color:var(--light-gold);margin:0 0 6px;line-height:1.1}
.cover-logo{display:block;width:min(24vw,112px);height:auto;max-height:84px;object-fit:contain;object-position:center;background:transparent;border:0;border-radius:0;margin:7px 0 0;box-shadow:none}
.cover-intro,.cover-date{font-size:9px;letter-spacing:.29em;color:#d6c8ab;margin:4px 0 0;line-height:2.2}
.cover-names{display:flex;flex-direction:column;align-items:center;font-family:var(--serif);font-size:clamp(59px,12vw,93px);font-weight:300;line-height:.82;letter-spacing:-.05em;color:#fff9e9;margin:29px 0 18px;text-shadow:0 1px 32px #ffe3ab1c}
.cover-names em{font-family:var(--script);font-size:clamp(49px,10vw,74px);font-weight:400;letter-spacing:0;line-height:1.05;color:var(--light-gold);margin:5px 0 9px}
.cover-flourish{display:flex;align-items:center;gap:10px;font-family:var(--serif);color:var(--gold);font-size:19px;margin:10px 0}.cover-flourish span{height:1px;width:53px;background:#bd9c6280}
.cover-date{letter-spacing:.27em;color:#e8cf9f;font-size:10px;margin-top:13px}
.open-invitation{appearance:none;border:0;background:transparent;color:var(--ivory);padding:0;display:flex;flex-direction:column;align-items:center;gap:18px;margin-top:28px;position:relative;z-index:2}
.seal-icon{display:grid;place-items:center;width:77px;height:77px;border-radius:50%;background:linear-gradient(127deg,#f9e2af,#c39c57 31%,#e5c993 58%,#a47e44);box-shadow:0 0 0 6px #e1bd781c,0 0 0 7px #dec68a5e,inset 0 0 0 2px #fff6d4aa,0 8px 22px #0006;color:#3f3324;font-family:var(--serif);font-size:23px;animation:sealPulse 3s ease-in-out infinite;white-space:pre}.seal-icon small{font-family:var(--script);font-size:20px}
.open-caption{font-size:9px;letter-spacing:.29em;font-weight:700;color:#efdcbb;transition:letter-spacing .3s}.open-invitation:hover .open-caption{letter-spacing:.38em}
.cover-hint{font-family:var(--serif);font-style:italic;color:#e6d9c09c;font-size:18px;margin:21px 0 0}.cover-ornament{position:absolute;left:50%;transform:translateX(-50%);font-size:17px;color:#c9a668;opacity:.6}.cover-ornament--top{top:15px}.cover-ornament--bottom{bottom:14px}
@keyframes sealPulse{0%,100%{box-shadow:0 0 0 6px #e1bd781c,0 0 0 7px #dec68a5e,inset 0 0 0 2px #fff6d4aa,0 8px 22px #0006}50%{box-shadow:0 0 0 10px #e1bd7818,0 0 0 11px #dec68a43,inset 0 0 0 2px #fff6d4aa,0 8px 32px #e8c47c38}}

/* NAVIGATION + HERO */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,75px);height:72px;position:absolute;top:0;left:0;right:0;z-index:10;color:#f9ead4}
.brand{font-family:var(--serif);font-size:23px;letter-spacing:.04em;font-weight:500}.brand span{font-size:14px;color:var(--light-gold);vertical-align:2px;margin:0 4px}
.nav-date{font-size:9px;letter-spacing:.24em;color:#decaaa;display:none}
.music-toggle{border:1px solid #d4b98772;background:#17271f80;color:#f5e8cf;border-radius:50px;min-height:38px;padding:9px 13px;display:flex;align-items:center;gap:10px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.music-label{font-size:9px;letter-spacing:.13em}.music-bars{display:flex;align-items:center;height:12px;gap:2px}.music-bars i{height:6px;width:2px;background:var(--light-gold);border-radius:3px}.music-bars i:nth-child(2){height:11px}.music-bars i:nth-child(3){height:8px}.music-bars i:nth-child(4){height:4px}.music-toggle.is-playing .music-bars i{animation:equalize 1s infinite alternate}.music-toggle.is-playing .music-bars i:nth-child(2){animation-delay:.24s}.music-toggle.is-playing .music-bars i:nth-child(3){animation-delay:.45s}.music-toggle.is-playing .music-bars i:nth-child(4){animation-delay:.68s}@keyframes equalize{from{height:3px}to{height:12px}}
.hero{min-height:900px;min-height:100svh;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 45%,#33503d 0%,#1c3529 48%,#0e211a 105%);color:var(--ivory);display:flex;align-items:center;justify-content:center;padding:115px 22px 95px;isolation:isolate}
.hero::before{content:"";position:absolute;inset:15px;border:1px solid #b8955745;pointer-events:none;z-index:1}.hero::after{content:"";position:absolute;inset:25px;border:1px solid #b8955717;pointer-events:none;z-index:1}
.hero-noise{position:absolute;inset:0;pointer-events:none}.hero-noise::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 35%,#06130ca8 100%)}
.hero-spark{position:absolute;z-index:1;color:#d9b97976;font-size:40px;font-family:var(--serif);pointer-events:none;animation:twinkle 5s ease-in-out infinite}.hero-spark--one{top:13%;right:10%}.hero-spark--two{left:9%;bottom:15%;font-size:27px;animation-delay:2s}@keyframes twinkle{50%{opacity:.25;transform:scale(.8)}}
.hero-inner{position:relative;z-index:2;max-width:1120px;width:100%;display:flex;flex-direction:column;align-items:center;gap:35px;margin:0 auto}
.hero-content{text-align:center;position:relative;z-index:2;max-width:690px}.gold-hairline{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--gold);font-size:13px;margin:15px auto 29px}.gold-hairline span{height:1px;width:43px;background:#bfa06b72}
.hero-kicker{color:#f1e1c3c5;font-size:10px;font-weight:500;letter-spacing:.31em;margin:0 0 15px}
.hero-title{font-family:var(--serif);font-size:clamp(73px,11vw,118px);font-weight:300;line-height:.78;letter-spacing:-.064em;margin:0;text-wrap:balance}.hero-title span{display:block}.hero-title em{font-family:var(--script);font-size:clamp(72px,10vw,110px);line-height:1.14;display:block;color:#efd5a6;font-weight:400;letter-spacing:0;margin:-2px 0 0}
.hero-quote{font-family:var(--serif);font-size:clamp(19px,2.4vw,25px);font-style:italic;color:#eee4d6cf;line-height:1.5;max-width:440px;margin:29px auto 27px}
.hero-events{display:flex;align-items:center;justify-content:center;gap:15px;font-size:9px;letter-spacing:.17em;line-height:1.8;color:#e5cda5}.hero-events-dot{font-size:13px}
.hero-art{width:min(68vw,285px);position:relative;margin:1px auto 0}.hero-photo-wrap{width:100%;aspect-ratio:4/4.4;overflow:hidden;border-radius:49% 49% 3px 3px;outline:1px solid #bfa36e90;outline-offset:9px;box-shadow:0 25px 75px #0005}
.hero-photo-wrap img{width:100%;height:100%;object-fit:cover}.hero-arch-outline{position:absolute;inset:-19px -19px -16px;border:1px solid #d5b37563;border-radius:50% 50% 3px 3px;pointer-events:none}
.hero-art-label{text-align:center;font-size:8px;letter-spacing:.26em;margin-top:25px;color:#e1c799}.hero-art-label span{margin:0 6px}
.scroll-cue{position:absolute;bottom:23px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:11px;z-index:3;white-space:nowrap;color:#e2c897c9;font-size:9px;letter-spacing:.22em}.scroll-cue i{width:1px;height:22px;background:linear-gradient(#dec08c,transparent);animation:scrollLine 1.7s ease-in-out infinite}@keyframes scrollLine{50%{transform:translateY(7px);opacity:.4}}

/* LOVE LETTER */
.invitation-letter{background:var(--ivory);position:relative;overflow:hidden}.invitation-letter::before{content:"";position:absolute;left:-270px;top:7%;width:600px;height:600px;border:1px solid #ac96652d;border-radius:50%;pointer-events:none}.section-little-leaf{position:absolute;right:5%;top:30px;color:#c1a57487;font-size:120px;font-family:var(--serif);transform:rotate(-30deg);pointer-events:none}
.letter-layout{max-width:1110px;margin:auto;display:grid;grid-template-columns:1fr;align-items:center;gap:70px}.letter-copy{text-align:center;max-width:530px;margin:auto}.letter-copy .section-title{max-width:600px}.letter-divider{font-size:14px;color:var(--gold);letter-spacing:.5em;margin:29px 0}.letter-message{font-family:var(--serif);font-size:clamp(22px,3.1vw,29px);line-height:1.57;color:#625a4d;font-weight:400;margin:0 auto;max-width:560px}.letter-signoff{font-size:12px;color:#746d5e;letter-spacing:.03em;margin-top:30px;line-height:2}.letter-signature{font-family:var(--script);font-size:clamp(39px,4.9vw,58px);color:#9c7945;margin:4px 0 0}.letter-signature em{font-family:var(--serif);font-size:.5em;font-weight:300}
.story-photo-frame{width:min(100%,430px);position:relative;margin:auto;padding:18px 18px 35px;background:#f9f6ef;border:1px solid #e8d7c2;box-shadow:18px 20px 65px #54463119,0 0 0 7px #fffdf76e}
.story-photo-frame img{aspect-ratio:4/5;object-fit:cover;background:#e5d8c8}.story-photo-border{position:absolute;z-index:2;inset:10px 10px 27px;border:1px solid #b2945d9a;pointer-events:none}.photo-corner-curl{position:absolute;top:-34px;right:-18px;font-family:var(--serif);font-size:93px;color:#9c906aa3;transform:rotate(30deg)}.story-photo-foot{display:block;font-family:var(--serif);font-size:16px;font-style:italic;color:#908169;text-align:center;margin-top:14px}

/* SCRATCH REVEAL */
.reveal-section{position:relative;background:radial-gradient(ellipse at 45% 60%,#263e32 0%,#14261e 64%,#0e1d17 100%);color:var(--ivory);text-align:center;overflow:hidden}.reveal-section::before,.reveal-section::after{content:"";position:absolute;pointer-events:none;width:420px;height:420px;border:1px solid #cab58224;border-radius:50%;top:42%;transform:translateY(-50%)}.reveal-section::before{left:-250px}.reveal-section::after{right:-250px}.reveal-glow{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:550px;height:550px;background:#b99c5430;border-radius:50%;filter:blur(140px);pointer-events:none}
.scratch-shell{margin:44px auto 0;width:min(100%,460px);aspect-ratio:1.5;position:relative;isolation:isolate;border:9px solid #efe0c2;padding:0;box-shadow:0 23px 63px #0008,0 0 0 1px #967548;background:var(--ivory);overflow:visible}.scratch-underlay{position:absolute;inset:0;background:radial-gradient(ellipse at center,#fff9ec 5%,#f3e5cf 90%);display:flex;align-items:center;justify-content:center;flex-direction:column;color:#334336;overflow:hidden}.scratch-underlay::after{content:"";position:absolute;inset:10px;border:1px solid #9d8e6a5c;pointer-events:none}.scratch-mini-label{font-size:9px;letter-spacing:.25em;color:#927a54;font-weight:700}.scratch-main-date{font-family:var(--serif);font-size:clamp(85px,17vw,130px);line-height:.76;margin:16px 0 7px;font-weight:500;letter-spacing:-.07em;color:#24352a}.scratch-month{font-family:var(--serif);letter-spacing:.11em;font-size:clamp(20px,5vw,28px);font-weight:500}.scratch-small-label{font-size:8px;letter-spacing:.27em;color:#907c58;margin-top:15px}.scratch-underlay-star{position:absolute;color:#ba9b60b5;font-size:28px}.scratch-underlay-star--a{top:18%;left:13%}.scratch-underlay-star--b{bottom:12%;right:14%}
#scratchCanvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;z-index:4;border-radius:0}.scratch-help{position:absolute;left:50%;bottom:19px;transform:translateX(-50%);white-space:nowrap;z-index:5;color:#3e392e;font-size:10px;letter-spacing:.15em;pointer-events:none;transition:opacity .3s}.scratch-finger{font-size:22px;vertical-align:-3px;padding-right:5px}.scratch-shell.is-scratching .scratch-help,.scratch-shell.is-revealed .scratch-help{opacity:0}.scratch-shell.is-revealed #scratchCanvas{pointer-events:none;opacity:0;transition:opacity .6s}
.text-button{appearance:none;background:none;border:0;color:#e0c793;font-size:11px;letter-spacing:.08em;padding:19px 10px;border-bottom:1px solid #bda77476;margin-top:15px;transition:color .2s}.text-button:hover{color:white}.text-button span{font-size:17px;margin-left:7px}.scratch-announcement{font-family:var(--serif);font-style:italic;font-size:22px;color:#e9d9c2;margin:20px auto 0;min-height:27px}
.petals{position:absolute;inset:0;pointer-events:none;z-index:8;overflow:visible}.petal{position:absolute;width:9px;height:15px;top:50%;left:50%;border-radius:90% 0 90% 0;background:#e9b3ab;box-shadow:0 1px 3px #0002;opacity:0;animation:petalBurst var(--dur,1.4s) cubic-bezier(.12,.73,.25,1) both;animation-delay:var(--delay,0s)}.petal:nth-child(3n){background:#fff0d6}.petal:nth-child(4n){background:#d4a35f}@keyframes petalBurst{0%{opacity:1;transform:translate(0,0) rotate(0deg) scale(.5)}35%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot)) scale(.9)}}

/* EVENTS + COUNTDOWN */
.celebrations{background:linear-gradient(135deg,#f9f5ed,#f1e7d8);position:relative}.celebrations::before{content:"✧";position:absolute;top:30px;left:5%;color:#b6a17a5c;font-size:90px;font-family:var(--serif)}
.event-grid{display:grid;grid-template-columns:1fr;gap:24px;max-width:890px;margin:54px auto 0}
.event-card{position:relative;text-align:center;min-height:395px;padding:52px 20px 32px;background:#fffdf8;border:1px solid #dbc7a9;box-shadow:0 14px 43px #5b482617;overflow:hidden}
.event-card::before{content:"";position:absolute;inset:8px;border:1px solid #decbaa91;pointer-events:none}.event-card--accent{background:#edf1e8;border-color:#bdc3b3}.event-card--accent::before{border-color:#c7cfb7}
.event-floral{position:absolute;font-family:var(--serif);font-size:23px;color:#a98854;left:50%;top:15px;transform:translateX(-50%)}.event-number{color:#8b7658;font-size:9px;letter-spacing:.25em;margin:13px 0 13px}.event-card h3{font-family:var(--serif);font-size:39px;font-weight:400;margin:0 0 19px}.event-date-line{display:flex;align-items:center;justify-content:center;gap:17px;color:var(--ink)}.event-date-line>span{font-family:var(--serif);font-weight:300;font-size:91px;line-height:.85;letter-spacing:-.06em}.event-date-line div{text-align:left;display:flex;flex-direction:column;gap:6px}.event-date-line strong{font-size:13px;letter-spacing:.16em;font-weight:500}.event-date-line small{font-family:var(--serif);font-size:20px;line-height:1}
.event-divider{height:1px;width:75px;background:#b69e77;opacity:.6;margin:21px auto 18px}.event-weekday{font-family:var(--serif);font-style:italic;font-size:21px;color:#747268;margin:0}.event-time{margin:10px 0 17px;font-size:11px;font-weight:700;letter-spacing:.2em;color:#97754c}.event-card-bottom{color:#9b8d7b;font-family:var(--serif);font-style:italic;font-size:17px;margin:0}
.countdown-block{text-align:center;margin:90px auto 0;max-width:710px}.countdown-block h3{font-family:var(--serif);font-size:clamp(33px,5.5vw,51px);font-weight:400;margin:14px 0 31px}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.countdown>div{border-right:1px solid #b7aa926b;padding:1px 7px}.countdown>div:last-child{border-right:0}.countdown strong{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(37px,8vw,76px);line-height:1;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:12px;color:#867765;font-size:8px;letter-spacing:.24em;font-weight:700}.countdown-finished{font-family:var(--serif);font-style:italic;font-size:22px}

/* VENUE */
.venue-section{position:relative;text-align:center;background:#eaece4;overflow:hidden}.venue-section::before{content:"";position:absolute;inset:0;background-image:radial-gradient(#8e9b7e2a .7px,transparent .7px);background-size:14px 14px;mask-image:linear-gradient(to right,#000,transparent 52%,#000)}.venue-art{position:absolute;font-family:var(--serif);font-size:330px;color:#aab2a238;pointer-events:none;top:5%;line-height:1}.venue-art--left{left:-145px;transform:rotate(-35deg)}.venue-art--right{right:-145px;transform:scaleX(-1) rotate(-35deg)}
.venue-card{position:relative;z-index:1;max-width:760px;margin:auto;padding:65px 23px 55px;background:#faf9f2f0;box-shadow:0 18px 90px #253b2b16;border:1px solid #cecbb7}.venue-card::before{content:"";position:absolute;inset:11px;border:1px solid #d4c6a6;pointer-events:none}.venue-bloom{font-family:var(--serif);font-size:35px;color:#9a8a62;margin-bottom:12px}.venue-card .section-title{font-size:clamp(46px,6vw,73px);max-width:560px;margin:20px auto 28px}.venue-rule{height:1px;width:90px;background:#b7a47c;margin:25px auto 25px}.venue-label{font-size:9px;letter-spacing:.27em;color:#97815e;font-weight:700}.venue-card h3{font-family:var(--serif);font-size:clamp(35px,5vw,49px);font-weight:500;margin:10px 0 9px}.venue-address{font-size:12px;line-height:1.8;color:#8e8574;margin:0}.venue-details{font-family:var(--serif);font-style:italic;font-size:21px;line-height:1.4;color:#817d6e;margin:25px 0 27px}.button-gold{display:inline-flex;align-items:center;gap:13px;justify-content:center;min-height:53px;padding:15px 20px;background:#243d31;color:#f5e7cb;border:1px solid #a98b56;box-shadow:0 4px 0 #21342826;font-size:9px;font-weight:700;letter-spacing:.19em;transition:background .25s,transform .25s}.button-gold:hover{background:#355a45;transform:translateY(-2px)}.button-gold span{font-size:18px}.venue-footnote{font-family:var(--script);font-size:27px;color:#9a8258;margin:28px 0 0}

/* CLOSING */
.closing-section{background:radial-gradient(ellipse at 50% 25%,#2a4536,#12261d 77%);color:#f8f0df;text-align:center;position:relative;overflow:hidden;padding-block:95px 44px}.closing-section::before{content:"";position:absolute;inset:16px;border:1px solid #b2935970;pointer-events:none}.closing-section::after{content:"";position:absolute;inset:25px;border:1px solid #b293592a;pointer-events:none}.closing-stars{color:#d8bb82;font-size:23px;letter-spacing:.4em}.closing-script{font-family:var(--script);color:var(--light-gold);font-size:clamp(34px,6vw,52px);margin:25px auto 22px}.closing-section h2{font-family:var(--serif);font-size:clamp(49px,9vw,91px);font-weight:300;line-height:1;margin:0;letter-spacing:-.045em}.closing-date{color:#dbc69d;font-size:10px;letter-spacing:.4em;margin:24px 0 30px}.share-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid #d9bf88;background:transparent;color:#f1debc;padding:16px 22px;font-size:9px;font-weight:700;letter-spacing:.18em;transition:background .25s,color .25s}.share-button:hover{background:var(--light-gold);color:var(--ink)}.closing-bottom{display:flex;gap:12px;justify-content:center;align-items:center;color:#bdad8b;font-size:8px;letter-spacing:.15em;margin-top:74px}.closing-bottom span:nth-child(2){color:#ead4ac;font-size:12px}

.toast{position:fixed;z-index:150;bottom:22px;left:50%;transform:translate(-50%,12px);background:#172c22;color:#f5e5c7;border:1px solid #b59863;padding:14px 20px;max-width:90vw;text-align:center;font-size:12px;line-height:1.5;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.is-visible{opacity:1;transform:translate(-50%,0)}

@media(min-width:700px){
  .section-pad{padding:126px 36px}.nav-date{display:block}.hero{min-height:860px;padding:130px 46px 105px}.hero-inner{display:grid;grid-template-columns:1fr .76fr;gap:8%;align-items:center}.hero-content{text-align:left}.gold-hairline{justify-content:flex-start;margin-left:0}.hero-title{font-size:clamp(75px,9vw,121px)}.hero-quote{margin-left:0}.hero-events{justify-content:flex-start}.hero-art{width:100%;max-width:435px;justify-self:center}.hero-photo-wrap{aspect-ratio:3/4.1}.hero-spark--one{right:3%}.letter-layout{grid-template-columns:1.1fr .9fr;gap:8%}.letter-copy{text-align:left;margin:0}.letter-divider{margin-left:0}.letter-signature{margin-top:12px}.story-photo-frame{width:100%}.event-grid{grid-template-columns:repeat(2,1fr);gap:24px}.venue-card{padding:85px 65px 70px}
}
@media(min-width:1100px){.hero-title{font-size:118px}.hero-art{max-width:420px}.hero-inner{gap:10%}.section-pad{padding-block:140px}}
@media(max-width:380px){.cover-names{font-size:58px}.cover-content{padding-top:42px}.cover-hint{margin-top:13px}.hero-title{font-size:70px}.hero-events{font-size:8px;gap:10px}.hero-art{width:62vw}.section-pad{padding:85px 20px}.event-card{padding-inline:16px}.scratch-shell{border-width:6px}.scratch-help{font-size:8px}.button-gold{font-size:8px}.closing-section h2{font-size:44px}}
@media(max-width:699px){.hero-photo-wrap{aspect-ratio:4/5.1}.hero-photo-wrap img{object-position:center top}}
@media(max-height:680px) and (max-width:699px){.cover-content{min-height:calc(100dvh - 20px);padding-top:28px;padding-bottom:25px}.cover-logo{width:78px;max-height:58px;margin-top:5px}.cover-names{font-size:clamp(52px,11vw,75px);margin:20px 0 10px}.cover-names em{font-size:54px;margin:0}.open-invitation{margin-top:16px;gap:12px}.seal-icon{width:60px;height:60px}.cover-hint{margin-top:11px}.hero{padding-top:100px}.hero-inner{gap:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.js-on [data-reveal]:not(.visible){opacity:1;transform:none}}
/* Notched iPhone and edge-to-edge Android safe-area refinements. */
@supports (padding: env(safe-area-inset-top)) {
  .topbar{padding-top:env(safe-area-inset-top);height:calc(72px + env(safe-area-inset-top))}
  .hero{padding-top:calc(115px + env(safe-area-inset-top))}
  .scroll-cue{bottom:max(23px,env(safe-area-inset-bottom))}
  .toast{bottom:max(22px,env(safe-area-inset-bottom))}
  .closing-section{padding-bottom:calc(44px + env(safe-area-inset-bottom))}
  @media(min-width:700px){.hero{padding-top:calc(130px + env(safe-area-inset-top))}}
}
/* A restrained animated foil highlight on the invitation lettering. */
.cover-names span{
  background:linear-gradient(102deg,#fff7e8 0%,#fff7e8 28%,#cfad73 43%,#fffbe8 52%,#fff7e8 67%,#fff7e8 100%);
  background-size:250% 100%;background-clip:text;-webkit-background-clip:text;
  -webkit-text-fill-color:transparent;animation:goldShine 8s ease-in-out infinite;
}
@keyframes goldShine{0%,20%{background-position:100% 0}64%,100%{background-position:-80% 0}}


/* TWO-CHAPTER DATE DISCOVERY — spoiler-free opening, tactile reveal, and a page turn. */
.scratch-shell{background:linear-gradient(125deg,#b9975a,#f7e4b4 35%,#b9975a 65%,#eed5a2)}
.scratch-underlay{opacity:0}
.scratch-shell.is-ready .scratch-underlay,.scratch-shell.is-revealed .scratch-underlay{opacity:1}
#scratchCanvas{background:linear-gradient(120deg,#bc9859,#f7e3b0 38%,#b18c51)}
.scratch-shell.is-ready #scratchCanvas{background:transparent}
.scratch-accessible{margin:23px auto 4px;color:#d8c6a6;font-size:11px;width:max-content;max-width:100%}
.scratch-accessible summary{list-style:none;cursor:pointer;border-bottom:1px dashed #c8ae7e88;padding:7px 2px;letter-spacing:.07em}
.scratch-accessible summary::-webkit-details-marker{display:none}
.scratch-accessible[open] summary{border-bottom-color:transparent}
.scratch-accessible .text-button{display:block;margin:1px auto 0}
.scratch-announcement{max-width:500px;line-height:1.3}
.reveal-next{margin:25px auto 0;max-width:490px;animation:nextReveal .8s cubic-bezier(.16,.8,.2,1) both}
.reveal-next p{font-family:var(--serif);font-size:clamp(19px,4vw,25px);line-height:1.45;font-style:italic;color:#e8dcc9;margin:0 auto 22px;max-width:360px}
.next-chapter-button{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:61px;border:1px solid #f1d49a;background:linear-gradient(115deg,#d8b675,#f5deaf 47%,#c8a162);color:#213427;box-shadow:0 8px 38px #060d0973;padding:0 19px 0 29px;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.22em;transition:transform .25s,box-shadow .25s;position:relative;overflow:hidden}
.next-chapter-button::before{content:"";position:absolute;inset:0;transform:translateX(-125%) skewX(-28deg);background:linear-gradient(90deg,transparent,#fff9d880,transparent);animation:nextShine 5s ease-in-out infinite}
.next-chapter-button:hover{transform:translateY(-3px);box-shadow:0 11px 42px #060d09a1}
.next-chapter-button:disabled{cursor:default}
.next-button-arrow{font-size:21px;line-height:1;transition:transform .25s}
.next-chapter-button:hover .next-button-arrow{transform:translate(3px,-3px)}
.next-chapter-hint{display:block;margin:15px auto 0;font-size:8px;letter-spacing:.22em;color:#c6ae85}
@keyframes nextReveal{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@keyframes nextShine{0%,36%,100%{transform:translateX(-125%) skewX(-28deg)}55%{transform:translateX(160%) skewX(-28deg)}}
.chapter-introduction{display:flex;align-items:center;justify-content:center;gap:18px;color:#a5845a;font-size:9px;font-weight:700;letter-spacing:.23em;margin:0 auto 48px;white-space:nowrap}
.chapter-introduction::before,.chapter-introduction::after{content:"";width:clamp(10px,9vw,75px);height:1px;background:#bca5818c}
.chapter-introduction i{font-size:16px;font-style:normal}
.celebrations{min-height:100svh}
.chapter-wipe{position:fixed;z-index:110;inset:0;background:#13281f;color:#e9d2a6;display:grid;place-items:center;opacity:0;pointer-events:none;transform:scaleY(0);transform-origin:bottom;transition:opacity .45s,transform .52s cubic-bezier(.5,0,.14,1)}
.chapter-wipe.is-visible{opacity:1;transform:scaleY(1)}
.chapter-wipe.is-exiting{opacity:0;transform:scaleY(1);transition:opacity .7s ease}
.chapter-wipe-inner{text-align:center;opacity:0;transform:translateY(15px);transition:opacity .5s,transform .5s}
.chapter-wipe.is-visible .chapter-wipe-inner{opacity:1;transform:translateY(0)}
.chapter-wipe-inner span{font-family:var(--serif);font-size:50px}
.chapter-wipe-inner p{font-size:10px;letter-spacing:.36em;font-weight:600}
.chapter-wipe-inner i{font-family:var(--script);font-size:clamp(45px,9vw,80px);display:block;font-style:normal}
@media(max-width:400px){.chapter-introduction{gap:8px;letter-spacing:.13em;font-size:8px}.reveal-next{margin-top:20px}.scratch-announcement{font-size:20px}}
@media(prefers-reduced-motion:reduce){.chapter-wipe,.chapter-wipe-inner,.reveal-next,.next-chapter-button::before{transition:none!important;animation:none!important}}

/* A concise view of both celebrations in the first mobile screen of Chapter Two. */
.event-overview{display:grid;grid-template-columns:1fr 1fr;max-width:650px;margin:28px auto 0;border-top:1px solid #c2ab83a6;border-bottom:1px solid #c2ab83a6}
.event-overview>div{min-width:0;padding:19px 10px 20px;display:flex;align-items:center;flex-direction:column;gap:10px;text-align:center}
.event-overview>div:first-child{border-right:1px solid #c2ab83a6}
.event-overview span{color:#96764c;font-size:8px;font-weight:700;letter-spacing:.18em}
.event-overview strong{font-family:var(--serif);font-weight:500;font-size:clamp(22px,5vw,32px);line-height:1;color:#263d33;white-space:nowrap}
.event-overview small{font-size:11px;font-weight:700;letter-spacing:.15em;color:#897047}
.celebrations .event-grid{margin-top:32px}
@media(max-width:380px){.event-overview>div{padding-inline:6px}.event-overview span{font-size:7px;letter-spacing:.09em}.event-overview strong{font-size:21px}.event-overview small{font-size:10px}}

/* Give each name and the calligraphic ampersand its own space. */
.closing-section .closing-names{
  display:flex;
  flex-wrap:nowrap;
  justify-content:center;
  align-items:baseline;
  column-gap:clamp(28px,3.5vw,72px);
  width:100%;
  max-width:100%;
  margin-inline:auto;
}
.closing-names>span{display:inline-block;white-space:nowrap;letter-spacing:-.035em}
.closing-section .closing-names em{
  display:inline-block;
  flex:none;
  font-family:var(--script);
  color:#d6b985;
  font-size:.88em;
  font-weight:400;
  font-style:normal;
  line-height:1;
  letter-spacing:0;
  padding:0 .14em;
}
@media(max-width:899px){
  .closing-section .closing-names{flex-direction:column;align-items:center;row-gap:7px;}
  .closing-section .closing-names em{line-height:.9;margin:3px 0;}
}
