:root{--forest-deep:#1e2c1b;--forest:#2c4227;--olive:#5a6939;--olive-dark:#4d5c30;--envelope:#4d6742;--envelope-dark:#415a37;--envelope-flap:#587450;--lace:#f5f3ec;--lace-soft:#f5f3eccc;--lace-line:#f5f3ec73;--serif:"Cormorant Garamond", Georgia, serif;--sans:"Montserrat", "Helvetica Neue", Arial, sans-serif;--script:"Pinyon Script", cursive;--linen:repeating-linear-gradient(0deg, #ffffff09 0 1px, transparent 1px 3px), repeating-linear-gradient(90deg, #0000000d 0 1px, transparent 1px 3px)}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:var(--serif);color:var(--lace);background:var(--linen), radial-gradient(ellipse at top, var(--forest), var(--forest-deep));-webkit-font-smoothing:antialiased;background-attachment:fixed;font-size:18px}.app{place-items:center;min-height:100dvh;padding:2rem 1rem;display:grid}.script{font-family:var(--script);font-weight:400}.muted{color:var(--lace-soft)}.center{text-align:center}.eyebrow,.envelope-hint,.envelope-letter-sub,.detail h2,.rsvp-title,.submit{font-family:var(--sans);text-transform:uppercase;letter-spacing:.2em;font-weight:400}.envelope-scene{flex-direction:column;align-items:center;gap:1.5rem;display:flex}.envelope-addressee{margin:0;font-size:1.3rem;font-style:italic;transition:opacity .4s}.envelope-hint{color:var(--lace-soft);margin:0;font-size:.7rem;transition:opacity .4s;animation:2.4s ease-in-out infinite pulse}.is-hidden{opacity:0}.envelope{aspect-ratio:3/2;width:min(88vw,440px);font:inherit;cursor:pointer;perspective:1200px;filter:drop-shadow(0 18px 24px #0006);background:0 0;border:0;margin-top:4rem;padding:0;transition:transform .3s;position:relative}.envelope:not(.is-open):hover{transform:translateY(-4px)rotate(-1deg)}.envelope:focus-visible{outline:2px solid var(--lace);outline-offset:8px}.envelope>span{display:block;position:absolute}.envelope-back{background:var(--envelope-dark);z-index:1;border-radius:6px;inset:0}.envelope-letter{z-index:2;background:var(--linen), var(--olive);border:3px double var(--lace);height:88%;color:var(--lace);border-radius:3px;flex-direction:column;justify-content:flex-start;align-items:center;gap:.35rem;padding-top:7%;transition:transform 1s cubic-bezier(.2,.8,.2,1) .8s;top:6%;left:6%;right:6%;display:flex!important}.envelope-letter .script{font-size:clamp(1.6rem,6vw,2.2rem);line-height:1.2}.envelope-letter-sub{color:var(--lace-soft);font-size:.6rem}.envelope-pocket{z-index:3;background:var(--linen), linear-gradient(170deg, var(--envelope) 40%, var(--envelope-dark));clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border-radius:6px;inset:0}.envelope-flap{z-index:4;background:var(--linen), linear-gradient(180deg, var(--envelope-flap), var(--envelope));clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:top;transition:transform .6s ease-in-out .15s,z-index 0s linear .45s;inset:0}.envelope-seal{z-index:5;width:3.4rem;height:3.4rem;color:var(--forest);font-family:var(--script);background:radial-gradient(circle at 35% 30%,#fffdf6,#ebe6d6 60%,#cec6ae);border-radius:50%;place-items:center;font-size:1.4rem;transition:opacity .25s,transform .25s;top:58%;left:50%;translate:-50% -60%;box-shadow:inset 0 0 0 4px #0000000f,0 2px 5px #00000059;display:grid!important}.envelope.is-open{cursor:default;animation:.45s 1.8s forwards envelope-exit}.envelope.is-open .envelope-seal{opacity:0;transform:scale(1.3)}.envelope.is-open .envelope-flap{z-index:1;transform:rotateX(180deg)}.envelope.is-open .envelope-letter{transform:translateY(-62%)}@keyframes envelope-exit{to{opacity:0;transform:translateY(-12px)scale(1.04)}}@keyframes pulse{50%{opacity:.45}}.letter{background:var(--linen), var(--forest);text-align:center;border-radius:4px;width:min(100%,580px);padding:clamp(10px,3vw,18px);animation:.7s cubic-bezier(.2,.8,.2,1) both letter-enter;box-shadow:0 24px 48px #00000073}.letter-frame{border:2px solid var(--lace);background:radial-gradient(circle, var(--lace) 1.5px, transparent 2px) 0 0 / 8px 8px, radial-gradient(circle, var(--lace-line) 1px, transparent 1.5px) 4px 4px / 8px 8px, var(--forest);border-radius:3px;padding:clamp(14px,4vw,20px)}.letter-panel{--corner:18px;background:var(--linen), var(--olive);clip-path:polygon(var(--corner) 0, calc(100% - var(--corner)) 0, 100% var(--corner), 100% calc(100% - var(--corner)), calc(100% - var(--corner)) 100%, var(--corner) 100%, 0 calc(100% - var(--corner)), 0 var(--corner));padding:clamp(1.5rem,6vw,3rem) clamp(1.25rem,5vw,2.75rem)}@keyframes letter-enter{0%{opacity:0;transform:translateY(24px)scale(.97)}}.eyebrow{color:var(--lace-soft);margin:0;font-size:.68rem;line-height:1.8}.couple{color:var(--lace);margin:.6rem 0;font-size:clamp(3rem,12vw,4.4rem);line-height:1.15}.amp{font-size:1.1em}.when-where{margin-top:1.75rem}.when-where p{margin:.15rem 0}.date{font-size:1.35rem;font-weight:600}.divider{color:var(--lace);opacity:.7;margin:1.75rem 0;font-size:1.4rem}.details{gap:1.25rem;display:grid}.detail h2{color:var(--lace);margin:0 0 .35rem;font-size:.68rem}.detail p{color:var(--lace-soft);margin:0;line-height:1.45}.rsvp{text-align:left;gap:1.25rem;display:grid}.rsvp-title{text-align:center;color:var(--lace);margin:0;font-size:.68rem;line-height:1.8}.rsvp-guest{margin:0;font-size:1.25rem;font-style:italic}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.6rem;padding:0;font-weight:600}.choice{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.choice-option{text-align:center;border:1px solid var(--lace-line);cursor:pointer;border-radius:6px;place-items:center;min-height:3.25rem;padding:.6rem;transition:background .2s,border-color .2s,color .2s;display:grid;position:relative}.choice-option:hover{border-color:var(--lace)}.choice-option.is-selected{background:var(--lace);border-color:var(--lace);color:var(--forest);font-weight:600}.choice-option input{opacity:0;pointer-events:none;position:absolute}.choice-option:has(input:focus-visible){outline:2px solid var(--lace);outline-offset:2px}.reveal{opacity:0;grid-template-rows:0fr;margin-bottom:-1.25rem;transition:grid-template-rows .4s,opacity .3s,margin .4s;display:grid}.reveal>*{overflow:hidden}.reveal.is-open{opacity:1;grid-template-rows:1fr;margin-bottom:0}.message{gap:.4rem;display:grid}.message span{font-weight:600}textarea{font:inherit;border:1px solid var(--lace-line);color:var(--lace);resize:vertical;background:#0000001f;border-radius:6px;padding:.6rem .75rem;font-size:1rem}textarea::placeholder{color:#f5f3ec8c}textarea:focus{outline:2px solid var(--lace);outline-offset:1px}.submit{background:var(--lace);color:var(--forest);cursor:pointer;border:0;border-radius:6px;padding:1rem;font-size:.8rem;font-weight:500;transition:opacity .2s,transform .1s}.submit:active:not(:disabled){transform:scale(.99)}.submit:disabled{opacity:.35;cursor:not-allowed}.error{color:#ffd9c4;margin:0}.rsvp-done{text-align:center;animation:.5s both letter-enter}.rsvp-done h2{color:var(--lace);margin:0;font-size:3.2rem}.rsvp-done p{margin:0}.link-button{font:inherit;color:var(--lace-soft);cursor:pointer;background:0 0;border:0;justify-self:center;text-decoration:underline}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;transition-delay:0s!important;animation-duration:.01ms!important;animation-delay:0s!important}}
