feat: finance page overhaul, file access fix for clients and subcontractors

- Finance (TeamInvoices): chart + stat cards, Overview/Expenses/Subcontractors/Invoices/Legacy tabs
- Expenses tab: 70/30 card split with expense list + category breakdown, + Expense button
- Overview tab: 3 cards dynamic height filling window, .md-compliant table headers and sticky heads
- TaskDetail FileBrowser: role-based virtual paths so clients and subcontractors no longer get 403

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Krao Hasanee
2026-06-01 10:48:40 -04:00
parent 70ad8d0cef
commit ac3f08122d
8 changed files with 401 additions and 91 deletions
+12 -5
View File
@@ -11,7 +11,14 @@
--motion-fast: 160ms;
--motion-base: 220ms;
--motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
--h-control: 30px;
--btn-height: 22px;
--btn-padding-x: 12px;
--btn-radius: 8px;
--btn-font-size: 11px;
--btn-font-weight: 500;
--btn-letter-spacing: 0.8px;
--btn-line-height: 1;
--h-control: var(--btn-height);
--sidebar-bg: #0d0d0d;
--sidebar-text: #888888;
--sidebar-active-text: #ffffff;
@@ -997,10 +1004,10 @@ input.site-header-search[type="text"]:focus { border-color: var(--accent); }
/* Buttons */
.btn {
display: inline-flex; align-items: center; gap: 6px;
height: var(--h-control); padding: 0 12px; border-radius: 8px; font-size: 11px;
font-weight: 500; cursor: pointer; border: 1px solid transparent;
height: var(--btn-height); padding: 0 var(--btn-padding-x); border-radius: var(--btn-radius); font-size: var(--btn-font-size);
font-weight: var(--btn-font-weight); cursor: pointer; border: 1px solid transparent;
transition: all 0.15s; text-decoration: none; white-space: nowrap;
font-family: inherit; line-height: 1; letter-spacing: 0.8px; text-transform: uppercase;
font-family: inherit; line-height: var(--btn-line-height); letter-spacing: var(--btn-letter-spacing); text-transform: uppercase;
}
.btn:disabled {
opacity: 0.65;
@@ -1024,7 +1031,7 @@ input.site-header-search[type="text"]:focus { border-color: var(--accent); }
@keyframes btn-spin {
to { transform: rotate(360deg); }
}
.btn-sm { padding: 0 12px; font-size: 11px; line-height: 1; letter-spacing: 0.8px; text-transform: uppercase; }
.btn-sm { padding: 0 var(--btn-padding-x); font-size: var(--btn-font-size); line-height: var(--btn-line-height); letter-spacing: var(--btn-letter-spacing); text-transform: uppercase; }
.btn-primary { background: var(--accent); color: #111111; }
.btn-primary:hover { background: var(--accent-hover); }
.btn-outline { background: transparent; color: var(--text-primary); border: 1px solid var(--border); }