/* Section content shared by the quick view and the sheets. */
.card-section { padding: 1.6rem 0 1.2rem; border-bottom: 1px dashed rgba(var(--rule-rgb), 0.45); }
.section-title { font-family: var(--font-serif); font-weight: 600; font-size: 1.75rem; color: var(--brand); margin: 0 0 0.8rem; text-align: center; }
.ornament { color: var(--brand-soft); margin-right: 0.35em; font-size: 0.8em; }
.invite-heading { text-align: center; font-family: var(--font-serif); font-size: 1.4rem; font-weight: 600; letter-spacing: 0.08em; margin: 0; }
.invite-guest { text-align: center; font-family: var(--font-serif); font-size: 1.6rem; color: var(--brand); margin: 0.2rem 0 1rem; }
.invite-text { text-align: center; margin: 0.8rem 0; }
.families { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; text-align: center; }
.family-label { margin: 0; font-weight: 600; text-transform: uppercase; letter-spacing: 0.12em; color: var(--brand-soft); font-size: 0.9rem; }
.family-name { margin: 0.15rem 0; font-family: var(--font-serif); font-size: 1.15rem; font-weight: 600; }
.family-address { margin: 0.2rem 0 0; font-size: 0.92rem; color: var(--ink-soft); }
.couple { text-align: center; margin: 0.6rem 0; }
.couple-name { margin: 0; font-size: 2.3rem; line-height: 1.15; }
.couple-amp { margin: 0; font-family: var(--font-serif); font-size: 1.4rem; color: var(--brand-soft); }
.event-card, .event-block, .venue, .gift-card {
  margin: 0.9rem 0; padding: 0.9rem 1rem; border-radius: var(--radius); background: rgba(255, 255, 255, 0.55);
  border: 1px solid rgba(var(--rule-rgb), 0.4);
}
.event-list { display: grid; gap: 0.8rem; margin: 0.9rem 0; }
.event-list .event-card { margin: 0; }
.event-card p { margin: 0; }
.event-kicker { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand-soft); }
.event-day { display: flex; flex-direction: column; margin: 0.3rem 0 0.1rem !important; }
.event-weekday { font-size: 0.85rem; color: var(--ink-soft); }
.event-date { font-family: var(--font-serif); font-size: 1.6rem; font-weight: 600; line-height: 1.15; color: var(--ink); }
.event-time { font-weight: 600; }
.event-place { margin-top: 0.55rem; padding-top: 0.55rem; border-top: 1px solid rgba(var(--rule-rgb), 0.3); }
.event-venue { font-weight: 600; }
.event-address { color: var(--ink-soft); }
.event-actions { margin: 0.7rem 0 0; }
.event-title { margin: 0 0 0.3rem; font-family: var(--font-serif); font-size: 1.3rem; font-weight: 600; }
.event-when { margin: 0; font-weight: 600; }
.event-lunar { margin: 0.15rem 0 0; color: var(--ink-soft); }
.timeline { list-style: none; padding: 0; margin: 0.5rem 0; border-left: 2px solid var(--rule); }
.timeline-step { position: relative; display: flex; gap: 0.8rem; align-items: baseline; padding: 0.35rem 0 0.35rem 1rem; }
.timeline-step::before { content: ''; position: absolute; left: -7px; top: 0.85rem; width: 12px; height: 12px; border-radius: 50%; background: var(--brand-soft); }
.timeline-step.is-now { background: rgba(var(--brand-soft-rgb), 0.08); border-radius: var(--radius-small); }
.timeline-time { font-weight: 600; min-width: 3.4em; }
.badge { margin-left: auto; padding: 0.1em 0.6em; border-radius: 999px; background: var(--brand-soft); color: #fff; font-size: 0.8rem; }
.count-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem; margin: 0.6rem 0; }
.count-cell { display: flex; flex-direction: column; align-items: center; padding: 0.6rem 0.2rem; border-radius: var(--radius-small); background: rgba(255, 255, 255, 0.6); border: 1px solid rgba(var(--rule-rgb), 0.4); }
.count-value { font-family: var(--font-serif); font-size: 2rem; font-weight: 600; color: var(--brand); line-height: 1.1; }
.count-unit { font-size: 0.85rem; color: var(--ink-soft); }
.count-message { text-align: center; font-weight: 600; margin: 0.4rem 0; }
.story { list-style: none; padding: 0; margin: 0; }
.story-item { padding: 0.8rem 1rem; margin: 0.6rem 0; border-left: 3px solid var(--rule); border-radius: 0 var(--radius) var(--radius) 0; background: rgba(255, 255, 255, 0.5); transition: background 0.3s; }
.story-item.is-active { background: rgba(var(--rule-rgb), 0.22); }
.story-date { margin: 0; font-size: 0.9rem; color: var(--brand-soft); font-weight: 600; }
.story-title { margin: 0.1rem 0 0.3rem; font-family: var(--font-serif); font-size: 1.25rem; }
.photo { position: relative; margin: 0.6rem 0; border-radius: var(--radius); overflow: hidden; background: center / cover no-repeat; aspect-ratio: 4 / 5; }
.photo img { display: block; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 0.4s; }
.photo.is-loaded img { opacity: 1; }
.photo-soon { display: grid; place-items: center; background: url('../assets/ui/ink-mountains.svg') bottom / 140% auto no-repeat, var(--accent-soft); color: var(--ink-soft); font-family: var(--font-serif); font-size: 1.3rem; }
.venue-address { margin: 0.2rem 0; font-weight: 600; }
.map-embed iframe { width: 100%; height: 260px; border: 0; border-radius: var(--radius); }
.landmark { color: var(--brand); }
.gift-joke { text-align: center; font-family: var(--font-serif); font-size: 1.15rem; font-style: italic; font-weight: 500; color: var(--ink-soft); }
.gift-number { font-size: 1.4rem; font-weight: 600; letter-spacing: 0.06em; margin: 0.2rem 0; }
.gift-qr { width: 200px; max-width: 70%; display: block; margin: 0.5rem auto; border-radius: var(--radius-small); }
.secret-note { font-size: 1.6rem; text-align: center; margin: 0.8rem 0; color: var(--brand); }
.secret-from { text-align: right; font-family: var(--font-serif); font-weight: 600; }
.summary-names { text-align: center; font-size: 2.2rem; margin: 0; }
.summary-when, .summary-where { text-align: center; margin: 0.2rem 0; }
.count-grid:has(.count-cell[hidden]) { grid-template-columns: 1fr; max-width: 12rem; margin-inline: auto; }
.event-when-line { margin: 0.25rem 0 0.2rem; font-family: var(--font-serif); font-size: 1.2rem; font-weight: 600; }
.count-to { text-align: center; margin: 0.5rem 0 0; }
.map-open { width: 100%; margin: 0.7rem 0 0.1rem; }
.event-countdown { margin-top: 0.35rem !important; font-size: 0.85rem; font-weight: 600; color: var(--brand-soft); }
.event-programme { list-style: none; margin: 0.6rem 0 0; padding: 0; display: grid; gap: 0.2rem; }
.event-programme li { display: flex; gap: 0.7rem; }
.event-programme-time { min-width: 3.2em; font-weight: 600; }
/* A name never breaks in two when the couple's names share a line. */
.name-part { white-space: nowrap; }
