:root{--brand-blue:#293c6f;color:#333;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fafafa;font-family:Inter,IBM Plex Sans,Segoe UI,Arial,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}a{color:var(--brand-blue);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;border:1px solid #0000;border-radius:4px;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500;transition:all .2s}button:focus,button:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px}input,textarea,select{font-family:inherit;font-size:1rem}.no-select{-webkit-user-select:none;user-select:none}.main-nav{z-index:100;background:#fff;border-top:1px solid #e0e0e0;justify-content:space-around;align-items:center;padding:.5rem 0;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-link{color:#666;border-radius:4px;flex-direction:column;align-items:center;padding:.5rem 1rem;text-decoration:none;transition:all .2s;display:flex}.nav-link:hover{background:#f5f5f5}.nav-link.active{color:var(--brand-blue)}.nav-link.active .nav-icon{transform:scale(1.1)}.nav-icon{margin-bottom:.25rem;font-size:1.5rem;transition:transform .2s}.nav-label{font-size:.75rem;font-weight:500}@media (width<=768px){.main-nav{padding:.75rem 0;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0))}}.app-footer{text-align:center;background:#f5f5f5;border-top:1px solid #e0e0e0;margin-bottom:80px;padding:1.5rem 1rem}.app-footer p{color:#666;margin:.25rem 0;font-size:.75rem}.footer-confidential{text-transform:uppercase;letter-spacing:.5px;font-weight:600;color:#999!important;font-size:.7rem!important}.footer-tagline{font-style:italic}.toast{color:#fff;z-index:9999;border-radius:4px;align-items:center;gap:12px;width:max-content;max-width:500px;padding:16px;font-size:.9375rem;line-height:1.4;transition:opacity .3s,transform .3s;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(0);box-shadow:0 4px 12px #00000040}.toast--success{background-color:#059669}.toast--error{background-color:#dc2626}.toast--info{background-color:var(--brand-blue)}.toast--visible{opacity:1;transform:translate(-50%)translateY(0)}.toast--hidden{opacity:0;transform:translate(-50%)translateY(8px)}@keyframes slide-up{0%{opacity:0;transform:translate(-50%)translateY(16px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.toast--visible{animation:.25s forwards slide-up}.toast__message{flex:1}.toast__close{color:#fff;cursor:pointer;opacity:.8;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:1.25rem;line-height:1}.toast__close:hover{opacity:1}@media (width<=480px){.toast{width:auto;max-width:none;bottom:16px;left:8px;right:8px;transform:translateY(0)}.toast--visible{animation:.25s forwards slide-up-mobile;transform:translateY(0)}.toast--hidden{opacity:0;transform:translateY(8px)}@keyframes slide-up-mobile{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}}.viewfinder-container{width:100%;max-width:none;height:100%;aspect-ratio:unset;background:#1a1a1a;border-radius:0;position:absolute;inset:0;overflow:hidden}.viewfinder-video{object-fit:cover;opacity:0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none;width:100%;height:100%;transition:opacity .3s}.viewfinder-video.ready{opacity:1;pointer-events:auto}.viewfinder-video.mirrored{transform:scaleX(-1)}.viewfinder-overlay{color:#fff;background:#000000b3;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.viewfinder-overlay .camera-icon{margin-bottom:.5rem;font-size:3rem}.viewfinder-overlay p{color:#fffc;margin:0;font-size:.9rem}.loading-spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:40px;height:40px;margin-bottom:1rem;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.crop-square-overlay{aspect-ratio:1;pointer-events:none;z-index:2;border:2px solid #fff;border-radius:4px;max-width:100%;height:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 9999px #00000080}.guide-corner{border:0 solid #fff9;width:30px;height:30px;position:absolute}.guide-corner.top-left{border-top-width:3px;border-left-width:3px;border-top-left-radius:8px;top:20px;left:20px}.guide-corner.top-right{border-top-width:3px;border-right-width:3px;border-top-right-radius:8px;top:20px;right:20px}.guide-corner.bottom-left{border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:8px;bottom:20px;left:20px}.guide-corner.bottom-right{border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:8px;bottom:20px;right:20px}.camera-controls{justify-content:center;align-items:center;gap:2rem;display:flex}.control-btn{cursor:pointer;border:none;justify-content:center;align-items:center;transition:all .2s;display:flex}.control-btn:disabled{opacity:.5;cursor:not-allowed}.capture-btn{border:4px solid var(--brand-blue);background:#fff;border-radius:50%;width:72px;height:72px;padding:4px}.capture-btn:hover:not(:disabled){border-color:#1e2d54;transform:scale(1.05)}.capture-btn:active:not(:disabled){transform:scale(.95)}.capture-inner{background:var(--brand-blue);border-radius:50%;width:100%;height:100%;transition:background-color .2s;display:block}.capture-btn:hover:not(:disabled) .capture-inner{background:#1e2d54}.switch-btn{color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;border-radius:50%;width:48px;height:48px;font-size:1.5rem}.switch-btn:hover:not(:disabled){background:#000000b3;transform:scale(1.1)}.placeholder{pointer-events:none;background:0 0;width:48px;height:48px}.photo-preview{flex-direction:column;align-items:center;padding:1rem;display:flex}.preview-image-container{border-radius:12px;width:100%;max-width:500px;position:relative;overflow:hidden;box-shadow:0 4px 12px #00000026}.preview-image{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none;width:100%;height:auto;display:block}.preview-badge{color:#fff;text-transform:uppercase;letter-spacing:.5px;background:#000000b3;border-radius:4px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;position:absolute;top:12px;left:12px}.preview-actions{gap:1rem;width:100%;max-width:400px;margin-top:1.5rem;display:flex}.preview-actions button{cursor:pointer;border-radius:4px;flex:1;min-height:48px;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s}.btn-secondary{color:#333;background:#f5f5f5;border:1px solid #ddd}.btn-secondary:hover{background:#e8e8e8;border-color:#ccc}.btn-primary{background:var(--brand-blue);color:#fff;border:none}.preview-hint{color:#666;margin-top:1rem;font-size:.875rem}.barcode-scanner-overlay{z-index:100;background:#000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.barcode-video{object-fit:cover;width:100%;height:100%}.barcode-viewfinder{pointer-events:none;border:2px solid #fffc;border-radius:8px;width:280px;height:160px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 9999px #00000073}.barcode-close-btn{z-index:101;color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.75rem;line-height:1;display:flex;position:absolute;top:12px;right:12px}.barcode-close-btn:hover{background:#000000b3}.barcode-hint{color:#fff;white-space:nowrap;pointer-events:none;background:#0009;border-radius:6px;padding:.5rem 1rem;font-size:.9rem;position:absolute;bottom:48px;left:50%;transform:translate(-50%)}.barcode-unsupported{text-align:center;color:#fff;max-width:320px;padding:2rem}.barcode-unsupported p{margin:0 0 1.5rem;font-size:1rem;line-height:1.5}.barcode-close-action{background:var(--brand-blue);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:.75rem 2rem;font-size:1rem}.barcode-close-action:hover{opacity:.9}.part-entry-form{background:#fff;border-radius:12px;max-width:400px;margin:0 auto;padding:1.5rem;box-shadow:0 4px 12px #0000001a}.part-entry-form h2{color:#333;margin:0;font-size:1.25rem}.form-header{margin-bottom:1rem}.scan-btn-prominent{color:#fff;background:var(--brand-blue);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:4px;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.875rem 1rem;font-size:1rem;font-weight:600;transition:background .2s;display:flex}.scan-btn-prominent:hover:not(:disabled){background:#1e2d54}.scan-btn-prominent:disabled{opacity:.6;cursor:not-allowed}.scan-btn-prominent svg{flex-shrink:0;width:22px;height:22px}.scan-btn-unsupported{color:#999;text-align:center;background:#f5f5f5;border:1px dashed #ddd;border-radius:4px;width:100%;padding:.625rem 1rem;font-size:.8rem}.scan-or-manual{color:#999;text-align:center;margin:.5rem 0 1rem;font-size:.8rem}.scan-status{text-align:center;border-radius:6px;margin-bottom:1rem;padding:.75rem;font-size:.875rem}.scan-status-found{color:#166534;background:#dcfce7;border:1px solid #bbf7d0}.scan-status-warning{color:#854d0e;background:#fef9c3;border:1px solid #fde68a}.scan-status-searching{color:#3b5998;background:#f0f4ff;border:1px solid #c7d2fe}.scan-status-icon{margin-right:.375rem;font-weight:700}.form-group label{color:#333;margin-bottom:.5rem;font-size:.9rem;font-weight:500;display:block}.form-group .required{color:#ef4444}.form-group input{border:1px solid #ddd;border-radius:6px;width:100%;padding:.75rem;font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus{border-color:var(--brand-blue);outline:none;box-shadow:0 0 0 3px #293c6f1a}.form-group .error{color:#ef4444;margin-top:.25rem;font-size:.8rem;display:block}.form-actions{gap:1rem;margin-top:1.5rem;display:flex}.form-actions button{cursor:pointer;border-radius:4px;flex:1;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;transition:all .2s}.form-actions .btn-secondary{color:#333;background:#f5f5f5;border:1px solid #ddd}.form-actions .btn-secondary:hover:not(:disabled){background:#e8e8e8}.form-actions .btn-primary{background:var(--brand-blue);color:#fff;border:none}.form-actions .btn-primary:hover:not(:disabled){background:#1e2d54}.form-actions button:disabled{opacity:.6;cursor:not-allowed}.jb2-badge{color:var(--brand-blue);text-transform:uppercase;letter-spacing:.5px;background:#e6f0ff;border-radius:4px;margin-left:.5rem;padding:.125rem .375rem;font-size:.65rem;font-weight:600;display:inline-block}.input-with-suggestions{position:relative}.search-indicator{color:#999;font-size:.875rem;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.suggestions-list{z-index:100;background:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 6px 6px;max-height:200px;margin:0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px #0000001a}.suggestion-item{cursor:pointer;border-bottom:1px solid #f0f0f0;padding:.75rem;transition:background .15s}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover{background:#f5f9ff}.suggestion-part{color:#293c6f;font-size:.9rem;font-weight:600;display:block}.suggestion-desc{color:#666;white-space:nowrap;text-overflow:ellipsis;margin-top:.125rem;font-size:.8rem;display:block;overflow:hidden}.suggestion-customer{color:#999;margin-top:1px;font-size:.75rem;display:block}.part-validated{color:#22c55e;margin-top:.25rem;font-size:.75rem;font-weight:500;display:block}.form-group .optional{color:#999;font-size:.8rem;font-weight:400}.camera-page{max-width:none;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.camera-page h1{color:#333;margin-bottom:.75rem;font-size:1.25rem}.camera-error{text-align:center;color:#991b1b;background:#fef2f2;border-radius:8px;padding:1rem}@media (width<=480px){.camera-page{padding:.5rem}.camera-page h1{margin-bottom:.5rem;font-size:1.1rem}}.camera-error .error-icon{margin-bottom:1rem;font-size:3rem;display:block}.camera-error h2{margin:0 0 .5rem;font-size:1.25rem}.camera-error p{margin:.5rem 0}.camera-error .hint{color:#666;font-size:.9rem}.camera-error-inline{z-index:6;color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;margin:0;padding:.75rem 1rem;position:absolute;top:1rem;left:1rem;right:1rem}.camera-error-inline p{margin:0;font-size:.9rem}.camera-active{position:absolute;inset:0}.camera-controls{z-index:5;position:absolute;bottom:1.5rem;left:0;right:0}.btn-primary{background:var(--brand-blue);color:#fff;cursor:pointer;border:none;border-radius:4px;margin-top:1rem;padding:.75rem 1.5rem;font-size:1rem}.btn-primary:hover{background:#1e2d54}.btn-primary.btn-large{padding:.875rem 1.75rem;font-size:1rem}@media (width<=480px){.btn-primary.btn-large{width:100%;padding:.75rem 1.5rem;font-size:.95rem}}.btn-link{color:#666;cursor:pointer;background:0 0;border:none;margin-top:.5rem;padding:.5rem 1rem;font-size:.9rem}.btn-link:hover{color:#333;text-decoration:underline}.security-hint{color:#ffffff73;z-index:5;margin:0;font-size:.7rem;position:absolute;bottom:.5rem;left:.75rem}.tips-toggle{z-index:5;cursor:pointer;opacity:.6;background:0 0;border:none;padding:.25rem .5rem;font-size:1.1rem;position:absolute;bottom:7rem;right:1rem}.tips-toggle:hover{opacity:1}.tips-overlay{z-index:10;background:#000000a6;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.tips-overlay-card{text-align:left;background:#fff;border-radius:8px;width:90%;max-width:340px;padding:1.25rem}.tips-overlay-card h3{color:var(--brand-blue);text-align:center;margin:0 0 .75rem;font-size:1rem}.tips-overlay-card ul{margin:0 0 1rem;padding-left:1.25rem;list-style:none}.tips-overlay-card li{color:#333;margin-bottom:.5rem;padding-left:1.25rem;font-size:.9rem;line-height:1.4;position:relative}.tips-overlay-card li:before{content:"✓";color:#059669;font-weight:700;position:absolute;left:0}.queue-item-card{background:#fff;border-left:4px solid #ccc;border-radius:8px;gap:1rem;padding:1rem;display:flex;box-shadow:0 1px 3px #0000001a}.queue-item-card.pending{border-left-color:#f59e0b}.queue-item-card.uploading{border-left-color:#3b82f6}.queue-item-card.completed{border-left-color:#10b981}.queue-item-card.failed{border-left-color:#ef4444}.item-thumbnail{background:#f5f5f5;border-radius:6px;flex-shrink:0;width:80px;height:80px;overflow:hidden}.item-thumbnail img{object-fit:cover;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none;width:100%;height:100%}.thumbnail-placeholder{color:#ccc;justify-content:center;align-items:center;width:100%;height:100%;font-size:2rem;display:flex}.item-info{flex:1;min-width:0}.item-header{align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.part-number{color:#333;font-size:1rem;font-weight:600}.item-details{color:#666;gap:1rem;margin-bottom:.25rem;font-size:.85rem;display:flex}.part-description{color:#666;white-space:nowrap;text-overflow:ellipsis;margin:.25rem 0 0;font-size:.85rem;overflow:hidden}.captured-by{color:#666;margin:.25rem 0 0;font-size:.8rem;font-style:italic}.filename{color:var(--brand-blue);white-space:nowrap;text-overflow:ellipsis;background:#f0f7ff;border-radius:4px;margin:.5rem 0 0;padding:.25rem .5rem;font-family:monospace;font-size:.75rem;overflow:hidden}.error-message{color:#ef4444;background:#fef2f2;border-radius:4px;margin:.5rem 0 0;padding:.25rem .5rem;font-size:.8rem}.retry-info{color:#666;margin:.25rem 0 0;font-size:.75rem}.status-badge{text-transform:uppercase;letter-spacing:.5px;border-radius:9999px;padding:.15rem .5rem;font-size:.7rem;font-weight:600}.status-badge.pending{color:#92400e;background:#fef3c7}.status-badge.uploading{color:#1e40af;background:#dbeafe}.status-badge.completed{color:#065f46;background:#d1fae5}.status-badge.failed{color:#991b1b;background:#fee2e2}.item-actions{flex-direction:column;flex-shrink:0;gap:.5rem;display:flex}.btn-icon{cursor:pointer;background:#f5f5f5;border:none;border-radius:4px;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;transition:background-color .2s;display:flex}.btn-icon:hover{background:#e8e8e8}.btn-icon.btn-delete:hover{background:#fee2e2}.queue-page{max-width:600px;margin:0 auto;padding:1rem}.queue-page h1{color:#333;margin-bottom:1rem}.queue-loading{text-align:center;padding:3rem 2rem}.queue-loading .loading-spinner{border:3px solid #e5e5e5;border-top-color:var(--brand-blue);border-radius:50%;width:40px;height:40px;margin:0 auto 1rem;animation:1s linear infinite spin}.queue-error{text-align:center;color:#991b1b;background:#fef2f2;border-radius:8px;padding:2rem}.queue-error span{margin-bottom:.5rem;font-size:2rem;display:block}.queue-stats{background:#f5f5f5;border-radius:8px;gap:.5rem;margin-bottom:1rem;padding:.75rem;display:flex}.queue-stats .stat{text-align:center;background:#fff;border-radius:6px;flex:1;padding:.5rem}.queue-stats .stat.pending{background:#fef3c7}.queue-stats .stat.completed{background:#d1fae5}.queue-stats .stat.failed{background:#fee2e2}.stat-value{color:#333;font-size:1.5rem;font-weight:700;display:block}.stat-label{color:#666;text-transform:uppercase;letter-spacing:.5px;font-size:.7rem}.queue-actions{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.btn-primary{background:var(--brand-blue);color:#fff;cursor:pointer;border:none;border-radius:4px;padding:.75rem 1.5rem;font-size:.9rem;font-weight:600}.btn-primary:hover:not(:disabled){background:#1e2d54}.btn-primary:disabled{cursor:not-allowed;background:#ccc}.btn-secondary{color:#333;cursor:pointer;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;padding:.75rem 1.5rem;font-size:.9rem}.btn-secondary:hover:not(:disabled){background:#e8e8e8}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.connection-status{border-radius:6px;margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem}.connection-status.success{color:#065f46;background:#d1fae5;border:1px solid #10b981}.connection-status.error{color:#991b1b;background:#fee2e2;border:1px solid #ef4444}.queue-empty{text-align:center;background:#f5f5f5;border-radius:8px;padding:3rem 2rem}.queue-empty span{margin-bottom:.5rem;font-size:3rem;display:block}.queue-empty p{color:#333;margin:.5rem 0}.queue-empty .hint{color:#666;font-size:.9rem}.queue-list{flex-direction:column;gap:.75rem;display:flex}.queue-info{border-left:4px solid var(--brand-blue);background:#f0f7ff;border-radius:8px;margin-top:2rem;padding:1.5rem}.queue-info h2{color:var(--brand-blue);margin:0 0 1rem;font-size:1.1rem}.queue-info ol{margin:0;padding-left:1.25rem}.queue-info li{color:#333;margin-bottom:.5rem}.settings-page{max-width:600px;margin:0 auto;padding:1rem}.settings-page h1{color:#333;margin-bottom:1.5rem}.settings-section{background:#f5f5f5;border-radius:8px;margin-bottom:2rem;padding:1.5rem}.settings-section h2{color:#333;margin:0 0 .25rem;font-size:1.1rem}.section-hint{color:#666;margin:0 0 1.5rem;font-size:.9rem}.form-group{margin-bottom:1rem}.form-group label{color:#333;margin-bottom:.5rem;font-weight:500;display:block}.form-group input{box-sizing:border-box;border:1px solid #ccc;border-radius:6px;width:100%;padding:.75rem;font-size:1rem}.form-group input:disabled{color:#999;background:#e9e9e9}.field-hint{color:#999;margin-top:.25rem;font-size:.8rem;font-style:italic;display:block}.about-info{color:#333}.about-info p{margin:.5rem 0}.security-note{color:#2e7d32;background:#e8f5e9;border-radius:6px;padding:1rem;font-size:.9rem;margin-top:1rem!important}.user-profile-section{background:#fff;border:1px solid #e0e0e0}.user-profile{background:#f8f9fa;border-radius:8px;align-items:center;gap:1rem;margin-bottom:1rem;padding:1rem;display:flex}.user-avatar{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:24px;display:flex}.user-info{flex:1;min-width:0}.user-name{color:#333;margin:0 0 .25rem;font-size:1rem;font-weight:600}.user-email{color:#666;word-break:break-all;margin:0;font-size:.9rem}.btn-signout{width:100%}.signin-page{background:linear-gradient(135deg, var(--brand-blue) 0%, #1e2d54 100%);justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.signin-container{background:#fff;border-radius:1rem;width:100%;max-width:500px;overflow:hidden;box-shadow:0 20px 60px #00000059}.signin-header{background:var(--brand-blue);color:#fff;text-align:center;padding:2rem}.signin-header h1{margin:0 0 .5rem;font-size:2rem}.subtitle{opacity:.95;margin:0;font-size:1rem}.signin-content{text-align:center;padding:2rem}.signin-icon{margin-bottom:1rem;font-size:4rem}.signin-content h2{color:#333;margin:0 0 1rem;font-size:1.5rem}.signin-content>p{color:#666;margin-bottom:2rem;line-height:1.6}.signin-button{justify-content:center;align-items:center;gap:.5rem;width:100%;margin-bottom:2rem;font-size:1.1rem;display:flex}.microsoft-icon{font-size:1.3rem}.signin-info{text-align:left;background:#f8f9fa;border-radius:.5rem;margin-bottom:1.5rem;padding:1.5rem}.signin-info h3{color:#333;margin:0 0 1rem;font-size:1.1rem}.signin-info ul{margin:0;padding:0;list-style:none}.signin-info li{color:#555;padding:.5rem 0;line-height:1.5}.signin-security{border-top:1px solid #e0e0e0;padding-top:1rem}.security-note{color:#666;margin:0;font-size:.9rem}@media (width<=600px){.signin-header h1{font-size:1.5rem}.signin-icon{font-size:3rem}.signin-content{padding:1.5rem}}.app{background:#fafafa;flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--brand-blue);color:#fff;text-align:center;z-index:100;padding:1rem;position:sticky;top:0;box-shadow:0 2px 4px #0000001a}.app-header h1{margin:0;font-size:1.25rem;font-weight:600}.app-main{flex:1;padding-bottom:0;overflow-y:auto}button{font-family:inherit}img{-webkit-user-drag:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none}.app{-webkit-touch-callout:none}.app-loading{background:#fafafa;flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;display:flex}.app-loading p{color:#666;font-size:1.1rem}.loading-spinner{border:4px solid #e0e0e0;border-top-color:var(--brand-blue);border-radius:50%;width:48px;height:48px;animation:1s linear infinite spin}.app--camera{height:100dvh;overflow:hidden}.app--camera .app-main{padding:0;overflow:hidden}
