@font-face{font-family:Angello;src:url(/fonts/angello.woff2)format("woff2");font-display:swap}@font-face{font-family:AngelloAccents;src:url(/fonts/great-vibes.woff2)format("woff2");font-display:swap}@font-face{font-family:Epoch of Victory;src:url(/fonts/epoch-news.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Epoch of Victory;src:url(/fonts/epoch-medium.woff2)format("woff2");font-weight:500 700;font-display:swap}:root{--pink-1:#bd114a;--pink-2:#cd285e;--grad:linear-gradient(90deg, var(--pink-1) 0%, var(--pink-2) 100%);--cream:#fbf3ea;--paper:#fdf8f2;--line:#d9567f;--ink:#5c2a3a;--muted:#9b6b7a;--script:"Angello", "AngelloAccents", cursive;--serif:"Epoch of Victory", "Times New Roman", serif;--ease:cubic-bezier(.22, .61, .36, 1)}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--serif);word-spacing:-.12em;color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;min-height:100svh}body:before{content:"";z-index:-1;background:var(--cream) url(/assets/background-Dk97X8oa.webp) center / cover no-repeat;position:fixed;inset:0}img{max-width:100%;display:block}button,input{font:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.grad{background:var(--grad);color:#0000;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.script{font-family:var(--script);font-weight:400}.serif{font-family:var(--serif)}.strong{font-weight:600}.muted{color:var(--muted)}.small{font-size:.85rem}.page-loading{min-height:100svh;color:var(--muted);place-items:center;display:grid}.invite-page{justify-content:center;min-height:100svh;padding:0;display:flex;overflow-x:clip}@media (width>=600px){.invite-page{padding:32px}}.paper{width:100%;max-width:560px;padding:28px 22px 40px;position:relative;overflow:hidden}@media (width>=600px){.paper{background:#fdf8f28c;border-radius:4px;padding:40px 40px 48px;box-shadow:0 30px 80px -40px #bd114a59}}.frame{pointer-events:none;width:46%;height:34%;position:absolute}.frame-tr{border-top:1.5px solid var(--line);border-right:1.5px solid var(--line);top:14px;right:14px}.frame-bl{border-bottom:1.5px solid var(--line);border-left:1.5px solid var(--line);height:18%;bottom:14px;left:14px}.ribbon{pointer-events:none;transform-origin:55% 10%;width:95%;animation:sway 7s ease-in-out infinite alternate, appear 1.2s var(--ease) both;z-index:0;position:absolute;top:0;left:-42%}@keyframes sway{0%{transform:rotate(-2.5deg)}to{transform:rotate(2.5deg)}}@keyframes appear{0%{opacity:0;translate:0 -20px}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.hero,.when,.where,.details,.rsvp,.foot{z-index:1;position:relative}.hero{text-align:center;width:max(50%,230px);margin:0 auto;padding-top:42px}.hero-name{width:100%;animation:rise 1s .2s var(--ease) both}.hero-age{width:84%;animation:rise 1s .4s var(--ease) both;margin:-4px auto 0}.tagline{animation:rise 1s .6s var(--ease) both;margin:10px 0 0;font-size:clamp(1.5rem,6.4vw,2.05rem);line-height:1.3}.when{text-align:center;max-width:420px;animation:rise 1s .75s var(--ease) both;margin:30px auto 0}.when-line{background:linear-gradient(90deg, transparent, var(--line), transparent);height:1px;display:block}.when-row{flex-direction:column;align-items:center;gap:2px;margin:0;padding:10px 0;display:flex}.when-date{font-size:clamp(1.9rem,9vw,2.5rem);font-weight:600;line-height:1.1}.when-time{letter-spacing:.04em;font-size:clamp(1.1rem,5vw,1.4rem)}.where{text-align:center;animation:rise 1s .9s var(--ease) both;margin-top:22px}.label{letter-spacing:.22em;text-transform:uppercase;color:var(--pink-1);margin:0;font-size:.78rem}.place{margin:4px 0 0;font-size:1.5rem;font-weight:600}.address{color:var(--ink);margin:2px 0 14px}.details{max-width:440px;animation:rise 1s 1s var(--ease) both;background:#ffffff73;border:1px solid #d9567f59;border-radius:14px;margin:30px auto 0;padding:18px 20px 6px}.details-title{text-align:center;margin:0 0 6px;font-size:1.8rem}.details ul{margin:0;padding:0;list-style:none}.details li{padding:0 0 12px 22px;line-height:1.45;position:relative}.details li:before{content:" •";color:var(--pink-2);position:absolute;top:0;left:0}.details strong{color:var(--pink-1);font-weight:600}.rsvp{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);max-width:440px;animation:rise 1s 1.1s var(--ease) both;background:#ffffffb3;border-radius:18px;margin:30px auto 0;padding:22px 22px 24px;box-shadow:0 20px 50px -30px #bd114a80}.rsvp-title{text-align:center;margin:0 0 14px;font-size:2rem}.fade{transition:opacity .38s var(--ease), transform .38s var(--ease)}.fade.is-out{opacity:0;transform:translateY(8px)}.fade.is-in{opacity:1;transform:none}.field{margin-bottom:14px;display:block}.field span{letter-spacing:.16em;text-transform:uppercase;color:var(--pink-1);margin-bottom:6px;font-size:.78rem;display:block}.field input{width:100%;color:var(--ink);background:#fff;border:1px solid #d9567f73;border-radius:10px;outline:none;padding:13px 14px;font-size:1.05rem;transition:border-color .2s,box-shadow .2s}.field input:focus{border-color:var(--pink-2);box-shadow:0 0 0 3px #cd285e26}.hp{opacity:0;width:1px;height:1px;position:absolute!important;left:-9999px!important}.captcha{width:100%;margin:0;overflow:hidden}.captcha:has(iframe){margin:4px 0 14px}.btn{cursor:pointer;letter-spacing:.06em;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:12px 24px;text-decoration:none;transition:transform .15s,box-shadow .2s,opacity .2s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--grad);color:#fff;width:100%;font-size:1.05rem;box-shadow:0 10px 24px -12px #bd114ab3}.btn-ghost{color:var(--pink-1);background:#fff9;border-color:#d9567f8c}.btn-ghost:hover{background:#fff}.btn.sm{width:auto;padding:8px 16px;font-size:.9rem}.link{color:var(--muted);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;margin:14px auto 0;text-decoration:underline;display:block}.link.danger{color:var(--pink-1);margin:0;display:inline}.choices{gap:12px;display:grid}.question{text-align:center;margin:0 0 4px;font-size:1.05rem}.choice{width:100%;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border:1px solid #d9567f73;border-radius:14px;align-items:center;gap:8px;padding:16px 18px;font-size:1.05rem;transition:border-color .2s,box-shadow .2s,transform .15s;display:flex}.choice:hover,.choice:focus-visible{border-color:var(--pink-2);outline:none;box-shadow:0 0 0 3px #cd285e26}.choice-icon{color:var(--pink-2)}.hint{text-align:center;color:var(--muted);margin:0}.error{color:#b00b3f;background:#bd114a14;border-radius:8px;margin:0 0 12px;padding:8px 12px;font-size:.92rem}.success{color:#19734a;background:#19734a14;border-radius:8px;margin:0 0 12px;padding:8px 12px;font-size:.92rem}.done{text-align:center}.done-title{margin:0 0 6px;font-size:2.3rem}.done p{line-height:1.5}.done .btn{margin-top:6px}.foot{text-align:center;color:var(--muted);letter-spacing:.1em;flex-direction:column;align-items:center;margin-top:32px;font-size:.85rem;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.admin-page{min-height:100svh;padding:24px 16px 48px}.admin-card{background:#ffffffd9;border-radius:18px;padding:28px 24px;box-shadow:0 20px 50px -30px #bd114a80}.login{max-width:380px;margin:10vh auto 0}.admin-title{margin:0;font-size:2.4rem;line-height:1.2}.admin-title.sm{margin-bottom:12px;font-size:2rem}.login .muted{margin:0 0 18px}.dash{max-width:960px;margin:0 auto}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.dash-head p{margin:0}.dash-actions{gap:8px;display:flex}.stats{grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0;display:grid}.stat{background:#fffc;border:1px solid #d9567f33;border-radius:14px;flex-direction:column;align-items:center;padding:16px;display:flex}.stat.hl{border-color:var(--pink-2)}.stat-value{font-size:2.2rem;font-weight:600;line-height:1}.stat-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center;margin-top:6px;font-size:.75rem}.toolbar{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.search{background:#fff;border:1px solid #d9567f73;border-radius:999px;outline:none;flex:1;min-width:180px;padding:9px 14px}.table-wrap{background:#ffffffd9;border-radius:14px;overflow:hidden}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid #d9567f26;padding:12px 14px}.table th{letter-spacing:.12em;text-transform:uppercase;color:var(--pink-1);font-size:.75rem;font-weight:500}.table tr:last-child td{border-bottom:0}.actions{text-align:right;white-space:nowrap}.confirm-del{gap:12px;display:inline-flex}.confirm-del .link{margin:0;display:inline}.tag{border-radius:999px;padding:2px 10px;font-size:.82rem;display:inline-block}.tag.yes{color:var(--pink-1);background:#cd285e1f}.tag.no{color:var(--muted);background:#0000000d}.empty{text-align:center;padding:40px 0}.modal-backdrop{z-index:10;background:#5c2a3a59;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:#fffaf6;width:100%;max-width:400px}.row{gap:10px;display:flex}.row .btn{flex:1}@media (width<=640px){.stats{gap:8px}.stat-value{font-size:1.7rem}.stat{padding:12px 6px}.stat-label{letter-spacing:.04em;font-size:.68rem}.table thead{display:none}.table,.table tbody,.table tr,.table td{width:100%;display:block}.table tr{border-bottom:1px solid #d9567f33;padding:10px 4px}.table td{border:0;justify-content:space-between;gap:12px;padding:4px 12px;display:flex}.table td:before{content:attr(data-label);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.table td.actions{justify-content:flex-end}.table td.actions:before{content:none}}.foot-heart{width:18px;height:18px;margin-top:6px;display:block}
