/* Costa Club FX Mobile V1
   Effets au-dessus du fond des modules, contenu toujours au premier plan. */

.club-body.costa-fx{
  --club-fx-a:var(--fx-a,var(--club-turquoise,#21e6c1));
  --club-fx-b:var(--fx-b,var(--club-violet,#a855f7));
  --club-fx-c:var(--fx-c,var(--club-orange,#ff8a3d));
}

/* Modules Costa Club concernés, sans modifier leur taille ni leur mise en page. */
.club-body.costa-fx :is(
  .club-section,
  .club-hero,
  .club-member-card,
  .club-stat-card,
  .club-level-card,
  .club-referral-card,
  .club-referral-history,
  .club-leaderboard article,
  .club-content-grid > *,
  .club-mission-grid > *,
  .club-wheel-wrap,
  .club-wheel-info,
  .club-reward-card,
  .club-event-grid > *,
  .club-reservation-form,
  .club-reservation-history,
  .club-track-card,
  .club-gallery-grid > *,
  .club-bottle-member-list article,
  .club-self-checkin,
  .club-visit-summary article,
  .club-visit-list article,
  .club-custom-module,
  .club-feature-grid > a
){
  position:relative;
  isolation:isolate;
  overflow:hidden;
}

/* Le contenu reste devant les effets et garde tous ses clics. */
.club-body.costa-fx :is(
  .club-section,
  .club-hero,
  .club-member-card,
  .club-stat-card,
  .club-level-card,
  .club-referral-card,
  .club-referral-history,
  .club-leaderboard article,
  .club-content-grid > *,
  .club-mission-grid > *,
  .club-wheel-wrap,
  .club-wheel-info,
  .club-reward-card,
  .club-event-grid > *,
  .club-reservation-form,
  .club-reservation-history,
  .club-track-card,
  .club-gallery-grid > *,
  .club-bottle-member-list article,
  .club-self-checkin,
  .club-visit-summary article,
  .club-visit-list article,
  .club-custom-module,
  .club-feature-grid > a
) > *{
  position:relative;
  z-index:3;
}

.club-body.costa-fx :is(a,button,input,select,textarea,label,audio,video){
  position:relative;
  z-index:5;
}

/* Reflet animé devant chaque module. */
.club-body.costa-fx.fx-shine :is(
  .club-section,.club-hero,.club-member-card,.club-stat-card,.club-level-card,
  .club-referral-card,.club-referral-history,.club-leaderboard article,
  .club-content-grid > *,.club-mission-grid > *,.club-wheel-wrap,.club-wheel-info,
  .club-reward-card,.club-event-grid > *,.club-reservation-form,.club-reservation-history,
  .club-track-card,.club-gallery-grid > *,.club-bottle-member-list article,
  .club-self-checkin,.club-visit-summary article,.club-visit-list article,
  .club-custom-module,.club-feature-grid > a
)::after{
  content:"";
  position:absolute;
  z-index:2;
  top:-65%;
  bottom:-65%;
  left:-45%;
  width:22%;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.30),transparent);
  transform:rotate(18deg);
  mix-blend-mode:screen;
  animation:clubFxShine calc(var(--fx-speed,6s) * 1.45) ease-in-out infinite;
}

/* Halo lumineux à l'intérieur, devant le fond. */
.club-body.costa-fx.fx-spotlight :is(
  .club-section,.club-hero,.club-member-card,.club-stat-card,.club-level-card,
  .club-referral-card,.club-referral-history,.club-leaderboard article,
  .club-content-grid > *,.club-mission-grid > *,.club-wheel-wrap,.club-wheel-info,
  .club-reward-card,.club-event-grid > *,.club-reservation-form,.club-reservation-history,
  .club-track-card,.club-gallery-grid > *,.club-bottle-member-list article,
  .club-self-checkin,.club-visit-summary article,.club-visit-list article,
  .club-custom-module,.club-feature-grid > a
)::before{
  content:"";
  position:absolute;
  z-index:1;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 15% 12%,color-mix(in srgb,var(--club-fx-a) 48%,transparent),transparent 42%);
  mix-blend-mode:screen;
  opacity:calc(.72 * var(--fx-intensity,.7));
  animation:clubFxSpot calc(var(--fx-speed,6s) * 1.35) ease-in-out infinite alternate;
}

/* Ligne lumineuse mobile visible sans survol. */
.club-body.costa-fx.fx-scanline :is(
  .club-section,.club-hero,.club-member-card,.club-stat-card,.club-level-card,
  .club-referral-card,.club-referral-history,.club-leaderboard article,
  .club-content-grid > *,.club-mission-grid > *,.club-wheel-wrap,.club-wheel-info,
  .club-reward-card,.club-event-grid > *,.club-reservation-form,.club-reservation-history,
  .club-track-card,.club-gallery-grid > *,.club-bottle-member-list article,
  .club-self-checkin,.club-visit-summary article,.club-visit-list article,
  .club-custom-module,.club-feature-grid > a
)::after{
  content:"";
  position:absolute;
  z-index:2;
  left:0;
  right:0;
  top:-6%;
  height:3px;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--club-fx-a),#fff,var(--club-fx-b),transparent);
  box-shadow:0 0 12px var(--club-fx-a),0 0 24px var(--club-fx-b);
  animation:clubFxScan calc(var(--fx-speed,6s) * 1.05) linear infinite;
}

.club-body.costa-fx.fx-neon :is(.club-section,.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card){
  box-shadow:0 0 calc(22px * var(--fx-intensity,.7)) color-mix(in srgb,var(--club-fx-a) 42%,transparent),inset 0 0 calc(12px * var(--fx-intensity,.7)) color-mix(in srgb,var(--club-fx-b) 12%,transparent);
}

.club-body.costa-fx.fx-borderflow :is(.club-section,.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card){
  border-color:color-mix(in srgb,var(--club-fx-a) 68%,transparent)!important;
  animation:clubFxBorder calc(var(--fx-speed,6s) * 1.3) ease-in-out infinite alternate;
}

.club-body.costa-fx.fx-pulse :is(.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card){
  animation:clubFxPulse calc(var(--fx-speed,6s) * 1.15) ease-in-out infinite;
}

@keyframes clubFxShine{0%,18%{left:-45%}62%,100%{left:125%}}
@keyframes clubFxSpot{0%{background-position:0 0;opacity:.35}100%{background-position:100% 100%;opacity:.8}}
@keyframes clubFxScan{0%{top:-6%}100%{top:106%}}
@keyframes clubFxBorder{0%{box-shadow:0 0 8px color-mix(in srgb,var(--club-fx-a) 28%,transparent)}100%{box-shadow:0 0 25px color-mix(in srgb,var(--club-fx-b) 48%,transparent)}}
@keyframes clubFxPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.08)}}

/* Smartphone : effets maintenus devant les modules mais plus doux. */
@media(max-width:760px){
  .club-body.costa-fx.fx-shine :is(.club-section,.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card)::after{opacity:.72}
  .club-body.costa-fx.fx-spotlight :is(.club-section,.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card)::before{opacity:calc(.58 * var(--fx-intensity,.7))}
  .club-body.costa-fx.fx-scanline :is(.club-section,.club-feature-grid > a,.club-custom-module,.club-reward-card,.club-level-card)::after{opacity:.82}
}

@media(prefers-reduced-motion:reduce){
  .club-body.costa-fx *::before,.club-body.costa-fx *::after{animation-duration:.001ms!important;animation-iteration-count:1!important}
}
