/* A single responsive invitation stage. Existing decoration and controls remain. */
:root{--manor-image:url('assets/christmas-manor.png');--ornament-scale:1}
.small-wordmark{white-space:nowrap;letter-spacing:1px;font-size:clamp(20px,2.6vw,28px)}
@media(max-width:480px){.small-wordmark>span{display:none}.page-header .text-button{flex-shrink:0}}
main{margin-left:0;width:100%;overflow:hidden}.scene.scene-integrated.ornament-host{display:block;position:absolute;inset:0;width:100%;height:100%;z-index:0}.scene-integrated .scene-heading,.scene-integrated .scene-foot,.scene-integrated .wordmark{display:none}.scene-integrated .scene-image{background-image:var(--cover-image,var(--manor-image));background-position:center 62%;transform:scale(1.04);animation:scene-drift 35s ease-in-out infinite alternate}.scene-integrated .scene-shade{background:linear-gradient(90deg,color-mix(in srgb,var(--theme-061e18,#061e18) 69.02%,transparent),color-mix(in srgb,var(--theme-061e18,#061e18) 12.549%,transparent) 45%,color-mix(in srgb,var(--theme-061e18,#061e18) 69.02%,transparent)),linear-gradient(color-mix(in srgb,var(--theme-061e18,#061e18) 37.647%,transparent),color-mix(in srgb,var(--theme-061e18,#061e18) 43.922%,transparent))}.cover{min-height:100svh;padding:50px 30px 35px;background:var(--theme-112f27,#112f27);color:var(--paper)}.cover>.cover-top,.cover>.cover-intro,.cover>.recipient,.cover>.button,.cover>.sound-hint,.cover>.cover-bottom{position:relative;z-index:4}.cover>.cover-border{z-index:3;border-color:color-mix(in srgb,var(--theme-e8cc8d,#e8cc8d) 50.196%,transparent);inset:22px}.cover>.pine{z-index:3;width:270px}.cover .cover-top{color:var(--theme-eadabb,#eadabb);font-size:8px;margin-bottom:30px}.cover .cover-intro{padding:0 30px}.cover .cover-intro .eyebrow{color:var(--theme-e8c58c,#e8c58c);font-size:8px;letter-spacing:2px}.cover .cover-intro h2{font-size:70px;color:var(--theme-f7efdf,#f7efdf);text-shadow:0 3px 20px var(--theme-061e18,#061e18);margin:17px 0}.cover .cover-intro h2 em{color:var(--theme-e9c47f,#e9c47f)}.cover .cover-intro p{color:var(--theme-e8dcc4,#e8dcc4);text-shadow:0 2px 8px var(--theme-061e18,#061e18)}.cover .envelope{width:320px;z-index:5;margin:36px 0 25px;filter:drop-shadow(0 20px 25px #0008);transform:rotate(-5deg) translate(calc(var(--pointer-x,0)*8px),calc(var(--pointer-y,0)*5px));}.cover .recipient>span{color:var(--theme-c6bb9e,#c6bb9e)}.cover .recipient p{color:var(--theme-f5e9d3,#f5e9d3);font-size:27px}.cover .primary{border-color:var(--theme-dec38b,#dec38b);background:linear-gradient(110deg,var(--theme-b18b4e,#b18b4e),var(--theme-edd39b,#edd39b),var(--theme-c39b5c,#c39b5c));color:var(--theme-152e24,#152e24);min-width:240px}.cover .sound-hint{color:var(--theme-c9bea5,#c9bea5)}.cover .cover-bottom{max-width:450px;margin-top:23px}.cover .cover-bottom>span{color:var(--theme-c9b88f,#c9b88f)}.cover .wax-seal{transition:opacity .35s,transform .5s,box-shadow .4s}.cover .envelope:hover .wax-seal{transform:translateY(-3px) rotate(-10deg);box-shadow:0 9px 8px color-mix(in srgb,var(--theme-584321,#584321) 50.196%,transparent),inset 0 0 0 4px var(--theme-e0b675,#e0b675),inset 0 0 0 5px var(--theme-a87b42,#a87b42)}.cover.opening .wax-seal{transform:translateY(-25px) rotate(-35deg) scale(1.15)}.cover.opening .letter{transform:translateY(-72%) scale(1.04)}.cover.leaving{animation:cinematic-open .65s cubic-bezier(.2,.8,.2,1) forwards}.opened #invitation{animation:invitation-arrive 1.1s ease-out}.cover .ornament-frame{z-index:3}.cover .scene .ornament-frame{z-index:1}.cover>.ornament-frame .ornament-left{left:-45px;top:26%}.cover>.ornament-frame .ornament-right{right:-45px;bottom:20%}.page-header{padding-inline:max(30px,calc((100vw - 1120px)/2));height:75px}.section{padding:105px 45px}.section>.reveal{max-width:650px;margin-inline:auto}.section>div>p{max-width:500px;font-size:14px}.section h2{font-size:60px;max-width:580px;margin-inline:auto}.section .signature{font-size:35px}.section .eyebrow{font-size:9px}.welcome{min-height:960px;padding:150px 30px 370px}.welcome .welcome-copy{max-width:750px;margin-inline:auto}.welcome h2{font-size:110px}.welcome .script{font-size:66px}.welcome-copy .eyebrow{font-size:9px}.welcome-copy>p:not(.script){font-size:21px}.welcome-landscape{background-image:var(--manor-image);height:450px;background-position:center 67%}.welcome .arch-frame{max-width:950px;left:0;right:0;margin:auto;inset-block:40px;border-radius:500px 500px 0 0}.welcome>.pine{width:320px}.welcome .welcome-deer{left:8%;bottom:45px;width:150px}.welcome .welcome-candy{right:8%;bottom:55px;width:90px}.welcome .welcome-bells{width:100px;left:calc(50% - 50px);top:0}.personal-greeting{font:italic 19px var(--serif)!important;color:var(--theme-dac391,#dac391)!important;margin:0 auto 24px!important}.countdown{max-width:480px;margin:40px auto}.countdown>div{max-width:90px}.countdown strong{font-size:68px}.countdown span{font-size:9px}.countdown i{font-size:38px}.event-card{max-width:560px;margin:40px auto 60px;padding:40px}.event-card h3{font-size:43px}.event-date strong{font-size:96px}.agenda{max-width:580px;margin:auto}.agenda-item{gap:30px;padding-bottom:30px}.agenda-item h3{font-size:28px}.agenda-item p{font-size:12px}.gallery-section{padding:95px max(25px,calc((100vw - 1000px)/2)) 55px}.gallery-intro h2{font-size:60px}.gallery-feature{aspect-ratio:1.8}.gallery-pair{gap:22px;margin-top:22px}.gallery-tile{aspect-ratio:1.05}.gallery-feature>span,.gallery-tile>span{top:20px;bottom:auto;left:24px}.gallery-story{position:absolute;z-index:3;left:25px;right:25px;bottom:25px;text-align:left;color:var(--theme-fff2d6,#fff2d6)}.gallery-story h3{font:italic 36px var(--serif);line-height:1.1}.gallery-story p{font-size:11px;margin-top:10px;line-height:1.6;max-width:390px}.gallery-tile .gallery-story h3{font-size:30px}.swatches{max-width:400px;margin:35px auto}.swatches>div{max-width:75px}.swatches span{width:62px;height:62px}.swatches small{font-size:8px}.gift-detail p{max-width:420px;font-size:13px}.rsvp-section form,.wishes-section form,.wish-list{max-width:510px;margin-inline:auto}.rsvp-section form{margin-top:38px}.rsvp-section h2,.closing h2{font-size:68px}form input,form textarea,form select{font-size:15px;min-height:52px}form label{font-size:9px;margin-top:22px}.button{font-size:12px;min-height:52px}.bottom-nav{left:25px;right:25px;max-width:420px;bottom:20px}.ambient-controls{left:auto;right:25px;bottom:27px}.motion-switch{min-height:39px}.opened .ambient-controls{bottom:28px}.footer{padding-bottom:125px}#progress{left:0;width:100%}.ornament-cluster{scale:var(--ornament-scale);animation:wind-current 6.7s ease-in-out infinite alternate;animation-delay:var(--wind-delay,0s)}.ornament-left{left:-44px;top:30px}.ornament-right{right:-43px}.ornament-pendant{animation-name:natural-pendulum;animation-duration:4.8s}.ornament-mini{animation-name:natural-pendulum;animation-duration:6.1s}.ornament-pine{animation-name:natural-pine;animation-duration:6.4s}.ornament-accent{width:95px}.ornament-accent-left{left:-10px}.ornament-accent-right{right:-10px}.section-seam{position:absolute;top:0;left:0;right:0;height:34px;display:flex;align-items:center;justify-content:center;gap:20px;color:color-mix(in srgb,var(--theme-b99555,#b99555) 60.0%,transparent);z-index:3;pointer-events:none}.section-seam:before,.section-seam:after{content:'';height:1px;max-width:240px;flex:1;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--theme-b99555,#b99555) 40.0%,transparent),transparent)}.bethlehem-star{position:absolute;top:72px;left:calc(50% - 32px);width:64px;height:64px;color:var(--theme-f8d891,#f8d891);z-index:5;display:grid;place-content:center;pointer-events:none}.bethlehem-star>span{font-size:58px;filter:drop-shadow(0 0 16px color-mix(in srgb,var(--theme-eac779,#eac779) 66.667%,transparent));animation:star-radiance 5s ease-in-out infinite}.bethlehem-star>i{position:absolute;inset:-22px;background:conic-gradient(from 30deg,transparent,color-mix(in srgb,var(--theme-dfba6a,#dfba6a) 5.098%,transparent),transparent,color-mix(in srgb,var(--theme-f5e0a2,#f5e0a2) 10.196%,transparent),transparent);animation:star-beam 40s linear infinite;border-radius:50%}.tree-lights{position:absolute;inset:0;pointer-events:none;z-index:2}.tree-lights i{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);border-radius:50%;background:var(--theme-ffeac2,#ffeac2);box-shadow:0 0 7px 2px color-mix(in srgb,var(--theme-f5cf88,#f5cf88) 66.667%,transparent),0 0 18px color-mix(in srgb,var(--theme-ffd79c,#ffd79c) 46.667%,transparent);animation:tree-shimmer 3.8s ease-in-out infinite;animation-delay:var(--delay)}.cinematic-candles{position:absolute;bottom:32px;left:5%;height:150px;display:flex;align-items:flex-end;gap:10px;z-index:3;pointer-events:none;filter:drop-shadow(0 8px 10px color-mix(in srgb,var(--theme-091a16,#091a16) 50.196%,transparent))}.candle{position:relative;display:block;width:21px;height:74px;background:linear-gradient(90deg,var(--theme-bda568,#bda568),var(--theme-fff0c9,#fff0c9) 30%,var(--theme-ead1a1,#ead1a1) 70%,var(--theme-9e8046,#9e8046));border-radius:7px 7px 2px 2px;box-shadow:inset 0 -8px 8px color-mix(in srgb,var(--theme-9a7947,#9a7947) 13.333%,transparent)}.candle:nth-child(2){height:115px;width:25px}.candle:nth-child(3){height:58px}.candle:after{content:'';position:absolute;left:50%;top:-8px;width:2px;height:9px;background:var(--theme-5f4727,#5f4727)}.candle i{position:absolute;left:50%;top:-35px;width:14px;height:30px;margin-left:-7px;border-radius:50% 50% 48% 48%;background:radial-gradient(ellipse at 50% 78%,var(--theme-fffbed,#fffbed) 12%,var(--theme-ffe6a1,#ffe6a1) 40%,var(--theme-edb14e,#edb14e) 65%,transparent 72%);transform-origin:50% 100%;animation:candle-flicker 1.7s ease-in-out infinite alternate;filter:drop-shadow(0 0 12px var(--theme-ffd488,#ffd488))}.candle:nth-child(2) i{animation-delay:-.7s;animation-duration:1.3s}.candle:nth-child(3) i{animation-delay:-1.2s;animation-duration:2s}.closing .cinematic-candles{left:auto;right:8%;bottom:40px}.deer-character{animation:deer-life 13s ease-in-out infinite!important;animation-delay:var(--deer-delay,0s)!important;transform-origin:50% 100%!important}.deer-character.deer-curious{filter:drop-shadow(0 3px 5px color-mix(in srgb,var(--theme-d9ae53,#d9ae53) 26.667%,transparent))}body.effects-paused .ornament-cluster,body.effects-paused .tree-lights *,body.effects-paused .candle *,body.effects-paused .bethlehem-star *,body.effects-paused .deer-character{animation-play-state:paused!important}.ornament-frame:not(.on-stage) .ornament-cluster{animation-play-state:paused!important}.editor-preview [data-edit-id]:hover{outline:1px dashed var(--theme-b99555,#b99555);cursor:crosshair}.editor-preview .editor-selected{outline:2px solid var(--theme-b99555,#b99555)!important;outline-offset:4px}
#receipt-dialog{max-width:440px;padding:30px 20px 24px;background:var(--theme-112f27,#112f27);color:var(--paper);border-radius:8px;border-color:var(--theme-d3b575,#d3b575);overflow:auto}.admission-ticket{padding:35px 25px 27px;background:var(--paper) url('assets/paper.svg');color:var(--forest);border:1px solid var(--theme-b99555,#b99555);border-radius:4px;position:relative}.ticket-star{font-size:27px;color:var(--gold);margin:10px 0}.admission-ticket h2{font-size:49px;line-height:.98;margin:12px 0 22px}.ticket-name{font:27px var(--serif);color:var(--forest);overflow-wrap:anywhere;margin-bottom:20px}.ticket-meta p{font-size:11px;margin:3px 0;color:var(--theme-7a7d68,#7a7d68)}.ticket-perforation{border-top:1px dashed var(--theme-b99555,#b99555);margin:25px -25px;position:relative}.ticket-perforation:before,.ticket-perforation:after{content:'';position:absolute;width:20px;height:20px;background:var(--theme-112f27,#112f27);border-radius:50%;top:-10px}.ticket-perforation:before{left:-10px}.ticket-perforation:after{right:-10px}.ticket-number{font:68px var(--serif);letter-spacing:12px;color:var(--forest);font-variant-numeric:tabular-nums;margin:12px 0}.admission-ticket .ticket-eligibility{font-size:10px;margin:12px 0}.ticket-ref{font-size:7px;letter-spacing:1.5px;color:var(--theme-a28c60,#a28c60)}.ticket-credit{display:block;font-size:7px;letter-spacing:3px;margin-top:22px;color:var(--theme-a28c60,#a28c60)}.ticket-download{width:100%;margin-top:18px;background:var(--theme-dcc18b,#dcc18b);color:var(--theme-112f27,#112f27);border-color:var(--theme-dcc18b,#dcc18b)}
@keyframes cinematic-open{0%{opacity:1;transform:scale(1);filter:blur(0)}100%{opacity:0;transform:scale(1.24);filter:blur(14px)}}@keyframes invitation-arrive{0%{opacity:0;transform:scale(.985)}100%{opacity:1;transform:none}}@keyframes wind-current{from{transform:rotate(-2deg) translateX(-2px)}to{transform:rotate(2deg) translateX(3px)}}@keyframes natural-pendulum{0%{transform:rotate(-13deg)}38%{transform:rotate(10deg) translateY(2px)}63%{transform:rotate(12deg) translateY(3px)}100%{transform:rotate(-11deg)}}@keyframes natural-pine{0%{transform:rotate(-6deg) skewX(-1deg)}50%{transform:rotate(6deg) skewX(2deg)}100%{transform:rotate(-4deg)}}@keyframes star-radiance{0%,100%{opacity:.7;transform:scale(.96)}50%{opacity:1;transform:scale(1.08)}}@keyframes star-beam{to{transform:rotate(360deg)}}@keyframes tree-shimmer{0%,100%{opacity:.25;transform:scale(.65)}40%{opacity:1;transform:scale(1.25)}70%{opacity:.55;transform:scale(.85)}}@keyframes candle-flicker{0%{transform:rotate(-4deg) scaleY(.95);opacity:.85}45%{transform:rotate(3deg) scaleY(1.08);opacity:1}100%{transform:rotate(1deg) scaleY(.98);opacity:.9}}@keyframes deer-life{0%,20%,100%{transform:translateX(0) rotate(0)}25%{transform:translateX(3px) translateY(-3px) rotate(-3deg)}30%{transform:translateX(9px) translateY(0) rotate(1deg)}35%{transform:translateX(15px) translateY(-2px) rotate(-2deg)}40%,58%{transform:translateX(21px) rotate(0)}64%,75%{transform:translateX(21px) rotate(-7deg)}85%{transform:translateX(9px) translateY(-3px) rotate(2deg)}}
@media(min-width:1550px){.cover .envelope{width:360px}.cover .cover-intro h2{font-size:80px}}@media(max-height:820px) and (min-width:761px){.cover{padding-top:34px;padding-bottom:25px}.cover .cover-top{margin-bottom:15px}.cover .cover-intro h2{font-size:57px;margin:8px 0}.cover .cover-intro p{font-size:18px}.cover .envelope{width:270px;margin:27px 0 21px}.cover .recipient{margin-bottom:17px}.cover .cover-bottom{margin-top:17px}}
@media(max-width:760px){.cover{min-height:100svh;padding:45px 25px 30px}.cover .cover-top{font-size:6px;margin-bottom:25px}.cover .cover-intro{padding:0}.cover .cover-intro .eyebrow{font-size:6px;letter-spacing:1px}.cover .cover-intro h2{font-size:53px;margin:12px 0}.cover .cover-intro p{font-size:17px}.cover .envelope{width:min(285px,87vw);margin:35px 0 25px}.cover .recipient p{font-size:25px}.cover>.pine{width:160px}.cover .scene-integrated{display:block!important;height:100%;position:absolute!important}.scene-integrated .scene-image{background-position:center}.cover .cover-bottom{margin-top:27px}.cover>.ornament-frame .ornament-left{left:-83px}.cover>.ornament-frame .ornament-right{right:-82px}.cover .cinematic-candles{scale:.5;left:8px;bottom:30px;transform-origin:0 100%}.page-header{padding-inline:23px;height:62px}.section{padding:80px 32px}.section h2{font-size:45px}.section>div>p{font-size:12px}.welcome{min-height:850px;padding:175px 27px 330px}.welcome h2{font-size:74px}.welcome .script{font-size:52px}.welcome-copy>p:not(.script){font-size:17px}.welcome .arch-frame{inset:27px 17px;border-radius:200px 200px 0 0}.welcome>.pine{width:200px}.welcome .welcome-bells{width:85px;left:calc(50% - 42px)}.welcome .welcome-deer{width:100px;left:20px}.welcome .welcome-candy{width:65px;right:15px}.welcome-landscape{height:350px}.bethlehem-star{top:90px;scale:.8}.welcome .cinematic-candles{left:10%;scale:.6;transform-origin:0 100%}.personal-greeting{font-size:16px!important;max-width:260px}.countdown{gap:9px}.countdown strong{font-size:48px}.countdown i{font-size:26px}.event-card{padding:28px 20px;margin:35px 0 45px}.event-card h3{font-size:35px}.event-date strong{font-size:78px}.agenda-item h3{font-size:23px}.agenda-item{gap:18px}.gallery-section{padding:75px 20px 40px}.gallery-intro h2{font-size:44px}.gallery-feature{aspect-ratio:1.03}.gallery-pair{gap:12px;margin-top:12px}.gallery-tile{aspect-ratio:.72}.gallery-story{left:17px;right:17px;bottom:20px}.gallery-story h3{font-size:29px}.gallery-story p{font-size:10px}.gallery-tile .gallery-story h3{font-size:22px}.gallery-tile .gallery-story p{font-size:9px}.swatches span{width:48px;height:48px}.swatches small{font-size:7px}.rsvp-section h2,.closing h2{font-size:54px}.cinematic-candles{scale:.6;transform-origin:0 100%}.closing .cinematic-candles{right:2%;scale:.55;transform-origin:100% 100%}.bottom-nav{left:17px;right:17px;bottom:16px;max-width:390px}.ambient-controls{right:12px;bottom:100px}.opened .ambient-controls{bottom:100px}.ornament-left{left:-78px}.ornament-right{right:-72px}.ornament-accent{width:65px}.ornament-accent-left{left:-26px}.ornament-accent-right{right:-25px}form input,form select,form textarea{font-size:16px}.section .eyebrow{font-size:8px}.button{font-size:10px}.ticket-name{font-size:26px}#receipt-dialog{max-width:calc(100vw - 28px);padding:25px 16px 18px}.admission-ticket{padding:25px 20px}.admission-ticket h2{font-size:43px}.ticket-number{font-size:62px}.ticket-perforation{margin-inline:-20px}}
@media(prefers-reduced-motion:reduce){body:not(.motion-enabled) .tree-lights *,body:not(.motion-enabled) .candle *,body:not(.motion-enabled) .bethlehem-star *,body:not(.motion-enabled) .deer-character{animation:none!important}}

/* Gifts rest near the floor; knitted stockings sway from their hanging loops. */
img[data-art=gift],.gift-ornament{animation:gift-rest 7s ease-in-out infinite!important;transform-origin:50% 100%!important}
img[data-art=stocking],.stocking-ornament{animation:stocking-sway 5.6s cubic-bezier(.45,0,.55,1) infinite alternate!important;transform-origin:46% 0!important}
.welcome .gift-ornament{width:135px;right:6%;bottom:45px}
.cover .stocking-ornament{width:55px;bottom:-5px;rotate:-8deg}
.event-candy.gift-ornament{width:90px;bottom:6px;right:12px;rotate:0deg}
.ornament-mini[data-art=gift]{top:158px;width:68px;left:10px}
.ornament-mini[data-art=stocking]{width:48px}
body.effects-paused img[data-art=gift],body.effects-paused img[data-art=stocking],body.effects-paused .gift-ornament,body.effects-paused .stocking-ornament{animation-play-state:paused!important}
@keyframes gift-rest{0%,70%,100%{transform:translateY(0) rotate(-2deg)}78%{transform:translateY(-4px) rotate(2deg)}85%{transform:translateY(-1px) rotate(-1deg)}}
@keyframes stocking-sway{from{transform:rotate(-11deg) skewX(-1deg)}to{transform:rotate(12deg) skewX(1deg) translateY(2px)}}
@media(max-width:760px){.welcome .gift-ornament{width:96px;right:15px;bottom:45px}.event-candy.gift-ornament{width:66px;right:0}.cover .stocking-ornament{width:42px}.ornament-mini[data-art=gift]{width:55px;left:5px;top:140px}.ornament-mini[data-art=stocking]{width:36px}}

.welcome>.welcome-bells{left:calc(50% - 230px);top:22px;width:90px}
@media(max-width:760px){.welcome>.welcome-bells{left:18%;top:42px;width:65px}}

/* Christmas Eve is longer than the original wordmark. */
.small-wordmark{white-space:nowrap;letter-spacing:1px;font-size:clamp(20px,2.6vw,28px)}
@media(max-width:480px){.small-wordmark>span{display:none}.page-header .text-button{flex-shrink:0}}

/* Keep at most five wishes visible; retain every fetched wish in the scroll region. */
.wish-list{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--gold) transparent;position:relative;padding-right:10px}.wish-list:focus-visible{outline:1px solid var(--gold);outline-offset:5px}
