:root{--cream: #f3ead8;--paper: #fbf6ec;--ink: #5c1824;--burgundy: #630d16;--navy: #1a2b4b;--mustard: #c4a046;--beige: #c4b49a;--gold: #b8953e;--muted: #7a5a52;--line: rgba(92, 24, 36, .16)}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:Cormorant Garamond,Georgia,serif;color:var(--ink);background:radial-gradient(circle at 18% 8%,rgba(196,160,70,.16),transparent 34%),radial-gradient(circle at 82% 92%,rgba(99,13,22,.1),transparent 30%),var(--cream)}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.28;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");mix-blend-mode:multiply}#app{min-height:100dvh}.page{width:min(430px,100%);margin:0 auto;padding:1.15rem .85rem 3.2rem;display:grid;gap:1.15rem}.card{position:relative;overflow:hidden;z-index:0;background:linear-gradient(180deg,rgba(255,255,255,.42),transparent 38%),repeating-linear-gradient(90deg,rgba(92,24,36,.015) 0 1px,transparent 1px 3px),var(--paper);border:1px solid var(--line);padding:2.5rem 1.3rem 2.35rem;box-shadow:0 14px 36px #5c182412;animation:rise .55s ease}.lock-page{min-height:100dvh;display:grid;align-items:center}.lock-card{text-align:center;padding:3.4rem 1.35rem 1.6rem;min-height:min(92dvh,720px);display:grid;align-content:center}.florals{position:absolute;inset:0;pointer-events:none}.card>*:not(.florals){position:relative;z-index:1}.floral{position:absolute;width:33%;opacity:.85}.floral-svg{display:block;width:100%;height:auto}.floral.tl{top:-16px;left:-18px}.floral.tr{top:-16px;right:-18px;transform:scaleX(-1)}.floral.bl{bottom:-20px;left:-18px;transform:scaleY(-1)}.floral.br{bottom:-20px;right:-18px;transform:scale(-1)}.floral.bl,.floral.br{width:26%;opacity:.72}.lock-florals .floral{width:48%}.script{font-family:Allura,Great Vibes,cursive;font-weight:400;color:var(--burgundy)}.welcome{position:relative;margin:0;font-size:4.1rem;line-height:.85}.to-row{position:relative;display:flex;align-items:center;justify-content:center;gap:.55rem;margin:.35rem 0 0;font-family:Cinzel,serif;letter-spacing:.32em;text-transform:uppercase;font-size:.7rem}.to-row .sprig:last-of-type{transform:scaleX(-1)}.sprig{width:48px;height:16px}.host-name{position:relative;margin:.2rem 0 .15rem;font-family:Allura,Great Vibes,cursive;font-size:clamp(1.6rem,6.6vw,2.2rem);font-weight:400;line-height:1.18;text-wrap:balance;overflow-wrap:break-word}.teaser{position:relative;margin:.2rem 0 0;font-family:Cinzel,serif;letter-spacing:.34em;text-transform:uppercase;font-size:.72rem}.hello{position:relative;margin:.4rem auto 0;max-width:78%;font-size:2.75rem;text-align:center;line-height:1.12;text-wrap:balance}.accent,.gifts-title{position:relative;margin:.2rem auto .55rem;max-width:80%;font-size:2.65rem;text-align:center;line-height:1;text-wrap:balance}.section-title{position:relative;margin:0 auto;max-width:74%;font-family:Cinzel,serif;font-size:.78rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;text-align:center;text-wrap:balance}.divider{position:relative;display:flex;align-items:center;gap:.45rem;margin:.95rem 0 1.1rem;color:var(--gold)}.divider-line{flex:1;height:1px;background:var(--gold);opacity:.55}.divider-heart{width:72px;height:24px}.unlock-form,.rsvp-form{position:relative;display:grid;gap:.75rem}#code{width:100%;border:0;border-bottom:1px solid var(--burgundy);background:transparent;text-align:center;font:inherit;font-size:1.35rem;letter-spacing:.08em;padding:.75rem .4rem .5rem;color:var(--ink)}#code:focus,textarea:focus,.btn:focus-visible,.btn-text:focus-visible,.choice:focus-within{outline:2px solid var(--burgundy);outline-offset:3px}.hint,.note,.meal-hint,.body-copy,.poc-note{position:relative;margin:0;color:var(--muted);font-size:1.05rem;line-height:1.5;text-align:center}.body-copy{color:var(--ink);padding:0 .2rem;max-width:84%;margin-inline:auto;text-wrap:pretty}.note,.meal-hint,.poc-note{font-size:.96rem;font-style:italic}.note,.poc-note{max-width:82%;margin-inline:auto;text-wrap:pretty}.poc-note{margin-top:1.1rem;font-size:.86rem;letter-spacing:.01em}.error,.success{margin:0;text-align:center;font-size:1.05rem}.error{color:var(--burgundy)}.success{color:#2f5d3a}.btn,.btn-text{appearance:none;font-family:Cinzel,serif;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}.btn{border:1px solid var(--burgundy);background:var(--burgundy);color:#fbf4e6;font-size:.72rem;padding:.95rem 1rem}.btn:hover:not(:disabled){background:#4f0b12}.btn:disabled{opacity:.7;cursor:wait}.btn-text{border:0;background:none;color:var(--muted);font-size:.64rem;padding:.4rem}.sign-out-wrap{margin:0;text-align:center}.detail-list{list-style:none;margin:.85rem 0 0;padding:0;display:grid;gap:.15rem}.detail-list li,.bank div,.stay{display:grid;gap:.12rem;padding:.78rem 0;border-top:1px solid var(--line);text-align:center}.detail-list span,.bank dt,.meal-label,.message-label,.payment-label{font-family:Cinzel,serif;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase}.message-label{text-align:center}.colour-stack{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin-top:.85rem}.colour-card .swatch{min-height:5.6rem;display:grid;place-content:center;gap:.45rem;color:#fbf4e6;font-family:Cinzel,serif;letter-spacing:.14em;text-transform:uppercase;font-size:.68rem}.tone-burgundy .swatch{background:var(--burgundy)}.tone-navy .swatch{background:var(--navy)}.tone-mustard .swatch{background:var(--mustard);color:#3d2c12}.tone-beige .swatch{background:var(--beige);color:#3d3224}.mini-heart{width:10px;height:10px;margin:0 auto;background:currentColor;transform:rotate(45deg);opacity:.75}.mini-heart:before,.mini-heart:after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;background:inherit}.mini-heart:before{left:-5px}.mini-heart:after{top:-5px}.keywords{display:grid;grid-template-columns:1fr 1fr;gap:1rem .8rem;list-style:none;margin:1.25rem 0 0;padding:.2rem 0 0;text-align:center;font-family:Cinzel,serif;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase}.keywords li{display:grid;justify-items:center;gap:.35rem}.keywords svg{width:22px;height:22px;color:var(--burgundy)}.stay h3{margin:0;font-size:1.28rem}.stay p{margin:0;font-size:1.02rem}.stay a{color:inherit}.payment-label{margin:1rem 0 0;text-align:center}.payment-value{margin:.15rem 0 .35rem;text-align:center;font-size:1.25rem}.bank{margin:.35rem 0 .7rem}.bank dd{margin:0;font-size:1.2rem}.attend,.meal-row{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;border:0;padding:0;margin:0}.meal-row-3{grid-template-columns:1fr 1fr 1fr;gap:.4rem}.person-meals{border:1px solid var(--line);background:#ffffff47;padding:.85rem .75rem 1rem;margin:0 0 .8rem}.person-meals legend{padding:0 .35rem;font-size:1.2rem}.meal-label{margin:.7rem 0 .15rem;text-align:center}.meal-course-hint{margin:0 0 .35rem;text-align:center;font-size:.92rem;font-style:italic;color:var(--muted)}.choice{display:grid;place-items:center;min-height:3.1rem;padding:.55rem;border:1px solid var(--line);background:#ffffff47;text-align:center;cursor:pointer}.meal-choice{position:relative;align-content:start;gap:.35rem;min-height:0;padding:.4rem .35rem .5rem}.meal-choice img{display:block;width:100%;height:auto;aspect-ratio:5 / 3;object-fit:cover;background:var(--paper)}.meal-name{font-size:.95rem;line-height:1.25}.meal-row-3 .meal-name{font-size:.82rem}.meal-detail{font-size:.78rem;line-height:1.3;color:var(--muted)}.choice.selected,.choice:has(input:checked){border-color:var(--burgundy);background:#630d1612}.choice input{position:absolute;opacity:0;pointer-events:none}textarea{width:100%;resize:vertical;border:1px solid var(--line);background:#fff6;font:inherit;font-size:1.1rem;padding:.7rem;color:var(--ink)}.hidden{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.card{animation:none}}
