.petal-celebration{position:fixed;inset:0;z-index:100;overflow:hidden;pointer-events:none;contain:strict}.celebration-petal{position:absolute;left:var(--petal-origin-x);top:var(--petal-origin-y);width:var(--petal-width);height:calc(var(--petal-width) * 1.65);border-radius:78% 18% 72% 28%;border:1px solid rgb(152 164 136/14%);background:linear-gradient(135deg,#fffff7,#e8e5d9);opacity:0;transform-origin:40% 75%;animation:wedding-petal-fall 2.5s var(--petal-delay) cubic-bezier(.22,.61,.36,1) both}.celebration-petal:nth-child(3n+2){background:linear-gradient(135deg,#dce6d4,#9fb49a);border-radius:84% 12% 80% 20%}.celebration-petal:nth-child(3n){background:linear-gradient(135deg,#fff7e9,#dbc9a9)}@keyframes wedding-petal-fall{0%{opacity:0;transform:translate3d(-50%,-50%,0) rotate(var(--petal-start-angle)) scale(.7)}12%{opacity:.82}38%{opacity:.72;transform:translate3d(var(--petal-middle),var(--petal-lift),0) rotate(var(--petal-middle-angle)) scale(1)}to{opacity:0;transform:translate3d(var(--petal-spread),var(--petal-fall),0) rotate(var(--petal-end-angle)) scale(.85)}}@media (prefers-reduced-motion:reduce){.petal-celebration{display:none}.celebration-petal{animation:none}}.auto-reading-control{position:fixed;z-index:34;left:23px;bottom:25px;display:inline-flex;align-items:center;gap:9px;min-height:42px;padding:10px 14px;border:1px solid #bbc8b8;border-radius:28px;background:#faf9f6f2;color:var(--primary);box-shadow:0 4px 20px #2f493b10;backdrop-filter:blur(12px);font-size:11px;letter-spacing:.5px;cursor:pointer;animation:auto-reading-arrive .6s ease both}.auto-reading-control:focus-visible{outline:2px solid var(--primary);outline-offset:4px}.auto-reading-mark{display:flex;gap:3px;width:10px;height:11px}.auto-reading-mark i{width:2px;height:11px;border-radius:1px;background:currentColor;opacity:.75}@keyframes auto-reading-arrive{0%{opacity:0}to{opacity:1}}@media (max-width:700px){.auto-reading-control{left:13px;bottom:calc(128px + env(safe-area-inset-bottom));min-height:38px;padding:9px 12px;font-size:10px}}@media (prefers-reduced-motion:reduce){.auto-reading-control{display:none;animation:none}}.reading-progress{position:fixed;z-index:45;top:0;left:0;right:0;height:2px;pointer-events:none}.reading-progress>div{width:100%;height:100%;transform:scaleX(0);transform-origin:left;background:#839888}.invitation-letter{width:min(770px,calc(100% - 80px));margin:85px auto;border:1px solid #c7d2c5;background:#f6f5ef;box-shadow:8px 9px 0 #e8ebe4}.letter-envelope{position:relative;isolation:isolate;text-align:center;padding:58px 24px 30px;overflow:hidden}.letter-flap{position:absolute;z-index:-1;inset:0 0 auto;height:105px;background:linear-gradient(168deg,#e7ebe2,#f0f1e9);clip-path:polygon(0 0,100% 0,50% 100%);transition:opacity .6s ease,transform .7s ease;transform-origin:top}.is-open .letter-flap{opacity:.25;transform:scaleY(.5)}.letter-flower{position:absolute;width:100px;height:100px;color:#a4b3a0;right:-10px;bottom:12px;opacity:.5;pointer-events:none}.letter-envelope .eyebrow{font-size:10px;position:relative}.letter-envelope h2{font:26px/1.8 var(--serif);letter-spacing:2px;margin-top:16px}.letter-opener{display:flex;flex-direction:column;gap:15px;align-items:center;background:none;border:0;margin:23px auto 0;padding:4px 14px;font-size:12px;letter-spacing:1px;color:#687d6e}.letter-seal{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:#889d8b;color:#faf9ef;border:4px double #c9d2c1;box-shadow:0 3px 9px #455e4820;transition:transform .4s ease,background .4s ease}.letter-opener:hover .letter-seal{transform:rotate(-8deg) scale(1.07);background:#6b826f}.letter-opener:focus-visible,.petal-button:focus-visible{outline:2px solid var(--primary);outline-offset:5px}.letter-reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows .75s cubic-bezier(.2,.65,.3,1)}.is-open .letter-reveal{grid-template-rows:1fr}.letter-reveal>div{overflow:hidden;min-height:0}.letter-paper{margin:0 24px 24px;padding:36px 30px 27px;text-align:center;border:1px solid #dce1d5;background:#fffdf8;opacity:0;transform:translateY(14px);transition:opacity .6s ease .15s,transform .7s ease}.is-open .letter-paper{opacity:1;transform:translateY(0)}.letter-salutation{display:block;font:20px/1.8 var(--serif);color:var(--primary);margin-bottom:22px}.letter-paper>p{font:16px/2.3 var(--serif);color:#66736b;margin:0 0 20px;letter-spacing:1px}.letter-signature{display:block;font:italic 29px/1.7 var(--english);color:#87947c;margin:30px 0}.letter-actions{gap:32px;border-top:1px solid #e5e8df;padding-top:25px}.letter-actions,.letter-actions>a,.petal-button{display:flex;justify-content:center;align-items:center}.letter-actions>a,.petal-button{gap:9px;font-size:13px;color:var(--primary)}.petal-button{border:1px solid #bac7b4;background:#eef1e8;padding:11px 17px;border-radius:30px;transition:background .2s}.petal-button:hover{background:#e1e9dc}.petal-button svg{transition:transform .6s}.petal-button:hover svg{transform:rotate(75deg)}.letter-paper>.letter-thanks{font-size:11px;margin:16px 0 0;color:#899585;line-height:1.8;letter-spacing:0}.music-credit{display:block;max-width:660px;margin:24px auto 0;color:#879181;font:10px/1.9 PingFang SC,sans-serif;letter-spacing:0}.music-credit a{text-decoration:underline;text-underline-offset:3px}.success-icon{animation:reply-bloom .65s ease both}@keyframes reply-bloom{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media(max-width:700px){.invitation-letter{width:calc(100% - 46px);margin:55px auto;box-shadow:5px 6px 0 #e8ebe4}.letter-envelope{padding:44px 15px 25px}.letter-envelope h2{font-size:21px;letter-spacing:1px}.letter-envelope .eyebrow{font-size:8px;letter-spacing:1.8px}.letter-flower{width:75px;height:75px;right:-4px;bottom:20px}.letter-opener{font-size:11px;margin-top:20px}.letter-paper{margin:0 12px 12px;padding:27px 14px 23px}.letter-paper>p{font-size:14px;letter-spacing:.4px}.letter-salutation{font-size:19px}.letter-signature{font-size:25px;margin:20px 0}.letter-actions{gap:17px;flex-wrap:wrap;padding-top:20px}.letter-actions>a,.petal-button{font-size:11px}.petal-button{padding:9px 13px}}@media(prefers-reduced-motion:reduce){.success-icon{animation:none}.letter-flap,.letter-paper,.letter-reveal,.letter-seal,.petal-button svg{transition:none}}