:root{--wine:#6f1027;--deep:#26070e;--gold:#d8b46a;--cream:#fffaf2;--ink:#171013;--muted:#78676d;--line:rgba(216,180,106,.35);--shadow:0 26px 80px rgba(38,7,14,.24)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font:16px/1.7 Montserrat,Arial,sans-serif;background:var(--cream)}button,input,select,textarea{font:inherit}.public-page{overflow-x:hidden}.opening{position:fixed;inset:0;z-index:50;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at 50% 42%,#8c1737,var(--wine) 42%,var(--deep));color:#fff;transition:opacity .7s,transform .9s}.opening:before{content:"";position:absolute;inset:24px;border:1px solid var(--line);pointer-events:none}.opening.opened{opacity:0;transform:scale(1.08);pointer-events:none}.seal{width:130px;height:130px;border-radius:50%;border:1px solid #f6de9c;color:var(--gold);background:linear-gradient(145deg,#8d2340,#4b091a);box-shadow:0 0 0 9px rgba(216,180,106,.13),var(--shadow);cursor:pointer;transition:transform .25s}.seal:hover{transform:scale(1.05)}.seal span{font:italic 42px/1 "Cormorant Garamond",serif}.opening p,.eyebrow{letter-spacing:.25em;font-size:.72rem;font-weight:600}.invitation[aria-hidden=true]{height:100vh;overflow:hidden}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:5rem 1.5rem;background:linear-gradient(rgba(38,7,14,.78),rgba(38,7,14,.88)),radial-gradient(circle at 20% 15%,#9f2547,transparent 38%),var(--deep);color:#fff;position:relative}.hero:after{content:"";position:absolute;inset:18px;border:1px solid var(--line)}.hero h1{font:500 clamp(4rem,14vw,9rem)/.78 "Cormorant Garamond",serif;margin:1rem 0;color:#fff}.hero h1 em,.invalid-card h1 em{color:var(--gold);font-weight:400}.ornament{color:var(--gold);font-size:1.3rem}.script{font:italic 2rem "Cormorant Garamond",serif;margin:.8rem}.guest-name{font:500 clamp(1.8rem,5vw,3rem) "Cormorant Garamond",serif;color:var(--gold);margin:.3rem}.scroll-cue{position:absolute;z-index:2;bottom:2rem;color:#fff;text-decoration:none;font-size:.8rem;letter-spacing:.1em}.scroll-cue span{display:block;font-size:1.4rem;animation:bob 1.5s infinite}.reveal{animation:rise .9s both}.reveal:nth-of-type(2){animation-delay:.15s}.reveal:nth-of-type(3){animation-delay:.3s}.details,.rsvp-section,.pass{padding:clamp(5rem,10vw,9rem) 1.25rem;text-align:center}.details{background:#fff}.details h2,.rsvp-card h2,.pass h2{font:500 clamp(2.4rem,7vw,4.5rem)/1.05 "Cormorant Garamond",serif;color:var(--wine);margin:.8rem auto 2.5rem;max-width:900px}.countdown{display:flex;justify-content:center;gap:clamp(1.5rem,7vw,6rem);margin:3rem auto}.countdown div{min-width:70px}.countdown b{display:block;font:500 3.4rem/1 "Cormorant Garamond",serif}.countdown span,.venue>span{font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}.venue{border-top:1px solid var(--line);max-width:720px;margin:4rem auto 0;padding-top:4rem}.venue h3{font:500 2.2rem "Cormorant Garamond",serif;margin:.6rem}.gold-link{color:var(--wine);text-underline-offset:5px}.rsvp-section{background:var(--wine);color:#fff}.rsvp-card{max-width:700px;margin:auto;padding:clamp(2rem,6vw,4rem);background:#fff;color:var(--ink);box-shadow:var(--shadow);border:1px solid var(--gold)}.choice-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:2rem 0}.choice-row label{cursor:pointer}.choice-row input{position:absolute;opacity:0}.choice-row span{display:block;border:1px solid #dbcbd0;padding:1rem}.choice-row input:checked+span{border-color:var(--wine);background:#f8edf0;color:var(--wine)}.field{display:block;text-align:left;margin:1rem 0}.field span{display:block;font-size:.8rem;margin-bottom:.4rem}.field select,.field textarea,.field input{width:100%;border:1px solid #d8cbd0;background:#fff;padding:.85rem;border-radius:0}.button{border:1px solid var(--wine);background:var(--wine);color:#fff;padding:.95rem 1.5rem;cursor:pointer;text-decoration:none;display:inline-block;transition:.2s}.button:hover{filter:brightness(1.15)}.button.secondary{background:transparent;color:var(--wine)}.response-saved span{font-size:2rem;color:var(--wine)}.text-button{border:0;background:none;text-decoration:underline;color:var(--wine);cursor:pointer}.pass{background:#f5ede8}.pass #qrcode{display:inline-block;padding:18px;background:#fff;box-shadow:0 15px 40px rgba(38,7,14,.12)}.pass #qrcode img,.pass #qrcode canvas{display:block}.pass p{margin:1.25rem}.monogram{font:500 2rem "Cormorant Garamond",serif;color:var(--gold)}.monogram i{font-weight:400}footer{background:var(--deep);color:#fff;text-align:center;padding:4rem 1rem}.invalid-card{min-height:100vh;display:grid;place-content:center;justify-items:center;text-align:center;padding:2rem;background:var(--deep);color:#fff}.invalid-card h1{font:500 clamp(3.2rem,12vw,7rem) "Cormorant Garamond",serif;margin:.5rem}.invalid-card p{max-width:520px}.fine-rule{width:80px;border-top:1px solid var(--gold);margin:1rem}
/* Admin */.admin-body{background:#f6f2f3;color:#25191d}.admin-shell{min-height:100vh;display:grid;grid-template-columns:245px 1fr}.sidebar{background:var(--deep);color:#fff;padding:2rem 1.25rem;position:sticky;top:0;height:100vh}.sidebar .brand{font:500 1.8rem "Cormorant Garamond",serif;color:var(--gold);margin-bottom:2.5rem}.sidebar a{display:block;color:#d9cfd2;text-decoration:none;padding:.65rem .75rem;margin:.2rem 0}.sidebar a:hover,.sidebar a.active{color:#fff;background:rgba(255,255,255,.08)}.admin-main{padding:2rem;min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.topbar h1{font:500 2.5rem "Cormorant Garamond",serif;margin:0;color:var(--wine)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.stat{background:#fff;border:1px solid #eadfe2;padding:1.25rem}.stat b{display:block;font:500 2rem "Cormorant Garamond",serif;color:var(--wine)}.stat span{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.panel{background:#fff;border:1px solid #eadfe2;margin-top:1.5rem;padding:1.25rem;overflow:auto}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.panel h2{font:500 1.7rem "Cormorant Garamond",serif;margin:0}.data-table{width:100%;border-collapse:collapse;min-width:850px}.data-table th,.data-table td{text-align:left;padding:.8rem;border-bottom:1px solid #eee;font-size:.82rem}.data-table th{color:var(--muted);text-transform:uppercase;font-size:.68rem;letter-spacing:.08em}.badge{display:inline-block;padding:.2rem .55rem;border-radius:20px;background:#eee;font-size:.7rem}.badge.accepted,.badge.read,.badge.checked-in{background:#e5f5eb;color:#17633a}.badge.declined,.badge.failed{background:#fae7ea;color:#8a1f35}.badge.pending{background:#f5efe0;color:#795c18}.actions{display:flex;gap:.4rem}.mini-button{border:1px solid #d7c5ca;background:#fff;color:var(--wine);padding:.35rem .55rem;cursor:pointer;text-decoration:none;font-size:.75rem}.admin-form{max-width:740px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-grid .full{grid-column:1/-1}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 30% 20%,#861c39,var(--deep));padding:1.5rem}.login-card{background:#fff;padding:3rem;width:min(430px,100%);box-shadow:var(--shadow)}.login-card h1{font:500 2.6rem "Cormorant Garamond",serif;color:var(--wine);margin:.5rem 0}.alert{padding:.8rem 1rem;margin:1rem 0;background:#fae7ea;color:#7b1a31}.scanner-wrap{min-height:100vh;background:var(--deep);color:#fff;padding:1.5rem}.scanner-card{max-width:650px;margin:auto;text-align:center}.scanner-card h1{font:500 3rem "Cormorant Garamond",serif;color:var(--gold)}video{width:100%;max-height:55vh;background:#000;border:1px solid var(--gold)}.scan-result{margin:1rem 0;padding:1rem;background:rgba(255,255,255,.08)}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes bob{50%{transform:translateY(7px)}}@media(max-width:800px){.admin-shell{grid-template-columns:1fr}.sidebar{height:auto;position:relative}.sidebar nav{display:flex;overflow:auto}.stat-grid{grid-template-columns:1fr 1fr}.admin-main{padding:1rem}}@media(max-width:560px){.choice-row,.form-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr}.countdown{gap:1rem}.countdown b{font-size:2.5rem}.opening:before{inset:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media print{.opening,.details,.rsvp-section,.hero,footer,.pass .button{display:none}.pass{display:block;padding:2rem;background:#fff}}
.preview-grid{display:grid;grid-template-columns:minmax(300px,430px) minmax(360px,1fr);gap:1.5rem;align-items:start}.phone-preview{background:#111;border-radius:28px;padding:10px;box-shadow:var(--shadow)}.phone-top{background:#075e54;color:#fff;padding:1rem;border-radius:20px 20px 0 0;font-weight:600}.chat-wall{min-height:640px;padding:1.5rem 1rem;background:#e7ddd3;display:flex;align-items:flex-start;border-radius:0 0 20px 20px}.wa-bubble{width:100%;background:#fff;border-radius:0 10px 10px 10px;box-shadow:0 1px 2px rgba(0,0,0,.18);overflow:hidden}.wa-bubble video{display:block;width:100%;background:#111}.wa-bubble p{padding:0 1rem;margin:1rem 0}.wa-time{padding:0 1rem .5rem;text-align:right;color:#888;font-size:.7rem}.ticket-button{display:block;border-top:1px solid #eee;padding:.75rem;text-align:center;color:#0878d1;text-decoration:none}.media-placeholder{aspect-ratio:16/10;display:grid;place-content:center;text-align:center;background:linear-gradient(145deg,var(--wine),var(--deep));color:var(--gold)}.manual-panel{margin-top:0}.manual-panel textarea{resize:vertical}.mark-sent-form{margin-top:2rem}.muted-note{color:var(--muted);font-size:.8rem}@media(max-width:900px){.preview-grid{grid-template-columns:1fr}.phone-preview{max-width:430px;margin:auto;width:100%}.chat-wall{min-height:500px}}
