/* ═══════════════════════════════════════════════════════════════════
   PARISIAN NIGHTS — wedding invitation (static)
   Ivory cream + midnight navy + champagne gold — a gold-lit Eiffel Tower
   against a starlit sky, seen from an opulent Haussmann apartment.
   Cinematic video-intro hero, scroll reveals, scratch-to-reveal date,
   heart card, live countdown. Tailwind utilities + theme from the CDN
   config in index.html; this file holds base, fonts, the video hero &
   signature components.
═══════════════════════════════════════════════════════════════════ */

:root {
  --font-serif: "Cormorant Garamond", Georgia, serif;
  --font-display: "Playfair Display", Georgia, serif;
  --font-cinzel: "Cinzel", Georgia, serif;
  --font-script: "Dancing Script", cursive;
  --font-sans: "Jost", system-ui, sans-serif;
  --ease-luxe: cubic-bezier(0.22, 1, 0.36, 1);

  --powder-50: #fbf8f1;
  --powder-100: #f7f1e4;
  --powder-200: #efe5d1;
  --powder-300: #e2d2ac;
  --blue-400: #8493b5;
  --blue-500: #465d86;
  --royal-600: #2a3c62;
  --royal-700: #20304f;
  --navy-900: #161d31;
  --gold-500: #a67c3c;
  --gold-400: #dcbb72;
  --gold-deep: #8a6529;   /* readable gilt for headings on cream */
  --cream: #f4e7c4;
  --hero-cream: #f6ead6;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; -webkit-tap-highlight-color: transparent; }

body {
  margin: 0; min-height: 100vh;
  background-color: #f7f1e4;
  color: #161d31;
  font-family: var(--font-sans);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

::selection { background-color: rgba(70, 93, 134, 0.28); color: #161d31; }
:focus-visible { outline: 2px solid var(--blue-500); outline-offset: 3px; border-radius: 2px; }

::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: #efe5d1; }
::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #dcbb72, #a67c3c); border-radius: 8px; border: 2px solid #efe5d1; }

html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
body.gate-locked { overflow: hidden; }

/* ── Typography helpers ──────────────────────────────────────────── */
.font-script { font-family: var(--font-script); }
.font-serif { font-family: var(--font-serif); }
.font-display { font-family: var(--font-display); }
.font-cinzel { font-family: var(--font-cinzel); }
.eyebrow { font-family: var(--font-display); font-weight: 500; color: var(--gold-deep); line-height: 1.06; letter-spacing: 0.01em; }
.text-gold-gradient {
  background-image: linear-gradient(120deg, #ecd9a8 0%, #dcbb72 30%, #a67c3c 55%, #ecd9a8 80%, #a67c3c 100%);
  background-size: 200% auto; -webkit-background-clip: text; background-clip: text; color: transparent;
}
.rose-line { height: 1px; background: linear-gradient(90deg, transparent, var(--gold-500), transparent); }

/* ── Heart / dividers ────────────────────────────────────────────── */
.divider { display: flex; align-items: center; justify-content: center; gap: 0.75rem; color: var(--gold-500); }
.divider::before, .divider::after { content: ""; height: 1px; width: clamp(48px, 18vw, 120px); background: linear-gradient(90deg, transparent, var(--gold-400)); }
.divider::after { background: linear-gradient(90deg, var(--gold-400), transparent); }
.divider svg { width: 14px; height: 14px; }

.sec-icon {
  display: grid; place-items: center; width: 3.25rem; height: 3.25rem; margin: 0 auto;
  border-radius: 9999px; border: 1px solid rgba(166, 124, 60, 0.42); color: var(--gold-500);
  box-shadow: inset 0 0 0 3px rgba(166, 124, 60, 0.16);
}
.sec-icon svg { width: 1.4rem; height: 1.4rem; }

/* soft card */
.card-rose {
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(70, 93, 134, 0.26);
  border-radius: 1.25rem;
  box-shadow: 0 30px 70px -40px rgba(22, 29, 49, 0.4);
  backdrop-filter: blur(6px);
}

/* royal solid button */
.btn-rose {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
  padding: 0.85rem 2rem; border-radius: 9999px;
  font-family: var(--font-sans); font-size: 0.8rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase;
  color: #f7efdd; background: linear-gradient(135deg, #2a3c62, #20304f 55%, #161d31);
  box-shadow: 0 12px 30px -12px rgba(22, 29, 49, 0.65), inset 0 0 0 1px rgba(220, 187, 114, 0.25);
  transition: transform 0.4s var(--ease-luxe), box-shadow 0.4s var(--ease-luxe), filter 0.3s;
  text-decoration: none; cursor: pointer; border: none;
}
.btn-rose:hover { transform: translateY(-2px); filter: brightness(1.08); box-shadow: 0 16px 40px -12px rgba(22, 29, 49, 0.8), inset 0 0 0 1px rgba(220, 187, 114, 0.4); }

/* ── Reveal system ───────────────────────────────────────────────── */
[data-reveal] { opacity: 0; }
[data-splittext] { display: inline-block; }
[data-splittext] .st-char { display: inline-block; will-change: transform, opacity, filter; }

/* ── Cinematic video hero ─────────────────────────────────────────── */
.hero-video { background: #0e0d0b; color: var(--hero-cream); }
.hero-media {
  position: absolute; inset: 0; z-index: 0;
  width: 100%; height: 100%; object-fit: cover;
  cursor: pointer; background: #0e0d0b;
}
.hero-overlay {
  position: absolute; inset: 0; z-index: 1; pointer-events: none; opacity: 0;
  transition: opacity 1.2s var(--ease-luxe);
  background: linear-gradient(to bottom, rgba(6, 12, 22, 0.5) 0%, rgba(6, 12, 22, 0.18) 45%, rgba(6, 12, 22, 0.62) 100%);
}
#hero.is-revealed .hero-overlay { opacity: 1; }
#hero canvas[data-particles] { z-index: 2; opacity: 0; transition: opacity 1.4s ease; }
#hero.is-revealed canvas[data-particles] { opacity: 0.9; }

/* Tap-to-begin prompt */
.hero-play {
  position: absolute; left: 50%; top: 50%; z-index: 6; transform: translate(-50%, -50%);
  display: flex; flex-direction: column; align-items: center; gap: 1rem;
  padding: 0; border: none; background: none; cursor: pointer; color: var(--hero-cream);
  transition: opacity 0.6s ease, transform 0.6s var(--ease-luxe);
}
.hero-play-icon {
  position: relative; width: 3rem; height: 3rem; padding: 1.25rem; box-sizing: content-box;
  border-radius: 9999px; border: 1px solid rgba(246, 234, 214, 0.55);
  background: rgba(20, 30, 46, 0.35); backdrop-filter: blur(4px);
  filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.5));
}
.hero-play-ring {
  position: absolute; left: 50%; top: calc(1.25rem + 1.5rem); width: 5.5rem; height: 5.5rem;
  transform: translate(-50%, -50%); border-radius: 9999px; border: 1px solid rgba(246, 234, 214, 0.5);
  animation: hero-pulse 2.4s ease-out infinite;
}
.hero-play-label {
  font-family: var(--font-cinzel); font-size: 0.72rem; letter-spacing: 0.32em; text-transform: uppercase;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.7);
}
@keyframes hero-pulse { 0% { opacity: 0.7; transform: translate(-50%, -50%) scale(0.7); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.35); } }
#hero.is-playing .hero-play { opacity: 0; pointer-events: none; transform: translate(-50%, -50%) scale(0.9); }

/* Revealed invitation content over the film */
.hero-content { position: relative; z-index: 3; display: flex; flex-direction: column; align-items: center; pointer-events: none; }
/* Hold the hero text back from the very first paint. This used to rely on the
   script setting opacity:0 at DOMContentLoaded, so the names flashed on screen
   for a moment before it ran. playHeroEntrance reveals them with an inline
   opacity, which outranks this rule. */
#hero [data-hero-item] { opacity: 0; }
.hero-crest { color: var(--gold-400); filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.6)); }
.hero-msg {
  margin-top: 1rem; font-family: var(--font-serif); font-style: italic; font-size: 1.15rem; line-height: 1.6;
  color: rgba(246, 234, 214, 0.92); text-shadow: 0 2px 14px rgba(0, 0, 0, 0.7);
}
.hero-rule { margin: 1.4rem 0 0.4rem; display: flex; align-items: center; gap: 0.75rem; color: rgba(220, 187, 114, 0.85); }
.hero-rule span { height: 1px; width: 4rem; background: linear-gradient(90deg, transparent, rgba(220, 187, 114, 0.75), transparent); }
.hero-name {
  margin-top: 0.5rem; font-family: var(--font-script); font-weight: 600; line-height: 0.98;
  font-size: clamp(3.6rem, 16vw, 7rem); color: var(--hero-cream);
  text-shadow: 0 4px 30px rgba(0, 0, 0, 0.55), 0 0 26px rgba(166, 124, 60, 0.35);
}
.hero-role { margin-top: 0.35rem; font-family: var(--font-sans); font-size: 0.78rem; letter-spacing: 0.14em; color: rgba(246, 234, 214, 0.72); text-shadow: 0 2px 8px rgba(0, 0, 0, 0.65); }
.hero-amp { margin: 0.35rem 0; font-family: var(--font-script); font-size: 2.4rem; color: rgba(220, 187, 114, 0.9); text-shadow: 0 2px 12px rgba(0, 0, 0, 0.6); }
@media (min-width: 768px) {
  .hero-msg { font-size: 1.4rem; }
  .hero-role { font-size: 0.85rem; }
}
.hero-scroll {
  position: absolute; left: 50%; bottom: 2rem; z-index: 4; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 0.4rem;
  border: none; background: none; cursor: pointer; color: rgba(246, 234, 214, 0.75);
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.7);
}

