/* ==========================================================================
   THIỆP CƯỚI 14 | KIỂU 4 — THƯ TAY (theo canvas "Kiểu 4 — Thư tay (chi tiết)")
   Nền giấy #efe7da · mỗi mục là một lá thư #fbf7f0 viền nâu #a68a64 (viền kép ở bìa & lễ/tiệc)
   Chữ #5b4632 · đậm #3e2e20 · kẻ phụ #d9c9ae · dấu sáp 囍
   Playfair Display (tên, số, tiêu đề nghiêng) + Be Vietnam Pro (chữ thường). Nút chữ nhật.
   Giữ reveal scroll trái↔phải. Chỉ skin — không đụng logic.
   ========================================================================== */

:root {
  --ground: #efe7da;
  --paper: #fbf7f0;
  --paper-field: #fffdf9;
  --paper-deep: #e2d6c2;
  --ink: #3e2e20;
  --ink-soft: #5b4632;
  --hairline: #a68a64;
  --hair-soft: #d9c9ae;
  --accent: #5b4632;
  --serif: 'Playfair Display', Georgia, 'Times New Roman', serif;
  /* Đồng bộ token cũ từ variables.css */
  --blue-accent: var(--ink);
  --blue-pill-hover: var(--ink);
  --rose-light: var(--ink);
  --rose-accent: var(--ink);
  --rose-pill-hover: var(--ink);
}

