:root {
  --v-rebote: cubic-bezier(.34, 1.56, .64, 1);
  --v-suave: cubic-bezier(.22, 1, .36, 1);
}
.btn,
.btn-ghost {
  transition: transform .28s var(--v-rebote);
  -webkit-tap-highlight-color: transparent;
}
.btn:active,
.btn-ghost:active {
  transform: scale(.965);
}
.appitem {
  transition: transform .26s var(--v-rebote);
  -webkit-tap-highlight-color: transparent;
}
.appitem:active {
  transform: scale(.955);
}
.approw {
  transition: transform .24s var(--v-rebote);
  -webkit-tap-highlight-color: transparent;
}
.approw:active {
  transform: translateX(3px) scale(.995);
}
[dir=rtl] .approw:active {
  transform: translateX(-3px) scale(.995);
}
.mov,
.notice,
.chat-row,
.movs li,
.applist li {
  -webkit-tap-highlight-color: transparent;
}
.notice {
  transition: transform .24s var(--v-rebote);
}
.notice:active {
  transform: scale(.985);
}
.tab {
  -webkit-tap-highlight-color: transparent;
}
.tab-txt {
  transition: transform .28s var(--v-rebote), color .25s ease;
}
.tab:active .tab-txt {
  transform: scale(.92);
}
.avatar {
  transition: transform .3s var(--v-rebote);
}
a:active > .avatar {
  transform: scale(.92);
}
.tab.on .tab-ico {
  animation: v-tab-salto .52s var(--v-rebote) backwards;
}
@keyframes v-tab-salto {
  0% {
    transform: translateY(-2px) scale(.7);
  }
  55% {
    transform: translateY(-6px) scale(1.12);
  }
  100% {
    transform: translateY(-2px) scale(1);
  }
}
.tab.on .tab-ico::before {
  animation: v-tab-pastilla .46s var(--v-rebote) .04s both;
}
@keyframes v-tab-pastilla {
  from {
    transform: scale(.3);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}
.tab.on::after {
  content: "";
  position: absolute;
  bottom: 4px;
  left: 50%;
  width: 20px;
  height: 3px;
  margin-left: -10px;
  border-radius: 999px;
  background: currentColor;
  opacity: .9;
  transform-origin: center;
  animation: v-tab-barra .42s var(--v-rebote) .08s both;
  pointer-events: none;
}
.tab {
  position: relative;
}
@keyframes v-tab-barra {
  from {
    transform: scaleX(0);
    opacity: 0;
  }
  to {
    transform: scaleX(1);
    opacity: .9;
  }
}
.tab-dot {
  animation: v-dot .6s var(--v-rebote) 2 both;
  transform-origin: center;
}
@keyframes v-dot {
  0%, 100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.22);
  }
}
.wrap > .card,
.wrap > .notice,
.wrap > section.card {
  animation: v-sube .34s var(--v-suave) backwards;
}
.wrap > *:nth-child(1) {
  animation-delay: 0s;
}
.wrap > *:nth-child(2) {
  animation-delay: .045s;
}
.wrap > *:nth-child(3) {
  animation-delay: .09s;
}
.wrap > *:nth-child(4) {
  animation-delay: .135s;
}
.wrap > *:nth-child(5) {
  animation-delay: .18s;
}
.wrap > *:nth-child(n+6) {
  animation-delay: .22s;
}
@keyframes v-sube {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.movs .mov {
  animation: v-sube-corto .26s var(--v-suave) both;
}
.movs .mov:nth-child(1) {
  animation-delay: .10s;
}
.movs .mov:nth-child(2) {
  animation-delay: .14s;
}
.movs .mov:nth-child(3) {
  animation-delay: .18s;
}
.movs .mov:nth-child(4) {
  animation-delay: .22s;
}
.movs .mov:nth-child(5) {
  animation-delay: .26s;
}
.movs .mov:nth-child(n+6) {
  animation-delay: .30s;
}
@keyframes v-sube-corto {
  from {
    opacity: 0;
    transform: translateY(5px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.balance {
  animation: v-saldo .42s var(--v-rebote) .06s both;
  transform-origin: center;
}
@keyframes v-saldo {
  from {
    opacity: 0;
    transform: scale(.88);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.appicon.v-respira {
  animation: v-balanceo 1.15s var(--v-suave) backwards;
}
@keyframes v-balanceo {
  0% {
    transform: rotate(0) scale(1);
  }
  18% {
    transform: rotate(-7deg) scale(1.07);
  }
  38% {
    transform: rotate(5deg) scale(1.05);
  }
  58% {
    transform: rotate(-3deg) scale(1.03);
  }
  78% {
    transform: rotate(1.5deg) scale(1.01);
  }
  100% {
    transform: rotate(0) scale(1);
  }
}
.appicon.v-respira::after {
  animation: v-destello .9s ease .12s forwards;
}
@keyframes v-destello {
  from {
    transform: translateX(-120%);
    opacity: .85;
  }
  to {
    transform: translateX(120%);
    opacity: 0;
  }
}
.brand-mark {
  animation: v-latido 1s ease-in-out .5s backwards;
  transform-origin: center;
}
@keyframes v-latido {
  0%, 100% {
    transform: scale(1) rotate(0);
  }
  35% {
    transform: scale(1.08) rotate(-4deg);
  }
  65% {
    transform: scale(1.03) rotate(3deg);
  }
}
.v-skel {
  position: relative;
  overflow: hidden;
  background: var(--bg-soft, rgba(128, 128, 128, .12));
  border-radius: 10px;
  color: transparent !important;
  pointer-events: none;
  user-select: none;
}
.v-skel::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      100deg,
      transparent 20%,
      rgba(255, 255, 255, .45) 50%,
      transparent 80%);
  transform: translateX(-100%);
  animation: v-shimmer 1.25s ease-in-out infinite;
}
@keyframes v-shimmer {
  to {
    transform: translateX(100%);
  }
}
.v-skel-linea {
  height: 12px;
  margin: 8px 0;
}
.v-skel-linea.corta {
  width: 45%;
}
.v-skel-linea.media {
  width: 70%;
}
.v-skel-bloque {
  height: 56px;
  margin: 10px 0;
  border-radius: 14px;
}
.v-skel-circulo {
  width: 42px;
  height: 42px;
  border-radius: 999px;
}
.balance.v-contando {
  font-variant-numeric: tabular-nums;
  will-change: contents;
}
.notice-dot {
  animation: v-pop .44s var(--v-rebote) .18s both;
}
@keyframes v-pop {
  from {
    opacity: 0;
    transform: scale(.2);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
input[type=text],
input[type=email],
input[type=password],
input[type=tel],
input[type=number],
textarea {
  transition: transform .2s var(--v-suave);
}
input:focus,
textarea:focus {
  transform: translateY(-1px);
}
input.amount {
  transition: transform .26s var(--v-rebote);
}
input.amount:focus {
  transform: scale(1.03);
}
@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn-ghost,
  .appitem,
  .approw,
  .notice,
  .tab,
  .tab-txt,
  .avatar,
  .tab-ico,
  .tab-ico::before,
  .tab.on .tab-ico,
  .tab.on .tab-ico::before,
  .tab.on::after,
  .tab-dot,
  .wrap > .card,
  .wrap > .notice,
  .wrap > section.card,
  .wrap > :not(.flash),
  .movs .mov,
  .balance,
  .balance.v-contando,
  .appicon,
  .appicon.v-respira,
  .appicon.v-respira::after,
  .appicon::after,
  .brand-mark,
  .notice-dot,
  .v-skel,
  .v-skel::after,
  input,
  textarea,
  input.amount {
    animation: none !important;
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
  .tab.on::after {
    opacity: .9 !important;
  }
  .v-skel::after {
    display: none !important;
  }
}
.v-pista {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  overflow: hidden;
  pointer-events: none;
  z-index: 2;
}
.tabbar .v-pista {
  bottom: auto;
  top: 0;
}
.v-reflejo {
  position: absolute;
  inset: 0 auto 0 0;
  width: 28%;
  pointer-events: none;
  background:
    linear-gradient(
      90deg,
      rgba(0, 217, 126, 0) 0%,
      rgba(0, 217, 126, .55) 30%,
      rgba(190, 255, 225, .95) 50%,
      rgba(0, 217, 126, .55) 70%,
      rgba(0, 217, 126, 0) 100%);
  filter: blur(2.5px);
  opacity: 0;
  animation: v-barrido 7s cubic-bezier(.45, 0, .2, 1) infinite;
}
@keyframes v-barrido {
  0% {
    transform: translateX(-140%);
    opacity: 0;
  }
  6% {
    opacity: .35;
  }
  12% {
    opacity: 1;
  }
  18% {
    opacity: 1;
  }
  23% {
    transform: translateX(400%);
    opacity: 0;
  }
  100% {
    transform: translateX(400%);
    opacity: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .v-pista {
    display: none;
  }
}
.v-tilt-marco {
  perspective: 900px;
  perspective-origin: center;
}
.v-tilt {
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transform-style: preserve-3d;
  will-change: transform;
  transition: transform .5s cubic-bezier(.22, 1, .36, 1);
}
.v-tilt.v-tilt-activo {
  transition: none;
}
.v-tilt::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  transition: opacity .4s ease;
  background:
    radial-gradient(
      circle at var(--luz-x, 50%) var(--luz-y, 50%),
      rgba(255, 255, 255, .18) 0%,
      rgba(255, 255, 255, 0) 55%);
}
.v-tilt.v-tilt-activo::after {
  opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
  .v-tilt {
    transform: none !important;
    transition: none;
  }
  .v-tilt::after {
    display: none;
  }
}
#v-splash {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  background: var(--bg, #F4F7FA);
  pointer-events: none;
  animation: v-splash-fuera 900ms ease forwards;
}
#v-splash.v-fuera {
  animation: v-splash-fuera-ya 260ms ease forwards;
}
@keyframes v-splash-fuera {
  0%, 66% {
    opacity: 1;
    visibility: visible;
  }
  100% {
    opacity: 0;
    visibility: hidden;
  }
}
@keyframes v-splash-fuera-ya {
  0% {
    opacity: 1;
    visibility: visible;
  }
  100% {
    opacity: 0;
    visibility: hidden;
  }
}
#v-splash .v-splash-caja {
  position: relative;
  overflow: hidden;
  border-radius: 22px;
  animation: v-splash-entra 560ms cubic-bezier(.2, .7, .3, 1) both;
}
#v-splash .v-splash-marca {
  display: block;
  width: 116px;
  height: 116px;
}
@keyframes v-splash-entra {
  0% {
    transform: scale(.86);
    opacity: 0;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}
#v-splash .v-trazo {
  stroke-dasharray: 120;
  stroke-dashoffset: 120;
  animation: v-dibuja 520ms cubic-bezier(.6, 0, .3, 1) forwards;
}
#v-splash .v-trazo-1 {
  animation-delay: 60ms;
}
#v-splash .v-trazo-2 {
  animation-delay: 180ms;
}
#v-splash .v-trazo-3 {
  animation-delay: 300ms;
}
@keyframes v-dibuja {
  to {
    stroke-dashoffset: 0;
  }
}
#v-splash .v-splash-brillo {
  position: absolute;
  inset: 0 auto 0 0;
  width: 55%;
  pointer-events: none;
  background:
    linear-gradient(
      100deg,
      rgba(0, 217, 126, 0) 0%,
      rgba(0, 217, 126, .28) 42%,
      rgba(190, 255, 225, .7) 52%,
      rgba(0, 217, 126, .28) 62%,
      rgba(0, 217, 126, 0) 100%);
  filter: blur(6px);
  opacity: 0;
  transform: translateX(-160%);
  animation: v-splash-destello 620ms cubic-bezier(.4, 0, .2, 1) 420ms both;
}
@keyframes v-splash-destello {
  0% {
    transform: translateX(-160%);
    opacity: 0;
  }
  25% {
    opacity: 1;
  }
  75% {
    opacity: 1;
  }
  100% {
    transform: translateX(220%);
    opacity: 0;
  }
}
#v-splash .v-splash-txt {
  margin: 16px 0 0;
  text-align: center;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--brand-ink, #067A47);
  animation: v-splash-txt 420ms ease 380ms both;
}
@keyframes v-splash-txt {
  0% {
    opacity: 0;
    transform: translateY(6px);
  }
  100% {
    opacity: .75;
    transform: none;
  }
}
.v-fiesta {
  position: fixed;
  inset: 0;
  z-index: 9000;
  overflow: hidden;
  pointer-events: none;
}
.v-conf {
  position: absolute;
  top: -24px;
  width: 9px;
  height: 14px;
  border-radius: 2px;
  opacity: 0;
  will-change: transform, opacity;
  animation: v-cae 1200ms cubic-bezier(.25, .5, .5, 1) forwards;
}
.v-conf.v-conf-r {
  border-radius: 50%;
  width: 8px;
  height: 8px;
}
@keyframes v-cae {
  0% {
    opacity: 0;
    transform: translate3d(0, 0, 0) rotate(0deg) scale(.6);
  }
  12% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translate3d(var(--vx, 0px), var(--vy, 78vh), 0) rotate(var(--vr, 540deg)) scale(1);
  }
}
.balance.v-late {
  display: inline-block;
  animation: v-latido 760ms cubic-bezier(.3, 1.4, .4, 1) 1;
}
@keyframes v-latido {
  0% {
    transform: scale(1);
  }
  28% {
    transform: scale(1.085);
  }
  55% {
    transform: scale(.985);
  }
  100% {
    transform: scale(1);
  }
}
.v-entra {
  position: fixed;
  left: 50%;
  bottom: 96px;
  z-index: 9001;
  pointer-events: none;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 20px;
  border-radius: 999px;
  background: #0A2540;
  color: #00D97E;
  font-weight: 800;
  font-size: 1.06rem;
  letter-spacing: .01em;
  white-space: nowrap;
  box-shadow: 0 10px 30px rgba(10, 37, 64, .35);
  animation: v-entra-imp 1500ms cubic-bezier(.2, .8, .3, 1) forwards;
}
.v-entra .v-entra-txt {
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6BA6DC;
}
@keyframes v-entra-imp {
  0% {
    transform: translateX(-50%) translateY(26px) scale(.84);
    opacity: 0;
  }
  14% {
    transform: translateX(-50%) translateY(0) scale(1.06);
    opacity: 1;
  }
  24% {
    transform: translateX(-50%) translateY(0) scale(1);
    opacity: 1;
  }
  78% {
    transform: translateX(-50%) translateY(0) scale(1);
    opacity: 1;
  }
  100% {
    transform: translateX(-50%) translateY(-14px) scale(.96);
    opacity: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  #v-splash,
  #v-splash.v-fuera {
    display: none !important;
    animation: none !important;
  }
  #v-splash .v-splash-caja,
  #v-splash .v-trazo,
  #v-splash .v-splash-brillo,
  #v-splash .v-splash-txt {
    animation: none !important;
  }
  .v-fiesta {
    display: none !important;
  }
  .v-conf {
    animation: none !important;
    display: none !important;
  }
  .balance.v-late {
    animation: none !important;
    transform: none !important;
  }
  .v-entra {
    animation: none !important;
    transform: translateX(-50%) !important;
    opacity: 1 !important;
  }
}
