.ngpe-wrap{
    position:relative;
    min-height:var(--ngpe-height,720px);
    background:var(--ngpe-bg,#fff);
    overflow:hidden;
    isolation:isolate;
}
.ngpe-fullscreen{min-height:100vh;}
.ngpe-canvas{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    display:block;
    opacity:var(--ngpe-opacity,.85);
    filter:blur(var(--ngpe-blur,0px));
    z-index:0;
}
.ngpe-content{
    position:relative;
    z-index:2;
    min-height:inherit;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:48px 24px;
}
.ngpe-content h1,.ngpe-content h2,.ngpe-content p{max-width:980px;}

/* Background global por página
   Modo correto para Elementor/Woodmart:
   - o canvas fica fixo na viewport;
   - fica acima do fundo branco da página;
   - não bloqueia cliques;
   - widgets/textos ficam visualmente acima das partículas. */
.ngpe-global-wrap{
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    min-height:100vh !important;
    overflow:hidden !important;
    pointer-events:none !important;
    z-index:var(--ngpe-global-z,1) !important;
    background:transparent !important;
    isolation:auto !important;
}
.ngpe-global-wrap .ngpe-canvas{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    z-index:0 !important;
    opacity:var(--ngpe-opacity,.85);
    filter:blur(var(--ngpe-blur,0px));
}

/* Mantém o conteúdo principal acima das partículas sem jogar o fundo branco por cima do canvas */
body.ngpe-global-enabled .elementor-widget,
body.ngpe-global-enabled .elementor-widget-container,
body.ngpe-global-enabled .elementor-heading-title,
body.ngpe-global-enabled .elementor-button-wrapper,
body.ngpe-global-enabled .elementor-icon-list-items,
body.ngpe-global-enabled .elementor-image-box-wrapper,
body.ngpe-global-enabled .elementor-text-editor,
body.ngpe-global-enabled .entry-content > *,
body.ngpe-global-enabled .page-title,
body.ngpe-global-enabled .wd-prefooter,
body.ngpe-global-enabled .wd-page-content,
body.ngpe-global-enabled main article > *{
    position:relative;
    z-index:2;
}

/* Header e admin bar ficam acima do efeito */
body.ngpe-global-enabled #wpadminbar,
body.ngpe-global-enabled header,
body.ngpe-global-enabled .whb-header,
body.ngpe-global-enabled .site-header,
body.ngpe-global-enabled .elementor-location-header{
    position:relative;
    z-index:9999 !important;
}

body.ngpe-global-enabled{
    overflow-x:hidden;
}

/* Conteúdo hero gerenciável por cima do background global */
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-content{
    position:relative;
    z-index:3;
    width:100%;
    min-height:calc(100vh - 80px);
    padding:var(--ngpe-hero-pad,180px) 24px 80px;
    display:flex;
    justify-content:center;
    align-items:flex-start;
    pointer-events:none;
    box-sizing:border-box;
    font-family:var(--ngpe-hero-font,inherit);
    text-align:var(--ngpe-hero-align,center);
    color:var(--ngpe-hero-text,#111);
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-inner{
    width:100%;
    max-width:var(--ngpe-hero-max,980px);
    pointer-events:auto;
}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-left{justify-content:flex-start;}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-right{justify-content:flex-end;}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-brand{
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-weight:600;
    font-size:18px;
    line-height:1;
    margin-bottom:18px;
    color:var(--ngpe-hero-text,#111);
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-mark{
    display:inline-flex;
    width:20px;
    height:20px;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    font-size:12px;
    font-weight:800;
    color:#fff;
    background:linear-gradient(135deg, var(--ngpe-hero-accent,#1557ff), #ff315f 55%, #ff9f1c);
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-kicker{
    font-size:14px;
    line-height:1.4;
    font-weight:500;
    margin-bottom:10px;
    color:var(--ngpe-hero-text,#111);
    opacity:.8;
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-title{
    margin:0 auto 28px;
    max-width:var(--ngpe-hero-max,980px);
    font-size:var(--ngpe-hero-title,72px);
    line-height:.98;
    letter-spacing:-.065em;
    font-weight:650;
    color:var(--ngpe-hero-text,#111);
}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-left .ngpe-hero-title{margin-left:0;}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-right .ngpe-hero-title{margin-right:0;}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-subtitle{
    margin:0 auto 30px;
    max-width:760px;
    font-size:18px;
    line-height:1.6;
    color:var(--ngpe-hero-text,#111);
    opacity:.72;
}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-left .ngpe-hero-subtitle{margin-left:0;}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-right .ngpe-hero-subtitle{margin-right:0;}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-actions{
    display:flex;
    gap:10px;
    justify-content:center;
    align-items:center;
    flex-wrap:wrap;
}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-left .ngpe-hero-actions{justify-content:flex-start;}
body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-align-right .ngpe-hero-actions{justify-content:flex-end;}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:48px;
    padding:0 24px;
    border-radius:999px;
    font-size:16px;
    font-weight:600;
    line-height:1;
    text-decoration:none !important;
    box-shadow:0 10px 30px rgba(0,0,0,.08);
    transition:transform .2s ease, box-shadow .2s ease;
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-btn:hover{
    transform:translateY(-1px);
    box-shadow:0 14px 34px rgba(0,0,0,.12);
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-btn-primary{
    background:var(--ngpe-hero-btn-bg,#111);
    color:var(--ngpe-hero-btn-text,#fff) !important;
}
body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-btn-secondary{
    background:var(--ngpe-hero-btn2-bg,#fff);
    color:var(--ngpe-hero-btn2-text,#111) !important;
    border:1px solid rgba(0,0,0,.08);
}
@media (max-width: 767px){
    body.ngpe-global-enabled #ngpe-hero-content.ngpe-hero-content{
        min-height:calc(100vh - 60px);
        padding:120px 20px 56px;
    }
    body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-title{
        font-size:var(--ngpe-hero-title-mobile,42px);
        letter-spacing:-.045em;
        line-height:1.02;
    }
    body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-subtitle{font-size:16px;}
    body.ngpe-global-enabled #ngpe-hero-content .ngpe-hero-btn{width:100%;max-width:320px;}
}

/* Aura de partículas ao redor do mouse */
.ngpe-cursor-wrap{
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    overflow:hidden !important;
    pointer-events:none !important;
    z-index:var(--ngpe-cursor-z,9998) !important;
    background:transparent !important;
    isolation:auto !important;
}
.ngpe-cursor-wrap .ngpe-canvas{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    z-index:0 !important;
    opacity:var(--ngpe-opacity,1);
    filter:blur(var(--ngpe-blur,0px));
}

/* Aplicação por classe CSS no Elementor
   Coloque a classe no container/seção em Avançado > Classes CSS.
   O plugin injeta o canvas dentro desse bloco e mantém o conteúdo acima. */
.ngpe-target-host{
    position:relative !important;
    overflow:hidden !important;
    isolation:isolate !important;
}
.ngpe-target-host > .ngpe-target-canvas{
    position:absolute !important;
    inset:0 !important;
    width:100% !important;
    height:100% !important;
    z-index:0 !important;
    pointer-events:none !important;
    opacity:var(--ngpe-opacity,1);
    filter:blur(var(--ngpe-blur,0px));
}
.ngpe-target-host > *:not(.ngpe-target-canvas){
    position:relative;
    z-index:2;
}

/* v1.0.1 - correção para heros quebrados em 2 blocos no Elementor.
   A classe deve ficar no container pai; esta regra garante área suficiente
   para o canvas aparecer atrás do título e do bloco de baixo. */
.ngpe-target-host{
    min-height:var(--ngpe-target-min-height, auto) !important;
}
.ngpe-target-host > .ngpe-target-canvas{
    top:0 !important;
    bottom:auto !important;
    height:100% !important;
}
.ngpe-target-host .elementor-widget-container,
.ngpe-target-host .elementor-heading-title,
.ngpe-target-host .elementor-button-wrapper,
.ngpe-target-host .elementor-container,
.ngpe-target-host .e-con-inner{
    position:relative !important;
    z-index:2 !important;
}

/* Elementor Widget - NEURALGEN Partículas */
.ngpe-elementor-widget{
    min-height:720px;
    background:#fff;
    overflow:hidden;
    position:relative;
    isolation:isolate;
}
.ngpe-elementor-widget .ngpe-content{
    position:relative;
    z-index:2;
    min-height:inherit;
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    padding:120px 24px;
    box-sizing:border-box;
}
.ngpe-elementor-widget .ngpe-hero-inner{
    width:100%;
    max-width:1040px;
    margin:0 auto;
}
.ngpe-elementor-widget .ngpe-hero-brand{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    margin-bottom:18px;
    font-size:18px;
    line-height:1;
    font-weight:600;
    color:#111;
}
.ngpe-elementor-widget .ngpe-hero-mark{
    display:inline-flex;
    width:22px;
    height:22px;
    align-items:center;
    justify-content:center;
    border-radius:999px;
    color:#fff;
    font-size:12px;
    font-weight:800;
    background:linear-gradient(135deg,#1557ff,#8b5cf6 45%,#ff315f 72%,#ff9f1c);
}

.ngpe-elementor-widget .ngpe-hero-mark-image{
    background:transparent !important;
    overflow:hidden;
    padding:0;
}
.ngpe-elementor-widget .ngpe-hero-mark img{
    display:block;
    object-fit:contain;
    border-radius:inherit;
}

.ngpe-elementor-widget .ngpe-hero-title{
    margin:0 auto 28px;
    max-width:1040px;
    color:#111;
    font-size:72px;
    line-height:.98;
    letter-spacing:-.065em;
    font-weight:650;
}
.ngpe-elementor-widget .ngpe-hero-subtitle{
    margin:0 auto 30px;
    max-width:760px;
    font-size:18px;
    line-height:1.6;
    color:#111;
    opacity:.72;
}
.ngpe-elementor-widget .ngpe-hero-actions{
    display:flex;
    gap:10px;
    justify-content:center;
    align-items:center;
    flex-wrap:wrap;
}
.ngpe-elementor-widget .ngpe-hero-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:48px;
    padding:0 24px;
    border-radius:999px;
    font-size:16px;
    font-weight:600;
    line-height:1;
    text-decoration:none !important;
    box-shadow:0 10px 30px rgba(0,0,0,.08);
    transition:transform .2s ease, box-shadow .2s ease;
}
.ngpe-elementor-widget .ngpe-hero-btn:hover{
    transform:translateY(-1px);
    box-shadow:0 14px 34px rgba(0,0,0,.12);
}
.ngpe-elementor-widget .ngpe-hero-btn-primary{background:#111;color:#fff !important;}
.ngpe-elementor-widget .ngpe-hero-btn-secondary{background:#fff;color:#111 !important;border:1px solid rgba(0,0,0,.08);}

@media (max-width:767px){
    .ngpe-elementor-widget .ngpe-content{padding:88px 20px;}
    
.ngpe-elementor-widget .ngpe-hero-mark-image{
    background:transparent !important;
    overflow:hidden;
    padding:0;
}
.ngpe-elementor-widget .ngpe-hero-mark img{
    display:block;
    object-fit:contain;
    border-radius:inherit;
}

.ngpe-elementor-widget .ngpe-hero-title{font-size:42px;letter-spacing:-.045em;line-height:1.02;}
    .ngpe-elementor-widget .ngpe-hero-subtitle{font-size:16px;}
    .ngpe-elementor-widget .ngpe-hero-btn{width:100%;max-width:320px;}
}

/* v1.0.3 - Título com letra ativa colorida e zona limpa de leitura */
.ngpe-elementor-widget .ngpe-title-reveal{
    color:var(--ngpe-title-final,#111);
    overflow:visible;
    white-space:normal;
    --ngpe-reveal-duration:950ms;
    --ngpe-reveal-stagger:22ms;
}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-char{
    display:inline-block;
    opacity:0;
    transform:translateX(-22px) scale(.965);
    filter:blur(8px);
    will-change:transform, opacity, filter, color;
    animation:ngpeTitleCharReveal var(--ngpe-reveal-duration) cubic-bezier(.16,1,.3,1) forwards;
    animation-delay:calc(var(--ngpe-i) * var(--ngpe-reveal-stagger));
}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-char-c1{color:var(--ngpe-title-c1,#1557ff);}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-char-c2{color:var(--ngpe-title-c2,#8b5cf6);}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-char-c3{color:var(--ngpe-title-c3,#ff315f);}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-char-c4{color:var(--ngpe-title-c4,#ff9f1c);}
.ngpe-elementor-widget .ngpe-title-reveal .ngpe-space{min-width:.22em;}

@keyframes ngpeTitleCharReveal{
    0%{opacity:0;transform:translateX(-22px) scale(.965);filter:blur(8px);}
    1%{opacity:1;}
    8%{color:var(--ngpe-title-c2,#8b5cf6);filter:blur(2px);}
    12%{color:var(--ngpe-title-c3,#ff315f);}
    16%{color:var(--ngpe-title-final,#111);}
    100%{opacity:1;transform:translateX(0) scale(1);filter:blur(0);color:var(--ngpe-title-final,#111);}
}

@media (prefers-reduced-motion: reduce){
    .ngpe-elementor-widget .ngpe-title-reveal .ngpe-char{
        animation:none !important;
        opacity:1;
        transform:none;
        filter:none;
        color:var(--ngpe-title-final,#111);
    }
}

/* Modo transbordar: o efeito deixa de ficar limitado ao bloco do Elementor
   e passa a desenhar na viewport inteira, como o hero do Antigravity. */
.ngpe-wrap.ngpe-overflow-viewport{
    overflow:visible !important;
    isolation:auto !important;
    background:transparent !important;
    z-index:auto;
}
.ngpe-wrap.ngpe-overflow-viewport .ngpe-canvas{
    position:fixed !important;
    inset:0 !important;
    width:100vw !important;
    height:100vh !important;
    max-width:none !important;
    max-height:none !important;
    pointer-events:none !important;
    z-index:var(--ngpe-overflow-z,0) !important;
}
.ngpe-wrap.ngpe-overflow-viewport .ngpe-content{
    position:relative !important;
    z-index:2 !important;
}
.ngpe-wrap.ngpe-overflow-viewport .ngpe-hero-inner{
    position:relative;
    z-index:3;
}
