/* NP Inventur · scan effect, shared by the /retail hero (.hscr) and the /software screenshot wipes (.wipe).
   Driven by --scan (0%→100%): soft-edged reveal, dot grid over the unscanned part, a laser with halo,
   a trailing scan band and a closing light sweep. */
.hscr,.wipe{isolation:isolate}
.hscr .top,.wipe .wtop{clip-path:none!important;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(var(--scan) * 1.05 - 5%),transparent calc(var(--scan) * 1.05));
          mask-image:linear-gradient(90deg,#000 calc(var(--scan) * 1.05 - 5%),transparent calc(var(--scan) * 1.05))}
.hscr .base,.wipe .wbase{filter:grayscale(1) blur(3px) contrast(.8) brightness(1.06)!important;opacity:.5!important}
.hscr::before,.wipe::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background-image:radial-gradient(rgba(23,23,21,.22) 1px,transparent 1.3px);background-size:12px 12px;
  -webkit-mask-image:linear-gradient(90deg,transparent calc(var(--scan) * 1.05),#000 calc(var(--scan) * 1.05 + 8%));
          mask-image:linear-gradient(90deg,transparent calc(var(--scan) * 1.05),#000 calc(var(--scan) * 1.05 + 8%))}
.hscr.done::before,.wipe.done::before{opacity:0;transition:opacity .4s}

/* laser: hot core, halo, trailing scan band, leading sheen */
.hscr .laser,.wipe .laser{z-index:4;width:3px!important;margin-left:-1.5px!important;
  background:linear-gradient(180deg,rgba(255,255,255,0),#fff 10%,#ff4b5a 50%,#fff 90%,rgba(255,255,255,0))!important;
  box-shadow:0 0 8px 1px rgba(255,75,90,.9),0 0 34px 8px rgba(200,32,47,.32)!important}
.hscr .laser::before,.wipe .laser::before{right:3px!important;width:min(240px,26%)!important;
  background:repeating-linear-gradient(180deg,rgba(255,255,255,0) 0 3px,rgba(255,255,255,.28) 3px 4px),linear-gradient(90deg,rgba(200,32,47,0),rgba(200,32,47,.14))!important;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000);mask-image:linear-gradient(90deg,transparent,#000)}
.hscr .laser::after,.wipe .laser::after{content:"";position:absolute;left:3px;top:0;bottom:0;width:70px;
  background:linear-gradient(90deg,rgba(255,255,255,.5),rgba(255,255,255,0));pointer-events:none}
.hscr .laser i,.wipe .laser i{position:absolute;left:50%;width:15px;height:15px;margin-left:-7.5px;border:2px solid #ff4b5a;border-radius:50%;background:#fff;box-shadow:0 0 12px rgba(255,75,90,.8)}
.hscr .laser i:first-child,.wipe .laser i:first-child{top:-2px}
.hscr .laser i:last-child,.wipe .laser i:last-child{bottom:-2px}

/* closing light sweep */
.hscr::after,.wipe::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;
  background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-100%)}
.hscr.done::after,.wipe.done.swept::after{animation:sfx-sweep 1.1s cubic-bezier(.4,0,.2,1) forwards}
@keyframes sfx-sweep{0%{opacity:1;transform:translateX(-100%)}100%{opacity:1;transform:translateX(100%)}}

/* lock-on brackets (retail hero) */
.hscr .lock{position:absolute;z-index:5;pointer-events:none;opacity:0;transform:scale(1.12);transition:opacity .35s,transform .55s cubic-bezier(.34,1.4,.64,1);
  --c:#ff3445;--l:clamp(8px,1.2vw,14px);
  background:linear-gradient(var(--c),var(--c)) 0 0/var(--l) 2px,linear-gradient(var(--c),var(--c)) 0 0/2px var(--l),
    linear-gradient(var(--c),var(--c)) 100% 0/var(--l) 2px,linear-gradient(var(--c),var(--c)) 100% 0/2px var(--l),
    linear-gradient(var(--c),var(--c)) 0 100%/var(--l) 2px,linear-gradient(var(--c),var(--c)) 0 100%/2px var(--l),
    linear-gradient(var(--c),var(--c)) 100% 100%/var(--l) 2px,linear-gradient(var(--c),var(--c)) 100% 100%/2px var(--l);
  background-repeat:no-repeat;border-radius:4px}
.hscr .lock.on{opacity:1;transform:none;background-color:rgba(255,52,69,.05)}
.hscr .lock.ok{--c:#2e9e5b;background-color:rgba(46,158,91,.05)}
.hscr .lock.off{opacity:0;transform:scale(.97);transition-duration:.6s}
.hscr .lock b{position:absolute;left:0;bottom:calc(100% + 6px);display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:7px;background:#171715;color:#fff;
  font:600 clamp(9px,.85vw,11.5px)/1 "Geist Variable",Geist,system-ui,sans-serif;white-space:nowrap;box-shadow:0 8px 18px -8px rgba(0,0,0,.5)}
.hscr .lock b::before{content:"";width:6px;height:6px;border-radius:50%;background:#ff3445}
.hscr .lock.ok b::before{background:#3ccf7c}

/* status pill with progress */
.hscan{padding:8px 14px 8px 12px!important;border-radius:999px;background:#fff;border:1px solid rgba(23,23,21,.08);box-shadow:0 14px 30px -18px rgba(0,0,0,.35);
  font-variant-numeric:tabular-nums;color:var(--ink,#171715)!important;overflow:hidden}
.hscan .hbar{position:absolute;left:0;bottom:0;height:2px;width:100%;background:rgba(23,23,21,.06)}
.hscan .hbar u{display:block;height:100%;width:100%;background:linear-gradient(90deg,#c8202f,#ff4b5a);transform-origin:0 50%;transform:scaleX(var(--hp,0))}
.hscan.done .hbar u{background:#2e9e5b}
@media (max-width:700px){.hscr .lock b{display:none}}
@media (prefers-reduced-motion:reduce){.hscr .lock{display:none}.hscr::after,.wipe::after{display:none}}
