/* Tela de carregamento de toda a plataforma (docs/CARREGAMENTO.md).
   Esboço aprovado: docs/carregamento-centriv/esboco-v2.html, opção A3.
   Montagem: o C se desenha, o traço verde entra e o nome aparece. Enquanto
   carrega: ondas de sinal saem do traço, o pingo do "i" pulsa, uma rede de
   pontinhos se liga no fundo e pacotes de luz correm numa linha, com as
   mensagens "Conferindo seu acesso → Carregando seus dados → Preparando seu
   ambiente". Só CSS: funciona antes de o código da página carregar. */
.centriv-loading{position:fixed;inset:0;z-index:2147483000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:34px;overflow:hidden;background:radial-gradient(ellipse at 50% 38%,#f4f8ff 0%,#eaf0f9 45%,#e3e9f3 100%);font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.centriv-loading-net{position:absolute;inset:0;width:100%;height:100%;opacity:0;animation:centriv-loading-in 1.2s 1.6s forwards}
.centriv-loading-net line{stroke:#0A4FD6;stroke-width:1;stroke-opacity:0;animation:centriv-loading-link 4s ease-in-out infinite}
.centriv-loading-net circle{fill:#0A4FD6;opacity:.14;transform-box:fill-box;transform-origin:center;animation:centriv-loading-node 4s ease-in-out infinite}
.centriv-loading-net circle.g{fill:#12B04F}
.centriv-loading-logo{position:relative;z-index:1;display:flex;align-items:center;gap:10px}
.centriv-loading-mark{width:92px;height:98px;overflow:visible}
.centriv-loading-arc{fill:none;stroke-width:26;stroke-linecap:round;stroke-dasharray:170 170;stroke-dashoffset:170;animation:centriv-loading-draw .9s cubic-bezier(.6,.05,.3,1) forwards}
.centriv-loading-bar{transform-box:view-box;transform-origin:64px 60px;transform:scaleX(0);animation:centriv-loading-grow .45s .75s cubic-bezier(.3,1.4,.5,1) forwards}
.centriv-loading-text{position:relative;display:flex;flex-direction:column}
.centriv-loading-word{position:relative;width:272px;height:78px;overflow:hidden;clip-path:inset(0 100% 0 0);animation:centriv-loading-wipe .75s 1.05s cubic-bezier(.65,0,.35,1) forwards}
.centriv-loading-word img,.centriv-loading-tag img{position:absolute;left:-126px;height:116px;width:auto;max-width:none}
.centriv-loading-word img{top:-14px}
.centriv-loading-tag{position:relative;width:272px;height:22px;overflow:hidden;margin-top:-6px;opacity:0;transform:translateY(6px);animation:centriv-loading-rise .5s 1.7s ease forwards}
.centriv-loading-tag img{top:-92px}
.centriv-loading-idot{position:absolute;left:213px;top:2px;width:14px;height:14px;border-radius:50%}
.centriv-loading-idot::before,.centriv-loading-idot::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #12B04F;opacity:0;animation:centriv-loading-ping 1.8s 2.2s cubic-bezier(0,0,.2,1) infinite}
.centriv-loading-idot::after{animation-delay:3.1s}
.centriv-loading-waves{position:absolute;left:78px;top:34px;width:60px;height:30px;pointer-events:none}
.centriv-loading-waves span{position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;border:2.5px solid transparent;border-right-color:#12B04F;opacity:0;animation:centriv-loading-wave 1.8s 2.1s ease-out infinite}
.centriv-loading-waves span:nth-child(2){animation-delay:2.7s}
.centriv-loading-waves span:nth-child(3){animation-delay:3.3s}
.centriv-loading-below{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:12px;opacity:0;animation:centriv-loading-rise .5s 2.1s ease forwards}
.centriv-loading-lane{position:relative;width:300px;height:14px;overflow:hidden}
.centriv-loading-lane::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;border-radius:2px;background:linear-gradient(90deg,transparent,#c9d5e6 15%,#c9d5e6 85%,transparent)}
.centriv-loading-lane b{position:absolute;top:3px;left:0;width:36px;height:8px;border-radius:8px;background:linear-gradient(90deg,transparent,#0B6CFF,#12B04F);filter:drop-shadow(0 0 6px rgba(18,176,79,.55));animation:centriv-loading-packet 1.8s cubic-bezier(.5,0,.5,1) infinite}
.centriv-loading-lane b:nth-child(2){width:22px;animation-delay:.6s}
.centriv-loading-lane b:nth-child(3){width:28px;animation-delay:1.2s}
.centriv-loading-msg{position:relative;height:21px;min-width:240px;text-align:center;font-size:14px;font-weight:600;letter-spacing:.2px;color:#0A2A7A}
.centriv-loading-msg span{position:absolute;left:0;right:0;opacity:0;padding-left:1.05em}
.centriv-loading-msg span:nth-child(1){animation:centriv-loading-msg 1.9s 2.1s both}
.centriv-loading-msg span:nth-child(2){animation:centriv-loading-msg 1.9s 4s both}
.centriv-loading-msg span:nth-child(3){animation:centriv-loading-last .45s 5.9s both}
/* Reticências animadas logo depois do texto. */
.centriv-loading-msg span::after{content:"...";display:inline-block;width:0;overflow:hidden;vertical-align:bottom;text-align:left;animation:centriv-loading-ellipsis 1.2s steps(4,end) infinite}
@keyframes centriv-loading-draw{to{stroke-dashoffset:0}}
@keyframes centriv-loading-grow{to{transform:scaleX(1)}}
@keyframes centriv-loading-wipe{to{clip-path:inset(0 0 0 0)}}
@keyframes centriv-loading-rise{to{opacity:1;transform:none}}
@keyframes centriv-loading-in{to{opacity:1}}
@keyframes centriv-loading-link{0%,100%{stroke-opacity:0}40%,60%{stroke-opacity:.14}}
@keyframes centriv-loading-node{0%,100%{opacity:.12}50%{opacity:.35}}
@keyframes centriv-loading-ping{0%{opacity:.8;transform:scale(.8)}100%{opacity:0;transform:scale(2.6)}}
@keyframes centriv-loading-wave{0%{opacity:0;transform:translateX(0) scale(.6)}20%{opacity:.9}100%{opacity:0;transform:translateX(26px) scale(1.5)}}
@keyframes centriv-loading-packet{0%{transform:translateX(-40px);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateX(300px);opacity:0}}
@keyframes centriv-loading-msg{0%{opacity:0;transform:translateY(8px)}15%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-6px)}}
@keyframes centriv-loading-last{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes centriv-loading-ellipsis{to{width:1.05em}}
/* Já montada (tela de carregamento que aparece com a página aberta): sem a
   montagem do logo, direto no "carregando". */
.centriv-loading.no-intro .centriv-loading-arc{animation:none;stroke-dashoffset:0}
.centriv-loading.no-intro .centriv-loading-bar{animation:none;transform:none}
.centriv-loading.no-intro .centriv-loading-word{animation:none;clip-path:none}
.centriv-loading.no-intro .centriv-loading-tag,.centriv-loading.no-intro .centriv-loading-below,.centriv-loading.no-intro .centriv-loading-net{animation-delay:0s;animation-duration:.3s}
.centriv-loading.no-intro .centriv-loading-msg span:nth-child(1){animation-delay:.2s}
.centriv-loading.no-intro .centriv-loading-msg span:nth-child(2){animation-delay:2.1s}
.centriv-loading.no-intro .centriv-loading-msg span:nth-child(3){animation-delay:4s}
@media (max-width:600px){.centriv-loading-logo{transform:scale(.78)}.centriv-loading-lane{width:230px}.centriv-loading{gap:26px}}
/* "Reduzir movimento" ligado no aparelho: logo parado, mensagem fixa. */
@media (prefers-reduced-motion:reduce){
  .centriv-loading *,.centriv-loading *::before,.centriv-loading *::after{animation:none!important}
  .centriv-loading-arc{stroke-dashoffset:0}.centriv-loading-bar{transform:none}.centriv-loading-word{clip-path:none}
  .centriv-loading-tag,.centriv-loading-below,.centriv-loading-net{opacity:1;transform:none}
  .centriv-loading-waves,.centriv-loading-lane b{display:none}
  .centriv-loading-msg span:nth-child(3){opacity:1}
  .centriv-loading-msg span::after{width:auto}
}
