:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color:#333;background-color:#fafafa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}a{color:#06c;text-decoration:none}a:hover{text-decoration:underline}button{border-radius:6px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;cursor:pointer;transition:all .2s ease}button:focus,button:focus-visible{outline:2px solid #0066cc;outline-offset:2px}input,textarea,select{font-family:inherit;font-size:1rem}.no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.main-nav{display:flex;justify-content:space-around;align-items:center;background:#fff;border-top:1px solid #e0e0e0;padding:.5rem 0;position:fixed;bottom:0;left:0;right:0;z-index:100}.nav-link{display:flex;flex-direction:column;align-items:center;padding:.5rem 1rem;text-decoration:none;color:#666;border-radius:8px;transition:all .2s ease}.nav-link:hover{background:#f5f5f5}.nav-link.active{color:#06c}.nav-link.active .nav-icon{transform:scale(1.1)}.nav-icon{font-size:1.5rem;margin-bottom:.25rem;transition:transform .2s ease}.nav-label{font-size:.75rem;font-weight:500}@media(max-width:768px){.main-nav{padding:.75rem 0;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0))}}.viewfinder-container{position:relative;width:100%;max-width:500px;aspect-ratio:4 / 3;background:#1a1a1a;border-radius:12px;overflow:hidden;margin:0 auto}.viewfinder-video{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none}.viewfinder-video.ready{opacity:1;pointer-events:auto}.viewfinder-video.mirrored{transform:scaleX(-1)}.viewfinder-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#000000b3;color:#fff}.viewfinder-overlay .camera-icon{font-size:3rem;margin-bottom:.5rem}.viewfinder-overlay p{margin:0;font-size:.9rem;color:#fffc}.loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.viewfinder-guide{position:absolute;inset:0;pointer-events:none}.guide-corner{position:absolute;width:30px;height:30px;border-color:#fff9;border-style:solid;border-width:0}.guide-corner.top-left{top:20px;left:20px;border-top-width:3px;border-left-width:3px;border-top-left-radius:8px}.guide-corner.top-right{top:20px;right:20px;border-top-width:3px;border-right-width:3px;border-top-right-radius:8px}.guide-corner.bottom-left{bottom:20px;left:20px;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:8px}.guide-corner.bottom-right{bottom:20px;right:20px;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:8px}.camera-controls{display:flex;align-items:center;justify-content:center;gap:2rem;padding:1.5rem}.control-btn{display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;transition:all .2s ease}.control-btn:disabled{opacity:.5;cursor:not-allowed}.capture-btn{width:72px;height:72px;border-radius:50%;background:#fff;border:4px solid #0066cc;padding:4px}.capture-btn:hover:not(:disabled){transform:scale(1.05);border-color:#05a}.capture-btn:active:not(:disabled){transform:scale(.95)}.capture-inner{display:block;width:100%;height:100%;border-radius:50%;background:#06c;transition:background-color .2s ease}.capture-btn:hover:not(:disabled) .capture-inner{background:#05a}.switch-btn{width:48px;height:48px;border-radius:50%;background:#00000080;color:#fff;font-size:1.5rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.switch-btn:hover:not(:disabled){background:#000000b3;transform:scale(1.1)}.placeholder{width:48px;height:48px;background:transparent;pointer-events:none}.photo-preview{display:flex;flex-direction:column;align-items:center;padding:1rem}.preview-image-container{position:relative;width:100%;max-width:500px;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #00000026}.preview-image{width:100%;height:auto;display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none}.preview-badge{position:absolute;top:12px;left:12px;background:#000000b3;color:#fff;padding:.25rem .75rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.preview-actions{display:flex;gap:1rem;margin-top:1.5rem;width:100%;max-width:400px}.preview-actions button{flex:1;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s ease}.btn-secondary{background:#f5f5f5;color:#333;border:1px solid #ddd}.btn-secondary:hover{background:#e8e8e8;border-color:#ccc}.btn-primary{background:#06c;color:#fff;border:none}.preview-hint{margin-top:1rem;color:#666;font-size:.875rem}.part-entry-form{padding:1.5rem;background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;max-width:400px;margin:0 auto}.part-entry-form h2{margin:0 0 1.5rem;font-size:1.25rem;color:#333;text-align:center}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333;font-size:.9rem}.form-group .required{color:#ef4444}.form-group input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus{outline:none;border-color:#06c;box-shadow:0 0 0 3px #0066cc1a}.form-group input:disabled{background:#f5f5f5;color:#999}.form-group .error{display:block;margin-top:.25rem;font-size:.8rem;color:#ef4444}.form-actions{display:flex;gap:1rem;margin-top:1.5rem}.form-actions button{flex:1;padding:.875rem 1.5rem;font-size:1rem;font-weight:600;border-radius:8px;cursor:pointer;transition:all .2s ease}.form-actions .btn-secondary{background:#f5f5f5;color:#333;border:1px solid #ddd}.form-actions .btn-secondary:hover:not(:disabled){background:#e8e8e8}.form-actions .btn-primary{background:#06c;color:#fff;border:none}.form-actions .btn-primary:hover:not(:disabled){background:#05a}.form-actions button:disabled{opacity:.6;cursor:not-allowed}.camera-page{padding:1rem;max-width:600px;margin:0 auto;text-align:center}.camera-page h1{margin-bottom:1.5rem;color:#333}.camera-prompt,.camera-error{text-align:center;padding:2rem;border-radius:8px;background:#f5f5f5}.camera-error{background:#fef2f2;color:#991b1b}.camera-error .error-icon{font-size:3rem;display:block;margin-bottom:1rem}.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{margin:1rem 0;padding:.75rem 1rem;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#991b1b}.camera-error-inline p{margin:0;font-size:.9rem}.btn-primary{background:#06c;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;font-size:1rem;cursor:pointer;margin-top:1rem}.btn-primary:hover{background:#05a}.btn-primary.btn-large{padding:1rem 2rem;font-size:1.125rem}.btn-link{background:none;border:none;color:#666;font-size:.9rem;cursor:pointer;padding:.5rem 1rem;margin-top:.5rem}.btn-link:hover{color:#333;text-decoration:underline}.security-note{margin-top:1.5rem;color:#059669;font-size:.875rem}.photo-tips{background:#fff;border:2px solid #0066cc;border-radius:8px;padding:1.5rem;margin:1.5rem 0;text-align:left}.photo-tips h3{margin:0 0 1rem;color:#06c;font-size:1.125rem;text-align:center}.photo-tips ul{margin:0;padding:0 0 0 1.5rem;list-style-type:none}.photo-tips li{position:relative;margin-bottom:.75rem;padding-left:1.5rem;color:#333;line-height:1.5}.photo-tips li:before{content:"✓";position:absolute;left:0;color:#059669;font-weight:700}.photo-tips li:last-child{margin-bottom:0}.queue-item-card{display:flex;gap:1rem;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;border-left:4px solid #ccc}.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{flex-shrink:0;width:80px;height:80px;border-radius:6px;overflow:hidden;background:#f5f5f5}.item-thumbnail img{width:100%;height:100%;object-fit:cover;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;-webkit-touch-callout:none;pointer-events:none}.thumbnail-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:2rem;color:#ccc}.item-info{flex:1;min-width:0}.item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.part-number{font-weight:600;color:#333;font-size:1rem}.item-details{display:flex;gap:1rem;font-size:.85rem;color:#666;margin-bottom:.25rem}.part-description{margin:.25rem 0 0;font-size:.85rem;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.captured-by{margin:.25rem 0 0;font-size:.8rem;color:#666;font-style:italic}.filename{margin:.5rem 0 0;font-size:.75rem;color:#06c;font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#f0f7ff;padding:.25rem .5rem;border-radius:4px}.error-message{margin:.5rem 0 0;font-size:.8rem;color:#ef4444;background:#fef2f2;padding:.25rem .5rem;border-radius:4px}.retry-info{margin:.25rem 0 0;font-size:.75rem;color:#666}.status-badge{font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:9999px;text-transform:uppercase;letter-spacing:.5px}.status-badge.pending{background:#fef3c7;color:#92400e}.status-badge.uploading{background:#dbeafe;color:#1e40af}.status-badge.completed{background:#d1fae5;color:#065f46}.status-badge.failed{background:#fee2e2;color:#991b1b}.item-actions{display:flex;flex-direction:column;gap:.5rem;flex-shrink:0}.btn-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:#f5f5f5;border-radius:6px;cursor:pointer;font-size:1rem;transition:background-color .2s}.btn-icon:hover{background:#e8e8e8}.btn-icon.btn-delete:hover{background:#fee2e2}.queue-page{padding:1rem;max-width:600px;margin:0 auto}.queue-page h1{margin-bottom:1rem;color:#333}.queue-loading{text-align:center;padding:3rem 2rem}.queue-loading .loading-spinner{width:40px;height:40px;border:3px solid #e5e5e5;border-top-color:#06c;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 1rem}.queue-error{text-align:center;padding:2rem;background:#fef2f2;border-radius:8px;color:#991b1b}.queue-error span{font-size:2rem;display:block;margin-bottom:.5rem}.queue-stats{display:flex;gap:.5rem;margin-bottom:1rem;padding:.75rem;background:#f5f5f5;border-radius:8px}.queue-stats .stat{flex:1;text-align:center;padding:.5rem;border-radius:6px;background:#fff}.queue-stats .stat.pending{background:#fef3c7}.queue-stats .stat.completed{background:#d1fae5}.queue-stats .stat.failed{background:#fee2e2}.stat-value{display:block;font-size:1.5rem;font-weight:700;color:#333}.stat-label{font-size:.7rem;color:#666;text-transform:uppercase;letter-spacing:.5px}.queue-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.btn-primary{background:#06c;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:6px;font-size:.9rem;cursor:pointer;font-weight:600}.btn-primary:hover:not(:disabled){background:#05a}.btn-primary:disabled{background:#ccc;cursor:not-allowed}.btn-secondary{background:#f5f5f5;color:#333;border:1px solid #ddd;padding:.75rem 1.5rem;border-radius:6px;font-size:.9rem;cursor:pointer}.btn-secondary:hover:not(:disabled){background:#e8e8e8}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.connection-status{padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.connection-status.success{background:#d1fae5;color:#065f46;border:1px solid #10b981}.connection-status.error{background:#fee2e2;color:#991b1b;border:1px solid #ef4444}.queue-empty{text-align:center;padding:3rem 2rem;border-radius:8px;background:#f5f5f5}.queue-empty span{font-size:3rem;display:block;margin-bottom:.5rem}.queue-empty p{margin:.5rem 0;color:#333}.queue-empty .hint{color:#666;font-size:.9rem}.queue-list{display:flex;flex-direction:column;gap:.75rem}.queue-info{margin-top:2rem;padding:1.5rem;background:#f0f7ff;border-radius:8px;border-left:4px solid #0066cc}.queue-info h2{margin:0 0 1rem;font-size:1.1rem;color:#06c}.queue-info ol{margin:0;padding-left:1.25rem}.queue-info li{margin-bottom:.5rem;color:#333}.settings-page{padding:1rem;max-width:600px;margin:0 auto}.settings-page h1{margin-bottom:1.5rem;color:#333}.settings-section{margin-bottom:2rem;padding:1.5rem;background:#f5f5f5;border-radius:8px}.settings-section h2{margin:0 0 .25rem;font-size:1.1rem;color:#333}.section-hint{margin:0 0 1.5rem;color:#666;font-size:.9rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group input{width:100%;padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem;box-sizing:border-box}.form-group input:disabled{background:#e9e9e9;color:#999}.field-hint{display:block;margin-top:.25rem;font-size:.8rem;color:#999;font-style:italic}.about-info{color:#333}.about-info p{margin:.5rem 0}.security-note{margin-top:1rem!important;padding:1rem;background:#e8f5e9;border-radius:6px;color:#2e7d32;font-size:.9rem}.user-profile-section{background:#fff;border:1px solid #e0e0e0}.user-profile{display:flex;align-items:center;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:8px;margin-bottom:1rem}.user-avatar{width:48px;height:48px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{margin:0 0 .25rem;font-weight:600;color:#333;font-size:1rem}.user-email{margin:0;color:#666;font-size:.9rem;word-break:break-all}.btn-signout{width:100%}.signin-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem}.signin-container{background:#fff;border-radius:1rem;box-shadow:0 10px 40px #0003;max-width:500px;width:100%;overflow:hidden}.signin-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:2rem;text-align:center}.signin-header h1{margin:0 0 .5rem;font-size:2rem}.subtitle{margin:0;opacity:.95;font-size:1rem}.signin-content{padding:2rem;text-align:center}.signin-icon{font-size:4rem;margin-bottom:1rem}.signin-content h2{margin:0 0 1rem;color:#333;font-size:1.5rem}.signin-content>p{color:#666;line-height:1.6;margin-bottom:2rem}.signin-button{width:100%;display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:2rem;font-size:1.1rem}.microsoft-icon{font-size:1.3rem}.signin-info{background:#f8f9fa;border-radius:.5rem;padding:1.5rem;margin-bottom:1.5rem;text-align:left}.signin-info h3{margin:0 0 1rem;font-size:1.1rem;color:#333}.signin-info ul{margin:0;padding:0;list-style:none}.signin-info li{padding:.5rem 0;color:#555;line-height:1.5}.signin-security{border-top:1px solid #e0e0e0;padding-top:1rem}.security-note{color:#666;font-size:.9rem;margin:0}@media(max-width:600px){.signin-header h1{font-size:1.5rem}.signin-icon{font-size:3rem}.signin-content{padding:1.5rem}}.app{min-height:100vh;display:flex;flex-direction:column;background:#fafafa}.app-header{background:#06c;color:#fff;padding:1rem;text-align:center;position:sticky;top:0;z-index:100;box-shadow:0 2px 4px #0000001a}.app-header h1{margin:0;font-size:1.25rem;font-weight:600}.app-main{flex:1;padding-bottom:80px;overflow-y:auto}button{font-family:inherit}img{-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;pointer-events:none}.app{-webkit-touch-callout:none}.app-loading{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fafafa;gap:1rem}.app-loading p{color:#666;font-size:1.1rem}.loading-spinner{width:48px;height:48px;border:4px solid #e0e0e0;border-top-color:#06c;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
