:root{font-family:Arial,Helvetica,sans-serif;color:#332f2c;background:#ebe6dc;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}button{font:inherit}.viewport{min-height:100dvh;display:flex;justify-content:center;align-items:stretch;padding:0 16px}.invitation{position:relative;isolation:isolate;overflow:hidden;width:100%;max-width:475px;min-height:100dvh;background:#f8f6f0;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(24px,4.5vh,46px) clamp(20px,6vw,40px) clamp(25px,4.5vh,43px);box-shadow:0 0 80px #59493816}.invitation:before,.invitation:after{content:"";pointer-events:none;position:absolute;border:1px solid #b29b8061;border-radius:50%;width:500px;height:500px;z-index:-1}.invitation:before{top:-370px;left:-330px}.invitation:after{right:-405px;bottom:-350px}.top-rule,.bottom-rule{display:flex;align-items:center;justify-content:space-between;color:#8e826f;font-size:9px;letter-spacing:2.1px;font-weight:600}.top-rule{gap:15px}.mini-flower{font-size:14px;color:#b29a7d;line-height:1}.bottom-rule{gap:7px}.foot-mark{font-family:Georgia,serif;color:#9d866b;font-size:21px;font-weight:400;letter-spacing:0}.center-piece{display:flex;align-items:center;flex-direction:column;text-align:center;gap:0;margin:12px 0}.artwork{width:min(240px,65vw);height:min(240px,65vw);position:relative;margin:0 auto clamp(8px,2vh,24px);display:grid;place-items:center}.line-art{width:100%;height:100%;filter:drop-shadow(0 8px 8px #ae957211)}.drawn-heart path:first-child{stroke-dasharray:240;stroke-dashoffset:240;animation:draw 3s .3s ease-in-out forwards}@keyframes draw{to{stroke-dashoffset:0}}.petal{position:absolute;display:block;width:13px;height:19px;background:#cab69d99;border-radius:100% 0;transform:rotate(32deg);box-shadow:inset 1px 1px 4px #b8a48a22;animation:float 5s ease-in-out infinite}.petal-a{top:15%;left:24%;animation-delay:-1.5s}.petal-b{right:16%;bottom:22%;width:10px;height:15px;animation-delay:-3s;transform:rotate(-40deg)}.petal-c{left:12%;bottom:29%;width:8px;height:12px;animation-delay:-.6s;opacity:.6}@keyframes float{0%,to{translate:0 0;rotate:-8deg}50%{translate:0 -11px;rotate:8deg}}.pin-star{position:absolute;font:25px Georgia,serif;color:#bd9f7b;animation:twinkle 3.5s ease-in-out infinite}.pin-one{right:19%;top:17%}.pin-two{left:21%;bottom:11%;font-size:17px;animation-delay:1.5s}@keyframes twinkle{0%,to{opacity:.25;scale:.7}50%{opacity:1;scale:1.15}}.eyebrow{font-size:9px;letter-spacing:2.7px;color:#9c8d78;font-weight:600;margin:4px 0 20px}h1{font-family:Georgia,Times New Roman,serif;font-weight:400;font-size:clamp(39px,8.7vw,51px);line-height:1.09;letter-spacing:-2.5px;margin:0;color:#3e3833}h1 em{font-weight:400;color:#947963}h1 .period{color:#b99a79}.subtitle{font-family:Georgia,serif;font-size:14px;line-height:1.8;color:#867a70;margin:25px 0 30px}.load-group{display:flex;flex-direction:column;align-items:center;gap:12px;width:190px}.load-track{background:#e8e1d7;height:2px;width:100%;overflow:hidden;border-radius:8px}.load-line{display:block;background:#aa8b67;height:100%;width:40%;transform:translate(-110%);animation:loading 2.3s cubic-bezier(.6,0,.4,1) infinite}@keyframes loading{0%{transform:translate(-110%)}to{transform:translate(360%)}}.load-copy{font-size:8px;color:#9e8b75;letter-spacing:1.6px;font-weight:600;white-space:nowrap}.sparkle-button{margin-top:32px;border:1px solid #d9cbba;background:#fff7;border-radius:100px;padding:12px 18px;color:#816c58;font-size:12px;letter-spacing:.1px;cursor:pointer;transition:background .2s,transform .2s;touch-action:manipulation}.sparkle-button span{font-size:17px;padding-right:5px}.sparkle-button:hover,.sparkle-button:focus-visible{background:#eee5d8;transform:translateY(-2px)}.sparkle-button:focus-visible{outline:2px solid #947963;outline-offset:3px}.sparkle-button.pressed{animation:press .5s ease-out}@keyframes press{50%{scale:.97}}.tap-sparkle{position:absolute;left:50%;top:50%;pointer-events:none;color:#b18c63;font:21px Georgia,serif;animation:sparkle-pop 1.2s var(--delay) ease-out both;z-index:2}@keyframes sparkle-pop{0%{opacity:0;transform:translate(0) scale(.4)}25%{opacity:1}to{opacity:0;transform:translate(var(--x),var(--y)) scale(1.3)}}@media(max-width:500px){.viewport{padding:0}.invitation{box-shadow:none}.eyebrow{margin-bottom:16px}.artwork{margin-bottom:14px}}@media(max-height:690px){.invitation{padding-top:16px;padding-bottom:15px}.artwork{width:160px;height:160px;margin-bottom:3px}.eyebrow{margin-bottom:10px}h1{font-size:37px}.subtitle{margin:14px 0}.sparkle-button{margin-top:17px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.drawn-heart path:first-child{stroke-dashoffset:0}}
