/* ziye-letter-final.css — r15 consolidated private letter styles */

@font-face{
  font-family:"RMJZQPK";
  src:url("rmjzqpk-hbk.woff2") format("woff2");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}

:root{
  /* RMJZQPK 为子集字体：仅在与 KaiTi 二选一时使用，禁止与 Noto Serif 混排 */
  /* Latin / 数字 / Email 用 Cormorant 与手写信风格一致 */
  --zy-letter-hand:"RMJZQPK","Cormorant Garamond",Georgia,"Times New Roman",serif;
  --zy-letter-fallback:"KaiTi SC","STKaiti","FangSong","Cormorant Garamond",Georgia,serif;
  --zy-letter-write-text:var(--zy-letter-hand);
  --zy-letter-input-size:clamp(18px,1.5vw,21px);
  --zy-letter-ui:var(--fui,'Noto Sans SC',sans-serif);
}
#zyLetterSheet.zy-letter--fallback{
  --zy-letter-write-text:var(--zy-letter-fallback);
}

/* ── Section: private-letter landing ── */
/* 3) 私人信件区块：信封图呈现 */
#private-letter{
  position:relative;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  min-height:clamp(540px,82vh,760px);
  padding:clamp(56px,8vw,88px) clamp(20px,4vw,32px) clamp(64px,9vw,96px);
  background:url('table-lamp.png') 60% center / cover no-repeat !important;
  border-top:1px solid rgba(70,50,28,.08);
  border-bottom:1px solid rgba(70,50,28,.08);
}
@media (max-width:760px){
  #private-letter{
    min-height:min(86vh,680px);
    background-position:74% center !important;
    background-size:cover !important;
    padding:clamp(48px,11vw,72px) 16px clamp(56px,12vw,80px) !important;
  }
}
.zy-letter-intro{
  max-width:760px;
  width:min(760px,92vw);
  margin:0 auto clamp(28px,4.5vw,40px);
  padding:0 clamp(16px,4vw,24px);
  text-align:center;
  position:relative;
  z-index:2;
}
.zy-letter-intro .sh-label{
  display:block;
  margin-bottom:clamp(14px,2.2vw,20px);
}
#private-letter .zy-letter-intro .sh-label{
  color:#c8942f!important;
  text-shadow:0 2px 10px rgba(0,0,0,.22);
  font-family:var(--fen,'Cormorant Garamond',serif)!important;
  letter-spacing:.18em!important;
  text-transform:none!important;
  font-size:clamp(10px,1vw,11px)!important;
  font-weight:400!important;
}
#private-letter .zy-letter-intro h2{
  font-family:var(--fzh,'Noto Serif SC',Georgia,serif)!important;
  font-size:clamp(28px,3.4vw,48px)!important;
  font-weight:400!important;
  line-height:1.6!important;
  letter-spacing:.06em!important;
  text-align:center!important;
  margin:.4em auto .35em!important;
  max-width:18em;
  color:rgba(250,244,234,.98)!important;
  text-shadow:0 3px 16px rgba(0,0,0,.28);
}
#private-letter .zy-letter-intro h2 .zy-caption-gold{
  display:block;
  margin-top:.3em;
  color:#e6c06d!important;
  text-shadow:0 2px 12px rgba(0,0,0,.28);
}
#private-letter .zy-letter-intro p{
  font-family:var(--fzh,'Noto Serif SC',Georgia,serif)!important;
  font-size:clamp(16px,1.3vw,19px)!important;
  font-weight:400!important;
  line-height:2!important;
  text-align:center!important;
  margin:0 auto!important;
  max-width:28em;
  color:rgba(245,235,219,.92)!important;
  text-shadow:0 2px 12px rgba(0,0,0,.24);
}
html.zy-letter-open #private-letter{
  visibility:hidden!important;
  pointer-events:none!important;
}

