/* ===== Efeitos WOW (só ativos com body.fx-on; desligam com "reduzir movimento") ===== */
@keyframes fxUp{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
body.fx-on .fx-in{animation:fxUp .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 70ms)}

/* cartões: elevação + holofote dourado que segue o rato */
body.fx-on .stat-card,body.fx-on .card{position:relative;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,border-color .25s}
body.fx-on .stat-card::after,body.fx-on .card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(200,168,75,.16),transparent 65%)}
body.fx-on .stat-card:hover,body.fx-on .card:hover{box-shadow:0 12px 30px -12px rgba(26,58,32,.28)}
body.fx-on .stat-card:hover{transform:translateY(-4px)}
body.fx-on .stat-card:hover::after,body.fx-on .card:hover::after{opacity:1}
body.fx-on .stat-card.accent{background:linear-gradient(135deg,#1A3A20 0%,#25502d 60%,#1A3A20 100%);background-size:200% 200%;animation:fxGrad 9s ease-in-out infinite}
@keyframes fxGrad{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}

/* barra de progresso dentro do cartão */
.stat-bar{height:5px;border-radius:5px;background:rgba(26,58,32,.1);margin-top:9px;overflow:hidden}
.stat-bar i{display:block;height:100%;width:0;border-radius:5px;background:linear-gradient(90deg,#C8A84B,#E3C76B,#C8A84B);background-size:200% 100%}
body.fx-on .stat-bar i{width:var(--w);animation:fxBarra 1.4s cubic-bezier(.2,.8,.2,1) both .5s,fxBrilho 2.6s linear infinite 2s}
@keyframes fxBarra{from{width:0}}
@keyframes fxBrilho{to{background-position:-200% 0}}
body:not(.fx-on) .stat-bar i{width:var(--w)}

/* urgente respira; botão dourado brilha */
@keyframes fxRespira{0%,100%{box-shadow:0 0 0 0 rgba(192,57,43,.35)}50%{box-shadow:0 0 0 7px rgba(192,57,43,0)}}
body.fx-on .b-red{animation:fxRespira 2.2s ease-out infinite}
body.fx-on .btn-gold{position:relative;overflow:hidden}
body.fx-on .btn-gold::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);transition:left .6s}
body.fx-on .btn-gold:hover::after{left:130%}

/* pílula de avisos com brilho a passar e sino a abanar */
body.fx-on .aviso-pill{position:relative;overflow:hidden}
body.fx-on .aviso-pill::after{content:"";position:absolute;top:0;bottom:0;left:-50%;width:35%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);transform:skewX(-20deg);animation:fxPassa 4.2s ease-in-out infinite 1.5s}
@keyframes fxPassa{0%{left:-50%}35%,100%{left:140%}}
@keyframes fxSino{0%,100%{transform:rotate(0)}10%,30%,50%{transform:rotate(14deg)}20%,40%{transform:rotate(-14deg)}60%{transform:rotate(0)}}
body.fx-on #aviso-som{animation:fxSino 2.4s ease 1.2s 2;transform-origin:50% 10%}

/* mudança de vista */
@keyframes fxVista{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
body.fx-on .view.active{animation:fxVista .45s cubic-bezier(.2,.8,.2,1)}

/* linha concluída: risca, desliza e fecha */
body.fx-on .fx-sai{animation:fxSai .38s ease forwards;overflow:hidden}
@keyframes fxSai{0%{opacity:1}40%{background:rgba(46,125,50,.14);opacity:1}100%{opacity:0;transform:translateX(60px);max-height:0;padding-top:0;padding-bottom:0}}
.fx-conf{position:fixed;width:7px;height:11px;border-radius:2px;pointer-events:none;z-index:9999;animation:fxConf .9s cubic-bezier(.15,.8,.3,1) forwards}
@keyframes fxConf{0%{transform:translate(-50%,-50%) rotate(0) scale(1);opacity:1}100%{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy) + 40px)) rotate(var(--rot)) scale(.6);opacity:0}}

