/* ============================================================
   Solo animaciones custom y bio-ui (Tailwind no cubre esto)
============================================================ */

/* Scroll reveal */
.fade-up{opacity:0;transform:translateY(22px);transition:opacity .6s,transform .6s}
.fade-up.vis{opacity:1;transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.fade-up{opacity:1;transform:none;transition:none}}

/* Animations */
@keyframes blink{0%,100%{opacity:1}50%{opacity:.2}}
@keyframes scan{0%{top:12%}50%{top:85%}100%{top:12%}}
@keyframes fl1{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes fl2{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes spin{to{transform:rotate(360deg)}}

.hdot{animation:blink 2s infinite}
.flt-1{animation:fl1 3s ease-in-out infinite}
.flt-2{animation:fl2 3s ease-in-out infinite 1.5s}

/* Bio-UI scan */
.scan-frame{position:relative;aspect-ratio:1/1;max-width:220px;margin:0 auto 18px;border-radius:18px;
  background:radial-gradient(circle at 50% 38%,rgba(63,193,240,.16),rgba(4,32,92,.4));
  border:1px solid rgba(63,193,240,.3);display:flex;align-items:center;justify-content:center;overflow:hidden}
.scan-face{font-size:64px;opacity:.85;filter:drop-shadow(0 0 18px rgba(63,193,240,.4))}
.scan-line{position:absolute;left:8%;right:8%;height:2px;
  background:linear-gradient(90deg,transparent,#8FE0FA,transparent);
  box-shadow:0 0 12px #8FE0FA;animation:scan 2.2s ease-in-out infinite}
.scan-corners span{position:absolute;width:18px;height:18px;border:2px solid #8FE0FA;opacity:.8}
.sc-tl{top:8px;left:8px;border-right:none;border-bottom:none;border-radius:6px 0 0 0}
.sc-tr{top:8px;right:8px;border-left:none;border-bottom:none;border-radius:0 6px 0 0}
.sc-bl{bottom:8px;left:8px;border-right:none;border-top:none;border-radius:0 0 0 6px}
.sc-br{bottom:8px;right:8px;border-left:none;border-top:none;border-radius:0 0 6px 0}
.scan-label{text-align:center;font-size:11px;font-weight:700;color:#8FE0FA;letter-spacing:.04em;margin-bottom:16px;transition:color .4s}
.scan-label.ok{color:#34D399}
.bio-result.ok{border-color:rgba(52,211,153,.4)!important;background:rgba(52,211,153,.1)!important}
.bio-result.ok .br-ico{border-color:#34D399!important;background:#34D399!important;color:#04205C!important}
.bio-result.ok .br-label{color:#fff!important}

/* ============================================================
   Iconos SVG inline (sprite) — reemplazan a Font Awesome.
   Heredan tamaño de la font-size (text-*) y color de currentColor (text-*).
============================================================ */
.ic{width:1em;height:1em;fill:currentColor;display:inline-block;vertical-align:-0.125em}

/* Espacio inferior en móvil para que el CTA sticky no tape el pie de página */
@media (max-width:1023px){ body{ padding-bottom:76px } }
