/* 封面与图文区块。 */
.hero { width: 100%; padding-top: 48px; overflow: hidden; }
.cover-heading { position: relative; padding: 0 26px; min-height: 126px; text-align: right; }
.cover-orbit { position: absolute; left: -66px; top: -102px; width: 224px; height: 224px; border: 1px solid #a5665d; border-radius: 50%; }
.cover-orbit span { position: absolute; right: 30px; bottom: 31px; font: 19px var(--serif); letter-spacing: 6px; color: #a5665d; transform: rotate(-12deg); }
.cover-note { position: relative; color: #8b7668; font: 11px var(--serif); letter-spacing: 2px; margin-bottom: 19px; }
.cover-heading h1 { position: relative; font: 600 clamp(36px,10vw,62px)/1.05 Georgia, 'Times New Roman', serif; letter-spacing: -1.5px; }
.cover-names { display: flex; align-items: center; justify-content: center; gap: 27px; font: 23px/1.5 var(--serif); letter-spacing: 2px; margin: 33px 20px 30px; }
.cover-names i { font: 27px Georgia, serif; }
.cover-photograph { padding: 0 22px 20px; background: linear-gradient(to bottom, #fff 18%, #8c765a 18%); }
.cover-photo { aspect-ratio: 3 / 4; }
.cover-date { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 20px; color: #fffcf5; }
.cover-date time { font: 21px Georgia, serif; letter-spacing: 2px; }
.cover-date span { font-size: 11px; letter-spacing: 1px; }
.cover-intro { text-align: center; padding: 31px 25px 20px; background: #f5f2e8; font: 15px/2.2 var(--serif); letter-spacing: 2px; }
.read-invitation { display: inline-block; min-width: 44px; min-height: 44px; margin-top: 10px; color: var(--brown); }
#invitation { width: 100%; background: #f5f2e8; padding: 18px 28px 44px; }
.future-pair { width: 80%; margin-left: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 5px; }
.future-pair img { height: auto; aspect-ratio: 3 / 4.6; }
.future-label { text-align: right; margin-top: 10px; }
.future-label h2 { font: 600 19px Georgia, serif; letter-spacing: -.5px; }
.future-label p { font: 10px/1.8 var(--serif); color: var(--muted); margin-top: 4px; }
.invitation-letter { margin-top: 37px; padding-bottom: 26px; border-bottom: 1px solid #847c70; }
.invitation-letter .letter-copy { font-size: 14px; margin: 0; }
.signature { margin-top: 23px; font: 16px var(--serif); letter-spacing: 1px; }
.signature i { font-family: Georgia, serif; margin-inline: 8px; color: var(--brown); }
.signature small { color: var(--muted); font-size: 10px; margin-left: 10px; }
/* 地点仍是清楚易用的信息区，不增加常驻操作栏。 */
.location-background { background: #f5f2e8; }
#location { padding-block: 42px; }
.location-copy > .eyebrow { text-align: center; margin-bottom: 13px; }
.location-copy h2 { text-align: center; font-size: 25px; }
.location-copy h3 { margin-top: 28px; font: 20px/1.7 var(--serif); }
.address { margin-top: 13px; font-size: 14px; }
.location-actions { display: flex; align-items: center; gap: 22px; margin-top: 23px; flex-wrap: wrap; }
.location-actions .button { flex: 1; }
.map-card { margin-top: 26px; padding: 6px; border: 1px solid var(--line); background: #fffdfa; }
.map-surface { position: relative; height: 270px; overflow: hidden; }
.amap-location-map { width: 100%; height: 100%; }
.map-caption { display: flex; align-items: center; gap: 10px; padding: 10px 6px; }
.map-pin { font-size: 27px; color: var(--brown); }
.map-caption strong { font-size: 12px; font-weight: 500; }
.map-caption p, .map-help { font-size: 11px; color: var(--muted); }
.map-caption a { margin-left: auto; padding: 9px; font-size: 24px; }
.map-help { padding: 0 6px 8px; }
.map-empty { height: 270px; display: grid; place-items: center; }
.closing { padding-block: 45px 25px; }
.closing-copy { text-align: center; }
.closing-copy h2 { font-size: 24px; line-height: 1.8; }
.closing-copy .eyebrow { font-size: 8px; letter-spacing: 1px; }
.closing-copy > p:last-child { margin-top: 20px; color: var(--muted); font: 14px/2.2 var(--serif); }
.closing-image { margin-top: 30px; }
.closing-image img { height: auto; aspect-ratio: 3 / 2; }
.closing-image figcaption { font: italic 19px Georgia, serif; text-align: right; margin-top: 12px; color: var(--brown); }
.closing-mark { text-align: center; font: italic 29px Georgia, serif; margin-top: 28px; color: var(--wine); }
@media(min-width:600px) {
  .hero { padding-top: 58px; }
  .cover-heading { padding-inline: 40px; }
  .cover-orbit { width: 280px; height: 280px; top: -130px; }
  .cover-orbit span { right: 46px; bottom: 34px; }
  .cover-photograph { padding-inline: 36px; }
  #invitation { padding-inline: 48px; }
}
@media(max-width:360px) {
  .cover-heading { padding-inline: 20px; }
  .cover-heading h1 { font-size: 34px; }
  .cover-orbit { left: -96px; }
  .cover-names { font-size: 21px; gap: 20px; }
}
