/* Photo and overlays use the same image coordinates at every viewport size. */
#screen-analyse.has-photo-scan .analyse-wrap{width:100%;max-width:440px;min-height:0;padding-top:28px;margin-inline:auto}
#screen-analyse.has-photo-scan .scanner,#screen-analyse.has-photo-scan .analyse-status,#screen-analyse.has-photo-scan .analyse-sub,#screen-analyse.has-photo-scan .analyse-help{display:none}
.photo-scan[hidden],.scan-region-steps[hidden]{display:none}
.photo-scan{width:100%;min-width:0;margin:0 auto;text-align:left;background:var(--surface-raised,#fff);border:1px solid var(--line);border-radius:24px;padding:24px;box-shadow:0 8px 32px #17243106;--scan-accent:#76aaff;--scan-fill:rgba(75,139,246,.13)}
.scan-photo-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;font-size:10px;font-weight:600;letter-spacing:.12em;color:var(--dim)}
.scan-photo-heading strong{display:flex;align-items:center;gap:7px;font-size:10px;letter-spacing:.08em;font-weight:600;color:var(--blue-deep);background:var(--blue-wash);border-radius:20px;padding:7px 10px}
.scan-photo-heading strong:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 3px var(--blue-wash)}
.scan-photo-frame{position:relative;max-width:100%;margin:auto;overflow:hidden;background:var(--bg2);border-radius:14px;isolation:isolate}
.scan-photo-frame img{display:block;width:100%;height:100%;object-fit:contain}
.scan-photo-frame svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.scan-photo-frame g{opacity:0;transition:opacity .55s ease}
.scan-photo-frame g.is-current{opacity:1}
.scan-region-outline{fill:var(--scan-fill);stroke:var(--scan-accent);stroke-opacity:.8;stroke-width:1;stroke-linecap:round;stroke-linejoin:round}
.scan-region-trace{fill:none;stroke:#d7e7ff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:20 150;animation:scan-trace 5s linear infinite}
.scan-photo-sweep{position:absolute;left:0;right:0;height:22%;top:-22%;pointer-events:none;background:linear-gradient(transparent,rgba(68,138,248,.12));border-bottom:1px solid #93bbff88;animation:scan-photo-pass 4.4s ease-in-out infinite}
.scan-photo-frame.is-tracked .scan-photo-sweep{display:none}
.scan-photo-frame.is-waiting .scan-photo-sweep{display:block;opacity:.5}
.scan-focus-label{margin-top:24px;font-size:10px;line-height:1.5;font-weight:600;letter-spacing:.14em;color:var(--blue);text-transform:uppercase}
.scan-region-caption{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:6px;font-size:clamp(20px,4.9vw,24px);font-weight:650;letter-spacing:-.045em;line-height:1.25;min-height:30px}
.scan-region-caption small{font-size:10px;letter-spacing:.03em;font-weight:500;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}
.scan-region-detail{margin-top:9px;font-size:12px;line-height:1.7;color:var(--dim);min-height:41px;max-width:36ch}
.scan-region-steps{display:flex;gap:8px;margin-top:20px}
.scan-region-steps span{position:relative;flex:1;min-width:0;border-top:3px solid #e9ebee;padding-top:10px;font-size:10px;font-weight:500;color:var(--faint);transition:color .3s,border-color .3s}
.scan-region-steps span.is-current{color:var(--blue);border-color:var(--blue)}
.scan-region-steps span.is-seen{border-color:#b8cff1;color:var(--dim)}
.scan-region-steps span.is-current:before{content:'';position:absolute;left:0;right:0;top:-3px;height:3px;background:linear-gradient(90deg,transparent,#ffffff99,transparent);animation:scan-step-glow 2.5s ease-in-out infinite}
.scan-animation-note{display:flex;align-items:center;gap:9px;border-top:1px solid var(--line);padding-top:17px;margin-top:24px;font-size:11px;line-height:1.6;color:var(--dim)}
.scan-animation-note:before{content:'';flex:0 0 11px;width:11px;height:11px;border:1.5px solid var(--blue-muted);border-top-color:var(--blue);border-radius:50%;animation:scan-spinner 1.1s linear infinite}
.scan-sequence-note{font-size:10px;color:var(--faint);line-height:1.6;margin:12px 0 0;text-align:center}
@keyframes scan-photo-pass{0%{top:-22%;opacity:0}15%,85%{opacity:1}100%{top:100%;opacity:0}}
@keyframes scan-trace{to{stroke-dashoffset:-170}}
@keyframes scan-spinner{to{transform:rotate(360deg)}}
@keyframes scan-step-glow{0%,100%{opacity:0}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.scan-photo-sweep,.scan-region-trace{display:none!important}.scan-animation-note:before,.scan-region-steps span.is-current:before{animation:none}.scan-photo-frame g,.scan-region-steps span{transition:none}}
@media(max-width:380px){.photo-scan{padding:18px;border-radius:20px}.scan-photo-heading{margin-bottom:16px}.scan-region-caption{font-size:21px}.scan-region-caption small{font-size:9px}.scan-focus-label{margin-top:20px}.scan-region-steps{gap:6px}}
