:root{--red:#c32a29;--ink:#542e08;--paper:#f8f3e0;--gold:#f8c88b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#fff;color:var(--ink);font:16px/1.5 Roboto,Arial,sans-serif}button,input,select,textarea{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}img{max-width:100%;height:auto;display:block}p,h1,h2,h3{margin:0}a{color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #9e5c1b;outline-offset:4px}.sheet{position:relative;isolation:isolate;max-width:480px;margin:auto;overflow:hidden;background:var(--paper)}.sheet:before{content:'';position:absolute;inset:0;z-index:-2;pointer-events:none;background:url('assets/paper.webp') center top/100% auto repeat-y;opacity:.15}
.hero{position:relative;display:flex;flex-direction:column;align-items:center;padding-top:calc(clamp(75px,5vw + 45px,140px) + 30px)}.hero h1{position:relative;z-index:20;max-width:95%;text-align:center;font:400 clamp(20px,5.5vw,40px)/1.2 Bungee,sans-serif;color:var(--red);letter-spacing:.03em;-webkit-text-stroke:1px var(--gold);paint-order:stroke fill;text-transform:uppercase}.hero-art{position:relative;width:100%;max-width:480px;height:min(92vw,420px);margin-top:8px}.hero-art img{width:100%}.hero-art>div{position:absolute;pointer-events:none}.art-happiness{z-index:4;left:50%;top:calc(14% - 35px);width:75%;max-width:736px;transform:translateX(calc(-50% + 35px))}.art-fan{z-index:2;left:calc(18% - 65px);top:36%;width:55%;max-width:398px}.art-cloud{z-index:3;left:50%;top:calc(42% + 100px);width:85%;max-width:892px;transform:translateX(-50%)}.art-couple{z-index:9;left:50%;top:calc(22% + 40px);width:70%;max-width:653px;transform:translateX(-50%)}.art-words{z-index:10;left:calc(3% + 25px);top:calc(52% + 120px);font:400 clamp(28px,5vw,52px)/1 Bungee,sans-serif;text-align:center;color:#cd211c;-webkit-text-stroke:3px #fad9b0;paint-order:stroke fill}.art-flower{z-index:6;width:280px;max-width:100%;left:-40px;top:65px}.art-flower img{transform:scaleY(-1) rotate(20deg);transform-origin:top left}.art-lantern{z-index:7;width:8%;min-width:48px;max-width:63px;top:calc(4% - 180px);right:calc(6% - 15px)}
.body-content{position:relative;padding:280px 16px 32px}.body-content:before,.body-content:after{content:'';position:absolute;width:80%;height:900px;z-index:-1;opacity:.19;pointer-events:none;background:url('assets/may.webp') top center/contain no-repeat}.body-content:before{top:100px;left:-20%;transform:scaleX(-1)}.body-content:after{top:1800px;right:-25%}.section{position:relative;text-align:center;margin:0 auto 70px}.section h2{font:600 30px/1.5 Oswald,sans-serif;letter-spacing:.02em;text-transform:uppercase;color:var(--red);padding-top:10px}.section h3{font:600 16px/1.5 Oswald,sans-serif;text-transform:uppercase}.ceremony{display:flex;flex-direction:column;align-items:center;gap:40px}.families{display:grid;grid-template-columns:1fr 1fr;gap:24px;position:relative;max-width:366px;width:100%;padding:10px 0;text-align:center}.families:after{content:'';width:1px;height:50px;background:var(--ink);position:absolute;left:50%;top:calc(50% - 25px)}.families p{font-size:15px;margin-bottom:6px}.families strong{font-size:clamp(15px,4vw,20px);line-height:1.65;font-weight:700;overflow-wrap:anywhere}.families .family-address{font-size:13px;font-weight:400;margin-top:8px}.couple{font:400 clamp(24px,7vw,40px)/1.4 Bungee,sans-serif;color:var(--red);text-transform:uppercase;-webkit-text-stroke:3px var(--gold);paint-order:stroke fill;letter-spacing:.025em;padding:10px 0;width:100%}.couple span{display:block;font:58px/1.5 'Brush Ampersand',cursive;-webkit-text-stroke:0;margin:4px 0}.uppercase{font-size:16px;font-weight:700;text-transform:uppercase;line-height:1.8}.time{font-size:26px;line-height:1.5}.big-date{display:flex;align-items:center;justify-content:center;gap:12px;font-size:15px;font-weight:700;text-transform:uppercase}.big-date b{padding:0 16px;border-inline:1px solid var(--ink);font-size:38px;line-height:1}.year{font-size:23px;font-weight:700}.lunar{font-size:15px;font-weight:600}.ceremony .time{margin-top:-20px}.ceremony .big-date,.ceremony .year,.ceremony .lunar{margin-top:-20px}.ceremony:before,.ceremony:after,.party:before,.party:after{content:'';position:absolute;width:clamp(45px,15vw,80px);height:120px;background:url('assets/corner.webp') top left/contain no-repeat;pointer-events:none;z-index:-1;top:0}.ceremony:before,.party:before{left:0}.ceremony:after,.party:after{right:0;transform:scaleX(-1)}.party{display:flex;flex-direction:column;align-items:center;gap:20px;padding:10px 8px 35px}.party h2{margin-bottom:12px}.party .lunar{font-weight:400;letter-spacing:.15em;text-transform:uppercase}.calendar{width:296px;max-width:100%;border:1px solid #542e0845;border-radius:8px;overflow:hidden;margin:4px auto}.calendar h3{padding:10px;font:600 13px Roboto,sans-serif;border-bottom:1px solid #542e0845;text-transform:none}.week,.days{display:grid;grid-template-columns:repeat(7,1fr)}.week{font-size:10px;opacity:.65;border-bottom:2px solid var(--ink);padding:6px 0}.days{padding:8px 4px;row-gap:2px}.days>span{height:30px;display:grid;place-items:center;font-size:12px;position:relative}.days .selected{color:#fff;isolation:isolate;font-weight:700}.days .selected:before{content:'♥';position:absolute;font-size:33px;line-height:1;color:var(--ink);z-index:-1;top:0;left:50%;transform:translateX(-50%)}.button{display:inline-flex;align-items:center;justify-content:center;width:fit-content;padding:10px 24px;border:0;border-radius:6px;background:var(--red);color:var(--paper);font:500 14px/1.5 Roboto,sans-serif;text-transform:uppercase;letter-spacing:.025em;text-decoration:none;cursor:pointer}.party .button{margin:0}.party #rsvp-open{margin-top:3px}.location h2{font-size:30px}.location h3{margin:22px 0 12px;font-size:20px}.location p{font-size:15px;white-space:normal;line-height:1.7}.map{display:block;border:0;width:100%;height:300px;margin:24px auto 16px;border-radius:8px}.directions{background:var(--ink)}.dress-code p{margin:16px 0 20px;font-size:14px}.swatches{display:flex;justify-content:center;gap:16px}.swatches i{width:42px;height:42px;border-radius:50%;border:1px solid #542e0833}.timeline ol{list-style:none;padding:0;margin:40px auto 0;max-width:520px;text-align:left}.timeline li{display:grid;grid-template-columns:120px 1fr;gap:20px;position:relative;padding:0 0 42px 22px;border-left:1px solid #542e0844}.timeline li:before{content:'';position:absolute;left:-5px;top:5px;background:var(--red);width:9px;height:9px;border-radius:50%}.timeline b{font-family:Oswald,sans-serif;font-size:17px}.timeline span{font-size:14px}.wishes>p{margin:16px auto 20px;font-size:14px}.wishes form{max-width:560px;margin:auto;text-align:left}.wishes label{display:block;font-size:13px;margin:12px 0 6px}.wishes input,.wishes textarea,dialog input,dialog select{width:100%;border:1px solid #542e0855;background:#fff8;color:var(--ink);padding:12px;border-radius:8px;outline-offset:3px}.wishes .button{display:flex;margin:16px auto 0;background:var(--ink)}#wish-status,#rsvp-status{font-size:13px;margin-top:10px}#wish-list{text-align:left;max-width:560px;margin:24px auto 0;max-height:400px;overflow:auto}#wish-list article{padding:16px;border-radius:8px;border:1px solid #542e0822;margin:12px 0;background:#fff4;overflow-wrap:anywhere}#wish-list p{font-size:14px;margin-top:8px}.gifts h2{text-transform:none}.gift-box{position:relative;width:260px;height:280px;border:0;padding:0;margin:16px auto;background:none;display:block;outline-offset:4px}.gift-bob{position:absolute;left:30px;bottom:26px;width:200px;height:220px;animation:bob 3s ease-in-out infinite}.gift-shadow{position:absolute;left:28px;bottom:-8px;width:144px;height:12px;border-radius:50%;background:#0007;filter:blur(4px)}.box-image{position:absolute;bottom:0;left:15px;width:170px;max-height:220px;object-fit:contain;z-index:2;filter:drop-shadow(0 10px 18px #0004)}.mini{position:absolute;z-index:1;filter:drop-shadow(0 2px 3px #0004);animation:mini-float 3s ease-in-out infinite}.m1{left:-20px;top:10px;width:34px;--rotation:-22deg}.m2{left:168px;top:2px;width:38px;--rotation:20deg;animation-delay:-1s}.m3{left:-16px;top:120px;width:26px;--rotation:-18deg;animation-delay:-.5s}.m4{left:182px;top:114px;width:24px;--rotation:14deg;animation-delay:-2s}.m5{left:-8px;top:172px;width:44px;z-index:3;--rotation:8deg}.m6{left:26px;top:182px;width:26px;z-index:3;--rotation:-10deg;animation-delay:-1.5s}.m7{left:118px;top:176px;width:40px;z-index:3;--rotation:-14deg;animation-delay:-2.5s}.gift-box small{position:absolute;bottom:0;left:0;right:0;font-size:12px;font-weight:500;color:var(--ink)}.sparkles{position:absolute;top:8%;left:14%;color:var(--ink);font-size:22px;animation:twinkle 2s infinite}.sparkles:before{content:'✦';position:absolute;top:26px;left:160px;font-size:16px}.sparkles:after{content:'✦';position:absolute;top:65px;left:-20px;font-size:14px}.gift-box:hover .gift-bob{animation:wiggle .45s infinite}.gift-box.opening .gift-bob{animation:gift-open .4s ease-in forwards}.confetti{position:fixed;width:8px;height:12px;z-index:1000;pointer-events:none;animation:confetti .8s ease-out forwards}.thanks{font:italic 18px/1.7 Lora,serif;margin:40px 0 0}.gifts{margin-bottom:15px}footer{text-align:center;padding:15px 0 30px;font-size:12px}footer a{color:var(--red);text-decoration:none}
dialog{width:min(calc(100% - 32px),576px);max-height:90svh;overflow:auto;border:0;border-radius:16px;padding:0;color:var(--ink);background:var(--paper);box-shadow:0 25px 50px -12px #0004}dialog::backdrop{background:#0006}.gift-header{position:relative;padding:25px 24px 16px;background:var(--red);text-align:center}.gift-header h2{color:var(--paper);font:600 30px/1.5 Oswald,sans-serif}.close{position:absolute;top:12px;right:15px;color:inherit;background:none;border:0;font:26px/1 Roboto,sans-serif;opacity:.7;padding:5px}.gift-header .close{color:#fff}.gift-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:24px 32px}.gift-columns article{text-align:center;min-width:0}.gift-columns h3{font:400 13px/1.5 Roboto,sans-serif;color:var(--red);margin:0 0 22px}.qr-frame{width:160px;height:160px;max-width:100%;margin:0 auto 8px;padding:10px;background:#fff;border-radius:12px;box-shadow:0 4px 10px #542e0826;border:2px solid #c32a291a;overflow:hidden}.qr{width:100%;height:100%;object-fit:contain}.gift-columns p{font:400 10px/1.8 Roboto,sans-serif}.gift-columns p b{font-weight:400}.gift-columns a{display:inline-block;margin:5px auto 0;border-radius:99px;padding:4px 9px;font-size:10px;background:#c32a290a;color:var(--red);text-decoration:none}.copy-account{display:block;border:0;background:none;color:var(--red);font-size:11px;text-decoration:underline;margin:0 auto 12px}#copy-status{text-align:center;font-size:12px;padding:0 12px 8px}#copy-status:empty{display:none}#rsvp-dialog{padding:32px;max-width:450px}#rsvp-dialog h2{font:600 27px Oswald,sans-serif;color:var(--red);text-align:center;margin:8px 0 24px}#rsvp-dialog label{display:block;margin:16px 0 6px;font-size:14px}#rsvp-dialog .button{display:flex;margin:24px auto 0}.music-toggle{position:fixed;right:24px;bottom:64px;z-index:20;background:var(--red);color:white;border:3px solid #e2625a;border-radius:50%;width:52px;height:52px;box-shadow:0 4px 10px #0003;font-size:24px}.music-toggle.playing{animation:music-pulse 2s infinite}
@keyframes bob{50%{transform:translateY(-8px)}}@keyframes mini-float{0%,100%{transform:translateY(0) rotate(var(--rotation))}50%{transform:translateY(-5px) rotate(var(--rotation))}}@keyframes twinkle{50%{opacity:.25;transform:scale(.8)}}@keyframes wiggle{25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}@keyframes gift-open{50%{transform:translateY(-15px) scale(1.05)}100%{transform:translateY(0) scale(.98)}}@keyframes confetti{to{transform:translate(var(--dx),var(--dy)) rotate(300deg);opacity:0}}@keyframes music-pulse{50%{box-shadow:0 0 0 7px #c32a2922}}

/* RSVP dialog — compact card layout matching the reference form. */
#rsvp-dialog{width:min(calc(100% - 32px),560px);padding:28px 30px 30px;background:#fff;border-radius:18px}
#rsvp-dialog h2{text-align:left;margin:8px 0;color:#1f2937;font:700 25px/1.2 Roboto,Arial,sans-serif;text-transform:none}
#rsvp-dialog .rsvp-intro{margin:0 0 26px;color:#98a0b0;text-align:left;font:400 14px/1.55 Roboto,Arial,sans-serif}
#rsvp-dialog form{text-align:left}
#rsvp-dialog form>label[for="rsvp-name"]{display:block;margin:0 0 8px;color:#344054;font-weight:700}
#rsvp-dialog #rsvp-name{height:58px;padding:0 18px;border:1px solid #e0e5ec;border-radius:16px;background:#fff;color:#344054;font:400 16px Roboto,Arial,sans-serif}
#rsvp-dialog #rsvp-name::placeholder{color:#8f96a5}
#rsvp-dialog .attendance-options{border:0;padding:0;margin:23px 0 0}
#rsvp-dialog .attendance-options legend{padding:0;margin:0 0 10px;color:#344054;font:700 16px Roboto,Arial,sans-serif}
#rsvp-dialog .attendance-option{display:flex;align-items:center;gap:14px;position:relative;min-height:68px;margin:10px 0;padding:0 16px;border:1px solid #e9edf2;border-radius:16px;background:#fbfcfd;color:#344054;font:600 16px Roboto,Arial,sans-serif;cursor:pointer}
#rsvp-dialog .attendance-option:has(input:checked){border-color:#e9a3a4;background:#fff4f4;box-shadow:0 0 0 2px #f8d4d4 inset}
#rsvp-dialog .attendance-option input{position:absolute;opacity:0;pointer-events:none}
#rsvp-dialog .attendance-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:#e8ebf0;color:#7b8494;font-size:21px;font-weight:500}
#rsvp-dialog .button{display:flex;width:100%;height:60px;margin:20px 0 0;border-radius:16px;background:#e8a1a3;color:#fff;box-shadow:0 7px 16px #e8a1a344;text-transform:none;font:700 16px Roboto,Arial,sans-serif}
#rsvp-dialog .button:hover{background:#df9194}
#rsvp-dialog #rsvp-status{text-align:center;color:#6b7280}
@media(max-width:420px){#rsvp-dialog{padding:25px 18px 22px}#rsvp-dialog h2{font-size:22px}#rsvp-dialog .attendance-option{font-size:14px}}

/* Ceremony panel inspired by the supplied red Song Hạc reference. */
.ceremony{position:relative;isolation:isolate;overflow:hidden;margin-inline:-16px;padding:132px 34px 76px;gap:28px;background:linear-gradient(145deg,#730000,#a60000 55%,#770000);color:#1d2a40}
.ceremony:before{content:'';position:absolute;z-index:-1;inset:92px 26px 20px;border:6px solid #f5c94d;border-radius:86px 86px 30px 30px;background:#f6eee8;box-shadow:0 16px 30px #28000055}
.ceremony:after{content:'';position:absolute;z-index:0;top:58px;right:16px;width:210px;height:105px;background:url('assets/may-to.webp') center/contain no-repeat;opacity:.72;pointer-events:none}
.ceremony>*{position:relative;z-index:1}
.ceremony h2{font:400 clamp(26px,6vw,40px)/1.2 Georgia,serif;letter-spacing:0;color:#a61717;text-transform:uppercase;padding-top:0;margin:0 0 4px}
.ceremony .families{order:1;max-width:590px;gap:42px;padding:10px 0 0;color:#1d2a40}
.ceremony .families:after{height:86px;top:calc(50% - 43px);background:#a61717}
.ceremony .families p{font-size:16px}
.ceremony .families strong{font:700 16px/1.7 Georgia,serif;color:#a61717}
.ceremony .families .family-address{font:400 15px/1.45 Roboto,Arial,sans-serif;color:#1d2a40}
.ceremony .ceremony-announcement{order:2;margin:8px 0 0;color:#a61717;font:400 clamp(19px,4.5vw,27px)/1.45 Georgia,serif;text-transform:uppercase}
.ceremony .couple{order:3;padding:0;margin:2px 0 0;font:italic clamp(38px,9vw,72px)/1.15 Georgia,serif;color:#a61717;-webkit-text-stroke:0;text-transform:none;letter-spacing:-.03em}
.ceremony .couple span{font:italic 1em/1 Brush Ampersand,cursive;margin:0}
.ceremony .couple-role{order:4;color:#1d2a40;font:400 15px/1.4 Georgia,serif;letter-spacing:.32em;text-transform:uppercase}
.ceremony .uppercase{order:5;margin-top:2px;color:#6a3215;font-size:15px;line-height:1.65}
.ceremony .time{order:6;color:#a61717;font:400 31px/1.1 Georgia,serif;margin:0}
.ceremony .big-date{order:7;color:#6a3215}
.ceremony .year{order:8;color:#6a3215}
.ceremony .lunar{order:9;color:#6a3215}
@media(min-width:768px){.ceremony{margin-inline:-40px;padding:150px 76px 92px}.ceremony:before{inset:105px 55px 24px}.ceremony:after{right:55px;width:260px}.ceremony .families{gap:72px}.ceremony .families strong{font-size:18px}.ceremony .families .family-address{font-size:16px}.ceremony .ceremony-announcement{font-size:29px}.ceremony .couple{font-size:78px}}

/* Keep the original paper theme; add only the inset invitation card. */
.ceremony{margin-inline:0;padding:48px 24px 56px;gap:32px;background:transparent;color:var(--ink);border-radius:0;box-shadow:none}
.ceremony:before{inset:12px 8px 12px;z-index:-1;border:2px solid #d9aa4a;border-radius:48px 48px 26px 26px;background:url('assets/song-hac/cloud1-decoration.webp') right -18px top -8px/53% auto no-repeat,url('assets/song-hac/flower1-decoration.webp') left -22% top 42%/34% auto no-repeat,url('assets/song-hac/cloud2-decoration.webp') right -12% bottom -14px/37% auto no-repeat,rgba(248,243,224,.94);box-shadow:0 12px 26px #542e081c}
.ceremony:after{display:none}
.ceremony h2{font:600 30px/1.5 Oswald,sans-serif;letter-spacing:.02em;color:var(--red);text-transform:uppercase;padding-top:10px;margin:0}
.ceremony .families{order:1;max-width:366px;gap:24px;padding:10px 0;color:var(--ink)}
.ceremony .families:after{height:50px;top:calc(50% - 25px);background:var(--ink)}
.ceremony .families p{font-size:15px}
.ceremony .families strong{font:700 clamp(15px,4vw,20px)/1.65 Roboto,Arial,sans-serif;color:var(--ink)}
.ceremony .families .family-address{font:400 13px/1.5 Roboto,Arial,sans-serif;color:var(--ink)}
.ceremony .ceremony-announcement{order:2;margin:4px 0 0;color:var(--red);font:600 17px/1.55 Oswald,sans-serif;text-transform:uppercase}
.ceremony .couple{order:3;font:400 clamp(24px,7vw,40px)/1.4 Bungee,sans-serif;color:var(--red);-webkit-text-stroke:3px var(--gold);text-transform:uppercase;letter-spacing:.025em;padding:10px 0;margin:0}
.ceremony .couple span{display:block;font:58px/1.5 'Brush Ampersand',cursive;-webkit-text-stroke:0;margin:4px 0}
.ceremony .couple-role{order:4;color:var(--ink);font:600 13px/1.5 Oswald,sans-serif;letter-spacing:.2em;text-transform:uppercase}
.ceremony .uppercase{order:5;margin-top:0;color:var(--ink);font-size:16px;line-height:1.8}
.ceremony .time{order:6;color:var(--ink);font-size:26px;line-height:1.5;margin:0}
.ceremony .big-date{order:7;color:var(--ink)}
.ceremony .year{order:8;color:var(--ink)}
.ceremony .lunar{order:9;color:var(--ink)}
.party{position:relative;isolation:isolate;margin-inline:0;padding:48px 24px 56px;border:2px solid #d9aa4a;border-radius:48px 48px 26px 26px;background:rgba(248,243,224,.94);box-shadow:0 12px 26px #542e081c}
.party:before,.party:after{z-index:-1;opacity:.65}
@media(min-width:768px){.ceremony{padding:64px 56px 76px}.ceremony:before{inset:16px 18px 16px}.ceremony h2{font-size:35px}.ceremony .families{max-width:520px;gap:48px;padding:15px 0}.ceremony .families p{font-size:18px}.ceremony .families strong{font-size:20px}.ceremony .families .family-address{font-size:15px}.ceremony .ceremony-announcement{font-size:20px}.ceremony .couple{font-size:58px}.ceremony .couple span{font-size:77px}.party{padding:56px 40px 64px}}
@media(min-width:768px){.sheet{max-width:900px;border:1px solid #542e0822}.hero{padding-top:calc(clamp(75px,5vw + 45px,140px) + 50px)}.hero-art{max-width:769px;height:480px}.art-happiness{width:54.6%;max-width:416px;transform:translateX(calc(-50% + 50px))}.art-fan{left:calc(18% - 20px);top:calc(36% + 50px);width:29.9%;max-width:225px}.art-cloud{top:calc(42% + 140px);width:66.3%;max-width:504px}.art-couple{width:48.1%;max-width:369px}.art-words{left:calc(3% + 100px);-webkit-text-stroke:5px #fad9b0}.art-flower{width:320px;max-width:min(320px,46%);left:-48px;top:78px}.art-lantern{width:9.2%;min-width:63px;max-width:85px;top:calc(4% - 246px);right:calc(6% - 24px)}.body-content{padding:350px 40px 48px}.section{margin-bottom:90px}.section h2{padding-top:15px;font-size:35px}.ceremony{gap:64px}.families{max-width:520px;gap:48px;padding:15px 0}.families p{font-size:18px}.families strong{font-size:20px}.families .family-address{font-size:15px}.families:after{height:64px;top:calc(50% - 32px)}.couple{font-size:58px;-webkit-text-stroke:4px var(--gold);padding:15px 0}.couple span{font-size:77px;margin:8px 0}.uppercase{font-size:20px}.ceremony .time{margin-top:-44px;font-size:30px}.ceremony .big-date,.ceremony .year,.ceremony .lunar{margin-top:-44px}.big-date{gap:24px;font-size:20px}.big-date b{font-size:50px;padding:0 26px}.year{font-size:31px}.lunar{font-size:18px}.ceremony .year{font-size:26px}.ceremony .big-date b{font-size:42px}.ceremony .lunar{font-size:18px}.ceremony:before,.ceremony:after,.party:before,.party:after{width:clamp(68px,14vw,104px)}.party{gap:20px;padding:15px 40px 35px}.party h2{margin-bottom:28px}.party h3{font-size:20px}.party .time{font-size:38px}.calendar{width:352px}.calendar h3{font-size:14px}.week{font-size:11px}.days>span{height:34px;font-size:13px}.button{padding:12px 28px;font-size:16px}.location p{font-size:18px}.location h3{font-size:23px}.map{height:350px}.timeline li{grid-template-columns:150px 1fr}.timeline b{font-size:21px}.timeline span{font-size:17px}.thanks{font-size:22px}.gift-header h2{font-size:32px}.gift-header{padding:25px 24px 16px}.music-toggle{bottom:64px}}
@media(min-width:1024px){.hero .art-flower{width:456px;max-width:min(456px,53%);left:-56px;top:calc(86px - 1cm)}.art-lantern{min-width:67px;max-width:90px;top:calc(4% - 276px)}.body-content{padding-top:380px}.section h2{font-size:45px;padding-top:20px}.ceremony{gap:80px}.families{max-width:600px;padding:20px 0}.families p{font-size:19px}.families .family-address{font-size:16px}.couple{font-size:68px;-webkit-text-stroke:5px var(--gold);padding:20px 0}.couple span{font-size:86px}.ceremony .time,.ceremony .big-date,.ceremony .year,.ceremony .lunar{margin-top:-60px}.ceremony .year{font-size:28px}.ceremony .big-date{font-size:19px}.ceremony .big-date b{font-size:46px}.ceremony .lunar{font-size:19px}.ceremony:before,.ceremony:after,.party:before,.party:after{width:clamp(76px,12vw,112px)}.party{padding-top:20px}.party h2{margin-bottom:36px}.section{margin-bottom:110px}.gifts{margin-bottom:15px}}
@media(max-width:400px){.gift-columns{gap:12px;padding:24px 16px}.qr-frame{height:auto;aspect-ratio:1}.gift-columns h3{font-size:11px}.hero h1{max-width:92%}.timeline li{grid-template-columns:105px 1fr;gap:10px}.music-toggle{right:16px;bottom:24px;width:44px;height:44px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important}}
.album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;max-width:750px;margin:26px auto 0}.album-placeholder{aspect-ratio:1/1;border-radius:14px;border:1px dashed #c32a2966;background:linear-gradient(145deg,#f1e7d1,#ead9bd);display:grid;place-items:center;text-align:center;color:#9d7561;font:18px/1.35 Oswald,sans-serif;letter-spacing:.04em}.album-placeholder:before{content:'♡';display:block;font:42px/1 Lora,serif;color:#c32a2966;margin-bottom:8px}@media(max-width:560px){.album-grid{gap:12px}.album-placeholder{font-size:14px}}
.invitation-intro{text-align:center;padding-top:0;padding-bottom:72px;max-width:650px;margin-inline:auto}.intro-kicker{margin:0 0 14px;color:#806c53;font:14px/1.4 Oswald,sans-serif;letter-spacing:.32em}.invitation-intro h2{margin:0 0 18px;color:#c32a29;font:34px/1.1 Bungee,sans-serif;-webkit-text-stroke:2px #f8c88b;paint-order:stroke fill}.intro-greeting{margin:0 0 28px;font-size:18px}.intro-copy{max-width:620px;margin:0 auto 38px;font-size:17px;line-height:1.75}.intro-closing{margin:0;font-size:17px}@media(max-width:560px){.invitation-intro{padding-bottom:56px}.intro-kicker{font-size:12px;letter-spacing:.24em}.invitation-intro h2{font-size:30px}.intro-copy{font-size:16px;line-height:1.7}}
.js-reveal .section{opacity:0;transform:translateY(26px);transition:opacity .72s ease var(--reveal-delay,0ms),transform .72s cubic-bezier(.22,.8,.25,1) var(--reveal-delay,0ms)}.js-reveal .section.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.js-reveal .section{opacity:1;transform:none;transition:none}}
.countdown{width:100%;max-width:520px;margin:20px auto 8px}.countdown h3{color:var(--red);font:600 20px/1.4 Oswald,sans-serif;letter-spacing:.18em;text-transform:uppercase;margin:0 0 16px}.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.countdown-grid>div{display:flex;flex-direction:column;align-items:center;gap:8px}.countdown-grid strong{display:grid;place-items:center;width:100%;min-height:82px;border-radius:14px;background:#fffdf9d9;box-shadow:0 3px 10px #542e0817;color:var(--red);font:600 clamp(28px,5vw,44px)/1 Oswald,sans-serif}.countdown-grid span{font:15px/1 Roboto,sans-serif;color:#7b6d62}@media(max-width:560px){.countdown{margin-top:10px}.countdown h3{font-size:18px}.countdown-grid{gap:8px}.countdown-grid strong{min-height:68px;border-radius:12px;font-size:30px}.countdown-grid span{font-size:13px}}
.js-entrance .hero h1,.js-entrance .hero-art{opacity:0;transform:translateY(22px)}.js-entrance.entrance-ready .hero h1{animation:peek-in .8s cubic-bezier(.22,.8,.25,1) .05s forwards}.js-entrance.entrance-ready .hero-art{animation:peek-in .95s cubic-bezier(.22,.8,.25,1) .2s forwards}.js-reveal .section>*{opacity:0;transform:translateY(18px);transition:opacity .56s ease,transform .7s cubic-bezier(.22,.8,.25,1)}.js-reveal .section.is-visible>*{opacity:1;transform:none}.js-reveal .section.is-visible>*:nth-child(2){transition-delay:.08s}.js-reveal .section.is-visible>*:nth-child(3){transition-delay:.16s}.js-reveal .section.is-visible>*:nth-child(4){transition-delay:.24s}.js-reveal .section.is-visible>*:nth-child(5){transition-delay:.32s}@keyframes peek-in{from{opacity:0;transform:translateY(22px) scale(.985)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.js-entrance .hero h1,.js-entrance .hero-art,.js-reveal .section>*{opacity:1;transform:none;animation:none;transition:none}}
.section{margin-bottom:42px}.ceremony{gap:28px}.invitation-intro{padding-bottom:42px}.party{gap:14px}.timeline ol{margin-top:24px}.wishes>p{margin-top:10px}.thanks{margin-top:24px}@media(min-width:768px){.section{margin-bottom:58px}.ceremony{gap:42px}.invitation-intro{padding-bottom:52px}.party{gap:16px}}@media(min-width:1024px){.section{margin-bottom:68px}.ceremony{gap:52px}.invitation-intro{padding-bottom:58px}}
.body-content{padding-top:150px}@media(min-width:768px){.body-content{padding-top:210px}}@media(min-width:1024px){.body-content{padding-top:250px}}
.ceremony .couple{margin-bottom:-10px}.ceremony .couple span{margin:0;line-height:1.1}.ceremony .families{margin-top:-8px}
.invitation-intro{padding-top:32px}@media(min-width:768px){.invitation-intro{padding-top:44px}}@media(min-width:1024px){.invitation-intro{padding-top:52px}}
.ceremony{margin-inline:0!important;padding:48px 24px 56px!important;background:transparent!important;color:var(--ink)!important;border-radius:0!important;box-shadow:none!important}
.ceremony:before{inset:12px 8px 12px!important;width:auto!important;height:auto!important;border:2px solid #d9aa4a!important;border-radius:48px 48px 26px 26px!important;background:url('assets/song-hac/cloud1-decoration.webp') right -18px top -8px/53% auto no-repeat,url('assets/song-hac/flower1-decoration.webp') left -22% top 42%/34% auto no-repeat,url('assets/song-hac/cloud2-decoration.webp') right -12% bottom -14px/37% auto no-repeat,rgba(248,243,224,.94)!important;box-shadow:0 12px 26px #542e081c!important}
.ceremony:after{display:none!important}
.party{margin-inline:0!important;padding:48px 24px 56px!important;border:2px solid #d9aa4a!important;border-radius:48px 48px 26px 26px!important;background:url('assets/song-hac/cloud1-decoration.webp') right -18px top -8px/53% auto no-repeat,url('assets/song-hac/flower1-decoration.webp') left -22% top 42%/34% auto no-repeat,url('assets/song-hac/cloud2-decoration.webp') right -12% bottom -14px/37% auto no-repeat,rgba(248,243,224,.94)!important;box-shadow:0 12px 26px #542e081c!important}
@media(min-width:768px){.ceremony{padding:64px 56px 76px!important}.ceremony:before{inset:16px 18px 16px!important}.party{padding:56px 40px 64px!important}}
.album{position:relative;isolation:isolate;overflow:hidden;margin-inline:-16px!important;padding:46px 8px 34px!important;background:linear-gradient(160deg,#770000,#a90000 52%,#780000);color:#f8f3e0}
.album:before{content:'';position:absolute;inset:0;z-index:-1;opacity:.55;background:url('assets/song-hac/cloud1-decoration.webp') right -20px top 6px/42% auto no-repeat,url('assets/song-hac/cloud2-decoration.webp') right 5% bottom -12px/50% auto no-repeat,url('assets/song-hac/flower1-decoration.webp') left -18% bottom -8px/42% auto no-repeat}
.album h2{position:relative;z-index:1;margin:0 0 10px;color:#f8f3e0;font:600 24px/1.4 Oswald,sans-serif;text-transform:uppercase;letter-spacing:.03em}
.album-carousel{position:relative;display:flex;align-items:center;justify-content:center;min-height:290px;max-width:520px;margin:0 auto}
.album-stage{position:relative;width:100%;height:260px;perspective:900px}
.album-slide{position:absolute;top:12px;left:50%;width:142px;margin:0;transform-origin:center;transition:transform .65s cubic-bezier(.22,.8,.25,1),opacity .65s ease,filter .65s ease,z-index .65s;box-shadow:0 12px 22px #30000066}
.album-placeholder{display:grid;place-items:center;aspect-ratio:3/4;border:4px solid #f1d39c;border-radius:5px;background:linear-gradient(145deg,#e8d9bf,#a7725d);color:#fff8e7;text-align:center;font:15px/1.35 Oswald,sans-serif;text-shadow:0 1px 3px #300000;overflow:hidden}
.album-placeholder:before{content:'♡';display:block;font:42px/1 Lora,serif;color:#ffe0af;margin-bottom:8px}
.album-slide-center{transform:translateX(-50%) translateZ(50px) scale(1.04);z-index:5;opacity:1}
.album-slide-left{transform:translateX(-108%) rotateY(24deg) scale(.86);z-index:4;opacity:.9;filter:saturate(.8)}
.album-slide-right{transform:translateX(8%) rotateY(-24deg) scale(.86);z-index:4;opacity:.9;filter:saturate(.8)}
.album-slide-far-left{transform:translateX(-157%) rotateY(35deg) scale(.7);z-index:2;opacity:.42;filter:saturate(.6)}
.album-slide-far-right{transform:translateX(57%) rotateY(-35deg) scale(.7);z-index:2;opacity:.42;filter:saturate(.6)}
.album-arrow{position:absolute;z-index:8;top:50%;display:grid;place-items:center;width:32px;height:32px;border:1px solid #f8f3e0aa;border-radius:50%;background:#6e0000aa;color:#f8f3e0;font:28px/1 Georgia,serif;transform:translateY(-50%)}
.album-prev{left:8px}.album-next{right:8px}.album-arrow:hover{background:#c32a29}
.album-dots{display:flex;justify-content:center;gap:7px;margin-top:2px}.album-dots i{width:5px;height:5px;border-radius:50%;background:#f8f3e088}.album-dots i.active{width:18px;border-radius:9px;background:#f8f3e0}
@media(min-width:768px){.album{margin-inline:-40px!important;padding:58px 28px 42px!important}.album h2{font-size:27px}.album-stage{height:320px}.album-slide{width:178px}.album-carousel{min-height:350px}.album-arrow{width:38px;height:38px}.album-prev{left:18px}.album-next{right:18px}}
.album{background:radial-gradient(circle at 50% 34%,#bd272055,transparent 38%),linear-gradient(160deg,#650000,#a90000 52%,#680000)!important}
.album:after{content:'H & H';position:absolute;z-index:0;left:50%;bottom:4px;color:#f4c9711f;font:italic 80px/1 Georgia,serif;letter-spacing:.2em;transform:translateX(-42%);pointer-events:none}
.album h2{font:700 23px/1.2 Georgia,serif;letter-spacing:.16em;text-shadow:0 2px 9px #30000099}
.album-carousel{min-height:310px;filter:drop-shadow(0 18px 20px #30000055)}
.album-stage{height:270px}
.album-slide{width:150px;padding:7px;background:#f7ead0;border:1px solid #ddbd83;box-shadow:0 10px 18px #28000088,0 0 0 1px #7b190088;backface-visibility:hidden}
.album-slide:before{content:'';position:absolute;inset:4px;border:1px solid #b78a4b88;pointer-events:none;z-index:2}
.album-placeholder{position:relative;aspect-ratio:3/4;border:0;border-radius:2px;background:linear-gradient(135deg,#f6ead5 0 42%,#d0ab79 42% 44%,#f2dfbd 44% 100%);color:#7a1d14;text-shadow:none;box-shadow:inset 0 0 0 1px #8b5b3055;overflow:hidden}
.album-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.9) contrast(1.02)}
.album-placeholder span{position:absolute;z-index:1;left:9px;right:9px;bottom:9px;padding:6px 4px;background:linear-gradient(transparent,#380000b8);color:#fff7e7;font:italic 13px/1.1 Georgia,serif;letter-spacing:.05em;text-align:center;text-shadow:0 1px 3px #300000}
.album-placeholder:after{content:'✦';position:absolute;right:12px;bottom:10px;color:#b7833a;font-size:18px;opacity:.75}
.album-placeholder:before{content:'♡';position:relative;display:block;margin:0 0 12px;font:46px/1 Lora,serif;color:#b51d1d;text-shadow:0 2px 0 #e9bb72}
.album-placeholder span{position:absolute;z-index:1;left:9px;right:9px;bottom:9px;font:italic 13px/1.1 Georgia,serif;letter-spacing:.04em}
.album-placeholder small{position:relative;z-index:1;margin-top:8px;font:700 7px/1.3 Roboto,Arial,sans-serif;letter-spacing:.18em;color:#78542e}
.album-slide-center{transform:translateX(-50%) translateZ(80px) scale(1.1);box-shadow:0 18px 30px #220000aa,0 0 0 2px #eac77c}
.album-slide-left{transform:translateX(-112%) rotateY(28deg) rotateZ(-2deg) scale(.85)}
.album-slide-right{transform:translateX(12%) rotateY(-28deg) rotateZ(2deg) scale(.85)}
.album-slide-far-left{transform:translateX(-164%) rotateY(38deg) rotateZ(-4deg) scale(.7);opacity:.48}
.album-slide-far-right{transform:translateX(64%) rotateY(-38deg) rotateZ(4deg) scale(.7);opacity:.48}
.album-slide-hidden{transform:translateX(-50%) scale(.55);opacity:0;pointer-events:none;z-index:0}
.album-arrow{width:35px;height:35px;background:#4d0000cc;border:1px solid #eac77c;color:#f7e4bb;box-shadow:0 4px 10px #22000088}
.album-arrow:hover{background:#bd2727;transform:translateY(-50%) scale(1.08)}
.album-dots{position:relative;z-index:2;margin-top:3px}.album-dots i{height:4px;background:#f7e4bb66}.album-dots i.active{background:#f7e4bb;box-shadow:0 0 8px #f7e4bb}
@media(min-width:768px){.album{padding:62px 30px 48px!important}.album h2{font-size:26px}.album-carousel{min-height:380px}.album-stage{height:330px}.album-slide{width:190px}.album-placeholder span{font-size:15px}.album-placeholder small{font-size:8px}}
.gift-qr-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;width:100%;max-width:760px;margin:20px auto 0}
.gift-qr-grid article{min-width:0;padding:14px 10px 16px;border:1px solid #d7bd8c;border-radius:18px;background:#fffdf8cc;box-shadow:0 8px 18px #542e0817}
.gift-qr-image{width:100%;aspect-ratio:1/1;object-fit:contain;border-radius:10px;background:#fff;display:block}
.gift-qr-grid h3{margin:12px 0 4px;color:var(--red);font:600 16px/1.3 Oswald,sans-serif;letter-spacing:.03em}
.gift-qr-grid p{font-size:13px;line-height:1.55}
@media(max-width:560px){.gift-qr-grid{gap:10px}.gift-qr-grid article{padding:8px 6px 12px;border-radius:14px}.gift-qr-grid h3{font-size:13px}.gift-qr-grid p{font-size:11px}}
.families > div > p:first-child{font-weight:700}
