.scan-overlay{z-index:300;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#08090bb8;justify-content:center;align-items:center;padding:20px;animation:.16s scanFade;display:flex;position:fixed;inset:0}@keyframes scanFade{0%{opacity:0}}.scan-dialog{--scan-bg:#101216;--scan-bg-2:#171a1f;--scan-ink:#eef1f5;--scan-ink-2:#9aa3ad;--scan-line:#ffffff1a;background:var(--scan-bg);color:var(--scan-ink);width:560px;max-width:100%;max-height:92vh;font-family:var(--sans,"Google Sans", Roboto, -apple-system, "Segoe UI", sans-serif);border:1px solid #ffffff14;border-radius:20px;flex-direction:column;animation:.22s cubic-bezier(.2,.8,.2,1) scanRise;display:flex;overflow:hidden;box-shadow:0 24px 64px #0000008c,0 2px 8px #0006}@keyframes scanRise{0%{opacity:0;transform:translateY(14px)scale(.97)}}.scan-head{letter-spacing:-.01em;align-items:center;gap:8px;padding:14px 16px 12px;font-size:16px;font-weight:500;display:flex}.scan-head .scan-title{flex:1}.scan-head button{cursor:pointer;width:36px;height:36px;color:var(--scan-ink-2);background:#ffffff0f;border:0;border-radius:50%;flex:none;place-items:center;transition:background .14s,color .14s;display:grid}.scan-head button:hover{color:var(--scan-ink);background:#ffffff24}.scan-body{flex:1;overflow-y:auto}.scan-info{padding:14px 16px 4px}.scan-foot{align-items:center;gap:8px;padding:12px 16px 16px;display:flex}.scan-foot .grow{flex:1}.scan-btn{cursor:pointer;height:42px;color:var(--scan-ink);background:0 0;border:1px solid #ffffff29;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-family:inherit;font-size:14px;font-weight:500;transition:background .14s,border-color .14s,transform .1s;display:inline-flex}.scan-btn:hover{background:#ffffff1a;border-color:#ffffff42}.scan-btn:active{transform:scale(.98)}.scan-btn.primary{background:var(--scan-ink);color:#14171c;border-color:#0000;font-weight:600}.scan-btn.primary:hover{background:#fff}.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;border-radius:14px;position:absolute;inset:27% 6%;overflow:hidden;box-shadow:0 0 0 9999px #0000008c}.scan-reticle i{filter:drop-shadow(0 0 6px #0009);border:2.5px solid #fffffff5;width:26px;height:26px;transition:width .18s cubic-bezier(.2,.8,.2,1),height .18s cubic-bezier(.2,.8,.2,1);position:absolute}.scan-reticle .c1{border-bottom:0;border-right:0;border-radius:14px 0 0;top:0;left:0}.scan-reticle .c2{border-bottom:0;border-left:0;border-radius:0 14px 0 0;top:0;right:0}.scan-reticle .c3{border-top:0;border-right:0;border-radius:0 0 0 14px;bottom:0;left:0}.scan-reticle .c4{border-top:0;border-left:0;border-radius:0 0 14px;bottom:0;right:0}.scan-line{background:linear-gradient(#fff0 0%,#ffffff08 60%,#ffffff29 88%,#ffffff6b 100%);border-bottom:1.5px solid #ffffffe6;height:56px;animation:2.4s cubic-bezier(.5,0,.5,1) infinite scanSweep;position:absolute;top:0;left:0;right:0;box-shadow:0 1px 14px #ffffff4d}@keyframes scanSweep{0%{opacity:0;top:-56px}10%{opacity:1}55%{opacity:1;top:100%}70%{opacity:0}to{opacity:0;top:-56px}}.scan-tools{z-index:2;flex-direction:column;gap:8px;display:flex;position:absolute;bottom:12px;right:12px}.scan-tools button{cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;background:#1012168c;border:1px solid #ffffff2e;border-radius:50%;flex:none;place-items:center;width:42px;height:42px;transition:background .14s,transform .1s;display:grid}.scan-tools button:hover{background:#101216cc}.scan-tools button:active{transform:scale(.94)}.scan-tools button.active{color:#14171c;background:#fff;border-color:#0000;box-shadow:0 0 16px #ffffff73}.scan-frame.scan-hit .scan-reticle:after{content:"";background:#ffffff29;border:2px solid #fff;border-radius:14px;animation:.42s cubic-bezier(.2,.8,.2,1) forwards scanHit;position:absolute;inset:0;box-shadow:inset 0 0 30px #ffffff73}.scan-frame.scan-hit .scan-reticle i{width:34px;height:34px}.scan-frame.scan-hit .scan-line{opacity:0}@keyframes scanHit{0%{opacity:0;transform:scale(1.035)}22%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1)}}.scan-blocked{color:var(--scan-ink);text-align:center;z-index:3;background:linear-gradient(#14171c,#0b0d10);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;letter-spacing:.02em;min-height:22px;font-size:15px}.scan-diag{font-family:var(--mono,ui-monospace, Consolas, monospace);color:var(--scan-ink-2);opacity:.8;margin-top:6px;font-size:11px}.scan-action{background:var(--scan-bg-2);border:1px solid var(--scan-line);border-radius:14px;margin-top:12px;padding:12px}.scan-action .scan-btn{width:100%;margin-top:8px}.scan-log{flex-direction:column;gap:5px;margin-top:10px;display:flex}.scan-note{color:var(--scan-ink-2);font-size:12.5px;font-family:var(--mono,ui-monospace, monospace);align-items:center;gap:7px;animation:.2s scanNote;display:flex}@keyframes scanNote{0%{opacity:0;transform:translateY(-4px)}}.scan-note.error{color:var(--scan-ink);font-weight:500}.scan-muted{color:var(--scan-ink-2);font-size:13px}.scan-dialog svg{flex:none;display:block}.scan-hidden{display:none!important}@media (max-width:700px){.scan-overlay{align-items:stretch;padding:0}.scan-dialog{border:0;border-radius:0;width:100%;max-width:100%;height:100%;max-height:100%}.scan-head{padding:calc(10px + env(safe-area-inset-top)) 12px 8px;font-size:16px}.scan-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.scan-frame{aspect-ratio:auto;flex:1;min-height:0}.scan-reticle{inset:32% 5%}.scan-info{flex:none;max-height:34vh;overflow-y:auto}.scan-foot{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}.scan-tools{bottom:10px;right:10px}}@media (prefers-reduced-motion:reduce){.scan-line{opacity:.9;animation:none;top:50%}.scan-dialog,.scan-overlay,.scan-note{animation:none}}