/* ---- Nền & khung thiệp ---------------------------------------------------- */
body { background: #e6dccb !important; color: var(--ink-soft); font-family: var(--font-sans); }
::selection { background: var(--paper-deep); color: var(--ink); }

.wedding-single-card {
  max-width: 900px !important; background: var(--ground) !important; border: 0 !important;
  box-shadow: 0 0 0 1px var(--hair-soft) !important; overflow: hidden; padding-bottom: 8px;
}
.main-wrapper { max-width: 900px !important; }

body .falling-xi-container,
body.invite-opened .falling-xi-container:not(.falling-xi-container--cover),
.app-background-layer, .hero-watercolor-dome, .hero-curved-banner, .ceremony-rings-wrap, .ceremony-sparkle-center,
.countdown-star, .cd-box-sep, .gift-box-ambient-sparkles, .gift-box-watercolor-img,
.venue-pin-icon, .couple-side-sub-divider, .flank-line, .heart-divider-line { display: none !important; }

/* Giữ reveal L↔R từ scroll-animations.css — không override transform */

/* Mỗi section chỉ chứa các "lá thư"; khoảng cách giữa các lá thư 20px */
.wedding-single-card .card-section { position: relative; padding: 20px 20px 0 !important; text-align: center; }
.wedding-single-card .section-ceremony { padding: 28px 20px 0 !important; }
.wedding-single-card :is(.c1-top-intro-block, .couple-sides-block, .info-white-panel, .countdown-card-design4, .venue-bottom-c2,
  .timeline-block-design2, .dresscode-block-c2, .guestbook-block-c3, .gift-block-c3, #reception-bride, .reception-cta-actions, .brand-footer-block) {
  max-width: 560px !important; margin-left: auto !important; margin-right: auto !important; width: 100% !important; box-sizing: border-box !important;
}

/* ---- Lá thư: giấy kem, viền nâu đơn -------------------------------------- */
.wedding-single-card :is(.c1-top-intro-block, .couple-sides-block, .countdown-card-design4, .venue-bottom-c2,
  .timeline-block-design2, .dresscode-block-c2, .guestbook-block-c3, .gift-block-c3) {
  position: relative; background: var(--paper) !important; border: 1px solid var(--hairline) !important; border-radius: 0 !important;
  box-shadow: none !important; padding: 40px 28px !important; margin-top: 20px !important; margin-bottom: 0 !important; color: var(--ink-soft) !important;
}
.wedding-single-card .section-ceremony .c1-top-intro-block { margin-top: 0 !important; }
/* Album: cả section là một lá thư */
.wedding-single-card .section-gallery { padding: 20px 20px 0 !important; }
.wedding-single-card .section-gallery > * { max-width: 560px; margin-left: auto; margin-right: auto; }
.wedding-single-card .section-gallery::before {
  content: ''; position: absolute; top: 20px; bottom: 0; left: 50%; transform: translateX(-50%);
  width: calc(100% - 40px); max-width: 560px; background: var(--paper); border: 1px solid var(--hairline); box-sizing: border-box; z-index: 0; pointer-events: none;
}
.wedding-single-card .section-gallery > * { position: relative; z-index: 1; }
.wedding-single-card .section-gallery .gallery-header-block { padding-top: 32px !important; }
.wedding-single-card .section-gallery .gallery-bottom-quote { padding: 0 24px 28px !important; }
.wedding-single-card .section-gallery :is(.gallery-block-c2, .gallery-thumbs-row) { padding-left: 24px !important; padding-right: 24px !important; box-sizing: border-box; }

/* ---- Nhãn mục: 18px, 1 dòng (trừ title lễ/tiệc dài — xem block wrap bên dưới) - */
.wedding-single-card :is(.card-heading-title, .rb-heading),
.wedding-single-card .card-heading-title:not(.card-intro-heading),
.wedding-single-card .reception-lead-c2.card-heading-title,
.wedding-single-card .card-heading-title.card-intro-heading.hero-top-title,
.wedding-single-card .hero-top-title,
.hero-top-title.card-heading-title {
  font-family: var(--font-sans) !important; font-size: 18px !important; font-weight: 400 !important; letter-spacing: 2px !important;
  text-transform: uppercase !important; text-align: center !important; color: var(--ink-soft) !important; white-space: nowrap !important;
  line-height: 1.4 !important; margin: 0 0 18px !important; transform: none !important;
}
.wedding-single-card .card-heading-title::after {
  content: '' !important; display: block !important; width: 40px; height: 1px; margin: 14px auto 0; background: var(--hairline);
}

/* ---- Màn bìa: lá thư viền kép, dấu sáp ------------------------------------ */
.cover-screen-wrapper, .cover-loading-overlay { background: var(--ground) !important; padding: 0 !important; }
.cover-card-container { width: 100% !important; max-width: 900px !important; height: 100%; animation: none !important; }
.cover-card-box {
  position: relative; min-height: 100% !important; height: 100%; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
  background: var(--ground) !important; padding: 28px !important; display: flex !important; align-items: stretch !important; justify-content: center !important;
}
.cover-card-box::before, .cover-card-box::after { display: none !important; content: none !important; }
.cover-card-inner,
.cover-card-inner--letter {
  position: relative; z-index: 2; box-sizing: border-box;
  display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important;
  justify-content: center !important; height: 100%; width: 100%; max-width: 480px; margin: 0 auto;
  padding: 32px !important; gap: 0;
  background: var(--paper); border: 1px solid var(--hairline); outline: 1px solid var(--hairline); outline-offset: -8px;
}
/* Dấu sáp 囍 */
.cover-card-inner::before {
  content: '囍'; display: flex; align-items: center; justify-content: center; width: 56px; height: 56px; margin-bottom: 26px; flex: none;
  border-radius: 50%; background: var(--ink); color: var(--paper); font-family: "Noto Serif SC", serif; font-size: 24px; line-height: 1;
  box-shadow: 0 0 0 4px var(--paper), 0 0 0 5px var(--hairline);
}
.cover-to-label {
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 4px !important;
  text-transform: uppercase !important; color: var(--ink-soft) !important; margin: 0 0 12px !important;
}
.cover-invite-label { margin: 0 !important; justify-content: center !important; }
.cover-guest-invite-inner { display: flex; flex-direction: column; align-items: center; gap: 0; }
.cover-guest-name,
.cover-guest-placeholder {
  font-family: var(--serif) !important; font-size: 22px !important; font-weight: 400 !important;
  font-style: italic !important; color: var(--ink) !important; margin: 0 !important; line-height: 1.3 !important;
}
.cover-guest-placeholder { color: var(--ink-soft) !important; }
.cover-divider { display: block; width: 40px; height: 1px; margin: 18px auto; background: var(--hairline); flex-shrink: 0; }
.cover-invite-body {
  font-family: var(--serif) !important; font-size: 17px !important; font-style: italic !important; font-weight: 400 !important; line-height: 1.7 !important;
  letter-spacing: 0.02em !important; color: var(--ink) !important; margin: 0 0 22px !important; max-width: 300px; text-align: center !important; text-wrap: balance;
}
.cover-names { display: flex !important; flex-direction: column !important; align-items: center !important; gap: 2px !important; margin: 0 !important; }
.cover-names .c-name {
  font-family: var(--serif) !important; font-style: normal !important; font-weight: 400 !important;
  font-size: clamp(2.2rem, 10.5vw, 2.5rem) !important; line-height: 1.15 !important; letter-spacing: 0 !important; color: var(--ink) !important;
}
.cover-names-and {
  font-family: var(--serif) !important; font-size: 26px !important; font-style: italic !important; font-weight: 400 !important; letter-spacing: 0 !important;
  text-transform: none !important; color: var(--ink) !important; margin: 0 !important; line-height: 1.15 !important;
}
.cover-date {
  font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 3px !important; line-height: 2 !important;
  text-transform: uppercase !important; color: var(--ink-soft) !important; margin: 0 0 24px !important; padding: 0 !important;
}
.btn-cover-open {
  min-height: 46px; margin: 0 !important; padding: 0 28px !important; border-radius: 0 !important;
  background: transparent !important; background-image: none !important; color: var(--ink) !important; border: 1px solid var(--ink-soft) !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important;
  box-shadow: none !important; animation: none !important;
}
.btn-cover-open:hover { background: var(--ink) !important; border-color: var(--ink) !important; color: var(--paper) !important; transform: none !important; box-shadow: none !important; }
.btn-cover-open:disabled { opacity: 0.45; cursor: wait; }

/* ---- Điều khiển nổi -------------------------------------------------------- */
.lang-trigger-btn, .floating-music-c3, .lang-dropdown {
  background: var(--paper) !important; color: var(--ink) !important; border: 1px solid var(--hairline) !important;
  border-radius: 0 !important; box-shadow: none !important; font-family: var(--font-sans) !important;
}
.lang-btn { color: var(--ink-soft) !important; background: transparent !important; }
.lang-btn.active, .lang-btn:hover { color: var(--ink) !important; background: var(--paper-deep) !important; }

/* ---- Save the date: ảnh lồng khung như ảnh in ----------------------------- */
.wedding-single-card .c1-top-intro-block { display: flex !important; flex-direction: column; align-items: center; text-align: center !important; }
.wedding-single-card .c1-top-intro-block .hero-header-badge { order: 0; margin: 0 !important; padding: 0 !important; text-align: center; }
.wedding-single-card .c1-top-intro-block .hero-top-title { margin: 0 !important; }
.wedding-single-card .c1-top-intro-block .hero-top-title::after { display: none !important; }
.wedding-single-card .c1-top-intro-block .hero-arch-container { order: 1; width: 100% !important; max-width: 340px !important; margin: 24px auto 0 !important; }
.hero-arch-outer-ring { padding: 12px !important; border: 1px solid var(--hair-soft) !important; background: var(--paper-field) !important; border-radius: 0 !important; }
.hero-arch-outer-ring::before, .hero-arch-frame::after { display: none !important; }
.hero-arch-frame {
  width: 100% !important; aspect-ratio: 4 / 5 !important; border-radius: 0 !important; border: 0 !important; outline: 0 !important; box-shadow: none !important;
  background: var(--paper-deep) !important; clip-path: none !important; overflow: hidden;
}
.hero-arch-img { width: 100%; height: 100%; object-fit: cover; }
.wedding-single-card .c1-top-intro-block .hero-names-row.card1-script-names {
  order: 2; display: flex !important; flex-direction: column !important; align-items: center !important; gap: 0 !important;
  width: 100% !important; max-width: 100% !important; margin: 28px 0 0 !important; padding: 0 !important;
}
.wedding-single-card .card1-script-names.hero-names-row > .hero-name-col { text-align: center !important; }
.wedding-single-card .card1-script-names.hero-names-row > .hero-name-col :is(.hero-party-name, .groom-short-name, .bride-short-name) {
  align-self: center !important; text-align: center !important; font-family: var(--serif) !important; font-style: normal !important; font-weight: 400 !important;
  font-size: 36px !important; line-height: 1.2 !important; color: var(--ink) !important; white-space: normal !important; -webkit-text-stroke: 0 !important;
}
.wedding-single-card .c1-top-intro-block .hero-center-symbol { margin: 6px 0 !important; padding: 0 !important; }
.wedding-single-card .c1-top-intro-block .hero-xi {
  display: inline-flex !important; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%;
  background: var(--ink); color: var(--paper) !important; font-size: 16px !important; font-weight: 400 !important;
}
.intro-guest-invite { order: 3; padding-top: 24px; display: flex; flex-direction: column; gap: 6px; align-items: center; }
.intro-guest-prefix { font-family: var(--font-sans); font-size: 11px; letter-spacing: 4px; text-transform: uppercase; color: var(--ink-soft); }
.intro-guest-name { font-family: var(--serif); font-size: 22px; font-style: italic; color: var(--ink); }

/* ---- Hai gia đình ---------------------------------------------------------- */
.wedding-single-card .couple-sides-block {
  display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 !important;
  padding: 32px 16px !important; margin-left: auto !important; margin-right: auto !important; box-sizing: border-box;
}
.wedding-single-card .couple-side-row {
  display: flex !important; flex-direction: column !important; grid-template-columns: none !important;
  align-items: center !important; justify-content: flex-start !important; gap: 12px !important;
  padding: 0 12px !important; margin: 0 !important; min-width: 0 !important; box-sizing: border-box;
}
.wedding-single-card .couple-side-row--bride { border-left: 1px solid var(--hair-soft); }
.wedding-single-card .couple-sides-block.is-bride-first .couple-side-row--bride { border-left: 0; border-right: 1px solid var(--hair-soft); }
.wedding-single-card .couple-sides-block.is-bride-first .couple-side-row--groom { border-left: 1px solid var(--hair-soft); }
.couple-side-row--bride .couple-side-photo { order: -1; }
.wedding-single-card .couple-side-photo {
  width: 100% !important; max-width: 100% !important; margin: 0 auto !important;
  box-shadow: none !important; background: none !important; border: 0 !important; padding: 0 !important; border-radius: 0 !important; overflow: hidden;
}
.couple-side-img { width: 100% !important; aspect-ratio: 3 / 4; height: auto !important; object-fit: cover; border-radius: 0 !important; border: 0 !important; box-shadow: none !important; background: var(--paper-deep); }
.couple-side-info {
  width: 100% !important; max-width: 100% !important; min-width: 0 !important; padding: 0 !important;
  text-align: center !important; align-items: center !important; justify-content: flex-start !important;
  display: flex !important; flex-direction: column !important; gap: 6px;
}
.couple-side-family, .couple-side-role {
  font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important;
  color: var(--ink-soft) !important; margin: 0 !important; text-align: center !important; width: 100%;
}
/* Mỗi tên cha/mẹ 1 dòng (.parent-name-line); không soft-wrap giữa tên */
.groom-parents-name, .bride-parents-name {
  font-family: var(--font-sans) !important; font-size: 13px !important; font-weight: 500 !important; line-height: 1.55 !important; letter-spacing: 0 !important;
  text-transform: none !important; color: var(--ink) !important; margin: 0 !important; text-align: center !important;
  display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important;
  width: 100% !important; max-width: 100% !important; min-width: 0 !important; box-sizing: border-box;
}
.groom-parents-name .parent-name-line,
.bride-parents-name .parent-name-line {
  display: block !important; white-space: nowrap !important; text-align: center !important; max-width: 100%;
}
@media (max-width: 430px) {
  .groom-parents-name, .bride-parents-name { font-size: 12px !important; }
}
.groom-parents-addr, .bride-parents-addr {
  font-family: var(--font-sans) !important; font-size: 13px !important; line-height: 1.7 !important; color: var(--ink-soft) !important;
  margin: 0 !important; text-align: center !important; width: 100% !important; max-width: 100% !important;
}
/* Giữ đúng 2 dòng theo line-height thật để 2 cột luôn dóng hàng khi thiếu bố/mẹ hoặc địa chỉ ngắn */
.groom-parents-name, .bride-parents-name { min-height: calc(1.55em * 2) !important; }
.groom-parents-addr, .bride-parents-addr { min-height: calc(1.7em * 2) !important; }
.couple-side-name {
  font-family: var(--serif) !important; font-size: 26px !important; font-weight: 400 !important; font-style: normal !important;
  line-height: 1.2 !important; color: var(--ink) !important; margin: 0 !important; text-align: center !important;
  white-space: nowrap; max-width: 100%;
}
/* Reveal xong vẫn căn giữa (tránh lệch do translate L/R) */
.wedding-single-card .couple-side-info .reveal-item.visible {
  transform: none !important;
}

/* ==========================================================================
   Lễ thành hôn / tiệc nhà trai / tiệc nhà gái — lá thư viền kép, một thang chữ
   ========================================================================== */
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) {
  position: relative; background: var(--paper) !important; border: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important;
  outline: 1px solid var(--hairline); outline-offset: -8px;
  margin-top: 20px !important; padding: 44px 28px !important; text-align: center !important; color: var(--ink-soft) !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card)::before,
