/* 已确认的 B「手绘信笺」：两版共享视觉，不共享或切换宾客资料。 */
@font-face {
  font-family: "Wedding Pinyon";
  src: url("fonts/preview-pinyon.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  /* 英文、数字及配套标点共用 Pinyon，不能用 unicode-range 排除数字。 */
  font-feature-settings: "lnum";
}
/* 固定为真实 Light 字形，离线设备不依赖本机是否安装细体。 */
@font-face {
  font-family: "Wedding Cormorant";
  src: url("fonts/wedding-cormorant-light.woff2") format("woff2");
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  /* 默认使用齐线数字，避免日期与里程缩成大小不齐的旧式数字。 */
  font-feature-settings: "lnum";
}
:root {
  --latin: "Wedding Pinyon", "Times New Roman", serif;
  --digit: var(--latin);
  --address-latin: "Wedding Cormorant", "Bodoni 72", "Times New Roman", serif;
  --body: "Wedding Zhaohua", var(--digit), "Songti SC", serif;
  --serif: var(--body);
  --sans: var(--body);
  --letter-rule: #8d7b5b50;
  --paper: #fbf9f4;
  --header-height: 76px;
}
body {
  --paper-wash: #fbf9f4cc;
  background-color: var(--paper);
  font-weight: 400;
  font-synthesis: none;
  font-variant-numeric: lining-nums;
}
.section { background: transparent; }
/* 还原原先各分区的底色，只以低浓度纸纹叠加，不改变文字色值。 */
#arrival,#food { --paper-wash: #eeebe3d9; background-color: #eeebe3; }
.travel-atlas { --paper-wash: #f8f5edcc; background-color: #f8f5ed; }
.stay-card { --paper-wash: #f4f0e7cc; }
/* 不透明卡片也复用同一张纸纹，避免盖住整页的纸感；各自底色不变。 */
body,#arrival,#food,.travel-atlas,.stay-card {
  background-image: linear-gradient(var(--paper-wash),var(--paper-wash)),url("illustrations/paper-cotton-preview.webp");
  background-size: auto,620px 620px;
}
/* 攻略沿用原有内容宽度；地图点位与 200% 文字不能被信笺的窄边距挤压。 */
.section-heading { margin-bottom: 34px; text-align: left; }
.section-heading::after { content: none; }
.section-title { font-size: 31px; letter-spacing: .12em; line-height: 1.5; }
.section-intro { max-width: 660px; margin: 12px 0 0; line-height: 1.9; }
.site-header { background: #f6f3ecdd; border-bottom: 0; }
.header-inner { width: min(1180px,calc(100% - 72px)); }
.desktop-nav a { font-size: 16px; letter-spacing: .1em; }

/* 交通用有序步骤和向下箭头表达；窄屏也不折成方向不明的横向路线。 */
.arrival-route { display: grid; gap: 25px; list-style: none; margin: 22px 0; padding: 0; }
.arrival-route li { position: relative; display: grid; grid-template-columns: 24px minmax(0,1fr); gap: 12px; }
.arrival-route li + li::before { content: ""; position: absolute; top: -17px; left: 8px; width: 6px; height: 6px; border-right: 1px solid var(--gold); border-bottom: 1px solid var(--gold); transform: rotate(45deg); }
.arrival-route .travel-icon,.attraction-meta .travel-icon { width: 22px; height: 22px; margin-top: 4px; color: var(--gold); }
.arrival-route span { display: block; color: var(--muted); font-size: 14px; line-height: 1.5; }
.arrival-route strong,.arrival-route a { display: block; font-size: 18px; font-weight: 400; line-height: 1.6; }
.arrival-route a { width: fit-content; min-height: 44px; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.attraction-meta dt { display: flex; align-items: flex-start; }
/* 交通终点与地图入住点共用锚点，跳转后避开桌面固定页头。 */
#stay-title { scroll-margin-top: calc(var(--header-height) + 24px); }

/* 地址英文、酒店名中的 X 和地图信息优先易读，其余英文、数字保留 Pinyon。 */
.address-latin,#venue-address [lang="en"],.stay-card [lang="en"] { font: 300 1em var(--address-latin); }
.stay-card .section-label { font-size: 14px; letter-spacing: .05em; }
.travel-atlas {
  --body: "Wedding Zhaohua",var(--address-latin),"Songti SC",serif;
  --serif: var(--body);
  font-family: var(--body);
  font-weight: 300;
}
.mobile-dock a { min-height: 48px; }
.hero {
  width: min(1180px,calc(100% - 72px));
  min-height: 0;
  margin: 8px auto 0;
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0,.92fr);
  align-items: stretch;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}
.hero-media {
  order: 2;
  width: 100%;
  min-height: 0;
  aspect-ratio: 1068 / 1420;
  background: #29271f;
}
/* .hero-photo 保留原页已经验证过的源图纸边裁切，不再次覆盖。 */
.hero-copy {
  padding: 38px 56px 38px 20px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  text-align: left;
  background: transparent;
  line-height: 1.85;
}
.hero-title {
  padding-right: .12em;
  color: #5b4b37;
  font: 400 clamp(78px,8.3vw,116px)/1.25 var(--latin);
  letter-spacing: 0;
}
.invitation-line { font-size: 16px; letter-spacing: .22em; color: var(--muted); margin: 12px 0 27px; }
.couple-names { margin: 0; font-size: 28px; letter-spacing: .12em; line-height: 1.7; white-space: nowrap; }
.couple-names span { padding: 0; margin: 0 .25em; font: 35px/1 var(--latin); }
.hero-date { font: 400 28px/1.5 var(--digit); letter-spacing: .08em; margin-top: 18px; }
.hero-place { margin: 9px 0 0; font-size: 17px; letter-spacing: 0; }
.hero-action {
  display: inline-flex;
  align-items: center;
  gap: 15px;
  min-height: 44px;
  margin-top: 24px;
  color: #766348;
  font-size: 15px;
  text-decoration: none;
}
/* 链接滚动到下方婚礼安排，箭头与滚动方向一致。 */
.hero-action svg { width: 14px; height: 28px; }
.ink-etching { display: block; width: 260px; height: auto; margin: 22px 0 0 -14px; opacity: .84; mix-blend-mode: multiply; pointer-events: none; }

.wedding-section {
  width: min(1060px,calc(100% - 112px));
  margin: 74px auto 0;
  padding: 34px 0 65px;
  border-top: 1px solid var(--letter-rule);
  line-height: 1.85;
}
.wedding-section .section-heading { display: flex; align-items: baseline; gap: 20px; margin-bottom: 34px; text-align: left; }
.wedding-section .section-heading::after { content: none; }
.wedding-section h2 { font-size: 31px; letter-spacing: .12em; line-height: 1.5; }
.wedding-section .section-heading p { margin: 0; font-size: 16px; color: var(--muted); }
.wedding-details { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.15fr); gap: 58px; }
.venue h3 { margin: 0; font-size: 28px; line-height: 1.7; font-weight: 400; }
.venue-room { margin: 3px 0 18px; }
.venue address { max-width: 380px; font-size: 17px; line-height: 1.85; }
#venue-address { display: block; }
.address-tower { display: inline-block; white-space: nowrap; }
.venue .button-row { gap: 14px; margin-top: 19px; }
.venue .button,.venue .copy-button { padding: 7px 17px; font: 16px/1.85 var(--body); border: 1px solid var(--letter-rule); border-radius: 2px; letter-spacing: 0; }
.venue .button { color: #655338; background: transparent; border-color: #a58d65; }
.venue .button::after { content: none; }
.venue .button:hover { color: #8a6e42; background: #8772510d; }
.venue .copy-button:hover { background: #8772510d; }
.venue .copy-button svg { width: 16px; height: 16px; }
.venue .copy-status { min-height: 2em; }
.transit-note { margin: 6px 0 0; font-size: 15px; color: var(--muted); }
.wedding-section .timeline { padding: 0; border: 0; margin: 4px 0 0; }
.wedding-section .schedule-title { margin: 0 0 8px; color: var(--muted); font: 16px/1.7 var(--body); letter-spacing: .08em; }
/* 复用线上三行结构；时间、双语名称各自对齐，用细线区分，不增加图示。 */
.timeline-item { grid-template-columns: minmax(102px,max-content) minmax(0,1fr); padding: 20px 0; }
.timeline time { font: 400 35px/1.4 var(--digit); color: #766348; font-variant-numeric: lining-nums; }
.timeline-note[lang="en"] { margin-top: 3px; font: 400 20px/1.5 var(--latin); letter-spacing: 0; }
.stay-card { background-color: var(--paper-warm); border-color: var(--letter-rule); }
.stay-card::before { content: none; }

/* 一页信笺式收尾，复用正文纸纹与 Pinyon，不增加图片或交互。 */
.closing-section { padding: 96px 24px 104px; text-align: center; }
.closing-section h2 { margin: 0; color: #766348; font: 400 clamp(64px,8vw,84px)/1.3 var(--latin); overflow-wrap: anywhere; }
.closing-section p { margin: 18px 0 0; color: var(--muted); font-size: 16px; line-height: 2; letter-spacing: .1em; }

/* 平板延续原页单栏，避免窄双栏因文字变高而二次裁切人像。 */
@media (max-width: 1023px) {
  .header-inner,.hero { width: calc(100% - 48px); }
  .hero { display: flex; flex-direction: column; }
  .hero-media { order: 0; }
  .hero-copy { padding: 36px 30px; align-items: center; text-align: center; }
  .hero-title { font-size: 84px; }
  .ink-etching { width: 225px; margin: 14px 0 0; }
  .wedding-section { width: calc(100% - 72px); }
  .wedding-details { gap: 35px; }
  .timeline time { font-size: 30px; }
}
@media (max-width: 767px) {
  /* 手机照片直接贴顶；锚点也不再预留已经隐藏的页头高度。 */
  :root { --header-height: 0px; }
  .site-header { display: none; }
  /* 市区点位按三列错落留白，只示意方位，不按道路里程比例挤排。 */
  .map-spread .map-city .map-place { width: 88px; }
  .map-spread .map-city [data-place="taikoo"] { width: 94px; }
  /* 收尾短句避开固定目录与手机安全区，正文不再额外垫高。 */
  .closing-section { padding: 68px 24px calc(104px + env(safe-area-inset-bottom)); }
  .hero { width: 100%; margin: 0; }
  .hero-copy { padding: 30px 25px 24px; }
  .couple-names { font-size: 25px; letter-spacing: .1em; }
  .couple-names span { font-size: 30px; margin: 0 .15em; }
  .invitation-line { margin: 6px 0 20px; font-size: 15px; }
  .hero-date { margin-top: 12px; }
  .hero-place { margin-top: 5px; font-size: 16px; }
  .hero-action { margin-top: 13px; }
  .hero-action svg { display: none; }
  .ink-etching { margin: 11px 0 0; }
  .section-title { font-size: 29px; }
  .wedding-section { width: calc(100% - 48px); margin-top: 22px; padding: 30px 0 38px; }
  .wedding-section .section-heading { display: block; margin-bottom: 23px; }
  .wedding-section h2 { font-size: 29px; }
  .wedding-section .section-heading p { margin-top: 7px; font-size: 15px; }
  .wedding-details { display: block; }
  .venue h3 { font-size: 25px; }
  .venue-room { margin: 2px 0 13px; }
  .transit-note { margin-top: 8px; }
  .wedding-section .timeline { margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--letter-rule); }
  .timeline-item { grid-template-columns: minmax(82px,max-content) minmax(0,1fr); gap: 14px; }
}
