/* App 扫码登录面板（登录卡片内 + 独立扫码页共用）。颜色跟登录页：品牌橙 #f68b35 / 墨色 #111823 */
.bvs { text-align: center; }
.bvs-t { font-size: 16px; font-weight: 600; color: #111823; margin-bottom: 16px; }
.bvs-box { position: relative; width: 188px; height: 188px; margin: 0 auto; padding: 12px; background: #fff; border: 1px solid #e4e8f1; border-radius: 14px; box-sizing: border-box; }
.bvs-qr, .bvs-qr svg { display: block; width: 100%; height: 100%; }
.bvs-mask { display: none; position: absolute; inset: 0; border-radius: 14px; background: rgba(255, 255, 255, .94); align-items: center; justify-content: center; }
.bvs-mask.on { display: flex; }
.bvs-mask-i { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 0 10px; }
.bvs-mask-i b { font-size: 14px; color: #111823; font-weight: 600; }
.bvs-mask-i span { font-size: 12px; color: #5e6b7c; }
.bvs-ico { width: 34px; height: 34px; border-radius: 50%; background: #eef1f6 center/20px no-repeat; }
.bvs-mask.loading .bvs-ico { background: none; border: 3px solid #f1e3d6; border-top-color: #f68b35; box-sizing: border-box; animation: bvs-spin .8s linear infinite; }
.bvs-mask.scanned .bvs-ico { background-color: #e7f7ee; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2315A34A' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.6l4.6 4.6L19 6.6'/%3E%3C/svg%3E"); }
.bvs-mask.expired .bvs-ico, .bvs-mask.error .bvs-ico { background-color: #fff1e4; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9520A' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 11a8 8 0 1 0-2.3 6.3'/%3E%3Cpath d='M20 5v6h-6'/%3E%3C/svg%3E"); }
.bvs-refresh { margin-top: 4px; padding: 5px 14px; border: 0; border-radius: 16px; background: #f68b35; color: #fff; font-size: 12px; cursor: pointer; }
.bvs-refresh:hover { background: #e9772a; }
.bvs-tip { margin-top: 16px; font-size: 13px; line-height: 1.8; color: #5e6b7c; }
.bvs-tip b { color: #111823; font-weight: 600; }
.bvs-scan-ico { display: inline-block; width: 15px; height: 15px; vertical-align: -3px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9520A' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8.6V6.2A2.2 2.2 0 0 1 6.2 4h2.4M15.4 4h2.4A2.2 2.2 0 0 1 20 6.2v2.4M20 15.4v2.4a2.2 2.2 0 0 1-2.2 2.2h-2.4M8.6 20H6.2A2.2 2.2 0 0 1 4 17.8v-2.4M4 12h16'/%3E%3C/svg%3E") center/contain no-repeat; }
.bvs-dl { display: inline-block; margin-top: 8px; font-size: 12px; color: #a8591d; text-decoration: none; }
.bvs-dl:hover { text-decoration: underline; }
@keyframes bvs-spin { to { transform: rotate(360deg); } }

/* ---- 登录卡片右上角的切换按钮（主题 login.tpl 里挂） ---- */
/* 竖直方向与「欢迎回来」(32px 字、行高 35.2px、卡片内距 40px) 居中对齐：40 + 35.2/2 - 42/2 ≈ 37；
   右边缘对齐表单右边线（卡片内距 40px，绝对定位从 1px 边框内算起所以写 39）。 */
.bvs-switch { position: absolute; top: 37px; right: 39px; z-index: 3; display: flex; align-items: center; gap: 8px; cursor: pointer; user-select: none; }
.bvs-switch-tip { padding: 4px 10px; border-radius: 6px; background: #fff4ea; color: #a8591d; font-size: 12px; line-height: 18px; white-space: nowrap; position: relative; }
.bvs-switch-tip:after { content: ''; position: absolute; right: -5px; top: 50%; margin-top: -5px; border: 5px solid transparent; border-right: 0; border-left-color: #fff4ea; }
.bvs-switch-btn { width: 40px; height: 40px; border-radius: 11px; background: #fff; border: 1px solid #e4e8f1; display: flex; align-items: center; justify-content: center; transition: border-color .15s, box-shadow .15s; }
.bvs-switch:hover .bvs-switch-btn { border-color: #f6b27a; box-shadow: 0 4px 14px rgba(246, 139, 53, .16); }
.bvs-switch-btn i { width: 22px; height: 22px; background: center/contain no-repeat; }
/* 密码模式下显示「二维码」图形，扫码模式下显示「电脑/账号」图形 —— 按钮永远指向另一种方式 */
.bvs-switch .i-qr { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9520A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.6' y='3.6' width='6.6' height='6.6' rx='1.2'/%3E%3Crect x='13.8' y='3.6' width='6.6' height='6.6' rx='1.2'/%3E%3Crect x='3.6' y='13.8' width='6.6' height='6.6' rx='1.2'/%3E%3Cpath d='M13.8 13.8h2.6v2.6M20.4 13.8v.01M13.8 20.4h.01M17.2 20.4h3.2v-3.2'/%3E%3C/svg%3E"); }
.bvs-switch .i-pc { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D9520A' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4.4' width='18' height='12' rx='1.8'/%3E%3Cpath d='M8.6 20h6.8M12 16.4V20'/%3E%3C/svg%3E"); }
.bvs-login-scan .QRLoginSwitchDiv, .bvs-login-scan #hwLoginDivId { display: none !important; }
.bvs-panel { display: none; padding: 6px 0 4px; }
.bvs-login-scan .bvs-panel { display: block; }
@media (max-width: 768px) {
  /* 手机：卡片内距 28/24px、标题 26px 行高 28.6px → 28 + 14.3 - 21 ≈ 21 */
  .bvs-switch { top: 21px; right: 23px; }
  .bvs-switch-tip { display: none; }
}
