/* UTIL-012 Quét mã QR — bổ sung cho bộ UI utilities.css. Font kế thừa Arial; không ghi đè FontAwesome. */
.qrs{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
.qrs>*{min-width:0}
.sou-page .qrs-heading{font-size:18px;margin:0}
.qrs-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.qrs-tabs [role=tab]{flex:1 1 180px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 16px;border:1px solid var(--sou-line);border-radius:14px;background:var(--sou-soft);color:var(--sou-ink);font:700 15px Arial,"Helvetica Neue",Helvetica,sans-serif;cursor:pointer}
.qrs-tabs [role=tab][aria-selected=true]{background:var(--sou-primary);border-color:var(--sou-primary);color:#fff}
.qrs-tabs [role=tab]:hover{border-color:#9db6f3}
.qrs-stage{position:relative;overflow:hidden;aspect-ratio:4/3;border-radius:16px;background:#0f1a3a;border:1px solid var(--sou-line)}
.qrs-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}
.qrs-video.is-mirrored{transform:scaleX(-1)}
.qrs-frame{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.qrs-frame span{width:min(62%,320px);aspect-ratio:1/1;border-radius:18px;box-shadow:0 0 0 2000px rgba(5,12,33,.35);border:3px solid rgba(255,255,255,.92)}
.qrs-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;text-align:center;color:#e8eeff}
.qrs-placeholder .fa{font-size:40px;color:#9db6f3}
.qrs-placeholder strong{font-size:18px;color:#fff}
.qrs-placeholder span:last-child{max-width:420px;font-size:15px;line-height:1.5}
.qrs-cam-actions{margin:14px 0 10px}
.qrs-camera-select{max-width:420px}
.qrs-help{margin:0;color:var(--sou-muted);font-size:14px}
.qrs-guide{margin:12px 0 0;font-weight:400}
.qrs-guide p{margin:0 0 6px;font-weight:700}
.qrs-guide ul{margin:0;padding-left:20px}
.qrs-guide li{margin:4px 0}
.qrs-drop{min-height:220px}
.qrs-image{display:grid;gap:12px}
.qrs-canvas{display:block;width:auto;max-width:100%;max-height:460px;margin:0 auto;border-radius:12px;border:1px solid var(--sou-line);background:#fff}
.qrs-image-tools{margin-top:0}
.qrs-image-tools .sou-button[aria-disabled=true]{opacity:.55;cursor:not-allowed}
.qrs-progress>span{width:40%;animation:qrs-slide 1.2s ease-in-out infinite}
@keyframes qrs-slide{0%{transform:translateX(-100%)}100%{transform:translateX(260%)}}
.qrs-result{padding:18px;border:1px solid var(--sou-line);border-radius:16px;background:#f7f9fd}
.qrs-result-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px}
.qrs-result-head h2:focus{outline:none}
.qrs-result-head h2:focus-visible{outline:2px solid #3869ed;outline-offset:2px}
.qrs-sheet-close{display:none!important;min-width:46px;padding:8px 12px}
.qrs-empty{margin:0;color:var(--sou-muted);font-weight:700}
.qrs-picker{margin:0 0 12px}
.qrs-picker-label{margin:0 0 8px;font-weight:700;color:var(--sou-ink)}
.qrs-picker .sou-presets{margin:0}
.qrs-picker .sou-presets button{min-height:44px}
.qrs-type{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.qrs-badge{display:inline-flex;align-items:center;padding:6px 14px;border-radius:999px;background:#e8efff;color:#1948c6;font-weight:700;font-size:14px}
.qrs-badge.type-blocked{background:var(--sou-err-bg);color:var(--sou-err)}
.qrs-badge.type-payment,.qrs-badge.type-otp{background:var(--sou-warn-bg);color:var(--sou-warn)}
.qrs-dup{color:var(--sou-muted);font-size:14px;font-weight:700}
.qrs-warnings{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.qrs-warn{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:12px;font-size:14px;line-height:1.45}
.qrs-warn .fa{margin-top:3px;flex:none}
.qrs-warn.danger{background:var(--sou-err-bg);color:var(--sou-err);font-weight:700}
.qrs-warn.warn{background:var(--sou-warn-bg);color:var(--sou-warn);font-weight:700}
.qrs-warn.info{background:#fff;border:1px solid var(--sou-line);color:var(--sou-text)}
.qrs-fields{display:grid;grid-template-columns:minmax(110px,auto) minmax(0,1fr);gap:8px 12px;margin:0 0 12px;font-size:15px;align-items:baseline}
.qrs-fields dt{color:var(--sou-muted)}
.qrs-fields dd{margin:0;color:var(--sou-ink);overflow-wrap:anywhere;white-space:pre-wrap}
.qrs-fields dd.is-strong{font-weight:700;font-size:17px}
.qrs-fields .sou-link-button{min-height:44px;min-width:44px;padding:0 8px;font-size:14px;vertical-align:middle}
.qrs-secret{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;letter-spacing:.06em}
.qrs-raw-box{margin:0 0 12px}
.qrs-raw-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.qrs-raw-head .sou-label{margin:0}
.qrs-raw-head .sou-link-button{min-width:44px;padding:0 8px}
.qrs-raw{margin:6px 0 4px;max-height:220px;overflow:auto;padding:12px;border:1px solid var(--sou-line);border-radius:10px;background:#fff;font:15px/1.5 Arial,"Helvetica Neue",Helvetica,sans-serif;color:var(--sou-text);white-space:pre-wrap;overflow-wrap:anywhere;unicode-bidi:plaintext}
.qrs-raw.is-masked{color:var(--sou-muted);font-style:italic}
.qrs-raw:focus-visible{outline:2px solid #3869ed;outline-offset:2px}
.qrs-raw-info{color:var(--sou-muted);font-size:13px}
.qrs-open{margin:0 0 12px;padding:14px;border-radius:12px;border:1px solid #f0d39a;background:var(--sou-warn-bg);color:var(--sou-text)}
.qrs-open p{margin:0 0 8px}
.qrs-open-title{font-size:16px;color:var(--sou-ink)}
.qrs-open-title strong{overflow-wrap:anywhere}
.qrs-open-url{font-size:14px;color:var(--sou-muted);overflow-wrap:anywhere}
.qrs-open .sou-actions{margin:4px 0 0}
.qrs-tools{margin-top:4px}
.qrs-device{margin:14px 0 0;font-size:14px;font-weight:700;color:var(--sou-ok)}
@media(min-width:861px){
 .qrs{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;column-gap:24px}
 .qrs-result{position:sticky;top:16px}
}
@media(max-width:600px){
 .qrs-stage{aspect-ratio:1/1}
 .qrs-cam-actions .sou-button{flex:1 1 100%}
 .qrs-result{padding:14px}
 .qrs-fields{grid-template-columns:1fr;gap:2px}
 .qrs-fields dd{margin-bottom:8px}
 .qrs-tools .sou-button{flex:1 1 calc(50% - 8px)}
 .qrs-result.is-sheet{position:fixed;left:0;right:0;bottom:0;z-index:9990;max-height:80vh;overflow:auto;margin:0;border-radius:20px 20px 0 0;background:#fff;box-shadow:0 -12px 34px rgba(5,12,33,.28);padding:16px 16px calc(18px + env(safe-area-inset-bottom,0px))}
 .qrs-result.is-sheet .qrs-sheet-close{display:inline-flex!important}
}
@media(prefers-reduced-motion:reduce){.qrs *{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{.qrs-input,.qrs-tools,.qrs-sheet-close,.qrs-open{display:none!important}.qrs{display:block}.qrs-result{border:0;background:#fff;position:static}}
