/* =========================================================
   layout-v2.css —— 时间线卷轴布局（大字号现代 + 竖向时间线）
   所有规则限定 .v2- 前缀，不与其它布局冲突
   ========================================================= */

html[data-theme="v2"] body{
  background-image:
    radial-gradient(ellipse 80% 50% at 50% -20%, rgba(192,57,43,.07), transparent 65%),
    radial-gradient(ellipse 50% 35% at 85% 90%, rgba(192,57,43,.05), transparent 60%);
}

/* 封面 */
.v2-hero{
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:calc(2.5rem + env(safe-area-inset-top)) 1.2rem 3.5rem;
  text-align:center;
  position:relative;
}
.v2-kicker{
  font-size:.85rem;
  letter-spacing:.5em;
  color:var(--ink-soft);
  margin-bottom:1.6rem;
  text-transform:uppercase;
}
.v2-names{
  font-size:clamp(2.6rem,11vw,5.2rem);
  font-weight:800;
  letter-spacing:.06em;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.45em;
  line-height:1.25;
}
.v2-heart{
  color:var(--pink);
  font-size:.9em;
  animation:heartbeat 1.8s ease-in-out infinite;
  display:inline-block;
}
@keyframes heartbeat{
  0%,100%{transform:scale(1);}
  25%{transform:scale(1.18);}
  40%{transform:scale(1);}
  55%{transform:scale(1.1);}
}
.v2-rule{
  width:64px;height:4px;
  background:var(--pink);
  margin:1.8rem auto;
  border-radius:2px;
}
.v2-date{
  font-size:1.05rem;
  letter-spacing:.3em;
  color:var(--ink-soft);
}

