/* Efeitos decorativos do fundo público.
   O efeito original permanece em .effect-classic; os demais são selecionados pelo admin. */

/* Base compartilhada para as telas de intérpretes e login administrativo.
   A página de orçamento mantém sua base original em assets/css/style.css. */
.partner-background .saas-effects,.auth-background .saas-effects{position:absolute;inset:0;z-index:4;overflow:hidden;pointer-events:none}
.partner-background .saas-orb,.auth-background .saas-orb{position:absolute;border-radius:50%;filter:blur(2px);opacity:.34;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);box-shadow:inset 0 0 28px color-mix(in srgb,var(--accent) 14%,transparent),0 0 50px color-mix(in srgb,var(--teal) 18%,transparent)}
.partner-background .orb-one,.auth-background .orb-one{width:230px;height:230px;right:5%;top:9%;animation:saasFloatOne 13s ease-in-out infinite}
.partner-background .orb-two,.auth-background .orb-two{width:92px;height:92px;left:39%;bottom:9%;animation:saasFloatTwo 10s ease-in-out infinite reverse}
.partner-background .orb-three,.auth-background .orb-three{width:46px;height:46px;left:10%;top:22%;animation:saasPulse 7s ease-in-out infinite}
.partner-background .data-line,.auth-background .data-line{position:absolute;height:1px;transform-origin:left center;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 78%,white),transparent);filter:drop-shadow(0 0 5px color-mix(in srgb,var(--accent) 55%,transparent));opacity:.28}
.partner-background .line-one,.auth-background .line-one{width:420px;top:18%;left:-110px;transform:rotate(13deg);animation:dataSweep 12s linear infinite}
.partner-background .line-two,.auth-background .line-two{width:530px;right:-130px;bottom:20%;transform:rotate(-11deg);animation:dataSweepReverse 15s linear infinite}
.partner-background .line-three,.auth-background .line-three{width:300px;left:31%;top:57%;transform:rotate(4deg);animation:dataSweep 18s linear infinite reverse}
.partner-background .data-dot,.auth-background .data-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 11%,transparent),0 0 17px color-mix(in srgb,var(--accent) 84%,transparent);animation:saasPulse 3.8s ease-in-out infinite}
.partner-background .dot-one,.auth-background .dot-one{top:16%;left:21%}
.partner-background .dot-two,.auth-background .dot-two{top:72%;left:43%;animation-delay:-1.2s}
.partner-background .dot-three,.auth-background .dot-three{top:34%;right:13%;animation-delay:-2.1s}
.partner-background .dot-four,.auth-background .dot-four{bottom:9%;right:34%;animation-delay:-.6s}
.intensity-low .saas-effects,.intensity-low .background-grid{opacity:.55}
.intensity-high .saas-effects{opacity:1}
.intensity-high .background-grid{opacity:.22}
.no-saas-animations .saas-effects,.no-saas-animations .background-grid{display:none!important}
@keyframes saasFloatOne{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-35px,24px,0) scale(1.08)}}
@keyframes saasFloatTwo{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(30px,-28px,0)}}
@keyframes saasPulse{0%,100%{opacity:.28;transform:scale(.84)}50%{opacity:.82;transform:scale(1.16)}}
@keyframes dataSweep{0%{translate:-9% 0;opacity:0}15%,75%{opacity:.32}100%{translate:32% 0;opacity:0}}
@keyframes dataSweepReverse{0%{translate:12% 0;opacity:0}20%,72%{opacity:.3}100%{translate:-34% 0;opacity:0}}
@media(prefers-reduced-motion:reduce){.saas-effects,.background-grid{display:none!important}}

