.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e4e8c,#2f6fed);padding:24px}.login-card{background:#fff;border-radius:16px;padding:40px 36px;width:100%;max-width:420px;box-shadow:0 20px 60px #0003}.login-logo{display:flex;align-items:center;gap:10px;margin-bottom:24px}.logo-icon{font-size:32px;line-height:1;display:flex;align-items:center}.logo-text{font-size:22px;font-weight:800;background:linear-gradient(90deg,#1e4e8c 50%,#2f6fed 50%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-card h1{font-size:24px;font-weight:700;margin-bottom:4px;color:#44556b}.login-sub{color:#6f8fb4;margin-bottom:28px}.login-form{display:flex;flex-direction:column;gap:16px}.btn-login{background:#1e4e8c;color:#fff;padding:14px;border-radius:10px;font-size:16px;font-weight:700;width:100%;margin-top:8px;transition:background .15s}.btn-login:hover:not(:disabled){background:#2f6fed}.btn-login:disabled{opacity:.5;cursor:not-allowed}.login-hint{margin-top:20px;font-size:13px;color:#9ca3af;text-align:center}.mgr-shell{display:flex;min-height:100dvh}.mgr-sidebar{width:240px;background:#1e4e8c;color:#e2e8f0;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:24px 20px 20px;border-bottom:1px solid rgba(255,255,255,.12)}.sidebar-logo .logo-text{font-size:18px;font-weight:800;background:linear-gradient(90deg,#fff 50%,#93c5fd 50%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.sidebar-nav{flex:1;padding:12px 0;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;font-size:14px;font-weight:500;color:#ffffffa6;text-decoration:none;border-radius:0;transition:background .15s,color .15s;border-left:3px solid transparent}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:#2f6fed40;color:#fff;border-left-color:#2f6fed}.nav-icon{font-size:16px;width:20px;text-align:center}.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.12)}.sidebar-user{font-size:12px;color:#ffffff73;margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-logout{font-size:13px;color:#ffffff8c;background:transparent;padding:6px 0;width:100%;text-align:left}.btn-logout:hover{color:#fff}.mgr-main{margin-left:240px;flex:1;min-height:100dvh;background:#f5f9ff}.page-content{padding:32px 36px;max-width:1200px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.page-title{font-size:28px;font-weight:800;color:#1e4e8c}.header-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px;margin-top:8px}.dash-card{background:#fff;border-radius:12px;padding:24px 20px;display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none;color:#1e4e8c;box-shadow:0 1px 4px #1e4e8c14;border:1px solid #e2e8f0;transition:box-shadow .15s,transform .15s}.dash-card:hover{box-shadow:0 4px 16px #2f6fed26;transform:translateY(-2px)}.dash-icon{font-size:32px}.dash-label{font-size:14px;font-weight:600;text-align:center;color:#44556b}.form-card{background:#fff;border-radius:12px;padding:24px;box-shadow:0 1px 4px #1e4e8c14;border:1px solid #e2e8f0;margin-bottom:24px;max-width:680px}.form-card h3{font-size:18px;font-weight:700;margin-bottom:16px;color:#1e4e8c}.inline-form{display:flex;flex-direction:column;gap:14px}.form-field{display:flex;flex-direction:column;gap:5px}.form-field label{font-size:13px;font-weight:600;color:#44556b}.form-field input,.form-field select,.form-field textarea{padding:10px 12px;border:1.5px solid #e2e8f0;border-radius:8px;font-size:14px;background:#fff;outline:none}.form-field input:focus,.form-field select:focus{border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed1a}.form-row{display:flex;gap:12px}.form-row .form-field{flex:1}.form-error{font-size:13px;color:#dc2626}.btn-primary{background:#1e4e8c;color:#fff;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:700;transition:background .15s}.btn-primary:hover{background:#2f6fed}.btn-sm{background:#f5f9ff;color:#44556b;padding:7px 14px;border-radius:6px;font-size:13px;font-weight:600;border:1px solid #e2e8f0}.btn-sm:hover{background:#e2e8f0}.btn-danger-sm{background:#fef2f2;color:#dc2626;padding:5px 10px;border-radius:6px;font-size:12px;font-weight:600;border:1px solid #fecaca}.btn-danger-sm:hover{background:#fee2e2}.data-table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #1e4e8c14;border:1px solid #e2e8f0}.data-table th{background:#f5f9ff;padding:12px 16px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#6f8fb4;text-align:left;border-bottom:1px solid #e2e8f0}.data-table td{padding:12px 16px;font-size:14px;color:#44556b;border-bottom:1px solid #f1f5f9;vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#f5f9ff}.data-table code{background:#f5f9ff;padding:2px 6px;border-radius:4px;font-size:12px;color:#1e4e8c}.empty{text-align:center;color:#9ca3af;padding:32px!important}.text-muted{color:#9ca3af}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:700}.badge-green{background:#dcfce7;color:#166534}.badge-blue{background:#dbeafe;color:#1e4e8c}.badge-yellow{background:#fef9c3;color:#854d0e}.badge-red{background:#fee2e2;color:#991b1b}.badge-gray{background:#f1f5f9;color:#44556b}.drop-zone{border:2px dashed #6F8FB4;border-radius:12px;padding:36px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;display:flex;flex-direction:column;align-items:center;gap:8px}.drop-zone:hover,.drop-zone.dragging{border-color:#2f6fed;background:#f5f9ff}.drop-zone.has-file{border-color:#16a34a;background:#f0fdf4}.drop-icon{font-size:36px}.drop-text{font-size:15px;color:#44556b}.drop-filename{font-size:15px;font-weight:700;color:#1e4e8c}.drop-hint{font-size:12px;color:#9ca3af}.drop-hint code{background:#f5f9ff;padding:1px 4px;border-radius:4px}.radio-group{display:flex;flex-direction:column;gap:8px}.radio-card{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:1.5px solid #e2e8f0;border-radius:8px;cursor:pointer;transition:border-color .15s,background .15s}.radio-card.active{border-color:#2f6fed;background:#f5f9ff}.radio-card input{display:none}.radio-label{font-size:14px;font-weight:600;color:#1e4e8c}.radio-desc{font-size:12px;color:#9ca3af;font-family:monospace}.import-result{margin-top:20px;padding-top:20px;border-top:1px solid #e2e8f0}.import-result h3{font-size:16px;font-weight:700;margin-bottom:14px;color:#1e4e8c}.result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat-box{background:#f5f9ff;border-radius:8px;padding:12px;text-align:center;border:1px solid #e2e8f0}.stat-value{font-size:28px;font-weight:800;color:#1e4e8c}.stat-label{font-size:11px;text-transform:uppercase;color:#6f8fb4;letter-spacing:.05em;margin-top:2px}.error-details{margin-top:12px;font-size:13px}.error-details summary{cursor:pointer;color:#dc2626;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e4e8c66;display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.modal-card{background:#fff;border-radius:14px;width:100%;max-width:560px;box-shadow:0 20px 60px #1e4e8c33;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid #e2e8f0;background:#f5f9ff}.modal-header h2{font-size:20px;font-weight:700;color:#1e4e8c}.modal-close{background:#e2e8f0;border-radius:6px;padding:4px 8px;font-size:14px;color:#44556b}.modal-close:hover{background:#6f8fb4;color:#fff}.modal-meta{display:flex;gap:16px;padding:12px 24px;background:#f5f9ff;font-size:13px;color:#44556b;border-bottom:1px solid #e2e8f0;flex-wrap:wrap}.modal-form{padding:20px 24px;display:flex;flex-direction:column;gap:14px}.override-fields{display:flex;flex-direction:column;gap:10px;padding:12px 14px;background:#f5f9ff;border-radius:8px}.radio-group.horizontal{flex-direction:row}.reports-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.qr-result{margin-top:16px;padding-top:16px;border-top:1px solid #e2e8f0;display:flex;flex-direction:column;align-items:center;gap:10px}.qr-img{width:200px;height:200px;border:2px solid #e2e8f0;border-radius:8px}.qr-url{font-size:12px;color:#9ca3af;word-break:break-all;text-align:center;max-width:280px}.loading{padding:32px;text-align:center;color:#6f8fb4;font-size:15px}.status-msg{font-size:14px;color:#44556b;margin-bottom:16px;padding:10px 14px;background:#f5f9ff;border-radius:8px;border-left:3px solid #2F6FED}.alert-banner{background:#fef9c3;border:1px solid #fde047;border-radius:8px;padding:12px 16px;font-size:14px;color:#713f12;margin-bottom:16px}.leads-table-wrap{overflow-x:auto}.leads-table{width:100%;border-collapse:collapse;font-size:14px}.leads-table thead tr{background:#f8fafc;border-bottom:2px solid #e2e8f0}.leads-table th{padding:10px 14px;text-align:left;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#64748b;white-space:nowrap}.leads-table td{padding:12px 14px;border-bottom:1px solid #f1f5f9;vertical-align:middle}.leads-table tbody tr:hover{background:#f8fafc}.lead-name{font-weight:600;color:#0f172a}.lead-email a{color:#2f6fed;text-decoration:none}.lead-email a:hover{text-decoration:underline}.lead-source-badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;background:#eff6ff;color:#1d4ed8}.lead-time{font-size:13px;color:#94a3b8;white-space:nowrap}.btn-sm.btn-primary{background:#2f6fed;color:#fff;border-radius:6px;padding:4px 12px;font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap}.btn-sm.btn-primary:hover{background:#1d5cd4}.page-subtitle{font-size:14px;color:#64748b;margin-top:4px}.loading-state{padding:40px;text-align:center;color:#94a3b8}.empty-state{padding:60px 20px;text-align:center;color:#94a3b8}.empty-icon{font-size:40px;margin-bottom:12px}.empty-state h3{font-size:18px;color:#475569;margin-bottom:8px}.alert.alert-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:8px;padding:12px 16px;font-size:14px;margin-bottom:16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--primary: #1E4E8C;--primary-light: #2F6FED;--primary-dark: #163a6b;--steel-blue: #6F8FB4;--mist: #F5F9FF;--graphite: #44556B;--danger: #dc2626;--warning: #d97706;--success: #16a34a;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-400: #9ca3af;--gray-700: #374151;--gray-900: #111827;--radius: 10px;--shadow: 0 2px 8px rgba(0,0,0,.08)}html{font-size:16px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--graphite);background:var(--gray-50);-webkit-font-smoothing:antialiased}#root{min-height:100dvh;display:flex;flex-direction:column}button{cursor:pointer;font-family:inherit;border:none}input,select,textarea{font-family:inherit}.tech-shell{max-width:480px;margin:0 auto;padding:0 0 80px;min-height:100dvh;display:flex;flex-direction:column}.pack-header{background:var(--primary);color:#fff;padding:24px 20px 16px}.pack-date{font-size:13px;opacity:.75;margin-bottom:4px}.pack-header h1{font-size:22px;font-weight:700;margin-bottom:4px}.tech-name{font-size:14px;opacity:.85}.progress-bar-wrap{height:6px;background:var(--gray-200)}.progress-bar{height:100%;background:var(--success);transition:width .4s}.progress-text{font-size:13px;color:var(--gray-700);padding:6px 16px}.assignment-list{padding:12px 16px;display:flex;flex-direction:column;gap:10px}.section-label{font-size:12px;text-transform:uppercase;color:var(--gray-400);margin-top:8px;letter-spacing:.05em}.assignment-card{display:flex;align-items:center;justify-content:space-between;background:#fff;border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);font-size:16px;font-weight:600;color:var(--gray-900);width:100%;text-align:left;transition:background .15s}.assignment-card:not(.done):hover{background:var(--gray-50)}.assignment-card.done{opacity:.5}.assignment-status{font-size:18px;color:var(--primary)}.job-header{background:var(--primary);color:#fff;padding:20px 20px 12px}.job-header h1{font-size:24px;font-weight:700}.property-name{font-size:13px;opacity:.75;margin-top:2px}.step-indicator{display:flex;gap:6px;margin-top:12px}.step-dot{width:8px;height:8px;border-radius:50%;background:#ffffff4d}.step-dot.active{background:#fff}.step-panel{padding:20px 16px;display:flex;flex-direction:column;gap:14px;flex:1}.step-panel h2{font-size:20px;font-weight:700}.step-desc{font-size:15px;color:var(--gray-700);line-height:1.5}.text-input{width:100%;padding:12px 14px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-size:16px;background:#fff;outline:none}.text-input:focus{border-color:var(--primary-light);box-shadow:0 0 0 3px #3b82f626}.field-label{font-size:13px;font-weight:600;color:var(--gray-700);display:block;margin-bottom:4px}.field-error{font-size:13px;color:var(--danger)}.field{display:flex;flex-direction:column;gap:4px}.select-input{width:100%;padding:12px 14px;border:1.5px solid var(--gray-200);border-radius:var(--radius);font-size:16px;background:#fff;-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-primary{background:var(--primary);color:#fff;padding:14px 24px;border-radius:var(--radius);font-size:16px;font-weight:700;width:100%;transition:background .15s}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--gray-100);color:var(--gray-700);padding:14px 24px;border-radius:var(--radius);font-size:15px;font-weight:600}.btn-submit{margin-top:8px}.button-row{display:flex;gap:10px}.button-row .btn-secondary{flex:1}.button-row .btn-primary{flex:2}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.photo-grid.review{grid-template-columns:repeat(2,1fr)}.photo-thumb{position:relative;aspect-ratio:1;border-radius:8px;overflow:hidden}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-remove{position:absolute;top:4px;right:4px;background:#0009;color:#fff;border-radius:50%;width:22px;height:22px;font-size:11px;display:flex;align-items:center;justify-content:center}.photo-add{aspect-ratio:1;border-radius:8px;border:2px dashed var(--gray-200);font-size:13px;color:var(--gray-400);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;background:var(--gray-50)}.photo-hint{font-size:13px;color:var(--gray-400)}.photo-uploading,.photo-check,.photo-error{position:absolute;bottom:4px;right:4px;font-size:13px;line-height:1;background:#00000080;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center}.photo-check{background:#16a34ad9;color:#fff}.photo-error{background:#dc2626d9;color:#fff}.photo-review{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}.extraction-pending,.extraction-ready,.extraction-warn{padding:10px 14px;border-radius:8px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}.extraction-pending{background:#f5f9ff;color:#1e4e8c}.extraction-ready{background:#f0fdf4;color:#166534}.extraction-warn{background:#fef9c3;color:#854d0e}.spinner{animation:spin 1.2s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.kb-card{background:#f5f9ff;border-left:4px solid var(--primary-light);border-radius:8px;padding:12px 14px;font-size:14px}.kb-card ol{margin-top:6px;padding-left:18px;line-height:1.6}.exception-section{border:1.5px solid var(--gray-200);border-radius:var(--radius);padding:12px 14px}.exception-section summary{font-size:14px;font-weight:600;color:var(--warning);cursor:pointer}.exception-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.exception-btn{padding:10px 8px;border-radius:8px;font-size:13px;font-weight:600;background:var(--gray-100);color:var(--gray-700);text-align:center;border:1.5px solid transparent}.exception-btn.active{background:#fef3c7;border-color:var(--warning);color:var(--warning)}.exception-summary{background:#fef3c7;border-radius:8px;padding:12px 14px;font-size:14px}.extraction-waiting{text-align:center;padding:24px 16px;background:#f0f9ff;border:1px solid #bae6fd}.extraction-spinner{font-size:32px;margin-bottom:8px}.extraction-badge{display:inline-block;font-size:12px;font-weight:600;padding:3px 10px;border-radius:12px;background:#dcfce7;color:#166534;margin-bottom:10px}.extraction-badge.warn{background:#fef9c3;color:#854d0e}.extraction-hint{display:flex;gap:10px;align-items:flex-start;background:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:10px 12px;font-size:13px;color:#78350f}.extraction-hint.barcode-hint{background:#fff7ed;border-color:#fb923c;color:#7c2d12}.extraction-hint p{margin:4px 0 0;line-height:1.4}.extraction-hint strong{font-weight:700}.hint-icon{font-size:20px;flex-shrink:0;margin-top:1px}.field-required-note{font-size:12px;color:#b45309;margin:-4px 0 0;font-weight:600}.extraction-card{background:#fff;border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px}.extraction-card h3{font-size:15px;font-weight:700}.submitted{align-items:center;justify-content:center;text-align:center;gap:16px;padding-top:48px}.submit-icon{font-size:56px}.submitted h2{font-size:24px;font-weight:700}.submitted p{font-size:15px;color:var(--gray-700);max-width:280px;line-height:1.5}.compliance-checklist{width:100%;max-width:300px;border-radius:10px;padding:14px 18px;text-align:left}.compliance-checklist.compliant{background:#f0fdf4;border:1.5px solid #86efac}.compliance-checklist.incomplete{background:#fff7ed;border:1.5px solid #fdba74}.compliance-label{font-size:13px;font-weight:700;margin-bottom:10px;color:var(--gray-800)}.compliance-checklist.compliant .compliance-label{color:#166534}.compliance-checklist.incomplete .compliance-label{color:#9a3412}.compliance-items{display:flex;flex-direction:column;gap:6px}.compliance-item{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--gray-700)}.compliance-item.done{color:#166534}.compliance-item.missing{color:#9a3412;font-weight:600}.compliance-icon{font-size:15px;width:18px;text-align:center}.btn-compliance{background:#ea580c!important;border-color:#ea580c!important;width:100%;max-width:300px;margin-bottom:10px}.error-card{margin:32px 16px;padding:20px;background:#fff;border-radius:var(--radius);border-left:4px solid var(--danger);box-shadow:var(--shadow)}.error-card h2{font-size:18px;font-weight:700;color:var(--danger);margin-bottom:6px}.loading{padding:32px;text-align:center;color:var(--gray-400);font-size:15px}
