/* v0.20 · 一封手写的邀请。
   正文用马善政毛笔楷书，标题与诗句用志莽行书；两款完整字库本地分发。
   SIL Open Font License 1.1：见 /assets/fonts/OFL-MaShanZheng.txt 与 OFL-ZhiMangXing.txt。
   只使用字体原有笔画，不合成倾斜或粗体；新人签名仍使用已确认的图片。 */
@font-face {
  font-family: "Invitation Brush";
  src: url("/assets/fonts/MaShanZheng-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "Invitation Flow";
  src: url("/assets/fonts/ZhiMangXing-Regular.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}
:root {
  --serif: "Invitation Brush", "HW Serif", "Kaiti SC", "KaiTi", "STKaiti", "Songti SC", serif;
  --display: "Invitation Flow", "Invitation Brush", "Kaiti SC", "KaiTi", cursive;
  --latin: "Georgia", "Times New Roman", serif;
}
body {
  font-family: var(--serif);
  font-size: 16px;
  line-height: 1.8;
  font-weight: 400;
  font-synthesis: none;
}
button, input { font-family: var(--serif); font-weight: 400; }

/* 诗与章标题留给行书；连贯的笔势需要短字距。 */
.cap, .q-poem, .w-poem, .iv-title, .sd-title, .rsvp-title,
.closing-line, .veil-kicker, .venue-title, .venue-heading {
  font-family: var(--display);
  font-style: normal;
  font-weight: 400;
}
.cap-h, .f-cap, .c-cap, .d-cap {
  letter-spacing: .055em;
  text-indent: .055em;
  line-height: 1.85;
}
.cap-v { gap: .68em; }
.q-line {
  font-size: clamp(23px, 6.4vw, 28px);
  letter-spacing: .055em;
  text-indent: .055em;
  line-height: 1.95;
}
.w-col {
  font-size: clamp(22px, 5.8vw, 25px);
  letter-spacing: 0;
  line-height: 1.5;
}
.q-by, .w-by {
  font-family: var(--serif);
  font-size: 13px;
  letter-spacing: .08em;
}
.f-whisper { font-size: clamp(13px, 3.4vw, 15px); letter-spacing: .08em; line-height: 1.2; }
.f-title { font-family: var(--serif); font-size: clamp(12px, 3.2vw, 14px); letter-spacing: .06em; }

/* 喜帖中姓名、时间和地点用清晰的楷书，并保持完整姓名同一行。 */
.iv-title { font-size: calc(var(--fk, 1) * 39px); line-height: 1.2; letter-spacing: .15em; text-indent: .15em; }
.sd-title { font-size: calc(var(--fk, 1) * 31px); line-height: 1.3; letter-spacing: .06em; text-indent: .06em; }
.iv-heading {
  font-family: var(--serif);
  font-size: calc(var(--fk, 1) * 18px);
  letter-spacing: .035em;
  text-indent: .035em;
  line-height: 1.7;
  white-space: nowrap;
}
.iv-body, .iv-wish {
  font-family: var(--serif);
  font-size: calc(var(--fk, 1) * 16px);
  line-height: 1.9;
  letter-spacing: .025em;
  text-indent: .025em;
}
.iv-body > div { white-space: nowrap; }
.iv-closing { font-size: calc(var(--fk, 1) * 16px); letter-spacing: .035em; }
.sd-line { font-size: calc(var(--fk, 1) * 16px); letter-spacing: .035em; text-indent: .035em; }
.sd-what { font-size: calc(var(--fk, 1) * 18px); letter-spacing: .04em; }
.sd-time { font-family: var(--latin); font-variant-numeric: tabular-nums; letter-spacing: .01em; }
.a-dv { letter-spacing: .045em; line-height: 1.8; }
.a-date, .a-venue { font-size: clamp(15px, 4vw, 17px); }

/* 英文名保留衬线笔形；题签与日期以收敛的字距呼应手写正文。 */
.veil-names-in { font-family: var(--latin); }
.veil-kicker { font-size: 21px; letter-spacing: .14em; text-indent: .14em; }
.veil-date { font-size: 14px; letter-spacing: .16em; text-indent: .16em; }
.veil-hint { font-size: 14px; letter-spacing: .12em; text-indent: .12em; }

/* 可操作部分仍延续楷书，保证称呼、回执选项与行动都能从容读清。 */
.rsvp-title { font-size: 27px; letter-spacing: .04em; text-indent: .04em; line-height: 1.45; }
.rsvp-lede { font-size: 16px; line-height: 1.8; }
.field-label { font-size: 16px; line-height: 1.7; letter-spacing: .025em; }
.rsvp input { font-family: var(--serif); font-size: 17px; }
.choice { font-size: 17px; }
.btn-primary, .bless-btn { font-size: 18px; letter-spacing: .08em; text-indent: .08em; }
.closing-line { font-size: 29px; letter-spacing: .035em; text-indent: .035em; line-height: 1.7; }
.closing-names { font-size: 18px; letter-spacing: .055em; }
.text-btn { font-size: 16px; letter-spacing: .035em; }
.dock-main { font-size: 17px; font-weight: 400; letter-spacing: .035em; }
.dock-tool, .snd-pill, .fin-btn { font-size: 14px; letter-spacing: .025em; }
.hint, .w-tap, .w-go, .bless-hint, .lb-close { letter-spacing: .055em; text-indent: .055em; }
.hint, .w-tap, .w-go, .bless-hint, .lb-alt, .toast { font-size: 14px; }
.rsvp-status, .demo-note, .lb-hint { font-size: 13px; line-height: 1.75; letter-spacing: .025em; }
.venue-title, .venue-heading { letter-spacing: .045em; line-height: 1.45; }

/* 屏风的题签也使用真实字体，避免旧纹理中的宋体轮廓与新字形重叠。 */
.vt-on .veil-kicker, .vt-on .veil-date, .vt-on .veil-hint { display: block; }
.veil-kicker { top: 27%; z-index: 9; letter-spacing: .12em; font-size: 25px; }
.veil-date { z-index: 9; color: #8C683B; }
.veil-hint { z-index: 9; color: #65444F; }
.a-venue { max-width: 100%; overflow-wrap: anywhere; line-height: 1.55; }
.dock-tool { padding-inline: 10px; }

/* v0.21.3：题签位于姓名整体上方；左右门的英文名保留正向竖排。 */
:root { --text-black: #222222; }
.veil-kicker {
  left: 0; right: auto; width: 100%;
  font-family: "Invitation Brush", "Kaiti SC", "KaiTi", "STKaiti", serif;
  font-size: clamp(27px, 7.7vw, 32px);
  line-height: 1.5;
  letter-spacing: .13em;
  text-indent: .13em;
  color: var(--text-black);
  text-shadow: none;
}
.veil-names-in {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  justify-items: center;
  align-items: center;
  gap: 0;
  padding-inline: 0;
  font-family: var(--latin);
  font-style: italic;
  color: #282626;
}
.veil-names { transform: none; }
.vn-name { display: flex; flex-direction: column; align-items: center; gap: .12em; line-height: 1.05; letter-spacing: 0; text-indent: 0; }
.vn-letter { display: block; line-height: 1.05; }
.vn-amp { font-size: .52em; line-height: 1; font-style: normal; }
.veil-date { line-height: 1.8; }
.op-compact-names .veil-date { left: 24%; right: auto; width: 52%; font-size: 12px; }

/* 梅紫与粉色文字换成墨黑。金色题签、白字按钮与图形颜色保留。 */
.b-cap, .e-cap, .f-cap, .c-cap, .d-cap, .f-whisper,
.q-poem, .w-poem, .iv-body, .iv-wish, .sd-what,
.rsvp-title, .rsvp input, .choice, .step,
.closing-line, .text-btn, .dock-main, .snd-pill, .lb-close,
.lb-alt, .fin-btn:not(.fin-main), .veil-hint { color: var(--text-black); }
.field-label, .form-error { color: var(--text-black); }
@media (max-height: 480px) {
  .veil-kicker { font-size: 24px; }
  .scene-opening-crown { width: min(90%, 280px); left: calc(50% - min(45%, 140px)); top: -6%; }
}