.saas-effects .fx-item{display:none;position:absolute;pointer-events:none}
.saas-effects .fx-1{--fx-x:6%;--fx-y:14%;--fx-delay:-1.1s;--fx-duration:10s;--fx-size:5px;--fx-dx:34px;--fx-dy:-105px}
.saas-effects .fx-2{--fx-x:15%;--fx-y:78%;--fx-delay:-4.2s;--fx-duration:13s;--fx-size:8px;--fx-dx:-22px;--fx-dy:-130px}
.saas-effects .fx-3{--fx-x:24%;--fx-y:38%;--fx-delay:-7.3s;--fx-duration:12s;--fx-size:4px;--fx-dx:42px;--fx-dy:-88px}
.saas-effects .fx-4{--fx-x:33%;--fx-y:88%;--fx-delay:-2.5s;--fx-duration:15s;--fx-size:6px;--fx-dx:-35px;--fx-dy:-150px}
.saas-effects .fx-5{--fx-x:41%;--fx-y:20%;--fx-delay:-9.2s;--fx-duration:14s;--fx-size:9px;--fx-dx:24px;--fx-dy:-115px}
.saas-effects .fx-6{--fx-x:49%;--fx-y:67%;--fx-delay:-5.5s;--fx-duration:11s;--fx-size:4px;--fx-dx:38px;--fx-dy:-95px}
.saas-effects .fx-7{--fx-x:57%;--fx-y:43%;--fx-delay:-3.1s;--fx-duration:16s;--fx-size:7px;--fx-dx:-28px;--fx-dy:-145px}
.saas-effects .fx-8{--fx-x:64%;--fx-y:84%;--fx-delay:-8.6s;--fx-duration:12s;--fx-size:5px;--fx-dx:31px;--fx-dy:-120px}
.saas-effects .fx-9{--fx-x:71%;--fx-y:28%;--fx-delay:-6.4s;--fx-duration:15s;--fx-size:8px;--fx-dx:-39px;--fx-dy:-108px}
.saas-effects .fx-10{--fx-x:78%;--fx-y:73%;--fx-delay:-1.8s;--fx-duration:13s;--fx-size:4px;--fx-dx:26px;--fx-dy:-138px}
.saas-effects .fx-11{--fx-x:84%;--fx-y:12%;--fx-delay:-10.5s;--fx-duration:17s;--fx-size:6px;--fx-dx:-24px;--fx-dy:-92px}
.saas-effects .fx-12{--fx-x:90%;--fx-y:54%;--fx-delay:-4.9s;--fx-duration:12s;--fx-size:9px;--fx-dx:36px;--fx-dy:-142px}
.saas-effects .fx-13{--fx-x:11%;--fx-y:54%;--fx-delay:-6.9s;--fx-duration:14s;--fx-size:4px;--fx-dx:29px;--fx-dy:-118px}
.saas-effects .fx-14{--fx-x:29%;--fx-y:10%;--fx-delay:-3.8s;--fx-duration:11s;--fx-size:7px;--fx-dx:-32px;--fx-dy:-98px}
.saas-effects .fx-15{--fx-x:53%;--fx-y:91%;--fx-delay:-9.8s;--fx-duration:16s;--fx-size:5px;--fx-dx:22px;--fx-dy:-154px}
.saas-effects .fx-16{--fx-x:94%;--fx-y:90%;--fx-delay:-7.7s;--fx-duration:15s;--fx-size:7px;--fx-dx:-38px;--fx-dy:-126px}

.has-saas-animations:not(.effect-classic) .saas-orb,
.has-saas-animations:not(.effect-classic) .data-line,
.has-saas-animations:not(.effect-classic) .data-dot{display:none}
.has-saas-animations:not(.effect-classic) .background-grid{opacity:0}

/* 1. Aurora suave */
.effect-aurora .saas-effects::before,.effect-aurora .saas-effects::after{content:"";position:absolute;width:78%;height:42%;border-radius:50%;filter:blur(42px);mix-blend-mode:screen;opacity:.42;will-change:transform}
.effect-aurora .saas-effects::before{left:-18%;top:2%;background:linear-gradient(115deg,transparent 4%,color-mix(in srgb,var(--accent) 55%,transparent),color-mix(in srgb,var(--teal) 38%,transparent),transparent 88%);animation:fxAuroraA 15s ease-in-out infinite alternate}
.effect-aurora .saas-effects::after{right:-20%;bottom:2%;background:linear-gradient(70deg,transparent 5%,color-mix(in srgb,var(--teal) 48%,transparent),color-mix(in srgb,var(--accent) 38%,transparent),transparent 90%);animation:fxAuroraB 18s ease-in-out infinite alternate-reverse}
@keyframes fxAuroraA{0%{transform:translate3d(-5%,-8%,0) rotate(-8deg) scale(.94)}100%{transform:translate3d(28%,22%,0) rotate(8deg) scale(1.12)}}
@keyframes fxAuroraB{0%{transform:translate3d(8%,8%,0) rotate(5deg) scale(1)}100%{transform:translate3d(-24%,-18%,0) rotate(-10deg) scale(1.16)}}

