:root{color-scheme:light;--wine:#54182c;--ink:#3e2229;--muted:#806d70;--paper:#fff9f2}*{box-sizing:border-box}body{margin:0;background:#350f20;color:var(--ink);font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-height:100svh}header,footer{max-width:1220px;margin:auto;display:flex;align-items:center;justify-content:space-between;color:#e4c8bd;padding:24px 36px}header>a{font:28px Georgia,serif;color:inherit;text-decoration:none;letter-spacing:5px}header>a span{font-size:19px;font-style:italic}header>span,footer>span{font-size:12px;letter-spacing:2.5px}.invitation{max-width:1148px;margin:5px auto;display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);min-height:720px;border-radius:5px;overflow:hidden;box-shadow:0 25px 100px #16020b66}.visual{position:relative;background:#261418;min-height:100%;overflow:hidden}.visual img{width:100%;height:100%;object-fit:cover;position:absolute}.visual:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 35%,#160711b8)}.visual-caption{position:absolute;z-index:1;bottom:42px;left:38px;color:#fff6eb}.visual-caption>span{font-size:12px;letter-spacing:2px}.visual-caption p{font:italic 54px/1.08 Georgia,serif;margin:16px 0 0}.paper{background:var(--paper);padding:54px 58px;display:grid;align-items:center;position:relative}.paper:before{content:"";position:absolute;inset:16px;border:1px solid #ac816638;pointer-events:none}.scene{text-align:center;animation:enter .65s ease both}.scene[hidden]{display:none}.eyebrow{font-size:12px;letter-spacing:2.7px;color:#976c61}.seal{border:1px solid #b57d76;border-radius:50%;outline:1px solid #bc938655;outline-offset:6px;width:68px;height:68px;display:grid;place-items:center;margin:36px auto 29px;font:italic 35px Georgia,serif;background:var(--wine);color:#f2d7b8;box-shadow:0 5px 12px #54182c1a}.address{font:italic 20px Georgia,serif;margin:22px 0}h1{font:42px/1.15 Georgia,"Times New Roman",serif;letter-spacing:-1.4px;margin:26px 0 22px;font-weight:normal}.italic{display:block;font-style:italic;color:#943d50}.intro,.message{color:#705e60;margin:23px 0 30px}.message{white-space:pre-line;overflow-wrap:anywhere}.primary{display:flex;align-items:center;justify-content:center;gap:22px;width:100%;border:1px solid var(--wine);background:var(--wine);color:#fff8ee;padding:17px 16px;border-radius:3px;font:500 15px/1.45 inherit;cursor:pointer;transition:background .2s,transform .2s}.primary:hover{background:#72233e;transform:translateY(-2px)}button{font-family:inherit;font-size:14px;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #c49165;outline-offset:5px}.signature{font:italic 18px/1.6 Georgia,serif;color:#967b73;margin:28px 0 0}.details{border-top:1px solid #d9c3b855;border-bottom:1px solid #d9c3b855;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:20px 0;gap:20px;text-align:left}.details span{font-size:11px;letter-spacing:1.4px;color:#946f63}.details p{font:18px/1.5 Georgia,serif;margin:7px 0;overflow-wrap:anywhere}.dress{font-size:14px;color:var(--muted);margin:23px 0}.secondary{border:0;background:transparent;color:#815e65;padding:16px 8px;text-decoration:underline;text-underline-offset:5px;display:block;margin:auto}.note{font-size:12px;color:var(--muted);line-height:1.65}footer{padding-top:24px;padding-bottom:24px}footer button{background:transparent;border:0;color:#dfbdb9;font-size:12px;text-decoration:underline;text-underline-offset:4px}dialog{border:0;border-radius:8px;padding:28px;background:var(--paper);color:var(--ink);width:min(92vw,510px);max-height:90svh}dialog::backdrop{background:#1d071ac9;backdrop-filter:blur(5px)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font:28px Georgia,serif;margin:0}.dialog-head button{border:0;background:transparent;padding:8px}form>p{font-size:14px}label{font-size:14px;display:block;margin:14px 0 5px}input,textarea{width:100%;border:1px solid #cfb6ac;background:#fffdfa;padding:12px;color:var(--ink);border-radius:3px;font-family:inherit;font-size:16px;line-height:1.5}textarea{resize:vertical}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#24151b;color:white;box-shadow:0 4px 18px #0003;border-radius:6px;max-width:90vw;padding:12px 20px;text-align:center;font-size:14px;z-index:10}#toast:empty{display:none}@keyframes enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@media(min-width:1500px){.invitation{margin:35px auto}}@media(max-width:760px){header{padding:17px 22px}header>span{font-size:10px;letter-spacing:2px}.invitation{margin:0 15px;display:flex;flex-direction:column;min-height:0}.visual{height:190px;min-height:190px}.visual img{object-position:center 54%}.visual-caption{bottom:18px;left:24px}.visual-caption>span{font-size:10px}.visual-caption p{font-size:34px;margin:7px 0}.visual-caption p br{display:none}.paper{padding:38px 30px 36px}h1{font-size:34px;letter-spacing:-.8px}.seal{width:54px;height:54px;font-size:27px;margin:28px auto}.eyebrow{font-size:10px;letter-spacing:2px}.intro{margin:20px 0 24px}footer{padding:23px;gap:16px;flex-wrap:wrap}footer>span{font-size:9px;letter-spacing:1.2px}.signature{margin-top:23px}.details{gap:14px}.details p{font-size:17px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.date-choice{text-align:left;margin:20px 0}.date-choice label{font-size:15px;color:var(--ink)}.date-choice input{display:block;min-width:0;max-width:100%;min-height:48px;font-family:inherit;font-size:16px}.date-choice .note{margin:7px 0 0}

/* Keep native Safari controls inside the card, including their intrinsic content. */
.paper,.scene,.details>div,.date-choice,.field{min-width:0;max-width:100%}
.paper{grid-template-columns:minmax(0,1fr)}
.date-time-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}
input,textarea{box-sizing:border-box;min-width:0;max-width:100%}
input[type="date"],input[type="time"]{-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;width:100%;min-width:0;min-inline-size:0;max-inline-size:100%;height:50px;padding:10px 12px;text-align:left;font-family:inherit;font-size:16px}
input::-webkit-date-and-time-value{min-width:0;text-align:left;margin:0}
input::-webkit-datetime-edit{display:inline-flex;min-width:0;padding:0;max-width:100%}
.date-choice textarea{display:block;width:100%;font-size:16px;line-height:1.5;min-height:100px}
.optional{font-size:12px;font-weight:normal;color:var(--muted)}
@media(max-width:600px){.date-time-fields{grid-template-columns:minmax(0,1fr);gap:0}}

