:root{--page-bg: #f3f7ef;--surface: #fffefa;--surface-soft: #f8fbf4;--surface-hover: #f1f8ea;--ink: #1d2521;--ink-soft: #2c3731;--muted: #5d6a62;--muted-strong: #46564c;--line: #d7e1d1;--line-strong: #b9c9ae;--brand: #75ad43;--brand-strong: #4f8334;--brand-deep: #203a27;--brand-dark: #17291d;--brand-pale: #eaf5e2;--brand-paler: #f5faef;--danger: #b94d45;--danger-strong: #9f3933;--danger-pale: #fff1ef;--warning: #f2e7cf;--warning-ink: #775919;--info: #dfeaf4;--info-ink: #225d8a;color:var(--ink);background:var(--page-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--page-bg)}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.appShell{min-height:100vh}.topBar{padding:0 clamp(18px,4vw,44px);background:var(--surface);color:var(--ink);border-bottom:4px solid var(--brand);box-shadow:0 1px #17291d14}.topBarInner{display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(1340px,100%);min-height:108px;margin:0 auto;padding:18px 0}.brandGroup{display:flex;align-items:center;gap:28px;min-width:0}.brandLogo{display:block;width:clamp(220px,24vw,370px);max-width:44vw;height:auto;object-fit:contain;flex:0 1 auto}.titleGroup{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:clamp(20px,3vw,36px);row-gap:6px;min-width:0;border-left:1px solid var(--line-strong);padding-left:28px}.brand{margin:0;color:var(--brand-strong);font-size:.78rem;font-weight:700;letter-spacing:0;line-height:1.1;text-transform:uppercase;white-space:nowrap}h1,h2{margin:0;letter-spacing:0}h1{font-size:clamp(1.55rem,2.6vw,2.35rem);line-height:1.1}h2{font-size:1.25rem}.titleGroup h1{white-space:nowrap}.topActions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.userEmail{color:var(--muted);font-size:.88rem}.summaryBand{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.metric{min-width:0;padding:18px clamp(16px,3vw,32px);background:var(--surface)}.metric span{display:block;margin-bottom:6px;color:var(--muted);font-size:.76rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.metric strong{display:block;color:var(--ink);font-size:clamp(1.15rem,2vw,1.6rem);line-height:1.15;white-space:nowrap}.workSurface{width:min(1340px,calc(100vw - 32px));margin:24px auto 56px}.toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:14px}.filterField{display:grid;gap:6px;width:min(520px,100%)}.filterField span,.denialField span{color:var(--muted-strong);font-size:.78rem;font-weight:700;text-transform:uppercase}.filterField input,.denialField textarea{width:100%;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink);outline:none}.filterField input{height:42px;padding:0 12px}.denialField textarea{min-height:160px;padding:12px;resize:vertical}.filterField input:focus,.denialField textarea:focus{border-color:var(--brand-strong);box-shadow:0 0 0 3px #75ad4333}.toolbarMeta{color:var(--muted);font-size:.9rem;white-space:nowrap}.toggleField{display:inline-flex;align-items:center;gap:8px;min-height:42px;color:var(--ink-soft);font-weight:800;white-space:nowrap}.toggleField input{width:18px;height:18px;accent-color:var(--brand-strong)}.notice,.emptyState,.errorState{margin:12px 0;border-radius:6px;padding:13px 14px;font-weight:650}.notice{border:1px solid #bfd9b0;background:var(--brand-pale);color:#315f34}.emptyState{border:1px solid var(--line);background:var(--brand-paler);color:#54623d}.errorState{border:1px solid #e3b8b8;background:#fff1f1;color:#a33c3c}.compact{margin:0}.tableFrame,.miniTableFrame{overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.invoiceTable,.projectTable,.miniTable{width:100%;border-collapse:collapse;table-layout:fixed}.invoiceTable{min-width:0}.projectTable{min-width:1160px}.invoiceTable th,.invoiceTable td,.projectTable th,.projectTable td,.miniTable th,.miniTable td{border-bottom:1px solid var(--line);padding:11px 12px;text-align:left;vertical-align:middle}.invoiceTable th,.invoiceTable td{padding:8px 6px}.invoiceTable th,.projectTable th,.miniTable th{background:var(--brand-paler);color:var(--muted-strong);font-size:.72rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.invoiceTable td,.projectTable td,.miniTable td{color:var(--ink-soft);font-size:.92rem}.invoiceTable td{overflow-wrap:anywhere;font-size:.82rem;line-height:1.25}.invoiceTable th:nth-child(1){width:7%}.invoiceTable th:nth-child(2){width:7%}.invoiceTable th:nth-child(3){width:9.6%}.invoiceTable th:nth-child(4){width:11%}.invoiceTable th:nth-child(5){width:12%}.invoiceTable th:nth-child(6){width:11%}.invoiceTable th:nth-child(7){width:7.5%}.invoiceTable th:nth-child(8){width:7.5%}.invoiceTable th:nth-child(9){width:6.5%}.invoiceTable th:nth-child(10){width:8.4%}.invoiceTable th:nth-child(11){width:12.5%}.projectTable th:nth-child(1){width:34%}.projectTable th:nth-child(2){width:118px}.projectTable th:nth-child(3){width:102px}.projectTable th:nth-child(4),.projectTable th:nth-child(5),.projectTable th:nth-child(6),.projectTable th:nth-child(7){width:132px}.projectTable th:nth-child(8){width:116px}.projectNameCell{white-space:normal;line-height:1.3}.invoiceRow{transition:background .12s ease}.invoiceRow:hover,.invoiceRowOpen{background:var(--surface-hover)}.strong{font-weight:750}.numeric{text-align:right!important}.actionsHead{text-align:center!important}.rowActions{text-align:right}.rowActionButtons{display:flex;justify-content:flex-end;gap:5px;width:100%;min-width:0}.rowActionButtons .approveBtn{width:74px;padding:0 7px}.rowActionButtons .denyBtn{width:54px;padding:0 7px}.primaryBtn,.ghostBtn,.approveBtn,.denyBtn,.iconBtn{min-height:36px;border-radius:6px;border:1px solid transparent;padding:0 12px;font-weight:800;letter-spacing:0}.primaryBtn,.approveBtn{background:var(--brand-strong);color:#fff}.primaryBtn:hover,.approveBtn:hover{background:#3f6f2d}.denyBtn{background:var(--danger);color:#fff}.denyBtn:hover{background:var(--danger-strong)}.denyBtn.large{min-width:142px}.approveBtn.large{min-width:154px}.ghostBtn,.iconBtn{border-color:var(--line-strong);background:var(--surface);color:var(--ink-soft)}.ghostBtn:hover,.iconBtn:hover{background:var(--brand-paler)}.iconBtn{width:36px;padding:0;font-size:1rem}.status{display:inline-flex;align-items:center;justify-content:center;min-width:82px;height:28px;border-radius:999px;padding:0 10px;font-size:.78rem;font-weight:850}.statusPending{background:var(--warning);color:var(--warning-ink)}.statusApproved{background:var(--brand-pale);color:#315f34}.statusDenied{background:#f6dddd;color:#993a35}.statusPartial{background:var(--info);color:var(--info-ink)}.noActions{display:inline-flex;justify-content:center;width:100%;color:#85907f;font-weight:800}.projectHeader{display:flex;align-items:center;gap:16px;margin-bottom:16px}.projectHeader h2{color:var(--ink-soft);line-height:1.2}.projectEyebrow{margin-bottom:3px;color:var(--muted);font-size:.74rem;font-weight:850;text-transform:uppercase}.filterChips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.filterChip{min-height:34px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink-soft);padding:0 13px;font-weight:800}.filterChip:hover{background:var(--brand-paler)}.filterChipActive{border-color:var(--brand-strong);background:var(--brand-strong);color:#fff}.filterChipActive:hover{background:#3f6f2d}.detailRow td{background:var(--surface-soft);padding:0}.detailPanel{display:grid;gap:18px;padding:18px}.detailSummary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--line)}.detailSummary .metric{padding:14px 16px}.sectionTitle{margin-bottom:8px;color:var(--ink-soft);font-size:.9rem;font-weight:850}.denialDetails{border-left:4px solid var(--danger);border-radius:6px;background:var(--danger-pale);padding:12px 14px}.denialDetails p{margin:0 0 8px;color:#3d2a27;line-height:1.45;white-space:pre-wrap}.detailMeta{color:#765550;font-size:.82rem}.miniTable{table-layout:auto}.miniTable th,.miniTable td{font-size:.86rem;white-space:nowrap}.expenseMiniTable th:nth-child(4),.expenseMiniTable td:nth-child(4){text-align:center}.loginShell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#75ad4329,#203a2714),var(--page-bg)}.loginPanel{width:min(440px,100%);border-radius:8px;background:var(--surface);padding:28px;box-shadow:0 18px 50px #17291d2e}.loginLogo{display:block;width:min(310px,100%);height:auto;margin-bottom:22px}.loginPanel h1{color:var(--ink)}.loginPanel p{color:var(--muted);line-height:1.5}.modalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:20px;background:#17291d94}.modal{width:min(560px,100%);border-radius:8px;background:var(--surface);padding:22px;box-shadow:0 24px 70px #17291d40}.modalHeader,.modalActions{display:flex;align-items:center;justify-content:space-between;gap:14px}.modalHeader{margin-bottom:18px}.modalEyebrow{color:var(--danger);font-size:.76rem;font-weight:850;text-transform:uppercase}.approveEyebrow{color:var(--brand-strong)}.decisionSummary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--line)}.decisionSummary div{min-width:0;background:var(--surface);padding:13px 14px}.decisionSummary span{display:block;margin-bottom:5px;color:var(--muted);font-size:.72rem;font-weight:850;text-transform:uppercase}.decisionSummary strong{display:block;overflow-wrap:anywhere;color:var(--ink);font-size:1rem}.denialField{display:grid;gap:8px}.decisionHistory{display:grid;gap:10px}.decisionList{display:grid;gap:8px}.decisionItem{border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:12px}.decisionItemHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.decisionItem p{margin:10px 0 0;color:#3d2a27;line-height:1.45;white-space:pre-wrap}.modalActions{justify-content:flex-end;margin-top:18px}@media (max-width: 980px){.topBarInner,.toolbar,.projectHeader{align-items:flex-start;flex-direction:column}.brandGroup{align-items:flex-start;flex-direction:column;gap:12px}.brandLogo{width:min(370px,100%);max-width:100%}.titleGroup{border-left:0;padding-left:0}.topActions{justify-content:flex-start}.summaryBand,.detailSummary{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbarMeta{white-space:normal}.invoiceTable th,.invoiceTable td{padding:8px 5px}.invoiceTable td{font-size:.78rem}.status{min-width:0;width:100%;padding:0 5px;font-size:.7rem}.rowActionButtons{align-items:stretch;flex-direction:column}.rowActionButtons .approveBtn,.rowActionButtons .denyBtn{width:100%;min-height:32px}}@media (max-width: 760px){.invoiceTable,.invoiceTable tbody,.invoiceTable tr,.invoiceTable td{display:block;width:100%}.invoiceTable thead{display:none}.invoiceTable{table-layout:auto}.invoiceTable .invoiceRow{padding:10px}.invoiceTable .invoiceRow+.detailRow{border-top:0}.invoiceTable td{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:0;padding:6px 2px;text-align:right;font-size:.9rem}.invoiceTable td:before{content:attr(data-label);flex:0 0 112px;color:var(--muted-strong);font-size:.72rem;font-weight:800;text-align:left;text-transform:uppercase}.invoiceTable .numeric{text-align:right!important}.invoiceTable .rowActions{display:block;text-align:left}.invoiceTable .rowActions:before,.invoiceTable .detailRow td:before{content:none}.invoiceTable .detailRow td{display:block;padding:0;text-align:left}.rowActionButtons{flex-direction:row;justify-content:flex-start;margin-top:8px}.rowActionButtons .approveBtn,.rowActionButtons .denyBtn{width:96px}}@media (max-width: 620px){.topBar{padding:0 18px}.loginLogo{width:min(290px,100%)}.summaryBand,.detailSummary{grid-template-columns:1fr}.workSurface{width:calc(100vw - 20px);margin-top:14px}.rowActionButtons{flex-direction:column}.approveBtn,.denyBtn,.rowActionButtons .approveBtn,.rowActionButtons .denyBtn{width:100%}.modal{padding:18px}.decisionSummary{grid-template-columns:1fr}}
