/* Quick Scan: uses saved appearance tokens, dark defaults */
.qs-head-btn{display:inline-grid;place-items:center;width:36px;height:36px;padding:0;border-radius:9px;border:1px solid var(--mt-border,#2c2f35);background:transparent;color:var(--mt-ink,#e9eaec);cursor:pointer;transition:background .15s,border-color .15s}
.qs-head-btn svg{width:19px;height:19px}
.qs-head-btn:hover{background:var(--mt-hover,rgba(255,255,255,.06));border-color:var(--mt-accent,#c8102e)}
.qs-head-btn:focus-visible,.qs-modal :focus-visible{outline:2px solid var(--mt-accent,#c8102e);outline-offset:2px}
html.qs-lock{overflow:hidden}
.qs-backdrop{position:fixed;inset:0;z-index:9000;background:rgba(6,7,9,.66);display:grid;place-items:center;padding:16px}
.qs-backdrop[hidden]{display:none}
.qs-modal{--qi:var(--mt-panel-ink,#eceef1);--qm:var(--mt-panel-muted,#9a9ea6);--ql:var(--mt-border,#2a2d33);--qa:var(--mt-accent,#c8102e);width:min(760px,100%);max-height:min(92dvh,900px);display:flex;flex-direction:column;background:var(--mt-panel,#0f1013);color:var(--qi);border:1px solid var(--ql);border-radius:16px;box-shadow:0 24px 60px rgba(0,0,0,.45);overflow:hidden;animation:qs-in .18s ease-out}
@keyframes qs-in{from{opacity:0;transform:translateY(10px) scale(.985)}}
.qs-top{display:flex;justify-content:space-between;align-items:center;padding:16px 18px 10px;gap:12px}
.qs-top h2{margin:2px 0 0;font-size:20px;letter-spacing:-.01em}
.qs-eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--qm);overflow-wrap:anywhere}
.qs-x{width:36px;height:36px;display:grid;place-items:center;border-radius:9px;border:1px solid var(--ql);background:transparent;color:var(--qi);cursor:pointer;flex:none}.qs-x svg{width:18px;height:18px}
.qs-tabs{display:flex;gap:4px;padding:0 18px;border-bottom:1px solid var(--ql);overflow-x:auto}
.qs-tabs button{background:none;border:0;border-bottom:2px solid transparent;color:var(--qm);padding:10px 12px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap}
.qs-tabs button[aria-selected=true]{color:var(--qi);border-color:var(--qa)}
.qs-body{padding:16px 18px 20px;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:14px}
.qs-pane[hidden]{display:none}
.qs-cam{position:relative;aspect-ratio:16/10;max-height:46dvh;width:100%;background:#050607;border-radius:12px;overflow:hidden;border:1px solid var(--ql)}
.qs-cam video{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .2s}.qs-cam.on video{opacity:1}
.qs-reticle{position:absolute;inset:22% 12%;border:2px solid rgba(255,255,255,.75);border-radius:10px;opacity:0;transition:opacity .2s;box-shadow:0 0 0 999px rgba(0,0,0,.28)}.qs-cam.on .qs-reticle{opacity:1}
.qs-cam-idle{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:20px;color:#a9adb4;font-size:14px}.qs-cam-idle[hidden]{display:none}
.qs-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.qs-status{margin:6px 0 0;font-size:13px;color:var(--qm);min-height:1em;overflow-wrap:anywhere}.qs-status:empty{display:none}.qs-status.bad{color:var(--qa)}
.qs-note{font-size:13px;color:var(--qm);margin:4px 0}
.qs-drop{display:flex;flex-direction:column;gap:4px;padding:22px;border:1.5px dashed var(--ql);border-radius:12px;cursor:pointer;text-align:center}.qs-drop span{font-weight:600}.qs-drop small{color:var(--qm)}
.qs-drop:hover{border-color:var(--qa)}
.qs-file{position:absolute;width:1px;height:1px;opacity:0}.qs-file:focus-visible+.qs-preview,.qs-file:focus-visible~*{outline:none}
.qs-preview{display:block;max-width:100%;max-height:220px;margin-top:10px;border-radius:10px;border:1px solid var(--ql)}.qs-preview[hidden]{display:none}
.qs-disclose{margin-top:10px;padding:12px;border:1px solid var(--ql);border-radius:10px;font-size:13px}.qs-disclose p{margin:0 0 8px;color:var(--qm)}.qs-disclose b{color:var(--qi)}
.qs-cands{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.qs-cands li,.qs-manual,.qs-policy{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--ql);border-radius:10px;flex-wrap:wrap}
.qs-cands li div,.qs-manual>div:first-child,.qs-policy>div{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 220px;overflow-wrap:anywhere}
.qs-cands small,.qs-manual span,.qs-policy span{color:var(--qm);font-size:12.5px}
.qs-search{display:flex;gap:8px}.qs-search input{flex:1;min-width:0}
.qs-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.qs-target{display:flex;gap:10px}.qs-target .qs-field:first-child{flex:1;min-width:0}.qs-qty{width:90px}
.qs-field{display:flex;flex-direction:column;gap:4px;min-width:0}.qs-field label{font-size:12px;color:var(--qm);font-weight:600}
.qs-modal input:not([type=checkbox]):not([type=file]),.qs-modal select,.qs-modal textarea{width:100%;box-sizing:border-box;background:var(--mt-input,#17191d);color:var(--mt-input-ink,var(--qi));border:1px solid var(--ql);border-radius:9px;padding:9px 11px;font:inherit;font-size:15px}
.qs-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.qs-item{display:flex;gap:12px;justify-content:space-between;padding:14px;border:1px solid var(--ql);border-radius:12px;border-left:3px solid var(--ql)}
.qs-item.mismatch{border-left-color:var(--qa)}
.qs-item-main{min-width:0;flex:1}.qs-pn{font-family:ui-monospace,"Spline Sans Mono",monospace;font-weight:700;font-size:16px;overflow-wrap:anywhere}.qs-desc{color:var(--qm);font-size:14px;margin-top:2px;overflow-wrap:anywhere}
.qs-facts{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 8px}.qs-facts dt{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--qm)}.qs-facts dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.qs-compat{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.qs-compat small,.qs-upd{color:var(--qm);font-size:12px}
.qs-badge{font-size:11.5px;font-weight:700;padding:3px 8px;border-radius:999px;border:1px solid var(--ql);color:var(--qm)}
.qs-badge.ok{color:#7fd4a8;border-color:rgba(127,212,168,.45)}.qs-badge.bad{color:#fff;background:var(--qa);border-color:var(--qa)}
.qs-item-acts{display:flex;flex-direction:column;gap:6px;flex:none}
.qs-empty,.qs-err{display:flex;flex-direction:column;gap:6px;align-items:flex-start;padding:16px;border:1px dashed var(--ql);border-radius:12px}.qs-empty span{color:var(--qm);font-size:13.5px}
.qs-err{border-style:solid;border-color:var(--qa)}
.qs-manual{margin-top:10px}
.qs-skel{display:flex;flex-direction:column;gap:8px}.qs-skel i{display:block;height:74px;border-radius:12px;background:linear-gradient(90deg,var(--ql),transparent,var(--ql));background-size:200% 100%;animation:qs-sh 1.2s linear infinite;opacity:.6}
@keyframes qs-sh{to{background-position:-200% 0}}
.qs-inv{margin-top:12px;display:flex;flex-direction:column;gap:10px}.qs-inv-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.qs-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.qs-span{grid-column:1/-1}
.qs-check{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--qm)}
.qs-ro-section .qs-lines{display:flex;flex-direction:column;gap:8px}
.qs-line{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--mt-border,#2a2d33)}.qs-line:first-child{border-top:0}
.qs-line>div:first-child{min-width:0;overflow-wrap:anywhere}.qs-line-meta{display:flex;gap:12px;flex-wrap:wrap;align-items:center;font-size:13px}
@media (max-width:640px){.qs-backdrop{padding:0;place-items:end stretch}.qs-modal{max-height:100dvh;height:100dvh;border-radius:0;width:100%}.qs-item{flex-direction:column}.qs-item-acts{flex-direction:row;flex-wrap:wrap}.qs-grid{grid-template-columns:1fr}.qs-cam{aspect-ratio:4/5}}
@media (prefers-reduced-motion:reduce){.qs-modal,.qs-skel i{animation:none}}
.qs-float{position:fixed;top:12px;right:12px;z-index:8000;background:var(--mt-panel,#0f1013);box-shadow:0 4px 14px rgba(0,0,0,.35)}
.qs-block{margin:0;max-width:200px;font-size:12.5px;color:var(--mt-accent,#c8102e);font-weight:600}
/* v2: compact camera, torch, photo choices, OCR, confirmation */
.qs-cam{aspect-ratio:16/9;max-height:40dvh}
.qs-cam[data-state=idle],.qs-cam[data-state=starting]{aspect-ratio:auto;height:140px}
.qs-cam-idle{gap:2px;align-content:center}.qs-cam-idle span{font-weight:700;color:#d6d8dc}.qs-cam-idle small{font-size:12.5px}
.qs-cam[data-state=starting] .qs-cam-idle span::after{content:'...'}
.qs-reticle{inset:20% 10%;border-color:rgba(255,255,255,.85)}
.qs-reticle i{position:absolute;left:6%;right:6%;top:50%;height:2px;background:var(--qa);opacity:.9;animation:qs-scanline 1.8s ease-in-out infinite alternate}
@keyframes qs-scanline{from{transform:translateY(-34px)}to{transform:translateY(34px)}}
.qs-torch{position:absolute;right:10px;bottom:10px;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(10,11,13,.7);color:#eceef1;cursor:pointer}.qs-torch svg{width:20px;height:20px}.qs-torch[hidden]{display:none}.qs-torch.on{background:var(--qa);border-color:var(--qa);color:#fff}
.qs-row .btn:disabled{opacity:.5;cursor:not-allowed}
.qs-photo-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.qs-drop{padding:14px 10px}
.qs-photo-btns:has(+#qs-file:focus-visible) label[for=qs-file],.qs-photo-btns:has(~#qs-cap:focus-visible) label[for=qs-cap]{outline:2px solid var(--qa);outline-offset:2px}
.qs-ocr{margin-top:10px;border:1px solid var(--ql);border-radius:10px;padding:10px 12px}.qs-ocr-k{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--qm)}
.qs-ocr pre{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.45 ui-monospace,"Spline Sans Mono",monospace;max-height:160px;overflow:auto}
.qs-confirm{border:1px solid var(--ql);border-left:3px solid var(--qi);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--mt-input,#17191d)}
.qs-confirm.issue{border-left-color:var(--qa)}
.qs-confirm-h{font-weight:700;font-size:15px}
.qs-confirm-dl{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:0}.qs-confirm-dl dt{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--qm)}.qs-confirm-dl dd{margin:0;font-weight:600;overflow-wrap:anywhere}
.qs-mono{font-family:ui-monospace,"Spline Sans Mono",monospace}
.qs-warn{margin:0;padding:9px 11px;border-radius:9px;border:1px solid var(--qa);color:var(--qi);font-size:13px}
.qs-check input{width:18px;height:18px;flex:none;margin-top:1px;accent-color:var(--qa)}.qs-confirm .qs-check{color:var(--qi);font-weight:600}
.qs-badge.issued{color:#fff;background:#2a2d33;border-color:var(--qa)}
.qs-line .qs-badge{margin-left:6px;vertical-align:middle}
@media (max-width:640px){.qs-cam{aspect-ratio:16/10}.qs-cam[data-state=idle],.qs-cam[data-state=starting]{height:124px;aspect-ratio:auto}.qs-confirm-dl{grid-template-columns:1fr}.qs-search .btn,.qs-row .btn{min-height:40px}.qs-target{flex-wrap:wrap}.qs-qty{width:84px}}
@media (prefers-reduced-motion:reduce){.qs-reticle i{animation:none}}
.qs-name{font-weight:600;font-size:14.5px;margin-top:2px;overflow-wrap:anywhere}
.qs-cam-torch[hidden]{display:none!important}
/* Keep the dialog inside phone viewports and let status text occupy its actual
   height. Flex shrinking otherwise squeezes multi-line notices into each other. */
.qs-backdrop,.qs-modal,.qs-modal *{box-sizing:border-box}
.qs-modal{min-width:0;max-width:100%}
.qs-top,.qs-tabs{flex-shrink:0}
.qs-body{flex:1;min-height:0;min-width:0}
.qs-body>*{flex-shrink:0;min-width:0}
#qs-action-msg,#qs-cam-msg,#qs-photo-msg,#qs-ai-msg{height:auto;overflow-wrap:anywhere;white-space:normal;line-height:1.5}