/* 倒计时 */
.v2-countdown{display:flex;gap:.6rem;margin-top:2.4rem;}
.v2-countdown .cd-item{
  background:var(--paper);
  border-radius:14px;
  box-shadow:var(--shadow-card);
  padding:.7rem 1rem;
  min-width:4.2rem;
  display:flex;
  flex-direction:column;
  align-items:center;
}
.v2-countdown .cd-num{
  font-size:1.7rem;
  font-weight:800;
  color:var(--pink);
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.v2-countdown .cd-lab{font-size:.72rem;color:var(--ink-soft);}
.v2-scroll{
  position:absolute;
  bottom:calc(1.6rem + env(safe-area-inset-bottom));
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:.3rem;
  color:var(--ink-soft);
  font-size:.8rem;
  letter-spacing:.2em;
}
.v2-scroll svg{width:18px;height:18px;animation:bounce 2s infinite;}
@keyframes bounce{0%,100%{transform:translateY(0);}50%{transform:translateY(8px);}}

/* 时间线 */
.v2-main{position:relative;z-index:1;}
.v2-timeline{
  max-width:760px;
  margin:0 auto;
  padding:3.5rem 1.2rem 3rem;
  scroll-margin-top:1rem;
}
.v2-title{
  font-size:1.9rem;
  font-weight:800;
  letter-spacing:.3em;
  text-align:center;
  margin-bottom:2.6rem;
}
.v2-title::after{
  content:'';
  display:block;
  width:48px;height:3px;
  background:var(--pink);
  margin:.8rem auto 0;
  border-radius:2px;
}
.tl{
  list-style:none;
  position:relative;
  display:flex;
  flex-direction:column;
  gap:1.6rem;
}
.tl::before{
  content:'';
  position:absolute;
  top:8px;bottom:8px;
  left:44px;
  width:2px;
  background:var(--line);
}
.tl-item{
  position:relative;
  display:grid;
  grid-template-columns:88px 1fr;
  gap:1.1rem;
  align-items:start;
}
.tl-marker{
  position:relative;
  z-index:1;
  background:var(--pink);
  color:#fff;
  border-radius:14px;
  padding:.55rem .3rem;
  text-align:center;
  box-shadow:0 4px 12px rgba(192,57,43,.3);
}
.tl-day{display:block;font-size:1.05rem;font-weight:800;letter-spacing:.05em;line-height:1.2;}
.tl-wk{display:block;font-size:.68rem;opacity:.85;letter-spacing:.15em;}
.tl-card{
  background:var(--paper);
  border-radius:16px;
  box-shadow:var(--shadow-card);
  padding:1.1rem 1.2rem 1rem;
}
.tl-tag{
  display:inline-block;
  font-size:.68rem;
  letter-spacing:.25em;
  color:var(--pink);
  border:1px solid rgba(192,57,43,.35);
  border-radius:20px;
  padding:.12rem .7rem;
  margin-bottom:.5rem;
}
.tl-card h3{
  font-size:1.35rem;
  font-weight:800;
  letter-spacing:.2em;
  margin-bottom:.25rem;
}
.tl-addr{
  font-size:.85rem;
  color:var(--ink-soft);
  line-height:1.6;
  margin-bottom:.7rem;
}
.tl-card .sub-nav{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  background:var(--pink);
  color:#fff;
  border:none;
  border-radius:24px;
  font-family:inherit;
  font-size:.78rem;
  letter-spacing:.1em;
  padding:.42rem 1.1rem;
  cursor:pointer;
  box-shadow:0 3px 10px rgba(192,57,43,.3);
}
.tl-card .sub-nav svg{width:13px;height:13px;}
.tl-card .sub-nav:active{opacity:.75;}
.v2-note{
  text-align:center;
  color:var(--ink-soft);
  font-size:.78rem;
  margin-top:1.6rem;
}

/* 留言 */
.v2-guest{
  max-width:760px;
  margin:0 auto;
  padding:2rem 1.2rem calc(6rem + env(safe-area-inset-bottom));
  scroll-margin-top:1rem;
}
.v2-form{
  background:var(--paper);
  border-radius:16px;
  box-shadow:var(--shadow-card);
  padding:1.3rem;
  margin-bottom:1.6rem;
  display:flex;
  flex-direction:column;
  gap:.8rem;
}
.v2-form .gb-input{
  width:100%;
  padding:.75rem .95rem;
  border:1.5px solid var(--line);
  border-radius:10px;
  background:var(--bg);
  font-family:inherit;
  font-size:1rem;
  color:var(--ink);
  outline:none;
  transition:border-color .2s,box-shadow .2s;
}
.v2-form .gb-input:focus{border-color:var(--pink);box-shadow:0 0 0 3px rgba(192,57,43,.12);}
.v2-form .gb-submit{
  align-self:center;
  padding:.62rem 2.6rem;
  background:var(--pink);
  color:#fff;
  border:none;
  border-radius:24px;
  font-family:inherit;
  font-size:1rem;
  letter-spacing:.15em;
  cursor:pointer;
  box-shadow:0 4px 14px rgba(192,57,43,.35);
  transition:transform .2s;
}
.v2-form .gb-submit:active{transform:scale(.96);}
.v2-list{display:flex;flex-direction:column;gap:.8rem;}
.v2-list .gb-item{
  background:var(--paper);
  border-radius:14px;
  box-shadow:var(--shadow-card);
  padding:1rem 1.15rem;
  border-left:4px solid var(--pink);
}
.v2-list .gb-item:nth-child(even){border-left-color:#8a857d;}
.v2-list .gb-item-name{color:var(--pink);font-weight:800;font-size:.95rem;}
.v2-list .gb-item:nth-child(even) .gb-item-name{color:var(--ink);}
.v2-list .gb-item-time{font-size:.7rem;color:var(--ink-soft);}
.v2-list .gb-item-msg{color:var(--ink);font-size:.95rem;line-height:1.7;word-break:break-word;}
.v2-list .like-btn{
  display:inline-flex;
  align-items:center;
  gap:.25rem;
  background:none;
  border:1px solid var(--line);
  border-radius:16px;
  padding:.26rem .65rem;
  margin-top:.55rem;
  font-family:inherit;
  font-size:.74rem;
  color:var(--ink-soft);
  cursor:pointer;
  transition:all .15s;
}
.v2-list .like-btn svg{width:14px;height:14px;}
.v2-list .like-btn .like-count{font-weight:bold;}
.v2-list .like-btn:active{transform:scale(.9);}
.v2-list .like-btn.liked{background:rgba(192,57,43,.1);border-color:var(--pink);color:var(--pink);}

/* 移动端 */
@media (max-width:560px){
  .tl::before{left:34px;}
  .tl-item{grid-template-columns:68px 1fr;gap:.9rem;}
  .tl-day{font-size:.95rem;}
  .v2-countdown .cd-item{min-width:3.6rem;padding:.6rem .7rem;}
  .v2-countdown .cd-num{font-size:1.4rem;}
  .v2-countdown{gap:.45rem;}
}

/* ===== 主宴突出 + 女方/男方地址（女方 --side-f，男方 --side-m） ===== */
.tl-item.main-feast{order:-1;}
.tl-item.main-feast .tl-marker{background:var(--side-m);box-shadow:0 4px 12px rgba(30,120,200,.35);}
.tl-item.main-feast .tl-card{padding:1.4rem 1.4rem 1.3rem;border:1px solid rgba(30,120,200,.25);}
.tl-item.main-feast .tl-tag{color:var(--side-m);border-color:var(--side-m);}
.tl-item.main-feast h3{font-size:1.65rem;}
.tl-item.main-feast .tl-addr{font-size:.98rem;}
.tl-item.main-feast .sub-nav{font-size:1rem;padding:.6rem 1.6rem;}
.tl-card .sub-nav{font-size:.88rem;padding:.52rem 1.3rem;}
.tl-card .side-tag{display:inline-block;font-size:.64rem;letter-spacing:.1em;color:#fff;border-radius:10px;padding:.03rem .5rem;margin-right:.3rem;vertical-align:1px;}
.tl-card .side-tag.side-f{background:var(--side-f);}
.tl-card .side-tag.side-m{background:var(--side-m);}
.tl-card .addr-copy{background:none;border:none;padding:0;font-family:inherit;font-size:inherit;color:var(--side-f);border-bottom:1px dashed currentColor;cursor:pointer;}
.tl-card .addr-copy.side-m{color:var(--side-m);}
.tl-card .addr-copy.copied{border-bottom-style:solid;}
.tl-card .addr-copy.copied::after{content:' ✓已复制';font-size:.9em;}
.tl-card .addr-copy.copy-fail::after{content:' 未复制，长按文字';font-size:.9em;}
.tl-card .evt-note{font-size:.72rem;color:var(--ink-soft);margin:.4rem 0 .6rem;}
.tl .feast-divider{list-style:none;margin-left:88px;text-align:center;color:var(--ink-soft);font-size:.72rem;letter-spacing:.5em;text-indent:.5em;padding:.2rem 0;}
.tl .feast-divider::before,.tl .feast-divider::after{content:'';display:inline-block;width:30px;height:1px;background:var(--line);vertical-align:middle;margin:0 .6em;}
.tl-item:not(.main-feast) .tl-marker{padding:.4rem .2rem;box-shadow:none;}
.tl-item:not(.main-feast) .tl-day{font-size:.82rem;}
.tl-item:not(.main-feast) .tl-wk{font-size:.6rem;}
.tl-item:not(.main-feast) .tl-card{padding:.85rem 1rem .8rem;}
.tl-item:not(.main-feast) .tl-tag{font-size:.6rem;}
.tl-item:not(.main-feast) h3{font-size:1.1rem;}
.tl-item:not(.main-feast) .tl-addr{font-size:.76rem;}
.tl-item:not(.main-feast) .sub-nav{font-size:.74rem;padding:.38rem .95rem;}
@media (max-width:560px){.tl .feast-divider{margin-left:68px;}}
.tl-card.side-f{background:linear-gradient(rgba(214,51,108,.035),rgba(214,51,108,.035)) var(--paper);}
.tl-card.side-m{background:var(--paper);}
.tl-item.main-feast .tl-card{background:var(--paper);}
.tl-card.side-f .sub-nav{background:#d6336c;box-shadow:0 3px 10px rgba(214,51,108,.3);}
.tl-card.side-m .sub-nav{background:#1e78c8;box-shadow:0 3px 10px rgba(30,120,200,.3);}
