/* ==========================================================
   Golden Seal — invitation styles (mobile first; on desktop the
   invitation sits in a phone-width column over the palace at night)
   ========================================================== */

.invite {
  --col: min(100vw, 480px);
  --night: #12142c;
  --night-2: #1d1631;
  --gold: #d8b97f;
  --gold-2: #b8914f;
  --cream: #f7eedc;
  --ink: #3a2a1f;
  --script: 'Pinyon Script', cursive;
  background: #0c0b18;
  color: var(--cream);
}
.invite[dir='rtl'], [dir='rtl'] .invite { --serif: 'VS Numbers', 'Amiri', 'Cormorant Garamond', serif; }
html[dir='rtl'] .invite { font-family: 'VS Numbers', 'Amiri', var(--sans); }
html[dir='rtl'] .inv-name, html[dir='rtl'] .inv-finale-names { font-family: 'VS Numbers', 'Amiri', serif; font-style: italic; }
html[dir='rtl'] .inv-tassel { left: auto; right: 18px; }
.invite.is-locked { overflow: hidden; }

/* ---------- Desktop backdrop ---------- */

.inv-backdrop { position: fixed; inset: 0; z-index: 0; overflow: hidden; }
.inv-backdrop video { position: absolute; inset: -6%; width: 112%; height: 112%; max-width: none; object-fit: cover; filter: blur(26px) brightness(0.42) saturate(1.2); }
.inv-backdrop-side { position: absolute; top: 50%; margin: 0; font: italic 300 clamp(1.4rem, 2.2vw, 2.2rem) var(--serif); letter-spacing: 0.2em; color: rgba(216, 185, 127, 0.55); white-space: nowrap; }
.inv-backdrop-side--l { left: calc(50% - var(--col) / 2 - 60px); transform: translate(-100%, -50%) rotate(-90deg); transform-origin: right center; }
.inv-backdrop-side--r { right: calc(50% - var(--col) / 2 - 60px); transform: translate(100%, -50%) rotate(90deg); transform-origin: left center; }
@media (max-width: 900px) { .inv-backdrop-side { display: none; } }

.inv { position: relative; z-index: 1; width: var(--col); margin: 0 auto; background: var(--night); box-shadow: 0 0 120px rgba(0, 0, 0, 0.6); overflow: clip; }

/* Anything "fixed" sits over the column, not the whole window */
.inv-loader, .inv-stage { position: fixed; top: 0; bottom: 0; left: 50%; width: var(--col); transform: translateX(-50%); }

/* ---------- Loader ---------- */