/* 2) 信件正文：横线信纸 */
#zyLetterSheet{
  position:relative;
  background:
    linear-gradient(180deg,rgba(255,252,245,.72),rgba(255,250,242,.78)),
    url('letter-paper-lined.png') center top / cover no-repeat!important;
  border:1px solid rgba(126,91,43,.28)!important;
  box-shadow:0 38px 100px rgba(24,15,7,.34),inset 0 0 24px rgba(120,84,38,.05)!important;
}
#zyLetterSheet:before{
  content:'';
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:.08;
  background-image:radial-gradient(rgba(123,91,45,.14) .7px,transparent .8px);
  background-size:7px 7px;
  mix-blend-mode:multiply;
}
#zyLetterSheet .zy-letter-content{
  position:relative;
  z-index:1;
  max-width:680px!important;
  margin:0 auto!important;
}
#zyLetterSheet .zy-letter-body{
  max-width:34em;
  margin:0 auto;
  padding:1em .55em 2em;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
}
#zyLetterSheet .zy-letter-passage{
  display:block;
  margin:0;
  padding:0;
}
#zyLetterSheet .zy-letter-passage .zy-letter-line{
  margin:0 0 .18em!important;
}
#zyLetterSheet .zy-letter-passage .zy-letter-line:last-child{
  margin-bottom:0!important;
}
#zyLetterSheet .zy-letter-passage--opener{
  margin-bottom:.15em;
  padding-bottom:.35em;
}
#zyLetterSheet .zy-letter-passage--opener .zy-letter-line{
  margin-bottom:.22em!important;
}
#zyLetterSheet .zy-letter-passage--opener .zy-letter-opener{
  margin-bottom:.45em!important;
}
#zyLetterSheet .zy-letter-cover{
  margin:0 0 1.75em!important;
  padding-bottom:.65em;
  border-bottom:1px solid rgba(152,113,48,.22);
  text-align:center!important;
  color:#8a5f18!important;
  font-size:clamp(36px,4.2vw,52px)!important;
  line-height:1.55!important;
  letter-spacing:.12em!important;
  font-family:var(--zy-letter-hand)!important;
  font-weight:400!important;
}
/* 信件正文：RMJZQPK 或统一楷体 fallback（由 JS 切换，禁止混排） */
#zyLetterSheet .zy-letter-body,
#zyLetterSheet .zy-letter-content p.zy-letter-line,
#zyLetterSheet .zy-letter-content p.zy-letter-sign,
#zyLetterSheet .zy-letter-content blockquote,
#zyLetterSheet .zy-letter-cover,
#zyLetterSheet .zy-letter-highlight,
#zyLetterSheet .zy-letter-pillars,
#zyLetterSheet .zy-letter-write__done,
#zyLetterSheet .zy-letter-write__done-sub,
#zyLetterSheet .zy-letter-write__intro-em,
#zyLetterSheet .zy-letter-list li{
  font-family:var(--zy-letter-hand)!important;
  font-weight:400!important;
}
#zyLetterSheet.zy-letter--fallback .zy-letter-body,
#zyLetterSheet.zy-letter--fallback .zy-letter-content p.zy-letter-line,
#zyLetterSheet.zy-letter--fallback .zy-letter-content p.zy-letter-sign,
#zyLetterSheet.zy-letter--fallback .zy-letter-content blockquote,
#zyLetterSheet.zy-letter--fallback .zy-letter-cover,
#zyLetterSheet.zy-letter--fallback .zy-letter-highlight,
#zyLetterSheet.zy-letter--fallback .zy-letter-pillars,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__done,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__done-sub,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__intro-em,
#zyLetterSheet.zy-letter--fallback .zy-letter-list li{
  font-family:var(--zy-letter-fallback)!important;
  font-weight:400!important;
}
/* 书写区（你的空间）：标题 / 说明 / 输入 / 按钮 同一套字体 */
#zyLetterSheet .zy-letter-write__title,
#zyLetterSheet .zy-letter-write__intro,
#zyLetterSheet .zy-letter-write__label,
#zyLetterSheet .zy-letter-write__input,
#zyLetterSheet .zy-letter-write__contact,
#zyLetterSheet .zy-letter-write__btn{
  font-family:var(--zy-letter-write-text)!important;
  font-weight:400!important;
}
#zyLetterSheet.zy-letter--fallback .zy-letter-write__title,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__intro,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__label,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__input,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__contact,
#zyLetterSheet.zy-letter--fallback .zy-letter-write__btn{
  font-family:var(--zy-letter-write-text)!important;
  font-weight:400!important;
}
/* UI 标签：sans-serif */
#zyLetterSheet .zy-letter-write__kicker,
#zyLetterSheet .zy-letter-write__assure{
  font-family:var(--zy-letter-ui)!important;
  font-weight:400!important;
}
#zyLetterSheet .zy-letter-content p.zy-letter-line,
#zyLetterSheet .zy-letter-content blockquote{
  letter-spacing:.04em!important;
  color:#3d3228!important;
  text-shadow:0 .45px 0 rgba(255,255,255,.32);
}
#zyLetterSheet .zy-letter-line.zy-letter-accent,
#zyLetterSheet .zy-letter-content p.zy-letter-line.zy-letter-accent{
  color:#181008!important;
  letter-spacing:.055em!important;
  font-weight:400!important;
  -webkit-text-stroke:0.2px rgba(24,16,8,.35);
  text-shadow:0 .55px 0 rgba(24,16,8,.12);
}
#zyLetterSheet .zy-letter-line.zy-letter-stand{
  margin:clamp(14px,1.8vw,22px) 0!important;
  padding:0;
  text-align:left!important;
  letter-spacing:.055em!important;
  color:#181008!important;
  max-width:none;
}
#zyLetterSheet .zy-letter-line.zy-letter-strong{
  font-weight:400!important;
  color:#181008!important;
  letter-spacing:.055em!important;
}
#zyLetterSheet .zy-letter-subhead{
  font-size:clamp(22px,1.72vw,26px)!important;
  letter-spacing:.08em!important;
  color:#181008!important;
  margin:.35em 0 0!important;
  padding-top:.45em;
  padding-bottom:.35em;
  border-top:1px solid rgba(152,113,48,.16);
  border-bottom:1px solid rgba(152,113,48,.2);
  text-align:left!important;
  -webkit-text-stroke:0.2px rgba(24,16,8,.35);
}
#zyLetterSheet .zy-letter-subhead.zy-letter-strong{
  font-size:clamp(22px,1.72vw,26px)!important;
  letter-spacing:.08em!important;
  color:#181008!important;
  margin:.35em 0 0!important;
  padding-top:.45em;
  padding-bottom:.35em;
  border-top:1px solid rgba(152,113,48,.16);
  border-bottom:1px solid rgba(152,113,48,.2);
  text-align:left!important;
}
#zyLetterSheet .zy-letter-gap{
  display:block;
  height:clamp(20px,2.4vw,32px);
  margin:0;
  padding:0;
  border:0;
  background:transparent;
}
#zyLetterSheet .zy-letter-gap--breath{
  height:clamp(14px,1.6vw,22px);
}
#zyLetterSheet .zy-letter-gap--soft{
  height:clamp(28px,3.2vw,40px);
}
#zyLetterSheet .zy-letter-divider{
  display:block;
  width:min(120px,36%);
  height:1px;
  margin:clamp(28px,3.2vw,40px) auto;
  border:0;
  background:linear-gradient(90deg,transparent,rgba(152,113,48,.42),transparent);
}
#zyLetterSheet .zy-letter-divider--section{
  width:min(200px,58%);
  height:1px;
  margin:clamp(40px,4.8vw,60px) auto clamp(10px,1.2vw,16px);
  background:linear-gradient(90deg,transparent,rgba(152,113,48,.55) 20%,rgba(152,113,48,.55) 80%,transparent);
}
#zyLetterSheet .zy-letter-block--opener{
  margin-bottom:.25em;
  padding-bottom:.15em;
}
#zyLetterSheet .zy-letter-highlight{
  margin:clamp(26px,3vw,38px) 0;
  padding:1.15em 1.15em 1.2em 1.25em;
  background:linear-gradient(135deg,rgba(179,135,45,.11),rgba(179,135,45,.045));
  border-left:3px solid rgba(179,135,45,.52);
  border-radius:0 4px 4px 0;
  box-shadow:inset 0 0 0 1px rgba(179,135,45,.1);
}
#zyLetterSheet .zy-letter-highlight--trap{
  margin-top:clamp(22px,2.6vw,34px);
}
#zyLetterSheet .zy-letter-highlight--framework{
  margin-bottom:clamp(28px,3.2vw,42px);
  padding-bottom:1.05em;
}
#zyLetterSheet .zy-letter-highlight .zy-letter-line{
  margin-bottom:.22em!important;
}
#zyLetterSheet .zy-letter-highlight .zy-letter-line:not(.zy-letter-accent){
  color:#342418!important;
}
#zyLetterSheet .zy-letter-highlight .zy-letter-line.zy-letter-accent{
  color:#181008!important;
}
#zyLetterSheet .zy-letter-highlight .zy-letter-line:last-child{
  margin-bottom:0!important;
}
#zyLetterSheet .zy-letter-pillars{
  margin:clamp(20px,2.4vw,30px) 0 clamp(24px,2.8vw,34px);
  padding:.95em 1em 1em 0;
  border-top:1px solid rgba(152,113,48,.18);
  border-bottom:1px solid rgba(152,113,48,.18);
  background:linear-gradient(180deg,rgba(255,252,245,.55),rgba(250,243,232,.35));
}
#zyLetterSheet .zy-letter-highlight .zy-letter-pillars--inline{
  margin:.75em 0 0!important;
  padding:.85em 0 .15em!important;
  border-top:1px solid rgba(179,135,45,.24);
  border-bottom:0;
  background:transparent;
  box-shadow:none;
}
#zyLetterSheet .zy-letter-passage--key{
  margin:clamp(6px,0.8vw,10px) 0;
  padding:.15em 0 .15em .85em;
  border-left:2px solid rgba(179,135,45,.42);
}
#zyLetterSheet .zy-letter-accent--key{
  margin:0!important;
}
#zyLetterSheet .zy-letter-passage--invite{
  padding-top:.15em;
}
#zyLetterSheet .zy-letter-passage--closing .zy-letter-line{
  color:#3a3028!important;
}
#zyLetterSheet .zy-letter-pillar{
  margin:0 0 .65em .35em!important;
  padding:0 0 0 1em!important;
  border-left:2px solid rgba(179,135,45,.45);
  line-height:1.95!important;
  color:#181008!important;
}
#zyLetterSheet .zy-letter-pillars--inline .zy-letter-pillar{
  margin:0 0 .5em!important;
  padding:0!important;
  border-left:0!important;
}
#zyLetterSheet .zy-letter-pillar:last-child{
  margin-bottom:0!important;
}
#zyLetterSheet .zy-letter-sign.zy-letter-strong{
  font-weight:400!important;
  letter-spacing:.16em!important;
}
#zyLetterSheet .zy-letter-content p.zy-letter-line{
  font-size:clamp(21px,1.72vw,25px)!important;
  line-height:2.05!important;
  margin:0 0 .42em!important;
}
#zyLetterSheet .zy-letter-passage .zy-letter-line,
#zyLetterSheet .zy-letter-highlight .zy-letter-line,
#zyLetterSheet .zy-letter-pillars .zy-letter-line{
  line-height:2!important;
}
#zyLetterSheet .zy-letter-gap+.zy-letter-passage,
#zyLetterSheet .zy-letter-gap+.zy-letter-highlight,
#zyLetterSheet .zy-letter-highlight+.zy-letter-gap,
#zyLetterSheet .zy-letter-divider+.zy-letter-passage,
#zyLetterSheet .zy-letter-divider--section+.zy-letter-gap,
#zyLetterSheet .zy-letter-gap--breath+.zy-letter-passage{
  margin-top:0;
}
#zyLetterSheet .zy-letter-content p.zy-letter-sign{
  font-size:clamp(21px,1.72vw,25px)!important;
  line-height:2.05!important;
  margin:clamp(36px,4vw,52px) 0 0!important;
  padding-top:1.35em!important;
  border-top:1px solid rgba(152,113,48,.2);
  letter-spacing:.14em!important;
  color:#6f4f18!important;
  text-align:right!important;
  font-style:normal!important;
}
#zyLetterSheet .zy-letter-content p.zy-letter-sign.zy-letter-accent{
  color:#181008!important;
  letter-spacing:.16em!important;
  -webkit-text-stroke:0.2px rgba(24,16,8,.35);
}
#zyLetterSheet .zy-letter-opener{
  text-align:left!important;
  margin:0 0 .55em!important;
  font-size:clamp(22px,1.78vw,26px)!important;
  color:#3a2818!important;
  letter-spacing:.05em!important;
  font-weight:400!important;
}
#zyLetterSheet .zy-letter-lead{
  margin-top:.35em!important;
  margin-bottom:.55em!important;
  color:#4a3522!important;
  text-align:center!important;
  letter-spacing:.06em!important;
}
#zyLetterSheet .zy-letter-poetic{
  line-height:2.35!important;
  margin-bottom:1.45em!important;
}
#zyLetterSheet .zy-letter-emphasis{
  padding:.95em 1.05em 1em 1.2em;
  margin:1.4em 0 1.3em!important;
  border-left:3px solid rgba(179,135,45,.48);
  background:rgba(179,135,45,.08);
  line-height:1.98!important;
  color:#342418!important;
  letter-spacing:.05em!important;
}
#zyLetterSheet .zy-letter-line strong{
  font-weight:400!important;
  color:#7a5520!important;
  letter-spacing:.06em!important;
}
#zyLetterSheet .zy-letter-pillars .zy-letter-line{
  margin-bottom:.65em!important;
}
#zyLetterSheet .zy-letter-pillars .zy-letter-line:last-child{
  margin-bottom:0!important;
}
#zyLetterSheet .zy-letter-list{
  margin:.2em 0 1.55em 0!important;
  padding:1em 1.1em 1.05em 2.2em!important;
  background:rgba(179,135,45,.05);
  border:1px solid rgba(152,113,48,.14);
  border-radius:2px;
}
#zyLetterSheet .zy-letter-list li{
  font-size:clamp(21px,1.68vw,25px)!important;
  line-height:2.15!important;
  letter-spacing:.04em!important;
  color:#2a1e14!important;
  margin:0 0 .4em!important;
}
/* 书写区：正文 RMJZQPK 或楷体 fallback；kicker / assure 用 sans-serif */
#zyLetterSheet .zy-letter-write{
  margin:clamp(40px,4.5vw,56px) auto 0!important;
  max-width:38em;
  --zy-letter-write-text:var(--zy-letter-fallback);
  font-family:var(--zy-letter-write-text);
  font-size:var(--zy-letter-input-size);
  line-height:2;
  letter-spacing:.04em;
  color:#2a1e14;
  padding:clamp(28px,3.4vw,42px) clamp(22px,3vw,38px) clamp(26px,3vw,36px);
  background:linear-gradient(180deg,rgba(255,253,247,.92),rgba(250,243,229,.94));
  border:1px solid rgba(152,113,48,.26);
  border-radius:4px;
  box-shadow:0 18px 44px rgba(70,48,16,.12),inset 0 0 0 1px rgba(255,255,255,.4);
  position:relative;
}
#zyLetterSheet .zy-letter-write::before{
  content:'';position:absolute;left:0;top:0;width:100%;height:3px;
  background:linear-gradient(90deg,transparent,rgba(179,135,45,.5),transparent);
}
#zyLetterSheet .zy-letter-write__head{
  text-align:center;
  margin-bottom:1.35em;
}
#zyLetterSheet .zy-letter-write__intro-block{
  margin:0 auto 1.25em;
  max-width:27em;
  padding:1.15em 1.35em 1.2em;
  text-align:center;
  background:rgba(255,255,255,.42);
  border:1px solid rgba(152,113,48,.16);
  border-radius:3px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55);
}
#zyLetterSheet .zy-letter-write__kicker{
  display:inline-block;
  font-family:var(--zy-letter-ui)!important;
  font-size:11px!important;
  line-height:1.55!important;
  letter-spacing:.32em!important;
  text-transform:uppercase;
  color:rgba(150,110,40,.78)!important;
  margin-bottom:.85em;
}
#zyLetterSheet .zy-letter-write__assure{
  font-family:var(--zy-letter-ui)!important;
  font-size:12px!important;
  line-height:1.85!important;
  letter-spacing:.04em!important;
  color:rgba(72,58,40,.62)!important;
  margin:1.15em 0 0!important;
  text-align:center;
}
#zyLetterSheet .zy-letter-write__title{
  font-family:inherit!important;
  font-size:inherit!important;
  line-height:inherit!important;
  letter-spacing:inherit!important;
  color:#5c4020!important;
  margin:0 0 .65em!important;
}
#zyLetterSheet .zy-letter-write__intro{
  font-family:inherit!important;
  font-size:clamp(18px,1.5vw,21px)!important;
  line-height:2!important;
  letter-spacing:.04em!important;
  color:#3a2818!important;
  margin:0!important;
  text-shadow:0 .4px 0 rgba(255,255,255,.28);
}
#zyLetterSheet .zy-letter-write__intro--choice{
  margin-top:1em!important;
  padding-top:1em!important;
  border-top:1px solid rgba(152,113,48,.18);
  color:#4a3522!important;
}
#zyLetterSheet .zy-letter-write__intro-em{
  font-weight:400!important;
  color:#8a5f18!important;
  letter-spacing:.08em!important;
}
#zyLetterSheet .zy-letter-write__input,
#zyLetterSheet .zy-letter-write__contact,
#zyLetterSheet textarea#zyLetterNote,
#zyLetterSheet input#zyLetterContact{
  width:100%;
  box-sizing:border-box;
  border:1px solid rgba(152,113,48,.28);
  border-radius:3px;
  background:rgba(255,255,255,.62);
  font-family:var(--zy-letter-write-text)!important;
  font-size:var(--zy-letter-input-size)!important;
  line-height:2!important;
  letter-spacing:.04em!important;
  color:inherit!important;
  font-weight:400!important;
  font-style:normal!important;
  font-variant-ligatures:none;
  -webkit-text-stroke:0;
  -webkit-appearance:none;
  appearance:none;
  padding:14px 16px!important;
  outline:none;
  transition:border-color .3s ease,box-shadow .3s ease,background .3s ease;
}
#zyLetterSheet .zy-letter-write__input{
  min-height:132px;
  resize:vertical;
  background-image:repeating-linear-gradient(180deg,transparent,transparent calc(2.05em - 1px),rgba(152,113,48,.1) 2.05em);
}
#zyLetterSheet .zy-letter-write__input:focus,
#zyLetterSheet .zy-letter-write__contact:focus{
  border-color:rgba(138,95,24,.6);
  background:rgba(255,255,255,.85);
  box-shadow:0 0 0 3px rgba(179,135,45,.1);
}
#zyLetterSheet .zy-letter-write__input::placeholder,
#zyLetterSheet .zy-letter-write__contact::placeholder{
  color:rgba(90,66,38,.4);
}
#zyLetterSheet .zy-letter-write__contact-row{
  margin-top:1.1em;
}
#zyLetterSheet .zy-letter-write__contact-row[hidden]{display:none;}
#zyLetterSheet .zy-letter-write__label{
  display:block;
  font-family:inherit!important;
  font-size:inherit!important;
  letter-spacing:inherit!important;
  color:rgba(90,66,38,.85)!important;
  margin:0 0 .5em!important;
}
#zyLetterSheet .zy-letter-write__actions{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  justify-content:center;
  margin-top:1.7em;
}
#zyLetterSheet .zy-letter-write__btn{
  flex:1 1 auto;
  min-width:160px;
  padding:.85em 1.35em!important;
  border-radius:3px;
  font-family:inherit!important;
  font-size:inherit!important;
  letter-spacing:.1em!important;
  cursor:pointer;
  transition:transform .3s ease,background .3s ease,border-color .3s ease,box-shadow .3s ease,color .3s ease;
}
#zyLetterSheet .zy-letter-write__btn--keep{
  border:1px solid rgba(138,95,24,.42);
  background:transparent;
  color:#8a5f18!important;
}
#zyLetterSheet .zy-letter-write__btn--keep:hover:not(:disabled){
  background:rgba(179,135,45,.08);
  border-color:rgba(138,95,24,.62);
}
#zyLetterSheet .zy-letter-write__btn--send{
  border:1px solid #8a5f18;
  background:linear-gradient(180deg,#a87922,#8a5f18);
  color:#fdf6e6!important;
  box-shadow:0 10px 24px rgba(110,79,24,.22);
}
#zyLetterSheet .zy-letter-write__btn--send:hover:not(:disabled){
  transform:translateY(-2px);
  box-shadow:0 14px 30px rgba(110,79,24,.3);
}
#zyLetterSheet .zy-letter-write__btn:disabled{
  opacity:.55;
  cursor:default;
}
#zyLetterSheet .zy-letter-write__done{
  font-family:inherit!important;
  font-size:inherit!important;
  line-height:inherit!important;
  letter-spacing:inherit!important;
  color:#5c4020!important;
  text-align:center!important;
  margin:0 0 .75em!important;
}
#zyLetterSheet .zy-letter-write__done-sub{
  font-family:inherit!important;
  font-size:inherit!important;
  line-height:inherit!important;
  color:rgba(74,53,34,.82)!important;
  text-align:center!important;
  margin:0!important;
}
#zyLetterSheet .zy-letter-write__ref{
  display:inline-block;
  margin-top:.85em;
  font-size:12px!important;
  letter-spacing:.14em!important;
  color:rgba(111,79,24,.72)!important;
}
@media (max-width:760px){
  #zyLetterSheet .zy-letter-write__actions{flex-direction:column;}
  #zyLetterSheet .zy-letter-write__btn{width:100%;min-width:0;}
}

