*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--cream:#f7f2ee;--ivory:#faf6f2;--blush:#e8c4c4;--rose:#c9899a;--dusty-rose:#b07080;--deep-mauve:#6b4555;--sage:#a8b5a0;--warm-grey:#8c8078;--charcoal:#3a3530;--focus-ring:#b0708080}html{scroll-behavior:smooth}body{background:var(--cream);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;font-family:EB Garamond,Georgia,serif;display:flex}.skip-link{background:var(--deep-mauve);color:var(--ivory);z-index:1000;border-radius:0 0 6px 6px;padding:8px 16px;font-size:14px;text-decoration:none;transition:top .2s;position:absolute;top:-100%;left:50%;transform:translate(-50%)}.skip-link:focus{top:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px;border-radius:2px}.petal{pointer-events:none;opacity:0;animation:linear infinite petalFall;position:fixed}.petal svg{display:block}@keyframes petalFall{0%{opacity:0;transform:translateY(-60px)rotate(0)}5%{opacity:.6}90%{opacity:.4}to{opacity:0;transform:translateY(110vh)rotate(360deg)}}.card{background:var(--ivory);opacity:0;width:100%;max-width:560px;animation:1.4s cubic-bezier(.22,1,.36,1) .3s forwards cardReveal;position:relative;overflow:hidden;transform:translateY(24px);box-shadow:0 12px 60px #5a323c1f,0 2px 8px #5a323c0f}@keyframes cardReveal{to{opacity:1;transform:translateY(0)}}.floral-top{background:linear-gradient(160deg,#d4a0ae 0%,#e8c4c4 40%,#c9d4b8 100%);justify-content:center;align-items:center;width:100%;height:120px;display:flex;position:relative;overflow:hidden}.floral-top:before{content:"";background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='120'%3E%3Cellipse cx='30' cy='60' rx='28' ry='18' fill='%23e8d0d8' opacity='.4' transform='rotate(-20 30 60)'/%3E%3Cellipse cx='80' cy='35' rx='22' ry='14' fill='%23f0dce2' opacity='.5' transform='rotate(15 80 35)'/%3E%3Cellipse cx='140' cy='70' rx='30' ry='16' fill='%23dde8d0' opacity='.4' transform='rotate(-10 140 70)'/%3E%3Cellipse cx='180' cy='30' rx='18' ry='12' fill='%23e8d0d8' opacity='.3' transform='rotate(25 180 30)'/%3E%3C/svg%3E") 50% repeat-x;position:absolute;inset:0}.card-body{text-align:center;padding:36px 48px 40px}.in-loving-memory{letter-spacing:.25em;text-transform:uppercase;color:var(--dusty-rose);margin-bottom:20px;font-family:Cormorant Garamond,Georgia,serif;font-size:13px;font-style:italic;font-weight:300}.name{letter-spacing:.08em;color:var(--charcoal);margin-bottom:6px;font-family:Cinzel,Georgia,serif;font-size:26px;font-weight:300;line-height:1.3}.years{color:var(--warm-grey);letter-spacing:.1em;margin-bottom:28px;font-family:Cormorant Garamond,Georgia,serif;font-size:15px;font-style:italic}.ornament{color:var(--blush);margin-bottom:22px;font-size:22px;display:block}.invitation-text{color:var(--warm-grey);margin-bottom:28px;font-size:15px;font-style:italic;line-height:1.85}.section-divider{align-items:center;gap:12px;margin:24px 0;display:flex}.section-divider:before,.section-divider:after{content:"";background:linear-gradient(to right, transparent, var(--blush));flex:1;height:1px}.section-divider:after{background:linear-gradient(to left, transparent, var(--blush))}.section-divider span{color:var(--blush);font-size:18px}.details-block{margin-bottom:10px}.detail-row{text-align:left;border-bottom:1px solid #c8aaaa33;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.detail-row:last-child{border-bottom:none}.detail-icon{text-align:center;min-width:22px;color:var(--rose);margin-top:2px;font-size:16px}.detail-content{flex:1}.detail-label{letter-spacing:.2em;text-transform:uppercase;color:var(--dusty-rose);margin-bottom:2px;font-family:Cormorant Garamond,Georgia,serif;font-size:11px;display:block}.detail-value{color:var(--charcoal);font-size:15px;line-height:1.4}.detail-value a{color:var(--dusty-rose);border-bottom:1px solid #c8aaaa66;text-decoration:none;transition:border-color .3s,color .3s}.detail-value a:hover{border-bottom-color:var(--deep-mauve);color:var(--deep-mauve)}.detail-value a:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px;border-bottom-color:#0000;border-radius:2px}.link-icon{opacity:.6;font-size:12px;transition:opacity .3s}.detail-value a:hover .link-icon{opacity:1}.detail-sub{color:var(--warm-grey);margin-top:1px;font-size:13px;font-style:italic;display:block}.note-block{border-left:2px solid var(--blush);text-align:left;background:linear-gradient(135deg,#e8c4c42e,#a8b5a01f);border-radius:0 4px 4px 0;margin:22px 0;padding:14px 18px}.note-block p{color:var(--warm-grey);font-size:13.5px;line-height:1.7}.note-block strong{color:var(--dusty-rose);font-weight:500}.flower-note{color:var(--warm-grey);align-items:center;gap:8px;margin-top:6px;font-size:13px;display:flex}.flower-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.dot-pink{background:#e8a4b8}.dot-white{background:#e0d6d0;border:1px solid #c0b0a8}.social-notice{border-left:2px solid var(--sage);text-align:left;background:linear-gradient(135deg,#a8b5a026,#a8b5a014);border-radius:0 4px 4px 0;margin:22px 0;padding:14px 18px}.social-notice p{color:var(--warm-grey);font-size:13.5px;line-height:1.7}.social-notice strong{color:var(--charcoal);font-weight:500}.social-notice-sub{opacity:.8;margin-top:8px;font-size:12.5px;font-style:italic}.calendar-buttons{flex-wrap:wrap;justify-content:center;gap:10px;margin:20px 0;display:flex}.cal-btn{letter-spacing:.05em;border:1px solid var(--blush);color:var(--dusty-rose);cursor:pointer;background:0 0;border-radius:4px;align-items:center;gap:6px;padding:10px 18px;font-family:Cormorant Garamond,Georgia,serif;font-size:13.5px;text-decoration:none;transition:all .3s;display:inline-flex}.cal-btn:hover{border-color:var(--dusty-rose);color:var(--deep-mauve);background:#e8c4c426}.cal-btn:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px}.cal-btn:active{transform:scale(.97)}.closing{color:var(--warm-grey);margin-top:24px;font-family:Cormorant Garamond,Georgia,serif;font-size:14px;font-style:italic;line-height:1.8}.quote{color:var(--rose);letter-spacing:.1em;margin-top:16px;font-family:Cormorant Garamond,serif;font-size:13px;font-style:italic}.floral-bottom{opacity:.5;background:linear-gradient(90deg,#e8c4c4,#c9d4b8,#e8c4c4);width:100%;height:14px}.fade-up{opacity:0;animation:.8s forwards fadeUp;transform:translateY(12px)}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.rsvp-section{margin:24px 0}.rsvp-toggle-btn{letter-spacing:.08em;border:1.5px solid var(--blush);color:var(--dusty-rose);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:8px;padding:12px 28px;font-family:Cormorant Garamond,Georgia,serif;font-size:14.5px;transition:all .4s;display:inline-flex}.rsvp-toggle-btn:hover{border-color:var(--dusty-rose);background:#e8c4c42e;transform:translateY(-1px);box-shadow:0 4px 16px #b070801f}.rsvp-toggle-btn:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px}.rsvp-toggle-btn:active{transform:translateY(0);box-shadow:0 2px 8px #b0708014}.rsvp-form-wrapper{opacity:0;visibility:hidden;max-height:0;transition:max-height .5s cubic-bezier(.4,0,.2,1),opacity .4s,visibility 0s .5s;overflow:hidden}.rsvp-form-wrapper.open{opacity:1;visibility:visible;max-height:600px;transition:max-height .5s cubic-bezier(.4,0,.2,1),opacity .4s,visibility}.rsvp-form{padding:20px 0 8px}.floating-field{margin-bottom:16px;position:relative}.floating-field input[type=text]{width:100%;color:var(--charcoal);box-sizing:border-box;background:#e8c4c414;border:1px solid #c8aaaa4d;border-radius:4px;outline:none;padding:14px 16px 6px;font-family:EB Garamond,Georgia,serif;font-size:15px;transition:border-color .3s}.floating-field input[type=text]:focus{border-color:var(--dusty-rose);box-shadow:0 0 0 3px #b0708026}.floating-field label{color:var(--warm-grey);pointer-events:none;font-family:Cormorant Garamond,Georgia,serif;font-size:14px;transition:all .25s;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.floating-field input:focus+label,.floating-field input:not(:placeholder-shown)+label{letter-spacing:.15em;text-transform:uppercase;color:var(--dusty-rose);font-size:10px;top:8px;transform:translateY(0)}.rsvp-checkbox{cursor:pointer;align-items:center;gap:8px;margin-bottom:16px;display:flex}.rsvp-checkbox input[type=checkbox]{accent-color:var(--dusty-rose);cursor:pointer;width:18px;height:18px}.rsvp-checkbox input[type=checkbox]:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px}.rsvp-checkbox span{color:var(--warm-grey);font-family:Cormorant Garamond,Georgia,serif;font-size:14px}.plus-one-wrapper{opacity:0;visibility:hidden;max-height:0;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s,visibility 0s .4s;overflow:hidden}.plus-one-wrapper.visible{opacity:1;visibility:visible;max-height:120px;transition:max-height .4s cubic-bezier(.4,0,.2,1),opacity .3s,visibility}.rsvp-submit-btn{letter-spacing:.08em;border:1.5px solid var(--dusty-rose);background:var(--dusty-rose);color:var(--ivory);cursor:pointer;border-radius:4px;padding:10px 24px;font-family:Cormorant Garamond,Georgia,serif;font-size:13.5px;transition:all .3s}.rsvp-submit-btn:hover:not(:disabled){background:var(--deep-mauve);border-color:var(--deep-mauve)}.rsvp-submit-btn:focus-visible{outline:2px solid var(--deep-mauve);outline-offset:2px}.rsvp-submit-btn:active:not(:disabled){transform:scale(.97)}.rsvp-submit-btn:disabled{opacity:.4;cursor:not-allowed;background:var(--warm-grey);border-color:var(--warm-grey)}.rsvp-thanks{text-align:center;padding:16px 0}.rsvp-thanks p{color:var(--warm-grey);font-family:Cormorant Garamond,Georgia,serif;font-size:15px;font-style:italic;line-height:1.7}.rsvp-thanks .guest-name{color:var(--dusty-rose);font-style:normal;font-weight:500}.rsvp-edit-link{color:var(--warm-grey);cursor:pointer;opacity:.7;background:0 0;border:none;margin-top:8px;font-family:Cormorant Garamond,Georgia,serif;font-size:12px;text-decoration:underline;transition:opacity .3s;display:inline-block}.rsvp-edit-link:hover{opacity:1}.rsvp-edit-link:focus-visible{outline:2px solid var(--dusty-rose);outline-offset:2px;opacity:1}.field-error{color:#c44;margin-top:4px;font-family:Cormorant Garamond,Georgia,serif;font-size:12px;font-style:italic;animation:.3s forwards fadeUp;display:block}.floating-field.has-error input[type=text]{border-color:#c44}.rsvp-form-actions{justify-content:center;align-items:center;gap:12px;display:flex}.rsvp-cancel-btn{letter-spacing:.08em;color:var(--warm-grey);cursor:pointer;background:0 0;border:none;border-radius:4px;min-height:44px;padding:10px 20px;font-family:Cormorant Garamond,Georgia,serif;font-size:13.5px;transition:color .3s}.rsvp-cancel-btn:hover{color:var(--charcoal)}.rsvp-cancel-btn:focus-visible{outline:2px solid var(--warm-grey);outline-offset:2px}.rsvp-fade-in{animation:.6s forwards fadeUp}@media (width<=359px){.card-body{padding:20px 16px 24px}.name{letter-spacing:.04em;font-size:19px}.invitation-text{font-size:14px;line-height:1.75}.invitation-text br,.closing br{display:none}.calendar-buttons{flex-direction:column;align-items:stretch}.cal-btn{justify-content:center;min-height:44px;padding:12px 16px}.floral-top{height:80px}}@media (width<=480px){.card-body{padding:28px 24px 32px}.name{font-size:22px}.invitation-text br,.closing br{display:none}.cal-btn,.rsvp-toggle-btn{min-height:44px}.rsvp-submit-btn{width:100%;min-height:44px}.floral-top{height:100px}}@media (width>=481px) and (width<=768px){.card{max-width:520px}body{padding:32px 24px}}@media (width>=769px){.card{border-radius:8px;max-width:580px}body{padding:48px 20px}}@media print{body{background:#fff;padding:0}.petal,#petals,.skip-link,.calendar-buttons,.rsvp-section,.social-notice{display:none!important}.card{box-shadow:none;opacity:1;max-width:100%;animation:none;transform:none}.fade-up{opacity:1;animation:none;transform:none}.floral-bottom{display:none}.detail-value a{color:var(--charcoal)}.detail-value a:after{content:" (" attr(href) ")";color:var(--warm-grey);font-size:11px}.link-icon{display:none}}@media (prefers-reduced-motion:reduce){.petal{display:none}.fade-up,.card{opacity:1;animation:none;transform:none}.rsvp-toggle-btn,.rsvp-form-wrapper,.plus-one-wrapper,.cal-btn,.rsvp-submit-btn{transition:none}html{scroll-behavior:auto}}
