.scan-progress{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);overflow:hidden}.scan-progress__bar{background:var(--bg-sunken);height:3px;overflow:hidden}.scan-progress__bar-fill{background:var(--accent);height:100%;transition:width var(--dur-3) var(--ease-out);position:relative}.scan-progress__bar-fill:after{content:"";background:linear-gradient(90deg, transparent, var(--accent));filter:blur(1px);width:28px;position:absolute;top:0;bottom:0;right:0}.scan-progress__bar--indeterminate{position:relative}.scan-progress__bar-sweep{background:linear-gradient(90deg, transparent, var(--accent), transparent);width:40%;animation:1.4s ease-in-out infinite scan-progress-sweep;position:absolute;top:0;bottom:0;left:0}@keyframes scan-progress-sweep{0%{transform:translate(-100%)}to{transform:translate(350%)}}.scan-progress__lead{padding:var(--space-4) var(--space-4) 0;font-size:var(--text-small);color:var(--ink-2);margin:0}.scan-progress__steps{padding:var(--space-4);gap:var(--space-3);margin:0;display:grid}.scan-progress__steps--listing{padding-top:var(--space-3)}.scan-progress__step{align-items:center;gap:var(--space-3);font-size:var(--text-small);color:var(--ink-3);display:flex}.scan-progress__step.is-done{color:var(--ink-2)}.scan-progress__step.is-active{color:var(--ink)}.scan-progress__icon{flex:none;place-items:center;width:20px;height:20px;display:grid}.scan-progress__icon .icon--done{color:var(--success)}.scan-progress__icon .icon--active{color:var(--accent-ink);animation:.9s linear infinite spin}.scan-progress__dot{border:2px solid var(--line-strong);border-radius:50%;width:10px;height:10px}.scan-progress__label{margin-right:auto}.scan-progress__status{font-family:var(--font-mono);font-size:var(--text-micro);letter-spacing:var(--tracking-mono-label);text-transform:uppercase;color:var(--ink-3)}.scan-progress__note{padding:0 var(--space-4) var(--space-4);margin:0}@media (prefers-reduced-motion:reduce){.scan-progress__icon .icon--active{animation:none}.scan-progress__bar-fill:after{display:none}.scan-progress__bar-sweep{background:var(--bg-sunken);width:100%;animation:none}}