/* ── Scratch to reveal ────────────────────────────────────────────────── */
.scratch-wrap{ position:relative; width:100%; max-width:22rem; margin:0 auto; aspect-ratio:16/9;
  border-radius:1rem; overflow:hidden; border:1px solid rgba(70,93,134,0.28);
  box-shadow:0 30px 70px -40px rgba(22,29,49,0.4); }
.scratch-under{ position:absolute; inset:0; display:grid; place-items:center; text-align:center;
  background:linear-gradient(180deg, #fbf8f1, #efe5d1); }
.scratch-canvas{ position:absolute; inset:0; width:100%; height:100%; cursor:grab; touch-action:none; }
.scratch-canvas:active{ cursor:grabbing; }
/* Heart-shaped scratch card — reveals the invitation embedded in the heart */
.scratch-heart{ position:relative; width:100%; max-width:20rem; margin:0 auto; aspect-ratio:1 / 0.92; }
.scratch-heart .heart-outline{ position:absolute; inset:0; width:100%; height:100%; }
.scratch-heart .heart-content{ position:absolute; inset:0; display:flex; flex-direction:column;
  align-items:center; justify-content:center; text-align:center; padding:10% 15% 22%; }
.scratch-heart .heart-content p{ line-height:1.2; }
.scratch-heart .heart-content .heart-date{ font-size:1.55rem; }
@media (min-width:768px){ .scratch-heart .heart-content .heart-date{ font-size:1.9rem; } }
.scratch-heart .scratch-canvas{ position:absolute; inset:0; width:100%; height:100%; cursor:grab; touch-action:none; }

/* ── Photo slideshow ──────────────────────────────────────────────────── */
.slideshow{ --slide-accent:#a67c3c; position:relative; overflow:hidden; border-radius:1rem;
  max-width:27rem; margin-left:auto; margin-right:auto;
  border:1px solid color-mix(in srgb,var(--slide-accent,#a67c3c) 35%,transparent);
  box-shadow:0 30px 70px -40px rgba(0,0,0,.5); }
.slides{ position:relative; aspect-ratio:3/4; }   /* portrait, to suit real photos */
.slide{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0;
  transform:scale(1.04); transition:opacity 1s ease, transform 6s ease; }
.slide.is-active{ opacity:1; transform:scale(1); }
.slide-nav{ position:absolute; top:50%; transform:translateY(-50%); width:2.4rem; height:2.4rem;
  display:grid; place-items:center; border-radius:9999px; border:none; cursor:pointer; font-size:1.4rem;
  background:rgba(0,0,0,.35); color:#fff; backdrop-filter:blur(4px); opacity:0; transition:opacity .3s; }
.slideshow:hover .slide-nav{ opacity:1; } .slide-nav.prev{ left:.7rem; } .slide-nav.next{ right:.7rem; }
.slide-dots{ position:absolute; left:0; right:0; bottom:.8rem; display:flex; gap:.4rem; justify-content:center; }
.slide-dots button{ width:.5rem; height:.5rem; border-radius:9999px; border:none; cursor:pointer;
  background:rgba(255,255,255,.5); } .slide-dots button.is-active{ background:var(--slide-accent,#a67c3c); width:1.2rem; border-radius:9999px; }

/* ── Gallery — uniform portrait tiles for real photos ─────────────── */
#gallery [data-lightbox]{ aspect-ratio:3/4; display:block; padding:0; background:none; cursor:pointer; }
#gallery [data-lightbox] img{ display:block; }

/* ── Heart date card ─────────────────────────────────────────────── */
.heart-card { position: relative; width: 100%; max-width: 22rem; margin: 0 auto; aspect-ratio: 1 / 0.92; }
.heart-card svg.heart-outline { position: absolute; inset: 0; width: 100%; height: 100%; }
/* A heart is widest in its upper-middle and tapers to a point at the bottom.
   Keep content inside that wide band: constrain the width with side padding and
   lift it off the tip with extra bottom padding so nothing spills out. */
.heart-card .heart-content { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 6% 18% 22%; }
.heart-card .heart-content p { line-height: 1.2; }
.heart-card .heart-content .heart-date { font-size: 1.5rem; }
@media (min-width: 768px) { .heart-card .heart-content .heart-date { font-size: 1.75rem; } }

/* ── Program timeline ────────────────────────────────────────────── */
.tl { position: relative; padding-left: 2rem; }
.tl::before { content: ""; position: absolute; left: 0.4rem; top: 0.3rem; bottom: 0.3rem; width: 1px; background: linear-gradient(180deg, rgba(32,48,79,0.5), rgba(32,48,79,0.12)); }
.tl-item { position: relative; padding-bottom: 2rem; }
.tl-item::before { content: ""; position: absolute; left: -1.72rem; top: 0.35rem; width: 0.7rem; height: 0.7rem; border-radius: 9999px; background: var(--royal-700); box-shadow: 0 0 0 4px rgba(32,48,79,0.12); }

/* ── Lightbox ────────────────────────────────────────────────────── */
#lightbox { position: fixed; inset: 0; z-index: 120; display: none; place-items: center; background: rgba(12,22,38,0.92); backdrop-filter: blur(6px); padding: 1.5rem; }
#lightbox.is-open { display: grid; }
#lightbox img { max-width: min(92vw, 1000px); max-height: 84vh; object-fit: contain; border-radius: 0.75rem; box-shadow: 0 30px 80px -20px rgba(0,0,0,0.6); }

/* ── Reduced motion ──────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; filter: none !important; }
  .hero-play-ring { animation: none; }
}

/* ==== BEGIN: Parisian decorative background ==== */
/* Parisian Nights — a fleur-de-lis field on warm limestone, a guilloche
   engraved border, and Art-Deco sunburst / wrought-iron rosette medallions
   that echo the hero film's gilded gates and balcony ironwork. */
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(60% 46% at 50% -8%,rgba(132,147,181,0.22),transparent 70%),radial-gradient(48% 40% at 88% 10%,rgba(220,187,114,0.16),transparent 72%),radial-gradient(56% 46% at 8% 94%,rgba(226,210,172,0.30),transparent 72%),radial-gradient(50% 42% at 92% 96%,rgba(220,187,114,0.10),transparent 72%),linear-gradient(180deg,#efe7d6 0%,#f6efe0 40%,#f7f1e4 68%,#f4ecd6 100%);}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2262%22%20height%3D%2262%22%20viewBox%3D%220%200%2060%2060%22%3E%3Cg%20fill%3D%22%23a67c3c%22%3E%3Cpath%20transform%3D%22translate%2830%2022%29%20rotate%280%29%20scale%281.0%29%22%20d%3D%22M0%20-13%20C5%20-5%205%203%200%208%20C-5%203%20-5%20-5%200%20-13%20Z%22%2F%3E%3Cpath%20transform%3D%22translate%2830%2027%29%20rotate%28-52%29%20scale%280.85%29%22%20d%3D%22M0%20-13%20C5%20-5%205%203%200%208%20C-5%203%20-5%20-5%200%20-13%20Z%22%2F%3E%3Cpath%20transform%3D%22translate%2830%2027%29%20rotate%2852%29%20scale%280.85%29%22%20d%3D%22M0%20-13%20C5%20-5%205%203%200%208%20C-5%203%20-5%20-5%200%20-13%20Z%22%2F%3E%3Crect%20x%3D%2225%22%20y%3D%2228%22%20width%3D%2210%22%20height%3D%223.4%22%20rx%3D%221.4%22%2F%3E%3Cpath%20transform%3D%22translate%2830%2046%29%20rotate%28180%29%20scale%280.8%29%22%20d%3D%22M0%20-13%20C4%20-6%204%202%200%207%20C-4%202%20-4%20-6%200%20-13%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-repeat:repeat;background-size:62px 62px;opacity:0.05;}

section[id]:not(#hero){background-color:transparent !important;position:relative;overflow:hidden;}

section[id]:not(#hero)::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2248%22%20height%3D%2216%22%20viewBox%3D%220%200%2048%2016%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221%22%3E%3Cpath%20d%3D%22M0%208%20Q12%201%2024%208%20T48%208%22%2F%3E%3Cpath%20d%3D%22M0%208%20Q12%2015%2024%208%20T48%208%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22%23a67c3c%22%3E%3Ccircle%20cx%3D%220%22%20cy%3D%228%22%20r%3D%221.3%22%2F%3E%3Ccircle%20cx%3D%2224%22%20cy%3D%228%22%20r%3D%221.3%22%2F%3E%3Ccircle%20cx%3D%2248%22%20cy%3D%228%22%20r%3D%221.3%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),radial-gradient(120% 88% at 50% 0%,rgba(70,93,134,0.10),transparent 60%);background-repeat:repeat-x,no-repeat;background-position:center top,center top;background-size:48px 16px,100% 340px;opacity:0.85;}

section[id]:not(#hero):nth-of-type(even)::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22300%22%20height%3D%22300%22%20viewBox%3D%220%200%20300%20300%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22140%22%20stroke-width%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22132%22%20stroke-width%3D%220.9%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%2230%22%20stroke-width%3D%221.3%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%232a3c62%22%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22126%22%20stroke-width%3D%221%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%2252%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%220.9%22%3E%3Cline%20x1%3D%22150.0%22%20y1%3D%2296.0%22%20x2%3D%22150.0%22%20y2%3D%2226.0%22%2F%3E%3Cline%20x1%3D%22164.9%22%20y1%3D%2265.3%22%20x2%3D%22171.5%22%20y2%3D%2227.9%22%2F%3E%3Cline%20x1%3D%22168.5%22%20y1%3D%2299.3%22%20x2%3D%22192.4%22%20y2%3D%2233.5%22%2F%3E%3Cline%20x1%3D%22193.0%22%20y1%3D%2275.5%22%20x2%3D%22212.0%22%20y2%3D%2242.6%22%2F%3E%3Cline%20x1%3D%22184.7%22%20y1%3D%22108.6%22%20x2%3D%22229.7%22%20y2%3D%2255.0%22%2F%3E%3Cline%20x1%3D%22215.9%22%20y1%3D%2294.7%22%20x2%3D%22245.0%22%20y2%3D%2270.3%22%2F%3E%3Cline%20x1%3D%22196.8%22%20y1%3D%22123.0%22%20x2%3D%22257.4%22%20y2%3D%2288.0%22%2F%3E%3Cline%20x1%3D%22230.8%22%20y1%3D%22120.6%22%20x2%3D%22266.5%22%20y2%3D%22107.6%22%2F%3E%3Cline%20x1%3D%22203.2%22%20y1%3D%22140.6%22%20x2%3D%22272.1%22%20y2%3D%22128.5%22%2F%3E%3Cline%20x1%3D%22236.0%22%20y1%3D%22150.0%22%20x2%3D%22274.0%22%20y2%3D%22150.0%22%2F%3E%3Cline%20x1%3D%22203.2%22%20y1%3D%22159.4%22%20x2%3D%22272.1%22%20y2%3D%22171.5%22%2F%3E%3Cline%20x1%3D%22230.8%22%20y1%3D%22179.4%22%20x2%3D%22266.5%22%20y2%3D%22192.4%22%2F%3E%3Cline%20x1%3D%22196.8%22%20y1%3D%22177.0%22%20x2%3D%22257.4%22%20y2%3D%22212.0%22%2F%3E%3Cline%20x1%3D%22215.9%22%20y1%3D%22205.3%22%20x2%3D%22245.0%22%20y2%3D%22229.7%22%2F%3E%3Cline%20x1%3D%22184.7%22%20y1%3D%22191.4%22%20x2%3D%22229.7%22%20y2%3D%22245.0%22%2F%3E%3Cline%20x1%3D%22193.0%22%20y1%3D%22224.5%22%20x2%3D%22212.0%22%20y2%3D%22257.4%22%2F%3E%3Cline%20x1%3D%22168.5%22%20y1%3D%22200.7%22%20x2%3D%22192.4%22%20y2%3D%22266.5%22%2F%3E%3Cline%20x1%3D%22164.9%22%20y1%3D%22234.7%22%20x2%3D%22171.5%22%20y2%3D%22272.1%22%2F%3E%3Cline%20x1%3D%22150.0%22%20y1%3D%22204.0%22%20x2%3D%22150.0%22%20y2%3D%22274.0%22%2F%3E%3Cline%20x1%3D%22135.1%22%20y1%3D%22234.7%22%20x2%3D%22128.5%22%20y2%3D%22272.1%22%2F%3E%3Cline%20x1%3D%22131.5%22%20y1%3D%22200.7%22%20x2%3D%22107.6%22%20y2%3D%22266.5%22%2F%3E%3Cline%20x1%3D%22107.0%22%20y1%3D%22224.5%22%20x2%3D%2288.0%22%20y2%3D%22257.4%22%2F%3E%3Cline%20x1%3D%22115.3%22%20y1%3D%22191.4%22%20x2%3D%2270.3%22%20y2%3D%22245.0%22%2F%3E%3Cline%20x1%3D%2284.1%22%20y1%3D%22205.3%22%20x2%3D%2255.0%22%20y2%3D%22229.7%22%2F%3E%3Cline%20x1%3D%22103.2%22%20y1%3D%22177.0%22%20x2%3D%2242.6%22%20y2%3D%22212.0%22%2F%3E%3Cline%20x1%3D%2269.2%22%20y1%3D%22179.4%22%20x2%3D%2233.5%22%20y2%3D%22192.4%22%2F%3E%3Cline%20x1%3D%2296.8%22%20y1%3D%22159.4%22%20x2%3D%2227.9%22%20y2%3D%22171.5%22%2F%3E%3Cline%20x1%3D%2264.0%22%20y1%3D%22150.0%22%20x2%3D%2226.0%22%20y2%3D%22150.0%22%2F%3E%3Cline%20x1%3D%2296.8%22%20y1%3D%22140.6%22%20x2%3D%2227.9%22%20y2%3D%22128.5%22%2F%3E%3Cline%20x1%3D%2269.2%22%20y1%3D%22120.6%22%20x2%3D%2233.5%22%20y2%3D%22107.6%22%2F%3E%3Cline%20x1%3D%22103.2%22%20y1%3D%22123.0%22%20x2%3D%2242.6%22%20y2%3D%2288.0%22%2F%3E%3Cline%20x1%3D%2284.1%22%20y1%3D%2294.7%22%20x2%3D%2255.0%22%20y2%3D%2270.3%22%2F%3E%3Cline%20x1%3D%22115.3%22%20y1%3D%22108.6%22%20x2%3D%2270.3%22%20y2%3D%2255.0%22%2F%3E%3Cline%20x1%3D%22107.0%22%20y1%3D%2275.5%22%20x2%3D%2288.0%22%20y2%3D%2242.6%22%2F%3E%3Cline%20x1%3D%22131.5%22%20y1%3D%2299.3%22%20x2%3D%22107.6%22%20y2%3D%2233.5%22%2F%3E%3Cline%20x1%3D%22135.1%22%20y1%3D%2265.3%22%20x2%3D%22128.5%22%20y2%3D%2227.9%22%2F%3E%3C%2Fg%3E%3Cpath%20d%3D%22M150.0%20100.0%20L157.8%20121.0%20L175.0%20106.7%20L171.2%20128.8%20L193.3%20125.0%20L179.0%20142.2%20L200.0%20150.0%20L179.0%20157.8%20L193.3%20175.0%20L171.2%20171.2%20L175.0%20193.3%20L157.8%20179.0%20L150.0%20200.0%20L142.2%20179.0%20L125.0%20193.3%20L128.8%20171.2%20L106.7%20175.0%20L121.0%20157.8%20L100.0%20150.0%20L121.0%20142.2%20L106.7%20125.0%20L128.8%20128.8%20L125.0%20106.7%20L142.2%20121.0%20Z%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%224%22%20fill%3D%22%232a3c62%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:center 46%;background-size:min(540px,86%) auto;opacity:0.12;}

section[id]:not(#hero):nth-of-type(odd)::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22300%22%20height%3D%22300%22%20viewBox%3D%220%200%20300%20300%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22138%22%20stroke-width%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22150%22%20stroke-width%3D%220.6%22%20stroke-dasharray%3D%222%206%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%2234%22%20stroke-width%3D%221.3%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%232a3c62%22%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%22122%22%20stroke-width%3D%221.1%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%280%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%2845%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%2890%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28135%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28180%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28225%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28270%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28315%20150%20150%29%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M150%20116%20C138%2096%20138%2074%20150%2052%20C162%2074%20162%2096%20150%20116%20Z%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C162%2084%20170%2092%20164%20102%22%2F%3E%3Cpath%20d%3D%22M150%2088%20C138%2084%20130%2092%20136%20102%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%2822.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%2867.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28112.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28157.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28202.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28247.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28292.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Cg%20transform%3D%22rotate%28337.5%20150%20150%29%22%3E%3Cellipse%20cx%3D%22150%22%20cy%3D%22120%22%20rx%3D%226%22%20ry%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23465d86%22%20stroke-width%3D%221%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%2216%22%20fill%3D%22none%22%20stroke%3D%22%23a67c3c%22%20stroke-width%3D%221.2%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22150%22%20r%3D%224%22%20fill%3D%22%232a3c62%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat;background-position:right -150px center;background-size:440px auto;opacity:0.1;}
/* ==== END: Parisian decorative background ==== */

/* ==== Invitocraft credit bar ==== */
.ic-bar{
  background:#161d31;
  border-top:1px solid rgba(220,187,114,.28);
  padding:22px 24px 20px;
  text-align:center;
}
.ic-bar-in{
  max-width:44rem; margin:0 auto;
  display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;
}
.ic-brand{
  display:inline-flex; align-items:center; gap:11px;
  color:#dcbb72; text-decoration:none; transition:color .3s ease;
}
.ic-brand:hover{ color:#f4e7c4; }
.ic-seal{ width:30px; height:30px; flex:none; }
.ic-made{
  display:inline-flex; align-items:center; gap:6px;
  font-family:"Jost", system-ui, sans-serif; font-size:12px; font-weight:300;
  letter-spacing:.12em; color:#cbbd9e; white-space:nowrap;
}
.ic-made strong{ font-weight:500; color:inherit; letter-spacing:.18em; }
.ic-brand:hover .ic-made{ color:#f4ece0; }
.ic-heart{ width:11px; height:11px; flex:none; color:#dcbb72; }
.ic-cta{
  display:inline-flex; align-items:center; gap:8px;
  font-family:"Jost", system-ui, sans-serif; font-size:10.5px; font-weight:500;
  letter-spacing:.22em; text-transform:uppercase; text-decoration:none;
  color:#dcbb72; border:1px solid rgba(220,187,114,.35);
  border-radius:999px; padding:8px 16px;
  transition:border-color .3s ease, color .3s ease, background-color .3s ease;
}
.ic-cta:hover{ border-color:#dcbb72; color:#f4e7c4; background:rgba(220,187,114,.09); }
.ic-fine{
  margin:16px 0 0;
  font-family:"Jost", system-ui, sans-serif; font-size:10px;
  letter-spacing:.16em; color:rgba(203,189,158,.4);
}
@media (max-width:560px){
  .ic-bar-in{ flex-direction:column; gap:14px; }
}
