/* ===== Invitation public page ===== */
.inv-page { margin: 0; font-family: var(--body-font, 'Poppins'), sans-serif; }
.invpage-body { font-family: var(--body-font, 'Poppins'), sans-serif; }

.inv-theme { min-height: 100vh; position: relative; overflow: hidden; }
.inv-theme-noemoji::before { display: none; }
/* Matikan sisa ornamen emoji legacy agar tidak menumpuk dengan sistem baru. */
.inv-ornament-floral::before, .inv-ornament-leaves::before, .inv-ornament-stars::before { content: none !important; display: none !important; }
/* Ikon antar-section harus transparan (jangan jadi kotak warna). */
.inv-section-orn-ico svg { background: transparent !important; }
.inv-theme > * { position: relative; z-index: 1; }
/* Hiasan antar-section modern: garis tipis + motif kecil, konsisten semua ornamen. */
/* (definisi final .inv-section-orn ada di blok Ornament bawah) */
/* (definisi final .inv-section-orn::before/after ada di blok Ornament bawah) */
/* (ukuran final .inv-section-orn-ico ada di blok Ornament bawah) */
.inv-section-orn-ico svg { width: 100%; height: 100%; display: block; }

.inv-container { max-width: 720px; }
.inv-deco-divider { display: flex; align-items: center; justify-content: center; gap: .5rem; width: auto; height: auto; background: transparent; margin: 0 auto; color: var(--ornament, var(--accent, #c9a97c)); }
.inv-deco-divider::before, .inv-deco-divider::after { content: ''; height: 1px; width: 56px; background: currentColor; opacity: .6; }
.inv-deco-divider > i { font-size: .7rem; opacity: .9; }
.inv-section-custom .inv-deco-divider { color: var(--section-primary, var(--ornament, var(--accent, #c9a97c))); }
.inv-heading { font-family: var(--heading-font, 'Playfair Display', serif); color: var(--heading-color, var(--text, #333)); }
.inv-paragraph { color: var(--text, #333); line-height: 1.9; }

/* Keep Bootstrap utility/button colours in sync with the selected theme.
   Without these overrides, components using text-primary or btn-primary
   keep Bootstrap's default blue even when a theme has another palette. */
.inv-theme .text-primary { color: var(--primary, #b08968) !important; }
.inv-theme .bg-primary { background-color: var(--primary, #b08968) !important; }
.inv-theme .btn-primary { background-color: var(--primary, #b08968); border-color: var(--primary, #b08968); }
.inv-theme .btn-primary:hover,
.inv-theme .btn-primary:focus { background-color: var(--secondary, #6b4f3a); border-color: var(--secondary, #6b4f3a); }
.inv-theme .btn-outline-primary { color: var(--primary, #b08968); border-color: var(--primary, #b08968); }
.inv-theme .btn-outline-primary:hover,
.inv-theme .btn-outline-primary:focus { color: #fff; background-color: var(--primary, #b08968); border-color: var(--primary, #b08968); }
.inv-section-custom { background-color: var(--section-background, transparent); background-image: var(--section-background-image, none); color: var(--section-text, inherit); font-family: var(--section-body_font, inherit); --heading-font: var(--section-heading_font); --body-font: var(--section-body_font); }
.inv-section-custom > .inv-section { background: var(--section-background-image, none) var(--section-background, transparent) !important; color: var(--section-text, inherit); }
.inv-section-custom .inv-heading { color: var(--section-text, inherit); font-family: var(--section-heading_font, var(--heading-font, 'Playfair Display', serif)); }
.inv-section-custom .inv-paragraph { color: var(--section-text, var(--text, #333)); }
.inv-section-custom .inv-deco-divider { background: var(--section-primary, var(--accent, #c9a97c)); }

/* Cover */
.inv-cover { min-height: 100vh; position: relative; }
.inv-cover-bg { position: absolute; inset: 0; background: var(--section-background-image, linear-gradient(135deg, var(--section-background, var(--primary, #b08968)), var(--section-background, var(--secondary, #6b4f3a)) 55%, var(--section-background, var(--accent, #c9a97c)))); }
.inv-section-custom .inv-cover-content { color: var(--section-text, #ffffff) !important; }
.inv-cover-bg .inv-cover-overlay { position: absolute; inset: 0; background: rgba(20,12,10,.55); display: flex; align-items: center; justify-content: center; }
.inv-cover-content { max-width: 640px; }
/* Animasi "Buka Undangan": halaman depan ikut beranimasi — pintu ganda menganga
   dan isi cover (teks) membesar lalu memudar seakan masuk ke dalam undangan.
   Setelah animasi selesai, cover DIKEMBALIKAN utuh: scroll kembali ke atas tetap
   melihat halaman depan (tidak pernah jadi kosong). */
.inv-cover.inv-opening { perspective: 1500px; overflow: visible; }
.inv-cover.inv-opening .inv-cover-content { animation: inv-cover-content-open 1s cubic-bezier(.5,.05,.3,1) forwards; }
@keyframes inv-cover-content-open {
  0% { transform: scale(1); opacity: 1; }
  70% { opacity: 1; }
  100% { transform: scale(1.14); opacity: 0; }
}
.inv-door-seam { position: absolute; inset: 0; z-index: 6; opacity: 1; transition: opacity .55s ease .3s; }
.inv-cover.inv-opening .inv-door-seam { opacity: 0; }
.inv-door-leaf { position: absolute; top: 0; height: 100%; width: 50.5%; z-index: 7; backface-visibility: hidden; will-change: transform; opacity: 1; }
.inv-door-leaf.is-left { left: 0; transform-origin: left center; box-shadow: 3px 0 26px rgba(0,0,0,.28); }
.inv-door-leaf.is-right { right: 0; transform-origin: right center; box-shadow: -3px 0 26px rgba(0,0,0,.28); }
.inv-cover.inv-opening .inv-door-leaf.is-left { animation: inv-door-left .95s cubic-bezier(.6,.05,.22,1) forwards; }
.inv-cover.inv-opening .inv-door-leaf.is-right { animation: inv-door-right .95s cubic-bezier(.6,.05,.22,1) forwards; }
@keyframes inv-door-left { 0% { transform: rotateY(0); opacity: 1; } 70% { opacity: 1; } 100% { transform: rotateY(-86deg); opacity: .1; } }
@keyframes inv-door-right { 0% { transform: rotateY(0); opacity: 1; } 70% { opacity: 1; } 100% { transform: rotateY(86deg); opacity: .1; } }
@media (prefers-reduced-motion: reduce) {
  .inv-cover.inv-opening .inv-door-leaf.is-left,
  .inv-cover.inv-opening .inv-door-leaf.is-right { animation: none; opacity: 0; transition: opacity .4s; }
}
.inv-cover-greeting { text-transform: uppercase; letter-spacing: .2em; font-size: .8rem; }
.inv-cover-name { font-family: var(--heading-font, 'Playfair Display', serif); line-height: 1.2; }
.inv-cover-date { opacity: .9; }

/* Cover ornamental frame — modern elegant: garis bingkai tipis + motif sudut SVG.
   Tanpa preserveAspectRatio="none" sehingga motif tidak pernah stretch/berantakan.
   Warna mengikuti --ornament (diatur dari Global Setting). */
.inv-cover-frame { position: absolute; inset: 14px; z-index: 3; pointer-events: none; color: var(--ornament, var(--accent, #c9a97c)); }
.inv-cover-frame.is-hidden { display: none; }
.inv-cover-frame .inv-cover-line { position: absolute; inset: 0; border: 1px solid currentColor; opacity: .55; border-radius: 4px; }
.inv-cover-frame.is-corners .inv-cover-line { inset: 10px; opacity: .35; }
.inv-cover-corner { position: absolute; width: clamp(72px, 18%, 132px); aspect-ratio: 1/1; line-height: 0; }
.inv-cover-corner svg { width: 100%; height: 100%; display: block; overflow: visible; }
.inv-cover-corner .oc-stroke path { fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; }
.inv-cover-corner .oc-fill { fill: currentColor; }
.inv-cover-corner .oc-core { fill: var(--background, #fff); opacity: .9; }
.inv-cover-corner .oc-core2 { fill: var(--background, #fff); opacity: .55; }
.inv-cover-corner.is-tl { top: -6px; left: -6px; }
.inv-cover-corner.is-tr { top: -6px; right: -6px; transform: scaleX(-1); }
.inv-cover-corner.is-br { bottom: -6px; right: -6px; transform: scale(-1); }
.inv-cover-corner.is-bl { bottom: -6px; left: -6px; transform: scaleY(-1); }
.inv-cover-frame.is-frame .inv-cover-corner { width: clamp(64px, 15%, 110px); }
/* Varian geometric tampil lebih tegas, floral/botanical lebih lembut. */
.inv-cover-frame.is-geometric { opacity: .95; }
.inv-cover-frame.is-floral .inv-cover-corner .oc-fill,
.inv-cover-frame.is-botanical .inv-cover-corner .oc-fill { opacity: .92; }
@media (max-width: 480px) {
    .inv-cover-frame { inset: 10px; }
    .inv-cover-corner { width: clamp(60px, 24vw, 88px); }
}

/* Legacy full-bleed ornament frame (nonaktif, dipertahankan agar tidak merusak cache lama) */
.inv-cover-frame-legacy { position: absolute; top: 0; left: 0; width: 100%; height: 100%; color: var(--ornament, var(--section-primary, var(--accent, #c9a97c))); pointer-events: none; z-index: 5; }
.inv-cover-frame-legacy svg { width: 100%; height: 100%; display: block; }
/* Thin inset hairline when no ornament frame is injected */
.inv-orn-none .inv-cover::before { content: ''; position: absolute; inset: 10px; z-index: 5; pointer-events: none; border: 1px solid rgba(255,255,255,.55); border-radius: 22px; }

/* ===== Bingkai isi undangan: 1 persegi panjang membungkus semua section setelah cover =====
   Motif/warna diatur terpisah lewat Global Setting (ornament_section). */
.inv-content-wrap { position: relative; }
.inv-content-frame { position: absolute; inset: 14px; z-index: 3; pointer-events: none; color: var(--content-frame-color, var(--ornament, var(--accent, #c9a97c))); }
.inv-content-frame .inv-content-frame-line { position: absolute; inset: 0; border: 1px solid currentColor; opacity: .55; border-radius: 4px; }
.inv-content-frame.is-corners .inv-content-frame-line { inset: 10px; opacity: .35; }
.inv-content-corner { position: absolute; width: clamp(64px, 15%, 110px); aspect-ratio: 1/1; line-height: 0; }
.inv-content-corner svg { width: 100%; height: 100%; display: block; overflow: visible; }
.inv-content-corner .oc-stroke path { fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; }
.inv-content-corner .oc-fill { fill: currentColor; }
.inv-content-corner .oc-core { fill: var(--background, #fff); opacity: .9; }
.inv-content-corner .oc-core2 { fill: var(--background, #fff); opacity: .55; }
.inv-content-corner.is-tl { top: -6px; left: -6px; }
.inv-content-corner.is-tr { top: -6px; right: -6px; transform: scaleX(-1); }
.inv-content-corner.is-br { bottom: -6px; right: -6px; transform: scale(-1); }
.inv-content-corner.is-bl { bottom: -6px; left: -6px; transform: scaleY(-1); }
.inv-content-frame.is-geometric { opacity: .95; }
.inv-content-frame.is-floral .inv-content-corner .oc-fill,
.inv-content-frame.is-botanical .inv-content-corner .oc-fill { opacity: .92; }
@media (max-width: 480px) {
    .inv-content-frame { inset: 10px; }
    .inv-content-corner { width: clamp(60px, 24vw, 88px); }
}

/* Timeline */
.inv-timeline { position: relative; }
.inv-timeline::before { content: ''; position: absolute; left: 8px; top: 4px; bottom: 4px; width: 2px; background: var(--accent, #e5d3c9); }
.inv-timeline-item { padding-left: 24px; position: relative; }
.inv-timeline-dot { position: absolute; left: 0; top: 6px; width: 18px; height: 18px; border-radius: 50%; background: #fff; border: 3px solid var(--accent, #c9a97c); }
.inv-timeline-body { flex: 1; }

/* Gallery */
.inv-gallery-item { overflow: hidden; border-radius: 6px; }
.inv-gallery-item img { transition: transform .25s ease; }
.inv-gallery-item:hover img { transform: scale(1.05); }
.inv-gallery-grid { justify-content: center; }
.inv-gallery-grid[data-layout="slider"] { display: flex; overflow-x: auto; flex-wrap: nowrap; scroll-snap-type: x mandatory; justify-content: flex-start; }
.inv-gallery-grid[data-layout="slider"] .col-6 { min-width: 75%; scroll-snap-align: start; }
.inv-gallery-grid[data-layout="masonry"] { display: flex; flex-wrap: wrap; justify-content: center; }
.inv-gallery-grid[data-layout="masonry"] .col-6 { width: 50%; max-width: 50%; }
@media (min-width: 768px) {
    .inv-gallery-grid[data-layout="masonry"] .col-6 { width: 33.333%; max-width: 33.333%; }
}
.inv-gallery-grid[data-layout="collage"] .col-6:first-child { width: 66.666%; }
.inv-gallery-grid[data-layout="collage"] .col-6:nth-child(2), .inv-gallery-grid[data-layout="collage"] .col-6:nth-child(3) { width: 33.333%; }
.inv-gallery-grid[data-layout="polaroid"] .inv-gallery-item { background: #fff; padding: .45rem .45rem 1.4rem; box-shadow: 0 4px 14px rgba(0,0,0,.12); transform: rotate(-1deg); }

/* Foto dengan transform custom dari editor (ukuran / rotasi).
   Ukuran = lebar kotak benar-benar membesar; rotasi dipakai HANYA di foto
   (img), bingkai/hiasan tetap tegak. Overflow terlihat supaya foto miring
   boleh meluber keluar bingkai, aman di HP karena slot tetap. */
.inv-gallery-grid .inv-gallery-item.has-transform { overflow: visible; z-index: 2; }
.inv-gallery-grid .inv-gallery-item.has-transform img,
.inv-gallery-grid .inv-gallery-item.has-transform:hover img { transform: var(--photo-transform, none); transition: none; }

/* Lock */
.inv-lock-card { background: #fff; border-radius: 18px; box-shadow: 0 10px 30px rgba(0,0,0,.12); padding: 2.5rem 2rem; width: 100%; max-width: 400px; margin: 1rem; }

.inv-attribution a { color: inherit; text-decoration: none; }
.inv-attribution a:hover { text-decoration: underline; }

/* Countdown */
.inv-count-num { font-family: var(--heading-font, 'Playfair Display', serif); }

/* Bottom submenu (menubar) — hidden on cover, slides up after scrolling past it */
.inv-subnav { position: fixed; left: 50%; bottom: 14px; transform: translate(-50%, 24px); display: flex; align-items: center; gap: .35rem; z-index: 1050; max-width: 94vw; border-radius: 999px; padding: .45rem .55rem; background: rgba(255,255,255,.95); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); box-shadow: 0 6px 24px rgba(0,0,0,.18); opacity: 0; visibility: hidden; transition: opacity .3s ease, transform .3s ease, visibility .3s; }
.inv-subnav.is-visible { opacity: 1; transform: translate(-50%, 0); visibility: visible; }
.inv-subnav-group { display: flex; align-items: center; gap: .3rem; overflow-x: auto; scrollbar-width: none; }
.inv-subnav-group::-webkit-scrollbar { display: none; }
.inv-subnav-link { display: flex; flex-direction: column; align-items: center; gap: .1rem; min-width: 50px; padding: .2rem .25rem; border-radius: 12px; color: var(--text, #333); text-decoration: none; font-size: .58rem; font-weight: 600; line-height: 1.1; white-space: nowrap; }
.inv-subnav-link i { font-size: 1rem; color: var(--primary, #7b2d3b); }
.inv-subnav-link:hover { background: rgba(0,0,0,.05); color: var(--primary, #7b2d3b); }
.inv-subnav-map { width: 46px; height: 46px; flex-shrink: 0; border: 0; border-radius: 50%; background: var(--primary, #7b2d3b); color: #fff; font-size: 1.05rem; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.inv-subnav-map:hover { filter: brightness(1.08); }

/* ===== Ornament: section dividers ===== */
.inv-section-orn { position: relative; display: flex; align-items: center; justify-content: center; gap: 14px; height: 58px; padding: 0 20px; color: var(--ornament, var(--accent, #c9a97c)); }
.inv-section-orn::before, .inv-section-orn::after { content: ''; flex: 1 1 auto; max-width: 150px; height: 1px; background: linear-gradient(90deg, transparent, var(--ornament, var(--accent, #c9a97c))); opacity: .8; }
.inv-section-orn::after { transform: scaleX(-1); }
.inv-section-orn-ico { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; line-height: 1; }
.inv-section-orn-ico svg { width: 100%; height: 100%; display: block; background: transparent; }

/* Matikan ikon emoji antar-section legacy (sudah diganti SVG di renderer). */

.inv-orn-none .inv-section-orn { height: 44px; }
.inv-orn-none .inv-section-orn::before, .inv-orn-none .inv-section-orn::after { max-width: none; width: 36%; height: 2px; opacity: .28; }
.inv-orn-none .inv-section-orn-ico { width: 7px; height: 7px; background: var(--ornament, var(--accent, #c9a97c)); opacity: .4; transform: rotate(45deg); border-radius: 1px; }

/* Matikan ikon emoji antar-section legacy (sudah diganti SVG di renderer). */
.inv-orn-floral-legacy .inv-section-orn-ico::before, .inv-orn-leaves-legacy .inv-section-orn-ico::before, .inv-orn-stars-legacy .inv-section-orn-ico::before { content: none !important; }

/* ===== Ornament: gallery photo frames ===== */
.inv-gallery-item { position: relative; }

/* Frame dasar dipakai untuk SEMUA ornamen (floral, botanical, geometric,
   jawa, korea, dll.) — warna mengikuti --ornament / accent halaman.
   Gaya khas tiap keluarga ornamen di bawah menimpanya. */
.inv-gallery-grid .inv-gallery-item { padding: 18px; background: linear-gradient(160deg, color-mix(in srgb, var(--ornament, var(--accent, #c9a97c)) 7%, #fffdf7), color-mix(in srgb, var(--ornament, var(--accent, #c9a97c)) 16%, #fffdf7)); border: 1px solid color-mix(in srgb, var(--ornament, var(--accent, #c9a97c)) 72%, transparent); outline: 1px solid color-mix(in srgb, var(--ornament, var(--accent, #c9a97c)) 32%, transparent); outline-offset: -12px; border-radius: 6px; box-shadow: 0 4px 14px color-mix(in srgb, var(--ornament, var(--accent, #c9a97c)) 18%, transparent); }
.inv-gallery-grid .inv-gallery-item img { border-radius: 3px; }

/* No ornament: plain rectangular line frame */
.inv-orn-none .inv-gallery-item { padding: 7px; background: #fff; border: 1.5px solid rgba(123,45,59,.4); outline: 1px solid rgba(123,45,59,.22); outline-offset: -6px; border-radius: 3px; box-shadow: 0 2px 12px rgba(0,0,0,.10); }
.inv-orn-none .inv-gallery-item img { border-radius: 2px; }

.inv-orn-floral .inv-gallery-item { padding: 16px; background: linear-gradient(160deg, #fffdf6, #f8efe2); border: 1px solid color-mix(in srgb, var(--ornament, #c9a97c) 85%, transparent); outline: 1px dashed color-mix(in srgb, var(--ornament, #c9a97c) 55%, transparent); outline-offset: -11px; border-radius: 26px 8px 26px 8px; box-shadow: 0 6px 18px color-mix(in srgb, var(--ornament, #b08968) 22%, transparent); }
.inv-orn-floral .inv-gallery-item img { border-radius: 18px 5px 18px 5px; }
/* Tanpa emoji pada bingkai galeri (sistem baru). */

/* Bingkai galeri mengikuti ornamen baru: floral / botanical / geometric. */
.inv-orn-botanical .inv-gallery-item, .inv-orn-leaves .inv-gallery-item { padding: 16px; background: #fbfdf6; border: 1px solid rgba(58,107,79,.35); outline: 1px dashed rgba(58,107,79,.3); outline-offset: -11px; border-radius: 2px 30px 2px 30px; box-shadow: 0 6px 16px rgba(58,107,79,.15); }
.inv-orn-botanical .inv-gallery-item img, .inv-orn-leaves .inv-gallery-item img { border-radius: 2px 20px 2px 20px; }
.inv-orn-geometric .inv-gallery-item, .inv-orn-stars .inv-gallery-item { padding: 16px; background: #fffafc; border: 1px solid rgba(91,75,138,.35); outline: 1px dashed rgba(91,75,138,.3); outline-offset: -11px; border-radius: 10px 28px 10px 28px; box-shadow: 0 6px 18px rgba(91,75,138,.14); }
.inv-orn-geometric .inv-gallery-item img, .inv-orn-stars .inv-gallery-item img { border-radius: 8px 20px 8px 20px; }
/* Matikan hiasan emoji pada bingkai galeri legacy. */
.inv-orn-floral-legacy .inv-gallery-item::before, .inv-orn-floral-legacy .inv-gallery-item::after,
.inv-orn-leaves-legacy .inv-gallery-item::before, .inv-orn-leaves-legacy .inv-gallery-item::after,
.inv-orn-stars-legacy .inv-gallery-item::before, .inv-orn-stars-legacy .inv-gallery-item::after { content: none !important; }

/* "Tanpa bingkai" dipilih di edit galeri: foto tampil polos (diutamakan
   di atas semua gaya bingkai, termasuk polaroid & family ornamen). */
.inv-gallery-plain.inv-gallery-grid .inv-gallery-item { padding: 0; background: none; border: 0; outline: 0; outline-offset: 0; border-radius: 6px; box-shadow: none; }
.inv-gallery-plain.inv-gallery-grid .inv-gallery-item img { border-radius: 0; }

/* ===== Ornament: corner accents per gallery photo ===== */
.inv-gallery-corner { position: absolute; width: 40px; height: 40px; line-height: 0; pointer-events: none; z-index: 2; color: var(--ornament, var(--accent, #c9a97c)); opacity: .95; }
.inv-gallery-corner svg { width: 100%; height: 100%; display: block; overflow: visible; }
.inv-gallery-corner .oc-stroke path { fill: none; stroke: currentColor; stroke-width: 4.2; stroke-linecap: round; }
.inv-gallery-corner .oc-fill { fill: currentColor; }
.inv-gallery-corner .oc-core { fill: var(--background, #fff); opacity: .85; }
.inv-gallery-corner .oc-core2 { fill: var(--background, #fff); opacity: .5; }
.inv-gallery-corner.is-tl { top: 0; left: 0; }
.inv-gallery-corner.is-tr { top: 0; right: 0; transform: scaleX(-1); }
.inv-gallery-corner.is-br { bottom: 0; right: 0; transform: scale(-1); }
.inv-gallery-corner.is-bl { bottom: 0; left: 0; transform: scaleY(-1); }
@media (max-width: 575px) {
    .inv-gallery-corner { width: 32px; height: 32px; }
}

/* ===== Theme-specific submenu shapes ===== */
.inv-subnav-crown { border: 1.5px solid var(--accent, #c8a96b); background: linear-gradient(180deg, #fffdf6, #f7efdd); }
.inv-subnav-crown .inv-subnav-link { font-family: var(--heading-font, 'Playfair Display', serif); }
.inv-subnav-crown .inv-subnav-map { border-radius: 10px; transform: rotate(45deg); }
.inv-subnav-crown .inv-subnav-map i { transform: rotate(-45deg); }

.inv-subnav-classic { border-radius: 18px; background: rgba(253,251,247,.97); box-shadow: 0 8px 24px rgba(0,0,0,.14); }
.inv-subnav-classic .inv-subnav-link { background: #fff; border: 1px solid rgba(176,137,104,.35); border-radius: 14px; color: var(--secondary, #6b4f3a); }
.inv-subnav-classic .inv-subnav-link i { color: var(--secondary, #6b4f3a); }
.inv-subnav-classic .inv-subnav-map { border-radius: 14px; }

.inv-subnav-soft { border-radius: 34px 12px 34px 12px; background: rgba(255,255,255,.92); }
.inv-subnav-soft .inv-subnav-link { background: rgba(242,184,198,.22); border-radius: 50% 45% 50% 45% / 45% 50% 45% 50%; }
.inv-subnav-soft .inv-subnav-map { border-radius: 45% 55% 50% 50% / 55% 45% 50% 50%; }

.inv-subnav-squared { border-radius: 12px; background: rgba(255,255,255,.98); }
.inv-subnav-squared .inv-subnav-link { border-radius: 8px; }
.inv-subnav-squared .inv-subnav-link i { color: var(--text, #333); }
.inv-subnav-squared .inv-subnav-map { border-radius: 10px; }

.inv-subnav-playful { border-radius: 28px; background: rgba(255,255,255,.94); }
.inv-subnav-playful .inv-subnav-link { border-radius: 46% 54% 48% 52% / 54% 46% 52% 48%; background: rgba(255,126,179,.14); }
.inv-subnav-playful .inv-subnav-link:hover { background: rgba(255,126,179,.28); }
.inv-subnav-playful .inv-subnav-map { border-radius: 42% 58% 46% 54% / 58% 42% 54% 46%; }

.inv-subnav-sharp { border-radius: 6px; background: rgba(255,255,255,.97); box-shadow: 0 6px 20px rgba(0,0,0,.16); }
.inv-subnav-sharp .inv-subnav-link { border-radius: 0; }
.inv-subnav-sharp .inv-subnav-map { border-radius: 0; }
/* Bank / gift section */
.inv-bank-logo { width: 52px; height: 52px; flex: 0 0 52px; object-fit: contain; border-radius: 12px; background: #fff; border: 1px solid rgba(0,0,0,.08); box-shadow: 0 1px 4px rgba(0,0,0,.08); padding: 6px; }
.inv-bank-logo-fallback { display: inline-flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: var(--primary, #b08968); }
.inv-bank-number { letter-spacing: .04em; }
.inv-gift-card .inv-copy { flex: 0 0 auto; }

/* ===== Customizer edit mode (only when ?edit=1) ===== */
body.inv-edit-mode [data-inv-section-type] { outline: 1px dashed rgba(123,45,59,.35); outline-offset: -1px; }
body.inv-edit-mode [data-inv-section-type]:hover { outline-color: #7b2d3b; outline-width: 2px; }
.inv-edit-overlay { position: absolute; top: 8px; right: 8px; z-index: 50; display: none; }
body.inv-edit-mode [data-inv-section-type]:hover > .inv-edit-overlay,
body.inv-edit-mode .inv-edit-overlay:hover { display: block; }
.inv-edit-btn { display: inline-flex; align-items: center; gap: .35rem; border: 0; border-radius: 999px; padding: .3rem .7rem; font-size: .72rem; font-weight: 600; color: #fff; background: #7b2d3b; box-shadow: 0 3px 10px rgba(35,20,28,.35); cursor: pointer; }
.inv-edit-btn:hover { background: #5f212c; }
.inv-edit-btn i { font-size: .7rem; }

/* ===== Music player ===== */
.inv-music-player { position: fixed; right: 16px; bottom: 84px; z-index: 1200; filter: drop-shadow(0 4px 10px rgba(0,0,0,.25)); }
.inv-music-toggle { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; border: 0; cursor: pointer; background: var(--text, #2c2c2c); color: var(--background, #ffffff); font-size: 18px; line-height: 1; }
.inv-music-toggle .inv-music-ico-pause { display: none; }
.inv-music-player.is-playing .inv-music-toggle .inv-music-ico { display: none; }
.inv-music-player.is-playing .inv-music-toggle .inv-music-ico-pause { display: inline-block; }
.inv-music-player.is-playing .inv-music-toggle { animation: inv-music-pulse 1.6s ease-in-out infinite; }
@keyframes inv-music-pulse {
    0% { box-shadow: 0 0 0 0 rgba(0,0,0,.3); }
    70% { box-shadow: 0 0 0 14px rgba(0,0,0,0); }
    100% { box-shadow: 0 0 0 0 rgba(0,0,0,0); }
}

/* ===== Animasi masuk undangan (AOS + efek mengetik cover) ===== */
/* Kursor "mengetik" pada nama di halaman depan */
.inv-typing::after {
    content: '|';
    margin-left: 2px;
    color: var(--ornament, var(--accent, #c9a97c));
    animation: inv-caret-blink .8s steps(1) infinite;
}
@keyframes inv-caret-blink { 50% { opacity: 0; } }

/* Fallback fade-up bila CDN AOS gagal dimuat: elemen tetap tampil normal */
html.no-aos [data-aos] { opacity: 1 !important; transform: none !important; }

/* Semua tulisan ikut warna teks global & per-section */
.inv-section-custom .small, .inv-section-custom .text-muted { color: var(--section-text, var(--text, #333)); }
.inv-section-custom .inv-subnav-link { color: var(--section-text, var(--text, #333)); }

/* ===== Semua teks bisa diubah warnanya (global --text / --section-text) ===== */
.inv-page .text-muted { color: var(--text, #333) !important; opacity: .75; }
.inv-page .text-secondary { color: var(--text, #333) !important; opacity: .8; }
.inv-page .text-body, .inv-page .text-body-secondary { color: var(--text, #333) !important; }
.inv-page .form-text, .inv-page .form-label, .inv-page .form-check-label { color: var(--text, #333) !important; }
.inv-page .form-control, .inv-page .form-select { color: var(--text, #333) !important; }
.inv-page .inv-quote-text, .inv-page .inv-quote-author { color: var(--text, #333); }
.inv-page .inv-count-label, .inv-page .inv-count-num { color: var(--text, #333); }
.inv-page .inv-event-card, .inv-page .inv-couple-card, .inv-page .inv-story-item,
.inv-page .inv-timeline-item, .inv-page .inv-agenda-item { color: var(--text, #333); }
.inv-page .inv-gift-msg { color: var(--text, #333); }
.inv-page .inv-guestbook-list, .inv-page .inv-rsvp-result { color: var(--text, #333); }
/* Dentro section custom, teks-muted ikut warna teks section, bukan abu-abu Bootstrap */
.inv-section-custom .text-secondary { color: var(--section-text, var(--text, #333)) !important; opacity: .8; }
.inv-section-custom .form-text, .inv-section-custom .form-label, .inv-section-custom .form-check-label { color: var(--section-text, var(--text, #333)) !important; }
.inv-section-custom .inv-quote-text, .inv-section-custom .inv-quote-author { color: var(--section-text, var(--text, #333)); }
.inv-section-custom .inv-count-label, .inv-section-custom .inv-count-num { color: var(--section-text, var(--text, #333)); }
.inv-section-custom .inv-event-card, .inv-section-custom .inv-couple-card,
.inv-section-custom .inv-story-item, .inv-section-custom .inv-timeline-item,
.inv-section-custom .inv-agenda-item { color: var(--section-text, var(--text, #333)); }
