.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 tbody tr.selected{background-color:#e8f1ff}.doors-table td{font-size:13px;padding:12px 10px;vertical-align:middle;word-break:break-word}.col-select{text-align:center;width:52px}.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}.floorplan-preview-header,.selection-summary{align-items:flex-start;flex-direction:column}.selection-actions{flex-wrap:wrap;width:100%}.batch-edit-controls{grid-template-columns:1fr}.floorplan-drawer{width:100vw}}.edit-controls{display:flex;justify-content:flex-end;margin-top:12px}.selection-panel{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000001a;margin-bottom:20px;padding:20px}.selection-summary{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.selection-summary h3{color:#1f2d3d;font-size:18px;margin:0 0 6px}.selection-summary p{color:#5c6b7a;font-size:13px;margin:0}.selection-actions{align-items:center;display:flex;gap:10px}.btn-clear-selection{background:#eef3f8;border:1px solid #d4dce5;border-radius:6px;color:#2c3e50;cursor:pointer;font-weight:600;padding:8px 14px}.batch-edit-panel{background:#f8fbff;border:1px solid #d8e7ff;border-radius:10px;margin-bottom:16px;padding:16px}.batch-edit-header{color:#2a4f82;font-size:14px;font-weight:700;margin-bottom:12px}.batch-edit-controls{grid-gap:12px;align-items:start;display:grid;gap:12px;grid-template-columns:minmax(180px,220px) minmax(220px,1fr) auto}.batch-item-select,.batch-value-input{min-height:38px}.batch-checkbox-editor{display:flex;flex-direction:column;gap:8px}.btn-apply-batch{background:#1f78d1;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;min-height:38px;padding:10px 18px}.btn-apply-batch:hover{background:#1764b2}.floorplan-preview-panel{background:#fbfcfe;border:1px solid #e2e8f0;border-radius:10px;padding:16px}.floorplan-drawer-backdrop{background:#0f172a2e;border:none;inset:0;opacity:0;pointer-events:none;position:fixed;transition:opacity .25s ease;z-index:40}.floorplan-drawer-backdrop.open{opacity:1;pointer-events:auto}.floorplan-drawer{background:#fff;box-shadow:8px 0 24px #0f172a2e;display:flex;flex-direction:column;height:100vh;left:0;position:fixed;top:0;transform:translateX(-100%);transition:transform .28s ease;width:min(480px,92vw);z-index:41}.floorplan-drawer.open{transform:translateX(0)}.floorplan-drawer-header{align-items:flex-start;background:linear-gradient(180deg,#f8fbff,#fff);border-bottom:1px solid #e2e8f0;display:flex;gap:12px;justify-content:space-between;padding:20px 20px 16px}.floorplan-drawer-label{color:#1f78d1;font-size:11px;font-weight:700;letter-spacing:.08em;margin-bottom:6px}.floorplan-drawer-header h3{color:#1f2d3d;font-size:20px;margin:0}.floorplan-drawer-close{background:#e8eef7;border:none;border-radius:999px;color:#334155;cursor:pointer;font-size:22px;height:36px;line-height:1;width:36px}.floorplan-drawer-body{flex:1 1;overflow-y:auto;padding:16px 20px 20px}.floorplan-preview-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.floorplan-preview-header h3{color:#1f2d3d;font-size:16px;margin:0}.floorplan-level-tabs{display:flex;flex-wrap:wrap;gap:8px}.floorplan-level-tab{background:#edf2f7;border:1px solid #d8e1eb;border-radius:999px;color:#334155;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px}.floorplan-level-tab.active{background:#1f78d1;border-color:#1f78d1;color:#fff}.floorplan-preview-image{background:#eef2f7;border-radius:8px;display:block;max-height:calc(100vh - 220px);object-fit:contain;width:100%}.floorplan-preview-image.zoomed{background-color:#eef2f7;background-repeat:no-repeat;background-size:240% auto;border:1px solid #d7e0eb;height:min(62vh,540px);position:relative}.floorplan-focus-pin{background:#ef4444;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 2px #ef444440;height:14px;position:absolute;transform:translate(-50%,-50%);width:14px}.row-select-actions{align-items:center;display:flex;gap:6px;justify-content:center}.btn-row-location{background:#f5f9ff;border:1px solid #d0dbea;border-radius:6px;color:#1f4f8f;cursor:pointer;font-size:11px;font-weight:600;padding:4px 7px;white-space:nowrap}.btn-row-location:hover{background:#e9f2ff}.floorplan-preview-empty{align-items:center;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;color:#64748b;display:flex;justify-content:center;min-height:180px}.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;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}.sent-links-section{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;margin-top:24px;padding:20px}.sent-links-section h3{color:#333;font-size:16px;margin:0 0 8px}.sent-links-note{color:#666;font-size:13px;line-height:1.6;margin:0 0 16px}.sent-links-list{list-style:none;margin:0 0 16px;padding:0}.sent-link-item{align-items:center;border-bottom:1px solid #eee;display:flex;gap:12px;justify-content:space-between;padding:12px 0}.sent-link-info{display:flex;flex-direction:column;gap:2px;min-width:0}.sent-link-name{color:#333;font-weight:600}.sent-link-email{color:#777;font-size:13px;overflow-wrap:anywhere}.sent-link-cc{align-self:flex-start;background:#fdf3d0;border-radius:10px;color:#6b5b00;font-size:11px;margin-top:4px;padding:2px 8px}.sent-link-btn{background:#4a90d9;border:none;border-radius:6px;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;padding:8px 14px}.sent-link-btn:disabled{background:#c4c4c4;cursor:not-allowed}.sent-links-reset{background:#f0f0f0;border:none;border-radius:6px;color:#555;cursor:pointer;font-size:14px;padding:8px 14px}.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}.vendor-readonly-note{color:#6b5b00;display:block;font-size:13px;margin-top:6px}.admin-nav{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:20px;padding-bottom:12px}.admin-nav-links{display:flex;flex-wrap:wrap;gap:8px}.admin-nav-link{background:#f2f4f7;border:1px solid #0000;border-radius:6px;color:#444;cursor:pointer;font-size:14px;padding:8px 14px}.admin-nav-link:hover{background:#e7ebf0}.admin-nav-link.active{background:#e3effb;border-color:#b9d5ef;color:#1c5ea8;font-weight:600}.admin-nav-logout{background:#fff;border:1px solid #d5d5d5;border-radius:6px;color:#555;cursor:pointer;font-size:14px;padding:8px 14px}.admin-nav-logout:hover{background:#f7f7f7}.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}.token-page{font-family:Segoe UI,sans-serif;margin:0 auto;max-width:1100px;padding:20px}.token-page h1{margin-bottom:8px}.token-page .subtitle{color:#666;margin-bottom:20px}.issued-panel{background:#fff8e6;border:1px solid #e8c96a;border-radius:8px;margin-bottom:24px;padding:20px}.issued-panel h2{color:#7a5c00;font-size:17px;margin:0 0 10px}.issued-warning{color:#6b5b00;font-size:14px;line-height:1.6;margin:0 0 14px}.issued-meta{color:#444;font-size:14px;margin-bottom:10px}.issued-token-row{align-items:stretch;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.issued-token{background:#fff;border:1px solid #d9c07f;border-radius:6px;color:#222;flex:1 1 320px;font-family:Consolas,Menlo,monospace;font-size:15px;overflow-wrap:anywhere;padding:12px 14px;-webkit-user-select:all;user-select:all}.copy-btn{background:#b8860b;border:none;border-radius:6px;color:#fff;cursor:pointer;flex:0 0 auto;font-size:14px;font-weight:600;padding:0 18px}.copy-btn:hover{background:#a5780a}.issued-hint{color:#6b5b00;font-size:13px;line-height:1.7;margin:0 0 14px}.issued-close{background:#fff;border:1px solid #d9c07f;border-radius:6px;color:#444;cursor:pointer;font-size:14px;padding:9px 16px}.token-layout{grid-gap:16px;display:grid;gap:16px;grid-template-columns:340px 1fr}@media (max-width:900px){.token-layout{grid-template-columns:1fr}}.token-form-panel,.token-list-panel{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px}.token-form-panel h2,.token-list-panel h2{font-size:16px;margin:0 0 14px}.token-form-panel label{color:#555;display:block;font-size:13px;font-weight:600;margin-bottom:5px}.token-form-panel input,.token-form-panel select{border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:4px;padding:9px 10px;width:100%}.token-form-panel input:focus,.token-form-panel select:focus{border-color:#4a90d9;outline:none}.field-hint{color:#888;font-size:12px;line-height:1.6;margin:0 0 14px}.issue-btn{background:#4a90d9;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;margin-top:6px;padding:11px;width:100%}.issue-btn:disabled{background:#b9cfe6;cursor:not-allowed}.token-table-wrap{overflow-x:auto}.token-list-panel table{border-collapse:collapse;font-size:14px;width:100%}.token-list-panel td,.token-list-panel th{border-bottom:1px solid #eee;padding:10px 8px;text-align:left;white-space:nowrap}.token-list-panel th{color:#777;font-size:12px;font-weight:600}.token-list-panel tr.revoked{color:#aaa}.token-user{font-weight:600}.token-username{color:#999;font-size:12px}.status-badge{border-radius:10px;display:inline-block;font-size:12px;padding:2px 10px}.status-badge.on{background:#e3f5e8;color:#1c6b2f}.status-badge.off{background:#eee;color:#777}.revoke-btn{background:#fff;border:1px solid #e5b6b8;color:#a4272c;padding:5px 12px}.revoke-btn:hover,.token-error{background:#fdecee}.token-error{border-radius:6px;color:#a4272c;font-size:13px;padding:10px 12px}.token-empty{color:#999;font-size:14px}.token-device{color:#555;font-size:12px;margin-bottom:4px}.token-unbound{color:#aaa;font-size:12px}.release-btn{background:#fff;border:1px solid #ccd6e0;border-radius:4px;color:#40566d;cursor:pointer;font-size:11px;padding:3px 10px}.release-btn:hover{background:#f2f6fa}.account-page{font-family:Segoe UI,sans-serif;margin:0 auto;max-width:1100px;padding:20px}.account-page h1{margin-bottom:8px}.account-page .subtitle{color:#666;margin-bottom:20px}.account-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex-direction:column;max-width:420px;padding:20px}.account-card h2{font-size:16px;margin:0 0 16px}.account-card label{color:#555;font-size:13px;font-weight:600;margin-bottom:5px}.account-card input{border:1px solid #ddd;border-radius:6px;font-size:14px;margin-bottom:6px;padding:9px 10px}.account-card input:focus{border-color:#4a90d9;outline:none}.field-note{color:#888;font-size:12px;line-height:1.6;margin:0 0 14px}.field-note.warn{color:#a4272c}.account-card button{background:#4a90d9;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;margin-top:10px;padding:11px}.account-card button:disabled{background:#b9cfe6;cursor:not-allowed}.account-error{background:#fdecee;color:#a4272c}.account-done,.account-error{border-radius:6px;font-size:13px;margin:0 0 12px;padding:10px 12px}.account-done{background:#e3f5e8;color:#1c6b2f}.account-note{background:#f7f8fa;border:1px solid #e2e5ea;border-radius:8px;margin-top:24px;max-width:720px;padding:16px 20px}.account-note h3{color:#444;font-size:15px;margin:0 0 10px}.account-note p{color:#666;font-size:13px;line-height:1.8;margin:0 0 12px}.account-note pre{background:#fff;border:1px solid #e2e5ea;border-radius:6px;color:#333;font-family:Consolas,Menlo,monospace;font-size:12px;line-height:1.7;margin:0;overflow-x:auto;padding:12px 14px}.share-page{font-family:Segoe UI,sans-serif;margin:0 auto;max-width:1100px;padding:20px}.share-page h1{margin-bottom:8px}.share-page .subtitle{color:#666;font-size:14px;line-height:1.7;margin-bottom:20px}.share-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:14px;padding:16px}.share-card.inactive{background:#fafafa;color:#999}.share-head{align-items:flex-start;gap:12px;justify-content:space-between}.share-head,.share-title{display:flex;flex-wrap:wrap}.share-title{align-items:center;gap:8px}.share-type{background:#eaf1f8;color:#40566d}.share-badge,.share-type{border-radius:10px;font-size:12px;padding:2px 10px}.share-badge.on{background:#e3f5e8;color:#1c6b2f}.share-badge.off{background:#eee;color:#777}.share-actions{display:flex;flex-shrink:0;gap:8px}.log-btn{background:#fff;border:1px solid #ccd6e0;border-radius:5px;color:#40566d;padding:6px 12px}.log-btn,.revoke-btn{cursor:pointer;font-size:13px}.revoke-btn{background:#c0392b;border:none;border-radius:5px;color:#fff;font-weight:600;padding:6px 14px}.revoke-btn:hover{background:#a93226}.revoke-small{background:#fff;border:1px solid #e5b6b8;border-radius:4px;color:#a4272c;cursor:pointer;font-size:12px;padding:3px 10px}.share-meta{color:#888;display:flex;flex-wrap:wrap;font-size:12px;gap:16px;margin-top:10px}.share-meta .warn{color:#a4272c}.share-approvals{background:#f7f9fb;border-radius:6px;margin-top:12px;padding:10px 12px}.share-approvals-title{color:#666;font-size:12px;font-weight:600;margin-bottom:8px}.approval-row{align-items:center;display:flex;flex-wrap:wrap;font-size:13px;gap:10px;padding:5px 0}.approval-vendor{color:#555;font-family:Consolas,Menlo,monospace;font-size:12px}.approval-kind{color:#777;font-size:12px}.share-log{border-top:1px solid #eee;margin-top:12px;padding-top:12px}.log-table-wrap{overflow-x:auto}.share-log table{border-collapse:collapse;font-size:13px;width:100%}.share-log td,.share-log th{border-bottom:1px solid #f0f0f0;padding:7px 8px;text-align:left;white-space:nowrap}.share-log th{color:#888;font-size:11px}.share-log .ua{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-error{background:#fdecee;border-radius:6px;color:#a4272c;font-size:13px;padding:10px 12px}.share-empty{color:#999;font-size:14px}.share-paging{align-items:center;display:flex;gap:12px;justify-content:center;margin-top:20px}.share-paging button{background:#fff;border:1px solid #ccd6e0;border-radius:6px;color:#40566d;cursor:pointer;font-size:14px;padding:7px 16px}.share-paging button:disabled{border-color:#eee;color:#bbb;cursor:not-allowed}.share-paging-pos{color:#888;font-size:13px}:root{--cs-navy:#141b26;--cs-navy-light:#1e2a38;--cs-surface:#24344a8c;--cs-surface-solid:#24344a;--cs-surface-hover:#2c3e50b3;--cs-glass:#ffffff0f;--cs-glass-strong:#ffffff1a;--cs-glass-border:#ffffff24;--cs-primary:#3ea6ff;--cs-primary-dark:#2980b9;--cs-accent:#7c5cff;--cs-primary-light:#3ea6ff2e;--cs-success:#2ecc71;--cs-warning:#f39c12;--cs-danger:#e74c3c;--cs-danger-bg:#e74c3c29;--cs-text:#eef3f8;--cs-text-sub:#93a3b8;--cs-border:#ffffff1a;--cs-bg:#0a0f1a;--cs-white:#24344a8c;--cs-radius:18px;--cs-radius-sm:12px;--cs-blur:18px;--cs-shadow:0 8px 30px #00000059;--cs-shadow-lg:0 16px 48px #00000080;--cs-glow:0 0 0 3px #3ea6ff40;--cs-glow-accent:0 0 24px #7c5cff59}*{-webkit-tap-highlight-color:transparent}.cs-page{background:#0a0f1a;background:var(--cs-bg);color:#eef3f8;color:var(--cs-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,sans-serif;isolation:isolate;min-height:100vh;overflow-x:hidden;position:relative;width:100%}.cs-page:before{background:radial-gradient(650px 480px at 8% -8%,#3ea6ff38,#0000 60%),radial-gradient(600px 460px at 100% 8%,#7c5cff29,#0000 55%),radial-gradient(700px 520px at 50% 110%,#2ecc7114,#0000 60%),linear-gradient(180deg,#10182a,#0a0f1a 55%,#070b13);background:radial-gradient(650px 480px at 8% -8%,#3ea6ff38,#0000 60%),radial-gradient(600px 460px at 100% 8%,#7c5cff29,#0000 55%),radial-gradient(700px 520px at 50% 110%,#2ecc7114,#0000 60%),linear-gradient(180deg,#10182a 0,var(--cs-bg) 55%,#070b13 100%);content:"";inset:0;pointer-events:none;position:fixed;z-index:0}.cs-page>*{position:relative;z-index:1}.cs-header{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#141b268c;border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);box-shadow:0 8px 30px #00000059;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{-webkit-text-fill-color:#0000;background:linear-gradient(120deg,#fff,#bcd9ff);-webkit-background-clip:text;background-clip:text;color:#fff;font-size:19px;font-weight:700;letter-spacing:.2px;margin:0}.cs-project-name{color:#93a3b8;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:#93a3b8;color:var(--cs-text-sub);cursor:default;display:flex;font-size:13px;gap:6px;padding:10px 6px;transition:color .2s ease;white-space:nowrap}.cs-step.active{border-bottom-color:#3ea6ff;border-bottom-color:var(--cs-primary);color:#fff;font-weight:600}.cs-step.done{color:#2ecc71;color:var(--cs-success);cursor:pointer}.cs-step-num{align-items:center;background:#ffffff0f;background:var(--cs-glass);border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:50%;color:#93a3b8;color:var(--cs-text-sub);display:flex;flex-shrink:0;font-size:12px;font-weight:700;height:22px;justify-content:center;transition:all .2s ease;width:22px}.cs-step.active .cs-step-num{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary),var(--cs-accent));border-color:#0000;box-shadow:0 0 0 3px #3ea6ff40;box-shadow:var(--cs-glow);color:#fff}.cs-step.done .cs-step-num{background:#2ecc71;background:var(--cs-success);border-color:#0000;color:#fff}.cs-step-line{align-self:center;background:#ffffff24;background:var(--cs-glass-border);flex:1 1;height:1px;margin:0 6px}.cs-panel{margin:0 auto;max-width:640px;padding:24px 16px 32px}.cs-form-group{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#ffffff0f;background:var(--cs-glass);border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:18px;border-radius:var(--cs-radius);box-shadow:0 8px 30px #00000059;box-shadow:var(--cs-shadow);margin-bottom:24px;overflow:hidden;padding:20px;position:relative}.cs-form-group:before{background:linear-gradient(90deg,#0000,#fff6,#0000);content:"";height:1px;left:0;position:absolute;right:0;top:0}.cs-label{color:#eef3f8;color:var(--cs-text);display:block;font-size:15px;font-weight:600;margin-bottom:6px}.cs-hint{color:#93a3b8;color:var(--cs-text-sub);font-size:12px;margin:0 0 10px}.cs-select{appearance:none;-webkit-appearance:none;background:#ffffff0d;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%2393a3b8'%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 #ffffff24;border:1px solid var(--cs-glass-border);border-radius:12px;border-radius:var(--cs-radius-sm);color:#eef3f8;color:var(--cs-text);font-size:15px;padding:13px 14px;transition:border-color .15s,box-shadow .15s,background .15s;width:100%}.cs-select:focus{background:#ffffff14;border-color:#3ea6ff;border-color:var(--cs-primary);box-shadow:0 0 0 3px #3ea6ff40;box-shadow:var(--cs-glow);outline:none}.cs-input{background:#ffffff0d;border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:10px;color:#eef3f8;color:var(--cs-text);flex:1 1;font-size:14px;min-width:0;padding:11px 12px;transition:border-color .15s,box-shadow .15s,background .15s}.cs-input:focus{background:#ffffff14;border-color:#3ea6ff;border-color:var(--cs-primary);box-shadow:0 0 0 3px #3ea6ff40;box-shadow:var(--cs-glow);outline:none}.cs-input::placeholder{color:#93a3b8;color:var(--cs-text-sub)}.cs-legend-row{align-items:center;display:flex;gap:8px;margin-bottom:10px}.cs-color-swatch{border:1px solid #ffffff40;border-radius:10px;box-shadow:0 2px 10px #00000059;flex-shrink:0;height:38px;width:38px}.cs-color-picker{background:none;border:none;border-radius:10px;cursor:pointer;flex-shrink:0;height:44px;padding:2px;width:44px}.cs-btn-del{align-items:center;background:#e74c3c29;background:var(--cs-danger-bg);border:1px solid #0000;border-radius:10px;color:#e74c3c;color:var(--cs-danger);cursor:pointer;display:flex;flex-shrink:0;font-size:18px;height:38px;justify-content:center;transition:background .15s;width:38px}.cs-btn-del:hover{background:#e74c3c4d}.cs-btn-add-legend{background:#ffffff08;border:1.5px dashed #ffffff24;border:1.5px dashed var(--cs-glass-border);border-radius:18px;border-radius:var(--cs-radius);color:#3ea6ff;color:var(--cs-primary);cursor:pointer;font-size:14px;margin-top:2px;padding:11px;transition:border-color .15s,background .15s;width:100%}.cs-btn-add-legend:hover{background:#3ea6ff2e;background:var(--cs-primary-light);border-color:#3ea6ff;border-color:var(--cs-primary)}.cs-btn-primary{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary) 0,var(--cs-accent) 100%);border:1px solid #ffffff40;border-radius:18px;border-radius:var(--cs-radius);box-shadow:0 8px 24px #3ea6ff59,0 0 24px #7c5cff59;box-shadow:0 8px 24px #3ea6ff59,var(--cs-glow-accent);color:#fff;cursor:pointer;font-size:17px;font-weight:600;padding:16px;transition:filter .15s,box-shadow .15s,transform .1s;width:100%}.cs-btn-primary:hover{filter:brightness(1.08)}.cs-btn-primary:active{box-shadow:0 4px 14px #3ea6ff59;transform:translateY(1px)}.cs-btn-primary:disabled{background:#ffffff0f;border-color:#ffffff24;border-color:var(--cs-glass-border);box-shadow:none;color:#93a3b8;color:var(--cs-text-sub);cursor:not-allowed}.cs-assign-wrapper{display:flex;flex-direction:column;min-height:calc(100vh - 110px)}.cs-floor-tabs{gap:6px;padding:10px 14px}.cs-copy-floor-row,.cs-floor-tabs{background:#ffffff08;border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);display:flex;flex-wrap:wrap}.cs-copy-floor-row{align-items:center;gap:8px;padding:8px 14px}.cs-copy-floor-label{color:#93a3b8;color:var(--cs-text-sub);font-size:12px}.cs-copy-floor-select{background:#fff;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:8px;color:#1a1a1a;color-scheme:light;font-size:13px;padding:5px 8px}.cs-copy-floor-select option{background:#fff;color:#1a1a1a}.cs-copy-floor-btn{background:linear-gradient(135deg,#3ea6ff,#2980b9);background:linear-gradient(135deg,var(--cs-primary),var(--cs-primary-dark));border:none;border-radius:20px;color:#fff;cursor:pointer;font-size:13px;padding:5px 14px;transition:filter .15s}.cs-copy-floor-btn:hover{filter:brightness(1.1)}.cs-copy-floor-btn:disabled{background:#ffffff0f;color:#93a3b8;color:var(--cs-text-sub);cursor:not-allowed}.cs-floor-tab{background:#ffffff0a;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:20px;color:#93a3b8;color:var(--cs-text-sub);cursor:pointer;font-size:13px;padding:6px 16px;transition:background .15s,color .15s,border-color .15s,box-shadow .15s}.cs-floor-tab.active{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary),var(--cs-accent));border-color:#0000;box-shadow:0 0 0 3px #3ea6ff40;box-shadow:var(--cs-glow);color:#fff;font-weight:600}.cs-sticky-controls{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#0f162199;position:-webkit-sticky;position:sticky;top:93px;z-index:10}.cs-palette{background:#0000;border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);padding:10px 14px 8px}.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;box-shadow:0 4px 14px #00000040;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 .12s,border-color .12s,box-shadow .12s;white-space:nowrap}.cs-palette-btn.selected{border-color:#fff;box-shadow:0 0 0 4px #ffffff2e,0 6px 18px #00000059;transform:scale(1.1)}.cs-palette-hint{font-size:11px;margin-top:4px}.cs-palette-add-btn,.cs-palette-hint{color:#93a3b8;color:var(--cs-text-sub)}.cs-palette-add-btn{background:#ffffff08;border:1.5px dashed #ffffff24;border:1.5px dashed var(--cs-glass-border);border-radius:20px;cursor:pointer;flex-shrink:0;font-size:18px;font-weight:700;line-height:1;padding:6px 12px;transition:border-color .1s,color .1s}.cs-palette-add-btn:hover{border-color:#3ea6ff;border-color:var(--cs-primary);color:#3ea6ff;color:var(--cs-primary)}.cs-add-entry-form{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.cs-input-sm{font-size:13px;padding:5px 8px;width:140px}.cs-btn-add-confirm{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary),var(--cs-accent));border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:13px;font-weight:700;padding:5px 12px}.cs-btn-add-confirm:hover{filter:brightness(1.1)}.cs-offset-controls{align-items:center;background:#00000040;border-top:1px solid #ffffff24;border-top:1px solid var(--cs-glass-border);display:flex;gap:4px;padding:4px 8px}.cs-offset-label{color:#93a3b8;color:var(--cs-text-sub);font-size:11px;margin-right:4px;white-space:nowrap}.cs-offset-btn{background:#ffffff0d;border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:6px;color:#eef3f8;color:var(--cs-text);cursor:pointer;font-size:13px;line-height:1.2;padding:3px 8px;transition:background .15s}.cs-offset-btn:hover{background:#ffffff1a}.cs-offset-reset{border-color:#f39c12;border-color:var(--cs-warning);color:#f39c12;color:var(--cs-warning);font-size:11px}.cs-adjust-btn{background:#ffffff0d;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:8px;color:#eef3f8;color:var(--cs-text);cursor:pointer;font-size:13px;font-weight:600;margin-right:8px;padding:5px 12px;transition:background .15s,border-color .15s,color .15s}.cs-adjust-btn.active{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary),var(--cs-accent));border-color:#0000;color:#fff}.cs-offset-hint{color:#3ea6ff;color:var(--cs-primary);font-size:11px;margin-left:4px}.floorplan-container{-webkit-overflow-scrolling:touch;background:#0000;flex:1 1;overflow:auto;padding:16px}.floorplan-container svg{background:#f5f7fa;border-radius:18px;border-radius:var(--cs-radius);box-shadow:0 16px 48px #00000080,0 0 0 1px #ffffff14;box-shadow:var(--cs-shadow-lg),0 0 0 1px #ffffff14}.fp-empty{color:#93a3b8;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{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#0f162199;border-top:1px solid #ffffff24;border-top:1px solid var(--cs-glass-border);padding:12px 16px 8px}.cs-progress-text{color:#93a3b8;color:var(--cs-text-sub);font-size:12px;margin-bottom:6px}.cs-progress-bar{background:#ffffff14;border-radius:3px;height:6px;overflow:hidden;position:relative}.cs-progress-fill{background:linear-gradient(90deg,#3ea6ff,#7c5cff);background:linear-gradient(90deg,var(--cs-primary),var(--cs-accent));border-radius:3px;box-shadow:0 0 10px #3ea6ff99;height:100%;transition:width .3s ease}.cs-footer-actions{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#0f162199;border-top:1px solid #ffffff24;border-top:1px solid var(--cs-glass-border);display:flex;gap:10px;padding:12px 14px calc(12px + env(safe-area-inset-bottom, 0px))}.cs-btn-back{background:#ffffff0d;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:18px;border-radius:var(--cs-radius);color:#eef3f8;color:var(--cs-text);cursor:pointer;font-size:14px;padding:14px 16px;transition:background .15s;white-space:nowrap}.cs-btn-back:hover{background:#ffffff1a}.cs-btn-done{background:linear-gradient(135deg,#2ecc71,#27ae60);background:linear-gradient(135deg,var(--cs-success) 0,#27ae60 100%);border:1px solid #ffffff40;border-radius:18px;border-radius:var(--cs-radius);box-shadow:0 8px 24px #2ecc7166;color:#fff;cursor:pointer;flex:1 1;font-size:16px;font-weight:700;padding:14px;transition:filter .15s,transform .1s}.cs-btn-done:hover{filter:brightness(1.08)}.cs-btn-done:active{transform:translateY(1px)}.cs-btn-done:disabled{background:#ffffff0f;border-color:#ffffff24;border-color:var(--cs-glass-border);box-shadow:none;color:#93a3b8;color:var(--cs-text-sub);cursor:not-allowed}.modal-overlay{align-items:flex-end;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background:#060a108c;display:flex;inset:0;justify-content:center;position:fixed;z-index:100}.modal-content{backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);background:#182130bf;border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-bottom:none;border-radius:24px 24px 0 0;box-shadow:0 16px 48px #00000080;box-shadow:var(--cs-shadow-lg);max-height:85vh;max-width:640px;overflow-y:auto;padding:0 0 env(safe-area-inset-bottom,16px);position:relative;width:100%}.modal-content:before{background:#ffffff40;border-radius:2px;content:"";display:block;height:4px;margin:10px auto 0;width:40px}.modal-content:before,.modal-header{position:-webkit-sticky;position:sticky}.modal-header{align-items:center;background:#0000;border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);display:flex;justify-content:space-between;padding:10px 20px 12px;top:0}.modal-header h3{color:#eef3f8;color:var(--cs-text);font-size:16px;margin:0}.modal-close{align-items:center;background:#ffffff0f;border:none;border-radius:50%;color:#93a3b8;color:var(--cs-text-sub);cursor:pointer;display:flex;font-size:16px;height:30px;justify-content:center;transition:background .15s;width:30px}.modal-close:hover{background:#ffffff1f}.door-section{border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);padding:16px 20px}.door-section label{color:#93a3b8;color:var(--cs-text-sub);display:block;font-size:13px;font-weight:600;margin-bottom:8px}.door-param-hint{color:#3ea6ff;color:var(--cs-primary);font-size:11px;margin-bottom:8px;text-align:center}.door-toggle-row{display:flex;flex-wrap:wrap;gap:12px}.door-toggle-btn{background:#ffffff0a;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:14px;color:#93a3b8;color:var(--cs-text-sub);cursor:pointer;flex:1 1;font-size:15px;font-weight:600;min-width:96px;padding:14px 12px;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.door-toggle-btn.active{background:#3ea6ff2e;background:var(--cs-primary-light);border-color:#3ea6ff;border-color:var(--cs-primary);box-shadow:0 0 0 3px #3ea6ff40;box-shadow:var(--cs-glow);color:#fff}.lock-input{background:#ffffff0d;border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:10px;color:#eef3f8;color:var(--cs-text);font-size:15px;margin-bottom:8px;padding:11px 12px;width:100%}.chip-group{display:flex;flex-wrap:wrap;gap:6px}.lock-chip{background:#ffffff0d;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:20px;color:#eef3f8;color:var(--cs-text);cursor:pointer;font-size:13px;font-weight:600;padding:6px 12px}.lock-chip.active{background:#3ea6ff2e;background:var(--cs-primary-light);border-color:#3ea6ff;border-color:var(--cs-primary);color:#fff}.lock-types-detail{border-bottom:1px solid #ffffff24;border-bottom:1px solid var(--cs-glass-border);padding:10px 20px}.lock-types-detail summary{color:#93a3b8;color:var(--cs-text-sub);cursor:pointer;font-size:12px;padding:4px 0}.lock-cat{margin-top:8px}.lock-cat-label{color:#93a3b8;color:var(--cs-text-sub);display:block;font-size:11px;font-weight:600;margin-bottom:4px}.lock-chip-info{background:#ffffff0d;border-radius:4px;color:#eef3f8;color:var(--cs-text);display:inline-block;font-size:11px;margin:2px;padding:3px 7px}.modal-actions{display:flex;gap:10px;padding:14px 20px}.btn-cancel{background:#ffffff0d;border:1.5px solid #ffffff24;border:1.5px solid var(--cs-glass-border);border-radius:18px;border-radius:var(--cs-radius);color:#eef3f8;color:var(--cs-text);cursor:pointer;flex:1 1;font-size:15px;padding:14px;transition:background .15s}.btn-cancel:hover{background:#ffffff1a}.btn-save{background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary) 0,var(--cs-accent) 100%);border:1px solid #ffffff40;border-radius:18px;border-radius:var(--cs-radius);box-shadow:0 8px 24px #3ea6ff59;color:#fff;cursor:pointer;flex:2 1;font-size:15px;font-weight:600;padding:14px;transition:filter .15s}.btn-save:hover{filter:brightness(1.08)}.cs-complete{margin:0 auto;max-width:640px;padding:40px 20px;text-align:center}.cs-complete-icon{animation:cs-pulse 2.4s ease-in-out infinite;filter:drop-shadow(0 0 24px rgba(46,204,113,.5));font-size:64px;margin-bottom:16px}@keyframes cs-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.cs-complete h2{color:#eef3f8;color:var(--cs-text);font-size:22px;margin:0 0 10px}.cs-complete p{color:#93a3b8;color:var(--cs-text-sub);font-size:14px;line-height:1.6;margin-bottom:20px}.cs-next-steps{background:#ffffff0f;background:var(--cs-glass);border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:18px;border-radius:var(--cs-radius);color:#eef3f8;color:var(--cs-text);margin:0 auto 20px;max-width:520px;padding:16px 20px;text-align:left}.cs-next-steps-title{font-weight:700;margin-bottom:8px}.cs-next-steps ol{font-size:14px;line-height:1.7;margin:0;padding-left:20px}.cs-next-steps li+li{margin-top:6px}.cs-session-box{color:#eef3f8;color:var(--cs-text);font-family:Courier New,monospace;font-size:15px;margin-bottom:16px;text-align:left;word-break:break-all}.cs-complete-stats,.cs-session-box{backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(var(--cs-blur)) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(var(--cs-blur)) saturate(160%);background:#ffffff0f;background:var(--cs-glass);border:1px solid #ffffff24;border:1px solid var(--cs-glass-border);border-radius:18px;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{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#3ea6ff,#7c5cff);background:linear-gradient(135deg,var(--cs-primary),var(--cs-accent));-webkit-background-clip:text;background-clip:text;font-size:28px;font-weight:700}.cs-stat-label{font-size:12px}.cs-error,.cs-loading,.cs-stat-label{color:#93a3b8;color:var(--cs-text-sub)}.cs-error,.cs-loading{align-items:center;background:#0a0f1a;background:var(--cs-bg);display:flex;font-size:16px;justify-content:center;min-height:100vh;padding:20px;text-align:center}.fp-zoom-controls{display:flex;flex-direction:column;gap:6px;position:absolute;right:8px;top:8px;z-index:5}.fp-zoom-controls button{background:#ffffffeb;border:1px solid #c5ccd6;border-radius:8px;box-shadow:0 1px 4px #00000040;color:#333;cursor:pointer;font-size:17px;font-weight:700;height:36px;line-height:1;padding:0;width:36px}.fp-zoom-controls button:hover{background:#fff}.fp-zoom-controls .fp-zoom-reset{font-size:12px}.login-page{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:10px;box-shadow:0 2px 12px #00000014;display:flex;flex-direction:column;max-width:360px;padding:32px;width:100%}.login-card h1{color:#333;font-size:20px;margin:0 0 24px;text-align:center}.login-card label{color:#555;font-size:13px;font-weight:600;margin-bottom:6px}.login-card input{border:1px solid #ddd;border-radius:6px;font-size:15px;margin-bottom:16px;padding:10px 12px}.login-card input:focus{border-color:#4a90d9;outline:none}.login-card button{background:#4a90d9;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;margin-top:8px;padding:11px}.login-card button:disabled{background:#b9cfe6;cursor:not-allowed}.login-error{background:#fdecee;border-radius:6px;color:#a4272c;font-size:13px;margin:0 0 12px;padding:10px 12px}*{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}}