/* "QR Okut" camera scanner (js/qr-scanner.js). */
.qr-scan-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  border: 0; cursor: pointer; font: inherit; font-weight: 700;
}
.qr-scan-btn .icon { width: 22px; height: 22px; }

.qr-scanner {
  margin: auto; padding: 0;
  width: min(440px, calc(100% - 24px));
  border: 0; border-radius: 22px; overflow: hidden;
  background: #0d1526; color: #fff;
  font-family: "Roboto", system-ui, sans-serif;
}
.qr-scanner::backdrop { background: rgba(5, 8, 15, .8); }
.qr-scanner-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; }
.qr-scanner-head strong { font-size: 17px; }
.qr-scanner-close { display: grid; place-items: center; width: 38px; height: 38px; border: 0; border-radius: 10px; background: rgba(255, 255, 255, .1); color: #fff; cursor: pointer; }
.qr-scanner-close .icon { width: 22px; height: 22px; }
.qr-scanner-view { position: relative; aspect-ratio: 1; background: #000; }
.qr-scanner-view video { width: 100%; height: 100%; object-fit: cover; display: block; }
.qr-scanner-frame {
  position: absolute; inset: 18%;
  border: 3px solid #ff8a3d; border-radius: 22px;
  box-shadow: 0 0 0 9999px rgba(0, 0, 0, .35);
  animation: qr-pulse 1.6s ease-in-out infinite;
}
@keyframes qr-pulse { 50% { border-color: #60a5fa; } }
.qr-scanner-status { padding: 14px 16px 18px; text-align: center; color: rgba(255, 255, 255, .85); font-size: 15px; line-height: 1.4; }
.qr-scanner.is-wrong .qr-scanner-frame { border-color: #ef4444; animation: none; }
.qr-scanner.is-wrong .qr-scanner-status { background: #dc2626; color: #fff; }
.qr-scanner.is-wrong .qr-scanner-status strong { display: block; font-size: 19px; }
