/* Native 3D paper geometry: separate back, letter, front folds, flap and wax seal. */
.invitation-door::backdrop{background:transparent}
/* One continuous outer frame, without panel borders through the centre. */
.door-left{border-right:0}
.door-left:after{right:0;border-right:0}
.door-right:after{left:0;border-left:0}
.envelope-scene{position:relative;width:290px;height:174px;margin:4px 0 30px;perspective:900px;isolation:isolate}
.envelope-3d{position:relative;width:270px;height:164px;margin:0 auto;transform-style:preserve-3d;transform:rotateX(7deg) rotateY(-9deg) rotateZ(-3deg);animation:envelope-float 7s ease-in-out infinite alternate}
.envelope-back{position:absolute;inset:0;background:#e6d9bc;border:1px solid #c3af85;border-radius:3px;transform:translateZ(0px);box-shadow:inset 0 0 18px #a3936c22}
.envelope-letter{position:absolute;left:15px;right:15px;bottom:9px;height:143px;background:#fffbf0;border:1px solid #ddcca5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;transform:translateZ(2px);transition:transform 1.15s var(--ease);box-shadow:0 2px 7px #796a4715;color:var(--green)}
.envelope-letter:before{content:'';position:absolute;inset:7px;border:1px solid #bda47555;pointer-events:none}.envelope-letter>.letter-label{font:6px/1.3 Arial,sans-serif;letter-spacing:.24em;color:var(--gold)}.envelope-letter>strong{font:22px/1.1 Georgia,serif;font-weight:400;letter-spacing:-.025em}.envelope-letter>strong i{color:var(--wine);font-size:17px}.envelope-letter>span:last-child{font:6px/1.3 Arial,sans-serif;letter-spacing:.12em;color:var(--muted)}
.envelope-front{position:absolute;left:0;right:0;bottom:0;height:100%;clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%);background:linear-gradient(145deg,#eee3cc 49.7%,#d7c7a4 50%,#f0e6d1 50.6%);transform:translateZ(3px);border-radius:0 0 3px 3px}.envelope-front:after{content:'';position:absolute;inset:0;background:linear-gradient(32deg,transparent 49.6%,#c3b08a80 50%,transparent 50.5%)}
.envelope-flap{position:absolute;left:0;right:0;top:0;height:112px;background:linear-gradient(160deg,#f2e8d4,#e0d0ad);clip-path:polygon(0 0,100% 0,50% 100%);transform:translateZ(4px) rotateX(0deg);transform-origin:50% 0;transition:transform .85s var(--ease);transform-style:preserve-3d;backface-visibility:visible}
.envelope-seal{position:absolute;left:calc(50% - 23px);top:41px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;color:#e7dcbe;background:radial-gradient(circle at 35% 30%,#49654a,var(--green) 65%);border:2px solid #59724e;border-radius:50%;box-shadow:0 3px 8px #173a2630,inset 0 0 0 2px #244031;font:16px/1 Georgia,serif}.envelope-seal i{font-size:8px;margin:4px -2px 0;color:#d1b473}.envelope-shadow{position:absolute;width:210px;height:20px;border-radius:50%;background:#7c785c30;filter:blur(13px);left:40px;bottom:-12px;animation:shadow-float 7s ease-in-out infinite alternate}
.door-content>.eyebrow{margin-bottom:24px}.door-content>*{transition:opacity .5s}.invitation-door.opening .door-content{opacity:1;transform:none}.invitation-door.opening .door-content>:not(.envelope-scene){opacity:0;transition-delay:.3s}.invitation-door.opening .envelope-3d{animation:none;transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg);transition:transform .6s var(--ease)}.invitation-door.opening .envelope-flap{transform:translateZ(-1px) rotateX(-180deg)}.invitation-door.opening .envelope-letter{transform:translateY(-105px) translateZ(2px);transition-duration:1s;transition-delay:1s}.invitation-door.opening .door-panel,.invitation-door.opening .door-botanical{transition-duration:1.15s;transition-delay:2s}.invitation-door.opening .envelope-scene{opacity:0;transition:opacity .5s 2.35s}.invitation-door.opening .envelope-shadow{opacity:0;transition:opacity .6s}
/* A dimensional frame, not a warped or animated face. */
.hero-visual>.portrait-arch{height:auto;aspect-ratio:4/5}
.hero-visual{perspective:1100px}.hero-visual>.portrait-arch{transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateZ(12px);transition:transform .65s var(--ease);animation:frame-float 9s ease-in-out infinite alternate;transform-style:preserve-3d;box-shadow:8px 25px 65px #17342824,2px 4px 0 #b6976140}.hero-visual:before{content:'';position:absolute;inset:-9px -9px 60px;border:1px solid #bba06c65;border-radius:48% 48% 2px 2px;transform:rotateY(-2deg) translateZ(-10px);pointer-events:none}.hero-reception-photo{inset:0;width:100%;height:100%;transform:scale(1.02);object-position:center}.hero-visual>.date-seal{animation:seal-float 6s ease-in-out infinite alternate;box-shadow:7px 9px 0 #a4875440,8px 15px 28px #1b3a2a30;transform-style:preserve-3d}.hero-visual>.hero-floral{translate:0 0 25px}.hero-visual .sunbeam{background:linear-gradient(120deg,transparent 30%,#fedcad15 44%,transparent 60%)}
.wedding-scene{position:relative;width:100%;padding-right:12px;padding-bottom:24px}.wedding-arch{height:560px;box-shadow:0 15px 50px #20382718}.wedding-scene-garden{position:absolute;inset:-2%;width:104%;height:104%;object-fit:cover;animation:photo-camera 18s ease-in-out infinite alternate}.wedding-scene-couple{position:absolute;bottom:1%;left:-4%;width:108%;height:96%;max-width:none;object-fit:contain;filter:drop-shadow(0 5px 4px #2f3a2820)}.ceremony-inset{position:absolute;left:-20px;bottom:0;width:155px;aspect-ratio:1.25;border:7px solid var(--paper);rotate:-6deg;box-shadow:0 5px 20px #243a2320;overflow:hidden;animation:detail-float 10s ease-in-out infinite alternate}.ceremony-inset img{width:100%;height:100%;object-fit:cover;object-position:27% center}.wedding-note{font:14px/1.8 Georgia,serif;color:var(--muted);max-width:365px;margin-top:25px}.reception-section .event-time{font-size:14px;color:#e8d5b3;letter-spacing:.02em}.reception-section .event-time .time-dot{width:6px;height:6px;background:#d1b57c}.story-picture .photo-window{transition:transform 1.5s var(--ease)}.js .story-picture:not(.is-visible) .photo-window{transform:perspective(1000px) rotateY(8deg) rotateX(3deg)}.js .story-picture.is-visible .photo-window{transform:perspective(1000px) rotateY(0deg) rotateX(0deg)}
@keyframes envelope-float{from{transform:rotateX(7deg) rotateY(-9deg) rotateZ(-3deg) translateY(0)}to{transform:rotateX(-2deg) rotateY(8deg) rotateZ(2deg) translateY(-7px)}}@keyframes shadow-float{from{scale:1;opacity:.8}to{scale:.88;opacity:.5}}@keyframes frame-float{from{translate:0 2px;rotate:0 1 0 -1.2deg}to{translate:0 -6px;rotate:0 1 0 1.2deg}}@keyframes seal-float{from{transform:perspective(500px) rotateY(-7deg) rotateX(4deg) translateY(0)}to{transform:perspective(500px) rotateY(7deg) rotateX(-3deg) translateY(-6px)}}@keyframes detail-float{from{translate:0 0}to{translate:0 -5px}}
@media(max-width:1100px){.wedding-arch{height:500px}.hero-visual:before{bottom:58px}.envelope-scene{margin-bottom:25px}}
@media(max-width:760px){.envelope-scene{width:260px;height:151px;margin-top:0;margin-bottom:23px}.envelope-3d{width:240px;height:145px}.envelope-flap{height:100px}.envelope-front{height:100%}.envelope-letter{height:128px;gap:10px;left:13px;right:13px}.envelope-letter>strong{font-size:21px}.envelope-seal{top:35px;width:42px;height:42px;left:calc(50% - 21px);font-size:15px}.envelope-shadow{width:180px;left:40px;bottom:-9px}.door-content{padding-top:55px;padding-bottom:28px}.door-content>.eyebrow{margin-bottom:22px}.door-content h2{font-size:clamp(29px,8.6vw,41px)}.door-names{margin-top:20px}.door-date{margin-top:15px;margin-bottom:23px;font-size:8px}.door-footnote{margin-top:16px}.invitation-door.opening .envelope-letter{transform:translateY(-94px) translateZ(2px)}.hero-note{font-size:19px;max-width:340px;margin-inline:auto;line-height:1.4}.hero-note br{display:initial}.hero-visual:before{inset:-7px -7px 56px}.hero-visual>.portrait-arch{animation-duration:10s}.wedding-scene{padding:0 8px 15px;width:calc(100% - 10px);margin-inline:auto}.wedding-arch{height:auto;aspect-ratio:.85}.ceremony-inset{width:120px;left:-10px;bottom:0;border-width:5px}.wedding-note{font-size:14px;max-width:100%}.reception-section .event-time{font-size:15px}.hero-date strong{font-size:11px}.hero-date div>span{font-size:10px}}
@media(max-height:700px){.envelope-scene{height:125px;margin-bottom:17px}.envelope-3d{width:220px;height:130px}.envelope-flap{height:93px}.envelope-front{height:100%}.envelope-letter{height:114px;gap:7px}.envelope-letter>strong{font-size:18px}.envelope-seal{top:32px;width:38px;height:38px;left:calc(50% - 19px);font-size:13px}.door-content>.eyebrow{margin-bottom:16px}.door-content h2{font-size:28px}.door-names{font-size:15px;margin-top:15px}.door-date{margin:12px 0 18px}.door-content{padding-block:22px}.door-footnote{margin-top:12px}.music-choice{margin-top:7px}}
@media(prefers-reduced-motion:reduce){.hero-visual>.portrait-arch{transform:none!important}.js .story-picture .photo-window{transform:none!important}.envelope-3d{transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg)!important}.hero-visual>.date-seal{transform:none!important}}
