@font-face{font-family:ainiposuishengguowanmei;src:url('../fonts/ainiposuishengguowanmei.ttf');font-display:swap}@font-face{font-family:'Noto Serif SC';src:url('../fonts/NotoSerifSC-Regular.ttf') format('opentype');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'Brush Script MT';src:local('Brush Script MT'),url('../fonts/BrushScriptMT.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}:root{color-scheme:only light;--theme-font:'Noto Serif SC',serif;--bg-color:#FFFAF5}*{margin:0;padding:0;box-sizing:border-box}html{font-size:18px}body,html{overflow-x:hidden}body{font-family:var(--theme-font);background-color:var(--bg-color);color:var(--text-main);-webkit-font-smoothing:antialiased;line-height:1.5}.main-container{max-width:600px;margin:0 auto;padding:40px 25px;background:#fffaf5;min-height:100vh;position:relative;box-shadow:0 0 50px rgba(0,0,0,.03)}.header{position:relative;margin-bottom:50px;padding-top:20px}.main-title{font-size:1.333rem;font-weight:500;display:flex;align-items:flex-start;flex-wrap:wrap;line-height:1.5;letter-spacing:1.5px}.en-title{font-family:'Brush Script MT';letter-spacing:2px;color:#333}.divider{font-weight:300;margin:0 12px;color:#ccc}.cn-title{flex:1;min-width:150px;color:#111;font-size:1rem}.sub-info{margin-top:25px;font-size:1rem;color:var(--text-sub);display:flex;gap:25px;letter-spacing:1.5px}.top-right-decor{position:absolute;top:5px;right:0;opacity:.4;z-index:2}.main-bg-rose-top{position:absolute;top:-14px;right:-8px;width:151px;max-width:40%;pointer-events:none;z-index:10}.player-card{position:relative;width:100%;border-radius:12px;overflow:hidden;margin-bottom:50px;box-shadow:0 15px 40px rgba(0,0,0,.08)}.play-hint{position:absolute;left:0;right:0;bottom:16px;z-index:2;text-align:center;font-size:.833rem;color:rgba(255,255,255,.9);text-shadow:0 1px 4px rgba(0,0,0,.4);pointer-events:none;transition:opacity .3s}.play-hint.hidden{opacity:0;pointer-events:none}.player-bg{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;filter:contrast(.95) saturate(.9)}.player-bg img{width:100%;height:100%;object-fit:cover;object-position:center 30%;display:block}.player-bg::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.3) 50%,rgba(0,0,0,.6) 100%);z-index:2}.player-content{position:relative;z-index:3;display:flex;flex-direction:row;align-items:center;padding:15px 20px;color:var(--player-text);gap:20px}.record-wrapper{flex:0 0 auto}.record{width:120px;height:120px;border-radius:50%;border:12px solid #2d2d2d;position:relative;box-shadow:0 8px 24px rgba(0,0,0,.35),0 2px 6px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.08);transition:transform .2s linear;overflow:hidden}.record::before{content:'';position:absolute;inset:-12px;border-radius:50%;background:repeating-radial-gradient(circle at center,transparent 0,transparent 14px,rgba(0,0,0,.03) 14px,rgba(0,0,0,.03) 14.5px);pointer-events:none}.record-img{width:100%;height:100%;border-radius:50%;position:relative;overflow:hidden}.record-img img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.record-img::after{content:'';position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 3px rgba(255,255,255,.5),inset 0 0 20px rgba(0,0,0,.15);pointer-events:none}.record-hole{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:18px;height:18px;border-radius:50%;background:linear-gradient(145deg,#e8e8e8 0,#a0a0a0 50%,#c8c8c8 100%);box-shadow:inset 0 1px 2px rgba(255,255,255,.8),inset 0 -1px 1px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.15);opacity:.6}.play-anim{animation:rotateRecord 6s linear infinite}@keyframes rotateRecord{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.controls-wrapper{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-around;height:120px}.song-info{text-align:center;margin:5px 0;text-shadow:0 1px 3px rgba(0,0,0,.5);color:#fff}.song-title{font-size:1rem;font-weight:500;letter-spacing:2px}.artist{font-size:1rem;opacity:.9;margin-top:2px;letter-spacing:1px}.progress-bar{display:flex;align-items:center;font-size:.833rem;gap:8px}.track{flex:1;height:2px;background:rgba(255,255,255,.3);border-radius:1px;position:relative}.track .fill{width:30%;height:100%;background:#fff;border-radius:1px;position:relative;transition:width .1s linear}.track .handle{position:absolute;right:-4px;top:-3px;width:8px;height:8px;background:#fff;border-radius:50%;box-shadow:0 0 2px rgba(0,0,0,.5)}.invitation-intro{padding:36px 0 40px;text-align:center;background:#fffaf5;margin-bottom:40px}.invitation-intro-title{font-family:ainiposuishengguowanmei;font-size:2.333rem;font-weight:400;color:#333;letter-spacing:2px;margin-bottom:8px}.invitation-intro-subtitle{font-family:'Brush Script MT';font-size:1.222rem;color:#888;margin-bottom:28px;letter-spacing:1px}.invitation-intro-body{font-family:var(--theme-font);font-size:1rem;line-height:2;color:#444;max-width:480px;margin:0 auto}.invitation-intro-body p{margin-bottom:6px}.invitation-intro-body p:last-child{margin-bottom:0}.romantic-section{position:relative;padding:20px 0 40px;margin-top:10px}.pink-calligraphy{font-family:'Brush Script MT';font-size:2.778rem;color:#d84370;line-height:1.2;transform:rotate(-8deg);position:absolute;left:10px;top:-20px;z-index:10;text-shadow:1px 1px 0 #fff;font-weight:500;letter-spacing:2px}.pink-calligraphy img{box-shadow:none!important;background:0 0!important}.right-content{display:flex;flex-direction:column;align-items:flex-end;padding-right:20px;margin-top:40px}.double-happiness{font-size:3.333rem;color:#aa2020;font-weight:700;margin-bottom:30px;opacity:.9}.poem-text-right{text-align:right;font-size:1rem;line-height:2.6;color:#555;margin-bottom:5px;letter-spacing:1.5px}.our-wedding-section{text-align:center;margin-bottom:70px;margin-top:40px}.our-wedding-title{font-size:1.444rem;font-weight:300;letter-spacing:4px;margin-bottom:35px;color:#222;text-align:center}.love-line-you{display:flex;align-items:center;justify-content:space-between;padding:0 20px;color:#7d4d4d;font-size:.833rem;letter-spacing:3px}.love-line-you .center-line{flex:1;height:1px;background-color:#eaeaea;margin:0 25px}.bottom-image{width:100%}.photo-margin{margin-bottom:10px}.photo-margin-large{margin-bottom:120px!important}.bottom-image img,.wide-image img{width:100%;display:block;border-radius:0;box-shadow:0 4px 20px rgba(0,0,0,.05);object-fit:cover}.wide-image{position:relative;margin-top:30px}.photo-grid+.wide-image{margin-top:0}.bottom-image,.wide-image{margin-left:-25px;margin-right:-25px;width:calc(100% + 50px)}.together-cal{top:-50px;left:40px;font-size:2.778rem}.poem-block{padding:20px 0;margin-top:50px;margin-bottom:50px;font-size:1rem;line-height:2.8;color:#444;letter-spacing:2px}.center-align{text-align:center}.right-align{text-align:right}.poem-block.tight{margin-bottom:50px;margin-top:50px}.photo-grid{display:flex;gap:10px;margin-bottom:10px;padding:0;margin-left:-25px;margin-right:-25px;width:calc(100% + 50px)}.grid-item{flex:1;overflow:hidden;border-radius:0;box-shadow:0 4px 15px rgba(0,0,0,.06)}.grid-item img{width:100%;display:block}.name-divider{text-align:center;margin:60px 0;display:flex;justify-content:center;align-items:center;gap:20px}.cn-name{font-size:1.222rem;letter-spacing:4px;font-weight:300;display:inline-block;width:84px;text-align-last:justify;text-align:center}.amp-red{font-size:1.778rem;color:#aa2020;font-style:italic}.ending-quote{text-align:center;font-size:.833rem;letter-spacing:4px;font-weight:700;color:#111;margin:80px 0 60px;padding-bottom:40px}.info-section{text-align:center;background-color:#fffaf5}.info-title{font-size:1.778rem;font-weight:300;letter-spacing:4px;color:#111;margin-bottom:40px}.double-happiness-center{font-size:3.333rem;color:#aa2020;font-weight:700;margin-bottom:40px}.info-details h3{font-size:1.111rem;font-weight:500;letter-spacing:3px;margin-bottom:25px;color:#111}.info-details p{font-size:.833rem;color:#555;line-height:2;letter-spacing:1px}.calendar-container{width:85%;max-width:350px;margin:50px auto}.cal-header{display:flex;align-items:baseline;justify-content:center;color:#8c2a2a;margin-bottom:20px}.cal-month{font-size:2.222rem;font-weight:400}.cal-slash{font-size:1rem;margin:0 5px}.cal-date{font-size:1rem}.cal-year{margin-left:auto;font-size:1rem}.cal-body{border-top:1px solid #c7a4a4;border-bottom:1px solid #c7a4a4;padding:15px 0}.cal-row{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;margin-bottom:15px}.cal-weeknames span{font-size:.833rem;color:#900;font-weight:400}.cal-dates{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:12px 0}.cal-dates span{font-size:.833rem;color:#555;display:flex;align-items:center;justify-content:center;height:24px}.cal-highlight{color:#aa2020!important;position:relative;font-weight:700}.cal-highlight::after{content:'\2661';position:absolute;font-size:1.889rem;color:rgba(170,32,32,.35);top:50%;left:50%;transform:translate(-50%,-50%)}.address-info{font-size:1rem;color:#8c2a2a;letter-spacing:1px;margin:40px 0 40px}.map-placeholder{width:90%;margin:0 auto 50px;border-radius:6px;overflow:hidden;position:relative;box-shadow:0 5px 15px rgba(0,0,0,.05)}.map-placeholder img{width:100%;height:180px;object-fit:cover;display:block;filter:sepia(.1) saturate(.8)}.map-overlay{position:absolute;bottom:0;left:0;width:100%;background:rgba(255,255,255,.85);padding:10px;display:flex;justify-content:center;align-items:center;font-size:.833rem;color:#333;letter-spacing:1px}.poem-block.large-spacing p{line-height:2.2;margin-bottom:8px}.fade-bg-image{position:relative;width:calc(100% + 50px);margin-left:-25px;margin-right:-25px;height:500px;margin-top:30px;margin-bottom:30px}.fade-bg-image img{width:100%;height:100%;object-fit:cover;display:block}.gradient-mask-top{position:absolute;top:0;left:0;width:100%;height:150px;background:linear-gradient(to bottom,#fffaf5 0,rgba(255,250,245,0) 100%)}.gradient-mask-bottom{position:absolute;bottom:0;left:0;width:100%;height:150px;background:linear-gradient(to top,#fffaf5 0,rgba(255,250,245,0) 100%)}.gradient-mask-bottom-long{position:absolute;bottom:0;left:0;width:100%;height:350px;background:linear-gradient(to top,#fffaf5 0,rgba(255,250,245,0) 100%)}.rsvp-section{padding:20px 0;text-align:center;background-color:#fffaf5;margin-top:30px}.rsvp-title{font-size:1.2rem;letter-spacing:3px;font-weight:400;color:#111;margin-bottom:40px}.rsvp-form{width:85%;max-width:320px;margin:0 auto 50px}.input-group{position:relative;margin-bottom:20px}.input-group .required{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:#c75a5b;font-size:1rem;z-index:1}.rsvp-form input[type=number],.rsvp-form input[type=tel],.rsvp-form input[type=text]{width:100%;padding:14px 18px 14px 28px;border:1px solid #e0d0d0;border-radius:12px;background:#fefbfb;font-family:inherit;font-size:.833rem;color:#333;outline:0;transition:border-color .25s,box-shadow .25s;box-shadow:0 1px 3px rgba(0,0,0,.04)}.rsvp-form input[type=number]::placeholder,.rsvp-form input[type=tel]::placeholder,.rsvp-form input[type=text]::placeholder{color:#b0a0a0}.rsvp-form input[type=number]:focus,.rsvp-form input[type=tel]:focus,.rsvp-form input[type=text]:focus{border-color:#c75a5b;box-shadow:0 0 0 3px rgba(199,90,91,.15)}.submit-btn{width:100%;padding:16px 24px;margin-top:28px;background:linear-gradient(145deg,#b83d3e 0,#9a2a2b 100%);color:#fff;border:none;border-radius:12px;font-size:.833rem;font-weight:500;letter-spacing:8px;font-family:inherit;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 14px rgba(170,32,32,.35)}.submit-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(170,32,32,.4)}.submit-btn:active{transform:translateY(0)}.final-poem{text-align:center;padding:40px 20px 100px;background-color:#fffaf5;position:relative;z-index:2;margin-top:-300px}.final-poem p{font-size:1rem;line-height:2.4;color:#222;letter-spacing:1.5px}.thank-you-title{font-size:1.556rem;font-weight:300;letter-spacing:4px;color:#111;margin-top:80px}@media (max-width:480px){.player-content{padding:12px 14px;gap:14px}.record-wrapper .record{width:90px;height:90px;border-width:10px}.record-wrapper .record::before{inset:-10px}.controls-wrapper{height:90px}.main-title .en-title{font-size:1.333rem}.main-title .cn-title{font-size:1rem}.together-cal{font-size:1.667rem;left:10px}}.intro-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#fffaf5;z-index:9999;display:flex;justify-content:center;align-items:center;flex-direction:column;transition:transform .8s cubic-bezier(.65, 0, .35, 1),opacity .8s ease;cursor:pointer}.intro-overlay::before{content:'';position:absolute;top:15px;left:15px;right:15px;bottom:15px;border:none;pointer-events:none;z-index:0}.intro-overlay::after{content:'';position:absolute;top:5vmin;left:4vmin;right:4vmin;bottom:5vmin;pointer-events:none;z-index:0;background-image:none;background-size:100% 100%;background-position:center;background-repeat:no-repeat;border:none;box-shadow:none}.intro-overlay.opened{opacity:0;transform:translateY(-100vh);pointer-events:none}.intro-bg-img{position:absolute;top:15px;left:15px;width:calc(100% - 30px);height:calc(100% - 30px);object-fit:cover;z-index:0;pointer-events:none}.intro-bg-texture{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1;pointer-events:none;mix-blend-mode:multiply;opacity:.8}.intro-bg-rose-top{position:absolute;top:0;left:0;width:100%;z-index:2;pointer-events:none}.intro-bg-rose-bottom{position:absolute;bottom:0;left:0;width:100%;z-index:2;pointer-events:none}.intro-content{position:relative;z-index:3;text-align:center;animation:fadeIn 1s ease}.intro-content .intro-title{margin-bottom:50px;color:#8a736a;display:flex;flex-direction:column;align-items:center;gap:15px}.intro-content .intro-title .en-title{font-family:inherit;font-size:2.2rem;letter-spacing:6px;text-transform:uppercase;font-weight:300}.intro-content .intro-title .cn-title{font-size:1.2rem;font-weight:400;line-height:1.8;letter-spacing:2px}.intro-content .intro-title .divider{display:none}.open-btn{background-color:#8c736a;color:#fff;border:none;padding:12px 30px;font-size:1rem;border-radius:25px;cursor:pointer;font-family:inherit;letter-spacing:2px;transition:all .3s ease;box-shadow:0 4px 15px rgba(140,115,106,.3)}.open-btn:active{transform:scale(.95)}@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.progressive-image{position:relative;overflow:hidden;background:#fffaf5}.progressive-image .img-placeholder{display:block;width:100%;object-fit:cover;filter:blur(20px);transform:scale(1.1);transition:opacity .5s ease-out;z-index:1}.progressive-image picture{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.progressive-image .img-full{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .6s ease-in}.progressive-image.loaded .img-full{opacity:1}.progressive-image.loaded .img-placeholder{opacity:0}.custom-alert-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);z-index:9999;display:flex;justify-content:center;align-items:center}.custom-alert-box{background:#fffaf5;padding:30px;border-radius:12px;text-align:center;min-width:260px;box-shadow:0 10px 30px rgba(0,0,0,.1)}.custom-alert-box h3{color:#d84370;font-size:1.111rem;font-weight:400;margin-bottom:10px;text-align:center}.custom-alert-box p{color:#666;font-size:.833rem;margin-bottom:20px;text-align:center}.alert-confirm-btn{background:linear-gradient(145deg,#b83d3e 0,#9a2a2b 100%);color:#fff;border:none;padding:10px 30px;border-radius:20px;font-size:.833rem;letter-spacing:2px;cursor:pointer;transition:transform .2s,box-shadow .2s;box-shadow:0 4px 14px rgba(170,32,32,.35)}.alert-confirm-btn:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(170,32,32,.4)}.poem-typewriter p{opacity:0;transform:translateY(8px);transition:opacity .5s ease,transform .5s ease;display:block}.poem-typewriter p.type-visible{opacity:1;transform:translateY(0)}@keyframes heartbeat{0%{transform:scale(1)}14%{transform:scale(1.08)}28%{transform:scale(1)}42%{transform:scale(1.05)}70%{transform:scale(1)}100%{transform:scale(1)}}.double-happiness,.double-happiness-center{display:inline-block;animation:heartbeat 2.2s ease-in-out infinite;transform-origin:center}