/* Animações de abertura (splash) e pós-login — CSS puro; desligadas com prefers-reduced-motion. */
html.cx-sp,html.cx-wel{background:#e01802}
html.cx-hide body{visibility:hidden}
.cx-ov{position:fixed;inset:0;box-shadow:0 10px 30px rgba(90,6,0,.35);z-index:9000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;color:#fff;
  background:radial-gradient(120% 90% at 50% 35%,#ff4a1c 0%,#f01a02 45%,#c41200 100%);-webkit-tap-highlight-color:transparent;user-select:none;
  font-family:inherit;overflow:hidden}
.cx-ov::before{content:"";position:absolute;inset:-40%;background:repeating-linear-gradient(115deg,transparent 0 46px,rgba(255,255,255,.05) 46px 92px);animation:cxStripes 2.2s linear both}
.cx-ov .cx-logo{position:relative;width:104px;height:104px;border-radius:28px;overflow:hidden;box-shadow:0 0 0 0 rgba(255,255,255,.55),0 18px 40px rgba(90,6,0,.45);
  animation:cxPop .62s cubic-bezier(.2,1.4,.4,1) .05s both,cxRing 1.1s ease-out .45s both}
.cx-ov .cx-logo img,.cx-ov .cx-logo svg{width:100%;height:100%;display:block}
.cx-ov .cx-logo::after{content:"";position:absolute;top:-20%;bottom:-20%;width:42%;left:-60%;transform:skewX(-20deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:cxShine .7s ease-in-out .55s both}
.cx-ov .cx-nome{margin-top:20px;font-size:21px;font-weight:800;letter-spacing:.2px;animation:cxUp .5s ease-out .35s both}
.cx-ov .cx-sub{margin-top:4px;font-size:13px;opacity:.85;animation:cxUp .5s ease-out .48s both}
.cx-ov .cx-gauge{position:relative;margin-top:26px;width:180px;height:6px;border-radius:6px;background:rgba(255,255,255,.25);animation:cxUp .4s ease-out .5s both}
.cx-ov .cx-gauge i{position:absolute;left:0;top:0;bottom:0;width:100%;border-radius:6px;background:linear-gradient(90deg,#ffd2c7,#fff);transform-origin:left;transform:scaleX(0);
  animation:cxFill .9s cubic-bezier(.55,.05,.25,1) .62s both}
.cx-ov .cx-gauge b{position:absolute;top:-17px;left:0;width:14px;height:18px;margin-left:-7px;animation:cxDrop .9s cubic-bezier(.55,.05,.25,1) .62s both}
.cx-ov .cx-gauge b svg{display:block;width:14px;height:18px;filter:drop-shadow(0 2px 2px rgba(80,0,0,.35))}
.cx-ov .cx-skip{position:absolute;bottom:calc(18px + env(safe-area-inset-bottom));font-size:12px;opacity:0;animation:cxFade .3s ease .9s forwards;opacity:.0}
.cx-ov.cx-out,.cx-ov.cx-w.cx-out{animation:cxLift .5s cubic-bezier(.7,0,.3,1) .12s forwards!important;pointer-events:none}
.cx-ov.cx-out>*{animation:cxGone .22s ease-in forwards!important}
/* Boas-vindas pós-login */
.cx-ov.cx-w{clip-path:circle(0 at var(--cx,50%) var(--cy,60%));animation:cxReveal .5s cubic-bezier(.3,.7,.2,1) forwards}
.cx-ov.cx-w.cx-static{clip-path:none;animation:none}
.cx-ov .cx-cli{width:96px;height:96px;border-radius:24px;background:#fff;display:flex;align-items:center;justify-content:center;padding:10px;box-shadow:0 18px 40px rgba(90,6,0,.45);
  animation:cxPop .55s cubic-bezier(.2,1.4,.4,1) .18s both}
.cx-ov .cx-cli img{max-width:100%;max-height:100%;object-fit:contain;display:block}
.cx-ov .cx-cli.sem{background:rgba(255,255,255,.16);font-size:34px;font-weight:800;color:#fff}
.cx-ov .cx-ola{margin-top:18px;font-size:15px;opacity:.9;animation:cxUp .4s ease-out .3s both}
.cx-ov .cx-quem{font-size:24px;font-weight:800;margin-top:2px;text-align:center;padding:0 20px;animation:cxUp .45s ease-out .38s both}
.cx-ov.cx-w .cx-gauge i{animation-duration:.75s;animation-delay:.42s}
.cx-ov.cx-w .cx-gauge b{animation-duration:.75s;animation-delay:.42s}
.cx-ov.cx-static *{animation-delay:0s!important;animation-duration:0s!important}
.cx-ov.cx-static .cx-gauge i{transform:scaleX(1)}
/* Entrada do painel */
html.cx-pend main .card,html.cx-pend .dash .kpi,html.cx-pend .nav,html.cx-pend .login,html.cx-pend .login-foot{opacity:0}
.cx-in{animation:cxCard .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 70ms)}
@keyframes cxPop{0%{opacity:0;transform:scale(.55) rotate(-8deg)}100%{opacity:1;transform:none}}
@keyframes cxRing{0%{box-shadow:0 0 0 0 rgba(255,255,255,.55),0 18px 40px rgba(90,6,0,.45)}100%{box-shadow:0 0 0 26px rgba(255,255,255,0),0 18px 40px rgba(90,6,0,.45)}}
@keyframes cxShine{0%{left:-60%}100%{left:130%}}
@keyframes cxUp{0%{opacity:0;transform:translateY(10px)}100%{opacity:1;transform:none}}
@keyframes cxFade{to{opacity:.7}}
@keyframes cxFill{to{transform:scaleX(1)}}
@keyframes cxDrop{0%{left:0;opacity:0}12%{opacity:1}100%{left:100%;opacity:1}}
@keyframes cxStripes{from{transform:translateX(-46px)}to{transform:translateX(46px)}}
@keyframes cxGone{to{opacity:0;transform:translateY(-12px)}}
@keyframes cxLift{0%{transform:none}100%{transform:translateY(-102%)}}
@keyframes cxReveal{to{clip-path:circle(150% at var(--cx,50%) var(--cy,60%))}}
@keyframes cxCard{0%{opacity:0;transform:translateY(18px) scale(.985)}100%{opacity:1;transform:none}}
/* Troca de CNPJ (menu do logo) */
.cx-toast{position:fixed;left:50%;top:70px;z-index:8500;display:flex;align-items:center;gap:12px;padding:10px 18px 12px 12px;border-radius:999px;color:#fff;max-width:calc(100vw - 24px);
  background:linear-gradient(120deg,#ff4a1c,#f01a02 55%,#c41200);box-shadow:0 12px 30px rgba(120,10,0,.35),0 0 0 1px rgba(255,255,255,.18) inset;
  transform:translateX(-50%);animation:cxTIn .34s cubic-bezier(.2,1.3,.4,1) both;pointer-events:none}
.cx-toast .cx-t-ic{flex:none;width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;animation:cxPop .4s cubic-bezier(.2,1.4,.4,1) .08s both}
.cx-toast .cx-t-ic svg{width:21px;height:21px;fill:none;stroke:#fff;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.cx-toast .cx-t-tx{display:flex;flex-direction:column;min-width:0}
.cx-toast .cx-t-tx>b{font-size:14.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cx-toast .cx-t-tx>small{font-size:11.5px;opacity:.88;white-space:nowrap}
.cx-toast .cx-gauge{position:relative;margin-top:7px;width:100%;min-width:150px;height:4px;border-radius:4px;background:rgba(255,255,255,.28)}
.cx-toast .cx-gauge i{position:absolute;inset:0;border-radius:4px;background:linear-gradient(90deg,#ffd2c7,#fff);transform-origin:left;transform:scaleX(0);animation:cxFill .62s cubic-bezier(.55,.05,.25,1) .1s both}
.cx-toast .cx-gauge b{position:absolute;top:-13px;left:0;width:10px;height:13px;margin-left:-5px;animation:cxDrop .62s cubic-bezier(.55,.05,.25,1) .1s both}
.cx-toast .cx-gauge b svg{display:block;width:10px;height:13px}
.cx-toast.cx-t-out{animation:cxTOut .3s cubic-bezier(.6,0,.8,.4) forwards}
.cx-sw-out{animation:cxSwOut .17s ease-in forwards;pointer-events:none}
.cx-sw-in{animation:cxSwIn .42s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 45ms)}
header .client-logo.cx-flip{animation:cxFlip .55s cubic-bezier(.45,.05,.35,1)}
.cnpj-chip{display:inline-block;overflow:hidden;vertical-align:middle}
.cnpj-chip.cx-chip-m{transition:width .32s cubic-bezier(.3,.8,.3,1),background-color .32s;background-color:#ffffff55}
.cnpj-chip .cx-chip-t{display:inline-block;animation:cxChipIn .36s cubic-bezier(.2,1.2,.4,1) both}
@keyframes cxTIn{0%{opacity:0;transform:translate(-50%,-22px) scale(.92)}100%{opacity:1;transform:translate(-50%,0)}}
@keyframes cxTOut{to{opacity:0;transform:translate(-50%,-16px) scale(.96)}}
@keyframes cxSwOut{to{opacity:0;transform:translateX(calc(var(--dx,32px) * -1))}}
@keyframes cxSwIn{0%{opacity:0;transform:translateX(var(--dx,32px))}100%{opacity:1;transform:none}}
@keyframes cxFlip{0%{transform:perspective(500px) rotateY(0) scale(1)}50%{transform:perspective(500px) rotateY(180deg) scale(1.1)}100%{transform:perspective(500px) rotateY(360deg) scale(1)}}
@keyframes cxChipIn{0%{opacity:0;transform:translateY(9px)}100%{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .cx-toast,.cx-toast *,.cx-sw-out,.cx-sw-in,header .client-logo.cx-flip,.cnpj-chip .cx-chip-t{animation:none!important}.cnpj-chip.cx-chip-m{transition:none}
  .cx-ov,.cx-ov *,.cx-ov::before,.cx-in{animation:none!important;clip-path:none!important}
  .cx-ov .cx-gauge i{transform:scaleX(1)}
  html.cx-pend main .card,html.cx-pend .dash .kpi,html.cx-pend .nav,html.cx-pend .login,html.cx-pend .login-foot{opacity:1}
}