/* 2. Partículas flutuantes */
.effect-particles .fx-item{display:block;left:var(--fx-x);top:var(--fx-y);width:var(--fx-size);height:var(--fx-size);border-radius:50%;background:color-mix(in srgb,var(--accent) 82%,white);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 65%,transparent);opacity:.2;animation:fxParticleRise var(--fx-duration) ease-in-out var(--fx-delay) infinite}
.effect-particles .fx-item:nth-last-child(3n){background:color-mix(in srgb,var(--teal) 72%,white);box-shadow:0 0 17px color-mix(in srgb,var(--teal) 62%,transparent)}
@keyframes fxParticleRise{0%,100%{transform:translate3d(0,36px,0) scale(.65);opacity:.08}45%{opacity:.78}70%{transform:translate3d(var(--fx-dx),var(--fx-dy),0) scale(1.12);opacity:.38}}

/* 3. Grade neon */
.has-saas-animations.effect-neon-grid .background-grid{opacity:.28;inset:-25%;background-size:46px 46px;transform:perspective(780px) rotateX(66deg) translateY(43%);animation:fxGridTravel 8s linear infinite}
.effect-neon-grid .saas-effects::before{content:"";position:absolute;left:0;right:0;height:2px;top:-4%;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 76%,white),transparent);filter:drop-shadow(0 0 9px color-mix(in srgb,var(--accent) 75%,transparent));animation:fxGridScan 6.5s ease-in-out infinite}
@keyframes fxGridTravel{to{background-position:0 46px,46px 0}}
@keyframes fxGridScan{0%,10%{transform:translateY(0);opacity:0}25%{opacity:.8}80%{opacity:.4}100%{transform:translateY(108vh);opacity:0}}

/* 4. Ondas luminosas */
.effect-waves .saas-effects::before,.effect-waves .saas-effects::after{content:"";position:absolute;inset:-20%;background:repeating-radial-gradient(ellipse at 22% 96%,transparent 0 54px,color-mix(in srgb,var(--accent) 20%,transparent) 56px 58px,transparent 60px 112px);opacity:.68;transform:rotate(-7deg);animation:fxWaveMove 14s linear infinite}
.effect-waves .saas-effects::after{background:repeating-radial-gradient(ellipse at 88% 2%,transparent 0 70px,color-mix(in srgb,var(--teal) 24%,transparent) 72px 74px,transparent 76px 145px);animation-direction:reverse;animation-duration:19s}
@keyframes fxWaveMove{to{transform:rotate(-7deg) translate3d(8%,5%,0) scale(1.08)}}

/* 5. Constelação */
.effect-constellation .data-line,.effect-constellation .data-dot{display:block}
.effect-constellation .data-line{height:1px;opacity:.22;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 70%,white),transparent);animation:fxConstellationLine 5s ease-in-out infinite}
.effect-constellation .line-one{width:48%;left:4%;top:24%;transform:rotate(18deg)}
.effect-constellation .line-two{width:42%;right:5%;bottom:28%;transform:rotate(-16deg);animation-delay:-2s}
.effect-constellation .line-three{width:36%;left:32%;top:58%;transform:rotate(7deg);animation-delay:-3.5s}
.effect-constellation .data-dot{width:7px;height:7px;background:white;box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 10%,transparent),0 0 18px color-mix(in srgb,var(--accent) 70%,transparent);animation:fxStarPulse 3.8s ease-in-out infinite}
.effect-constellation .fx-item{display:block;left:var(--fx-x);top:var(--fx-y);width:3px;height:3px;border-radius:50%;background:color-mix(in srgb,var(--accent) 76%,white);box-shadow:0 0 8px color-mix(in srgb,var(--accent) 65%,transparent);animation:fxStarPulse 4.8s ease-in-out var(--fx-delay) infinite}
@keyframes fxConstellationLine{0%,100%{opacity:.12;filter:brightness(.7)}50%{opacity:.45;filter:brightness(1.45)}}
@keyframes fxStarPulse{0%,100%{opacity:.18;transform:scale(.7)}50%{opacity:.9;transform:scale(1.25)}}

