*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f5e7e3;--card-bg:#f2ddd8;--maroon:#5c1626;--maroon-deep:#4a1420;--rose:#c98a91;--rose-soft:#e6c6c4;--text-soft:#8a5b5f;--gold:#b98a5e;font-family:Cormorant Garamond,Cairo,serif}html,body{background:var(--bg);color:var(--maroon-deep)}button{font-family:inherit}a{color:inherit}.page{justify-content:center;min-height:100vh;padding:24px 12px;display:flex}.mute-toggle{z-index:40;background:var(--maroon);color:#f6e9e6;cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;display:flex;position:fixed;top:16px;right:16px;box-shadow:0 6px 16px #4a14204d}.card{background:var(--card-bg);border-radius:18px;width:100%;max-width:430px;overflow:hidden;box-shadow:0 20px 60px #4a142026}section{text-align:center;padding:24px}.art-full{width:100%;height:auto;display:block}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(24px)}.reveal-in{opacity:1;transform:translateY(0)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.float{animation:4s ease-in-out infinite float}@keyframes pulse{0%{opacity:.4;transform:scale(1.25)}to{opacity:1;transform:scale(1)}}.pulse{animation:.4s ease-out pulse;display:inline-block}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transition:none;transform:none}.float,.pulse{animation:none}}.monogram-section{padding:32px 24px 8px}.monogram-img{width:260px;margin:0 auto;display:block}.section-label{text-transform:uppercase;letter-spacing:4px;color:var(--maroon);border-bottom:1px solid var(--rose);margin-top:8px;padding-bottom:8px;font-size:14px;display:inline-block}.concert-section{padding:0 20px 24px;position:relative}.concert-img{border-radius:10px}.gramophone-img{filter:drop-shadow(0 6px 10px #0003);width:88px;position:absolute;bottom:-6px;right:4px}.intro-section{padding-top:32px;position:relative}.floral-corner-left{width:120px;height:auto;position:absolute;top:-6px;left:-4px}.floral-side-right{z-index:0;width:150px;height:auto;position:absolute;top:-10px;right:-14px}.intro-text{text-transform:uppercase;letter-spacing:1.5px;color:var(--maroon-deep);font-size:16px;font-weight:600;line-height:2}.divider{width:140px;height:16px;color:var(--rose);margin:16px auto 0}.date-hero{flex-direction:column;align-items:center;padding:8px 24px 16px;display:flex;position:relative}.date-day{color:var(--maroon-deep);font-family:Cormorant Garamond,serif;font-size:90px;font-weight:600;line-height:.9}.date-month{letter-spacing:8px;color:var(--maroon-deep);font-size:32px}.names-section{padding-top:8px}.names{letter-spacing:3px;color:var(--maroon);font-size:26px;font-weight:700}.amp{color:var(--rose);margin:0 4px;font-family:Great Vibes,cursive;font-size:26px}.details-list{color:var(--text-soft);flex-direction:column;gap:10px;margin-top:20px;font-size:17px;font-weight:600;list-style:none;display:flex}.detail-icon{margin-right:4px}.section-title{text-transform:uppercase;letter-spacing:3px;color:var(--maroon);margin-bottom:6px;font-size:18px;font-weight:700}.section-sub{color:var(--text-soft);margin-bottom:18px;font-size:15px;font-weight:500}.countdown-section{padding-top:20px;position:relative}.countdown-grid{justify-content:center;gap:18px;margin-top:12px;display:flex}.countdown-cell{flex-direction:column;align-items:center;min-width:44px;display:flex}.countdown-num{color:var(--maroon-deep);font-size:36px;font-weight:700}.countdown-unit{text-transform:uppercase;letter-spacing:1px;color:var(--text-soft);margin-top:4px;font-size:12px;font-weight:600}.dress-section{padding:24px 20px}.swatch-row{flex-wrap:wrap;justify-content:center;gap:20px;margin-top:12px;display:flex}.swatch-row.single{margin-top:20px}.swatch{flex-direction:column;align-items:center;gap:10px;width:88px;display:flex}.swatch-dot{border:3px solid #ffffffb3;border-radius:50%;width:48px;height:48px;transition:transform .25s;box-shadow:0 3px 8px #0003}.swatch:hover .swatch-dot{transform:scale(1.12)}.swatch-label{color:var(--text-soft);text-align:center;font-size:14px;font-weight:700}.swatch-label em{opacity:.8;font-style:italic}.location-section{padding:24px 20px}.map-pin{width:90px;margin:8px auto 12px}.address{color:var(--text-soft);max-width:280px;margin:0 auto;font-size:15px;font-weight:500;line-height:1.6}.view-location{color:var(--maroon);border-bottom:1px solid var(--maroon);align-items:center;gap:6px;margin-top:14px;padding-bottom:2px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex}.view-location .arrow{transition:transform .25s;display:inline-block}.view-location:hover .arrow{transform:translate(4px)}.rsvp-btn{background:var(--maroon);color:#f6e9e6;letter-spacing:2px;text-transform:uppercase;cursor:pointer;border:none;border-radius:4px;margin-top:8px;padding:14px 32px;font-family:inherit;font-size:13px;font-weight:600;text-decoration:none;transition:transform .25s,box-shadow .25s;display:inline-block}.rsvp-btn:hover{transform:translateY(-3px);box-shadow:0 10px 20px #4a14204d}.thankyou-text{color:var(--text-soft);margin-top:16px;font-size:16px;font-weight:500;line-height:1.8}@media (width<=380px){section{padding:20px 16px}.date-day{font-size:72px}.countdown-grid{gap:10px}}.envelope-overlay{background:var(--bg);z-index:100;justify-content:center;align-items:center;transition:opacity .55s,transform .55s;display:flex;position:fixed;inset:0}.envelope-overlay.leaving{opacity:0;pointer-events:none;transform:scale(1.06)}.envelope-trigger{cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:20px;padding:0;font-family:inherit;display:flex}.invite-tag{color:var(--maroon);font-family:Great Vibes,cursive;font-size:32px}.envelope{perspective:700px;width:240px;height:168px;position:relative}.envelope-body{z-index:1;background:var(--rose);border-radius:6px;position:absolute;inset:0;box-shadow:0 18px 40px #4a142040}.envelope-body:before,.envelope-body:after{content:"";border-top:1px solid #7a1f3066;width:55%;height:68%;position:absolute;bottom:0}.envelope-body:before{transform-origin:0 100%;left:0;transform:rotate(28deg)translate(-2px)}.envelope-body:after{transform-origin:100% 100%;right:0;transform:rotate(-28deg)translate(2px)}.envelope-letter{z-index:2;background:#f8ecea;border-radius:4px;justify-content:center;align-items:center;height:82%;transition:transform .6s .25s;display:flex;position:absolute;top:10%;left:8%;right:8%;transform:translateY(0);box-shadow:0 4px 10px #4a142026}.envelope-letter-mono{color:var(--maroon);opacity:0;font-family:Great Vibes,cursive;font-size:34px;transition:opacity .4s .6s}.envelope.open .envelope-letter-mono{opacity:1}.envelope-flap{z-index:3;background:var(--maroon);clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;width:100%;height:62%;transition:transform .7s;position:absolute;top:0;left:0;transform:rotateX(0)}.envelope-heart{z-index:4;color:#f6e9e6;font-size:28px;transition:transform .4s,opacity .4s;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.envelope.open .envelope-flap{transform:rotateX(-160deg)}.envelope.open .envelope-letter{transform:translateY(-34px)}.envelope.open .envelope-heart{opacity:0;transform:translate(-50%,-80px)scale(.6)}.tap-hint{letter-spacing:3px;text-transform:uppercase;color:var(--text-soft);font-size:12px;animation:1.8s ease-in-out infinite hintPulse}@keyframes hintPulse{0%,to{opacity:.5}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.envelope-overlay,.envelope-flap,.envelope-letter,.envelope-letter-mono,.envelope-heart{transition:none}.tap-hint{animation:none}}.rsvp-overlay{z-index:60;background:#4a142073;justify-content:center;align-items:center;padding:20px;animation:.25s rsvpFadeIn;display:flex;position:fixed;inset:0}@keyframes rsvpFadeIn{0%{opacity:0}to{opacity:1}}.rsvp-modal{text-align:center;background:linear-gradient(160deg,#fbeeeb,#f6dfda);border-radius:20px;width:100%;max-width:420px;padding:32px 24px;animation:.3s rsvpPop;position:relative;box-shadow:0 30px 70px #4a142059}@keyframes rsvpPop{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.rsvp-close{color:var(--maroon);cursor:pointer;background:0 0;border:none;font-size:26px;line-height:1;position:absolute;top:12px;left:14px}.rsvp-title{background:linear-gradient(90deg,#b98a5e,#d9b57e);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:20px;font-family:Great Vibes,cursive;font-size:28px}.rsvp-input,.rsvp-textarea{border:1px solid var(--rose-soft);width:100%;color:var(--maroon-deep);background:#fffaf9;border-radius:10px;margin-bottom:16px;padding:14px 16px;font-family:Cairo,sans-serif;font-size:15px}.rsvp-textarea{resize:vertical;min-height:110px}.rsvp-input:focus,.rsvp-textarea:focus{border-color:var(--maroon);outline:none}.rsvp-radios{color:var(--maroon-deep);justify-content:center;gap:24px;margin-bottom:16px;font-family:Cairo,sans-serif;font-size:14px;display:flex}.rsvp-radio{cursor:pointer;align-items:center;gap:8px;display:flex}.rsvp-radio input{accent-color:var(--maroon);width:16px;height:16px}.rsvp-submit{color:#fff;cursor:pointer;background:linear-gradient(90deg,#b98a5e,#d9b57e);border:none;border-radius:999px;padding:14px 40px;font-family:Cairo,sans-serif;font-size:15px;font-weight:600;transition:transform .2s,box-shadow .2s}.rsvp-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 20px #b98a5e66}.rsvp-submit:disabled{opacity:.6;cursor:default}.rsvp-error{color:#b02a37;margin:-8px 0 12px;font-size:13px}.rsvp-thanks{padding:20px 0}.rsvp-thanks-text{color:var(--text-soft);margin-top:8px;font-family:Cairo,sans-serif}.dash-page{max-width:760px;min-height:100vh;margin:0 auto;padding:32px 20px;font-family:Cormorant Garamond,serif}.dash-login{text-align:center;flex-direction:column;gap:12px;max-width:280px;margin:100px auto;display:flex}.dash-login input{border:1px solid var(--rose-soft);border-radius:6px;padding:10px 12px;font-size:15px}.dash-login button,.logout{background:var(--maroon);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 18px;font-size:14px}.dash-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.dash-error{color:#b02a37;margin-top:8px}.dash-cards{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin-bottom:32px;display:grid}.dash-card{background:var(--card-bg);border-radius:10px;flex-direction:column;align-items:center;gap:6px;padding:20px;display:flex}.dash-card.total{background:var(--maroon);color:#fff}.dash-num{font-size:32px;font-weight:600}.dash-label{opacity:.8;font-size:13px}.dash-table{border-collapse:collapse;width:100%;font-size:14px}.dash-table th,.dash-table td{text-align:left;border-bottom:1px solid var(--rose-soft);padding:8px 10px}
