@font-face{font-family:"Letter Handwriting";src:url("fonts/ma-shan-zheng-letter.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
:root{color-scheme:light;--paper:#fff6f8;--blue:#97627e;--ink:#705467;--muted:#a07d90;--serif:"Songti SC","Noto Serif CJK SC","Source Han Serif SC","STSong","SimSun",serif;--hand:"Letter Handwriting","STXingkai","STKaiti","KaiTi",cursive}
*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth;scroll-padding-bottom:100px}body{margin:0;color:var(--ink);background:radial-gradient(ellipse at 0 0,#f3d4e270,transparent 60%),#fff8fa;font-family:var(--serif);-webkit-tap-highlight-color:transparent}button,summary,a{touch-action:manipulation}button{font:inherit}a{color:inherit}[hidden]{display:none!important}::selection{color:#835271;background:#f0d3e1}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #ad7291;outline-offset:5px}h1:focus,h2:focus,.letter:focus,.scene-panel:focus{outline:none}
.sitebar{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:22px;max-width:1260px;min-height:92px;margin:auto;padding:20px 40px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex-shrink:0;font-size:17px;letter-spacing:.1em;color:#98637e}.brand-seal{display:grid;width:37px;height:42px;place-items:center;border:1px solid #cc9bb1;border-radius:2px;font-family:var(--hand);font-size:28px;color:#a56986}.brand small{display:block;margin-top:6px;color:#a48497;font-size:10px;letter-spacing:.15em}.scene-tabs{display:flex;gap:26px;align-items:center}.scene-tab{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 6px;border:0;border-bottom:1px solid transparent;background:transparent;color:#94728a;font-size:14px;letter-spacing:.13em;cursor:pointer}.scene-tab>span{font-size:13px;color:#bd8ba4}.scene-tab[aria-selected="true"]{color:#925675;border-bottom-color:#bb83a0}.site-date{color:#aa879b;font-size:10px;letter-spacing:.14em;white-space:nowrap}.scene-main{max-width:1260px;margin:0 auto}.scene-panel{position:relative;animation:scene-in .4s ease both}.eyebrow{margin:0 0 19px;color:#a3748e;font-size:11px;line-height:1.9;letter-spacing:.18em}
/* A single invitation, with separate spaces for the words and the painting. */
.scene-home{display:grid;grid-template-columns:1fr 1fr;grid-template-areas:"heading heading" "copy art" "foot foot";align-items:center;gap:26px 20px;max-width:1110px;min-height:640px;margin:22px auto 35px;padding:26px 44px 24px;border:1px solid #e2c4d2;background:#fff9fb;box-shadow:0 18px 60px -45px #a16788;isolation:isolate}.scene-home::before{content:"";position:absolute;inset:7px;border:1px solid #eddae3;pointer-events:none;z-index:-1}.invitation-heading{grid-area:heading;display:flex;justify-content:space-between;gap:15px;padding-bottom:17px;border-bottom:1px solid #e8d0dc;color:#a77b91;font-size:11px;letter-spacing:.18em}.home-copy{grid-area:copy;padding:16px 0 16px 25px}.home-copy .eyebrow{margin-bottom:22px;font-size:14px;letter-spacing:.25em}.home-copy h1{margin:0;color:#955978;font-size:63px;line-height:1.5;font-weight:400;letter-spacing:.13em;white-space:nowrap}.home-wish{margin:18px 0 0;color:#9a7489;font-size:14px;line-height:2.2;letter-spacing:.09em}.home-actions{display:flex;align-items:flex-start;flex-direction:column;gap:13px;margin-top:33px}.primary-button,.ink-button{display:inline-flex;align-items:center;justify-content:center;gap:25px;min-height:47px;padding:12px 23px;border:1px solid #aa7290;border-radius:5px;background:#a05f85;color:#fff8fc;font-size:13px;line-height:1.7;letter-spacing:.08em;text-decoration:none;cursor:pointer}.home-read{background:#9b5f7e;box-shadow:0 8px 20px -12px #925071}.home-draw{min-height:44px;padding:7px 3px;border:0;background:transparent;color:#9b6d85;font-size:12px;letter-spacing:.07em;cursor:pointer}.home-draw span{margin-left:17px}.home-illustration{grid-area:art;position:relative;margin:0;min-width:0}.home-art{display:block;width:100%;height:350px;object-fit:cover;object-position:78% center;border-radius:48% 48% 3px 3px;border:1px solid #efdae4}.home-illustration figcaption{margin-top:17px;text-align:center;color:#a27891;font-size:11px;letter-spacing:.18em}.invitation-foot{grid-area:foot;display:flex;align-items:center;justify-content:center;gap:18px;padding-top:18px;border-top:1px solid #e8d0dc}.invitation-foot>span{color:#c48ca7;font-size:27px}.invitation-foot p{margin:0;color:#ab8499;font-size:11px;line-height:1.9;letter-spacing:.08em}
/* The letter grows with its content. Only the document scrolls. */
.scene-letter{display:grid;grid-template-columns:260px minmax(0,660px);align-items:start;gap:55px;max-width:1060px;margin:30px auto 45px;padding:0 32px}.scene-intro{padding:28px 0 0}.scene-intro h2{margin:0 0 25px;color:#94617e;font-size:31px;font-weight:400;line-height:1.85;letter-spacing:.05em}.scene-intro>p:not(.eyebrow){margin:0;color:#a38096;font-size:13px;line-height:2.2;letter-spacing:.05em}.scene-letter .scene-intro{position:sticky;top:30px}.intro-seal{display:grid;width:26px;height:31px;margin-top:30px;place-items:center;border:1px solid #cda3b7;color:#a87891;font-size:13px}.letter-sheet{position:relative;min-width:0;border:1px solid #e5cbd8;background:#fffcfd;box-shadow:0 16px 45px -35px #a66f8e,5px 5px 0 -1px #f8eaf1,5px 5px 0 #e9d3df}.letter-sheet::before{content:"";position:absolute;top:0;left:40px;width:48px;height:2px;background:#bd86a2}.letter{padding:38px 42px 32px;font-size:17px;line-height:2.2;letter-spacing:.025em;overflow-wrap:break-word}.letter-heading-row{display:flex;justify-content:space-between;gap:12px;margin:0 0 30px;padding-bottom:20px;border-bottom:1px solid #ecd9e3;color:#a68197;font-size:11px;letter-spacing:.12em}.letter p{margin:0 0 1.4em}.letter .salutation{color:#a76a88;font-family:var(--hand);font-size:28px}.letter .wish{margin:1.6em 0 1.2em;padding-top:25px;border-top:1px solid #ecd9e3;color:#a56c8a;font-family:var(--hand);font-size:26px;line-height:1.8}.letter .signoff{color:#9e7b90;font-size:13px;line-height:2.2;text-align:right}.signoff span{display:block;margin-top:11px;color:#a36b88;font-family:var(--hand);font-size:23px}.close-wrap{text-align:center;margin-top:28px}.letter-close{min-height:48px;padding:10px 16px;border:1px solid #dec0d0;border-radius:4px;background:#fcf1f6;color:#9b6580;font-size:13px;letter-spacing:.06em;cursor:pointer}.letter-close span{margin-left:14px}
.scene-card{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:70px;max-width:1000px;min-height:calc(100svh - 150px);margin:auto;padding:25px 38px 40px}.memory-card-anchor{display:block;max-width:360px;margin:auto;text-decoration:none}.card-preview-frame{padding:10px;border:1px solid #e3bfd0;background:#fffafd;box-shadow:0 18px 45px -23px #c28ba7;transform:rotate(-3deg);transition:transform .4s}.keepsake-image{display:block;width:100%;height:auto}.card-tap-hint{display:block;margin-top:22px;color:#a47a92;font-size:11px;letter-spacing:.1em;text-align:center}.memory-copy .primary-button{margin:28px 0}.memory-copy .memory-note{color:#a78599;font-size:11px}.site-footnote{margin:10px 0 23px;text-align:center;color:#b491a4;font-size:10px;letter-spacing:.12em}
.dialog-close{display:grid;width:44px;height:44px;flex-shrink:0;place-items:center;border:0;border-radius:50%;background:transparent;color:#a77591;font:24px Arial,sans-serif;cursor:pointer}.card-dialog{width:calc(100% - 28px);max-width:460px;max-height:92vh;max-height:92svh;padding:0;overflow:hidden;border:1px solid #e1bfd0;border-radius:12px;background:#fff7fa;color:#9b6e88;box-shadow:0 20px 65px #7d4b6a33}.card-dialog[open]{display:flex;flex-direction:column}.card-dialog::backdrop{background:#79556b66;backdrop-filter:blur(5px)}.card-dialog-heading{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px 8px 19px;border-bottom:1px solid #efdae5}.card-dialog h2{margin:0;color:#a57490;font-size:16px;font-weight:400}.card-scroll{min-height:0;overflow:auto;overscroll-behavior:contain;padding:15px 17px 0}.card-preview{display:block;width:100%;height:auto}.card-note{margin:13px 0;color:#a98097;font-size:11px;text-align:center;line-height:1.8}.card-actions{display:flex;flex-shrink:0;justify-content:center;padding:12px 18px max(16px,env(safe-area-inset-bottom));border-top:1px solid #efdae5}.card-actions a{min-width:180px;text-decoration:none}.noscript-note{padding:20px;text-align:center;color:#ab7e97;font-size:12px}body.dialog-open{overflow:hidden}
@keyframes scene-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:1100px) and (min-width:701px){.site-date{display:none}.scene-home{margin:15px 28px 28px;padding:26px 34px;min-height:590px}.home-copy{padding-left:0}.home-copy h1{font-size:48px}.home-wish{font-size:12px}.home-art{height:300px}.scene-letter{grid-template-columns:220px minmax(0,1fr);gap:28px}.scene-intro h2{font-size:27px}.letter{padding:30px}.scene-card{gap:40px}}
@media(max-width:700px){.sitebar{min-height:72px;padding:15px 21px}.brand{font-size:14px;gap:10px}.brand-seal{width:29px;height:33px;font-size:24px}.brand small{font-size:9px;margin-top:4px}.site-date{font-size:9px;letter-spacing:0}.scene-tabs{position:fixed;z-index:30;bottom:0;left:0;right:0;gap:0;justify-content:space-around;padding:4px 9px max(7px,env(safe-area-inset-bottom));border-top:1px solid #e7cbd9;background:#fff8faf2;backdrop-filter:blur(16px)}.scene-tab{flex-direction:column;justify-content:center;gap:5px;width:25%;min-height:57px;padding:7px 2px;border-bottom:0;border-radius:9px;font-size:11px;letter-spacing:.12em}.scene-tab>span{font-size:17px;line-height:1.2}.scene-tab[aria-selected="true"]{background:#f2dce780;border:0}.scene-main{padding-bottom:90px}.scene-home{grid-template-columns:1fr;grid-template-areas:"heading" "art" "copy" "foot";gap:18px;min-height:0;margin:4px 18px 10px;padding:22px 22px 21px}.scene-home::before{inset:5px}.invitation-heading{padding-bottom:13px;font-size:9px;letter-spacing:.1em}.home-illustration{width:100%;max-width:310px;margin:0 auto}.home-art{height:200px;object-position:77% center;border-radius:46% 46% 2px 2px}.home-illustration figcaption{display:none}.home-copy{text-align:center;padding:0}.home-copy .eyebrow{margin:0 0 8px;font-size:11px;letter-spacing:.2em}.home-copy h1{font-size:43px;line-height:1.5;letter-spacing:.16em;text-indent:.16em}.home-wish{margin:9px 0 0;font-size:12px;letter-spacing:.04em}.home-actions{align-items:center;gap:4px;margin-top:20px}.home-read{min-height:46px;min-width:205px;font-size:12px}.home-draw{min-height:44px;font-size:11px}.invitation-foot{padding-top:13px;gap:12px}.invitation-foot p{font-size:9px}.invitation-foot>span{font-size:23px}.scene-letter{display:block;margin:9px auto 25px;padding:0 20px}.scene-letter .scene-intro{position:static;padding:5px 4px 21px}.scene-intro .eyebrow{font-size:10px;margin-bottom:8px}.scene-letter .scene-intro h2{font-size:25px;line-height:1.7;margin:0}.scene-letter .scene-intro h2 br{display:none}.scene-letter .scene-intro>p:not(.eyebrow),.intro-seal{display:none}.letter-sheet{width:100%}.letter{padding:28px 25px;font-size:16px;line-height:2.15}.letter-sheet::before{left:26px}.letter-heading-row{font-size:10px;margin-bottom:23px;padding-bottom:17px}.letter .wish{font-size:24px}.letter .signoff{font-size:12px}.letter-close{font-size:12px}.scene-card{display:flex;flex-direction:column;gap:25px;min-height:0;padding:17px 24px 30px}.memory-copy{order:-1;padding:0;width:100%}.memory-copy h2{font-size:27px;line-height:1.65;margin:0}.memory-copy>p:not(.eyebrow){display:none}.memory-copy .primary-button{margin:18px 0 0;min-height:44px;font-size:12px}.memory-card-anchor{width:260px;max-width:90%;margin:auto}.card-preview-frame{padding:8px;transform:rotate(-2deg)}.card-tap-hint{font-size:10px;margin-top:19px}.site-footnote{display:none}}
@media(max-width:350px){.sitebar{padding-right:17px;padding-left:17px}.site-date{font-size:8px}.brand{font-size:13px}.scene-home{margin-right:13px;margin-left:13px;padding:20px}.home-copy h1{font-size:36px}.home-art{height:170px}.home-wish{font-size:11px}.scene-letter{padding-right:16px;padding-left:16px}.scene-letter .scene-intro h2{font-size:22px}.letter{padding:25px 21px}.letter .wish{font-size:23px}}
@media(max-width:700px) and (max-height:740px){.scene-home{gap:13px;padding-top:18px;padding-bottom:17px}.home-art{height:155px}.home-copy h1{font-size:38px}.home-actions{margin-top:14px}.invitation-foot{padding-top:10px}}
@media(hover:hover){.scene-tab:hover,.home-draw:hover{color:#8d4e70}.card-link:hover .card-preview-frame{transform:rotate(0)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
@media(max-width:700px){.scene-letter .scene-intro h2 br{display:block}}
