.scanner-root{--scanner-safe-top:env(safe-area-inset-top,0px);--scanner-app-header:calc(3.5rem + var(--scanner-safe-top));--scanner-bottom-nav:5.5rem;--scanner-safe-bottom:env(safe-area-inset-bottom,0px);--scanner-frame-width:min(86vw,320px);--scanner-frame-max-height:min(68vh,520px);--scanner-frame-aspect:2.5/3.5;--scanner-pricing-toggle-width:7.75rem;--scanner-controls-bottom:max(5rem,calc(var(--scanner-safe-bottom) + 4.5rem));--scanner-result-panel-bottom:max(9.5rem,calc(var(--scanner-safe-bottom) + 8.5rem))}@media (min-width:768px){.scanner-root{--scanner-frame-width:min(72vw,280px);--scanner-frame-max-height:min(58vh,520px)}}@supports (height:100dvh){.scanner-root{--scanner-frame-max-height:min(68dvh,520px)}@media (min-width:768px){.scanner-root{--scanner-frame-max-height:min(58dvh,520px)}}}.scanner-mobile-shell{position:fixed;left:0;right:0;top:var(--scanner-app-header);bottom:calc(var(--scanner-bottom-nav) + var(--scanner-safe-bottom));z-index:20;display:flex;flex-direction:column;min-height:0;height:calc(100dvh - var(--scanner-app-header) - var(--scanner-bottom-nav) - var(--scanner-safe-bottom));overflow:hidden;overscroll-behavior:none;touch-action:manipulation;-webkit-overflow-scrolling:auto}.scanner-camera-stage{position:relative;flex:1 1 0;min-height:0;overflow:hidden}@media (max-width:767px){.scanner-mobile-shell .scanner-camera-stage,.scanner-mobile-shell .scanner-viewport-host{position:absolute;inset:0;flex:none;width:100%;height:100%}.scanner-mobile-shell .scanner-viewport-host{min-height:0}}.scanner-viewport-host{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;background:#000}.scanner-video{position:absolute;inset:0;display:block;height:100%;width:100%;min-height:0;object-fit:cover;object-position:center;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:0;touch-action:none}.scanner-video-mirror{transform:translateZ(0) scaleX(-1);-webkit-transform:translateZ(0) scaleX(-1)}@media (min-width:768px){.scanner-mobile-shell{position:static;top:auto;bottom:auto;z-index:auto;display:block;overflow:visible;touch-action:auto}.scanner-viewport-host{border-radius:.75rem}.scanner-video,.scanner-viewport-host{position:relative;height:auto;max-height:520px;aspect-ratio:4/3}.scanner-video{inset:auto}}.scanner-frame{position:relative;box-sizing:border-box;aspect-ratio:var(--scanner-frame-aspect);width:var(--scanner-frame-width);max-height:var(--scanner-frame-max-height);border-radius:1rem;border-width:2px;transition:border-color .3s}.scanner-pricing-toggle-wrap{width:100%;max-width:var(--scanner-pricing-toggle-width);margin-inline:auto}