.projects-page{padding:24px;background:#f5f5f5;min-height:100vh}.projects-card{box-shadow:0 2px 8px #00000014;border-radius:12px}.projects-table .ant-table-thead>tr>th{background:#f9fafb;font-weight:600;color:#374151}.projects-table .ant-table-tbody>tr:hover>td{background:#f9fafb}.projects-table .ant-progress{margin:0}@media (max-width: 768px){.projects-page{padding:16px}.projects-table{font-size:14px}.ant-table-cell{padding:12px 8px!important}}.building-matrix-container{padding:20px}.matrix-loading{display:flex;justify-content:center;align-items:center;min-height:400px}.matrix-legend{background:#f5f5f5;padding:15px;border-radius:6px;margin-bottom:20px}.legend-item{display:flex;align-items:center;gap:8px}.legend-color{width:20px;height:20px;border-radius:4px;border:1px solid #ddd}.legend-color.status-completed{background:#c8e6c9}.legend-color.status-in-progress{background:#fff3e0}.legend-color.status-pending{background:#fff}.matrix-table-container{background:#fafafa;padding:20px;border-radius:8px;border:1px solid #e0e0e0;overflow-x:auto;margin-bottom:20px}.building-matrix-table{border-collapse:collapse;width:100%;min-width:600px}.building-matrix-table th,.building-matrix-table td{border:1px solid #e0e0e0;padding:12px;text-align:center;position:relative}.building-matrix-table th{background:#f5f5f5;font-weight:600;font-size:.9em;color:#333;position:sticky;top:0;z-index:10}.floor-header,.floor-cell{background:#e8f5e8!important;font-weight:600;color:#2e7d32;width:80px;position:sticky;left:0;z-index:5}.unit-cell{padding:8px;background:#fff;min-width:100px}.unit-cell.empty{color:#999;background:#f5f5f5}.unit-box{cursor:pointer;transition:all .2s;padding:8px;border-radius:4px;position:relative}.unit-box:hover{transform:scale(1.05);box-shadow:0 2px 8px #00000026;z-index:1}.unit-name{font-weight:600;font-size:.9em;margin-bottom:4px}.unit-progress{font-size:.75em;color:#666}.unit-box.status-completed{background:#c8e6c9;color:#1b5e20}.unit-box.status-in-progress{background:#fff3e0;color:#e65100}.unit-box.status-pending{background:#fff;color:#999;border:1px solid #e0e0e0}.unit-box.my-site{border:2px solid #1890ff;box-shadow:0 0 0 1px #1890ff inset}.my-site-indicator{position:absolute;top:2px;right:2px;color:#1890ff;font-size:12px}.matrix-summary{margin-top:20px;background:#f9fafb}@media (max-width: 768px){.matrix-table-container{padding:10px}.building-matrix-table th,.building-matrix-table td{padding:8px;font-size:.8em}.unit-cell{min-width:80px}.unit-box{padding:6px}}.project-detail-page{padding:24px;background:#f5f5f5;min-height:100vh}.loading-container{display:flex;justify-content:center;align-items:center;min-height:100vh}.stat-card{box-shadow:0 2px 8px #00000014;border-radius:12px;transition:all .3s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.stat-card .ant-statistic-title{color:#666;font-size:14px;display:flex;align-items:center;gap:8px}.stat-card .ant-statistic-content{font-size:28px;font-weight:600}.buildings-summary-card{box-shadow:0 2px 8px #00000014;border-radius:12px}.building-card{background:#f9fafb;border:1px solid #e0e0e0;box-shadow:0 1px 4px #0000000d;transition:all .3s}.building-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.building-card h5{color:#1976d2;margin-bottom:12px}.overview-content{padding:20px}.overview-content h4{color:#333;margin-bottom:20px}.progress-card{text-align:center;padding:20px;border-radius:8px;border:2px solid transparent}.progress-card.completed{background:#f6ffed;border-color:#b7eb8f}.progress-card.in-progress{background:#fff7e6;border-color:#ffd591}.progress-card.not-started{background:#f5f5f5;border-color:#d9d9d9}.progress-card .ant-statistic-title{color:#666;font-size:16px;margin-bottom:8px}.progress-card .ant-statistic-content{font-size:32px;font-weight:700}.ant-tabs-tab{font-size:16px;padding:12px 16px}.ant-tabs-tab-active{font-weight:600}@media (max-width: 768px){.project-detail-page{padding:16px}.stat-card .ant-statistic-content{font-size:24px}.building-card{margin-bottom:16px}.progress-card{padding:16px}.progress-card .ant-statistic-content{font-size:24px}}.progress-update-page{padding:24px;background:#f5f5f5;min-height:100vh}.page-header h2{color:#1976d2;margin:16px 0 8px}.stats-row{margin-bottom:24px}.filter-card{margin-bottom:24px;box-shadow:0 2px 8px #00000014;border-radius:12px}.ant-table-wrapper{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014}.ant-table-thead>tr>th{background:#f9fafb;font-weight:600}.ant-upload-picture-card-wrapper{display:flex;flex-wrap:wrap;gap:8px}.ant-upload.ant-upload-select-picture-card{width:104px;height:104px;margin-right:8px;margin-bottom:8px}.ant-tag{border-radius:4px;padding:4px 12px;font-size:14px}.ant-tag-success{background:#f6ffed;border-color:#b7eb8f;color:#52c41a}@media (max-width: 768px){.progress-update-page{padding:16px}.stats-row .ant-col{margin-bottom:16px}.filter-card .ant-space{flex-wrap:wrap}.ant-select{margin-bottom:8px}}.subcontractors-page{padding:24px;background:#f5f5f5;min-height:100vh}.page-header{margin-bottom:24px;display:flex;justify-content:space-between;align-items:center}.page-header h2{color:#1976d2;margin:0}.subcontractors-card{box-shadow:0 2px 8px #00000014;border-radius:12px}.search-container{margin-bottom:24px}.subcontractors-table .ant-table-thead>tr>th{background:#f9fafb;font-weight:600;color:#374151}.subcontractors-table .ant-table-tbody>tr:hover>td{background:#f9fafb}.subcontractors-table .ant-table-tbody>tr>td{padding:16px}.ant-input-search-large .ant-input-search-button{height:40px}.ant-input-search-large .ant-input{font-size:14px}@media (max-width: 768px){.subcontractors-page{padding:16px}.page-header{flex-direction:column;align-items:flex-start;gap:16px}.search-container{margin-bottom:16px}.search-container .ant-input-search{max-width:100%!important}.subcontractors-table{font-size:14px}.ant-table-cell{padding:12px 8px!important}.subcontractors-table .ant-table-thead>tr>th:first-child,.subcontractors-table .ant-table-tbody>tr>td:first-child{display:none}}.subcontractor-detail-page{padding:24px;background-color:#f0f2f5;min-height:100vh}.info-card{background:linear-gradient(to right,#f0f7ff,#fff)}.statistics-row{margin-bottom:24px}.stat-card{border-radius:8px;box-shadow:0 2px 8px #00000014;transition:all .3s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.stat-card .ant-statistic-title{color:#666;font-size:14px}.stat-card .ant-statistic-content{font-size:24px}.detail-card .ant-tabs-nav{margin-bottom:0}.detail-card .ant-tabs-nav:before{border-bottom:1px solid #f0f0f0}.chart-container{padding:24px 0}.chart-container h4.ant-typography{margin-bottom:24px;color:#333}.efficiency-summary{margin-top:48px;padding-top:24px;border-top:1px solid #f0f0f0}.efficiency-card{background:#fafafa;border:none;text-align:center}.efficiency-card .ant-card-body{padding:16px}.efficiency-detail{margin-top:8px;font-size:12px}.no-data{text-align:center;padding:48px;background:#fafafa;border-radius:4px}.ant-table-cell .anticon{font-size:18px}.ant-progress-line{margin-bottom:0!important}@media (max-width: 768px){.subcontractor-detail-page{padding:16px}.page-header{flex-direction:column;align-items:flex-start;gap:16px}.detail-card,.statistics-row{margin-bottom:16px}.statistics-row .ant-col{margin-bottom:8px}.stat-card .ant-statistic-content{font-size:20px}.ant-descriptions-view{display:block}.ant-descriptions-item{display:block;padding-bottom:16px}.efficiency-summary .ant-col{margin-bottom:16px}}@media (prefers-color-scheme: dark){.subcontractor-detail-page{background-color:#141414}.page-header,.detail-card,.stat-card{background-color:#1f1f1f;color:#fff}.detail-card .ant-card-head{background-color:#262626;border-bottom-color:#303030}.info-card{background:linear-gradient(to right,#1f1f1f,#262626)}}.site-analytics{min-height:100vh;background-color:#f5f5f5;padding:20px}.analytics-header{background:#fff;border-radius:8px;padding:24px;margin-bottom:24px;box-shadow:0 2px 4px #0000001a;display:flex;justify-content:space-between;align-items:center}.analytics-header h1{margin:0;font-size:28px;font-weight:600;color:#333}.header-actions{display:flex;gap:12px}.btn-back{padding:8px 16px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s}.btn-back:hover{background-color:#5a6268}.analytics-tabs{background:#fff;border-radius:8px;padding:0;margin-bottom:24px;box-shadow:0 2px 4px #0000001a;display:flex;overflow-x:auto}.tab{padding:16px 24px;border:none;background:none;cursor:pointer;font-size:16px;color:#666;white-space:nowrap;transition:all .3s;border-bottom:3px solid transparent}.tab:hover{color:#007bff;background-color:#f8f9fa}.tab.active{color:#007bff;border-bottom-color:#007bff;font-weight:500}.analytics-content{background:#fff;border-radius:8px;padding:24px;box-shadow:0 2px 4px #0000001a}.analytics-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;color:#666}.spinner{width:50px;height:50px;border:5px solid #f3f3f3;border-top:5px solid #007bff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:40px}.stat-card{background:#f8f9fa;border-radius:8px;padding:24px;text-align:center;transition:transform .3s,box-shadow .3s}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.stat-card.primary{background:linear-gradient(135deg,#007bff,#0056b3);color:#fff}.stat-card h3{margin:0 0 12px;font-size:16px;font-weight:500;color:inherit}.stat-card .stat-value{font-size:36px;font-weight:600;margin-bottom:8px}.stat-card .stat-detail{display:flex;justify-content:center;gap:20px;font-size:14px;opacity:.8}.stat-detail .active{color:#28a745}.stat-detail .completed{color:#6c757d}.chart-section{margin-bottom:40px}.chart-section h3{margin:0 0 20px;font-size:20px;font-weight:500;color:#333}.chart-container{background:#f8f9fa;border-radius:8px;padding:20px}.location-table,.subcontractor-table{margin-top:30px;overflow-x:auto}.location-table table,.subcontractor-table table{width:100%;border-collapse:collapse;background:#fff}.location-table th,.subcontractor-table th{background:#f8f9fa;padding:12px;text-align:left;font-weight:500;color:#666;border-bottom:2px solid #dee2e6}.location-table td,.subcontractor-table td{padding:12px;border-bottom:1px solid #dee2e6}.location-table tr:hover,.subcontractor-table tr:hover{background:#f8f9fa}.completion-rate{display:flex;align-items:center;gap:10px}.rate-bar{flex:1;height:8px;background:#e9ecef;border-radius:4px;overflow:hidden}.rate-fill{height:100%;background:#28a745;transition:width .3s}.export-section{margin-top:40px;padding-top:40px;border-top:1px solid #dee2e6}.export-section h3{margin:0 0 20px;font-size:20px;font-weight:500;color:#333}.export-buttons{display:flex;gap:12px;flex-wrap:wrap}.btn-export{padding:10px 20px;background-color:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s}.btn-export:hover{background-color:#218838}.completed{color:#28a745;font-weight:500}.in-progress{color:#ffc107;font-weight:500}@media (max-width: 768px){.site-analytics{padding:12px}.analytics-header{flex-direction:column;align-items:flex-start;gap:16px}.analytics-tabs{overflow-x:scroll;-webkit-overflow-scrolling:touch}.tab{padding:12px 16px;font-size:14px}.stats-grid{grid-template-columns:1fr}.stat-card .stat-value{font-size:28px}.export-buttons{flex-direction:column}.btn-export{width:100%}.location-table,.subcontractor-table{overflow-x:scroll;-webkit-overflow-scrolling:touch}.location-table table,.subcontractor-table table{min-width:600px}}.user-management-page{padding:24px;background-color:#f0f2f5;min-height:100vh}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h2{margin:0;color:#1890ff}.users-card{border-radius:8px;box-shadow:0 2px 8px #00000014}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;flex-wrap:wrap;gap:16px}.users-table .ant-table-cell{vertical-align:middle}.users-table .ant-table-row:hover{background-color:#f0f7ff}.users-table .ant-tag{margin:0}.form-actions{margin-bottom:0;text-align:right}@media (max-width: 768px){.user-management-page{padding:16px}.page-header{flex-direction:column;align-items:flex-start;gap:16px}.toolbar{flex-direction:column;align-items:stretch}.toolbar .ant-input-search{width:100%!important}.users-table .ant-table-cell{padding:8px}.users-table .ant-space-vertical{gap:4px!important}}.batch-operations{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.batch-operations .ant-typography{color:#666;font-size:14px}.ant-tag.ant-tag-success{background-color:#f6ffed;border-color:#b7eb8f;color:#52c41a}.ant-tag.ant-tag-error{background-color:#fff2e8;border-color:#ffbb96;color:#fa541c}.ant-modal-body .ant-form-item:last-child{margin-bottom:0}.ant-modal-body .ant-form-vertical .ant-form-item-label{font-weight:500}.users-table .ant-btn-link{padding:4px 8px}.users-table .ant-btn-link:hover{background-color:#f0f0f0;border-radius:4px}.ant-empty{margin:48px 0}.ant-spin-container{min-height:300px}.ant-pagination{margin-top:24px;text-align:right}.ant-table-selection-column{width:60px}.anticon{margin-right:4px}.anticon-phone{color:#52c41a}.anticon-mail{color:#1890ff}.anticon-team{color:#722ed1}.user-name-link{color:#1890ff;font-weight:500;cursor:pointer;transition:color .3s}.user-name-link:hover{color:#40a9ff;text-decoration:underline}.user-detail-page{padding:24px;background-color:#f0f2f5;min-height:100vh}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;background:#fff;padding:16px 24px;border-radius:8px;box-shadow:0 2px 8px #00000014}.detail-card{margin-bottom:24px;border-radius:8px;box-shadow:0 2px 8px #00000014}.detail-card .ant-card-head{background-color:#fafafa;border-bottom:1px solid #f0f0f0}.detail-card .ant-descriptions-item-label{font-weight:500;color:#666}.detail-card .ant-descriptions-item-content{color:#333}.loading-container{display:flex;justify-content:center;align-items:center;min-height:400px}.detail-card .ant-table-thead>tr>th{background-color:#fafafa;font-weight:600}.detail-card .ant-table-tbody>tr:hover>td{background-color:#f0f7ff}@media (max-width: 768px){.user-detail-page{padding:16px}.page-header{flex-direction:column;align-items:flex-start;gap:16px}.detail-card{margin-bottom:16px}.ant-descriptions-view{display:block}.ant-descriptions-item{display:block;padding-bottom:16px}}.opportunities-page{padding:24px}.page-header{margin-bottom:24px}.page-header h2{margin-bottom:8px}.opportunities-card{background:#fff;border-radius:8px;box-shadow:0 1px 2px #00000008}.opportunities-card .ant-table-thead>tr>th{background:#fafafa;font-weight:600}.opportunities-card .ant-table-tbody>tr:hover>td{background:#f5f5f5}.ant-transfer-list{border:1px solid #d9d9d9;border-radius:4px}.ant-transfer-list-header{background:#fafafa;border-bottom:1px solid #d9d9d9}.ant-transfer-list-content-item{padding:8px 12px}.ant-transfer-list-content-item:hover{background:#f5f5f5}@media (max-width: 768px){.opportunities-page{padding:16px}.page-header{margin-bottom:16px}.page-header h2{font-size:20px}.opportunities-card{overflow-x:auto}.ant-table{min-width:800px}.ant-modal{max-width:calc(100vw - 32px)}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100%}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.ant-layout{min-height:100vh}.text-center{text-align:center}.mt-1{margin-top:8px}.mt-2{margin-top:16px}.mt-3{margin-top:24px}.mt-4{margin-top:32px}.mb-1{margin-bottom:8px}.mb-2{margin-bottom:16px}.mb-3{margin-bottom:24px}.mb-4{margin-bottom:32px}
