.scan-overlay{z-index:300;background:#20212499;justify-content:center;align-items:center;padding:20px;animation:.12s scanFade;display:flex;position:fixed;inset:0}:root[data-theme=dark] .scan-overlay{background:#000000c7}@keyframes scanFade{0%{opacity:0}}.scan-dialog{background:var(--paper,#fff);color:var(--ink,#202124);border-radius:var(--r-lg,16px);box-shadow:var(--shadow-3,0 4px 8px 3px #3c404326, 0 1px 3px #3c40434d);width:560px;max-width:100%;max-height:92vh;font-family:var(--sans,"Google Sans", Roboto, -apple-system, "Segoe UI", sans-serif);flex-direction:column;animation:.16s cubic-bezier(.2,0,0,1) scanRise;display:flex;overflow:hidden}@keyframes scanRise{0%{opacity:0;transform:translateY(12px)scale(.98)}}.scan-head{align-items:center;gap:8px;padding:16px 20px 10px;font-size:19px;font-weight:400;display:flex}.scan-head .scan-title{flex:1}.scan-head button{cursor:pointer;width:40px;height:40px;color:var(--ink-3,#5f6368);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;display:grid}.scan-head button:hover{background:var(--paper-3,#f1f3f4);color:var(--ink,#202124)}.scan-head button.active{background:var(--ink,#202124);color:var(--paper,#fff)}.scan-body{flex:1;overflow-y:auto}.scan-info{padding:16px 20px}.scan-foot{align-items:center;gap:8px;padding:12px 20px 18px;display:flex}.scan-foot .grow{flex:1}.scan-btn{cursor:pointer;border:1px solid var(--line,#dadce0);background:var(--paper,#fff);height:42px;color:var(--ink,#202124);border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-family:inherit;font-size:14px;font-weight:500;display:inline-flex}.scan-btn:hover{background:var(--paper-3,#f1f3f4)}.scan-btn.primary{background:var(--ink-5,#000);color:var(--paper,#fff);border-color:#0000}:root[data-theme=dark] .scan-btn.primary{background:var(--paper,#fff);color:var(--paper-2,#1e1f20)}.scan-frame{aspect-ratio:4/3;background:#000;place-items:center;width:100%;display:grid;position:relative;overflow:hidden}.scan-frame video{object-fit:cover;width:100%;height:100%;display:block}.scan-frame video.hidden,.scan-frame .scan-reticle.hidden{display:none!important}.scan-reticle{pointer-events:none;position:absolute;inset:29% 4%}.scan-reticle i{border:3px solid #fffffff2;width:30px;height:30px;position:absolute}.scan-reticle .c1{border-bottom:0;border-right:0;border-radius:6px 0 0;top:0;left:0}.scan-reticle .c2{border-bottom:0;border-left:0;border-radius:0 6px 0 0;top:0;right:0}.scan-reticle .c3{border-top:0;border-right:0;border-radius:0 0 0 6px;bottom:0;left:0}.scan-reticle .c4{border-top:0;border-left:0;border-radius:0 0 6px;bottom:0;right:0}.scan-line{background:#ffffffe6;height:2px;animation:2s ease-in-out infinite scanSweep;position:absolute;left:4%;right:4%;box-shadow:0 0 10px #ffffffd9}@keyframes scanSweep{0%,to{top:6%}50%{top:94%}}@media (max-width:700px){.scan-overlay{align-items:stretch;padding:0}.scan-dialog{border-radius:0;width:100%;max-width:100%;height:100%;max-height:100%}.scan-head{padding:10px 12px 6px;font-size:17px}.scan-frame{aspect-ratio:auto;flex:1;min-height:0}.scan-body{flex-direction:column;flex:1;min-height:0;display:flex}.scan-foot{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion:reduce){.scan-line{animation:none;top:50%}}.scan-frame.scan-hit:after{content:"";pointer-events:none;background:#ffffffd9;animation:.28s ease-out forwards scanHit;position:absolute;inset:0}@keyframes scanHit{to{opacity:0}}.scan-blocked{color:#fff;text-align:center;background:#111;align-content:center;place-items:center;gap:4px;padding:28px 24px;display:grid;position:absolute;inset:0}.scan-status{font-family:var(--mono,ui-monospace, Consolas, monospace);word-break:break-all;min-height:22px;font-size:15px}.scan-diag{font-family:var(--mono,ui-monospace, Consolas, monospace);color:var(--ink-4,#80868b);margin-top:6px;font-size:11.5px}.scan-action{border-radius:var(--r,8px);background:var(--paper-2,#f8f9fa);border:1px solid var(--line,#dadce0);margin-top:12px;padding:12px}.scan-action .scan-btn{width:100%;margin-top:8px}.scan-log{flex-direction:column;gap:4px;margin-top:10px;display:flex}.scan-note{color:var(--ink-3,#5f6368);font-size:12.5px;font-family:var(--mono,ui-monospace, monospace);align-items:center;gap:6px;display:flex}.scan-note.error{color:var(--ink,#202124);font-weight:500}.scan-muted{color:var(--ink-3,#5f6368);font-size:13px}.scan-dialog svg{flex:none;display:block}.scan-hidden{display:none!important}
