/*
 * Nova Talent Connect — fundo animado / parallax
 * Reage ao scroll, movimento do rato e toque.
 * Sem bibliotecas externas.
 */

:root{
    --ntc-o1x:0px;
    --ntc-o1y:0px;
    --ntc-o2x:0px;
    --ntc-o2y:0px;
    --ntc-o3x:0px;
    --ntc-o3y:0px;
    --ntc-o4x:0px;
    --ntc-o4y:0px;
    --ntc-grid-y:0px;
    --ntc-ring-rotate:0deg;
    --ntc-glow-x:50%;
    --ntc-glow-y:24%;
}

html{
    background:#f5f5f8;
}

body.ntc-motion-page{
    position:relative;
    isolation:isolate;
    min-height:100vh;
    background:transparent !important;
}

/*
 * O fundo fica num stacking context atrás do conteúdo,
 * mas acima do fundo do documento.
 */
#ntcMotionBg{
    position:fixed;
    inset:0;
    z-index:-1;
    overflow:hidden;
    pointer-events:none;
    user-select:none;
    background:
        radial-gradient(
            circle at var(--ntc-glow-x) var(--ntc-glow-y),
            rgba(255,255,255,.20),
            transparent 30%
        ),
        linear-gradient(145deg,#f7f8fb 0%,#edf1f7 46%,#f8f5ee 100%);
    transform:translateZ(0);
}

/* Paleta do site principal */
body.ntc-motion-home #ntcMotionBg{
    --motion-a:rgba(49,40,199,.28);
    --motion-b:rgba(102,82,166,.24);
    --motion-c:rgba(232,170,67,.24);
    --motion-d:rgba(37,110,176,.16);
    background:
        radial-gradient(
            circle at var(--ntc-glow-x) var(--ntc-glow-y),
            rgba(255,255,255,.25),
            transparent 28%
        ),
        linear-gradient(145deg,#f7f7fb 0%,#eef0f8 45%,#fbf6eb 100%);
}

/* Paleta da Nova Talent Clean */
body.ntc-motion-clean #ntcMotionBg{
    --motion-a:rgba(42,183,169,.28);
    --motion-b:rgba(30,126,118,.22);
    --motion-c:rgba(232,170,67,.21);
    --motion-d:rgba(23,24,42,.14);
    background:
        radial-gradient(
            circle at var(--ntc-glow-x) var(--ntc-glow-y),
            rgba(255,255,255,.30),
            transparent 28%
        ),
        linear-gradient(145deg,#f6fbfa 0%,#eaf7f5 46%,#fbf7ee 100%);
}

.ntc-motion-orb{
    position:absolute;
    border-radius:50%;
    filter:blur(34px);
    opacity:.95;
    will-change:transform;
    transform:translate3d(0,0,0);
}

.ntc-motion-orb::after{
    content:"";
    position:absolute;
    inset:13%;
    border-radius:inherit;
    background:rgba(255,255,255,.18);
    filter:blur(16px);
}

.ntc-motion-orb--1{
    width:min(48vw,720px);
    aspect-ratio:1;
    left:-12vw;
    top:-8vh;
    background:
        radial-gradient(circle at 58% 45%,var(--motion-a),transparent 66%);
    transform:translate3d(var(--ntc-o1x),var(--ntc-o1y),0);
}

.ntc-motion-orb--2{
    width:min(45vw,680px);
    aspect-ratio:1;
    right:-14vw;
    top:19vh;
    background:
        radial-gradient(circle at 45% 48%,var(--motion-b),transparent 66%);
    transform:translate3d(var(--ntc-o2x),var(--ntc-o2y),0);
}

.ntc-motion-orb--3{
    width:min(42vw,620px);
    aspect-ratio:1;
    left:20vw;
    bottom:-20vh;
    background:
        radial-gradient(circle at 50% 50%,var(--motion-c),transparent 68%);
    transform:translate3d(var(--ntc-o3x),var(--ntc-o3y),0);
}

.ntc-motion-orb--4{
    width:min(34vw,520px);
    aspect-ratio:1;
    right:18vw;
    top:59vh;
    background:
        radial-gradient(circle at 50% 50%,var(--motion-d),transparent 68%);
    opacity:.72;
    transform:translate3d(var(--ntc-o4x),var(--ntc-o4y),0);
}

/* Grelha muito subtil que acompanha o scroll */
.ntc-motion-grid{
    position:absolute;
    inset:-80px;
    opacity:.12;
    background-image:
        linear-gradient(rgba(23,24,42,.09) 1px,transparent 1px),
        linear-gradient(90deg,rgba(23,24,42,.09) 1px,transparent 1px);
    background-size:42px 42px;
    mask-image:linear-gradient(
        to bottom,
        transparent 0%,
        #000 16%,
        #000 84%,
        transparent 100%
    );
    transform:translate3d(0,var(--ntc-grid-y),0);
    will-change:transform;
}

/* Anéis decorativos: rotação acompanha o scroll */
.ntc-motion-rings{
    position:absolute;
    width:min(72vw,950px);
    aspect-ratio:1;
    right:-36vw;
    top:7vh;
    border-radius:50%;
    border:1px solid rgba(23,24,42,.08);
    box-shadow:
        0 0 0 72px rgba(23,24,42,.022),
        0 0 0 145px rgba(23,24,42,.016),
        0 0 0 220px rgba(23,24,42,.011);
    transform:rotate(var(--ntc-ring-rotate));
    will-change:transform;
}

.ntc-motion-rings::before,
.ntc-motion-rings::after{
    content:"";
    position:absolute;
    border-radius:50%;
    border:1px dashed rgba(232,170,67,.15);
}

.ntc-motion-rings::before{
    inset:14%;
}

.ntc-motion-rings::after{
    inset:31%;
    border-color:rgba(49,40,199,.12);
}

body.ntc-motion-clean .ntc-motion-rings::after{
    border-color:rgba(42,183,169,.16);
}

/* Pequeno brilho em movimento contínuo, muito suave */
.ntc-motion-shimmer{
    position:absolute;
    inset:-45%;
    opacity:.22;
    background:
        linear-gradient(
            115deg,
            transparent 38%,
            rgba(255,255,255,.58) 49%,
            transparent 60%
        );
    transform:translate3d(-14%,0,0) rotate(9deg);
    animation:ntcMotionShimmer 18s ease-in-out infinite alternate;
}

@keyframes ntcMotionShimmer{
    from{transform:translate3d(-14%,0,0) rotate(9deg)}
    to{transform:translate3d(14%,0,0) rotate(9deg)}
}

/*
 * Faz alguns blocos já translúcidos integrarem-se melhor no movimento
 * sem alterar cartões/zonas que precisam de fundo branco sólido.
 */
body.ntc-motion-home .hero-card,
body.ntc-motion-clean .hero-card{
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
}

/* Mobile: mantém o efeito, mas reduz custo gráfico */
@media(max-width:760px){
    .ntc-motion-orb{
        filter:blur(28px);
        opacity:.80;
    }

    .ntc-motion-grid{
        opacity:.07;
        background-size:34px 34px;
    }

    .ntc-motion-rings{
        opacity:.65;
        width:110vw;
        right:-66vw;
    }

    .ntc-motion-shimmer{
        opacity:.13;
    }
}

/* Respeita utilizadores que pedem menos movimento */
@media(prefers-reduced-motion:reduce){
    #ntcMotionBg *{
        animation:none !important;
        transition:none !important;
    }

    .ntc-motion-orb,
    .ntc-motion-grid,
    .ntc-motion-rings{
        transform:none !important;
    }
}
