.expense-history-notice{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;padding:10px 12px;margin-bottom:12px;background:var(--warn-soft);border:1px solid var(--line-soft);border-radius:10px;overflow-wrap:anywhere}.expense-history-notice-title{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.expense-history-notice p{margin:5px 0 0}.expense-history-settings .input[type=datetime-local]{width:100%;min-width:0}.expense-history-settings .expense-history-reason{white-space:pre-wrap;overflow-wrap:anywhere}.supplier-receipt-inline{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:12px}.supplier-receipt-heading{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:8px}.supplier-receipt-note{margin:8px 0 0}.supplier-receipt-source{display:inline-block;margin-inline-start:8px;color:var(--ink-3);font-size:.86em}.supplier-receipt-compare{margin-top:10px}.supplier-receipt-compare summary{cursor:pointer;width:fit-content}.supplier-receipt-compare section>p{margin-bottom:6px}.cost-documents>p:first-child{margin-top:0}.cost-documents .tabs{flex-wrap:wrap;margin-bottom:10px}.cost-document-upload{margin:8px 0 12px;padding:9px 11px;background:var(--accent-soft);border-radius:9px}.cost-document-upload[open] summary{margin-bottom:10px}.cost-document-list{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px}.cost-document-list li{display:grid;gap:8px;padding:9px 11px;border:1px solid var(--line);border-radius:9px}.cost-document-name{min-width:0;overflow-wrap:anywhere}.cost-document-name>*{margin-bottom:3px}.cost-document-fields{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.cost-document-fields label{display:grid;gap:3px;color:var(--ink-2)}.cost-document-link{padding-inline:3px;white-space:nowrap}@media (max-width: 680px){.cost-documents :is(.btn,.tab,.select,.input){min-height:44px}}.finance-mobile-list{display:none}.finance-payment-action{gap:3px;padding-inline:4px;white-space:nowrap;color:var(--accent-2)}.finance-secondary-panels{margin-top:14px;scroll-margin-top:85px}.finance-filter-box{padding:14px;border-bottom:1px solid var(--line-soft)}.finance-advanced-filters{margin-top:8px;padding:11px;border:1px solid var(--line-soft);border-radius:10px;background:#faf8fe}.finance-advanced-filters p{margin:7px 0 0}.cost-invoice-filters{margin-top:9px}.cost-applicant{margin-top:3px;overflow-wrap:anywhere}.cost-invoice-cell{display:grid;gap:4px;justify-items:start}@media (max-width: 680px){.finance-desktop-results{display:none}.finance-quick-filters>.input{flex-basis:100%}.finance-filter-box :is(.btn,.input,.select){min-height:44px}.finance-mobile-list{display:grid;gap:8px;list-style:none;padding:10px;margin:0;background:#f8f7fd}.finance-mobile-card{display:grid;gap:7px;padding:12px;background:var(--card);border:1px solid var(--line);border-radius:12px}.finance-mobile-heading{display:flex;gap:8px;align-items:flex-start;justify-content:space-between}.finance-mobile-heading>div{min-width:0;overflow-wrap:anywhere}.finance-mobile-heading :is(a,strong){font-weight:680}.finance-mobile-heading a{color:var(--accent-2)}.finance-mobile-heading .badge{flex-shrink:0}.finance-mobile-heading .finance-payment-action{min-height:44px;flex-shrink:0}.finance-mobile-context{overflow-wrap:anywhere}.finance-mobile-amounts{display:grid;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:5px 7px;margin:0}.finance-mobile-amounts dt{color:var(--ink-3);font-size:11px}.finance-mobile-amounts dd{margin:0;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.finance-mobile-actions{display:flex;flex-wrap:wrap;gap:5px;align-items:flex-start}.finance-mobile-actions .btn,.finance-mobile-actions summary{min-height:44px}.finance-mobile-actions>:is(.btn,.row){flex:1 1 auto}.finance-mobile-actions details{padding:0 7px;margin:0;border:0;background:transparent}.finance-mobile-actions details[open]{flex:1 0 100%}.finance-mobile-actions details summary{display:flex;align-items:center}.finance-mobile-actions details[open] summary{margin:0}.finance-mobile-card .cost-invoice-cell{display:flex;flex-wrap:wrap;align-items:center;gap:7px;border-top:1px solid var(--line-soft);padding-top:7px}.finance-mobile-card .cost-invoice-cell .btn{min-height:44px}}.customer-display{display:block;min-width:0;max-width:14em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customer-display-full{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}@media (max-width: 600px){.customer-display{max-width:8em}}.operating-workspace{--operating-contract: #ad99f0;--operating-settlement: var(--chart-revenue, #7355df);--operating-gross: var(--chart-gross, #299f88);--operating-grid: #eeeaf6;min-width:0}.operating-tabs,.operating-views,.operating-quality-filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:14px}.operating-tabs{width:fit-content;max-width:100%;padding:4px;background:var(--panel, #fff);border:1px solid var(--line, #eae5f2);border-radius:999px}.operating-tabs a,.operating-views a,.operating-quality-filters a{display:inline-flex;gap:6px;align-items:center;padding:7px 12px;border-radius:999px;color:var(--ink-2);font-weight:600;font-size:12px;text-decoration:none}.operating-tabs a:hover,.operating-views a:hover,.operating-quality-filters a:hover,.operating-views a[aria-current],.operating-quality-filters a[aria-current]{color:#5d3aba;background:#eee7ff}.operating-tabs a[aria-current]{color:#fff;background:#6747cd}.operating-views a span{font-size:11px;font-variant-numeric:tabular-nums}.operating-workspace a:focus-visible{outline:2px solid #6747cd;outline-offset:2px}.operating-stats{grid-auto-rows:1fr}.operating-stat{color:inherit;text-decoration:none;border-radius:16px;min-width:0}.operating-stat:hover{color:inherit;text-decoration:none}.operating-stat .stat{height:100%;transition:box-shadow .14s ease}.operating-stat:hover .stat{box-shadow:0 0 0 2px #b9a5fb,0 8px 20px #5f3cad19}.operating-stat-arrow{margin-left:8px;color:var(--ink-2)}.operating-meta{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 18px;margin:0 0 14px}.operating-meta a{color:#6142bd;font-weight:600}.operating-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.operating-grid .card{min-width:0}.operating-workspace>.card{margin-bottom:14px}.operating-chart-scroll{overflow-x:auto}.operating-chart{display:block;width:100%;max-height:230px}.operating-chart-hit{fill:transparent}.operating-chart-mark:hover .operating-chart-hit,.operating-chart-mark:focus .operating-chart-hit{fill:#a98bf326}.operating-quality-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.operating-quality-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 8px;padding:10px 12px;border-radius:12px;color:#3c285e;background:#f2eaff;font-size:12px}.operating-quality-item b{grid-column:1;font-size:20px;font-variant-numeric:tabular-nums;line-height:1.2}.operating-quality-item span:last-child{grid-column:2;grid-row:1}.operating-quality-item.missingCost{color:#70410b;background:#fff1d5}.operating-quality-item.unsettled{color:#195b49;background:#dcf6ea}.operating-quality-item.futureSubmission{color:#7e325a;background:#fce8f2}.operating-quality-item.missingOwner{color:#24547d;background:#e7f3ff}.operating-quality-item.missingCompany{color:#513b85;background:#eee7fb}.operating-rank{display:grid;gap:8px}.operating-rank a{display:block;padding:4px 0;color:inherit}.operating-rank-label{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px;font-size:12px}.operating-rank-label b{flex-shrink:0;font-variant-numeric:tabular-nums}.operating-rank .progress{display:block}.operating-rank .progress i{background:var(--operating-settlement)}.operating-rank.type .progress i{background:var(--operating-gross)}.operating-quality-filters{padding:10px 14px 0;margin-bottom:10px}.operating-explanation{margin:0;padding:10px 16px 12px;color:var(--ink-3);font-size:12px;line-height:1.65}.operating-filter-summary{color:#5d3aba;font-weight:600}.operating-workspace .table .operating-metric-focus{font-weight:650;background:#f7f2ff;color:#5935b6}.operating-detail-search{display:flex;flex-wrap:wrap;align-items:end;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line)}.operating-detail-search label{display:grid;flex:1 1 230px;max-width:460px;gap:4px;font-size:12px;font-weight:600}.operating-detail-search input{min-width:0;width:100%}.operating-detail-summary{margin:0 16px 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#f9f6ff}.operating-detail-summary-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.operating-detail-summary-heading h3{font-size:14px;margin:0}.operating-detail-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px 14px;margin:10px 0 0}.operating-detail-totals dt{color:var(--ink-3);font-size:12px}.operating-detail-totals dd{margin:2px 0 0;font-weight:650;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.operating-total-note{margin:8px 0 0}.operating-original-totals{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}.operating-original-totals summary{width:fit-content;color:#6142bd;font-size:12px;cursor:pointer}@media (max-width: 480px){.operating-detail-search .input,.operating-detail-search .btn{min-height:44px}.operating-detail-totals{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.operating-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width: 490px){.operating-quality-list{grid-template-columns:repeat(2,minmax(0,1fr))}.operating-rank-label{flex-wrap:wrap;gap:2px 6px}}.operating-vat .stat-grid{margin-bottom:8px}.operating-vat p{margin:0}@media (max-width: 680px){.operating-vat .stat-grid{grid-template-columns:minmax(0,1fr)}}.operating-project-search{margin-bottom:14px}.operating-project-search-fields{display:grid;grid-template-columns:repeat(2,minmax(130px,1fr)) minmax(140px,1.3fr) auto;align-items:end;gap:10px}.operating-project-search-fields label{display:grid;gap:4px;min-width:0;color:var(--ink-2);font-size:12px;font-weight:600}.operating-project-search-fields :is(.input,.select){width:100%;min-width:0}.operating-project-search form p{margin:8px 0 0}.operating-project-results{margin-top:12px;border-top:1px solid var(--line)}.operating-project-result-heading{justify-content:space-between;margin:8px 0 4px}.operating-project-result-heading p{margin:0}.operating-project-list{display:grid;gap:5px;padding:0;margin:8px 0 0;list-style:none}.operating-project-list li{display:grid;grid-template-columns:minmax(0,2fr) minmax(120px,1.4fr) minmax(0,1fr);align-items:center;gap:7px 12px;padding:8px 10px;background:#f8f5fe;border-radius:9px}.operating-project-name{font-weight:650;overflow-wrap:anywhere}.operating-project-dates{display:grid;gap:2px}.operating-project-status{display:flex;flex-wrap:wrap;gap:4px;justify-content:end}@media (max-width: 950px){.operating-project-search-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 580px){.operating-project-search-fields :is(.input,.select,.btn){min-height:44px}.operating-project-search-fields input[type=date]{padding-inline:4px}.operating-project-search-fields label:nth-child(3),.operating-project-search-actions{grid-column:1 / -1}.operating-project-list li{grid-template-columns:minmax(0,1fr) auto}.operating-project-list li>div:first-child{grid-column:1 / -1}.operating-project-status{max-width:122px}}.operating-overview .operating-overview-stats{grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:9px;margin-bottom:10px}.operating-overview-stats .operating-stat .stat{padding:12px 13px 11px;background:var(--card)}.operating-overview-stats .operating-stat .stat .bar{display:none}.operating-overview-stats .operating-stat-primary .stat{background:linear-gradient(120deg,#eee4ff,#fcfaff 85%);border-color:#dacbf7}.operating-overview-stats .operating-stat.info .stat{background:linear-gradient(125deg,#edf3ff,#fdfdff 88%);border-color:#dce5fa}.operating-overview-stats .operating-stat.ok .stat{background:linear-gradient(125deg,#e8f8f0,#fdfffe 88%);border-color:#d5eee2}.operating-overview-stats .operating-stat.warn .stat{background:linear-gradient(125deg,#fff1e3,#fffdfb 88%);border-color:#f1e4d6}.operating-overview-stats .stat .label{gap:2px}.operating-overview-stats .stat .value{margin-top:3px;font-size:clamp(18px,2.1vw,29px)}.operating-overview-stats .stat .foot{margin-top:3px;line-height:1.55}.operating-overview-stats .operating-stat-arrow{margin-left:2px}.operating-overview .operating-meta{margin-bottom:10px}.operating-followups{padding:10px 12px;margin-bottom:14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}.operating-followups-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:7px;margin-bottom:4px}.operating-followups-heading h2{font-size:13px;margin:0}.operating-followups ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;list-style:none;padding:0;margin:0}.operating-followups li a{display:flex;align-items:center;gap:6px;min-height:39px;padding:4px 6px;background:#faf8fd;border:1px solid var(--line-soft);border-radius:8px;font-size:12px;line-height:1.4}.operating-followups li a:hover{border-color:#d1bef7;color:var(--accent-2)}.operating-followup-count{padding:2px 6px;border-radius:6px;background:#efedf6;color:var(--ink-2);font-weight:650;font-variant-numeric:tabular-nums}.operating-followup-count.warn{background:var(--warn-soft);color:var(--warn)}.operating-followup-count.danger{background:var(--danger-soft);color:var(--danger)}.operating-followup-arrow{margin-left:auto;color:var(--ink-3)}@media (max-width: 680px){.operating-overview .operating-overview-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.operating-overview-stats .operating-stat-primary{grid-column:1 / -1}.operating-overview-stats .operating-stat .stat{padding:8px 6px}.operating-overview-stats .operating-stat-primary .stat{padding:11px 12px}.operating-overview-stats .operating-stat-primary .stat .value{font-size:24px}.operating-overview-stats .stat .foot{font-size:10px}.operating-overview .operating-heading .actions :is(.btn,.select),.operating-followups li a,.operating-followups-heading .btn{min-height:44px}.operating-followups{padding:8px}.operating-followups ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.operating-followups li a{gap:3px;padding:4px;font-size:11px}.operating-followup-count{padding:1px 4px}.operating-followup-arrow{display:none}}.project-workspace{min-width:0}.project-toolbar{display:grid;gap:12px;padding:15px 16px;border-bottom:1px solid var(--line-soft)}.project-toolbar-main,.project-filter-panel-grid{display:grid;gap:10px;align-items:end}.project-toolbar-main{grid-template-columns:minmax(170px,1.4fr) minmax(130px,1fr) minmax(120px,.9fr) minmax(105px,.8fr) auto}.project-filter-field{display:grid;gap:5px;min-width:0;font-size:12px;font-weight:600;color:var(--ink-2)}.project-filter-field :is(.input,.select,.btn){width:100%;min-width:0;font-weight:500}.project-filter-toggle{justify-content:space-between}.project-filter-toggle span:first-child{overflow:hidden;text-overflow:ellipsis}.project-toolbar-actions{display:flex;gap:7px}.project-toolbar-actions button{flex-shrink:0}.project-filter-count{padding:0 5px;border-radius:999px;background:var(--accent-soft);color:var(--accent-2);font-size:10px}.project-filter-panel{padding:13px;background:#faf8fe;border:1px solid var(--line-soft);border-radius:11px}.project-filter-panel-grid{grid-template-columns:repeat(auto-fit,minmax(135px,1fr))}.project-filter-panel p,.project-filter-panel .form-error{margin:8px 0 0}.project-filter-panel [aria-invalid=true]{border-color:var(--danger)}.project-filter-chips{display:flex;flex-wrap:wrap;align-items:center;gap:5px 7px;min-width:0}.project-filter-chip{display:inline-flex;gap:7px;align-items:center;min-width:0;max-width:100%;padding:4px 8px;border:1px solid #e4dafb;border-radius:999px;color:var(--accent-2);background:var(--accent-soft);font-size:11px;cursor:pointer}.project-filter-chip:hover{border-color:var(--accent)}.project-filter-chip>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-results{scroll-margin-top:84px}.project-table-name{min-width:150px;max-width:280px}.project-table-name>a{font-weight:650;overflow-wrap:anywhere}.project-result-tags,.project-result-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.project-result-tags:not(:empty){margin-top:3px}.project-result-actions{flex-wrap:nowrap}.project-status-select{min-width:100px}.project-mobile-results{display:none}.project-amount{font-variant-numeric:tabular-nums}.project-tax-rate{display:inline-grid}@media (max-width: 1150px){.project-toolbar-main{grid-template-columns:repeat(2,minmax(0,1fr))}.project-toolbar-actions{justify-content:flex-end;grid-column:1 / -1}}@media (max-width: 680px){.project-workspace-heading .actions .btn,.project-toolbar :is(.btn,.select,.input),.project-mobile-card :is(.btn,summary,.select),.project-results .pagination .btn{min-height:44px}.project-toolbar{padding:13px;gap:9px}.project-toolbar-main{gap:8px}.project-keyword{grid-column:1 / -1}.project-toolbar-actions{grid-column:auto;justify-content:flex-start;flex-wrap:wrap}.project-toolbar-actions .btn{flex:1 1 auto;padding-inline:8px}.project-filter-panel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#project-date-filters .project-filter-field:first-child{grid-column:1 / -1}.project-filter-panel{padding:10px}.project-filter-panel input[type=date]{padding-inline:4px}.project-filter-chip,.project-filter-chips .btn{min-height:36px}.project-desktop-results{display:none}.project-mobile-results{display:grid;gap:8px;margin:0;padding:10px;list-style:none;background:#f8f7fd}.project-mobile-card{display:grid;gap:8px;min-width:0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.project-mobile-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.project-mobile-heading a{color:var(--accent-2);font-weight:680;overflow-wrap:anywhere}.project-mobile-heading .badge{flex-shrink:0}.project-mobile-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px;margin:0}.project-mobile-facts>div{min-width:0}.project-mobile-facts dt{color:var(--ink-3);font-size:11px}.project-mobile-facts dd{margin:0;overflow-wrap:anywhere}.project-mobile-facts .customer-display{max-width:100%}.project-mobile-finance{grid-template-columns:repeat(3,minmax(0,1fr))}.project-mobile-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px}.project-mobile-actions>:is(a,button){flex:1 1 auto}.project-mobile-actions details{margin:0;padding:0;border:0;background:transparent}.project-mobile-actions details[open]{flex:1 0 100%}.project-mobile-actions details summary{display:flex;align-items:center;padding:0 9px;white-space:nowrap}.project-mobile-actions details[open] summary{margin:0}.project-mobile-actions details p{margin:4px 0 0}.project-mobile-actions details>div{display:flex;flex-wrap:wrap;align-items:center;gap:7px}}@media (max-width: 350px){.project-toolbar-actions{grid-column:1 / -1}}.agency-receipts{display:grid;gap:7px;padding:0;list-style:none}.agency-receipts li{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:7px;padding:9px 10px;border:1px solid var(--line);border-radius:9px}@media (max-width: 680px){.agency-receipts .btn{min-height:44px}}.my-work-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.my-work-filter [aria-pressed=true]{background:var(--accent-soft);color:var(--accent-2);border-color:var(--accent)}.my-work-list{list-style:none;margin:0;padding:0}.my-work-list li{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0}.my-work-content{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}.my-work-list li>a{flex-shrink:0}@media (max-width: 560px){.my-work-list li{align-items:stretch;flex-direction:column}.my-work-list li>a{justify-content:center;min-height:44px}}.finance-workbench{width:min(100%,860px);margin:0 auto}.finance-workbench-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:4px 0 18px}.finance-workbench-heading h1{margin:0;font-size:clamp(23px,2.4vw,29px);line-height:1.35;letter-spacing:-.04em;font-weight:720}.finance-workbench-heading p{margin:5px 0 0;color:var(--ink-3);font-size:13px;line-height:1.5}.finance-workbench-todo{flex:none;color:var(--accent-2)}.finance-workbench-panel{border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden}.finance-workbench-section+.finance-workbench-section{border-top:1px solid var(--line)}.finance-workbench-section h2{margin:0;padding:12px 19px 3px;color:var(--ink-3);font-size:12px;font-weight:660}.finance-workbench-section ul{margin:0;padding:0 8px 8px;list-style:none}.finance-workbench-section li+li{border-top:1px solid var(--line-soft)}.finance-workbench-row{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:8px 11px;border-radius:8px;color:var(--ink);text-decoration:none}.finance-workbench-row:hover{background:#f7f4ff}.finance-workbench-row:focus-visible{outline:2px solid var(--accent-2);outline-offset:-2px}.finance-workbench-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:#eee9fa;color:#6746b3}.finance-workbench-section+.finance-workbench-section .finance-workbench-icon{background:#f1eef7;color:#6c5e8c}.finance-workbench-row-text{display:flex;flex-direction:column;gap:2px}.finance-workbench-row-text strong{font-size:14px;font-weight:670}.finance-workbench-row-text>span{color:var(--ink-3);font-size:12px;line-height:1.45}.finance-workbench-chevron{color:var(--ink-3)}@media (max-width: 540px){.finance-workbench-heading{align-items:flex-start;gap:8px}.finance-workbench-heading p{font-size:12px}.finance-workbench-section h2{padding-inline:14px}.finance-workbench-row{gap:10px;padding-inline:6px}}:root{color-scheme:light;--ink: #24223a;--ink-2: #45435b;--ink-3: #615f76;--ink-4: #77738e;--line: #e4e1f0;--line-soft: #eeecf5;--bg: #f6f6fb;--card: #ffffff;--sidebar: #fff;--sidebar-2: #f7f4fe;--accent: #6040bf;--accent-2: #492d9d;--accent-soft: #eee8ff;--ok: #176448;--ok-soft: #e4f7ee;--warn: #81540b;--warn-soft: #fff1d6;--danger: #ba4953;--danger-soft: #fbefef;--info: #255987;--info-soft: #e8f4fe;--mint: #218369;--mint-soft: #e0f6ec;--lemon: #d58724;--lemon-soft: #fff4d6;--sky: #488dcc;--sky-soft: #e8f5ff;--pink: #d7619a;--pink-soft: #fce9f3;--radius: 17px;--radius-sm: 10px;--radius-xs: 7px;--shadow-sm: 0 2px 5px rgba(40, 31, 92, .045);--shadow: 0 8px 24px rgba(45, 33, 95, .075);--shadow-lg: 0 22px 64px rgba(38, 26, 75, .2);--font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "SF Mono", "JetBrains Mono", Menlo, Consolas, "Courier New", monospace;--focus: 0 0 0 3px rgba(96, 64, 191, .2);--chart-contract: #a989f5;--chart-revenue: #6846cc;--chart-gross: #1d9576;--chart-cost: #d18024}*{box-sizing:border-box}html,body,#root{height:100%}html{scrollbar-gutter:stable}body{margin:0;font-family:var(--font);font-size:13px;line-height:1.6;color:var(--ink);background:radial-gradient(ellipse at 96% 0%,#eee4ff 0%,transparent 36%),radial-gradient(ellipse at 49% 22%,#edf7ff 0%,transparent 45%),var(--bg);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit}button{-webkit-tap-highlight-color:transparent}::selection{background:#ddd1ff;color:#34245d}:where(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--accent);outline-offset:3px}:where(input[type=checkbox],input[type=radio]){accent-color:var(--accent);vertical-align:middle;cursor:pointer}:where(input[type=checkbox],input[type=radio]):disabled{cursor:not-allowed}.shell{display:flex;min-height:100vh;gap:18px;padding:16px}.sidebar{width:232px;flex:0 0 232px;background:linear-gradient(160deg,var(--sidebar) 35%,var(--sidebar-2));color:var(--ink);display:flex;flex-direction:column;position:sticky;top:16px;height:calc(100vh - 32px);z-index:30;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow);overflow:hidden}.brand{display:flex;align-items:center;gap:11px;padding:22px 18px 20px;min-width:0}.brand-mark{width:36px;height:36px;flex:0 0 36px;border-radius:10px;background:linear-gradient(135deg,#5e42bd,#7b53de 64%,#a34eaf);display:grid;place-items:center;font-size:12px;font-weight:750;color:#fff;letter-spacing:.4px;overflow:hidden;box-shadow:0 4px 12px #00000014}.brand-logo,img.brand-mark,.brand-mark img{display:block;width:36px;height:36px;flex:0 0 36px;object-fit:contain;padding:3px;border-radius:9px;background:#fff}.brand-mark img{width:100%;height:100%}.brand--login{padding:0;margin-bottom:44px;border:0}.brand-edit{flex:0 0 auto;margin-left:auto;padding:3px 6px;border:1px solid #ded3f7;border-radius:7px;font-size:10px;color:var(--accent-2);white-space:nowrap}.brand-edit:hover{color:var(--accent-2);border-color:#cab9ed;background:var(--accent-soft)}.brand-text{min-width:0}.brand-text b{display:block;font-size:14px;color:var(--ink);font-weight:700;letter-spacing:.25px;overflow-wrap:anywhere}.brand-text span{display:block;margin-top:2px;font-size:9px;color:var(--ink-3);letter-spacing:1.8px;text-transform:uppercase}.nav{flex:1;min-height:0;overflow-y:auto;padding:0 12px 16px;scrollbar-width:thin;scrollbar-color:#c6b9de transparent}.nav-group{padding:18px 12px 7px;font-size:10px;line-height:1.4;letter-spacing:1.5px;color:var(--ink-3);font-weight:650;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 12px;margin:3px 0;min-height:39px;border-radius:11px;font-size:13px;color:var(--ink-2);cursor:pointer;transition:background-color .16s,color .16s,box-shadow .16s}.nav-item:hover{background:#f1ecfb;color:var(--accent-2)}.nav-item.active{background:linear-gradient(100deg,#e9dfff,#eaf0ff 68%,#f5eaff);color:#44298d;box-shadow:inset 3px 0 #8358dd;font-weight:600}.nav-item:focus-visible{outline-color:var(--accent);outline-offset:-2px}.nav-item.active .ico{opacity:1;color:var(--accent-2)}.nav-item .ico{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;color:var(--accent-2);background:var(--accent-soft)}.nav-item:is([data-section=costs],[data-section=settlements]) .ico{color:#176448;background:#ddf5e9}.nav-item:is([data-section=projects],[data-section=tasks]) .ico{color:#285c92;background:#e5f2ff}.nav-item:is([data-section=suppliers],[data-section=approvals]) .ico{color:#80501b;background:#fff1d8}.nav-item[data-section=customers] .ico{color:#883a69;background:#f9e4f1}.nav-item .count{margin-left:auto;font-size:10.5px;padding:0 7px;border-radius:5px;background:#ffffff14;color:#c8dce6;line-height:19px;font-weight:600}.nav-item.active .count{background:#9be2cf26;color:#d5f7ec}.sidebar-foot{margin:10px 15px 15px;padding:12px 10px 0;border-top:1px solid var(--line);border-radius:0;font-size:10.5px;color:var(--ink-3)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px;vertical-align:1px}.dot.ok{background:#83d1b5}.dot.warn{background:#d6b36c}.dot.err{background:#e8999b}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:58px;flex:0 0 58px;background:#fffffff5;border:1px solid var(--line);border-radius:13px;display:flex;align-items:center;gap:14px;padding:0 17px;position:sticky;top:16px;z-index:25;box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.crumb{font-size:12px;color:var(--ink-3);display:flex;align-items:center;gap:9px;min-width:0}.crumb b{color:var(--ink);font-weight:600}.topbar .spacer{flex:1}.searchbox{display:flex;align-items:center;gap:9px;background:#f8f7fc;border:1px solid var(--line);border-radius:8px;padding:0 11px;height:34px;width:266px;transition:border-color .15s,box-shadow .15s,background-color .15s;color:var(--ink-3)}.searchbox:focus-within{border-color:#9d83db;box-shadow:var(--focus);background:#fff}.searchbox input{border:0;padding:0;background:transparent;outline:none;font-size:12px;width:100%;min-width:0;color:var(--ink)}.searchbox input:focus-visible{outline:none}.searchbox input::placeholder{color:var(--ink-3)}.avatar{width:30px;height:30px;flex:0 0 30px;border-radius:9px;background:#ede2ff;color:#553696;display:grid;place-items:center;font-size:11.5px;font-weight:650}.userbox{display:flex;align-items:center;gap:9px;padding:4px 9px 4px 4px;border:1px solid transparent;border-radius:9px;cursor:pointer;background:transparent;color:var(--ink);text-align:left;transition:background-color .15s,border-color .15s}.userbox:hover,.userbox[aria-expanded=true]{border-color:var(--line);background:#f7f4fd}.userbox .name{font-size:12px;font-weight:600;line-height:1.5}.userbox .role{font-size:10.5px;color:var(--ink-3);line-height:1.4}.account-menu{position:relative}.account-popover{position:absolute;right:0;top:calc(100% + 10px);width:224px;padding:13px;display:grid;gap:7px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow-lg);z-index:40}.account-popover>.small{padding:2px 7px 9px;border-bottom:1px solid var(--line-soft);overflow-wrap:anywhere}.account-popover .btn{justify-content:flex-start}.account-popover .form-error{margin:0}.content{padding:23px 4px 36px;max-width:1560px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;gap:16px;margin-bottom:19px;flex-wrap:wrap}.page-head h1{font-size:27px;line-height:1.35;margin:0;letter-spacing:-.45px;font-weight:720}.page-head p{margin:6px 0 0;color:var(--ink-3);font-size:12px;line-height:1.65}.page-head .actions{margin-left:auto;display:flex;gap:8px;align-items:center}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);min-width:0}.card-head{display:flex;align-items:center;gap:10px;padding:17px 19px 13px;flex-wrap:wrap}.card-head h3{margin:0;font-size:14px;font-weight:650;letter-spacing:.05px;line-height:1.5}.card-head .sub{color:var(--ink-3);font-size:11.5px}.card-head .right{margin-left:auto;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.card-body{padding:0 19px 19px;min-width:0}.card-body.tight{padding:4px 14px 14px}.card>.card-body:first-child{padding-top:18px}.card .card{box-shadow:none}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;position:relative;overflow:hidden;box-shadow:var(--shadow-sm);min-width:0}.stat .label{font-size:11.5px;font-weight:500;color:var(--ink-2);display:flex;align-items:center;gap:6px}.stat .value{font-size:25px;line-height:1.35;font-weight:650;letter-spacing:-.7px;margin-top:8px;font-variant-numeric:tabular-nums;color:var(--ink);overflow-wrap:anywhere}.stat .value small{font-size:12px;font-weight:500;color:var(--ink-3);margin-left:4px;letter-spacing:0}.stat .foot{font-size:11px;line-height:1.75;color:var(--ink-3);margin-top:7px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.stat .bar{position:absolute;left:18px;top:0;height:3px;width:28px;border-radius:0 0 3px 3px;background:#9d88d2}.stat.accent{background:linear-gradient(125deg,#e7dbff,#f8f3ff 75%)}.stat.accent .bar{background:var(--accent)}.stat.ok{background:linear-gradient(125deg,#dcf7e8,#f2fcf6 75%)}.stat.ok .bar{background:var(--mint)}.stat.warn{background:linear-gradient(125deg,#ffedc3,#fff8ee 75%)}.stat.warn .bar{background:var(--lemon)}.stat.info{background:linear-gradient(125deg,#dfedff,#f2f9ff 75%)}.stat.info .bar{background:var(--sky)}.up{color:var(--ok)}.down{color:var(--danger)}.table-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;border-radius:9px;scrollbar-width:thin;scrollbar-color:#bfced3 transparent}table.table{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}.table th{text-align:left;font-weight:600;color:#576d7a;font-size:11.5px;padding:11px 14px;background:#f4f7f8;border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;z-index:1;letter-spacing:.1px}.table th:first-child{border-radius:8px 0 0}.table th:last-child{border-radius:0 8px 0 0}.table td{padding:12px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle;line-height:1.65;transition:background-color .13s}.table tbody tr:hover{background:#f8f5ff}.table tbody tr:last-child td{border-bottom:0}.table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.05px}.table .mono{font-family:var(--mono);font-size:11.5px;color:var(--ink-2)}.table .strong{font-weight:650}.table tr.clickable{cursor:pointer}.table tr.clickable:hover{background:#f3edff}.table .truncate{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table td a:not(.btn){color:var(--accent-2);text-underline-offset:3px}.table td a:not(.btn):hover{color:var(--accent-2);text-decoration:underline;text-decoration-color:#c1aae9}.table td .small{line-height:1.7}.table td>.badge+.badge{margin-left:4px}.table .select{min-height:30px;height:32px;font-size:12px}.table .date,.table .mono{white-space:nowrap}.table :where(input[type=checkbox],input[type=radio]){width:15px;height:15px}.badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;line-height:21px;padding:0 8px;border-radius:5px;background:#eff3f5;color:#596f7c;border:1px solid transparent;white-space:nowrap;font-weight:550;vertical-align:middle}.badge.ok{background:var(--ok-soft);color:#2b7458;border-color:#dceee2}.badge.warn{background:var(--warn-soft);color:#8d6728;border-color:#f0e5cb}.badge.danger{background:var(--danger-soft);color:#ac3d49;border-color:#f2dce0}.badge.info{background:var(--info-soft);color:#3f6d8e;border-color:#dce8f0}.badge.accent{background:var(--accent-soft);color:var(--accent-2);border-color:#d0e7df}.badge.outline{background:#fff;border:1px solid var(--line);color:var(--ink-3)}.btn{display:inline-flex;align-items:center;gap:6px;justify-content:center;height:35px;padding:0 13px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:12px;line-height:1.4;font-weight:550;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;white-space:nowrap;vertical-align:middle}.btn:hover{border-color:#cbbcea;background:#f8f4ff;color:var(--accent-2)}.btn:active{background:var(--accent-soft)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 3px 7px #6040bf29}.btn-primary:hover{background:var(--accent-2);border-color:var(--accent-2);color:#fff}.btn-primary:active{background:#3e2489;border-color:#3e2489}.btn-accent{background:#302749;border-color:#302749;color:#fff}.btn-accent:hover{background:#473568;border-color:#473568;color:#fff}.btn-ghost{background:transparent;border-color:transparent;color:var(--ink-3);box-shadow:none}.btn-ghost:hover{background:var(--accent-soft);border-color:transparent;color:var(--accent-2)}.btn-danger{color:var(--danger);border-color:#ebcbd1}.btn-danger:hover{background:var(--danger-soft);border-color:#dea7b1;color:#a63140}.btn:disabled,.btn[aria-disabled=true]{opacity:1;cursor:not-allowed;color:#8d9da6;background:#f2f5f6;border-color:#e2e9ec;box-shadow:none;transform:none}.btn.sm{height:29px;padding:0 10px;font-size:11.5px;border-radius:6px}.btn-ghost.sm{padding-left:8px;padding-right:8px}.input,.select,.textarea{height:36px;min-width:0;border:1px solid var(--line);border-radius:8px;padding:0 11px;font-size:12.5px;color:var(--ink);background-color:#fff;outline:none;transition:border-color .14s,box-shadow .14s,background-color .14s;font-family:inherit;max-width:100%}.input:hover,.select:hover,.textarea:hover{border-color:#c1b2de}.textarea,textarea.input{height:auto;min-height:84px;padding:9px 11px;line-height:1.65;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:#8d72c8;box-shadow:var(--focus)}.input::placeholder,.textarea::placeholder,textarea.input::placeholder{color:var(--ink-3)}.input:disabled,.select:disabled,.textarea:disabled{color:#8799a3;background-color:#f1f5f6;border-color:#e1e8eb;cursor:not-allowed;opacity:1;box-shadow:none}.input[readonly],.textarea[readonly]{color:var(--ink-2);background-color:#f6f8f9}.input[type=number]{font-variant-numeric:tabular-nums}.input[type=file]{height:auto;min-height:38px;padding:5px 7px;line-height:1.6}.input[type=file]::file-selector-button{font:inherit;color:var(--ink-2);background:#edf4f2;border:0;border-radius:5px;padding:4px 9px;margin-right:9px;cursor:pointer}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:31px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'><path d='M1 3l4 4 4-4' fill='none' stroke='%23657b87' stroke-width='1.5'/></svg>");background-repeat:no-repeat;background-position:right 11px center}.filters{display:flex;flex-wrap:wrap;gap:9px;align-items:center}.filters .input{width:210px}.filters .select{max-width:280px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0d222f6b;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px 24px;overflow-y:auto;overscroll-behavior:contain}.modal{width:100%;max-width:640px;background:#fff;border:1px solid rgba(255,255,255,.85);border-radius:16px;box-shadow:var(--shadow-lg);padding:23px 24px 21px;animation:pop .16s ease-out}.modal.wide{max-width:840px}@keyframes pop{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid var(--line-soft)}.modal-head h3{margin:0;font-size:17px;font-weight:650;letter-spacing:-.2px}.modal-head .sub{font-size:11.5px;color:var(--ink-3);margin-top:4px;line-height:1.65}.modal-head .x{margin-left:auto;flex-shrink:0;width:30px;padding:0}.modal-foot{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:21px;padding-top:16px;border-top:1px solid var(--line-soft)}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:15px 16px}.form-grid .full{grid-column:1 / -1}.form-item{display:grid;gap:6px;min-width:0;align-content:start}.form-item>label{font-size:12px;color:var(--ink-2);font-weight:550}.form-item .hint{font-size:11px;color:var(--ink-3);line-height:1.6}.form-error{background:var(--danger-soft);color:#a83d49;border:1px solid #f0d8dd;border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.7;margin-bottom:13px;overflow-wrap:anywhere}.project-customer-picker{position:relative}.project-customer-picker .input{width:100%}.project-customer-results{position:absolute;z-index:3;inset:calc(100% + 4px) 0 auto;max-height:min(15rem,34vh);overflow-y:auto;overscroll-behavior:contain;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--card);box-shadow:var(--shadow)}.project-customer-results ul{margin:0;padding:0;list-style:none}.project-customer-results li,.project-customer-status{padding:9px 11px;overflow-wrap:anywhere}.project-customer-results li{border-radius:5px;cursor:pointer}.project-customer-results li:hover,.project-customer-results li[aria-selected=true]{background:var(--accent-soft);color:var(--accent-2)}.seg{display:inline-flex;padding:3px;background:#edf3f4;border:1px solid #e4ecee;border-radius:9px;gap:3px}.seg button{border:0;background:transparent;border-radius:6px;height:29px;padding:0 13px;font-size:12px;color:var(--ink-3);cursor:pointer;font-weight:550;transition:background-color .15s,color .15s}.seg button:hover{color:var(--accent-2)}.seg button.on{background:#fff;color:var(--accent-2);box-shadow:0 1px 4px #1b3e4914}.seg button:disabled{color:#8c9ba5;cursor:not-allowed}.tabs{display:flex;gap:4px;margin-bottom:17px;overflow-x:auto;padding:4px;background:#f1edf8;border:1px solid var(--line);border-radius:10px;width:fit-content;max-width:100%;box-shadow:none;scrollbar-width:thin}.tab{padding:8px 14px;font-size:12px;color:var(--ink-3);cursor:pointer;border-radius:7px;white-space:nowrap;font-weight:550;transition:background-color .15s,color .15s}button.tab{border:0;background:transparent;line-height:inherit}.tab:hover{color:var(--accent-2);background:#ffffffa6}.tab.active{color:#fff;background:var(--accent);font-weight:600;box-shadow:0 2px 5px #0c5d5714}.tab .n{font-size:10px;background:#3f637317;padding:1px 6px;border-radius:4px;margin-left:5px}.tab.active .n{background:#ffffff2e;color:#fff}.chart{width:100%;overflow:visible}.chart text{font-family:var(--font);font-variant-numeric:tabular-nums}.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:11px;color:var(--ink-3);line-height:1.6}.legend i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:6px}.chart-tip{position:fixed;pointer-events:none;z-index:99;background:#302447;color:#fff;font-size:11.5px;padding:8px 11px;border-radius:7px;transform:translate(-50%,-130%);white-space:nowrap;box-shadow:var(--shadow)}.chart [fill="#c6c0f5"]{fill:var(--chart-contract)}.chart [fill="#6c5ce7"]{fill:var(--chart-revenue)}.chart [fill="#35b899"]{fill:var(--chart-gross)}.chart [fill="#c1121f"]{fill:var(--chart-cost)}.legend i[style*="rgb(198, 192, 245)"],.legend i[style*="#c6c0f5"]{background:var(--chart-contract)!important}.legend i[style*="rgb(108, 92, 231)"],.legend i[style*="#6c5ce7"],.progress>i[style*="rgb(108, 92, 231)"],.progress>i[style*="#6c5ce7"]{background:var(--chart-revenue)!important}.legend i[style*="rgb(53, 184, 153)"],.legend i[style*="#35b899"],.progress>i[style*="rgb(53, 184, 153)"],.progress>i[style*="#35b899"]{background:var(--chart-gross)!important}.legend i[style*="rgb(193, 18, 31)"],.legend i[style*="#c1121f"]{background:var(--chart-cost)!important}.progress>i[style*="rgb(15, 23, 36)"],.progress>i[style*="#0f1724"]{background:#658c91!important}.progress>i[style*="rgb(193, 18, 31)"],.progress>i[style*="#c1121f"]{background:#6d9e96!important}.card svg circle[stroke="#c1121f"]{stroke:#168580}.card i[style*="flex: 0 0 8px"][style*="rgb(193, 18, 31)"],.card i[style*="flex: 0 0 8px"][style*="#c1121f"]{background:#168580!important}.card svg circle[stroke="#0f1724"]{stroke:#c1a05b}.card i[style*="flex: 0 0 8px"][style*="rgb(15, 23, 36)"],.card i[style*="flex: 0 0 8px"][style*="#0f1724"]{background:#c1a05b!important}.card svg circle[stroke="#1e5fa8"]{stroke:#86a8b8}.card i[style*="flex: 0 0 8px"][style*="rgb(30, 95, 168)"],.card i[style*="flex: 0 0 8px"][style*="#1e5fa8"]{background:#86a8b8!important}.card svg circle[stroke="#0b7a4b"]{stroke:#76aa94}.card i[style*="flex: 0 0 8px"][style*="rgb(11, 122, 75)"],.card i[style*="flex: 0 0 8px"][style*="#0b7a4b"]{background:#76aa94!important}.card svg circle[stroke="#a8620a"]{stroke:#d4bea0}.card i[style*="flex: 0 0 8px"][style*="rgb(168, 98, 10)"],.card i[style*="flex: 0 0 8px"][style*="#a8620a"]{background:#d4bea0!important}.card svg circle[stroke="#6b7684"]{stroke:#82969e}.card i[style*="flex: 0 0 8px"][style*="rgb(107, 118, 132)"],.card i[style*="flex: 0 0 8px"][style*="#6b7684"]{background:#82969e!important}.card svg circle[stroke="#8b5cf6"]{stroke:#8b90ac}.card i[style*="flex: 0 0 8px"][style*="rgb(139, 92, 246)"],.card i[style*="flex: 0 0 8px"][style*="#8b5cf6"]{background:#8b90ac!important}.card svg circle[stroke="#0891b2"]{stroke:#65a8b1}.card i[style*="flex: 0 0 8px"][style*="rgb(8, 145, 178)"],.card i[style*="flex: 0 0 8px"][style*="#0891b2"]{background:#65a8b1!important}.grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.grid-split{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:14px}.grid-split-rev{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:14px}.grid-split-rev>.card .table{min-width:1080px}.grid-split-rev>.card .table td:nth-child(3){min-width:148px;max-width:180px}.row{display:flex;align-items:center;gap:8px}.muted{color:var(--ink-3)}.small{font-size:11.5px}.right{text-align:right}.strong{font-weight:650}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:11.75px}.mb{margin-bottom:16px}.empty{padding:44px 20px;text-align:center;color:var(--ink-3);font-size:12px;line-height:1.8;background:linear-gradient(180deg,transparent,rgba(243,247,248,.55));border-radius:9px}.empty .btn{margin-top:5px}.spin{width:16px;height:16px;border:2px solid #d7e9e4;border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#edf2f4 25%,#f7f9fa 37%,#edf2f4 63%);background-size:400% 100%;animation:sk 1.3s ease infinite;border-radius:5px}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}.pagination{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:14px 18px;border-top:1px solid var(--line-soft)}.pagination .info{font-size:11.5px;color:var(--ink-3);margin-right:auto}.kv{display:grid;grid-template-columns:92px minmax(0,1fr);gap:11px 14px;font-size:12.5px;margin:0}.kv dt{color:var(--ink-3)}.kv dd{margin:0;color:var(--ink);min-width:0;overflow-wrap:anywhere}.progress{height:6px;background:#eaf0f2;border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--accent);border-radius:999px}.progress.accent>i{background:var(--accent)}.progress.ok>i{background:var(--mint)}.divider{height:1px;background:var(--line-soft);margin:15px 0}.list-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1;min-width:0}.list-row .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.alert-item{display:flex;gap:11px;padding:13px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px}.alert-item:last-child{border-bottom:0}.alert-item:hover .name{color:var(--accent-2)}.alert-item .grow{flex:1;min-width:0}.alert-item .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:550}.card details,.modal details{margin-top:10px;border:1px solid var(--line-soft);border-radius:8px;padding:9px 11px;background:#fafcfc}.card summary,.modal summary{cursor:pointer;color:var(--ink-2);font-size:12px}.card details[open]>summary,.modal details[open]>summary{margin-bottom:9px;font-weight:600}.card pre,.modal pre{max-width:100%;font-family:var(--mono);font-size:11.5px;line-height:1.7;color:var(--ink-2);background:#f5f8f9;border:1px solid var(--line-soft);border-radius:8px;-moz-tab-size:4;tab-size:4}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:#f0ecf8;padding:20px;gap:20px}.login-hero{background:radial-gradient(ellipse at 90% 20%,#764ca3 0%,transparent 57%),linear-gradient(145deg,#423371,#271d49 74%);color:#fff;padding:52px 48px 42px;display:flex;flex-direction:column;position:relative;overflow:hidden;border-radius:21px}.login-hero:before{content:"";position:absolute;width:380px;height:380px;right:-210px;top:-160px;border:1px solid rgba(165,210,211,.18);border-radius:50%;pointer-events:none}.login-hero:after{content:"";position:absolute;right:-140px;bottom:-210px;width:540px;height:540px;border-radius:50%;background:radial-gradient(circle,rgba(141,112,246,.38),transparent 67%);pointer-events:none}.login-hero .brand{position:relative;z-index:1}.login-hero .brand-text b{color:#f3f8fb}.login-hero .brand-text span{color:#e0d3f6}.login-hero h1{font-size:30px;line-height:1.5;font-weight:600;margin:0 0 16px;letter-spacing:-.5px;max-width:450px;position:relative;z-index:1}.login-hero p{color:#e1d9f4;font-size:12.5px;line-height:1.95;max-width:410px;position:relative;z-index:1}.login-hero .feat{display:grid;gap:17px;margin-top:42px;position:relative;z-index:1;padding-top:25px;border-top:1px solid rgba(190,218,229,.14)}.login-hero .feat div{display:flex;gap:11px;font-size:12px;color:#e2d8f4;align-items:flex-start;line-height:1.8}.login-hero .feat div>span:first-child{color:#bda56c!important;font-size:8px;line-height:2.65}.login-hero .feat b{color:#eaf3f7;font-weight:550}.login-form{display:grid;place-items:center;padding:36px;background:#fff;border:1px solid #e3ebee;border-radius:21px;box-shadow:var(--shadow-sm)}.login-card{width:100%;max-width:354px}.login-card h2{font-size:23px;line-height:1.5;font-weight:650;margin:0 0 7px;letter-spacing:-.3px}.login-card>.small{line-height:1.85}.login-methods{width:100%;margin:21px 0 23px;padding:4px}.login-methods button{flex:1;height:33px}.login-card .btn-accent{background:var(--accent);border-color:var(--accent);min-height:40px}.login-card .btn-accent:hover{background:var(--accent-2);border-color:var(--accent-2)}.login-card .btn-accent:disabled{background:#eff3f5;border-color:#e1e8eb;color:#8d9da6}.password-form{display:grid;gap:11px}.password-form label{font-size:12px;font-weight:550;color:var(--ink-2);margin-top:3px}.password-form .input{width:100%;min-height:40px}.password-form>.btn-primary,.password-form>.btn-accent{min-height:40px;margin-top:6px}.password-gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at top,#e8ddff,var(--bg) 65%)}.password-gate>.card{width:100%;max-width:454px;padding:30px;border-top:3px solid var(--accent);box-shadow:var(--shadow)}.password-gate h2{margin:0 0 9px;font-size:21px;font-weight:650}.login-list{display:grid;gap:8px;margin-top:14px;max-height:320px;overflow:auto}.login-user{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;cursor:pointer;text-align:left;background:#fff;width:100%;font-size:12.5px;color:var(--ink)}.login-user:hover{border-color:#9fc7be;background:#f5faf7}.login-user:disabled{cursor:not-allowed;opacity:.6}.branding-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.brand-sample{display:flex;align-items:center;min-height:108px;background:var(--sidebar-2);border:1px solid var(--line);border-radius:11px}.brand-sample .brand{width:100%;padding:23px}.brand-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}.brand-preview{display:grid;place-items:center;min-height:180px;padding:22px;border:1px dashed #c4d5d8;border-radius:10px;background:#f6f9f9;text-align:center}.brand-preview.has-image{border-style:solid;background:#fff}.brand-preview img{display:block;max-width:100%;max-height:138px;width:auto;height:auto;object-fit:contain}.brand-preview-placeholder{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:11px;color:#357765;background:#e4f1ec;font-size:14px;font-weight:650}.brand-preview p{margin:10px 0 0}.brand-file-name{overflow-wrap:anywhere}.brand-upload-actions{margin-top:18px}.brand-notice{padding:11px 13px;color:var(--accent-2);background:var(--accent-soft);border:1px solid #cde5dc;border-radius:8px;margin:0 0 16px;font-size:12px}.supplier-list-filters{padding:3px 19px 16px;border-bottom:1px solid var(--line-soft)}.supplier-list-filters>.small{margin-top:7px}.supplier-name{display:inline-block;max-width:290px;overflow-wrap:anywhere}.supplier-company{max-width:310px;overflow-wrap:anywhere;margin-top:3px}.supplier-code{margin-top:5px;font-size:10.5px!important;color:var(--ink-3)!important}.supplier-cell-sub{margin-top:6px}.supplier-cities{max-width:180px;overflow-wrap:anywhere}.supplier-heading-tags{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}.supplier-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.supplier-profile-card{position:relative;overflow:hidden}.supplier-profile-card:before{content:"";position:absolute;left:19px;top:0;width:29px;height:3px;background:#7ba89f;border-radius:0 0 3px 3px}.supplier-profile-card--payment:before{background:#c2a363}.supplier-profile-card .kv{grid-template-columns:80px minmax(0,1fr);gap:10px 12px;font-size:12px}.supplier-profile-card .mono{font-size:11.5px}.supplier-note{white-space:pre-wrap}.purchase-filter-form{padding:3px 19px 16px;border-bottom:1px solid var(--line-soft)}.purchase-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px 12px}.purchase-filter-grid .form-item>span{font-size:11.5px;font-weight:550;color:var(--ink-2)}.purchase-filter-grid .input,.purchase-filter-grid .select{width:100%}.purchase-date-range{display:flex;align-items:center;gap:5px;min-width:0}.purchase-date-range .input{padding-left:6px;padding-right:5px;font-size:11px}.purchase-date-range>span{font-size:11px;color:var(--ink-3)}.purchase-filter-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}.purchase-filter-actions b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}.purchase-filter-form .form-error{margin-top:13px;margin-bottom:0}.purchase-project{min-width:190px;max-width:250px;overflow-wrap:anywhere}.purchase-description{min-width:180px;max-width:320px;white-space:pre-wrap;overflow-wrap:anywhere}.purchase-table{min-width:1170px}.expense-reviewer-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px;padding:13px 17px;background:#eef6f3;border:1px solid #d4e6df;border-radius:11px}.expense-reviewer-copy{flex:1 1 420px;min-width:0}.expense-reviewer-names{display:flex;flex-wrap:wrap;gap:5px 20px;color:var(--ink-2);font-size:12px}.expense-reviewer-names b{color:var(--ink);font-weight:600}.expense-reviewer-copy p{margin:5px 0 0;line-height:1.7;font-size:11px}.expense-reviewer-strip>.actions{flex:0 0 auto;gap:7px}.expense-flow{counter-reset:expense-stage;display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none}.expense-flow-step{counter-increment:expense-stage;flex:1 1 150px;position:relative;display:flex;align-items:center;min-height:52px;padding:11px 12px 11px 43px;background:#f4f8f7;border:1px solid #e0eae6;border-radius:8px;color:var(--ink-2);font-size:12px;line-height:1.6}.expense-flow-step:before{content:counter(expense-stage);position:absolute;left:12px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:22px;height:22px;border-radius:7px;color:var(--accent-2);background:#deeee8;font-family:var(--mono);font-size:11px;font-weight:650}.expense-flow-step:last-child{background:#faf7ef;border-color:#ede5d2}.expense-flow-step:last-child:before{background:#f0e7d0;color:var(--warn)}.expense-example{margin-top:11px;font-size:12px;color:var(--ink-2)}.expense-example summary{cursor:pointer;width:fit-content;padding:5px 0;color:var(--accent-2);font-weight:550}.expense-example summary::marker{color:#6b9f93}.expense-example p{margin:7px 0 0;padding:10px 13px;background:#f7f9f8;border-left:2px solid #a4c6b8;border-radius:0 7px 7px 0;line-height:1.8}@media (max-width: 1180px){.stat-grid,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar{width:216px;flex-basis:216px}.brand{padding-left:16px;padding-right:16px}.searchbox{width:220px}.supplier-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.supplier-profile-card--payment{grid-column:1 / -1}.purchase-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 1100px){.grid-split,.grid-split-rev{grid-template-columns:1fr}.login-hero{padding:40px 32px}}.menu-btn,.menu-backdrop{display:none}@media (max-width: 900px){.menu-btn{display:inline-flex;width:34px;padding:0;flex:0 0 34px}.shell{padding:12px;gap:0}.sidebar{position:fixed;left:12px;top:80px;width:244px;height:calc(100vh - 92px);height:calc(100svh - 92px);transform:translate(-112%);transition:transform .2s ease;border-radius:13px}.sidebar:not(.open){visibility:hidden}.sidebar.open{transform:none;box-shadow:var(--shadow-lg)}.menu-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;width:100%;border:0;background:#291d4a38;z-index:29}.grid-split,.grid-split-rev,.grid-2,.grid-3,.grid-4,.branding-grid,.supplier-profile-grid{grid-template-columns:1fr}.supplier-profile-card--payment{grid-column:auto}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{padding:15px 14px 13px}.stat .value{font-size:22px}.stat .foot{font-size:10.5px;gap:5px}.content{padding:19px 0 28px}.topbar{padding:0 11px;gap:8px;top:12px;z-index:35}.searchbox,.userbox .role{display:none}.page-head{gap:13px;margin-bottom:16px}.page-head h1{font-size:21px}.page-head .actions{width:100%;margin-left:0;flex-wrap:wrap}.filters .input{width:100%}.filters .select{max-width:100%}.form-grid{grid-template-columns:1fr}.login-wrap{grid-template-columns:1fr;padding:12px;gap:12px;align-content:start}.login-hero{display:flex;padding:21px 23px;border-radius:15px}.login-hero h1,.login-hero>p,.login-hero .feat{display:none}.login-hero .brand{margin-bottom:0!important}.login-form{min-height:calc(100svh - 124px);padding:32px 24px;border-radius:15px}.login-card{max-width:390px}}@media (max-width: 560px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat .value{font-size:20px}.stat .label{font-size:11px}.crumb{display:none}.project-detail-crumb{display:flex}.userbox{max-width:190px}.userbox .name{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.page-head h1{font-size:20px}.card-head{padding:15px 14px 12px;gap:7px}.card-head .sub{flex-basis:100%;order:2}.card-head .right{margin-left:auto;order:1}.card-body{padding-left:14px;padding-right:14px;padding-bottom:15px}.card>.card-body:first-child{padding-top:15px}.card-head h3{font-size:13px}.table td{padding:11px 12px}.table th{padding-left:12px;padding-right:12px}.filters{gap:8px;align-items:stretch}.filters>.input,.filters>.select{flex:1 1 140px;width:100%}.filters>.btn{min-height:36px}.supplier-list-filters,.purchase-filter-form{padding-left:14px;padding-right:14px}.purchase-filter-grid{grid-template-columns:1fr}.purchase-date-range .input{font-size:14px;padding-left:8px}.purchase-filter-actions{align-items:stretch}.purchase-filter-actions>.actions{width:100%;justify-content:flex-end}.expense-reviewer-strip{padding:12px 14px;gap:10px}.expense-reviewer-copy{flex-basis:100%}.expense-reviewer-names{display:grid;gap:4px}.expense-flow-step{flex-basis:135px;font-size:11.5px}.input,.select,.textarea,.searchbox input{font-size:16px}.input,.select{min-height:40px}.table .select{font-size:13px;min-height:34px}.modal-mask{padding:16px 10px}.modal{border-radius:13px;padding:19px 17px 17px}.modal-head{margin-bottom:17px}.modal-head h3{font-size:16px}.modal-foot{gap:7px}.modal-foot .btn{min-height:37px}.tabs{width:100%;border-radius:9px}.tab{padding:8px 12px}.pagination{padding:13px 14px;gap:7px}.pagination .info{flex-basis:100%}.kv{grid-template-columns:82px minmax(0,1fr)!important;gap:10px}.login-form{padding:28px 22px}.login-card h2{font-size:22px}.password-gate{padding:16px}.password-gate>.card{padding:24px 21px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.project-overview-fields{grid-template-columns:96px minmax(0,1fr) 96px minmax(0,1fr)}@media (max-width: 640px){.project-overview-fields{grid-template-columns:minmax(90px,.4fr) minmax(0,1fr)}}.project-filters{padding:16px}.project-filter-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.project-filter-grid label{display:grid;gap:5px;color:var(--ink-2);font-weight:600}.project-filter-grid :is(.input,.select){width:100%;min-width:0}.project-filter-note{margin:7px 0 14px}.project-filter-grid [aria-invalid=true]{border-color:var(--danger)}.project-finance-section:has(>.card){margin-bottom:16px}:is(.grid-split,.card)+.project-finance-section{margin-top:14px}@media (max-width: 1100px){.project-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 460px){.project-filter-grid label:first-child,.project-filter-grid label:last-child{grid-column:1 / -1}.project-filter-grid input[type=date]{padding-inline:6px}.project-filters .filters>input[aria-label=关键词]{flex-basis:100%}}
