/* Neon FX v2 — biblioteka klas. Zmienne kolorów i skróty per-kolor wstrzykuje panel (inline). */
:root{--nfx-green:#19d27f;--nfx-pink:#ff4d8d;--nfx-violet:#8b3ff0;--nfx-cyan:#22d3ee;--nfx-neon:var(--nfx-green);}

/* ===== NEONY ===== */
.nfx-neon-text{color:var(--nfx-neon);text-shadow:0 0 6px var(--nfx-neon),0 0 14px var(--nfx-neon),0 0 28px var(--nfx-neon);}
.nfx-neon-box{box-shadow:0 0 8px var(--nfx-neon),0 0 22px var(--nfx-neon);}
.nfx-neon-border{border:2px solid var(--nfx-neon);border-radius:12px;box-shadow:0 0 8px var(--nfx-neon),0 0 18px var(--nfx-neon);}
.nfx-neon-pulse{animation:nfx-pulse 1.8s ease-in-out infinite;}
@keyframes nfx-pulse{0%,100%{box-shadow:0 0 6px var(--nfx-neon),0 0 14px var(--nfx-neon);}50%{box-shadow:0 0 16px var(--nfx-neon),0 0 36px var(--nfx-neon),0 0 52px var(--nfx-neon);}}
.nfx-neon-text.nfx-neon-pulse{animation:nfx-pulse-text 1.8s ease-in-out infinite;}
@keyframes nfx-pulse-text{0%,100%{text-shadow:0 0 6px var(--nfx-neon),0 0 14px var(--nfx-neon);}50%{text-shadow:0 0 12px var(--nfx-neon),0 0 30px var(--nfx-neon),0 0 46px var(--nfx-neon);}}

/* ===== HOVER ===== */
.nfx-hover-float{transition:transform .25s ease;} .nfx-hover-float:hover{transform:translateY(-8px);}
.nfx-hover-grow{transition:transform .25s ease;} .nfx-hover-grow:hover{transform:scale(1.05);}
.nfx-hover-glow{transition:box-shadow .25s ease,transform .25s ease;} .nfx-hover-glow:hover{box-shadow:0 0 14px var(--nfx-neon),0 0 32px var(--nfx-neon);transform:translateY(-3px);}
.nfx-hover-tilt{transition:transform .3s ease;} .nfx-hover-tilt:hover{transform:perspective(600px) rotateX(6deg) rotateY(-6deg) translateY(-4px);}
.nfx-underline{position:relative;} .nfx-underline:after{content:'';position:absolute;left:0;bottom:-4px;width:0;height:2px;background:var(--nfx-neon);transition:width .3s ease;} .nfx-underline:hover:after{width:100%;}

/* ===== WEJSCIE (JS dodaje .nfx-in) ===== */
.nfx-fade,.nfx-up,.nfx-down,.nfx-left,.nfx-right,.nfx-zoom{opacity:0;transition:opacity .7s ease,transform .7s ease;will-change:opacity,transform;}
.nfx-up{transform:translateY(40px);} .nfx-down{transform:translateY(-40px);} .nfx-left{transform:translateX(40px);} .nfx-right{transform:translateX(-40px);} .nfx-zoom{transform:scale(.9);}
.nfx-in{opacity:1 !important;transform:none !important;}
.nfx-delay-1{transition-delay:.15s;} .nfx-delay-2{transition-delay:.3s;} .nfx-delay-3{transition-delay:.45s;} .nfx-delay-4{transition-delay:.6s;} .nfx-delay-5{transition-delay:.9s;}

/* ===== TRIGGERY (JS dodaje .nfx-play) ===== */
.nfx-on-view,.nfx-on-scroll,.nfx-on-load,.nfx-on-idle,.nfx-on-click{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease;}
.nfx-on-view.nfx-play,.nfx-on-scroll.nfx-play,.nfx-on-load.nfx-play,.nfx-on-idle.nfx-play,.nfx-on-click.nfx-play{opacity:1;transform:none;}
.nfx-on-click{cursor:pointer;}
.nfx-on-hover{display:inline-block;transition:transform .25s ease,filter .25s ease;} .nfx-on-hover.nfx-play{transform:scale(1.06);filter:brightness(1.1);}

/* ===== GRADIENTY / TEKST-GRADIENT ===== */
.nfx-gradient-text{background:linear-gradient(90deg,var(--nfx-green),var(--nfx-cyan),var(--nfx-violet),var(--nfx-pink),var(--nfx-green));background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:nfx-grad 6s linear infinite;}
.nfx-gradient-bg{background:linear-gradient(90deg,var(--nfx-green),var(--nfx-cyan),var(--nfx-violet),var(--nfx-pink),var(--nfx-green));background-size:300% 100%;animation:nfx-grad 6s linear infinite;}
@keyframes nfx-grad{0%{background-position:0% 50%;}100%{background-position:300% 50%;}}
.nfx-shimmer{position:relative;overflow:hidden;} .nfx-shimmer:after{content:'';position:absolute;top:0;left:-150%;width:60%;height:100%;background:linear-gradient(120deg,transparent,rgba(255,255,255,.35),transparent);transform:skewX(-20deg);animation:nfx-shimmer 2.8s infinite;}
@keyframes nfx-shimmer{0%{left:-150%;}60%,100%{left:150%;}}
.nfx-rainbow-border{position:relative;border-radius:14px;} .nfx-rainbow-border:before{content:'';position:absolute;inset:0;padding:2px;border-radius:inherit;background:linear-gradient(90deg,var(--nfx-green),var(--nfx-cyan),var(--nfx-violet),var(--nfx-pink),var(--nfx-green));background-size:300% 100%;animation:nfx-grad 6s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;}

/* ===== 3D ===== */
.nfx-3d{perspective:900px;}
.nfx-tilt{transition:transform .15s ease;transform-style:preserve-3d;will-change:transform;}
.nfx-flip{transition:transform .5s ease;transform-style:preserve-3d;} .nfx-flip:hover{transform:rotateY(180deg);}
.nfx-pop-3d{transition:transform .25s ease,box-shadow .25s ease;} .nfx-pop-3d:hover{transform:translateY(-6px) scale(1.05) rotate(-1deg);box-shadow:0 24px 50px rgba(0,0,0,.4);}
.nfx-rotate-hover{transition:transform .4s ease;} .nfx-rotate-hover:hover{transform:rotate(6deg) scale(1.04);}

/* ===== GLASSMORPHISM ===== */
.nfx-glass{background:rgba(255,255,255,.08);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);border:1px solid rgba(255,255,255,.18);border-radius:16px;}
.nfx-glass-heavy{background:rgba(255,255,255,.14);backdrop-filter:blur(22px) saturate(160%);-webkit-backdrop-filter:blur(22px) saturate(160%);border:1px solid rgba(255,255,255,.25);border-radius:18px;}
.nfx-backdrop-blur{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);}
.nfx-frosted{background:rgba(255,255,255,.65);color:#10231b;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.5);border-radius:16px;}

/* ===== LIQUID ===== */
.nfx-liquid{border-radius:42% 58% 60% 40%/45% 45% 55% 55%;animation:nfx-liquid 8s ease-in-out infinite;}
@keyframes nfx-liquid{0%,100%{border-radius:42% 58% 60% 40%/45% 45% 55% 55%;}50%{border-radius:58% 42% 40% 60%/55% 55% 45% 45%;}}
.nfx-liquid-hover{transition:border-radius .6s ease;} .nfx-liquid-hover:hover{border-radius:58% 42% 40% 60%/55% 55% 45% 45%;}

/* ===== BORDERY ANIMOWANE ===== */
.nfx-border-flow{position:relative;border-radius:14px;} .nfx-border-flow:before{content:'';position:absolute;inset:0;padding:2px;border-radius:inherit;background:linear-gradient(90deg,transparent,var(--nfx-neon),transparent);background-size:200% 100%;animation:nfx-grad 3s linear infinite;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;}
.nfx-border-trace{position:relative;border-radius:14px;overflow:hidden;} .nfx-border-trace:before{content:'';position:absolute;inset:0;border-radius:inherit;padding:2px;background:conic-gradient(var(--nfx-neon) 0 25%,transparent 25% 100%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:nfx-trace 3s linear infinite;pointer-events:none;}
@keyframes nfx-trace{to{transform:rotate(1turn);}}

/* ===== AMBIENT: AURORA / METEOR / STARFIELD / PARTICLES ===== */
.nfx-aurora{position:relative;overflow:hidden;} .nfx-aurora:before{content:'';position:absolute;inset:-40%;background:radial-gradient(40% 40% at 30% 30%,var(--nfx-green),transparent 60%),radial-gradient(40% 40% at 70% 40%,var(--nfx-violet),transparent 60%),radial-gradient(40% 40% at 50% 75%,var(--nfx-cyan),transparent 60%);filter:blur(45px);opacity:.55;animation:nfx-aurora 12s ease-in-out infinite;pointer-events:none;}
@keyframes nfx-aurora{0%,100%{transform:translate(0,0) rotate(0);}50%{transform:translate(6%,-4%) rotate(8deg);}}
.nfx-aurora>*{position:relative;z-index:1;}
.nfx-meteor{position:relative;overflow:hidden;} .nfx-meteor:before,.nfx-meteor:after{content:'';position:absolute;top:-10%;width:2px;height:80px;background:linear-gradient(var(--nfx-neon),transparent);animation:nfx-meteor 3s linear infinite;pointer-events:none;} .nfx-meteor:before{left:25%;} .nfx-meteor:after{left:65%;animation-delay:1.5s;}
@keyframes nfx-meteor{0%{transform:translate(-30px,-60px) rotate(35deg);opacity:0;}10%{opacity:1;}100%{transform:translate(440px,560px) rotate(35deg);opacity:0;}}
.nfx-meteor>*{position:relative;z-index:1;}
.nfx-starfield,.nfx-particles{position:relative;overflow:hidden;} .nfx-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;} .nfx-starfield>*:not(.nfx-canvas),.nfx-particles>*:not(.nfx-canvas){position:relative;z-index:1;}

/* ===== KURSOR / MYSZ ===== */
.nfx-magnetic{transition:transform .2s ease;will-change:transform;display:inline-block;}
.nfx-spotlight{position:relative;} .nfx-spotlight:before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle 160px at var(--mx,50%) var(--my,50%),transparent,rgba(0,0,0,.78));pointer-events:none;}
.nfx-mouse-glow{position:relative;overflow:hidden;} .nfx-mouse-glow:before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle 200px at var(--mx,50%) var(--my,50%),var(--nfx-neon),transparent 65%);opacity:.32;pointer-events:none;transition:opacity .2s;}
.nfx-cursor-dot{position:fixed;top:0;left:0;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:var(--nfx-neon);pointer-events:none;z-index:99999;mix-blend-mode:screen;transition:width .2s,height .2s,opacity .2s,margin .2s;}
.nfx-cursor-dot.nfx-cursor-big{width:48px;height:48px;margin:-24px 0 0 -24px;opacity:.55;}