/* ── Choreography: open/close/send animations ── */
.zy-letter-modal{
  position:fixed;inset:0;z-index:5000;
  display:none;align-items:center;justify-content:center;
  padding:clamp(14px,3.5vw,32px);
  opacity:0;visibility:hidden;pointer-events:none;
  overflow:hidden;
  overscroll-behavior:contain;
}
.zy-letter-modal.open,#zyLetterModal.is-opening{
  display:flex!important;
  opacity:1;visibility:visible;pointer-events:auto;
}
.zy-letter-modal[hidden]{display:none!important;visibility:hidden!important;pointer-events:none!important;opacity:0!important}
html.zy-letter-scroll-lock,body.zy-letter-scroll-lock{
  overflow:hidden!important;
  overscroll-behavior:none;
}
#zyLetterSheet .zy-letter-content{
  padding:clamp(8px,1.2vw,18px) clamp(6px,1vw,12px) clamp(20px,2.5vw,32px)!important;
}
/* ── 页内信封：轻轻上浮、淡出；关闭后缓回 ── */
#private-letter .zy-seal-envelope{
  transition:transform .72s cubic-bezier(0.34,1.05,0.64,1),opacity .58s ease,filter .5s ease;
  will-change:auto;
}
#private-letter .zy-seal-envelope.zy-seal-envelope--departing{
  transform:translateY(-36px) scale(.94);
  opacity:0;
  pointer-events:none;
  filter:blur(1px);
}
#private-letter .zy-seal-envelope.zy-seal-envelope--instant{
  transition:none!important;
}
#private-letter .zy-seal-envelope:not(.zy-seal-envelope--departing){
  transform:none;
  opacity:1;
  pointer-events:auto;
  filter:none;
}
/* ── 弹层：背景缓入，信纸区可滚动 ── */
#zyLetterModal.open,#zyLetterModal.is-opening{
  display:flex!important;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  overflow:hidden!important;
  overscroll-behavior:contain;
  padding:clamp(14px,3.5vw,32px);
  pointer-events:auto;
}
#zyLetterModal .zy-letter-backdrop{
  position:absolute;
  inset:0;
  z-index:1;
  background:rgba(14,10,8,.88);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  opacity:0;
  cursor:pointer;
  transition:opacity .38s cubic-bezier(0.22,1,0.36,1);
}
#zyLetterModal.is-opening .zy-letter-backdrop,
#zyLetterModal.open .zy-letter-backdrop{
  opacity:1;
}
.zy-letter-close{
  position:sticky;
  top:0;
  float:right;
  border:0;
  background:transparent;
  font-size:32px;
  line-height:1;
  color:#6e5a45;
  cursor:pointer;
  z-index:2;
}
#zyLetterModal #zyLetterSheet{
  position:relative;
  z-index:2;
  flex:0 1 auto;
  min-height:0;
  width:min(820px,92vw)!important;
  max-height:calc(100dvh - 48px)!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
  touch-action:pan-y;
  transform:translateY(28px);
  opacity:0;
  pointer-events:none;
}
#zyLetterSheet.sheet--enter{
  animation:zySheetExtract .82s cubic-bezier(0.22,1.05,0.36,1) forwards;
  pointer-events:auto;
  will-change:transform,opacity,filter;
  transform-origin:center 92%;
  overflow:visible!important;
}
/* 信封意象：随信纸一起抽出，不单独留层 */
#zyLetterSheet.sheet--enter::after{
  content:'';
  position:absolute;
  left:50%;
  bottom:6px;
  width:min(168px,34vw);
  height:min(108px,22vw);
  margin-left:calc(min(168px,34vw) / -2);
  background:url('envelope-sealed-transparent.png') center bottom / contain no-repeat;
  filter:drop-shadow(0 14px 28px rgba(0,0,0,.28));
  pointer-events:none;
  z-index:-1;
  transform-origin:center bottom;
  animation:zySheetEnvCue .58s cubic-bezier(0.34,1.02,0.64,1) forwards;
}
@keyframes zySheetEnvCue{
  0%{opacity:.92;transform:translateY(0) scale(1);}
  100%{opacity:0;transform:translateY(18px) scale(.72);}
}
@keyframes zySheetExtract{
  0%{transform:translateY(52px) scale(.38) rotateX(6deg);opacity:0;filter:blur(3px);}
  50%{opacity:1;filter:blur(0);}
  76%{transform:translateY(-4px) scale(1.01) rotateX(0);}
  100%{transform:translateY(0) scale(1) rotateX(0);opacity:1;filter:blur(0);}
}
#zyLetterSheet.sheet--ready{
  transform:none!important;
  opacity:1!important;
  filter:none!important;
  pointer-events:auto!important;
  will-change:auto;
}
#zyLetterSheet.sheet--depart{
  animation:zySheetDepart .72s cubic-bezier(0.4,0,0.2,1) forwards;
  pointer-events:none;
  will-change:transform,opacity;
}
@keyframes zySheetDepart{
  to{transform:translateY(-18px);opacity:0}
}
#zyLetterSheet.sheet--retract{
  animation:zySheetRetract .82s cubic-bezier(0.22,1.05,0.36,1) forwards;
  pointer-events:none;
  will-change:transform,opacity,filter;
  transform-origin:center 92%;
}
@keyframes zySheetRetract{
  0%{transform:translateY(0) scale(1) rotateX(0);opacity:1;filter:blur(0);}
  24%{transform:translateY(-4px) scale(1.01) rotateX(0);opacity:1;filter:blur(0);}
  50%{opacity:1;filter:blur(0);}
  100%{transform:translateY(52px) scale(.38) rotateX(6deg);opacity:0;filter:blur(3px);}
}
#zyLetterModal.is-closing{
  pointer-events:none;
}
#zyLetterModal.is-closing .zy-letter-backdrop{
  opacity:0!important;
  transition:opacity .52s cubic-bezier(0.22,1,0.36,1)!important;
}
#zyLetterModal.is-closing #zyLetterSheet .zy-letter-cover.zy-letter-cover--out,
#zyLetterModal.is-closing #zyLetterWrite.zy-letter-write--out{
  opacity:0!important;
  transform:translateY(10px)!important;
  transition:opacity .48s cubic-bezier(0.22,1,0.36,1),transform .48s cubic-bezier(0.22,1,0.36,1)!important;
}
#zyLetterModal.is-closing #zyLetterSheet .zy-letter-body{
  opacity:0!important;
  transform:translateY(8px)!important;
  transition:opacity .52s cubic-bezier(0.22,1,0.36,1),transform .52s cubic-bezier(0.22,1,0.36,1)!important;
}
#zyLetterSheet.sheet--hidden{
  visibility:hidden!important;
  pointer-events:none!important;
  position:absolute!important;
  width:1px!important;height:1px!important;overflow:hidden!important;
}
/* ── 正文与书写区：分段渐显 ── */
#zyLetterSheet .zy-letter-body{
  opacity:0;
  transform:translateY(8px);
  transition:opacity .52s cubic-bezier(0.22,1,0.36,1),transform .52s cubic-bezier(0.22,1,0.36,1);
}
#zyLetterSheet .zy-letter-body.letter-body--visible{
  opacity:1;
  transform:none;
}
#zyLetterSheet .zy-letter-cover{
  transition:opacity .48s cubic-bezier(0.22,1,0.36,1),transform .48s cubic-bezier(0.22,1,0.36,1);
  transform:translateY(6px);
}
#zyLetterSheet .zy-letter-cover.zy-letter-cover--out{
  opacity:0!important;
  transform:translateY(10px)!important;
}
#zyLetterSheet:not(.sheet--ready) .zy-letter-cover{opacity:0}
#zyLetterSheet.sheet--ready .zy-letter-cover{opacity:1;transform:none}
#zyLetterWrite{
  opacity:0;
  transform:translateY(12px);
  transition:opacity .48s cubic-bezier(0.22,1,0.36,1),transform .48s cubic-bezier(0.22,1,0.36,1);
}
#zyLetterWrite.zy-letter-write--visible{
  opacity:1;
  transform:none;
}
#zyLetterWrite.zy-letter-write--out{
  opacity:0;
  transform:translateY(-8px);
  pointer-events:none;
}
/* 导航「留下一句心里话」→ 直达书写区，不展开信件正文 */
/* #zyLetterWrite 在 #zyLetterTitle 内，不可隐藏整个 #zyLetterTitle */
#zyLetterSheet.zy-letter-sheet--write-only #zyLetterTitle .zy-letter-cover,
#zyLetterSheet.zy-letter-sheet--write-only #zyLetterTitle .zy-letter-body{
  display:none!important;
}
#zyLetterSheet.zy-letter-sheet--write-only #zyLetterTitle{
  padding:0!important;
  max-width:none!important;
}
#zyLetterSheet.zy-letter-sheet--write-only #zyLetterWrite{
  margin-top:0!important;
  padding-top:clamp(36px,6vw,52px);
}
#zyLetterModal.zy-letter-modal--write-only .zy-letter-close{
  top:clamp(14px,3vw,22px);
}
/* ── 寄出成功 ── */
.zy-letter-sent{
  position:relative;
  z-index:3;
  width:min(420px,88vw);
  margin:0 auto;
  text-align:center;
  padding:clamp(40px,8vw,72px) 24px;
  opacity:0;
  transform:translateY(12px);
  transition:opacity .85s cubic-bezier(0.25,0.46,0.45,0.94),transform .85s cubic-bezier(0.25,0.46,0.45,0.94);
}
.zy-letter-sent.is-visible{opacity:1;transform:none}
.zy-letter-sent__envelope{
  width:min(280px,70vw);
  margin:0 auto 28px;
  transform:translateY(28px) scale(.78);
  opacity:0;
  filter:drop-shadow(0 22px 40px rgba(0,0,0,.28));
}
.zy-letter-sent__envelope img{width:100%;height:auto;display:block}
.zy-letter-sent__envelope.rise{
  animation:zyEnvRise .72s cubic-bezier(0.25,0.46,0.45,0.94) forwards;
}
.zy-letter-sent__envelope.ready{
  animation:zyEnvReady .7s ease-in-out;
}
@keyframes zyEnvReady{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-5px) scale(1.02)}
}
.zy-letter-sent__envelope.fly{
  animation:zyEnvFly 1s cubic-bezier(0.4,0,0.2,1) forwards;
}
@keyframes zyEnvRise{
  to{transform:translateY(0) scale(1);opacity:1}
}
@keyframes zyEnvFly{
  to{transform:translateY(-88px) scale(.9);opacity:0}
}
.zy-letter-sent__msg{
  font-family:var(--zy-letter-hand);
  font-size:clamp(26px,3vw,36px);
  letter-spacing:.14em;
  color:rgba(250,244,234,.96);
  margin:0 0 14px;
}
.zy-letter-sent__sub{
  font-family:var(--fui,'Noto Sans SC',sans-serif);
  font-size:14px;
  line-height:1.9;
  color:rgba(245,237,216,.62);
  margin:0;
}
#zyLetterModal.is-sent .zy-letter-sheet{display:none!important}
#zyLetterModal.is-sent .zy-letter-backdrop{background:rgba(17,12,8,.82)}
/* 覆盖旧规则：避免信纸瞬间全亮、无法滚动 */
.zy-letter-modal.open .zy-letter-sheet,
.zy-letter-sheet.sheet--ready{
  transform:none;
}
@media (prefers-reduced-motion:reduce){
  #zyLetterSheet.sheet--enter::after{display:none!important;}
  #zyLetterModal #zyLetterSheet,
  .zy-letter-sent,#zyLetterWrite,#zyLetterSheet .zy-letter-body{
    animation:none!important;
    transition:none!important;
    transform:none!important;
    opacity:1!important;
    filter:none!important;
  }
  #zyLetterModal.is-closing .zy-letter-backdrop{opacity:0!important}
  #private-letter .zy-seal-envelope.zy-seal-envelope--departing{transform:none;opacity:.4}
}