/* 6. Bolhas de vidro */
.effect-bubbles .saas-orb,.effect-bubbles .fx-item{display:block;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 34%,transparent);background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.26),color-mix(in srgb,var(--teal) 8%,transparent) 42%,transparent 70%);box-shadow:inset -10px -13px 24px rgba(0,0,0,.05),inset 8px 8px 17px rgba(255,255,255,.11),0 12px 35px rgba(0,0,0,.08);filter:none;opacity:.44;animation:fxBubbleFloat 13s ease-in-out infinite}
.effect-bubbles .orb-one{width:220px;height:220px;right:7%;top:8%}.effect-bubbles .orb-two{width:105px;height:105px;left:38%;bottom:10%;animation-delay:-5s}.effect-bubbles .orb-three{width:55px;height:55px;left:9%;top:24%;animation-delay:-8s}
.effect-bubbles .fx-item{left:var(--fx-x);top:var(--fx-y);width:clamp(24px,calc(var(--fx-size) + 28px),58px);height:clamp(24px,calc(var(--fx-size) + 28px),58px);animation-duration:var(--fx-duration);animation-delay:var(--fx-delay);opacity:.26}
@keyframes fxBubbleFloat{0%,100%{transform:translate3d(0,12px,0)}50%{transform:translate3d(18px,-26px,0) scale(1.04)}}

/* 7. Anéis digitais */
.effect-rings .saas-orb{display:block;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 48%,transparent);background:transparent;filter:none;opacity:.56;box-shadow:0 0 24px color-mix(in srgb,var(--accent) 13%,transparent),inset 0 0 22px color-mix(in srgb,var(--teal) 10%,transparent)}
.effect-rings .orb-one{width:290px;height:290px;right:-40px;top:4%;animation:fxRingSpin 16s linear infinite}.effect-rings .orb-one::before,.effect-rings .orb-two::before{content:"";position:absolute;inset:15%;border:1px dashed color-mix(in srgb,var(--accent) 50%,transparent);border-radius:50%}
.effect-rings .orb-two{width:170px;height:170px;left:25%;bottom:-15px;animation:fxRingSpin 12s linear infinite reverse}.effect-rings .orb-three{width:86px;height:86px;left:8%;top:22%;border-style:dashed;animation:fxRingSpin 8s linear infinite}
@keyframes fxRingSpin{to{transform:rotate(360deg)}}

/* 8. Hexágonos tecnológicos */
.effect-hexagons .saas-effects::before{content:"";position:absolute;inset:-20%;opacity:.35;background-image:linear-gradient(30deg,color-mix(in srgb,var(--accent) 17%,transparent) 12%,transparent 12.5%,transparent 87%,color-mix(in srgb,var(--accent) 17%,transparent) 87.5%,color-mix(in srgb,var(--accent) 17%,transparent)),linear-gradient(150deg,color-mix(in srgb,var(--accent) 17%,transparent) 12%,transparent 12.5%,transparent 87%,color-mix(in srgb,var(--accent) 17%,transparent) 87.5%,color-mix(in srgb,var(--accent) 17%,transparent)),linear-gradient(30deg,color-mix(in srgb,var(--teal) 14%,transparent) 12%,transparent 12.5%,transparent 87%,color-mix(in srgb,var(--teal) 14%,transparent) 87.5%,color-mix(in srgb,var(--teal) 14%,transparent)),linear-gradient(150deg,color-mix(in srgb,var(--teal) 14%,transparent) 12%,transparent 12.5%,transparent 87%,color-mix(in srgb,var(--teal) 14%,transparent) 87.5%,color-mix(in srgb,var(--teal) 14%,transparent));background-size:68px 119px;background-position:0 0,0 0,34px 59.5px,34px 59.5px;animation:fxHexMove 18s linear infinite}
.effect-hexagons .saas-effects::after{content:"";position:absolute;width:240px;height:240px;right:8%;top:12%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 18%,transparent),transparent 67%);filter:blur(16px);animation:fxHexPulse 5s ease-in-out infinite}
@keyframes fxHexMove{to{background-position:68px 119px,68px 119px,102px 178.5px,102px 178.5px}}
@keyframes fxHexPulse{50%{transform:scale(1.2);opacity:.45}}

