/* FASE 8 — RSVP, ucapan dan penutup. Semua teks pengunjung dimasukkan sebagai textContent, bukan HTML. */
.rsvp-section{background:var(--ivory);color:var(--mauve);text-align:center;position:relative;padding:85px 16px 100px}
.rsvp-inner{width:100%;max-width:610px;margin:0 auto}.rsvp-floral,.footer-floral{color:var(--mauve);opacity:.28;font-size:38px;display:block;line-height:1}
.rsvp-heading{max-width:540px;margin:14px auto 37px}.rsvp-eyebrow{letter-spacing:.29em;font-size:12px;font-weight:700;margin:0}
.rsvp-title{font:400 clamp(35px,10vw,50px)/1.5 var(--font-greeting);color:var(--plum);margin:7px 0 2px}
.rsvp-rule,.footer-rule{width:84px;height:1px;background:var(--lilac);display:block;margin:0 auto 23px}
.rsvp-intro{font:400 15px/1.85 var(--font-body);margin:0 auto;max-width:510px}
.rsvp-form{text-align:left;background:#fffefb;padding:clamp(20px,5vw,32px);border:1px solid #e2d7e3;border-radius:19px;box-shadow:0 10px 33px rgba(46,2,59,.055)}
.rsvp-form h3{font:700 19px/1.4 var(--font-body);color:var(--plum);text-align:center;margin:0 0 8px}
.rsvp-form-subtitle{font:400 12px/1.7 var(--font-body);color:var(--mauve);text-align:center;margin:0 0 24px}
.rsvp-form label,.rsvp-form legend{display:block;color:var(--plum);font:600 13px/1.4 var(--font-body);margin:17px 0 8px}
.rsvp-form label .optional{font-weight:400;color:#746579}
.rsvp-form input:not([type=radio]),.rsvp-form select,.rsvp-form textarea{width:100%;max-width:100%;font:400 14px/1.5 var(--font-body);border:1px solid #d7c9d7;border-radius:11px;padding:13px 14px;background:white;color:#2e1834;min-height:48px;box-sizing:border-box}
.rsvp-form textarea{resize:vertical;min-height:110px}
.rsvp-form :is(input,textarea,select):focus-visible,.rsvp-form button:focus-visible,.wishes-more:focus-visible{outline:3px solid #9870a0;outline-offset:3px}
.rsvp-status-options{border:0;padding:0;margin:20px 0 0;min-width:0}
.rsvp-status-options legend{margin:0 0 13px}.rsvp-status-options label{display:flex;align-items:center;gap:10px;background:#f7f1f8;padding:12px 14px;border:1px solid #e7deea;border-radius:10px;margin:7px 0;font-size:13px;cursor:pointer}
.rsvp-status-options input{width:17px;height:17px;accent-color:var(--plum)}
.rsvp-privacy{font:400 11px/1.6 var(--font-body);color:#786d7a;margin:14px 0 16px}
.rsvp-submit,.wishes-more{display:block;min-height:49px;max-width:100%;border:none;border-radius:999px;background:var(--plum);color:var(--ivory);font:600 14px var(--font-body);padding:14px 26px;cursor:pointer;margin:18px auto 0}
.rsvp-submit{width:100%}.rsvp-submit:disabled{opacity:.5;cursor:not-allowed}
.rsvp-feedback{font:600 12px/1.6 var(--font-body);text-align:center;color:var(--plum);min-height:0;margin:12px 0 0}
.rsvp-turnstile{overflow:hidden;max-width:100%}
.attendance-section,.wishes-section{margin:68px 0 0}
.attendance-section h3,.wishes-section h3{color:var(--plum);font:700 21px/1.4 var(--font-body);margin:0 0 18px}
.attendance-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.attendance-card{background:#eee5ee;border:1px solid #e0d2e0;border-radius:14px;padding:17px 5px 13px;display:flex;align-items:center;flex-direction:column;gap:5px}
.attendance-card>span{font-size:21px;color:var(--mauve)}.attendance-card strong{color:var(--plum);font:700 clamp(23px,6.5vw,32px)/1.35 var(--font-body);font-variant-numeric:tabular-nums}.attendance-card small{font:600 10px/1.6 var(--font-body);color:var(--mauve)}
.attendance-note,.wishes-note{font:400 12px/1.65 var(--font-body);color:var(--mauve);margin:14px 0 18px}
.wishes-list{display:flex;flex-direction:column;gap:13px}
.wish-card{text-align:left;background:#fffefc;border:1px solid #e6dbe6;border-radius:15px;padding:20px;box-shadow:0 3px 10px rgba(46,2,59,.035);min-width:0}
.wish-header{display:flex;align-items:center;gap:11px}.wish-avatar{display:grid;place-items:center;flex:0 0 39px;width:39px;height:39px;border-radius:50%;background:#ebdeec;color:var(--plum);font-weight:700;font-size:13px}
.wish-person{flex:1;min-width:0}.wish-person strong{color:var(--plum);font:700 13px/1.5 var(--font-body);overflow-wrap:anywhere;display:block}.wish-person time{font:400 11px/1.5 var(--font-body);color:#827587}
.wish-message,.wish-reply-text{white-space:pre-wrap;overflow-wrap:anywhere;font:400 14px/1.75 var(--font-body);margin:15px 0 0;color:var(--mauve)}
.wish-reply{background:#f4edf4;border-radius:10px;margin:14px 0 0;padding:12px 14px;text-align:left}.wish-reply strong{font:700 12px var(--font-body);color:var(--plum)}.wish-reply-text{margin:5px 0 0;font-size:13px}
.wishes-empty{text-align:center;color:var(--mauve);font:400 13px/1.7 var(--font-body);padding:18px}
.wishes-more{background:transparent;border:1px solid var(--plum);color:var(--plum)}
.wedding-footer{background:var(--ivory);text-align:center;padding:80px 20px 100px;color:var(--mauve);max-width:560px;margin:0 auto}
.wedding-footer h2{font:400 clamp(38px,10vw,52px)/1.4 var(--font-greeting);color:var(--plum);margin:17px 0 22px}
.wedding-footer>p:not(.footer-couple){font:400 15px/1.9 var(--font-body);max-width:470px;margin:0 auto 22px}
.wedding-footer .footer-salutation{font-weight:700!important;color:var(--plum)}.wedding-footer .footer-signoff{font-size:13px!important;margin-top:28px!important}
.wedding-footer .footer-couple{font:400 clamp(32px,9vw,49px)/1.45 var(--font-display);color:var(--plum);margin:10px 0 30px;overflow-wrap:anywhere}
.wedding-footer small{font:400 11px var(--font-body);color:#786e7a}
.back-to-top{position:fixed;right:16px;bottom:78px;z-index:50;border:0;border-radius:14px;width:44px;height:44px;box-shadow:0 3px 12px #2e023b22;color:#fff;background:#584a59dd;font-size:23px;cursor:pointer}
.back-to-top[hidden]{display:none!important}
@media(min-width:860px){.rsvp-section,.wedding-footer{max-width:520px;margin-inline:auto}.rsvp-section{padding-left:18px;padding-right:18px}}
@media(max-width:350px){.rsvp-section{padding-inline:12px}.rsvp-form{padding:17px}.attendance-cards{gap:5px}.attendance-card{padding:13px 1px}}
@media(prefers-reduced-motion:reduce){.rsvp-section *,.wedding-footer *{animation:none!important;transition:none!important}}
