*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Poppins,Segoe UI,system-ui,sans-serif;background:#f9fbff;color:#112a55;min-height:100vh;letter-spacing:.2px;font-size:14px}h1,h2,h3,.logo,.page-title,.modal-title,.stat-value,.pivot-title{font-family:Rubik,Poppins,sans-serif}header{background:#fff;padding:14px 32px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e5e9f0}.logo{font-size:22px;font-weight:700;color:#112a55;letter-spacing:.3px}.logo span{color:#d32830}.tabs-row{display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:1px solid #e5e9f0;padding:0 32px;box-shadow:0 1px 2px #00000008}.tabs{display:flex;gap:4px}.tabs-actions{display:flex;align-items:center;gap:8px}.tab{background:transparent;border:none;padding:14px 18px;font-size:13px;font-weight:600;color:#5c739c;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s;font-family:inherit;letter-spacing:.2px}.tab:hover{color:#112a55}.tab-active{color:#1f4988;border-bottom-color:#1f4988}.page{padding:32px}.page-title{font-size:20px;font-weight:700;margin-bottom:4px}.page-subtitle{font-size:13px;color:#5c739c;margin-bottom:24px}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.search-box{padding:8px 14px;border:1px solid #e5e9f0;border-radius:8px;font-size:13px;background:#fff;width:220px;outline:none}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;border:none;transition:background .15s;font-family:inherit}.btn-primary{background:#1f4988;color:#fff;text-transform:uppercase;letter-spacing:.5px}.btn-primary:hover{background:#16386b}.stats{display:flex;gap:16px;margin-bottom:24px}.stat-card{background:#fff;border-radius:12px;padding:16px 22px;flex:1;border:1px solid #e5e9f0;box-shadow:0 1px 4px #0000000a}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#7e8eac;font-weight:600}.stat-value{font-size:26px;font-weight:700;color:#112a55;margin-top:4px}.stat-value.green{color:#16a34a}.stat-value.blue{color:#1f4988}.grid-wrap{background:#fff;border-radius:14px;border:1px solid #e5e9f0;box-shadow:0 2px 8px #0000000d;overflow:hidden}.grid-inner{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px;min-width:1200px}thead tr{background:#f1f3f7;border-bottom:2px solid #e5e9f0}thead th{padding:13px 16px;text-align:left;font-weight:600;color:#5c739c;font-size:11px;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}thead th.col-invoice{background:#f1f5fb;border-left:2px solid #d7e3f7}tbody tr{border-bottom:1px solid #f1f3f7;transition:background .12s}tbody tr:last-child{border-bottom:none}tbody tr:hover{background:#f1f3f7}tbody td{padding:10px 16px;color:#112a55;vertical-align:middle}tbody td.col-invoice{background:#f9fbff;border-left:2px solid #d7e3f7}tbody tr:hover td.col-invoice{background:#f1f5fb}.pivot-wrap{background:#fff;border-radius:14px;border:1px solid #e5e9f0;box-shadow:0 2px 8px #0000000d;padding:16px 18px;margin-bottom:18px}.pivot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.pivot-title{font-size:13px;font-weight:600;color:#112a55;text-transform:uppercase;letter-spacing:.5px}.pivot-filter{width:auto;flex:0 0 auto;padding:5px 10px;border:1px solid #e5e9f0;border-radius:6px;font-size:12px;background:#fff;color:#112a55;outline:none;cursor:pointer}.pivot-filter:focus{border-color:#1f4988}.pivot-inner{overflow-x:auto}.pivot-table{width:100%;border-collapse:collapse;font-size:12px}.pivot-table thead th{padding:8px 6px;text-align:right;font-weight:600;color:#5c739c;font-size:11px;text-transform:uppercase;letter-spacing:.3px;background:#f1f3f7;border-bottom:1px solid #e5e9f0;white-space:nowrap}.pivot-table thead th:first-child{text-align:left}.pivot-table tbody th{padding:8px 10px;text-align:left;font-weight:600;color:#112a55;background:#f9fbff;border-bottom:1px solid #f1f3f7;white-space:nowrap}.pivot-table tbody td{padding:8px 10px;text-align:right;color:#112a55;border-bottom:1px solid #f1f3f7;white-space:nowrap;font-variant-numeric:tabular-nums}.pivot-table tr.pivot-grand-total th,.pivot-table tr.pivot-grand-total td{background:#f1f5fb;font-weight:700;color:#16a34a;border-top:2px solid #d7e3f7;border-bottom:none}.pivot-table tr.pivot-grand-total th{color:#112a55}thead th.sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none}thead th.sortable-th:hover .sortable-label{color:#1f4988}.sortable-indicator{margin-left:5px;font-size:10px;color:#c7d0e6}thead th.sortable-active .sortable-indicator{color:#1f4988}thead tr.filter-row{background:#f9fbff;border-bottom:1px solid #e5e9f0}thead tr.filter-row th{padding:6px 10px;font-weight:400;text-transform:none;letter-spacing:0}.col-filter{width:100%;min-width:90px;padding:5px 8px;border:1px solid #e5e9f0;border-radius:6px;background:#fff;font-size:12px;color:#112a55;outline:none;box-sizing:border-box}.col-filter:focus{border-color:#1f4988}.contract-link{color:#112a55;font-weight:600;cursor:pointer;border-bottom:1.5px solid transparent;transition:color .15s,border-color .15s}.contract-link:hover{color:#1f4988;border-bottom-color:#1f4988}.contract-id-code{background:#f1f3f7;padding:2px 7px;border-radius:5px;font-size:12px}.total-value-cell{font-weight:600;color:#16a34a}.payment-terms-cell{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editable-cell{position:relative;min-width:100px}.cell-display{display:flex;align-items:center;gap:6px;cursor:pointer;padding:5px 8px;border-radius:6px;border:1.5px solid transparent;transition:border-color .15s,background .15s;min-height:32px;font-size:13px;color:#112a55}.cell-display:hover{border-color:#a2c1f1;background:#f1f5fb}.cell-display .cell-placeholder{color:#aab2c0;font-style:italic;font-size:12px}.cell-display .edit-icon{opacity:0;color:#7e8eac;font-size:11px;transition:opacity .15s;flex-shrink:0}.cell-display:hover .edit-icon{opacity:1}.cell-input{width:100%;padding:5px 8px;border:1.5px solid #1f4988;border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:#fff;box-shadow:0 0 0 3px #1f49881f;color:#112a55}.cell-input::-webkit-calendar-picker-indicator{opacity:.6;cursor:pointer}.multiselect-popover{position:absolute;top:100%;left:0;z-index:50;margin-top:4px;min-width:200px;max-height:240px;overflow-y:auto;background:#fff;border:1.5px solid #1f4988;border-radius:8px;box-shadow:0 8px 24px #0a14321f;padding:6px}.multiselect-option{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px;color:#112a55;font-weight:400;text-transform:none;letter-spacing:0}.multiselect-option:hover{background:#f1f5fb}.multiselect-option input[type=checkbox]{width:auto;margin:0;cursor:pointer}.multiselect-empty{padding:10px;color:#7e8eac;font-size:12px;font-style:italic;text-align:center}.checkbox-list{display:flex;flex-wrap:wrap;gap:8px 16px;border:1.5px solid #e5e9f0;border-radius:8px;padding:10px 12px;background:#fff;max-height:160px;overflow-y:auto}.checkbox-list-item{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#112a55;font-weight:400;text-transform:none;letter-spacing:0;cursor:pointer}.checkbox-list-item input[type=checkbox]{width:auto;margin:0;cursor:pointer}.checkbox-list-empty{color:#7e8eac;font-size:12px;font-style:italic}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600}.badge-one{background:#ede9fe;color:#6d28d9}.badge-month{background:#fff4d1;color:#92660b}.badge-quart{background:#d7e3f7;color:#1f4988}.badge-mile{background:#d1fae5;color:#065f46}.milestone-sub{font-size:11px;color:#7e8eac;margin-top:3px}.empty-state{padding:60px 20px;text-align:center;color:#7e8eac}.empty-state p{font-size:14px;margin-top:12px}.icon-btn{width:28px;height:28px;border-radius:6px;border:1px solid #e5e9f0;background:#f1f3f7;cursor:pointer;color:#7e8eac;font-size:13px}.icon-btn:hover{background:#ffe4e6;border-color:#fca5a5;color:#dc2626}.icon-btn-edit:hover{background:#e0ecff;border-color:#93b8f5;color:#2c5fc1}.bulk-actions{display:flex;gap:8px;margin-bottom:12px;justify-content:space-between;align-items:center}.toolbar-left{display:flex;gap:8px;align-items:center}.grid-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid #f1f3f7;background:#f9fbff}.btn-bulk{padding:6px 14px;font-size:12px;font-weight:600;background:#fff;border:1px solid #e5e9f0;border-radius:7px;color:#22304b;cursor:pointer;font-family:inherit}.btn-bulk:hover{background:#f1f5fb;border-color:#1f4988;color:#1f4988}.btn-bulk:disabled{opacity:.6;cursor:not-allowed}.btn-bulk:disabled:hover{background:#fff;border-color:#e5e9f0;color:#22304b}.subtable-actions{display:flex;justify-content:flex-end;gap:8px;align-items:center;margin-bottom:8px}.view-toggle{display:inline-flex;gap:0;margin-bottom:16px;background:#f1f3f7;border-radius:9px;padding:3px}.btn-toggle{padding:7px 16px;font-size:12px;font-weight:600;background:transparent;border:none;border-radius:7px;color:#5c739c;cursor:pointer;font-family:inherit;transition:background .12s,color .12s}.btn-toggle:hover{color:#112a55}.btn-toggle.active{background:#fff;color:#112a55;box-shadow:0 1px 3px #0a143214}.monthly-view{display:flex;flex-direction:column;gap:20px}.monthly-year{font-size:11px;font-weight:600;color:#7e8eac;text-transform:uppercase;letter-spacing:.5px}.monthly-section{display:flex;flex-direction:column;gap:8px}.monthly-section-title{font-size:13px;font-weight:700;color:#112a55;border-left:3px solid #1f4988;padding:6px 4px 6px 10px}.monthly-table{font-size:12px;min-width:0}.monthly-table thead th:first-child,.monthly-table tbody td:first-child,.monthly-table tfoot th:first-child{min-width:160px}.col-expand{width:36px;padding-left:12px!important;padding-right:4px!important}.expand-btn{width:22px;height:22px;border-radius:5px;border:1px solid #e5e9f0;background:#fff;cursor:pointer;color:#1f4988;font-size:14px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0}.expand-btn:hover{background:#f1f5fb;border-color:#1f4988}tr.expanded-row,tr.expanded-row:hover{background:#f9fbff}tr.expanded-row>td{padding:12px 24px 16px 56px;border-bottom:1px solid #f1f3f7}.assignments-subtable{background:#fff;border:1px solid #e5e9f0;border-radius:10px;overflow-x:auto}.subtable-notice{padding:14px;color:#7e8eac;font-style:italic;font-size:12px;text-align:center}table.subtable{width:100%;min-width:0;border-collapse:collapse;font-size:12px}table.subtable thead th{padding:8px 12px;text-align:left;font-weight:600;color:#5c739c;font-size:10px;text-transform:uppercase;letter-spacing:.5px;background:#f1f3f7;border-bottom:1px solid #e5e9f0;white-space:nowrap}table.subtable tbody td{padding:6px 12px;color:#112a55;border-bottom:1px solid #f1f3f7}table.subtable tbody tr:last-child td{border-bottom:none}table.subtable .subtable-empty{text-align:center;color:#7e8eac;font-style:italic;padding:14px}table.subtable tfoot tr.subtable-total th,table.subtable tfoot tr.subtable-total td{padding:8px 12px;background:#f1f5fb;border-top:1.5px solid #d7e3f7;font-weight:700;color:#112a55;font-size:12px}table.subtable tfoot tr.subtable-total th{text-align:right;text-transform:uppercase;letter-spacing:.5px;color:#5c739c}table.subtable th.month-col,table.subtable td.month-col{min-width:72px;padding-left:8px;padding-right:8px;text-align:right;font-variant-numeric:tabular-nums}table.subtable td.month-col .editable-cell{min-width:0}table.subtable td.month-col .cell-display{padding:4px 6px;min-height:26px;justify-content:flex-end}table.subtable td.month-col .cell-input{text-align:right;padding:4px 6px}.overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0a143273;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;align-items:center;justify-content:center}.overlay.open{display:flex}.modal{background:#fff;border-radius:16px;width:680px;max-width:95vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #00000040;animation:slideUp .22s ease}.modal-lg{width:760px}@keyframes slideUp{0%{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 28px 18px;border-bottom:1px solid #f1f3f7;position:sticky;top:0;background:#fff;z-index:10}.modal-title{font-size:17px;font-weight:700;color:#112a55}.modal-subtitle{font-size:12px;color:#7e8eac;font-weight:400;margin-top:2px}.modal-close{width:30px;height:30px;border-radius:50%;border:none;background:#f1f3f7;cursor:pointer;font-size:16px;color:#5c739c;flex-shrink:0}.modal-close:hover{background:#e5e9f0}.modal-body{padding:24px 28px}.section-label{font-size:11px;font-weight:700;color:#7e8eac;text-transform:uppercase;letter-spacing:.6px;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid #f1f3f7;grid-column:1/-1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full{grid-column:1 / -1}label{font-size:11px;font-weight:700;color:#7e8eac;text-transform:uppercase;letter-spacing:.5px}input[type=text],input[type=date],input[type=number],select,textarea{border:1.5px solid #e5e9f0;border-radius:8px;padding:9px 12px;font-size:14px;color:#112a55;font-family:inherit;outline:none;background:#fff;width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:#1f4988;box-shadow:0 0 0 3px #1f49881f}textarea{resize:vertical;min-height:70px}.modal-footer{display:flex;justify-content:space-between;align-items:center;padding:18px 28px;border-top:1px solid #f1f3f7;position:sticky;bottom:0;background:#fff}.modal-footer-right{display:flex;gap:10px}.btn-cancel{background:#f1f3f7;color:#22304b;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none}.btn-cancel:hover{background:#e5e9f0}.btn-danger{background:#fff;color:#dc2626;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:1.5px solid #fca5a5}.btn-danger:hover{background:#ffe4e6}.invoice-section{background:#f1f5fb;border:1.5px solid #a2c1f1;border-radius:10px;padding:16px;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:18px}.invoice-section-title{grid-column:1/-1;font-size:11px;font-weight:700;color:#1f4988;text-transform:uppercase;letter-spacing:.6px;margin-bottom:2px}.milestones-section{grid-column:1 / -1;display:flex;flex-direction:column;gap:12px}.milestones-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#f0fdf4;border:1.5px solid #bbf7d0;border-radius:10px}.milestones-header-left{display:flex;align-items:center;gap:8px}.milestones-header-label{font-size:12px;font-weight:700;color:#065f46;text-transform:uppercase;letter-spacing:.5px}.milestones-header-count{font-size:11px;color:#16a34a;background:#dcfce7;padding:2px 8px;border-radius:20px;font-weight:600}.btn-add-milestone{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:7px;font-size:12px;font-weight:700;cursor:pointer;border:1.5px solid #16a34a;background:#fff;color:#16a34a}.btn-add-milestone:hover{background:#f0fdf4}.milestone-rows{display:flex;flex-direction:column;gap:8px}.milestone-row{display:grid;grid-template-columns:1fr 140px 130px 32px;gap:8px;align-items:center;background:#f8faff;border:1.5px solid #e5e9f0;border-radius:9px;padding:10px 12px}.milestone-row input{font-size:13px;padding:7px 10px}.milestone-col-labels{display:grid;grid-template-columns:1fr 140px 130px 32px;gap:8px;padding:0 12px}.milestone-col-label{font-size:10px;font-weight:700;color:#7e8eac;text-transform:uppercase;letter-spacing:.4px}.milestone-remove{width:28px;height:28px;border-radius:6px;border:1px solid #e5e9f0;background:#fff;cursor:pointer;color:#7e8eac;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.milestone-remove:hover{background:#ffe4e6;border-color:#fca5a5;color:#dc2626}.milestone-total{display:flex;justify-content:flex-end;align-items:center;gap:6px;padding:6px 12px 2px;font-size:12px;color:#5c739c}.milestone-total strong{color:#16a34a;font-size:14px}.opex-wrap{overflow:hidden}.opex-table{min-width:max-content}.opex-table thead th{background:#f1f3f7;position:sticky;top:0;z-index:2}.opex-table thead th.opex-name-col{left:0;z-index:3}.opex-table tbody td.opex-name-col{position:sticky;left:0;background:#fff;z-index:1}.opex-table tbody tr:hover td.opex-name-col{background:#f1f3f7}.opex-name-col{min-width:260px;max-width:260px;box-shadow:1px 0 #e5e9f0}.opex-month-col{min-width:110px;text-align:right;font-variant-numeric:tabular-nums}.opex-month-col .editable-cell{min-width:0}.opex-month-col .cell-display{justify-content:flex-end}.opex-month-col .cell-input{text-align:right}.opex-actions-col{width:80px;text-align:right;white-space:nowrap}tr.opex-group>td{background:#f1f5fb;font-weight:600}tr.opex-group:hover>td{background:#e6f0ff}tr.opex-group td.opex-name-col{background:#f1f5fb!important;color:#112a55}tr.opex-group:hover td.opex-name-col{background:#e6f0ff!important}.opex-group-name .opex-name-wrap{display:flex;align-items:center;gap:8px}.opex-group-name .editable-cell{flex:1;min-width:0}.expand-btn-spacer{display:inline-block;width:22px;height:22px;flex-shrink:0}tr.opex-sub td.opex-name-col{padding-left:44px}tr.opex-total>td{background:#f9fbff;font-weight:600;color:#16a34a}tr.opex-total:hover>td{background:#f4f8ff}tr.opex-total td.opex-name-col{background:#f9fbff!important;color:#22304b;text-transform:uppercase;font-size:11px;letter-spacing:.5px;padding-left:44px}tr.opex-total:hover td.opex-name-col{background:#f4f8ff!important}.opex-total-cell{text-align:right;font-variant-numeric:tabular-nums;padding-right:16px}.opex-add-row{text-align:left;padding:14px 16px!important;background:#f9fbff;position:sticky;left:0}.opex-summary{margin-bottom:18px}.opex-summary .pivot-inner{overflow-x:auto}.opex-summary-table{min-width:max-content}.opex-summary-table th,.opex-summary-table td{padding:8px 10px;text-align:right;font-size:12px}.opex-summary-table thead th{background:#f1f3f7;position:sticky;top:0;z-index:2}.opex-summary-table thead th.opex-summary-name-col,.opex-summary-table tbody th.opex-summary-name-col{position:sticky;left:0;background:#fff;z-index:1;text-align:left;min-width:200px;box-shadow:1px 0 #e5e9f0;font-weight:600;color:#112a55}.opex-summary-table thead th.opex-summary-name-col{background:#f1f3f7;z-index:3}.opex-summary-table tr.pivot-grand-total th.opex-summary-name-col,.opex-summary-table tr.pivot-grand-total td{background:#f1f5fb;font-weight:700;color:#112a55}.cashflow-widget{margin-bottom:18px}.cashflow-widget .pivot-inner{overflow-x:auto}.cashflow-table{min-width:max-content}.cashflow-table th,.cashflow-table td{padding:8px 10px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.cashflow-table thead th{background:#f1f3f7;position:sticky;top:0;z-index:2}.cashflow-table thead th.cashflow-name-col,.cashflow-table tbody th.cashflow-name-col{position:sticky;left:0;z-index:1;text-align:left;min-width:180px;box-shadow:1px 0 #e5e9f0;font-weight:600;color:#112a55;background:#fff}.cashflow-table thead th.cashflow-name-col{background:#f1f3f7;z-index:3}.cashflow-table tbody tr:hover th.cashflow-name-col,.cashflow-table tbody tr:hover td{background:#f1f3f7}.cashflow-editable{padding:2px 10px!important;min-width:110px}.cashflow-editable .editable-cell{min-width:0}.cashflow-editable .cell-display{justify-content:flex-end;padding:4px 0;min-height:26px}.cashflow-editable .cell-input{text-align:right;padding:4px 6px}.cashflow-starting th.cashflow-name-col,.cashflow-starting td{background:#f1f5fb!important;font-weight:700;color:#112a55}.cashflow-starting:hover th.cashflow-name-col,.cashflow-starting:hover td{background:#e6f0ff!important}.cashflow-negative{color:#dc2626!important}.cashflow-incoming th.cashflow-name-col,.cashflow-incoming td{background:#f0fdf4!important;font-weight:600;color:#16a34a}.cashflow-expense th.cashflow-name-col,.cashflow-expense td{background:#fff7ed!important;font-weight:600;color:#c2410c}.profitability-widget{margin-bottom:18px}.profitability-table{width:100%}.profitability-table th,.profitability-table td{padding:8px 12px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.profitability-table thead th{background:#f1f3f7}.profitability-table thead th.profitability-name-col,.profitability-table tbody th.profitability-name-col{text-align:left;font-weight:600;color:#112a55;background:#fff;width:1%;white-space:nowrap}.profitability-table thead th.profitability-name-col,.profitability-table tbody tr:hover th,.profitability-table tbody tr:hover td{background:#f1f3f7}.profitability-positive{color:#16a34a;font-weight:600}.profitability-negative{color:#dc2626;font-weight:600}.profitability-empty{padding:24px;text-align:center;color:#7e8eac;font-style:italic}.money-negative{color:#dc2626!important}.cell-overridden .cell-val{color:#dc2626;font-weight:700}.employee-name-link{background:none;border:none;padding:0;font:inherit;color:#1f4988;font-weight:600;cursor:pointer;text-align:left}.employee-name-link:hover{text-decoration:underline}.salary-chart{display:block}.salary-chart-meta{display:flex;gap:36px;flex-wrap:wrap;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #f1f3f7}.salary-chart-meta-item{display:flex;flex-direction:column;gap:3px}.salary-chart-meta-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#8a91a0}.salary-chart-meta-value{font-size:15px;font-weight:700;color:#112a55}.salary-chart-empty{padding:32px;text-align:center;color:#7e8eac;font-style:italic}.salary-chart-legend{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:12px;font-size:12px;color:#5c739c}.salary-chart-legend .legend-item{display:inline-flex;align-items:center;gap:6px}.salary-chart-legend .legend-swatch{width:16px;height:3px;border-radius:2px;display:inline-block}.salary-chart-legend .legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.form-group .editable-cell{min-width:0}.form-group .editable-cell .cell-display{border:1.5px solid #e5e9f0;border-radius:8px;min-height:40px;padding:9px 12px}.form-group .editable-cell .cell-display:hover{border-color:#1f4988}.form-group .editable-cell .edit-icon{opacity:.6;margin-left:auto}.revenue-by-client-widget{margin-bottom:18px}.revenue-bars{display:flex;flex-direction:column;gap:10px;padding:4px 2px}.revenue-bar-row{display:grid;grid-template-columns:160px 44px 1fr 110px;align-items:center;gap:12px}.revenue-bar-label{font-size:12px;font-weight:600;color:#112a55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revenue-bar-pct{font-size:12px;font-weight:700;color:#5c739c;text-align:right;font-variant-numeric:tabular-nums}.revenue-bar-track{background:#f1f3f7;border-radius:6px;height:22px;overflow:hidden}.revenue-bar-fill{height:100%;min-width:2px;border-radius:6px;background:linear-gradient(90deg,#1f4988,#2c5fc1);transition:width .25s ease}.revenue-bar-value{text-align:right;font-size:12px;font-weight:700;color:#112a55;font-variant-numeric:tabular-nums}.expand-toolbar{display:flex;gap:8px;padding:10px 16px;border-bottom:1px solid #f1f3f7;background:#f9fbff;justify-content:space-between;align-items:center}.invoices-subtable{padding:4px 0}.invoices-subtable-title{font-size:11px;font-weight:700;color:#5c739c;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}.invoices-table{min-width:600px}.invoices-table thead th{font-size:10px}.invoices-table tbody tr.invoice-row-planned td,.invoices-table tbody tr.invoice-row-planned .editable-cell .cell-placeholder{color:#9ca3af}.invoice-amount-cell{text-align:right;font-variant-numeric:tabular-nums}.invoice-actual-cell .editable-cell{min-width:140px}.view-switcher{display:inline-flex;gap:4px;background:#eef1f8;border-radius:8px;padding:4px;margin-bottom:14px}.view-switcher-btn{background:transparent;border:none;padding:7px 16px;border-radius:6px;font-size:12px;font-weight:600;color:#5c739c;cursor:pointer;font-family:inherit;transition:background .15s,color .15s}.view-switcher-btn:hover{color:#112a55}.view-switcher-btn-active{background:#fff;color:#1f4988;box-shadow:0 1px 2px #00000014}.invoices-view-table tbody tr.invoice-row-planned td,.invoices-view-table tbody tr.invoice-row-planned .editable-cell .cell-placeholder{color:#9ca3af}.invoices-view-table .invoice-actual-cell{min-width:180px}.empty-state-row{padding:24px;text-align:center;color:#7e8eac;font-style:italic}.salaries-table{min-width:max-content}.salaries-table th.salary-emp-col{min-width:180px}.salaries-table th.salary-field-col{min-width:80px}.salaries-table th.salary-annual-col,.salaries-table td.salary-annual-cell{background:#f1f5fb;border-left:2px solid #d7e3f7;min-width:110px;text-align:right;font-weight:700}.salaries-table td.salary-annual-cell{color:#1f4988;font-variant-numeric:tabular-nums}.salary-emp-name{font-weight:700;color:#112a55;background:#f9fbff;vertical-align:middle;border-right:1px solid #e5e9f0}.salary-field-label{font-size:11px;font-weight:700;color:#5c739c;text-transform:uppercase;letter-spacing:.5px}tr.salary-row-brutto td{background:#f1f5fb}tr.salary-row-brutto td.salary-field-label{color:#1f4988}tr.salary-row-brutto td.salary-annual-cell{background:#e5edf8;color:#1f4988}tr.salary-row-brutto:hover td{background:#e5edf8}tr.salary-emp-divider>td{border-top:2px solid #e5e9f0}tr.salary-emp-divider .salary-emp-name{border-top:2px solid #e5e9f0}.monthly-table .month-col .editable-cell{min-width:0}.monthly-table .month-col .cell-display{justify-content:flex-end;padding:4px 6px;min-height:26px}.monthly-table .month-col .cell-input{text-align:right;padding:4px 6px}.add-employee-select{padding:7px 28px 7px 12px;border-radius:8px;border:1px solid #e5e9f0;background:#fff;color:#1f4988;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;outline:none;letter-spacing:.2px;transition:border-color .15s,background .15s}.add-employee-select:hover:not(:disabled){border-color:#1f4988;background:#f1f5fb}.add-employee-select:disabled{opacity:.6;cursor:not-allowed}.add-employee-empty{font-size:12px;color:#7e8eac;font-style:italic}.bonus-cell{display:flex;align-items:center;gap:6px;cursor:pointer;padding:5px 8px;border-radius:6px;border:1.5px solid transparent;transition:border-color .15s,background .15s;min-height:32px;font-size:13px}.bonus-cell:hover{border-color:#a2c1f1;background:#f1f5fb}.bonus-cell .cell-placeholder{color:#aab2c0;font-style:italic;font-size:12px}.bonus-cell .edit-icon{opacity:0;color:#7e8eac;font-size:11px;transition:opacity .15s;flex-shrink:0;margin-left:auto}.bonus-cell:hover .edit-icon{opacity:1}.bonus-month{color:#7e8eac;font-weight:400;font-size:11px}.invoices-view-table .invoice-owner-cell{min-width:200px}.invoices-view-table .invoice-owner-cell .editable-cell{min-width:0}.invoice-actual-wrap{display:flex;align-items:center;gap:8px}.invoice-status-overdue .cell-display{background:#fee2e2;border-color:#fca5a5}.invoice-status-overdue .cell-display .cell-placeholder{color:#b91c1c!important;font-style:normal;font-weight:600}.invoice-status-overdue .cell-display .cell-val{color:#b91c1c}.invoice-status-done .cell-display{background:#dcfce7;border-color:#86efac}.invoice-status-done .cell-display .cell-val{color:#15803d;font-weight:600}.invoice-upcoming-warning{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#dc2626;color:#fff;font-weight:700;font-size:13px;line-height:1;flex-shrink:0}.cell-bonus{background:#fff7ed;box-shadow:inset 0 0 0 1.5px #fdba74}.cell-bonus .cell-display{background:transparent}.cell-bonus .cell-val{color:#c2410c;font-weight:700}.cell-bonus .cell-display:hover{background:#ffedd5;border-color:#fdba74}.profitability-strip{display:flex;flex-wrap:wrap;gap:24px;padding:10px 16px;background:#f9fbff;border:1px solid #e5e9f0;border-radius:10px;margin-bottom:8px}.profitability-strip-item{display:flex;flex-direction:column;gap:2px;min-width:110px}.profitability-strip-label{font-size:10px;font-weight:600;color:#7e8eac;text-transform:uppercase;letter-spacing:.5px}.profitability-strip-value{font-size:14px;font-weight:600;color:#112a55;font-variant-numeric:tabular-nums}.ct-sync-wrap{position:relative}.ct-sync-trigger{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid #e5e9f0;border-radius:8px;background:#fff;color:#112a55;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:border-color .15s,background .15s}.ct-sync-trigger:hover{border-color:#a2c1f1;background:#f1f5fb}.ct-sync-trigger .ct-status-dot{width:8px;height:8px;border-radius:50%;background:#c7d0e6;flex-shrink:0}.ct-sync-trigger .ct-status-dot.ok{background:#16a34a}.ct-sync-trigger .ct-status-dot.error{background:#b41c1c}.ct-sync-trigger .ct-status-dot.running{background:#1f4988;animation:ct-pulse 1.2s ease-in-out infinite}@keyframes ct-pulse{0%,to{opacity:1}50%{opacity:.35}}.ct-sync-popover{position:absolute;top:calc(100% + 6px);right:0;min-width:280px;background:#fff;border:1px solid #e5e9f0;border-radius:14px;box-shadow:0 8px 24px #3744561f;padding:12px;z-index:30}.ct-sync-popover-title{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:#5c739c;font-weight:600;margin-bottom:8px}.ct-sync-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 6px;border-radius:8px}.ct-sync-row:hover{background:#f1f5fb}.ct-sync-row .btn-sync{padding:5px 12px;border-radius:6px;background:#f1f5fb;border:1px solid #d7e3f7;color:#1f4988;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit;transition:background .15s}.ct-sync-row .btn-sync:hover{background:#d7e3f7}.ct-sync-row .btn-sync:disabled{opacity:.6;cursor:not-allowed}.ct-sync-row .btn-sync.btn-sync-primary{background:#1f4988;color:#fff;border-color:#1f4988}.ct-sync-row .btn-sync.btn-sync-primary:hover{background:#16386b}.ct-sync-meta{font-size:11px;color:#7e8eac;font-variant-numeric:tabular-nums}.ct-sync-meta.ok{color:#16a34a}.ct-sync-meta.error{color:#b41c1c}.badge-ok{background:#e7f7e7;color:#146c14}.badge-error{background:#fde8e8;color:#b41c1c;cursor:help}.badge-muted{background:#eee;color:#666}.input-locked-wrap{position:relative}.input-locked{width:100%;padding:8px 32px 8px 12px;border:1px solid #d7e3f7;border-radius:8px;background:#f1f5fb;color:#112a55;font-size:13px;font-family:inherit;cursor:default;outline:none}.input-locked-icon{position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#1f4988;opacity:.55;font-size:12px;pointer-events:none;-webkit-user-select:none;user-select:none}tbody tr.row-local-only td:first-child{box-shadow:inset 2px 0 #f3a847}.filter-toggle{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#555;margin:0 8px;cursor:pointer;-webkit-user-select:none;user-select:none}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f9fbff;padding:32px}.login-card{background:#fff;border:1px solid #e5e9f0;border-radius:14px;box-shadow:0 4px 16px #37445614;padding:40px 48px;display:flex;flex-direction:column;align-items:center;gap:16px;min-width:320px}.login-card .logo{font-size:26px}.login-subtitle{color:#5c739c;font-size:14px;margin:0}.login-btn{margin-top:8px;min-width:220px;justify-content:center}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#5c739c;font-size:14px}.user-menu-wrap{position:relative}.user-menu-trigger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;border:1px solid #e5e9f0;background:#f1f5fb;color:#1f4988;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s;font-family:inherit}.user-menu-trigger:hover{background:#d7e3f7;border-color:#a2c1f1}.user-initials{letter-spacing:.5px}.user-menu-popover{position:absolute;top:calc(100% + 6px);right:0;min-width:240px;background:#fff;border:1px solid #e5e9f0;border-radius:14px;box-shadow:0 8px 24px #3744561f;padding:12px 16px;z-index:40}.user-menu-name{font-size:14px;font-weight:700;color:#112a55}.user-menu-email{font-size:12px;color:#5c739c;margin-top:2px}.user-menu-divider{border:none;border-top:1px solid #e5e9f0;margin:10px 0}.user-menu-item{background:transparent;border:none;color:#112a55;font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;width:100%;text-align:left;font-family:inherit}.user-menu-item:hover{color:#b41c1c}.payments-wrap{overflow-x:auto}.payments-table{min-width:max-content;border-collapse:separate;border-spacing:0}.payments-table th,.payments-table td{padding:6px 8px;font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums;border-bottom:1px solid #eef0f5}.payments-table thead th{background:#f1f3f7;color:#112a55;position:sticky;top:0;z-index:2;text-align:center;font-weight:600}.payments-table thead th.payments-name-col{left:0;z-index:3;text-align:left}.payments-table tbody td.payments-name-col{position:sticky;left:0;background:#fff;z-index:1;min-width:260px;max-width:260px;box-shadow:1px 0 #e5e9f0;text-align:left}.payments-name-col{min-width:260px;max-width:260px}.payments-month-header{border-left:1px solid #e5e9f0;text-transform:uppercase;font-size:11px;letter-spacing:.5px}.payments-planned-header,.payments-actual-header{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#6b7589;min-width:100px}.payments-planned-header{border-left:1px solid #e5e9f0}.payments-planned-col,.payments-actual-col{min-width:100px;text-align:right}.payments-planned-col{border-left:1px solid #f0f2f7}.payments-actual-col{background:#fbfcfe}.payments-actual-qbo{background:#f0f7f0;box-shadow:inset 2px 0 #2ca01c}.payments-planned-col .editable-cell,.payments-actual-col .editable-cell{min-width:0}.payments-planned-col .cell-display,.payments-actual-col .cell-display{justify-content:flex-end}.payments-planned-col .cell-input,.payments-actual-col .cell-input{text-align:right}.payments-derived{color:#22304b;padding:0 6px}tr.payments-section>td{background:#e6f0ff}tr.payments-section td.payments-section-name{font-weight:700;color:#0b3b66;text-transform:uppercase;font-size:12px;letter-spacing:.6px;padding:10px 12px;position:sticky;left:0}tr.payments-subsection>td{background:#f1f5fb}tr.payments-subsection td.payments-subsection-name{font-weight:600;color:#16486f;font-size:12px;padding:8px 12px 8px 28px;position:sticky;left:0}tr.payments-data-row:hover td.payments-name-col{background:#f7f9fc}.payments-row-label{color:#112a55}.payments-custom-name{display:flex;align-items:center;gap:6px}.payments-custom-name .editable-cell{flex:1;min-width:0}tr.payments-subtotal>td{background:#eef4ff;font-weight:700;color:#16a34a;border-top:2px solid #c6d4ee}tr.payments-subtotal td.payments-total-name{background:#eef4ff!important;color:#2a3550;text-transform:uppercase;font-size:12px;letter-spacing:.6px;font-weight:700}tr.payments-section-total>td{background:#dde7f7;font-weight:800;color:#0b3b66;border-top:3px solid #0b3b66;border-bottom:2px solid #0b3b66}tr.payments-section-total td.payments-total-name{background:#dde7f7!important;color:#0b3b66;text-transform:uppercase;font-size:13px;letter-spacing:.8px;font-weight:800}.payments-total-cell{text-align:right;padding-right:12px;font-weight:inherit}.payments-add-row{padding:6px 12px;text-align:left;background:#fff}.payments-add-row .btn-bulk{padding:4px 10px;font-size:12px}tr.payments-starting-cash>td{background:#fefce8;font-weight:600}tr.payments-starting-cash td.payments-name-col{background:#fefce8!important;color:#713f12}
