/* AppsIstant · cursor de "procesando" con Bolt animado */
.bc-cursor{
  position:fixed; left:0; top:0; z-index:2147483647;
  width:56px; height:53px; pointer-events:none;
  opacity:0; transform:translate3d(-100px,-100px,0);
  transition:opacity .18s ease;
  filter:drop-shadow(0 4px 10px rgba(15,23,42,.28));
  --bolt-line:#0f172a;
}
[data-theme="dark"] .bc-cursor, [data-bs-theme="dark"] .bc-cursor{ --bolt-line:#e2e8f0; filter:drop-shadow(0 4px 12px rgba(0,0,0,.6)); }
.bc-cursor svg{width:100%;height:100%;display:block;overflow:visible}
html.bc-busy .bc-cursor{opacity:1}

/* Modo "reemplazo": el robot ES el puntero mientras se procesa */
html.bc-busy.bc-replace, html.bc-busy.bc-replace *{cursor:none !important}

/* Animaciones (solo mientras está ocupado) */
html.bc-busy .bc-cursor .bc-bot{animation:bc-bob 1.2s ease-in-out infinite;transform-box:fill-box;transform-origin:50% 100%}
html.bc-busy .bc-cursor .bc-eyes{animation:bc-look 1.6s ease-in-out infinite}
html.bc-busy .bc-cursor .bc-eye{animation:bc-blink 1.6s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
html.bc-busy .bc-cursor .bc-spark{animation:bc-pulse .9s ease-in-out infinite;transform-box:fill-box;transform-origin:center}

@keyframes bc-look{
  0%,10%{transform:translate(0,0)}
  22%,38%{transform:translate(-10px,0)}
  52%,68%{transform:translate(8px,-3px)}
  80%,100%{transform:translate(0,0)}
}
@keyframes bc-blink{0%,88%,100%{transform:scaleY(1)}92%,95%{transform:scaleY(.12)}}
@keyframes bc-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.65}}
@keyframes bc-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(-4deg)}}

/* Pantallas táctiles: no hay puntero, el robot aparece fijo abajo a la derecha */
@media (hover:none),(pointer:coarse){
  .bc-cursor{left:auto;top:auto;right:16px;bottom:16px;width:60px;height:57px;transform:none !important}
}
/* Accesibilidad: sin movimiento si el usuario lo pidió */
/* Con "reducir movimiento": se quitan balanceo y pulso, pero los ojos siguen moviéndose
   (es un indicador de carga, no un efecto decorativo) */
@media (prefers-reduced-motion:reduce){
  html.bc-busy .bc-cursor .bc-bot, html.bc-busy .bc-cursor .bc-spark{animation:none !important}
}