/* login: aurora, pó dourado, cartão com entrada e contorno a brilhar */
.login-wrap{overflow:hidden;justify-content:safe center}
.login-wrap>.login-card,.login-wrap>.login-hero{position:relative;z-index:1}
body.fx-on .login-wrap::before,body.fx-on .login-wrap::after{content:"";position:absolute;z-index:0;border-radius:50%;filter:blur(70px);pointer-events:none}
body.fx-on .login-wrap::before{width:520px;height:520px;left:-120px;top:-120px;background:radial-gradient(circle,rgba(200,168,75,.32),transparent 70%);animation:fxAurora 16s ease-in-out infinite alternate}
body.fx-on .login-wrap::after{width:620px;height:620px;right:-160px;bottom:-200px;background:radial-gradient(circle,rgba(62,122,75,.55),transparent 70%);animation:fxAurora 20s ease-in-out infinite alternate-reverse}
@keyframes fxAurora{from{transform:translate(0,0) scale(1)}to{transform:translate(90px,60px) scale(1.25)}}
.fx-pts{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.fx-pts i{position:absolute;bottom:-10px;border-radius:50%;background:#C8A84B;box-shadow:0 0 8px rgba(200,168,75,.8);animation:fxSobe linear infinite}
@keyframes fxSobe{to{transform:translateY(-110vh) translateX(40px)}}
@keyframes fxCartao{from{opacity:0;transform:translateY(30px) scale(.97)}to{opacity:1;transform:none}}
body.fx-on .login-card{animation:fxCartao .9s cubic-bezier(.2,.8,.2,1) both 2.9s;box-shadow:0 30px 80px -20px rgba(0,0,0,.55),0 0 0 1px rgba(200,168,75,.35)}
body.fx-on .login-wrap>.corner,body.fx-on .login-wrap [class*="corner"]{animation:fxUp 1s ease both 3.2s}
@media (prefers-reduced-motion:reduce){body .fx-in,body .stat-card.accent{animation:none}}

/* ===== Saudação + frase do dia ===== */
.saudacao{position:relative;overflow:hidden;display:grid;grid-template-columns:1.2fr 1fr;gap:28px;align-items:center;padding:26px 30px;margin-bottom:22px;border-radius:14px;color:var(--cream);background:linear-gradient(120deg,#1A3A20 0%,#24502c 55%,#1A3A20 100%);border:1px solid rgba(200,168,75,.35)}
.sd-data{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:600}
.sd-ola{font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:-.01em;font-size:34px;line-height:1.05;margin:6px 0 8px;color:#fff}
.sd-resumo{font-size:13.5px;color:rgba(249,249,247,.75)}
.sd-frase{position:relative;font-family:"Cormorant Garamond",Georgia,serif;font-style:italic;font-size:21px;line-height:1.35;color:var(--gold);padding-left:26px;border-left:2px solid rgba(200,168,75,.5)}
.sd-aspas{position:absolute;left:6px;top:-10px;font-size:46px;opacity:.5}
.sd-outra{display:block;margin-top:10px;background:none;border:1px solid rgba(200,168,75,.4);color:rgba(249,249,247,.7);font:600 11px "Inter Tight",system-ui,sans-serif;font-style:normal;letter-spacing:.06em;padding:3px 10px;border-radius:14px;cursor:pointer}
.sd-outra:hover{background:rgba(200,168,75,.18);color:#fff}
.sd-marca{position:absolute;right:-18px;bottom:-60px;font-family:var(--display);font-weight:800;font-size:220px;line-height:1;color:rgba(200,168,75,.07);pointer-events:none}
@media (max-width:820px){.saudacao{grid-template-columns:1fr;padding:20px}.sd-ola{font-size:26px}}
body.fx-on .sd-data,body.fx-on .sd-ola,body.fx-on .sd-resumo{animation:fxUp .8s cubic-bezier(.2,.8,.2,1) both}
body.fx-on .sd-data{animation-delay:.1s}body.fx-on .sd-ola{animation-delay:.25s}body.fx-on .sd-resumo{animation-delay:.45s}
body.fx-on .sd-frase{animation:fxFrase 1.4s ease both .7s}
@keyframes fxFrase{from{opacity:0;transform:translateX(-14px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
body.fx-on .sd-troca{animation:fxFrase .7s ease both}
body.fx-on .sd-marca{animation:fxMarca 14s ease-in-out infinite alternate}
@keyframes fxMarca{from{transform:translate(0,0) rotate(-4deg)}to{transform:translate(-26px,-14px) rotate(3deg)}}
