.pure-writer-body{margin:0;min-height:100svh;overflow:hidden;background:#020b18}
.pure-picker,.pure-compose,.pure-sent{position:relative;width:100%;height:100svh;overflow:hidden;background:#020b18}
.pure-picker{padding:14px 12px 20px;box-sizing:border-box}
.pure-picker>img,.pure-sent>img{width:100%;height:100%;display:block;object-fit:contain;object-position:center;user-select:none;-webkit-user-drag:none}
.pure-picker-grid{position:absolute;inset:14px 12px 20px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;padding:4.5% 3.8% 5.5%;gap:1.5% 2.5%}
.pure-picker-grid button{border:0;border-radius:4%;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pure-compose{overflow-y:auto;display:grid;place-items:center;padding:12px 0;box-sizing:border-box}
.pure-sheet{position:relative;width:min(calc(100vw - 16px),calc((100svh - 24px) * .694));aspect-ratio:500/720;overflow:hidden;background:#020b18}
.pure-sheet>img{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain;user-select:none;-webkit-user-drag:none}
.pure-sheet textarea{position:absolute;z-index:2;left:12%;top:23%;width:76%;height:59%;box-sizing:border-box;padding:0;border:0;outline:0;resize:none;color:#4c392c;background:transparent;font-family:"LXGW WenKai","STKaiti","KaiTi",serif;font-size:clamp(16px,4.6vw,24px);line-height:1.85;letter-spacing:.06em;-webkit-text-fill-color:currentColor}
.pure-sheet-star textarea{left:14%;top:22%;width:72%;height:53%;color:#f2dfad;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.pure-address{position:absolute;z-index:3;padding:2px;border:0;color:#543b2d;background:transparent;font-family:"STKaiti","KaiTi","LXGW WenKai",serif;font-size:clamp(13px,3.6vw,18px);letter-spacing:.04em;line-height:1.2;cursor:pointer;white-space:nowrap}
.pure-sheet-star .pure-address{color:#f5dc99;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.pure-to{left:19%;top:16%}.pure-from{right:20%;bottom:35%}
.pure-sheet-moon .pure-to{left:20%;top:17%}.pure-sheet-moon .pure-from{right:24%;bottom:37%}
.pure-sheet-rose .pure-to{left:20%;top:18%}.pure-sheet-rose .pure-from{right:25%;bottom:42%}
.pure-sheet-wheat .pure-to{left:20%;top:16%}.pure-sheet-wheat .pure-from{right:24%;bottom:36%}
.pure-sheet-star .pure-to{left:20%;top:18%}.pure-sheet-star .pure-from{right:24%;bottom:38%}
.pure-wax-seal{position:absolute;z-index:5;left:50%;bottom:1.2%;width:clamp(72px,21vw,104px);aspect-ratio:1;padding:0;border:0;background:transparent;cursor:pointer;transform:translateX(-50%);filter:drop-shadow(0 6px 7px rgba(37,7,10,.45))}
.pure-wax-seal img{width:100%;height:100%;display:block;object-fit:contain;user-select:none;-webkit-user-drag:none}.pure-wax-seal:disabled{opacity:.72}
.pure-attachment-tools{position:absolute;z-index:6;left:8%;right:8%;bottom:22px;display:flex;justify-content:space-between;pointer-events:none}.pure-attachment-button{pointer-events:auto;min-width:54px;padding:7px 10px;border:1px solid rgba(112,56,42,.45);border-radius:999px;color:#633d32;background:rgba(255,238,199,.82);box-shadow:0 2px 8px rgba(41,17,12,.18);font-family:"STKaiti","KaiTi",serif;font-size:13px;text-align:center;cursor:pointer}.pure-sheet-star .pure-attachment-button{color:#f5dc99;background:rgba(5,19,46,.7);border-color:rgba(245,220,153,.45)}.pure-attachment-button span{margin-right:3px}.pure-attachment-preview{position:absolute;z-index:5;left:8%;right:8%;bottom:13%;display:flex;align-items:flex-end;justify-content:center;flex-wrap:wrap;gap:8px}.pure-photo-card{position:relative;display:block;width:clamp(92px,27vw,132px);height:clamp(72px,21vw,104px);border:2px solid rgba(255,241,210,.9);border-radius:10px;overflow:visible;background:#f6e8c7;box-shadow:0 5px 15px rgba(42,22,15,.3);transform:rotate(-1deg)}.pure-photo-card:nth-child(even){transform:rotate(1.2deg)}.pure-photo-card img{width:100%;height:100%;display:block;object-fit:cover;border-radius:8px;cursor:zoom-in}.pure-attachment-remove{position:absolute;z-index:3;right:-8px;top:-8px;width:24px;height:24px;padding:0;border:1px solid rgba(255,224,167,.7);border-radius:50%;color:#fff3d1;background:#7b2730;box-shadow:0 2px 6px rgba(35,8,10,.35);font:18px/21px sans-serif;text-align:center}.pure-record-player{position:relative;display:block;width:104px;height:104px}.pure-record-button{width:104px;height:104px;padding:7px;border:2px solid #a85a35;border-radius:20px;color:#f8d99a;background:linear-gradient(145deg,#7b2b25,#43151a);box-shadow:0 6px 14px rgba(37,7,10,.42),inset 0 0 0 2px rgba(242,179,93,.18);font-family:"STKaiti","KaiTi",serif}.pure-vinyl{display:grid;place-items:center;width:66px;height:66px;margin:0 auto 2px;border-radius:50%;color:#e9ba65;background:repeating-radial-gradient(circle,#1c1720 0 4px,#32212c 5px 7px);box-shadow:inset 0 0 0 3px #2b1822,0 1px 3px rgba(0,0,0,.4);font-size:20px}.pure-record-button small{display:block;font-size:12px;line-height:1}.pure-record-player.is-playing .pure-vinyl{animation:pure-vinyl-spin 2.8s linear infinite}.pure-music-remove{right:-7px;top:-7px}@keyframes pure-vinyl-spin{to{transform:rotate(360deg)}}.pure-sheet-star .pure-photo-card{border-color:rgba(245,220,153,.75);background:#13284b}.pure-sheet-star .pure-record-button{border-color:#d5a85d}
.pure-write-error{position:fixed;z-index:10;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);padding:9px 15px;border:1px solid rgba(245,200,115,.5);border-radius:999px;color:#ffe1a0;background:rgba(78,19,27,.94);font-family:"STKaiti","KaiTi",serif;white-space:nowrap}
.pure-sent-back,.pure-sent-again{position:absolute;z-index:2;bottom:4.2%;height:8.5%;border:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}.pure-sent-back{left:15%;width:30%}.pure-sent-again{right:13%;width:29%}
@media (min-aspect-ratio:2/3){.pure-picker>img,.pure-sent>img{object-fit:contain}}
/* v78: editable title stays inside the clear writing area. */
.pure-letter-title{position:absolute;z-index:4;top:15.5%;left:18%;width:64%;border:0;border-bottom:1px solid rgba(92,60,34,.28);outline:0;background:transparent;color:#5b412e;text-align:center;font:500 clamp(16px,4.2vw,23px)/1.8 "LXGW WenKai","STKaiti","KaiTi",serif;padding:0 4px}
.pure-letter-title::placeholder{color:rgba(91,65,46,.45)}
.pure-sheet-star .pure-letter-title{color:#f2d99c;border-bottom-color:rgba(242,217,156,.34)}
.pure-sheet-star .pure-letter-title::placeholder{color:rgba(242,217,156,.5)}
/* v84: attachments can be positioned freely; photos can be resized. */
.pure-photo-card,.pure-record-player{touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;will-change:transform}
.pure-photo-card:active,.pure-record-player:active{cursor:grabbing}
.pure-resize-handle{position:absolute;z-index:4;right:-9px;bottom:-9px;width:24px;height:24px;border:2px solid #fff0c7;border-radius:7px;background:#8b3a2f;box-shadow:0 2px 7px rgba(35,8,10,.38);cursor:nwse-resize;touch-action:none}
.pure-resize-handle::before{content:"";position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-right:2px solid #f5d99a;border-bottom:2px solid #f5d99a}
/* v88: all editable letter text uses the natural handwritten Kai style. */
.pure-writer-body,.pure-writer-body input,.pure-writer-body textarea,.pure-writer-body button,.pure-writer-body label,.pure-writer-body small{font-family:"STKaiti","Kaiti SC",KaiTi,"LXGW WenKai","楷体",cursive!important;font-style:normal}
.pure-sheet textarea{font-family:"STKaiti","Kaiti SC",KaiTi,"LXGW WenKai","楷体",cursive!important;font-weight:400!important;letter-spacing:.075em!important}
.pure-letter-title,.pure-address{font-family:"STKaiti","Kaiti SC",KaiTi,"LXGW WenKai","楷体",cursive!important;font-weight:400!important}
