@font-face{font-family:Valley;src:url(assets/fusion-pixel-12px-proportional-zh-hans.woff2) format('woff2');font-display:swap}:root{--ink:#183b32;--paper:#fffdf5;--gold:#aa8650;--rust:#8c4238;--line:#d5c8ad}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:#173a30;color:var(--ink);font:16px/1.8 'Microsoft YaHei','PingFang SC',sans-serif}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #b25c4d;outline-offset:5px}[hidden]{display:none!important}.preview-note{position:relative;text-align:center;background:#ebdfbd;color:#594527;font-size:12px;padding:4px 12px}.topbar{max-width:1060px;display:flex;justify-content:space-between;align-items:center;margin:auto;padding:18px 30px;color:#fcf6df}.monogram{text-decoration:none;letter-spacing:5px;font-size:15px}#music{border:1px solid #759080;color:inherit;background:transparent;padding:5px 12px;font-size:13px}main{max-width:1060px;margin:0 auto;background:var(--paper)}h1,h2,h3,p{margin:0}h1,h2,.title-sub,.letter-sign{font-family:'Songti SC',SimSun,serif}h2{font-size:42px;line-height:1.5;font-weight:500}.chapter{display:block;font:13px/1.6 Valley,sans-serif;color:var(--gold);letter-spacing:2px;margin-bottom:22px}.hero{min-height:790px;padding:32px 60px 25px;position:relative;background:#fffdf5;border:14px solid #eee5d0;text-align:center}.hero::after{content:'';position:absolute;inset:10px;border:1px solid var(--line);pointer-events:none}.folio{display:flex;justify-content:space-between;color:var(--gold);font-size:12px;letter-spacing:3px}.hero-copy{padding-top:57px}.eyebrow{font-size:13px;letter-spacing:6px;color:var(--gold)}h1{font-size:65px;font-weight:500;letter-spacing:4px;line-height:1.5;margin:20px 0 4px}h1 span{font-size:30px;font-style:italic;color:var(--gold);margin:0 16px}.title-sub{font-size:23px;letter-spacing:8px}.date-rule{margin:38px auto 20px;display:flex;align-items:center;justify-content:center;gap:25px;font-size:13px;color:#6d715f}.date-rule strong{font-size:26px;font-weight:400;color:var(--ink)}.ceremony-time{font-size:27px;letter-spacing:1px}.ceremony-time span{font-size:15px;margin-left:10px}.hero-place{font-size:14px;margin-top:13px}.couple-seal{display:flex;justify-content:center;align-items:flex-end;margin:25px auto 15px;gap:3px}.couple-seal img,.scene-couple img,.cat img,.letter-flower,.flowers img,.scene-links img,.timeline img,.footer-cats img{object-fit:contain;image-rendering:pixelated}.open-letter{display:inline-flex;align-items:center;gap:25px;text-decoration:none;padding:8px 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);letter-spacing:3px;font-size:14px}.open-letter span{font-size:23px;color:var(--gold)}.hero-bottom{display:flex;justify-content:space-between;gap:15px;font-size:11px;color:var(--gold);margin-top:48px;letter-spacing:1px}.hero-bottom button{border:0;background:none;color:inherit;padding:0;text-decoration:underline}.letter{position:relative;padding:95px 10%;overflow:hidden;background:#f4f0e2}.invite-copy{font-size:18px;margin-top:27px;line-height:2.1;color:#4c5a47}blockquote{margin:36px 0 24px;border-left:2px solid var(--gold);padding-left:20px;font:18px/1.9 'Songti SC',SimSun,serif;color:#706547}.letter-sign{font-size:22px}.letter-flower{position:absolute;right:13%;bottom:100px;width:90px;height:110px;transform:rotate(8deg)}.courtyard{background:#173b31;color:#fff9e4;padding:65px 6% 42px}.section-intro{text-align:center;margin-bottom:28px}.scene{position:relative;aspect-ratio:3/2;overflow:hidden;background:#244a3c}.scene-background{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.scene-couple{position:absolute;display:flex;align-items:flex-end;left:46%;bottom:15%;transform:translateX(-50%)}.scene-couple img{width:clamp(48px,7vw,90px);height:clamp(76px,11vw,142px)}.cat{position:absolute;border:0;background:none;padding:8px;line-height:0}.cat-goudan{left:17%;bottom:13%}.cat-erya{right:16%;bottom:27%}.cat img{width:clamp(40px,6vw,72px);height:clamp(52px,8vw,95px)}.cat.pet{animation:pet .65s ease}.cat-heart{position:absolute;left:20%;bottom:30%;color:#d18676;opacity:0;pointer-events:none}.cat-heart.show{animation:heart 1s ease}.scene-links{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px}.scene-links a{display:flex;gap:12px;align-items:center;justify-content:center;padding:13px 8px;border:1px solid #6e8266;text-decoration:none;font-size:14px}.schedule{padding:80px 7%}.arrival{color:#65705a;margin-top:15px}.timeline{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;margin:40px 0 25px}.timeline article{display:flex;flex-direction:column}.timeline time{font-size:40px;line-height:1.4;color:var(--rust);font-variant-numeric:tabular-nums;margin-bottom:16px}.timeline article>div{border-top:2px solid var(--line);padding-top:22px;flex:1}.timeline .main-ceremony>div{border-color:var(--ink)}.timeline img{margin-bottom:12px}.timeline h3{font-size:21px;font-weight:500;margin-bottom:12px;white-space:nowrap}.timeline p{color:#68715e;font-size:15px;min-height:54px}.text-link{display:inline-block;border:0;border-bottom:1px solid currentColor;background:none;color:var(--ink);padding:3px 0;margin:6px 14px 6px 0;text-decoration:none;font-size:14px}.map{padding:60px 7%;background:#e7e8d9}.map-layout{display:grid;grid-template-columns:1.15fr 1fr;gap:40px;align-items:center}.map h2{font-size:29px}.map h2 span{font-size:23px}.map p{font-size:14px;color:#6c725f;margin:15px 0 22px}.map img{width:100%;height:auto;object-fit:cover}.button{display:inline-block;appearance:none;border:1px solid var(--ink);background:var(--ink);color:#fff9e9;padding:11px 25px;text-decoration:none;font-size:15px;letter-spacing:1px}.reply{max-width:730px;margin:auto;padding:80px 55px}.reply-heading{display:flex;justify-content:space-between;align-items:center}.reply-heading img{object-fit:contain;image-rendering:pixelated}.reply-intro{color:#65705d;margin:20px 0 8px;font-size:14px}.form-notice{font-size:12px;color:#8c6545;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:28px}.field{margin-bottom:25px}.field label,legend{font-size:15px;font-weight:500}.field label{display:block;margin-bottom:8px}small{font-weight:400;font-size:12px;color:#7f816e;margin-left:7px}input:not([type=radio]),textarea{width:100%;border:1px solid #bfc4af;border-radius:0;background:#fffef9;color:var(--ink);padding:12px;min-height:48px;font-size:16px}textarea{resize:vertical}input:focus,textarea:focus{outline:2px solid #8f9c72;outline-offset:2px}fieldset{border:0;padding:0;margin:0 0 28px;min-width:0}legend{margin-bottom:12px}.choices{display:flex;gap:10px;flex-wrap:wrap}.choices label{flex:1;min-width:95px;position:relative;cursor:pointer}.choices input{position:absolute;opacity:0;width:1px;height:1px}.choices span{display:block;padding:10px 12px;border:1px solid #c8ccb9;text-align:center;font-size:14px}.choices input:checked+span{background:#e5eadb;border:1px solid var(--ink)}.choices input:focus-visible+span{outline:3px solid var(--rust)}.count-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.count-row .field{margin-bottom:0}#total-count{grid-column:1/-1;font-size:13px;color:#7c745c;margin-bottom:22px}.field-help{font-size:12px;color:#7d806c;line-height:1.7;margin-top:9px}.flowers{display:flex;gap:14px}.flowers button{width:90px;border:1px solid var(--line);background:#fffdf5;color:var(--ink);padding:10px;font-size:12px}.flowers img{display:block;margin:auto auto 5px}.flowers button[aria-pressed=true]{background:#e6ebdc;border-color:var(--ink)}.privacy{font-size:12px;color:#7d806c;margin-bottom:20px}.error{color:#9a362b;font-size:14px;margin:12px 0}.form-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.receipt{position:relative;background:#f1eddd;border:1px solid var(--line);padding:36px;margin-top:20px}.receipt>img{position:absolute;top:26px;right:24px;image-rendering:pixelated;object-fit:contain}.receipt h3{font:29px/1.6 'Songti SC',SimSun,serif;margin-bottom:18px;padding-right:55px}.receipt p{margin-bottom:10px}.receipt-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:22px 0}details{border-top:1px solid var(--line);padding-top:17px;margin-top:22px;font-size:13px}summary{cursor:pointer}details p{margin:12px 0}code{display:block;word-break:break-all;font-size:13px;user-select:all}.restore label{display:block;margin:15px 0 6px}footer{text-align:center;padding:25px 24px 90px;border-top:1px solid var(--line)}.footer-cats{display:flex;gap:15px;justify-content:center;align-items:flex-end;margin-bottom:15px}footer p{font:26px/1.6 'Songti SC',SimSun,serif}footer>span{font-size:13px;color:var(--gold)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,1060px);display:grid;grid-template-columns:repeat(4,1fr);z-index:10;background:#183b32f5;color:#fff8e5;border-top:1px solid #637c69;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{text-align:center;text-decoration:none;padding:13px 5px;font-size:14px}.bottom-nav a:active{background:#325849}dialog{max-width:560px;width:calc(100% - 32px);max-height:90dvh;border:1px solid var(--line);background:var(--paper);padding:25px;color:var(--ink);overflow:auto}dialog::backdrop{background:#102d26c7}dialog h2{font-size:27px;margin-bottom:16px}dialog p{font-size:13px;margin:15px 0}#export-image{display:block;width:100%;height:auto}.dialog-close{float:right;background:none;border:0;font-size:27px;color:var(--ink)}.dialog-actions{display:flex;gap:15px;flex-wrap:wrap}#toast{position:fixed;bottom:88px;left:50%;transform:translateX(-50%);max-width:85%;background:#15372fec;color:white;padding:10px 18px;z-index:30;font-size:13px;opacity:0;pointer-events:none}#toast.show{opacity:1}@keyframes pet{50%{transform:translateY(-7px) rotate(-6deg)}}@keyframes heart{15%{opacity:1}100%{opacity:0;transform:translateY(-35px)}}@media(max-width:650px){.topbar{padding:14px 20px}.hero{min-height:690px;padding:25px 22px 23px;border-width:9px}.hero-copy{padding-top:45px}h1{font-size:38px;letter-spacing:1px;margin-top:25px;white-space:nowrap}h1 span{font-size:22px;margin:0 6px}.title-sub{font-size:19px;letter-spacing:6px}.date-rule{gap:15px;margin:29px auto 18px}.date-rule strong{font-size:22px}.ceremony-time{font-size:26px}.hero-place{font-size:13px}.couple-seal{margin-top:24px}.hero-bottom{margin-top:35px;font-size:10px;letter-spacing:0}.letter{padding:65px 27px}.letter h2,h2{font-size:31px}.invite-copy{font-size:16px}.letter-flower{right:27px;bottom:55px;width:60px;height:75px}blockquote{font-size:16px;margin-top:30px}.courtyard{padding:45px 16px 25px}.scene-links{gap:7px}.scene-links a{font-size:12px;gap:5px;padding:10px 4px}.scene-links img{width:20px;height:25px}.schedule{padding:60px 27px}.arrival{font-size:14px}.timeline{grid-template-columns:1fr;gap:25px;margin-top:30px}.timeline article{display:grid;grid-template-columns:85px 1fr;gap:15px}.timeline time{font-size:26px;margin:0;padding-top:17px}.timeline article>div{padding-top:15px;position:relative;padding-right:45px}.timeline img{position:absolute;right:0;top:18px}.timeline h3{font-size:20px;margin-bottom:7px}.timeline p{min-height:0;font-size:14px}.timeline p br{display:none}.map{padding:45px 27px}.map-layout{grid-template-columns:1fr;gap:25px}.map h2{font-size:25px}.map img{max-height:220px;object-fit:cover}.reply{padding:55px 27px}.reply-heading img{width:52px;height:72px}.reply h2{font-size:29px}.choices{gap:7px}.choices label{min-width:70px}.choices span{padding:10px 6px;font-size:13px}.receipt{padding:24px}.receipt>img{width:48px;height:65px;right:16px;top:24px}.receipt h3{font-size:25px}.button{padding:11px 20px}.bottom-nav a{font-size:13px}footer p{font-size:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

.cat-hint{position:absolute;right:8%;bottom:5%;font-size:12px;color:#fff8e8;background:#173a30df;padding:3px 10px;pointer-events:none;letter-spacing:2px}.cat-speech{position:absolute;left:12%;right:12%;top:8%;background:#fffdf2f5;color:#183b32;border:2px solid #a88b5e;padding:14px 18px;text-align:left;box-shadow:4px 4px 0 #142e2580}.cat-speech strong{font:16px Valley,Microsoft YaHei,sans-serif;color:#986846}.cat-speech p{font-size:14px;line-height:1.7;margin-top:7px;padding-right:10px}.cat-speech button{position:absolute;right:7px;top:4px;border:0;background:none;color:#647354;font-size:21px}.map-layout{grid-template-columns:1fr}@media(max-width:650px){.cat-speech{left:6%;right:6%;top:5%;padding:10px 13px}.cat-speech p{font-size:12px;line-height:1.7;margin-top:4px}.cat-speech strong{font-size:14px}.cat-hint{font-size:11px;letter-spacing:1px}}

.person{border:0;background:transparent;padding:0;line-height:0;position:relative;transition:transform .18s}.person:hover{transform:translateY(-4px)}.person-hint{font-size:11px;letter-spacing:2px;color:#857551;margin:0 0 17px}.seal-secret{border:0;background:none;color:inherit;font:inherit;padding:0;letter-spacing:inherit}.secret-star{position:absolute;right:8%;top:31%;border:0;background:none;padding:8px;line-height:0;transform:rotate(9deg)}.secret-star img{image-rendering:pixelated}.character-dialog{text-align:center;max-width:370px;padding:30px}.character-dialog>img{display:block;margin:12px auto 18px;object-fit:contain;image-rendering:pixelated}.character-dialog .chapter{margin:0 0 8px}.character-dialog h2{font-size:29px}.character-dialog p{font-size:16px;line-height:1.9;margin:18px 0 25px}.character-dialog .dialog-close{position:absolute;right:12px;top:7px}.gift-line{font-size:13px;color:#837152;min-height:24px;margin-top:10px}.hero-copy h1{letter-spacing:2px}.hero{min-height:820px}h2{letter-spacing:1px}.cat-speech{z-index:3}@media(max-width:650px){.hero{min-height:710px}.secret-star{right:6%;top:27%}.secret-star img{width:17px;height:22px}.cat-hint{right:5%;font-size:10px}.character-dialog{width:calc(100% - 40px)}.hero-copy h1{font-size:36px;letter-spacing:0}.person-hint{font-size:10px;margin-bottom:14px}.scene-couple .person{min-width:42px;min-height:76px}}

@media(max-width:650px){.cat-speech p{font-size:14px;line-height:1.6}.cat-hint{font-size:11px}.cat-speech{top:4%;left:5%;right:5%}}
@font-face{font-family:WeddingSerif;src:url(assets/wedding-serif.woff) format("woff");font-weight:200 900;font-display:swap}h1,h2,.title-sub,.letter-sign,blockquote,.date-rule strong{font-family:WeddingSerif,"Songti SC",SimSun,serif}