@font-face{font-family:LetterChunfeng;src:url(assets/easter/signature.woff2) format('woff2');font-weight:400;font-display:swap}
.private-hand-sheet{position:relative}.letter-corner{position:absolute;right:-5px;top:100px;width:27px;height:66px;padding:0;border:0;background:#c2aa82;box-shadow:-2px 2px 4px #44311b38;clip-path:polygon(0 0,100% 7%,100% 100%,0 91%);z-index:2;cursor:pointer}.letter-corner span{display:block;position:absolute;inset:1px;background:linear-gradient(115deg,transparent 47%,#9f805a6b 48%,#dfcaa5 51%);border-left:1px solid #e3d3b5}.letter-corner:focus-visible{outline:1px solid #7a5140;outline-offset:-3px}
.letter-overlay{position:fixed;inset:0;z-index:100;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:#31271ff2;color:#59412e;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);animation:letter-room-in .3s ease both}.letter-shell{max-width:640px;margin:auto;padding:0 13px 95px}.letter-nav{height:66px;display:flex;align-items:center;padding-left:8px}.letter-nav button{font:15px/1.6 WenKai,serif;color:#d6c4a9;min-height:44px;padding:10px 0;background:none}.private-letter{position:relative;padding:34px 26px 45px;background:linear-gradient(90deg,#dbc69e40,transparent 4%,transparent 96%,#bfa27725),linear-gradient(#f3e7cded,#eaddc0ed),url(assets/paper.jpg);box-shadow:0 8px 28px #1b140e55,1px 0 2px #f7eddb66;transform-origin:50% 15%;animation:letter-unfold 1s cubic-bezier(.2,.65,.2,1) both}.letter-ink{animation:letter-ink-in 1s ease both}.private-letter p{font:18.5px/1.9 WenKai,serif;letter-spacing:.025em;color:#59412e;writing-mode:horizontal-tb;text-align:left;margin:0 0 14px;overflow-wrap:anywhere}.private-letter .letter-address{margin:0 0 24px}.private-letter .letter-signature{font:21px/1.8 LetterChunfeng,Chunfeng,serif;text-align:right;margin:30px 0 0;letter-spacing:.04em}.letter-fold{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 24.8%,#8e714b09 25%,#fff6e514 25.2%,transparent 25.4%,transparent 59.8%,#8e714b09 60%,transparent 60.3%)}
.letter-sound{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));z-index:102;display:flex;align-items:center;gap:8px;color:#dac6a8}.letter-sound-icon{width:44px;height:44px;padding:11px;background:#47392bef;color:#dbc6a3;border:1px solid #ba9d7044}.letter-sound-icon svg{width:22px;height:22px}.letter-sound-panel{position:absolute;right:0;bottom:54px;width:180px;padding:9px 14px;background:#eadcc0;box-shadow:0 4px 16px #140f0b44}.letter-sound-panel button{display:block;font:15px/1.6 WenKai,serif;min-height:44px;padding:9px 0;color:#72533e;background:none;width:100%;text-align:left}.letter-sound-panel button+button{border-top:1px solid #9c805131}.letter-sound-panel[hidden],.letter-retry[hidden]{display:none}.letter-status,.letter-retry{font:12px/1.5 WenKai,serif}.letter-retry{background:none;min-height:44px;padding:8px 0;color:#e0c8a3}.letter-closing{pointer-events:none;animation:letter-close .24s ease both}@keyframes letter-unfold{0%{opacity:0;transform:translateY(10px) scaleY(.89);clip-path:inset(0 0 55%)}55%{opacity:1;clip-path:inset(0)}100%{transform:none;clip-path:inset(0)}}@keyframes letter-ink-in{0%,35%{opacity:0}100%{opacity:1}}@keyframes letter-room-in{from{opacity:0}to{opacity:1}}@keyframes letter-close{to{opacity:0;transform:translateY(4px)}}@media(max-width:350px){.private-letter{padding:29px 22px 38px}.private-letter p{font-size:18px}.letter-shell{padding-left:10px;padding-right:10px}}@media(prefers-reduced-motion:reduce){.letter-overlay,.private-letter,.letter-ink,.letter-closing{animation:none}}
.letter-corner span{transition:transform 180ms ease}.letter-corner.letter-peeking span{transform:translateX(3px) skewY(-5deg)}.letter-overlay{animation-delay:120ms}@media(prefers-reduced-motion:reduce){.letter-corner span{transition:none}.letter-corner.letter-peeking span{transform:none}.letter-overlay{animation-delay:0s}}
.letter-nav{position:sticky;top:0;z-index:3;background:#31271ff2}
