body{margin:0}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.login-box{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;max-width:400px;padding:2rem;width:100%}.login-box h1{color:#333;margin-bottom:.5rem;text-align:center}.login-box h2{color:#666;font-weight:400;margin-bottom:2rem;text-align:center}.form-group{margin-bottom:1.5rem}.form-group label{color:#333;display:block;font-weight:500;margin-bottom:.5rem}.form-group input{border:1px solid #ddd;border-radius:4px;box-sizing:border-box;font-size:1rem;padding:.75rem;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.error-message{font-size:.9rem;padding:.75rem}button[type=submit]{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem;transition:opacity .2s;width:100%}button[type=submit]:hover:not(:disabled){opacity:.9}button[type=submit]:disabled{cursor:not-allowed;opacity:.6}.login-info{background-color:#f8f9fa;border-radius:4px;color:#666;font-size:.875rem;margin-top:2rem;padding:1rem}.login-info p{margin:.5rem 0}.login-info strong{color:#333;font-family:monospace}.contract-picker{max-width:300px;min-width:200px;position:relative}.contract-picker-trigger{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;display:flex;gap:8px;padding:8px 12px;transition:border-color .2s;-webkit-user-select:none;user-select:none}.contract-picker-trigger:hover{border-color:#4caf50}.selected-contract-name{color:#333;flex:1 1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.placeholder{color:#999;flex:1 1}.clear-btn{background:none;border:none;color:#999;cursor:pointer;font-size:24px;line-height:1;padding:0 4px;transition:color .2s}.clear-btn:hover{color:#f44336}.dropdown-arrow{color:#999;font-size:12px;transition:transform .2s}.contract-picker-dropdown{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 8px #00000026;display:flex;flex-direction:column;left:0;max-height:400px;overflow:hidden;position:absolute;right:0;top:calc(100% + 4px);z-index:1000}.contract-picker-search{border-bottom:1px solid #eee;padding:8px}.contract-picker-search input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px;width:100%}.contract-picker-search input:focus{border-color:#4caf50;outline:none}.contract-picker-list{max-height:300px;overflow-y:auto}.contract-picker-item{border-bottom:1px solid #f5f5f5;cursor:pointer;padding:10px 12px;transition:background-color .2s}.contract-picker-item:last-child{border-bottom:none}.contract-picker-item:hover{background-color:#f5f5f5}.contract-picker-item.selected{background-color:#e8f5e9}.contract-picker-item-name{color:#333;font-weight:500;margin-bottom:4px}.contract-picker-item-meta{color:#999;font-size:12px}.contract-picker-empty,.contract-picker-loading{color:#999;padding:16px;text-align:center}.contract-picker-error{background:#ffebee;border-radius:4px;color:#c62828;font-size:12px;left:0;margin-top:2px;padding:4px 8px;position:absolute;right:0;top:calc(100% + 2px);z-index:999}.contract-picker-filter{background-color:#f9f9f9;border-bottom:1px solid #eee;padding:8px}.contract-picker-filter-toggle{align-items:center;color:#666;cursor:pointer;display:flex;font-size:13px;gap:6px}.contract-picker-filter-toggle input[type=checkbox]{cursor:pointer;height:14px;width:14px}.contract-picker-badge{background-color:#e9ecef;border-radius:10px;color:#6c757d;display:inline-block;font-size:10px;font-weight:600;margin-left:8px;padding:2px 6px;text-transform:uppercase}.contract-picker-item.complete{background-color:#f8f9fa}.contract-picker-item.complete .contract-picker-item-name{color:#999}.contract-picker-item.complete:hover{background-color:#e9ecef}@media (max-width:768px){.contract-picker{min-width:150px}.contract-picker-trigger{font-size:14px;padding:6px 10px}}.version-info{display:inline-block;position:relative}.version-label{border-radius:3px;color:#fffc;cursor:pointer;font-size:.75rem;padding:4px 8px;transition:background-color .2s;-webkit-user-select:none;user-select:none}.version-label:hover{background-color:#ffffff1a;color:#fff}.version-details{background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 2px 8px #00000026;margin-top:8px;min-width:250px;padding:12px;position:absolute;right:0;top:100%;z-index:1000}.version-detail-item{color:#333;font-size:.85rem;margin:6px 0}.version-detail-item strong{color:#000;display:inline-block;min-width:70px}.layout{display:flex;flex-direction:column;min-height:100vh}.navbar{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 4px #0000001a;color:#fff;display:flex;padding:1rem 2rem}.navbar-brand h1{font-size:1.5rem;margin:0 2rem 0 0}.navbar-menu{display:flex;flex:1 1;flex-wrap:wrap;gap:.5rem}.navbar-menu a{border-radius:4px;color:#fff;padding:.5rem 1rem;text-decoration:none;transition:background-color .2s;white-space:nowrap}.navbar-menu a:hover{background-color:#ffffff1a}.navbar-controls,.navbar-user{align-items:center;display:flex;gap:1rem}.navbar-user span{font-size:.9rem}.navbar-user button{background-color:#fff3;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:background-color .2s}.navbar-user button:hover{background-color:#ffffff4d}.main-content{background-color:#f8f9fa;flex:1 1;min-height:calc(100vh - 60px)}@media (max-width:768px){.navbar{align-items:stretch;flex-direction:column;gap:1rem}.navbar-brand{text-align:center}.navbar-menu{flex-direction:column;gap:.25rem}.navbar-menu a{text-align:center}.navbar-controls{align-items:stretch;flex-direction:column}.navbar-user{align-items:center;flex-direction:column}}.dashboard{margin:0 auto;max-width:1200px;padding:2rem}.dashboard h1{color:#333;margin-bottom:.5rem}.subtitle{color:#666;font-size:1.1rem;margin-bottom:2rem}.dashboard-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:3rem}.dashboard-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;cursor:pointer;padding:1.5rem;transition:transform .2s,box-shadow .2s}.dashboard-card:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-4px)}.dashboard-card:active{transform:translateY(-2px)}.dashboard-card:focus{outline:2px solid #667eea;outline-offset:2px}.dashboard-card h3{color:#667eea;margin:0 0 .5rem}.dashboard-card p{color:#666;font-size:.9rem;margin:0}.info-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:2rem}.info-section h2{color:#333;margin-bottom:1rem;margin-top:0}.info-section ol{color:#555;line-height:1.8}.info-section strong{color:#667eea}.entity-list{padding:2rem}.entity-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.entity-header h2{color:#333;margin:0}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:opacity .2s}.btn-primary:hover{opacity:.9}.table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden}table{border-collapse:collapse;width:100%}thead{background-color:#f8f9fa}th{border-bottom:2px solid #dee2e6;color:#333;font-weight:600;text-align:left}td,th{padding:1rem}td{border-bottom:1px solid #dee2e6;color:#555}tr:last-child td{border-bottom:none}tbody tr:hover{background-color:#f8f9fa}.no-data{color:#999;font-style:italic}.actions{white-space:nowrap}.btn-delete,.btn-duplicate,.btn-edit{border:none;border-radius:4px;cursor:pointer;font-size:.875rem;margin-right:.5rem;padding:.5rem 1rem;transition:opacity .2s}.btn-edit{background-color:#28a745;color:#fff}.btn-edit:hover{opacity:.8}.btn-duplicate{background-color:#17a2b8;color:#fff}.btn-duplicate:hover{opacity:.8}.btn-delete{background-color:#dc3545;color:#fff}.btn-delete:hover{opacity:.8}.loading{color:#666;font-size:1.2rem;min-height:400px}.entity-header-controls{align-items:center;display:flex;gap:1rem}.filter-toggle{align-items:center;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;cursor:pointer;display:flex;gap:.5rem;padding:.5rem .75rem;transition:background-color .2s,border-color .2s;-webkit-user-select:none;user-select:none}.filter-toggle:hover{background-color:#e9ecef}.filter-toggle:focus-within{outline:2px solid #667eea;outline-offset:2px}.filter-toggle input[type=checkbox]{cursor:pointer;height:16px;width:16px}.filter-toggle span{color:#555;font-size:.875rem}.status-badge{align-items:center;border-radius:12px;display:inline-flex;font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.125rem .5rem;text-transform:uppercase}.status-badge.complete{background-color:#e9ecef;color:#6c757d}.status-badge.active{background-color:#d4edda;color:#155724}tbody tr.row-complete{background-color:#f8f9fa}tbody tr.row-complete td{color:#999}tbody tr.row-complete:hover{background-color:#e9ecef}.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:8px;box-shadow:0 4px 6px #0000001a;max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.modal-header{align-items:center;border-bottom:1px solid #dee2e6;display:flex;justify-content:space-between;padding:1.5rem}.modal-header h2{color:#333;margin:0}.close-btn{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:2rem;height:2rem;justify-content:center;padding:0;transition:background-color .2s;width:2rem}.close-btn:hover{background-color:#f8f9fa;color:#333}.form-body{padding:1.5rem}.form-field{margin-bottom:1.5rem}.form-field label{color:#333;display:block;font-weight:500;margin-bottom:.5rem}.required{color:#dc3545;margin-left:.25rem}.form-field input,.form-field select{border:1px solid #ddd;border-radius:4px;box-sizing:border-box;font-size:1rem;padding:.75rem;width:100%}.form-field input:focus,.form-field select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-field input:disabled,.form-field select:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-footer{border-top:1px solid #dee2e6;display:flex;gap:1rem;justify-content:flex-end;padding:1.5rem}.btn-cancel,.btn-submit{border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:opacity .2s}.btn-cancel{background-color:#6c757d;color:#fff}.btn-cancel:hover:not(:disabled){opacity:.8}.btn-submit{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.btn-submit:hover:not(:disabled){opacity:.9}.btn-cancel:disabled,.btn-submit:disabled{cursor:not-allowed;opacity:.6}.error-message{background-color:#fee;color:#c33;margin-bottom:1rem;padding:1rem}.contract-details{padding:20px}.details-header{margin-bottom:24px}.details-header h2{color:#333;margin:16px 0 0}.back-link{color:#2563eb;font-size:14px;text-decoration:none}.back-link:hover{text-decoration:underline}.contract-summary{background:#f8fafc;border-radius:8px;margin-bottom:24px;padding:20px}.contract-summary h3{color:#333;font-size:18px;margin:0 0 16px}.summary-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-item .label{color:#64748b;font-size:12px;letter-spacing:.05em;text-transform:uppercase}.summary-item .value{color:#1e293b;font-size:16px;font-weight:500}.invoice-tracking{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.invoice-tracking h3{color:#333;font-size:18px;margin:0 0 16px}.table-container{overflow-x:auto}.invoice-tracking table{border-collapse:collapse;width:100%}.invoice-tracking td,.invoice-tracking th{border-bottom:1px solid #e2e8f0;padding:12px 16px;text-align:left}.invoice-tracking th{background-color:#f8fafc;color:#475569;font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.invoice-tracking td{color:#1e293b;font-size:14px}.contract-row{background-color:#eff6ff}.contract-row td{font-weight:600}.task-row:hover{background-color:#f8fafc}.task-name{padding-left:24px!important}.no-data{color:#64748b;padding:32px!important;text-align:center}.loading{align-items:center;color:#64748b;display:flex;height:200px;justify-content:center}.error-message{background-color:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#991b1b;margin-bottom:16px;padding:16px}.weekly-summary-page{margin:0 auto;max-width:1400px;padding:20px}.weekly-summary-header{margin-bottom:30px}.weekly-summary-header h1{color:#333;margin-bottom:20px}.weekly-summary-controls{align-items:flex-end;background:#f5f5f5;border-radius:8px;display:flex;flex-wrap:wrap;gap:20px;padding:15px}.control-group{display:flex;flex-direction:column;gap:5px}.control-group label{color:#555;font-size:14px;font-weight:600}.date-input,.user-select{background:#fff;border:1px solid #ddd;border-radius:4px;font-size:14px;padding:8px 12px}.user-select{min-width:200px}.week-navigation{display:flex;gap:10px;margin-left:auto}.nav-button{background:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background .2s}.nav-button:hover{background:#0056b3}.week-info{margin-bottom:20px}.week-info h2{color:#444;font-size:20px}.summary-table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow-x:auto}.summary-table{border-collapse:collapse;font-size:14px;width:100%}.summary-table thead{background:#f8f9fa;position:-webkit-sticky;position:sticky;top:0}.summary-table th{border-bottom:2px solid #dee2e6;color:#495057;font-weight:600;padding:12px 8px;text-align:left}.summary-table th.task-column{background:#f8f9fa;left:0;min-width:200px;position:-webkit-sticky;position:sticky;text-align:left;z-index:10}.summary-table th.day-column{min-width:80px;text-align:center}.summary-table th.total-column{background:#e9ecef;min-width:100px;text-align:center}.date-small{color:#6c757d;font-size:12px}.summary-table td{border-bottom:1px solid #dee2e6;padding:10px 8px}.summary-table tbody tr:hover{background:#f8f9fa}.task-name{background:#fff;font-weight:500;left:0;position:-webkit-sticky;position:sticky;z-index:5}.summary-table tbody tr:hover .task-name{background:#f8f9fa}.hours-cell,.total-cell{color:#495057;text-align:center}.total-cell{font-weight:600}.totals-row{border-top:2px solid #adb5bd}.totals-row,.totals-row .task-name{background:#e9ecef!important}.grand-total{background:#dee2e6;color:#212529;font-weight:700;text-align:center}.error-message,.no-data,.weekly-summary-loading{color:#666;font-size:16px;padding:40px;text-align:center}.error-message{background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;margin-bottom:20px}@media (max-width:768px){.weekly-summary-controls{align-items:stretch;flex-direction:column}.week-navigation{margin-left:0}.nav-button{flex:1 1}}*{box-sizing:border-box;margin:0;padding:0}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}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
/*# sourceMappingURL=main.3af79b09.css.map*/