:root{--paper: #f7f1e7;--card: #fcf8f1;--wash: #e8e7db;--sage: #a2a68c;--ink: #655c51;--deep: #493e38;--pink: #d9aaa3;--yellow: #c7a96a;--peach: #d6a07c;--gray: #81756c;--shadow: rgba(82, 63, 42, .11);--safe: env(safe-area-inset-bottom, 0px) }*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{scroll-behavior:smooth;background:#e9e1d5}body{margin:0;color:var(--deep);background:#e9e1d5;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}button,input,textarea{font:inherit}.phone-canvas{width:min(100%,430px);margin:auto;overflow:hidden;background-color:var(--paper);background-image:radial-gradient(rgba(92,73,54,.035) .7px,transparent .8px);background-size:5px 5px;box-shadow:0 0 50px #493e3824}.scene{position:relative;padding:80px 22px;overflow:hidden}.scene-kicker{margin:0 0 8px;text-align:center;color:var(--ink);font:600 9px/1.4 Arial;letter-spacing:2.8px}.scene h2{margin:0;color:var(--deep);font:500 31px/1.25 Kaiti SC,KaiTi,serif;letter-spacing:2px}.hero{width:100%;height:auto;min-height:0;aspect-ratio:9 / 16;padding:0;background:#1e3028}.hero-media{position:absolute;inset:0;overflow:hidden;transition:height .68s cubic-bezier(.25,.8,.25,1),border-radius .68s,margin .68s}.hero-media video{display:block;width:100%;height:100%;object-fit:cover;object-position:center;background:#1e3028}.hero-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(transparent 55%,#13251f80)}.hero-controls{position:absolute;z-index:2;left:18px;right:18px;bottom:calc(24px + var(--safe));display:flex;justify-content:space-between;gap:12px;transition:opacity .25s}.media-control{height:44px;padding:0 18px;border:1px solid #fff9;border-radius:24px;color:#fff;background:#ffffff1f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap}.sound-control{width:78px;padding:0 10px;font-size:11px}.hero.is-revealed{height:48svh;min-height:360px;aspect-ratio:auto;background:var(--paper)}.hero.is-revealed .hero-media{inset:12px;height:calc(100% - 24px);border-radius:2px}.hero.is-revealed .hero-controls{opacity:0;pointer-events:none}.hero-replay{position:absolute;z-index:3;left:20px;right:20px;bottom:2px;min-height:44px;border:0;color:var(--gray);background:transparent;font-size:10px;opacity:0;pointer-events:none}.hero.is-revealed .hero-replay{opacity:1;pointer-events:auto}.childhood{min-height:770px;padding-top:76px;background-color:var(--paper);background-image:linear-gradient(#f7f1e714,#f7f1e72e),url(/assets/wedding/backgrounds/childhood-watercolor.webp);background-repeat:no-repeat;background-position:top center;background-size:100% auto}.childhood:before{content:"";position:absolute;left:-30px;top:80px;width:190px;height:110px;border-radius:50%;background:var(--wash);transform:rotate(-8deg);opacity:.7}.childhood h2{text-align:center}.doodle-path{position:absolute;top:34px;right:15px;color:var(--ink);font-size:12px;transform:rotate(5deg)}.tape{position:absolute;z-index:3;width:56px;height:19px;opacity:.82;transform:rotate(-5deg)}.tape-yellow{background:var(--yellow)}.tape-pink{background:var(--pink)}.childhood>.tape{top:188px;left:35px}.childhood-stage{position:relative;height:350px;margin:30px -22px 0}.scribble-portrait{position:absolute;z-index:3;top:65px;width:144px;height:144px;margin:0;padding:6px;border-radius:50%;background:#fff;box-shadow:0 10px 26px var(--shadow)}.scribble-portrait:before,.scribble-portrait:after{content:"";position:absolute;inset:-7px;border:2px solid var(--ink);border-radius:47% 53% 51% 49%;transform:rotate(5deg)}.scribble-portrait:after{inset:-11px -6px -7px -10px;border-width:1px;transform:rotate(-5deg)}.scribble-portrait img{width:100%;height:100%;object-fit:cover;border-radius:50%}.scribble-portrait figcaption{position:absolute;top:132px;left:50%;width:150px;transform:translate(-50%);text-align:center;color:#8a8e85;font-size:12px}.groom-child{left:30px;animation:sway-left 5.4s ease-in-out infinite}.bride-child{right:30px;animation:sway-right 5.8s 1.6s ease-in-out infinite}.sticker{position:absolute;font-style:normal}.heart{left:48%;top:23px;color:var(--pink);font-size:22px}.star{right:8%;top:28px;color:var(--yellow);font-size:29px}.flower{left:18%;bottom:24px;color:var(--pink);font-size:23px}.announcement{position:absolute;left:20px;right:20px;bottom:90px;text-align:center}.announcement p{margin:0;font:500 24px/1.5 Kaiti SC,KaiTi,serif}.announcement p span{font-size:13px}.announcement strong{display:block;margin-top:5px;font-size:19px;letter-spacing:1px}.scroll-cue{position:absolute;left:50%;bottom:28px;display:flex;align-items:center;gap:9px;min-height:44px;transform:translate(-50%);color:var(--ink);text-decoration:none;white-space:nowrap;font-size:10px;letter-spacing:2px}.scroll-cue b{font-size:20px;animation:bob 1.6s ease-in-out infinite}.profiles{padding:86px 0 95px;background:linear-gradient(175deg,#f7f1e7 0 38%,#efe7da 38% 70%,#f7f1e7 70%)}.section-title{position:relative;padding:0 24px;text-align:center}.section-title span{font-size:12px}.section-title h2{font-size:34px}.section-title i{position:absolute;right:70px;top:5px;color:var(--pink);font-style:normal}.bride-title{margin-top:15px}.bride-title i{color:var(--yellow)}.carousel{margin-top:25px;overflow:hidden}.carousel-track{display:flex;gap:14px;overflow-x:auto;overflow-y:hidden;padding:8px 12% 22px;scroll-snap-type:x mandatory;scrollbar-width:none;touch-action:pan-x pan-y;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;cursor:grab;-webkit-user-select:none;user-select:none}.carousel-track.is-dragging{cursor:grabbing;scroll-snap-type:none}.carousel-track::-webkit-scrollbar{display:none}.profile-card{position:relative;flex:0 0 80%;padding:10px 10px 25px;border:1px solid rgba(101,92,81,.48);background:var(--card);box-shadow:0 13px 32px var(--shadow);transform:rotate(-1deg);scroll-snap-align:center;scroll-snap-stop:always}.profile-card:nth-child(2n){transform:rotate(.8deg)}.profile-card .tape{top:-8px;left:50%;transform:translate(-50%) rotate(-4deg)}.profile-card img{display:block;width:100%;height:330px;object-fit:cover}.profile-card img.profile-photo-portrait{object-position:center 42%}.profile-card img.profile-photo-contain{object-fit:contain;background:#e8eef4}.profile-card img.echo-small-photo{object-position:center}.profile-card img.echo-nanxun-photo{object-position:72% center}.profile-card h3{margin:17px 8px 4px;font:500 19px KaiTi,serif}.profile-card p{margin:0 8px;color:#5f6e65;font-size:12px;line-height:1.7}.profile-photo-frame{height:330px;overflow:hidden}.profile-photo-frame img{width:100%;height:100%;object-fit:cover}.profile-card .profile-photo-frame img.echo-grad-photo{width:100%;height:100%;object-fit:cover;object-position:35% center;transform:translateY(-3%) scale(1.15);transform-origin:center}.dots{display:flex;justify-content:center;gap:8px}.dots button{width:10px;height:10px;padding:0;border:1px solid var(--ink);border-radius:50%;background:transparent}.dots button.active{background:var(--ink)}.narrative-divider{height:100px;display:flex;align-items:center;justify-content:center;gap:12px;color:var(--ink)}.narrative-divider span{letter-spacing:3px}.narrative-divider b{padding:8px 14px;background:var(--pink);font:400 13px KaiTi,serif;transform:rotate(-2deg)}.narrative-divider i{font-style:normal}.profiles .scroll-cue{bottom:24px}.moments{min-height:1080px;padding-top:85px;background:var(--paper);text-align:center}.moments h2{font-size:30px}.moment-video{position:relative;height:420px;margin:32px 12px 42px;padding:8px;border:2px solid var(--ink);background:#fff;box-shadow:0 12px 26px var(--shadow);transform:rotate(-1deg)}.moment-video:before,.moment-video:after{content:"";position:absolute;z-index:2;top:-9px;width:55px;height:18px}.moment-video:before{left:25px;background:var(--yellow);transform:rotate(-7deg)}.moment-video:after{right:24px;background:var(--pink);transform:rotate(6deg)}.moment-video img{width:100%;height:100%;object-fit:cover}.moment-video button{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:64px;height:64px;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);color:#fff;background:var(--ink);font-size:20px}.moment-video small{position:absolute;left:10px;right:10px;bottom:-28px;color:#777;font-size:9px}.collage{position:relative;height:390px}.collage figure{position:absolute;margin:0;padding:6px;border:1.5px solid var(--ink);background:#fff;box-shadow:0 8px 20px var(--shadow)}.collage img{width:100%;height:100%;object-fit:cover}.photo-a{left:4px;top:10px;width:58%;height:250px;transform:rotate(-3deg)}.photo-b{right:5px;top:50px;width:42%;height:170px;transform:rotate(4deg)}.photo-c{right:35px;bottom:0;width:58%;height:175px;transform:rotate(1deg)}.route{position:absolute;left:20px;bottom:55px;color:var(--pink);font-size:18px;transform:rotate(-8deg)}.big-news{margin-top:32px;color:var(--ink);font:18px KaiTi,serif}.big-news b{display:block;animation:bob 1.6s infinite}.moments-lead{max-width:300px;margin:14px auto 0;color:#718078;font:13px/1.9 KaiTi,serif}.moment-video.is-placeholder{height:390px;background:#f6f1e8}.video-placeholder-art{position:relative;display:grid;align-content:center;justify-items:center;width:100%;height:100%;overflow:hidden;border:1px dashed #91a297;color:var(--ink);background:radial-gradient(circle at 18% 20%,rgba(244,190,190,.55) 0 3px,transparent 4px),radial-gradient(circle at 82% 75%,rgba(245,217,124,.7) 0 4px,transparent 5px),linear-gradient(145deg,#edf3ed,#fffaf2 52%,#f7e7e5)}.video-placeholder-art:before,.video-placeholder-art:after{content:"";position:absolute;width:210px;height:210px;border:1px solid rgba(52,72,61,.16);border-radius:48% 52% 55% 45%;transform:rotate(25deg)}.video-placeholder-art:after{width:270px;height:270px;transform:rotate(-18deg)}.video-placeholder-art b{z-index:1;letter-spacing:5px;font:500 17px Georgia,serif}.video-placeholder-art i{z-index:1;margin-top:8px;color:#87958c;letter-spacing:2px;font: 9px Arial,sans-serif}.video-spark,.video-heart{position:absolute;font-style:normal}.video-spark{top:58px;right:58px;color:var(--yellow);font-size:24px}.video-heart{left:62px;bottom:65px;color:var(--pink);font-size:20px}.memory-story{margin:58px 12px 0}.memory-story-title{position:relative;margin:0 8px 28px;text-align:left}.memory-story-title:after{content:"↘  · · ·  ♥";position:absolute;right:3px;bottom:2px;color:var(--pink);font-size:15px;transform:rotate(-7deg)}.memory-story-title span{color:#88978e;letter-spacing:3px;font:9px Arial,sans-serif}.memory-story-title h3{margin:6px 0 5px;color:var(--ink);font:500 24px KaiTi,serif}.memory-story-title p{margin:0;color:#78867e;font-size:10px}.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 13px;align-items:start}.memory-card{position:relative;margin:0;padding:7px 7px 12px;border:1px solid #aeb9b1;background:#fff;box-shadow:0 8px 18px var(--shadow);transform:rotate(-1.5deg)}.memory-card:nth-child(2n){transform:translateY(12px) rotate(2deg)}.memory-card:before{content:"";position:absolute;z-index:2;top:-7px;left:50%;width:42px;height:14px;background:#f4bebed1;transform:translate(-50%) rotate(-4deg)}.memory-card.memory-yellow:before{background:#f5d97ce0;transform:translate(-50%) rotate(5deg)}.memory-wide{grid-column:1/-1}.memory-photo{height:220px;overflow:hidden;background:#e8eee9}.memory-tall .memory-photo{height:235px}.memory-photo img{display:block;width:100%;height:100%;object-fit:cover}.memory-card figcaption{padding:10px 4px 0;text-align:left}.memory-card time{display:block;margin-bottom:4px;color:#93a097;letter-spacing:1.5px;font:8px Arial,sans-serif}.memory-card figcaption b{display:block;color:var(--ink);font:500 13px/1.5 KaiTi,serif}.memory-tail{display:grid;justify-items:center;gap:5px;margin:52px 0 24px;color:var(--ink)}.memory-tail span{color:#94a097;letter-spacing:3px;font:8px Arial,sans-serif}.memory-tail i{color:var(--pink);font-style:normal}.memory-tail b{font:400 15px KaiTi,serif}.invite{padding:64px 20px calc(55px + var(--safe));background:var(--paper);text-align:center}.formal-photo{position:relative;width:95%;margin:0 auto 28px;padding:8px;border:1px solid #cad0c9;background:#fff;box-shadow:0 10px 25px var(--shadow)}.formal-photo .tape{top:-8px;left:50%;transform:translate(-50%) rotate(2deg)}.formal-photo img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover}.script-en{margin:0;color:#71817b;font:italic 33px/1 Georgia,serif}.invite>h2{margin-top:4px}.invite-copy{color:#66736d;font-size:13px;line-height:1.8}.names{margin:25px 0}.names strong{font:500 21px KaiTi,serif}.names i{margin:0 12px;color:var(--gray)}.names small{display:block;margin-top:7px;color:#8b918d;font:11px Georgia;letter-spacing:2px}.wedding-details{margin:30px 0 60px;padding:28px 17px;border-block:1px solid var(--sage)}.date-mark{display:flex;justify-content:center;align-items:center;color:var(--ink)}.date-mark strong{font:58px/1 Georgia}.date-mark span{margin-left:12px;padding-left:12px;border-left:1px solid var(--sage);text-align:left;font:10px/1.6 Arial}.wedding-details dl{display:flex;margin:24px 0;padding:14px 0;border-block:1px dashed var(--sage)}.wedding-details dl div{flex:1}.wedding-details dt{font-size:10px}.wedding-details dd{margin:4px 0 0;font:18px Georgia}.wedding-details address{font-style:normal}.wedding-details address small,.wedding-details address strong,.wedding-details address span{display:block}.wedding-details address small{font:9px Arial;letter-spacing:2px}.wedding-details address strong{margin:9px 0 5px;font:500 17px KaiTi,serif}.wedding-details address span{color:#727a75;font-size:11px}.outline-button{min-height:44px;margin-top:18px;padding:0 24px;border:1px solid var(--ink);color:var(--ink);background:transparent}.rsvp-heading{margin-bottom:28px}.rsvp-heading span{font:9px Arial;letter-spacing:3px}.rsvp-heading h2{margin:7px}.rsvp-heading p{color:#818780;font-size:11px}.rsvp{text-align:left}.field{margin:0 0 24px}.field label,.field legend{font-size:12px;font-weight:600}.field input:not([type=radio]),.field textarea{width:100%;min-height:44px;margin-top:8px;padding:10px 3px;border:0;border-bottom:1px solid var(--sage);border-radius:0;outline:none;color:var(--deep);background:transparent}.field textarea{padding:12px;border:1px solid var(--sage);resize:none}.field label em{float:right;color:var(--gray);font-size:9px;font-style:normal}.rsvp fieldset{padding:0;border:0}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.choices input{position:absolute;opacity:0}.choices span{display:grid;place-items:center;min-height:44px;padding:6px;border:1px solid var(--sage);font-size:11px;font-weight:400}.choices input:checked+span{border:2px solid var(--ink);color:var(--ink);background:var(--wash);font-weight:600}.error{display:block;min-height:14px;margin-top:5px;color:var(--deep);font-size:10px}.stepper{display:flex;align-items:center;justify-content:space-between;width:150px;margin-top:10px;border:1px solid var(--sage)}.stepper button{width:44px;height:44px;border:0;color:var(--ink);background:transparent;font-size:20px}.calendar-wrap{margin:-7px 0 25px;padding:15px;background:#faf7ef}.calendar-wrap>p{margin:0 0 12px;font-size:11px}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;text-align:center}.calendar span,.calendar button{display:grid;place-items:center;aspect-ratio:1;border:0;border-radius:50%;color:var(--deep);background:transparent;font-size:10px}.calendar span{color:var(--gray)}.calendar button.selected{color:#fff;background:var(--ink)}.calendar button.in-range{border-radius:0;background:#f8d9df}.calendar button.in-range.selected{border-radius:50%;background:var(--ink)}#dateHint{display:block;margin-top:9px;color:var(--ink);font-size:9px}.night-wrap{margin:-7px 0 25px;padding:15px;background:#faf7ef}.night-wrap>p{margin:0 0 12px;font-size:11px}.night-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.night-choices label{position:relative}.night-choices input{position:absolute;opacity:0;pointer-events:none}.night-choices span{display:grid;place-items:center;min-height:52px;padding:6px 3px;border:1px solid var(--sage);color:var(--deep);background:#ffffff59}.night-choices b{font-size:11px}.night-choices small{margin-top:2px;color:var(--gray);font-size:8px}.night-choices input:checked+span{border:2px solid var(--ink);background:var(--wash)}#nightHint{display:block;margin-top:9px;color:var(--ink);font-size:9px}.submit-button{width:100%;min-height:50px;border:0;color:#fff;background:var(--ink);letter-spacing:2px}.form-note{text-align:center;color:var(--gray);font-size:9px}.invite footer{margin-top:45px;color:var(--gray);font:9px Arial;letter-spacing:2px}.invite footer span{color:var(--ink)}dialog{width:min(82%,340px);padding:34px;border:0;color:var(--deep);background:var(--paper);text-align:center;box-shadow:0 18px 60px #1d352d55}dialog::backdrop{background:#1d352d88}.success-mark{display:grid;place-items:center;width:48px;height:48px;margin:auto;border-radius:50%;color:#fff;background:var(--ink)}dialog button{min-width:120px;height:44px;border:1px solid var(--ink);color:var(--ink);background:transparent}.toast{position:fixed;z-index:120;left:50%;bottom:25px;max-width:320px;padding:12px 18px;transform:translate(-50%,100px);color:#fff;background:var(--deep);font-size:11px;transition:.3s}.toast.show{transform:translate(-50%)}.profile-card img,.memory-card img{cursor:zoom-in}.image-lightbox{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:calc(58px + env(safe-area-inset-top,0px)) 16px calc(28px + env(safe-area-inset-bottom,0px));visibility:hidden;opacity:0;background:#0a120ff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:opacity .24s ease,visibility .24s ease;touch-action:manipulation;overflow:hidden}.image-lightbox.is-open{visibility:visible;opacity:1}.image-lightbox-content{display:grid;justify-items:center;max-width:100%;max-height:100%}.image-lightbox-content img{display:block;max-width:min(94vw,1100px);max-height:calc(100svh - 125px);object-fit:contain;border:5px solid #fff;background:#111;box-shadow:0 18px 55px #00000073;transform:scale(.96);transition:transform .24s ease;touch-action:none}.image-lightbox-content img.is-zoomable{cursor:grab;transform-origin:center center;will-change:transform}.image-lightbox.is-open .image-lightbox-content img{transform:scale(1)}.image-lightbox-content p{min-height:18px;margin:12px 12px 0;color:#ffffffd1;text-align:center;font-size:11px;line-height:1.6}.image-lightbox-hint{margin-top:4px;color:#ffffff94;font-size:9px;letter-spacing:.5px}.venue-map{min-height:100vh;min-height:100svh;padding:64px 18px calc(42px + var(--safe));background-color:#f5f0d8;background-image:linear-gradient(#fffcef14,#fffcef14),url(/assets/wedding/backgrounds/cream-green-oil-texture.webp);background-position:center top;background-repeat:no-repeat;background-size:100% 100%;text-align:center}.venue-map-heading>span{color:var(--ink);font:600 9px/1.4 Arial,sans-serif;letter-spacing:2.8px}.venue-map-heading h2{margin-top:8px}.venue-map-heading p{margin:10px 0 24px;color:#66736d;font-size:12px;line-height:1.75}.venue-map-card{margin:0 auto;padding:7px;border:1px solid rgba(101,92,81,.28);background:#fffcf5e0;box-shadow:0 14px 36px #523f2a21}.venue-map-card img{display:block;width:100%;height:auto;cursor:zoom-in}.venue-map footer{margin-top:30px;color:var(--gray);font:9px Arial,sans-serif;letter-spacing:2px}.venue-map footer span{color:var(--ink)}.image-lightbox-close{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:14px;display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid rgba(255,255,255,.55);border-radius:50%;color:#fff;background:#ffffff1a;font-size:28px;line-height:1}.childhood:before{width:230px;height:125px;background:#e2dac761;filter:blur(4px)}.childhood>.tape{opacity:.55}.scribble-portrait{background:var(--card);box-shadow:0 14px 32px #523f2a21}.scribble-portrait:before,.scribble-portrait:after{border-color:#655c51b8}.announcement{padding:14px 18px;border:1px solid rgba(199,169,106,.34);background:#fcf8f194;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.moments{background-color:#f4ede2;background-image:linear-gradient(#f7f1e733,#f7f1e77a),radial-gradient(rgba(101,92,81,.07) .6px,transparent .7px);background-size:auto,5px 5px}.moments-lead{color:var(--gray)}.moment-video.is-placeholder{border-color:#655c5194;background:var(--card);box-shadow:0 16px 42px #523f2a1f}.video-placeholder-art{border-color:#a2a68c85;background:radial-gradient(circle at 18% 20%,rgba(217,170,163,.42) 0 3px,transparent 4px),radial-gradient(circle at 82% 75%,rgba(199,169,106,.55) 0 4px,transparent 5px),linear-gradient(145deg,#eceadd,#fcf8f1 52%,#efe1dc)}.memory-story{position:relative}.memory-story:before{content:"";position:absolute;z-index:0;top:92px;bottom:45px;left:50%;border-left:1px dashed rgba(199,169,106,.42)}.memory-story-title,.memory-grid,.memory-tail{position:relative;z-index:1}.memory-card{border-color:#655c5157;background:var(--card);box-shadow:0 12px 30px #523f2a1c}.memory-card:after{content:"";position:absolute;right:8px;bottom:7px;width:18px;height:18px;border:1px solid rgba(214,160,124,.24);border-radius:50%}.memory-card:nth-child(4n+2):after{content:"⌖";border:0;color:#d6a07c6b;font-size:15px}.invite{background-color:var(--paper);background-image:linear-gradient(#f7f1e726,#efe7da75)}.formal-photo{margin-bottom:42px;border-color:#655c5147;background:var(--card);box-shadow:0 16px 38px #523f2a1f}.wedding-card{position:relative;min-height:760px;margin:0 -5px 54px;padding:104px 40px 92px;overflow:hidden;border-radius:28px;background:#fcf8f1b8;box-shadow:0 18px 55px #523f2a1a}.wedding-frame{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.wedding-card-content{position:relative;z-index:1}.wedding-card h2{margin-top:7px}.wedding-card .script-en{color:#756a62;font-size:30px}.wedding-card .invite-copy{color:var(--gray)}.wedding-card .wedding-details{margin:28px 0 0;padding:24px 0 0;border-block:1px solid rgba(162,166,140,.6)}.wedding-card .outline-button{border-color:#493e38b3;background:#fcf8f1b8}.rsvp-panel{padding:30px 20px 24px;border:1px solid rgba(101,92,81,.18);border-radius:20px;background:#fcf8f199;box-shadow:0 14px 38px #523f2a12;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.rsvp-panel .rsvp-heading:after{content:"❀";display:block;margin-top:12px;color:var(--pink);font-size:16px}.field input:not([type=radio]),.field textarea{border-color:#a2a68cbf;color:var(--deep)}.field textarea,.calendar-wrap{background:#fffcf580}.submit-button{background:#665a50}.reveal-ready .reveal-on-scroll{opacity:0;filter:blur(2px);transform:translateY(22px) scale(.975);transition:opacity 1.25s cubic-bezier(.22,.61,.36,1),filter 1.25s cubic-bezier(.22,.61,.36,1),transform 1.25s cubic-bezier(.22,.61,.36,1)}.reveal-ready .reveal-on-scroll.is-visible{opacity:1;filter:blur(0);transform:translateY(0) scale(1)}.reveal-ready .memory-card{opacity:0;filter:blur(2px);transition:opacity 1.15s cubic-bezier(.22,.61,.36,1),filter 1.15s cubic-bezier(.22,.61,.36,1)}.reveal-ready .memory-card.is-visible{opacity:1;filter:blur(0)}@keyframes sway-left{0%,to{transform:translateY(0) rotate(-1.2deg)}50%{transform:translateY(-14px) rotate(.6deg)}}@keyframes sway-right{0%,to{transform:translateY(0) rotate(1.2deg)}50%{transform:translateY(-14px) rotate(-.6deg)}}@keyframes loopy-sway{0%,to{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(8deg)}}@keyframes peek{0%,to{transform:translate(0)}50%{transform:translate(7px) translateY(-5px)}}@keyframes bob{50%{transform:translateY(6px)}}@media(max-width:350px){.scribble-portrait{width:126px;height:126px}.groom-child{left:24px}.bride-child{right:24px}.profile-card{flex-basis:82%}.profile-card img,.profile-photo-frame{height:295px}}.childhood{min-height:560px;height:min(100svh,720px);padding-top:max(34px,env(safe-area-inset-top));background-color:#f3efd8;background-image:url(/assets/wedding/backgrounds/childhood-kiss-oil.webp);background-position:100% bottom;background-repeat:no-repeat;background-size:cover}.childhood .doodle-path{top:8px}.childhood>.tape{top:126px}.childhood .scene-kicker{margin-bottom:2px}.childhood h2{margin-top:0}.childhood-stage{height:306px;margin-top:10px}.childhood .scribble-portrait{top:42px}.announcement{bottom:49px;padding:14px 18px 13px;border:0;border-radius:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;isolation:isolate}.announcement:before,.announcement:after{position:absolute;z-index:-1;content:"";pointer-events:none}.announcement:before{inset:-7px -5px -6px;background:radial-gradient(ellipse at 13% 53%,rgba(255,248,218,.82) 0 47%,transparent 69%),radial-gradient(ellipse at 48% 46%,rgba(250,239,196,.94) 0 59%,transparent 77%),radial-gradient(ellipse at 86% 51%,rgba(255,247,213,.86) 0 49%,transparent 70%);filter:blur(1.4px);transform:rotate(-.45deg)}.announcement:after{inset:3px 8px;background:#fffae557;filter:blur(7px);clip-path:polygon(2% 32%,9% 14%,29% 19%,44% 7%,64% 16%,83% 10%,98% 30%,94% 73%,78% 88%,57% 82%,38% 94%,17% 83%,4% 68%)}.childhood .scroll-cue{bottom:max(3px,env(safe-area-inset-bottom))}.profiles,.moments,.invite{background-color:#f5f0d8;background-image:linear-gradient(#fffcef14,#fffcef14),url(/assets/wedding/backgrounds/cream-green-oil-texture.webp);background-position:center top;background-repeat:repeat-y;background-size:100% auto}.moments{background-repeat:no-repeat;background-size:100% 100%}.moments .memory-story{margin-top:110px}.invite .invite-news{margin:0 0 30px}.wedding-card{background:#f4efd7}.wedding-frame{object-fit:fill}.rsvp-panel{background-color:#f5efd5;background-image:linear-gradient(#fffcef2e,#fffcef2e),url(/assets/wedding/backgrounds/cream-green-oil-texture.webp);background-position:center;background-repeat:no-repeat;background-size:cover}@media(max-height:700px){.childhood{padding-top:max(25px,env(safe-area-inset-top))}.childhood-stage{height:288px;margin-top:4px}.childhood .scribble-portrait{top:32px}.announcement{bottom:42px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.groom-child{transform:rotate(-3deg)}.bride-child{transform:rotate(3deg)}}.hero-controls{justify-content:flex-end}.childhood{padding:max(32px,env(safe-area-inset-top)) 30px 38px}.childhood .announcement{position:relative;z-index:4;inset:auto;padding:15px 8px 13px}.childhood .announcement:before{inset:-20px -18px -18px;background:url(/assets/wedding/childhood/cream-watercolor-brush-v1.webp) center / 100% 100% no-repeat;filter:none;transform:rotate(-.4deg)}.childhood .announcement:after{display:none}.childhood-stage{display:grid;grid-template-columns:repeat(2,118px);justify-content:center;column-gap:80px;height:auto;margin:42px 0 0}.childhood .scribble-portrait{position:relative;inset:auto;width:118px;height:118px}.childhood-stage .heart{top:42px;left:172px}.childhood-stage .star{top:110px;right:42px}.childhood-stage .flower{bottom:-28px;left:38px}.childhood-characters{position:absolute;z-index:3;right:10px;bottom:18px;left:10px;height:330px;pointer-events:none}.childhood-characters img{position:absolute;display:block;max-width:none;object-fit:contain;filter:drop-shadow(0 9px 8px rgba(73,62,56,.11))}.lulu-standing{bottom:-5px;left:12px;width:158px;animation:sway-left 3.8s ease-in-out infinite}.loopy-standing{right:-6px;bottom:5px;width:128px;animation:loopy-sway 3.8s .6s ease-in-out infinite}.childhood .scroll-cue{z-index:5}@media(max-height:700px){.childhood{padding-top:max(24px,env(safe-area-inset-top))}.childhood-stage{gap:22px;height:auto;margin-top:20px}.childhood .scribble-portrait{top:auto}.childhood-characters{height:300px}.lulu-standing{width:210px}.loopy-standing{width:154px}}@media(max-width:350px){.childhood-stage{grid-template-columns:repeat(2,126px)}.childhood .scribble-portrait{width:126px;height:126px}}.profiles .section-title>span{font-family:Songti SC,SimSun,serif;font-size:16px;font-weight:400;letter-spacing:2px}.profiles .section-title>h2{font-family:Songti SC,SimSun,serif;font-size:28px;font-weight:400;line-height:1.2;letter-spacing:3px}.profiles>.scene-kicker,.profiles>.section-title:not(.bride-title),.profiles>.section-title:not(.bride-title)+.carousel,.profiles>.narrative-divider{transform:translateY(-35px)}.scene{min-height:100vh;min-height:100svh}.hero{height:100vh;height:100svh;min-height:0;aspect-ratio:auto}.hero-media video{object-fit:contain}.hero.is-revealed .hero-replay{position:absolute;z-index:4;top:auto;right:12px;bottom:max(12px,env(safe-area-inset-bottom));left:auto;width:auto;min-height:36px;padding:0 13px;border:1px solid rgba(101,92,81,.2);border-radius:20px;color:var(--deep);background:#fcf8f1db;box-shadow:0 5px 18px #493e381f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hero.is-revealed{height:auto;min-height:0;aspect-ratio:9 / 16;background:transparent}.hero.is-revealed .hero-media{inset:0;height:100%;border-radius:0}.childhood{height:100vh;height:100svh;min-height:560px;padding:0}.childhood .announcement{position:absolute;top:max(15.4%,env(safe-area-inset-top));right:7%;left:7%}.childhood-stage{position:absolute;top:32.8%;right:7%;left:7%;display:grid;--portrait-size: clamp(96px, 27.45vw, 118px);grid-template-columns:repeat(2,var(--portrait-size));justify-content:center;column-gap:21.6%;height:auto;margin:0}.childhood .scribble-portrait{width:var(--portrait-size);min-width:var(--portrait-size);height:var(--portrait-size);min-height:var(--portrait-size);aspect-ratio:auto;flex:none}.childhood .scribble-portrait img{display:block;width:100%;height:100%;border-radius:50%}.childhood .scribble-portrait figcaption{top:114%}.childhood-stage .heart{top:35.6%;left:46.5%}.childhood-stage .star{top:93.7%;right:9.4%}.childhood-stage .flower{top:97.7%;bottom:auto;left:8.8%}.childhood-characters{right:2.3%;bottom:2.5%;left:2.3%;height:45.8%}.lulu-standing{bottom:-1.5%;left:2.9%;width:38.5%}.loopy-standing{right:-1.5%;bottom:1.5%;width:31.2%}.childhood .scroll-cue{bottom:max(.4%,env(safe-area-inset-bottom))}.profiles{background-repeat:no-repeat;background-size:100% 100%}.profiles .carousel-track,.profiles .profile-card{box-shadow:none;filter:none}.childhood .announcement strong{font-family:Kaiti SC,KaiTi,STKaiti,STKaiti SC,serif;font-weight:500}.wedding-card .wedding-details{border-top:1px solid rgba(162,166,140,.6);border-bottom:0}@media(max-width:350px){.night-choices{grid-template-columns:repeat(2,minmax(0,1fr))}}
