/* QR / barcode scanner. Shared --ink/--muted/--line/--paper/--white/--blue tokens keep dark mode in step with the site. */
.sc-page{max-width:1240px}
.sc-heading h1{font-size:clamp(28px,4vw,42px);line-height:1.25;margin:8px 0 12px}
.sc-workbench{border:1px solid var(--line);border-radius:18px;background:var(--white);box-shadow:0 14px 42px rgba(23,42,71,.06);padding:16px 18px;display:grid;gap:14px;min-width:0}
.sc-inputs{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:12px}
.sc-drop{border:2px dashed var(--line);border-radius:16px;min-height:150px;display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;background:var(--paper);transition:border-color .15s,background .15s}
.sc-drop:hover,.sc-drop.over,.sc-drop:focus{border-color:var(--blue);outline:0;background:var(--blue-soft,#eaf1ff)}
.sc-drop-text{display:grid;gap:6px;padding:20px}.sc-drop-text b{font-size:18px}.sc-drop-text span{font-size:13px;color:var(--muted)}
.sc-camera-start{border:1px solid var(--line);border-radius:16px;padding:14px;display:grid;gap:10px;align-content:center;background:var(--paper)}
.sc-check{display:flex;gap:8px;align-items:center;font-size:14px}
.sc-muted,.sc-list .sc-muted{color:var(--muted);font-size:13px;margin:0}
.sc-workbench button,.sc-btn{min-height:38px;border:1px solid var(--line);border-radius:10px;padding:6px 12px;font:inherit;font-size:14px;background:var(--white);color:var(--ink);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.sc-workbench button.primary{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:600}
.sc-workbench select{min-height:38px;border:1px solid var(--line);border-radius:10px;padding:4px 8px;font:inherit;font-size:14px;background:var(--white);color:var(--ink);max-width:220px}
.sc-camera{border:1px solid var(--line);border-radius:14px;padding:10px;display:grid;gap:8px}
.sc-video{position:relative;max-width:640px;width:100%;margin:0 auto;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:16/9}
.sc-video video{display:block;width:100%;height:100%;object-fit:cover}
.sc-aim{position:absolute;inset:18% 22%;border:3px solid rgba(255,255,255,.9);border-radius:14px;box-shadow:0 0 0 999px rgba(0,0,0,.25);animation:sc-pulse 1.6s ease-in-out infinite}
@keyframes sc-pulse{50%{border-color:rgba(36,86,232,.95)}}
@media (prefers-reduced-motion:reduce){.sc-aim{animation:none}}
.sc-bar{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;font-size:14px}.sc-bar>span{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.sc-status{margin:0;padding:8px 12px;border-radius:10px;background:var(--paper);font-size:14px}.sc-status.ok{background:#e8f7ef;color:#14532d}.sc-status.warn{background:#fff7e6;color:#7a4b00}
.sc-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.sc-list li{display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:12px;align-items:start;border:1px solid var(--line);border-radius:12px;padding:8px;background:var(--paper)}
.sc-list img,.sc-cam-icon{width:72px;height:72px;object-fit:contain;border-radius:8px;background:var(--white)}
.sc-cam-icon{display:grid;place-items:center;font-size:30px;color:var(--blue)}
.sc-meta{display:grid;gap:4px;min-width:0;font-size:13.5px}.sc-meta .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-format{color:var(--blue)}
.sc-text{margin:2px 0;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--white);font:14px/1.6 "SFMono-Regular",Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow:auto;user-select:all}
.sc-acts{display:flex;flex-wrap:wrap;gap:6px}.sc-acts button,.sc-acts a{min-height:34px;padding:4px 10px;font-size:13px}
.sc-list .good{color:#15803d;font-weight:600}.sc-list .bad{color:#b42318}.sc-warn{color:#9a5b00;font-size:12.5px}
.sc-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;margin:0}.sc-dl dt{color:var(--muted)}.sc-dl dd{margin:0;overflow-wrap:anywhere}.sc-dl button{min-height:28px;padding:2px 8px;font-size:12px}
.sc-x{min-height:34px;padding:4px 10px}
html[data-xunl-theme="dark"] .sc-status.ok{background:#0f2a1c;color:#a7f3c5}html[data-xunl-theme="dark"] .sc-status.warn{background:#2b220c;color:#ffd98a}html[data-xunl-theme="dark"] .sc-warn{color:#ffd98a}
@media(max-width:760px){.sc-inputs{grid-template-columns:1fr}.sc-list li{grid-template-columns:56px minmax(0,1fr) auto}.sc-list img,.sc-cam-icon{width:56px;height:56px}}
