:root{--cream:#fdf7f0;--magenta:#c2185b;--magenta-deep:#9c1451;--rose:#e85a97;--rose-soft:#f4c9d9;--plum:#5a2340;--lilac:#b39ddb;--gold-line:#d9a441;--leaf:#8fae7a}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--cream);font-family:Cormorant Garamond,serif;color:var(--plum);-webkit-font-smoothing:antialiased}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.stage{max-width:460px;margin:0 auto;min-height:100vh;position:relative;overflow:hidden;background:radial-gradient(circle at 12% 8%,rgba(232,90,151,.1),transparent 40%),radial-gradient(circle at 88% 92%,rgba(232,90,151,.1),transparent 40%),var(--cream)}.frame{position:absolute;inset:10px;border:1.5px solid var(--gold-line);border-radius:2px;pointer-events:none}.frame:before{content:"";position:absolute;inset:6px;border:1px solid rgba(217,164,65,.55)}.corner{position:absolute;width:130px;height:130px;z-index:1;opacity:.92}.corner.tl{top:-6px;left:-6px}.corner.tr{top:-6px;right:-6px;transform:scaleX(-1)}.corner.bl{bottom:-6px;left:-6px;transform:scaleY(-1)}.corner.br{bottom:-6px;right:-6px;transform:scale(-1)}.butterfly{position:absolute;width:34px;height:34px;z-index:2;filter:drop-shadow(0 2px 3px rgba(90,35,64,.15))}.b1{top:15%;left:8%;animation:flutter 3.6s ease-in-out infinite}.b2{top:34%;right:10%;width:26px;height:26px;animation:flutter 4.2s ease-in-out .4s infinite}.b3{bottom:20%;right:14%;width:28px;height:28px;animation:flutter 3.9s ease-in-out .8s infinite}@keyframes flutter{0%,to{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-7px) rotate(6deg)}}.wing{transform-origin:17px 17px;animation:wingbeat .9s ease-in-out infinite}@keyframes wingbeat{0%,to{transform:scaleX(1)}50%{transform:scaleX(.72)}}.content{position:relative;z-index:3;padding:56px 30px 40px;text-align:center}.kicker{font-size:15px;letter-spacing:.14em;color:var(--magenta);margin:0 0 2px}h1.name{font-family:Alex Brush,cursive;font-size:68px;line-height:.95;margin:4px 0 0;background:linear-gradient(180deg,var(--rose) 0,var(--magenta-deep) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.years{font-size:28px;letter-spacing:.06em;margin:6px 0 18px;font-weight:500}.divider{width:120px;height:14px;margin:0 auto 20px;opacity:.8}.invite-text{font-size:18px;line-height:1.5;max-width:320px;margin:0 auto 18px}.invite-text.italic{font-style:italic;color:var(--magenta-deep);font-size:17px}.details{margin:22px auto 8px;flex-direction:column;max-width:340px}.detail-row,.details{display:flex;gap:12px}.detail-row{align-items:center;background:hsla(0,0%,100%,.6);border:1px solid rgba(194,24,91,.18);border-radius:14px;padding:12px 16px;text-align:left}.detail-icon{width:28px;height:28px;flex-shrink:0;color:var(--magenta)}.detail-text .label{font-size:13px;letter-spacing:.04em;color:var(--magenta);display:block;margin-bottom:1px}.detail-text .value{font-size:18px;color:var(--plum);font-weight:600}.obs{margin:18px auto 0;max-width:320px;font-size:15px;opacity:.85;line-height:1.5}.obs b{color:var(--magenta-deep)}.cta-group{margin-top:26px;display:flex;flex-direction:column;gap:12px;max-width:320px;margin-left:auto;margin-right:auto}.btn{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 20px;border-radius:999px;font-family:Cormorant Garamond,serif;font-size:18px;font-weight:600;text-decoration:none;cursor:pointer;border:none;transition:transform .15s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.6;cursor:default}.btn-primary{background:linear-gradient(135deg,var(--magenta) 0,var(--magenta-deep) 100%);color:#fff;box-shadow:0 6px 16px rgba(194,24,91,.35)}.btn-secondary{background:#fff;color:var(--magenta-deep);border:1.5px solid var(--rose-soft)}.btn svg{width:20px;height:20px}.presence-note{margin-top:18px;font-size:15px;color:var(--magenta-deep);font-style:italic}.footer-mark{margin-top:28px;font-family:Alex Brush,cursive;font-size:24px;color:var(--rose);opacity:.75}.rsvp-form{display:flex;flex-direction:column;gap:10px;max-width:320px;margin:0 auto}.rsvp-form input[type=number],.rsvp-form input[type=text]{font-family:Cormorant Garamond,serif;font-size:18px;padding:12px 16px;border-radius:12px;border:1.5px solid var(--rose-soft);background:#fff;color:var(--plum)}.rsvp-form input:focus{outline:2px solid var(--magenta);outline-offset:1px}.rsvp-choice{display:flex;gap:10px}.rsvp-choice button{flex:1 1;padding:12px;border-radius:12px;border:1.5px solid var(--rose-soft);background:#fff;font-family:Cormorant Garamond,serif;font-size:16px;font-weight:600;color:var(--plum);cursor:pointer}.rsvp-choice button.selected{background:var(--magenta);color:#fff;border-color:var(--magenta)}.rsvp-success{color:var(--magenta-deep);font-size:18px;font-style:italic}.gallery-section{max-width:460px;margin:0 auto;padding:40px 22px 60px;background:var(--cream)}.gallery-title{font-family:Alex Brush,cursive;font-size:40px;text-align:center;color:var(--magenta-deep);margin:0 0 4px}.gallery-sub{text-align:center;font-size:16px;opacity:.8;margin:0 0 20px}.upload-box{border:1.5px dashed var(--rose-soft);border-radius:16px;padding:18px;text-align:center;margin-bottom:24px;background:hsla(0,0%,100%,.5)}.upload-progress-track{height:8px;border-radius:99px;background:var(--rose-soft);overflow:hidden;margin-top:12px}.upload-progress-fill{height:100%;background:linear-gradient(90deg,var(--rose),var(--magenta));transition:width .2s ease}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px}.photo-grid button{padding:0;border:none;background:none;cursor:pointer;aspect-ratio:1;overflow:hidden;border-radius:8px}.photo-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.photo-grid button:active img{transform:scale(.95)}.lightbox-overlay{position:fixed;inset:0;background:rgba(30,10,20,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:50;padding:20px}.lightbox-overlay img{max-width:100%;max-height:75vh;border-radius:8px}.lightbox-actions{display:flex;gap:12px;margin-top:18px}.lightbox-actions a,.lightbox-actions button{padding:10px 18px;border-radius:999px;border:none;cursor:pointer;font-family:Cormorant Garamond,serif;font-size:16px;font-weight:600;text-decoration:none;display:flex;align-items:center;gap:8px}.lightbox-actions .close{background:hsla(0,0%,100%,.15);color:#fff}.lightbox-actions .download{background:var(--magenta);color:#fff}.admin-shell{min-height:100vh;background:#faf6f1;font-family:Cormorant Garamond,serif;color:var(--plum)}.admin-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:#fff;border-bottom:1px solid #eee}.admin-header .brand{font-family:Alex Brush,cursive;font-size:26px;color:var(--magenta)}.admin-body{max-width:900px;margin:0 auto;padding:28px 20px 60px}.admin-card{background:#fff;border:1px solid #eee;border-radius:14px;padding:20px;margin-bottom:18px}.admin-card h2{margin-top:0;font-size:22px;color:var(--magenta-deep)}.admin-input{font-size:17px;padding:10px 14px;border-radius:10px;border:1.5px solid #e6d9cf;width:100%;margin-bottom:10px}.admin-btn,.admin-input{font-family:Cormorant Garamond,serif}.admin-btn{font-size:16px;font-weight:600;padding:10px 18px;border-radius:999px;border:none;cursor:pointer}.admin-btn.primary{background:var(--magenta);color:#fff}.admin-btn.ghost{background:transparent;color:var(--magenta-deep);border:1px solid var(--rose-soft)}.admin-btn.danger{background:#fff;color:#b3261e;border:1px solid #f2c9c5}.group-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid #f1ebe4}.group-row:last-child{border-bottom:none}.group-row .info{display:flex;flex-direction:column;gap:2px}.group-row .info .slug{font-size:14px;opacity:.6}.group-row .actions{gap:8px}.group-row .actions,.qr-modal{display:flex;align-items:center}.qr-modal{position:fixed;inset:0;background:rgba(30,10,20,.6);justify-content:center;z-index:50;padding:20px}.qr-modal-card{background:#fff;border-radius:16px;padding:24px;text-align:center;max-width:320px}.qr-modal-card .link-box{font-size:14px;word-break:break-all;background:#faf6f1;padding:10px;border-radius:8px;margin:14px 0}.moderation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:10px;gap:10px}.moderation-item{position:relative;border-radius:10px;overflow:hidden}.moderation-item img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.moderation-item button{position:absolute;top:6px;right:6px;background:rgba(179,38,30,.9);color:#fff;border:none;border-radius:999px;width:28px;height:28px;cursor:pointer;font-size:14px}.empty-state{text-align:center;opacity:.6;padding:30px 0;font-style:italic}.error-text{color:#b3261e;font-size:15px}.companions-box{display:flex;flex-direction:column;gap:8px;margin-top:4px}.companions-label{font-size:14px;color:var(--magenta-deep);display:block;margin-bottom:6px}.companion-row{display:flex;gap:8px;align-items:center}.companion-row input{flex:1 1}.companion-row button{width:30px;height:30px;border-radius:50%;border:1px solid var(--rose-soft);background:#fff;color:var(--magenta-deep);cursor:pointer;font-size:16px}.add-companion-btn{align-self:flex-start;background:none;border:none;color:var(--magenta);font-family:Cormorant Garamond,serif;font-size:15px;cursor:pointer;text-decoration:underline}@media (max-width:640px){.admin-header{flex-direction:column;align-items:flex-start;gap:10px;padding:14px 16px}.admin-header nav{flex-wrap:wrap;gap:12px!important;width:100%}.admin-body{padding:18px 14px 40px}.admin-card{padding:16px}.group-row{flex-direction:column;align-items:flex-start;gap:10px}.group-row .actions{width:100%;flex-wrap:wrap}.group-row .actions button{flex:1 1;min-width:90px}.qr-modal-card{width:100%;max-width:320px}.moderation-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:380px){h1.name{font-size:56px}.content{padding:48px 20px 32px}}.highlight-box{margin:20px auto 0;max-width:320px;background:rgba(194,24,91,.08);border:1.5px solid var(--magenta);border-radius:14px;padding:16px 18px;text-align:center}.highlight-box p{margin:0 0 10px;font-size:17px;font-weight:600;color:var(--magenta-deep);line-height:1.5}.highlight-box p:last-child{margin-bottom:0}.highlight-box .dress-code{font-size:18px;letter-spacing:.02em;border-top:1px solid rgba(194,24,91,.25);padding-top:10px}.b4{top:55%;left:5%;width:24px;height:24px;animation:flutter 4.5s ease-in-out 1.2s infinite}.b5{top:72%;right:8%;width:30px;height:30px;animation:flutter 3.8s ease-in-out .6s infinite}.b6{top:45%;left:45%;width:20px;height:20px;animation:flutter 4.1s ease-in-out 1.6s infinite}.pix-card{max-width:320px;margin:0 auto;text-align:center}.gift-list{display:flex;flex-direction:column;gap:10px;max-width:340px;margin:10px auto 0}.gift-item{display:flex;align-items:center;justify-content:space-between;background:hsla(0,0%,100%,.6);border:1px solid rgba(194,24,91,.18);border-radius:12px;padding:12px 16px}.gift-item .admin-btn{text-decoration:none}.link-box{font-size:14px;word-break:break-all;background:#faf6f1;padding:10px;border-radius:8px;margin:10px 0;text-align:center;color:var(--plum)}.pix-owner-name{text-align:center;font-size:15px;color:var(--magenta-deep);margin:-2px 0 12px;font-style:italic}.pix-card .link-box{font-size:19px;font-weight:600;padding:14px 12px;line-height:1.4}.pix-key-type{text-align:center;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--magenta);margin:6px 0 0}