/* Responsive form flow supersedes the old absolute-positioned preview form. */
.rsvp .rsvp-card {
  isolation:isolate;width:100%;max-width:576px;height:auto;min-height:0;margin:auto;
  padding:40px 24px;border:3px solid #e3b44c;border-radius:32px;outline:none;
  background:radial-gradient(ellipse at 50% 0%,#a3172f 0%,#6d0a1d 50%,#3a0410 100%);
  color:#f6d27a;box-shadow:0 30px 60px -20px #5a0a1499;
}
.rsvp .rsvp-card::before {inset:12px;border:1px solid #f6d27ab3;border-radius:24px;box-shadow:none;z-index:-1;}
.rsvp .rsvp-card::after {inset:18px;border:1px dashed #f6d27a59;border-radius:21px;background:none;z-index:-1;}
.response-glow {position:absolute;inset:0;overflow:hidden;border-radius:29px;pointer-events:none;z-index:-1;background:radial-gradient(circle,#f6d27a1f 1.2px,transparent 1.6px) 0 0/22px 22px;}
.response-glow::before {content:'';position:absolute;width:120%;height:320px;left:-10%;top:-48px;background:radial-gradient(ellipse,rgba(255,200,110,.35),transparent 65%);animation:response-glow 5s ease-in-out infinite paused;}
.response-visible .response-glow::before {animation-play-state:running;}
.response-gem {position:absolute;width:16px;height:16px;border:1px solid #f6d27a;rotate:45deg;background:radial-gradient(circle at 30% 30%,#ffc4d4,#b62046 55%,#590a1d);box-shadow:0 0 12px #f6d27a66;animation:response-gem 2.4s ease-in-out infinite paused;pointer-events:none;}
.response-visible>.response-gem {animation-play-state:running;}
.gem-0{left:8px;top:8px}.gem-1{right:8px;top:8px}.gem-2{right:8px;bottom:8px}.gem-3{left:8px;bottom:8px}
.rsvp .rsvp-card .rsvp-seal {position:relative;display:grid;place-items:center;width:96px;height:96px;line-height:1;margin:0 auto;border:0;outline:none;background:none;box-shadow:none;}
.rsvp .rsvp-seal::before {content:'';position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(#fff1b8 0deg 7.5deg,#b98321 7.5deg 15deg);mask:radial-gradient(circle,transparent 60%,black 62%);animation:seal-orbit 30s linear infinite paused;}
.rsvp .rsvp-seal::after {content:'';position:absolute;inset:13%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff1b8,#e3b44c 40%,#9c6a17 75%,#6e4a0e);box-shadow:inset 0 2px 5px #fff1b8aa,inset 0 -4px 10px #6e4a0e;}
.response-visible .rsvp-seal::before {animation-play-state:running;}
.seal-monogram {position:relative;z-index:1;font:400 36px/1 'Great Vibes',cursive;color:#6d0a1d;}
.rsvp .rsvp-card>h3.script {height:auto;margin:16px 0 0;font:400 clamp(40px,11vw,48px)/1.25 'Great Vibes',cursive;color:#e3b44c;text-align:center;}
.rsvp .rsvp-card .rsvp-names {position:static;margin:4px 0 0;font:400 12px/20px 'Cinzel Decorative',serif;letter-spacing:.3em;text-align:center;color:#f6d27a;overflow-wrap:anywhere;}
.rsvp .rsvp-names::after {content:none;}
.response-ornament {display:flex;align-items:center;justify-content:center;gap:16px;margin:16px 0 32px;color:#e3b44c;}
.response-ornament i {width:64px;height:1px;background:#e3b44c;}
.response-ornament b {font:20px/28px Georgia,serif;}
.rsvp #rsvp-form {display:flex;flex-direction:column;gap:24px;position:relative;height:auto;min-height:0;}
.rsvp #rsvp-form>* {position:relative;inset:auto;width:100%;height:auto;margin:0;min-width:0;}
.rsvp #rsvp-form label,.rsvp #rsvp-form legend {position:static;display:block;width:auto;margin:0 0 8px;padding:0;font:400 10.4px/16px 'Cinzel Decorative',serif;letter-spacing:.3em;color:#f6d27a;}
.rsvp #rsvp-form fieldset {border:0;padding:0;min-width:0;}
.rsvp #rsvp-form input:not([type=radio]),.rsvp #rsvp-form textarea {display:block;position:static;box-sizing:border-box;width:100%;height:auto;min-height:54px;margin:0;border:1px solid #f6d27a66;border-radius:12px;padding:12px 16px;background:#ffffff1a;color:#fff1cf;font:400 18px/28px 'Cormorant Garamond',serif;}
.rsvp #rsvp-form input[hidden] {display:none;}
.rsvp #rsvp-form input::placeholder,.rsvp #rsvp-form textarea::placeholder {font:inherit;color:#efced099;}
.rsvp #rsvp-form input:focus,.rsvp #rsvp-form textarea:focus {border-color:#f6d27a;outline:3px solid #f6d27a33;background:#ffffff26;}
.name-input {position:relative;}
.name-input>.response-icon {position:absolute;left:16px;top:17px;width:20px;height:20px;}
.rsvp #rsvp-form #guestName {padding-left:48px;}
.response-icon {display:inline-block;width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.rsvp #rsvp-form .attendance-options {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.rsvp #rsvp-form .attendance-options label {position:relative;margin:0;letter-spacing:0;cursor:pointer;}
.rsvp #rsvp-form .attendance-options input {position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;}
.rsvp #rsvp-form .attendance-options label>span {display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;box-sizing:border-box;height:100%;min-height:122px;padding:24px 8px 16px;opacity:1;border-radius:48px 48px 12px 12px;border:1px solid #f6d27a66;background:#ffffff0d;color:#ffe8c3;}
.rsvp #rsvp-form .attendance-options span::before,.rsvp #rsvp-form .attendance-options span::after {content:none;}
.rsvp #rsvp-form .attendance-options strong {font:700 12px/16px 'Cinzel Decorative',serif;text-transform:uppercase;}
.rsvp #rsvp-form .attendance-options em {font:italic 400 14px/20px 'Cormorant Garamond',serif;}
.rsvp #rsvp-form .attendance-options .response-icon {width:28px;height:28px;margin-bottom:4px;color:#f6d27a;}
.rsvp #rsvp-form .attendance-options input:checked+span {background:linear-gradient(160deg,#fff1b8,#e3b44c 40%,#b98321);color:#5c1020;border-color:#fff1b8;box-shadow:0 0 20px #e3b44c44;}
.rsvp #rsvp-form .attendance-options input:checked+span .icon-heart {fill:#a3172f;stroke:#a3172f;animation:accept-heart 1.1s ease-in-out infinite paused;}
.response-visible #rsvp-form .attendance-options input:checked+span .icon-heart {animation-play-state:running;}
.rsvp #rsvp-form .attendance-options input:focus-visible+span {outline:3px solid #fff1b8;outline-offset:3px;}
.rsvp #rsvp-form .guest-stepper {display:flex;align-items:center;gap:8px;padding:10px 12px;margin:0;min-height:66px;border:1px solid #f6d27a66;border-radius:12px;background:#ffffff1a;}
.rsvp #rsvp-form .guest-stepper>span:first-of-type {flex:1;font:400 16px/20px 'Cormorant Garamond',serif;color:#ffe8c3;}
.rsvp #rsvp-form .guest-stepper button {position:relative;flex:0 0 44px;width:44px;height:44px;margin:0;padding:0;border:2px solid #e3b44c;border-radius:50%;background:#811329;color:#f6d27a;font:24px/40px Georgia,serif;box-shadow:0 4px 10px #28030966;}
.rsvp #rsvp-form .guest-stepper button:disabled {opacity:.4;cursor:not-allowed;}
.rsvp #rsvp-form #guest-count {flex:none;min-width:32px;text-align:center;font:700 30px/36px 'Cormorant Garamond',serif;}
.rsvp #rsvp-form textarea {min-height:110px;resize:vertical;}
.rsvp #rsvp-form>.gold-button {display:flex;align-items:center;justify-content:center;gap:10px;min-height:60px;padding:16px 12px;margin:4px 0 0;border:2px solid #fff1b899;border-radius:999px;background:linear-gradient(135deg,#fff1b8,#e3b44c 40%,#b98321 75%,#e3b44c);color:#5c1020;font:700 16px/24px 'Cinzel Decorative',serif;letter-spacing:.25em;text-transform:uppercase;overflow:hidden;}
.rsvp #rsvp-form>.gold-button::after,.contacts .contact-actions :is(button,a):first-child::after {content:'';position:absolute;inset:-50% auto -50% -40%;width:25%;transform:translateX(-200%) rotate(20deg);background:linear-gradient(90deg,transparent,#ffffff66,transparent);animation:response-sheen 5.2s ease-in-out infinite paused;pointer-events:none;}
.response-visible #rsvp-form>.gold-button::after,.contacts .contact-actions.response-visible button:first-child::after {animation-play-state:running;}
.rsvp #rsvp-form .preview-note {font:11px/16px Inter,Arial,sans-serif;color:#eccab7;}
.rsvp #rsvp-feedback {margin-top:16px;color:#ffe8c3;}
.rsvp button:focus-visible,.contacts button:focus-visible {outline:3px solid #fff1b8;outline-offset:3px;}
.contacts .contact-grid {display:flex;flex-wrap:wrap;justify-content:center;max-width:768px;gap:24px;margin:auto;}
.contacts .contact-grid article {width:100%;max-width:352px;min-height:0;padding:16px 8px;margin:0;text-align:center;}
.contacts .contact-grid h3 {font:700 24px/30px 'Cinzel Decorative',serif;color:#9e141e;margin:0;overflow-wrap:anywhere;}
.contacts .contact-grid article p.script {font:400 24px/33px 'Great Vibes',cursive;color:#a46b18;margin:4px 0 0;}
.contacts .contact-grid article .contact-number {font:400 14px/20px 'Cinzel Decorative',serif;letter-spacing:.18em;margin:12px 0 0;color:#a46b18;}
.contacts .contact-actions {display:flex;justify-content:center;gap:12px;margin-top:20px;}
.contacts .contact-actions :is(button,a) {position:relative;display:flex;justify-content:center;align-items:center;gap:8px;width:auto;min-width:0;height:auto;min-height:44px;padding:10px 20px;border:1px solid #9e141e99;border-radius:999px;background:transparent;color:#9e141e;font:700 12px/16px 'Cinzel Decorative',serif;letter-spacing:.18em;text-transform:uppercase;opacity:1;overflow:hidden;}
.contacts .contact-actions :is(button,a):disabled {cursor:default;}
.contacts .contact-actions :is(button,a):first-child {background:linear-gradient(135deg,#fff1b8,#e3b44c 65%,#b98321);border-color:#f6d27a;color:#5c1020;box-shadow:0 6px 14px #b9832144;}
.contacts .contact-actions .response-icon {width:16px;height:16px;}
.scratch-card .scratch-area {overflow:visible;}
.scratch-card .revealed-date {background:rgba(255,255,255,.92);padding:clamp(12px,6cqw,24px);box-shadow:0 10px 15px -3px #0002,0 4px 6px -4px #0002;}
.scratch-card .revealed-date>.script {font:600 clamp(20px,6.5cqw,24px)/1.35 'Playfair Display',Georgia,serif;}
.scratch-card .revealed-date>strong {font:400 clamp(25px,8cqw,30px)/1.2 'Cormorant Garamond',serif;}
.scratch-card .revealed-date>span:not(.script) {font:400 14px/20px Inter,Arial,sans-serif;letter-spacing:0;}
.scratch-card .revealed-date>span:nth-last-child(2) {font-size:12px;line-height:16px;margin-top:16px;}
canvas.scratch-confetti {position:fixed;inset:0;width:100%;height:100%;z-index:1000;pointer-events:none;}
.gallery-photo-window {position:absolute;left:13%;top:17.1429%;width:74%;height:72.8571%;overflow:hidden;mask:url('assets/gallery-window-mask.svg') center/100% 100% no-repeat;-webkit-mask:url('assets/gallery-window-mask.svg') center/100% 100% no-repeat;}
.gallery-frame .gallery-photo-window .gallery-photo {position:absolute;inset:0;width:100%;height:100%;mask:none;-webkit-mask:none;object-fit:cover;}
@keyframes seal-orbit {to{rotate:360deg}}
@keyframes response-glow {0%,100%{opacity:.6}50%{opacity:1}}
@keyframes response-gem {50%{filter:brightness(1.5);box-shadow:0 0 18px #f6d27a99}}
@keyframes accept-heart {50%{scale:1.25}}
@keyframes response-sheen {0%{transform:translateX(-200%) rotate(20deg)}43%,100%{transform:translateX(700%) rotate(20deg)}}
@media(min-width:640px){.contacts .contact-grid article{width:calc(50% - 12px)}.rsvp #rsvp-form .attendance-options strong{font-size:14px;line-height:20px}}
@media(min-width:768px){.rsvp .rsvp-card{padding:40px 48px 48px}.rsvp .rsvp-card .rsvp-seal{width:112px;height:112px}.seal-monogram{font-size:48px}.rsvp .rsvp-card::before{inset:16px}.rsvp .rsvp-card::after{inset:22px}}
@media(min-width:1024px){.rsvp .rsvp-card{max-width:672px}}
@media(max-width:359px){.rsvp .rsvp-card{padding:32px 20px}.rsvp #rsvp-form .guest-stepper{gap:4px;padding:10px 8px}.guest-stepper>.response-icon{display:none}.rsvp #rsvp-form .attendance-options strong{font-size:10px;line-height:15px}.contacts .contact-actions :is(button,a){padding:10px 15px;letter-spacing:.12em}}
@media(prefers-reduced-motion:reduce){.response-glow::before,.response-gem,.rsvp .rsvp-seal::before,.rsvp #rsvp-form .attendance-options input:checked+span .icon-heart,.rsvp #rsvp-form>.gold-button::after,.contacts .contact-actions :is(button,a):first-child::after{animation:none}.rsvp #rsvp-form>.gold-button::after,.contacts .contact-actions :is(button,a):first-child::after{display:none}}
.finishes-paused .response-glow::before,.finishes-paused .response-gem,.finishes-paused .rsvp .rsvp-seal::before,.finishes-paused .rsvp #rsvp-form .attendance-options input:checked+span .icon-heart,.finishes-paused .rsvp #rsvp-form>.gold-button::after,.finishes-paused .contacts .contact-actions :is(button,a):first-child::after {animation-play-state:paused;}
