/* Ảnh Cưới — 6 giao diện trang cưới bổ sung (30/09/2026), nạp SAU wedding.css.
   hoangkim  Hoàng kim — ngà & vàng champagne, serif cổ điển, khung chỉ vàng, huy hiệu nguyệt quế, ánh kim lướt qua tên.
   songhy    Song hỷ   — đỏ son & vàng, chữ 囍 vẽ tay, hồi văn, đèn lồng đung đưa, thẻ viền góc kiểu thiệp truyền thống.
   tapchi    Tạp chí   — tối giản kiểu tạp chí: đen–trắng, chữ serif cực lớn, lưới lệch, dải chữ chạy, đánh số mục.
   vuonhoa   Vườn hoa  — olive & kem, khung vòm, cành lá line-art tự vẽ, chữ viết tay Great Vibes.
   demsao    Đêm sao   — nền xanh đêm, trời sao lấp lánh, sao băng, trăng khuyết, chữ vàng Pinyon Script.
   datnung   Đất nung  — boho đất nung: vòm, mặt trời xoay, cầu vồng tự vẽ, dải màu gạch nung.
   Họa tiết nằm sẵn trong wedding.php (ẩn mặc định), mỗi giao diện tự bật cái của mình -> đổi giao diện tức thì.
   Chỉ animate transform/opacity (và stroke-dashoffset một lần cho nét vẽ nhỏ); tôn trọng prefers-reduced-motion. */

/* ── Mặc định: ẩn mọi họa tiết riêng (4 giao diện cũ không đổi) ── */
.hero-deco, .hero-deco > *, .hd-mark, .crest, .rings-sh, .marquee, .pm-deco, .pm-deco > *, .masthead, .house, .constel, .couple-amp, .ev-intro, .dlock, .cal, .starchart { display: none; }
.hero-deco, .pm-deco { position: absolute; inset: 0; pointer-events: none; }