/* ── Mobile refinements ── */
@media (max-width:760px){
  #private-letter .zy-letter-intro{
    width:min(92vw,560px);
    max-width:560px;
    padding:0 16px;
    margin-bottom:clamp(22px,5vw,32px);
  }
  #private-letter .zy-letter-intro h2{
    font-size:clamp(22px,6.5vw,32px)!important;
    line-height:1.55!important;
    max-width:none;
  }
  #private-letter .zy-letter-intro p{
    font-size:clamp(15px,4vw,18px)!important;
    line-height:1.95!important;
  }
  .zy-letter-modal{padding:16px!important;align-items:center!important;justify-content:center!important;}
  #zyLetterModal #zyLetterSheet,.zy-letter-sheet{
    width:min(calc(100vw - 32px),520px)!important;
    max-width:520px!important;
    max-height:calc(100dvh - 40px)!important;
    height:auto!important;
    overflow-y:auto!important;
    -webkit-overflow-scrolling:touch!important;
    margin:0 auto!important;
    border-radius:12px!important;
    padding:32px 20px 40px!important;
    box-shadow:0 30px 80px rgba(20,12,6,.46)!important;
  }
  #zyLetterSheet .zy-letter-cover{font-size:32px!important;line-height:1.55!important;margin-bottom:1.45em!important;}
  #zyLetterSheet .zy-letter-content p.zy-letter-line,
  #zyLetterSheet .zy-letter-content p.zy-letter-sign,
  #zyLetterSheet .zy-letter-list li{font-size:21px!important;line-height:2.25!important;}
  #zyLetterSheet .zy-letter-body{max-width:100%;padding:.85em .35em 1.75em;}
  #zyLetterSheet .zy-letter-gap{height:18px;}
  #zyLetterSheet .zy-letter-gap--soft{height:26px;}
  #zyLetterSheet .zy-letter-divider{margin:24px auto;}
  #zyLetterSheet .zy-letter-divider--section{margin:32px auto 10px;width:72%;}
  #zyLetterSheet .zy-letter-highlight{padding:1em .85em 1.05em 1em;}
  #zyLetterSheet .zy-letter-passage .zy-letter-line{line-height:1.98!important;}
}

