/* FX stadium — éclairs canvas + caméo ninja (PNG transparent + aura) */

.ns-fx-lightning {
    position: fixed;
    inset: 0;
    z-index: 74;
    width: 100%;
    height: 100%;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.12s ease-out;
    contain: strict;
}

.ns-fx-lightning.is-flashing {
    opacity: 1;
}

/* Caméo ninja — personnage flottant sans cadre */
.ns-ninja-cameo {
    position: fixed;
    z-index: 92;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    overflow: visible;
}

.ns-ninja-cameo.is-hidden {
    display: none;
}

.ns-ninja-cameo--right {
    right: clamp(0.75rem, 3vw, 2.5rem);
    bottom: clamp(6rem, 18vh, 11rem);
}

.ns-ninja-cameo--left {
    left: clamp(0.75rem, 3vw, 2.5rem);
    bottom: clamp(6.5rem, 20vh, 12rem);
}

.ns-ninja-cameo__stage {
    position: relative;
    display: block;
    width: auto;
    background: none;
    overflow: visible;
}

.ns-ninja-cameo.is-show {
    display: block;
    visibility: visible;
    animation: nsNinjaCameoIn 4.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

/* Aura circulaire autour du silhouette — pas de fond rectangulaire */
.ns-ninja-cameo__aura {
    position: absolute;
    left: 50%;
    bottom: 12%;
    z-index: 0;
    width: 115%;
    height: 88%;
    transform: translateX(-50%);
    pointer-events: none;
    opacity: 0;
}

.ns-ninja-cameo__aura-ring,
.ns-ninja-cameo__aura-core {
    position: absolute;
    left: 50%;
    top: 52%;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.ns-ninja-cameo__aura-ring {
    width: 118%;
    height: 118%;
    background: radial-gradient(
        circle,
        rgba(255, 45, 58, 0.34) 0%,
        rgba(180, 90, 255, 0.22) 28%,
        rgba(255, 45, 58, 0.1) 48%,
        transparent 72%
    );
    filter: blur(16px);
}

.ns-ninja-cameo__aura-core {
    width: 62%;
    height: 62%;
    background: radial-gradient(
        circle,
        rgba(255, 252, 245, 0.28) 0%,
        rgba(255, 45, 58, 0.16) 38%,
        transparent 70%
    );
    filter: blur(8px);
}

.ns-ninja-cameo.is-show .ns-ninja-cameo__aura {
    animation: nsNinjaAuraIn 4.4s ease-out forwards;
}

/* Personnage — PNG transparent uniquement */
.ns-ninja-cameo__photo {
    position: relative;
    z-index: 2;
    display: block;
    width: min(210px, 42vw);
    height: auto;
    margin: 0;
    object-fit: contain;
    object-position: center bottom;
    background: none;
    transform: translateY(24px) scale(0.84);
    opacity: 0;
    filter:
        drop-shadow(0 0 18px rgba(255, 45, 58, 0.42))
        drop-shadow(0 0 32px rgba(160, 80, 255, 0.28))
        drop-shadow(0 12px 28px rgba(5, 10, 24, 0.35));
}

.ns-ninja-cameo__photo.is-hidden {
    display: none;
}

.ns-ninja-cameo.is-show .ns-ninja-cameo__photo:not(.is-hidden) {
    animation: nsNinjaFigureIn 4.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@keyframes nsNinjaCameoIn {
    0%   { opacity: 0; }
    8%   { opacity: 1; }
    72%  { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes nsNinjaAuraIn {
    0%   { opacity: 0; transform: translateX(-50%) scale(0.75); }
    18%  { opacity: 1; transform: translateX(-50%) scale(1); }
    55%  { opacity: 0.92; }
    100% { opacity: 0; transform: translateX(-50%) scale(1.08); }
}

@keyframes nsNinjaFigureIn {
    0%   { opacity: 0; transform: translateY(28px) scale(0.8); filter: blur(10px) drop-shadow(0 0 8px rgba(255, 45, 58, 0.2)); }
    16%  { opacity: 0; transform: translateY(20px) scale(0.86); filter: blur(6px); }
    28%  { opacity: 1; transform: translateY(0) scale(1); filter: blur(0) drop-shadow(0 0 22px rgba(255, 45, 58, 0.5)) drop-shadow(0 0 36px rgba(160, 80, 255, 0.32)); }
    58%  { opacity: 1; transform: translateY(-4px) scale(1.02); }
    78%  { opacity: 0.55; transform: translateY(-2px) scale(1.04); filter: blur(3px); }
    100% { opacity: 0; transform: translateY(8px) scale(1.06); filter: blur(12px); }
}

body.ns-booking-open .ns-fx-lightning,
body.ns-booking-open .ns-ninja-cameo {
    display: none !important;
}

@media (max-width: 900px) {
    .ns-ninja-cameo {
        z-index: 88;
    }

    .ns-ninja-cameo--right,
    .ns-ninja-cameo--left {
        bottom: calc(6.5rem + env(safe-area-inset-bottom, 0px));
    }

    .ns-ninja-cameo__photo {
        width: min(175px, 52vw);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ns-fx-lightning,
    .ns-ninja-cameo {
        display: none !important;
    }
}
