/* Barcode scanning modal styles */
.barcode-modal{
  width:min(520px, calc(100% - 48px));
  display:flex;
  flex-direction:column;
  gap:12px;
}

.barcode-modal .modal-head{
  display:flex;
  align-items:center;
  gap:8px;
}

.barcode-modal .modal-head .spacer{ flex:1; }

.barcode-video-wrap{
  position:relative;
  border-radius:12px;
  overflow:hidden;
  background:rgba(0,0,0,0.85);
  border:1px solid rgba(255,255,255,0.12);
}

#barcodeVideo{
  display:block;
  width:100%;
  aspect-ratio:3 / 4;
  background:#111;
  object-fit:cover;
}

.barcode-scan-frame{
  position:absolute;
  top:18%;
  left:12%;
  width:76%;
  height:46%;
  border:2px solid rgba(0,255,170,0.7);
  border-radius:12px;
  pointer-events:none;
  box-shadow:0 0 18px rgba(0,255,170,0.3);
}

.barcode-scan-line{
  position:absolute;
  left:14%;
  width:72%;
  height:3px;
  border-radius:4px;
  background:linear-gradient(90deg, transparent, rgba(0,255,170,0.8), transparent);
  animation:barcodeSweep 2.4s linear infinite;
}

@keyframes barcodeSweep{
  0%{ top:26%; }
  50%{ top:54%; }
  100%{ top:26%; }
}

.barcode-status{
  text-align:center;
  font-size:0.95rem;
  color:rgba(255,255,255,0.78);
}

.barcode-result{
  font-family:"Fira Code","JetBrains Mono","SFMono-Regular",monospace;
  font-weight:600;
  font-size:1.1rem;
  text-align:center;
  color:#0f0;
}

.barcode-actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  flex-wrap:wrap;
}

.barcode-actions .left{
  margin-right:auto;
  display:flex;
  align-items:center;
  gap:10px;
}

.barcode-permission-box{
  background:rgba(255,255,255,0.08);
  border:1px solid rgba(255,255,255,0.18);
  border-radius:10px;
  padding:12px;
  font-size:0.9rem;
  color:rgba(255,255,255,0.84);
}

.barcode-permission-box .muted{
  margin-top:6px;
  font-size:0.85rem;
}

@media (max-width:520px){
  .barcode-modal{ width:calc(100% - 32px); }
  .barcode-modal .barcode-actions{
    flex-direction:column;
    align-items:stretch;
    gap:10px;
  }
}