.inv-loader { z-index: 40; display: grid; place-content: center; justify-items: center; gap: 22px; background: radial-gradient(ellipse at 50% 40%, #2a2140, var(--night) 70%); text-align: center; padding: 30px; }
.inv-loader-mono { margin: 0; font: 400 4.2rem/1 var(--script); color: var(--gold); text-shadow: 0 0 30px rgba(216, 185, 127, 0.4); }
.inv-loader-line { width: 160px; height: 1px; background: rgba(216, 185, 127, 0.25); overflow: hidden; }
.inv-loader-line span { display: block; height: 100%; background: var(--gold); transform: scaleX(0); transform-origin: left; }
.inv-loader-text { margin: 0; font: italic 300 1.15rem var(--serif); color: rgba(247, 238, 220, 0.8); }

/* ---------- Envelope stage ---------- */

.inv-stage { z-index: 30; background: #efe3cc; overflow: hidden; }
.inv-stage video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.inv-envelope-text { position: absolute; top: 5%; left: 50%; transform: translateX(-50%); width: 88%; text-align: center; color: #5b4121; padding: 18px 20px; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(247, 238, 222, 0.92) 30%, rgba(247, 238, 222, 0) 72%); }
.inv-dear { margin: 0 0 4px; font: italic 400 1.35rem var(--serif); }
.inv-dear strong { font-weight: 500; }
.inv-invited { margin: 0; font-size: 0.9rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; }
.inv-seal { position: absolute; left: 50%; top: 47.6%; width: 32%; aspect-ratio: 1; transform: translate(-50%, -50%); border-radius: 50%; border: 0; background: transparent; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.inv-seal:focus-visible { outline: 2px solid var(--gold); outline-offset: 6px; }
.inv-seal-ring { position: absolute; inset: 0; border-radius: 50%; border: 1.5px solid rgba(255, 236, 190, 0.9); animation: ring 2.6s ease-out infinite; }
.inv-seal-ring:nth-child(2) { animation-delay: 0.85s; }
.inv-seal-ring:nth-child(3) { animation-delay: 1.7s; }
@keyframes ring { from { transform: scale(0.9); opacity: 0.9; } to { transform: scale(1.9); opacity: 0; } }
.inv-tap { position: absolute; left: 0; right: 0; bottom: 11%; text-align: center; color: #4a3417; }
.inv-tap-label { margin: 0 0 12px; font: italic 400 1.5rem var(--serif); }
.inv-sound { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 0.86rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.92; }
.inv-sound svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.inv-sparks { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }

/* ---------- Scroll journey ---------- */

.inv-seq { position: relative; height: 620svh; }
.inv-seq-sticky { position: sticky; top: 0; height: 100svh; overflow: hidden; background: #efe3cc; }
#seq-canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.inv-seq-fade { position: absolute; left: 0; right: 0; bottom: 0; height: 26%; background: linear-gradient(transparent, var(--night)); opacity: 0; pointer-events: none; }

.inv-names { position: absolute; left: 12%; right: 12%; top: 22%; bottom: 20%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: #5b4121; visibility: hidden; }
.inv-families { margin: 0 0 12px; font-size: 0.92rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: #5a3f1e; }
.inv-name { margin: 0; font: 400 clamp(3.4rem, 17vw, 4.8rem)/1.05 var(--script); color: #9a6f33; text-shadow: 0 1px 0 rgba(255, 244, 214, 0.9), 0 0 24px rgba(214, 172, 98, 0.45); padding: 0 10px 6px; }
.inv-amp { width: 54px; margin: -6px 0 -2px; filter: drop-shadow(0 4px 10px rgba(138, 98, 48, 0.35)); }
.inv-weds { margin: 16px 0 12px; max-width: 270px; font: italic 500 1.2rem/1.45 var(--serif); color: #4a3417; }
.inv-date { margin: 0; font: 600 1.4rem var(--serif); letter-spacing: 0.2em; color: #6b4a1f; }
.inv-city { display: inline-block; margin: 12px 0 0; padding: 8px 18px; border-radius: 18px; background: rgba(255, 250, 238, 0.88); border: 1px solid rgba(160, 120, 60, 0.45); box-shadow: 0 10px 24px -12px rgba(90, 64, 30, 0.45); font-size: 0.92rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: #4a3417; }
.inv-names { isolation: isolate; }
.inv-names::before { content: ''; position: absolute; inset: -6% -14%; z-index: -1; pointer-events: none; background: radial-gradient(ellipse at 50% 50%, rgba(253, 246, 232, 0.9), rgba(253, 246, 232, 0.55) 55%, rgba(253, 246, 232, 0) 75%); }

.inv-scrollcue { position: absolute; left: 0; right: 0; bottom: 5%; display: flex; flex-direction: column; align-items: center; gap: 10px; font-size: 0.66rem; letter-spacing: 0.34em; text-transform: uppercase; color: #6b4f2a; opacity: 0; }
.inv-mouse { width: 22px; height: 36px; border: 1px solid currentColor; border-radius: 12px; position: relative; }
.inv-mouse::after { content: ''; position: absolute; left: 50%; top: 8px; width: 2px; height: 7px; margin-left: -1px; border-radius: 2px; background: currentColor; animation: wheel 1.8s ease-in-out infinite; }
@keyframes wheel { 0% { transform: translateY(0); opacity: 1; } 70% { transform: translateY(12px); opacity: 0; } 100% { opacity: 0; } }

.inv-captions { position: absolute; left: 0; right: 0; bottom: 0; height: 40%; background: linear-gradient(transparent, rgba(10, 8, 22, 0.55)); pointer-events: none; }
.inv-cap { position: absolute; left: 8%; right: 8%; bottom: 13%; margin: 0; text-align: center; font: italic 300 clamp(1.7rem, 8vw, 2.3rem)/1.25 var(--serif); color: #fff; text-shadow: 0 2px 20px rgba(0, 0, 0, 0.6); opacity: 0; }
.inv-cap small { display: block; margin-top: 14px; font: normal 400 0.68rem var(--sans); letter-spacing: 0.34em; text-transform: uppercase; color: var(--gold); }

/* ---------- Sections ---------- */

.inv-sec { position: relative; padding: 100px 28px; text-align: center; overflow: hidden; }
.inv-light { background: var(--cream) url('../../media/paper.webp') center / cover; color: var(--ink); }
.inv-light, .inv-rsvp-card { --gold-2: #7f5e26; }
.inv-eyebrow { display: inline-flex; align-items: center; gap: 12px; margin: 0 0 16px; font-size: 0.66rem; letter-spacing: 0.36em; text-transform: uppercase; color: var(--gold); }
.inv-light .inv-eyebrow { color: var(--gold-2); }
.inv-eyebrow::before, .inv-eyebrow::after { content: ''; width: 22px; height: 1px; background: currentColor; opacity: 0.6; }
.inv-h2 { font: 300 clamp(2.2rem, 10vw, 2.9rem)/1.1 var(--serif); margin: 0 0 30px; }
.inv-h2--sm { font-size: 2rem; margin-top: 60px; }
.inv-p { margin: 0 auto 26px; max-width: 360px; line-height: 1.7; opacity: 0.85; }

.inv-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.inv-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 15px 26px; border-radius: 999px; border: 1px solid var(--gold); background: var(--gold); color: var(--night); font: 500 0.86rem/1.1 var(--sans); letter-spacing: 0.1em; white-space: nowrap; text-transform: uppercase; cursor: pointer; transition: transform 0.4s, background 0.4s, color 0.4s; }
.inv-btn:hover { transform: translateY(-2px); }
.inv-btn--ghost { background: transparent; color: var(--gold); }
.inv-light .inv-btn--ghost { color: var(--gold-2); border-color: var(--gold-2); }
.inv-btn--sm { padding: 10px 18px; }
.inv-btn--full { width: 100%; }
.inv-btn.is-busy .arrow { animation: spin 0.9s linear infinite; }

/* Countdown */
.inv-count { background: var(--night); padding-top: 60px; }
.inv-count-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0.4; }
.inv-count::before { content: ''; position: absolute; inset: 0; background: linear-gradient(var(--night) 0%, rgba(18, 20, 44, 0.4) 30%, rgba(18, 20, 44, 0.75) 100%); }
.inv-count > *:not(video) { position: relative; }
.inv-mandala { position: absolute !important; width: 130%; max-width: none; left: -15%; top: 18%; opacity: 0.1; pointer-events: none; }
/* Scratch the gold leaf to reveal the date */
.inv-scratch { position: relative; width: min(250px, 70vw); aspect-ratio: 1; margin: 6px auto 46px; border-radius: 50%; touch-action: none; }
.inv-scratch::before { content: ''; position: absolute; inset: -10px; border-radius: 50%; border: 1px solid rgba(216, 185, 127, 0.55); box-shadow: 0 0 0 5px rgba(216, 185, 127, 0.12), 0 0 60px rgba(216, 185, 127, 0.25); }
.inv-scratch-content { position: absolute; inset: 0; display: grid; place-content: center; gap: 6px; border-radius: 50%; background: radial-gradient(circle at 50% 35%, #2a1f3d, #120c1c 75%); text-align: center; }
.inv-scratch-day { margin: 0; font: 400 0.62rem var(--sans); letter-spacing: 0.36em; text-transform: uppercase; color: var(--gold); }
.inv-scratch-date { margin: 0; font: 300 2.5rem/1 var(--serif); color: #f6deae; text-shadow: 0 0 24px rgba(216, 185, 127, 0.5); }
.inv-scratch-city { margin: 0; font: italic 400 1.05rem var(--serif); color: var(--cream); }
.inv-scratch canvas { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 50%; cursor: grab; }
.inv-scratch-hint { position: absolute; left: 0; right: 0; bottom: -40px; margin: 0; font-size: 0.6rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--gold); transition: opacity 0.6s; }
.inv-scratch.is-done .inv-scratch-hint { opacity: 0; }
.inv-flake { position: absolute; top: 50%; left: 50%; width: 9px; height: 6px; border-radius: 2px; background: linear-gradient(135deg, #fff1c4, #c99a4c); pointer-events: none; z-index: 3; }
.inv-eyebrow--count { display: flex; justify-content: center; margin-top: 4px; }
.inv-clock { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 0 0 28px; }
.inv-clock div { padding: 18px 4px 14px; border: 1px solid rgba(216, 185, 127, 0.35); border-radius: 14px; background: rgba(18, 20, 44, 0.45); backdrop-filter: blur(6px); }
.inv-clock strong { display: block; font: 300 2.4rem/1 var(--serif); color: var(--gold); overflow: hidden; }
.inv-clock div > span { display: block; margin-top: 8px; font-size: 0.56rem; letter-spacing: 0.26em; text-transform: uppercase; opacity: 0.75; }
.inv-when { margin: 0 0 28px; font: italic 1.1rem var(--serif); opacity: 0.85; }

/* Story */
.inv-story { padding-bottom: 60px; }
.inv-corner { position: absolute; width: 150px; pointer-events: none; opacity: 0.9; }
.inv-corner--tl { top: -20px; left: -30px; transform: rotate(-20deg); }
.inv-corner--tr { top: -10px; right: -40px; transform: rotate(10deg); width: 130px; }
.inv-timeline { position: relative; margin-top: 20px; }
.inv-thread { position: absolute; left: 50%; top: 0; width: 40px; height: 100%; transform: translateX(-50%); overflow: visible; }
.inv-thread path { fill: none; stroke: var(--gold-2); stroke-width: 1.4; vector-effect: non-scaling-stroke; opacity: 0.6; }
.inv-chapter { position: relative; padding: 26px 22px 30px; margin: 0 0 40px; border-radius: 20px; background: rgba(255, 255, 255, 0.72); backdrop-filter: blur(4px); box-shadow: 0 20px 40px -26px rgba(58, 42, 31, 0.5); }
.inv-chapter-art { width: 86px; height: 86px; object-fit: contain; margin: -64px auto 12px; filter: drop-shadow(0 10px 14px rgba(58, 42, 31, 0.3)); }
.inv-chapter-when { margin: 0 0 6px; font-size: 0.62rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--gold-2); }
.inv-chapter h3 { font: 400 1.7rem var(--serif); margin: 0 0 8px; }
.inv-chapter p:last-child { margin: 0; color: #6d5b4c; line-height: 1.65; }

/* Events */
.inv-events { background: radial-gradient(ellipse at 50% 0%, #3a2950 0%, var(--night-2) 55%, var(--night) 100%); padding-top: 170px; }
.inv-chandelier { position: absolute; top: -30px; left: 50%; width: 260px; transform: translateX(-50%); transform-origin: top center; filter: drop-shadow(0 0 30px rgba(255, 220, 150, 0.4)); }
.inv-crystal { position: absolute; top: 0; width: 44px; transform-origin: top center; opacity: 0.9; }
.inv-crystal--l { left: 8%; }
.inv-crystal--r { right: 8%; top: -30px; }
.inv-event-list { display: grid; gap: 30px; }
.inv-event { position: relative; width: min(330px, 100%); margin: 0 auto; aspect-ratio: 330 / 470; }
.inv-event-arch { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; filter: drop-shadow(0 16px 30px rgba(0, 0, 0, 0.45)); }
.inv-event-body { position: absolute; left: 21%; right: 21%; top: 29%; bottom: 7%; display: flex; flex-direction: column; justify-content: center; background: radial-gradient(ellipse at 50% 40%, rgba(58, 41, 80, 0.85), rgba(29, 22, 49, 0.95)); border-radius: 60px 60px 4px 4px; padding: 16px 8px; }
.inv-event-time { margin: 0 0 6px; font: 400 1.5rem var(--serif); color: var(--gold); }
.inv-event h3 { margin: 0 0 6px; font: 400 1.35rem/1.15 var(--serif); }
.inv-event-place { margin: 0 0 10px; font-size: 0.56rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold); }
.inv-event-text { margin: 0; font-size: 0.82rem; line-height: 1.5; opacity: 0.8; }

/* Venue */
.inv-venue { background: var(--night); }
.inv-venue-photo { margin: 0 -8px 20px; border-radius: 200px 200px 20px 20px; overflow: hidden; aspect-ratio: 4 / 5; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, 0.7); }
.inv-venue-photo img { width: 100%; height: 118%; object-fit: cover; }
.inv-address { margin: 0 0 20px; opacity: 0.8; }
.inv-map { height: 230px; margin: 0 0 20px; border-radius: 18px; overflow: hidden; border: 1px solid rgba(216, 185, 127, 0.3); background: #1d1b33; }
.inv-map iframe { width: 100%; height: 100%; border: 0; filter: grayscale(0.3) sepia(0.2); }
.lenis.lenis-smooth .inv-map iframe { pointer-events: auto; }
.inv-info { display: grid; gap: 14px; margin-top: 34px; text-align: left; }
html[dir='rtl'] .inv-info { text-align: right; }
.inv-info div { padding: 20px; border-radius: 16px; border: 1px solid rgba(216, 185, 127, 0.25); background: rgba(255, 255, 255, 0.03); }
.inv-info h3 { margin: 0 0 6px; font: 400 1.35rem var(--serif); color: var(--gold); }
.inv-info p { margin: 0; font-size: 0.9rem; opacity: 0.8; }

/* Dress code */
.inv-tassel { position: absolute; top: -10px; left: 18px; width: 40px; transform-origin: top center; }
.inv-swatches { display: flex; justify-content: center; gap: 14px; margin: 0 0 26px; }
.inv-swatches span { width: 58px; height: 58px; border-radius: 50%; background: var(--c); border: 4px solid #fff; box-shadow: 0 10px 20px -8px rgba(58, 42, 31, 0.5); }

/* Moments */
.inv-moments { padding-bottom: 130px; }
.inv-polaroids { position: relative; height: 330px; }
.inv-polaroid { position: absolute; left: 50%; top: 10px; width: 190px; margin: 0 0 0 -95px; aspect-ratio: 700 / 760; filter: drop-shadow(0 18px 20px rgba(58, 42, 31, 0.3)); }
.inv-polaroid-photo { position: absolute; left: 11%; top: 9%; width: 78%; height: 66%; object-fit: cover; }
.inv-polaroid-frame { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; mix-blend-mode: multiply; }

/* Menu */
.inv-menu { padding-top: 40px; }
.inv-menu-card { position: relative; max-width: 380px; margin: 0 auto; padding: 36% 19% 30%; }
.inv-menu-frame { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; pointer-events: none; opacity: 0.95; }
.inv-course { margin: 0 0 22px; }
.inv-course h3 { margin: 0 0 4px; font: italic 400 1.4rem var(--serif); color: var(--gold-2); }
.inv-course p { margin: 0; font-size: 0.9rem; color: #6d5b4c; }
.inv-menu-note { margin: 20px 0 0; font-size: 0.95rem; color: #6b5a48; }

/* RSVP */
.inv-rsvp { background: radial-gradient(ellipse at 50% 30%, #2d2342, var(--night) 75%); }
.inv-rsvp-card { position: relative; padding: 70px 22px 30px; border-radius: 26px; background: var(--cream); color: var(--ink); box-shadow: 0 40px 80px -30px rgba(0, 0, 0, 0.7); text-align: left; }
html[dir='rtl'] .inv-rsvp-card { text-align: right; }
.inv-rsvp-card > .inv-eyebrow, .inv-rsvp-card > .inv-h2, .inv-rsvp-card > .inv-p { text-align: center; display: flex; justify-content: center; }
.inv-rsvp-card > .inv-p { display: block; }
.inv-rsvp-seal { position: absolute; top: -48px; left: 50%; width: 100px; margin-left: -50px; filter: drop-shadow(0 12px 18px rgba(58, 42, 31, 0.4)); }
.inv-form { gap: 14px; }
.inv-form .field > span { color: #7a5a24; font-weight: 600; }
.inv-attend, .inv-events-pick { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; }
.inv-attend legend, .inv-events-pick legend { margin-bottom: 8px; font-size: 0.7rem; letter-spacing: 0.22em; text-transform: uppercase; color: #7a5a24; font-weight: 600; }
.inv-attend { grid-template-columns: 1fr 1fr; }
.inv-attend label:nth-of-type(3) { grid-column: 1 / -1; }
.inv-attend label:nth-of-type(3) > span { min-height: 48px; }
.inv-attend label, .inv-events-pick label { position: relative; cursor: pointer; }
.inv-attend input, .inv-events-pick input { position: absolute; opacity: 0; }
.inv-attend label > span { display: grid; place-items: center; min-height: 58px; padding: 10px; border: 1px solid rgba(184, 145, 79, 0.4); border-radius: 14px; background: #fff; font: italic 400 1.1rem/1.2 var(--serif); text-align: center; transition: all 0.35s; }
.inv-attend label > input:checked + span { background: var(--night-2); border-color: var(--night-2); color: var(--gold); }
.inv-attend input:focus-visible + span, .inv-events-pick input:focus-visible + span { outline: 2px solid var(--gold-2); outline-offset: 2px; }
.inv-events-pick { grid-template-columns: 1fr 1fr; }
.inv-events-pick label > span { display: block; padding: 10px 12px; border: 1px solid rgba(184, 145, 79, 0.4); border-radius: 999px; background: #fff; font-size: 0.82rem; text-align: center; transition: all 0.3s; }
.inv-events-pick label > input:checked + span { background: #f3e2bf; border-color: var(--gold-2); }
.inv-if-yes { display: grid; gap: 14px; }
.inv-thanks { text-align: center; padding: 20px 0 10px; }
.inv-thanks h3 { font: 400 3rem/1 var(--script); color: var(--gold-2); margin: 0 0 10px; }
.inv-thanks p { margin: 0; color: #6d5b4c; }

/* Gifts & FAQ */
.inv-bank { margin: 0 auto; max-width: 360px; }
.inv-bank summary { cursor: pointer; list-style: none; display: inline-block; padding: 12px 20px; border: 1px solid var(--gold-2); border-radius: 999px; font-size: 0.72rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold-2); }
.inv-bank summary::-webkit-details-marker { display: none; }
.inv-bank pre { margin: 18px 0 12px; padding: 18px; border-radius: 14px; background: rgba(255, 255, 255, 0.8); font: 0.88rem/1.7 var(--sans); white-space: pre-wrap; text-align: left; }
.inv-faq { text-align: left; }
html[dir='rtl'] .inv-faq { text-align: right; }
.inv-faq details { border-bottom: 1px solid rgba(184, 145, 79, 0.3); }
.inv-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 14px; padding: 18px 0; font: 400 1.25rem/1.3 var(--serif); }
.inv-faq summary::-webkit-details-marker { display: none; }
.inv-faq summary::after { content: '+'; color: var(--gold-2); font-size: 1.4rem; line-height: 1; transition: transform 0.4s; }
.inv-faq details[open] summary::after { transform: rotate(45deg); }
.inv-faq p { margin: -4px 0 18px; font-size: 0.92rem; color: #6d5b4c; }

/* Finale */
.inv-finale { min-height: 100svh; display: flex; flex-direction: column; align-items: center; justify-content: center; background: radial-gradient(ellipse at 50% 100%, #2c2045, #0e0d1e 70%); padding-bottom: 140px; }
.inv-fireworks { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.inv-finale > *:not(canvas) { position: relative; }
.inv-finale-names { margin: 0 0 14px; display: flex; align-items: center; justify-content: center; gap: 10px; font: 400 clamp(3rem, 15vw, 4.2rem)/1.1 var(--script); color: var(--gold); text-shadow: 0 0 30px rgba(216, 185, 127, 0.35); }
.inv-finale-names img { width: 44px; }
.inv-finale .inv-date { color: var(--gold); }
.inv-share { margin-top: 50px; }
.inv-share > p { margin: 0 0 14px; font-size: 0.66rem; letter-spacing: 0.3em; text-transform: uppercase; opacity: 0.75; }
.inv-qr { width: 132px; height: 132px; margin: 28px auto 10px; padding: 10px; border-radius: 14px; background: var(--cream); }
.inv-qr img, .inv-qr canvas { width: 100%; height: 100%; image-rendering: pixelated; }
.inv-share small { font-size: 0.78rem; opacity: 0.6; }
.inv-credit { display: inline-flex; align-items: center; gap: 10px; margin-top: 50px; font-size: 0.72rem; letter-spacing: 0.14em; opacity: 0.7; transition: opacity 0.3s; }
.inv-credit:hover { opacity: 1; }
.inv-credit img { width: 26px; }

/* ---------- Floating controls ---------- */

.inv-ui { position: fixed; top: 0; bottom: 0; left: 50%; width: var(--col); transform: translateX(-50%); z-index: 20; pointer-events: none; opacity: 0; visibility: hidden; }
.inv-ui > * { pointer-events: auto; }
.inv-lang, .inv-music { position: absolute; width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(216, 185, 127, 0.55); background: rgba(18, 20, 44, 0.55); backdrop-filter: blur(10px); color: var(--gold); }
.inv-lang { top: 16px; right: 16px; font: 500 0.85rem var(--sans); }
.inv-music { top: 16px; left: 16px; display: flex; align-items: flex-end; justify-content: center; gap: 3px; padding-bottom: 14px; }
.inv-music i { width: 2px; height: 14px; background: currentColor; border-radius: 2px; transform-origin: bottom; animation: bars 1s ease-in-out infinite; }
.inv-music i:nth-child(2) { animation-delay: 0.2s; }
.inv-music i:nth-child(3) { animation-delay: 0.45s; }
.inv-music i:nth-child(4) { animation-delay: 0.1s; }
.inv-music[aria-pressed='false'] i { animation: none; transform: scaleY(0.25); }
@keyframes bars { 0%, 100% { transform: scaleY(0.3); } 50% { transform: scaleY(1); } }
.inv-dock { position: absolute; left: 50%; bottom: calc(14px + env(safe-area-inset-bottom)); transform: translate(-50%, 140%); display: flex; gap: 2px; padding: 5px; border-radius: 999px; background: rgba(18, 20, 44, 0.7); backdrop-filter: blur(14px); border: 1px solid rgba(216, 185, 127, 0.3); transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1); }
.inv-dock.is-visible { transform: translate(-50%, 0); }
.inv-dock a { padding: 10px 14px; border-radius: 999px; font-size: 0.64rem; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(247, 238, 220, 0.85); white-space: nowrap; }
.inv-dock a.is-rsvp { background: var(--gold); color: var(--night); }

/* RTL tweaks */
html[dir='rtl'] .inv-lang { right: auto; left: 16px; }
html[dir='rtl'] .inv-music { left: auto; right: 16px; }
html[dir='rtl'] .inv-eyebrow, html[dir='rtl'] .inv-dock a, html[dir='rtl'] .inv-families { letter-spacing: 0; }

@media (prefers-reduced-motion: reduce) {
  .inv-seal-ring, .inv-music i, .inv-mouse::after { animation: none; }
}

.inv-menu-card .inv-h2 { font-size: 2.1rem; margin-bottom: 20px; }
.inv-menu-card .inv-eyebrow { margin-bottom: 8px; }
.inv-dress .inv-h2 { padding: 0 20px; }
.inv-scrollcue { visibility: hidden; }

/* ---------- Music button, scroll cue (shared look with the engine) ---------- */
.inv-music { top: 14px; left: 14px; width: auto; height: 44px; display: flex; align-items: center; gap: 8px; padding: 0 14px 0 11px; border-radius: 999px; color: #fff; border-color: rgba(255, 255, 255, 0.5); }
.inv-music svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.inv-music circle { fill: currentColor; }
.inv-music .vx-music-slash { opacity: 0; stroke-width: 2.4; }
.inv-music[aria-pressed='false'] .vx-music-slash { opacity: 1; }
.inv-music[aria-pressed='true'] svg { animation: vx-note 1.6s ease-in-out infinite; }
.inv-music-label { font: 500 0.76rem/1 var(--sans); letter-spacing: 0.04em; }
.inv-cue { z-index: 2; }
.inv-ui.has-dock .inv-cue { bottom: calc(76px + env(safe-area-inset-bottom)); }

/* ---------- Program & gallery ---------- */
.invite { --vx-accent: #b8914f; --vx-accent-ink: #fff; --vx-line: rgba(184, 145, 79, 0.4); --vx-body: 'VS Numbers', 'Jost', sans-serif; --vx-display: 'VS Numbers', 'Cormorant Garamond', serif; }
.inv-program { --vx-card: #fffdf7; --vx-card-ink: #3a2a1f; --vx-program-time: #8a6a35; }
.inv-program .vx-program-title { color: #6b4f2a; font-size: 1.7rem; }
.inv-gallery { background: var(--night, #12142c); }
.inv-gallery-hint { margin: 0; font: italic 400 1.05rem var(--serif); color: var(--gold); }

/* ---------- Readability ---------- */
.inv-p, .inv-event-text, .inv-chapter p, .inv-info p, .inv-faq p, .inv-course p { font-size: 1.08rem; }
.inv-eyebrow { font-size: 0.74rem; }
.inv-clock span, .inv-event-place, .inv-chapter-when { font-size: 0.7rem; }
.inv-cap { text-shadow: 0 2px 20px rgba(0, 0, 0, 0.8), 0 0 4px rgba(0, 0, 0, 0.5); }
.inv-scrollcue { display: none !important; }

/* ---------- Readable for every guest: labels from 13.5px, text from 15px ---------- */
:root .field > span > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-attend > legend > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-bank > pre { font-size: 0.938rem; }
:root .inv-bank > summary > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-cap.inv-cap--final > small > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-credit > span { font-size: 0.844rem; }
:root .inv-dock > a > span { font-size: 0.844rem; }
:root .inv-event-place > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-events-pick > legend > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-eyebrow { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-eyebrow > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-eyebrow.inv-eyebrow--count > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-music-label { font-size: 0.938rem; }
:root .inv-scratch-day > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-scratch-hint > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-scrollcue > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-share > p > span { font-size: 0.844rem; letter-spacing: 0.14em; }
:root .inv-share > small > span { font-size: 0.938rem; }
/* ---------- end readable ---------- */
