/* Decoração e animações no tema (céu azul + branco). Respeita prefers-reduced-motion. */
body{background:#fff radial-gradient(1200px 500px at 85% -10%,#f1efe9 0,#fff0 60%),radial-gradient(900px 400px at -10% 110%,#eaf6ff 0,#fff0 60%) fixed}
.main{position:relative}
.main::before,.main::after{content:"";position:fixed;z-index:-1;border-radius:50%;pointer-events:none;filter:blur(2px);opacity:.55}
.main::before{width:260px;height:260px;right:-80px;top:20%;background:radial-gradient(circle at 30% 30%,#bfe3ff,#bfe3ff00 70%);animation:fl1 14s ease-in-out infinite}
.main::after{width:200px;height:200px;left:15%;bottom:-60px;background:radial-gradient(circle at 30% 30%,#d6efff,#d6efff00 70%);animation:fl2 18s ease-in-out infinite}
@keyframes fl1{50%{transform:translate(-30px,40px) scale(1.1)}}@keyframes fl2{50%{transform:translate(40px,-30px) scale(1.15)}}
.card,.kpi,.race,.row{animation:up .5s cubic-bezier(.2,.8,.2,1) both}
.card:nth-child(2),.kpi:nth-child(2){animation-delay:.05s}.card:nth-child(3),.kpi:nth-child(3){animation-delay:.1s}.kpi:nth-child(4){animation-delay:.15s}
@keyframes up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.card,.kpi,.race{transition:transform .2s,box-shadow .2s}.card:hover,.kpi:hover,.race:hover{transform:translateY(-2px);box-shadow:none}
.hero{background-size:220% 220%;animation:shine 16s ease infinite}@keyframes shine{50%{background-position:100% 50%}}
.hero-art>*{animation:bob 4s ease-in-out infinite}.hero-art>*:nth-child(2){animation-delay:.6s}.hero-art>*:nth-child(3){animation-delay:1.2s}@keyframes bob{50%{transform:translateY(-6px)}}
button{transition:transform .12s,box-shadow .2s,background .2s}button:active{transform:scale(.96)}button:not(.ghost):hover{box-shadow:none}
.side-nav a svg{transition:transform .25s}.side-nav a:hover svg,.side-nav a.on svg{transform:translateY(-2px) scale(1.12)}
.bar i,.bars i{transform-origin:left;animation:grow .9s cubic-bezier(.2,.8,.2,1) both}.bars i{transform-origin:bottom;animation-name:growY}@keyframes grow{from{transform:scaleX(0)}}@keyframes growY{from{transform:scaleY(0)}}
.badge{animation:pop .4s both}@keyframes pop{from{transform:scale(.6);opacity:0}}
.loading,.sk{background:linear-gradient(90deg,#f1efe9 25%,#f5fbff 50%,#f1efe9 75%);background-size:200% 100%;animation:sk 1.4s linear infinite;border-radius:10px}@keyframes sk{to{background-position:-200% 0}}
.runstrip{height:36px;position:relative;overflow:hidden;border-radius:14px;background:linear-gradient(#0d9488,#6fc4ff);margin:0 0 14px}.runstrip i{position:absolute;bottom:4px;left:-40px;font-style:normal;font-size:22px;animation:run 7s linear infinite}.runstrip i:nth-child(2){animation-delay:-2.5s;animation-duration:9s}.runstrip i:nth-child(3){animation-delay:-5s;animation-duration:11s}@keyframes run{to{left:105%}}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:hidden}.confetti i{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:cf 2.4s ease-in forwards}@keyframes cf{to{transform:translateY(105vh) rotate(720deg);opacity:.2}}
@media(max-width:860px){.main::before,.main::after{display:none}}
