:root{--paper:#f8f5ef;--cream:#fffdf9;--ink:#45433e;--muted:#858078;--gold:#b89a6b;--gold-light:#dfcfad;--sage:#8b9a83;--blush:#ead8d0;--serif:'Playfair Display',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--wrap:1120px;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);-webkit-font-smoothing:antialiased}body.locked{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}.eyebrow{font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 1.15rem;font-weight:600}.section-wrap{width:min(100% - 2.8rem,var(--wrap));margin-inline:auto}h1,h2,h3,p{margin-top:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.1;letter-spacing:-.035em}h2{font-size:clamp(2.2rem,7vw,4.2rem)}h2 em,h1 em{font-weight:400;color:var(--gold)}.cover{position:fixed;z-index:20;inset:0;background:#f6f2e9;display:grid;place-items:center;overflow:hidden;transition:opacity 1s ease,visibility 1s;min-height:100svh}.cover.opened{opacity:0;visibility:hidden;pointer-events:none}.cover-glow{position:absolute;width:min(85vw,650px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fffdfa 0%,rgba(255,255,255,.25) 58%,transparent 71%);top:45%;left:50%;transform:translate(-50%,-50%)}.cover-frame{position:relative;z-index:2;width:min(100% - 2rem,460px);padding:clamp(1.6rem,7vw,3.3rem) 1.35rem 1rem;text-align:center;border:1px solid rgba(184,154,107,.48);outline:1px solid rgba(184,154,107,.2);outline-offset:7px;animation:float-in 1.1s both}.cover-frame .eyebrow{margin-bottom:.7rem}.cover-art{width:clamp(100px,26vw,156px);height:clamp(100px,26vw,156px);border-radius:50%;margin:0 auto .6rem;overflow:hidden;border:1px solid #e8dbc6;box-shadow:0 8px 35px #b9a78325}.cover-art img{width:100%;height:100%;object-fit:cover}.tiny-cross{font-family:var(--serif);color:var(--gold);font-size:.95rem}.cover-kicker{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:.65rem 0 .5rem}.cover h1{font-size:clamp(3.4rem,13vw,5.3rem);margin:0 0 .3rem;line-height:.97}.cover-name{font-family:var(--serif);font-size:1.05rem;margin:.7rem 0 1.3rem;color:#71695e}.open-button,.reveal-button,.prayer-button{border:1px solid var(--gold);background:transparent;padding:.83rem 1.45rem;min-height:48px;cursor:pointer;letter-spacing:.05em;font-size:.78rem;transition:background .25s,color .25s,transform .25s}.open-button:hover,.reveal-button:hover,.prayer-button:hover{background:var(--gold);color:white;transform:translateY(-2px)}.open-button span{margin-left:.8rem;color:var(--gold)}.cover-hint{font-size:.65rem;color:#a59c8e;margin:1.25rem 0 0;letter-spacing:.05em}.cover-side{position:absolute;inset:0 auto 0 0;width:50%;background:linear-gradient(90deg,#f2ede2,#f8f5ef);z-index:1;transition:transform 1.1s cubic-bezier(.7,0,.2,1);pointer-events:none}.cover-side-left{transform-origin:left}.cover-side-right{left:auto;right:0;transform-origin:right;background:linear-gradient(90deg,#f8f5ef,#f2ede2)}.cover.opening .cover-side-left{transform:translateX(-101%)}.cover.opening .cover-side-right{transform:translateX(101%)}.music-control{position:fixed;z-index:10;right:1rem;top:1rem;background:#fffdf0e8;border:1px solid #d9c9a7;border-radius:99px;padding:.55rem .85rem;box-shadow:0 4px 16px #42361c14;font-size:.72rem;cursor:pointer}.music-icon{font-size:1rem;margin-right:.4rem;color:var(--gold)}.hero{position:relative;min-height:100svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);align-items:center;padding-block:5rem;gap:clamp(2rem,8vw,7rem);overflow:hidden}.hero-image{position:relative;width:100%;max-width:420px;justify-self:center;aspect-ratio:4/5;background:#eee7da;padding:.55rem;box-shadow:0 22px 55px #675a411c}.hero-image:before{content:"";position:absolute;inset:1rem;border:1px solid #fff9;z-index:1;pointer-events:none}.hero-image img{width:100%;height:100%;object-fit:cover}.hero-copy{max-width:510px;z-index:1}.hero-copy h2{font-size:clamp(2.4rem,5.8vw,4.65rem);margin:.35rem 0 1.4rem}.hero-cross{display:block;color:var(--gold);font-size:1.2rem;margin:1.7rem 0 .6rem}.hero-intro{max-width:405px;color:#77736b;font-family:var(--serif);font-size:1.1rem;line-height:1.8}.signature{font-size:.68rem;color:var(--muted);margin:1.65rem 0 .25rem;letter-spacing:.08em;text-transform:uppercase}.name-display{font-family:var(--serif);font-size:1.3rem;color:#77634b;margin-bottom:1.7rem}.text-link{font-size:.74rem;letter-spacing:.08em;text-decoration:none;color:var(--ink);border-bottom:1px solid var(--gold-light);padding-bottom:.45rem}.text-link span{color:var(--gold);margin-left:.7rem}.hero-watermark{position:absolute;right:0;bottom:-.4em;font:italic 19vw/.8 var(--serif);color:#b89a6b0b;pointer-events:none}.blessing{padding-block:3rem 9rem}.blessing-card{position:relative;max-width:760px;margin:auto;text-align:center;background:#f0ece3;padding:clamp(3rem,9vw,6.7rem) 1.3rem;overflow:hidden}.blessing-card:before,.blessing-card:after{content:"";position:absolute;width:190px;height:190px;border:1px solid #cdbb98;border-radius:50%;opacity:.5}.blessing-card:before{left:-130px;top:-100px;box-shadow:22px 18px 0 -20px #cdbb98,45px 36px 0 -42px #cdbb98}.blessing-card:after{right:-130px;bottom:-100px;box-shadow:-22px -18px 0 -20px #cdbb98,-45px -36px 0 -42px #cdbb98}.ornament{font-size:1.25rem;color:var(--gold)}.blessing-card h2{font-size:clamp(2.15rem,6vw,3.5rem);margin-bottom:1.6rem}.blessing-card blockquote{max-width:500px;margin:0 auto;color:#746d61;font:italic 1.05rem/1.8 var(--serif)}.blessing-rule{display:block;width:48px;height:1px;background:var(--gold);margin:1.65rem auto}.blessing-cross{font-size:1.1rem;color:var(--gold)}.celebration{padding-block:1rem 8rem;text-align:center}.section-heading{margin:0 auto 3rem;text-align:center}.section-heading h2{margin:.1rem 0 .8rem}.section-heading>p:last-child{font:1rem var(--serif);color:var(--muted)}.scratch-wrap{position:relative;width:min(100%,440px);margin:0 auto 4rem}.scratch-card{position:relative;height:220px;box-shadow:0 14px 45px #60543a1c;background:#ede5d7;overflow:hidden}.scratch-under{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 20%,#fffdf8,#eee6d8 75%);padding:1rem}.scratch-under .eyebrow{margin:0 0 .35rem}.scratch-under strong{font:1.8rem var(--serif);color:#71634e}.scratch-divider{color:var(--gold);margin:.15rem}.scratch-under [data-time]{font:1rem var(--serif);color:#71634e}.scratch-under small{margin-top:.4rem;color:var(--muted);font-size:.68rem}.scratch-card canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity .6s}.scratch-card.revealed canvas{opacity:0;pointer-events:none}.scratch-note{font-size:.68rem;color:#928b7f;margin:.6rem 0}.reveal-button{margin-top:1rem}.scratch-wrap .reveal-button{position:absolute;top:195px;left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--paper);z-index:2}.scratch-wrap .reveal-button:hover{background:var(--gold);transform:translate(-50%,-2px)}.sparkles{position:absolute;inset:0;pointer-events:none}.sparkles span{position:absolute;color:#c9a86c;animation:sparkle 1.4s ease-out forwards}.countdown{max-width:510px;margin:auto;padding:2rem 1rem;border-top:1px solid #ddd2bf;border-bottom:1px solid #ddd2bf}.countdown .eyebrow{margin-bottom:1rem}.count-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}.count-grid strong{display:block;font:clamp(1.5rem,6vw,2.3rem) var(--serif);color:#71634e;font-variant-numeric:tabular-nums}.count-grid span{font-size:.62rem;letter-spacing:.13em;color:var(--muted);text-transform:uppercase}.family{padding-block:2rem 9rem}.family .section-heading{margin-bottom:2.5rem}.family-grid{display:grid;grid-template-columns:1fr 1fr;max-width:800px;margin:auto;border:1px solid #e6decf}.family-grid article{text-align:center;padding:2.2rem 1.2rem}.family-grid article+article{border-left:1px solid #e6decf}.family-symbol{font-size:1.2rem;color:var(--gold)}.family-grid .eyebrow{margin:.65rem 0}.family-grid h3{font:1.25rem/1.55 var(--serif);margin-bottom:0;color:#71634e}.gallery-section{padding-block:2rem 8rem}.gallery{display:grid;grid-auto-columns:minmax(230px,34%);grid-auto-flow:column;gap:1rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;padding:0 .15rem 1rem;scrollbar-width:thin;scrollbar-color:#d6c7ac transparent}.gallery-item{scroll-snap-align:center;min-width:0;height:340px;padding:.45rem;background:#fff;box-shadow:0 6px 24px #554a3417;cursor:zoom-in;border:0}.gallery-item img{width:100%;height:100%;object-fit:cover}.gallery-hint{text-align:center;color:var(--muted);font-size:.7rem;margin-top:.8rem}.venue-section{padding-block:1rem 8rem}.venue-card{display:grid;grid-template-columns:.9fr 1.1fr;max-width:900px;margin:auto;background:#eeebe3;min-height:360px}.venue-illustration{position:relative;display:grid;place-items:center;overflow:hidden;background:linear-gradient(155deg,#e5e8df,#f2eadc)}.venue-illustration:before,.venue-illustration:after{content:"";position:absolute;width:230px;height:230px;border:1px solid #c9bc9b88;border-radius:50%}.venue-illustration:after{width:175px;height:175px}.venue-illustration>span{position:absolute;top:28%;font:1.7rem var(--serif);color:#a78959}.church-line{position:absolute;bottom:25%;width:120px;height:80px;border:1px solid #b8a57f;border-bottom:0;opacity:.75}.church-line:before{content:"";position:absolute;left:39px;top:-47px;width:40px;height:47px;border:1px solid #b8a57f;border-bottom:0;clip-path:polygon(50% 0,100% 36%,100% 100%,0 100%,0 36%)}.church-line:after{content:"";position:absolute;bottom:0;left:48px;width:22px;height:39px;border:1px solid #b8a57f;border-bottom:0;border-radius:14px 14px 0 0}.venue-copy{padding:clamp(2rem,6vw,4rem);align-self:center}.venue-copy h2{font-size:2.5rem;margin:0 0 1.25rem}.venue-copy h3{font:1.25rem var(--serif);margin-bottom:.4rem}.venue-copy>p:not(.eyebrow){color:var(--muted);font-size:.85rem}.venue-meta{display:flex;gap:.6rem;color:#776b58;font-size:.78rem;margin:1.3rem 0 1.6rem}.directions-button{display:inline-flex;gap:1rem;align-items:center;padding:.75rem 1.15rem;text-decoration:none;background:#7e8e77;color:white;font-size:.75rem;letter-spacing:.04em}.prayer{padding-block:0 9rem}.prayer-card{text-align:center;max-width:560px;margin:auto;padding:2rem 1rem}.prayer-card h2{font-size:2.8rem;margin-bottom:.9rem}.prayer-message{font:1.03rem/1.7 var(--serif);color:var(--muted);min-height:3.5em}.prayer-button{margin-top:.6rem}.candle{width:42px;height:82px;position:relative;margin:0 auto 1rem}.candle-body{position:absolute;bottom:0;left:11px;width:20px;height:54px;border-radius:4px 4px 3px 3px;background:linear-gradient(90deg,#e7ddc9,#fffaf0,#e0d4bd);box-shadow:0 5px 14px #7a66451a}.wick{position:absolute;bottom:53px;left:20px;width:2px;height:8px;background:#6e5a47;z-index:1}.flame{position:absolute;bottom:60px;left:12px;width:18px;height:28px;background:#eccb82;border-radius:60% 40% 55% 45%;opacity:0;transform:scale(.45);filter:blur(.3px);transition:opacity .5s,transform .5s;box-shadow:0 0 25px 11px #efc26b55}.candle.lit .flame{opacity:1;transform:scale(1);animation:flicker 1.3s ease-in-out infinite alternate}.closing{text-align:center;padding-block:1rem 5rem;position:relative}.closing-art{display:flex;justify-content:center;align-items:center;gap:1.5rem;color:var(--gold);margin-bottom:1.5rem}.closing-art span:nth-child(2){font-size:1.4rem}.closing h2{font-size:clamp(2rem,6vw,3.5rem);margin:.2rem auto 1rem}.closing-message{font:1.1rem/1.75 var(--serif);color:#77736b;max-width:450px;margin:0 auto 1.4rem}.footer-date{font-size:.68rem;letter-spacing:.2em;color:var(--gold);text-transform:uppercase}.footer-flower{display:block;font-size:1.35rem;color:#c9ad7a;margin-top:2rem}.lightbox{border:0;background:#171511ee;max-width:100vw;max-height:100svh;width:100vw;height:100svh;padding:3rem;place-items:center}.lightbox[open]{display:grid}.lightbox img{max-width:100%;max-height:100%;object-fit:contain}.lightbox-close{position:absolute;right:1.2rem;top:1rem;border:1px solid #ffffff70;color:white;background:transparent;width:42px;height:42px;border-radius:50%;font-size:1.6rem;cursor:pointer}.reveal{opacity:0;transform:translateY(16px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:translateY(0)}@keyframes float-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes sparkle{0%{opacity:0;transform:translateY(12px) scale(.3)}25%{opacity:1}100%{opacity:0;transform:translateY(-70px) scale(1.1)}}@keyframes flicker{from{filter:brightness(.93);transform:scale(.98) rotate(-2deg)}to{filter:brightness(1.08);transform:scale(1.04) rotate(2deg)}}
@media(min-width:850px){.hero{padding-block:7rem}.hero-image{height:min(72vh,720px)}.gallery{grid-auto-columns:minmax(240px,28%)}}
@media(max-width:680px){.section-wrap{width:min(100% - 2rem,var(--wrap))}.hero{grid-template-columns:1fr;gap:2.25rem;padding-block:5.5rem 6rem;min-height:auto}.hero-image{width:min(74%,330px);height:auto;aspect-ratio:4/5;grid-row:1}.hero-copy{text-align:center;margin:auto}.hero-copy .eyebrow{font-size:.59rem}.hero-cross{margin:.6rem 0}.hero-copy h2{font-size:2.6rem}.hero-intro{font-size:1.04rem}.hero-watermark{font-size:36vw}.blessing{padding-block:1rem 6rem}.blessing-card{padding-block:4rem}.celebration{padding-bottom:6rem}.family{padding-bottom:6rem}.family-grid{grid-template-columns:1fr}.family-grid article+article{border-left:0;border-top:1px solid #e6decf}.family-grid article{padding:1.6rem}.gallery{grid-auto-columns:minmax(72%,1fr);gap:.8rem}.gallery-item{height:380px}.venue-section{padding-bottom:6rem}.venue-card{grid-template-columns:1fr}.venue-illustration{min-height:210px}.venue-copy{text-align:center}.venue-meta{justify-content:center}.prayer{padding-bottom:6rem}.closing{padding-bottom:3rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}.cover-side{display:none}}

.family-grid article:nth-child(3){grid-column:1/-1;border-left:0;border-top:1px solid #e6decf}.closing-regards{margin:1.6rem auto 1.2rem;color:var(--muted);font:italic .92rem var(--serif)}.closing-regards span,.closing-regards strong{display:block}.closing-regards span{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-style:normal;margin-bottom:.4rem}.closing-regards strong{font-weight:400;color:#77634b}

.family-grid article:nth-child(3) h3{white-space:pre-line}
