:root{font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;color:#ebf9ff;background:#082e72;font-synthesis:none}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button{font:inherit}button:focus-visible{outline:2px solid #a8f1ee;outline-offset:4px}#invitation{height:100dvh;max-width:560px;margin:auto;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;box-shadow:0 0 70px #001e5088}#invitation::-webkit-scrollbar{display:none}.loading{display:grid;place-items:center;height:100%;font-size:14px}.slide{position:relative;display:flex;align-items:center;justify-content:center;min-height:100dvh;height:100dvh;overflow:hidden;scroll-snap-align:start;isolation:isolate;background:radial-gradient(ellipse at 80% 7%,#286ec5 0%,transparent 45%),linear-gradient(165deg,#0a327d 0%,#1354ae 51%,#2489d8 100%)}.slide:before{content:"";position:absolute;z-index:-1;inset:0;background-image:radial-gradient(#8ac9ec 1px,transparent 1px);background-size:14px 14px;opacity:.12;mask-image:linear-gradient(#000 2%,transparent 45%)}.slide:after{content:"";position:absolute;z-index:-1;bottom:0;left:0;right:0;height:23%;background:url("skyline.svg") center bottom/100% auto no-repeat;opacity:.85}.cover{flex-direction:column;justify-content:space-between;text-align:center;padding:clamp(38px,7dvh,70px) 28px 35px}.cover:after{height:25%}.cover-top{width:100%}.theme{font-family:"STKaiti","Kaiti SC",serif;font-size:clamp(27px,7vw,38px);font-weight:700;letter-spacing:.13em;color:#8ae5e9;margin:0 0 15px;text-shadow:0 2px 18px #002769}.event-name{font-size:clamp(16px,4.6vw,21px);font-weight:650;line-height:1.48;margin:0 auto;max-width:450px}.event-name-es{max-width:440px;margin:6px auto 0;font:12px/1.5 Georgia,serif;color:#ccebf5}.cover-center{display:grid;justify-items:center;align-content:center;gap:0;flex:1;min-height:0}.invitation-cn{font-family:"STSong","Songti SC",serif;font-size:clamp(47px,13vw,66px);font-weight:700;letter-spacing:.11em;color:#98eef2;text-shadow:0 4px 21px #07488a;margin:0 0 3px}.invitation-es{font:17px/1.3 Georgia,serif;letter-spacing:.065em;color:#d5f6fa;margin:0}.seal,.closing-mark{display:grid;place-items:center;width:100px;height:100px;border:1px solid #8ee8ec;border-radius:50%;margin-top:48px;font-family:"STKaiti","Kaiti SC",serif;font-size:24px;letter-spacing:.1em;color:#a0eef0;background:radial-gradient(circle,#89e5e91c,transparent 70%);box-shadow:0 0 0 10px #9deff010,0 0 0 24px #9deff009}.cover-bottom{position:relative;z-index:1;margin-top:auto}.cover-bottom p{font:14px/1.5 "STSong","Songti SC",serif;margin:0 0 22px}.separator{padding:0 10px;color:#85dce8}.next-cue{display:block;font-size:11px;letter-spacing:.12em;color:#c6e9f7}.next-cue span{display:block;font-size:21px;line-height:1.1;animation:cue 2s ease-in-out infinite}.content-panel{position:relative;width:min(88%,440px);max-height:calc(100dvh - 68px);overflow-y:auto;padding:clamp(24px,5dvh,42px) clamp(23px,6vw,37px);border:1px solid #a3e5ef88;background:linear-gradient(160deg,#073983c9,#1255a1b5);box-shadow:0 16px 55px #001a4d55, inset 0 0 34px #7ce6f008;scrollbar-width:thin}.content-panel:before,.content-panel:after{content:"";position:absolute;width:20px;height:20px;border-color:#a5ecf1;opacity:.9}.content-panel:before{top:11px;left:11px;border-top:2px solid;border-left:2px solid}.content-panel:after{right:11px;bottom:11px;border-right:2px solid;border-bottom:2px solid}.section-heading{text-align:center;margin-bottom:clamp(25px,5dvh,42px)}.section-heading span{display:inline-block;font-size:11px;letter-spacing:.4em;color:#afeaf4;margin-bottom:10px}.section-heading h2{font-family:"STSong","Songti SC",serif;font-size:clamp(29px,7vw,40px);font-weight:600;letter-spacing:.08em;color:#b0eff4;margin:0}.section-heading p{font:12px/1.4 Georgia,serif;letter-spacing:.12em;color:#b9deeb;margin:8px 0 0}.letter-intro{font:18px/1.6 "STSong","Songti SC",serif;margin:0 0 15px}.letter-body{font:17px/2.05 "STSong","Songti SC",serif;text-align:justify;letter-spacing:.03em;margin:0}.letter-outro{font:17px/1.7 "STSong","Songti SC",serif;margin:24px 0 0}.signature{text-align:right;margin-top:29px;font-size:14px;color:#b7ecf5}.signature small{display:block;font-size:11px;color:#b4d7e9;margin-top:8px}.detail-list{display:grid;gap:0}.detail-list>div{padding:17px 0;border-bottom:1px solid #a4e9f041}.detail-list span,.organization-list small{display:block;color:#9cdef0;font:11px/1.6 Georgia,"Noto Sans SC",sans-serif;letter-spacing:.08em}.detail-list strong,.organization-list strong{display:block;margin-top:6px;font-size:18px;line-height:1.55;font-weight:500}.detail-foot{font-size:11px;line-height:1.6;color:#c6e4f3;margin:24px 0 0;text-align:center}.agenda-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.agenda-list li{display:grid;grid-template-columns:43px 1fr;gap:14px;align-items:start;padding:10px 0;border-bottom:1px solid #9ce3ed42}.agenda-index{font:22px/1 Georgia,serif;color:#90e2eb}.agenda-list small{font-size:11px;color:#b9dfeb}.agenda-list strong{display:block;font-size:17px;font-weight:500;margin:5px 0}.agenda-list p{font-size:12px;color:#d1e9f3;margin:0}.organization-list{display:grid;gap:16px}.organization-list>div{padding:16px 15px;background:#99e1eb12;border-left:2px solid #8ce3ed}.organization-list strong{font-size:16px}.closing{text-align:center}.closing-inner{width:min(86%,420px);display:flex;flex-direction:column;align-items:center}.closing-mark{margin:0 0 34px;width:120px;height:120px;font-size:29px}.closing h2{font-family:"STSong","Songti SC",serif;font-size:clamp(32px,9vw,46px);font-weight:500;letter-spacing:.07em;margin:0;color:#a9edf2}.closing-es{font:16px/1.5 Georgia,serif;color:#d1edf4;margin:9px 0 34px}.rsvp-note{font-size:14px;line-height:1.8;color:#d8eef7;margin:0 0 30px}.primary-button{border:1px solid #b9f3f4;color:#07417f;background:#a8ebef;padding:12px 32px;min-height:46px;cursor:pointer;font-weight:600}.final-note{font-size:11px;line-height:1.7;color:#c8e3ef;margin:36px 0 0}.controls{position:fixed;z-index:10;top:max(17px,env(safe-area-inset-top));right:max(17px,calc((100vw - 560px)/2 + 17px));display:flex;gap:9px}.icon-button{display:grid;place-items:center;border:1px solid #b9eaf0a3;border-radius:50%;width:38px;height:38px;background:#062e70a8;color:#d4f4fa;cursor:pointer;font-size:21px;backdrop-filter:blur(8px)}.icon-button[aria-pressed=true]{background:#9ee8ee;color:#0e4488}#pagination{position:fixed;z-index:10;top:50%;right:max(10px,calc((100vw - 560px)/2 + 11px));transform:translateY(-50%);display:grid;gap:10px}#pagination button{width:7px;height:7px;padding:0;border:1px solid #c5eaf2;border-radius:50%;background:transparent;cursor:pointer}#pagination button[aria-current=page]{background:#a5eef1;transform:scale(1.4)}.notice{position:fixed;z-index:20;left:50%;bottom:40px;transform:translate(-50%,12px);background:#062b68eb;border:1px solid #8ee5ee;color:#ecfbff;padding:11px 20px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;white-space:nowrap}.notice.visible{opacity:1;transform:translate(-50%,0)}@keyframes cue{50%{transform:translateY(7px)}}@media(max-width:560px){.slide{min-height:100svh;height:100svh}.cover{padding-bottom:max(29px,env(safe-area-inset-bottom))}.content-panel{max-height:calc(100svh - 64px)}.controls{right:15px}#pagination{right:11px}}@media(max-height:670px){.cover{padding-top:28px}.theme{font-size:25px;margin-bottom:8px}.event-name{font-size:16px}.event-name-es{font-size:10px}.invitation-cn{font-size:43px}.seal{width:72px;height:72px;font-size:18px;margin-top:22px}.cover-bottom p{margin-bottom:10px}.content-panel{padding-top:25px;padding-bottom:25px}.section-heading{margin-bottom:22px}.letter-body{font-size:15px;line-height:1.8}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}

@media(max-width:360px){.cover{padding-top:65px}}
[hidden]{display:none!important}.rsvp .content-panel{width:min(90%,440px);max-height:calc(100dvh - 52px);padding-top:25px;padding-bottom:28px}.rsvp .section-heading{margin-bottom:16px}.preview-note{font-size:12px;line-height:1.65;color:#d5ebf5;background:#8ee5ef18;border-left:2px solid #9beaf1;padding:10px 12px;margin:0 0 14px}#rsvp-form{display:grid;gap:11px;text-align:left}#rsvp-form label{display:grid;gap:5px;font-size:13px;color:#f0faff}#rsvp-form label>span{font:11px Georgia,serif;color:#a7dfe9}#rsvp-form input:not([type=checkbox]){width:100%;min-height:41px;border:1px solid #8adbe5aa;border-radius:0;background:#082f71a8;color:white;padding:9px 11px;font:14px system-ui,sans-serif;outline:none}#rsvp-form input:focus-visible{border-color:#b7f4f4;box-shadow:0 0 0 2px #aceff03d}#rsvp-form input::placeholder{color:#bfd9e3}#rsvp-form .consent{display:flex;align-items:flex-start;gap:8px;line-height:1.5;margin:3px 0 0}#rsvp-form .consent input{accent-color:#95e5ea;width:17px;height:17px;flex:none;margin:1px 0 0}#rsvp-form .consent span{font:11px/1.6 system-ui,sans-serif;color:#d4e9f2}.form-error{min-height:1em;margin:0;color:#ffd9cf;font-size:12px}.rsvp .primary-button{width:100%;font-size:13px}.rsvp-result{text-align:center;padding:28px 8px}.rsvp-result strong{font:26px "STSong","Songti SC",serif;color:#a7eef1}.rsvp-result p{font-size:14px}.secondary-button{border:1px solid #a5e9ee;background:transparent;color:#e3faff;padding:9px 23px;cursor:pointer;margin-top:13px}@media(max-width:560px){.rsvp .content-panel{max-height:calc(100svh - 40px)}}

/* Motion follows the reference's layered entrance without animating form fields. */
.motion-ready .cover .cover-top,.motion-ready .cover .cover-center,.motion-ready .cover .cover-bottom,.motion-ready .slide:not(.cover):not(.closing) .content-panel,.motion-ready .closing .closing-inner{opacity:0}
.motion-ready .cover.has-entered .cover-top{animation:invitation-appear .7s ease-out both}
.motion-ready .cover.has-entered .cover-center{animation:invitation-appear .8s .18s ease-out both}
.motion-ready .cover.has-entered .cover-bottom{animation:invitation-appear .7s .38s ease-out both}
.motion-ready .slide.has-entered:not(.cover):not(.closing) .content-panel,.motion-ready .closing.has-entered .closing-inner{animation:invitation-appear .65s ease-out both}
.cover-sparkles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.cover-sparkles i{position:absolute;width:5px;height:5px;border-radius:50%;background:#c4fbff;box-shadow:0 0 12px 3px #9cf3f9b5;opacity:0;animation:invitation-twinkle 4.8s ease-in-out infinite}
.cover-sparkles i:nth-child(1){top:23%;left:12%;animation-delay:.4s}
.cover-sparkles i:nth-child(2){top:35%;right:14%;width:4px;height:4px;animation-delay:2s}
.cover-sparkles i:nth-child(3){top:67%;left:20%;width:3px;height:3px;animation-delay:3.3s}
@keyframes invitation-appear{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes invitation-twinkle{0%,18%,78%,100%{opacity:0;transform:scale(.65)}40%,56%{opacity:.72;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.motion-ready .cover .cover-top,.motion-ready .cover .cover-center,.motion-ready .cover .cover-bottom,.motion-ready .slide:not(.cover):not(.closing) .content-panel,.motion-ready .closing .closing-inner{opacity:1!important;transform:none!important}.cover-sparkles{display:none}}

/* Opening emblem: an original Chengdu–Chile orbit based on the supplied visual reference. */
.opening{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(28px,6svh,48px);overflow:hidden;background:radial-gradient(circle at 50% 44%,#1b2a54 0%,#111522 50%,#0d111b 100%);transition:opacity .6s ease,visibility .6s ease}
.opening.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.opening-stars{position:absolute;inset:0;pointer-events:none}
.opening-stars i{position:absolute;display:block;width:4px;height:4px;background:#a6e8ff;box-shadow:0 0 10px #8acfff;opacity:.65;animation:orbit-star 5s ease-in-out infinite}
.opening-stars i:nth-child(1){left:16%;top:21%}.opening-stars i:nth-child(2){left:83%;top:14%;width:3px;height:3px;animation-delay:1.1s}.opening-stars i:nth-child(3){left:11%;top:67%;width:2px;height:2px;animation-delay:2.3s}.opening-stars i:nth-child(4){left:74%;top:76%;animation-delay:3.2s}.opening-stars i:nth-child(5){left:31%;top:82%;width:3px;height:3px;animation-delay:1.8s}.opening-stars i:nth-child(6){left:91%;top:53%;width:2px;height:2px;animation-delay:4.1s}
.opening-orbit{position:relative;flex:none;width:min(76vw,340px,43svh);aspect-ratio:1;border:clamp(12px,3.6vw,18px) solid #4e7df0;border-radius:50%;box-shadow:0 0 0 1px #83baff55,0 0 55px #2f64dc50,inset 0 0 24px #83d4ff66;animation:orbit-enter 1s cubic-bezier(.18,.8,.2,1) both,orbit-breathe 5.5s ease-in-out 1s infinite}
.opening-orbit:after{content:"";position:absolute;inset:-8px;border:2px solid transparent;border-top-color:#acd9ff;border-right-color:#acd9ff77;border-radius:50%;animation:orbit-turn 16s linear infinite;pointer-events:none}
.opening-core{position:absolute;inset:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;border-radius:50%;text-align:center;background:radial-gradient(circle at 50% 72%,#1469cf 0%,#1559bb 49%,#073684 100%)}
.opening-core:before{content:"";position:absolute;inset:0;background-image:radial-gradient(#b7e6ff 1px,transparent 1px);background-size:7px 7px;opacity:.12;mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 67%)}
.opening-globe{position:absolute;top:7%;left:24%;width:52%;height:46%;border:1px solid #a9dfff44;border-radius:50%;opacity:.5;transform:rotate(-15deg)}
.opening-globe:before,.opening-globe:after{content:"";position:absolute;border:1px solid #a9dfff55;border-radius:50%}.opening-globe:before{inset:0 32%}.opening-globe:after{inset:32% 0}
.opening-kicker,.opening-theme,.opening-subtitle{position:relative;z-index:1;text-shadow:0 2px 14px #003675}
.opening-kicker{margin-top:-17%;font:700 clamp(10px,2.5vw,13px)/1.3 Georgia,serif;letter-spacing:.16em;color:#e1f4ff}
.opening-theme{margin-top:13%;font:700 clamp(19px,5.3vw,30px)/1.4 "STKaiti","Kaiti SC",serif;letter-spacing:.07em;color:#9fe7f2;white-space:nowrap}
.opening-subtitle{font-size:clamp(8px,2.1vw,11px);letter-spacing:.1em;color:#d7ebff}
.opening-skyline{position:absolute;bottom:-1%;left:0;width:100%;height:auto;opacity:.82;pointer-events:none}
.opening-enter{position:relative;border:1px solid #a5d8f7;border-radius:999px;background:#16417f;color:#f1fbff;min-height:46px;padding:10px 23px;box-shadow:0 8px 25px #0005;font-size:14px;letter-spacing:.05em;cursor:pointer;animation:opening-button-in .6s .75s both}
.opening-enter span{font-size:23px;vertical-align:-2px;margin-left:8px;line-height:0}
@keyframes orbit-enter{from{opacity:0;transform:scale(.58) rotate(-20deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@keyframes orbit-breathe{50%{box-shadow:0 0 0 1px #83baff99,0 0 72px #5388fa8a,inset 0 0 34px #83d4ff88}}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
@keyframes orbit-star{50%{opacity:.15;transform:translateY(-7px)}}
@keyframes opening-button-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.opening,.opening-orbit,.opening-orbit:after,.opening-stars i,.opening-enter{animation:none!important;transition:none!important}}