.wedding-single-card .info-white-panel::after { display: none !important; content: none !important; }
.wedding-single-card #reception-bride { padding: 0 !important; margin-top: 20px !important; }
.wedding-single-card #reception-bride .bride-reception-card { margin: 0 !important; width: 100% !important; }

.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.ceremony-time-lead, .reception-time-lead, .rb-lead) {
  font-family: var(--font-sans) !important; font-size: 13px !important; font-weight: 400 !important; font-style: normal !important; letter-spacing: 0 !important;
  text-transform: none !important; text-align: center !important; color: var(--ink-soft) !important; line-height: 1.8 !important; margin: 0 0 14px !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.ceremony-time-lead, .reception-time-lead, .rb-lead) span {
  font: inherit !important; letter-spacing: inherit !important; text-transform: inherit !important; color: inherit !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.ceremony-time-c1, .reception-big-time-c2, .rb-main-time) {
  color: var(--ink) !important; font-weight: 500 !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.ceremony-dow-text, .reception-dow-text, .rb-weekday) {
  font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 3px !important;
  text-transform: uppercase !important; text-align: center !important; color: var(--ink-soft) !important; margin: 0 0 12px !important;
}
/* Ngày: Tháng 12 | 12 | 2026 */
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .ceremony-date-bar {
  display: flex !important; align-items: center; justify-content: center; gap: 16px !important;
  width: 100% !important; max-width: 100% !important; margin: 0 0 14px !important; padding: 0 !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.big-day, .rb-day) {
  order: 2; font-family: var(--serif) !important; font-size: 72px !important; font-weight: 400 !important; line-height: 1 !important; letter-spacing: 0 !important;
  color: var(--ink) !important; padding: 0 18px !important; border-left: 1px solid var(--hairline); border-right: 1px solid var(--hairline); transform: none !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .ceremony-date-bar .date-flank-col {
  display: block !important; width: auto !important; min-width: 0 !important; flex: 0 0 auto !important; padding: 0 !important; border: 0 !important; text-align: center !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .ceremony-date-bar .left-col { order: 1; }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .ceremony-date-bar .right-col { order: 3; }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .flank-text,
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .flank-text span {
  font-family: var(--serif) !important; font-size: 18px !important; font-weight: 400 !important; letter-spacing: 0 !important; color: var(--ink) !important; line-height: 1.3 !important;
}
/* Tiếng Trung: số trước, "月" sau (10月) */
body.lang-zh .wedding-single-card .left-col .flank-text { display: inline-flex !important; flex-direction: row-reverse; justify-content: center; align-items: baseline; gap: 0 !important; }
/* "THÁNG" → "Tháng"; năm chỉ hiện số */
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .left-col .flank-text > span:first-child {
  display: inline-block; text-transform: lowercase !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .left-col .flank-text > span:first-child::first-letter { text-transform: uppercase; }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .right-col .flank-text > span:first-child { display: none !important; }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.lunar-date-text, .ceremony-lunar-c1, .reception-lunar-c2, .rb-lunar) {
  font-family: var(--font-sans) !important; font-size: 13px !important; font-style: normal !important; font-weight: 400 !important; letter-spacing: 0 !important;
  text-transform: none !important; text-align: center !important; color: var(--ink-soft) !important; margin: 0 auto 18px !important; max-width: none !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.reception-times-row, .rb-times) {
  display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 !important; width: 100% !important; margin: 4px 0 18px !important; padding-top: 14px;
  border-top: 1px dashed var(--hairline);
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .time-col-c2 { display: flex !important; flex-direction: column; align-items: center !important; gap: 2px; padding: 0 !important; text-align: center !important; }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .time-col-c2:last-child { border-left: 1px solid var(--hair-soft); }
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .time-col-c2 small {
  font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important; color: var(--ink-soft) !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) .time-col-c2 strong {
  font-family: var(--serif) !important; font-size: 26px !important; font-weight: 400 !important; line-height: 1.3 !important; color: var(--ink) !important;
}
/* Lịch tháng: ngày cưới tô tròn nâu đậm */
.wedding-single-card .calendar-card-c2 { background: transparent !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; padding: 0 !important; margin: 8px 0 18px !important; width: 100% !important; max-width: none !important; }
.wedding-single-card .cal-header-bar { background: transparent !important; padding: 0 0 8px !important; border-bottom: 1px solid var(--hairline) !important; border-radius: 0 !important; text-align: center; }
.wedding-single-card .cal-title { font-family: var(--serif) !important; font-size: 20px !important; font-weight: 400 !important; font-style: italic !important; color: var(--ink) !important; letter-spacing: 0 !important; }
.wedding-single-card .cal-weekdays-row, .wedding-single-card .cal-weekdays-row span { font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important; letter-spacing: 1px; color: var(--ink-soft) !important; background: transparent !important; }
.wedding-single-card .cal-days-grid, .wedding-single-card .cal-days-grid span { font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; color: var(--ink) !important; background: transparent !important; box-shadow: none !important; }
.wedding-single-card .cal-days-grid .wedding-day {
  width: 34px !important; height: 34px !important; line-height: 34px !important; border-radius: 50% !important; border: 0 !important;
  font-family: var(--serif) !important; font-size: 14px !important; margin: 0 auto; background: var(--ink) !important; color: var(--paper) !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.rec-at-name, .ceremony-loc-lbl, .rb-venue-name-row) {
  display: block !important; font-family: var(--serif) !important; font-size: 22px !important; font-weight: 400 !important; font-style: normal !important;
  letter-spacing: 0 !important; text-transform: none !important; text-align: center !important; color: var(--ink) !important; margin: 0 0 6px !important; line-height: 1.3 !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.rec-at-name, .rb-venue-name-row) :is(span, .venue-bottom-name, .rb-venue-name, .rb-at-prefix) {
  font: inherit !important; letter-spacing: inherit !important; color: inherit !important; margin: 0 !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.rec-at-addr, .ceremony-loc-addr, .rb-venue-address) {
  font-family: var(--font-sans) !important; font-size: 13px !important; font-style: normal !important; font-weight: 400 !important; line-height: 1.7 !important;
  text-align: center !important; color: var(--ink-soft) !important; margin: 0 auto 16px !important; max-width: none !important;
}
.wedding-single-card :is(.info-white-panel, #reception-bride .bride-reception-card) :is(.reception-venue-summary, .rb-venue) { text-align: center !important; margin-top: 4px !important; }

/* ---- Nút chữ nhật ------------------------------------------------------------ */
.wedding-single-card :is(.btn-pill-direction, .map-direction-btn-c2, .venue-direction-btn, #reception-bride .rb-direction.btn-pill-direction) {
  display: inline-flex !important; width: auto !important; justify-content: center !important; align-items: center; gap: 6px; min-height: 44px !important; padding: 0 22px !important;
  border: 1px solid var(--ink-soft) !important; border-radius: 0 !important; background: transparent !important; background-image: none !important; box-shadow: none !important; color: var(--ink) !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 2px !important; text-transform: uppercase !important;
}
.wedding-single-card .btn-pill-direction::after { content: "↗"; font-size: 12px; letter-spacing: 0; }
.wedding-single-card :is(.btn-pill-direction, .venue-direction-btn):hover { background: var(--ink) !important; border-color: var(--ink) !important; color: var(--paper) !important; transform: none !important; box-shadow: none !important; }
.ceremony-action-row, .venue-action-row { width: 100%; justify-content: center !important; margin-top: 4px; display: flex; padding: 0 !important; }

.wedding-single-card .reception-cta-actions, .wedding-single-card .c2-pill-actions {
  display: flex !important; flex-direction: row !important; align-items: stretch; gap: 10px !important; padding: 20px 0 0 !important;
}
.btn-pill-rsvp, .btn-pill-calendar {
  flex: 1; min-height: 46px !important; border-radius: 0 !important; box-shadow: none !important; justify-content: center !important;
  padding: 6px 8px !important; font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important;
  letter-spacing: 1.5px !important; text-transform: uppercase !important; white-space: normal !important; text-align: center; line-height: 1.3;
}
.btn-pill-calendar { order: 0; background: var(--paper) !important; border: 1px solid var(--ink-soft) !important; color: var(--ink) !important; }
.btn-pill-rsvp { order: 1; background: var(--ink) !important; border: 1px solid var(--ink) !important; color: var(--paper) !important; }
.btn-pill-rsvp:hover { background: var(--ink-soft) !important; border-color: var(--ink-soft) !important; color: var(--paper) !important; }
.btn-pill-calendar:hover { background: var(--ink) !important; color: var(--paper) !important; }

/* ---- Album ------------------------------------------------------------------ */
.wedding-single-card .gallery-header-block { background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin-bottom: 0 !important; padding-left: 24px !important; padding-right: 24px !important; text-align: center !important; }
.gallery-block-c2 { margin-top: 4px !important; }
.gallery-carousel, .carousel-slide, .carousel-slide img { border-radius: 0 !important; }
.gallery-carousel { box-shadow: none !important; border: 0 !important; background: var(--paper-deep); }
.carousel-btn {
  width: 40px !important; height: 40px !important; border-radius: 0 !important;
  background: var(--paper) !important; color: var(--ink) !important; border: 1px solid var(--hairline) !important; box-shadow: none !important;
}
.carousel-dots { margin-top: 14px; justify-content: center !important; gap: 6px !important; }
.carousel-dot { border-radius: 0 !important; width: 14px !important; height: 2px !important; background: var(--hair-soft) !important; border: 0 !important; }
.carousel-dot.active { background: var(--ink) !important; width: 28px !important; }
.gallery-thumbs-row { gap: 10px !important; justify-content: center !important; margin-top: 10px; }
.gallery-thumb-item, .gallery-thumb-item img { border-radius: 0 !important; box-shadow: none !important; }
.gallery-thumb-item { border: 1px solid transparent; }
.gallery-thumb-item.active { border-color: var(--ink) !important; }
.gallery-bottom-quote { text-align: center !important; margin-top: 14px !important; }
.wedding-single-card .gallery-quote-bottom {
  font-family: var(--serif) !important; font-style: italic !important; font-size: 16px !important; line-height: 1.6 !important;
  color: var(--ink-soft) !important; text-align: center !important; margin: 0 auto !important; padding: 0 !important; max-width: none !important;
}

/* ---- Đếm ngược ---------------------------------------------------------------- */
.wedding-single-card .countdown-card-design4 { padding: 36px 28px !important; text-align: center !important; }
.countdown-grid-design4 { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 !important; margin-top: 0; border: 0; }
.cd-box-design4 { align-items: center !important; text-align: center !important; padding: 0 4px !important; background: transparent !important; border: 0 !important; box-shadow: none !important; }
.cd-box-design4:not(:first-child) { border-left: 1px solid var(--hair-soft) !important; }
.wedding-single-card .cd-box-design4 .cd-num { font-family: var(--serif) !important; font-size: 36px !important; font-weight: 400 !important; line-height: 1.2 !important; color: var(--ink) !important; }
.wedding-single-card .cd-box-design4 .cd-lbl { font-family: var(--font-sans) !important; font-size: 10px !important; letter-spacing: 2px !important; text-transform: uppercase !important; color: var(--ink-soft) !important; margin-top: 2px; }

/* ---- Địa điểm & bản đồ ----------------------------------------------------------- */
.wedding-single-card .venue-bottom-c2 { overflow: visible !important; text-align: center !important; }
.wedding-single-card .venue-bottom-c2 .venue-section-title {
  display: block; margin: 0 0 14px; font-family: var(--font-sans); font-size: 18px; font-weight: 400; letter-spacing: 2px; text-transform: uppercase; color: var(--ink-soft); white-space: nowrap; text-align: center;
}
.wedding-single-card .venue-bottom-c2 :is(.venue-info-header, .venue-map-wrap) { background: transparent !important; border-radius: 0 !important; padding: 0 !important; display: block !important; }
.venue-text-group { text-align: center !important; }
.wedding-single-card .venue-bottom-c2 .venue-bottom-name { font-family: var(--serif) !important; font-size: 24px !important; font-weight: 400 !important; line-height: 1.3 !important; color: var(--ink) !important; text-align: center !important; margin: 0 0 6px !important; }
.wedding-single-card .venue-bottom-c2 .venue-bottom-addr { font-family: var(--font-sans) !important; font-size: 13px !important; font-style: normal !important; color: var(--ink-soft) !important; text-align: center !important; margin: 0 !important; max-width: none !important; }
.wedding-single-card .venue-bottom-c2 .map-embed-card2 { height: 200px; margin-top: 18px; border-radius: 0 !important; border: 0 !important; box-shadow: none !important; background: var(--paper-deep); overflow: hidden; }
.map-embed-card2 iframe { border-radius: 0 !important; filter: sepia(0.2) saturate(0.75); }
.wedding-single-card .venue-bottom-c2 .venue-action-row { margin-top: 16px !important; padding: 0 !important; }

/* ---- Lịch trình ------------------------------------------------------------------ */
.timeline-wavy-container { max-width: none !important; margin: 0 !important; gap: 0 !important; border-top: 0; text-align: left; }
.timeline-wavy-container :is(.tl-route, .tl-dot) { display: none !important; }
.timeline-wavy-container .timeline-row-c3, .timeline-wavy-container .timeline-row-c3.tl-row-right, .timeline-wavy-container .timeline-row-c3:not(.tl-row-right) {
  display: block !important; min-height: 0 !important; padding: 0 !important; border-bottom: 1px dashed var(--hair-soft);
}
/* Box thật trên .tl-copy — display:contents làm mất hiệu ứng scroll reveal */
.timeline-wavy-container :is(.tl-copy, .timeline-row-c3.tl-row-right .tl-copy, .timeline-row-c3:not(.tl-row-right) .tl-copy) {
  display: grid !important; grid-template-columns: 72px minmax(0, 1fr); align-items: baseline; width: 100% !important; margin: 0 !important; gap: 0 !important; text-align: left !important;
  padding: 20px 0 1px !important; line-height: 1.15; box-sizing: border-box;
}
.wedding-single-card .timeline-wavy-container .tl-time { font-family: var(--serif) !important; font-size: 20px !important; line-height: 1.15 !important; font-weight: 400 !important; letter-spacing: 0 !important; color: var(--ink) !important; text-align: left !important; }
.wedding-single-card .timeline-wavy-container .tl-text { font-family: var(--font-sans) !important; font-size: 14px !important; line-height: 1.15 !important; font-weight: 400 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--ink-soft) !important; text-align: left !important; }

/* ---- Trang phục: hình thoi (ô vuông xoay 45°) ------------------------------------ */
.wedding-single-card .dresscode-note { font-family: var(--font-sans) !important; font-style: normal !important; font-size: 13px !important; line-height: 1.8 !important; color: var(--ink-soft) !important; text-align: center !important; max-width: 280px !important; padding: 0 !important; margin: 0 auto 18px !important; }
.dresscode-palette { display: flex !important; flex-wrap: wrap; gap: 22px 28px !important; justify-content: center !important; align-items: flex-start !important; margin-top: 0 !important; }
.dresscode-item {
  display: flex !important; flex-direction: column !important; align-items: center !important; gap: 14px !important;
  padding-top: 6px;
}
.wedding-single-card .dresscode-item .color-circle,
.color-circle {
  width: 28px !important; height: 28px !important; border-radius: 0 !important; box-shadow: none !important;
  transform: rotate(45deg) !important; border: 1px solid var(--hairline) !important;
  flex-shrink: 0; box-sizing: border-box;
}
.wedding-single-card .dresscode-item.reveal-item.visible .color-circle,
.wedding-single-card .dresscode-item .color-circle {
  transform: rotate(45deg) !important;
}
.wedding-single-card .dresscode-item .color-name { font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; color: var(--ink-soft) !important; text-align: center !important; white-space: normal !important; }

/* ---- Sổ lưu bút: giấy kẻ dòng ------------------------------------------------------- */
.wedding-single-card .guestbook-sub-desc { font-family: var(--font-sans) !important; font-size: 13px !important; line-height: 1.8 !important; color: var(--ink-soft) !important; text-align: center !important; max-width: none !important; padding: 0 !important; margin: 0 auto 18px !important; }
.guestbook-box-c3 { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; border-radius: 0 !important; display: flex; flex-direction: column; gap: 12px; text-align: left; }
.guestbook-input-c3 { background: transparent !important; border: 0 !important; border-bottom: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important; min-height: 44px; padding: 10px 0 !important; font-family: var(--font-sans) !important; font-size: 14px !important; color: var(--ink) !important; }
.guestbook-textarea-c3 {
  background-color: var(--paper-field) !important; border: 1px solid var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important;
  padding: 10px 12px !important; min-height: 120px; font-family: var(--font-sans) !important; font-size: 14px !important; line-height: 28px !important; color: var(--ink) !important;
  background-image: repeating-linear-gradient(transparent 0 27px, var(--ground) 27px 28px) !important; background-attachment: local;
}
.guestbook-input-c3::placeholder, .guestbook-textarea-c3::placeholder { color: var(--ink-soft) !important; opacity: 0.8; }
.guestbook-input-c3:focus, .guestbook-textarea-c3:focus { border-color: var(--ink) !important; outline: none; }
.guestbook-actions-c3 { display: flex; gap: 10px; align-items: stretch; margin-top: 4px; }
.btn-suggest-c3 { flex: none; width: 46px; height: 46px; min-height: 46px; border-radius: 0 !important; background: transparent !important; border: 1px solid var(--ink-soft) !important; color: var(--ink) !important; box-shadow: none !important; }
.btn-suggest-c3:hover { background: var(--ink) !important; color: var(--paper) !important; }
.btn-submit-wish-c3 {
  flex: 1; min-height: 46px; border-radius: 0 !important; background: var(--ink) !important; background-image: none !important; border: 1px solid var(--ink) !important; color: var(--paper) !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important;
}
.btn-submit-wish-c3:hover { background: var(--ink-soft) !important; }
.wishes-stream-c3 { margin-top: 20px; text-align: left; border-top: 1px solid var(--hairline); }
.wedding-single-card .wish-item-c3 { background: transparent !important; border: 0 !important; border-bottom: 1px dashed var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important; padding: 14px 0 !important; color: var(--ink) !important; }
.wedding-single-card .wish-header-c3 { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 4px; }
.wedding-single-card :is(.wish-author, .wish-name-c3) { font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 500 !important; color: var(--ink) !important; }
.wedding-single-card .wish-time { font-family: var(--font-sans) !important; font-size: 12px !important; color: var(--ink-soft) !important; opacity: 1 !important; }
.wedding-single-card :is(.wish-msg, .wish-message-c3) { font-family: var(--serif) !important; font-size: 15px !important; font-style: italic !important; line-height: 1.6 !important; color: var(--ink) !important; margin: 0 !important; }
.wedding-single-card .wishes-list-heading { color: var(--ink-soft) !important; }
.wish-heart-c3 { display: none !important; }

/* ---- Hộp quà ------------------------------------------------------------------------- */
.wedding-single-card .gift-block-c3 { padding: 36px 28px !important; }
.gift-illustration-card {
  display: inline-flex !important; align-items: center; justify-content: center; min-height: 44px; padding: 0 28px !important; margin: 0 auto;
  background: transparent !important; border: 1px solid var(--ink-soft) !important; border-radius: 0 !important; box-shadow: none !important; cursor: pointer;
}
.gift-illustration-card:hover { background: var(--ink) !important; border-color: var(--ink) !important; }
.gift-illustration-card:hover .gift-hint-text { color: var(--paper) !important; }
.wedding-single-card .gift-hint-text {
  display: block !important; margin: 0 !important; font-family: var(--font-sans) !important; font-size: 11px !important; font-style: normal !important;
  font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important; color: var(--ink) !important; text-align: center;
}
.gift-box-custom-btn { border-radius: 0 !important; background: var(--ink) !important; background-image: none !important; color: var(--paper) !important; box-shadow: none !important; }

/* ---- Lời cảm ơn: dấu sáp ---------------------------------------------------------------- */
.wedding-single-card .brand-footer-block { display: flex !important; flex-direction: column !important; align-items: center !important; gap: 10px !important; text-align: center !important; padding: 48px 20px 40px !important; border-top: 0 !important; margin-top: 8px !important; max-width: none !important; }
.wedding-single-card .brand-footer-block::before {
  content: '囍'; display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; margin-bottom: 6px;
  border-radius: 50%; background: var(--ink); color: var(--paper); font-family: "Noto Serif SC", serif; font-size: 20px; line-height: 1;
  box-shadow: 0 0 0 4px var(--ground), 0 0 0 5px var(--hairline);
}
.wedding-single-card .gift-thankyou-note { font-family: var(--serif) !important; font-size: 16px !important; font-style: italic !important; line-height: 1.5 !important; color: var(--ink) !important; margin: 0 auto !important; text-align: center !important; max-width: 280px !important; padding: 0 !important; }
.wedding-single-card :is(.brand-footer-block span, .brand-footer-text) { font-family: var(--font-sans) !important; font-size: 10px !important; letter-spacing: 3px !important; text-transform: uppercase !important; color: var(--ink-soft) !important; opacity: 1 !important; }

/* ---- Hộp thoại: lá thư viền kép ----------------------------------------------------------- */
.modal-overlay { background: rgba(62, 46, 32, 0.55) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
.modal-box-styled, .rsvp-modal-box, .gift-modal-box, .wish-suggestions-card {
  background: var(--paper) !important; color: var(--ink) !important; border-radius: 0 !important; border: 1px solid var(--hairline) !important; box-shadow: none !important;
  outline: 1px solid var(--hairline); outline-offset: -8px;
}
.gift-person-card, .gift-qr-card { background: var(--paper-field) !important; color: var(--ink) !important; border-radius: 0 !important; border: 1px solid var(--hair-soft) !important; box-shadow: none !important; }
.lightbox-modal-box { background: transparent !important; border: 0 !important; outline: 0 !important; box-shadow: none !important; }
.rsvp-modal-title, .gift-modal-title { font-family: var(--serif) !important; font-weight: 400 !important; font-style: italic !important; color: var(--ink) !important; letter-spacing: 0 !important; text-transform: none !important; }
.rsvp-form-label { font-family: var(--font-sans) !important; font-size: 10px !important; letter-spacing: 2px !important; text-transform: uppercase !important; color: var(--ink-soft) !important; }
.rsvp-input, .form-input, .modal-box-styled select { background: transparent !important; border: 0 !important; border-bottom: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important; color: var(--ink) !important; }
.rsvp-textarea, .form-textarea { background: var(--paper-field) !important; border: 1px solid var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important; color: var(--ink) !important; }
.btn-rsvp-submit, .btn-modal-refresh {
  border-radius: 0 !important; background: var(--ink) !important; background-image: none !important; color: var(--paper) !important; border: 1px solid var(--ink) !important;
  box-shadow: none !important; letter-spacing: 3px; text-transform: uppercase; font-size: 11px !important;
}
.btn-rsvp-submit:hover, .btn-modal-refresh:hover { background: var(--ink-soft) !important; }
.btn-modal-cancel { border-radius: 0 !important; background: transparent !important; color: var(--ink) !important; border: 1px solid var(--ink-soft) !important; box-shadow: none !important; }
.modal-close-btn, .gift-modal-close, .wish-modal-close { color: var(--ink) !important; background: transparent !important; box-shadow: none !important; border-radius: 0 !important; }
/* Gợi ý lời chúc: tiêu đề + nút đóng cùng hàng, hai nút chân modal đều nhau */
.wish-suggestions-card .wish-modal-header { display: flex !important; align-items: flex-start; justify-content: space-between; gap: 12px; }
.wish-suggestions-card .wish-modal-close { flex: none; width: 32px; height: 32px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border: 0 !important; cursor: pointer; }
.wish-suggestions-card .wish-modal-footer { display: flex !important; gap: 12px; margin-top: 16px; }
.wish-suggestions-card .wish-modal-footer button { flex: 1 1 0; min-height: 46px; padding: 0 16px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; font-family: var(--font-sans) !important; font-size: 11px !important; letter-spacing: 3px; text-transform: uppercase; }
.toast { border-radius: 0 !important; background: var(--ink) !important; color: var(--paper) !important; }

/* Gift modal: chữ đậm rõ trên kem */
.gift-modal-box :is(p, span, label, h3, h4, strong, small, .gift-bank-name, .gift-account-name, .gift-account-number) { color: var(--ink) !important; opacity: 1 !important; }
.gift-modal-box :is(.gift-hint, .gift-sub, .gift-bank-owner) { color: var(--ink-soft) !important; }

/* ---- Ưu tiên tiêu đề (thắng các rule cũ có độ ưu tiên cao) ------------------------------- */
.wedding-single-card .countdown-card-design4 .card-heading-title,
.wedding-single-card .timeline-block-design2 .card-heading-title,
.wedding-single-card .dresscode-block-c2 .card-heading-title,
.wedding-single-card .gallery-header-block .card-heading-title,
.wedding-single-card .guestbook-block-c3 .card-heading-title,
.wedding-single-card .gift-block-c3 .card-heading-title {
  font-family: var(--font-sans) !important; font-size: 18px !important; font-weight: 400 !important; letter-spacing: 2px !important; text-transform: uppercase !important;
  text-align: center !important; color: var(--ink-soft) !important; margin: 0 0 18px !important; line-height: 1.4 !important; white-space: nowrap !important;
}
/* Title dài: lễ + tiệc nhà trai/gái — wrap (thắng nowrap ở theme-match + nhãn mục chung) */
.wedding-single-card .info-white-panel.info-white-panel--ceremony .card-heading-title.card-heading-title,
.wedding-single-card .info-white-panel.info-white-panel--reception .card-heading-title.card-heading-title,
.wedding-single-card .info-white-panel.info-white-panel--reception .reception-lead-c2.card-heading-title.card-heading-title,
.wedding-single-card .info-white-panel.info-white-panel--reception h3.reception-lead-c2.card-heading-title,
.wedding-single-card #reception-bride .bride-reception-card h3.rb-heading.card-heading-title,
.wedding-single-card #reception-bride .rb-heading.card-heading-title,
.wedding-single-card #reception-bride h3.rb-heading {
  font-family: var(--font-sans) !important; font-size: 18px !important; font-weight: 400 !important; letter-spacing: 2px !important; text-transform: uppercase !important;
  text-align: center !important; color: var(--ink-soft) !important; margin: 0 0 18px !important; line-height: 1.4 !important;
  white-space: normal !important;
}

/* Bìa: tôn trọng thuộc tính hidden (tránh hiện cả tên khách lẫn chữ giữ chỗ) */
.cover-invite-label[hidden], .cover-guest-placeholder[hidden], .intro-guest-invite[hidden] { display: none !important; }
.cover-date { letter-spacing: 2px !important; font-size: 11px !important; }

/* ==========================================================================
   Hộp quà mừng cưới — theo artboard "Thư tay — Hộp quà"
   Lá thư viền kép · tiêu đề Playfair nghiêng · 2 cột · QR lồng khung · nút chữ nhật
   ========================================================================== */
#gift-modal .gift-modal-box {
  width: min(560px, calc(100vw - 32px)) !important; max-width: none !important; max-height: calc(100vh - 32px) !important; overflow-y: auto !important;
  padding: 0 !important; background: var(--paper) !important; color: var(--ink-soft) !important;
  border: 1px solid var(--hairline) !important; outline: 1px solid var(--hairline) !important; outline-offset: -8px !important;
  border-radius: 0 !important; box-shadow: none !important;
}
#gift-modal .gift-modal-header {
  position: relative !important; display: flex !important; flex-direction: column !important; align-items: center !important; justify-content: center !important;
  margin: 0 !important; padding: 40px 56px 16px !important; background: transparent !important; border: 0 !important; border-radius: 0 !important; text-align: center !important;
}
#gift-modal .gift-modal-header::after { content: ''; display: block; width: 40px; height: 1px; margin-top: 14px; background: var(--hairline); }
#gift-modal .gift-modal-title {
  display: inline-block !important; margin: 0 !important; font-family: var(--serif) !important; font-size: 28px !important; font-weight: 400 !important; font-style: italic !important;
  line-height: 1.3 !important; letter-spacing: 0 !important; text-transform: lowercase !important; color: var(--ink) !important; text-align: center !important;
}
#gift-modal .gift-modal-title::first-letter { text-transform: uppercase; }
#gift-modal .gift-modal-close {
  position: absolute !important; top: 12px !important; right: 12px !important; width: 44px !important; height: 44px !important; min-width: 0 !important;
  display: flex !important; align-items: center !important; justify-content: center !important; padding: 0 !important;
  background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; color: var(--ink) !important; font-size: 16px !important;
}
#gift-modal .gift-modal-close:hover { background: var(--paper-deep) !important; }
#gift-modal .gift-modal-body { padding: 8px 24px 28px !important; background: transparent !important; }
#gift-modal .gift-cols-container {
  display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 14px !important; flex-direction: initial !important;
}
#gift-modal .gift-person-card {
  display: flex !important; flex-direction: column !important; align-items: center !important; gap: 10px !important; text-align: center !important;
  width: auto !important; min-width: 0 !important; margin: 0 !important; padding: 0 !important;
  background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
}
#gift-modal .gift-person-card.is-empty { display: none !important; }
#gift-modal .gift-cols-container:has(.gift-person-card.is-empty) { grid-template-columns: minmax(0, 260px) !important; justify-content: center !important; }
#gift-modal .gift-person-title {
  display: block !important; margin: 0 !important; font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 500 !important;
  letter-spacing: 3px !important; text-transform: uppercase !important; color: var(--ink) !important; line-height: 1.5 !important;
}
#gift-modal .gift-qr-card {
  width: 100% !important; height: auto !important; aspect-ratio: 1 !important; margin: 0 !important; padding: 8px !important; box-sizing: border-box !important;
  background: var(--paper-field) !important; border: 1px solid var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important;
}
#gift-modal .gift-qr-img { width: 100% !important; height: 100% !important; object-fit: contain !important; border-radius: 0 !important; background: var(--ground); }
#gift-modal .gift-bank-info { margin: 0 !important; text-align: center !important; line-height: 1.6 !important; }
#gift-modal .gift-bank-name {
  margin: 0 !important; font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important;
  text-transform: none !important; color: var(--ink-soft) !important;
}
#gift-modal .gift-bank-number {
  margin: 0 !important; font-family: var(--serif) !important; font-size: 16px !important; font-weight: 400 !important; letter-spacing: 0.02em !important;
  color: var(--ink) !important; line-height: 1.5 !important; word-break: break-all;
}
#gift-modal .gift-bank-owner {
  margin: 0 !important; font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important;
  text-transform: none !important; color: var(--ink-soft) !important;
}
#gift-modal .gift-actions-row { display: flex !important; flex-direction: column !important; gap: 8px !important; width: 100% !important; margin: 0 !important; }
#gift-modal :is(.btn-copy-acc, .btn-save-qr) {
  display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; width: 100% !important; min-height: 44px !important;
  box-sizing: border-box !important; margin: 0 !important; padding: 0 8px !important; border-radius: 0 !important; box-shadow: none !important; text-decoration: none !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 1px !important; text-transform: none !important;
}
#gift-modal :is(.btn-copy-acc, .btn-save-qr) svg { display: none !important; }
#gift-modal .btn-copy-acc { background: transparent !important; border: 1px solid var(--ink-soft) !important; color: var(--ink) !important; }
#gift-modal .btn-copy-acc:hover { background: var(--paper-deep) !important; }
#gift-modal .btn-save-qr { background: var(--ink) !important; border: 1px solid var(--ink) !important; color: var(--paper) !important; }
#gift-modal .btn-save-qr:hover { background: var(--ink-soft) !important; border-color: var(--ink-soft) !important; }
#gift-modal :is(.btn-copy-acc, .btn-save-qr) span { color: inherit !important; }