/* ── Phần chung của 6 giao diện mới ── */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) {
  --name-w: 400;
}
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .photowall,
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .orn,
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .divider span,
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .divider::before { display: none; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .paper::before,
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .paper::after { display: none; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) :is(.main-photo, .event-photo) { transform: none; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]).js-reveal .event-photo.reveal { transform: translateY(26px); }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]).js-reveal .event-photo.reveal.in,
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .is-draft .event-photo.reveal { transform: none !important; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .divider {
  border: 0; width: 180px; height: 18px; margin: 16px auto 0; background: var(--div-color, var(--accent));
  -webkit-mask: var(--div) center / contain no-repeat; mask: var(--div) center / contain no-repeat;
}
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) :is(.names, .banner, .rsvp-invitee b, .invitee b, .rsvp-done b, .ev-card h3, .quote blockquote p, .wd h2, .countdown b) { font-weight: var(--name-w); }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names .name { overflow-wrap: anywhere; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .intro-main { z-index: 3; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .main-photo { border: 0; box-shadow: none; }
/* Thanh menu luôn đặc màu nền giao diện; khi đã cuộn thêm bóng mảnh để tách khỏi nội dung. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .wd-nav.scrolled { box-shadow: 0 1px 0 rgba(0, 0, 0, .08), 0 6px 20px rgba(0, 0, 0, .08); }
[data-theme="demsao"] .wd-nav.scrolled { box-shadow: 0 1px 0 rgba(216, 181, 106, .3), 0 8px 24px rgba(0, 0, 0, .45); }
/* Nút nhạc luôn có viền sáng để không chìm vào dải nền cùng màu. */
:is([data-theme="hoangkim"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="datnung"]) .music-btn { box-shadow: 0 0 0 2.5px var(--paper), 0 0 0 3.5px rgba(0, 0, 0, .12), 0 6px 16px rgba(0, 0, 0, .28); }
/* Thiệp chữ đầu trang KHÔNG dùng khung .paper chung (Hoàng kim tự bật lại khung riêng). */
:is([data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .save-card.paper { background: none; border: 0; box-shadow: none; padding: 0; border-radius: 0; }
:is([data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .save-card.paper::before { display: none; }
/* Tên: điện thoại luôn xếp dọc chú rể / & / cô dâu (không để "&" mồ côi cuối dòng). */
@media (max-width: 760px) {
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names { flex-direction: column; align-items: center; gap: 0; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names .amp { font-size: .55em; line-height: 1.2; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .lunar { font-size: .9rem; }
}
/* Nét line-art tự vẽ: pathLength=1 nên dasharray 1 = cả nét. */
.dr { stroke-dasharray: 1; stroke-dashoffset: 0; }
@keyframes t-draw { from { stroke-dashoffset: 1; } to { stroke-dashoffset: 0; } }
@keyframes t-fade-up { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@keyframes t-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes t-spin { to { transform: rotate(360deg); } }

/* ════════════════════ 1. HOÀNG KIM — ngà & champagne ════════════════════ */
[data-theme="hoangkim"] {
  --accent: #8f6d33; --accent-2: #d9c49a; --gold: #b8964f; --soft: #f1eadc; --ink: #2b2721; --muted: #6b6255; --page: #f8f4ec;
  --nav-bg: #f8f4ec; --nav-ink: #2b2721;
  --f-head: "Cormorant Garamond", Georgia, serif; --f-name: "Cormorant Garamond", Georgia, serif;
  --f-body: "EB Garamond", Georgia, serif; --f-ui: "Montserrat", system-ui, sans-serif;
  --name-style: italic; --name-size: clamp(3.1rem, 6.6vw, 5.8rem); --name-w: 500;
  --paper: #fffdf8; --line: #e6dcc6; --bg: #f8f4ec;
  --foil: linear-gradient(100deg, #7a5a24 0%, #9a7636 30%, #b8964f 44%, #f6e7b8 50%, #b8964f 56%, #9a7636 70%, #7a5a24 100%);
  --div: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 14'><path d='M0 7h72M108 7h72' stroke='black' stroke-width='1'/><path d='M90 1l6 6-6 6-6-6z'/><circle cx='78' cy='7' r='1.6'/><circle cx='102' cy='7' r='1.6'/></svg>");
  --div-color: var(--gold);
}
[data-theme="hoangkim"] body.wd { font-size: 17px; }
[data-theme="hoangkim"] .wd-nav { border-bottom: 1px solid rgba(184, 150, 79, .35); }
[data-theme="hoangkim"] .wd-nav-l a, [data-theme="hoangkim"] .wd-nav-r a { text-transform: uppercase; letter-spacing: .2em; font-size: .7rem; }
[data-theme="hoangkim"] .wd-mono { position: relative; border: 0; border-radius: 0; font: italic 500 1.3rem var(--f-name); gap: 2px; }
[data-theme="hoangkim"] .wd-mono::before { content: ""; position: absolute; inset: 9px; border: 1px solid var(--gold); transform: rotate(45deg); }
[data-theme="hoangkim"] .wd-mono i { color: var(--gold); }
[data-theme="hoangkim"] .wd-mono.big { width: 110px; height: 110px; font-size: 1.9rem; color: var(--ink) !important; }
[data-theme="hoangkim"] .wd-mono.big::before { inset: 16px; }
[data-theme="hoangkim"] .wd-mono.big::after { content: ""; position: absolute; inset: 22px; border: 1px solid var(--accent-2); transform: rotate(45deg); }
/* Đầu trang: 2 cột (ảnh khung chỉ vàng | thiệp chữ), khung đôi viền cả màn. */
[data-theme="hoangkim"] .intro {
  min-height: 100svh; padding: 118px 6vw 84px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center; gap: 5vw; background: radial-gradient(ellipse at 30% 0%, #fffaf0 0%, transparent 60%), radial-gradient(ellipse at 90% 100%, #efe5d1, transparent 55%), var(--page);
}
[data-theme="hoangkim"] .intro::before, [data-theme="hoangkim"] .intro::after { content: ""; position: absolute; pointer-events: none; z-index: 1;
  border: 1px solid rgba(184, 150, 79, .55); animation: t-fade 1.6s ease both .2s; }
[data-theme="hoangkim"] .intro::before { inset: 84px 22px 22px; }
[data-theme="hoangkim"] .intro::after { inset: 90px 28px 28px; border-color: rgba(184, 150, 79, .25); }
[data-theme="hoangkim"] .intro-main { width: min(440px, 100%); margin: 0; justify-self: end; animation: t-fade-up 1.3s cubic-bezier(.2, .7, .2, 1) both; }
[data-theme="hoangkim"] .main-photo { aspect-ratio: 4 / 5; outline: 1px solid rgba(255, 255, 255, .75); outline-offset: -14px; }
[data-theme="hoangkim"] .intro-main::before { content: ""; position: absolute; inset: -14px; border: 1px solid var(--gold); pointer-events: none; }
[data-theme="hoangkim"] .intro-main::after { content: ""; position: absolute; left: 50%; bottom: -26px; width: 12px; height: 12px; margin-left: -6px;
  background: var(--gold); transform: rotate(45deg); box-shadow: 0 0 0 5px var(--page); }
[data-theme="hoangkim"] .save-card { margin: 0; width: 100%; max-width: 520px; justify-self: start; padding: 50px 36px 46px; animation: t-fade-up 1.3s ease both .35s; }
[data-theme="hoangkim"] .crest { display: flex; align-items: center; justify-content: center; gap: 4px; color: var(--gold); margin-bottom: 18px; }
[data-theme="hoangkim"] .crest svg { width: 34px; height: 62px; }
[data-theme="hoangkim"] .crest .crest-r { transform: scaleX(-1); }
[data-theme="hoangkim"] .crest span { font: italic 500 1.9rem/1 var(--f-name); color: var(--ink); letter-spacing: .02em; }
[data-theme="hoangkim"] .crest i { font-style: normal; color: var(--gold); font-size: .7em; margin: 0 2px; }
[data-theme="hoangkim"] .crest .dr { animation: t-draw 2.4s ease both .5s; }
[data-theme="hoangkim"] .eyebrow { letter-spacing: .34em; font-size: .7rem; color: var(--muted); }
[data-theme="hoangkim"] .names { flex-direction: column; align-items: center; gap: 0; line-height: 1.02; margin: 6px 0 18px; }
[data-theme="hoangkim"] .names .name { background: var(--foil); background-size: 320% 100%; background-position: 100% 0;
  -webkit-background-clip: text; background-clip: text; color: transparent; animation: hk-foil 7s ease-in-out infinite 4.5s; padding: 0 .08em; }
[data-theme="hoangkim"] .names .amp { font-size: .5em; color: var(--gold); display: flex; align-items: center; gap: 14px; line-height: 1.3; }
[data-theme="hoangkim"] .names .amp::before, [data-theme="hoangkim"] .names .amp::after { content: ""; width: 44px; border-top: 1px solid var(--accent-2); }
@keyframes hk-foil { 0%, 50% { background-position: 100% 0; } 78%, 100% { background-position: 0 0; } }
[data-theme="hoangkim"] .date { font: 500 1.45rem var(--f-head); letter-spacing: .06em; display: flex; align-items: center; justify-content: center; gap: 0 .35em; flex-wrap: wrap; }
[data-theme="hoangkim"] .lunar { font-size: .98rem; }
[data-theme="hoangkim"] .save-card .divider { display: none; }
[data-theme="hoangkim"] .invitee b { color: var(--accent); font-family: var(--f-name); font-style: italic; }
@media (max-width: 900px) {
  [data-theme="hoangkim"] .intro { grid-template-columns: 1fr; padding: 96px 20px 64px; gap: 44px; }
  [data-theme="hoangkim"] .intro::before { inset: 70px 10px 10px; }
  [data-theme="hoangkim"] .intro::after { inset: 76px 16px 16px; }
  [data-theme="hoangkim"] .intro-main { width: min(330px, 76vw); justify-self: center; }
  [data-theme="hoangkim"] .save-card { justify-self: center; }
}

/* ════════════════════ 2. SONG HỶ — đỏ son truyền thống ════════════════════ */
[data-theme="songhy"] {
  --accent: #b3261e; --red: #a51f17; --red-deep: #7e150f; --gold: #e2b865; --gold-2: #c4933a; --accent-2: #e2b865;
  --soft: #f6e9d2; --ink: #3a1a12; --muted: #6e4c3e; --page: #fbf4e6;
  --nav-bg: #85170f; --nav-ink: #f7e3b5;
  --f-head: "Prata", Georgia, serif; --f-name: "Prata", Georgia, serif; --f-body: "Lora", Georgia, serif; --f-ui: "Be Vietnam Pro", system-ui, sans-serif;
  --name-style: normal; --name-size: clamp(2.5rem, 6vw, 4.6rem);
  --paper: #fffaf0; --line: #ead8b8; --bg: #fbf4e6;
  --div: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 24'><path d='M0 12h66M114 12h66' stroke='black' stroke-width='1.4'/><path d='M60 12l4-4 4 4-4 4zM112 12l4-4 4 4-4 4z'/><path fill-rule='evenodd' d='M90 1a11 11 0 1 1 0 22a11 11 0 1 1 0-22zM86 8h8v8h-8z'/></svg>");
  --corner-tl: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path d='M2 28V2H28M8 22V8H22M8 14H14V8' fill='none' stroke='%23b3261e' stroke-width='2'/></svg>");
  --corner-tr: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path d='M28 28V2H2M22 22V8H8M22 14H16V8' fill='none' stroke='%23b3261e' stroke-width='2'/></svg>");
  --corner-bl: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path d='M2 2V28H28M8 8V22H22M8 16H14V22' fill='none' stroke='%23b3261e' stroke-width='2'/></svg>");
  --corner-br: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path d='M28 2V28H2M22 8V22H8M22 16H16V22' fill='none' stroke='%23b3261e' stroke-width='2'/></svg>");
}
[data-theme="songhy"] .wd-nav { box-shadow: 0 1px 0 rgba(226, 184, 101, .5); }
[data-theme="songhy"] .wd-nav-l a, [data-theme="songhy"] .wd-nav-r a { letter-spacing: .08em; }
[data-theme="songhy"] .wd-mono { border: 1.5px solid var(--gold); color: var(--gold) !important; font: 400 .98rem var(--f-name); box-shadow: inset 0 0 0 3px #85170f, inset 0 0 0 4px rgba(226, 184, 101, .6); }
[data-theme="songhy"] .wd-mono i { color: #f7e3b5; }
[data-theme="songhy"] .wd-mono.big { color: var(--gold) !important; box-shadow: inset 0 0 0 4px #85170f, inset 0 0 0 5px rgba(226, 184, 101, .6); }
[data-theme="songhy"] .wd-burger { border-color: rgba(247, 227, 181, .6); }
/* Đầu trang: thiệp đỏ, khung chỉ vàng, 4 góc hồi văn, 2 đèn lồng, chữ 囍, ảnh tròn như cửa trăng. */
[data-theme="songhy"] .intro { min-height: 100svh; padding: 96px 16px 64px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; color: #f7e3b5; overflow: hidden;
  background: radial-gradient(ellipse 70% 55% at 50% 40%, #c62c22 0%, #a51f17 55%, #7a130d 100%); }
[data-theme="songhy"] .intro::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .09;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='56'><path d='M0 28h14V14h28v28H28V28M28 0v7M28 49v7M0 0h7M49 0h7M0 56h7M49 56h7' fill='none' stroke='%23f2c46b' stroke-width='1.3'/></svg>") 0 0 / 56px 56px; }
[data-theme="songhy"] .intro::after { content: ""; position: absolute; inset: 78px 16px 16px; pointer-events: none; border: 1.5px solid rgba(226, 184, 101, .7);
  box-shadow: inset 0 0 0 5px rgba(122, 19, 13, .0), inset 0 0 0 6px rgba(226, 184, 101, .35); }
[data-theme="songhy"] .hero-deco { display: block; z-index: 2; }
[data-theme="songhy"] .hd-corner { display: block; position: absolute; width: 58px; height: 58px; color: var(--gold); }
[data-theme="songhy"] .hc-1 { top: 88px; left: 26px; }
[data-theme="songhy"] .hc-2 { top: 88px; right: 26px; transform: scaleX(-1); }
[data-theme="songhy"] .hc-3 { bottom: 26px; left: 26px; transform: scaleY(-1); }
[data-theme="songhy"] .hc-4 { bottom: 26px; right: 26px; transform: scale(-1); }
[data-theme="songhy"] .hd-lantern { display: block; position: absolute; top: 60px; width: 62px; height: 124px; transform-origin: 50% 0;
  filter: drop-shadow(0 8px 16px rgba(60, 0, 0, .45)); animation: sh-swing 4.6s ease-in-out infinite alternate; }
[data-theme="songhy"] .hl-1 { left: 9%; }
[data-theme="songhy"] .hl-2 { right: 9%; top: 56px; animation-duration: 5.4s; animation-delay: -2s; }
@keyframes sh-swing { from { transform: rotate(-4deg); } to { transform: rotate(4deg); } }
[data-theme="songhy"] .hd-mark { display: block; position: relative; z-index: 3; width: 78px; height: 78px; margin-bottom: 22px; color: var(--gold);
  animation: sh-mark 1.8s cubic-bezier(.2, .8, .2, 1) both .15s; }
@keyframes sh-mark { from { opacity: 0; transform: scale(.55) rotate(-8deg); } to { opacity: 1; transform: none; } }
[data-theme="songhy"] .intro-main { width: min(310px, 70vw, 36svh); margin: 0 auto; animation: t-fade-up 1.4s ease both .35s; }
[data-theme="songhy"] .intro-main::before { content: ""; position: absolute; inset: -16px; border-radius: 50%; border: 1px dashed rgba(226, 184, 101, .6); pointer-events: none;
  animation: t-spin 80s linear infinite; }
[data-theme="songhy"] .main-photo { aspect-ratio: 1; border-radius: 50%; border: 3px solid var(--gold);
  box-shadow: 0 0 0 7px rgba(122, 19, 13, .6), 0 22px 44px rgba(40, 0, 0, .45); }
[data-theme="songhy"] .save-card { background: none; padding: 0; margin: 34px auto 0; color: #f7e3b5; position: relative; z-index: 3; }
[data-theme="songhy"] .eyebrow { color: #f7dca0; letter-spacing: .3em; font-size: .74rem; }
[data-theme="songhy"] .names { color: var(--gold); margin: 6px 0 14px; gap: 0 .35em; }
[data-theme="songhy"] .names .name { background: linear-gradient(180deg, #fff0c4 0%, #ecc676 50%, #c99a41 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
  text-shadow: none; filter: drop-shadow(0 2px 10px rgba(60, 0, 0, .35)); }
[data-theme="songhy"] .names .amp { color: #f7e3b5; font-size: .6em; align-self: center; }
[data-theme="songhy"] .date { font: 400 1.3rem var(--f-head); letter-spacing: .04em; }
[data-theme="songhy"] .save-card .date { color: #fff3d6; }
[data-theme="songhy"] .save-card .lunar { color: #f3d08c; }
[data-theme="songhy"] .event-card .date { color: var(--red-deep); }
[data-theme="songhy"] .save-card .divider { --div-color: var(--gold); margin-top: 18px; }
[data-theme="songhy"] .invitee { color: #f7e3b5; }
[data-theme="songhy"] .invitee b { color: var(--gold); font-weight: 400; }
@media (max-width: 760px) {
  [data-theme="songhy"] .intro { padding: 86px 14px 56px; }
  [data-theme="songhy"] .intro::after { inset: 66px 8px 8px; }
  [data-theme="songhy"] .hd-corner { width: 36px; height: 36px; }
  [data-theme="songhy"] .hc-1, [data-theme="songhy"] .hc-2 { top: 74px; }
  [data-theme="songhy"] .hc-1, [data-theme="songhy"] .hc-3 { left: 14px; }
  [data-theme="songhy"] .hc-2, [data-theme="songhy"] .hc-4 { right: 14px; }
  [data-theme="songhy"] .hc-3, [data-theme="songhy"] .hc-4 { bottom: 14px; }
  [data-theme="songhy"] .hd-lantern { width: 38px; height: 76px; top: 58px; }
  [data-theme="songhy"] .hl-1 { left: 5%; } [data-theme="songhy"] .hl-2 { right: 5%; }
  [data-theme="songhy"] .hd-mark { width: 62px; height: 62px; margin-bottom: 18px; }
}

/* ════════════════════ 3. TẠP CHÍ — tối giản editorial ════════════════════ */
[data-theme="tapchi"] {
  --accent: #1c1c1c; --accent-2: #b8b2a6; --soft: #ebe8e1; --ink: #161514; --muted: #5d5a54; --page: #f6f5f1;
  --nav-bg: #f6f5f1; --nav-ink: #161514;
  --f-head: "Noto Serif Display", Georgia, serif; --f-name: "Noto Serif Display", Georgia, serif;
  --f-body: "Be Vietnam Pro", system-ui, sans-serif; --f-ui: "Be Vietnam Pro", system-ui, sans-serif;
  --name-style: normal; --name-size: clamp(3.1rem, 6vw, 6.6rem);
  --paper: #fff; --line: #d9d6ce; --bg: #f6f5f1;
}
[data-theme="tapchi"] body.wd { counter-reset: sec; font-size: 16px; }
[data-theme="tapchi"] .wd-nav { border-bottom: 1px solid var(--ink); padding-top: 10px; padding-bottom: 10px; }
[data-theme="tapchi"] .marquee { position: relative; z-index: 1; }
[data-theme="tapchi"] .wd-nav-l a, [data-theme="tapchi"] .wd-nav-r a { text-transform: uppercase; letter-spacing: .18em; font-size: .68rem; font-weight: 600; }
[data-theme="tapchi"] .wd-mono { border: 0; border-radius: 0; background: var(--ink); color: var(--page) !important; width: 44px; height: 44px; font: 400 1.05rem var(--f-name); gap: 1px; }
[data-theme="tapchi"] .wd-mono i { display: none; }
[data-theme="tapchi"] .wd-mono.big { width: 84px; height: 84px; font-size: 1.8rem; background: var(--page); color: var(--ink) !important; }
[data-theme="tapchi"] .wd-burger { border-radius: 0; }
/* Đầu trang: chữ tên cực lớn cột trái, ảnh cao cột phải, rèm mở khi tải. */
[data-theme="tapchi"] .intro { min-height: 100svh; padding: 104px 4vw 48px; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 0 4vw; align-items: end; background: var(--page); }
[data-theme="tapchi"] .intro-main { grid-column: 2; grid-row: 1; width: auto; margin: 0; height: calc(100svh - 152px); min-height: 440px; }
[data-theme="tapchi"] .main-photo { height: 100%; aspect-ratio: auto; }
[data-theme="tapchi"] .intro-main::after { content: ""; position: absolute; inset: 0; z-index: 2; background: var(--ink); transform-origin: 100% 50%; transform: scaleX(0);
  pointer-events: none; animation: tc-curtain 1.25s cubic-bezier(.76, 0, .24, 1) both .15s; }
@keyframes tc-curtain { from { transform: scaleX(1); } to { transform: scaleX(0); } }
[data-theme="tapchi"] .save-card { grid-column: 1; grid-row: 1; align-self: stretch; display: flex; flex-direction: column; justify-content: flex-end; background: none; margin: 0; width: auto; text-align: left; }
[data-theme="tapchi"] .save-card .eyebrow { margin-bottom: auto; padding-bottom: 40px; }
[data-theme="tapchi"] .eyebrow { display: flex; align-items: center; gap: 14px; color: var(--ink); letter-spacing: .24em; font-size: .68rem; font-weight: 600; margin-bottom: 26px; }
[data-theme="tapchi"] .eyebrow::before { content: ""; width: 48px; border-top: 1px solid var(--ink); flex-shrink: 0; }
[data-theme="tapchi"] .names { flex-direction: column; align-items: flex-start; gap: 0; line-height: .94; letter-spacing: -.025em; margin: 0 0 30px; }
[data-theme="tapchi"] .names .name { display: block; animation: t-fade-up 1s cubic-bezier(.2, .7, .2, 1) both .9s; }
[data-theme="tapchi"] .names .name:last-child { animation-delay: 1.05s; }
[data-theme="tapchi"] .names .amp { font-style: italic; font-size: .5em; color: var(--muted); padding: .12em 0 .1em .08em; line-height: 1; animation: t-fade 1s ease both 1s; }
[data-theme="tapchi"] .date { font: 600 .82rem var(--f-ui); text-transform: uppercase; letter-spacing: .2em; border-top: 1px solid var(--ink); padding-top: 14px; }
[data-theme="tapchi"] .lunar { font-style: normal; font-size: .85rem; margin-top: 6px; }
[data-theme="tapchi"] .save-card .divider { display: none; }
[data-theme="tapchi"] .invitee { font: italic 1rem var(--f-head); }
[data-theme="tapchi"] .invitee b { font: 400 1.9rem var(--f-name); color: var(--ink); }
[data-theme="tapchi"] .marquee { display: block; overflow: hidden; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); padding: 16px 0; background: var(--page); }
[data-theme="tapchi"] .mq-track { display: flex; width: max-content; animation: tc-marquee 46s linear infinite; }
[data-theme="tapchi"] .mq-track span { font: italic 400 clamp(1.3rem, 2.4vw, 2rem)/1 var(--f-head); white-space: nowrap; }
[data-theme="tapchi"] .mq-track span::after { content: "✦"; font-style: normal; font-size: .5em; vertical-align: middle; margin: 0 1.4em; }
@keyframes tc-marquee { to { transform: translateX(-50%); } }
/* Mục: tiêu đề trái, đánh số, gạch chân mảnh. */
[data-theme="tapchi"] section.couple, [data-theme="tapchi"] .event, [data-theme="tapchi"] .location, [data-theme="tapchi"] .gallery-sec { padding: 110px 4vw; }
[data-theme="tapchi"] .watercolor { background: var(--page); }
[data-theme="tapchi"] .sec-head { counter-increment: sec; text-align: left; max-width: 1180px; margin: 0 auto 56px; padding-bottom: 16px; border-bottom: 1px solid var(--ink);
  display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }
[data-theme="tapchi"] .sec-head::after { content: counter(sec, decimal-leading-zero); font: 400 clamp(1.4rem, 3vw, 2.2rem)/1 var(--f-head); font-style: italic; color: var(--muted); }
[data-theme="tapchi"] .wd h2 { font: 400 clamp(2.3rem, 5.6vw, 4.4rem)/1 var(--f-head); letter-spacing: -.02em; }
[data-theme="tapchi"] .sec-head .divider { display: none; }
[data-theme="tapchi"] .couple-row { grid-template-columns: 1fr 1fr; gap: 6vw; max-width: 1180px; align-items: start; }
[data-theme="tapchi"] .couple-row > .person:last-child { margin-top: 140px; }
[data-theme="tapchi"] .person { text-align: left; }
[data-theme="tapchi"] .oval { border-radius: 0; aspect-ratio: 4 / 5; width: 100%; margin: 0 0 22px; border: 0; box-shadow: none; }
[data-theme="tapchi"] .role { color: var(--ink); font-weight: 600; letter-spacing: .24em; font-size: .66rem; }
[data-theme="tapchi"] .banner { display: block; background: none; color: var(--ink); padding: 0; margin: 6px 0 10px; border-radius: 0; font: 400 clamp(1.8rem, 3vw, 2.4rem)/1.1 var(--f-head); letter-spacing: -.01em; }
[data-theme="tapchi"] .info { margin: 0; max-width: 440px; }
[data-theme="tapchi"] .rings { display: none; }
[data-theme="tapchi"] .event-row { grid-template-columns: 1fr 1fr; gap: 6vw; max-width: 1180px; align-items: end; }
[data-theme="tapchi"] .event-photo { aspect-ratio: 4 / 5; border: 0; box-shadow: none; }
[data-theme="tapchi"] .paper { background: var(--paper); padding: 44px 40px; border: 1px solid var(--ink); }
[data-theme="tapchi"] .event-card { background: none; border: 0; padding: 0; text-align: left; }
[data-theme="tapchi"] .event-card .lead { font: italic 400 clamp(1.4rem, 2.4vw, 1.9rem)/1.3 var(--f-head); color: var(--ink); }
[data-theme="tapchi"] .event-card .date { font: 400 clamp(1.5rem, 2.6vw, 2.1rem) var(--f-head); letter-spacing: -.01em; text-transform: none; border: 0; padding: 0; }
[data-theme="tapchi"] .wd .countdown { justify-content: flex-start; gap: 0; margin: 34px 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
[data-theme="tapchi"] .wd .countdown div { background: none; border-radius: 0; flex: 1; min-width: 0; text-align: left; padding: 16px 0 14px 14px; }
[data-theme="tapchi"] .wd .countdown div + div { border-left: 1px solid var(--line); }
[data-theme="tapchi"] .wd .countdown b { font: 400 clamp(2.2rem, 4vw, 3.4rem)/1 var(--f-head); color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
[data-theme="tapchi"] .wd .countdown span { color: var(--muted); letter-spacing: .2em; }
[data-theme="tapchi"] .event-card .center-row { justify-content: flex-start; }
[data-theme="tapchi"] .wd .btn { border-radius: 0; text-transform: uppercase; letter-spacing: .16em; font-size: .7rem; font-weight: 600; min-height: 48px; padding: 0 26px; }
[data-theme="tapchi"] .wd .btn-accent:hover { background: var(--page); color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
[data-theme="tapchi"] .wd .btn-ghost { background: transparent; border-color: var(--ink); color: var(--ink); }
[data-theme="tapchi"] .wd .btn-ghost:hover { background: var(--ink); color: var(--page); }
[data-theme="tapchi"] .ev-card { text-align: left; }
[data-theme="tapchi"] .ev-card h3 { font: 400 2.2rem/1.1 var(--f-head); color: var(--ink); letter-spacing: -.01em; }
[data-theme="tapchi"] .ev-map { border-radius: 0; }
[data-theme="tapchi"] .ev-map iframe { filter: grayscale(1) contrast(1.05); }
[data-theme="tapchi"] .quote { min-height: 78svh; place-items: end start; text-align: left; }
[data-theme="tapchi"] .quote::after { background: linear-gradient(0deg, rgba(10, 10, 10, .78), rgba(10, 10, 10, .1) 70%); }
[data-theme="tapchi"] .quote blockquote { max-width: 980px; padding: 80px 4vw 64px; }
[data-theme="tapchi"] .quote blockquote p { font: italic 400 clamp(1.8rem, 4.4vw, 3.6rem)/1.15 var(--f-head); letter-spacing: -.015em; }
[data-theme="tapchi"] .wd-gallery { grid-template-columns: repeat(12, 1fr); grid-auto-rows: min(22vw, 300px); grid-auto-flow: dense; gap: 8px; }
[data-theme="tapchi"] .wd-g { aspect-ratio: auto; grid-column: span 4; }
[data-theme="tapchi"] .wd-g:nth-child(7n + 1) { grid-column: span 8; grid-row: span 2; }
[data-theme="tapchi"] .wd-g:nth-child(7n + 5) { grid-row: span 2; }
[data-theme="tapchi"] .wd-g::after { content: ""; background: rgba(0, 0, 0, .2); }
[data-theme="tapchi"] .wd .album-card { border-radius: 0; box-shadow: none; border: 1px solid var(--ink); }
[data-theme="tapchi"] .wd .album-meta h3 { font-weight: 400; }
[data-theme="tapchi"] .wd input, [data-theme="tapchi"] .wd textarea { border-radius: 0; border-color: #bdb9b0; }
[data-theme="tapchi"] .rsvp-choice span { border-radius: 0; border: 1px solid var(--ink); background: transparent; }
[data-theme="tapchi"] .rsvp-choice input:checked + span { background: var(--ink); color: var(--page); border-color: var(--ink); }
[data-theme="tapchi"] .rsvp-invitee b, [data-theme="tapchi"] .rsvp-done b { color: var(--ink); font-family: var(--f-name); }
[data-theme="tapchi"] .wd .wish-form { border-radius: 0; box-shadow: none; border: 1px solid var(--ink); }
[data-theme="tapchi"] .wd .wish { border-left: 0; border-top: 1px solid var(--ink); border-radius: 0; background: transparent; padding: 18px 0 8px; }
[data-theme="tapchi"] .wd .wish p { font: italic 400 1.25rem/1.45 var(--f-head); }
[data-theme="tapchi"] .wd .cta h2 { font-size: clamp(1.9rem, 4.4vw, 3rem); }
[data-theme="tapchi"] .wd-foot { background: var(--ink); color: var(--page); padding: 90px 16px 70px; }
[data-theme="tapchi"] .wd-foot p { font: italic 400 1.5rem var(--f-head); }
[data-theme="tapchi"] .wd-foot .muted, [data-theme="tapchi"] .wd-foot .music-credit { color: #b5b1a8; font: .85rem var(--f-ui); letter-spacing: .12em; text-transform: uppercase; }
[data-theme="tapchi"] .music-btn { border-radius: 0; }
@media (max-width: 900px) {
  [data-theme="tapchi"] .intro { display: flex; flex-direction: column; align-items: stretch; padding: 70px 0 40px; min-height: 0; }
  [data-theme="tapchi"] .intro-main { height: auto; min-height: 0; }
  [data-theme="tapchi"] .main-photo { aspect-ratio: 4 / 5; height: auto; max-height: 72svh; width: 100%; }
  [data-theme="tapchi"] .save-card.paper { padding: 30px 20px 0; }
  [data-theme="tapchi"] .save-card .eyebrow { padding-bottom: 0; margin-bottom: 22px; }
  [data-theme="tapchi"] .couple-row, [data-theme="tapchi"] .event-row { grid-template-columns: 1fr; }
  [data-theme="tapchi"] .couple-row > .person:last-child { margin-top: 36px; }
  [data-theme="tapchi"] section.couple, [data-theme="tapchi"] .event, [data-theme="tapchi"] .location, [data-theme="tapchi"] .gallery-sec { padding: 72px 20px; }
  [data-theme="tapchi"] .ev-card, [data-theme="tapchi"] .ev:nth-child(even) .ev-card { margin: -1px 0 0; }
}
@media (max-width: 560px) {
  [data-theme="tapchi"] .wd-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 44vw; gap: 4px; }
  [data-theme="tapchi"] .paper { padding: 32px 22px; }
  [data-theme="tapchi"] .wd .countdown div { padding-left: 10px; }
}

/* ════════════════════ 4. VƯỜN HOA — botanical olive & kem ════════════════════ */
[data-theme="vuonhoa"] {
  --accent: #5c6b3a; --accent-2: #a8b58a; --blush: #e8cbb9; --soft: #e9e7d8; --ink: #2e3a28; --muted: #5b6651; --page: #f5f2e8;
  --nav-bg: #f5f2e8; --nav-ink: #2e3a28;
  --f-head: "Great Vibes", cursive; --f-name: "Great Vibes", cursive; --f-body: "Lora", Georgia, serif; --f-ui: "Josefin Sans", system-ui, sans-serif;
  --name-style: normal; --name-size: clamp(3.1rem, 6vw, 5.4rem);
  --paper: #fbf9f2; --line: #dcdcc6; --bg: #f5f2e8;
  --arch: 50% 50% 0 0 / 40% 40% 0 0;
  --div: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24'><path d='M0 12h70M130 12h70' stroke='black' stroke-width='1'/><path d='M97 12c-6-9-17-11-26-6 8 7 18 8 26 6zM103 12c6-9 17-11 26-6-8 7-18 8-26 6z'/><circle cx='100' cy='12' r='3.2'/></svg>");
}
[data-theme="vuonhoa"] .wd-nav { border-bottom: 1px solid var(--line); }
[data-theme="vuonhoa"] .wd-nav-l a, [data-theme="vuonhoa"] .wd-nav-r a { text-transform: uppercase; letter-spacing: .18em; font-size: .74rem; padding-top: 3px; }
[data-theme="vuonhoa"] .wd-mono { border: 1px solid var(--accent-2); font: 400 1.5rem var(--f-name); color: var(--accent) !important; box-shadow: 0 0 0 4px var(--page), 0 0 0 5px rgba(168, 181, 138, .5); }
[data-theme="vuonhoa"] .wd-mono i { color: var(--accent-2); }
[data-theme="vuonhoa"] .wd-mono.big { font-size: 2.4rem; }
/* Đầu trang: khung vòm + viền vòm lệch, 2 cành lá tự vẽ ôm chân vòm. */
[data-theme="vuonhoa"] .intro { min-height: 100svh; padding: 104px 16px 60px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: radial-gradient(ellipse at 50% 32%, #fdfbf4 0%, var(--page) 60%), var(--page); }
[data-theme="vuonhoa"] .intro-main { width: min(300px, 68vw, 34svh); margin: 0 auto; animation: t-fade 1.4s ease both; }
[data-theme="vuonhoa"] .main-photo { aspect-ratio: 4 / 5; border-radius: var(--arch); }
[data-theme="vuonhoa"] .intro-main::before { content: ""; position: absolute; inset: -12px -12px 0; border: 1px solid var(--accent-2); border-bottom: 0; border-radius: var(--arch); pointer-events: none; }
[data-theme="vuonhoa"] .pm-deco { display: block; z-index: 4; }
[data-theme="vuonhoa"] .hd-branch { display: block; position: absolute; bottom: -7%; width: 56%; height: auto; aspect-ratio: 2 / 3; color: var(--accent);
  transform-origin: 50% 100%; animation: vh-sway 7s ease-in-out infinite alternate 3s; }
[data-theme="vuonhoa"] .hb-1 { right: 93%; }
[data-theme="vuonhoa"] .hb-2 { left: 93%; scale: -1 1; animation-delay: 4s; }
[data-theme="vuonhoa"] .hd-branch .dr { animation: t-draw 2.8s ease-in-out both .4s; }
[data-theme="vuonhoa"] .hd-branch .dr:nth-child(n + 2) { animation-delay: 1s; }
[data-theme="vuonhoa"] .hd-branch .dr:nth-child(n + 5) { animation-delay: 1.5s; }
@keyframes vh-sway { from { rotate: 0deg; } to { rotate: 2.5deg; } }
[data-theme="vuonhoa"] .save-card { background: none; padding: 0; margin: 38px auto 0; position: relative; z-index: 3; animation: t-fade-up 1.2s ease both .6s; }
[data-theme="vuonhoa"] .eyebrow { letter-spacing: .3em; font-size: .78rem; color: var(--muted); }
[data-theme="vuonhoa"] .names { color: var(--ink); line-height: 1.15; margin: 0 0 8px; }
[data-theme="vuonhoa"] .names .amp { color: var(--accent); font-size: .8em; }
[data-theme="vuonhoa"] .date { font: 600 .95rem var(--f-ui); letter-spacing: .22em; text-transform: uppercase; padding-top: 4px; }
[data-theme="vuonhoa"] .invitee b { font-size: 2.6rem; }
@media (max-width: 760px) {
  [data-theme="vuonhoa"] .intro { padding: 90px 16px 54px; }
  [data-theme="vuonhoa"] .hd-branch { width: 40%; }
  [data-theme="vuonhoa"] .hb-1 { right: 94%; } [data-theme="vuonhoa"] .hb-2 { left: 94%; }
}

/* ════════════════════ 5. ĐÊM SAO — xanh đêm & vàng ════════════════════ */
[data-theme="demsao"] {
  --accent: #d8b56a; --gold: #d8b56a; --accent-2: #8e9bd6; --soft: #18234d; --ink: #f3ecdc; --muted: #bcbad0; --page: #0d1530;
  --nav-bg: #0a1128; --nav-ink: #f3ecdc;
  --f-head: "Cormorant Garamond", Georgia, serif; --f-name: "Pinyon Script", cursive; --f-body: "EB Garamond", Georgia, serif; --f-ui: "Josefin Sans", system-ui, sans-serif;
  --name-style: normal; --name-size: clamp(3rem, 6vw, 5rem);
  --paper: #141d40; --line: #2c3766; --bg: #0d1530;
  --div: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 20'><path d='M0 10h74M106 10h74' stroke='black' stroke-width='1'/><path d='M90 1C91 7.5 92.5 9 99 10 92.5 11 91 12.5 90 19 89 12.5 87.5 11 81 10 87.5 9 89 7.5 90 1Z'/><circle cx='68' cy='10' r='1.4'/><circle cx='112' cy='10' r='1.4'/></svg>");
  --stars-a: radial-gradient(circle at 20px 30px, #fff 0 1px, transparent 1.6px), radial-gradient(circle at 150px 80px, #fff 0 .8px, transparent 1.4px),
    radial-gradient(circle at 90px 170px, #ffeab8 0 1.2px, transparent 1.8px), radial-gradient(circle at 200px 200px, #fff 0 .7px, transparent 1.3px),
    radial-gradient(circle at 60px 110px, #fff 0 .6px, transparent 1.2px), radial-gradient(circle at 180px 20px, #cfd8ff 0 .9px, transparent 1.5px);
  color-scheme: dark;
}
[data-theme="demsao"] body.wd { font-size: 17px; }
[data-theme="demsao"] .wd a:not(.btn) { color: var(--gold); }
[data-theme="demsao"] .wd-nav { border-bottom: 1px solid rgba(216, 181, 106, .22); }
[data-theme="demsao"] .wd-nav-l a, [data-theme="demsao"] .wd-nav-r a { text-transform: uppercase; letter-spacing: .2em; font-size: .72rem; padding-top: 3px; }
[data-theme="demsao"] .wd-mono { border: 1px solid rgba(216, 181, 106, .7); color: var(--gold) !important; font: italic 500 1.3rem var(--f-head); }
[data-theme="demsao"] .wd-mono i { color: var(--ink); }
[data-theme="demsao"] .wd-mono.big { box-shadow: 0 0 40px rgba(216, 181, 106, .25); }
/* Đầu trang: trời sao 3 lớp lấp lánh, sao băng, trăng khuyết, ảnh tròn viền vàng phát sáng + quỹ đạo xoay. */
[data-theme="demsao"] .intro { min-height: 100svh; padding: 100px 16px 64px; display: flex; flex-direction: column; align-items: center; justify-content: center;
  overflow: hidden; background: radial-gradient(ellipse 90% 55% at 50% 115%, #2d3d80 0%, rgba(45, 61, 128, 0) 65%), radial-gradient(ellipse at 50% 0%, #17224b 0%, #0a1128 72%); }
[data-theme="demsao"] .hero-deco { display: block; z-index: 1; }
[data-theme="demsao"] .sky { display: block; position: absolute; inset: 0; }
[data-theme="demsao"] .sky i { position: absolute; inset: 0; background: var(--stars-a); background-size: 230px 230px; animation: ds-twinkle 3.8s ease-in-out infinite alternate; }
[data-theme="demsao"] .sky .sky-b { background-size: 330px 330px; background-position: 70px 40px; animation-duration: 5.2s; animation-delay: -2s; opacity: .8; }
[data-theme="demsao"] .sky .sky-c { background-size: 470px 470px; background-position: 160px 120px; animation-duration: 2.8s; animation-delay: -1s; transform: scale(1.4); transform-origin: 0 0; }
@keyframes ds-twinkle { from { opacity: .25; } to { opacity: 1; } }
[data-theme="demsao"] .shoot { display: block; position: absolute; top: 16%; left: 78%; width: 140px; height: 1.5px; border-radius: 2px;
  background: linear-gradient(90deg, #fff, rgba(255, 255, 255, 0)); opacity: 0; transform: rotate(-28deg); animation: ds-shoot 9s ease-out infinite 2.5s; }
@keyframes ds-shoot { 0% { opacity: 0; transform: rotate(-28deg) translateX(0); } 2% { opacity: 1; } 9% { opacity: 0; transform: rotate(-28deg) translateX(-460px); } 100% { opacity: 0; transform: rotate(-28deg) translateX(-460px); } }
[data-theme="demsao"] .hd-moon { display: block; position: absolute; top: 96px; right: 9%; width: 74px; height: 74px; color: #f3dfaa;
  filter: drop-shadow(0 0 22px rgba(243, 223, 170, .55)); animation: ds-float 8s ease-in-out infinite alternate; }
@keyframes ds-float { from { transform: translateY(-6px) rotate(-4deg); } to { transform: translateY(8px) rotate(3deg); } }
[data-theme="demsao"] .intro-main { width: min(290px, 64vw, 34svh); margin: 0 auto; animation: t-fade 1.8s ease both .2s; }
[data-theme="demsao"] .intro-main::before { content: ""; position: absolute; inset: -24px; border-radius: 50%; border: 1px dashed rgba(216, 181, 106, .45); pointer-events: none; animation: t-spin 90s linear infinite; }
[data-theme="demsao"] .intro-main::after { content: ""; position: absolute; top: -28px; left: 50%; width: 9px; height: 9px; margin-left: -4.5px; border-radius: 50%; background: #f3dfaa;
  box-shadow: 0 0 12px 3px rgba(243, 223, 170, .7); transform-origin: 4.5px calc(min(290px, 64vw, 34svh) / 2 + 28px); animation: t-spin 24s linear infinite; pointer-events: none; }
[data-theme="demsao"] .main-photo { aspect-ratio: 1; border-radius: 50%; border: 1.5px solid var(--gold);
  box-shadow: 0 0 0 8px rgba(10, 16, 40, .85), 0 0 0 9px rgba(216, 181, 106, .6), 0 0 70px rgba(216, 181, 106, .3); }
[data-theme="demsao"] .save-card { background: none; padding: 0; margin: 40px auto 0; position: relative; z-index: 3; animation: t-fade-up 1.4s ease both .5s; }
[data-theme="demsao"] .eyebrow { color: var(--muted); letter-spacing: .34em; font-size: .74rem; }
[data-theme="demsao"] .names { flex-direction: column; align-items: center; gap: 0; line-height: 1.12; margin: 2px 0 12px; }
[data-theme="demsao"] .names .name { background: linear-gradient(180deg, #fbeec6 10%, #d8b56a 60%, #b8913f 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
  padding: 0 .12em; }
[data-theme="demsao"] .names .amp { color: var(--ink); font: italic 500 .5em/1.1 var(--f-head); }
[data-theme="demsao"] .date { font: 500 1.35rem var(--f-head); letter-spacing: .12em; text-transform: uppercase; }
[data-theme="demsao"] .lunar { color: var(--muted); }
[data-theme="demsao"] .save-card .divider { --div-color: var(--gold); }
[data-theme="demsao"] .invitee { color: var(--ink); }
[data-theme="demsao"] .invitee b { color: var(--gold); font-size: 2.4rem; }
@media (max-width: 760px) {
  [data-theme="demsao"] .hd-moon { top: 76px; right: 7%; width: 46px; height: 46px; }
}

/* ════════════════════ 6. ĐẤT NUNG — boho terracotta ════════════════════ */
[data-theme="datnung"] {
  --accent: #a94f32; --terra: #b5583a; --mustard: #d9a05b; --blush: #e7c3ad; --accent-2: #d9a05b; --soft: #efdfcf; --ink: #3d281e; --muted: #76584a; --page: #f6ede2;
  --nav-bg: #f6ede2; --nav-ink: #3d281e;
  --f-head: "Fraunces", Georgia, serif; --f-name: "Fraunces", Georgia, serif; --f-body: "Be Vietnam Pro", system-ui, sans-serif; --f-ui: "Be Vietnam Pro", system-ui, sans-serif;
  --name-style: italic; --name-size: clamp(3rem, 6.8vw, 6rem);
  --paper: #fbf5ec; --line: #e6d3bf; --bg: #f6ede2;
  --arch: 50% 50% 0 0 / 40% 40% 0 0;
  --div: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 26'><path d='M0 22h62M118 22h62' stroke='black' stroke-width='1.4'/><path d='M78 22a12 12 0 0 1 24 0z'/><path d='M76.1 14l-5.2-3M82 8.1l-3-5.1M90 6V0M98 8.1l3-5.1M103.9 14l5.2-3' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>");
}
[data-theme="datnung"] .wd-nav { border-bottom: 1px solid var(--line); }
[data-theme="datnung"] .wd-nav-l a, [data-theme="datnung"] .wd-nav-r a { font-weight: 600; font-size: .82rem; letter-spacing: .06em; }
[data-theme="datnung"] .wd-mono { border: 1.5px solid var(--accent); border-radius: 999px 999px 8px 8px; font: italic 400 1.02rem var(--f-name); padding-top: 6px; }
[data-theme="datnung"] .wd-mono i { color: var(--mustard); }
[data-theme="datnung"] .wd-mono.big { color: var(--accent) !important; }
/* Đầu trang: chữ trái, vòm ảnh phải; mặt trời có tia xoay chậm sau vòm, cầu vồng boho tự vẽ ở chân. */
[data-theme="datnung"] .intro { min-height: 100svh; padding: 110px 7vw 72px; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: 5vw;
  background: radial-gradient(ellipse at 100% 0%, #f1dcc6 0%, transparent 55%), var(--page); }
[data-theme="datnung"] .intro-main { grid-column: 2; grid-row: 1; width: min(400px, 100%); margin: 0; justify-self: center; }
[data-theme="datnung"] .main-photo { aspect-ratio: 4 / 5; border-radius: var(--arch); position: relative; z-index: 2; box-shadow: 0 30px 60px -30px rgba(90, 40, 20, .5); }
[data-theme="datnung"] .pm-deco { display: block; inset: 0; z-index: auto; }
[data-theme="datnung"] .hd-sun { display: block; position: absolute; width: 74%; aspect-ratio: 1; right: -28%; top: -14%; border-radius: 50%; z-index: -1;
  background: radial-gradient(circle, var(--mustard) 0 54%, transparent 55%); }
[data-theme="datnung"] .hd-sun::before { content: ""; position: absolute; inset: -14%; border-radius: 50%;
  background: repeating-conic-gradient(from 0deg, var(--mustard) 0 3deg, transparent 3deg 15deg);
  -webkit-mask: radial-gradient(circle, transparent 0 55%, #000 56% 68%, transparent 69%); mask: radial-gradient(circle, transparent 0 55%, #000 56% 68%, transparent 69%);
  animation: t-spin 60s linear infinite; opacity: .8; }
[data-theme="datnung"] .hd-rainbow { display: block; position: absolute; left: -26%; bottom: -5%; width: 58%; z-index: 3; }
[data-theme="datnung"] .hd-rainbow .dr { animation: t-draw 1.8s cubic-bezier(.5, 0, .2, 1) both .6s; }
[data-theme="datnung"] .hd-rainbow .dr:nth-child(2) { animation-delay: .85s; }
[data-theme="datnung"] .hd-rainbow .dr:nth-child(3) { animation-delay: 1.1s; }
[data-theme="datnung"] .intro-main { animation: dn-rise 1.4s cubic-bezier(.2, .7, .2, 1) both; }
@keyframes dn-rise { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: none; } }
[data-theme="datnung"] .save-card { grid-column: 1; grid-row: 1; background: none; padding: 0; margin: 0; width: auto; text-align: left; animation: t-fade-up 1.2s ease both .3s; }
[data-theme="datnung"] .eyebrow { color: var(--accent); letter-spacing: .26em; font-size: .74rem; font-weight: 600; }
[data-theme="datnung"] .names { justify-content: flex-start; line-height: 1.02; margin: 10px 0 24px; letter-spacing: -.01em; flex-direction: column; align-items: flex-start; }
[data-theme="datnung"] .names .amp { color: var(--mustard); font-style: normal; font-size: .6em; line-height: 1.1; }
[data-theme="datnung"] .date { font: 600 1.3rem var(--f-head); display: inline-block; padding: 10px 22px; border-radius: 999px; background: var(--soft); }
[data-theme="datnung"] .lunar { margin-top: 12px; padding-left: 4px; }
[data-theme="datnung"] .save-card .divider { display: none; }
[data-theme="datnung"] .invitee b { color: var(--accent); font-family: var(--f-name); font-style: italic; }
@media (max-width: 900px) {
  [data-theme="datnung"] .intro { display: flex; flex-direction: column; padding: 96px 20px 60px; gap: 44px; }
  [data-theme="datnung"] .intro-main { width: min(310px, 68vw); }
  [data-theme="datnung"] .save-card { text-align: center; }
  [data-theme="datnung"] .names { align-items: center; }
  [data-theme="datnung"] .hd-rainbow { left: -14%; width: 50%; }
  [data-theme="datnung"] .date { font-size: 1.05rem; padding: 8px 18px; }
}

/* ═══ v3: tên dài, trang thiếu ảnh, nhịp section, số La Mã ═══ */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names .name { text-wrap: balance; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names.names--long, :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names.names--xl { flex-direction: column; gap: 0; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names.names--long { font-size: calc(var(--name-size) * .8); }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .names.names--xl { font-size: calc(var(--name-size) * .64); }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) :is(.names--long, .names--xl) .amp { font-size: .5em; }
:is([data-theme="vuonhoa"], [data-theme="demsao"]) :is(.names--long, .names--xl) .name { line-height: 1.3; }
[data-theme="songhy"] :is(.names--long, .names--xl) { line-height: 1.12; }
/* Không có ảnh đầu trang: chữ thành trung tâm. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .intro.intro--noimg { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .intro--noimg .save-card { max-width: 760px; }
[data-theme="tapchi"] .intro--noimg .save-card { text-align: left; width: min(980px, 100%); }
/* Nhịp: tiêu đề gần nội dung hơn, section đều tay. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) :is(section.couple, .event, .location, .gallery-sec) { padding: 100px 20px; }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .sec-head { margin-bottom: 44px; }
/* Hoàng kim + Đêm sao: số La Mã đánh dấu từng phần, kẹp giữa 2 nét chỉ. */
:is([data-theme="hoangkim"], [data-theme="demsao"]) body.wd { counter-reset: rn; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .sec-head { counter-increment: rn; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .sec-head::before { content: counter(rn, upper-roman); display: block; width: 150px; height: auto; margin: 0 auto 12px;
  font: 500 1rem/1 var(--f-head); letter-spacing: .32em; text-indent: .32em; color: var(--gold); text-align: center;
  background: linear-gradient(var(--accent-2), var(--accent-2)) left center / 44px 1px no-repeat, linear-gradient(var(--accent-2), var(--accent-2)) right center / 44px 1px no-repeat; }
[data-theme="demsao"] .sec-head::before { --accent-2: rgba(216, 181, 106, .45); }
/* Câu trích dẫn không ảnh — mỗi giao diện một kiểu. */
[data-theme="hoangkim"] .quote.quote--noimg { background: var(--paper); border-top: 1px solid var(--accent-2); border-bottom: 1px solid var(--accent-2); }
[data-theme="hoangkim"] .quote--noimg blockquote::before { font: 500 6rem/.5 var(--f-head); color: var(--gold); }
[data-theme="hoangkim"] .quote--noimg blockquote p { color: var(--ink); }
[data-theme="songhy"] .quote.quote--noimg { color: #fff3d6; background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='56'><path d='M0 28h14V14h28v28H28V28M28 0v7M28 49v7M0 0h7M49 0h7M0 56h7M49 56h7' fill='none' stroke='%23f2c46b' stroke-width='1.3' stroke-opacity='.1'/></svg>") 0 0 / 56px, radial-gradient(ellipse at 50% 40%, #c02a20, #86170f); }
[data-theme="songhy"] .quote--noimg blockquote { margin: 72px auto; max-width: 720px; }
[data-theme="songhy"] .quote--noimg blockquote::before { content: ""; width: 54px; height: 54px; margin: 0 auto 22px; background: var(--gold); -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke='black' stroke-width='5.5' stroke-linecap='square'><path d='M8 12H45M55 12H92M26.5 3V24M73.5 3V24M15 24H38M62 24H85M15 32H38V45H15ZM62 32H85V45H62Z'/><path d='M19 52l3 6M34 52l-3 6M66 52l3 6M81 52l-3 6M5 64H95M15 73H38V95H15ZM62 73H85V95H62Z'/></g></svg>") center / contain no-repeat; mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke='black' stroke-width='5.5' stroke-linecap='square'><path d='M8 12H45M55 12H92M26.5 3V24M73.5 3V24M15 24H38M62 24H85M15 32H38V45H15ZM62 32H85V45H62Z'/><path d='M19 52l3 6M34 52l-3 6M66 52l3 6M81 52l-3 6M5 64H95M15 73H38V95H15ZM62 73H85V95H62Z'/></g></svg>") center / contain no-repeat; }
[data-theme="tapchi"] .quote.quote--noimg { background: var(--page); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); place-items: center; text-align: left; }
[data-theme="tapchi"] .quote--noimg blockquote { padding: 90px 4vw; }
[data-theme="tapchi"] .quote--noimg blockquote::before { font: 400 8rem/.5 var(--f-head); color: var(--ink); margin-bottom: 26px; }
[data-theme="tapchi"] .quote--noimg blockquote p { color: var(--ink); }
[data-theme="vuonhoa"] .quote.quote--noimg { background: #e8ebdb; }
[data-theme="vuonhoa"] .quote--noimg blockquote::before { font: 400 5rem/.55 var(--f-body); color: var(--accent); }
[data-theme="vuonhoa"] .quote--noimg blockquote::after { background: var(--accent); }
[data-theme="demsao"] .quote.quote--noimg { color: var(--ink); background: var(--stars-a), radial-gradient(ellipse at 50% 120%, #26357a, #0b1330 70%); background-size: 260px 260px, 260px 260px, 260px 260px, 260px 260px, 260px 260px, 260px 260px, 100% 100%; }
[data-theme="demsao"] .quote--noimg blockquote::before { font: 500 5.6rem/.5 var(--f-head); color: var(--gold); }
[data-theme="datnung"] .quote.quote--noimg { background: radial-gradient(circle at 50% 118%, #e7c3ad 0 22%, #ecd4c0 22.2% 34%, #f1dfcf 34.2%); }
[data-theme="datnung"] .quote--noimg blockquote::before { font: 400 5.6rem/.5 var(--f-head); color: var(--accent); }
[data-theme="datnung"] .quote--noimg blockquote p { color: var(--ink); }
/* Lễ thành hôn không ảnh: thẻ đếm ngược đứng giữa, rộng rãi. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .event--noimg .event-card { padding-left: clamp(22px, 6vw, 72px); padding-right: clamp(22px, 6vw, 72px); }
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .event--noimg .event-row { grid-template-columns: minmax(0, 1fr); }
[data-theme="tapchi"] .event--noimg .event-row { max-width: 1180px; }
[data-theme="tapchi"] .event--noimg .event-card { padding: 0; }
@media (min-width: 901px) {
  [data-theme="tapchi"] .event--noimg .event-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 6vw; align-items: end; }
  [data-theme="tapchi"] .event--noimg .event-card > * { grid-column: 1; }
  [data-theme="tapchi"] .event--noimg .event-card > .countdown { grid-column: 2; grid-row: 1 / span 2; margin: 0; }
  [data-theme="tapchi"] .event--noimg .event-card > .btn-row { grid-column: 2; grid-row: 3; }
  [data-theme="tapchi"] .event--noimg .event-card .lead { font-size: clamp(1.8rem, 3vw, 2.6rem); }
}
[data-theme="hoangkim"] .names.names--long { font-size: calc(var(--name-size) * .72); }
[data-theme="hoangkim"] .names.names--xl { font-size: calc(var(--name-size) * .58); }
/* Địa điểm không bản đồ: thẻ đủ đầy (tiêu đề, nơi, địa chỉ, giờ, nút). */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .ev--nomap .ev-card { display: flex; flex-direction: column; align-items: center; justify-content: center; }
[data-theme="tapchi"] .ev--nomap .ev-card { align-items: flex-start; }

/* Hoàng kim / Đêm sao: phông Garamond x-height thấp -> chữ thân, nhãn form, lời chúc lớn hơn ~12%. */
:is([data-theme="hoangkim"], [data-theme="demsao"]) .wd label { font-size: 1.06rem; font-weight: 500; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .wd label small { font-size: .9rem; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .wd .wish p { font-size: 1.28rem; line-height: 1.5; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .wd .wish cite { font-size: 1.02rem; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .lunar { font-size: 1.1rem; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) :is(.lead, .info, .ev-addr, .ev-time, .rsvp-invitee, .wd-foot p) { font-size: 1.12rem; }
:is([data-theme="hoangkim"], [data-theme="demsao"]) .wd .countdown span { font-size: .74rem; }
/* Hoàng kim: thẻ đếm ngược chữ lớn, cân với ảnh. */
[data-theme="hoangkim"] .event-row { align-items: center; }

/* ── Điện thoại: tinh chỉnh cuối (đặt sau các luật riêng để thắng) ── */
@media (max-width: 760px) {
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) :is(section.couple, .event, .location, .gallery-sec) { padding: 68px 18px; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .sec-head { margin-bottom: 32px; }
  [data-theme="datnung"] .intro { min-height: 0; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .quote--noimg blockquote { padding: 56px 8px; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .wd-mono:not(.big) { font-size: .92rem; }
  [data-theme="vuonhoa"] .wd-mono:not(.big) { font-size: 1.1rem; }
  [data-theme="tapchi"] .wd-mono:not(.big) { font-size: .95rem; }
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .eyebrow { letter-spacing: .2em; }
  [data-theme="hoangkim"] .save-card.paper { padding: 26px 16px 26px; }
  [data-theme="hoangkim"] .intro { padding: 82px 18px 44px; gap: 30px; min-height: 0; }
  [data-theme="hoangkim"] .intro-main { width: min(250px, 62vw); }
  [data-theme="hoangkim"] .main-photo { aspect-ratio: 1 / 1.08; }
  [data-theme="hoangkim"] .crest { margin-bottom: 8px; }
  [data-theme="hoangkim"] .crest svg { width: 26px; height: 46px; }
  [data-theme="hoangkim"] .crest span { font-size: 1.5rem; }
  [data-theme="hoangkim"] .names { margin: 2px 0 10px; }
  [data-theme="hoangkim"] .date { font-size: 1.25rem; letter-spacing: .02em; }
  [data-theme="tapchi"] .main-photo { max-height: 52svh; }
  [data-theme="tapchi"] .names { margin-bottom: 20px; }
  [data-theme="tapchi"] .intro { padding-bottom: 110px; }
  :is([data-theme="tapchi"], [data-theme="vuonhoa"]) .date { letter-spacing: .1em; }
  [data-theme="demsao"] .date { letter-spacing: .05em; font-size: 1.2rem; }
  /* Thẻ vòm hẹp: vòm thấp (elip) để chữ không chạm đường cong. */
}

/* ═════════════ v4 — BỐ CỤC RIÊNG TỪNG GIAO DIỆN (section khác nhau, không chỉ đổi màu) ═════════════ */
/* Chung: khối ngày kiểu thiệp thay dòng ngày thường (dòng ngày vẫn hiện nếu chưa chọn ngày -> chủ nhà bấm để chọn). */
:is([data-theme="hoangkim"], [data-theme="songhy"]) .event-card:has(.dlock) > .date.big { display: none; }
.dlock, .cal { cursor: default; }
.is-draft .dlock, .is-draft .cal { cursor: pointer; }
.dlock .dl-row { display: flex; align-items: center; justify-content: center; }
.cal-g { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; }
.cal-g > * { display: grid; place-items: center; aspect-ratio: 1; font-style: normal; }
.cal-g .on { position: relative; font-weight: 700; }

/* ─────────── HOÀNG KIM: thiệp in letterpress ─────────── */
[data-theme="hoangkim"] .wd h2 { font: italic 500 clamp(2.3rem, 5vw, 3.4rem)/1.15 var(--f-head); }
[data-theme="hoangkim"] .watercolor { background: var(--paper); }
[data-theme="hoangkim"] .wd .btn { border-radius: 0; text-transform: uppercase; letter-spacing: .2em; font-size: .7rem; font-weight: 600; min-height: 46px; padding: 0 26px; }
[data-theme="hoangkim"] .wd .btn-ghost { background: transparent; border-color: var(--gold); color: var(--ink); }
/* Cô dâu & chú rể: 2 chân dung vòm viền chỉ vàng, tên khắc in hoa giãn cách, "&" giữa 2 nét chỉ đứng. */
[data-theme="hoangkim"] .couple-row { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 0 clamp(18px, 5vw, 64px); max-width: 900px; }
[data-theme="hoangkim"] .rings { display: none; }
[data-theme="hoangkim"] .couple-amp { display: flex; flex-direction: column; align-items: center; align-self: stretch; gap: 14px; padding: 40px 0 120px;
  font: italic 500 2.6rem/1 var(--f-head); color: var(--gold); }
[data-theme="hoangkim"] .couple-amp::before, [data-theme="hoangkim"] .couple-amp::after { content: ""; flex: 1; width: 1px; background: linear-gradient(transparent, var(--gold), transparent); }
[data-theme="hoangkim"] .oval { width: min(260px, 100%); aspect-ratio: 5 / 7; border-radius: 999px 999px 0 0; border: 0;
  box-shadow: 0 0 0 8px var(--paper), 0 0 0 9px var(--gold), 0 24px 40px -24px rgba(60, 40, 10, .45); margin: 0 auto 38px; }
[data-theme="hoangkim"] .role { color: var(--accent); letter-spacing: .34em; font-size: .64rem; font-weight: 600; }
[data-theme="hoangkim"] .banner { display: block; background: none; color: var(--ink); padding: 0; border-radius: 0; margin: 10px 0 12px;
  font: 500 clamp(1.05rem, 2.2vw, 1.45rem)/1.35 var(--f-head); text-transform: uppercase; letter-spacing: .16em; text-wrap: balance; }
[data-theme="hoangkim"] .banner::after { content: ""; display: block; width: 36px; height: 1px; margin: 14px auto 0; background: var(--gold); }
[data-theme="hoangkim"] .info { font-style: italic; }
/* Lễ thành hôn: thiệp báo hỷ căn giữa, khối ngày "Tháng | 20 | Năm" giữa 2 nét chỉ. */
[data-theme="hoangkim"] .event { background: radial-gradient(ellipse at 50% 0%, #fffaf0, transparent 60%), var(--page); }
[data-theme="hoangkim"] .event-row { grid-template-columns: minmax(0, 4fr) minmax(0, 6fr); gap: clamp(28px, 5vw, 72px); max-width: 1080px; align-items: center; }
[data-theme="hoangkim"] .event-photo { aspect-ratio: 4 / 5; border: 0; outline: 1px solid rgba(255, 255, 255, .8); outline-offset: -14px; box-shadow: 0 30px 60px -30px rgba(60, 40, 10, .5); }
[data-theme="hoangkim"] .paper { background: var(--paper); border: 1px solid var(--line); box-shadow: inset 0 0 0 7px var(--paper), inset 0 0 0 8px var(--accent-2); padding: 56px 44px; }
[data-theme="hoangkim"] .event-card { padding: clamp(44px, 6vw, 68px) clamp(22px, 5vw, 56px); display: flex; flex-direction: column; align-items: center; }
[data-theme="hoangkim"] .ev-intro { display: block; margin-bottom: 10px; }
[data-theme="hoangkim"] .ev-k { font: 600 .64rem var(--f-ui); letter-spacing: .32em; text-transform: uppercase; color: var(--accent); margin: 0 0 14px; text-wrap: balance; }
[data-theme="hoangkim"] .ev-names { display: flex; flex-direction: column; align-items: center; margin: 0; font: italic 500 clamp(2rem, 4vw, 2.8rem)/1.08 var(--f-name); color: var(--ink); }
[data-theme="hoangkim"] .ev-names i { font-size: .55em; color: var(--gold); padding: 2px 0; }
[data-theme="hoangkim"] .event-card .lead { order: 0; margin: 12px 0 0; font-size: 1.15rem; }
[data-theme="hoangkim"] .dlock { display: block; margin: 26px 0 6px; width: 100%; max-width: 380px; }
[data-theme="hoangkim"] .dl-wd { display: block; font: 600 .7rem var(--f-ui); letter-spacing: .34em; text-transform: uppercase; color: var(--accent); margin-bottom: 12px; }
[data-theme="hoangkim"] .dl-wd i { font-style: normal; color: var(--gold); }
[data-theme="hoangkim"] .dl-row > span { flex: 1; font: 500 1rem var(--f-head); letter-spacing: .24em; text-transform: uppercase; padding: 10px 0; border-top: 1px solid var(--accent-2); border-bottom: 1px solid var(--accent-2); }
[data-theme="hoangkim"] .dl-d { font: 500 clamp(3.6rem, 9vw, 4.6rem)/1 var(--f-head); padding: 0 .3em; color: var(--ink); }
[data-theme="hoangkim"] .dl-t { display: none; }
[data-theme="hoangkim"] .event-card .lunar { font-size: 1.1rem; margin-top: 12px; }
[data-theme="hoangkim"] .wd .countdown { gap: 0; margin: 30px 0 28px; width: 100%; max-width: 380px; }
[data-theme="hoangkim"] .wd .countdown div { background: none; border-radius: 0; min-width: 76px; padding: 4px 6px; }
[data-theme="hoangkim"] .wd .countdown div + div { border-left: 1px solid var(--accent-2); }
[data-theme="hoangkim"] .wd .countdown b { font: 500 2.5rem/1.1 var(--f-head); color: var(--ink); font-variant-numeric: lining-nums; }
[data-theme="hoangkim"] .wd .countdown span { color: var(--accent); letter-spacing: .24em; font-size: .62rem; }
/* Địa điểm: thiệp nhỏ đánh số I / II đứng cạnh nhau, bản đồ lồng khung chỉ vàng. */
[data-theme="hoangkim"] .location { counter-reset: evn; }
[data-theme="hoangkim"] .location .events { grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr)); max-width: 1040px; gap: 28px; align-items: stretch; }
[data-theme="hoangkim"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { display: flex; flex-direction: column; counter-increment: evn; max-width: none; margin: 0;
  background: var(--paper); border: 1px solid var(--line); padding: 12px; box-shadow: 0 24px 40px -34px rgba(60, 40, 10, .5); }
[data-theme="hoangkim"] .location :is(.ev, .ev:nth-child(even)) .ev-map { order: 0; height: 210px; border-radius: 0; outline: 1px solid var(--accent-2); outline-offset: -1px; }
[data-theme="hoangkim"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { margin: 0; flex: 1; background: none; border: 0; box-shadow: none; padding: 30px 18px 26px;
  display: flex; flex-direction: column; align-items: center; }
[data-theme="hoangkim"] .ev-card::before { display: block; content: counter(evn, upper-roman); font: 500 1.05rem/1 var(--f-head); letter-spacing: .2em; color: var(--gold);
  position: static; inset: auto; z-index: auto; transform: none; box-shadow: none; background: none; margin-bottom: 10px; }
[data-theme="hoangkim"] .ev-card h3 { font: italic 500 2.1rem/1.15 var(--f-head); color: var(--ink); margin: 0 0 10px; }
[data-theme="hoangkim"] .ev-place { font: 600 .7rem var(--f-ui); letter-spacing: .26em; text-transform: uppercase; color: var(--accent); margin-bottom: 12px; }
[data-theme="hoangkim"] .ev-card .btn { margin-top: auto; }
[data-theme="hoangkim"] .ev-time { margin-bottom: 20px; }
[data-theme="hoangkim"] .ev-map iframe { filter: sepia(.22) saturate(.8); }
/* Trích dẫn */
[data-theme="hoangkim"] .quote::after { background: linear-gradient(rgba(34, 26, 14, .5), rgba(34, 26, 14, .66)); }
[data-theme="hoangkim"] .quote blockquote::before { content: "“"; display: block; font: 500 5rem/0.6 var(--f-head); color: #e3cc93; margin-bottom: 8px; }
[data-theme="hoangkim"] .quote blockquote p { font: italic 500 clamp(1.6rem, 3.6vw, 2.5rem)/1.4 var(--f-head); }
/* Album: lưới xếp gạch (masonry) theo tỉ lệ ảnh thật, viền chỉ trắng bên trong. */
[data-theme="hoangkim"] .wd-gallery { display: block; columns: 3 260px; column-gap: 16px; max-width: 1180px; }
[data-theme="hoangkim"] .wd-g { aspect-ratio: auto; break-inside: avoid; margin: 0 0 16px; background: var(--soft); }
[data-theme="hoangkim"] .wd-g img { height: auto; min-height: 120px; }
[data-theme="hoangkim"] .wd-g::after { content: ""; inset: 10px; background: none; border: 1px solid rgba(255, 255, 255, .85); opacity: 1; transition: inset .4s; }
[data-theme="hoangkim"] .wd-g:hover::after { inset: 16px; }
[data-theme="hoangkim"] .wd .album-card { border-radius: 0; box-shadow: none; border: 1px solid var(--line); }
/* Gửi ảnh */
[data-theme="hoangkim"] .cta { border-top: 1px solid var(--accent-2); border-bottom: 1px solid var(--accent-2); margin: 40px auto; padding: 56px 16px; max-width: 700px; }
[data-theme="hoangkim"] .cta h2 { font-size: clamp(1.9rem, 4vw, 2.5rem); }
/* Xác nhận: phiếu hồi âm */
[data-theme="hoangkim"] .rsvp-choice span, [data-theme="hoangkim"] .wd input, [data-theme="hoangkim"] .wd textarea { border-radius: 0; }
[data-theme="hoangkim"] .rsvp-choice span { border: 1px solid var(--line); font: 500 1.1rem var(--f-head); letter-spacing: .02em; }
[data-theme="hoangkim"] .rsvp-choice input:checked + span { border-color: var(--gold); background: #fbf4e4; box-shadow: inset 0 0 0 1px var(--gold); }
[data-theme="hoangkim"] .rsvp-card > .lead { font-size: 1.2rem; }
/* Lời chúc: như thư tay — giấy ngà, dấu ngoặc vàng, chữ ký nghiêng. */
[data-theme="hoangkim"] .wd .wish-form { border-radius: 0; box-shadow: none; border: 1px solid var(--line); background: var(--paper); padding: 28px; }
[data-theme="hoangkim"] .wish-list { column-gap: 22px; }
[data-theme="hoangkim"] .wd .wish { position: relative; border: 1px solid var(--line); border-radius: 0; background: var(--paper); padding: 40px 28px 26px; text-align: center; margin-bottom: 22px;
  box-shadow: inset 0 0 0 5px var(--paper), inset 0 0 0 6px rgba(217, 196, 154, .55); }
[data-theme="hoangkim"] .wd .wish::before { content: "“"; position: absolute; top: 16px; left: 50%; transform: translateX(-50%); font: 500 3.2rem/1 var(--f-head); color: var(--gold); }
[data-theme="hoangkim"] .wd .wish p { font-style: italic; margin: 12px 0 14px; }
[data-theme="hoangkim"] .wd .wish cite { display: block; font: italic 500 1.15rem var(--f-head); color: var(--accent); }
[data-theme="hoangkim"] .wd .wish cite::before { content: "— "; color: var(--gold); }
[data-theme="hoangkim"] .wd-foot { background: #efe7d6; border-top: 1px solid rgba(184, 150, 79, .5); }
[data-theme="hoangkim"] .wd-foot .wd-mono.big { margin-bottom: 22px; }
@media (max-width: 760px) {
  [data-theme="hoangkim"] .couple-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 18px; }
  [data-theme="hoangkim"] .couple-amp { display: none; }
  [data-theme="hoangkim"] .oval { width: 100%; box-shadow: 0 0 0 5px var(--paper), 0 0 0 6px var(--gold); margin-bottom: 26px; }
  [data-theme="hoangkim"] .role { letter-spacing: .26em; font-size: .6rem; }
  [data-theme="hoangkim"] .banner { font-size: 1rem; letter-spacing: .1em; }
  [data-theme="hoangkim"] .info { font-size: 1rem; }
  [data-theme="hoangkim"] .event-row { grid-template-columns: 1fr; }
  [data-theme="hoangkim"] .event-photo { width: 78%; margin: 0 auto; }
  [data-theme="hoangkim"] .event-card { padding: 44px 20px 40px; }
  [data-theme="hoangkim"] .dl-row > span { font-size: .8rem; letter-spacing: .16em; }
  [data-theme="hoangkim"] .wd .countdown div { min-width: 0; flex: 1; }
  [data-theme="hoangkim"] .dl-d { font-size: 3.8rem; }
  [data-theme="hoangkim"] .wd .countdown b { font-size: 2.1rem; }
  [data-theme="hoangkim"] .wd .countdown span { letter-spacing: .14em; }
  [data-theme="hoangkim"] .wd-gallery { columns: 2; column-gap: 8px; }
  [data-theme="hoangkim"] .wd-g { margin-bottom: 8px; }
  [data-theme="hoangkim"] .wd-g::after { inset: 6px; }
}

/* Album trang chủ: khi đã có nút "Xem tất cả", chỉ bày 12 ảnh (điện thoại 8) cho nhịp trang gọn — phần còn lại ở trang album. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .gallery-sec:has(> p.center .btn) .wd-g:nth-child(n + 13) { display: none; }
@media (max-width: 760px) {
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .gallery-sec:has(> p.center .btn) .wd-g:nth-child(n + 9) { display: none; }
  [data-theme="hoangkim"] .rsvp-choice span { font-size: 1rem; padding: 12px 8px; }
}

/* ─────────── SONG HỶ: thiệp cưới Việt truyền thống ─────────── */
[data-theme="songhy"] { --hoivan: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='56'><path d='M0 28h14V14h28v28H28V28M28 0v7M28 49v7M0 0h7M49 0h7M0 56h7M49 56h7' fill='none' stroke='%23b3261e' stroke-width='1.2'/></svg>");
  --sh-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><g fill='none' stroke='black' stroke-width='5.5' stroke-linecap='square'><path d='M8 12H45M55 12H92M26.5 3V24M73.5 3V24M15 24H38M62 24H85M15 32H38V45H15ZM62 32H85V45H62Z'/><path d='M19 52l3 6M34 52l-3 6M66 52l3 6M81 52l-3 6M5 64H95M15 73H38V95H15ZM62 73H85V95H62Z'/></g></svg>"); }
[data-theme="songhy"] .wd h2 { color: var(--accent); font: 400 clamp(2rem, 4.6vw, 3rem)/1.2 var(--f-head); }
[data-theme="songhy"] .watercolor { background: var(--paper); }
[data-theme="songhy"] .wd .btn { border-radius: 3px; letter-spacing: .06em; font-weight: 600; }
[data-theme="songhy"] .wd .btn-accent { background: var(--accent); color: #fff6e0; box-shadow: inset 0 0 0 1px rgba(226, 184, 101, .8); }
[data-theme="songhy"] .wd .btn-accent:hover { background: var(--red-deep); }
[data-theme="songhy"] .wd .btn-ghost { background: transparent; border-color: var(--accent); color: var(--accent); }
/* Tiêu đề mục: dải hồi văn mảnh phía trên. */
[data-theme="songhy"] .sec-head::before { content: ""; display: block; width: 112px; height: 14px; margin: 0 auto 18px; opacity: .55;
  background: var(--hoivan) center / 14px 14px repeat-x; }
/* Cô dâu & chú rể: NHÀ TRAI | NHÀ GÁI hai cột (cả trên điện thoại), song hỷ giữa, thông tin song thân trên ảnh. */
[data-theme="songhy"] section.couple { background: linear-gradient(var(--paper), var(--paper)) padding-box, var(--page); border-top: 3px double rgba(179, 38, 30, .35); }
[data-theme="songhy"] .couple-row { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 0 clamp(10px, 4vw, 56px); max-width: 940px; align-items: stretch; }
[data-theme="songhy"] .person { display: flex; flex-direction: column; align-items: center; }
[data-theme="songhy"] .house { display: block; order: -2; margin: 0 0 14px; padding: 7px 18px 6px; background: var(--accent); color: #fbe7b0;
  font: 400 1.05rem var(--f-head); letter-spacing: .2em; text-transform: uppercase; position: relative; }
[data-theme="songhy"] .house::before, [data-theme="songhy"] .house::after { content: ""; position: absolute; top: 50%; width: 9px; height: 9px; margin-top: -4.5px; background: var(--gold); transform: rotate(45deg); }
[data-theme="songhy"] .house::before { left: -4.5px; } [data-theme="songhy"] .house::after { right: -4.5px; }
[data-theme="songhy"] .info { order: -1; min-height: 3.2em; margin: 0 0 26px; color: var(--muted); font-size: 1rem; line-height: 1.5; text-wrap: balance; }
[data-theme="songhy"] .oval { border-radius: 50%; aspect-ratio: 1; width: min(290px, 100%); border: 3px solid var(--gold); box-shadow: 0 0 0 6px var(--paper), 0 0 0 7.5px var(--accent); margin: 0 auto 24px; }
[data-theme="songhy"] .role { color: var(--muted); letter-spacing: .3em; font-size: .66rem; }
[data-theme="songhy"] .banner { display: block; background: none; color: var(--red-deep); font: 400 clamp(1.25rem, 2.6vw, 1.75rem)/1.3 var(--f-head); padding: 0; margin: 8px 0 0; border-radius: 0; text-wrap: balance; }
[data-theme="songhy"] .rings:not(.rings-sh) { display: none; }
[data-theme="songhy"] .rings-sh { display: block; align-self: stretch; width: 58px; height: auto; margin: 0; color: var(--accent);
  background: linear-gradient(var(--gold), var(--gold)) center top / 1px calc(50% - 40px) no-repeat, linear-gradient(var(--gold), var(--gold)) center bottom / 1px calc(50% - 40px) no-repeat;
  padding: calc(50% + 0px) 0; }
/* Lễ thành hôn: tấm thiệp đỏ mở ra — bìa đỏ (ảnh + song hỷ) | ruột giấy kem (lời báo hỷ, ngày, đếm ngược lì xì). */
[data-theme="songhy"] .event { background: var(--page); }
[data-theme="songhy"] .event-row { position: relative; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 0; max-width: 1040px; align-items: stretch;
  background: radial-gradient(ellipse at 30% 40%, #c62c22, #a51f17 60%, #7e150f); padding: 18px; border-radius: 4px;
  box-shadow: inset 0 0 0 1px rgba(226, 184, 101, .75), inset 0 0 0 6px #a51f17, inset 0 0 0 7px rgba(226, 184, 101, .4), 0 40px 70px -40px rgba(90, 10, 5, .7); }
[data-theme="songhy"] .event-row::before { content: ""; position: absolute; left: 18px; top: 18px; width: calc((100% - 36px) * 5 / 11); height: calc(100% - 36px); pointer-events: none;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='56' height='56'><path d='M0 28h14V14h28v28H28V28M28 0v7M28 49v7M0 0h7M49 0h7M0 56h7M49 56h7' fill='none' stroke='%23f2c46b' stroke-width='1.2'/></svg>") 0 0 / 44px 44px; opacity: .1; }
[data-theme="songhy"] .event-photo { align-self: center; justify-self: center; width: min(78%, 340px); aspect-ratio: 3 / 4; margin: 76px 0 40px; border: 3px solid var(--gold); border-radius: 999px 999px 4px 4px;
  box-shadow: 0 0 0 6px rgba(126, 21, 15, .7), 0 0 0 7px rgba(226, 184, 101, .6), 0 24px 40px rgba(40, 0, 0, .45); }
[data-theme="songhy"] .event-row::after { content: ""; position: absolute; left: calc(18px + (100% - 36px) * 5 / 22 - 22px); top: 30px; width: 44px; height: 44px; background: var(--gold);
  -webkit-mask: var(--sh-mask) center / contain no-repeat; mask: var(--sh-mask) center / contain no-repeat; }
[data-theme="songhy"] .event--noimg .event-row::before, [data-theme="songhy"] .event--noimg .event-row::after { display: none; }
[data-theme="songhy"] .event-card { display: flex; flex-direction: column; align-items: center; background: var(--paper); border: 0; border-radius: 2px; padding: 56px clamp(20px, 4vw, 48px) 48px;
  box-shadow: inset 14px 0 18px -14px rgba(90, 20, 10, .35); }
[data-theme="songhy"] .event-card::before { display: block; content: ""; position: absolute; inset: 10px; z-index: 0; pointer-events: none; transform: none; box-shadow: none;
  background: var(--corner-tl) top left / 26px no-repeat, var(--corner-tr) top right / 26px no-repeat, var(--corner-bl) bottom left / 26px no-repeat, var(--corner-br) bottom right / 26px no-repeat; }
[data-theme="songhy"] .event-card > * { position: relative; z-index: 1; }
[data-theme="songhy"] .ev-intro { display: block; }
[data-theme="songhy"] .ev-k { font: 600 .7rem var(--f-ui); letter-spacing: .24em; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; text-wrap: balance; }
[data-theme="songhy"] .ev-names { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 .35em; font: 400 clamp(1.7rem, 3.4vw, 2.3rem)/1.2 var(--f-name); color: var(--accent); margin: 0; }
[data-theme="songhy"] .ev-names i { font-style: normal; color: var(--gold-2); }
[data-theme="songhy"] .event-card .lead { margin: 14px 0 0; font-size: 1.05rem; }
[data-theme="songhy"] .dlock { display: block; width: 100%; max-width: 360px; margin: 26px 0 4px; }
[data-theme="songhy"] .dl-wd { display: block; font: 600 .8rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; color: var(--red-deep); margin-bottom: 10px; }
[data-theme="songhy"] .dl-wd i { font-style: normal; color: var(--gold-2); }
[data-theme="songhy"] .dl-row > span { flex: 1; font: 400 1.15rem var(--f-head); color: var(--ink); }
[data-theme="songhy"] .dl-d { font: 400 clamp(3.4rem, 8vw, 4.2rem)/1 var(--f-head); color: var(--accent); padding: 4px .32em; border-left: 1.5px solid var(--accent); border-right: 1.5px solid var(--accent); }
[data-theme="songhy"] .dl-t { display: none; }
[data-theme="songhy"] .event-card .lunar { margin-top: 12px; }
/* Đếm ngược như 4 bao lì xì. */
[data-theme="songhy"] .wd .countdown { gap: 10px; margin: 28px 0 26px; }
[data-theme="songhy"] .wd .countdown div { position: relative; overflow: hidden; width: 66px; min-width: 0; padding: 30px 4px 10px; border-radius: 5px; background: linear-gradient(#c3291f, #a31d15);
  box-shadow: inset 0 0 0 1px rgba(226, 184, 101, .8), 0 10px 16px -8px rgba(120, 10, 5, .6); }
[data-theme="songhy"] .wd .countdown div::before { content: ""; position: absolute; left: -10%; right: -10%; top: -34px; height: 56px; border-radius: 0 0 50% 50%;
  background: #8e170f; border-bottom: 1px solid rgba(226, 184, 101, .8); }
[data-theme="songhy"] .wd .countdown div::after { content: ""; position: absolute; left: 50%; top: 15px; width: 12px; height: 12px; margin-left: -6px; border-radius: 50%;
  background: radial-gradient(circle, #f6dc95, #c4933a); box-shadow: 0 0 0 2px #8e170f; }
[data-theme="songhy"] .wd .countdown b { position: relative; color: #fbe7b0; font: 400 1.8rem/1.2 var(--f-head); }
[data-theme="songhy"] .wd .countdown span { position: relative; color: #f7dca0; font-size: .6rem; letter-spacing: .14em; }
/* Địa điểm: mỗi lễ là một thẻ đỏ son viền vàng, bản đồ lồng khung vàng bên dưới. */
[data-theme="songhy"] .location { background: var(--page); counter-reset: evn; }
[data-theme="songhy"] .location .events { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); max-width: 1000px; gap: 28px; align-items: start; }
[data-theme="songhy"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { display: flex; flex-direction: column; max-width: none; margin: 0; counter-increment: evn; }
[data-theme="songhy"] .location :is(.ev, .ev:nth-child(even)) .ev-map { order: 2; height: 200px; border: 3px solid var(--gold); border-top: 0; border-radius: 0 0 4px 4px; }
[data-theme="songhy"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { margin: 0; order: 1; color: #f7e3b5; border-radius: 4px 4px 0 0; padding: 46px 26px 34px;
  display: flex; flex-direction: column; align-items: center;
  background: radial-gradient(ellipse at 50% 0%, #c62c22, #a51f17 70%); box-shadow: inset 0 0 0 1px rgba(226, 184, 101, .8), inset 0 0 0 6px #a51f17, inset 0 0 0 7px rgba(226, 184, 101, .45); }
[data-theme="songhy"] .location .ev--nomap .ev-card { border-radius: 4px; }
[data-theme="songhy"] .ev-card::before { display: block; content: ""; position: static; inset: auto; width: 34px; height: 34px; margin-bottom: 12px; transform: none; box-shadow: none; z-index: auto;
  background: var(--gold); -webkit-mask: var(--sh-mask) center / contain no-repeat; mask: var(--sh-mask) center / contain no-repeat; }
[data-theme="songhy"] .ev-card h3 { font: 400 2rem/1.2 var(--f-head); color: #f6dc95; margin-bottom: 8px; }
[data-theme="songhy"] .ev-place { font: 600 .74rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; color: #fff3d6; margin-bottom: 10px; }
[data-theme="songhy"] .ev-card :is(.ev-addr, .ev-time) { color: #f3d9a8; }
[data-theme="songhy"] .ev-time { border-top: 1px solid rgba(226, 184, 101, .4); padding-top: 10px; margin-top: 4px; }
[data-theme="songhy"] .ev-card .btn { background: linear-gradient(#f3d58c, #d9ac55); color: var(--red-deep); box-shadow: none; }
[data-theme="songhy"] .ev-map iframe { filter: sepia(.18) saturate(.85); }
/* Trích dẫn */
[data-theme="songhy"] .quote { place-items: end center; min-height: 460px; }
[data-theme="songhy"] .quote::after { background: linear-gradient(180deg, rgba(120, 18, 12, .12) 0%, rgba(120, 18, 12, .28) 38%, rgba(110, 16, 10, .78) 72%, rgba(96, 12, 8, .9) 100%); }
[data-theme="songhy"] .quote blockquote { border-top: 1px solid rgba(226, 184, 101, .6); border-bottom: 1px solid rgba(226, 184, 101, .6); margin: 150px 20px 50px; padding: 28px 12px; }
[data-theme="songhy"] .quote blockquote p { font: 400 clamp(1.5rem, 3.4vw, 2.2rem)/1.55 var(--f-head); color: #fff3d6; text-shadow: 0 2px 14px rgba(60, 0, 0, .5); }
/* Album: ảnh lớn đầu lưới, khung trắng + chỉ vàng như ảnh dán thiệp. */
[data-theme="songhy"] .gallery-sec { border-top: 3px double rgba(179, 38, 30, .35); }
[data-theme="songhy"] .wd-gallery { grid-template-columns: repeat(3, 1fr); grid-auto-flow: dense; gap: 12px; max-width: 1120px; }
[data-theme="songhy"] .wd-g { border: 4px solid #fff; outline: 1px solid rgba(196, 147, 58, .7); border-radius: 2px; }
[data-theme="songhy"] .wd-g:nth-child(6n + 1) { grid-column: span 2; grid-row: span 2; }
[data-theme="songhy"] .wd-g::after { background: rgba(160, 26, 18, .45); color: #fbe7b0; }
[data-theme="songhy"] .wd .album-card { border-radius: 4px; box-shadow: none; border: 1px solid var(--line); border-top: 3px solid var(--accent); }
/* Gửi ảnh: thẻ kem viền đỏ */
[data-theme="songhy"] .cta { max-width: 720px; margin: 20px auto; padding: 52px 24px; background: var(--paper); border: 1.5px solid var(--accent); box-shadow: inset 0 0 0 5px var(--paper), inset 0 0 0 6px rgba(196, 147, 58, .7); }
/* Xác nhận + lời chúc */
[data-theme="songhy"] .paper { background: var(--paper); border: 1.5px solid var(--accent); box-shadow: inset 0 0 0 5px var(--paper), inset 0 0 0 6px rgba(196, 147, 58, .7); padding: 54px 40px; }
[data-theme="songhy"] .paper:not(.event-card, .ev-card)::before { display: block; content: ""; position: absolute; inset: 12px; z-index: 0; pointer-events: none; transform: none; box-shadow: none;
  background: var(--corner-tl) top left / 26px no-repeat, var(--corner-tr) top right / 26px no-repeat, var(--corner-bl) bottom left / 26px no-repeat, var(--corner-br) bottom right / 26px no-repeat; }
[data-theme="songhy"] .paper > * { position: relative; z-index: 1; }
[data-theme="songhy"] .paper > .hp { position: absolute; }
[data-theme="songhy"] .rsvp-choice span { border-radius: 3px; border: 1.5px solid var(--line); }
[data-theme="songhy"] .rsvp-choice input:checked + span { border-color: var(--accent); background: #fdeee0; }
[data-theme="songhy"] .rsvp-done b, [data-theme="songhy"] .rsvp-invitee b { color: var(--accent); }
[data-theme="songhy"] .wd .wish-form { border-radius: 3px; }
[data-theme="songhy"] .wd .wish { position: relative; overflow: hidden; background: var(--paper); border: 1px solid var(--line); border-top: 3px solid var(--accent); border-left: 0; border-radius: 3px; padding: 22px 22px 18px; }
[data-theme="songhy"] .wd .wish::after { content: ""; position: absolute; right: -8px; bottom: -8px; width: 70px; height: 70px; background: var(--accent); opacity: .07;
  -webkit-mask: var(--sh-mask) center / contain no-repeat; mask: var(--sh-mask) center / contain no-repeat; }
[data-theme="songhy"] .wd .wish cite { color: var(--accent); font-weight: 600; }
[data-theme="songhy"] .wd-foot { background: radial-gradient(ellipse at 50% 0%, #a51f17, #7a130d); color: #f7e3b5; }
[data-theme="songhy"] .wd-foot .muted, [data-theme="songhy"] .wd-foot .music-credit { color: #f3d08c; }
[data-theme="songhy"] .music-btn { background: var(--accent); box-shadow: 0 0 0 2px var(--gold), 0 4px 14px rgba(0, 0, 0, .25); }
@media (max-width: 760px) {
  [data-theme="songhy"] .couple-row { gap: 0 6px; }
  [data-theme="songhy"] .house { font-size: .82rem; letter-spacing: .14em; padding: 6px 12px 5px; }
  [data-theme="songhy"] .info { font-size: .88rem; min-height: 4.5em; margin-bottom: 20px; }
  [data-theme="songhy"] .oval { border-width: 2px; box-shadow: 0 0 0 4px var(--paper), 0 0 0 5px var(--accent); }
  [data-theme="songhy"] .banner { font-size: 1.12rem; }
  [data-theme="songhy"] .role { letter-spacing: .2em; font-size: .6rem; }
  [data-theme="songhy"] .rings-sh { width: 30px; }
  [data-theme="songhy"] .event-row { grid-template-columns: 1fr; padding: 12px; }
  [data-theme="songhy"] .event-row::before { left: 12px; top: 12px; width: calc(100% - 24px); height: 60%; }
  [data-theme="songhy"] .event-row::after { left: 50%; margin-left: -20px; top: 26px; width: 40px; height: 40px; }
  [data-theme="songhy"] .event--noimg .event-row { padding: 12px; }
  [data-theme="songhy"] .event-photo { width: 74%; margin: 80px auto 30px; }
  [data-theme="songhy"] .event-card { padding: 46px 18px 38px; box-shadow: inset 0 14px 18px -14px rgba(90, 20, 10, .35); }
  [data-theme="songhy"] .wd .countdown { gap: 7px; }
  [data-theme="songhy"] .wd .countdown div { width: 62px; }
  [data-theme="songhy"] .wd-gallery { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  [data-theme="songhy"] .wd-g { border-width: 3px; }
  [data-theme="songhy"] .paper { padding: 44px 22px; }
}

/* ─────────── TẠP CHÍ: dàn trang tạp chí thời trang ─────────── */
/* Măng-sét (masthead) trên đầu trang bìa. */
[data-theme="tapchi"] .masthead { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; grid-column: 1 / -1; grid-row: 1; margin: 0 0 22px; padding: 0 0 12px;
  border-bottom: 1px solid var(--ink); font: 600 .64rem var(--f-ui); letter-spacing: .26em; text-transform: uppercase; animation: t-fade 1s ease both .2s; }
[data-theme="tapchi"] .masthead span:last-child { text-align: right; }
[data-theme="tapchi"] .masthead b { font: italic 400 1.25rem/1 var(--f-head); letter-spacing: .02em; text-transform: none; }
[data-theme="tapchi"] .intro { grid-template-rows: auto 1fr; padding-top: 92px; }
[data-theme="tapchi"] .intro-main, [data-theme="tapchi"] .save-card { grid-row: 2; }
[data-theme="tapchi"] .intro-main { height: calc(100svh - 190px); }
/* Mục: số chương + dòng mục nhỏ phía trên tiêu đề. */
[data-theme="tapchi"] .sec-head { position: relative; padding-top: 22px; }
[data-theme="tapchi"] .sec-head::before { content: "Chuyên mục"; position: absolute; left: 0; top: 0; font: 600 .62rem var(--f-ui); letter-spacing: .28em; text-transform: uppercase; color: var(--muted); }
[data-theme="tapchi"] #couple .sec-head::before { content: "Chân dung"; }
[data-theme="tapchi"] #event .sec-head::before { content: "Ngày trọng đại"; }
[data-theme="tapchi"] #location .sec-head::before { content: "Lịch trình"; }
[data-theme="tapchi"] #gallery .sec-head::before { content: "Ảnh"; }
[data-theme="tapchi"] #rsvp .sec-head::before { content: "Hồi âm"; }
[data-theme="tapchi"] #loi-chuc .sec-head::before { content: "Thư bạn đọc"; }
/* Cô dâu & chú rể: bài chân dung — 2 ảnh lệch tầng, "&" khổng lồ nối giữa, chú thích ảnh kiểu tạp chí. */
[data-theme="tapchi"] .couple-row { position: relative; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 0 6vw; }
[data-theme="tapchi"] .couple-row > .person-b { margin-top: 220px; }
[data-theme="tapchi"] .couple-amp { display: block; position: absolute; left: 50%; top: 38%; z-index: 4; transform: translateX(-30%); pointer-events: none;
  font: italic 400 clamp(8rem, 16vw, 15rem)/.8 var(--f-head); color: var(--page); -webkit-text-stroke: 1px var(--ink); }
[data-theme="tapchi"] .oval { margin-bottom: 14px; }
[data-theme="tapchi"] .person-b .oval { aspect-ratio: 3 / 4; }
[data-theme="tapchi"] .role { display: flex; align-items: center; gap: 12px; font-size: .62rem; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
[data-theme="tapchi"] .person-g .role::before { content: "01"; font: italic 400 1rem var(--f-head); letter-spacing: 0; color: var(--muted); }
[data-theme="tapchi"] .person-b .role::before { content: "02"; font: italic 400 1rem var(--f-head); letter-spacing: 0; color: var(--muted); }
[data-theme="tapchi"] .banner { margin: 18px 0 12px; font-size: clamp(2rem, 3.4vw, 3rem); line-height: 1.02; text-wrap: balance; }
[data-theme="tapchi"] .info { font-size: .98rem; line-height: 1.7; color: var(--muted); }
/* Lễ thành hôn: ngày cưới bằng con số khổng lồ, lời dẫn thành trích dẫn nổi (pull-quote). */
[data-theme="tapchi"] .event-card:has(.dlock) > .date.big { display: none; }
[data-theme="tapchi"] .event-row { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
[data-theme="tapchi"] .event-photo { position: sticky; top: 90px; }
[data-theme="tapchi"] .event-card { display: flex; flex-direction: column; }
[data-theme="tapchi"] .event-card .lead { order: 3; position: relative; margin: 40px 0 0; padding: 26px 0 0 0; border-top: 1px solid var(--ink); max-width: 30ch; font-size: clamp(1.5rem, 2.6vw, 2.1rem); }
[data-theme="tapchi"] .event-card .lead::before { content: "“"; position: absolute; right: 0; top: 18px; font: 400 5rem/1 var(--f-head); color: var(--line); }
[data-theme="tapchi"] .dlock { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 22px; align-items: end; order: 1; }
[data-theme="tapchi"] .dl-wd { grid-column: 1 / -1; font: 600 .68rem var(--f-ui); letter-spacing: .26em; text-transform: uppercase; padding-bottom: 12px; border-bottom: 1px solid var(--ink); margin-bottom: 8px; }
[data-theme="tapchi"] .dl-wd i { font-style: normal; }
[data-theme="tapchi"] .dl-row { display: contents; }
[data-theme="tapchi"] .dl-d { grid-row: 2; grid-column: 1; font: 400 clamp(8rem, 16vw, 13rem)/.82 var(--f-head); letter-spacing: -.05em; margin-left: -.04em; }
[data-theme="tapchi"] .dl-m, [data-theme="tapchi"] .dl-y { grid-column: 2; grid-row: 2; font: italic 400 clamp(1.6rem, 3vw, 2.6rem)/1.05 var(--f-head); }
[data-theme="tapchi"] .dl-m { align-self: start; padding-top: 1.2rem; }
[data-theme="tapchi"] .dl-y { align-self: end; padding-bottom: .4rem; font-style: normal; letter-spacing: .06em; }
[data-theme="tapchi"] .dl-t { display: none; }
[data-theme="tapchi"] .event-card .lunar { order: 2; margin-top: 16px; font-size: .85rem; text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
[data-theme="tapchi"] .event-card .countdown { order: 4; }
[data-theme="tapchi"] .event-card .btn-row { order: 5; }
/* Địa điểm: mục lục đánh số — số | nội dung | bản đồ xám, kẻ ngang mảnh. */
[data-theme="tapchi"] .location { counter-reset: evn; }
[data-theme="tapchi"] .location .events { display: block; max-width: 1180px; border-bottom: 1px solid var(--ink); }
[data-theme="tapchi"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { display: grid; grid-template-columns: 110px minmax(0, 1fr) minmax(0, 420px); gap: 0 4vw; align-items: start;
  max-width: none; margin: 0; padding: 36px 0; border-top: 1px solid var(--ink); counter-increment: evn; }
[data-theme="tapchi"] .location .ev.ev--nomap { grid-template-columns: 110px minmax(0, 1fr); }
[data-theme="tapchi"] .location .ev::before { content: counter(evn, decimal-leading-zero); grid-column: 1; grid-row: 1; font: 400 4.4rem/.8 var(--f-head); letter-spacing: -.04em; }
[data-theme="tapchi"] .location :is(.ev, .ev:nth-child(even)) .ev-map { grid-column: 3; grid-row: 1; order: 0; height: 230px; }
[data-theme="tapchi"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { grid-column: 2; grid-row: 1; margin: 0; padding: 0; background: none; border: 0; box-shadow: none; display: block; text-align: left; }
[data-theme="tapchi"] .ev-card h3 { font-size: clamp(2rem, 3.6vw, 3rem); margin-bottom: 10px; }
[data-theme="tapchi"] .ev-place { font: 600 .7rem var(--f-ui); letter-spacing: .24em; text-transform: uppercase; margin-bottom: 14px; }
[data-theme="tapchi"] .ev-card :is(.ev-addr, .ev-time) { font-size: .98rem; margin-bottom: 4px; }
[data-theme="tapchi"] .ev-card .btn { margin-top: 18px; min-height: 0; padding: 0 0 4px; background: none; color: var(--ink); border: 0; border-bottom: 1px solid var(--ink); }
[data-theme="tapchi"] .ev-card .btn::after { content: " →"; }
[data-theme="tapchi"] .ev-card .btn:hover { background: none; box-shadow: none; opacity: .6; }
/* Album: chú thích ảnh đánh số kiểu tạp chí. */
[data-theme="tapchi"] .wd-gallery { counter-reset: fig; }
[data-theme="tapchi"] .wd-g { counter-increment: fig; }
[data-theme="tapchi"] .wd-g::before { content: "Ảnh " counter(fig, decimal-leading-zero); position: absolute; left: 0; bottom: 0; z-index: 2; padding: 6px 10px 5px;
  background: var(--page); color: var(--ink); font: 600 .58rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; }
[data-theme="tapchi"] .wd-g, [data-theme="tapchi"] .wd-g:nth-child(7n + 5) { grid-column: span 4; grid-row: span 1; }
[data-theme="tapchi"] .wd-g:nth-child(9n + 1), [data-theme="tapchi"] .wd-g:nth-child(9n) { grid-column: span 8; grid-row: span 2; }
[data-theme="tapchi"] .wd-g:nth-child(9n + 8) { grid-column: 1 / span 4; }
[data-theme="tapchi"] .gallery-sec:has(> p.center .btn) .wd-g:nth-child(n + 10) { display: none; }
@media (max-width: 560px) {
  /* Điện thoại: lưới 2 cột — ảnh 1, 8, 15… chiếm 2×2, còn lại 1×1 (R2-14). Độ ưu tiên (.wd-gallery .wd-g:nth-child)
     cao hơn MỌI luật span 4/8 của máy tính ở trên: trước đây :nth-child(7n + 5) còn span 4 -> lưới đẻ thêm cột ẩn,
     ảnh 1 chỉ còn 4 px. */
  [data-theme="tapchi"] .wd-gallery .wd-g:nth-child(n) { grid-column: auto / span 1; grid-row: auto / span 1; }
  [data-theme="tapchi"] .wd-gallery .wd-g:nth-child(7n + 1) { grid-column: auto / span 2; grid-row: auto / span 2; }
  [data-theme="tapchi"] .gallery-sec:has(> p.center .btn) .wd-g:nth-child(n + 8) { display: none; }
}
/* Gửi ảnh: khối đen đảo màu như trang quảng cáo toàn trang. */
[data-theme="tapchi"] .cta { max-width: none; background: var(--ink); color: var(--page); padding: 90px 6vw; text-align: left; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px 6vw; align-items: end; }
[data-theme="tapchi"] .wd .cta h2 { color: var(--page); margin: 0; font-size: clamp(2.2rem, 5vw, 4rem); max-width: 16ch; }
[data-theme="tapchi"] .cta p { grid-column: 1; margin: 0; color: #cfcbc2; max-width: 52ch; }
[data-theme="tapchi"] .cta .btn { grid-column: 2; grid-row: 1 / span 2; align-self: center; background: var(--page); color: var(--ink); }
/* Lời chúc: thư bạn đọc — lá thư đầu tiên thành trích dẫn lớn. */
[data-theme="tapchi"] .wish-list { columns: 2 300px; column-gap: 48px; column-rule: 1px solid var(--line); }
[data-theme="tapchi"] .wd .wish cite { font: 600 .66rem var(--f-ui); letter-spacing: .22em; text-transform: uppercase; color: var(--muted); }
[data-theme="tapchi"] .wd .wish:first-child { column-span: all; border-top: 0; padding: 0 0 26px; margin-bottom: 26px; border-bottom: 1px solid var(--ink); }
[data-theme="tapchi"] .wd .wish:first-child p { font-size: clamp(1.7rem, 3.4vw, 2.6rem); line-height: 1.2; letter-spacing: -.01em; }
@media (max-width: 900px) {
  [data-theme="tapchi"] .intro { padding-top: 66px; }
  [data-theme="tapchi"] .masthead { order: -1; margin: 0 20px 14px; padding: 8px 0 10px; font-size: .56rem; letter-spacing: .18em; }
  [data-theme="tapchi"] .masthead b { font-size: 1.05rem; }
  [data-theme="tapchi"] .intro-main { height: auto; }
  [data-theme="tapchi"] .couple-row { grid-template-columns: 1fr; }
  [data-theme="tapchi"] .couple-row > .person-b { margin: 0 0 0 18%; }
  [data-theme="tapchi"] .couple-amp { position: static; transform: none; text-align: center; margin: 22px 0 -10px; font-size: 9rem; line-height: .9; }
  [data-theme="tapchi"] .event-row { grid-template-columns: 1fr; }
  [data-theme="tapchi"] .event-photo { position: relative; top: 0; }
  [data-theme="tapchi"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { grid-template-columns: 64px minmax(0, 1fr); padding: 28px 0; }
  [data-theme="tapchi"] .location .ev::before { font-size: 3rem; }
  [data-theme="tapchi"] .location :is(.ev, .ev:nth-child(even)) .ev-map { grid-column: 1 / -1; grid-row: 2; height: 200px; margin-top: 22px; }
  [data-theme="tapchi"] .cta { grid-template-columns: 1fr; padding: 72px 20px; }
  [data-theme="tapchi"] .cta .btn { grid-column: 1; grid-row: auto; justify-self: start; margin-top: 14px; }
}
@media (max-width: 560px) {
  [data-theme="tapchi"] .dl-d { font-size: 8.6rem; }
  [data-theme="tapchi"] .dl-m, [data-theme="tapchi"] .dl-y { font-size: 1.6rem; }
  [data-theme="tapchi"] .event-card .lead { font-size: 1.45rem; }
  [data-theme="tapchi"] .wd .wish:first-child p { font-size: 1.6rem; }
}

/* ─────────── VƯỜN HOA: botanical — vòm, hoa ép khô, thẻ chồng lớp mềm ─────────── */
[data-theme="vuonhoa"] {
  --sage: #dfe3cf; --sage-2: #cfd6b8; --leaf: #7d8b5c;
  --sprig: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 90'><g fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'><path d='M30 88C31 66 27 44 33 20'/><path d='M30 70c-10-1-17-8-19-17 10 1 17 8 19 17zM30 70c-6-6-12-11-19-17'/><path d='M31 56c9-3 15-10 15-19-9 2-14 10-15 19zM31 56c4-7 9-13 15-19'/><path d='M31 42c-8-3-13-10-13-18 8 2 12 9 13 18z'/><path d='M33 20c-5-2-7-8-3-11 3 2 4 7 3 11zM33 20c1-5 5-9 9-8-1 4-5 8-9 8zM33 20c-4 1-9-1-10-5 4-1 8 1 10 5zM33 20c4 2 6 7 4 10-3-2-5-6-4-10z'/></g><circle cx='33' cy='20' r='2'/></svg>");
}
[data-theme="vuonhoa"] .wd h2 { font: 400 clamp(2.8rem, 6vw, 4rem)/1.15 var(--f-head); color: var(--accent); }
[data-theme="vuonhoa"] .watercolor { background: var(--paper); }
[data-theme="vuonhoa"] .sec-head::before { content: ""; display: block; width: 26px; height: 40px; margin: 0 auto 6px; background: var(--leaf); opacity: .8;
  -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; }
[data-theme="vuonhoa"] .wd .btn { font-weight: 600; letter-spacing: .14em; text-transform: uppercase; font-size: .76rem; padding-top: 3px; border-radius: 999px; }
[data-theme="vuonhoa"] .wd .btn-ghost { background: transparent; border-color: var(--accent-2); color: var(--ink); }
/* Cô dâu & chú rể: ảnh vòm + thẻ giấy chồng lên góc dưới, cành hoa ép trên thẻ; 2 người so le. */
[data-theme="vuonhoa"] .couple-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 clamp(24px, 6vw, 96px); max-width: 1080px; align-items: start; }
[data-theme="vuonhoa"] .rings { display: none; }
[data-theme="vuonhoa"] .person-b { margin-top: 110px; }
[data-theme="vuonhoa"] .person { position: relative; container-type: inline-size; text-align: left; padding-bottom: 6px; }
[data-theme="vuonhoa"] .oval { width: 78%; aspect-ratio: 4 / 5; margin: 0; border: 0; border-radius: 999px 999px 0 0; box-shadow: none; }
[data-theme="vuonhoa"] .person::before { content: ""; position: absolute; z-index: 1; top: calc(97.5cqw - 64px); bottom: 0; left: 26%; right: 0; border-radius: 22px;
  background: var(--paper); border: 1px solid var(--line); box-shadow: 0 26px 40px -28px rgba(46, 58, 40, .45); }
[data-theme="vuonhoa"] .person::after { content: ""; position: absolute; z-index: 3; top: calc(97.5cqw - 90px); right: 14px; width: 38px; height: 58px; background: var(--leaf); transform: rotate(18deg);
  -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; }
[data-theme="vuonhoa"] .person > :not(.oval) { position: relative; z-index: 2; margin-left: calc(26% + 26px); margin-right: 22px; }
[data-theme="vuonhoa"] .person > .role { margin-top: -30px; letter-spacing: .28em; color: var(--muted); font-size: .7rem; padding-top: 3px; }
[data-theme="vuonhoa"] .banner { display: block; background: none; padding: 0; border-radius: 0; color: var(--accent); font: 400 clamp(2rem, 4vw, 2.6rem)/1.15 var(--f-name); margin: 4px 0 6px; }
[data-theme="vuonhoa"] .person > .info { margin-bottom: 26px; max-width: none; font-size: .95rem; }
[data-theme="vuonhoa"] .person > .banner:last-child, [data-theme="vuonhoa"] .person:has(.info:empty) > .banner { margin-bottom: 26px; }
/* Người thứ hai soi gương: ảnh phải, thẻ trái. */
[data-theme="vuonhoa"] .person-b .oval { margin-left: auto; }
[data-theme="vuonhoa"] .person-b::before { left: 0; right: 26%; }
[data-theme="vuonhoa"] .person-b::after { right: auto; left: 14px; transform: rotate(-18deg) scaleX(-1); }
[data-theme="vuonhoa"] .person-b > :not(.oval) { margin-left: 22px; margin-right: calc(26% + 26px); text-align: right; }
/* Lễ thành hôn: dải xanh sage, thẻ vòm với lịch tháng — ngày cưới khoanh vòng lá. */
[data-theme="vuonhoa"] .event { background: radial-gradient(ellipse at 50% 0%, #e8ebdb, transparent 70%), var(--sage); }
[data-theme="vuonhoa"] .event::before { content: ""; position: absolute; left: -30px; bottom: -20px; width: 180px; height: 270px; background: var(--leaf); opacity: .16; transform: rotate(-24deg);
  -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; pointer-events: none; }
[data-theme="vuonhoa"] .event-row { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(28px, 5vw, 64px); max-width: 1020px; align-items: center; }
[data-theme="vuonhoa"] .event-photo { aspect-ratio: 4 / 5; border-radius: 999px 999px 18px 18px; border: 0; box-shadow: 0 0 0 10px var(--sage), 0 0 0 11px var(--leaf); }
[data-theme="vuonhoa"] .paper { background: var(--paper); border: 1px solid var(--line); border-radius: 22px; padding: 50px 40px; box-shadow: 0 20px 40px -28px rgba(46, 58, 40, .35); }
[data-theme="vuonhoa"] .event-card { display: flex; flex-direction: column; align-items: center; border-radius: 999px 999px 22px 22px / 260px 260px 22px 22px; padding: 96px clamp(22px, 4vw, 48px) 46px; }
[data-theme="vuonhoa"] .event-card::before { display: block; content: ""; position: absolute; inset: 10px; z-index: 0; border: 1px solid rgba(168, 181, 138, .7);
  border-radius: 999px 999px 16px 16px / 252px 252px 16px 16px; background: none; transform: none; box-shadow: none; }
[data-theme="vuonhoa"] .event-card > * { position: relative; z-index: 1; }
[data-theme="vuonhoa"] .event-card .lead { font-size: 1.05rem; margin-bottom: 8px; }
[data-theme="vuonhoa"] .event-card .date.big { font: 600 .9rem var(--f-ui); letter-spacing: .18em; text-transform: uppercase; color: var(--accent); padding-top: 3px; }
[data-theme="vuonhoa"] .cal { display: block; width: 100%; max-width: 330px; margin: 18px 0 4px; }
[data-theme="vuonhoa"] .cal-h { font: 400 2.2rem/1 var(--f-head); color: var(--accent); margin: 0 0 12px; }
[data-theme="vuonhoa"] .cal-h i { font-style: normal; color: var(--accent-2); }
[data-theme="vuonhoa"] .cal-g { border-top: 1px solid var(--line); padding-top: 8px; row-gap: 2px; }
[data-theme="vuonhoa"] .cal-g b { font: 600 .66rem var(--f-ui); letter-spacing: .08em; color: var(--muted); padding-top: 3px; }
[data-theme="vuonhoa"] .cal-g span { font: 400 .98rem var(--f-body); color: var(--ink); }
[data-theme="vuonhoa"] .cal-g .on { color: #fff; }
[data-theme="vuonhoa"] .cal-g .on::before { content: ""; position: absolute; inset: 2px; z-index: -1; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--paper), 0 0 0 4px var(--accent-2); }
[data-theme="vuonhoa"] .cal-g .on::after { content: ""; position: absolute; right: -9px; top: -12px; width: 16px; height: 24px; background: var(--leaf); transform: rotate(30deg);
  -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; }
[data-theme="vuonhoa"] .event-card .lunar { margin-top: 10px; }
[data-theme="vuonhoa"] .wd .countdown { gap: 10px; }
[data-theme="vuonhoa"] .wd .countdown div { background: none; border: 1px solid var(--accent-2); border-radius: 50%; width: 72px; height: 72px; min-width: 0; display: grid; place-content: center; padding: 0; }
[data-theme="vuonhoa"] .wd .countdown b { font: 600 1.5rem/1.1 var(--f-body); color: var(--accent); }
[data-theme="vuonhoa"] .wd .countdown span { letter-spacing: .14em; font-size: .58rem; padding-top: 2px; }
/* Địa điểm: thẻ giấy mềm có lớp giấy hồng phấn lệch phía sau, bản đồ bo vòm trong thẻ. */
[data-theme="vuonhoa"] .location { background: var(--page); }
[data-theme="vuonhoa"] .location .events { isolation: isolate; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); max-width: 1000px; gap: 44px 36px; align-items: start; }
[data-theme="vuonhoa"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { position: relative; display: flex; flex-direction: column; max-width: none; margin: 0 8px; padding: 12px;
  background: var(--paper); border: 1px solid var(--line); border-radius: 26px; box-shadow: 0 24px 40px -30px rgba(46, 58, 40, .45); }
[data-theme="vuonhoa"] .location .ev::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 26px; background: #efe0d4; transform: rotate(-2.5deg) translate(-6px, 8px); }
[data-theme="vuonhoa"] .location .ev:nth-child(even)::before { transform: rotate(2.5deg) translate(6px, 8px); background: var(--sage); }
[data-theme="vuonhoa"] .location :is(.ev, .ev:nth-child(even)) .ev-map { order: 0; height: 210px; border-radius: 999px 999px 16px 16px / 150px 150px 16px 16px; }
[data-theme="vuonhoa"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { margin: 0; background: none; border: 0; box-shadow: none; padding: 26px 16px 22px; display: flex; flex-direction: column; align-items: center; }
[data-theme="vuonhoa"] .ev-card::before { display: block; content: ""; position: static; inset: auto; width: 24px; height: 36px; margin-bottom: 6px; transform: none; box-shadow: none; z-index: auto;
  background: var(--leaf); -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; }
[data-theme="vuonhoa"] .ev-card h3 { font: 400 2.6rem/1.15 var(--f-head); color: var(--accent); margin-bottom: 6px; }
[data-theme="vuonhoa"] .ev-place { font: 600 .74rem var(--f-ui); letter-spacing: .2em; text-transform: uppercase; padding-top: 3px; margin-bottom: 10px; }
[data-theme="vuonhoa"] .ev-map iframe { filter: saturate(.7) sepia(.12); }
/* Trích dẫn */
[data-theme="vuonhoa"] .quote::after { background: rgba(34, 44, 28, .6); }
[data-theme="vuonhoa"] .quote blockquote p { font: italic 400 clamp(1.4rem, 3.2vw, 2rem)/1.55 var(--f-body); }
[data-theme="vuonhoa"] .quote blockquote::after { content: ""; display: block; width: 180px; height: 20px; margin: 22px auto 0; background: #e8ecd9;
  -webkit-mask: var(--div) center / contain no-repeat; mask: var(--div) center / contain no-repeat; }
/* Album: nhịp vòm – bo tròn xen kẽ. */
[data-theme="vuonhoa"] .wd-gallery { grid-template-columns: repeat(4, 1fr); gap: 14px; max-width: 1120px; }
[data-theme="vuonhoa"] .wd-g { aspect-ratio: 4 / 5; border-radius: 16px; }
[data-theme="vuonhoa"] .wd-g:nth-child(4n + 1), [data-theme="vuonhoa"] .wd-g:nth-child(4n + 3) { border-radius: 999px 999px 16px 16px / 40% 40% 16px 16px; }
[data-theme="vuonhoa"] .wd-g:nth-child(even) { transform: translateY(26px); }
[data-theme="vuonhoa"] .wd-gallery { padding-bottom: 26px; }
[data-theme="vuonhoa"] .wd-g::after { background: rgba(92, 107, 58, .42); }
[data-theme="vuonhoa"] .wd .album-card { border-radius: 16px; box-shadow: none; border: 1px solid var(--line); }
/* Gửi ảnh + xác nhận + lời chúc */
[data-theme="vuonhoa"] .cta { background: var(--sage); border-radius: 999px 999px 26px 26px / 200px 200px 26px 26px; padding: 90px 28px 52px; margin: 30px auto; max-width: 680px; }
[data-theme="vuonhoa"] .rsvp-choice span { border: 1px solid var(--line); border-radius: 999px; }
[data-theme="vuonhoa"] .rsvp-choice input:checked + span { border-color: var(--accent); background: #eef0e2; }
[data-theme="vuonhoa"] .rsvp-invitee b, [data-theme="vuonhoa"] .rsvp-done b { font-family: var(--f-name); font-size: 2.4rem; color: var(--accent); }
[data-theme="vuonhoa"] .wd .wish-form { border-radius: 22px; }
[data-theme="vuonhoa"] .wd .wish { position: relative; border: 1px solid var(--line); border-radius: 20px; background: var(--paper); padding: 22px 56px 18px 22px; }
[data-theme="vuonhoa"] .wd .wish::after { content: ""; position: absolute; right: 12px; top: 14px; width: 24px; height: 36px; background: var(--leaf); opacity: .7; transform: rotate(14deg);
  -webkit-mask: var(--sprig) center / contain no-repeat; mask: var(--sprig) center / contain no-repeat; }
[data-theme="vuonhoa"] .wd .wish p { font-style: italic; }
[data-theme="vuonhoa"] .wd .wish cite { font: 400 1.6rem var(--f-name); color: var(--accent); }
[data-theme="vuonhoa"] .wd .wish cite::before { content: ""; }
[data-theme="vuonhoa"] .wd-foot { background: var(--sage); }
@media (max-width: 760px) {
  [data-theme="vuonhoa"] .couple-row { grid-template-columns: 1fr; gap: 44px; max-width: 420px; }
  [data-theme="vuonhoa"] .person-b { margin-top: 0; }
  [data-theme="vuonhoa"] .event-row { grid-template-columns: 1fr; }
  [data-theme="vuonhoa"] .event-photo { width: 74%; margin: 0 auto 10px; }
  [data-theme="vuonhoa"] .event-card { padding: 84px 18px 38px; border-radius: 999px 999px 22px 22px / 170px 170px 22px 22px; }
  [data-theme="vuonhoa"] .event-card::before { border-radius: 999px 999px 16px 16px / 162px 162px 16px 16px; }
  [data-theme="vuonhoa"] .wd .countdown { gap: 7px; }
  [data-theme="vuonhoa"] .wd .countdown div { width: 64px; height: 64px; }
  [data-theme="vuonhoa"] .paper { padding: 40px 22px; }
  [data-theme="vuonhoa"] .wd-gallery { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  [data-theme="vuonhoa"] .cta { border-radius: 999px 999px 22px 22px / 140px 140px 22px 22px; padding-top: 76px; margin: 20px 16px; }
}

/* ─────────── ĐÊM SAO: chòm sao nối hai người, bản đồ sao ngày cưới, lộ trình sao ─────────── */
[data-theme="demsao"] .wd h2 { font: 500 clamp(1.7rem, 3.8vw, 2.6rem)/1.25 var(--f-head); text-transform: uppercase; letter-spacing: .14em; color: var(--gold); }
[data-theme="demsao"] .watercolor { background: #111a3a; }
[data-theme="demsao"] .gallery-sec, [data-theme="demsao"] section.couple { background: var(--stars-a), radial-gradient(ellipse at 50% 0%, #1a2656, #0f1736 70%);
  background-size: 300px 300px, 300px 300px, 300px 300px, 300px 300px, 300px 300px, 300px 300px, 100% 100%; }
[data-theme="demsao"] .event { background: radial-gradient(ellipse 80% 60% at 50% 50%, #1b2a62 0%, #0d1530 70%); }
[data-theme="demsao"] .location { background: #0b1330; }
[data-theme="demsao"] .wd .btn { font-weight: 600; letter-spacing: .14em; text-transform: uppercase; font-size: .74rem; padding-top: 3px; border-radius: 999px; }
[data-theme="demsao"] .wd .btn-accent { background: var(--gold); color: #0d1530; }
[data-theme="demsao"] .wd .btn-accent:hover { background: #ecd08e; }
[data-theme="demsao"] .wd .btn-ghost { background: transparent; border-color: rgba(216, 181, 106, .6); color: var(--ink); }
/* Cô dâu & chú rể: 2 vòng tròn phát sáng nối bằng một chòm sao. */
[data-theme="demsao"] .couple-row { grid-template-columns: minmax(0, 1fr) minmax(90px, 200px) minmax(0, 1fr); gap: 0 12px; max-width: 900px; align-items: start; }
[data-theme="demsao"] .rings { display: none; }
[data-theme="demsao"] .constel { display: block; width: 100%; height: auto; margin-top: calc(min(250px, 30vw) / 2 - 28px); color: var(--gold); overflow: visible;
  filter: drop-shadow(0 0 6px rgba(243, 223, 170, .6)); }
[data-theme="demsao"] .constel circle { animation: ds-twinkle 2.6s ease-in-out infinite alternate; }
[data-theme="demsao"] .constel circle:nth-child(2n) { animation-delay: -1.3s; }
[data-theme="demsao"] .oval { border-radius: 50%; aspect-ratio: 1; width: min(250px, 100%); border: 1.5px solid var(--gold);
  box-shadow: 0 0 0 8px #111a3a, 0 0 0 9px rgba(216, 181, 106, .35), 0 0 60px rgba(216, 181, 106, .22); margin: 0 auto 30px; }
[data-theme="demsao"] .role { color: var(--gold); letter-spacing: .32em; padding-top: 3px; font-size: .7rem; }
[data-theme="demsao"] .banner { display: block; background: none; padding: 0; border-radius: 0; color: var(--ink); font: italic 500 clamp(1.35rem, 2.6vw, 2rem)/1.25 var(--f-head); margin: 6px 0 8px; text-wrap: balance; }
[data-theme="demsao"] .info { color: var(--muted); }
/* Lễ thành hôn: bản đồ sao đêm cưới (sao sinh theo ngày cưới) + lời hẹn. */
[data-theme="demsao"] .event-row { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(28px, 4vw, 56px); max-width: 1160px; align-items: center; }
[data-theme="demsao"] .event-photo { border: 0; border-radius: 999px 999px 8px 8px; box-shadow: 0 0 0 1px rgba(216, 181, 106, .5), 0 30px 60px rgba(0, 0, 0, .45); aspect-ratio: 3 / 4; }
[data-theme="demsao"] .paper { background: linear-gradient(180deg, #17224a, #121b3d); border: 1px solid rgba(216, 181, 106, .3); border-radius: 8px; padding: 54px 40px; box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .7); }
[data-theme="demsao"] .paper::before { display: block; content: ""; position: absolute; inset: -9px auto auto 50%; width: 18px; height: 18px; margin-left: -9px; transform: none; box-shadow: none;
  background: var(--gold); -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat; }
[data-theme="demsao"] .event-card { display: grid; grid-template-columns: 290px minmax(0, 1fr); column-gap: 36px; align-items: center; text-align: center; padding: 48px 40px; }
[data-theme="demsao"] .event-card > * { grid-column: 2; }
[data-theme="demsao"] .starchart { display: block; grid-column: 1; grid-row: 1 / span 8; margin: 0; }
[data-theme="demsao"] .starchart svg { display: block; width: 100%; height: auto; overflow: visible; }
[data-theme="demsao"] .sc-grid { stroke: rgba(216, 181, 106, .22); stroke-width: .6; }
[data-theme="demsao"] .sc-grid circle:first-child { stroke: rgba(216, 181, 106, .7); stroke-width: 1; }
[data-theme="demsao"] .sc-ticks { stroke: rgba(216, 181, 106, .55); stroke-width: .7; }
[data-theme="demsao"] .sc-stars { fill: #fff; }
[data-theme="demsao"] .sc-stars circle { opacity: .75; }
[data-theme="demsao"] .sc-stars .tw { fill: #ffeab8; opacity: 1; animation: ds-twinkle 2.4s ease-in-out infinite alternate; }
[data-theme="demsao"] .sc-cons { fill: none; stroke: rgba(243, 223, 170, .8); stroke-width: .9; stroke-dasharray: 3 3; }
[data-theme="demsao"] .sc-cdots { fill: #f3dfaa; filter: drop-shadow(0 0 3px rgba(243, 223, 170, .9)); }
[data-theme="demsao"] .sc-star { fill: #fff3cf; filter: drop-shadow(0 0 6px #f3dfaa) drop-shadow(0 0 14px rgba(243, 223, 170, .7)); transform-origin: 160px 150px; animation: ds-pulse 3.2s ease-in-out infinite alternate; }
@keyframes ds-pulse { from { transform: scale(.85); opacity: .8; } to { transform: scale(1.1); opacity: 1; } }
[data-theme="demsao"] .sc-txt { font: 600 8.6px var(--f-ui); letter-spacing: 2.2px; fill: var(--gold); }
[data-theme="demsao"] .event-card .lead { color: var(--muted); font-size: 1.15rem; margin: 0 0 14px; }
[data-theme="demsao"] .event-card .date.big { font: 500 1.6rem var(--f-head); letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
[data-theme="demsao"] .lead { color: var(--muted); }
[data-theme="demsao"] .wd .countdown { gap: 10px; margin: 26px 0; }
[data-theme="demsao"] .wd .countdown div { background: rgba(216, 181, 106, .06); border: 1px solid rgba(216, 181, 106, .35); border-radius: 999px; min-width: 70px; padding: 14px 6px; }
[data-theme="demsao"] .wd .countdown b { font: 500 2.1rem/1.1 var(--f-head); color: var(--gold); }
[data-theme="demsao"] .wd .countdown span { color: var(--muted); }
/* Địa điểm: lộ trình sao — một đường chấm vàng dọc, mỗi lễ là một ngôi sao, thẻ so le hai bên. */
[data-theme="demsao"] .location { counter-reset: evn; }
[data-theme="demsao"] .location .events { position: relative; display: grid; grid-template-columns: 1fr 1fr; gap: 0 96px; max-width: 1000px; padding: 10px 0; }
[data-theme="demsao"] .location .events::before { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; border-left: 1px dashed rgba(216, 181, 106, .55); }
[data-theme="demsao"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { position: relative; display: flex; flex-direction: column; grid-column: 1; max-width: none; margin: 0 0 40px; counter-increment: evn;
  background: linear-gradient(180deg, #17224a, #121b3d); border: 1px solid rgba(216, 181, 106, .3); border-radius: 10px; overflow: visible; }
[data-theme="demsao"] .location .ev:nth-child(even) { grid-column: 2; margin-top: 120px; }
[data-theme="demsao"] .location .ev::after { content: ""; position: absolute; top: 34px; right: -58px; width: 20px; height: 20px; background: var(--gold); filter: drop-shadow(0 0 8px rgba(243, 223, 170, .8));
  -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat; }
[data-theme="demsao"] .location .ev:nth-child(even)::after { right: auto; left: -58px; }
[data-theme="demsao"] .location .ev::before { content: ""; position: absolute; top: 43px; right: -48px; width: 48px; border-top: 1px solid rgba(216, 181, 106, .45); }
[data-theme="demsao"] .location .ev:nth-child(even)::before { right: auto; left: -48px; }
[data-theme="demsao"] .location :is(.ev, .ev:nth-child(even)) .ev-map { order: 0; height: 190px; margin: 10px 10px 0; border-radius: 6px; background: var(--paper); border: 1px solid rgba(216, 181, 106, .2); }
[data-theme="demsao"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { margin: 0; background: none; border: 0; box-shadow: none; padding: 26px 22px 28px; display: flex; flex-direction: column; align-items: center; }
[data-theme="demsao"] .location .ev-card::before { content: counter(evn, upper-roman); position: static; inset: auto; width: auto; height: auto; margin: 0 0 8px; -webkit-mask: none; mask: none; background: none;
  font: 500 .95rem/1 var(--f-head); letter-spacing: .3em; text-indent: .3em; color: var(--gold); }
[data-theme="demsao"] .ev-card h3 { font: 500 2rem var(--f-head); color: var(--gold); margin-bottom: 6px; }
[data-theme="demsao"] .ev-place { font: 600 .74rem var(--f-ui); letter-spacing: .22em; text-transform: uppercase; padding-top: 3px; margin-bottom: 10px; }
[data-theme="demsao"] .ev-addr, [data-theme="demsao"] .ev-time { color: var(--muted); }
[data-theme="demsao"] .ev-map iframe { filter: invert(.92) hue-rotate(185deg) saturate(.55) brightness(.92); }
/* Trích dẫn */
[data-theme="demsao"] .quote::after { background: linear-gradient(rgba(8, 12, 32, .62), rgba(8, 12, 32, .8)); }
[data-theme="demsao"] .quote blockquote p { font: italic 500 clamp(1.6rem, 3.6vw, 2.4rem)/1.4 var(--f-head); color: #f6eedb; }
/* Album: những ô cửa vòm nhìn ra trời đêm, ô thứ hai & năm lệch nhịp. */
[data-theme="demsao"] .wd-gallery { grid-template-columns: repeat(3, 1fr); gap: 18px; max-width: 1040px; padding-bottom: 40px; }
[data-theme="demsao"] .wd-g { aspect-ratio: 3 / 4; border-radius: 999px 999px 6px 6px; box-shadow: 0 0 0 1px rgba(216, 181, 106, .45), 0 20px 40px -20px rgba(0, 0, 0, .7); }
[data-theme="demsao"] .wd-g:nth-child(3n + 2) { transform: translateY(40px); }
[data-theme="demsao"] .wd-g::after { background: rgba(13, 21, 48, .5); color: var(--gold); }
[data-theme="demsao"] .slot-ph { background: radial-gradient(circle at 30% 30%, #26336a, var(--soft) 70%); color: var(--gold); }
[data-theme="demsao"] .wd .album-card { background: var(--paper); box-shadow: none; border: 1px solid var(--line); }
[data-theme="demsao"] .wd .album-meta h3 { color: var(--ink); }
/* Gửi ảnh + form tối */
[data-theme="demsao"] .cta { background: radial-gradient(ellipse at 50% 100%, #22306a, transparent 70%); border-top: 1px solid rgba(216, 181, 106, .2); border-bottom: 1px solid rgba(216, 181, 106, .2); max-width: none; padding: 80px 20px; }
[data-theme="demsao"] .wd :is(.rsvp-card, .wish-form) :is(input, textarea, select) { background: #0c1431; border-color: #34407a; color: var(--ink); }
[data-theme="demsao"] .wd :is(.rsvp-card, .wish-form) :is(input, textarea):focus { border-color: var(--gold); }
[data-theme="demsao"] .flash:not(.flash-error) { background: #f3ecdc; color: #0d1530; }
[data-theme="demsao"] .rsvp-choice span { background: #0c1431; border: 1px solid #34407a; color: var(--ink); border-radius: 999px; }
[data-theme="demsao"] .rsvp-choice input:checked + span { border-color: var(--gold); background: rgba(216, 181, 106, .14); color: var(--ink); }
[data-theme="demsao"] .rsvp-invitee b, [data-theme="demsao"] .rsvp-done b { color: var(--gold); }
[data-theme="demsao"] .wd .wish-form { background: var(--paper); }
[data-theme="demsao"] .wd .wish { position: relative; background: linear-gradient(180deg, #17224a, #121b3d); border: 1px solid rgba(216, 181, 106, .22); border-left: 0; border-radius: 10px; padding: 22px 22px 18px 50px; }
[data-theme="demsao"] .wd .wish::before { content: ""; position: absolute; left: 20px; top: 26px; width: 14px; height: 14px; background: var(--gold);
  -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat; }
[data-theme="demsao"] .wd .wish p { font-style: italic; }
[data-theme="demsao"] .wd .wish cite { color: var(--gold); font: italic 500 1.05rem var(--f-head); }
[data-theme="demsao"] .wd-foot { background: var(--stars-a), #080d22; background-size: 260px 260px; }
[data-theme="demsao"] .music-btn { background: var(--gold); color: #0d1530; box-shadow: 0 0 24px rgba(216, 181, 106, .45); }
[data-theme="demsao"] .music-hint { color: #0d1530; }
[data-theme="demsao"] .ed-active { color: #0d1530 !important; }
@media (max-width: 1100px) {
  [data-theme="demsao"] .event-row { grid-template-columns: 1fr; max-width: 640px; }
  [data-theme="demsao"] .event-photo { width: min(72%, 360px); margin: 0 auto; }
  [data-theme="demsao"] .event-card { display: flex; flex-direction: column; align-items: center; }
  [data-theme="demsao"] .starchart { width: min(100%, 330px); margin: 0 auto 26px; }
}
@media (max-width: 760px) {
  [data-theme="demsao"] .couple-row { grid-template-columns: minmax(0, 1fr) 54px minmax(0, 1fr); gap: 0 4px; }
  [data-theme="demsao"] .constel { margin-top: calc(21vw - 20px); }
  [data-theme="demsao"] .oval { box-shadow: 0 0 0 5px #111a3a, 0 0 0 6px rgba(216, 181, 106, .35), 0 0 40px rgba(216, 181, 106, .22); margin-bottom: 22px; }
  [data-theme="demsao"] .role { letter-spacing: .22em; font-size: .62rem; }
  [data-theme="demsao"] .banner { font-size: 1.25rem; }
  [data-theme="demsao"] .info { font-size: .98rem; }
  [data-theme="demsao"] .paper { padding: 44px 20px; }
  [data-theme="demsao"] .wd .countdown { gap: 6px; }
  [data-theme="demsao"] .wd .countdown div { min-width: 0; width: 66px; }
  [data-theme="demsao"] .wd .countdown b { font-size: 1.8rem; }
  [data-theme="demsao"] .location .events { grid-template-columns: 1fr; gap: 0; padding-left: 34px; }
  [data-theme="demsao"] .location .events::before { left: 10px; }
  [data-theme="demsao"] .location :is(.ev, .ev:nth-child(even)) { grid-column: 1; margin: 0 0 32px; }
  [data-theme="demsao"] .location .ev:nth-child(even) { margin-top: 0; }
  [data-theme="demsao"] .location :is(.ev, .ev:nth-child(even))::after { right: auto; left: -34px; width: 16px; height: 16px; top: 30px; }
  [data-theme="demsao"] .location :is(.ev, .ev:nth-child(even))::before { right: auto; left: -18px; width: 18px; top: 38px; }
  [data-theme="demsao"] .wd-gallery { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  [data-theme="demsao"] .wd-g:nth-child(3n + 2) { transform: none; }
  [data-theme="demsao"] .wd-g:nth-child(even) { transform: translateY(30px); }
}

/* ─────────── ĐẤT NUNG: boho — vòm, mặt trời, khối hữu cơ chồng lớp, polaroid, giấy thô ─────────── */
[data-theme="datnung"] {
  --sand: #ecd9c6; --clay: #c9765a;
  --grain: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .35  0 0 0 0 .2  0 0 0 0 .12  0 0 0 .5 0'/></filter><rect width='180' height='180' filter='url(%23n)' opacity='.55'/></svg>");
  --sun: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'><circle cx='20' cy='20' r='8'/><g stroke='black' stroke-width='2.4' stroke-linecap='round'><path d='M20 2v6M20 32v6M2 20h6M32 20h6M7.3 7.3l4.2 4.2M28.5 28.5l4.2 4.2M7.3 32.7l4.2-4.2M28.5 11.5l4.2-4.2'/></g></svg>");
}
/* Lớp giấy thô phủ nhẹ toàn trang (không bắt chuột, không che menu). */
[data-theme="datnung"] body.wd::after { content: ""; position: fixed; inset: 0; z-index: 30; pointer-events: none; background: var(--grain); opacity: .22; mix-blend-mode: multiply; }
[data-theme="datnung"] .wd h2 { font: italic 400 clamp(2.3rem, 5vw, 3.4rem)/1.15 var(--f-head); color: var(--ink); }
[data-theme="datnung"] .watercolor { background: var(--paper); }
[data-theme="datnung"] .sec-head::before { content: ""; display: block; width: 34px; height: 34px; margin: 0 auto 10px; background: var(--mustard);
  -webkit-mask: var(--sun) center / contain no-repeat; mask: var(--sun) center / contain no-repeat; }
[data-theme="datnung"] .wd .btn { font-weight: 600; border-radius: 999px; }
[data-theme="datnung"] .wd .btn-ghost { background: transparent; border-color: var(--accent); color: var(--accent); }
/* Cô dâu & chú rể: 2 vòm ảnh đặt trên khối màu hữu cơ (gạch nung / mù tạt), chữ nằm cạnh ảnh kiểu so le. */
[data-theme="datnung"] .couple-row { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 0 clamp(20px, 4vw, 56px); max-width: 1000px; align-items: start; }
[data-theme="datnung"] .rings { display: none; }
[data-theme="datnung"] .couple-amp { display: grid; place-items: center; align-self: center; width: 64px; height: 64px; margin-top: -80px; border-radius: 50%; background: var(--mustard);
  color: #fff; font: italic 400 2rem/1 var(--f-head); box-shadow: 0 0 0 8px var(--paper), 0 0 0 9px rgba(217, 160, 91, .5); }
[data-theme="datnung"] .person { position: relative; isolation: isolate; }
[data-theme="datnung"] .person::before { content: ""; position: absolute; z-index: -1; left: 50%; top: 18px; width: 80%; aspect-ratio: 1; transform: translateX(-54%) rotate(-8deg);
  background: var(--clay); opacity: .9; border-radius: 58% 42% 55% 45% / 48% 60% 40% 52%; }
[data-theme="datnung"] .person-b::before { background: var(--mustard); transform: translateX(-46%) rotate(12deg); border-radius: 44% 56% 40% 60% / 58% 42% 58% 42%; top: 0; }
[data-theme="datnung"] .oval { border-radius: 999px 999px 18px 18px; aspect-ratio: 4 / 5; width: min(270px, 78%); border: 0; box-shadow: 0 0 0 7px var(--paper), 0 26px 40px -24px rgba(70, 30, 15, .6); margin: 0 auto 30px; }
[data-theme="datnung"] .role { color: var(--accent); font-weight: 600; letter-spacing: .24em; }
[data-theme="datnung"] .banner { display: block; background: none; color: var(--ink); padding: 0; border-radius: 0; font: italic 400 clamp(1.6rem, 3vw, 2.1rem)/1.15 var(--f-head); margin: 6px 0 8px; text-wrap: balance; }
/* Lễ thành hôn: dải gạch nung, thẻ vòm với lịch tháng — ngày cưới là một mặt trời nhỏ. */
[data-theme="datnung"] .event { background: var(--accent); color: #fbefe3; overflow: hidden; }
[data-theme="datnung"] .event::before { content: ""; position: absolute; right: -120px; top: -120px; width: 380px; height: 380px; border-radius: 50%; pointer-events: none;
  background: radial-gradient(circle, rgba(217, 160, 91, .45) 0 50%, transparent 51%), repeating-conic-gradient(rgba(217, 160, 91, .35) 0 3deg, transparent 3deg 15deg);
  -webkit-mask: radial-gradient(circle, #000 0 50%, transparent 51% 56%, #000 57% 68%, transparent 69%); mask: radial-gradient(circle, #000 0 50%, transparent 51% 56%, #000 57% 68%, transparent 69%); }
[data-theme="datnung"] .event h2 { color: #fbefe3; }
[data-theme="datnung"] .event .sec-head::before { background: #f3cf9a; }
[data-theme="datnung"] .event .sec-head .divider { --div-color: #f3cf9a; }
[data-theme="datnung"] .event-row { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(28px, 5vw, 64px); max-width: 1040px; }
[data-theme="datnung"] .event-photo { aspect-ratio: 4 / 5; border-radius: 999px 999px 22px 22px; border: 0; box-shadow: 0 0 0 8px var(--accent), 0 0 0 9.5px #f3cf9a; }
[data-theme="datnung"] .paper { background: var(--paper); color: var(--ink); border-radius: 24px; padding: 50px 40px; box-shadow: 0 24px 50px -30px rgba(70, 30, 15, .55); }
[data-theme="datnung"] .event-card { display: flex; flex-direction: column; align-items: center; border-radius: 999px 999px 24px 24px / 240px 240px 24px 24px; padding: 90px clamp(20px, 4vw, 46px) 44px; }
[data-theme="datnung"] .event-card .lead { font-size: 1rem; margin-bottom: 12px; }
[data-theme="datnung"] .event-card .date.big { font: 600 1.05rem var(--f-head); background: var(--soft); border-radius: 999px; padding: 9px 20px; }
[data-theme="datnung"] .cal { display: block; width: 100%; max-width: 330px; margin: 22px 0 4px; }
[data-theme="datnung"] .cal-h { font: italic 400 1.9rem/1 var(--f-head); color: var(--accent); margin: 0 0 12px; }
[data-theme="datnung"] .cal-h i { color: var(--mustard); font-style: normal; }
[data-theme="datnung"] .cal-g { background: var(--soft); border-radius: 18px; padding: 10px 8px; }
[data-theme="datnung"] .cal-g b { font: 700 .64rem var(--f-ui); color: var(--accent); letter-spacing: .06em; }
[data-theme="datnung"] .cal-g span { font: 500 .95rem var(--f-ui); color: var(--ink); }
[data-theme="datnung"] .cal-g .on { color: #fff; z-index: 0; }
[data-theme="datnung"] .cal-g .on::before { content: ""; position: absolute; inset: -5px; z-index: -1; background: var(--accent);
  -webkit-mask: var(--sun) center / contain no-repeat; mask: var(--sun) center / contain no-repeat; }
[data-theme="datnung"] .cal-g .on::after { content: ""; position: absolute; inset: 7px; z-index: -1; border-radius: 50%; background: var(--accent); }
[data-theme="datnung"] .event-card .lunar { margin-top: 12px; }
[data-theme="datnung"] .wd .countdown div { background: var(--soft); border-radius: 999px 999px 14px 14px; padding: 18px 6px 10px; }
[data-theme="datnung"] .wd .countdown b { font: 600 2rem/1.1 var(--f-head); color: var(--accent); }
[data-theme="datnung"] .wd .countdown span { color: var(--muted); }
/* Địa điểm: thẻ vòm màu đất xen kẽ (gạch · cát · hồng đất), cửa sổ bản đồ hình vòm. */
[data-theme="datnung"] .location .events { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); max-width: 1000px; gap: 28px; align-items: stretch; }
[data-theme="datnung"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) { display: flex; flex-direction: column; max-width: none; margin: 0; padding: 14px 14px 6px;
  background: var(--clay); color: #fff7ee; border-radius: 999px 999px 26px 26px / 190px 190px 26px 26px; }
[data-theme="datnung"] .location .ev:nth-child(3n + 2) { background: var(--mustard); color: var(--ink); }
[data-theme="datnung"] .location .ev:nth-child(3n + 3) { background: var(--blush); color: var(--ink); }
[data-theme="datnung"] .location :is(.ev, .ev:nth-child(even)) .ev-map { order: 0; height: 220px; border-radius: 999px 999px 16px 16px / 170px 170px 16px 16px; }
[data-theme="datnung"] .location :is(.ev, .ev:nth-child(even), .ev.ev--nomap) .ev-card { flex: 1; margin: 0; background: none; box-shadow: none; padding: 26px 16px 24px; display: flex; flex-direction: column; align-items: center; color: inherit; }
[data-theme="datnung"] .location .ev--nomap .ev-card { padding-top: 70px; }
[data-theme="datnung"] .ev-card::before { display: block; content: ""; position: static; inset: auto; width: 30px; height: 30px; margin-bottom: 8px; transform: none; box-shadow: none; z-index: auto;
  background: currentColor; -webkit-mask: var(--sun) center / contain no-repeat; mask: var(--sun) center / contain no-repeat; }
[data-theme="datnung"] .ev-card h3 { font: italic 400 2.1rem/1.15 var(--f-head); color: inherit; margin-bottom: 6px; }
[data-theme="datnung"] .ev-place { font: 700 .76rem var(--f-ui); letter-spacing: .16em; text-transform: uppercase; margin-bottom: 8px; }
[data-theme="datnung"] .location .ev-card :is(.ev-addr, .ev-time) { color: inherit; opacity: .88; }
[data-theme="datnung"] .location .ev-card .btn { margin-top: auto; background: #fff7ee; color: var(--accent); }
[data-theme="datnung"] .ev-map iframe { filter: sepia(.25) saturate(.85); }
/* Trích dẫn */
[data-theme="datnung"] .quote::after { background: rgba(80, 34, 18, .58); }
[data-theme="datnung"] .quote blockquote p { font: italic 400 clamp(1.5rem, 3.4vw, 2.3rem)/1.4 var(--f-head); }
/* Album: ảnh polaroid dán băng keo, nghiêng nhẹ so le. */
[data-theme="datnung"] .gallery-sec { background: var(--sand); }
[data-theme="datnung"] .wd-gallery { grid-template-columns: repeat(4, 1fr); gap: 30px 22px; max-width: 1120px; padding: 10px 6px 20px; }
[data-theme="datnung"] .wd-g { aspect-ratio: auto; overflow: visible; background: #fffaf3; padding: 10px 10px 34px; border-radius: 3px; box-shadow: 0 14px 24px -14px rgba(70, 30, 15, .55), 0 1px 2px rgba(70, 30, 15, .15);
  transform: rotate(-2deg); transition: transform .35s; }
[data-theme="datnung"] .wd-g:nth-child(3n + 2) { transform: rotate(1.6deg) translateY(10px); }
[data-theme="datnung"] .wd-g:nth-child(3n) { transform: rotate(-.8deg); }
[data-theme="datnung"] .wd-g:hover { transform: rotate(0) scale(1.03); z-index: 2; }
[data-theme="datnung"] .wd-g img { aspect-ratio: 1; height: auto; }
[data-theme="datnung"] .wd-g:hover img { transform: none; }
[data-theme="datnung"] .wd-g::after { content: ""; inset: auto; left: 50%; top: -10px; width: 70px; height: 22px; margin-left: -35px; background: rgba(217, 160, 91, .55); opacity: 1; transform: rotate(-3deg); }
[data-theme="datnung"] .wd-g:nth-child(even)::after { background: rgba(231, 195, 173, .75); transform: rotate(4deg); }
[data-theme="datnung"] .wd .album-card { border-radius: 20px; box-shadow: none; border: 1px solid var(--line); }
/* Gửi ảnh: vòm gạch nung; xác nhận + lời chúc: thẻ màu đất. */
[data-theme="datnung"] .cta { max-width: 680px; margin: 40px auto; padding: 96px 28px 52px; background: var(--clay); color: #fff7ee; border-radius: 999px 999px 28px 28px / 220px 220px 28px 28px; }
[data-theme="datnung"] .wd .cta h2 { color: #fff7ee; }
[data-theme="datnung"] .cta .btn { background: #fff7ee; color: var(--accent); }
[data-theme="datnung"] .rsvp-choice span { border: 1.5px solid var(--line); border-radius: 999px; }
[data-theme="datnung"] .rsvp-choice input:checked + span { border-color: var(--accent); background: #f8e6d9; }
[data-theme="datnung"] .rsvp-invitee b, [data-theme="datnung"] .rsvp-done b { color: var(--accent); font-family: var(--f-name); font-style: italic; }
[data-theme="datnung"] .wd .wish-form { border-radius: 24px; }
[data-theme="datnung"] .wd .wish { border: 0; border-radius: 22px 22px 22px 4px; background: var(--sand); padding: 22px 22px 18px; }
[data-theme="datnung"] .wd .wish:nth-child(3n + 2) { background: #f1dccd; }
[data-theme="datnung"] .wd .wish:nth-child(3n) { background: #f3e3c4; }
[data-theme="datnung"] .wd .wish cite { color: var(--accent); font-weight: 600; }
[data-theme="datnung"] .wd-foot { background: var(--sand); }
@media (max-width: 760px) {
  [data-theme="datnung"] .couple-row { grid-template-columns: 1fr; gap: 20px; max-width: 460px; }
  [data-theme="datnung"] .couple-amp { justify-self: center; margin: 0; width: 52px; height: 52px; font-size: 1.6rem; }
  [data-theme="datnung"] .person { display: grid; grid-template-columns: 58% 1fr; column-gap: 18px; align-items: center; text-align: left; }
  [data-theme="datnung"] .person > * { grid-column: 2; }
  [data-theme="datnung"] .person > .oval { grid-column: 1; grid-row: 1 / span 4; width: 100%; margin: 0; }
  [data-theme="datnung"] .person > .role { align-self: end; }
  [data-theme="datnung"] .person > .info { align-self: start; margin: 0; font-size: .92rem; }
  [data-theme="datnung"] .person > .banner { font-size: 1.55rem; }
  [data-theme="datnung"] .person::before { left: 0; top: 50%; width: 68%; transform: translate(-20%, -38%) rotate(-8deg); }
  [data-theme="datnung"] .person-b { grid-template-columns: 1fr 58%; text-align: right; }
  [data-theme="datnung"] .person-b > * { grid-column: 1; }
  [data-theme="datnung"] .person-b > .oval { grid-column: 2; }
  [data-theme="datnung"] .person-b::before { left: auto; right: 0; transform: translate(20%, -62%) rotate(12deg); }
  [data-theme="datnung"] .event-row { grid-template-columns: 1fr; }
  [data-theme="datnung"] .event-photo { width: 76%; margin: 0 auto; }
  [data-theme="datnung"] .event-card { border-radius: 999px 999px 22px 22px / 160px 160px 22px 22px; padding: 76px 18px 40px; }
  [data-theme="datnung"] .event-card .date.big { font-size: .92rem; padding: 8px 14px; }
  [data-theme="datnung"] .paper { padding: 40px 22px; }
  [data-theme="datnung"] .wd .countdown { gap: 8px; }
  [data-theme="datnung"] .wd .countdown div { min-width: 0; width: 64px; }
  [data-theme="datnung"] .wd-gallery { grid-template-columns: repeat(2, 1fr); gap: 22px 14px; }
  [data-theme="datnung"] .wd-g { padding: 7px 7px 24px; }
  [data-theme="datnung"] .wd-g::after { width: 50px; margin-left: -25px; height: 18px; }
  [data-theme="datnung"] .cta { margin: 20px 16px; border-radius: 999px 999px 24px 24px / 150px 150px 24px 24px; padding-top: 80px; }
}

/* ── Hiệu ứng rơi mới: hoa đào · kim tuyến vàng · sao lấp lánh ── */
.fx[data-fx="blossom"] i { width: 18px; height: 18px; opacity: .9;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><g fill='%23f6a9bb'><ellipse cx='10' cy='4.6' rx='3.4' ry='4.4'/><ellipse cx='10' cy='4.6' rx='3.4' ry='4.4' transform='rotate(72 10 10)'/><ellipse cx='10' cy='4.6' rx='3.4' ry='4.4' transform='rotate(144 10 10)'/><ellipse cx='10' cy='4.6' rx='3.4' ry='4.4' transform='rotate(216 10 10)'/><ellipse cx='10' cy='4.6' rx='3.4' ry='4.4' transform='rotate(288 10 10)'/></g><circle cx='10' cy='10' r='2.4' fill='%23d9476a'/></svg>") center / contain no-repeat; }
.fx[data-fx="blossom"] i:nth-child(3n) { width: 13px; height: 11px; border-radius: 150% 0 150% 0; background: linear-gradient(135deg, #ffe1e8, #f39ab0); }
.fx[data-fx="glitter"] i { width: 7px; height: 11px; border-radius: 1px; background: linear-gradient(135deg, #fff6cf, #d8b05a 50%, #9c7a34); opacity: .9;
  animation: fx-fall var(--dur, 12s) linear var(--delay, 0s) infinite, fx-sway var(--sway, 3.2s) ease-in-out var(--delay, 0s) infinite alternate, fx-flash 1.4s ease-in-out infinite alternate; }
.fx[data-fx="glitter"] i:nth-child(3n) { width: 6px; height: 6px; border-radius: 50%; }
.fx[data-fx="glitter"] i:nth-child(4n) { background: linear-gradient(135deg, #fff, #e7c9d2 60%, #c79aa8); }
.fx[data-fx="stars"] i { width: 14px; height: 14px; background: #e9c46c;
  -webkit-mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat;
  mask: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path d='M10 0C11 7 13 9 20 10 13 11 11 13 10 20 9 13 7 11 0 10 7 9 9 7 10 0Z'/></svg>") center / contain no-repeat;
  animation: fx-fall calc(var(--dur, 12s) * 1.5) linear var(--delay, 0s) infinite, fx-sway var(--sway, 3.2s) ease-in-out var(--delay, 0s) infinite alternate, fx-flash 1.8s ease-in-out infinite alternate; }
.fx[data-fx="stars"] i:nth-child(odd) { background: #fff3cf; }
@keyframes fx-flash { from { opacity: .35; } to { opacity: 1; } }

/* ── Giảm chuyển động: tắt mọi animation của 6 giao diện, nét vẽ hiện đủ, rèm ảnh mở sẵn ── */
@media (prefers-reduced-motion: reduce) {
  :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) *, :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) *::before, :is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) *::after { animation: none !important; }
  .dr { stroke-dashoffset: 0 !important; }
  [data-theme="demsao"] .shoot { display: none; }
}
/* Chủ nhà đang sửa: không chờ hiệu ứng mở đầu (rèm, hiện dần) để thấy ngay ảnh/chữ. */
:is([data-theme="hoangkim"], [data-theme="songhy"], [data-theme="tapchi"], [data-theme="vuonhoa"], [data-theme="demsao"], [data-theme="datnung"]) .is-draft :is(.intro-main, .save-card, .hd-mark),
[data-theme="tapchi"] .is-draft :is(.names .name, .names .amp), [data-theme="tapchi"] .is-draft .intro-main::after { animation-duration: .01s !important; animation-delay: 0s !important; }

/* ══════════ QA vòng 1 — sàn cỡ chữ cho KHÁCH (người lớn tuổi), đặt cuối file để thắng mọi giao diện ══════════
   Chữ thông tin (giờ, ngày, địa điểm, tên, nhãn, nút) ≥14px, nút ≥16px; chữ in hoa giãn cách vừa phải cho dễ đọc.
   Chữ trang trí (họa tiết, chữ chạy, số lớn) không nằm trong danh sách này. */
html[data-theme] body.wd :is(.eyebrow, .role, .ev-k, .dl-wd, .ev-place, .house, .ic-greet) { font-size: .875rem; letter-spacing: min(.14em, 2px); }
html[data-theme] body.wd .countdown span { font-size: .875rem; letter-spacing: .06em; }
html[data-theme] body.wd .btn:not(.btn-sm) { font-size: 1rem; letter-spacing: .04em; min-height: 44px; }
html[data-theme] body.wd .cal-g b { font-size: .875rem; letter-spacing: 0; }
html[data-theme="hoangkim"] body.wd :is(.dl-m, .dl-y) { font-size: .875rem; }
html[data-theme] body.wd .wd-foot .small { font-size: .9375rem; }
html[data-theme="tapchi"] body.wd .save-card .date { font-size: .9375rem; letter-spacing: .12em; }
html[data-theme="tapchi"] body.wd .lunar { font-size: .9375rem; }
html[data-theme="tapchi"] body.wd .wish cite { font-size: .875rem; letter-spacing: .12em; }
html[data-theme="tapchi"] body.wd .ev-card .btn { align-items: flex-end; }
html[data-theme="vuonhoa"] body.wd .event-card .date.big { font-size: .9375rem; }
/* Chữ viết tay chỉ dùng cho chữ lớn (≥24px); chữ thông tin cỡ nhỏ dùng phông thường (BL-72). */
:is([data-theme="thiep"], [data-theme="vuonhoa"]) body.wd .album-meta h3 { font-family: var(--f-body); font-weight: 600; }
:is([data-theme="thiep"], [data-theme="vuonhoa"]) .ic-place-name { font-family: var(--f-body); }
html[data-theme="thiep"] body.wd .quote blockquote p { font-size: clamp(1.6rem, 4.6vw, 2.2rem); }
/* Logo + chữ trắng trên thanh menu: nền đủ đậm (tương phản ≥3:1). */
[data-theme="lavender"] { --nav-bg: #858ab8; }
[data-theme="summer"] { --nav-bg: #d9704c; }
:is([data-theme="lavender"], [data-theme="summer"]) .wd-mono.big { color: color-mix(in srgb, var(--accent) 80%, #000) !important; }
/* Thanh menu máy tính bảng/máy tính: link cao ≥44px, chữ ≥14px (máy tính bảng dùng ngón tay). */
@media (min-width: 761px) {
  html[data-theme] body.wd :is(.wd-nav-l, .wd-nav-r) a { display: inline-flex; align-items: center; min-height: 44px; font-size: max(.875rem, 1em); white-space: nowrap; }
  html[data-theme] body.wd :is(.wd-nav-l, .wd-nav-r) { column-gap: clamp(12px, 1.6vw, 22px); }
}
@media (min-width: 761px) and (max-width: 1100px) {
  html[data-theme] body.wd :is(.wd-nav-l, .wd-nav-r) a { letter-spacing: .04em; }
  html[data-theme] body.wd .wd-nav { padding-left: 14px; padding-right: 14px; column-gap: 10px; }
}
html[data-theme] body.wd .ev-card .ev-ics { margin-top: 10px; }
