/* 全屏遮罩动画 */
.fullscreen-recognizing-overlay[data-v-bcf0922c] {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(15, 23, 42, 0.7);
  /* 深色半透明背景 */
  backdrop-filter: blur(12px);
  /* 强毛玻璃效果 */
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
}
.ocr-loader[data-v-bcf0922c] {
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
}
/* 圆形扫描动画容器 */
.scanner-circle-container[data-v-bcf0922c] {
  position: relative;
  width: 120px;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 32px;
}
/* 外部旋转圈 */
.scanner-circle-outer[data-v-bcf0922c] {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 50%;
  border: 2px solid transparent;
  border-top-color: #3b82f6;
  /* 蓝色 */
  border-right-color: #8b5cf6;
  /* 紫色 */
  animation: spin-bcf0922c 2s linear infinite;
  box-shadow: 0 0 15px rgba(59, 130, 246, 0.5);
}
/* 内部脉冲圈 */
.scanner-circle-inner[data-v-bcf0922c] {
  position: absolute;
  top: 10px;
  left: 10px;
  right: 10px;
  bottom: 10px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.05);
  animation: pulse-bcf0922c 2s ease-in-out infinite;
}
/* 扫描线 */
.scanner-scan-line[data-v-bcf0922c] {
  position: absolute;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, transparent, #60a5fa, transparent);
  top: 50%;
  animation: scan-bcf0922c 2s ease-in-out infinite;
  box-shadow: 0 0 8px #60a5fa;
}
/* 中心图标 */
.scanner-icon[data-v-bcf0922c] {
  position: relative;
  width: 48px;
  height: 48px;
  color: #60a5fa;
}
.scanner-icon svg[data-v-bcf0922c] {
  width: 100%;
  height: 100%;
}
/* 文本容器 */
.loading-text-container[data-v-bcf0922c] {
  text-align: center;
}
.loading-title[data-v-bcf0922c] {
  font-size: 20px;
  font-weight: 500;
  margin-bottom: 8px;
}
.loading-subtitle[data-v-bcf0922c] {
  font-size: 14px;
  color: rgba(255, 255, 255, 0.7);
}
/* 动画点 */
.dot[data-v-bcf0922c] {
  animation: dotAnimation-bcf0922c 1.5s infinite;
}
.dot[data-v-bcf0922c]:nth-child(2) {
  animation-delay: 0.3s;
}
.dot[data-v-bcf0922c]:nth-child(3) {
  animation-delay: 0.6s;
}
/* 动画定义 */
@keyframes spin-bcf0922c {
from {
    transform: rotate(0deg);
}
to {
    transform: rotate(360deg);
}
}
@keyframes pulse-bcf0922c {
0%,
  100% {
    opacity: 0.3;
    transform: scale(0.95);
}
50% {
    opacity: 0.8;
    transform: scale(1);
}
}
@keyframes scan-bcf0922c {
0%,
  100% {
    transform: translateY(-40px);
    opacity: 0;
}
50% {
    transform: translateY(40px);
    opacity: 1;
}
}
@keyframes dotAnimation-bcf0922c {
0%,
  20% {
    opacity: 0;
}
50% {
    opacity: 1;
}
100% {
    opacity: 0;
}
}
/* 过渡动画 */
.fade-enter-active[data-v-bcf0922c],
.fade-leave-active[data-v-bcf0922c] {
  transition: opacity 0.3s ease;
}
.fade-enter-from[data-v-bcf0922c],
.fade-leave-to[data-v-bcf0922c] {
  opacity: 0;
}
