@font-face{font-family:Caveat;src:url(/assets/caveat.ttf) format("truetype");font-weight:600;font-display:swap}@font-face{font-family:Crimson;src:url(/assets/crimson-pro.ttf) format("truetype");font-weight:400;font-display:swap}:root{--desk:#eeede8;--paper:#f6f1e4;--ink:#373a30;--muted:#8c8b7e;--hand:Caveat,"LXGW WenKai","Kaiti SC",KaiTi,cursive;--body:Crimson,"Noto Serif SC","Songti SC",SimSun,serif;--ease:cubic-bezier(0.22,1,0.36,1)}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--desk);color:var(--ink);min-width:280px;min-height:100svh;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 48% 42%,#f6f5f0 0,transparent 68%)}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}[tabindex]:not(dialog):focus-visible,a:focus-visible,button:focus-visible{outline:2px solid #7d8c72;outline-offset:7px}[data-input-modality=pointer] :is(button,a,[tabindex]):focus{outline:none}a{color:inherit;text-decoration:none}button{cursor:pointer}.svg-definitions{position:absolute;width:0;height:0;overflow:hidden}.site-footer,.site-header{display:flex;align-items:center;justify-content:space-between;position:absolute;left:0;width:100%;padding:0 48px;z-index:2}.site-header{top:35px}.wordmark{display:flex;gap:10px;align-items:center;font:600 28px var(--hand);letter-spacing:-.9px}.wordmark svg{stroke:#686d5b;stroke-width:1.2;transform:rotate(-7deg)}.wordmark-dot{margin-left:-10px;color:#a47e58}.language-button{border:0;background:none;padding:10px 2px;font:12px system-ui;color:#757969;letter-spacing:.04em}.language-button span{margin-left:8px}.desk{position:relative;min-height:100svh;justify-content:center;flex-direction:column;padding:155px 24px 135px;overflow:hidden}.desk,.intro{display:flex;align-items:center}.intro{gap:15px;font:9px system-ui;letter-spacing:2.3px;color:#8b8e7e;margin-bottom:77px}.small-rule{width:24px;height:1px;background:#cacbbf}.envelope-scene{position:relative;width:min(490px,calc(100vw - 64px));aspect-ratio:1.61;perspective:1500px}.envelope-scene.is-unavailable{opacity:.5;filter:grayscale(.5)}.envelope{position:relative;display:block;width:100%;height:100%;border:0;padding:0;background:none;text-align:left;transform:rotate(-3deg);transition:transform .8s var(--ease),opacity .6s;isolation:isolate;outline-offset:16px!important}.envelope-shadow{position:absolute;inset:20% 4% -7%;background:#63594722;filter:blur(18px);transform:rotate(-3deg) scaleY(.87);transition:all .8s var(--ease);border-radius:15%}.envelope-back{inset:-8px 0 0;background:linear-gradient(100deg,#dbd7c6,#e7e3d4 70%,#d3d0c0);box-shadow:0 0 1px #a6a18a}.envelope-back,.envelope-front{position:absolute;border-radius:1px}.envelope-front{inset:16px 0 0;background:linear-gradient(125deg,#faf6eb,#f2eddf 68%,#ede7d8);box-shadow:inset 0 0 1px 1px #fff9,0 3px 4px #51473616,0 15px 25px -15px #51473660;overflow:hidden}.paper-texture{position:absolute;inset:0;pointer-events:none;opacity:.26;background:#b5a78a22 url(/assets/paper-grain.png) repeat;mix-blend-mode:multiply}.tear-line{position:absolute;top:13px;left:0;right:0;border-top:1px dashed #cfc8b555;transform:rotate(-.3deg)}.address{position:absolute;left:12%;bottom:18%;display:flex;flex-direction:column;gap:9px;transform:rotate(-1.5deg)}.recipient{font:600 clamp(29px,3.3vw,39px) /1 var(--hand);letter-spacing:-1.2px}.date{font:600 clamp(17px,2vw,22px) /1.2 var(--hand);color:#737263;letter-spacing:.2px}.envelope-note{position:absolute;bottom:15px;right:22px;font:600 12px var(--hand);color:#a5a18e;opacity:.65}.stamp-group{position:absolute;right:6%;top:9%;width:35%;height:50%}.stamp{position:absolute;display:block;background:#f9f6ed;padding:3px;filter:drop-shadow(0 1px 1px #73665028);-webkit-mask:linear-gradient(#000 0 0) content-box,radial-gradient(circle at 3px 3px,transparent 1.3px,#000 1.6px) -3px -3px/6px 6px;mask:linear-gradient(#000 0 0) content-box,radial-gradient(circle at 3px 3px,transparent 1.3px,#000 1.6px) -3px -3px/6px 6px}.stamp svg{width:100%;display:block}.stamp svg text{text-anchor:middle;font:4.6px Georgia;letter-spacing:.4px;fill:#4c6256}.stamp-bakery{width:45%;left:2%;top:0;transform:rotate(-7deg)}.stamp-umbrella{width:43%;right:0;top:4%;transform:rotate(8deg)}.stamp-flower{width:30%;left:40%;top:52%;transform:rotate(12deg)}.postmark{position:absolute;width:120%;left:-27%;top:28%;color:#737869;opacity:.58;transform:rotate(-15deg)}.tear-strip{--strip-height:32px;position:absolute;left:0;top:1px;width:100%;height:var(--strip-height);pointer-events:none}.tear-stationary{position:absolute;inset:0;background:linear-gradient(#faf7eb,#eee9db);box-shadow:0 1px 1px #b1a79020;clip-path:inset(0 0 0 0)}.tear-stationary:after{content:"";position:absolute;bottom:-1px;width:100%;height:3px;background:linear-gradient(135deg,transparent 50%,#e8e1d0 0) 0 0 /6px 3px}.peel-ribbon{position:absolute;inset:0;width:100%;height:100%;overflow:visible;opacity:0;filter:drop-shadow(2px 5px 3px #695c3f24);will-change:transform,opacity}.strip-label{position:absolute;right:17px;top:10px;font:7px system-ui;letter-spacing:1.6px;color:#9d9a87;transition:opacity .3s}.strip-label span{margin-left:9px}.letter-peek{position:absolute;left:4%;top:1%;width:92%;height:85%;background:#faf6eb;transform:translateY(0);box-shadow:0 0 3px #6c62582b;display:flex;flex-direction:column;gap:20px;padding:28px;font:600 19px var(--hand)}.peek-lines{height:80px;background:repeating-linear-gradient(transparent 0 14px,#b8b29c33 15px 16px)}.invitation{position:relative;margin-top:40px;font:600 22px var(--hand);color:#858775;transform:rotate(-3deg);transition:opacity .3s}.invitation-arrow{position:absolute;width:37px;height:38px;top:-28px;right:-40px;transform:rotate(7deg);stroke:#91927d;stroke-width:1.3;fill:none}.status{position:absolute;top:calc(50% + 215px);font:600 22px var(--hand);color:#858775}.site-footer{bottom:29px;font:11px var(--body);letter-spacing:.4px;color:#949687}.footer-center{font:8px system-ui;letter-spacing:1.9px}.site-footer a{border-bottom:1px solid transparent;transition:border-color .2s}.site-footer a:hover{border-color:#a7aa97}.site-footer a span{margin-left:5px}@media (hover:hover){.desk[data-state=sealed] .envelope:hover{transform:translateY(-9px) rotate(-1deg)}.desk[data-state=sealed] .envelope-scene:hover .envelope-shadow{transform:translateY(4px) rotate(-1deg) scale(.96);filter:blur(22px)}.envelope:hover .strip-label{color:#737b62}.close-button:hover{transform:rotate(90deg);background:#e5e1d4}.return-button:hover{color:#65784d}}.desk[data-state=opening] .envelope{will-change:transform,opacity;transition:none}.desk[data-state=opening] .strip-label{opacity:0}.desk[data-state=opening] .letter-peek{will-change:transform}.desk:not([data-state=sealed]) .invitation{opacity:0}.desk[data-state=reading] .envelope,.desk[data-state=reading] .envelope-shadow{opacity:0;pointer-events:none}.desk[data-state=closing] .envelope{opacity:1;transition:opacity .4s ease}.desk[data-state=opening] .envelope-shadow{opacity:.3}.letter-peek>*{visibility:hidden}.letter-peek:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#fff7,transparent 45%,#bfb39815 99%,#fff8);border:1px solid #e3dccb70}dialog{outline:none;border:0;padding:0;background:transparent;color:var(--ink);overflow:visible;width:min(610px,calc(100vw - 36px));max-width:none;max-height:none;margin:auto}dialog::backdrop{background:#eeede8c9;transition:background .6s ease}.letter-shell{position:relative}.letter-shell:before{content:"";position:absolute;inset:8px 4px 51px -4px;background:#f6f1e7;transform:rotate(-1deg);border:1px solid #dcd7c966;z-index:-1}.letter-scroll{height:min(720px,76svh);max-height:85svh;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#c9c3b0 transparent;background:var(--paper);box-shadow:0 1px 3px #60564413,0 15px 22px #625e4b19}.letter-paper{position:relative;padding:53px 52px 28px;background:linear-gradient(175deg,#faf7ee,#f4efdf);min-height:100%;display:flex;flex-direction:column;overflow:hidden}.letter-paper:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,transparent calc(50% - 16px),#c6bca80b calc(50% - 3px),#ab9d821c 50%,#fff9 calc(50% + 1px),transparent calc(50% + 12px)),linear-gradient(90deg,transparent 49.7%,#c7bfa013 50%,#fff4 50.2%,transparent 50.6%);background-size:100% 600px}.letter-bottom,.letter-content{position:relative;z-index:1}.letter-content .letter-meta{font:8px system-ui;letter-spacing:2px;color:#979580;margin:0 0 29px}.letter-content h1,.letter-content h2{font:600 32px/1.1 var(--hand);margin:0 0 25px;letter-spacing:-.5px}.letter-content h2{font-size:29px;margin:33px 0 20px}.letter-content p{font:400 17px/1.58 var(--body);margin:0 0 16px}.letter-content .salutation{margin-bottom:18px}.letter-content mark{background:linear-gradient(transparent 44%,#d8b99050 0,#d8b99050 91%,transparent 0);color:inherit;padding:0 1px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.letter-content .signature{font:600 29px var(--hand);margin:7px 0 20px;transform:rotate(-4deg);transform-origin:left}.close-button{position:absolute;right:-15px;top:-17px;width:36px;height:36px;border:1px solid #a7a693;border-radius:50%;background:#eeede8;display:grid;place-items:center;z-index:3;transition:transform .35s,background .3s}.close-button svg{stroke:#6f7363;stroke-width:1.4;fill:none}.letter-bottom{margin-top:auto;display:flex;align-items:center;gap:9px;border-top:1px solid #b0a78f30;padding-top:19px;color:#90917c;font:600 16px var(--hand)}.return-button{margin-left:auto;padding:8px 0 8px 12px;font:600 18px var(--hand);background:transparent;border:0;transform:rotate(-2deg)}.return-button>span:last-child{font-size:26px;margin-left:9px}.fold-stage{position:absolute;top:0;left:0;width:100%;pointer-events:none;display:none;perspective:1800px;z-index:2}.fold-sheet{height:100%;position:relative;transform-origin:50% 50%}.fold-panel,.fold-sheet{width:100%;transform-style:preserve-3d}.fold-panel{position:absolute;left:0;height:calc(100% / 3);backface-visibility:visible}.fold-top{top:0;transform-origin:50% 100%;z-index:4}.fold-middle{top:calc(100% / 3);z-index:1}.fold-bottom{top:calc(200% / 3);transform-origin:50% 0;z-index:3}.fold-face{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:linear-gradient(175deg,#faf7ee,#f4efdf);box-shadow:inset 0 0 0 1px #c7baa320,0 2px 4px #62533710}.fold-face:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#fff5,transparent 8%,transparent 91%,#b9a98a19)}.fold-front{transform:translateZ(.1px)}.fold-back{transform:rotateX(180deg);background:linear-gradient(175deg,#f3eddc,#faf6e9 55%,#e8e0cd)}.fold-back:before{content:"";position:absolute;inset:0;opacity:.15;background:#c4b79d30 url(/assets/paper-grain.png) repeat}dialog:not([data-phase=reading]) .close-button,dialog:not([data-phase=reading]) .letter-scroll,dialog:not([data-phase=reading]) .page-navigation{visibility:hidden}.page-navigation{height:56px;display:flex;align-items:center;justify-content:center;gap:22px;color:#808572}.page-button{display:grid;place-items:center;width:36px;height:36px;border:1px solid #a5a895;border-radius:50%;background:#efeee7;font:21px var(--body);transition:opacity .2s,background .2s}.page-button:not(:disabled):hover{background:#e2e3d7}.page-button:disabled{opacity:.3;cursor:default}#page-status{font:11px var(--body);letter-spacing:2px;min-width:53px;text-align:center}.page-turn{position:absolute;top:0;left:0;width:100%;perspective:1800px;z-index:5;pointer-events:none}.turn-sheet{width:100%;height:100%;overflow:hidden;background:var(--paper);box-shadow:8px 8px 25px #665c4826;will-change:transform,opacity}dialog:not([data-phase=reading]) .letter-shell:before{visibility:hidden}dialog[data-phase=folding] .fold-stage,dialog[data-phase=returning] .fold-stage,dialog[data-phase=unfolding] .fold-stage{display:block}dialog[data-phase=extracting]::backdrop,dialog[data-phase=inserting]::backdrop,dialog[data-phase=returning]::backdrop{background:#eeede800}html[lang=zh-CN] .letter-content p:not(.letter-meta){font-size:15px;line-height:1.95}html[lang=zh-CN] .letter-content h1{font-size:28px}html[lang=zh-CN] .intro{letter-spacing:3px}html[lang=zh-CN] .invitation{font-size:19px}html[lang=zh-CN] .recipient{letter-spacing:3px}@media (min-width:1500px){.envelope-scene{width:530px}.intro{margin-bottom:90px}.invitation{margin-top:49px}}@media (max-width:600px){.site-header{top:22px;padding:0 25px}.wordmark{font-size:26px}.site-footer{padding:0 24px;bottom:24px;font-size:10px}.footer-center{display:none}.desk{padding:130px 24px 120px}.intro{font-size:7px;letter-spacing:1.5px;gap:9px;margin-bottom:66px}.small-rule{width:13px}.envelope-scene{width:calc(100vw - 60px)}.invitation{font-size:19px;margin-top:34px}.invitation-arrow{right:-23px;top:-28px;width:28px;transform:rotate(-10deg)}.envelope-note{font-size:9px;right:16px}.tear-strip{--strip-height:26px}.strip-label{font-size:5px;top:9px;right:10px}.envelope-front{top:13px}.address{gap:8px}.letter-paper{padding:39px 27px 23px}.letter-content h1{font-size:29px}.letter-content h2{font-size:27px}.letter-content p{font-size:17px}.letter-content .letter-meta{font-size:7px}.letter-scroll{max-height:83svh}.close-button{right:-5px;top:-17px}.letter-bottom{font-size:14px}.return-button{font-size:16px}.status{top:calc(50% + 160px)}}@media (max-height:650px) and (min-width:601px){.desk{padding-top:115px;padding-bottom:90px}.intro{margin-bottom:35px}.envelope-scene{width:390px}.invitation{margin-top:22px}.site-header{top:22px}.site-footer{bottom:19px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important;scroll-behavior:auto!important}dialog::backdrop{backdrop-filter:none}}