/* ===== TEKST (JS dzieli na .nfx-u) ===== */
.nfx-u{display:inline-block;}
.nfx-text-chars .nfx-u,.nfx-text-words .nfx-u,.nfx-text-lines .nfx-u{opacity:0;transform:translateY(.7em);animation:nfx-u-in .5s ease forwards;animation-delay:calc(var(--i)*.04s);}
.nfx-text-rise .nfx-u{opacity:0;transform:translateY(1em);animation:nfx-u-in .6s ease forwards;animation-delay:calc(var(--i)*.06s);}
.nfx-text-reveal{overflow:hidden;} .nfx-text-reveal .nfx-u{opacity:0;transform:translateY(100%);animation:nfx-u-in .6s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i)*.05s);}
.nfx-text-rotate{perspective:600px;} .nfx-text-rotate .nfx-u{opacity:0;transform:rotateX(-90deg);transform-origin:bottom;animation:nfx-u-rot .6s ease forwards;animation-delay:calc(var(--i)*.04s);}
@keyframes nfx-u-in{to{opacity:1;transform:none;}}
@keyframes nfx-u-rot{to{opacity:1;transform:none;}}
.nfx-text-wave .nfx-u{animation:nfx-wave 1.7s ease-in-out infinite;animation-delay:calc(var(--i)*.06s);}
@keyframes nfx-wave{0%,100%{transform:translateY(0);}50%{transform:translateY(-.28em);}}

