:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.camera-view{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:300px;background-color:#000;border-radius:8px;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.camera-container{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.camera-video{width:100%;height:100%;object-fit:cover;border-radius:8px}.camera-canvas{position:absolute;top:-9999px;left:-9999px}.camera-scan-area{animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 10px #00ff0080}50%{box-shadow:0 0 20px #0f0c,0 0 30px #00ff004d}to{box-shadow:0 0 10px #00ff0080}}.camera-controls{position:absolute;top:16px;right:16px;z-index:10}.camera-select{background:#000c;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;padding:8px 12px;font-size:14px;min-width:120px;cursor:pointer}.camera-select:focus{outline:none;border-color:#0f0;box-shadow:0 0 5px #00ff0080}.camera-error{background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff}.error-content{text-align:center;padding:32px;max-width:400px}.error-content p{margin:0 0 20px;font-size:16px;line-height:1.5;opacity:.9}.error-help{font-size:14px;opacity:.8;margin-top:16px!important}.retry-button{background:#fff3;border:2px solid white;color:#fff;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease}.retry-button:hover{background:#ffffff4d;transform:translateY(-1px)}.camera-permission{background:linear-gradient(135deg,#4834d4,#6c5ce7);color:#fff}.permission-content{text-align:center;padding:32px;max-width:400px}.permission-icon{font-size:48px;margin-bottom:16px}.permission-content h3{margin:0 0 12px;font-size:24px;font-weight:600}.permission-content p{margin:0 0 24px;font-size:16px;line-height:1.5;opacity:.9}.permission-button{background:#fff;color:#4834d4;border:none;padding:14px 28px;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #0003}.permission-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0000004d}.camera-loading{background:linear-gradient(135deg,#2d3436,#636e72);color:#fff}.loading-content{text-align:center;padding:32px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(255,255,255,.3);border-left:4px solid white;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-content p{margin:0;font-size:16px;opacity:.8}@media (max-width: 768px){.camera-view{min-height:250px}.camera-controls{top:12px;right:12px}.camera-select{padding:6px 10px;font-size:13px;min-width:100px}.error-content,.permission-content,.loading-content{padding:24px 16px}.error-content h3,.permission-content h3{font-size:20px}.error-content p,.permission-content p{font-size:14px}}@media (prefers-color-scheme: dark){.camera-select{background:#ffffff1a;border-color:#fff3}}@media (prefers-contrast: high){.camera-scan-area{border-width:3px;border-color:#ff0}.camera-select{border-width:2px}.retry-button,.permission-button{border-width:3px}}@media (prefers-reduced-motion: reduce){.camera-scan-area{animation:none}.loading-spinner{animation:none;border-left-color:#fffc}.retry-button:hover,.permission-button:hover{transform:none}}.qr-scanner{display:flex;flex-direction:column;width:100%;max-width:600px;margin:0 auto;border-radius:12px;overflow:hidden;box-shadow:0 4px 20px #0000001a;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.qr-scanner-container{display:flex;flex-direction:column;height:100%}.qr-camera-section{position:relative;aspect-ratio:4/3;min-height:300px;background:#000}.qr-camera-view{width:100%;height:100%}.qr-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:20px}.qr-status{display:flex;align-items:center;gap:8px;background:#000c;color:#fff;padding:8px 12px;border-radius:20px;font-size:14px;align-self:flex-start;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.qr-status-inactive{background:#646464cc}.qr-status-scanning{background:#0096ffcc}.qr-status-ready{background:#00c864cc}.status-icon{font-size:16px}.qr-scan-guide{position:relative;align-self:center;width:200px;height:200px;margin:auto}.scan-corners{position:relative;width:100%;height:100%}.corner{position:absolute;width:30px;height:30px;border:3px solid #00ff00}.scan-instruction{position:absolute;bottom:-40px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:6px 12px;border-radius:16px;font-size:12px;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.qr-success-effect{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:16px;z-index:10;animation:successFadeIn .3s ease-out}.success-pulse{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:120px;height:120px;border:4px solid #00ff00;border-radius:50%;background:#00ff001a;animation:successPulse 1s ease-out}.success-checkmark{background:#0f0;color:#fff;font-size:36px;font-weight:700;width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px #00ff0080;animation:successBounce .6s cubic-bezier(.68,-.55,.265,1.55)}.success-text{background:#000000e6;color:#0f0;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #00ff00;white-space:nowrap;animation:successTextSlide .5s .2s ease-out both}@keyframes successFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes successPulse{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}to{transform:translate(-50%,-50%) scale(1.5);opacity:0}}@keyframes successBounce{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1);opacity:1}to{transform:scale(1);opacity:1}}@keyframes successTextSlide{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.qr-controls-section{padding:20px;background:#fff;display:flex;flex-direction:column;gap:16px}.qr-scan-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px 24px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #0000001a}.qr-scan-button.inactive{background:linear-gradient(135deg,#007aff,#005edc);color:#fff}.qr-scan-button.active{background:linear-gradient(135deg,#ff3b30,#d70015);color:#fff}.qr-scan-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.qr-scan-button:disabled{background:#ccc;color:#666;cursor:not-allowed;transform:none;box-shadow:none}.qr-config-info{display:flex;flex-direction:column;gap:8px;padding:12px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.config-item{display:flex;align-items:center;gap:8px;font-size:14px}.config-label{font-weight:600;color:#495057}.config-value{color:#6c757d;font-family:monospace;background:#fff;padding:2px 6px;border-radius:4px;border:1px solid #dee2e6}.config-badge{background:#28a745;color:#fff;padding:4px 8px;border-radius:12px;font-size:12px;font-weight:600}.qr-camera-controls{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.control-button{display:flex;align-items:center;gap:8px;padding:12px 16px;border:2px solid #e9ecef;border-radius:8px;background:#fff;cursor:pointer;transition:all .2s ease;font-size:14px;font-weight:600;color:#495057;flex:1;min-width:120px;justify-content:center}.control-button:hover{border-color:#007bff;background:#f8f9ff;color:#007bff}.control-button:active{transform:translateY(1px)}.control-icon{font-size:16px}.control-label{font-size:13px}.device-control{position:relative;display:flex;flex-direction:column;flex:1;min-width:150px}.device-button{border-radius:8px 8px 0 0}.device-selector{position:absolute;top:100%;left:0;right:0;background:#fff;border:2px solid #007bff;border-top:none;border-radius:0 0 8px 8px;z-index:10;box-shadow:0 4px 12px #00000026}.device-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 16px;border:none;background:#fff;cursor:pointer;font-size:13px;color:#495057;border-bottom:1px solid #e9ecef;transition:background-color .2s ease}.device-option:last-child{border-bottom:none;border-radius:0 0 8px 8px}.device-option:hover{background:#f8f9ff}.device-option.active{background:#e3f2fd;color:#007bff;font-weight:600}.device-name{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-active-indicator{color:#28a745;font-weight:700}.flashlight-button{flex:0 0 auto;min-width:100px}.scan-area-control{display:flex;flex-direction:column;gap:8px;flex:1;min-width:200px}.control-label-header{font-size:12px;font-weight:600;color:#495057;text-align:center;margin-bottom:4px}.size-options{display:flex;gap:4px;background:#f8f9fa;border-radius:8px;padding:4px;border:2px solid #e9ecef}.size-option{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;padding:8px 4px;border:none;border-radius:6px;background:transparent;cursor:pointer;transition:all .2s ease;font-size:12px;color:#6c757d}.size-option:hover{background:#e9ecef;color:#495057}.size-option.active{background:#007bff;color:#fff;font-weight:600}.size-icon{font-size:14px}.size-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px}.qr-recent-result{padding:16px;background:#f0f9ff;border:1px solid #0ea5e9;border-radius:8px;animation:slideIn .3s ease-out}.result-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.result-icon{font-size:16px}.result-title{font-weight:600;color:#0369a1;flex:1}.result-confidence{font-size:12px;background:#0ea5e9;color:#fff;padding:2px 6px;border-radius:10px}.result-data{font-family:monospace;background:#fff;padding:8px;border-radius:4px;border:1px solid #bae6fd;margin-bottom:8px;word-break:break-all;font-size:14px;line-height:1.4}.result-meta{font-size:12px;color:#64748b;display:flex;gap:8px}@media (max-width: 768px){.qr-scanner{border-radius:0;box-shadow:none}.qr-camera-section{min-height:250px}.qr-overlay{padding:16px}.qr-scan-guide{width:150px;height:150px}.corner{width:25px;height:25px;border-width:2px}.scan-instruction{font-size:11px;bottom:-35px}.qr-controls-section{padding:16px}.qr-scan-button{padding:14px 20px;font-size:15px}.success-pulse{width:100px;height:100px}.success-checkmark{width:60px;height:60px;font-size:28px}.success-text{font-size:13px;padding:6px 12px}}@media (prefers-color-scheme: dark){.qr-scanner{background:#1a1a1a;color:#fff}.qr-controls-section{background:#1a1a1a}.qr-config-info{background:#2a2a2a;border-color:#404040}.config-label{color:#e0e0e0}.config-value,.result-data{background:#333;color:#e0e0e0;border-color:#555}}@media (prefers-contrast: high){.corner{border-color:#ff0;border-width:4px}.qr-scan-button{border:2px solid}.qr-recent-result{border-width:2px}}@media (prefers-reduced-motion: reduce){.status-icon.scanning,.qr-recent-result{animation:none}.qr-scan-button:hover:not(:disabled){transform:none}.qr-success-effect,.success-pulse,.success-checkmark,.success-text{animation:none}}.roi-selector{position:absolute;border:2px solid #ff6b35;background:#ff6b351a;cursor:move;-webkit-user-select:none;user-select:none;z-index:20;min-width:50px;min-height:50px;border-radius:8px;transition:box-shadow .2s ease}.roi-selector:hover{box-shadow:0 0 20px #ff6b3580}.roi-selector.dragging{box-shadow:0 0 25px #ff6b35b3;background:#ff6b3526}.roi-selector.resizing{box-shadow:0 0 25px #ff6b35b3}.roi-selector.disabled{cursor:not-allowed;opacity:.6;border-color:#ccc;background:#c8c8c81a}.roi-selector.disabled:hover{box-shadow:none}.roi-content{position:absolute;top:8px;left:8px;pointer-events:none;display:flex;flex-direction:column;gap:4px}.roi-label{background:#ff6b35e6;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;white-space:nowrap}.roi-coordinates{background:#000000b3;color:#fff;padding:2px 6px;border-radius:4px;font-size:10px;font-family:monospace;line-height:1.2}.resize-handle{position:absolute;background:#ff6b35;border:1px solid white;border-radius:50%;width:12px;height:12px;z-index:25}.resize-handle:hover{background:#e55a2b;transform:scale(1.2)}.resize-handle.nw{top:-6px;left:-6px;cursor:nw-resize}.resize-handle.ne{top:-6px;right:-6px;cursor:ne-resize}.resize-handle.sw{bottom:-6px;left:-6px;cursor:sw-resize}.resize-handle.se{bottom:-6px;right:-6px;cursor:se-resize}.resize-handle.n{top:-6px;left:50%;transform:translate(-50%);cursor:n-resize}.resize-handle.s{bottom:-6px;left:50%;transform:translate(-50%);cursor:s-resize}.resize-handle.w{top:50%;left:-6px;transform:translateY(-50%);cursor:w-resize}.resize-handle.e{top:50%;right:-6px;transform:translateY(-50%);cursor:e-resize}.roi-corners{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.corner{position:absolute;width:20px;height:20px;border:3px solid #ff6b35;background:transparent}.corner.top-left{top:-2px;left:-2px;border-right:none;border-bottom:none;border-top-left-radius:8px}.corner.top-right{top:-2px;right:-2px;border-left:none;border-bottom:none;border-top-right-radius:8px}.corner.bottom-left{bottom:-2px;left:-2px;border-right:none;border-top:none;border-bottom-left-radius:8px}.corner.bottom-right{bottom:-2px;right:-2px;border-left:none;border-top:none;border-bottom-right-radius:8px}@keyframes cornerPulse{0%,to{opacity:1}50%{opacity:.5}}.roi-selector:hover .corner{animation:cornerPulse 2s infinite}@media (max-width: 768px){.resize-handle{width:16px;height:16px}.resize-handle.nw,.resize-handle.ne,.resize-handle.sw,.resize-handle.se{top:-8px;left:-8px}.resize-handle.ne{right:-8px;left:auto}.resize-handle.sw{bottom:-8px;top:auto}.resize-handle.se{bottom:-8px;right:-8px;top:auto;left:auto}.resize-handle.n,.resize-handle.s{transform:translate(-50%)}.resize-handle.n{top:-8px}.resize-handle.s{bottom:-8px}.resize-handle.w,.resize-handle.e{transform:translateY(-50%)}.resize-handle.w{left:-8px}.resize-handle.e{right:-8px}}@media (pointer: coarse){.resize-handle{width:20px;height:20px}.roi-label{font-size:14px;padding:6px 10px}.roi-coordinates{font-size:12px;padding:4px 8px}}.character-box-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:10}.character-box{border:2px solid;border-radius:4px;transition:all .2s ease-in-out;animation:character-box-appear .3s ease-out}.character-box.confidence-high{border-style:solid;box-shadow:0 0 8px #10b98166}.character-box.confidence-medium{border-style:dashed;box-shadow:0 0 8px #f59e0b66}.character-box.confidence-low{border-style:dotted;box-shadow:0 0 8px #ef444466}.character-label{position:absolute;top:-24px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:700;font-family:Courier New,monospace;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 4px #0003}.confidence-label{position:absolute;bottom:-18px;right:-2px;color:#fff;padding:1px 4px;border-radius:2px;font-size:10px;font-weight:700;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;white-space:nowrap;box-shadow:0 1px 2px #0003}@keyframes character-box-appear{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media (max-width: 768px){.character-label{font-size:10px;padding:1px 4px;top:-20px}.confidence-label{font-size:8px;padding:0 3px;bottom:-16px}.character-box{border-width:1.5px}}@media (prefers-color-scheme: dark){.character-label{background:#ffffffe6;color:#000}}@media (prefers-contrast: high){.character-box{border-width:3px}.character-label{background:#000;color:#fff;border:1px solid white}}.character-box-overlay.updating .character-box{animation:character-box-pulse .5s ease-in-out}@keyframes character-box-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.license-plate-scanner{display:flex;flex-direction:column;width:100%;max-width:600px;margin:0 auto;border-radius:12px;overflow:hidden;box-shadow:0 4px 20px #0000001a;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans KR,Malgun Gothic,sans-serif}.license-plate-scanner-container{display:flex;flex-direction:column;height:100%}.license-plate-camera-section{position:relative;aspect-ratio:4/3;min-height:300px;background:#000}.license-plate-camera-view{width:100%;height:100%}.license-plate-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between;padding:20px}.license-plate-success-effect{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:16px;z-index:10;animation:successFadeIn .3s ease-out}.license-plate-success-effect .success-pulse{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:140px;height:80px;border:4px solid #ff6b35;border-radius:12px;background:#ff6b351a;animation:licensePlatePulse 1s ease-out}.license-plate-success-effect .success-checkmark{background:#ff6b35;color:#fff;font-size:36px;font-weight:700;width:80px;height:80px;border-radius:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 20px #ff6b3580;animation:successBounce .6s cubic-bezier(.68,-.55,.265,1.55)}.license-plate-success-effect .success-text{background:#000000e6;color:#ff6b35;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:600;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid #ff6b35;white-space:nowrap;animation:successTextSlide .5s .2s ease-out both}@keyframes licensePlatePulse{0%{transform:translate(-50%,-50%) scale(.5);opacity:1}to{transform:translate(-50%,-50%) scale(1.5);opacity:0}}.license-plate-status{display:flex;align-items:center;gap:8px;background:#000c;color:#fff;padding:10px 14px;border-radius:20px;font-size:14px;align-self:flex-start;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);max-width:280px}.license-plate-status-inactive{background:#646464cc}.license-plate-status-scanning{background:#1ca51ccc}.license-plate-status-ready{background:#00c864cc}.status-icon{font-size:18px;flex-shrink:0}.status-icon.scanning{animation:pulse 1.5s infinite}.status-text{line-height:1.3}.processing-time{font-size:11px;opacity:.8;margin-top:2px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.license-plate-scan-guide{position:relative;align-self:center;margin:auto}.scan-frame{position:relative;width:280px;height:100px}.frame-corners{position:relative;width:100%;height:100%}.corner{position:absolute;width:35px;height:35px;border:3px solid #28a745}.corner.top-left{top:0;left:0;border-right:none;border-bottom:none;border-top-left-radius:8px}.corner.top-right{top:0;right:0;border-left:none;border-bottom:none;border-top-right-radius:8px}.corner.bottom-left{bottom:0;left:0;border-right:none;border-top:none;border-bottom-left-radius:8px}.corner.bottom-right{bottom:0;right:0;border-left:none;border-top:none;border-bottom-right-radius:8px}.scan-instruction{position:absolute;bottom:-45px;left:50%;transform:translate(-50%);background:#000c;color:#fff;padding:8px 16px;border-radius:16px;font-size:13px;white-space:nowrap;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.license-plate-controls-section{padding:20px;background:#fff;display:flex;flex-direction:column;gap:16px}.license-plate-scan-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px 24px;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #0000001a}.license-plate-scan-button.inactive{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.license-plate-scan-button.active{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.license-plate-scan-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.license-plate-scan-button:disabled{background:#ccc;color:#666;cursor:not-allowed;transform:none;box-shadow:none}.button-icon{font-size:18px}.license-plate-roi-controls{padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.roi-toggle-button{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#fff;border:2px solid #dee2e6;border-radius:6px;color:#495057;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;width:100%;justify-content:center}.roi-toggle-button:hover:not(:disabled){background:#f8f9fa;border-color:#adb5bd}.roi-toggle-button.active{background:#d4edda;border-color:#28a745;color:#155724}.roi-toggle-button:disabled{opacity:.6;cursor:not-allowed}.roi-info{margin-top:12px;padding-top:12px;border-top:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.roi-coordinates{font-size:12px;color:#6c757d;line-height:1.4}.roi-reset-button{padding:6px 12px;background:#6c757d;border:none;border-radius:4px;color:#fff;font-size:12px;cursor:pointer;transition:background-color .2s ease}.roi-reset-button:hover:not(:disabled){background:#5a6268}.roi-reset-button:disabled{opacity:.6;cursor:not-allowed}.license-plate-upload-controls{padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.upload-toggle-button{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#fff;border:2px solid #dee2e6;border-radius:6px;color:#495057;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;width:100%;justify-content:center}.upload-toggle-button:hover:not(:disabled){background:#f8f9fa;border-color:#adb5bd}.upload-toggle-button.active{background:#cce5ff;border-color:#007bff;color:#004085}.upload-toggle-button:disabled{opacity:.6;cursor:not-allowed}.upload-section{margin-top:12px;padding-top:12px;border-top:1px solid #e9ecef}.upload-dropzone{position:relative;margin-bottom:12px}.upload-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.upload-label{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px;background:#fff;border:2px dashed #dee2e6;border-radius:8px;color:#6c757d;cursor:pointer;transition:all .2s ease;text-align:center}.upload-label:hover{background:#f8f9fa;border-color:#007bff;color:#007bff}.upload-icon{font-size:24px}.upload-hint{font-size:12px;color:#adb5bd}.uploaded-image-preview{position:relative;display:inline-block;max-width:100%}.preview-image{max-width:100%;max-height:200px;border-radius:6px;border:2px solid #007bff;box-shadow:0 2px 8px #007bff33}.remove-image-button{position:absolute;top:-8px;right:-8px;width:24px;height:24px;background:#dc3545;color:#fff;border:none;border-radius:50%;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px #0003;transition:background-color .2s ease}.remove-image-button:hover:not(:disabled){background:#c82333}.remove-image-button:disabled{opacity:.6;cursor:not-allowed}.license-plate-config-info{display:flex;flex-direction:column;gap:12px;padding:16px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.config-section{display:flex;align-items:center;gap:12px;font-size:14px;flex-wrap:wrap}.config-label{font-weight:600;color:#495057;min-width:80px}.config-value{color:#6c757d;font-family:monospace;background:#fff;padding:4px 8px;border-radius:4px;border:1px solid #dee2e6}.config-countries{display:flex;gap:6px;flex-wrap:wrap}.country-badge{background:#007bff;color:#fff;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.config-badge.continuous{background:#17a2b8;color:#fff;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.license-plate-recent-result{padding:18px;background:#e8f5e8;border:2px solid #28a745;border-radius:8px;animation:slideIn .3s ease-out}@keyframes slideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.result-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.result-icon{font-size:18px}.result-title{font-weight:600;color:#155724;flex:1;font-size:16px}.result-confidence{font-size:12px;background:#28a745;color:#fff;padding:3px 8px;border-radius:10px;font-weight:600}.result-plate-data{margin-bottom:12px}.plate-number{font-family:SF Mono,Monaco,Cascadia Code,Courier New,Noto Sans Mono CJK KR,monospace;font-size:24px;font-weight:700;color:#155724;text-align:center;background:#fff;padding:12px;border-radius:6px;border:2px solid #28a745;margin-bottom:8px;letter-spacing:1px;word-break:keep-all;line-height:1.2}.plate-meta{display:flex;align-items:center;gap:8px;font-size:14px;color:#495057;justify-content:center}.country-flag{font-size:16px}.country-name{font-weight:600}.region,.plate-type{color:#6c757d}.validation-info{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px}.format-label{font-weight:600;color:#495057}.format-value{font-family:monospace;background:#fff;padding:2px 6px;border-radius:3px;border:1px solid #28a745;color:#155724}.character-breakdown{border-top:1px solid #28a745;padding-top:12px}.character-label{font-size:12px;font-weight:600;color:#495057;margin-bottom:6px}.characters{display:flex;gap:4px;flex-wrap:wrap}.character{display:inline-block;min-width:24px;height:24px;text-align:center;line-height:24px;font-family:SF Mono,Monaco,Cascadia Code,Courier New,Noto Sans Mono CJK KR,monospace;font-size:12px;font-weight:700;border-radius:3px;border:1px solid;padding:0 2px;word-break:keep-all}.character.high-confidence{background:#d4edda;border-color:#28a745;color:#155724}.character.low-confidence{background:#fff3cd;border-color:#ffc107;color:#856404}@media (max-width: 768px){.license-plate-scanner{border-radius:0;box-shadow:none}.license-plate-camera-section{min-height:250px}.license-plate-overlay{padding:16px}.scan-frame{width:240px;height:85px}.corner{width:30px;height:30px;border-width:2px}.scan-instruction{font-size:12px;bottom:-40px}.license-plate-controls-section{padding:16px}.license-plate-scan-button{padding:14px 20px;font-size:15px}.plate-number{font-size:20px;padding:10px;letter-spacing:1px}.config-section{flex-direction:column;align-items:flex-start;gap:6px}.config-label{min-width:auto}}@media (prefers-color-scheme: dark){.license-plate-scanner{background:#1a1a1a;color:#fff}.license-plate-controls-section{background:#1a1a1a}.license-plate-config-info{background:#2a2a2a;border-color:#404040}.config-label{color:#e0e0e0}.config-value{background:#333;color:#e0e0e0;border-color:#555}.license-plate-recent-result{background:#1e3a2e;border-color:#28a745;color:#fff}.result-title{color:#4caf50}.plate-number{background:#333;color:#4caf50;border-color:#28a745}.format-value{background:#333;color:#4caf50}.character.high-confidence{background:#2d5a3d;color:#4caf50}.character.low-confidence{background:#5a4d2d;color:#ffc107}}@media (prefers-contrast: high){.corner{border-color:#ff0;border-width:4px}.license-plate-scan-button{border:2px solid}.license-plate-recent-result{border-width:3px}}@media (prefers-reduced-motion: reduce){.status-icon.scanning,.license-plate-recent-result{animation:none}.license-plate-scan-button:hover:not(:disabled){transform:none}}.image-scanner-error-boundary{display:flex;align-items:center;justify-content:center;min-height:400px;padding:20px;background:#f8f9fa;border-radius:12px;border:2px solid #e9ecef;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.error-content{max-width:500px;text-align:center}.error-title{font-size:24px;font-weight:600;color:#dc3545;margin:0 0 12px}.error-message{font-size:16px;color:#6c757d;line-height:1.5;margin:0 0 24px}.error-actions{display:flex;gap:12px;justify-content:center;margin-bottom:24px;flex-wrap:wrap}.retry-button{display:flex;align-items:center;gap:8px;padding:12px 20px;border-radius:8px;border:none;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;text-decoration:none}.retry-button.primary{background:#dc3545;color:#fff}.retry-button.primary:hover{background:#c82333;transform:translateY(-1px)}.retry-button.secondary{background:#6c757d;color:#fff}.retry-button.secondary:hover{background:#5a6268;transform:translateY(-1px)}.button-icon{font-size:16px}.error-details{text-align:left;margin:20px 0;background:#fff;border:1px solid #dee2e6;border-radius:8px;padding:16px}.error-details summary{font-weight:600;cursor:pointer;padding:8px 0;color:#495057}.error-details summary:hover{color:#007bff}.error-stack{margin-top:12px}.error-stack h4{font-size:14px;font-weight:600;color:#495057;margin:12px 0 8px}.error-stack pre{background:#f8f9fa;border:1px solid #e9ecef;border-radius:4px;padding:12px;font-size:12px;color:#495057;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.error-suggestions{text-align:left;background:#e3f2fd;border:1px solid #bbdefb;border-radius:8px;padding:16px;margin-top:20px}.error-suggestions h4{font-size:16px;font-weight:600;color:#1976d2;margin:0 0 12px}.error-suggestions ul{margin:0;padding-left:20px;color:#1565c0}.error-suggestions li{margin-bottom:8px;line-height:1.4}@media (max-width: 768px){.image-scanner-error-boundary{min-height:300px;padding:16px}.error-title{font-size:20px}.error-message{font-size:14px}.error-actions{flex-direction:column;align-items:center}.retry-button{width:100%;max-width:200px;justify-content:center}.error-suggestions{font-size:14px}}@media (prefers-color-scheme: dark){.image-scanner-error-boundary{background:#1a1a1a;border-color:#404040;color:#e0e0e0}.error-message{color:#b0b0b0}.error-details{background:#2a2a2a;border-color:#404040}.error-details summary{color:#e0e0e0}.error-details summary:hover{color:#4fc3f7}.error-stack h4{color:#e0e0e0}.error-stack pre{background:#333;border-color:#555;color:#e0e0e0}.error-suggestions{background:#1e3a5f;border-color:#2196f3}.error-suggestions h4{color:#4fc3f7}.error-suggestions ul{color:#81c784}}@media (prefers-contrast: high){.image-scanner-error-boundary{border-width:3px}.retry-button{border:2px solid}.retry-button.primary{border-color:#dc3545}.retry-button.secondary{border-color:#6c757d}}.image-scanner{display:flex;flex-direction:column;width:100%;max-width:800px;margin:0 auto;background:var(--background-color, #ffffff);border-radius:var(--border-radius, 12px);box-shadow:0 4px 20px #0000001a;overflow:hidden;font-family:var(--font-body, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);color:var(--text-color, #212529)}.image-scanner-container{display:flex;flex-direction:column;height:100%}.image-scanner-mode-selector{background:var(--surface-color, #f8f9fa);border-bottom:1px solid rgba(0,0,0,.1);padding:16px}.mode-buttons{display:flex;gap:8px;max-width:400px;margin:0 auto}.mode-button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border:2px solid transparent;border-radius:var(--border-radius, 8px);background:#fff;color:var(--text-color, #212529);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;position:relative}.mode-button:hover:not(:disabled){background:var(--primary-color, #007AFF);color:#fff;transform:translateY(-1px)}.mode-button.active{background:var(--primary-color, #007AFF);color:#fff;border-color:var(--primary-color, #007AFF)}.mode-button:disabled{opacity:.6;cursor:not-allowed;background:#e9ecef;color:#6c757d}.mode-button:disabled:hover{transform:none;background:#e9ecef;color:#6c757d}.mode-icon{font-size:18px}.coming-soon{position:absolute;top:-8px;right:-8px;background:var(--warning-color, #FFC107);color:#000;font-size:10px;padding:2px 6px;border-radius:10px;font-weight:700}.image-scanner-content{flex:1;display:flex;flex-direction:column}.active-scanner{width:100%;height:100%;border-radius:0;box-shadow:none}.scanner-placeholder{display:flex;align-items:center;justify-content:center;min-height:400px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);color:var(--text-color, #212529)}.placeholder-content{text-align:center;padding:40px 20px;max-width:400px}.placeholder-icon{font-size:64px;margin-bottom:16px}.placeholder-content h3{margin:0 0 12px;font-size:24px;font-weight:600;color:var(--text-color, #212529)}.placeholder-content p{margin:0 0 12px;font-size:16px;line-height:1.5;opacity:.8}.switch-mode-button{background:var(--primary-color, #007AFF);color:#fff;border:none;padding:12px 24px;border-radius:var(--border-radius, 8px);font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:16px}.switch-mode-button:hover{background:var(--secondary-color, #5856D6);transform:translateY(-1px)}.scanner-error{display:flex;align-items:center;justify-content:center;min-height:300px;background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff}.error-content{text-align:center;padding:40px 20px}.error-icon{font-size:48px;margin-bottom:16px}.error-content h3{margin:0 0 12px;font-size:24px;font-weight:600}.error-content p{margin:0;font-size:16px;opacity:.9}.image-scanner-history{background:var(--surface-color, #f8f9fa);border-top:1px solid rgba(0,0,0,.1);padding:20px}.history-title{margin:0 0 16px;font-size:18px;font-weight:600;color:var(--text-color, #212529)}.history-list{display:flex;flex-direction:column;gap:8px}.history-item{display:flex;align-items:center;gap:12px;padding:12px;background:#fff;border-radius:var(--border-radius, 8px);border:1px solid rgba(0,0,0,.1);transition:all .2s ease}.history-item:hover{box-shadow:0 2px 8px #0000001a;transform:translateY(-1px)}.history-type{font-size:12px;font-weight:600;background:var(--primary-color, #007AFF);color:#fff;padding:4px 8px;border-radius:12px;white-space:nowrap}.history-data{flex:1;font-family:var(--font-mono, monospace);font-size:14px;color:var(--text-color, #212529);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-time{font-size:12px;color:#6c757d;white-space:nowrap}.history-show-all{margin-top:12px;width:100%;padding:8px 16px;background:transparent;border:1px solid var(--primary-color, #007AFF);color:var(--primary-color, #007AFF);border-radius:var(--border-radius, 8px);font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.history-show-all:hover{background:var(--primary-color, #007AFF);color:#fff}@media (max-width: 768px){.image-scanner{border-radius:0;box-shadow:none}.image-scanner-mode-selector{padding:12px}.mode-buttons{max-width:none}.mode-button{padding:10px 12px;font-size:13px}.mode-icon{font-size:16px}.placeholder-content{padding:30px 16px}.placeholder-icon{font-size:48px}.placeholder-content h3{font-size:20px}.placeholder-content p{font-size:14px}.image-scanner-history{padding:16px}.history-title{font-size:16px}.history-item{padding:10px;gap:10px}.history-data{font-size:13px}}@media (prefers-color-scheme: dark){.image-scanner{--background-color: #1a1a1a;--surface-color: #2a2a2a;--text-color: #ffffff}.mode-button{background:#333;color:#fff}.mode-button:disabled{background:#444;color:#999}.history-item{background:#333;border-color:#555;color:#fff}.history-data{color:#fff}.scanner-placeholder{background:linear-gradient(135deg,#2a2a2a,#3a3a3a);color:#fff}}@media (prefers-contrast: high){.image-scanner{border:2px solid}.mode-button{border-width:3px}.history-item{border-width:2px}}@media (prefers-reduced-motion: reduce){.mode-button:hover:not(:disabled),.history-item:hover,.switch-mode-button:hover,.history-show-all:hover{transform:none}.mode-button,.history-item,.switch-mode-button,.history-show-all{transition:none}}.scan-results{display:flex;flex-direction:column;width:100%;background:#fff;border-radius:8px;border:1px solid #e9ecef;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.scan-results-container{display:flex;flex-direction:column;height:100%}.scan-results-header{padding:16px;background:#f8f9fa;border-bottom:1px solid #e9ecef}.results-title{margin:0 0 12px;font-size:18px;font-weight:600;color:#212529}.scan-results-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.filter-controls,.sort-controls{display:flex;align-items:center;gap:8px}.control-label{font-size:14px;font-weight:500;color:#495057}.filter-select,.sort-select{padding:4px 8px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff;color:#495057}.filter-select:focus,.sort-select:focus{outline:none;border-color:#007aff;box-shadow:0 0 0 2px #007aff40}.clear-button{margin-left:auto;padding:6px 12px;background:#dc3545;color:#fff;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color .2s ease}.clear-button:hover{background:#c82333}.scan-results-content{flex:1;overflow-y:auto;max-height:400px}.results-list{display:flex;flex-direction:column}.result-item{border-bottom:1px solid #e9ecef;cursor:pointer;transition:background-color .2s ease}.result-item:hover{background:#f8f9fa}.result-item.expanded{background:#e3f2fd}.result-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px}.result-type{display:flex;align-items:center;gap:8px}.type-icon{font-size:18px}.type-label{font-size:14px;font-weight:600}.result-meta{display:flex;align-items:center;gap:8px}.confidence-badge{color:#fff;padding:2px 6px;border-radius:10px;font-size:12px;font-weight:600}.timestamp{font-size:12px;color:#6c757d}.result-content{padding:0 16px}.result-preview{display:flex;align-items:center;gap:8px;padding-bottom:12px}.data-type-icon{font-size:16px;opacity:.7}.data-preview{font-family:monospace;font-size:14px;color:#495057;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.result-details{padding-bottom:16px;border-top:1px solid #dee2e6;padding-top:12px;animation:expandIn .2s ease-out}@keyframes expandIn{0%{opacity:0;max-height:0}to{opacity:1;max-height:300px}}.full-data,.bounding-box-info,.metadata-info{margin-bottom:12px}.data-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.data-label{font-size:12px;font-weight:600;color:#495057;text-transform:uppercase;letter-spacing:.5px}.copy-button{background:none;border:none;font-size:14px;cursor:pointer;padding:2px;border-radius:2px;transition:background-color .2s ease}.copy-button:hover{background:#0000001a}.data-value{font-family:monospace;font-size:13px;background:#f8f9fa;padding:8px;border-radius:4px;border:1px solid #e9ecef;word-break:break-all;line-height:1.4;max-height:100px;overflow-y:auto}.metadata-content{background:#f8f9fa;padding:8px;border-radius:4px;border:1px solid #e9ecef;max-height:120px;overflow-y:auto}.metadata-item{display:flex;gap:8px;margin-bottom:4px;font-size:12px}.metadata-key{font-weight:600;color:#495057;min-width:60px}.metadata-value{font-family:monospace;color:#6c757d;word-break:break-all}.result-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.action-button{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;background:#007aff;color:#fff;text-decoration:none;border-radius:4px;font-size:12px;font-weight:500;transition:background-color .2s ease}.action-button:hover{background:#0056b3;color:#fff;text-decoration:none}.scan-results-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:#6c757d}.empty-icon{font-size:48px;margin-bottom:16px;opacity:.5}.empty-title{font-size:18px;font-weight:600;margin-bottom:8px;color:#495057}.empty-description{font-size:14px;line-height:1.5;max-width:300px}.scan-results-footer{padding:12px 16px;background:#f8f9fa;border-top:1px solid #e9ecef;text-align:center}.results-info{font-size:12px;color:#6c757d}@media (max-width: 768px){.scan-results-header{padding:12px}.results-title{font-size:16px;margin-bottom:8px}.scan-results-controls{gap:12px}.filter-controls,.sort-controls{gap:6px}.control-label,.filter-select,.sort-select{font-size:13px}.result-header{padding:10px 12px}.result-content{padding:0 12px}.result-preview{padding-bottom:10px}.data-preview{font-size:13px}.result-details{padding-bottom:12px;padding-top:10px}.result-actions{gap:6px}.action-button{font-size:11px;padding:5px 10px}.scan-results-empty{padding:30px 16px}.empty-icon{font-size:36px}.empty-title{font-size:16px}.empty-description{font-size:13px}}@media (prefers-color-scheme: dark){.scan-results{background:#1a1a1a;border-color:#404040;color:#fff}.scan-results-header,.scan-results-footer{background:#2a2a2a;border-color:#404040}.results-title{color:#fff}.control-label{color:#e0e0e0}.filter-select,.sort-select{background:#333;border-color:#555;color:#fff}.result-item:hover{background:#333}.result-item.expanded{background:#1e3a5f}.data-preview{color:#e0e0e0}.data-value,.metadata-content{background:#333;border-color:#555;color:#e0e0e0}.metadata-key{color:#e0e0e0}.metadata-value{color:#ccc}.empty-title{color:#e0e0e0}.copy-button:hover{background:#ffffff1a}}@media (prefers-contrast: high){.scan-results{border-width:2px}.result-item{border-bottom-width:2px}.filter-select:focus,.sort-select:focus{box-shadow:0 0 0 3px #007aff80}}@media (prefers-reduced-motion: reduce){.result-details{animation:none}.result-item,.clear-button,.copy-button,.action-button{transition:none}}.app{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app-header{text-align:center;padding:2rem 1rem;background:#fff;box-shadow:0 2px 10px #0000001a}.app-header h1{margin:0 0 .5rem;font-size:2.5rem;font-weight:700;color:#333}.app-header p{margin:0 0 1rem;font-size:1.1rem;color:#666}.header-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.testing-btn,.mode-switch-btn{padding:12px 24px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.testing-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px #667eea4d}.testing-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea66}.mode-switch-btn{background:#6c757d;color:#fff;margin-bottom:20px}.mode-switch-btn:hover{background:#5a6268;transform:translateY(-1px)}.app-main{flex:1;padding:2rem 1rem;max-width:1200px;margin:0 auto;width:100%;display:flex;flex-direction:column;gap:2rem}.scanner-section{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 4px 20px #0000001a}.scanner-controls{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.mode-selector{display:flex;gap:1rem;flex-wrap:wrap}.mode-selector label{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border:2px solid #e9ecef;border-radius:8px;cursor:pointer;transition:all .2s ease;font-weight:500}.mode-selector label:hover{background:#e9ecef;border-color:#007aff}.mode-selector label:has(input:checked){background:#007aff;color:#fff;border-color:#007aff}.mode-selector label:has(input:disabled){opacity:.6;cursor:not-allowed}.mode-selector input{margin:0}.app-controls{display:flex;gap:.5rem;flex-wrap:wrap}.control-button{padding:.5rem 1rem;background:#007aff;color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.25rem}.control-button:hover{background:#0056b3;transform:translateY(-1px)}.control-button.danger{background:#dc3545}.control-button.danger:hover{background:#c82333}.scanner-container{border-radius:12px;overflow:hidden;box-shadow:0 4px 20px #00000026}.results-section{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 4px 20px #0000001a}.app-scan-results{border:none;border-radius:0;box-shadow:none}.app-footer{background:#fff;padding:2rem 1rem;margin-top:2rem;box-shadow:0 -2px 10px #0000001a}.test-info{max-width:800px;margin:0 auto;text-align:left}.test-info h3{margin:0 0 1rem;font-size:1.5rem;color:#333}.test-info h4{margin:1.5rem 0 .5rem;font-size:1.2rem;color:#555}.test-info ol,.test-info ul{padding-left:1.5rem;line-height:1.6}.test-info li{margin-bottom:.5rem}.test-qr-codes,.browser-requirements{background:#f8f9fa;padding:1rem;border-radius:8px;margin-top:1rem}.test-qr-codes p,.browser-requirements p{margin:.5rem 0;line-height:1.5}.test-qr-codes a{color:#007aff;text-decoration:none}.test-qr-codes a:hover{text-decoration:underline}@media (max-width: 768px){.app-header{padding:1.5rem 1rem}.app-header h1{font-size:2rem}.app-header p{font-size:1rem}.app-main{padding:1rem;gap:1.5rem}.scanner-section{padding:1rem}.mode-selector{flex-direction:column;gap:.5rem}.mode-selector label{padding:.75rem;justify-content:center}.app-controls{justify-content:center}.control-button{flex:1;min-width:120px;justify-content:center}.app-footer{padding:1.5rem 1rem}.test-info h3{font-size:1.3rem}.test-info h4{font-size:1.1rem}}@media (max-width: 480px){.app-header h1{font-size:1.8rem}.app-main{padding:.5rem}.scanner-section{padding:.75rem;border-radius:12px}.app-controls{flex-direction:column}.control-button{width:100%}}@media (prefers-color-scheme: dark){.app{background:linear-gradient(135deg,#2c3e50,#3498db);color:#fff}.app-header,.scanner-section,.results-section,.app-footer{background:#1a1a1a;color:#fff}.mode-selector label{background:#333;border-color:#555;color:#fff}.mode-selector label:hover{background:#444}.test-qr-codes,.browser-requirements{background:#333;color:#fff}.test-info h3,.test-info h4{color:#fff}}@media print{.app-header,.scanner-section,.app-footer{box-shadow:none}.scanner-container,.app-controls{display:none}}
