
:root{--ink:#533b29;--wood:#89542f;--cream:#fff3d4;--green:#59764b;--red:#ba6650;--paper:#fff4d8;--line:#dfc39b}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}body{margin:0;background:#e9eee2;color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:15px;line-height:1.7}button,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #618eac;outline-offset:4px}svg{width:20px;height:20px;flex-shrink:0}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.game{max-width:460px;margin:auto;background:var(--cream);position:relative;box-shadow:0 0 70px #364c3124;padding-bottom:68px;overflow:hidden}.topbar{height:52px;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;background:#fff7e7f5;border-bottom:2px solid #d2bb95;padding:0 19px;font-size:12px;letter-spacing:1px}.topbar a,.topbar>div{display:flex;align-items:center;gap:9px}.topbar svg{color:var(--red);width:13px;height:13px}.season{color:#85674d}.music-button{width:29px;height:29px;padding:0;border:1px solid #bc9a70;background:#fff0cc;box-shadow:2px 2px 0 #d5bb94;font-size:18px}.music-button.playing{color:#648240;animation:music 4s linear infinite}.cover{background:linear-gradient(#90d2ef,#b7e2e8 55%,#edf1c3);position:relative;padding-top:23px;text-align:center}.eyebrow{font-family:Georgia,serif;font-size:10px;letter-spacing:2.5px;margin:0 0 10px}.cover>.eyebrow{color:#456b71;font-size:9px}.wood-sign{position:relative;width:72%;margin:0 auto 10px;padding:13px 16px 15px;background:repeating-linear-gradient(0deg,#e4ac69 0,#e4ac69 4px,#efc18a 4px,#efc18a 18px);border:4px solid #75462e;box-shadow:inset 0 0 0 3px #ffd9a2,0 4px 0 #4e5a3830;transform:rotate(-1.4deg)}.wood-sign:before,.wood-sign:after{content:"";position:absolute;width:5px;height:5px;background:#795333;border:1px solid #ffe1ad;top:45%}.wood-sign:before{left:7px}.wood-sign:after{right:7px}h1{font-family:Georgia,"Times New Roman",serif;color:#713b20;font-size:clamp(26px,7.8vw,37px);line-height:1.06;margin:0;font-weight:900;text-shadow:1px 2px #fddbaa;letter-spacing:.5px}.daisy{position:absolute;width:28px;height:28px}.daisy-left{left:-18px;top:-8px;transform:rotate(-15deg)}.daisy-right{right:-17px;bottom:-7px;transform:rotate(20deg)}.cover-intro{font-size:11px;letter-spacing:2px;position:relative;margin:15px 0 7px}.scene{width:100%;aspect-ratio:1/.73;background:url('assets/wedding.png') center bottom/100% auto no-repeat;position:relative}.scene:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:18px;background:linear-gradient(transparent,#edf1c3);pointer-events:none}.cover-bottom{padding:10px 29px 12px;position:relative}.names{font-size:26px;font-weight:bold;letter-spacing:3px;display:flex;justify-content:center;align-items:center;gap:19px}.names svg{width:18px;height:18px;color:var(--red)}.date{font-size:13px;letter-spacing:2px;margin:8px 0 19px}.date span{font-size:10px;border-left:1px solid #aaad8b;padding-left:12px;letter-spacing:1px}.button{border:2px solid #684729;display:flex;align-items:center;justify-content:center;gap:18px;min-height:45px;padding:10px 16px;font-size:14px;font-weight:600;box-shadow:3px 3px 0 #684729;transition:transform .12s,box-shadow .12s;letter-spacing:1px}.button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #684729}.primary{background:#657d4b;color:#fff8de;border-color:#405331;box-shadow:3px 3px 0 #405331}.primary span{font-size:17px}.secondary{background:#f5dca8;color:#664c32}.tiny{font-size:10px;line-height:1.8;color:#867552;margin:12px 0 0}.scroll-hint{display:block;font-size:22px;line-height:20px;margin-top:7px;color:#6d7f48;animation:bob 2s infinite}.cloud{position:absolute;background:#fffc;box-shadow:13px -9px 0 -3px #fffc,-12px 6px 0 -2px #fffc;width:35px;height:14px;pointer-events:none}.cloud-one{left:11px;top:65px;animation:drift 7s ease-in-out infinite}.cloud-two{right:11px;top:110px;animation:drift 9s ease-in-out infinite reverse}.cat-hotspot{position:absolute;background:transparent;border:0;z-index:2;bottom:13%;height:24%;width:25%}.cat-one{left:8%;bottom:11%}.cat-two{right:16%;bottom:14%}.cat-hotspot:focus-visible{outline:2px dashed #fff}.cat-hint{position:absolute;right:17%;bottom:6%;background:#fff6ddea;font-size:9px;padding:1px 6px;border:1px solid #ac905b}.section{padding:36px 25px 39px}.chapter{display:flex;align-items:center;gap:10px;font-size:9px;letter-spacing:2px;color:#958467;margin-bottom:24px}.chapter>span{border:1px solid #b7a57e;min-width:23px;height:23px;line-height:22px;text-align:center;letter-spacing:0}.chapter svg{margin-left:auto;width:18px;height:18px}.letter-section{background:#edf1c3;padding-top:23px}.paper{background:var(--paper);border:1px solid #d9ba87;box-shadow:4px 5px 0 #80936324}.letter{padding:36px 24px 22px;position:relative;transform:rotate(-.8deg)}.letter .eyebrow{font-family:inherit;font-size:9px;letter-spacing:1px;color:#96734d}.letter h2{font-size:23px;font-family:Georgia,"Songti SC","SimSun",serif;margin:14px 0 22px}.letter p{font-size:13px;line-height:2.15;margin:18px 0}.letter .highlight{background:linear-gradient(transparent 60%,#e9cc88 60%);padding:0 2px;font-weight:bold}.letter .closing{color:#687947;font-size:14px;font-weight:500;letter-spacing:1px}.letter-divider{color:#b99960;font-size:12px;margin-top:28px}.letter .signature{text-align:right;font-size:13px;margin-top:23px;display:flex;align-items:center;justify-content:flex-end;gap:10px}.signature svg{color:#bc7960;width:12px;height:12px}.stamp{position:absolute;right:19px;top:17px;transform:rotate(12deg);border:2px dashed #b58665;width:49px;height:53px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#bb7959}.stamp span{font-size:6px;letter-spacing:.5px}.stamp svg{width:18px;height:18px}.dialogue{margin-top:23px;background:#fff1d1;border:3px solid #a07745;box-shadow:inset 0 0 0 2px #f6d4a0;display:flex;gap:12px;padding:13px}.cat-avatar{color:#d59b46;width:43px;height:43px;align-self:center;image-rendering:pixelated}.dialogue strong{font-size:10px;color:#957144;font-weight:500}.dialogue p{font-size:11px;line-height:1.8;margin:4px 0 0}.calendar-section{background:#fff3d7}.section-title{font-family:Georgia,"Songti SC","SimSun",serif;font-size:24px;line-height:1.45;margin:0 0 10px;font-weight:bold;letter-spacing:1px}.section-subtitle{font-size:11px;color:#9b8463;letter-spacing:.5px;margin:0 0 25px}.wood-frame{border:5px solid #9c6b3f;background:#fff2cf;box-shadow:0 0 0 1px #6c4a29,inset 0 0 0 2px #e7bc7b;padding:13px 9px 9px}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;gap:4px}.calendar-head span{font-size:9px;color:#9b753c}.calendar-head strong{font-size:15px;letter-spacing:1px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.calendar-grid>span{min-height:31px;display:flex;align-items:center;justify-content:center;position:relative;font-size:11px;background:#efdca64f}.calendar-grid>span.weekday{font-size:9px;min-height:18px;background:none;color:#a08454}.calendar-grid>span.blank{background:none}.calendar-grid>span.wedding-day{background:#b66a53;color:#fff9de;outline:2px solid #8e4936;outline-offset:-1px;font-weight:bold}.wedding-day svg{position:absolute;width:9px;height:9px;right:-2px;top:-4px;color:#b95749}.calendar-note{font-size:10px;display:flex;justify-content:center;align-items:center;gap:8px;margin:13px 0 3px;color:#9a7246}.calendar-note svg{width:10px;height:10px;color:#ae654c}.schedule{padding:27px 0 20px}.schedule>div{display:flex;gap:16px;position:relative;padding-bottom:22px}.schedule>div:last-child{padding-bottom:0}.clock-icon{font-size:18px;letter-spacing:1px;font-family:Georgia,serif;font-weight:bold;color:#7a8050;min-width:57px;align-self:start;border-top:2px solid #aeaf76;padding-top:4px}.schedule h3{font-size:13px;margin:0 0 4px}.schedule p{font-size:10px;margin:0;color:#9b8565}.calendar-section>.button{width:100%;font-size:12px;min-height:40px}.quest-section{background:#e1e8bd}.quest-board{position:relative;padding:34px 18px 19px;background:#f9e7b6;outline:3px solid #875d36;border:6px solid #b48a53;box-shadow:0 6px 0 #acb18b;text-align:center}.nail{position:absolute;width:8px;height:8px;top:8px;background:#6d6960;border:2px solid #b7ac95;box-shadow:1px 1px #6c5133}.nail.left{left:8px}.nail.right{right:8px}.quest-board .eyebrow{font-family:inherit;font-size:10px;letter-spacing:3px;color:#a17745}.quest-board h2{font-size:22px;font-family:"Songti SC","SimSun",serif;margin:12px 0}.quest-board>p{font-size:11px;color:#927448}.gift-stage{margin:27px 0 17px}.gift-stage>button{border:0;background:none;display:flex;align-items:center;flex-direction:column;gap:15px;margin:auto;color:#84623c;font-size:10px}.gift-box{display:block;width:64px;height:54px;position:relative;background:#77905b;border:4px solid #4e663c;box-shadow:5px 5px #d9bd7c;animation:bob 3s infinite}.gift-box:before{content:"";position:absolute;left:-8px;right:-8px;top:-8px;height:16px;background:#93a367;border:3px solid #4e663c}.gift-box:after{content:"";position:absolute;left:23px;top:-8px;width:10px;height:54px;background:#edc070;border-left:2px solid #b38a48;border-right:2px solid #b38a48}.gift-box i:before,.gift-box i:after{content:"";position:absolute;width:22px;height:16px;border:5px solid #c89148;top:-26px;z-index:2}.gift-box i:before{left:1px;transform:rotate(15deg)}.gift-box i:after{right:0;transform:rotate(-15deg)}.gift-result{min-height:54px;padding:10px;background:#fff5d4;border:1px dashed #c8a25f;font-size:12px;display:flex;align-items:center;justify-content:center}.quest-board p.quest-reward{font-size:9px;margin-top:17px;margin-bottom:0}.location-section{background:#faf0d5}.mini-map{height:220px;border:4px solid #8a7d4b;outline:1px solid #5b673d;position:relative;background-color:#a9bb77;background-image:linear-gradient(45deg,#c5cc891c 25%,transparent 25%,transparent 75%,#c5cc891c 75%),linear-gradient(45deg,#c5cc891c 25%,transparent 25%,transparent 75%,#c5cc891c 75%);background-size:20px 20px;background-position:0 0,10px 10px;overflow:hidden}.map-river{position:absolute;width:60px;height:350px;background:repeating-linear-gradient(0deg,#94c7c2 0,#94c7c2 17px,#b3d8c8 17px,#b3d8c8 20px);right:30px;top:-40px;transform:rotate(20deg);border:5px solid #dcdaaa;box-shadow:0 0 0 6px #93a569}.map-path{position:absolute;height:26px;background:#e1c791;left:0;right:110px;top:145px;border-top:3px solid #d2b57a;border-bottom:3px solid #d2b57a}.hotel{position:absolute;left:30%;top:88px;width:94px;height:80px}.hotel-roof{position:absolute;top:0;width:100%;height:29px;background:#b46e43;clip-path:polygon(20% 0,80% 0,100% 100%,0 100%);border-bottom:5px solid #78492f}.hotel-body{position:absolute;top:29px;left:9px;right:9px;height:44px;background:#ffecb3;border:4px solid #957547;display:flex;gap:7px;padding:7px}.hotel-body i{width:10px;height:12px;background:#78adb2;border:2px solid #b69960}.hotel-body b{position:absolute;width:17px;height:20px;bottom:-4px;left:26px;background:#9b7949;border:3px solid #6c5935}.map-marker{position:absolute;top:34px;left:28%;font-size:10px;display:flex;align-items:center;gap:4px;background:#fff3ce;padding:5px 8px;border:2px solid #805e39;animation:bob 3s infinite}.map-marker svg{width:17px;height:17px;color:#b15b42}.tree{position:absolute;font-family:serif;font-size:66px;line-height:1;color:#597d45;text-shadow:4px 4px #859858}.t1{left:7px;top:6px}.t2{right:8px;top:2px}.t3{left:24px;bottom:2px}.t4{right:8px;bottom:19px}.map-label{position:absolute;bottom:8px;left:92px;font-size:8px;color:#627447;background:#d5dda9c9;padding:2px 5px}.map-flower{position:absolute;width:13px;height:13px}.f1{left:17px;top:107px}.f2{right:91px;bottom:17px}.location-info{padding:21px 0 0}.small-label{font-size:8px;letter-spacing:2px;color:#ad8e66}.location-info h3{font-size:23px;margin:4px 0 5px;letter-spacing:1px}.location-info h3 span{font-size:12px;margin-left:7px;background:#e5d6ad;padding:3px 6px}.location-info p{font-size:11px;color:#987c5b;margin:0 0 21px}.text-button{display:block;background:none;border:0;color:#8b7757;font-size:11px;text-decoration:underline;text-underline-offset:4px;margin:15px auto 0}.rsvp-section{background:#e7ebce}.form-panel{padding:22px 18px}.form-panel>label,#party-fields>label{display:block;font-size:12px;font-weight:bold;margin-bottom:8px}.form-panel label>span{color:#b56951}.form-panel label>small{font-size:9px;color:#a28b65;font-weight:normal;margin-left:8px}input,textarea{width:100%;border:1px solid #d0b68a;background:#fff9e9;padding:11px 12px;color:var(--ink);border-radius:0;min-height:42px;font-size:12px;resize:vertical}input::placeholder,textarea::placeholder{color:#b6a17d}fieldset{border:0;padding:0;margin:20px 0}legend{font-size:12px;font-weight:bold;padding:0;margin-bottom:10px}.choices{display:flex;gap:10px}.choices>label{flex:1;cursor:pointer;position:relative}.choices input{position:absolute;width:1px;height:1px;opacity:0;min-height:0}.choices span{display:block;text-align:center;border:1px solid #cfb789;padding:10px 3px;font-size:11px;background:#fff9e8}.choices input:checked+span{background:#e1e7bd;color:#526b38;border:2px solid #7c925b;padding:9px 2px;font-weight:bold}.choices input:focus-visible+span{outline:3px solid #618eac}.stepper{display:flex;width:141px;border:1px solid #ceb687;margin-bottom:19px}.stepper button{width:42px;border:0;background:#eeddae;color:#79613e}.stepper input{padding:6px 0;border:0;text-align:center;width:54px;appearance:textfield;-moz-appearance:textfield}.stepper input::-webkit-inner-spin-button{appearance:none}.form-panel>.button{width:100%;margin-top:23px;font-size:13px}.form-note{font-size:9px;color:#a58f6c;margin:12px 0 0;line-height:1.8}.form-status{font-size:11px;color:#536f3e;line-height:1.8;margin:10px 0 0;overflow-wrap:anywhere}.form-status.error{color:#a54435}.wishes-section{background:#fff2d4}.wish-form input{margin-bottom:9px}.wish-form textarea{display:block}.wish-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}.wish-footer>span{font-size:8px;color:#a38d69}.wish-footer .button{font-size:10px;min-height:35px;padding:6px 12px;gap:0}.wish-list{margin-top:30px;display:grid;gap:13px}.wish-card{padding:15px 17px;background:#fffae9;border-left:3px solid #b1b982;box-shadow:2px 3px 0 #ecdfbd}.wish-card p{font-size:12px;margin:0 0 8px;white-space:pre-wrap;overflow-wrap:anywhere}.wish-card small{font-size:9px;color:#a48a61}.empty-wishes{font-size:12px;text-align:center;color:#a38b60;padding:15px;line-height:2}.ending{text-align:center;background:#e2e7bb;padding:45px 20px 32px}.ending>svg{width:27px;height:27px}.ending p{font-family:Georgia,"Songti SC","SimSun",serif;font-size:25px;line-height:1.7;letter-spacing:2px;margin:20px 0}.ending strong{display:block;font-size:16px;letter-spacing:3px}.ending>span{font-size:11px;display:block;margin-top:10px;letter-spacing:1px}.ending small{display:block;font-size:8px;color:#8a9567;letter-spacing:2px;margin-top:26px}.ending>a{font-size:9px;color:#829161;display:inline-block;margin-top:19px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,460px);z-index:30;height:calc(56px + env(safe-area-inset-bottom));padding:0 14px env(safe-area-inset-bottom);display:flex;background:#fff6e4f7;border-top:2px solid #d4bb93;align-items:center;justify-content:space-around;backdrop-filter:blur(8px)}.bottom-nav a{font-size:11px;letter-spacing:2px;padding:8px 16px;color:#9a8462;display:flex;align-items:center;gap:7px}.bottom-nav a.active{background:#e5e8c6;color:#5f7045}.bottom-nav a:last-child{color:#686e40;font-weight:bold}.bottom-nav svg{width:10px;height:10px;color:#b57959}.desktop-note{display:none}.toast{position:fixed;left:50%;bottom:85px;transform:translate(-50%,10px);width:max-content;max-width:330px;background:#fff4d7;border:2px solid #876443;box-shadow:4px 4px #67523844;padding:13px 18px;font-size:12px;color:#665237;z-index:80;opacity:0;pointer-events:none;transition:.2s;text-align:center}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:3px solid #866140;background:#fff2d1;color:#684d33;padding:30px 25px;width:calc(100% - 48px);max-width:355px;box-shadow:6px 6px #49362655}dialog::backdrop{background:#283a2d88}dialog h2{font-size:21px}dialog p{font-size:12px}.dialog-close{position:absolute;right:8px;top:4px;font-size:23px;background:none;border:0;color:#846544}dialog .button{font-size:12px;margin-top:24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.confetti{position:fixed;width:7px;height:7px;top:-15px;z-index:90;pointer-events:none;animation:fall 2.3s linear forwards}@keyframes fall{to{transform:translateY(105vh) rotate(480deg);opacity:0}}@keyframes bob{50%{transform:translateY(-4px)}}@keyframes drift{50%{transform:translateX(10px)}}@keyframes music{to{transform:rotate(360deg)}}@media(min-width:1000px){body{background:radial-gradient(ellipse at 25% 40%,#f9f2db 0,transparent 65%),#e8ede0}.game{margin-left:calc(50% - 30px);margin-right:0}.bottom-nav{left:calc(50% + 200px)}.desktop-note{display:block;position:fixed;left:calc(50% - 365px);top:calc(50% - 210px);width:270px}.desktop-note>span{font-size:10px;letter-spacing:3px;color:#9e9577}.desktop-note h2{font-family:Georgia,"Songti SC","SimSun",serif;font-size:35px;font-weight:normal;line-height:1.65;letter-spacing:4px;margin:24px 0}.desktop-note p{font-size:12px;line-height:2.1;color:#8b8e6e;letter-spacing:2px}.desktop-note>svg{display:block;margin:30px 0 15px;width:27px;height:27px}.desktop-note small{font-size:11px;color:#8b8a6b;line-height:2;letter-spacing:2px}}@media(max-width:360px){.section{padding-left:20px;padding-right:20px}.names{font-size:23px}.section-title{font-size:21px}.letter{padding-left:19px;padding-right:19px}.letter p{font-size:12px}.bottom-nav a{padding:8px 12px}.cover-intro{font-size:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

@media(min-width:1000px){.desktop-note{width:320px;left:calc(50% - 395px)}.desktop-note h2{font-size:32px;letter-spacing:3px}}
.game{overflow:clip}
.private-wish-note{margin-top:22px;padding:15px 17px;background:#fffae9;border-left:3px solid #b1b982;box-shadow:2px 3px 0 #ecdfbd;display:flex;align-items:center;gap:13px}.private-wish-note svg{color:#b57959;width:18px;height:18px}.private-wish-note p{font-size:11px;line-height:1.9;margin:0;color:#8f7653}