/* ── Sealed envelope photo (landing) ── */
#private-letter .zy-seal-envelope{
  position:relative;display:flex;flex-direction:column;align-items:center;
  width:min(440px,76vw);margin:6px auto 0;padding:0 12px 24px;
  background:transparent;border:0;border-radius:0;cursor:pointer;text-align:center;overflow:visible;
  box-shadow:none;
  transform-origin:center 42%;
  transition:transform .58s cubic-bezier(0.34,1.08,0.64,1),filter .45s ease;
}
#private-letter .zy-seal-envelope:hover,
#private-letter .zy-seal-envelope:focus-visible{
  transform:translateY(-14px) scale(1.085);
}
#private-letter .zy-seal-envelope__visual{
  position:relative;display:block;width:min(400px,72vw);margin:0 auto;
  transition:transform .58s cubic-bezier(0.34,1.08,0.64,1);
}
#private-letter .zy-seal-envelope:hover .zy-seal-envelope__visual,
#private-letter .zy-seal-envelope:focus-visible .zy-seal-envelope__visual{
  transform:scale(1.03);
}
#private-letter .zy-seal-envelope__img{
  position:relative;z-index:1;
  display:block;width:100%;height:auto;margin:0;
  object-fit:contain;pointer-events:none;
  filter:
    drop-shadow(-22px 26px 22px rgba(0,0,0,.42))
    drop-shadow(-10px 14px 18px rgba(0,0,0,.28))
    drop-shadow(6px -4px 14px rgba(255,210,150,.12));
  transition:filter .5s ease;
}
#private-letter .zy-seal-envelope:hover .zy-seal-envelope__img,
#private-letter .zy-seal-envelope:focus-visible .zy-seal-envelope__img{
  filter:
    drop-shadow(-32px 38px 32px rgba(0,0,0,.5))
    drop-shadow(-14px 20px 24px rgba(0,0,0,.34))
    drop-shadow(10px -6px 22px rgba(255,220,160,.22));
}
#private-letter .zy-seal-envelope__visual::after{
  content:'';position:absolute;left:6%;right:22%;bottom:-4%;height:14%;
  background:radial-gradient(ellipse at 42% 50%,rgba(0,0,0,.48) 0%,rgba(0,0,0,.18) 42%,transparent 72%);
  filter:blur(10px);z-index:0;pointer-events:none;
  transform:skewX(-8deg);
  transition:opacity .45s ease,transform .58s cubic-bezier(0.34,1.08,0.64,1);
}
#private-letter .zy-seal-envelope:hover .zy-seal-envelope__visual::after,
#private-letter .zy-seal-envelope:focus-visible .zy-seal-envelope__visual::after{
  opacity:.92;
  transform:skewX(-8deg) scale(1.12);
}
#private-letter .zy-seal-envelope__title{
  position:relative;z-index:1;
  font-family:var(--fzh,'Noto Serif SC',Georgia,serif);
  font-size:clamp(20px,2.2vw,26px);letter-spacing:.20em;
  font-weight:400;
  color:rgba(250,244,234,.98);margin:18px 0 12px;
  text-shadow:0 3px 16px rgba(0,0,0,.28);
}
#private-letter .zy-seal-envelope__quote{
  position:relative;z-index:1;
  font-family:var(--fzh,'Noto Serif SC',Georgia,serif);
  font-size:clamp(13px,1.35vw,17px);line-height:1.9;letter-spacing:.04em;
  font-weight:400;font-style:italic;
  color:rgba(245,235,219,.92);margin:0 0 22px;
  text-shadow:0 2px 12px rgba(0,0,0,.24);
  white-space:nowrap;
}
#private-letter .zy-seal-envelope__cta{
  position:relative;z-index:1;font-family:var(--fui,'Noto Sans SC',sans-serif);
  font-size:13px;letter-spacing:.34em;color:#e8c878;padding-bottom:6px;border-bottom:1px solid rgba(232,200,120,.48);
  transition:color .35s ease,border-color .35s ease,letter-spacing .35s ease;
}
#private-letter .zy-seal-envelope:hover .zy-seal-envelope__cta{color:#fff3c8;border-color:rgba(255,243,200,.72);letter-spacing:.42em;}
@media (max-width:760px){
  #private-letter .zy-seal-envelope{width:min(360px,84vw);padding:0 8px 20px;}
  #private-letter .zy-seal-envelope:hover,
  #private-letter .zy-seal-envelope:focus-visible{
    transform:translateY(-10px) scale(1.055);
  }
  #private-letter .zy-seal-envelope__visual{width:min(320px,78vw);}
  #private-letter .zy-seal-envelope__title{font-size:18px;margin:14px 0 10px;}
  #private-letter .zy-seal-envelope__quote{
    font-size:11.5px;letter-spacing:.02em;margin-bottom:18px;
    white-space:nowrap;
  }
}

/* Write fields: same stack as 你的空间 title/intro (beat form-control defaults) */
#zyLetterModal #zyLetterWrite .zy-letter-write__input,
#zyLetterModal #zyLetterWrite .zy-letter-write__contact,
#zyLetterModal #zyLetterWrite textarea#zyLetterNote,
#zyLetterModal #zyLetterWrite input#zyLetterContact{
  font-family:var(--zy-letter-write-text)!important;
  font-size:var(--zy-letter-input-size)!important;
  font-weight:400!important;
  font-style:normal!important;
  line-height:2!important;
  letter-spacing:.04em!important;
}
#zyLetterModal .zy-letter-write__input:-webkit-autofill,
#zyLetterModal .zy-letter-write__contact:-webkit-autofill,
#zyLetterModal .zy-letter-write__input:-webkit-autofill:focus,
#zyLetterModal .zy-letter-write__contact:-webkit-autofill:focus{
  -webkit-text-fill-color:#2a1e14!important;
  font-family:var(--zy-letter-write-text)!important;
  transition:background-color 99999s ease-out 0s;
}
