.scan{padding:28px 16px 48px}
.scan__inner{max-width:480px;margin:0 auto}
.scan__title{font-family:var(--display);color:var(--ink);font-size:clamp(1.6rem,6vw,2.1rem);line-height:1.1;margin:0 0 8px}
.scan__lead{color:var(--muted);margin:0 0 20px}
.scan__frame{position:relative;aspect-ratio:1/1;border-radius:20px;overflow:hidden;background:var(--ink);margin-bottom:16px;border:2px solid var(--line)}
.scan__frame[hidden]{display:none}
.scan__frame video{width:100%;height:100%;object-fit:cover;display:block}
.scan__finder{position:absolute;inset:18%;border:3px solid var(--sun);border-radius:16px;box-shadow:0 0 0 999px rgba(20,21,46,.45);pointer-events:none}
.scan__status{min-height:1.4em;margin:0 0 14px;color:var(--ink);font-weight:500}
.scan__status.is-error{color:#9B1C1C}
.scan__refused{background:var(--sky);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin-bottom:16px}
.scan__refused[hidden]{display:none}
.scan__refused-title{margin:0 0 6px;font-weight:700;color:var(--ink)}
.scan__decoded{margin:0;color:var(--muted);overflow-wrap:anywhere;word-break:break-word}
.scan__actions{display:flex;flex-direction:column;gap:10px}
.scan__btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:999px;border:2px solid var(--indigo);background:#fff;color:var(--indigo);font:600 1rem var(--body);cursor:pointer;text-decoration:none}
.scan__btn[hidden]{display:none}
.scan__btn--primary{background:var(--indigo);color:#fff}
.scan__btn:focus-visible,.scan__actions:has(.scan__file:focus-visible) label.scan__btn{outline:3px solid var(--sun);outline-offset:2px}
.scan__file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
@media (min-width:640px){.scan{padding-top:48px}}
