*{box-sizing:border-box;margin:0;padding:0}body{background:#f5f7fa;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}.app-logo-bar{background:#fff;box-shadow:0 1px 4px #00000014;padding:.75rem 1.5rem;text-align:left}.app-logo{height:40px;width:auto}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.login-card{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0003;max-width:400px;padding:2.5rem;width:100%}.login-card h1{color:#333;font-size:1.75rem;margin-bottom:.25rem;text-align:center}.login-subtitle{color:#666;margin-bottom:1.5rem;text-align:center}.form-group{margin-bottom:1rem}.form-group label{color:#555;display:block;font-weight:500;margin-bottom:.25rem}.form-group input{border:1px solid #ddd;border-radius:6px;font-size:1rem;padding:.75rem;transition:border-color .2s;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea26;outline:none}.error-message{background:#fee;border-radius:6px;color:#c33;font-size:.875rem;margin-bottom:1rem;padding:.75rem}.btn-primary{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:.75rem;transition:background .2s;width:100%}.btn-primary:hover{background:#5a6fd6}.btn-primary:disabled{background:#aab;cursor:not-allowed}.login-hint{border-top:1px solid #eee;color:#888;font-size:.8rem;margin-top:1.5rem;padding-top:1rem;text-align:center}.timesheet-container{max-width:100%;padding:1rem}.app-header{align-items:center;background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;display:flex;justify-content:space-between;margin-bottom:1rem;padding:1rem 1.5rem}.app-header h1{color:#333;font-size:1.5rem}.header-right{align-items:center;display:flex;gap:1rem}.user-name{color:#555;font-weight:500}.btn-logout{background:#e74c3c;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem 1rem}.btn-logout:hover{background:#c0392b}.controls-bar{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem;padding:1rem 1.5rem}.controls-bar,.month-selector{align-items:center;display:flex}.month-selector{gap:.5rem}.month-selector select{border:1px solid #ddd;border-radius:6px;font-size:.9rem;padding:.5rem}.action-buttons{display:flex;gap:.5rem}.btn-secondary{background:#f0f0f0;border:1px solid #ddd;border-radius:6px;color:#333;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:background .2s}.btn-secondary:hover{background:#e0e0e0}.error-banner{background:#fee;color:#c33;padding:.75rem 1.5rem}.add-line-form,.error-banner{border-radius:8px;margin-bottom:1rem}.add-line-form{background:#fff;box-shadow:0 2px 8px #00000014;padding:1.5rem}.add-line-form h3{color:#333;margin-bottom:1rem}.filter-row{align-items:flex-end;display:flex;flex-wrap:wrap;gap:1rem}.filter-group{display:flex;flex-direction:column;gap:.25rem}.filter-group label{color:#666;font-size:.8rem;font-weight:500}.filter-group select{border:1px solid #ddd;border-radius:6px;font-size:.875rem;min-width:160px;padding:.5rem}.vacation-summary{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;margin-bottom:1rem;padding:1.5rem}.vacation-summary h3{color:#333;margin-bottom:.75rem}.vacation-stats{display:flex;flex-wrap:wrap;gap:2rem}.stat{display:flex;flex-direction:column}.stat-label{color:#888;font-size:.8rem;letter-spacing:.5px;text-transform:uppercase}.stat-value{color:#333;font-size:1.1rem;font-weight:600}.timesheet-grid-wrapper{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow-x:auto}.timesheet-grid{border-collapse:collapse;font-size:.8rem;min-width:100%;width:max-content}.timesheet-grid td,.timesheet-grid th{border:1px solid #e8e8e8;padding:.4rem;text-align:center;white-space:nowrap}.timesheet-grid th{background:#f8f9fa;font-weight:600;position:sticky;top:0;z-index:1}.sticky-col{background:#fff;position:sticky;z-index:2}.col-actions{left:0;min-width:50px;width:50px}.col-jobid{left:50px;min-width:90px;text-align:left;width:90px}.col-desc{left:140px;max-width:150px;min-width:150px;overflow:hidden;text-align:left;text-overflow:ellipsis;width:150px}.col-total{font-weight:600;left:290px;min-width:50px;width:50px}.day-header{min-width:45px}.day-name{color:#888;font-size:.65rem;font-weight:400}.weekend{background:#f0f0f5!important}.day-cell,.hours-input{padding:.2rem}.hours-input{background:#0000;border:1px solid #0000;border-radius:3px;font-size:.8rem;text-align:center;width:40px}.hours-input:hover{border-color:#ddd}.hours-input:focus{background:#fff;border-color:#667eea;outline:none}.totals-row{background:#f8f9fa}.totals-row td{border-top:2px solid #ddd}.vacation-row{background:#fff8e1}.vacation-day{background:#fff3cd!important;color:#856404;font-weight:500}.btn-delete{background:none;border:none;border-radius:4px;color:#e74c3c;cursor:pointer;font-size:1.2rem;padding:.2rem .5rem}.btn-delete:hover{background:#fee}.empty-state{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;color:#888;padding:3rem;text-align:center}.loading{color:#666;padding:2rem;text-align:center}@media (max-width:768px){.controls-bar{align-items:flex-start}.controls-bar,.filter-row,.vacation-stats{flex-direction:column}.vacation-stats{gap:.5rem}}.admin-container{margin:0 auto;max-width:100%;padding:1rem}.header-left{align-items:center;display:flex;gap:1rem}.admin-tabs{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;display:flex;gap:0;margin-bottom:1rem;overflow-x:auto}.tab-btn{background:#fff;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:.8rem;font-weight:500;padding:.75rem 1rem;transition:all .2s;white-space:nowrap}.tab-btn:hover{background:#f8f9fa;color:#333}.tab-btn.active{background:#f8f9ff;border-bottom-color:#667eea;color:#667eea}.admin-content{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow-x:auto;padding:1.5rem}.admin-form{border-bottom:1px solid #eee;margin-bottom:1.5rem;padding-bottom:1.5rem}.admin-form h3{color:#333;margin-bottom:.75rem}.form-row{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.form-row input,.form-row select{border:1px solid #ddd;border-radius:6px;font-size:.8rem;min-width:120px;padding:.5rem .75rem}.form-row input:focus,.form-row select:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea26;outline:none}.form-row .btn-primary{padding:.5rem 1.25rem;width:auto}.admin-table{border-collapse:collapse;table-layout:auto;white-space:nowrap;width:100%}.admin-table td,.admin-table th{border-bottom:1px solid #eee;max-width:300px;overflow:hidden;padding:.5rem 1rem;text-align:left;text-overflow:ellipsis;white-space:nowrap}.admin-table th{background:#f8f9fa;color:#555;font-size:.75rem;font-weight:600;letter-spacing:.5px;position:sticky;text-transform:uppercase;top:0}.admin-table th.sortable:hover{background:#eef0f7;color:#333}.admin-table tr:hover{background:#f8f9ff}.btn-edit{background:#667eea;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;margin-right:.5rem;padding:.3rem .75rem}.btn-edit:hover{background:#5a6fd6}.btn-delete-admin{background:#e74c3c;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;padding:.3rem .75rem}.btn-delete-admin:hover{background:#c0392b}.empty-cell{color:#888;padding:2rem!important;text-align:center}.success-banner{background:#d4edda;border-radius:8px;color:#155724;margin-bottom:1rem;padding:.75rem 1.5rem}.role-badge{border-radius:10px;display:inline-block;font-size:.75rem;font-weight:600;padding:.15rem .5rem;text-transform:uppercase}.role-admin{background:#e8d5f5;color:#6b21a8}.role-user{background:#dbeafe;color:#1d4ed8}.summary-results{margin-top:1.5rem}.summary-header{margin-bottom:1rem}.summary-header h3{color:#333;margin-bottom:.5rem}.summary-meta{color:#666;display:flex;font-size:.9rem;gap:2rem}.summary-table td,.summary-table th{text-align:right}.summary-table td:first-child,.summary-table th:first-child{text-align:left}.utilization{border-radius:10px;display:inline-block;font-size:.8rem;font-weight:600;padding:.1rem .5rem}.utilization.good{background:#d4edda;color:#155724}.utilization.fair{background:#fff3cd;color:#856404}.utilization.low{background:#f8d7da;color:#721c24}.month-status-badge{border-radius:10px;display:inline-block;font-size:.75rem;font-weight:600;padding:.2rem .6rem;text-transform:uppercase}.month-status-badge.open{background:#d4edda;color:#155724}.month-status-badge.closed{background:#f8d7da;color:#721c24}.btn-close-month{background:#dc3545;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:background .2s}.btn-close-month:hover{background:#c82333}.btn-close-month-admin{background:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;padding:.3rem .75rem}.btn-close-month-admin:hover{background:#c82333}.hours-input:disabled{background:#f0f0f0;color:#999;cursor:not-allowed}.btn-export{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.8rem;margin-left:.25rem;padding:.3rem .75rem}.btn-export:hover{background:#218838}.action-cell{white-space:nowrap}.report-preview{border-top:2px solid #667eea;margin-top:2rem;padding-top:1.5rem}.report-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.report-header h3{color:#333}.report-table td,.report-table th{font-size:.85rem}.report-total-line{background:#f0f4ff;font-weight:600}.negative{color:#dc3545}.inactive-row{opacity:.5}.holiday-row{background:#e8f5e9}.holiday-day{background:#c8e6c9!important;color:#2e7d32;font-size:.9rem}.backup-hint{color:#888;font-size:.8rem;font-style:italic}.vacation-input{background:#fff8e1!important}.vacation-input:focus{background:#fff!important}.btn-populate{background:#28a745;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;line-height:1;padding:.2rem .4rem}.btn-populate:hover{background:#218838}.password-form-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;margin-bottom:1rem;padding:1.5rem}.password-form-card h3{color:#333;margin-bottom:.75rem}.password-form-row{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.password-form-row input{border:1px solid #ddd;border-radius:6px;font-size:.875rem;min-width:160px;padding:.5rem .75rem}.password-form-row input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea26;outline:none}.password-msg{border-radius:4px;font-size:.85rem;margin-top:.5rem;padding:.5rem}.password-msg.success{background:#d4edda;color:#155724}.password-msg.error{background:#f8d7da;color:#721c24}.forgot-password{margin-top:1rem;text-align:center}.btn-link{background:none;border:none;color:#667eea;cursor:pointer;font-size:.85rem;text-decoration:underline}.btn-link:hover{color:#5a6fd6}.forgot-message{background:#f8f9fa;border-radius:4px;color:#666;font-size:.8rem;margin-top:.5rem;padding:.5rem}.btn-sync{background:#17a2b8;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.85rem;font-weight:500;padding:.5rem 1rem;transition:background .2s}.btn-sync:hover{background:#138496}.salary-cell{min-width:110px}.salary-input{border:1px solid #ddd;border-radius:4px;font-size:.8rem;padding:.25rem .4rem;text-align:right;width:100px}.salary-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea26;outline:none}.admin-timesheet-info{background:#e8f4fd;border-radius:6px;color:#1a5276;font-size:.9rem;margin-bottom:.75rem;padding:.75rem 1rem}.btn-nav{background:#667eea;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.85rem;line-height:1;padding:.4rem .6rem;transition:background .2s}.btn-nav:hover{background:#5a6fd6}.app-logo-bar{align-items:center;display:flex;gap:.75rem}.btn-layout-toggle{background:#667eea;border:none;border-radius:20px;color:#fff;cursor:pointer;font-size:.78rem;font-weight:500;margin-left:auto;padding:.35rem .85rem;transition:background .2s;white-space:nowrap}.btn-layout-toggle:hover{background:#5a6fd6}.layout-badge{background:#e8f0fe;border-radius:10px;color:#3b5bdb;font-size:.7rem;font-weight:600;letter-spacing:.4px;padding:.2rem .5rem;text-transform:uppercase}.mobile,.mobile body{font-size:15px}.mobile .app-logo-bar--mobile{padding:.6rem 1rem}.mobile .app-logo{height:32px}.mobile .login-container{align-items:flex-start;min-height:calc(100vh - 56px);padding-top:2rem}.mobile .login-card{border-radius:0;box-shadow:none;max-width:100%;padding:1.5rem 1.25rem}.mobile .timesheet-container{padding:.5rem}.mobile .app-header{border-radius:0;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem}.mobile .app-header h1{font-size:1.2rem}.mobile .header-right{flex-wrap:wrap;gap:.5rem}.mobile .user-name{font-size:.85rem;order:-1;width:100%}.mobile .controls-bar{border-radius:8px;flex-direction:column;gap:.75rem;padding:.75rem 1rem}.mobile .month-selector{justify-content:space-between;width:100%}.mobile .month-selector select{flex:1 1;font-size:1rem}.mobile .action-buttons{flex-direction:column;gap:.5rem;width:100%}.mobile .action-buttons button,.mobile .action-buttons span{justify-content:center;text-align:center;width:100%}.mobile .btn-close-month,.mobile .btn-primary,.mobile .btn-secondary{font-size:.95rem;padding:.65rem 1rem}.mobile .add-line-form{border-radius:8px;padding:1rem}.mobile .filter-row{flex-direction:column;gap:.75rem}.mobile .filter-group{width:100%}.mobile .filter-group select{font-size:1rem;min-width:0;min-width:auto;padding:.6rem;width:100%}.mobile .vacation-summary{padding:1rem}.mobile .vacation-stats{flex-direction:column;gap:.75rem}.mobile .stat-value{font-size:1rem}.mobile .password-form-card{border-radius:8px;padding:1rem}.mobile .password-form-row{flex-direction:column;gap:.5rem}.mobile .password-form-row input{font-size:1rem;min-width:0;min-width:auto;padding:.65rem;width:100%}.mobile .password-form-row .btn-primary,.mobile .password-form-row .btn-secondary{width:100%}.ts-card-list{display:flex;flex-direction:column;gap:.75rem}.ts-card{background:#fff;border-radius:10px;box-shadow:0 2px 8px #00000014;overflow:hidden}.ts-card-header{align-items:center;background:#f0f4ff;border-bottom:1px solid #e0e8ff;display:flex;justify-content:space-between;padding:.75rem 1rem}.ts-card-header.vacation-row{background:#fff8e1;border-bottom-color:#ffe082}.ts-card-header.holiday-row{background:#e8f5e9;border-bottom-color:#a5d6a7}.ts-card-title{color:#333;font-size:.85rem;font-weight:700}.ts-card-subtitle{color:#666;font-size:.75rem;margin-top:.1rem}.ts-card-total{color:#667eea;font-size:1rem;font-weight:700;white-space:nowrap}.ts-card-body{padding:.75rem 1rem}.ts-days-grid{grid-gap:.3rem;display:grid;gap:.3rem;grid-template-columns:repeat(7,1fr)}.ts-day-cell{align-items:center;display:flex;flex-direction:column;gap:.15rem}.ts-day-label{color:#999;font-size:.6rem;line-height:1;text-transform:uppercase}.ts-day-num{color:#aaa;font-size:.65rem;line-height:1}.ts-day-input{-moz-appearance:textfield;background:#fff;border:1px solid #ddd;border-radius:4px;font-size:.8rem;max-width:38px;padding:.25rem .1rem;text-align:center;width:100%}.ts-day-input::-webkit-inner-spin-button,.ts-day-input::-webkit-outer-spin-button{-webkit-appearance:none}.ts-day-input:focus{border-color:#667eea;box-shadow:0 0 0 2px #667eea33;outline:none}.ts-day-input:disabled{background:#f5f5f5;color:#aaa;cursor:not-allowed}.ts-day-cell.weekend .ts-day-input{background:#f0f0f5}.ts-day-cell.weekend .ts-day-label,.ts-day-cell.weekend .ts-day-num{color:#bbb}.ts-day-cell.holiday .ts-day-input{background:#c8e6c9;color:#2e7d32}.ts-day-cell.vacation .ts-day-input{background:#fff3cd;color:#856404}.ts-day-cell.has-hours .ts-day-input{background:#eef2ff;border-color:#667eea;font-weight:600}.ts-card-delete{background:none;border:none;border-radius:4px;color:#e74c3c;cursor:pointer;font-size:1.1rem;line-height:1;padding:.1rem .4rem}.ts-card-delete:hover{background:#fee}.mobile .admin-container{padding:.5rem}.mobile .admin-tabs{gap:0}.mobile .tab-btn{font-size:.72rem;padding:.6rem .7rem}.mobile .admin-content{padding:1rem .75rem}.mobile .form-row{flex-direction:column;gap:.5rem}.mobile .form-row input,.mobile .form-row select{font-size:1rem;min-width:0;min-width:auto;padding:.65rem .75rem;width:100%}.mobile .form-row .btn-primary{padding:.65rem 1rem;width:100%}@media (max-width:480px){.ts-days-grid{gap:.2rem;grid-template-columns:repeat(7,1fr)}.ts-day-input{font-size:.75rem;max-width:34px}}.mobile .login-container--mobile{align-items:flex-start;background:linear-gradient(160deg,#667eea,#764ba2);min-height:calc(100vh - 56px);padding-top:1.5rem}.mobile .login-container--mobile .login-card{border-radius:16px 16px 0 0;box-shadow:0 -4px 24px #00000026;margin-top:auto;max-width:100%;padding:1.75rem 1.25rem 2rem;width:100%}.mobile .form-group input{font-size:1rem;padding:.85rem .75rem}.mobile .btn-primary{font-size:1rem;padding:.85rem}.mobile .btn-link{font-size:.9rem;padding:.4rem 0}.session-notice{background:#fff8e1;border:1px solid #ffe082;border-radius:6px;color:#7a5800;font-size:.875rem;line-height:1.4;margin-bottom:1rem;padding:.65rem .85rem}
/*# sourceMappingURL=main.72f37ac8.css.map*/