/* 9. Chuva de dados */
.effect-data-rain .fx-item{display:block;left:var(--fx-x);top:-18%;width:1px;height:clamp(54px,8vw,118px);background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--accent) 72%,white),transparent);filter:drop-shadow(0 0 5px color-mix(in srgb,var(--accent) 64%,transparent));opacity:.45;animation:fxDataRain var(--fx-duration) linear var(--fx-delay) infinite}
.effect-data-rain .fx-item:nth-last-child(3n){width:2px;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--teal) 68%,white),transparent)}
@keyframes fxDataRain{0%{transform:translateY(-20vh);opacity:0}15%{opacity:.7}85%{opacity:.26}100%{transform:translateY(132vh);opacity:0}}

/* 10. Radar digital */
.effect-radar .saas-effects::before{content:"";position:absolute;width:min(64vw,680px);aspect-ratio:1;right:-10%;top:50%;transform:translateY(-50%);border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);background:repeating-radial-gradient(circle,transparent 0 66px,color-mix(in srgb,var(--accent) 14%,transparent) 67px 68px),repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--accent) 10%,transparent) 0 1deg,transparent 1deg 30deg);box-shadow:inset 0 0 70px color-mix(in srgb,var(--teal) 8%,transparent);opacity:.58}
.effect-radar .saas-effects::after{content:"";position:absolute;width:min(64vw,680px);aspect-ratio:1;right:-10%;top:50%;border-radius:50%;transform:translateY(-50%);background:conic-gradient(from 0deg,transparent 0 320deg,color-mix(in srgb,var(--accent) 42%,transparent) 346deg,color-mix(in srgb,var(--accent) 4%,transparent) 360deg);animation:fxRadarSweep 7s linear infinite;mix-blend-mode:screen}
@keyframes fxRadarSweep{to{transform:translateY(-50%) rotate(360deg)}}

/* 11. Feixes de luz */
.effect-light-beams .saas-effects::before,.effect-light-beams .saas-effects::after{content:"";position:absolute;width:34%;height:150%;top:-25%;filter:blur(7px);opacity:.34;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 25%,white),transparent);transform:rotate(18deg);animation:fxBeamSweep 12s ease-in-out infinite}
.effect-light-beams .saas-effects::before{left:-32%}.effect-light-beams .saas-effects::after{left:40%;animation-delay:-6s;animation-direction:reverse;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--teal) 30%,white),transparent)}
@keyframes fxBeamSweep{0%,100%{translate:-12% 0;opacity:.12}50%{translate:190% 0;opacity:.48}}

/* 12. Poeira digital */
.effect-digital-dust .fx-item{display:block;left:var(--fx-x);top:var(--fx-y);width:var(--fx-size);height:var(--fx-size);border-radius:1px;background:color-mix(in srgb,var(--accent) 78%,white);box-shadow:0 0 9px color-mix(in srgb,var(--accent) 58%,transparent);animation:fxDustBlink 4.6s steps(4,end) var(--fx-delay) infinite}
.effect-digital-dust .fx-item:nth-last-child(2n){width:2px;height:2px;background:color-mix(in srgb,var(--teal) 76%,white)}
@keyframes fxDustBlink{0%,100%{opacity:.08;transform:translate(0,0)}35%{opacity:.9;transform:translate(11px,-8px)}68%{opacity:.22;transform:translate(-7px,10px)}}

/* 13. Órbitas */
.effect-orbit .saas-orb{display:block;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);background:transparent;filter:none;box-shadow:none;opacity:.58}
.effect-orbit .orb-one{width:430px;height:220px;right:-50px;top:16%;transform:rotate(-16deg);animation:fxOrbitDrift 13s ease-in-out infinite}.effect-orbit .orb-two{width:260px;height:125px;left:18%;bottom:7%;transform:rotate(14deg);animation:fxOrbitDrift 10s ease-in-out infinite reverse}.effect-orbit .orb-three{width:120px;height:58px;left:6%;top:28%;transform:rotate(-28deg);animation:fxOrbitDrift 8s ease-in-out infinite}
.effect-orbit .data-dot{display:block;width:8px;height:8px;background:color-mix(in srgb,var(--accent) 85%,white);box-shadow:0 0 18px color-mix(in srgb,var(--accent) 72%,transparent);animation:fxOrbitPoint 9s ease-in-out infinite}
.effect-orbit .dot-one{top:19%;left:72%}.effect-orbit .dot-two{top:69%;left:34%;animation-delay:-2s}.effect-orbit .dot-three{top:32%;right:12%;animation-delay:-4s}.effect-orbit .dot-four{bottom:17%;right:26%;animation-delay:-6s}
@keyframes fxOrbitDrift{50%{translate:18px -13px;scale:1.04}}
@keyframes fxOrbitPoint{0%,100%{transform:translate3d(-20px,14px,0) scale(.7);opacity:.25}50%{transform:translate3d(28px,-18px,0) scale(1.22);opacity:.95}}

