.review-page{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;padding:20px}.review-page.error,.review-page.loading{align-items:center;display:flex;font-size:18px;justify-content:center;min-height:100vh}.review-page.error{flex-direction:column;gap:16px}.review-page.error button{background:#2196f3;border-radius:4px;font-size:16px;padding:12px 24px}.review-header{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:30px;padding:30px;text-align:center}.review-header h1{color:#333;font-size:28px;margin:0 0 10px}.review-header h2{color:#666;font-size:20px;font-weight:400;margin:0}.doors-table{border-collapse:collapse;min-width:1200px;width:100%}.doors-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}.doors-table th{border-bottom:2px solid #667eea;font-size:13px;font-weight:600;padding:15px 10px;text-align:left;white-space:nowrap}.doors-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s ease}.doors-table tbody tr:hover{background-color:#f8f9fa}.doors-table tbody tr.reviewed{background-color:#f0f8ff}.doors-table tbody tr.editing{background-color:#fffbf0}.doors-table td{font-size:13px;padding:12px 10px;vertical-align:middle;word-break:break-word}.col-action{width:100px}.checkbox-label{align-items:center;cursor:pointer;display:flex;gap:6px;margin-bottom:8px}.checkbox-label input[type=checkbox]{accent-color:#667eea;cursor:pointer;height:18px;width:18px}.checkbox-label span{font-size:13px;font-weight:500}.detail-input{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:12px;margin-top:6px;padding:6px 8px;width:100%}.detail-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a;outline:none}.notes-input{font-size:12px;padding:6px 8px;resize:vertical}.notes-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a;outline:none}.btn-cancel-small,.btn-edit-small,.btn-save-small{border:none;border-radius:4px;cursor:pointer;font-size:12px;font-weight:600;margin-right:4px;padding:6px 12px;transition:all .2s ease}.btn-edit-small{background:#667eea;color:#fff}.btn-edit-small:hover{background:#5568d3;transform:translateY(-1px)}.btn-save-small{background:#28a745;color:#fff}.btn-save-small:hover{background:#218838}.btn-cancel-small{background:#dc3545;color:#fff}.btn-cancel-small:hover{background:#c82333}.btn-complete{background:linear-gradient(135deg,#28a745,#20c997);border:none;border-radius:8px;box-shadow:0 4px 6px #0000001a;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 40px;transition:all .3s ease}.btn-complete:hover:not(:disabled){box-shadow:0 6px 12px #00000026;transform:translateY(-2px)}.btn-complete:disabled{cursor:not-allowed;opacity:.5}.review-page.error{background:#fff;border-radius:12px;padding:40px 20px;text-align:center}.review-page.error h2{color:#dc3545;margin-bottom:20px}.review-page.error button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;padding:10px 20px}.review-page.loading{align-items:center;color:#fff;display:flex;font-size:18px;justify-content:center}.edit-panel{animation:slideIn .3s ease-out;background:#fff;bottom:0;box-shadow:-4px 0 12px #00000026;display:flex;flex-direction:column;position:fixed;right:0;top:0;width:500px;z-index:1000}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}.edit-panel-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #ddd;color:#fff;display:flex;justify-content:space-between;padding:20px}.edit-panel-header h3{font-size:16px;font-weight:600;margin:0}.btn-close{align-items:center;background:#0000;border:none;color:#fff;cursor:pointer;display:flex;font-size:24px;height:30px;justify-content:center;padding:0;transition:opacity .2s;width:30px}.btn-close:hover{opacity:.8}.edit-panel-content{flex:1 1;overflow-y:auto;padding:20px}.edit-panel-actions{border-top:1px solid #e0e0e0;display:flex;gap:10px;justify-content:flex-end;padding:20px}.btn-cancel,.btn-save{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s ease}.btn-save{background:linear-gradient(135deg,#28a745,#20c997)}.btn-save:hover{box-shadow:0 4px 8px #28a74533;transform:translateY(-2px)}.btn-cancel{background:#f0f0f0;border:1px solid #ddd;color:#333}.btn-cancel:hover{background:#e0e0e0}.legacy-form{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;margin-top:20px;padding:15px}.legacy-form h4{color:#333;font-size:14px;margin-top:0}.notes-input{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:13px;padding:8px 10px;width:100%}@media (max-width:1024px){.edit-panel{animation:slideInBottom .3s ease-out;left:0;right:auto;width:100%}@keyframes slideInBottom{0%{transform:translateY(100%)}to{transform:translateY(0)}}}@media (max-width:1024px){.doors-table td,.doors-table th{font-size:12px;padding:10px 6px}.col-name{width:100px}.col-location,.col-lock-kinds{width:80px}.col-ka{width:70px}.col-card-reader,.col-electric{width:90px}.col-panic{width:80px}.col-notes{width:120px}}@media (max-width:768px){.review-page{padding:10px}.review-header{margin-bottom:20px;padding:20px}.review-header h1{font-size:20px}.review-header h2{font-size:16px}.doors-table td,.doors-table th{font-size:11px;padding:8px 4px}.col-name{width:80px}.col-location,.col-lock-kinds{width:70px}.col-ka{width:60px}.col-card-reader,.col-electric,.col-panic{width:70px}.col-notes{width:100px}.col-action{width:80px}}.edit-controls{display:flex;justify-content:flex-end;margin-top:12px}.btn-edit-mode{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 18px;transition:background .2s ease}.btn-edit-mode:disabled{cursor:not-allowed;opacity:.6}.btn-edit-mode:hover:not(:disabled){background:#5568d3}.col-dynamic{min-width:120px}.table-input,.table-select{background:#fff;border:1px solid #dcdcdc;border-radius:4px;font-family:inherit;font-size:12px;padding:6px 8px;width:100%}.table-input:focus,.table-select:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea1a;outline:none}.table-detail{margin-top:6px}.table-checkbox{align-items:center;display:flex;font-size:12px;gap:6px}.table-checkbox input[type=checkbox]{accent-color:#667eea;height:16px;width:16px}.result-url-section{background:#d4edda;border:1px solid #c3e6cb;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:20px;padding:20px 30px;text-align:center}.result-url-section h3{color:#155724;font-size:18px;margin:0 0 10px}.result-url-section p{color:#155724;font-size:14px;margin:0 0 15px}.result-url-box{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.result-url-box code{background:#fff;border:1px solid #c3e6cb;border-radius:6px;font-size:13px;max-width:600px;padding:10px 16px;word-break:break-all}.btn-copy-url{background:#28a745;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:10px 20px;transition:background .2s ease;white-space:nowrap}.btn-copy-url:hover{background:#218838}.pagination-section{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;gap:8px;margin-bottom:12px;padding:12px 20px}.btn-page,.pagination-section{align-items:center;display:flex;justify-content:center}.btn-page{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;height:36px;transition:background .2s ease;width:36px}.btn-page:hover:not(:disabled){background:#5568d3}.btn-page:disabled{background:silver;cursor:not-allowed}.page-info{color:#333;font-size:14px;font-weight:500;min-width:140px;text-align:center}.result-page{background:linear-gradient(135deg,#667eea,#764ba2);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;padding:20px}.result-page.error,.result-page.loading{align-items:center;display:flex;font-size:18px;justify-content:center;min-height:100vh}.result-page.error{flex-direction:column;gap:16px}.result-page.error button{background:#2196f3;border-radius:4px;font-size:16px;padding:12px 24px}.result-header{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:30px;padding:30px;text-align:center}.result-header h1{color:#333;font-size:28px;margin:0 0 10px}.result-header h2{color:#666;font-size:20px;font-weight:400;margin:0 0 5px}.result-header .subtitle{color:#28a745;font-size:14px;font-weight:600;margin:10px 0 0}.progress-section{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:20px;padding:20px}.progress-info{color:#666;font-size:14px;font-weight:500;margin-bottom:10px}.progress-bar{background:#e0e0e0;border-radius:10px;height:10px;overflow:hidden;width:100%}.progress-fill{background:linear-gradient(90deg,#667eea,#764ba2);height:100%;transition:width .3s ease}.table-wrapper{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:30px;overflow-x:auto}.results-table{border-collapse:collapse;min-width:1100px;width:100%}.results-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:10}.results-table th{border-bottom:2px solid #667eea;font-size:13px;font-weight:600;padding:15px 10px;text-align:left;white-space:nowrap}.results-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s ease}.results-table tbody tr:hover{background-color:#f8f9fa}.results-table tbody tr.reviewed{background-color:#f0f8ff}.results-table td{font-size:13px;padding:12px 10px;vertical-align:middle;word-break:break-word}.col-name{font-weight:500;width:120px}.col-location,.col-lock-kinds{width:100px}.col-ka{width:80px}.col-card-reader,.col-electric{width:110px}.col-panic{width:100px}.col-notes{width:150px}.col-status{width:90px}.status-badge{border-radius:20px;display:inline-block;font-size:11px;font-weight:600;padding:4px 12px;text-align:center}.status-badge.reviewed{background-color:#d4edda;color:#155724}.status-badge.pending{background-color:#fff3cd;color:#856404}.badge{background:#28a745;border-radius:4px;color:#fff;display:inline-block;font-size:12px;font-weight:600;margin-right:4px;padding:2px 8px}.detail-text{background:#f5f5f5;border-radius:3px;color:#666;font-size:12px;margin-top:4px;padding:4px}.action-section{padding:20px;text-align:center}.btn-copy,.btn-export{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;box-shadow:0 4px 6px #0000001a;color:#fff;cursor:pointer;font-size:14px;font-weight:600;margin:0 10px 10px 0;padding:12px 24px;transition:all .3s ease}.btn-copy:hover,.btn-export:hover{box-shadow:0 6px 12px #00000026;transform:translateY(-2px)}.info-text{color:#fff;font-size:14px;margin-top:20px}.result-page.error{background:#fff;border-radius:12px;padding:40px 20px;text-align:center}.result-page.error h2{color:#dc3545;margin-bottom:20px}.result-page.error button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;padding:10px 20px}.result-page.loading{align-items:center;color:#fff;display:flex;font-size:18px;justify-content:center}@media (max-width:1024px){.results-table td,.results-table th{font-size:12px;padding:10px 6px}.col-name{width:100px}.col-location,.col-lock-kinds{width:80px}.col-ka{width:70px}.col-card-reader,.col-electric{width:90px}.col-panic{width:80px}.col-notes{width:120px}}@media (max-width:768px){.result-page{padding:10px}.result-header{margin-bottom:20px;padding:20px}.result-header h1{font-size:20px}.result-header h2{font-size:16px}.results-table td,.results-table th{font-size:11px;padding:8px 4px}.col-name{width:80px}.col-location,.col-lock-kinds{width:70px}.col-ka{width:60px}.col-card-reader,.col-electric,.col-panic{width:70px}.col-notes{width:100px}}.vendor-registration-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.vendor-registration-modal{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;max-height:90vh;max-width:95vw;overflow-y:auto;padding:24px;width:480px}.vendor-registration-modal h2{color:#2c3e50;margin:0 0 20px;text-align:center}.registration-tabs{border-bottom:2px solid #e0e0e0;display:flex;margin-bottom:20px}.registration-tab{background:none;border:none;color:#7f8c8d;cursor:pointer;flex:1 1;font-size:14px;padding:10px;text-align:center;transition:all .2s}.registration-tab.active{border-bottom:2px solid #3498db;color:#3498db;font-weight:600;margin-bottom:-2px}.camera-section{margin-bottom:16px;text-align:center}.camera-section video{background:#000;border-radius:8px;max-height:300px;width:100%}.camera-section canvas{display:none}.camera-controls{display:flex;gap:8px;justify-content:center;margin-top:12px}.camera-btn{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;padding:10px 24px}.camera-btn.capture{background:#e74c3c;color:#fff}.camera-btn.capture:hover{background:#c0392b}.camera-btn.retake{background:#95a5a6;color:#fff}.captured-image{margin-bottom:16px;text-align:center}.captured-image img{border:1px solid #ddd;border-radius:8px;max-height:250px;max-width:100%}.ocr-status{color:#3498db;font-size:14px;padding:12px;text-align:center}.form-group{margin-bottom:14px}.form-group label{color:#555;display:block;font-size:13px;font-weight:600;margin-bottom:4px}.form-group input{border:1px solid #ddd;border-radius:6px;box-sizing:border-box;font-size:14px;padding:8px 12px;width:100%}.form-group input:focus{border-color:#3498db;outline:none}.modal-actions{gap:12px;margin-top:20px}.modal-actions button{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px}.modal-actions .cancel-btn{background:#ecf0f1;color:#555}.modal-actions .cancel-btn:hover{background:#dfe6e9}.modal-actions .register-btn{background:#3498db;color:#fff}.modal-actions .register-btn:hover{background:#2980b9}.modal-actions .register-btn:disabled{background:#bdc3c7;cursor:not-allowed}.confirmation-page{color:#333;font-family:Segoe UI,sans-serif;margin:0 auto;max-width:900px;padding:20px}.confirmation-page h1{color:#2c3e50;margin-bottom:8px;text-align:center}.confirmation-page .subtitle{color:#7f8c8d;margin-bottom:24px;text-align:center}.screenshots-section{display:flex;gap:20px;margin-bottom:24px}.screenshot-card{background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 8px #0000001a;flex:1 1;overflow:hidden}.screenshot-card h3{font-size:14px;font-weight:600;margin:0;padding:12px 16px}.screenshot-card.before h3{background:#e74c3c;color:#fff}.screenshot-card.after h3{background:#2f80ed;color:#fff}.screenshot-card img{display:block;height:auto;width:100%}.screenshot-card .no-image{background:#f8f9fa;color:#95a5a6;font-size:14px;padding:60px 20px;text-align:center}.comment-section{margin-bottom:24px}.comment-section h3{color:#2c3e50;margin-bottom:8px}.comment-display{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;line-height:1.6;padding:12px 16px;white-space:pre-wrap}.comment-input{border:1px solid #ddd;border-radius:6px;box-sizing:border-box;font-size:14px;min-height:80px;padding:12px;resize:vertical;width:100%}.change-details{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:24px;padding:16px}.change-details h3{color:#2c3e50;margin:0 0 12px}.change-details table{border-collapse:collapse;width:100%}.change-details th{border-bottom:2px solid #ddd;color:#7f8c8d;font-size:12px;font-weight:600;padding:8px 12px;text-align:left}.change-details td{border-bottom:1px solid #eee;font-size:13px;padding:6px 12px}.change-details td:first-child{color:#555;font-weight:600;width:120px}.change-details .before-value{color:#95a5a6}.change-details .arrow{color:#e67e22;font-weight:700;text-align:center;width:30px}.change-details .after-value.highlight{color:#e74c3c;font-weight:600}.change-details .changed-row{background:#fef9e7}.vendor-section{margin-bottom:24px}.vendor-section h3{color:#2c3e50;margin-bottom:12px}.vendor-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.vendor-chip{align-items:center;background:#fff;border:2px solid #ddd;border-radius:20px;cursor:pointer;display:flex;font-size:13px;gap:6px;padding:8px 14px;transition:all .2s}.vendor-chip:hover{border-color:#3498db}.vendor-chip.selected{background:#ebf5fb;border-color:#3498db;color:#2980b9;font-weight:600}.vendor-chip .check-mark{color:#3498db;font-weight:700}.add-vendor-btn{background:#f39c12;border:none;border-radius:20px;color:#fff;cursor:pointer;font-size:13px;padding:8px 16px;transition:background .2s}.add-vendor-btn:hover{background:#e67e22}.send-section{margin-top:24px;text-align:center}.send-btn{background:#3498db;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 48px;transition:background .2s}.send-btn:hover{background:#2980b9}.send-btn:disabled{background:#bdc3c7;cursor:not-allowed}.error-container,.loading-container{padding:80px 20px;text-align:center}.error-container{color:#e74c3c}.approval-status{margin-bottom:24px}.approval-status h3{color:#2c3e50;margin-bottom:12px}.approval-item{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:6px;padding:10px 16px}.approval-item .vendor-name{font-weight:600}.approval-item .status-badge{border-radius:12px;font-size:12px;font-weight:600;padding:4px 10px}.status-badge.pending{background:#ffeaa7;color:#d68910}.status-badge.approved{background:#d5f5e3;color:#27ae60}.status-badge.rejected{background:#fadbd8;color:#e74c3c}.user-management-link-wrap{margin-bottom:12px;text-align:right}.user-management-link{background:#fff;border:1px solid #d0d7de;border-radius:6px;color:#2c3e50;cursor:pointer;padding:8px 12px}.user-management-link:hover{background:#f6f8fa}.cc-section .vendor-chip.cc-chip{border-style:dashed}.cc-section .vendor-chip.disabled{border-color:#ddd;cursor:not-allowed;opacity:.45}.cc-section .vendor-chip.disabled:hover{border-color:#ddd}.vendor-review-page{color:#333;font-family:Segoe UI,sans-serif;margin:0 auto;max-width:900px;padding:20px}.vendor-review-page h1{color:#2c3e50;margin-bottom:8px;text-align:center}.vendor-review-page .subtitle{color:#7f8c8d;margin-bottom:24px;text-align:center}.chat-section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-top:24px;overflow:hidden}.chat-section h3{background:#2c3e50;color:#fff;font-size:14px;margin:0;padding:12px 16px}.chat-messages{background:#f8f9fa;max-height:400px;overflow-y:auto;padding:16px}.chat-message{display:flex;flex-direction:column;margin-bottom:12px}.chat-message.architect{align-items:flex-end}.chat-message.vendor{align-items:flex-start}.chat-bubble{border-radius:12px;font-size:13px;line-height:1.5;max-width:70%;padding:10px 14px;word-break:break-word}.chat-message.architect .chat-bubble{background:#3498db;border-bottom-right-radius:4px;color:#fff}.chat-message.vendor .chat-bubble{background:#fff;border:1px solid #ddd;border-bottom-left-radius:4px}.chat-bubble img{border-radius:6px;margin-top:8px;max-width:100%}.chat-meta{color:#95a5a6;font-size:11px;margin-top:2px;padding:0 4px}.chat-input-area{align-items:flex-end;background:#fff;border-top:1px solid #e0e0e0;display:flex;gap:8px;padding:12px 16px}.chat-input-area textarea{border:1px solid #ddd;border-radius:6px;flex:1 1;font-size:13px;max-height:100px;min-height:40px;padding:8px 12px;resize:none}.chat-input-area .attach-btn{background:#95a5a6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;padding:8px 12px}.chat-input-area .attach-btn:hover{background:#7f8c8d}.chat-input-area .send-chat-btn{background:#3498db;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px}.chat-input-area .send-chat-btn:hover{background:#2980b9}.image-preview{background:#fafafa;border-top:1px solid #eee;padding:8px 16px}.image-preview img{border-radius:4px;max-height:80px}.image-preview .remove-image{color:#e74c3c;cursor:pointer;font-size:14px;margin-left:8px}.approve-section{background:#f0f9f4;border:1px solid #d5f5e3;border-radius:8px;margin-top:24px;padding:20px;text-align:center}.approve-section p{color:#555;margin-bottom:16px}.approve-btn{background:#27ae60;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 48px;transition:background .2s}.approve-btn:hover{background:#219a52}.approve-btn:disabled{background:#bdc3c7;cursor:not-allowed}.already-approved{background:#d5f5e3;border-radius:8px;color:#27ae60;font-size:16px;font-weight:600;padding:20px;text-align:center}.vendor-selector{margin-bottom:16px}.vendor-selector select{border:1px solid #ddd;border-radius:6px;font-size:14px;min-width:200px;padding:8px 12px}.user-management-page{font-family:Segoe UI,sans-serif;margin:0 auto;max-width:1100px;padding:20px}.user-management-page h1{margin-bottom:8px}.user-management-page .subtitle{color:#666;margin-bottom:20px}.user-management-layout{grid-gap:16px;display:grid;gap:16px;grid-template-columns:360px 1fr}.user-form-panel,.user-list-panel{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px}.form-grid{grid-gap:8px;display:grid;gap:8px}.form-grid input{border:1px solid #ddd;border-radius:6px;padding:8px 10px}.form-actions{display:flex;gap:8px;margin-top:12px}.form-actions button,.row-actions button{background:#3498db;border:none;border-radius:6px;color:#fff;cursor:pointer;padding:8px 12px}.form-actions button.secondary{background:#95a5a6}.row-actions button.small{font-size:12px;padding:6px 10px}.row-actions button.danger{background:#e74c3c}.user-list-panel table{border-collapse:collapse;width:100%}.user-list-panel td,.user-list-panel th{border-bottom:1px solid #eee;font-size:13px;padding:8px;text-align:left}.row-actions{display:flex;gap:6px;justify-content:flex-end}@media (max-width:900px){.user-management-layout{grid-template-columns:1fr}}.request-status-page{margin:0 auto;max-width:1200px;padding:20px}.filter-row{display:flex;gap:8px;margin-bottom:12px}.filter-row input{min-width:260px;padding:8px}.filter-row button{padding:8px 12px}.request-status-page table{background:#fff;border-collapse:collapse;width:100%}.request-status-page td,.request-status-page th{border:1px solid #ddd;padding:8px;text-align:left;vertical-align:top}.request-status-page th{background:#f5f5f5}.delete-btn{background:#d9534f;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:6px 10px}.error{color:#d9534f}:root{--cs-primary:#1976d2;--cs-primary-light:#e3f2fd;--cs-success:#388e3c;--cs-danger:#d32f2f;--cs-text:#212121;--cs-text-sub:#616161;--cs-border:#e0e0e0;--cs-bg:#f5f5f5;--cs-white:#fff;--cs-radius:12px;--cs-shadow:0 2px 8px #0000001f}*{-webkit-tap-highlight-color:transparent}.cs-page{background:#f5f5f5;background:var(--cs-bg);color:#212121;color:var(--cs-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,sans-serif;margin:0 auto;max-width:960px;min-height:100vh}.cs-header{background:#fff;background:var(--cs-white);border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--cs-border);box-shadow:0 2px 8px #0000001f;box-shadow:var(--cs-shadow);padding:14px 16px 0;position:-webkit-sticky;position:sticky;top:0;z-index:20}.cs-header-top{align-items:baseline;display:flex;gap:10px;margin-bottom:10px}.cs-header h1{font-size:19px;font-weight:700;margin:0}.cs-project-name{color:#616161;color:var(--cs-text-sub);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-steps{align-items:stretch;display:flex}.cs-step{align-items:center;border-bottom:3px solid #0000;color:#616161;color:var(--cs-text-sub);cursor:default;display:flex;font-size:13px;gap:6px;padding:10px 6px;white-space:nowrap}.cs-step.active{border-bottom-color:#1976d2;border-bottom-color:var(--cs-primary);color:#1976d2;color:var(--cs-primary);font-weight:600}.cs-step.done{color:#388e3c;color:var(--cs-success);cursor:pointer}.cs-step-num{align-items:center;background:#e0e0e0;background:var(--cs-border);border-radius:50%;color:#616161;color:var(--cs-text-sub);display:flex;flex-shrink:0;font-size:12px;font-weight:700;height:22px;justify-content:center;width:22px}.cs-step.active .cs-step-num{background:#1976d2;background:var(--cs-primary);color:#fff}.cs-step.done .cs-step-num{background:#388e3c;background:var(--cs-success);color:#fff}.cs-step-line{align-self:center;background:#e0e0e0;background:var(--cs-border);flex:1 1;height:1px;margin:0 6px}.cs-panel{padding:20px 16px}.cs-form-group{margin-bottom:28px}.cs-label{display:block;font-size:15px;font-weight:600;margin-bottom:6px}.cs-hint{color:#616161;color:var(--cs-text-sub);font-size:12px;margin:0 0 10px}.cs-select{appearance:none;-webkit-appearance:none;background:#fff;background:var(--cs-white);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23666'%3E%3Cpath d='m4 6 4 4 4-4'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;border:1px solid #e0e0e0;border:1px solid var(--cs-border);border-radius:12px;border-radius:var(--cs-radius);color:#212121;color:var(--cs-text);font-size:15px;padding:13px 14px;width:100%}.cs-input{background:#fff;background:var(--cs-white);border:1px solid #e0e0e0;border:1px solid var(--cs-border);border-radius:8px;flex:1 1;font-size:14px;min-width:0;padding:11px 12px}.cs-legend-row{align-items:center;display:flex;gap:8px;margin-bottom:10px}.cs-color-swatch{border:1px solid #0000001a;border-radius:8px;flex-shrink:0;height:38px;width:38px}.cs-color-picker{background:none;height:44px;padding:2px;width:44px}.cs-btn-del,.cs-color-picker{border:none;border-radius:8px;cursor:pointer;flex-shrink:0}.cs-btn-del{align-items:center;background:#fee2e2;color:#d32f2f;color:var(--cs-danger);display:flex;font-size:18px;height:38px;justify-content:center;width:38px}.cs-btn-add-legend{background:none;border:2px dashed #e0e0e0;border:2px dashed var(--cs-border);border-radius:12px;border-radius:var(--cs-radius);color:#1976d2;color:var(--cs-primary);cursor:pointer;font-size:14px;margin-top:2px;padding:11px;width:100%}.cs-btn-primary{background:#1976d2;background:var(--cs-primary);border:none;border-radius:12px;border-radius:var(--cs-radius);color:#fff;cursor:pointer;font-size:17px;font-weight:600;padding:16px;width:100%}.cs-btn-primary:disabled{background:#b0bec5;cursor:not-allowed}.cs-assign-wrapper{display:flex;flex-direction:column;min-height:calc(100vh - 110px)}.cs-palette{background:#fff;background:var(--cs-white);border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--cs-border);box-shadow:0 2px 6px #00000012;padding:10px 14px 8px;position:-webkit-sticky;position:sticky;top:108px;z-index:10}.cs-palette-scroll{-webkit-overflow-scrolling:touch;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.cs-palette-btn{border:3px solid #0000;border-radius:24px;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;font-weight:700;min-width:60px;padding:8px 18px;text-shadow:0 1px 3px #00000080;transition:transform .1s,border-color .1s;white-space:nowrap}.cs-palette-btn.selected{border-color:#111;transform:scale(1.1)}.cs-palette-hint{color:#616161;color:var(--cs-text-sub);font-size:11px;margin-top:4px}.floorplan-container{-webkit-overflow-scrolling:touch;background:#eceff1;flex:1 1;overflow:auto;padding:8px}.fp-empty{color:#616161;color:var(--cs-text-sub);padding:40px;text-align:center}.fp-room{cursor:pointer}.fp-room:active circle{opacity:.7}.fp-door{cursor:pointer}.fp-door:active rect{opacity:.6}.cs-progress{background:#fff;background:var(--cs-white);border-top:1px solid #e0e0e0;border-top:1px solid var(--cs-border);padding:10px 16px 6px}.cs-progress-text{color:#616161;color:var(--cs-text-sub);font-size:12px;margin-bottom:5px}.cs-progress-bar{background:#e0e0e0;background:var(--cs-border);border-radius:3px;height:5px;overflow:hidden}.cs-progress-fill{background:#1976d2;background:var(--cs-primary);border-radius:3px;height:100%;transition:width .3s ease}.cs-footer-actions{background:#fff;background:var(--cs-white);border-top:1px solid #e0e0e0;border-top:1px solid var(--cs-border);display:flex;gap:10px;padding:12px 14px}.cs-btn-back{background:#fff;background:var(--cs-white);border:2px solid #e0e0e0;border:2px solid var(--cs-border);border-radius:12px;border-radius:var(--cs-radius);cursor:pointer;font-size:14px;padding:14px 16px;white-space:nowrap}.cs-btn-done{background:#388e3c;background:var(--cs-success);border:none;border-radius:12px;border-radius:var(--cs-radius);color:#fff;cursor:pointer;flex:1 1;font-size:16px;font-weight:700;padding:14px}.cs-btn-done:disabled{background:#b0bec5;cursor:not-allowed}.modal-overlay{align-items:flex-end;background:#0000008c;display:flex;inset:0;justify-content:center;position:fixed;z-index:100}.modal-content{border-radius:20px 20px 0 0;max-height:85vh;max-width:640px;overflow-y:auto;padding:0 0 env(safe-area-inset-bottom,16px);width:100%}.modal-content,.modal-header{background:#fff;background:var(--cs-white)}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--cs-border);display:flex;justify-content:space-between;padding:16px 20px 12px;position:-webkit-sticky;position:sticky;top:0}.modal-header h3{font-size:16px;margin:0}.modal-close{background:none;border:none;color:#616161;color:var(--cs-text-sub);cursor:pointer;font-size:20px;padding:4px 8px}.door-section{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--cs-border);padding:14px 20px}.door-section label{color:#616161;color:var(--cs-text-sub);display:block;font-size:13px;font-weight:600;margin-bottom:8px}.lock-input{background:#fff;background:var(--cs-white);border:1px solid #e0e0e0;border:1px solid var(--cs-border);border-radius:8px;font-size:15px;margin-bottom:8px;padding:11px 12px;width:100%}.chip-group{display:flex;flex-wrap:wrap;gap:6px}.lock-chip{background:#fff;background:var(--cs-white);border:2px solid #e0e0e0;border:2px solid var(--cs-border);border-radius:20px;cursor:pointer;font-size:13px;font-weight:600;padding:6px 12px}.lock-chip.active{background:#e3f2fd;background:var(--cs-primary-light);border-color:#1976d2;border-color:var(--cs-primary);color:#1976d2;color:var(--cs-primary)}.lock-types-detail{border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--cs-border);padding:10px 20px}.lock-types-detail summary{color:#616161;color:var(--cs-text-sub);cursor:pointer;font-size:12px;padding:4px 0}.lock-cat{margin-top:8px}.lock-cat-label{color:#616161;color:var(--cs-text-sub);display:block;font-size:11px;font-weight:600;margin-bottom:4px}.lock-chip-info{background:#f3f4f6;border-radius:4px;display:inline-block;font-size:11px;margin:2px;padding:3px 7px}.modal-actions{display:flex;gap:10px;padding:14px 20px}.btn-cancel{background:#fff;background:var(--cs-white);border:2px solid #e0e0e0;border:2px solid var(--cs-border);border-radius:12px;border-radius:var(--cs-radius);flex:1 1}.btn-cancel,.btn-save{cursor:pointer;font-size:15px;padding:14px}.btn-save{background:#1976d2;background:var(--cs-primary);border:none;border-radius:12px;border-radius:var(--cs-radius);color:#fff;flex:2 1;font-weight:600}.cs-complete{padding:40px 20px;text-align:center}.cs-complete-icon{font-size:64px;margin-bottom:16px}.cs-complete h2{font-size:22px;margin:0 0 10px}.cs-complete p{color:#616161;color:var(--cs-text-sub);font-size:14px;line-height:1.6;margin-bottom:20px}.cs-session-box{border:2px solid #e0e0e0;border:2px solid var(--cs-border);font-family:Courier New,monospace;font-size:15px;margin-bottom:16px;text-align:left;word-break:break-all}.cs-complete-stats,.cs-session-box{background:#f3f4f6;border-radius:12px;border-radius:var(--cs-radius);padding:16px}.cs-complete-stats{display:flex;gap:24px;justify-content:center;margin-top:24px}.cs-stat{align-items:center;display:flex;flex-direction:column;gap:4px}.cs-stat-num{color:#1976d2;color:var(--cs-primary);font-size:28px;font-weight:700}.cs-stat-label{font-size:12px}.cs-error,.cs-loading,.cs-stat-label{color:#616161;color:var(--cs-text-sub)}.cs-error,.cs-loading{align-items:center;display:flex;font-size:16px;justify-content:center;min-height:100vh;padding:20px;text-align:center}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root,.not-found{min-height:100vh}.not-found{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:20px;text-align:center}.not-found h1{color:#333;font-size:32px;margin:0 0 16px}.not-found p{color:#666;font-size:16px;margin:0}@media (max-width:1024px){body{font-size:16px}}@media (orientation:landscape) and (max-height:500px){body{font-size:14px}}
/*# sourceMappingURL=main.4d05ea21.css.map*/