/* Interactive folded-paper entrance: flap, card extraction, envelope departure. */
[hidden]{display:none!important}body.letter-sealed{overflow:hidden}
.envelope-intro{position:fixed;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100svh;padding:28px 22px;background:radial-gradient(ellipse at 50% 40%,#65243c,#350f20 70%);color:#f8e8d8;overflow:hidden;transition:opacity .6s ease}
.envelope-heading{text-align:center;margin-bottom:58px;transition:opacity .35s}
.envelope-heading .eyebrow{color:#dcb29c;font-size:11px}.envelope-heading p{font:italic 34px/1.2 Georgia,serif;margin:15px 0 0}
.envelope-stage{width:min(78vw,410px);perspective:1500px}
.envelope{position:relative;width:100%;aspect-ratio:1.4;isolation:isolate}
.envelope:after{content:"";position:absolute;left:12%;right:12%;height:13px;bottom:-23px;border-radius:50%;background:#15050b66;filter:blur(8px)}
.envelope-shell{position:absolute;inset:0;display:contents}
.envelope-back{position:absolute;inset:0;background:repeating-linear-gradient(0deg,#e5d6c5 0 1px,#e9dece 1px 3px);border-radius:3px;z-index:0;box-shadow:0 12px 24px #15050b22}
.envelope-letter{position:absolute;inset:7% 6%;z-index:2;border-radius:2px;background:#fffaf3;border:1px solid #e5d6c5;box-shadow:0 0 9px #58352218;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#6b3140;padding:18px;transform-origin:50% 50%}
.envelope-letter>span:first-child{font-size:11px;letter-spacing:1.8px;text-transform:uppercase}.envelope-letter p{font:italic 25px/1.4 Georgia,serif;margin:20px 0 10px}.letter-heart{font-size:26px}
.envelope-pocket{position:absolute;inset:0;z-index:3;border-radius:2px;background:linear-gradient(90deg,#f4e8d9 0%,#fffbf2 49.7%,#eee0cf 50%,#f9eddf 100%);clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%)}
.envelope-pocket:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#fff6ea,#ead8c3);clip-path:polygon(0 100%,50% 49%,100% 100%)}
.envelope-flap{position:absolute;inset:0 0 44%;z-index:4;transform-origin:50% 0;transform-style:preserve-3d;perspective:1500px}
.flap-face,.flap-inner{position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 100%);backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flap-face{background:linear-gradient(170deg,#fffaf1,#ebdbc7);filter:drop-shadow(0 2px 1px #46302822)}
.flap-inner{clip-path:polygon(0 100%,100% 100%,50% 0);transform:rotateX(180deg);background:repeating-linear-gradient(0deg,#ded0be 0 1px,#ece1d2 1px 3px)}
.wax-seal{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);z-index:5;width:70px;height:70px;border-radius:50%;border:3px solid #8d354b;background:radial-gradient(circle at 35% 25%,#a44a5f,#672038 70%);color:#f4d3ae;box-shadow:0 4px 9px #48202b44,inset 0 0 0 3px #b7626b66;display:grid;place-items:center;cursor:pointer}
.wax-seal span{display:grid;place-items:center;width:50px;height:50px;border:1px solid #cb8a7a88;border-radius:50%;font:italic 26px Georgia,serif;letter-spacing:-2px;padding-right:2px}.wax-seal:hover{filter:brightness(1.08)}.wax-seal:focus-visible{outline:3px solid #fff1ca;outline-offset:7px}
.seal-hint{font-size:14px;margin:38px 0 0;color:#e7c2b5;transition:opacity .35s}.envelope-signature{font:italic 18px Georgia,serif;color:#c5988e;margin:15px 0 0;transition:opacity .35s}
.is-opening .envelope-heading,.is-opening .seal-hint,.is-opening .envelope-signature{opacity:0}
.is-opening .wax-seal{animation:reference-seal 3.4s linear forwards;pointer-events:none}
.is-opening .envelope-flap{animation:reference-flap 3.4s linear forwards}
.is-opening .envelope-back,.is-opening .envelope-pocket{animation:reference-shell 3.4s linear forwards}
.is-opening .envelope-letter{animation:reference-card 3.4s linear forwards}
.is-opening .envelope:after{animation:reference-shadow 3.4s linear forwards}
@keyframes reference-seal{0%{opacity:1}7%,100%{opacity:0}}
@keyframes reference-flap{0%,7%{transform:translateY(0) rotateX(0deg);z-index:4}8%{animation-timing-function:cubic-bezier(.4,0,.2,1)}24%{z-index:4}25%{z-index:1}42%,57%{transform:translateY(0) rotateX(180deg);z-index:1}58%{animation-timing-function:cubic-bezier(.45,0,.8,.6)}90%,100%{transform:translateY(100svh) rotateX(180deg);z-index:1}}
@keyframes reference-shell{0%,57%{transform:translateY(0)}58%{animation-timing-function:cubic-bezier(.45,0,.8,.6)}90%,100%{transform:translateY(100svh)}}
@keyframes reference-card{0%,39%{transform:translateY(0) scale(1)}40%{animation-timing-function:cubic-bezier(.25,.1,.25,1)}65%{transform:translateY(-49%) scale(1)}66%{animation-timing-function:cubic-bezier(.25,.1,.25,1)}90%,100%{transform:translateY(-22%) scale(1.12)}}
@keyframes reference-shadow{0%,54%{opacity:1}80%,100%{opacity:0}}
.envelope-intro.is-revealing{opacity:0;pointer-events:none}.invitation-revealed{animation:invitation-fade .6s ease both}
@keyframes invitation-fade{from{opacity:0}to{opacity:1}}
.scene>*,.visual-caption{animation:soft-arrival .6s ease both}.scene>:nth-child(2){animation-delay:.08s}.scene>:nth-child(3){animation-delay:.16s}.scene>:nth-child(4){animation-delay:.24s}.scene>:nth-child(n+5){animation-delay:.32s}
@keyframes soft-arrival{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
input:focus,textarea:focus{outline:2px solid #a25a6b;outline-offset:2px;background:#fffdf9}
.heart-celebration{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:4}.heart-celebration span{position:absolute;bottom:-50px;left:var(--x);font:30px Georgia,serif;color:#b77483;opacity:0;animation:heart-rise 3.5s ease-out var(--delay) both}
@keyframes heart-rise{0%{opacity:0;transform:translateY(0) rotate(-10deg)}15%{opacity:.65}75%{opacity:.45}100%{opacity:0;transform:translateY(-85svh) rotate(20deg)}}
@media(max-width:600px){.envelope-heading p{font-size:29px}.envelope-stage{width:min(78vw,340px)}.envelope-letter p{font-size:21px}.envelope-letter>span:first-child{font-size:10px;letter-spacing:1px}.wax-seal{width:64px;height:64px}.wax-seal span{width:45px;height:45px;font-size:24px}}
@media(max-height:550px){.envelope-stage{width:min(45vh,300px)}.envelope-heading{margin-bottom:25px}.envelope-heading p{font-size:24px}.seal-hint{margin-top:24px}.envelope-letter p{font-size:17px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.heart-celebration{display:none}}
