/* LOVELY EVENTS & DECORATION — flourish.css
   Royal "extra sparkle" layer #2. Additive only, complements motion.css.
   Every animated state is gated behind html.flourish-ready (set by
   flourish.js) so nothing changes if flourish.js never runs. */

/* 0. Guards */
.fl-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* 1. Royal preloader */
.fl-preloader {
  position: fixed; inset: 0; z-index: 9999; background: #060607;
  display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.fl-preloader-half {
  position: absolute; top: 0; bottom: 0; width: 50%; background: #060607;
  transition: transform .6s cubic-bezier(.7, 0, .3, 1);
}
.fl-preloader-half--l { left: 0; }
.fl-preloader-half--r { right: 0; }
.fl-preloader.fl-exit .fl-preloader-half--l { transform: translateX(-102%); }
.fl-preloader.fl-exit .fl-preloader-half--r { transform: translateX(102%); }
.fl-preloader-mark {
  position: relative; z-index: 1; opacity: 0;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
  animation: flPreloaderIn .5s ease-out .15s forwards;
}
.fl-preloader.fl-exit .fl-preloader-mark { transition: opacity .35s ease; opacity: 0; }
@keyframes flPreloaderIn { to { opacity: 1; } }
.fl-preloader-ring { width: 78px; height: 78px; overflow: visible; }
.fl-preloader-ring-track { fill: none; stroke: rgba(201, 164, 92, .22); stroke-width: 1.4; }
.fl-preloader-ring-arc {
  fill: none; stroke: #C9A45C; stroke-width: 1.4; stroke-linecap: round;
  stroke-dasharray: 226; stroke-dashoffset: 226; transform-origin: center; transform: rotate(-90deg);
  animation: flPreloaderRing 1.4s cubic-bezier(.4, 0, .2, 1) forwards;
}
@keyframes flPreloaderRing { to { stroke-dashoffset: 20; } }
.fl-preloader-l {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -52%); opacity: 0;
  font-family: var(--font-wordmark, cursive); font-size: 2rem; line-height: 1; color: #D71920;
  animation: flPreloaderL .5s ease-out .35s forwards;
}
@keyframes flPreloaderL { to { opacity: 1; } }
.fl-preloader-bar { width: 108px; height: 1px; background: rgba(201, 164, 92, .25); overflow: hidden; }
.fl-preloader-bar-fill {
  display: block; height: 100%; width: 0%;
  background: linear-gradient(90deg, #C9A45C, #F0DFAF);
  animation: flPreloaderBar 1.2s ease-out .1s forwards;
}
@keyframes flPreloaderBar { to { width: 100%; } }
.fl-preloader-hint {
  font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; opacity: 0;
  color: rgba(245, 243, 239, .35);
  animation: flPreloaderIn .5s ease .6s forwards;
}

/* 2. Falling petals canvases */
.fl-petals-ambient { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
.fl-petals-burst { position: fixed; inset: 0; z-index: 65; pointer-events: none; }

/* 3. Gold ribbon marquee */
.fl-marquee {
  position: relative; background: #000; height: 44px; max-height: 56px; overflow: hidden;
  border-top: 1px solid rgba(215, 25, 32, .55); border-bottom: 1px solid rgba(215, 25, 32, .55);
}
.fl-marquee-track {
  position: absolute; top: 0; left: 0; height: 100%; white-space: nowrap; will-change: transform;
  display: flex; align-items: center; gap: 2.4em;
  animation: flMarquee 32s linear infinite;
}
html.flourish-ready .fl-marquee:hover .fl-marquee-track,
html.flourish-ready .fl-marquee:focus-within .fl-marquee-track { animation-play-state: paused; }
@keyframes flMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.fl-marquee-item {
  display: inline-flex; align-items: center; gap: .9em; color: #C9A45C;
  font-family: var(--font-heading, serif); font-size: clamp(.72rem, .6rem + .5vw, .92rem);
  font-weight: 600; letter-spacing: .16em; text-transform: uppercase;
}
.fl-marquee-star { width: 11px; height: 11px; color: #D71920; flex: none; }
@media (max-width: 480px) { .fl-marquee { height: 38px; } }

/* 4. Brass lamp (nilavilakku) */
.fl-lamp { display: block; flex: none; overflow: visible; }
.fl-lamp-flame { transform-box: fill-box; transform-origin: 50% 100%; }
html.flourish-ready .fl-lamp-flame--1 { animation: flFlicker 2.6s ease-in-out infinite; }
html.flourish-ready .fl-lamp-flame--2 { animation: flFlicker 2.2s ease-in-out infinite .3s; }
html.flourish-ready .fl-lamp-flame--3 { animation: flFlicker 2.9s ease-in-out infinite .55s; }
@keyframes flFlicker {
  0%, 100% { transform: scaleY(1) scaleX(1); opacity: .92; filter: drop-shadow(0 0 3px rgba(255, 176, 59, .6)); }
  30% { transform: scaleY(1.12) scaleX(.94); opacity: 1; filter: drop-shadow(0 0 5px rgba(255, 176, 59, .85)); }
  55% { transform: scaleY(.9) scaleX(1.05); opacity: .85; filter: drop-shadow(0 0 2px rgba(255, 176, 59, .5)); }
  80% { transform: scaleY(1.06) scaleX(.97); opacity: .97; filter: drop-shadow(0 0 4px rgba(255, 176, 59, .7)); }
}
.fl-lamp-row { display: flex; align-items: center; justify-content: center; gap: .5rem; }
.fl-lamp-row .welcome-title { margin: 0; flex: 1 1 auto; min-width: 0; }
@media (max-width: 480px) {
  .fl-lamp-row { gap: .3rem; }
  .fl-lamp-row .fl-lamp { width: 22px !important; height: 32px !important; }
}
.fl-lamp-footer-wrap { display: flex; justify-content: center; padding-block: .6rem .2rem; }

/* 5. Magnetic buttons + cursor spotlight (desktop fine-pointer only) */
.fl-magnetic { transition: transform .18s ease-out; }
html.flourish-ready .fl-magnetic:hover,
html.flourish-ready .fl-magnetic:focus-visible {
  transform: translate(var(--fl-mx, 0px), calc(var(--fl-my, 0px) - 2px));
}

.fl-spotlight {
  position: fixed; z-index: 40; pointer-events: none; left: 0; top: 0;
  width: 420px; height: 420px; border-radius: 50%; opacity: 0;
  transform: translate3d(-999px, -999px, 0);
  background: radial-gradient(circle, rgba(201, 164, 92, .16) 0%, rgba(201, 164, 92, .06) 42%, transparent 72%);
  transition: opacity .25s ease; mix-blend-mode: screen; will-change: transform, opacity;
}
.fl-spotlight.fl-on { opacity: 1; }

/* 6. Parallax layers */
html.flourish-ready .fl-parallax { will-change: transform; }

/* 7. Welcome curtain reveal */
.fl-curtain {
  position: absolute; top: 0; left: 0; right: 0; height: clamp(190px, 26vw, 300px);
  z-index: 5; pointer-events: none; display: flex; overflow: hidden;
}
.fl-curtain-half {
  flex: 1 1 50%; position: relative; border-bottom: 3px solid #C9A45C;
  background: linear-gradient(180deg, rgba(255, 255, 255, .07), transparent 40%), linear-gradient(160deg, #7c1015, #40060a 65%, #2b0407);
  transition: transform .9s cubic-bezier(.65, 0, .3, 1);
}
.fl-curtain-half::before {
  content: ''; position: absolute; top: 0; bottom: 0; width: 5px;
  background: linear-gradient(180deg, #E9CF8E, #8a6a2e);
}
.fl-curtain-half--l::before { right: 0; }
.fl-curtain-half--r::before { left: 0; }
html.flourish-ready .fl-curtain.fl-open .fl-curtain-half--l { transform: translateX(-102%); }
html.flourish-ready .fl-curtain.fl-open .fl-curtain-half--r { transform: translateX(102%); }

/* 8. Ripple / link micro-interactions */
.fl-ripple-host { position: relative; overflow: hidden; }
.fl-ripple {
  position: absolute; border-radius: 50%; pointer-events: none; opacity: .55;
  background: rgba(255, 255, 255, .5); transform: scale(0);
  animation: flRipple .6s ease-out forwards;
}
.btn-outline-light.fl-ripple-host .fl-ripple,
.btn-ghost-gold.fl-ripple-host .fl-ripple,
.filter-btn.fl-ripple-host .fl-ripple { background: rgba(201, 164, 92, .4); }
@keyframes flRipple { to { transform: scale(2.4); opacity: 0; } }

.footer-col a { position: relative; display: inline-block; }
.footer-col a::after {
  content: ''; position: absolute; left: 0; right: 100%; bottom: -3px; height: 1px;
  background: var(--color-accent, #C9A45C); transition: right .3s var(--ease, ease);
}
.footer-col a:hover::after, .footer-col a:focus-visible::after { right: 0; }

.service-link .icon { transition: transform .25s var(--ease, ease); }
.service-link:hover .icon, .service-link:focus-visible .icon { transform: translateX(4px); }

/* 9. Section top-edge light sweep */
.fl-sweep {
  position: absolute; top: 0; left: 0; right: 0; height: 1px; z-index: 4;
  pointer-events: none;
  background: linear-gradient(90deg, transparent, #C9A45C 20%, #F5E4B8 50%, #C9A45C 80%, transparent);
  clip-path: inset(0 100% 0 0);
}
html.flourish-ready .fl-sweep { transition: clip-path 1s var(--ease, ease); }
html.flourish-ready .fl-sweep.fl-in { clip-path: inset(0 0 0 0); }

/* 10. Reduced motion / overflow safety */
@media (prefers-reduced-motion: reduce) {
  .fl-preloader, .fl-petals-ambient, .fl-petals-burst, .fl-spotlight, .fl-curtain { display: none !important; }
  .fl-lamp-flame { animation: none !important; }
  .fl-marquee-track { animation: none !important; transform: translateX(0) !important; }
}
@media (max-width: 360px) {
  .fl-marquee-item { font-size: .68rem; letter-spacing: .12em; }
}