/* Chữ mặc định "Quý khách" hiển thị như tên khách */
.cover-guest-placeholder { color: var(--ink) !important; }
#gift-modal .gift-person-title { min-height: 3em; display: flex !important; align-items: flex-end; justify-content: center; }

/* Ảnh hero to hơn trên màn rộng (web) */
@media (min-width: 640px) {
  .wedding-single-card .c1-top-intro-block .hero-arch-container { max-width: 440px !important; }
}

/* ==========================================================================
   Xác nhận tham dự — theo artboard "Thư tay — Xác nhận tham dự"
   Lá thư viền kép · tiêu đề Playfair nghiêng · ô nhập kẻ chân · lựa chọn ô chữ nhật · nút nâu đậm
   ========================================================================== */
#rsvp-modal .rsvp-modal-box {
  position: relative !important; width: min(420px, calc(100vw - 32px)) !important; max-width: none !important; max-height: calc(100vh - 32px) !important; overflow-y: auto !important;
  box-sizing: border-box !important; padding: 36px 28px 28px !important; background: var(--paper) !important; color: var(--ink-soft) !important;
  border: 1px solid var(--hairline) !important; outline: 1px solid var(--hairline) !important; outline-offset: -8px !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important;
}
#rsvp-modal .modal-close-btn {
  position: absolute !important; top: 12px !important; right: 12px !important; width: 44px !important; height: 44px !important; min-width: 0 !important; padding: 0 !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; color: var(--ink) !important; font-size: 16px !important;
}
#rsvp-modal .modal-close-btn:hover { background: var(--paper-deep) !important; }
#rsvp-modal .rsvp-modal-title {
  display: block !important; margin: 0 0 8px !important; font-family: var(--serif) !important; font-size: 28px !important; font-weight: 400 !important; font-style: italic !important;
  line-height: 1.3 !important; letter-spacing: 0 !important; text-transform: lowercase !important; color: var(--ink) !important; text-align: center !important;
}
#rsvp-modal .rsvp-modal-title::first-letter { text-transform: uppercase; }
#rsvp-modal .rsvp-modal-subtitle {
  margin: 0 0 18px !important; font-family: var(--font-sans) !important; font-size: 13px !important; font-style: normal !important; font-weight: 400 !important;
  line-height: 1.7 !important; color: var(--ink-soft) !important; text-align: center !important;
}
#rsvp-modal .rsvp-form-group { display: flex !important; flex-direction: column !important; gap: 6px !important; margin: 0 0 14px !important; }
#rsvp-modal .rsvp-form-label {
  margin: 0 !important; font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important; letter-spacing: 2px !important;
  text-transform: uppercase !important; color: var(--ink-soft) !important; line-height: 1.6 !important;
}
#rsvp-modal :is(input.rsvp-input, select.rsvp-input) {
  width: 100% !important; min-height: 42px !important; box-sizing: border-box !important; margin: 0 !important; padding: 0 !important;
  background-color: transparent !important; border: 0 !important; border-bottom: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 14px !important; font-weight: 400 !important; color: var(--ink) !important;
}
#rsvp-modal :is(.rsvp-input, .rsvp-textarea)::placeholder { color: var(--ink-soft) !important; opacity: 0.75 !important; font-style: normal !important; }
#rsvp-modal :is(.rsvp-input, .rsvp-textarea):focus { outline: none !important; border-color: var(--ink) !important; box-shadow: none !important; }
#rsvp-modal .rsvp-choices { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; flex-direction: initial !important; }
#rsvp-modal .rsvp-radio-label {
  display: flex !important; align-items: center !important; justify-content: center !important; gap: 6px !important; min-height: 44px !important; box-sizing: border-box !important;
  margin: 0 !important; padding: 6px 8px !important; background: transparent !important; border: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; line-height: 1.35 !important; text-align: center !important; color: var(--ink) !important; cursor: pointer;
}
#rsvp-modal .rsvp-radio-label span { font: inherit !important; color: inherit !important; }
#rsvp-modal .rsvp-radio-label input { accent-color: var(--ink); margin: 0 !important; flex: none; }
#rsvp-modal .rsvp-radio-label:has(input:checked) { background: var(--ink) !important; border-color: var(--ink) !important; color: var(--paper) !important; }
#rsvp-modal .rsvp-radio-label:has(input:checked) input { accent-color: var(--paper); }
#rsvp-modal .rsvp-textarea {
  width: 100% !important; min-height: 72px !important; box-sizing: border-box !important; margin: 0 !important; padding: 10px 12px !important; resize: none;
  background: var(--paper-field) !important; border: 1px solid var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 14px !important; color: var(--ink) !important;
}
#rsvp-modal .btn-rsvp-submit {
  display: flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; min-height: 48px !important; margin: 6px 0 0 !important; padding: 0 12px !important;
  background: var(--ink) !important; background-image: none !important; border: 1px solid var(--ink) !important; border-radius: 0 !important; box-shadow: none !important; color: var(--paper) !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important;
}
#rsvp-modal .btn-rsvp-submit:hover { background: var(--ink-soft) !important; border-color: var(--ink-soft) !important; transform: none !important; }

