.central-1000 { max-width: 1000px; }
.timeline-intro {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 2.4rem;
  padding: 1.2rem 1.5rem;
  border: 1px solid rgba(255, 117, 163, .18);
  border-radius: 1.2rem;
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 8px 18px rgba(82, 75, 79, .08);
}
.timeline-intro > span { display: grid; place-items: center; width: 3rem; height: 3rem; flex: 0 0 auto; border-radius: 50%; background: #fff0f5; color: #ff75a3; font-size: 1.5rem; }
.timeline-intro strong { color: #615a61; font-family: 'Noto Serif SC', serif; font-size: 1.15rem; }
.timeline-intro p { margin: .25rem 0 0; color: #999; }
.love-timeline { position: relative; display: grid; gap: 2rem; padding: .3rem 0 1rem; }
.love-timeline::before { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 3px; border-radius: 3px; background: linear-gradient(#ffb7cf, #ff75a3, #ffc9da); transform: translateX(-50%); }
.timeline-event { position: relative; width: calc(50% - 2.2rem); box-sizing: border-box; padding: 1.35rem; border: 1px solid rgba(208, 206, 206, .45); border-radius: 1.25rem; background: #fff; box-shadow: 0 8px 20px rgba(75, 67, 72, .1); }
.timeline-event:nth-child(even) { justify-self: end; }
.timeline-event::before { content: ''; position: absolute; top: 1.7rem; width: 1rem; height: 1rem; border: 4px solid #fff; border-radius: 50%; background: #ff75a3; box-shadow: 0 0 0 2px #ffb4cc; }
.timeline-event:nth-child(odd)::before { right: -2.78rem; }
.timeline-event:nth-child(even)::before { left: -2.78rem; }
.timeline-event.important { border-color: rgba(255, 117, 163, .5); background: linear-gradient(145deg, #fff, #fff7fa); }
.timeline-event.important::before { background: #20b96b; box-shadow: 0 0 0 2px #8ee0b4; }
.timeline-date { display: inline-flex; align-items: center; gap: .4rem; margin-bottom: .65rem; padding: .3rem .65rem; border-radius: 999px; background: #fff0f5; color: #e65e8d; font-size: .85rem; font-weight: 700; }
.timeline-event h2 { margin: 0 0 .55rem; color: #595259; font-family: 'Noto Serif SC', serif; font-size: 1.25rem; }
.timeline-location { margin: 0 0 .65rem; color: #8c9691; font-size: .88rem; }
.timeline-text { margin: 0; color: #686168; line-height: 1.8; overflow-wrap: anywhere; }
.timeline-photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; margin-top: 1rem; }
.timeline-photos img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: .75rem; box-shadow: 0 3px 10px rgba(58, 54, 56, .12); }
.timeline-important { float: right; color: #ff75a3; font-size: .85rem; font-weight: 700; }
.timeline-empty { position: relative; z-index: 1; text-align: center; }
@media (max-width: 760px) {
  .love-timeline { padding-left: 2.2rem; }
  .love-timeline::before { left: .65rem; transform: none; }
  .timeline-event,
  .timeline-event:nth-child(even) { width: 100%; justify-self: stretch; }
  .timeline-event:nth-child(odd)::before,
  .timeline-event:nth-child(even)::before { left: -2.18rem; right: auto; }
}