/* ===== PRZEJSCIA STRON (na load) ===== */
.nfx-page-fade{animation:nfx-pg-fade .8s ease both;} @keyframes nfx-pg-fade{from{opacity:0;}to{opacity:1;}}
.nfx-page-slide{animation:nfx-pg-slide .7s cubic-bezier(.2,.7,.2,1) both;} @keyframes nfx-pg-slide{from{opacity:0;transform:translateY(40px);}to{opacity:1;transform:none;}}
.nfx-page-zoom{animation:nfx-pg-zoom .7s ease both;} @keyframes nfx-pg-zoom{from{opacity:0;transform:scale(.94);}to{opacity:1;transform:none;}}
.nfx-page-blur{animation:nfx-pg-blur .8s ease both;} @keyframes nfx-pg-blur{from{opacity:0;filter:blur(14px);}to{opacity:1;filter:blur(0);}}
.nfx-page-curtain:before{content:'';position:fixed;inset:0;background:#0b0e0d;z-index:9999;transform-origin:top;animation:nfx-curtain 1s ease forwards;pointer-events:none;} @keyframes nfx-curtain{to{transform:scaleY(0);}}

@media (prefers-reduced-motion:reduce){
  .nfx-neon-pulse,.nfx-gradient-text,.nfx-gradient-bg,.nfx-shimmer:after,.nfx-rainbow-border:before,.nfx-liquid,.nfx-border-flow:before,.nfx-border-trace:before,.nfx-aurora:before,.nfx-meteor:before,.nfx-meteor:after,.nfx-text-wave .nfx-u{animation:none !important;}
  .nfx-fade,.nfx-up,.nfx-down,.nfx-left,.nfx-right,.nfx-zoom,.nfx-on-view,.nfx-on-scroll,.nfx-on-load,.nfx-on-idle,.nfx-on-click,.nfx-text-chars .nfx-u,.nfx-text-words .nfx-u,.nfx-text-lines .nfx-u,.nfx-text-rise .nfx-u,.nfx-text-reveal .nfx-u,.nfx-text-rotate .nfx-u{opacity:1 !important;transform:none !important;animation:none !important;}
}

/* ===== AMBIENT: AURORA DUO (2 kolory, pulsowanie) + GRID ===== */
.nfx-aurora-duo{position:relative;overflow:hidden;--nfx-aur-a:var(--nfx-neon);--nfx-aur-b:var(--nfx-violet);}
.nfx-aurora-duo:before,.nfx-aurora-duo:after{content:'';position:absolute;width:65%;aspect-ratio:1;border-radius:50%;filter:blur(60px);pointer-events:none;animation:nfx-aur-pulse 8s ease-in-out infinite;}
.nfx-aurora-duo:before{background:radial-gradient(circle,var(--nfx-aur-a),transparent 65%);top:-25%;left:-12%;}
.nfx-aurora-duo:after{background:radial-gradient(circle,var(--nfx-aur-b),transparent 65%);bottom:-25%;right:-12%;animation-delay:-4s;}
@keyframes nfx-aur-pulse{0%,100%{opacity:.32;transform:scale(1);}50%{opacity:.6;transform:scale(1.14);}}
.nfx-aurora-duo>*{position:relative;z-index:1;}
@media (prefers-reduced-motion:reduce){.nfx-aurora-duo:before,.nfx-aurora-duo:after{animation:none;}}
