@charset "UTF-8";
:root{--paper:#f8f2e6;--ink:#b72e36;--dark:#4c322d;--muted:#92796b;--pink:#e7a6a0;--yellow:#e3b85d;--line:#b72e3633;--sans:"Microsoft YaHei","PingFang SC",sans-serif;--serif:"Wedding Kai","Kaiti SC","STKaiti","KaiTi","Noto Serif SC","Songti SC",serif}
.svg-handwriting{font-family:var(--serif)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button{border:0;background:none}a{color:inherit}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible{outline:2px solid var(--ink);outline-offset:6px}button, a{touch-action:manipulation}svg{display:block}.svg-library{position:absolute;width:0;height:0;overflow:hidden}.grain{position:fixed;inset:0;pointer-events:none;opacity:.13;z-index:9;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23887755' opacity='.25' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.masthead{height:96px;position:relative;z-index:10;max-width:1480px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;gap:20px}.wordmark{font-family:var(--serif);font-size:35px;font-weight:bold;display:flex;align-items:center;gap:14px;padding:0}.wordmark span{font:9px/1.7 Georgia,serif;letter-spacing:2px;max-width:94px;text-align:left}.header-date{position:absolute;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:3px;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:20px}.language-button{font:11px Georgia,serif;letter-spacing:1px;padding:10px}.music-button{padding:0;width:34px;height:34px}.music-button svg{fill:none;stroke:currentColor;stroke-width:1.4}.music-button.playing svg{animation:spin 7s linear infinite}.story{height:calc(100svh - 194px);height:calc(100vh - 194px);height:calc(100dvh - 194px);position:relative;isolation:isolate;overflow:hidden}.scene{position:absolute;inset:0;max-width:1200px;width:90%;margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;outline:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:28px 8px}.scene.entering{animation:sceneIn .7s cubic-bezier(.2,.75,.25,1) both}.scene.leaving{animation:sceneOut .3s ease both;pointer-events:none}.scene-heading{outline:none}.scene-heading:focus{outline:none}.scene p{line-height:1.9}.eyebrow{font:10px/1.5 Georgia,serif;letter-spacing:3.5px;text-transform:uppercase;margin:0 0 18px}.small-label{font:10px/1.6 Georgia,serif;letter-spacing:2px}.scene h1,.scene h2{font-family:var(--serif);font-weight:500;margin:0;line-height:1.3;letter-spacing:3px}.scene h1{font-size:clamp(48px,5.8vw,88px)}.scene h2{font-size:clamp(38px,4vw,62px)}.scene .body-copy{font-size:13px;color:var(--dark);line-height:2.2;letter-spacing:1px;margin:22px 0}.handwritten{font-family:var(--serif);font-size:22px;letter-spacing:3px}.serif{font-family:var(--serif)}.split{width:100%;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:7%}.scene-copy{padding-left:6%;position:relative;z-index:2}.scene-cover .scene-copy{padding-left:8%}.cover-heading .heading-small{font-size:.68em;display:block;letter-spacing:9px;margin-bottom:7px}.cover-heading .heading-big{display:block;white-space:nowrap;position:relative}.title-underline{position:absolute;bottom:-17px;left:0;width:94%;height:25px;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round;stroke-dasharray:500;stroke-dashoffset:500;animation:draw 1.5s .5s ease forwards}.cover-names{display:flex;align-items:center;gap:18px;margin:42px 0 0;font-family:var(--serif);font-size:24px;letter-spacing:4px}.cover-names .heart{width:20px;height:20px;fill:var(--ink);animation:heartbeat 2.6s ease-in-out infinite}.cover-note{font-size:11px;letter-spacing:2px;color:var(--muted);margin-top:20px!important}.cover-illustration{position:relative;width:100%;aspect-ratio:1.06;display:grid;place-items:center}.envelope-button{width:92%;padding:0;transform:rotate(-7deg);filter:drop-shadow(0 22px 23px #6a29201a);animation:envelopeSway 5s ease-in-out infinite;transition:filter .3s}.envelope-button:hover{filter:drop-shadow(0 25px 25px #6a292033)}.envelope-art{width:100%;overflow:visible}.envelope-art .letter{transform-origin:220px 200px;animation:letterPeek 5s ease-in-out infinite}.envelope-art .seal{transform-origin:220px 269px;animation:sealWiggle 5s ease-in-out infinite}.doodle{position:absolute;pointer-events:none;overflow:visible;fill:currentColor;color:var(--ink)}.float{animation:float 5s ease-in-out infinite}.wiggle{animation:wiggle 4.7s ease-in-out infinite}.spin-slow{animation:spin 24s linear infinite}.cover-star{width:48px;top:3%;right:19%;color:var(--yellow)}.cover-heart{width:44px;left:1%;top:20%;transform:rotate(-20deg);color:var(--pink);animation-delay:-2s}.cover-flower{width:70px;right:-1%;bottom:15%;animation:spin 28s linear infinite}.cover-spark{width:45px;bottom:9%;left:6%;color:var(--yellow)}.hand-note{position:absolute;right:5%;top:0%;font-family:var(--serif);font-size:18px;transform:rotate(9deg);letter-spacing:2px}.hand-arrow{position:absolute;top:4%;right:0;width:65px;height:80px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-dasharray:180;stroke-dashoffset:180;animation:draw 1s 1.2s forwards}.margin-note{position:absolute;left:0;top:50%;writing-mode:vertical-rl;letter-spacing:3px;font-size:9px;color:var(--muted)}.scene-cover .body-copy{margin-top:34px}.story-footer{height:98px;position:relative;z-index:10;width:90%;max-width:1330px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line)}.story-footer[hidden]{display:none}.previous-button{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--muted);padding:14px 0;min-width:100px}.previous-button svg{width:30px;transform:rotate(180deg)}.previous-button:disabled{visibility:hidden}.next-button{display:flex;align-items:center;gap:24px;font-size:12px;letter-spacing:2px;min-width:150px;justify-content:flex-end;padding:16px 0}.next-button svg{width:43px;transition:transform .3s}.next-button:hover svg{transform:translateX(5px)}.chapter-dots{display:flex;align-items:center;gap:6px;position:absolute;left:50%;transform:translateX(-50%)}.chapter-dot{width:27px;height:35px;display:grid;place-items:center;padding:0}.chapter-dot:after{content:"";width:5px;height:5px;border:1px solid var(--ink);border-radius:50%;transition:all .3s}.chapter-dot[aria-current="step"]:after{width:9px;height:9px;background:var(--ink);box-shadow:0 0 0 4px #b72e3610}.primary-button{background:var(--ink);color:var(--paper);border:1px solid var(--ink);padding:15px 25px;display:inline-flex;align-items:center;justify-content:center;gap:22px;font-size:12px;letter-spacing:2px;border-radius:2px;transition:transform .2s,box-shadow .2s}.primary-button:hover{transform:translateY(-3px) rotate(-1deg);box-shadow:3px 5px 0 var(--pink)}.primary-button svg{width:35px}.outline-button{border:1px solid var(--line);padding:13px 20px;font-size:11px;letter-spacing:1px;display:inline-flex;align-items:center;justify-content:center;gap:10px;background:transparent}.outline-button:hover{background:#b72e3608}.photo-frame{position:relative;background:#fffaf0;padding:12px 12px 42px;box-shadow:0 8px 30px #693d2b17;transform:rotate(4deg);width:min(100%,390px);margin:12px auto 18px}.photo-frame img{width:100%;aspect-ratio:4/4.3;object-fit:cover;object-position:center;display:block;background:#e8d5c2}.photo-frame .photo-caption{position:absolute;bottom:11px;left:0;right:0;text-align:center;font:12px var(--serif);letter-spacing:4px}.photo-frame:before{content:"";position:absolute;top:-13px;left:38%;width:85px;height:28px;background:#e2c79780;transform:rotate(-5deg);z-index:2}.scene-invite .split{grid-template-columns:1fr 1fr;gap:9%}.invite-visual{position:relative;width:100%;max-width:430px;margin:auto}.invite-flower{width:75px;top:-4%;right:-4%;color:var(--yellow)}.invite-bow{width:100px;bottom:-5%;left:-9%;transform:rotate(-12deg)}.invite-heart{width:42px;top:9%;left:-5%;color:var(--pink)}.names-title{font-size:clamp(34px,3.8vw,57px)!important;display:flex;flex-direction:column;gap:5px}.names-title .ampersand{font:italic 34px Georgia,serif;color:var(--pink);margin-left:10px}.invite-tagline{font:18px/2 var(--serif);letter-spacing:4px;margin-top:24px}.date-line{display:flex;align-items:center;gap:15px;margin-top:30px;font:13px Georgia,serif;letter-spacing:3px}.date-line:before{content:"";width:40px;height:1px;background:var(--ink)}.tap-hint{font-size:10px;letter-spacing:2px;color:var(--muted);margin-top:26px}.scene-gallery{text-align:center}.section-title-row{position:relative;display:flex;align-items:center;gap:24px;justify-content:center}.section-title-row .doodle-inline{width:55px;height:55px;fill:none;flex-shrink:0}.gallery-stage{position:relative;max-width:850px;width:100%;height:clamp(240px,37vh,400px);margin-top:27px;display:flex;align-items:center;justify-content:center;perspective:1000px}.gallery-card{position:absolute;width:43%;max-width:340px;aspect-ratio:1.05;padding:10px 10px 30px;background:#fffaf0;box-shadow:0 10px 25px #65302122;transform:translateX(calc(var(--position)*65%)) rotate(calc(var(--position)*9deg));z-index:calc(4 - var(--distance));transition:transform .5s,opacity .4s;overflow:hidden}.gallery-card[data-position="0"]{transform:translateX(0) rotate(-3deg);z-index:5}.gallery-card[data-position="0"]:hover{transform:translateY(-5px) rotate(-1deg)}.gallery-card img{width:100%;height:100%;object-fit:cover;display:block}.gallery-card .number{position:absolute;bottom:7px;left:0;right:0;font:11px Georgia,serif;letter-spacing:2px}.gallery-controls{display:flex;align-items:center;gap:25px;margin-top:12px}.circle-button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-family:Georgia,serif;font-size:20px}.circle-button:hover{background:#b72e360a}.gallery-counter{font:11px Georgia,serif;letter-spacing:3px;min-width:70px}.gallery-caption{font:16px var(--serif);letter-spacing:3px;margin:16px 0 0!important}.gallery-note{margin:9px 0 0!important;color:var(--muted);font-size:10px;letter-spacing:2px}.gallery-star{width:48px;left:6%;top:15%;color:var(--yellow)}.gallery-heart{width:34px;right:9%;bottom:16%;color:var(--pink)}.scene-promise{text-align:center}.promise-art{width:160px;height:120px;margin:8px 0 18px;color:var(--ink)}.promise-quote{font:clamp(28px,3.5vw,49px)/1.8 var(--serif);letter-spacing:5px;margin:6px 0 15px!important}.promise-divider{width:58px;height:1px;background:var(--ink);margin:14px 0}.promise-flower{width:80px;left:8%;bottom:17%;color:var(--pink)}.promise-star{width:45px;right:13%;top:19%;color:var(--yellow)}.timeline-list{width:min(100%,600px);display:grid;gap:15px;max-height:45vh;overflow:auto;text-align:left;padding:10px}.timeline-event{display:grid;grid-template-columns:90px 1fr;gap:20px;border-left:1px solid var(--line);padding-left:22px}.timeline-event time{font:12px Georgia,serif;padding-top:5px}.timeline-event h3{margin:0;font:20px var(--serif)}.timeline-event p{font-size:12px;color:var(--muted);margin:7px 0}.scene-venue .split{gap:8%}.ticket{position:relative;width:100%;max-width:405px;margin:auto;border:1px solid var(--ink);padding:32px;background:#fdf8ee;transform:rotate(-3deg);box-shadow:9px 12px 0 #e9d9c1}.ticket:before,.ticket:after{content:"";position:absolute;border-radius:50%;width:20px;height:20px;background:var(--paper);border:1px solid var(--ink);top:calc(67% - 10px);z-index:1}.ticket:before{left:-11px;border-left-color:transparent}.ticket:after{right:-11px;border-right-color:transparent}.ticket-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:20px;border-bottom:1px solid var(--line)}.ticket-heading svg{width:42px;fill:var(--ink)}.ticket-date{font:clamp(55px,6vw,80px)/1.1 Georgia,serif;letter-spacing:-2px;margin:24px 0 10px}.ticket-month{font:11px Georgia,serif;letter-spacing:3px}.ticket-lunar{font-size:11px;color:var(--muted);letter-spacing:1px;margin:8px 0 28px!important}.ticket-bottom{display:flex;justify-content:space-between;border-top:1px dashed var(--ink);padding-top:20px;font-size:11px;line-height:1.8}.ticket-bottom strong{display:block;font:24px Georgia,serif;letter-spacing:1px}.ticket-footer{margin-top:20px;font:9px Georgia,serif;letter-spacing:4px}.venue-name{font-family:var(--serif);font-size:26px;margin:25px 0 8px}.venue-address{font-size:12px;letter-spacing:2px;color:var(--dark)}.venue-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.venue-actions svg{width:15px;height:19px}.venue-extra{font-size:11px;color:var(--muted);margin:12px 0}.venue-bow{width:100px;right:0;top:4%;transform:rotate(12deg)}.venue-star{width:45px;left:0;bottom:9%;color:var(--yellow)}.scene-blessings{text-align:center}.blessing-art{width:100px;height:95px;margin-bottom:10px;animation:wiggle 5s ease-in-out infinite}.blessing-postcards{display:flex;justify-content:center;gap:18px;width:100%;margin:28px 0 30px;align-items:center}.blessing-card{padding:25px 25px 20px;width:245px;min-height:150px;background:#f0debf;transform:rotate(-4deg);position:relative;text-align:left;box-shadow:0 5px 12px #693d2b0a;color:var(--dark)}.blessing-card:nth-child(2){background:#efd5cb;transform:rotate(3deg)}.blessing-card:nth-child(3){background:#e8e5cc;transform:rotate(-2deg)}.blessing-card .quote{font:38px/1 Georgia,serif;color:var(--ink)}.blessing-card p{font:17px/1.8 var(--serif);margin:0 0 12px;overflow-wrap:anywhere}.blessing-card cite{font-style:normal;font-size:10px;color:var(--muted)}.blessing-empty{margin:20px 0 28px;display:flex;align-items:center;gap:30px}.blessing-empty svg{width:42px;height:42px;fill:var(--pink)}.blessing-empty p{font:23px/1.9 var(--serif);letter-spacing:3px}.scene-rsvp .split{gap:10%}.rsvp-heading{font-size:clamp(44px,5vw,75px)!important}.rsvp-heading em{font-style:normal;position:relative}.rsvp-heading em:after{content:"";position:absolute;bottom:-8px;left:0;right:0;height:8px;background:var(--pink);opacity:.5;transform:rotate(-2deg);z-index:-1}.rsvp-art{position:relative;width:100%;max-width:420px;margin:auto}.rsvp-art>svg{width:100%;height:auto;overflow:visible}.rsvp-heart{width:48px;top:8%;right:4%;color:var(--pink)}.rsvp-star{width:40px;bottom:10%;left:3%;color:var(--yellow)}.rsvp-buttons{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.rsvp-small{font-size:10px;color:var(--muted);letter-spacing:1px;margin-top:15px!important}.rsvp-countdown{display:flex;align-items:baseline;gap:10px;font-size:11px;letter-spacing:2px;margin:22px 0}.rsvp-countdown strong{font:38px Georgia,serif}.film-container{width:min(100%,740px);aspect-ratio:16/9;background:#eadcca;margin:22px 0;display:grid;place-items:center}.film-container video{width:100%;height:100%;max-height:48vh}.film-container a{padding:20px}.film-description{font-size:12px;color:var(--muted);max-width:600px;text-align:center}.confetti-layer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:40}.confetti{position:absolute;width:14px;height:14px;fill:var(--ink);animation:confetti .9s ease-out forwards}.toast{position:fixed;bottom:112px;left:50%;transform:translate(-50%,20px);background:var(--dark);color:var(--paper);padding:12px 20px;max-width:88%;width:max-content;z-index:80;font-size:12px;line-height:1.7;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;border-radius:3px}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid var(--line);background:var(--paper);color:var(--dark);padding:35px;width:min(90%,470px);max-height:85vh;max-height:85dvh;overflow:auto;box-shadow:0 20px 80px #32160940}dialog::backdrop{background:#3b201e80;backdrop-filter:blur(5px)}.close-dialog{position:absolute;right:12px;top:9px;font-size:25px;padding:4px 10px;z-index:2;color:var(--ink)}.dialog-eyebrow{font:9px Georgia,serif;letter-spacing:3px;color:var(--ink);margin:0 0 12px}.form-dialog h2{font:30px var(--serif);color:var(--ink);letter-spacing:3px;margin:0 0 13px}.form-intro{font-size:12px;line-height:1.9;color:var(--muted)}.form-field{display:flex;flex-direction:column;gap:8px;margin:18px 0;font-size:12px}.form-field input,.form-field textarea,.form-field select{width:100%;border:1px solid #b4a18b;background:#fffaf0;border-radius:2px;padding:12px;color:var(--dark);outline:0;font-size:16px}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{border-color:var(--ink);box-shadow:0 0 0 2px #b72e3610}.form-field textarea{resize:vertical;min-height:82px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .form-field{margin-top:0}.checkbox-group{padding:12px 0;border:0;margin:0;display:flex;gap:20px;flex-wrap:wrap;font-size:12px}.checkbox-group legend{padding:0;margin-bottom:8px}.checkbox-group label{display:flex;align-items:center;gap:6px}.checkbox-group input{accent-color:var(--ink);width:17px;height:17px}.form-error{font-size:12px;color:var(--ink);line-height:1.7;min-height:20px}.form-submit{width:100%;margin-top:10px}.form-privacy{font-size:10px;color:var(--muted);line-height:1.8}.form-success{text-align:center;padding:22px 0}.form-success svg{width:70px;height:70px;fill:var(--ink);margin:0 auto 20px}.form-success p{font-size:13px;line-height:2}.photo-dialog{width:min(92%,1000px);max-height:94vh;max-height:94dvh;padding:14px;background:#fffaf0;overflow:hidden}.photo-dialog>img{width:100%;height:calc(86vh - 75px);height:calc(86dvh - 75px);object-fit:contain;display:block}.photo-dialog .close-dialog{background:var(--paper);border-radius:50%;width:35px;height:35px;line-height:1;padding:0}.lightbox-controls{display:flex;justify-content:center;gap:25px;align-items:center;height:40px;font:11px Georgia,serif}.lightbox-controls button{font-size:23px;padding:5px 20px}.loading-heart svg{width:65px;height:65px;fill:var(--ink);animation:heartbeat 1.5s ease-in-out infinite}.scene-loading p{font-family:var(--serif);font-size:16px;letter-spacing:2px}.error-copy{text-align:center}.error-copy h1{font-size:32px}.error-copy p{color:var(--muted);font-size:13px}.noscript{position:fixed;inset:0;display:grid;place-content:center;gap:15px;background:var(--paper);z-index:100;text-align:center}.scene[data-chapter="rsvp"] .eyebrow{margin-bottom:15px}.timeline-list+.body-copy{margin:15px 0}.english .scene h1{font-size:clamp(44px,5.2vw,72px);letter-spacing:-1px}.english .cover-heading .heading-small{letter-spacing:0}.english .cover-heading .heading-big{white-space:normal}.english .cover-names{letter-spacing:0;font-size:21px}.english .scene h2{letter-spacing:0}.english .names-title{font-size:clamp(35px,4vw,56px)!important}.english .scene .body-copy{letter-spacing:0}.english .promise-quote{letter-spacing:0}.english .cover-note{letter-spacing:0}
@keyframes sceneIn{from{opacity:0;transform:translateY(35px) rotate(1deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes sceneOut{to{opacity:0;transform:translateY(-22px) rotate(-1deg)}}@keyframes float{0%,100%{translate:0 0}50%{translate:0 -10px}}@keyframes wiggle{0%,75%,100%{rotate:0deg}80%{rotate:-5deg}85%{rotate:4deg}90%{rotate:-3deg}95%{rotate:2deg}}@keyframes envelopeSway{0%,100%{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-9px) rotate(-4deg)}}@keyframes letterPeek{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes sealWiggle{0%,80%,100%{transform:rotate(0)}85%{transform:rotate(-7deg)}90%{transform:rotate(6deg)}95%{transform:rotate(-3deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes heartbeat{0%,40%,100%{transform:scale(1)}12%,27%{transform:scale(1.12)}20%,35%{transform:scale(1.03)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes confetti{from{opacity:1;transform:translate(0,0) scale(.3) rotate(0)}to{opacity:0;transform:translate(var(--x),var(--y)) scale(1) rotate(var(--r))}}
@media(min-width:1500px){.scene{max-width:1250px}.masthead{height:110px}.story{height:calc(100vh - 220px);height:calc(100dvh - 220px)}.story-footer{height:110px}}@media(max-height:780px) and (min-width:761px){.masthead{height:74px}.story{height:calc(100vh - 150px);height:calc(100dvh - 150px)}.story-footer{height:76px}.scene{padding:12px 8px}.photo-frame{max-width:290px}.cover-illustration{max-width:390px;margin:auto}.scene h1{font-size:65px}.ticket{max-width:350px;padding:22px}.ticket-date{font-size:65px;margin-top:16px}.ticket-lunar{margin-bottom:16px!important}.blessing-postcards{margin:15px 0}.promise-art{height:90px;margin:0 0 12px}.gallery-stage{height:32vh;min-height:220px}.gallery-card{max-width:275px}.rsvp-art{max-width:330px}}@media(max-width:760px){.masthead{height:73px;padding:0 6%;gap:10px}.wordmark{font-size:28px;gap:8px}.wordmark span{font-size:7px;max-width:70px;letter-spacing:1.5px}.header-date{font-size:9px;letter-spacing:2px}.header-actions{gap:7px}.music-button{width:28px;height:28px}.language-button{font-size:10px;padding:6px}.story{height:calc(100svh - 163px - env(safe-area-inset-bottom,0px));height:calc(100vh - 163px - env(safe-area-inset-bottom,0px));height:calc(100dvh - 163px - env(safe-area-inset-bottom,0px))}.scene{width:92%;padding:15px 12px}.split{display:flex;flex-direction:column;gap:12px}.scene-copy{padding:0!important;text-align:center;width:100%}.eyebrow{font-size:8px;letter-spacing:3px;margin-bottom:13px}.scene h1{font-size:49px}.scene h2{font-size:35px;letter-spacing:2px}.scene .body-copy{font-size:11px;letter-spacing:.7px;line-height:2;margin:15px 0}.scene-cover .split{gap:10px}.cover-heading .heading-small{font-size:.64em;letter-spacing:7px;display:inline-block;margin:0 9px 0 0}.cover-heading .heading-big{display:inline-block}.title-underline{bottom:-11px}.cover-names{justify-content:center;font-size:20px;gap:12px;margin:22px 0 0}.cover-names .heart{width:16px;height:16px}.cover-note{font-size:10px;letter-spacing:1px;margin:12px 0 0!important}.cover-illustration{width:min(90%,340px);aspect-ratio:1.28;margin-top:27px}.envelope-button{width:93%}.hand-note{font-size:15px;top:-10%;right:9%}.hand-arrow{top:-5%;right:4%;width:45px;height:60px}.cover-star{width:33px;top:-2%;right:28%}.cover-flower{width:48px;bottom:4%;right:-3%}.cover-heart{width:29px;top:13%;left:0}.cover-spark{width:28px;bottom:0;left:3%}.margin-note{display:none}.story-footer{height:90px;width:88%;gap:8px;padding-bottom:env(safe-area-inset-bottom,0px)}.previous-button{min-width:50px;font-size:10px;gap:4px}.previous-button span{display:none}.previous-button svg{width:32px}.next-button{min-width:110px;font-size:11px;gap:12px;letter-spacing:1px}.next-button svg{width:33px}.chapter-dots{gap:0}.chapter-dot{width:20px}.chapter-dot:after{width:4px;height:4px}.chapter-dot[aria-current="step"]:after{width:7px;height:7px}.scene-invite .split{gap:22px;flex-direction:column-reverse}.scene-invite .scene-copy{flex-shrink:0}.scene-invite .eyebrow{margin-bottom:10px}.names-title{display:block;font-size:31px!important}.names-title .ampersand{font-size:23px;margin:0 9px}.invite-tagline{font-size:14px;letter-spacing:3px;margin-top:10px}.date-line{justify-content:center;font-size:11px;margin-top:12px}.date-line:before{width:25px}.invite-visual{max-width:260px}.photo-frame{max-width:235px;padding:8px 8px 29px;margin:8px auto}.photo-frame img{aspect-ratio:1.2}.photo-frame .photo-caption{font-size:10px;bottom:8px}.photo-frame:before{height:22px;top:-10px;width:65px}.invite-flower{width:45px;right:-3%;top:-7%}.invite-bow{width:72px;left:-7%;bottom:-9%}.invite-heart{width:26px;top:12%;left:-1%}.tap-hint{font-size:9px;margin-top:14px}.section-title-row{gap:14px}.section-title-row .doodle-inline{width:39px;height:39px}.gallery-stage{height:260px;min-height:0;width:108%;margin-top:18px}.gallery-card{width:65%;max-width:250px;padding:8px 8px 27px;transform:translateX(calc(var(--position)*49%)) rotate(calc(var(--position)*10deg))}.gallery-controls{margin-top:5px;gap:22px}.gallery-caption{font-size:14px;margin-top:14px!important}.gallery-note{font-size:9px;letter-spacing:1px}.gallery-star{width:29px;left:1%;top:16%}.gallery-heart{width:25px;right:0;bottom:18%}.promise-art{width:125px;height:100px;margin:10px 0 18px}.promise-quote{font-size:28px;letter-spacing:3px;line-height:1.9}.promise-flower{width:48px;left:2%;bottom:8%}.promise-star{width:32px;right:7%;top:12%}.promise-divider{margin:12px 0}.timeline-list{padding:10px 0;max-height:45vh;max-height:45dvh;gap:22px}.timeline-event{grid-template-columns:75px 1fr;gap:12px;padding-left:14px}.timeline-event h3{font-size:18px}.timeline-event time{font-size:10px}.scene-venue .split{gap:24px;flex-direction:column-reverse}.scene-venue h2{font-size:32px}.scene-venue .scene-copy>.eyebrow{margin-bottom:7px}.venue-name{font-size:21px;margin:11px 0 6px}.venue-address{font-size:11px;letter-spacing:1px}.venue-actions{justify-content:center;margin-top:13px;gap:8px}.outline-button{font-size:10px;padding:10px 15px}.ticket{max-width:275px;padding:17px 23px;box-shadow:6px 7px 0 #e9d9c1;transform:rotate(-3deg)}.ticket-heading{padding-bottom:10px}.ticket-heading .small-label{font-size:8px;letter-spacing:1px}.ticket-heading svg{width:27px}.ticket-date{font-size:50px;margin:11px 0 4px}.ticket-month{font-size:9px;letter-spacing:2px}.ticket-lunar{font-size:9px;margin:5px 0 14px!important}.ticket-bottom{font-size:9px;padding-top:11px}.ticket-bottom strong{font-size:20px}.ticket-footer{font-size:7px;letter-spacing:2px;margin-top:12px}.venue-bow{width:65px;right:1%;top:2%}.venue-star{width:28px;bottom:7%;left:1%}.venue-extra{font-size:10px;margin:8px 0}.blessing-art{width:85px;height:80px;margin-bottom:15px}.blessing-postcards{gap:8px;margin:22px 0 26px;max-width:500px}.blessing-card{width:47%;padding:16px;min-height:155px}.blessing-card:nth-child(3){display:none}.blessing-card p{font-size:15px;line-height:1.8}.blessing-card cite{font-size:9px}.blessing-empty{gap:13px;max-width:100%;margin:20px 0 26px}.blessing-empty svg{width:27px;height:27px;flex-shrink:0}.blessing-empty p{font-size:21px;letter-spacing:2px}.primary-button{font-size:11px;padding:13px 22px;gap:17px;letter-spacing:1px}.rsvp-art{max-width:250px;margin:0 auto}.scene-rsvp .split{gap:15px;flex-direction:column-reverse}.rsvp-heading{font-size:39px!important}.rsvp-countdown{justify-content:center;margin:13px 0;gap:8px;font-size:10px}.rsvp-countdown strong{font-size:30px}.rsvp-buttons{justify-content:center;margin-top:18px;gap:9px}.rsvp-small{font-size:9px;margin-top:12px!important}.rsvp-heart{width:32px;top:1%;right:1%}.rsvp-star{width:25px}.film-container{margin-top:25px}.film-description{font-size:11px}.toast{bottom:100px;font-size:11px}.form-dialog{padding:30px 23px 24px}.form-dialog h2{font-size:27px}.form-field{margin:15px 0}.form-field input,.form-field select,.form-field textarea{padding:10px}.english .scene h1{font-size:45px}.english .cover-heading .heading-small{display:block;margin:0 0 3px;font-size:.65em}.english .cover-names{font-size:17px;gap:9px}.english .cover-illustration{margin-top:20px;max-width:300px}.english .names-title{font-size:25px!important}.english .invite-tagline{font-size:14px;letter-spacing:0}.english .scene h2{font-size:30px}.english .promise-quote{font-size:25px}.english .rsvp-heading{font-size:36px!important}.english .scene .body-copy{font-size:12px}.english .header-date{font-size:8px;letter-spacing:1px}}
@media(max-width:420px){.header-date{display:none}.scene h1{font-size:44px}.chapter-dot{width:18px}.chapter-dots{left:43%}.cover-illustration{width:min(92%,320px)}.rsvp-art{max-width:230px}.rsvp-heading{font-size:36px!important}}
@media(max-height:730px) and (max-width:760px){.masthead{height:62px}.story{height:calc(100vh - 137px - env(safe-area-inset-bottom,0px));height:calc(100dvh - 137px - env(safe-area-inset-bottom,0px))}.story-footer{height:75px}.scene{padding-top:10px;padding-bottom:10px}.scene h1{font-size:40px}.scene h2{font-size:30px}.cover-names{margin-top:19px;font-size:18px}.cover-note{margin-top:8px!important}.cover-illustration{max-width:260px;margin-top:22px}.scene-invite .split{gap:18px}.invite-visual{max-width:225px}.photo-frame{max-width:200px}.names-title{font-size:28px!important}.invite-tagline{font-size:12px;margin-top:7px}.gallery-stage{height:220px;margin-top:14px}.gallery-card{max-width:205px}.gallery-caption{font-size:12px}.promise-art{width:100px;height:80px;margin:0 0 10px}.promise-quote{font-size:25px}.promise-divider{margin:7px 0}.ticket{max-width:245px;padding:12px 21px}.ticket-date{font-size:40px;margin:9px 0 3px}.ticket-lunar{margin-bottom:11px!important}.ticket-bottom{padding-top:9px}.ticket-footer{margin-top:8px}.ticket-heading{padding-bottom:7px}.scene-venue .split{gap:17px}.scene-venue h2{font-size:28px}.venue-name{margin-top:8px}.venue-extra{font-size:9px}.rsvp-art{max-width:185px}.rsvp-heading{font-size:32px!important}.scene-rsvp .split{gap:10px}.scene-rsvp .body-copy{margin:10px 0}.rsvp-countdown{margin:8px 0}.rsvp-buttons{margin-top:13px}.blessing-art{width:70px;height:65px}.blessing-card{min-height:130px}.toast{bottom:85px}}
@media(max-height:570px) and (max-width:760px){.scene{justify-content:flex-start}.scene-cover .cover-illustration{max-width:200px}.scene .split{padding:10px 0}.scene-gallery .gallery-stage{flex-shrink:0}.scene-promise,.scene-blessings{padding-top:20px}.scene-invite .invite-visual{max-width:180px}.scene-invite .photo-frame{max-width:165px}.rsvp-art{max-width:140px}.scene-venue .ticket{display:none}.scene-venue .split{margin:auto}.english .scene h1{font-size:36px}}
.ticket-time{justify-content:center;text-align:center}.rsvp-art>svg.doodle{width:48px;height:48px}.form-dialog .primary-button:hover{transform:none}
@media(max-width:760px){.rsvp-art>svg.rsvp-heart{width:32px;height:32px}.rsvp-art>svg.rsvp-star{width:25px;height:25px}}
@media(max-width:760px){.scene-gallery h2{font-size:28px}.gallery-card img{object-position:50% 25%}}
@media(max-width:420px){.chapter-dots{left:50%;top:1px}.previous-button,.next-button{margin-top:18px}}
@media(max-height:570px) and (max-width:760px){.scene-venue .ticket{display:block;max-width:220px;padding:10px 18px}.scene-venue .ticket-heading,.scene-venue .ticket-lunar,.scene-venue .ticket-footer{display:none}.scene-venue .ticket-date{font-size:36px;margin:2px 0}.scene-venue .ticket-bottom{margin-top:9px}.scene-venue .split{margin:0}.scene-venue .body-copy{margin:10px 0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.title-underline,.hand-arrow{stroke-dashoffset:0}.confetti{display:none}}
