body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;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}*{box-sizing:border-box}#root,body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;padding:0}.app,body{background:#f9f9f9}.app{margin:0 auto;max-width:1400px;min-height:100vh;padding:2rem}.error-banner{background:#ffebee;border:1px solid #ef5350;border-left:4px solid #d32f2f;border-radius:4px;color:#c62828;font-weight:500;margin-bottom:2rem;padding:1rem 1.5rem}.app-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem}.app-header nav{display:flex;gap:12px}.app-header nav button{background:#0000;border:none;border-radius:4px;cursor:pointer;padding:8px 12px}.app-header nav button.nav-active{background:#2c5aa0;color:#fff}.auth-controls{align-items:center;color:#374151;display:flex;font-size:.9rem;gap:.75rem}.auth-controls button{background:#fff;border:1px solid #d1d5db;border-radius:999px;cursor:pointer;padding:.4rem .9rem}.auth-controls button:hover{background:#f3f4f6}.app-loading{align-items:center;color:#4b5563;display:flex;font-size:1.1rem;justify-content:center;min-height:100vh}.btn-primary:hover:not(:disabled){box-shadow:0 2px 8px #2c5aa04d}@media (max-width:768px){.app{padding:1rem}}.project-form-modal{align-items:center;background:#00000073;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:1000}.project-form-panel{background:#fff;border-radius:12px;box-shadow:0 20px 50px #0f172a33;max-height:95vh;max-width:620px;overflow-y:auto;padding:1.5rem;width:100%}.project-form-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.project-form-header h2{font-size:1.35rem;margin:0}.close-button{background:#0000;border:none;cursor:pointer;font-size:1.5rem}.project-form{gap:1rem}.project-form,.project-form label{display:flex;flex-direction:column}.project-form label{color:#0f172a;font-size:.9rem;font-weight:600}.project-form input,.project-form select,.project-form textarea{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;margin-top:.35rem;padding:.55rem .6rem}.project-form textarea{resize:vertical}.project-form-row{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.form-actions{gap:.75rem;justify-content:flex-end}.btn-secondary{background:#e2e8f0;color:#1e293b}.btn-primary,.btn-secondary{border:none;border-radius:6px;cursor:pointer;padding:.55rem 1rem}.btn-primary{background:#2563eb}.btn-primary:disabled,.btn-secondary:disabled{cursor:not-allowed;opacity:.65}.field-error{color:#b91c1c;font-size:.8rem;font-weight:500;margin-top:.2rem}.form-error-banner{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;color:#991b1b;margin-bottom:1rem;padding:.6rem .8rem}.projects-list{width:100%}.list-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:2rem;padding-bottom:1.5rem}.list-header h1{color:#333;font-size:2rem;margin:0}.list-header .subtitle{color:#666;font-size:.95rem;margin:.5rem 0 0}.list-header div{flex:1 1}.form-container{background:#f5f5f5;border:1px solid #ddd;border-radius:8px;margin-bottom:2rem;padding:2rem}.form-container h2{color:#333;margin-bottom:1.5rem;margin-top:0}.form-row{margin-bottom:1rem}.form-row input,.form-row select{border:1px solid #ccc;border-radius:4px;font-size:1rem;padding:.75rem}.filters{align-items:center;display:flex;gap:1rem;margin-bottom:1.5rem}.filter-group{flex:1 1}.filter-group select,.search-input{border:1px solid #ccc;border-radius:4px;font-size:1rem;padding:.75rem;width:100%}.projects-table-wrapper{border:1px solid #ddd;border-radius:8px;overflow-x:auto}.projects-table{background:#fff;border-collapse:collapse;width:100%}.projects-table thead{background:#f5f5f5;border-bottom:2px solid #ddd}.projects-table th{color:#333;font-weight:600;padding:1rem;text-align:left}.projects-table td{border-bottom:1px solid #eee;padding:1rem}.projects-table tbody tr:hover{background:#f9f9f9}.projects-table .project-name{color:#2c5aa0;font-weight:600}.projects-table .budget{font-weight:500;text-align:right}.status-badge{border-radius:20px;display:inline-block;font-size:.85rem;font-weight:600;padding:.4rem .8rem;white-space:nowrap}.status-badge.status-Planning{background:#e3f2fd;color:#1976d2}.status-badge.status-Design{background:#f3e5f5;color:#7b1fa2}.status-badge.status-Bidding{background:#fff3e0;color:#e65100}.status-badge.status-Under\ Construction{background:#e8f5e9;color:#2e7d32}.status-badge.status-Complete{background:#ede9fe;color:#5b21b6}.actions{text-align:center}.actions-group{display:flex;gap:.75rem;justify-content:center}.btn-link-danger{color:#b91c1c}.btn-link-danger:hover{color:#7f1d1d}.empty-state,.loading{color:#666;font-size:1.1rem;padding:2rem;text-align:center}.toast{border-radius:8px;box-shadow:0 10px 20px #0f172a33;color:#fff;font-weight:600;padding:.85rem 1.2rem;position:fixed;right:1.5rem;top:1.5rem;z-index:1100}.toast-success{background:#16a34a}.toast-error{background:#dc2626}.project-detail{width:100%}.detail-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;gap:1.5rem;margin-bottom:2rem;padding-bottom:1.5rem}.detail-header h1{color:#333;flex:1 1;font-size:2rem;margin:0}.btn-back{background:#f5f5f5;border:1px solid #ccc;border-radius:4px;color:#333;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background .2s;.file-upload-panel{grid-template-columns:1fr}}.btn-back:hover{background:#e0e0e0}.header-actions{display:flex;gap:1rem}.detail-content{display:flex;flex-direction:column;gap:1.5rem}@media (max-width:1024px){.detail-content{gap:1.25rem}}.edit-form{background:#f5f5f5;border:1px solid #ddd;border-radius:8px;padding:2rem}.edit-form h2{color:#333;margin-bottom:1.5rem;margin-top:0}.form-section{display:flex;flex-direction:column;gap:1rem}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.form-group{display:flex;flex-direction:column}.form-group label{color:#333;font-size:.95rem;font-weight:600;margin-bottom:.5rem}.form-group input,.form-group select,.form-group textarea{border:1px solid #ccc;border-radius:4px;font-family:inherit;font-size:1rem;padding:.75rem}.form-group textarea{resize:vertical}.form-group.full-width{grid-column:1/-1}.form-actions{display:flex;gap:1rem;margin-top:1.5rem}.project-info{background:#fff;border:1px solid #ddd;border-radius:8px;padding:2rem}.info-section h2{color:#333;margin-bottom:1.5rem;margin-top:0}.info-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}.info-item{display:flex;flex-direction:column}.info-item.full-width{grid-column:1/-1}.info-item label{color:#666;font-size:.85rem;font-weight:600;margin-bottom:.5rem;text-transform:uppercase}.info-item p{color:#333;font-size:1.05rem;margin:0}.tasks-section{background:#fff;border:1px solid #ddd;border-radius:8px;grid-column:1/-1;padding:2rem}.change-orders-tab,.project-rfis-section{background:#fff;border:1px solid #ddd;border-radius:8px;grid-column:1/-1;padding:1.5rem}.tasks-section h2{color:#333;margin-bottom:1.5rem;margin-top:0}.tasks-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.tasks-header-actions{align-items:center;display:flex;gap:.75rem}.task-toast{background:#2563eb;border-radius:999px;color:#fff;font-size:.85rem;font-weight:600;padding:.25rem .85rem}.add-task-form{background:#f5f5f5;border:1px solid #ddd;border-radius:8px;margin-bottom:2rem;padding:1.5rem}.add-task-form h3{color:#333;margin-bottom:1rem;margin-top:0}.add-task-form form{display:flex;flex-direction:column;gap:1rem}.add-task-form input,.add-task-form textarea{border:1px solid #ccc;border-radius:4px;font-family:inherit;font-size:1rem;padding:.75rem}.task-form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1.5fr 1fr 1fr}@media (max-width:768px){.task-form-row{grid-template-columns:1fr}}.task-filters{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:1.5rem}.task-filters .filter-field{display:flex;flex-direction:column}.task-filters label{color:#475569;font-size:.78rem;font-weight:600;letter-spacing:.04em;margin-bottom:.35rem;text-transform:uppercase}.task-filters input,.task-filters select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;padding:.6rem .7rem}.task-filters .filter-actions{align-items:flex-end;display:flex;gap:.8rem}.tasks-list{display:flex;flex-direction:column;gap:1rem}.tasks-table-wrapper{overflow-x:auto}.tasks-table{border-collapse:collapse;width:100%}.tasks-table td,.tasks-table th{border-bottom:1px solid #e0e0e0;padding:.75rem;text-align:left}.tasks-table th{background:#f8fafc;color:#0f172a;font-size:.9rem;font-weight:600}.task-title strong{color:#111;display:block}.task-title p{color:#555;font-size:.9rem;margin:.35rem 0 0}.task-actions-cell{white-space:nowrap;width:120px}.task-item{align-items:flex-start;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:6px;display:flex;gap:1rem;justify-content:space-between;padding:1.5rem;transition:background .2s}.task-item:hover{background:#f0f0f0}.task-info{flex:1 1}.task-info h4{color:#333;font-size:1.1rem;margin:0 0 .75rem}.task-meta{display:flex;flex-wrap:wrap;font-size:.9rem;gap:1rem;margin-bottom:.75rem}.task-status{border-radius:4px;display:inline-block;font-size:.85rem;font-weight:600;padding:.3rem .6rem}.task-status.Not\ Started{background:#ffebee;color:#c62828}.task-status.In\ Progress{background:#e3f2fd;color:#1565c0}.task-status.Blocked{background:#fff4e5;color:#c2410c}.task-status.Complete,.task-status.Done{background:#e8f5e9;color:#2e7d32}.task-assigned,.task-due{color:#666;font-size:.9rem}.task-description{color:#555;font-size:.95rem;margin:.75rem 0 0}.task-actions{align-items:flex-end;display:flex;flex-direction:column;gap:.75rem}.task-edit{grid-gap:1rem;align-items:end;background:#f0f8ff;border:2px solid #2c5aa0;border-radius:6px;display:grid;gap:1rem;grid-template-columns:2fr 1fr 1.5fr 1.5fr auto;padding:1.5rem}@media (max-width:768px){.task-edit{grid-template-columns:1fr}}.task-edit input,.task-edit select{border:1px solid #ccc;border-radius:4px;font-size:1rem;padding:.75rem}.task-modal-overlay{align-items:center;background:#0f172a8c;display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:999}.task-modal{background:#fff;border-radius:10px;box-shadow:0 30px 60px #0f172a59;max-width:500px;padding:1.5rem;width:100%}.task-modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.task-modal-form{display:flex;flex-direction:column;gap:.85rem}.task-modal-form input,.task-modal-form select,.task-modal-form textarea{border:1px solid #cbd5f5;border-radius:6px;font-size:1rem;padding:.7rem .85rem;width:100%}.task-modal-row{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.modal-actions{display:flex;gap:.75rem;justify-content:flex-end}.btn-danger,.btn-primary,.btn-secondary{border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:all .2s}.btn-primary{background:#2c5aa0;color:#fff}.btn-primary:hover:not(:disabled){background:#1e4070}.btn-primary:disabled{cursor:not-allowed;opacity:.7}.btn-secondary{background:#f5f5f5;border:1px solid #ccc;color:#333}.btn-secondary:hover{background:#e0e0e0}.btn-danger{background:#d32f2f;color:#fff}.btn-danger:hover{background:#b71c1c}.btn-link{color:#2c5aa0;cursor:pointer;font-size:.9rem;padding:0;text-decoration:none}.btn-link:hover{text-decoration:underline}.btn-link.btn-danger{color:#d32f2f}.empty-state{color:#999;font-style:italic;padding:2rem;text-align:center}.error-message{background:#ffebee;border:1px solid #ef5350;border-radius:4px;color:#c62828;margin-bottom:1rem;padding:1rem}.project-tabs{display:flex;gap:8px;margin-bottom:16px}.project-tabs .tab{background:#f5f5f5;border:1px solid #0000;border-radius:6px;cursor:pointer;padding:8px 12px}.project-tabs .tab.active{background:#2c5aa0;color:#fff}.costs-section,.dailylogs-section,.files-section,.photos-section,.purchase-orders-section,.schedule-section,.subs-section{background:#fff;border:1px solid #ddd;border-radius:8px;grid-column:1/-1;padding:16px}.photo-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.photo-card{background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;flex-direction:column;overflow:hidden}.photo-thumb,.photo-thumb-link{display:block;width:100%}.photo-thumb{background:#f1f5f9;height:160px;object-fit:cover}.photo-thumb.placeholder{align-items:center;background:#f8fafc;color:#64748b;display:flex;height:160px;justify-content:center}.photo-meta{display:flex;flex-direction:column;gap:.5rem;padding:.75rem}.photo-name{color:#0f172a;font-weight:600;line-height:1.3}.photo-actions{display:flex;flex-wrap:wrap;gap:.5rem}.schedule-filters{align-items:flex-end;display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.schedule-filter-field{display:flex;flex-direction:column;min-width:140px}.schedule-filter-field label{color:#475569;font-size:.78rem;font-weight:600;letter-spacing:.04em;margin-bottom:.3rem;text-transform:uppercase}.schedule-filter-field input,.schedule-filter-field select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;padding:.5rem .55rem}.schedule-filter-actions{margin-left:auto}.schedule-filter-actions .btn-link{font-size:.85rem}.project-schedule{margin-top:.5rem}.schedule-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.schedule-group-header{border-top:1px solid #e2e8f0;list-style:none;margin:0;padding:.35rem 0 0}.schedule-group-toggle{align-items:center;background:none;border:none;color:#64748b;cursor:pointer;display:flex;font-size:.78rem;font-weight:600;gap:.5rem;justify-content:space-between;letter-spacing:.08em;padding:.35rem 0;text-align:left;text-transform:uppercase;width:100%}.schedule-group-toggle:focus-visible{outline:2px solid #0b5fff;outline-offset:2px}.schedule-group-chevron{font-size:1rem;transition:transform .2s ease}.schedule-group-chevron.open{transform:rotate(180deg)}.project-home{background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;padding:1.25rem}.project-home-summary{align-items:flex-start;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between}.project-home-summary h2{font-size:1.4rem;margin:0}.project-home-summary-meta{align-items:center;color:#475569;display:flex;flex-wrap:wrap;font-size:.95rem;gap:.75rem}.project-home-label{color:#94a3b8;font-size:.75rem;font-weight:600;letter-spacing:.08em;margin:0 0 .2rem;text-transform:uppercase}.project-home-stats{grid-gap:.85rem;display:grid;gap:.85rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.project-home-stat{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;padding:.65rem .75rem}.project-home-stat strong{color:#0f172a;display:block;font-size:1rem}.project-home-today{background:#fdfdfd;border:1px solid #f1f5f9;border-radius:8px;padding:.75rem .85rem}.project-home-today-header{align-items:center;color:#0f172a;display:flex;font-weight:600;justify-content:space-between;margin-bottom:.4rem}.project-home-today-row{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.project-home-today-row>div{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:.65rem .75rem}.project-home-badge{align-items:center;border-radius:999px;display:inline-flex;font-size:.8rem;font-weight:600;justify-content:center;letter-spacing:.05em;padding:.08rem .65rem;text-transform:uppercase}.project-home-badge.badge-positive{background:#dcfce7;color:#166534}.project-home-badge.badge-warning{background:#fee2e2;color:#b91c1c}.project-home-next7{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;padding:.75rem .85rem}.project-home-next7-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.4rem}.project-home-loading{color:#64748b;font-size:.85rem}.project-home-next7-list{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.project-home-next7-list li{display:flex;gap:.75rem}.project-home-next7-date{color:#0f172a;font-weight:600;width:110px}.project-home-next7-body{border-left:2px solid #e2e8f0;display:flex;flex:1 1;flex-direction:column;gap:.2rem;padding-left:.75rem}.project-home-next7-type{color:#2563eb;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.project-home-next7-meta{color:#475569;font-size:.85rem}.project-home-next7-empty{color:#64748b;font-size:.9rem;margin:0}.project-home-upcoming{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;padding:.75rem .85rem}.project-home-upcoming-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.5rem}.project-home-upcoming-count{color:#475569;font-size:.85rem}.project-home-upcoming ul{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.project-home-upcoming li{display:flex;gap:.75rem}.project-home-upcoming-date{color:#0f172a;font-weight:600;width:90px}.project-home-upcoming-body{border-left:2px solid #e2e8f0;flex:1 1;padding-left:.75rem}.project-home-upcoming-type{color:#2563eb;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.project-home-upcoming-body p{color:#1f2937;margin:.2rem 0 0}.project-home-activity{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;padding:.75rem .85rem}.project-home-activity-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.5rem}.project-home-activity-count{color:#475569;font-size:.85rem}.project-home-activity ul{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.project-home-activity li{display:flex;gap:.75rem}.project-home-activity-date{color:#0f172a;font-weight:600;width:110px}.project-home-activity-body{border-left:2px solid #e2e8f0;display:flex;flex:1 1;flex-direction:column;gap:.25rem;padding-left:.75rem}.project-home-activity-type{color:#0ea5e9;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.project-home-activity-meta{color:#475569;font-size:.85rem}.project-schedule-groups{display:flex;flex-direction:column;gap:1rem}.project-schedule-group{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:.85rem 1rem}.project-schedule-date{align-items:center;color:#0f172a;display:flex;font-weight:600;gap:.5rem;margin-bottom:.5rem}.badge-overdue{background:#fee2e2;border-radius:999px;color:#b91c1c;font-size:.75rem;font-weight:600;padding:.1rem .5rem}.project-schedule-items{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.project-schedule-item{grid-gap:.85rem;align-items:flex-start;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;display:grid;gap:.85rem;grid-template-columns:1fr auto;padding:.65rem .75rem}.project-schedule-item-content{display:flex;flex-direction:column;gap:.4rem}.project-schedule-item-header{align-items:center;display:flex;gap:.6rem}.project-schedule-status{align-items:center;border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:600;justify-content:center;padding:.2rem .55rem;text-transform:capitalize}.project-schedule-status--complete{background:#e0f2f1;color:#00695c}.project-schedule-status--progress{background:#e0f2fe;color:#1d4ed8}.project-schedule-status--blocked{background:#fef3c7;color:#b45309}.project-schedule-status--default{background:#e2e8f0;color:#475569}.project-schedule-item-meta{color:#475569;display:flex;flex-wrap:wrap;font-size:.85rem;gap:.75rem;margin-top:.35rem}.project-schedule-item-notes{color:#1f2937;font-size:.9rem;margin:.4rem 0 0}.project-schedule-timeline{align-self:center;background:#cbd5f5;border-radius:999px;height:6px;margin-top:.35rem;width:80px}.project-schedule-timeline--overdue{background:#ef4444}.project-schedule-timeline--today{background:#2563eb}.project-schedule-timeline--soon{background:#f97316}.project-schedule-timeline--later{background:#cbd5f5}.project-schedule-timeline--none{background:#e2e8f0}.dailylogs-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:12px}.daily-log-error{background:#fff5f5;border:1px solid #fecaca;border-radius:6px;color:#b91c1c;font-size:.9rem;margin-bottom:12px;padding:.5rem .75rem}.daily-log-form{margin-bottom:16px}.daily-log-form,.daily-log-form-grid{display:flex;flex-direction:column;gap:.75rem}.daily-log-row{display:flex;gap:.75rem;width:100%}.daily-log-row input,.daily-log-row textarea{border:1px solid #cbd5f5;border-radius:6px;flex:1 1;font-family:inherit;font-size:.95rem;padding:.5rem .6rem}.daily-log-row textarea{min-height:70px;resize:vertical}.daily-log-row--compact{grid-gap:.65rem;display:grid;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.daily-log-row--split input,.daily-log-row--split textarea{flex:1 1}.daily-log-advanced-toggle-row{display:flex;justify-content:flex-end}.daily-log-advanced-toggle{background:none;border:none;color:#2563eb;cursor:pointer;font-size:.9rem;font-weight:600;padding:0}.daily-log-advanced-toggle:hover{text-decoration:underline}.daily-log-advanced{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:flex;flex-direction:column;gap:.75rem;padding:.75rem}.daily-log-advanced-grid{grid-gap:.65rem;display:grid;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.daily-log-advanced-grid input{border:1px solid #cbd5f5;border-radius:6px;font-family:inherit;font-size:.95rem;padding:.5rem .6rem}.daily-log-advanced-textareas{grid-gap:.65rem;display:grid;gap:.65rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.daily-log-advanced-textareas textarea{border:1px solid #cbd5f5;border-radius:6px;font-family:inherit;font-size:.95rem;min-height:70px;padding:.5rem .6rem;resize:vertical}.logs-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.log-row{border-bottom:1px solid #f1f5f9;padding-bottom:.75rem}.log-row:last-child{border-bottom:none}.log-item-meta{color:#0f172a;display:flex;flex-wrap:wrap;font-weight:600;gap:.35rem}.log-crew,.log-weather{color:#475569}.log-crew{font-size:.9rem}.log-work{color:#1f2937;font-weight:500;margin-top:4px}.log-detail{color:#475569;font-size:.9rem;margin-top:4px}.log-detail-muted{color:#64748b}.log-detail span{font-weight:600;margin-right:4px}.log-alert{color:#b45309}.daily-log-attachments{background:#fff;border:1px solid #e2e8f0;border-radius:6px;margin-top:.5rem;padding:.5rem .75rem}.daily-log-attachments-header{align-items:center;display:flex;gap:.5rem;justify-content:space-between}.daily-log-attachments-toggle{color:#2563eb;font-weight:600;padding:0}.daily-log-attachments-upload{color:#2563eb;cursor:pointer;font-size:.85rem;font-weight:600;overflow:hidden;position:relative}.daily-log-attachments-upload input{cursor:pointer;height:100%;inset:0;opacity:0;position:absolute;width:100%}.daily-log-attachments-error{color:#b91c1c;font-size:.85rem;margin-top:.4rem}.daily-log-attachments-body{margin-top:.5rem}.daily-log-attachments-empty{color:#64748b;font-size:.85rem;margin:0}.daily-log-attachments-list{display:flex;flex-direction:column;gap:.35rem;list-style:none;margin:0;padding:0}.daily-log-attachment{border:1px solid #e2e8f0;border-radius:6px;display:flex;gap:.75rem;justify-content:space-between;padding:.4rem .6rem}.daily-log-attachment-info{color:#475569;display:flex;flex-direction:column;font-size:.85rem;gap:.15rem}.daily-log-attachment-info strong{color:#111;font-size:.92rem}.daily-log-attachment-actions{align-items:center;display:flex;gap:.5rem}.log-actions{display:flex;gap:.75rem;margin-top:8px}.log-edit-grid{background:#f8fafc;border-radius:8px;display:flex;flex-direction:column;gap:.75rem;padding:.5rem}.log-edit-actions{gap:.5rem;justify-content:flex-start}.files-list{list-style:none;margin:0;padding:0}.files-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:16px}.files-header-actions{display:flex;gap:.75rem}.file-toast{align-items:center;background:#e0f2fe;border-radius:999px;color:#0369a1;display:inline-flex;font-size:.85rem;font-weight:600;margin-top:4px;padding:.2rem .75rem}.file-upload-panel{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:minmax(220px,1fr) minmax(280px,1fr);margin-bottom:1rem}.file-dropzone{background:#f8fafc;border:2px dashed #94a3b8;border-radius:8px;color:#475569;cursor:pointer;padding:1.25rem;text-align:center;transition:border-color .2s,background .2s}.file-dropzone strong{color:#0f172a;display:block;margin-bottom:.35rem}.file-dropzone.active{background:#e0ecff;border-color:#2563eb}.file-upload-form{display:flex;flex-direction:column;gap:.75rem}.file-upload-form label{color:#475569;display:flex;flex-direction:column;font-size:.9rem;font-weight:600;gap:.4rem}.file-upload-form input,.file-upload-form select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;padding:.5rem .6rem}.file-upload-form .form-row{display:flex;gap:.75rem}.file-upload-form .form-row label{flex:1 1}.file-upload-actions{align-items:center;display:flex;gap:.75rem}.upload-progress{color:#2563eb;font-weight:600}.file-queue{background:#fdfdfd;border:1px solid #e2e8f0;border-radius:8px;margin-bottom:1rem;padding:.75rem 1rem}.file-queue-header{align-items:center;color:#475569;display:flex;justify-content:space-between;margin-bottom:.5rem}.file-queue ul{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.queue-file-info{align-items:center;display:flex;gap:1rem;justify-content:space-between}.queue-file-info strong{display:block}.files-filters{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:1rem}.files-filters .filter-field{display:flex;flex-direction:column}.files-filters label{color:#475569;font-size:.78rem;font-weight:600;letter-spacing:.04em;margin-bottom:.35rem;text-transform:uppercase}.files-filters input,.files-filters select{border:1px solid #cbd5f5;border-radius:6px;padding:.55rem .6rem}.files-filters .filter-actions{align-items:flex-end;display:flex;gap:.75rem}.files-table-wrapper{overflow-x:auto}.files-table{border-collapse:collapse;width:100%}.files-table td,.files-table th{border-bottom:1px solid #e0e0e0;padding:10px;text-align:left;vertical-align:top}.files-table th{background:#f8fafc;color:#0f172a;font-weight:600}.file-name{align-items:flex-start;display:flex;gap:.75rem}.file-thumb{border:1px solid #e2e8f0;border-radius:6px;height:48px;object-fit:cover;width:48px}.file-thumb.placeholder{align-items:center;background:#f1f5f9;color:#475569;display:flex;font-size:.7rem;justify-content:center;letter-spacing:.08em}.file-detail{color:#475569;font-size:.85rem}.file-actions{display:flex;flex-direction:column;gap:.3rem;min-width:120px}.badge{background:#e0e7ff;border-radius:999px;color:#3730a3;display:inline-block;font-size:.75rem;font-weight:600;margin-top:.25rem;padding:.1rem .45rem}.subtle{color:#94a3b8;display:block;font-size:.85rem}.files-pagination{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-top:.75rem}.files-pagination span{color:#475569}.costs-header{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:12px}.costs-header h2{margin:0}.budget-export-error{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:space-between}.cost-summary-card{background:#f9f9f9;border:1px solid #eee;border-radius:6px;margin-bottom:12px;padding:12px}.cost-remaining{align-items:center;display:flex;gap:.4rem}.cost-remaining-warning{color:#b91c1c}.cost-warning-pill{align-items:center;background:#fee2e2;border-radius:999px;color:#b91c1c;display:inline-flex;font-size:.75rem;font-weight:600;justify-content:center;padding:.05rem .5rem}.cost-breakdown{background:#fdfdfd;border:1px solid #eee;border-radius:6px;margin-bottom:16px;padding:12px}.cost-breakdown ul{display:flex;flex-direction:column;gap:.35rem;list-style:none;margin:0;padding:0}.breakdown-row{align-items:flex-start;border-bottom:1px solid #f1f5f9;display:flex;gap:.75rem;justify-content:space-between;padding:.4rem 0}.breakdown-row:last-child{border-bottom:none}.breakdown-row-value{align-items:center;display:flex;gap:.4rem}.cost-breakdown-percent{color:#64748b;display:block;font-size:.8rem}.costs-filter-bar{display:flex;justify-content:flex-end;margin-bottom:.75rem}.costs-filter{color:#475569;display:flex;flex-direction:column;font-size:.8rem;font-weight:600}.costs-filter select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;margin-top:.25rem;min-width:180px;padding:.45rem .5rem}.add-cost-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.add-cost-form input{border:1px solid #ccc;border-radius:4px;padding:8px}.costs-table{border-collapse:collapse;width:100%}.costs-table td,.costs-table th{border-bottom:1px solid #eee;padding:8px;text-align:left}.po-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:12px}.po-form{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:16px}.po-form input,.po-form select,.po-form textarea{border:1px solid #cbd5f5;border-radius:6px;font-family:inherit;font-size:.95rem;padding:.6rem .7rem}.po-form textarea{grid-column:1/-1;min-height:60px}.po-form button{justify-self:flex-start;margin-top:.25rem}.po-table-wrapper{overflow-x:auto}.po-table{border-collapse:collapse;width:100%}.po-table td,.po-table th{border-bottom:1px solid #e5e7eb;padding:10px;text-align:left;vertical-align:top}.po-table input,.po-table select,.po-table textarea{border:1px solid #cbd5f5;border-radius:6px;font-size:.9rem;padding:.45rem .5rem;width:100%}.po-table textarea{min-height:60px}.po-vendor-cell strong{display:block;margin-bottom:.25rem}.po-vendor-cell p{color:#475569;font-size:.9rem;margin:0}.po-status-badge{background:#eef2ff;border-radius:999px;color:#3730a3;display:inline-flex;font-size:.8rem;font-weight:600;padding:.1rem .55rem}.po-row-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.po-files-row td{background:#f8fafc;border-bottom:1px solid #e5e7eb}.po-files-panel{display:flex;flex-direction:column;gap:.75rem}.po-files-panel-header{align-items:center;display:flex;justify-content:space-between}.po-files-panel-actions{display:flex;gap:.5rem}.po-files-error{background:#fff5f5;border:1px solid #fecaca;border-radius:6px;color:#b91c1c;font-size:.9rem;padding:.5rem .75rem}.po-files-helper{color:#64748b;font-size:.85rem}.po-files-list{display:flex;flex-direction:column;gap:.5rem;list-style:none;margin:0;padding:0}.po-file-item{border-bottom:1px solid #e5e7eb;display:flex;gap:1rem;justify-content:space-between;padding:.35rem 0}.po-file-item:last-child{border-bottom:none}.po-file-meta{color:#475569;display:flex;flex-wrap:wrap;font-size:.85rem;gap:.4rem;margin-top:.25rem}.po-file-actions{display:flex;flex-shrink:0;gap:.5rem}.po-file-upload{grid-gap:.75rem;align-items:flex-end;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.po-file-upload label{color:#475569;display:flex;flex-direction:column;font-size:.85rem;font-weight:600;gap:.35rem}.po-file-upload input[type=text],.po-file-upload select{border:1px solid #cbd5f5;border-radius:6px;font-size:.9rem;padding:.45rem .5rem}.po-file-upload input[type=file]{padding:.25rem 0}.reports-section{background:#fff;border:1px solid #ddd;border-radius:8px;grid-column:1/-1;margin-top:16px;padding:16px}.reports-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.report-toast{background:#2563eb;border-radius:999px;color:#fff;font-size:.85rem;font-weight:600;padding:4px 12px}.reports-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.reports-filters label{color:#475569;display:block;font-size:.8rem;margin-bottom:4px;text-transform:uppercase}.reports-filters input{border:1px solid #cbd5f5;border-radius:6px;padding:6px 8px}.reports-filters .filter-actions{align-items:flex-end;display:flex;gap:8px}.report-form{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin-bottom:16px}.report-form input,.report-form textarea{border:1px solid #cbd5f5;border-radius:6px;padding:8px}.reports-table-wrapper{overflow-x:auto}.reports-table{border-collapse:collapse;width:100%}.reports-table td,.reports-table th{border-bottom:1px solid #e2e8f0;padding:10px;text-align:left}.reports-table th{background:#f8fafc;color:#0f172a;font-weight:600}.reports-table td input,.reports-table td textarea{border:1px solid #cbd5f5;border-radius:4px;padding:6px;width:100%}.reports-table .actions-group{display:flex;flex-wrap:wrap;gap:8px}.change-orders-section{margin-top:24px}.change-orders-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.change-orders-header h2{margin:0}.change-orders-subtitle{color:#555;font-size:.9rem;margin:4px 0 0}.change-orders-header-actions button{min-width:120px}.change-orders-toast{background:#e6f4ea;border:1px solid #9ad5b0;border-radius:4px;color:#216e3a;margin-bottom:12px;padding:8px 12px}.change-orders-error{background:#fdecea;border:1px solid #f5c2bc;border-radius:4px;color:#a52714;margin-bottom:12px;padding:8px 12px}.co-summary{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:20px}.co-chip{background:#f8fafc;border:1px solid #0000;border-radius:999px;color:#0f172a;display:inline-flex;flex-direction:column;font-size:.85rem;font-weight:600;min-width:140px;padding:.4rem .9rem}.co-chip span{color:inherit;font-size:.78rem;letter-spacing:.02em;text-transform:uppercase}.co-chip strong{color:inherit;font-size:1.1rem}.co-chip-proposed{background:#fffbeb;border-color:#fbbf24;color:#92400e}.co-chip-approved{background:#dcfce7;border-color:#86efac;color:#15803d}.co-chip-rejected{background:#f3f4f6;border-color:#cbd5f5;color:#475569}.co-chip-total{background:#e0f2fe;border-color:#bae6fd;color:#0f172a}.change-orders-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-bottom:24px}.change-order-filters,.change-order-form{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:16px}.change-order-filters h3,.change-order-form h3{margin-top:0}.change-order-filters label,.change-order-form label{display:flex;flex-direction:column;font-size:.9rem;gap:4px;margin-bottom:12px}.change-order-filters input,.change-order-filters select,.change-order-form input,.change-order-form select,.change-order-form textarea{border:1px solid #ccc;border-radius:4px;font-size:.95rem;padding:8px}.change-order-filters textarea,.change-order-form textarea{resize:vertical}.change-order-filters-actions{display:flex;justify-content:flex-start;margin-top:8px}.change-orders-summary{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:16px}.change-orders-summary-card{background:#f8f9fb;border:1px solid #e3e7ef;border-radius:8px;padding:12px}.change-orders-summary-card span{color:#556070;display:block;font-size:.85rem;margin-bottom:4px}.change-orders-summary-card strong{color:#1f2430;font-size:1.2rem}.change-orders-table-wrapper{overflow-x:auto}.change-orders-table{border-collapse:collapse;width:100%}.change-orders-table td,.change-orders-table th{border-bottom:1px solid #e6e9f0;padding:10px;vertical-align:top}.change-orders-table th{color:#4a4f5e;font-size:.9rem;font-weight:600;text-align:left}.change-orders-description-cell{max-width:320px}.change-orders-title-cell p{color:#555;margin:4px 0 0}.change-orders-row-actions{display:flex;flex-direction:column;gap:4px;min-width:90px}.co-status-badge{border-radius:999px;display:inline-block;font-size:.8rem;padding:4px 10px;text-transform:capitalize}.co-status-proposed,.co-status-requested{background:#fff7ed;color:#b45309}.co-status-approved{background:#dcfce7;color:#15803d}.co-status-rejected{background:#f3f4f6;color:#475569}.co-filters-inline{align-items:flex-end;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.25rem}.co-filters-inline label{color:#475569;display:flex;flex-direction:column;font-size:.85rem;font-weight:600}.co-filters-inline input,.co-filters-inline select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;margin-top:.35rem;padding:.45rem .6rem}.co-filters-inline-actions{align-items:flex-end;display:flex}.co-filters-inline-meta{color:#475569;font-size:.9rem;margin-left:auto}.sub-dashboard{background:#fff;border:1px solid #e0e0e0;border-radius:8px;grid-column:1/-1;margin-bottom:1.5rem;padding:1.5rem}.sub-dashboard-header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.sub-dashboard-header h2{color:#1f2933;margin:0}.dashboard-hint{color:#6b7280;font-size:.85rem}.sub-dashboard-table-wrapper{overflow-x:auto}.sub-dashboard-table{border-collapse:collapse;width:100%}.sub-dashboard-table td,.sub-dashboard-table th{border-bottom:1px solid #f0f0f0;padding:.75rem;vertical-align:top}.sub-name-cell{display:flex;flex-direction:column;gap:.2rem}.sub-contract-amount{color:#4b5563;font-size:.85rem}.sub-contact{color:#374151;display:flex;flex-direction:column;font-size:.9rem;gap:.15rem}.metric-badge{background:#edf2ff;border-radius:999px;color:#1c3d5a;display:inline-block;font-size:.85rem;font-weight:600;min-width:28px;padding:.2rem .5rem;text-align:center}.metric-open{background:#fee2e2;color:#b91c1c}.metric-divider{color:#9ca3af;margin:0 .35rem}.sub-schedule{color:#9ca3af;font-style:italic}.sub-scope{max-width:320px}.punch-list-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;gap:1.5rem;grid-column:1/-1;padding:2rem}.punch-header{align-items:center;display:flex;gap:1rem;justify-content:space-between}.punch-header h2{color:#0f172a;margin:0}.punch-header-actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:flex-end}.punch-toast{background:#2563eb;border-radius:999px;color:#fff;font-size:.85rem;padding:.2rem .8rem}.punch-filters,.punch-form{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:1.5rem}.punch-filters h3,.punch-form h3{color:#0f172a;margin:0 0 1rem}.punch-filters label,.punch-form label{color:#475569;display:flex;flex-direction:column;font-size:.85rem;font-weight:600;gap:.5rem}.punch-filters input,.punch-filters select,.punch-form input,.punch-form select,.punch-form textarea{border:1px solid #cbd5f5;border-radius:6px;font-family:inherit;font-size:.95rem;padding:.65rem .75rem}.punch-filters-grid,.punch-form-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:1rem}.punch-cell-notes textarea,.punch-form textarea{resize:vertical}.punch-filters-actions,.punch-form-actions{display:flex;flex-wrap:wrap;gap:.75rem}.punch-table-wrapper{overflow-x:auto}.punch-table{border-collapse:collapse;width:100%}.punch-table td,.punch-table th{border-bottom:1px solid #e2e8f0;padding:.85rem;vertical-align:top}.punch-table th{background:#f1f5f9;font-size:.85rem;letter-spacing:.02em;text-align:left;text-transform:uppercase}.punch-cell-main{max-width:280px}.punch-title{color:#0f172a;font-weight:600}.punch-meta{color:#475569;display:flex;flex-direction:column;font-size:.9rem;gap:.25rem}.punch-cell-notes{min-width:220px}.punch-note{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;margin-bottom:.4rem;padding:.5rem}.punch-note-resolution{background:#ecfdf5;border-color:#bbf7d0}.punch-status{border-radius:999px;display:inline-flex;font-size:.8rem;font-weight:600;padding:.25rem .6rem;text-transform:uppercase}.punch-status-open{background:#fee2e2;color:#b91c1c}.punch-status-in-progress{background:#dbeafe;color:#1d4ed8}.punch-status-done{background:#dcfce7;color:#15803d}.punch-actions{display:flex;flex-direction:column;gap:.4rem;white-space:nowrap}@media (max-width:768px){.punch-actions{flex-direction:row}}.rfis-section{display:flex;flex-direction:column;gap:1.5rem}.project-rfis-section .rfis-section{width:100%}.rfis-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between}.rfis-subtitle{color:#4a4a4a;font-size:.95rem;margin:.25rem 0 0}.rfis-summary{display:flex;flex-wrap:wrap;gap:.75rem}.rfis-chip{border:1px solid #0000;border-radius:999px;font-size:.85rem;font-weight:600;padding:.35rem .75rem}.rfis-chip-open{background:#fffbeb;border-color:#fbbf24;color:#92400e}.rfis-chip-answered{background:#eff6ff;border-color:#3b82f6;color:#1d4ed8}.rfis-chip-closed{background:#dcfce7;color:#15803d}.rfis-filters-inline{align-items:flex-end;display:flex;flex-wrap:wrap;gap:1rem}.rfis-filters-inline label{color:#475569;display:flex;flex-direction:column;font-size:.85rem;font-weight:600}.rfis-filters-inline input,.rfis-filters-inline select{border:1px solid #cbd5f5;border-radius:6px;font-size:.95rem;margin-top:.35rem;padding:.45rem .6rem}.rfis-filters-inline-meta{color:#475569;font-size:.9rem;margin-left:auto}.rfis-header-actions{align-items:center;display:flex;gap:.75rem}.rfis-toast{background-color:#ecfdf5;border-radius:4px;color:#047857;font-size:.85rem;padding:.3rem .75rem}.rfis-error{background-color:#fef2f2;border:1px solid #fecaca;border-radius:4px;color:#b91c1c;padding:.75rem 1rem}.rfis-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr)}.rfis-filters,.rfis-form{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 2px 4px #00000005;padding:1.25rem;.rfis-status-badge{border-radius:999px;display:inline-flex;font-size:.82rem;font-weight:600;padding:.15rem .6rem;text-transform:capitalize}.rfis-status-open{background-color:#fef3c7;color:#b45309}.rfis-status-answered{background-color:#dbeafe;color:#1d4ed8}.rfis-status-closed{background-color:#f1f5f9;color:#334155}.rfis-due-cell{display:flex;flex-direction:column;gap:.25rem}.rfis-due-pill{align-items:center;border-radius:999px;display:inline-flex;font-size:.75rem;font-weight:600;padding:.1rem .4rem;width:-webkit-fit-content;width:fit-content}.rfis-due-pill.overdue{background:#fee2e2;color:#b91c1c}.rfis-due-pill.due-soon{background:#fff7ed;color:#c2410c}}.rfis-filters h3,.rfis-form h3{margin-top:0}.rfis-filters label,.rfis-form label{display:flex;flex-direction:column;font-size:.9rem;gap:.3rem;margin-bottom:.75rem}.rfis-filters input,.rfis-filters select,.rfis-form input,.rfis-form select,.rfis-form textarea{border:1px solid #d1d5db;border-radius:4px;font-size:.95rem;padding:.45rem .6rem}.rfis-filter-actions{display:flex;gap:.5rem}.rfis-meta{color:#6b7280;margin:.25rem 0 0}.rfis-table-wrapper{overflow-x:auto}.rfis-table{border-collapse:collapse;width:100%}.rfis-table td,.rfis-table th{border-bottom:1px solid #e5e7eb;padding:.65rem .5rem;vertical-align:top}.rfis-subject-cell p{color:#4b5563;margin:.35rem 0 0}.rfis-answer-cell{max-width:280px}.rfis-status{border-radius:999px;display:inline-flex;font-size:.85rem;font-weight:500;padding:.1rem .5rem;text-transform:capitalize}.rfis-status-open{background-color:#fef3c7;color:#b45309}.rfis-status-answered{background-color:#dbeafe;color:#1d4ed8}.rfis-status-closed{background-color:#dcfce7;color:#15803d}.rfis-actions{white-space:nowrap}.btn-danger,.btn-link,.btn-primary,.btn-secondary{cursor:pointer}.btn-link{background:none;border:none;color:#2563eb;font-weight:500}.btn-link.btn-danger{color:#b91c1c}.clients-page{padding:16px}.clients-grid{display:flex;gap:24px}.clients-list{flex:2 1}.clients-form{flex:1 1}.clients-list ul{list-style:none;padding:0}.clients-list li{border-bottom:1px solid #eee;cursor:pointer;padding:8px 0}.clients-list li.active{background:#f5f8ff}.clients-list li .row-actions{display:flex;gap:12px;margin-top:4px}.clients-list li .btn-link.danger{color:#c0392b}.clients-form form input,.clients-form form textarea{margin-bottom:8px;padding:8px;width:100%}.dashboard-view{background:#fff;border-radius:12px;box-shadow:0 12px 24px #0c448014;padding:1.5rem}.dashboard-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.dashboard-header h1{margin:0}.dashboard-subtitle{color:#5f6c80;margin:.25rem 0 0}.dashboard-filters{margin-bottom:1.5rem}.dashboard-filters label{color:#475569;display:flex;flex-direction:column;font-size:.9rem;gap:.35rem}.dashboard-filters select{border:1px solid #cbd5f5;border-radius:8px;font-size:.95rem;padding:.45rem .6rem}.dashboard-cards{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:2rem}.dashboard-card{background:#f4f7fb;border:1px solid #dde5f0;border-radius:10px;padding:1rem 1.25rem}.dashboard-card .card-label{color:#5f6c80;font-size:.9rem;letter-spacing:.05em;margin:0;text-transform:uppercase}.dashboard-card .card-value{color:#1f3b63;font-size:2rem;font-weight:600;margin:.5rem 0 0}.dashboard-status-grid{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin-bottom:2rem}.status-card{background:#f8fbff;border:1px solid #dbe3ef;border-radius:10px;padding:.85rem 1rem}.status-card-label{color:#64748b;font-size:.85rem;letter-spacing:.04em;margin:0;text-transform:uppercase}.status-card-value{color:#0f172a;font-size:1.75rem;font-weight:600;margin:.35rem 0 0}.dashboard-section{background:#fff;border:1px solid #e3e8f0;border-radius:10px;margin-bottom:1.25rem;padding:1.25rem}.dashboard-section-header{align-items:baseline;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1rem}.dashboard-section-header--toggle{background:#0000;border:none;cursor:pointer;padding:0;text-align:left;width:100%}.dashboard-section-header--toggle:focus-visible{outline:2px solid #0b5fff;outline-offset:2px}.dashboard-section-header--toggle h2,.dashboard-section-header--toggle p{margin:0}.chevron{font-size:1.25rem;transition:transform .2s ease}.chevron-open{transform:rotate(180deg)}.dashboard-section-header h2{margin:0}.dashboard-section-header .section-meta{color:#5f6c80;font-size:.95rem;margin:0}.table-wrapper{overflow-x:auto}.table-wrapper table{border-collapse:collapse;width:100%}.table-wrapper td,.table-wrapper th{border-bottom:1px solid #eef2f7;padding:.75rem;text-align:left}.table-wrapper th{color:#5f6c80;font-size:.85rem;letter-spacing:.04em;text-transform:uppercase}.table-wrapper tbody tr:hover{background:#f8fbff}.status-breakdown-row{display:flex;flex-wrap:wrap;gap:.5rem}.status-chip{align-items:center;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;display:inline-flex;gap:.45rem;padding:.4rem .8rem}.status-chip-label{color:#0f172a;font-weight:600}.status-chip-count{color:#475569;font-size:.9rem}.project-name-cell{display:flex;flex-direction:column}.project-link{background:none;border:none;color:#1d4ed8;cursor:pointer;font-size:1rem;font-weight:600;padding:0;text-align:left}.project-link:focus,.project-link:hover{text-decoration:underline}.project-date-meta{color:#64748b;font-size:.8rem}.upcoming-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.upcoming-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:.75rem}.upcoming-item-date{color:#0f172a;font-weight:600}.upcoming-item-main{align-items:center;display:flex;gap:.65rem;margin-top:.35rem}.upcoming-source{background:#e0e7ff;border-radius:999px;color:#1e3a8a;font-size:.75rem;letter-spacing:.05em;padding:.2rem .5rem;text-transform:uppercase}.upcoming-item-title{color:#0f172a;font-weight:500;margin-top:.35rem}.upcoming-item-subtitle{color:#475569;font-size:.85rem;margin-top:.15rem}.today-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.today-card{background:#f8fbff;border:1px solid #dbe3ef;border-radius:10px;padding:.9rem 1rem}.today-card-label{color:#5f6c80;font-size:.85rem;letter-spacing:.05em;margin:0;text-transform:uppercase}.today-card-value{color:#0f172a;font-size:1.8rem;font-weight:600;margin:.4rem 0 0}.attention-section .attention-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.attention-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:flex;flex-direction:column;gap:.5rem;padding:.85rem 1rem}.attention-item-main{align-items:baseline;display:flex;flex-wrap:wrap;gap:.5rem}.attention-meta{color:#475569;font-size:.85rem}.attention-badges{display:flex;flex-wrap:wrap;gap:.4rem}.attention-badge{border:1px solid #0000;border-radius:999px;font-size:.8rem;font-weight:600;padding:.25rem .65rem}.attention-badge-warning{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.attention-badge-danger{background:#fef2f2;border-color:#fecaca;color:#b91c1c}.attention-badge-info{background:#e0f2fe;border-color:#bae6fd;color:#0369a1}.attention-badge-muted{background:#f1f5f9;border-color:#e2e8f0;color:#475569}.attention-badge-ok{background:#ecfccb;border-color:#c4f0a0;color:#3f6212}@media (max-width:768px){.dashboard-view{padding:1rem}.dashboard-header{align-items:flex-start;flex-direction:column}.dashboard-status-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.dashboard-filters label{width:100%}.upcoming-item-main{align-items:flex-start;flex-direction:column}.today-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.calendar-page{background:#fff;border:1px solid #ddd;border-radius:8px;padding:16px}.calendar-toolbar{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:16px}.calendar-range-label{color:#64748b;font-size:.95rem;margin:0}.calendar-toolbar-controls{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem}.range-toggle button{min-width:72px}.calendar-nav-buttons{display:flex;gap:.5rem}.calendar-project-filter{color:#475569;display:flex;flex-direction:column;font-size:.85rem;gap:.35rem;text-transform:uppercase}.calendar-project-filter select{border:1px solid #cbd5f5;border-radius:6px;min-width:180px;padding:.35rem .5rem}.calendar-agenda{display:flex;flex-direction:column;gap:1rem}.calendar-day{background:#fdfdfd;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.calendar-day-heading{color:#0f172a;font-weight:600;margin-bottom:.5rem}.calendar-day ul{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.calendar-event{background:#fff;border:1px solid #e5e7eb;border-radius:6px;padding:.75rem}.calendar-event-meta{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;margin-bottom:.35rem}.calendar-event-source{background:#e5e7eb;border-radius:999px;color:#1f2937;font-size:.75rem;font-weight:600;letter-spacing:.04em;padding:.1rem .45rem;text-transform:uppercase}.calendar-event-source.source-task{background:#dbeafe;color:#1d4ed8}.calendar-event-source.source-daily_log{background:#fef3c7;color:#92400e}.calendar-event-source.source-daily_report{background:#ede9fe;color:#5b21b6}.calendar-event-source.source-purchase_order{background:#e0f2f1;color:#065f46}.calendar-event-source.source-punch{background:#ffe4e6;color:#be123c}.calendar-event-project{background:none;border:none;color:#2563eb;cursor:pointer;font-weight:600;padding:0}.calendar-event-project:hover{text-decoration:underline}.calendar-event-title{color:#0f172a;font-weight:600}.calendar-event-subtitle{color:#475569;font-size:.9rem;margin-top:.2rem}.btn-muted{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;color:#475569;cursor:pointer;padding:.4rem .8rem}.btn-muted:hover{background:#e2e8f0}.calendar-month-grid{display:flex;flex-direction:column;gap:.5rem}.calendar-month-header{color:#475569;display:grid;font-size:.85rem;font-weight:600;grid-template-columns:repeat(7,1fr);text-align:center}.calendar-month-header span{padding:.25rem 0}.calendar-week-row{grid-gap:4px;display:grid;gap:4px;grid-template-columns:repeat(7,1fr)}.calendar-day-cell{background:#fff;border:1px solid #e2e8f0;border-radius:6px;display:flex;flex-direction:column;min-height:110px;padding:8px}.calendar-day-cell.is-outside{background:#f8fafc;color:#94a3b8}.calendar-day-cell.is-today{border-color:#2563eb;box-shadow:inset 0 0 0 1px #2563eb}.calendar-day-number{color:#0f172a;font-size:.9rem;font-weight:600;margin-bottom:4px}.calendar-day-events{display:flex;flex-direction:column;gap:4px;margin-top:auto}.calendar-day-chip{background:#e5e7eb;border:none;border-radius:4px;color:#1f2937;cursor:pointer;font-size:.78rem;padding:2px 4px;text-align:left}.calendar-day-chip:hover{opacity:.9}.calendar-day-chip.source-task{background:#dbeafe;color:#1d4ed8}.calendar-day-chip.source-daily_log{background:#fef3c7;color:#92400e}.calendar-day-chip.source-daily_report{background:#ede9fe;color:#5b21b6}.calendar-day-chip.source-purchase_order{background:#e0f2f1;color:#065f46}.calendar-day-chip.source-punch{background:#ffe4e6;color:#be123c}.calendar-day-more{color:#475569;font-size:.75rem;margin-top:2px}.owner-view{gap:1.5rem;padding:1.5rem}.owner-view,.owner-view-header{display:flex;flex-direction:column}.owner-view-header{gap:.35rem}.owner-view-header-top{align-items:center;display:flex;gap:.75rem}.owner-view-label{color:#475569;font-size:.85rem;letter-spacing:.08em;text-transform:uppercase}.owner-view-meta{color:#555;margin:0}.owner-status-row{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin-top:.35rem}.owner-status-chip{border:1px solid #0000;border-radius:999px;font-size:.85rem;font-weight:600;padding:.35rem .85rem}.owner-status-planning{background:#e0f2fe;border-color:#7dd3fc;color:#0c4a6e}.owner-status-active{background:#fff7ed;border-color:#fdba74;color:#92400e}.owner-status-complete{background:#dcfce7;border-color:#86efac;color:#14532d}.owner-status-default{background:#e2e8f0;border-color:#cbd5f5;color:#475569}.owner-status-progress{color:#475569;display:flex;flex-direction:column;font-size:.85rem;gap:.35rem}.owner-status-progress-bar{background:#e2e8f0;border-radius:999px;height:6px;max-width:100%;overflow:hidden;width:220px}.owner-status-progress-bar div{background:#0ea5e9;border-radius:inherit;height:100%;transition:width .3s ease}.owner-status-progress.muted{color:#94a3b8;font-style:italic}.owner-summary-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:1.25rem}.owner-panel-upcoming{margin-bottom:1rem}.owner-upcoming-list{display:flex;flex-direction:column;gap:.65rem;list-style:none;margin:0;padding:0}.owner-upcoming-item{border-bottom:1px solid #f1f5f9;display:flex;gap:.85rem;padding-bottom:.5rem}.owner-upcoming-item:last-child{border-bottom:none;padding-bottom:0}.owner-upcoming-date{color:#0f172a;font-weight:600;min-width:95px}.owner-upcoming-item p{color:#475569;margin:.2rem 0 0}.owner-summary-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;gap:.35rem;padding:1rem}.owner-summary-card p{color:#64748b;font-size:.85rem;margin:0}.owner-summary-card strong{color:#0f172a;font-size:1.35rem}.owner-card-subtext{color:#475569;font-size:.85rem}.owner-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.owner-panel{background:#fff;border:1px solid #e5e7eb;border-radius:12px;display:flex;flex-direction:column;gap:.75rem;padding:1.25rem}.owner-panel-header{align-items:center;display:flex;gap:1rem;justify-content:space-between}.owner-panel-header h3{margin:0}.owner-panel-subtitle{color:#64748b;font-size:.85rem;margin:.15rem 0 0}.owner-panel-empty{color:#94a3b8;margin:0}.owner-rfi-chips{display:flex;flex-wrap:wrap;gap:.5rem}.owner-rfi-chip{border-radius:999px;font-size:.8rem;font-weight:600;padding:.25rem .75rem}.owner-rfi-open{background:#fef9c3;color:#92400e}.owner-rfi-answered{background:#dbeafe;color:#1d4ed8}.owner-rfi-closed{background:#dcfce7;color:#15803d}.owner-rfi-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.owner-rfi-item{border-bottom:1px solid #eef2ff;display:flex;gap:.75rem;justify-content:space-between;padding-bottom:.65rem}.owner-rfi-item p{color:#475569;margin:.25rem 0 0}.owner-rfi-due{color:#c2410c;display:inline-flex;font-size:.8rem;margin-left:.5rem}.owner-status-badge{border-radius:999px;display:inline-flex;font-size:.78rem;font-weight:600;padding:.25rem .75rem;text-transform:capitalize}.owner-rfi-status-open{background:#fef3c7;color:#b45309}.owner-rfi-status-answered{background:#dbeafe;color:#1d4ed8}.owner-rfi-status-closed{background:#f1f5f9;color:#334155}.owner-co-table{border-collapse:collapse;width:100%}.owner-co-table td,.owner-co-table th{border-bottom:1px solid #e2e8f0;padding:.6rem .4rem;text-align:left;vertical-align:top}.owner-co-table th{color:#64748b;font-size:.85rem;letter-spacing:.02em;text-transform:uppercase}.owner-co-table td.owner-co-date,.owner-co-table th.owner-co-date{width:110px}.owner-co-table td.owner-co-date{overflow-wrap:anywhere;white-space:normal}.owner-co-status-proposed,.owner-co-status-requested{background:#fff7ed;color:#b45309}.owner-co-status-approved{background:#dcfce7;color:#15803d}.owner-co-status-rejected{background:#f3f4f6;color:#475569}.owner-activity-list{display:flex;flex-direction:column;gap:.75rem;list-style:none;margin:0;padding:0}.owner-activity-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:flex;flex-direction:column;gap:.35rem;padding:.85rem}.owner-log-date{color:#0f172a;font-weight:600;margin:0}.owner-activity-item p{color:#475569;margin:0}.owner-log-meta-row{color:#475569;display:flex;flex-wrap:wrap;font-size:.85rem;gap:.75rem}.owner-photos-strip{grid-gap:.75rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.owner-photo-thumb{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:10px;display:flex;flex-direction:column;gap:.35rem;padding:.5rem;text-align:center}.owner-photo-thumb img{border-radius:6px;height:100px;object-fit:cover;width:100%}.owner-photo-thumb figcaption{color:#475569;font-size:.8rem}.owner-photo-placeholder{align-items:center;background:#e2e8f0;border-radius:6px;color:#475569;display:flex;font-size:.9rem;height:100px;justify-content:center;width:100%}@media (max-width:768px){.owner-view{padding:1rem}.owner-panel-header{align-items:flex-start}.owner-panel-header,.owner-rfi-item{flex-direction:column}}.login-page{align-items:center;background:linear-gradient(135deg,#1f2937,#111827);justify-content:center;min-height:100vh}.login-card,.login-page{display:flex;padding:2rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 20px 40px #00000040;flex-direction:column;gap:1rem;max-width:360px;width:100%}.login-card h1{color:#111827;font-size:1.5rem;margin:0}.login-subtitle{color:#6b7280;font-size:.95rem;margin:0}.login-error{background:#fee2e2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;font-size:.9rem;padding:.75rem}.login-field{color:#374151;display:flex;flex-direction:column;font-size:.9rem;gap:.35rem}.login-field input{border:1px solid #d1d5db;border-radius:8px;font-size:1rem;padding:.65rem .75rem;transition:border-color .2s ease,box-shadow .2s ease}.login-field input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb33;outline:none}.login-card button{background:#2563eb;border:none;border-radius:999px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem;transition:background .2s ease}.login-card button:disabled{cursor:not-allowed;opacity:.7}.login-card button:not(:disabled):hover{background:#1d4ed8}.login-note{color:#9ca3af;font-size:.8rem;margin:0;text-align:center}
/*# sourceMappingURL=main.c0f65431.css.map*/