/* v6.6.0: one source for paper, opening, controls and dialogs. */
:root{--wedding-paper-image:url('/thiep-moi/assets/reference/paper-bg-fast.webp')}
html.ta-auto-scroll-active,html.ta-auto-scroll-active body{scroll-behavior:auto!important}
main>div>div,.motdoi-opening-card,#invitation .relative.mt-\[30px\],.clone-gift-section,.clone-gift-dialog,.sig-dialog{background-color:var(--site-paper,#f6edda)!important;background-image:var(--wedding-paper-image)!important;background-position:center top!important;background-size:100% auto!important;background-repeat:repeat-y!important}
html.wedding-opening-lock,html.wedding-opening-lock body,html.clone-modal-open,html.clone-modal-open body{overflow:hidden!important;overscroll-behavior:none}
html.wedding-admin-preview-boot #wedding-opening{display:none!important}
#wedding-opening.motdoi-opening{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto;background:radial-gradient(900px 600px at 50% 20%,#7e1518,#340607);transition:opacity .55s ease,transform .75s ease;isolation:isolate}
#wedding-opening:before{content:'';position:absolute;inset:0;background-image:radial-gradient(#e6c87e12 1px,transparent 1.5px);background-size:26px 26px;pointer-events:none}
.motdoi-opening-card{position:relative;width:min(100%,360px);flex-shrink:0;margin:auto;padding:11px;border-radius:22px;box-shadow:0 30px 70px #0005,0 0 0 1px #e6c87e80;max-height:calc(100svh - 40px);overflow:auto;scrollbar-width:thin}
.motdoi-opening-inner{display:flex;flex-direction:column;align-items:center;position:relative;border:1.5px solid #a31e23b3;border-radius:14px;padding:26px 24px 32px;text-align:center;box-shadow:inset 0 0 0 4px #f6edda,inset 0 0 0 5px #c9a24b80;min-height:0}
.motdoi-opening-knot{width:108px;height:108px;object-fit:contain;display:block;margin:0 auto 20px;transform-origin:top center;animation:shy-knot-sway 4.5s ease-in-out infinite}
.motdoi-opening-eyebrow{font:400 10px/1.3 'Be Vietnam Pro',sans-serif;letter-spacing:.36em;color:#a31e23;margin:5px 0 12px}
.motdoi-opening-name{width:100%;font:400 42px/1.25 'Great Vibes',cursive;color:#7e1518;overflow-wrap:anywhere}
.motdoi-opening-amp{font:italic 20px/1.3 'Cormorant Garamond',serif;color:#c9a24b;margin:4px 0}
.motdoi-opening-rule{display:flex;align-items:center;gap:10px;margin:20px 0 14px}.motdoi-opening-rule i{width:40px;height:1px;background:linear-gradient(90deg,transparent,#c9a24b)}.motdoi-opening-rule i:last-child{transform:rotate(180deg)}.motdoi-opening-rule b{width:6px;height:6px;background:#c9a24b;transform:rotate(45deg)}
.motdoi-opening-invite-label{font-size:12px;color:#6b5744}.motdoi-opening-guest{width:100%;min-height:32px;margin-top:7px;font:600 23px/1.35 'Cormorant Garamond',serif;color:#3e2b22;overflow-wrap:anywhere}
.motdoi-opening-seal{display:grid;place-items:center;width:88px;height:88px;flex:0 0 88px;margin:22px auto 0;border:0;border-radius:50%;padding:6px;background:radial-gradient(circle at 35% 30%,#a82227,#7e1518 72%);box-shadow:0 0 0 6px #c9a24b22,0 12px 24px #34060740;cursor:pointer;color:#e6c87e}
.motdoi-opening-seal span{display:grid;place-items:center;width:76px;height:76px;border:2px solid #c9a24b;border-radius:50%;font:700 37px/1 serif;color:#e6c87e}.motdoi-opening-seal:active{transform:scale(.97)}
.motdoi-opening-hint{margin-top:17px;font:500 10px/1.5 'Be Vietnam Pro',sans-serif;letter-spacing:.22em;color:#a31e23}
.opening-message{margin:10px 0 0;font-size:11px;line-height:1.8;color:#80665c}.opening-date{margin-top:12px;font:600 17px/1.3 'Cormorant Garamond',serif;color:#a47a3d;letter-spacing:3px}.opening-date:empty{display:none}.opening-paper-label{font-size:9px;letter-spacing:3px;color:#a47a3d;margin-bottom:12px}.opening-cover-photo{width:150px;height:100px;object-fit:cover;border-radius:10px;margin-bottom:14px}
#wedding-opening.opening-leave{opacity:0;transform:translateY(-24px);pointer-events:none}
.clone-overlay{z-index:9000!important;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));overflow:auto;overscroll-behavior:contain}.clone-overlay[hidden]{display:none!important}.clone-toast{z-index:11000;border-radius:14px;width:max-content;max-width:calc(100vw - 32px);text-align:center}
#clone-guestbook-modal.clone-modal-wrap{padding:20px 14px;align-items:center}
.sig-dialog{width:min(100%,480px);min-height:0;max-height:calc(100dvh - 40px);overflow:auto;margin:auto;border-radius:22px;padding-bottom:18px;box-shadow:0 25px 80px #0005}
.sig-progress{height:auto;padding:24px 64px 20px 24px;align-items:center;gap:10px;position:sticky;top:0;background:#fff9ed;z-index:5}.sig-progress>span{width:38px;height:38px;flex:0 0 38px;font-size:15px}.sig-progress>i{flex:1;margin:0;height:2px}.sig-progress>button{right:14px;top:23px;width:36px;height:36px;font-size:27px;border-radius:50%;background:#7e15180c;color:#7e1518}
.sig-step{padding:22px 24px 4px}.sig-step h3{font-size:20px;margin-bottom:18px}.sig-bottom-actions{position:sticky;bottom:-4px;z-index:3;padding:12px 0 4px;background:#f6edda;gap:10px}.sig-bottom-actions button{min-height:44px}.sig-btn.red,.gift-copy{background:var(--site-primary,#7e1518);color:white}.sig-btn.light{background:white;color:#49362f}
#signature-canvas{width:100%;height:auto;aspect-ratio:900/480;border:1px dashed #b7897d;border-radius:12px;background:#fff}#signature-canvas.light-ink{background:#514743}
.sig-side button.active{background:#7e1518;color:white;border-color:#7e1518}.sig-reposition-head{padding:22px 60px 0 24px;position:relative}.sig-reposition-head h3{margin:4px 0}.sig-reposition-head p{font-size:12px}.sig-reposition-head>button{position:absolute;right:16px;top:20px;border:0;background:transparent;font-size:28px;color:#7e1518}
.clone-gift-modal{align-items:center}.clone-gift-dialog{width:min(620px,100%);max-height:calc(100dvh - 40px);margin:auto;padding:30px 22px 24px;border:1px solid #dbc4a0;border-radius:22px}.clone-gift-dialog .rsvp-close{position:absolute;top:12px;right:12px;width:36px;height:36px;border:0;border-radius:50%;background:#7e15180d;color:#7e1518;font-size:26px}
.gift-accounts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:14px;margin-top:22px}.gift-account{min-width:0;background:#fffcf6;border:1px solid #e1ceb0;border-radius:16px;padding:16px 12px}.gift-account h4{margin:0 0 12px;color:#7e1518;font:600 22px/1.2 'Cormorant Garamond',serif}.gift-account .clone-gift-qr{width:100%;height:auto;max-width:230px;aspect-ratio:1;object-fit:contain;margin:0 auto;padding:8px;border-radius:8px}.gift-account .clone-bank-details{margin:12px 0}.gift-account .clone-bank-details>div{flex-direction:column;gap:3px;padding:8px}.gift-account .clone-bank-details b{text-align:left;color:#3e2b22;user-select:text}.gift-copy{width:100%;min-height:42px;border:0;border-radius:9px;font:600 12px/1.4 'Be Vietnam Pro',sans-serif;padding:10px;cursor:pointer}
[data-side]{min-height:44px}.clone-side-active{background:#e6c87e!important;color:#4a0a0d!important}.clone-side-idle{background:transparent!important;color:#fff8e8!important}button:focus-visible,a:focus-visible{outline:3px solid #c9a24b;outline-offset:3px}.calendar-day{display:grid;place-items:center;aspect-ratio:1;color:#3e2b22}.calendar-wedding-day{background:#7e1518;color:#fff8e8;border-radius:50%}.ta-lunar-date{display:block;font-size:18px!important;line-height:1.62!important;font-weight:500;letter-spacing:.01em;color:#8a7050!important;margin-top:12px!important;text-wrap:balance}.ta-calendar-heart-day{position:relative!important;isolation:isolate;overflow:visible;display:grid!important;place-items:center!important;background:transparent!important;box-shadow:none!important;color:#fff8e8!important;font-weight:700}.ta-calendar-heart-day::before{content:'';position:absolute;left:50%;top:50%;width:84%;height:84%;transform:translate(-50%,-50%);transform-origin:center center;background-repeat:no-repeat;background-position:center;background-size:100% 100%;animation:ta-heart-beat 1.45s ease-in-out infinite;filter:drop-shadow(0 6px 10px rgba(126,21,24,.22));z-index:0}.ta-calendar-heart-secondary{color:#fff8e8!important}.ta-calendar-heart-secondary::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath fill='%237e1518' d='M50 89 43.3 82.8C18.7 60.1 3 45.6 3 27.8 3 13.3 14.3 2 28.8 2c8.2 0 16.1 3.8 21.2 9.8C55.1 5.8 63 2 71.2 2 85.7 2 97 13.3 97 27.8 97 45.6 81.3 60.1 56.7 82.8Z'/%3E%3C/svg%3E")}.ta-calendar-heart-major::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath fill='%237e1518' d='M50 89 43.3 82.8C18.7 60.1 3 45.6 3 27.8 3 13.3 14.3 2 28.8 2c8.2 0 16.1 3.8 21.2 9.8C55.1 5.8 63 2 71.2 2 85.7 2 97 13.3 97 27.8 97 45.6 81.3 60.1 56.7 82.8Z'/%3E%3C/svg%3E")}.ta-calendar-day-label{position:absolute;inset:0;display:grid;place-items:center;z-index:1;font-size:1.14em;line-height:1;text-shadow:0 1px 2px rgba(255,252,243,.25)}.ta-calendar-heart-secondary .ta-calendar-day-label{text-shadow:0 1px 3px rgba(0,0,0,.14)}.ta-calendar-heart-major .ta-calendar-day-label{text-shadow:0 1px 3px rgba(0,0,0,.14)}@keyframes ta-heart-beat{0%,100%{transform:translate(-50%,-50%) scale(1)}14%{transform:translate(-50%,-50%) scale(1.07)}28%{transform:translate(-50%,-50%) scale(1)}42%{transform:translate(-50%,-50%) scale(1.14)}70%{transform:translate(-50%,-50%) scale(.98)}}
#clone-gift-modal .clone-gift-dialog .clone-gift-thanks{font-size:12.5px!important;line-height:1.65!important;font-weight:400!important;max-width:360px;margin:20px auto 0!important;padding:0 8px!important}
@media(max-width:430px){#wedding-opening.motdoi-opening{padding:12px}.motdoi-opening-card{max-height:calc(100svh - 24px)}.motdoi-opening-inner{padding:24px 18px 28px}.motdoi-opening-name{font-size:40px}.motdoi-opening-knot{width:100px;height:100px;margin-bottom:16px}.sig-dialog{border-radius:18px}.sig-step{padding:20px 18px 4px}.sig-progress{padding-left:18px}.clone-gift-dialog h3{font-size:32px}.ta-lunar-date{font-size:17px!important}.ta-calendar-heart-day::before{width:86%;height:86%}}
@media(max-height:650px){.motdoi-opening-knot{width:74px;height:74px;margin-bottom:10px}.motdoi-opening-inner{padding-top:18px;padding-bottom:20px}.motdoi-opening-name{font-size:36px}.motdoi-opening-rule{margin-top:12px}.motdoi-opening-seal{width:76px;height:76px;flex-basis:76px;margin-top:14px}.motdoi-opening-seal span{width:64px;height:64px;font-size:32px}}
@media(prefers-reduced-motion:reduce){#wedding-opening,.motdoi-opening-knot{animation:none!important;transition:none!important}}

/* v7.0.12 · Cinematic signature success fireworks */
.guestbook-success-celebration{position:fixed;inset:0;z-index:12050;pointer-events:none;overflow:hidden;isolation:isolate;contain:layout paint style}
.guestbook-celebration-shade{position:absolute;inset:0;z-index:0;opacity:0;background:radial-gradient(circle at 50% 42%,rgba(31,8,15,.14),rgba(5,3,8,.34) 68%,rgba(0,0,0,.46));transition:opacity 1.2s cubic-bezier(.22,.61,.36,1);will-change:opacity}
.guestbook-success-celebration.is-fireworks .guestbook-celebration-shade{opacity:1}
.guestbook-fireworks{position:absolute;inset:0;z-index:1;width:100%;height:100%;display:block;opacity:0;filter:saturate(1.28) contrast(1.08) brightness(1.05);transition:opacity .42s ease;will-change:opacity;mix-blend-mode:screen}
.guestbook-success-celebration.is-fireworks .guestbook-fireworks{opacity:1}
.guestbook-success-celebration.fireworks-ending .guestbook-fireworks{opacity:0;transition-duration:1.25s;transition-timing-function:ease-in-out}
.guestbook-success-celebration.fireworks-ending .guestbook-celebration-shade{opacity:0;transition-duration:1.25s;transition-timing-function:ease-in-out}
.guestbook-success-card{position:absolute;z-index:2;left:50%;top:50%;width:min(520px,calc(100vw - 34px));padding:26px 28px 27px;text-align:center;color:#fff8ef;background:linear-gradient(145deg,rgba(126,21,24,.985),rgba(69,7,12,.975));border:1px solid rgba(230,200,126,.8);border-radius:24px;box-shadow:0 26px 90px rgba(52,6,7,.46),0 0 0 7px rgba(230,200,126,.08),inset 0 0 0 1px rgba(255,255,255,.08);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:0;visibility:hidden;transform:translate(-50%,-44%) scale(.92);transition:opacity .42s ease,transform .52s cubic-bezier(.2,.9,.25,1.08),visibility .42s linear;will-change:opacity,transform}
.guestbook-success-celebration.show-thanks .guestbook-success-card{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}
.guestbook-success-celebration.thanks-ending .guestbook-success-card{opacity:0;transform:translate(-50%,-47%) scale(.97);transition-duration:.45s}
.guestbook-success-card:before{content:'✦';display:grid;place-items:center;width:48px;height:48px;margin:0 auto 13px;border-radius:50%;color:#7e1518;background:linear-gradient(145deg,#fff1b9,#dfb957);box-shadow:0 8px 28px rgba(230,200,126,.28);font-size:21px}
.guestbook-success-card strong{display:block;color:#ffe6a8;font:700 clamp(20px,4vw,27px)/1.3 'Be Vietnam Pro',sans-serif;letter-spacing:.01em;text-wrap:balance}
.guestbook-success-card span{display:block;max-width:430px;margin:11px auto 0;font:500 clamp(13px,2.8vw,15px)/1.72 'Be Vietnam Pro',sans-serif;color:#fff8ef;text-wrap:balance}
@media(max-width:430px){.guestbook-success-card{width:calc(100vw - 28px);padding:22px 20px 23px;border-radius:20px}.guestbook-success-card:before{width:43px;height:43px;margin-bottom:11px}.guestbook-fireworks{filter:saturate(1.2) contrast(1.06)}}
@media(prefers-reduced-motion:reduce){.guestbook-celebration-shade,.guestbook-fireworks,.guestbook-success-card{transition-duration:.15s!important}.guestbook-fireworks{filter:none}.guestbook-success-card{transform:translate(-50%,-50%)!important}}

/* v7.0.14 · Desktop-safe fireworks rendering safeguards */
.guestbook-fireworks[data-fireworks-profile="minimal"],
.guestbook-fireworks[data-fireworks-profile="low"],
.guestbook-fireworks[data-fireworks-profile="reduced"]{filter:none;mix-blend-mode:normal}
.guestbook-success-celebration[data-fireworks-profile="minimal"] .guestbook-success-card,
.guestbook-success-celebration[data-fireworks-profile="low"] .guestbook-success-card,
.guestbook-success-celebration[data-fireworks-profile="reduced"] .guestbook-success-card{backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:0 18px 54px rgba(52,6,7,.36),0 0 0 4px rgba(230,200,126,.06)}
.guestbook-success-celebration[data-fireworks-profile="minimal"] .guestbook-celebration-shade,
.guestbook-success-celebration[data-fireworks-profile="low"] .guestbook-celebration-shade{background:rgba(3,2,5,.36)}

/* v7.0.17 · Smooth dim -> faster Finale -> fade back -> resume auto-scroll */
.guestbook-fireworks-stage{position:absolute;inset:0;z-index:1;overflow:hidden;opacity:0;background:transparent;transition:opacity .42s ease;will-change:opacity;contain:strict}
.guestbook-success-celebration.is-fireworks .guestbook-fireworks-stage{opacity:1}
.guestbook-success-celebration.fireworks-ending .guestbook-fireworks-stage{opacity:0;transition-duration:1.25s;transition-timing-function:ease-in-out}
.guestbook-fireworks-stage .guestbook-fireworks{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:1!important;filter:none!important;mix-blend-mode:screen!important;will-change:auto}
.guestbook-success-celebration.fireworks-ending .guestbook-fireworks-stage .guestbook-fireworks{opacity:1!important}
.guestbook-fireworks-main{pointer-events:none}
.guestbook-fireworks-trails{pointer-events:none}
@media(max-width:720px){.guestbook-fireworks-stage{transform:translateZ(0);backface-visibility:hidden}}

/* v7.5.8: one centered column for QR, account details and copy action. */
#clone-gift-modal .gift-account{box-sizing:border-box;min-width:0}
#clone-gift-modal .gift-account .clone-bank-details{width:100%;max-width:none;margin:12px auto;box-sizing:border-box}
#clone-gift-modal .clone-bank-details>div{box-sizing:border-box;min-width:0;width:100%;align-items:center;text-align:center}
#clone-gift-modal .clone-bank-details span,#clone-gift-modal .clone-bank-details b{max-width:100%;text-align:center;overflow-wrap:anywhere}
#clone-gift-modal .clone-qr-visual{box-sizing:border-box;max-width:100%;margin-left:auto;margin-right:auto}
#clone-gift-modal .gift-copy{box-sizing:border-box}
#music-toggle,#wedding-slide-link{left:max(14px,env(safe-area-inset-left))!important;right:auto!important}
html[data-music-position="right"] #music-toggle,html[data-music-position="right"] #wedding-slide-link{left:auto!important;right:max(14px,env(safe-area-inset-right))!important}
#music-toggle[hidden]{display:none!important}
#wedding-slide-link{position:fixed;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 58px);z-index:50;width:48px;height:48px;box-sizing:border-box;display:grid;place-items:center;border-radius:50%;border:1px solid var(--site-gold,#c9a24b);background:var(--site-paper,#f6edda);color:var(--site-primary,#7e1518);box-shadow:0 6px 20px #34060726;text-decoration:none}
#wedding-slide-link svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#wedding-slide-link:focus-visible{outline:3px solid var(--site-gold,#c9a24b);outline-offset:3px}
