:root{--paper:#fef9f1;--paper-dark:#f2ede5;--ink:#423639;--wine:#844e5f;--pink:#e8a5b8;--blue:#42617d;--lilac:#6c5581}*{box-sizing:border-box}html{background:#ded9d2;scroll-behavior:smooth}body{margin:0;color:var(--ink);font:400 15px/1.6 Literata,Georgia,serif;background:radial-gradient(#ffffff66 1px,transparent 1px),#ded9d2;background-size:5px 5px}.opening{position:fixed;z-index:10;inset:0;background:#ba7d7e;overflow:hidden;transition:opacity .8s,visibility .8s}.opening video{width:100%;height:100%;object-fit:cover}.opening-control,.opening-skip{position:absolute;bottom:24px;border:1px solid #fff8;background:#36222b99;color:#fff;padding:9px 14px;border-radius:999px;font:600 11px 'Plus Jakarta Sans',sans-serif;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}.opening-control{left:24px}.opening-skip{right:24px}.opening.done{opacity:0;visibility:hidden}.letter{width:min(680px,calc(100% - 28px));margin:28px auto 38px;opacity:0;transform:translateY(28px) scale(.98);transition:opacity .8s .15s,transform .8s .15s}.opening.done~.letter{opacity:1;transform:none}.postal-head{display:flex;align-items:center;justify-content:space-between;padding:17px 20px 10px;background:#fff;border-radius:14px 14px 0 0;box-shadow:0 8px 24px #6d50530e}.postal-head div{display:grid}.label,.chapter{color:var(--wine);font:700 10px 'Plus Jakarta Sans',sans-serif;letter-spacing:.14em;text-transform:uppercase}.postal-head strong{font:italic 18px 'EB Garamond',Georgia,serif}.stamp{display:grid;place-content:center;width:56px;height:63px;border:1px dashed #b67888;background:#ffe2e9;color:var(--wine);font:700 10px/1.1 'Plus Jakarta Sans',sans-serif;text-align:center}.postal-strip{display:flex;justify-content:space-between;gap:12px;padding:8px 18px;background:#f2ede5;color:#66585a;font:700 10px 'Plus Jakarta Sans',sans-serif;letter-spacing:.05em;text-transform:uppercase}.letter-paper{background:var(--paper);padding:34px clamp(20px,5vw,46px) 44px;box-shadow:0 12px 38px #6d50532e}.letter-kicker{text-align:center;color:#bf93a0;letter-spacing:.8em}.chapter{text-align:center;margin:22px 0 4px}.letter h1{margin:0;color:var(--wine);font:500 clamp(44px,10vw,68px)/.83 'EB Garamond',Georgia,serif;letter-spacing:-.05em;text-align:center}.letter h1 i{font-weight:400}.subtitle{max-width:450px;margin:17px auto 25px;color:#5d4d50;font:italic 20px/1.3 'EB Garamond',Georgia,serif;text-align:center}.letter-copy{padding:22px;background:#f8f3eb;border:1px solid #e7ddd1;border-radius:9px}.letter-copy p{margin:0 0 12px}.letter-copy p:first-child,.signature{color:var(--wine);font:italic 22px 'EB Garamond',Georgia,serif}.signature{text-align:right;margin-bottom:0!important}.coordinates{padding:34px 0 8px}.coordinates h2,.rsvp h2{margin:0 0 14px;color:var(--wine);font:italic 26px 'EB Garamond',Georgia,serif}.detail-row{display:flex;gap:13px;margin:10px 0;padding:13px;background:#f2ede5;border-radius:9px}.detail-row b{font:600 12px 'Plus Jakarta Sans',sans-serif;color:#55454a}.detail-row p{margin:2px 0;font-size:13px}.detail-icon{display:grid;place-content:center;flex:0 0 32px;height:32px;border-radius:50%;background:#ffd9e2;color:var(--wine);font-size:18px}.detail-icon.blue{background:#cde5ff;color:var(--blue)}.detail-icon.lilac{background:#f1dbff;color:var(--lilac)}.map-link{color:var(--blue);font:700 12px 'Plus Jakarta Sans',sans-serif;text-decoration:none}.disabled{pointer-events:none;opacity:.45}.rsvp{margin-top:28px;padding:24px;background:#f8f3eb;border:1px solid #e7ddd1;border-radius:12px}.rsvp-title{text-align:center}.rsvp-title span{display:grid;place-content:center;width:34px;height:34px;margin:0 auto 5px;border-radius:50%;background:var(--wine);color:white}.rsvp h2{margin:0}.rsvp-title p{margin:2px 0 16px;color:#66585a;font-size:13px}form{display:grid;gap:12px}label{display:grid;gap:5px;color:#514346;font:700 12px 'Plus Jakarta Sans',sans-serif}input,select{width:100%;padding:11px;border:1px solid #d5c2c5;border-radius:8px;background:#fffdf9;color:var(--ink);font:400 14px Literata,serif}input:focus,select:focus{outline:3px solid #e8a5b855;border-color:var(--wine)}form button{padding:14px;border:0;border-radius:9px;background:var(--pink);color:#583240;font:700 12px 'Plus Jakarta Sans',sans-serif;cursor:pointer}.hint,.form-message{min-height:1.2em;margin:0;font-size:12px}.form-message{font-weight:700}.form-message.error{color:#93000a}.form-message.success{color:#1d6c48}.wish{margin:36px auto 0;max-width:380px;color:#66585a;font-size:12px;text-align:center}footer{padding:0 0 28px;text-align:center;font:700 11px 'Plus Jakarta Sans',sans-serif}footer a{color:#66585a}@media(max-width:600px){.letter{margin:0 auto 24px;width:100%}.postal-head{border-radius:0}.letter-paper{padding:28px 18px}.opening-control,.opening-skip{bottom:15px}.opening-control{left:14px}.opening-skip{right:14px}}@media(prefers-reduced-motion:reduce){.opening{display:none}.letter{opacity:1;transform:none;transition:none}}
.site-header{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 9px;color:var(--wine);font:600 14px 'Plus Jakarta Sans',sans-serif}.site-header em{margin-right:auto;margin-left:15px;font:italic 25px 'EB Garamond',Georgia,serif}.postal-head{border-radius:14px 14px 0 0}.stamp small{font-size:8px}.ribbon-tab{position:relative;z-index:1;width:max-content;max-width:90%;margin:-2px auto -16px;padding:5px 16px;border-radius:999px;background:#c9addf;color:#563f6a;font:600 12px 'Plus Jakarta Sans',sans-serif}.letter-paper{padding-top:45px}.letter h1{font-size:clamp(28px,6vw,39px);line-height:1.02;letter-spacing:-.03em}.letter-copy{font-size:14px}.music-box{display:flex;align-items:center;gap:10px;margin:23px 0;padding:10px;background:#f1dbff;border-radius:8px}.music-box>span{display:grid;place-content:center;flex:0 0 38px;height:38px;border-radius:50%;background:white;color:var(--lilac);font-size:18px}.music-box div{display:grid;flex:1}.music-box small,.detail-row small{font:700 9px 'Plus Jakarta Sans',sans-serif;letter-spacing:.04em}.music-box b{font:600 12px 'Plus Jakarta Sans',sans-serif;color:#543d68}.music-box button{border:0;width:35px;height:35px;border-radius:50%;background:var(--lilac);color:white;cursor:pointer}.detail-row>div{display:grid;gap:1px}.detail-row b{font:500 15px 'EB Garamond',Georgia,serif}.detail-icon.pink{background:#f8b4c7}.rsvp{background:#f8f3eb}.rsvp fieldset{display:grid;gap:8px;margin:0;padding:0;border:0}.rsvp legend{padding:0;margin-bottom:4px;font:700 12px 'Plus Jakarta Sans',sans-serif}.rsvp .radio{display:block;padding:11px;background:white;border-radius:8px;font:400 14px Literata,serif}.rsvp .radio input{width:auto;margin:0 7px 0 0}.gifts{max-width:380px;margin:35px auto;text-align:center;font-size:13px}.gifts span{display:inline-block;padding:4px 11px;border-radius:999px;background:#f2ede5;color:#66585a;font:700 10px 'Plus Jakarta Sans',sans-serif}.final-art{margin:25px 0 0;padding:9px;background:#ece8e0;border-radius:8px;box-shadow:0 5px 14px #6d50532e;text-align:center}.art-placeholder{display:grid;place-content:center;height:220px;background:linear-gradient(#efd4e8 0 61%,#45618a 61%);color:#1471cc;text-shadow:0 2px 0 #02519e;font:700 clamp(40px,11vw,78px)/.9 'Plus Jakarta Sans',sans-serif;letter-spacing:.08em}.art-placeholder small{margin-top:60px;color:white;text-shadow:none;font:500 10px 'Plus Jakarta Sans',sans-serif;letter-spacing:0}.final-art figcaption{padding:8px 3px 3px;color:#493b3d;font:italic 16px 'EB Garamond',Georgia,serif}.final-art figcaption small{font-size:12px}@media(max-width:600px){.site-header{height:55px}.postal-strip{font-size:8px}.letter-paper{padding:38px 18px 28px}.final-art{margin-top:18px}.art-placeholder{height:170px}}
