/* ═══════════════════════════════════════════
   Party-on-a-Boat — Immersive Effects
   3D · Parallax · Scroll · Ambient Motion
   ═══════════════════════════════════════════ */

/* ── 3D Card Tilt ── */
.tilt-3d{transform-style:preserve-3d;perspective:1000px}
.tilt-3d__inner{transition:transform .15s var(--ease-standard);transform-style:preserve-3d;will-change:transform}
.tilt-3d__shine{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .25s;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.25) 0%,transparent 60%)}
.tilt-3d:hover .tilt-3d__shine{opacity:1}
@media(max-width:767px){
  .tilt-3d__inner{transform:none!important}
  .tilt-3d__shine{display:none}
}

/* ── Boat Rock — Hero Ambient Animation ── */
@keyframes boat-rock{
  0%,100%{transform:rotate(0deg) translateY(0)}
  20%{transform:rotate(.3deg) translateY(-3px)}
  50%{transform:rotate(-.2deg) translateY(2px)}
  75%{transform:rotate(.15deg) translateY(-1px)}
}
.hero-split{animation:boat-rock 7s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.hero-split{animation:none}}
@media(max-width:767px){.hero-split{animation:none}}

/* ── Floating Particles ── */
.particles{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.particles__dot{
  position:absolute;border-radius:50%;
  animation:particle-drift var(--p-dur,14s) var(--p-del,0s) ease-in-out infinite;
  opacity:0;will-change:transform,opacity
}
@keyframes particle-drift{
  0%{transform:translate(0,0) scale(.4);opacity:0}
  12%{opacity:var(--p-op,.35)}
  50%{transform:translate(var(--p-dx,30px),var(--p-dy,-120px)) scale(1);opacity:var(--p-op,.35)}
  88%{opacity:var(--p-op,.35)}
  100%{transform:translate(var(--p-dx2,-20px),var(--p-dy2,-240px)) scale(.3);opacity:0}
}
@media(prefers-reduced-motion:reduce){.particles{display:none}}
@media(max-width:767px){.particles{display:none}}

/* ── Text Split Reveal (Word-by-word) ── */
.text-split{overflow:hidden}
.text-split .word-wrap{display:inline-block;overflow:hidden;padding-bottom:.05em;vertical-align:bottom}
.text-split .word-inner{display:inline-block;transform:translateY(110%);opacity:0;transition:transform .55s var(--ease-spring-soft),opacity .4s var(--ease-enter)}
.text-split.is-revealed .word-inner{transform:translateY(0);opacity:1}
.text-split .word-inner:nth-child(1){transition-delay:0ms}
.text-split .word-inner:nth-child(2){transition-delay:45ms}
.text-split .word-inner:nth-child(3){transition-delay:90ms}
.text-split .word-inner:nth-child(4){transition-delay:135ms}
.text-split .word-inner:nth-child(5){transition-delay:180ms}
.text-split .word-inner:nth-child(6){transition-delay:225ms}
.text-split .word-inner:nth-child(7){transition-delay:270ms}
.text-split .word-inner:nth-child(8){transition-delay:315ms}
.text-split .word-inner:nth-child(9){transition-delay:360ms}
.text-split .word-inner:nth-child(10){transition-delay:405ms}
.text-split .word-inner:nth-child(n+11){transition-delay:450ms}
.no-js .text-split .word-inner{transform:none;opacity:1}
@media(prefers-reduced-motion:reduce){
  .text-split .word-inner{transform:none!important;opacity:1!important;transition:none!important}
}

/* ── Section Wave Divider ── */
.wave-divider{
  position:relative;height:50px;overflow:hidden;
  background:linear-gradient(180deg,transparent 0%,rgba(77,143,160,.04) 100%);
  margin-top:-1px
}
.wave-divider svg{
  position:absolute;bottom:0;left:0;width:200%;height:100%;
  animation:wave-flow 5s linear infinite
}
@keyframes wave-flow{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}
.wave-divider--reverse svg{animation-direction:reverse}
.wave-divider--slow svg{animation-duration:8s}
.wave-divider--fast svg{animation-duration:3s}
@media(prefers-reduced-motion:reduce){.wave-divider svg{animation:none}}
@media(max-width:767px){.wave-divider{height:30px}}

/* ── Gallery Depth on Scroll ── */
.gallery-depth .gallery-grid__item{
  transition:transform var(--dur-section) var(--ease-spring-soft),box-shadow var(--dur-section) var(--ease-standard)
}
.gallery-depth .gallery-grid__item.is-revealed{
  transform:perspective(800px) rotateX(1deg) translateZ(0);
  box-shadow:var(--shadow-lg)
}
.gallery-depth .gallery-grid__item:nth-child(even).is-revealed{
  transform:perspective(800px) rotateX(-0.5deg) translateY(-4px) translateZ(0)
}
@media(max-width:767px){
  .gallery-depth .gallery-grid__item.is-revealed{transform:none;box-shadow:var(--shadow-md)}
}

/* ── Parallax Image Depth ── */
.parallax-depth{will-change:transform;transition:none}
@media(prefers-reduced-motion:reduce){.parallax-depth{transform:none!important}}
@media(max-width:767px){.parallax-depth{transform:none!important}}

/* ── Scroll Color Shift ── */
.scroll-tint{transition:background-color 1s var(--ease-standard)}
.scroll-tint.is-revealed{background-color:rgba(77,143,160,.02)}

/* ── 3D Hover for Gallery Items ── */
.gallery-3d .gallery-grid__item{
  transition:transform .3s var(--ease-standard),box-shadow .3s var(--ease-standard)
}
@media(hover:hover){
  .gallery-3d .gallery-grid__item:hover{
    transform:perspective(600px) rotateY(-2deg) rotateX(1deg) scale(1.02);
    box-shadow:var(--shadow-lg)
  }
  .gallery-3d .gallery-grid__item:hover img{
    transform:scale(1.06)
  }
}

/* ── CTA Pulse ── */
@keyframes cta-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(217,101,67,.35)}
  50%{box-shadow:0 0 0 10px rgba(217,101,67,0)}
}
.cta-pulse{animation:cta-pulse 2.5s ease-in-out infinite}
.cta-pulse:hover{animation:none}
@media(prefers-reduced-motion:reduce){.cta-pulse{animation:none}}

/* ── Section Reveal with 3D flip ── */
[data-reveal="flip-up"]{
  opacity:0;transform:perspective(800px) rotateX(8deg) translateY(30px);
  transition:opacity var(--dur-ambient) var(--ease-enter),transform var(--dur-ambient) var(--ease-spring-soft)
}
[data-reveal="flip-up"].is-revealed{opacity:1;transform:none}
@media(max-width:767px){
  [data-reveal="flip-up"]{transform:translateY(20px)}
}

/* ── Ambient Glow (behind hero image) ── */
.hero-split__image::before{
  content:'';position:absolute;inset:-20%;
  background:radial-gradient(ellipse at center,rgba(77,143,160,.15) 0%,transparent 70%);
  animation:glow-pulse 6s ease-in-out infinite;
  z-index:-1;pointer-events:none
}
@keyframes glow-pulse{
  0%,100%{opacity:.5;transform:scale(1)}
  50%{opacity:.8;transform:scale(1.05)}
}
@media(prefers-reduced-motion:reduce){.hero-split__image::before{animation:none;opacity:.5}}
@media(max-width:767px){.hero-split__image::before{display:none}}
