@charset "UTF-8";
:root{--paper:#fbf6ed;--ivory:#fffaf3;--ink:#4b3732;--gold:#ac8b60;--muted:#897469;--line:#d9c8af;--wine:#713e48;--serif:"Bodoni 72","Didot","Times New Roman",Georgia,serif;--ease:cubic-bezier(.22,.72,.18,1)}
html{scroll-behavior:auto;scroll-padding-top:0}body{min-height:100svh;background:radial-gradient(ellipse at 48% 30%,#f6f0e5,#e6dbcd 85%);color:var(--ink)}
button{font-weight:400}button:focus-visible,a:focus-visible{outline:2px solid var(--wine);outline-offset:5px}.skip-link:focus{top:10px}.premiere{max-width:none;min-height:100svh;background:none;display:flex;align-items:center;justify-content:center;padding:44px 36px 16px}
.invitation-stage{width:min(100%,980px);position:relative}.stage-canvas{position:relative;display:grid;grid-template-columns:53% 47%;min-height:clamp(590px,calc(100svh - 118px),720px);isolation:isolate}
.inner-paper{position:absolute;inset:0;background:var(--paper);border:1px solid #cdb796;box-shadow:0 18px 50px -20px #5d412d40,0 3px 6px #6a4a2720;opacity:0;pointer-events:none;z-index:-1}.inner-paper:after{content:"";position:absolute;inset:7px;border:1px solid #cdb79680}
.photo-aperture{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;visibility:hidden;will-change:clip-path;clip-path:inset(50%);-webkit-clip-path:inset(50%)}.stage-ready .photo-aperture{visibility:visible}#scene-photo{position:absolute;left:0;top:0;width:1200px;height:1800px;max-width:none;transform-origin:0 0;display:block;will-change:transform}
.photo-target{position:absolute;top:14px;left:14px;width:calc(53% - 14px);height:calc(100% - 28px);visibility:hidden;pointer-events:none}.details-photo-target{width:calc(43% - 14px)}
.gatefold{--fold-left:0deg;--fold-right:0deg;--shade:0;--paper-alpha:1;--handle-alpha:1;position:absolute;z-index:4;perspective:1500px;touch-action:pan-y pinch-zoom;user-select:none;cursor:grab}.gatefold.is-dragging{cursor:grabbing}
.gate-leaf{position:absolute;top:0;bottom:0;width:50.1%;z-index:2;backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform;opacity:var(--paper-alpha);border:1px solid #c3aa84;box-shadow:0 12px 26px -12px #50392255;background:radial-gradient(#bdab8c1a .6px,transparent .7px) 0 0/4px 4px,linear-gradient(100deg,#f7efdf,#fff9ee 44%,#f1e5d1)}
.gate-leaf:before{content:"";position:absolute;inset:9px;border:1px solid #b3986c99;box-shadow:inset 0 0 0 3px #fffaf177}.gate-leaf:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#88633f);opacity:var(--shade);pointer-events:none}
.gate-left{left:0;transform-origin:left center;transform:rotateY(calc(-1 * var(--fold-left)));border-right-color:#c5ad8977}.gate-right{right:0;transform-origin:right center;transform:rotateY(var(--fold-right));background:radial-gradient(#bdab8c1a .6px,transparent .7px) 0 0/4px 4px,linear-gradient(90deg,#e9dac0,#fff9ee 4%,#f7efdf 95%,#e9dbc4)}
.botanical{stroke:currentColor;stroke-width:.8;stroke-linecap:round;stroke-linejoin:round;width:70px;height:70px;color:#a48559}.paper-corner{position:absolute;width:70px;height:70px;color:#b09365;opacity:.7;pointer-events:none}.paper-corner .botanical{width:100%;height:100%}.corner-top{top:16px;left:12px;transform:rotate(-32deg) scale(.7)}.corner-bottom{bottom:16px;left:12px;transform:rotate(165deg) scale(.7)}.gate-right .paper-corner{left:auto;right:12px;transform:rotate(32deg) scaleX(-1) scale(.7)}.gate-right .corner-bottom{transform:rotate(195deg) scaleX(-1) scale(.7)}
.cover-copy{position:absolute;z-index:5;left:var(--card-x);top:var(--card-y);width:var(--card-w);height:var(--card-h);padding:42px 25px 116px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;opacity:1;transform:translateY(var(--cover-shift,0px))}.cover-copy>.botanical{width:60px;height:60px;margin-bottom:14px;flex-shrink:0}.cover-copy h1{font-family:"Songti SC","STSong",var(--chinese);font-size:32px;font-weight:400;letter-spacing:.18em;padding-left:.18em;line-height:1.4;margin:0 0 31px;color:#664335}.cover-names{font:italic 58px/1.1 var(--serif);letter-spacing:-.04em;white-space:nowrap;margin:0 0 10px;color:#713e48}.cover-names i{font-size:.65em;color:#a78559;margin:0 .08em}.cover-cast{font:20px/1.5 var(--chinese);margin:0;letter-spacing:.08em}.cover-cast span{font-size:15px;color:#9b8066;margin:0 12px}.cover-rule{height:1px;width:44px;background:#b49a74;margin:23px 0 18px}.cover-date{font:24px Georgia,serif;letter-spacing:.05em;margin:0;color:#83674c}.cover-recipient{font-size:17px;line-height:1.5;max-width:100%;margin:15px 0 0;overflow-wrap:anywhere;color:#795b4a}
.gate-handle{position:absolute;z-index:5;left:50%;bottom:36px;transform:translateX(-50%);min-width:190px;min-height:52px;display:flex;align-items:center;justify-content:center;gap:20px;padding:12px 20px;background:#fffaf1;box-shadow:0 2px 0 #b8a1812e,inset 0 0 0 3px #f6eddd;border:1px solid #b69a72;color:var(--wine);font-size:17px;letter-spacing:.08em;opacity:var(--handle-alpha);touch-action:pan-y pinch-zoom}.gate-handle svg{width:20px;height:20px}.gate-handle:active{background:#f4e8d7}
.letter-copy,.invitation-stage .invitation-copy{grid-column:2;grid-row:1;align-self:center;position:relative;z-index:2;opacity:0;visibility:hidden;pointer-events:none;padding:44px 40px;width:100%;min-width:0;transform:translateY(var(--copy-shift,0px))}.letter-copy h2,.invitation-copy h2{font-family:"Songti SC","STSong",var(--chinese);font-size:40px;font-weight:400;line-height:1.55;letter-spacing:.02em;margin:0 0 22px;outline:none}.letter-copy h2:focus-visible,.invitation-copy h2:focus-visible{outline:none}.letter-message{font-size:18px;line-height:1.95;color:#80695a;margin:0 0 34px}.personal-salutation{font-size:17px;letter-spacing:0;margin:0 0 16px;color:#8c6757;overflow-wrap:anywhere}.letter-next{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;width:100%;border:1px solid #bba17d;background:transparent;color:var(--wine);padding:14px 18px;font-size:16px}.letter-next:hover{background:#efe1ce55}.letter-next svg{width:20px;height:20px}
.invitation-stage .invitation-copy{grid-column:1 / 3;justify-self:end;width:57%;padding:36px 44px}.invitation-copy h2{font-size:34px;margin-bottom:28px}.wedding-details{display:flex;flex-direction:column;gap:25px;border:0;padding:0;margin:0 0 32px;text-align:left}.wedding-details>div{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:start;gap:19px;border:0;padding:0}.wedding-details>div+div{border:0;padding:23px 0 0;border-top:1px solid var(--line)}.detail-label{font-size:15px;line-height:1.6;letter-spacing:.08em;color:#917663;margin:7px 0 0;white-space:nowrap}.wedding-details dd{margin:0;min-width:0}.wedding-details strong{display:block;font-weight:400;font-size:24px;line-height:1.5;letter-spacing:.02em}.wedding-details .date-number{font:29px/1.4 Georgia,serif!important;letter-spacing:.015em}.detail-note{display:block;font-size:15px;line-height:1.7;letter-spacing:0;color:#8a7465;margin-top:6px}.reply-status{font-size:15px;color:#8a6758;line-height:1.5;overflow-wrap:anywhere;margin:-12px 0 16px}
.reply-button{background:var(--wine);border-color:var(--wine);color:#fff8ed;min-height:54px;border-radius:2px;letter-spacing:.04em;box-shadow:0 5px 15px #713e4812}.reply-button:hover{background:#62333d;border-color:#62333d;box-shadow:0 7px 18px #713e4822}.reply-button:before{display:none}.text-button,.download-link{color:var(--wine)}
.stage-footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:58px;padding:4px 2px;gap:18px}.stage-back,.direct-invite{min-height:44px;display:flex;align-items:center;gap:8px;background:none;color:#826b59;font-size:14px;padding:6px 0;white-space:nowrap}.stage-back{justify-self:start;grid-column:1;grid-row:1}.direct-invite{justify-self:end;grid-column:3;grid-row:1}.stage-back svg,.direct-invite svg{width:17px;height:17px}.page-dots{display:flex;gap:7px;align-items:center;grid-column:2;grid-row:1}.page-dots span{width:5px;height:5px;border-radius:50%;background:#b8a58d88;transition:background .3s,width .3s}.page-dots .is-current{width:18px;border-radius:5px;background:#9e7755}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.settings-toggle{position:absolute;top:4px;right:12px;width:42px;height:38px;display:grid;place-items:center;background:none;color:#9b806b;z-index:10}.settings-toggle svg{stroke-width:1.4;width:22px}.settings-dialog{width:min(420px,calc(100% - 32px));border:1px solid var(--line);border-radius:4px;background:var(--paper);color:var(--ink);padding:30px 26px;max-height:85dvh;overflow:auto}.settings-dialog::backdrop{background:#342b2570;backdrop-filter:blur(4px)}.settings-dialog h2{font-size:22px;font-weight:400;margin:0 0 14px}.settings-dialog>p{font-size:14px;color:var(--muted);line-height:1.8;margin:0 0 22px}.settings-dialog .version-switch{background:#ece2d5;width:fit-content;margin-bottom:18px}.settings-dialog .version{padding:8px 18px;min-height:44px;color:#7b6559}.version.active{color:var(--wine)}.settings-dialog .personal-preview{background:none;justify-content:flex-start;padding:0 0 16px;border:0}.personal-preview input{flex:1;min-width:0;color:var(--ink);border-color:var(--gold);font-size:16px}.settings-actions{display:flex;flex-wrap:wrap;gap:8px}.settings-actions button{background:#eee3d4;color:#7c584a;padding:10px 13px;min-height:44px;font-size:14px}.settings-dialog .dialog-close{font-size:25px;line-height:1}
.petal-field{position:absolute;inset:-28px -25px 0;overflow:hidden;pointer-events:none;z-index:7;contain:layout paint}.petal{position:absolute;top:-30px;left:var(--x);opacity:0;width:var(--size);height:calc(var(--size)*1.35);will-change:transform,opacity}.petal i{display:block;width:100%;height:100%;border-radius:12% 75% 25% 65%;background:radial-gradient(ellipse at 30% 30%,#fff9ed,#e9cbbb 70%,#d9a995);box-shadow:inset 1px 1px 2px #ffffffa0;transform:rotate(var(--turn))}.petal:nth-child(3n) i{background:radial-gradient(ellipse at 30% 25%,#fffdf8,#f5e8ce 75%,#d0b991)}.petals-active .petal{animation:petal-fall var(--duration) cubic-bezier(.3,.05,.65,.98) var(--delay) both}.petals-active .petal i{animation:petal-turn calc(var(--duration)*.7) ease-in-out var(--delay) both}@keyframes petal-fall{0%{opacity:0;transform:translate3d(0,-20px,0) rotate(-8deg)}12%{opacity:.72}45%{transform:translate3d(var(--sway),calc(var(--fall-distance)*.43),0) rotate(28deg)}80%{opacity:.55}100%{opacity:0;transform:translate3d(var(--drift),var(--fall-distance),0) rotate(-35deg)}}@keyframes petal-turn{0%{transform:rotate(var(--turn)) rotateY(0deg)}55%{transform:rotate(calc(var(--turn) + 95deg)) rotateY(70deg)}100%{transform:rotate(calc(var(--turn) + 180deg)) rotateY(165deg)}}
/* The reply and ticket use the same warm palette as the invitation. */
.reply-dialog{background:var(--paper);border-color:var(--line);box-shadow:0 22px 100px #422e3340}.reply-dialog::backdrop{background:#32232299}.reply-dialog[open]{animation:dialog-rise .4s var(--ease) both}.dialog-close{color:#836a5c;background:#eadecfaa}.reply-kicker{display:none}.reply-heading h2{margin-top:15px;color:var(--ink)}.reply-heading>p,.demo-note,.attendance-options small,.save-instruction{color:#8b7768}.field>label,.attendance legend,.guest-count-row>label{color:#74594d}.field input,.field textarea,.stepper input{color:var(--ink)}.field input:focus,.field textarea:focus{border-color:#a7786e;box-shadow:0 0 0 2px #a7786e15}.attendance-options input:checked+span{border-color:var(--wine);background:#f0e0df;box-shadow:inset 0 0 0 1px var(--wine);color:var(--wine)}.attendance-options input:checked+span small{color:#946f71}.stepper button{color:var(--wine)}.attendance-options label>span{min-height:79px}.attendance-options strong{font-size:15px}.attendance-options small{font-size:13px}.optional-note{border-top:1px solid var(--line);margin:0 0 20px}.optional-note summary{cursor:pointer;font-size:14px;min-height:46px;display:flex;align-items:center;gap:8px;color:#81685a;list-style:none}.optional-note summary::-webkit-details-marker{display:none}.optional-note summary:before{content:"＋";font-size:18px}.optional-note[open] summary:before{content:"−"}.optional-note summary>span{margin-left:auto;font-size:12px;color:#968575}.optional-note .note-field{margin-bottom:0}.optional-note[open]{padding-bottom:2px}
.ticket-body h3{color:var(--ink)}.ticket-count,.ticket-meta small,.ticket-stub>span:first-child,.ticket-signoff>small,.simple-response p,.result-overline{color:#8b7768}.ticket-guest-label{color:#9b7b5c}.ticket-signoff,.response-signature{color:#9c795a}.response-symbol{color:#a7786e}.ticket-visual-shade{background:linear-gradient(180deg,#53382515,transparent 30%,#39262188)}.ticket-label,.ticket-topline{display:none}.ticket-film-name>span{letter-spacing:.08em}.ticket-delivery{overflow:hidden;padding-bottom:3px;perspective:1000px}.ticket-delivery:has(>.cinema-ticket[hidden]){display:none}.reply-result-view:not([hidden]) .cinema-ticket{animation:ticket-issue 1.35s var(--ease) both;transform-origin:50% 0}.reply-result-view:not([hidden]) .ticket-stub{animation:ticket-tail 1.35s var(--ease) .12s both}#result-overline:focus{outline:none}@keyframes ticket-issue{0%{transform:translateY(-60%) rotateX(5deg);opacity:.5}100%{transform:translateY(0) rotateX(0);opacity:1}}@keyframes ticket-tail{0%,35%{transform:rotateX(-45deg)}100%{transform:rotateX(0)}}
@media(max-width:760px){
 .premiere{padding:42px 21px 10px;align-items:center}.invitation-stage{max-width:470px}.stage-canvas{--letter-photo-height:clamp(250px,43svh,355px);--details-photo-height:clamp(125px,22svh,180px);grid-template-columns:1fr;min-height:clamp(500px,calc(100svh - 110px),710px)}
 .photo-target{left:10px;top:10px;width:calc(100% - 20px);height:var(--letter-photo-height)}.details-photo-target{height:var(--details-photo-height)}
 .cover-copy{padding:28px 22px 102px}.cover-copy>.botanical{width:53px;height:53px;margin-bottom:14px}.cover-copy h1{font-size:30px;margin-bottom:30px}.cover-names{font-size:53px}.cover-cast{font-size:20px}.cover-rule{margin:21px 0 17px}.cover-date{font-size:23px}.cover-recipient{font-size:17px;margin-top:13px}.gate-handle{bottom:34px;min-width:184px;min-height:51px}.paper-corner{width:58px;height:58px}.corner-top{left:6px;top:11px}.corner-bottom{left:6px;bottom:11px}.gate-right .paper-corner{right:6px}
 .letter-copy,.invitation-stage .invitation-copy{grid-column:1;grid-row:1;align-self:start;width:100%;padding:25px 27px 29px;margin-top:calc(var(--letter-photo-height) + 10px);text-align:center}.letter-copy h2{font-size:29px;line-height:1.45;margin:0 0 14px}.letter-copy h2 br{display:block}.letter-message{font-size:16px;line-height:1.9;margin:0 0 22px}.letter-next{font-size:16px;min-height:52px;padding:12px 17px}.personal-salutation{font-size:16px;margin:0 0 9px}
 .invitation-stage .invitation-copy{margin-top:calc(var(--details-photo-height) + 10px);padding:23px 27px 28px;align-self:stretch;display:flex;flex-direction:column;justify-content:center}.invitation-copy h2{font-size:29px;margin:0 0 25px}.wedding-details{gap:18px;margin:0 0 25px}.wedding-details>div{grid-template-columns:66px minmax(0,1fr);gap:12px}.wedding-details>div+div{padding:18px 0 0}.detail-label{font-size:14px;letter-spacing:.06em;margin-top:6px}.wedding-details .date-number{font-size:27px!important}.wedding-details .venue-name{font-size:22px;letter-spacing:0}.detail-note{font-size:14px;margin-top:4px}.reply-button{font-size:17px;padding:15px 18px}.reply-status{text-align:left;font-size:14px;margin:-9px 0 13px}.stage-footer{min-height:56px;padding:3px 0;gap:10px}.stage-back,.direct-invite{font-size:14px}.settings-toggle{right:13px;top:2px}.petal-field{inset:-20px -15px 0}
}
@media(max-width:380px){.premiere{padding-inline:16px}.letter-copy,.invitation-stage .invitation-copy{padding-inline:23px}.cover-names{font-size:49px}.cover-copy h1{font-size:28px}.letter-copy h2{font-size:26px}.invitation-copy h2{font-size:27px}.wedding-details>div{gap:10px;grid-template-columns:64px minmax(0,1fr)}.wedding-details .date-number{font-size:25px!important}.wedding-details .venue-name{font-size:21px}}
@media(max-width:760px) and (max-height:710px){
 .premiere{padding-top:35px;padding-bottom:5px}.stage-canvas{--letter-photo-height:220px;--details-photo-height:112px;min-height:500px}.cover-copy{padding-top:20px;padding-bottom:98px}.cover-copy>.botanical{width:45px;height:45px;margin-bottom:10px}.cover-copy h1{margin-bottom:23px}.cover-names{font-size:48px}.cover-rule{margin:15px 0}.cover-recipient{margin-top:10px}.gate-handle{bottom:28px}.letter-copy{padding-top:21px;padding-bottom:23px}.letter-copy h2{margin-bottom:12px}.letter-message{margin-bottom:17px}.invitation-stage .invitation-copy{padding-top:19px;padding-bottom:24px}.invitation-copy h2{margin-bottom:19px}.wedding-details{margin-bottom:21px;gap:16px}.wedding-details>div+div{padding-top:16px}.stage-footer{min-height:52px}
}
@media(min-width:761px) and (max-width:980px){.premiere{padding-inline:24px}.letter-copy{padding-inline:28px}.letter-copy h2{font-size:34px}.letter-message{font-size:16px}.invitation-stage .invitation-copy{padding-inline:28px}.wedding-details>div{grid-template-columns:65px 1fr;gap:12px}.wedding-details strong{font-size:22px}.wedding-details .date-number{font-size:26px!important}}
.motion-off .petal-field{display:none}.page-hidden .petal{animation-play-state:paused!important}

/* Edition 07 — Chinese typography, fine stationery and a consistent print palette. */
@font-face{font-family:"Invitation Serif";src:url("assets/fonts/invitation-serif.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
:root{--paper:#fcfaf5;--ivory:#fffdf8;--ink:#463934;--wine:#6d414a;--gold:#a08867;--muted:#817066;--line:#ded3c3;--display:"Invitation Serif","Songti SC","STSong","Noto Serif CJK SC",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
body{font-family:var(--sans);background:radial-gradient(ellipse at 30% 8%,#faf8f3 0%,#f0ece5 50%,#e7e0d6 100%);color:var(--ink)}
.invitation-stage{width:min(100%,1020px)}
.inner-paper{background:var(--paper) url("assets/paper-grain.svg");border-color:#e1d6c5;box-shadow:0 24px 60px -34px #624c3659,0 3px 8px #5e422016,inset 0 0 0 1px #fffdf9}.inner-paper:after{inset:9px;border-color:#b99f7954}
.photo-target{top:20px;left:20px;width:calc(53% - 20px);height:calc(100% - 40px)}.details-photo-target{width:calc(43% - 20px)}
.gate-leaf{border-color:#ddd1bd;background:url("assets/paper-grain.svg"),linear-gradient(100deg,#f7f2e8 0%,#fdfaf3 46%,#faf6ec 100%);box-shadow:0 20px 32px -22px #5b452c66,0 2px 3px #795b2f12}.gate-leaf:after{background:linear-gradient(90deg,transparent,#73563e)}
.gate-left{border-right-color:#d7c8ae40}.gate-right{border-left-color:#ede5d680;background:url("assets/paper-grain.svg"),linear-gradient(90deg,#e9dfcc 0%,#f9f5eb .7%,#fdfaf4 4%,#faf6ec 100%)}
.gate-leaf:before{border-color:#ab916366;box-shadow:none;inset:19px}.gate-left:before{right:0;border-right:0}.gate-right:before{left:0;border-left:0}
.cover-copy{padding:42px 27px 114px;justify-content:center}
.cover-emblem{width:65px;height:47px;flex-shrink:0;stroke:#a78c62;stroke-width:1.15;filter:drop-shadow(0 1px 0 #ffffff);margin-bottom:24px}.cover-emblem path{stroke-width:.8}
.cover-copy h1{font:400 25px/1.5 var(--display);letter-spacing:.22em;padding-left:.22em;margin:0 0 37px;color:#685447}
.cover-couple{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);align-items:start;justify-content:center;gap:16px;width:100%;margin:0}.couple-person{display:flex;flex-direction:column;align-items:center;gap:9px;flex-shrink:0}.couple-name{font:400 43px/1.3 var(--display);letter-spacing:.035em;padding-left:.035em;color:#583c3f;margin:0;white-space:nowrap}.couple-english{font:italic 23px/1.3 Georgia,"Times New Roman",serif;color:#866c58;margin:0;letter-spacing:.035em}.couple-join{font:italic 28px/1.3 Georgia,serif;color:#b29a75;margin-top:14px}
.cover-rule{width:38px;background:#b89e766b;margin:31px 0 23px}.cover-date{font:21px/1.4 Georgia,serif;letter-spacing:.09em;color:#7b6352;font-variant-numeric:lining-nums tabular-nums}.cover-date span{font-size:14px;color:#b39b7d;margin:0 4px}.cover-recipient{font:400 16px/1.6 var(--sans);letter-spacing:.035em;color:#8a6c5e;margin:17px 0 0}
.gate-handle{bottom:38px;min-width:174px;min-height:50px;padding:11px 22px;gap:21px;border:1px solid #b69a7080;background:#fffdf66b;box-shadow:0 1px 0 #fffaf4,inset 0 0 0 3px #f4ede229;color:#754c48;font-size:16px;letter-spacing:.09em}.gate-handle:hover{background:#fffcf3c9;border-color:#a489638f}.gate-handle svg{width:19px;height:19px;stroke-width:1.15}
.letter-copy{padding:44px 48px}.letter-copy h2,.invitation-copy h2{font-family:var(--display);font-weight:400;letter-spacing:.04em;color:#544037}.letter-copy h2{font-size:38px;line-height:1.62;margin-bottom:22px}.letter-message{font:400 17px/1.95 var(--sans);color:#817065;letter-spacing:.01em;margin-bottom:35px}.personal-salutation{font:400 16px/1.6 var(--sans);letter-spacing:.025em;color:#987868}
.letter-next{min-height:54px;border-color:#b89e7d70;color:#704b43;background:#fffcf630;font-size:16px;letter-spacing:.025em;padding:14px 20px}.letter-next svg{stroke-width:1.2;width:20px}.letter-next:hover{background:#f0e7d95c;border-color:#ab8c6d}
.invitation-stage .invitation-copy{padding:39px 46px}.invitation-copy h2{font-size:33px;line-height:1.55;margin-bottom:33px}
.wedding-details{margin-bottom:34px;gap:24px}.wedding-details>div{grid-template-columns:78px minmax(0,1fr);gap:17px}.wedding-details>div+div{border-color:#bba48438;padding-top:23px}.detail-label{font:400 14px/1.7 var(--sans);letter-spacing:.06em;margin-top:8px;color:#8a6c5e}.wedding-details .date-number{font:400 29px/1.45 Georgia,serif!important;letter-spacing:.025em;color:#534136}.wedding-details .venue-name{font:400 24px/1.5 var(--display);letter-spacing:.025em;color:#534136}.detail-note{font:400 14px/1.75 var(--sans);letter-spacing:.015em;color:#817065;margin-top:7px}.reply-status{color:#8c6e61}
.reply-button{background:linear-gradient(110deg,#774a53,#693f47);border:1px solid #683e4780;color:#fffaf2;box-shadow:0 4px 10px #64414a0d,inset 0 1px 0 #ffffff16;min-height:55px;border-radius:2px;font:400 16px/1.65 var(--sans);letter-spacing:.05em;padding:16px 21px}.reply-button:hover{background:linear-gradient(110deg,#70434d,#613942);box-shadow:0 5px 14px #64414a17}.reply-button svg{width:20px;height:20px;stroke-width:1.2}.stage-back,.direct-invite{color:#796350;font-size:13px}.stage-footer{padding-inline:5px}.page-dots span{background:#b4a38c50}.page-dots .is-current{background:#a28a69aa;width:16px}.settings-toggle{color:#aa9682}
.reply-dialog,.settings-dialog{background:var(--paper) url("assets/paper-grain.svg");border:1px solid #d6c7b3;box-shadow:0 22px 80px #3a25283d}.reply-heading h2,.settings-dialog h2,.save-heading{font-family:var(--display);color:#503c35}.reply-heading h2{font-size:29px;line-height:1.6;letter-spacing:.015em;margin-bottom:12px}.reply-heading>p{font-size:15px;line-height:1.8}.dialog-close{color:#a08571;background:#efe7dc66}.field input,.field textarea{border-color:#ded2c1;background:#fffdf8;line-height:1.65}.field>label,.attendance legend,.guest-count-row>label{font-size:15px;color:#7b6252}.attendance-options label>span{background:#fffcf54d;border-color:#d9c9b5;min-height:83px}.attendance-options input:checked+span{border-color:#92656b;background:#f0e4e2;box-shadow:inset 0 0 0 .5px #92656b;color:#653e45}.attendance-options small{color:#817065}.stepper{border-color:#d9c9b5;background:#fffdf7}.optional-note{border-color:#d7c7b24f}.optional-note summary{font-size:15px}.demo-note{color:#817065;font-size:12px}.form-error{color:#984c42}.toast{background:#614a45f2}
.ticket-visual{height:250px}.ticket-film-name{left:23px;right:20px;bottom:24px;font-style:normal;font-size:0;line-height:1.2;letter-spacing:0}.ticket-film-name strong{display:block;font:400 33px/1.45 var(--display);letter-spacing:.035em;color:#fffdf3}.ticket-film-name i{font:italic 22px Georgia,serif;color:#e4d4bd;margin:0 5px}.ticket-film-name>span{display:block;font:italic 19px/1.3 Georgia,serif;letter-spacing:.055em;color:#e5d3bd;margin-top:7px}.ticket-visual-shade{background:linear-gradient(180deg,transparent 35%,#3e2b1d1a 50%,#35251bcc)}.cinema-ticket{border:1px solid #e7ddcc;box-shadow:0 8px 24px #5e452415}.ticket-body,.ticket-stub{background:#fffdf8 url("assets/paper-grain.svg")}.ticket-body h3{font-family:var(--sans);font-size:30px}.ticket-guest-label{font-size:13px;letter-spacing:.1em;color:#9a7e60}.ticket-count{font-size:14px;color:#9b8672}.ticket-meta{border-color:#d6c7b24f}.ticket-meta strong{font-family:var(--display);color:#634a3c}.ticket-perforation{border-color:#c7b59a77}.ticket-signoff{font-size:23px}.ticket-signoff>small{letter-spacing:.05em}.simple-response h3{font-family:var(--sans);font-size:28px}.response-signature{font:400 27px/1.5 var(--display);color:#866b53}.response-signature>span{font-size:15px;margin:0 6px}.response-signature>small{display:block;font:italic 18px/1.4 Georgia,serif;color:#a68d70;margin-top:8px}.save-heading{line-height:1.7}.result-overline{font-size:15px;color:#8a6e5b}.result-actions>.reply-button{font-size:16px}
@media(max-width:760px){
 .premiere{padding:40px 22px 10px}.photo-target{top:17px;left:17px;width:calc(100% - 34px);height:var(--letter-photo-height)}.details-photo-target{height:var(--details-photo-height)}
 .cover-copy{padding:32px 24px 106px}.cover-emblem{width:61px;height:44px;margin-bottom:23px}.cover-copy h1{font-size:23px;margin-bottom:33px;letter-spacing:.2em;padding-left:.2em}.cover-couple{gap:13px}.couple-name{font-size:38px;letter-spacing:.015em;padding-left:.015em}.couple-english{font-size:21px}.couple-person{gap:10px}.couple-join{font-size:24px;margin-top:12px}.cover-rule{margin:28px 0 22px}.cover-date{font-size:20px}.cover-date span{margin:0 3px}.cover-recipient{font-size:16px;margin-top:15px}.gate-handle{min-width:169px;min-height:50px;bottom:37px;padding:11px 20px}.gate-leaf:before{inset:16px}.gate-left:before{right:0}.gate-right:before{left:0}
 .letter-copy{margin-top:calc(var(--letter-photo-height) + 17px);padding:25px 29px 30px}.letter-copy h2{font-size:29px;line-height:1.65;letter-spacing:.03em;margin-bottom:15px}.letter-message{font-size:16px;line-height:1.9;margin-bottom:24px}.letter-next{font-size:16px;padding:13px 18px;min-height:53px}.personal-salutation{font-size:16px;margin-bottom:10px}
 .invitation-stage .invitation-copy{margin-top:calc(var(--details-photo-height) + 17px);padding:26px 29px 31px}.invitation-copy h2{font-size:28px;margin-bottom:26px;letter-spacing:.035em}.wedding-details{gap:20px;margin-bottom:28px}.wedding-details>div{grid-template-columns:64px minmax(0,1fr);gap:14px}.wedding-details>div+div{padding-top:20px}.detail-label{font-size:14px;letter-spacing:.045em;margin-top:7px}.wedding-details .date-number{font-size:27px!important;letter-spacing:.01em}.wedding-details .venue-name{font-size:22px;letter-spacing:0}.detail-note{font-size:14px;letter-spacing:0;margin-top:5px}.reply-button{font-size:16px;padding:15px 18px;min-height:55px}.stage-footer{padding-inline:3px;min-height:56px}.reply-status{font-size:14px;margin-top:-10px}
 .reply-dialog{border-radius:12px 12px 0 0}.reply-heading h2{font-size:27px}.ticket-visual{height:220px}.ticket-film-name strong{font-size:30px}.ticket-film-name>span{font-size:18px}.ticket-body h3{font-size:28px}
}
@media(max-width:380px){.premiere{padding-inline:17px}.cover-copy{padding-inline:20px}.cover-couple{gap:11px}.couple-name{font-size:35px}.couple-english{font-size:20px}.couple-join{font-size:22px;margin-top:11px}.cover-copy h1{font-size:22px}.letter-copy,.invitation-stage .invitation-copy{padding-inline:24px}.letter-copy h2{font-size:27px}.invitation-copy h2{font-size:27px}.wedding-details>div{gap:11px;grid-template-columns:62px minmax(0,1fr)}.wedding-details .date-number{font-size:25px!important}.wedding-details .venue-name{font-size:21px}.ticket-film-name strong{font-size:28px}.reply-heading h2{font-size:26px}}
@media(max-width:760px) and (max-height:710px){
 .premiere{padding-top:33px;padding-bottom:5px}.stage-canvas{--letter-photo-height:209px;--details-photo-height:108px;min-height:500px}.cover-copy{padding-top:23px;padding-bottom:104px}.cover-emblem{width:53px;height:38px;margin-bottom:17px}.cover-copy h1{margin-bottom:26px}.cover-rule{margin:21px 0 17px}.cover-recipient{margin-top:12px}.gate-handle{bottom:28px}.letter-copy{padding-top:20px;padding-bottom:24px}.letter-copy h2{font-size:26px;line-height:1.55;margin-bottom:12px}.letter-message{margin-bottom:19px}.invitation-stage .invitation-copy{padding-top:20px;padding-bottom:26px}.invitation-copy h2{margin-bottom:20px}.wedding-details{gap:17px;margin-bottom:22px}.wedding-details>div+div{padding-top:17px}
}
@media(min-width:761px) and (max-width:980px){.letter-copy{padding-inline:31px}.letter-copy h2{font-size:34px}.invitation-stage .invitation-copy{padding-inline:30px}.wedding-details>div{grid-template-columns:65px 1fr;gap:13px}.wedding-details .date-number{font-size:27px!important}.wedding-details .venue-name{font-size:22px}}

@media(max-width:350px){.couple-name{font-size:32px}.cover-couple{gap:8px;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr)}.couple-english{font-size:19px}}

/* Edition 08 — The garden collection. Artwork belongs to the folding leaves. */
body{background:radial-gradient(ellipse at 48% 30%,#f3eadc 0%,#e5d8c9 38%,#d7c5bc 75%,#c6afb0 100%)}
.premiere{background:repeating-linear-gradient(93deg,#ffffff05 0 1px,transparent 1px 4px)}
.gate-leaf{background-image:url("assets/garden-engraving-v8.jpg");background-repeat:no-repeat;background-size:200% 100%;background-color:#f7f0e3;border-color:#a98e6470;box-shadow:0 26px 34px -17px #533e3b66,0 3px 4px #5f42352e,inset 0 0 0 1px #fffcf485;overflow:hidden}
.gate-left{background-position:left center;border-right-color:#aa8f6822}.gate-right{background-position:right center;border-left-color:#e7d8bf99}
.gate-leaf:before{inset:4px;border-color:#f9edd770;box-shadow:none}.gate-left:before{right:0;border-right:0}.gate-right:before{left:0;border-left:0}
.gate-leaf:after{background:linear-gradient(90deg,transparent,#5b352d)}
.cover-copy{justify-content:flex-start;padding:calc(var(--card-h)*.325) 35px 0;gap:0}
.cover-copy h1{font:400 24px/1.5 var(--display);letter-spacing:.24em;padding-left:.24em;margin:0 0 24px;color:#695044;text-shadow:0 1px #fff8e8}
.cover-couple{grid-template-columns:minmax(0,1fr) 20px minmax(0,1.3fr);gap:10px;max-width:296px;align-items:start}.couple-name{font-size:41px;line-height:1.3;color:#643f49;letter-spacing:.045em;padding-left:.045em}.couple-english{font-size:22px;color:#876554;letter-spacing:.045em}.couple-person{gap:7px}.couple-join{font-size:26px;margin-top:11px;color:#a78a5a}
.cover-flourish{width:111px;height:22px;margin:19px 0 16px;stroke:#aa8754;stroke-width:.75;flex-shrink:0}.cover-date{font:21px/1.4 Georgia,serif;letter-spacing:.1em;color:#715845}.cover-date span{color:#a3835e;font-size:13px;margin:0 3px}.cover-recipient{font-size:15px;line-height:1.5;color:#705246;margin:12px 0 0;max-width:95%;background:#f8f0e4d9;padding:1px 8px;border-radius:3px}
.satin-band{position:absolute;left:0;width:100%;top:80%;height:29px;background:linear-gradient(180deg,#89616a 0%,#a48287 8%,#7c525e 20%,#996e78 48%,#70414f 89%,#b18c90 96%,#714851 100%);box-shadow:0 2px 3px #39242730,inset 0 1px #d5b8aa55;opacity:calc(1 - var(--ribbon-part,0));transform:translateX(calc(-30% * var(--ribbon-part,0)));border-block:1px solid #65414c3b}
.satin-band:after{content:"";position:absolute;inset:3px 0;background:repeating-linear-gradient(0deg,#ffdfdf0d 0 1px,transparent 1px 3px);border-block:1px solid #e2b8b929}
.gate-right .satin-band{transform:translateX(calc(30% * var(--ribbon-part,0)))}
.gate-handle{top:calc(80% - 23px);bottom:auto;min-width:156px;min-height:104px;padding:0 10px;display:flex;flex-direction:column;gap:12px;background:none;border:0;box-shadow:none;color:#fff9ed;letter-spacing:.07em;transform:translateX(-50%) translateY(var(--seal-lift,0px));overflow:visible}
.gate-handle:hover,.gate-handle:active{background:none;border:0;box-shadow:none}.gate-handle:focus-visible{outline:2px solid #754b50;outline-offset:7px;border-radius:5px}
.wax-seal{width:74px;height:72px;flex-shrink:0;display:grid;place-items:center;border-radius:49% 44% 48% 45% / 43% 49% 44% 50%;background:radial-gradient(ellipse at 28% 18%,#e7d2a9 0,#c4a679 35%,#ae8756 70%,#ceb283 88%,#f5e2b4 96%);box-shadow:0 5px 7px #3d252c47,inset 1px 2px 3px #fff3c69c,inset -2px -2px 3px #7352387a;position:relative;transform:rotate(var(--seal-tilt,-7deg));color:#896541}
.wax-seal:before{content:"";position:absolute;inset:7px;border:1px solid #9f774ab0;border-radius:50%;box-shadow:inset 1px 1px 2px #7656315c,0 1px 1px #f3dda7a6}.wax-seal:after{content:"";position:absolute;inset:11px;border:1px dotted #9571495e;border-radius:50%}
.seal-monogram{position:relative;display:flex;align-items:center;justify-content:center;gap:0;width:46px;height:44px;color:#896643;text-shadow:0 1px 1px #f8e5b5;font:italic 34px/1 Georgia,serif;transform:rotate(-8deg)}.seal-monogram i{font-weight:400}.seal-monogram i+i{margin-left:-6px;margin-top:8px;font-size:31px}
.seal-caption{display:flex;align-items:center;gap:12px;background:#fcf5e9eb;padding:6px 12px;color:#694b43;font:400 14px/1.4 var(--sans);border:1px solid #b3936752;box-shadow:0 2px 5px #6247310a;white-space:nowrap}.seal-caption svg{width:16px;height:16px;stroke-width:1.2}
.inner-paper{background:#fcf8f0 url("assets/paper-grain.svg");border:1px solid #bfa67b;box-shadow:0 20px 60px -25px #59403666,0 3px 7px #71523e1a;overflow:hidden}.inner-paper:after{inset:8px;border-color:#b69b6a70}
.inner-garden{position:absolute;right:0;bottom:0;width:270px;height:290px;background:url("assets/garden-engraving-v8.jpg") right bottom/340px 510px no-repeat;opacity:.14;mask-image:linear-gradient(135deg,transparent 12%,#000 83%);-webkit-mask-image:linear-gradient(135deg,transparent 12%,#000 83%)}
.letter-copy h2,.invitation-copy h2{color:#633f45}.letter-copy h2{margin-bottom:15px}.letter-flourish{display:block;width:103px;height:20px;stroke:#ad8b59;stroke-width:.8;margin:0 0 23px}.letter-message{color:#786252}.letter-next{background:#f9f1e4a3;border-color:#b49a75a3;box-shadow:inset 0 0 0 3px #fffcf566}.letter-next:hover{background:#efe2d0;border-color:#9c7f56}
.reply-button{background:linear-gradient(110deg,#815361,#67404c);border-color:#754a53;box-shadow:inset 0 0 0 3px #e7bba00c,0 4px 12px #51313e20}.reply-button:hover{background:linear-gradient(110deg,#724450,#5d3541)}
.invitation-copy h2:after{content:"";display:block;width:45px;height:1px;background:#b1905f;margin-top:19px}
.stage-footer{max-width:540px;margin:0 auto}.stage-back,.direct-invite{color:#6e5149}.page-dots .is-current{background:#8d6269}.page-dots span{background:#9e7e7254}.settings-toggle{color:#896a63}
.reply-dialog{background:#fcf8f0 url("assets/paper-grain.svg")}.reply-dialog:before{content:"";display:block;height:5px;position:absolute;left:0;right:0;top:0;background:linear-gradient(90deg,#a2865c,#e1cca4,#a2865c)}.cinema-ticket{border-color:#bfab8b}.ticket-stub{background:#f5ebdc url("assets/paper-grain.svg");border-bottom:4px solid #92704e}.ticket-guest-label{color:#8e624e}
@media(max-width:760px){
 .cover-copy{padding:calc(var(--card-h)*.325) 29px 0}.cover-copy h1{font-size:22px;margin-bottom:24px;letter-spacing:.2em;padding-left:.2em}.cover-couple{gap:8px;grid-template-columns:minmax(0,1fr) 18px minmax(0,1.3fr)}.couple-name{font-size:35px;letter-spacing:.015em;padding-left:.015em}.couple-person{gap:7px}.couple-english{font-size:20px}.couple-join{font-size:24px;margin-top:9px}.cover-flourish{margin:17px 0 14px;width:100px;height:20px}.cover-date{font-size:20px;letter-spacing:.06em}.cover-recipient{font-size:14px;margin-top:10px}.gate-handle{top:calc(80% - 23px);bottom:auto;padding:0 10px}.gate-leaf:before{inset:4px}.gate-left:before{right:0}.gate-right:before{left:0}
 .letter-copy{padding-top:22px}.letter-copy h2{margin-bottom:10px}.letter-flourish{width:82px;height:15px;margin:0 auto 12px}.letter-message{margin-bottom:20px}.inner-garden{width:200px;height:220px;background-size:270px 405px;opacity:.12}.invitation-copy h2:after{margin:16px auto 0}.invitation-copy h2{margin-bottom:23px}
}
@media(max-width:380px){.cover-copy{padding-inline:26px}.couple-name{font-size:32px}.couple-english{font-size:19px}.cover-copy h1{font-size:21px}.cover-couple{gap:7px}.couple-join{font-size:22px}.seal-caption{font-size:14px}}
@media(max-width:760px) and (max-height:710px){
 .cover-copy{padding-top:calc(var(--card-h)*.31)}.cover-copy h1{margin-bottom:17px;font-size:20px}.couple-name{font-size:32px}.couple-english{font-size:18px}.couple-person{gap:4px}.cover-flourish{margin:12px 0 10px;height:17px}.cover-date{font-size:19px}.cover-recipient{margin-top:7px;font-size:13px}.gate-handle{top:calc(82% - 22px);gap:7px;min-height:91px}.satin-band{top:82%;height:25px}.wax-seal{width:66px;height:65px}.seal-monogram{font-size:30px}.seal-monogram i+i{font-size:28px}.seal-caption{padding:5px 10px;font-size:13px}.letter-copy{padding-top:19px}.letter-copy h2{margin-bottom:8px}.letter-flourish{margin-bottom:10px;height:13px}.letter-message{margin-bottom:16px}.invitation-copy h2:after{margin-top:12px}
}
@media(prefers-reduced-motion:reduce){.wax-seal{transform:none}}
/* Keep numerals legible where the lower botanical branch reaches inward. */
.cover-date{padding:2px 14px;background:linear-gradient(90deg,transparent,#f7f0e5ed 16%,#f7f0e5ed 84%,transparent)}
.cover-couple{background:radial-gradient(ellipse at center,#f7f0e4e0 15%,#f7f0e400 74%)}

/* Edition 09 — a larger invitation, handwritten Chinese and a full floral suite. */
@font-face{font-family:"Invitation Hand";src:url("assets/fonts/wenkai-v10.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Invitation Latin";src:url("assets/fonts/cormorant-v9.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Invitation Latin";src:url("assets/fonts/cormorant-italic-v9.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}
:root{--display:"Invitation Hand","Kaiti SC","STKaiti","Songti SC",serif;--latin:"Invitation Latin",Georgia,serif}
.premiere{padding:24px 24px 8px}.stage-canvas{min-height:clamp(590px,calc(100svh - 84px),760px)}
.cover-copy{padding-top:calc(var(--card-h)*.325);padding-inline:40px}.cover-copy h1{font-family:var(--display);font-size:28px;letter-spacing:.12em;padding-left:.12em;margin-bottom:29px}.cover-couple{max-width:365px;gap:13px;grid-template-columns:minmax(0,1fr) 23px minmax(0,1.3fr)}.couple-name{font-family:var(--display);font-size:49px;line-height:1.22;letter-spacing:.04em;padding-left:.04em;color:#633d45}.couple-english{font:italic 500 29px/1.15 var(--latin);letter-spacing:.03em;color:#856456}.couple-person{gap:7px}.couple-join{font:italic 500 30px/1.3 var(--latin);margin-top:9px}.cover-flourish{margin:24px 0 18px;width:126px}.cover-date{font:500 28px/1.2 var(--latin);letter-spacing:.04em}.cover-date span{font-size:16px}.cover-recipient{margin-top:15px;font-size:16px}
.seal-monogram{font-family:var(--latin);font-weight:500;font-size:41px}.seal-monogram i+i{font-size:38px}.stage-footer{min-height:48px}
.inner-paper{background:#f8f1e4;border-color:#b99c75}.inner-garden{inset:0;width:auto;height:auto;background:url("assets/garden-engraving-v8.jpg") center/100% 100% no-repeat;opacity:1;mask-image:none;-webkit-mask-image:none;z-index:0}
.inner-paper:before{content:"";position:absolute;inset:25px;background:#fcf8f0ed;border:1px solid #a98a5b70;box-shadow:0 0 0 4px #fff9eb90;z-index:1}.inner-paper:after{inset:10px;z-index:2;border-color:#aa855c80;pointer-events:none}
.photo-target{top:34px;left:34px;width:calc(53% - 42px);height:calc(100% - 68px)}.details-photo-target{width:calc(43% - 42px)}
.letter-copy{padding:48px 62px 48px 46px}.letter-copy h2{font-family:var(--display);font-size:43px;line-height:1.5;letter-spacing:.015em;margin-bottom:17px}.letter-message{font-family:var(--display);font-size:20px;line-height:1.9;color:#755c50;margin-bottom:30px}.letter-flourish{width:110px;margin-bottom:21px}.letter-next{background:#fcf8f0ed;border-color:#a7896290}
.invitation-stage .invitation-copy{padding:43px 60px 43px 40px}.invitation-copy h2{font-family:var(--display);font-size:38px;letter-spacing:.02em}.wedding-details .venue-name{font-family:var(--display);font-size:26px;letter-spacing:.015em}.wedding-details .date-number{font:500 37px/1.15 var(--latin)!important;letter-spacing:.02em}.detail-note{color:#725b50}.detail-label{color:#86634f}.wedding-details>div{grid-template-columns:72px minmax(0,1fr);gap:16px}.wedding-details>div+div{border-color:#b5987552}
.ticket-film-name>span,.response-signature>small{font-family:var(--latin);font-weight:500;font-size:23px}.ticket-film-name strong,.ticket-meta strong{font-family:var(--display)}.ticket-meta .ticket-time{display:block;margin-top:6px;font:13px/1.5 var(--sans);letter-spacing:0;color:#765f52}
.reply-heading h2{font-family:var(--display);font-size:31px;letter-spacing:0}.settings-dialog h2,.save-heading{font-family:var(--display)}
@media(max-width:760px){
 .premiere{padding:25px 12px 6px}.invitation-stage{max-width:480px}.stage-canvas{min-height:clamp(520px,calc(100svh - 80px),760px);--letter-photo-height:clamp(246px,39svh,330px);--details-photo-height:clamp(130px,22svh,185px)}
 .cover-copy{padding:calc(var(--card-h)*.325) 30px 0}.cover-copy h1{font-size:25px;margin-bottom:26px}.cover-couple{gap:9px;grid-template-columns:minmax(0,1fr) 18px minmax(0,1.3fr)}.couple-name{font-size:40px;letter-spacing:.025em;padding-left:.025em}.couple-english{font-size:26px;line-height:1.1}.couple-person{gap:6px}.couple-join{font-size:28px;margin-top:6px}.cover-flourish{width:112px;margin:21px 0 15px}.cover-date{font-size:26px}.cover-recipient{font-size:15px;margin-top:11px}
 .inner-paper:before{inset:25px}.inner-paper:after{inset:8px}.photo-target{top:33px;left:33px;width:calc(100% - 66px);height:var(--letter-photo-height)}.details-photo-target{height:var(--details-photo-height)}
 .letter-copy{margin-top:calc(var(--letter-photo-height) + 33px);padding:21px 42px 46px}.letter-copy h2{font-size:32px;line-height:1.45;letter-spacing:.01em;margin-bottom:11px}.letter-flourish{width:93px;height:16px;margin:0 auto 13px}.letter-message{font-size:18px;line-height:1.8;margin-bottom:22px}.letter-next{min-height:52px;font-size:15px;padding:12px 15px}
 .invitation-stage .invitation-copy{margin-top:calc(var(--details-photo-height) + 33px);padding:28px 40px 44px}.invitation-copy h2{font-size:32px;line-height:1.4;margin-bottom:25px}.invitation-copy h2:after{margin:16px auto 0}.wedding-details{gap:21px;margin-bottom:26px}.wedding-details>div{grid-template-columns:60px minmax(0,1fr);gap:13px}.detail-label{font-size:13px;letter-spacing:.045em;margin-top:7px}.wedding-details .date-number{font-size:32px!important}.wedding-details .venue-name{font-size:24px;letter-spacing:0}.detail-note{font-size:14px;line-height:1.7}.wedding-details>div+div{padding-top:20px}.reply-button{min-height:54px;font-size:16px}.stage-footer{min-height:48px;padding:0 7px}.ticket-film-name strong{font-size:32px}.reply-heading h2{font-size:29px}
}
@media(max-width:380px){.cover-copy{padding-inline:26px}.couple-name{font-size:36px}.couple-english{font-size:24px}.cover-copy h1{font-size:24px}.cover-date{font-size:25px}.letter-copy{padding-inline:38px}.invitation-stage .invitation-copy{padding-inline:36px}.wedding-details .date-number{font-size:30px!important}.wedding-details .venue-name{font-size:22px}.wedding-details>div{gap:10px;grid-template-columns:58px minmax(0,1fr)}}
@media(max-width:760px) and (max-height:710px){
 .premiere{padding-top:24px;padding-bottom:4px}.stage-canvas{min-height:520px;--letter-photo-height:203px;--details-photo-height:112px}.cover-copy{padding-top:calc(var(--card-h)*.31)}.cover-copy h1{font-size:23px;margin-bottom:21px}.couple-name{font-size:36px}.couple-english{font-size:23px}.cover-flourish{margin:15px 0 11px;height:18px}.cover-date{font-size:24px}.cover-recipient{font-size:13px;margin-top:8px}.gate-handle{top:calc(82% - 22px)}
 .letter-copy{padding-top:16px;padding-bottom:37px}.letter-copy h2{font-size:29px;line-height:1.35;margin-bottom:9px}.letter-flourish{height:13px;margin-bottom:10px}.letter-message{font-size:17px;line-height:1.7;margin-bottom:15px}.letter-next{min-height:49px}.personal-salutation{font-size:14px;margin-bottom:8px}.invitation-stage .invitation-copy{padding-top:19px;padding-bottom:37px}.invitation-copy h2{font-size:29px;margin-bottom:20px}.invitation-copy h2:after{margin-top:12px}.wedding-details{gap:17px;margin-bottom:21px}.wedding-details>div+div{padding-top:16px}
}
.cover-date,.wedding-details .date-number{font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1,"tnum" 1}
@media(max-width:760px){.petal-field{inset:-20px -10px 0}}
@media(min-width:761px){.inner-garden{background-size:50% 100%;background-position:left top;background-repeat:repeat-x}}

/* Edition 10 — clearer cover hierarchy and a two-step, low-effort reply. */
.premiere{padding-top:16px;padding-bottom:12px}.stage-footer{min-height:44px}
.cover-copy{padding-top:calc(var(--card-h)*.31)}
.cover-copy h1{font-weight:600;font-size:35px;line-height:1.35;letter-spacing:.1em;padding-left:.1em;margin-bottom:30px;color:#614049}
.couple-name{font-size:44px;line-height:1.25}.couple-english{font-size:27px}.cover-couple{max-width:342px}.cover-flourish{margin:23px 0 16px}
.cover-date{position:relative;font:500 36px/1.15 var(--latin);font-variant-numeric:lining-nums tabular-nums;letter-spacing:.035em;color:#624334;padding:8px 23px;background:#f8f1e6;border-block:1px solid #ae8d593b;box-shadow:0 0 13px 6px #f8f1e682;white-space:nowrap}
.cover-recipient{margin-top:13px}
.petal i{background:radial-gradient(ellipse at 29% 22%,#f3d6ca 0%,#d8a18f 48%,#b7796a 100%);box-shadow:inset 1px 1px 2px #ffe7d5b3,1px 2px 3px #663e3c16}
.petal:nth-child(3n) i{background:radial-gradient(ellipse at 30% 25%,#efddbb,#d2b485 70%,#a9875e)}
.petal:nth-child(3n+1) i{background:radial-gradient(ellipse at 25% 25%,#eccbc7,#c88c8e 65%,#aa6f75)}
.reply-form-view,.lodging-view{padding:36px 30px 24px}.reply-heading h2,.lodging-view h2{font-family:var(--display);font-size:29px;font-weight:400;line-height:1.5;letter-spacing:0;margin:12px 0 25px;color:#633f45}.attendance{margin-bottom:23px}.attendance-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.attendance-options label>span{min-height:55px;padding:14px 8px;border-radius:5px;background:#fffcf8}.attendance-options strong{font-size:16px}.attendance-options input:checked+span{background:#eee1df;border-color:#966b74;box-shadow:none}.field{margin-bottom:23px}.field>label{font-size:15px;margin-bottom:9px}.field input{border-radius:5px;min-height:49px}.reply-form-view .reply-button{justify-content:center;min-height:50px;padding:12px 16px;border-radius:5px;box-shadow:none}.demo-note{font-size:12px;margin-top:17px}
.lodging-view{text-align:center}.lodging-view h2{margin-bottom:12px;outline:none}.lodging-context{font:15px/1.9 var(--sans);margin:0 0 23px;color:#856b5b}.lodging-context strong{font-weight:400;color:#694e42}.lodging-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.lodging-options button{min-height:53px;padding:12px;border:1px solid #c5b19a;border-radius:5px;background:#fffaf3;color:#67484d;font:16px/1.5 var(--sans)}.lodging-options button:last-child{grid-column:1/-1;background:transparent;border-color:#ded0bf;color:#796252}.lodging-options button:hover,.lodging-options button[aria-pressed="true"]{background:#eee1df;border-color:#966b74}.lodging-view>.text-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;margin-top:9px;font-size:14px;color:#826c5d}
.reply-thanks{text-align:center;padding:22px 0 11px}.thanks-mark{font:46px/1 Georgia,serif;color:#ae8280}.reply-thanks h2{font:400 28px/1.5 var(--display);letter-spacing:0;margin:16px 0 12px;color:#634149;outline:none}.reply-thanks>p{font:16px/1.8 var(--sans);color:#816656;margin:0;overflow-wrap:anywhere}.reply-thanks #lodging-summary{font-size:14px;margin:19px 0 0;padding-top:16px;border-top:1px solid #d9c7b65c}.reply-result-view>#show-ticket{display:block;margin:5px auto;min-height:44px;font-size:14px}.result-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 20px;margin-top:13px}.result-actions .text-button{font-size:14px;min-height:44px;margin:0}.result-actions>.reply-button{flex-basis:100%;min-height:50px;box-shadow:none}.reply-result-view .cinema-ticket{animation:none}.reply-result-view .ticket-stub{animation:none}.ticket-delivery:has(>.cinema-ticket[hidden]){display:none}
@media(max-width:760px){
 .premiere{padding:14px 12px 10px}.stage-footer{min-height:44px}.cover-copy{padding-top:calc(var(--card-h)*.31)}.cover-copy h1{font-size:31px;margin-bottom:27px;letter-spacing:.1em;padding-left:.1em}.couple-name{font-size:37px}.couple-english{font-size:25px}.couple-join{font-size:27px}.cover-couple{gap:9px}.cover-flourish{margin:21px 0 15px}.cover-date{font-size:33px;letter-spacing:.035em;padding:7px 21px}.cover-recipient{margin-top:12px}
 .reply-form-view,.lodging-view{padding:32px 24px 23px}.reply-heading h2,.lodging-view h2{font-size:27px}.reply-dialog{width:calc(100% - 20px);margin:auto auto max(10px,env(safe-area-inset-bottom));border-radius:12px;max-height:calc(100dvh - 24px)}.reply-result-view{padding:30px 23px 22px}.reply-thanks{padding-top:20px}.reply-thanks h2{font-size:26px}.reply-result-view>#show-ticket{margin-bottom:0}
}
@media(max-width:380px){.cover-copy h1{font-size:29px}.couple-name{font-size:34px}.couple-english{font-size:24px}.cover-date{font-size:31px}.reply-heading h2,.lodging-view h2{font-size:25px}}
@media(max-width:760px) and (max-height:710px){
 .premiere{padding-top:12px;padding-bottom:8px}.cover-copy{padding-top:calc(var(--card-h)*.30)}.cover-copy h1{font-size:28px;line-height:1.3;margin-bottom:19px}.couple-name{font-size:34px}.couple-english{font-size:23px}.couple-person{gap:4px}.cover-flourish{height:17px;margin:15px 0 11px}.cover-date{font-size:30px;padding:5px 20px}.cover-recipient{font-size:13px;line-height:1.45;margin-top:8px}.reply-heading h2,.lodging-view h2{margin-top:8px;margin-bottom:22px}.lodging-view h2{margin-bottom:11px}
}

/* Edition 11 — steady photo composition and a direct reply-to-ticket flow. */
.letter-copy h2,.invitation-copy h2{border:0;box-shadow:none;background:none}
.details-photo-target{width:calc(53% - 42px)}
.invitation-stage .invitation-copy{width:47%;padding-inline:38px 52px}
.invitation-copy h2{font-size:34px}
.wedding-details>div{grid-template-columns:60px minmax(0,1fr);gap:12px}
.wedding-details .venue-name{font-size:24px}
#cinema-ticket:focus{outline:none}
.lodging-summary{font:13px/1.7 var(--sans);color:#866b5b;text-align:center;margin:12px 0 0}
.result-actions{flex-direction:column;gap:3px;margin-top:15px}
.result-actions>.reply-button{flex-basis:auto;justify-content:center}
.result-actions>.text-button,.lodging-view>.text-button{min-height:44px;padding:10px 18px;text-decoration:none}
.result-actions>.text-button:hover,.lodging-view>.text-button:hover{text-decoration:underline;text-underline-offset:4px}
.reply-result-view:not([hidden]) .cinema-ticket,.reply-result-view:not([hidden]) .ticket-stub{animation:none}
.reply-result-view:not([hidden]) .ticket-delivery{animation:ticket-arrive .45s ease-out both}
@keyframes ticket-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.motion-off .ticket-delivery{animation:none!important}
@media(prefers-reduced-motion:reduce){.reply-result-view:not([hidden]) .ticket-delivery{animation:none}}
@media(max-width:760px){
 .stage-canvas{--details-photo-height:var(--letter-photo-height)}
 .details-photo-target{width:calc(100% - 66px);height:var(--letter-photo-height)}
 .invitation-stage .invitation-copy{width:100%;margin-top:calc(var(--letter-photo-height) + 33px);padding:22px 40px 36px;justify-content:center}
 .invitation-copy h2{font-size:29px;line-height:1.4;margin-bottom:17px}
 .invitation-copy h2:after{display:none}
 .wedding-details{gap:12px;margin-bottom:18px}
 .wedding-details>div+div{padding-top:12px}
 .wedding-details .date-number{font-size:31px!important}
 .wedding-details .venue-name{font-size:23px}
 .detail-note{margin-top:2px;line-height:1.6}
 .invitation-copy .reply-button{min-height:49px;padding:11px 16px}
 .reply-status{font-size:13px;margin:-7px 0 10px}
 .reply-result-view{padding:49px 23px 15px}
}
@media(max-width:380px){.invitation-stage .invitation-copy{padding-inline:36px}.wedding-details>div{grid-template-columns:55px minmax(0,1fr);gap:10px}.wedding-details .venue-name{font-size:21px}}
@media(max-width:760px) and (max-height:710px){
 .invitation-stage .invitation-copy{padding-top:17px;padding-bottom:30px}
 .invitation-copy h2{font-size:27px;margin-bottom:12px}
 .wedding-details{gap:9px;margin-bottom:13px}.wedding-details>div+div{padding-top:9px}
 .wedding-details .date-number{font-size:28px!important}.detail-note{font-size:13px}
 .invitation-copy .reply-button{min-height:46px;padding:9px 15px}
}

/* Edition 12 — aligned text starts and one ticket design for display/export. */
@media(max-width:760px){
 .invitation-stage .invitation-copy{justify-content:flex-start;padding-top:21px}
 .ticket-save-view{padding:49px 23px 15px}
}
@media(max-width:760px) and (max-height:710px){.invitation-stage .invitation-copy{padding-top:16px}}
.ticket-save-view .save-heading{display:none}

/* Edition 13 — two-photo dissolve and quieter names on the keepsake. */
#detail-photo{position:absolute;left:0;top:0;width:1200px;height:1800px;max-width:none;transform-origin:0 0;display:block;will-change:transform,opacity;opacity:0}
.ticket-film-name{bottom:13px}
.ticket-film-name strong{font-size:29px;line-height:1.25}
.ticket-film-name>span{margin-top:2px;font-size:21px;line-height:1.2}
.ticket-save-status{width:100%;margin:5px 0;font:14px/1.65 var(--sans);text-align:center;color:#76545b}
@media(max-width:380px){.ticket-film-name strong{font-size:27px}.ticket-film-name>span{font-size:20px}}
