*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5f0eb;--bg-alt:#ede5db;--text:#3d2c1f;--text-light:#8c7a6b;--text-muted:#b5a090;--accent:#c9a96e;--accent-dark:#a8884a;--accent-light:#e6d5b8;--overlay:#3d2c1fa6;--font-serif:"Cormorant Garamond", serif}html{scroll-behavior:smooth}body{font-family:var(--font-serif);color:var(--text);background:var(--bg);min-height:100vh;font-size:20px;font-weight:400;line-height:1.7;overflow-x:hidden}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit}a{color:inherit;text-decoration:none}input,select,textarea{font-family:inherit;font-size:inherit}.password-screen{z-index:2000;background:var(--bg);justify-content:center;align-items:center;transition:opacity .5s,visibility .5s;display:flex;position:fixed;inset:0}.password-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}.password-card{text-align:center;width:90%;max-width:360px;padding:40px 32px}.password-lock{opacity:.3;margin-bottom:12px;font-size:40px}.password-title{color:var(--text);margin-bottom:6px;font-family:Playfair Display,serif;font-size:32px;font-style:italic;font-weight:400}.password-subtitle{color:var(--text-light);margin-bottom:28px;font-size:16px}.password-input{border:none;border-bottom:2px solid var(--accent-light);text-align:center;letter-spacing:6px;width:100%;color:var(--text);background:0 0;outline:none;padding:14px 16px;font-size:22px;transition:border-color .3s}.password-input:focus{border-color:var(--accent)}.password-input::placeholder{letter-spacing:2px;color:var(--text-muted);font-size:14px}.password-btn{border:1.5px solid var(--accent);color:var(--accent-dark);letter-spacing:3px;text-transform:uppercase;background:0 0;border-radius:100px;margin-top:24px;padding:12px 48px;font-size:15px;font-weight:600;transition:background .3s,color .3s}.password-btn:hover{background:var(--accent);color:#fff}.password-error{color:#c0392b;margin-top:14px;font-size:14px;font-style:italic;display:none}.password-error.show{display:block}.hero-envelope{z-index:1000;perspective:2000px;pointer-events:none;background:0 0;animation:5s ease-in-out infinite envelope-float;position:fixed;inset:0;overflow:hidden}.hero-envelope>*{pointer-events:auto}.hero-envelope.hidden{display:none}@keyframes envelope-float{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-5px)rotate(.4deg)}50%{transform:translateY(0)rotate(0)}75%{transform:translateY(-3px)rotate(-.2deg)}}.env-flap-top{z-index:4;transform-origin:top;will-change:transform, opacity;background:linear-gradient(#f5f0eb 0%,#ede5db 100%);width:100%;height:50%;position:absolute;top:0;left:0;overflow:visible}.env-flap-top.open{animation:2.8s cubic-bezier(.4,0,.6,1) forwards flap-open-top}@keyframes flap-open-top{0%{opacity:1;transform:rotateX(0)}70%{opacity:1;transform:rotateX(126deg)}85%{opacity:.5;transform:rotateX(153deg)}to{opacity:0;transform:rotateX(180deg)}}.env-flap-top .flap-texture{pointer-events:none;background-image:repeating-linear-gradient(0deg,#0000,#0000 2px,#c9a96e04 2px 3px),repeating-linear-gradient(90deg,#0000,#0000 4px,#c9a96e02 4px 5px),radial-gradient(at 20% 10%,#c9a96e0a 0%,#0000 50%),radial-gradient(at 80% 10%,#c9a96e08 0%,#0000 50%);position:absolute;inset:0}.env-flap-top:after{content:"";pointer-events:none;background:linear-gradient(#0000 0%,#3d2c1f14 100%);width:100%;height:12px;position:absolute;bottom:0;left:0}.env-flap-top.open{transform:rotateX(180deg)}.env-flap-bottom{z-index:3;transform-origin:bottom;will-change:transform, opacity;background:linear-gradient(#ede5db 0%,#f5f0eb 100%);width:100%;height:50%;position:absolute;bottom:0;left:0;overflow:visible}.env-flap-bottom.open{animation:2.8s cubic-bezier(.4,0,.6,1) forwards flap-open-bottom}@keyframes flap-open-bottom{0%{opacity:1;transform:rotateX(0)}70%{opacity:1;transform:rotateX(-126deg)}85%{opacity:.5;transform:rotateX(-153deg)}to{opacity:0;transform:rotateX(-180deg)}}.env-flap-bottom .flap-texture{pointer-events:none;background-image:repeating-linear-gradient(0deg,#0000,#0000 2px,#c9a96e04 2px 3px),radial-gradient(at 30% 80%,#c9a96e08 0%,#0000 50%);position:absolute;inset:0}.env-flap-bottom:before{content:"";pointer-events:none;background:linear-gradient(#3d2c1f14 0%,#0000 100%);width:100%;height:12px;position:absolute;top:0;left:0}.envelope-seal{z-index:6;filter:drop-shadow(0 6px 16px #8c545c59);pointer-events:none;width:fit-content;margin:0 auto;transition:opacity .6s,transform 1s cubic-bezier(.34,1.56,.64,1);position:absolute;bottom:-38px;left:0;right:0}.envelope-seal .seal-img{width:clamp(80px,12vw,100px);height:clamp(80px,12vw,100px);display:block}.envelope-seal.releasing{animation:.8s ease-in-out seal-shake}.envelope-seal.breaking{opacity:0;transition:transform 1.2s cubic-bezier(.22,.61,.36,1),opacity .8s;transform:scale(.3)rotate(15deg)translateY(-20px)}.seal-crack-group{transition:opacity .3s}.envelope-seal.releasing .seal-crack-group,.envelope-seal.breaking .seal-crack-group{opacity:1!important}@keyframes seal-shake{0%{transform:rotate(0)}10%{transform:rotate(-2deg)scale(1.02)}25%{transform:rotate(2deg)scale(1.03)}40%{transform:rotate(-1.5deg)scale(1.01)}55%{transform:rotate(1.5deg)scale(1.02)}70%{transform:rotate(-1deg)scale(1)}85%{transform:rotate(.5deg)scale(.98)}to{transform:rotate(0)scale(.95)}}.env-text-group{z-index:5;pointer-events:none;flex-direction:column;align-items:center;gap:4px;width:fit-content;max-width:100%;margin:0 auto;transition:opacity 1.2s,transform 1.2s;display:flex;position:absolute;bottom:60px;left:0;right:0}.env-text-group.fade-out{opacity:0;transform:scale(.92)}.env-invite-text{color:var(--text-light);letter-spacing:2px;text-align:center;opacity:.8;font-family:Playfair Display,serif;font-size:clamp(19px,2.8vw,24px);font-style:italic;font-weight:400}.env-names-preview{color:var(--text);letter-spacing:clamp(4px,1.2vw,8px);text-transform:uppercase;font-family:Cormorant Garamond,serif;font-size:clamp(28px,5vw,40px);font-style:italic;font-weight:300}.env-date-preview{color:var(--text);letter-spacing:4px;text-transform:uppercase;opacity:.8;font-size:clamp(14px,2.2vw,18px)}.env-diamond{color:var(--accent);opacity:.6;font-size:clamp(8px,1.2vw,10px)}.envelope-hint{text-align:center;z-index:4;color:var(--text-muted);letter-spacing:3px;text-transform:uppercase;opacity:.5;font-size:15px;transition:opacity .4s;animation:2.5s ease-in-out infinite pulse-hint;position:absolute;bottom:6vh;left:0;right:0}@keyframes pulse-hint{0%,to{opacity:.3}50%{opacity:.7}}#invitation{opacity:1}.invitation-inner{max-width:620px;margin:0 auto;padding:0 24px}#invitation.visible{animation:1s cubic-bezier(.22,.61,.36,1) forwards invite-fade-in}@keyframes invite-fade-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.top-banner{width:100%;max-width:1400px;margin:0 auto;line-height:0;position:relative;overflow:hidden}.top-banner:after{content:"";background:linear-gradient(to bottom, transparent 0%, transparent 20%, var(--bg) 100%);pointer-events:none;width:100%;height:60px;position:absolute;bottom:0;left:0}.top-banner-img{object-fit:cover;width:100%;height:auto;display:block}.hero-section{text-align:center;padding:0 0 60px}.hero-logo{max-width:500px;margin:0 auto;line-height:0}.hero-logo-svg{width:100%;height:auto}.hero-divider{color:var(--accent);letter-spacing:8px;margin:24px 0;font-size:16px}.hero-date-block{justify-content:center;align-items:center;gap:16px;margin-top:20px;display:flex}.hero-day{color:var(--text);letter-spacing:-2px;font-size:clamp(52px,11vw,76px);font-weight:300;line-height:1}.hero-month{color:var(--accent);letter-spacing:4px;text-transform:uppercase;font-size:clamp(22px,3.8vw,28px);font-weight:500}.hero-date-sep{color:var(--accent);opacity:.5;font-size:clamp(30px,5vw,42px);font-weight:200;line-height:1}.hero-time{color:var(--text-light);letter-spacing:2px;font-size:clamp(20px,3.2vw,26px);font-weight:400}.countdown-section{text-align:center;padding:30px 0 60px}.countdown-grid{justify-content:center;gap:32px;display:flex}.countdown-item{flex-direction:column;align-items:center;min-width:70px;display:flex}.countdown-number{color:var(--accent);font-family:Playfair Display,serif;font-size:54px;font-weight:300;line-height:1}.countdown-number.pulse{animation:.3s count-pulse}@keyframes count-pulse{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}.countdown-label{text-transform:uppercase;letter-spacing:3px;color:var(--text-muted);margin-top:6px;font-size:16px}.ceremony-section{text-align:center;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);position:relative;overflow:hidden}.ceremony-section:before{content:"";background:linear-gradient(to right, var(--bg) 0%, var(--bg) 60%, transparent 100%);pointer-events:none;z-index:2;width:min(280px,max(0px,100vw - 1400px)/2);height:100%;position:absolute;top:0;left:0}.ceremony-section:after{content:"";background:linear-gradient(to left, var(--bg) 0%, var(--bg) 60%, transparent 100%);pointer-events:none;z-index:2;width:min(280px,max(0px,100vw - 1400px)/2);height:100%;position:absolute;top:0;right:0}.ceremony-image-wrap{width:100%;max-width:1400px;margin:0 auto;line-height:0;position:relative}.ceremony-image-wrap:before{content:"";background:linear-gradient(to bottom, var(--bg), transparent);pointer-events:none;z-index:1;width:100%;height:60px;position:absolute;top:0;left:0}.ceremony-image-wrap:after{content:"";background:linear-gradient(to bottom, transparent 0%, transparent 45%, var(--bg) 100%);pointer-events:none;z-index:1;width:100%;height:200px;position:absolute;bottom:0;left:0}.ceremony-img{object-fit:cover;object-position:center 30%;filter:saturate(.45)brightness(1.17);width:100%;height:45vh;display:block}.ceremony-content{padding:20px 24px 60px}.ceremony-label{text-transform:uppercase;letter-spacing:6px;color:var(--text);margin-bottom:10px;font-size:17px;font-weight:500}.ceremony-divider{justify-content:center;align-items:center;gap:14px;max-width:240px;margin:0 auto 18px;display:flex}.ceremony-divider .divider-line{background:var(--text);opacity:.25;width:60px;height:1px;display:block}.ceremony-divider .divider-icon{color:var(--text);opacity:.5;font-size:15px}.ceremony-name{color:var(--text);letter-spacing:0;margin-bottom:10px;font-family:Playfair Display,serif;font-size:clamp(42px,8vw,56px);font-style:italic;font-weight:500}.ceremony-date{color:var(--text);letter-spacing:1px;opacity:.85;margin-bottom:4px;font-size:20px;font-weight:500}.ceremony-address{color:var(--text);opacity:.7;max-width:380px;margin-bottom:28px;margin-left:auto;margin-right:auto;font-size:18px;font-style:italic;line-height:1.6}.ceremony-section .btn-maps{border:1.5px solid var(--accent);color:var(--accent);letter-spacing:1px;text-transform:uppercase;border-radius:100px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:500;transition:background .3s,color .3s,border-color .3s;display:inline-flex}.ceremony-section .btn-maps:hover{background:var(--accent);color:#fff}.ceremony-section .btn-maps svg{flex-shrink:0}.maps-buttons{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:20px;display:flex}.reception-section{text-align:center;width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);position:relative;overflow:hidden}.reception-section:before{content:"";background:linear-gradient(to right, var(--bg) 0%, var(--bg) 60%, transparent 100%);pointer-events:none;z-index:2;width:min(280px,max(0px,100vw - 1400px)/2);height:100%;position:absolute;top:0;left:0}.reception-section:after{content:"";background:linear-gradient(to left, var(--bg) 0%, var(--bg) 60%, transparent 100%);pointer-events:none;z-index:2;width:min(280px,max(0px,100vw - 1400px)/2);height:100%;position:absolute;top:0;right:0}.reception-image-wrap{width:100%;max-width:1400px;margin:0 auto;line-height:0;position:relative}.reception-image-wrap:before{content:"";background:linear-gradient(to bottom, var(--bg), transparent);pointer-events:none;z-index:1;width:100%;height:60px;position:absolute;top:0;left:0}.reception-image-wrap:after{content:"";background:linear-gradient(to bottom, transparent 0%, transparent 45%, var(--bg) 100%);pointer-events:none;z-index:1;width:100%;height:200px;position:absolute;bottom:0;left:0}.reception-img{object-fit:cover;object-position:center 50%;filter:saturate(.45);width:100%;height:45vh;display:block}.reception-content{padding:20px 24px 60px}.reception-label{text-transform:uppercase;letter-spacing:6px;color:var(--text);margin-bottom:10px;font-size:17px;font-weight:500}.reception-divider{justify-content:center;align-items:center;gap:14px;max-width:240px;margin:0 auto 18px;display:flex}.reception-divider .divider-line{background:var(--text);opacity:.25;width:60px;height:1px;display:block}.reception-divider .divider-icon{color:var(--text);opacity:.5;font-size:15px}.reception-name{color:var(--text);letter-spacing:0;margin-bottom:10px;font-family:Playfair Display,serif;font-size:clamp(42px,8vw,56px);font-style:italic;font-weight:500}.reception-detail{color:var(--text);letter-spacing:1px;opacity:.85;margin-bottom:4px;font-size:20px;font-weight:500}.reception-location{color:var(--text);opacity:.7;max-width:380px;margin-bottom:28px;margin-left:auto;margin-right:auto;font-size:18px;font-style:italic;line-height:1.6}.reception-section .btn-maps{border:1.5px solid var(--accent);color:var(--accent);letter-spacing:1px;text-transform:uppercase;border-radius:100px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:500;transition:background .3s,color .3s,border-color .3s;display:inline-flex}.reception-section .btn-maps:hover{background:var(--accent);color:#fff}.reception-section .btn-maps svg{flex-shrink:0}.section-title{color:var(--text);margin-bottom:0;font-family:Playfair Display,serif;font-size:40px;font-weight:500}.section-divider{justify-content:center;align-items:center;gap:14px;max-width:260px;margin:10px auto 28px;display:flex}.section-divider .divider-line{background:var(--accent-light);flex:1;height:1px;display:block}.section-divider .divider-icon{color:var(--accent);flex-shrink:0;font-size:14px}.rsvp-section{text-align:center;padding:40px 0 60px}.rsvp-intro{color:var(--text-light);max-width:420px;margin-bottom:28px;margin-left:auto;margin-right:auto;font-size:18px;font-style:italic}.rsvp-form{flex-direction:column;gap:14px;max-width:420px;margin:0 auto;display:flex}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{border:1px solid var(--accent-light);width:100%;color:var(--text);background:#fff9;border-radius:8px;outline:none;padding:14px 18px;font-size:18px;transition:border-color .3s,background .3s}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{border-color:var(--accent);background:#ffffffe6}.rsvp-form input::placeholder,.rsvp-form textarea::placeholder{color:var(--text-muted);opacity:.7}.rsvp-form textarea{resize:vertical;min-height:80px}.rsvp-form select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23b5a090' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;padding-right:40px}.rsvp-form button[type=submit]{background:var(--accent);color:#fff;text-transform:uppercase;letter-spacing:3px;border:none;border-radius:8px;width:100%;margin-top:4px;padding:16px;font-size:19px;font-weight:600;transition:background .3s,transform .2s}.rsvp-form button[type=submit]:hover{background:var(--accent-dark);transform:translateY(-1px)}.rsvp-form button[type=submit]:active{transform:translateY(0)}.rsvp-form button[type=submit]:disabled{opacity:.6;cursor:not-allowed;transform:none}.rsvp-thanks{padding:40px 0;display:none}.rsvp-thanks.show{display:block}.rsvp-thanks p{color:var(--accent);font-family:Playfair Display,serif;font-size:30px;font-style:italic;font-weight:400}.weather-section{text-align:center;padding:40px 0 50px}.weather-intro{color:var(--text-light);margin-bottom:32px;font-size:18px;font-style:italic}.weather-grid{flex-wrap:wrap;justify-content:center;gap:32px;max-width:500px;margin:0 auto;display:flex}.weather-item{flex-direction:column;align-items:center;gap:6px;min-width:80px;display:flex}.weather-icon{opacity:.7;width:36px;height:36px}.weather-value{color:var(--accent);font-family:Playfair Display,serif;font-size:34px;font-weight:300;line-height:1}.weather-label{text-transform:uppercase;letter-spacing:2px;color:var(--text-muted);font-size:14px}.weather-note{color:var(--text-light);margin-top:20px;font-size:17px;font-style:italic}.footer{text-align:center;padding:50px 0 30px;position:relative;overflow:hidden}.site-footer-bg{pointer-events:none;z-index:0;justify-content:flex-start;align-items:flex-end;height:300px;display:flex;position:absolute;bottom:0;left:0;right:0}.site-footer-animation{opacity:.65;object-fit:contain;object-position:bottom center;width:auto;height:100%;transform:translate(80px)scaleX(-1)}.footer-divider{color:var(--accent);letter-spacing:8px;z-index:1;margin-bottom:20px;font-size:16px;position:relative}.footer-text{color:var(--text);z-index:1;margin-bottom:4px;font-size:19px;position:relative}.footer-names{color:var(--accent-dark);z-index:1;margin-bottom:10px;font-family:Playfair Display,serif;font-size:40px;font-style:italic;font-weight:400;line-height:1.2;position:relative}.footer-thanks{color:var(--text);z-index:1;max-width:360px;margin:0 auto;font-size:19px;font-style:italic;line-height:1.6;position:relative}.footer-made-with{text-align:center;color:var(--text-light);letter-spacing:2px;z-index:1;padding:16px 0 0;font-size:15px;position:relative}.confetti-container{pointer-events:none;z-index:1001;position:fixed;inset:0;overflow:hidden}.confetti-particle{opacity:0;width:8px;height:8px;animation:ease-out forwards confetti-burst;position:absolute}.confetti-fall{opacity:0;pointer-events:none;animation:linear forwards confetti-fall;position:absolute}.confetti-mouse{opacity:0;pointer-events:none;border-radius:50%;animation:ease-out forwards confetti-mouse-fall;position:absolute}@keyframes confetti-mouse-fall{0%{opacity:.8;transform:translate(0)rotate(0)scale(1)}20%{opacity:1;transform:translate(calc(var(--swing) * .3), 8px) rotate(calc(var(--rotation) * .3)) scale(1)}to{opacity:0;transform:translate(var(--swing), 60px) rotate(var(--rotation)) scale(.3)}}@keyframes confetti-burst{0%{opacity:1;transform:translate(0)rotate(0)scale(1)}to{opacity:0;transform:translate(var(--dx), var(--dy)) rotate(calc(var(--rotation,720) * 1deg)) scale(.2)}}@keyframes confetti-fall{0%{opacity:1;transform:translate(0)rotate(0)}80%{opacity:1}to{opacity:0;transform:translate(var(--swing,40px), calc(100vh + 20px)) rotate(calc(var(--rotation,360) * 1deg))}}.toggle-btn{z-index:100;border:1px solid var(--accent-light);width:36px;height:36px;color:var(--accent-dark);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:.6;background:#f5f0ebbf;border-radius:50%;justify-content:center;align-items:center;font-size:14px;transition:transform .2s,background .3s,border-color .3s;display:flex;position:fixed;bottom:24px;right:78px}.toggle-btn:hover{opacity:1;transform:scale(1.1)}.toggle-btn.active{border-color:var(--accent);opacity:1;background:#c9a96e33}#particlesCanvas{pointer-events:none;z-index:55;position:fixed;inset:0}.reveal{opacity:0;will-change:opacity, transform;transition:opacity .9s cubic-bezier(.22,.61,.36,1),transform .9s cubic-bezier(.22,.61,.36,1);transform:translateY(40px)scale(.97)}.reveal.revealed{opacity:1;transform:translateY(0)scale(1)}.stagger-children>.reveal{transition-delay:var(--reveal-delay,0s)}.hero-section.reveal{transition:opacity 1.2s cubic-bezier(.22,.61,.36,1),transform 1.2s cubic-bezier(.34,1.56,.64,1);transform:translateY(20px)scale(.95)}.hero-section.reveal.revealed{transform:translateY(0)scale(1)}.ceremony-section.reveal,.reception-section.reveal{transition:opacity 1s cubic-bezier(.22,.61,.36,1),transform 1s cubic-bezier(.22,.61,.36,1);transform:translateY(50px)}.rsvp-section.reveal{transition:opacity 1s,transform 1s cubic-bezier(.22,.61,.36,1);transform:translateY(30px)}.footer.reveal{transition:opacity 1.2s,transform 1.2s cubic-bezier(.22,.61,.36,1);transform:translateY(20px)}@media (width<=480px){.env-invite-text{font-size:17px}.env-names-preview{letter-spacing:4px;font-size:26px}.env-date-preview{font-size:14px}.envelope-seal .seal-img{width:70px;height:70px}.invitation-inner{padding:0 16px}.hero-section{padding:15px 0 40px}.countdown-grid{gap:20px}.countdown-item{min-width:56px}.countdown-number{font-size:40px}.ceremony-section{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.ceremony-img{object-position:center 25%;height:35vh}.ceremony-content{padding:16px 16px 40px}.reception-section{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.reception-img{object-position:center 35%;height:35vh}.reception-content{padding:16px 16px 40px}.rsvp-section,.weather-section{padding:30px 0 40px}.weather-grid{gap:20px}.weather-value{font-size:28px}}@media (width>=768px){.hero-section{padding:30px 0 70px}}