/* 14. Faíscas */
.effect-sparks .fx-item{display:block;left:var(--fx-x);top:var(--fx-y);width:clamp(24px,4vw,58px);height:2px;border-radius:999px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 86%,white));filter:drop-shadow(0 0 6px color-mix(in srgb,var(--accent) 72%,transparent));transform:rotate(-28deg);animation:fxSparkFlight var(--fx-duration) ease-in var(--fx-delay) infinite}
.effect-sparks .fx-item:nth-last-child(3n){transform:rotate(24deg);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--teal) 78%,white))}
@keyframes fxSparkFlight{0%{translate:-65px 70px;opacity:0}22%{opacity:.82}100%{translate:110px -125px;opacity:0}}

/* 15. Formas de vidro */
.effect-glass-shapes .fx-item{display:block;left:var(--fx-x);top:var(--fx-y);width:clamp(42px,calc(var(--fx-size) + 58px),78px);height:clamp(30px,calc(var(--fx-size) + 38px),58px);border:1px solid rgba(255,255,255,.2);border-radius:clamp(9px,1.4vw,20px);background:linear-gradient(135deg,rgba(255,255,255,.14),color-mix(in srgb,var(--teal) 8%,transparent));box-shadow:inset 0 1px rgba(255,255,255,.22),0 18px 42px rgba(0,0,0,.08);backdrop-filter:blur(2px);opacity:.38;animation:fxGlassFloat var(--fx-duration) ease-in-out var(--fx-delay) infinite}
.effect-glass-shapes .fx-item:nth-last-child(n+9){display:none}.effect-glass-shapes .fx-item:nth-last-child(2n){transform:rotate(18deg)}
@keyframes fxGlassFloat{0%,100%{translate:0 10px;rotate:-4deg}50%{translate:24px -24px;rotate:8deg}}

/* 16. Ondas concêntricas */
.effect-ripple .saas-orb{display:block;left:50%;top:52%;width:120px;height:120px;border-radius:50%;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:transparent;filter:none;box-shadow:0 0 35px color-mix(in srgb,var(--accent) 8%,transparent);opacity:0;animation:fxRipple 9s ease-out infinite}
.effect-ripple .orb-one{animation-delay:0s}.effect-ripple .orb-two{animation-delay:-3s}.effect-ripple .orb-three{animation-delay:-6s}
.effect-ripple .saas-effects::before{content:"";position:absolute;width:10px;height:10px;left:50%;top:52%;border-radius:50%;background:color-mix(in srgb,var(--accent) 84%,white);box-shadow:0 0 28px color-mix(in srgb,var(--accent) 75%,transparent);transform:translate(-50%,-50%);animation:fxStarPulse 3s ease-in-out infinite}
@keyframes fxRipple{0%{transform:translate(-50%,-50%) scale(.2);opacity:.72}100%{transform:translate(-50%,-50%) scale(7);opacity:0}}

