/* c2c-fx :: premium visual layer (additive, non-invasive) v1 */
:root{--fx-acc:#7c3aed;--fx-acc2:#ec4899;--fx-glow:rgba(124,58,237,.35);}
@media (prefers-reduced-motion: reduce){.fx-anim,.fx-bg-canvas{animation:none!important;transition:none!important;}}
/* animated aurora background */
.fx-bg{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;background:#07070d;}
.fx-bg::before,.fx-bg::after{content:"";position:absolute;width:60vw;height:60vw;border-radius:50%;filter:blur(90px);opacity:.5;}
.fx-bg::before{background:radial-gradient(circle,var(--fx-acc),transparent 60%);top:-10%;left:-10%;animation:fxFloatA 18s ease-in-out infinite;}
.fx-bg::after{background:radial-gradient(circle,var(--fx-acc2),transparent 60%);bottom:-15%;right:-10%;animation:fxFloatB 22s ease-in-out infinite;}
@keyframes fxFloatA{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(8vw,6vh) scale(1.15);}}
@keyframes fxFloatB{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-7vw,-5vh) scale(1.1);}}
.fx-bg-canvas{position:fixed;inset:0;z-index:-1;pointer-events:none;}
/* cursor glow */
.fx-cursor{position:fixed;top:0;left:0;width:340px;height:340px;border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);background:radial-gradient(circle,var(--fx-glow),transparent 65%);mix-blend-mode:screen;transition:opacity .3s;opacity:0;}
/* scroll reveal */
.fx-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);}
.fx-reveal.fx-in{opacity:1;transform:none;}
/* 3D tilt card enhancement */
.fx-tilt{transform-style:preserve-3d;transition:transform .2s ease,box-shadow .3s ease;will-change:transform;}
.fx-tilt:hover{box-shadow:0 20px 60px -15px var(--fx-glow);}
.fx-tilt .fx-shine{position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.14),transparent 45%);opacity:0;transition:opacity .3s;pointer-events:none;}
.fx-tilt:hover .fx-shine{opacity:1;}
/* gallery block */
.fx-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin:16px 0;}
.fx-gcard{position:relative;border-radius:16px;overflow:hidden;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);aspect-ratio:16/10;backdrop-filter:blur(6px);}
.fx-gcard .fx-gtag{position:absolute;top:10px;left:10px;font-size:11px;padding:3px 9px;border-radius:20px;background:linear-gradient(135deg,var(--fx-acc),var(--fx-acc2));color:#fff;font-weight:600;letter-spacing:.3px;}
.fx-gcard .fx-gbody{position:absolute;inset:auto 0 0 0;padding:12px 14px;background:linear-gradient(0deg,rgba(0,0,0,.75),transparent);}
.fx-gcard h4{margin:0 0 2px;font-size:14px;color:#fff;}
.fx-gcard p{margin:0;font-size:12px;color:rgba(255,255,255,.7);}
.fx-gcard::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,var(--fx-acc),var(--fx-acc2));opacity:.12;transition:opacity .4s;}
.fx-gcard:hover::before{opacity:.28;}