/* RSVP: thắng các rule 2 ID của rsvp-layout-from-8.css (#rsvp-modal #rsvp-modal-form …) */
#rsvp-modal #rsvp-modal-form label[data-i18n],
#rsvp-modal #rsvp-modal-form .rsvp-form-label {
  margin: 0 !important; font-family: var(--font-sans) !important; font-size: 10px !important; font-weight: 400 !important; letter-spacing: 2px !important;
  text-transform: uppercase !important; color: var(--ink-soft) !important; line-height: 1.6 !important;
}
#rsvp-modal #rsvp-modal-form input:not([type="radio"]):not([type="checkbox"]),
#rsvp-modal #rsvp-modal-form select {
  width: 100% !important; height: auto !important; min-height: 42px !important; box-sizing: border-box !important; margin: 0 !important; padding: 0 !important;
  background-color: transparent !important; border: 0 !important; border-bottom: 1px solid var(--hairline) !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 14px !important; font-weight: 400 !important; color: var(--ink) !important;
}
#rsvp-modal #rsvp-modal-form textarea {
  width: 100% !important; min-height: 72px !important; box-sizing: border-box !important; margin: 0 !important; padding: 10px 12px !important;
  background: var(--paper-field) !important; border: 1px solid var(--hair-soft) !important; border-radius: 0 !important; box-shadow: none !important;
  font-family: var(--font-sans) !important; font-size: 14px !important; color: var(--ink) !important;
}
#rsvp-modal #rsvp-modal-form :is(input, select, textarea):focus { outline: none !important; border-color: var(--ink) !important; box-shadow: none !important; }
#rsvp-modal #rsvp-modal-form .rsvp-radio-label {
  font-family: var(--font-sans) !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; text-transform: none !important;
  border-radius: 0 !important; box-shadow: none !important;
}
#rsvp-modal #rsvp-modal-form button[type="submit"] {
  display: flex !important; align-items: center !important; justify-content: center !important; width: 100% !important; min-height: 48px !important; margin: 6px 0 0 !important; padding: 0 12px !important;
  background: var(--ink) !important; background-image: none !important; border: 1px solid var(--ink) !important; border-radius: 0 !important; box-shadow: none !important; color: var(--paper) !important;
  font-family: var(--font-sans) !important; font-size: 11px !important; font-weight: 400 !important; letter-spacing: 3px !important; text-transform: uppercase !important;
}
#rsvp-modal #rsvp-modal-form button[type="submit"]:hover { background: var(--ink-soft) !important; border-color: var(--ink-soft) !important; transform: none !important; }
#rsvp-modal #rsvp-modal-close { border-radius: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; }

/* Hammer: title lễ / tiệc nhà trai·gái phải wrap (cuối file để thắng mọi nowrap trước đó) */
.wedding-single-card .info-white-panel.info-white-panel--ceremony .card-heading-title,
.wedding-single-card .info-white-panel.info-white-panel--reception .reception-lead-c2.card-heading-title,
.wedding-single-card .info-white-panel.info-white-panel--reception h3.card-heading-title,
.wedding-single-card #reception-bride h3.rb-heading.card-heading-title {
  white-space: normal !important;
}

/* Khối thiếu dữ liệu: ẩn hẳn thay vì để text mẫu */
.no-data { display: none !important; }
