@charset "UTF-8";
/* 扫码区域样式 */
.qr-scanner-container[data-v-d0973c0e] {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100vw;
  height: 100vh;
  padding: 16px;
}
.qr-scanner-box[data-v-d0973c0e] {
  margin-top: 20vh;
  position: relative;
  width: 80vw;
  height: 40vh;
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

/* 扫描线动画 - 纯CSS版本 */
.scan-line[data-v-d0973c0e] {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: #10b981;
  box-shadow: 0 -1vh -6.67px 3vh rgb(23, 153, 110);
  border-radius: 9999px;
  opacity: 0.8;
  -webkit-animation: scan-d0973c0e 2s linear infinite;
          animation: scan-d0973c0e 2s linear infinite;
}
@-webkit-keyframes scan-d0973c0e {
0% {
    transform: translateY(0%);
}
100% {
    transform: translateY(40vh);
    /* 二维码高度 */
}
}
@keyframes scan-d0973c0e {
0% {
    transform: translateY(0%);
}
100% {
    transform: translateY(40vh);
    /* 二维码高度 */
}
}
/* 状态指示器 */
.status-indicator[data-v-d0973c0e] {
  margin-top: 20vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.status-dot[data-v-d0973c0e] {
  width: 12px;
  height: 12px;
  background-color: #10b981;
  border-radius: 50%;
  margin-right: 8px;
  -webkit-animation: pulse-d0973c0e 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
          animation: pulse-d0973c0e 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
.status-text[data-v-d0973c0e] {
  color: #374151;
}
@-webkit-keyframes pulse-d0973c0e {
0%, 100% {
    opacity: 1;
}
50% {
    opacity: 0.5;
}
}
@keyframes pulse-d0973c0e {
0%, 100% {
    opacity: 1;
}
50% {
    opacity: 0.5;
}
}