/* 17. Céu estrelado */
.effect-starfield .saas-effects::before,.effect-starfield .saas-effects::after{content:"";position:absolute;inset:-20%;background-image:radial-gradient(circle,rgba(255,255,255,.72) 0 1px,transparent 1.8px),radial-gradient(circle,color-mix(in srgb,var(--accent) 68%,white) 0 1px,transparent 1.9px),radial-gradient(circle,color-mix(in srgb,var(--teal) 72%,white) 0 1.3px,transparent 2px);background-size:83px 91px,137px 149px,211px 197px;background-position:0 0,34px 67px,92px 22px;opacity:.44;animation:fxStarsDrift 24s linear infinite}
.effect-starfield .saas-effects::after{transform:scale(1.25);opacity:.22;animation-duration:36s;animation-direction:reverse}
.effect-starfield .data-dot{display:block;background:#fff;box-shadow:0 0 18px color-mix(in srgb,var(--accent) 78%,transparent);animation:fxStarPulse 3.5s ease-in-out infinite}
@keyframes fxStarsDrift{to{background-position:83px 91px,171px 216px,303px 219px}}

/* 18. Linhas diagonais */
.effect-diagonal-lines .saas-effects::before{content:"";position:absolute;inset:-35%;background:repeating-linear-gradient(112deg,transparent 0 30px,color-mix(in srgb,var(--accent) 17%,transparent) 31px 32px,transparent 33px 64px);opacity:.62;animation:fxDiagonalMove 11s linear infinite}
.effect-diagonal-lines .saas-effects::after{content:"";position:absolute;inset:-25%;background:repeating-linear-gradient(68deg,transparent 0 70px,color-mix(in srgb,var(--teal) 12%,transparent) 71px 72px,transparent 73px 140px);animation:fxDiagonalMove 19s linear infinite reverse}
@keyframes fxDiagonalMove{to{transform:translate3d(110px,-70px,0)}}

/* 19. Malha holográfica */
.has-saas-animations.effect-holographic-mesh .background-grid{opacity:.25;inset:-32%;background-image:linear-gradient(color-mix(in srgb,var(--accent) 23%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--teal) 22%,transparent) 1px,transparent 1px);background-size:52px 52px;transform:perspective(820px) rotateX(63deg) rotateZ(-3deg) translateY(42%);animation:fxMeshBreathe 9s ease-in-out infinite}
.effect-holographic-mesh .saas-effects::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 68% 62%,color-mix(in srgb,var(--accent) 17%,transparent),transparent 48%);filter:blur(12px);animation:fxMeshGlow 7s ease-in-out infinite alternate}
@keyframes fxMeshBreathe{0%,100%{background-position:0 0;transform:perspective(820px) rotateX(63deg) rotateZ(-3deg) translateY(42%) scale(1)}50%{background-position:26px 52px;transform:perspective(820px) rotateX(60deg) rotateZ(2deg) translateY(39%) scale(1.05)}}
@keyframes fxMeshGlow{to{transform:translate3d(-18%,8%,0) scale(1.18);opacity:.45}}

/* 20. Rede pulsante */
.effect-pulse-network .data-line,.effect-pulse-network .data-dot,.effect-pulse-network .fx-item{display:block}
.effect-pulse-network .data-line{height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 55%,white),transparent);opacity:.3;animation:fxNetworkLine 4.5s ease-in-out infinite}
.effect-pulse-network .line-one{width:54%;left:3%;top:26%;transform:rotate(11deg)}.effect-pulse-network .line-two{width:49%;right:2%;bottom:25%;transform:rotate(-13deg);animation-delay:-1.5s}.effect-pulse-network .line-three{width:39%;left:32%;top:61%;transform:rotate(2deg);animation-delay:-3s}
.effect-pulse-network .data-dot{width:9px;height:9px;background:color-mix(in srgb,var(--accent) 82%,white);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 9%,transparent),0 0 20px color-mix(in srgb,var(--accent) 64%,transparent);animation:fxNetworkNode 3.2s ease-in-out infinite}
.effect-pulse-network .fx-item{left:var(--fx-x);top:var(--fx-y);width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--teal) 76%,white);box-shadow:0 0 12px color-mix(in srgb,var(--teal) 60%,transparent);animation:fxNetworkNode 3.9s ease-in-out var(--fx-delay) infinite}
@keyframes fxNetworkLine{0%,100%{opacity:.1;filter:brightness(.75)}50%{opacity:.5;filter:brightness(1.5)}}
@keyframes fxNetworkNode{0%,100%{opacity:.18;transform:scale(.66)}50%{opacity:.92;transform:scale(1.3)}}

@media(max-width:820px){
  .effect-radar .saas-effects::before,.effect-radar .saas-effects::after{width:740px;right:-470px}
  .effect-rings .orb-one{right:-150px}.effect-orbit .orb-one{right:-170px}
  .effect-glass-shapes .fx-item:nth-last-child(n+11),.effect-bubbles .fx-item:nth-last-child(n+11){display:none}
  .effect-light-beams .saas-effects::before,.effect-light-beams .saas-effects::after{width:52%}
  .effect-data-rain .fx-item:nth-last-child(2n){display:none}
}
