:root{--cream:#faf5ec;--paper:#fffdf9;--ink:#3e302a;--muted:#776a63;--gold:#ad8152;--blush:#d8aaa4;--line:#5b433527}*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;font-family:Inter,sans-serif;color:var(--ink);background:#342822}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid #d4ac7e;outline-offset:3px}.ambient{position:fixed;inset:0;background:linear-gradient(135deg,#1f1815aa,#4a3730aa),url('family-final.jpg') center/cover;transform:scale(1.04)}.ambient:after{content:'';position:absolute;inset:0;backdrop-filter:blur(8px);background:radial-gradient(circle at 50% 45%,transparent,#1d1512b8)}.ambient i{position:absolute;border-radius:50%;filter:blur(3px);background:#f1c9aa30;animation:float 9s ease-in-out infinite}.ambient i:nth-child(1){width:180px;height:180px;left:8%;top:12%}.ambient i:nth-child(2){width:90px;height:90px;right:12%;top:20%;animation-delay:-3s}.ambient i:nth-child(3){width:130px;height:130px;right:18%;bottom:8%;animation-delay:-6s}@keyframes float{50%{transform:translateY(-20px) translateX(10px)}}.stage{height:100%;display:grid;place-items:center;position:relative;z-index:2;padding:24px}.envelope-scene{width:min(620px,88vw);text-align:center;transition:.7s}.envelope-scene.hidden{opacity:0;transform:scale(.86);pointer-events:none}.envelope{position:relative;aspect-ratio:1.55;filter:drop-shadow(0 35px 45px #140c0955);perspective:1200px}.envelope-back{position:absolute;inset:0;background:#e8d8c5;border-radius:8px}.letter-preview{position:absolute;left:7%;right:7%;bottom:7%;height:86%;background:var(--paper);display:flex;flex-direction:column;align-items:center;padding:38px;box-shadow:0 4px 20px #442c201a;transition:1s cubic-bezier(.2,.8,.2,1);z-index:2}.tiny{font-size:9px;letter-spacing:.3em;color:var(--gold)}.preview-monogram{margin:auto;font:50px 'Playfair Display';letter-spacing:.08em}.preview-monogram i{color:var(--gold)}.envelope-left,.envelope-right,.envelope-bottom{position:absolute;inset:0;z-index:4}.envelope-left{clip-path:polygon(0 0,53% 54%,0 100%);background:#e7d2bb}.envelope-right{clip-path:polygon(100% 0,47% 54%,100% 100%);background:#dfc7ae}.envelope-bottom{clip-path:polygon(0 100%,50% 48%,100% 100%);background:linear-gradient(145deg,#ead9c5,#d9bea2)}.flap{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 58%);background:linear-gradient(#f0e2d0,#e1c9ad);z-index:5;transform-origin:top;transition:transform .8s cubic-bezier(.2,.8,.2,1),z-index 0s .35s}.seal{position:absolute;z-index:6;left:50%;top:51%;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:50%;border:0;color:#f7e8d8;background:radial-gradient(circle at 35% 30%,#b98968,#704537 70%);box-shadow:0 8px 20px #3a201a55,inset 0 0 0 4px #ffffff16;transition:.35s}.seal:before{content:'';position:absolute;inset:8px;border:1px solid #e6c8ac66;border-radius:50%}.seal span{position:relative;font:16px 'Playfair Display';letter-spacing:.06em}.seal i{color:#e4c19e}.seal:hover{transform:translate(-50%,-50%) scale(1.08);box-shadow:0 12px 28px #3a201a70}.envelope.open .flap{transform:rotateX(180deg);z-index:1}.envelope.open .seal{opacity:0;transform:translate(-50%,-50%) scale(.5)}.envelope.open .letter-preview{transform:translateY(-45%)}.open-hint{color:#f7e9dc;font-size:10px;text-transform:uppercase;letter-spacing:.22em;margin:27px 0 0;opacity:.78}.invitation{position:absolute;width:min(1040px,92vw);height:min(680px,88vh);display:grid;grid-template-columns:46% 54%;background:var(--paper);border-radius:4px;overflow:hidden;box-shadow:0 45px 100px #120b0870;opacity:0;transform:translateY(35px) scale(.96);pointer-events:none;transition:.85s cubic-bezier(.2,.8,.2,1)}.invitation.visible{opacity:1;transform:none;pointer-events:auto}.paper-noise{position:absolute;inset:0;opacity:.035;pointer-events:none;z-index:10;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.close-card{position:absolute;z-index:20;right:14px;top:12px;width:38px;height:38px;border:0;border-radius:50%;background:#fffaf3;color:var(--ink);font-size:24px;box-shadow:0 7px 20px #27171018}.photo-panel{position:relative;background:url('family-final.jpg') center/cover;color:white;padding:52px;display:flex;align-items:flex-end}.photo-panel:before{content:'';position:absolute;inset:0;background:url('family-final.jpg') center/cover;filter:blur(18px);transform:scale(1.12);opacity:.82}.family-photo{position:absolute;z-index:1;inset:0;width:100%;height:100%;object-fit:contain}.photo-shade{position:absolute;z-index:2;inset:0;background:linear-gradient(0deg,#241713d6 0,#24171318 70%),linear-gradient(90deg,#24171328,transparent)}.photo-copy{position:relative;z-index:3}.photo-copy>span{font-size:9px;text-transform:uppercase;letter-spacing:.25em}.photo-copy h1{font:clamp(52px,5.6vw,82px)/.86 'Playfair Display';letter-spacing:-.04em;margin:25px 0}.photo-copy h1 i{color:#e5bfa1;font-weight:400}.photo-copy p{font:italic 17px/1.5 'Playfair Display';margin:0;color:#f2dfd0}.date-badge{position:absolute;z-index:3;right:28px;top:28px;width:94px;height:94px;border:1px solid #ffffff88;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:8px;backdrop-filter:blur(8px);background:#ffffff10}.date-badge b{font:35px 'Playfair Display'}.date-badge span{font-size:8px;line-height:1.5;text-transform:uppercase;letter-spacing:.1em}.content-panel{position:relative;padding:42px 54px 34px;display:flex;flex-direction:column;min-width:0}.tabs{display:flex;gap:26px;border-bottom:1px solid var(--line);height:42px}.tabs button{border:0;background:none;padding:0 0 14px;color:#9b8f88;font-size:9px;text-transform:uppercase;letter-spacing:.17em;position:relative}.tabs button.active{color:var(--ink)}.tabs button.active:after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--gold)}.pages{position:relative;flex:1}.page{position:absolute;inset:0;padding-top:44px;opacity:0;transform:translateX(18px);pointer-events:none;transition:.5s}.page.active{opacity:1;transform:none;pointer-events:auto}.eyebrow{font-size:9px;text-transform:uppercase;letter-spacing:.23em;color:var(--gold);font-weight:600}.page h2{font:clamp(38px,3.4vw,52px)/1.02 'Playfair Display';letter-spacing:-.035em;margin:16px 0 22px}.page h2 i{color:#b47d72;font-weight:400}.lead{font-size:13px;line-height:1.8;color:var(--muted);max-width:500px}.quote{border-left:1px solid var(--gold);padding-left:16px;margin:28px 0;font:italic 17px 'Playfair Display';color:#7d5a49}.gold-button{height:50px;border:0;border-radius:99px;background:linear-gradient(110deg,#f0dbc0,#c99f73);color:#45332a;padding:0 23px;display:inline-flex;align-items:center;justify-content:center;gap:25px;font-size:9px;text-transform:uppercase;letter-spacing:.12em;box-shadow:0 12px 26px #76503220;transition:.3s}.gold-button:hover{transform:translateY(-2px);box-shadow:0 17px 32px #76503235}.detail-list{margin-top:5px}.detail-list>div{display:grid;grid-template-columns:38px 1fr;border-top:1px solid var(--line);padding:14px 0;gap:12px}.icon{font:italic 12px 'Playfair Display';color:var(--gold)}.detail-list p{margin:0;display:flex;flex-direction:column;gap:3px}.detail-list small{font-size:8px;text-transform:uppercase;letter-spacing:.14em;color:var(--gold)}.detail-list strong{font-size:12px;font-weight:500}.detail-list em{font-style:normal;color:var(--muted);font-size:10px}.detail-actions{display:flex;align-items:center;justify-content:space-between;margin-top:13px}.detail-actions a,.detail-actions button{border:0;background:none;color:var(--gold);font-size:9px;text-transform:uppercase;letter-spacing:.12em;text-decoration:none}.page form{display:flex;flex-direction:column;gap:14px}.page form label{font-size:8px;text-transform:uppercase;letter-spacing:.14em;font-weight:600}.page input,.page select,.page textarea{display:block;width:100%;border:0;border-bottom:1px solid #cfbfb3;background:transparent;border-radius:0;padding:10px 0 8px;color:var(--ink);font-size:12px;outline-offset:0}.page textarea{resize:none}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}.page form .gold-button{align-self:flex-start;margin-top:5px}.success{display:none;text-align:center;padding-top:35px}.success.show{display:block}.success span{width:55px;height:55px;border-radius:50%;display:grid;place-items:center;background:#e9d8c4;color:var(--gold);margin:auto;font-size:22px}.success strong{display:block;font:28px 'Playfair Display';margin-top:16px}.success p{font-size:11px;color:var(--muted)}.page-dots{display:flex;gap:8px;justify-content:flex-end}.page-dots button{width:6px;height:6px;border:0;border-radius:50%;background:#d8cdc5;padding:0}.page-dots button.active{background:var(--gold);transform:scale(1.25)}.sound-note{position:fixed;z-index:3;bottom:18px;left:50%;transform:translateX(-50%);color:#fff;font-size:8px;letter-spacing:.2em;text-transform:uppercase;opacity:.55;white-space:nowrap}
@media(max-width:760px){.stage{padding:12px}.envelope-scene{width:94vw}.seal{width:66px;height:66px}.invitation{width:calc(100vw - 20px);height:calc(100svh - 32px);grid-template-columns:1fr;grid-template-rows:34% 66%;border-radius:12px}.photo-panel{padding:25px 28px;background-position:center 38%}.photo-copy>span{font-size:7px}.photo-copy h1{font-size:48px;margin:13px 0}.photo-copy p{display:none}.date-badge{width:72px;height:72px;right:18px;top:17px}.date-badge b{font-size:27px}.date-badge span{font-size:6px}.content-panel{padding:22px 25px 20px}.tabs{height:35px;gap:23px}.tabs button{padding-bottom:10px}.page{padding-top:23px}.page h2{font-size:37px;margin:11px 0 14px}.lead{font-size:11px;line-height:1.65}.quote{margin:16px 0;font-size:14px}.gold-button{height:45px}.detail-list>div{padding:10px 0}.detail-actions{margin-top:8px}.page form{gap:10px}.page input,.page select,.page textarea{padding:7px 0}.close-card{right:9px;top:8px;width:34px;height:34px}.sound-note{display:none}}
@media(max-width:390px){.photo-panel{padding:20px}.photo-copy h1{font-size:41px}.content-panel{padding:18px 20px}.page h2{font-size:32px}.tabs{gap:16px}.quote{display:none}.page form .gold-button{margin-top:0}.detail-list>div{padding:8px 0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Keep the closed envelope clickable above the hidden invitation layer. */
.stage{isolation:isolate}
.envelope-scene{position:relative;z-index:30}
.envelope-scene.hidden{z-index:0}
.envelope{z-index:31}
.seal{z-index:999;pointer-events:auto;touch-action:manipulation}
.invitation{z-index:10}
.invitation.visible{z-index:50}