/* The card's section layouts: ivory sheets, soft white cards with a rose hairline, generous spacing,
   centred formal text, pill buttons (body.edition-uyen). */
.edition-uyen .sheet-panel { background: var(--paper); }
.edition-uyen .sheet-header { padding: 0.35rem 0.6rem 0.6rem 1.2rem; border-bottom: 1px solid var(--hairline); }
.edition-uyen .sheet-title { font-size: var(--fs-title); line-height: 1.15; }
.edition-uyen .sheet-body { padding: 0.4rem 1.1rem calc(1.6rem + var(--safe-bottom)); }
.edition-uyen .sheet-body .card-section { padding-top: 0.8rem; }
.edition-uyen .card-section { border-bottom: 0; }
.edition-uyen .section-title { font-size: 2rem; line-height: 1.15; margin-bottom: 1rem; }
.edition-uyen .ornament { color: var(--rule); }
/* Body copy breathes; a component that sets its own line-height wins (no specificity from the edition). */
:where(.edition-uyen) p { line-height: 1.6; }

/* Shared card look. */
.edition-uyen .event-card, .edition-uyen .event-block, .edition-uyen .venue,
.edition-uyen .families, .edition-uyen .count-grid {
  background: #ffffff; border: 1px solid var(--hairline); border-radius: 18px;
  box-shadow: 0 6px 18px rgba(var(--brand-rgb), 0.06);
}
.edition-uyen .event-card, .edition-uyen .event-block, .edition-uyen .venue { padding: 1.05rem 1.2rem; }
.edition-uyen .button { border-color: var(--hairline); border-width: 1px; font-weight: 600; }
.edition-uyen .button-ghost { color: var(--brand); background: var(--accent-soft); border-color: transparent; }
.edition-uyen .button-primary { background: var(--accent); border-color: var(--accent-deep); color: var(--on-accent); }
.edition-uyen .button-row { gap: 0.5rem; }

/* Invitation: centred, formal rhythm. */
.edition-uyen .invite-heading { color: var(--brand-soft); margin-top: 0.4rem; }
.edition-uyen .invite-guest { font-size: 2rem; line-height: 1.2; margin: 0.25rem 0 1.1rem; }
.edition-uyen .families { position: relative; gap: 0; padding: 0.95rem 0.2rem; text-align: center; }
.edition-uyen .families::after { content: ''; position: absolute; left: 50%; top: 18%; bottom: 18%; width: 1px; background: var(--hairline); }
.edition-uyen .family { padding: 0 0.4rem; }
.edition-uyen .family-label { color: var(--brand-soft); margin-bottom: 0.35rem; }
.edition-uyen .family-name { font-family: var(--font-ui); font-size: 0.9rem; font-weight: 400; line-height: 1.45; margin: 0.1rem 0; text-wrap: balance; }
.edition-uyen .family-address { font-size: 0.8125rem; margin-top: 0.35rem; text-wrap: balance; }
.edition-uyen .invite-text {
  max-width: 22em; margin: 1.1rem auto; font-family: var(--font-serif); font-style: italic; font-weight: 500; font-size: 1.3rem; line-height: 1.4;
  color: var(--ink); text-wrap: balance;
}
.edition-uyen .couple { margin: 1rem 0 1.2rem; }
.edition-uyen .couple-name { font-size: clamp(3rem, 14vw, 3.75rem); line-height: 1.1; }
.edition-uyen .couple-amp { display: block; font-size: 1.6rem; line-height: 1.3; margin: 0.1rem 0; }

/* Ceremony cards. */
.edition-uyen .event-list { gap: 0.75rem; }
.edition-uyen .event-kicker { color: var(--brand-soft); }
.edition-uyen .event-day { margin-top: 0.35rem !important; }
.edition-uyen .event-weekday { font-size: var(--fs-note); letter-spacing: 0.04em; }
.edition-uyen .event-date { font-size: var(--fs-date); line-height: 1.1; letter-spacing: 0.01em; color: var(--brand); }
.edition-uyen .event-time { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 600; }
.edition-uyen .event-lunar { font-family: var(--font-serif); font-size: 1.1rem; font-weight: 500; color: var(--ink-soft); font-style: italic; }
.edition-uyen .event-place { margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px dashed var(--hairline); }
.edition-uyen .event-venue { font-family: var(--font-serif); font-size: 1.35rem; font-weight: 700; line-height: 1.25; color: var(--brand); }
.edition-uyen .event-address { font-size: var(--fs-note); }
.edition-uyen .event-actions .button { min-height: 2.5rem; padding: 0.35em 1.1em; font-size: var(--fs-note); }

/* Countdown: big serif numerals, no boxes inside the card. */
.edition-uyen .count-grid { gap: 0; padding: 0.9rem 0.3rem; }
.edition-uyen .count-cell { background: none; border: 0; padding: 0.2rem 0; }
.edition-uyen .count-cell + .count-cell { border-left: 1px solid var(--hairline); }
.edition-uyen .count-value { font-size: 2.75rem; line-height: 1.05; color: var(--brand); }
.edition-uyen .count-unit { color: var(--ink-soft); margin-top: 0.15rem; }
.edition-uyen .count-grid:has(.count-cell[hidden]) { grid-template-columns: 1fr; }
.edition-uyen .count-grid:has(.count-cell[hidden]) .count-value { font-size: 4rem; }
.edition-uyen #section-countdown > .muted { text-align: center; font-size: var(--fs-note); }

