.results{width:100%;height:10vh;overflow:auto;white-space:pre-wrap}.camera-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;background:#000;z-index:1}.camera-spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:camera-spin .8s linear infinite}@keyframes camera-spin{to{transform:rotate(360deg)}}.camera-loading-text{color:#999;font-size:12px}.camera-view-container *{max-width:unset!important;max-height:unset!important}.camera-view-container video{width:100%!important;height:100%!important;object-fit:cover!important;position:absolute!important;top:0!important;right:0!important;bottom:0!important;left:0!important}:root{--color-primary: #00ABEB;--color-primary-dark: #0090C8;--color-primary-light: #E8F5FD;--color-bg: #F3F4F6;--color-surface: #FFFFFF;--color-text: #1A1A2E;--color-text-secondary: #6B7280;--color-border: #E5E7EB;--color-warning: #F59E0B;--color-warning-text: #92400E;--color-warning-bg: #FFFBEB}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow-x:hidden}body{font-family:Noto Sans TC,-apple-system,BlinkMacSystemFont,PingFang TC,Microsoft JhengHei,sans-serif;background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation}#root{min-height:100dvh}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:fadeSlideUp .3s ease forwards}@keyframes logoPulse{0%,to{transform:scale(1);box-shadow:0 0 #00abeb4d}50%{transform:scale(1.05);box-shadow:0 0 0 12px #00abeb00}}.logo-pulse>*{animation:logoPulse 2s ease-in-out infinite}@keyframes cartItemIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.cart-item-enter{animation:cartItemIn .25s ease forwards;opacity:0}@keyframes pulseText{0%,to{opacity:1}50%{opacity:.5}}.pulse-text{animation:pulseText 1s ease-in-out infinite}@keyframes statusPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}.status-dot{animation:statusPulse 2s ease-in-out infinite}::-webkit-scrollbar{width:0}