/* Schedule. */
.edition-uyen .event-block .event-title { font-family: var(--font-serif); font-size: 1.6rem; font-weight: 600; color: var(--brand); }
.edition-uyen .timeline { border-left: 1px solid var(--hairline); margin-left: 0.3rem; }
.edition-uyen .timeline-step::before { width: 9px; height: 9px; left: -5px; top: 0.95rem; background: var(--brand-soft); box-shadow: 0 0 0 3px #fff; }
.edition-uyen .timeline-time { font-family: var(--font-serif); font-size: 1.25rem; font-weight: 700; color: var(--brand); }

/* Directions. */
.edition-uyen .venue .event-title { font-family: var(--font-serif); font-weight: 600; color: var(--brand); }
.edition-uyen .venue-address { font-weight: 400; }
.edition-uyen .landmark { color: var(--ink); font-size: var(--fs-note); }

/* Forms: soft fields, pill choices. */
.edition-uyen .field > span, .edition-uyen .field legend { font-size: var(--fs-note); font-weight: 600; color: var(--ink); margin-bottom: 0.15rem; }
.edition-uyen .field input:not([type='radio']):not([type='checkbox']), .edition-uyen .field select, .edition-uyen .field textarea {
  border: 1px solid var(--hairline); border-radius: 14px; background: #fff; padding: 0.65rem 0.9rem;
}
.edition-uyen .field input:focus, .edition-uyen .field textarea:focus, .edition-uyen .field select:focus { outline: 2px solid rgba(var(--brand-soft-rgb), 0.35); outline-offset: 1px; }
.edition-uyen .choice { margin: 0.3rem 0; border: 1px solid var(--hairline); border-radius: 14px; background: #fff; padding: 0 0.85rem; }
.edition-uyen .choice:has(input:checked) { background: var(--accent-soft); border-color: rgba(var(--brand-soft-rgb), 0.4); }
.edition-uyen .choice input { accent-color: var(--brand-soft); }
.edition-uyen .form-soon { text-align: center; padding: 1.4rem 1rem; border-radius: 18px; background: var(--accent-soft); color: var(--ink); }

/* Wishes. */

/* Summary and essentials. */
.edition-uyen .summary-names { font-size: clamp(2.4rem, 10.5vw, 3rem); line-height: 1.15; margin: 0.2rem 0 0.9rem; }

/* Quick view chrome. */
.edition-uyen .quick-cover { background: linear-gradient(180deg, var(--accent-soft) 0%, var(--paper) 100%); }
.edition-uyen .chip { border: 1px solid var(--hairline); background: #fff; color: var(--brand); font-weight: 600; }
.edition-uyen .quick-main .card-section { padding: 1.4rem 0; }

/* Station pages, round two: shared place card, schedule headers, directions, summary buttons. */
.edition-uyen .event-shared-place { text-align: center; background: var(--accent-soft); border-color: transparent; box-shadow: none; }
.edition-uyen .event-shared-place .event-venue { font-size: 1.5rem; }
.edition-uyen .event-shared-place .event-actions { justify-content: center; }
.edition-uyen .event-shared-place .button-ghost { background: #fff; }
.edition-uyen .event-list:has(.event-shared-place) { grid-template-columns: 1fr 1fr; }
.edition-uyen .event-list:has(.event-shared-place) .event-shared-place { grid-column: 1 / -1; }
.edition-uyen .event-list:has(.event-shared-place) .event-card:not(.event-shared-place) { text-align: center; padding: 0.9rem 0.6rem; }
.edition-uyen .event-list:has(.event-shared-place) .event-date { font-size: clamp(1.5rem, 6.6vw, 1.9rem); white-space: nowrap; }
.edition-uyen .event-list:has(.event-shared-place) .event-lunar { font-size: 0.95rem; }
.edition-uyen .event-when-line { font-size: 1.4rem; color: var(--brand); }
.edition-uyen .event-block .timeline { margin-top: 0.6rem; }
.edition-uyen .count-to { font-size: var(--fs-note); }
.edition-uyen .venue .event-title { font-size: 1.6rem; margin: 0.2rem 0 0.1rem; }
.edition-uyen .map-open { min-height: 3rem; }
.edition-uyen .venue .button-row { justify-content: center; margin-top: 0.55rem; }
.edition-uyen #section-summary .button-row { flex-direction: column; align-items: stretch; }
.edition-uyen #section-summary .button { width: 100%; min-height: 2.9rem; }
.edition-uyen .summary-when, .edition-uyen .summary-where { font-size: 0.95rem; }
.edition-uyen .summary-when { font-family: var(--font-serif); font-size: 1.4rem; font-weight: 600; color: var(--ink); }
.edition-uyen .venue .button-row { flex-wrap: nowrap; }
.edition-uyen .venue .button-row .button { flex: 1; padding-inline: 0.6em; font-size: var(--fs-note); }
.edition-uyen .event-home { background: #fff; border: 1px dashed var(--hairline); }
.edition-uyen .event-home .button-ghost { background: var(--accent-soft); }
.edition-uyen .event-countdown { color: var(--brand-soft); font-size: var(--fs-note); letter-spacing: 0.02em; }
.edition-uyen .event-programme-time { font-family: var(--font-serif); font-size: 1.15rem; font-weight: 700; color: var(--brand); }
