:root{color:#253746;background:#eef3f6;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(circle at 85% -10%,rgba(83,174,198,.16),transparent 32%),#eef3f6}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(340px,1.1fr) minmax(420px,.9fr);background:#0e2b3d}.login-brand{padding:9vh 8vw;color:#e9f3f7;position:relative;overflow:hidden;background:linear-gradient(150deg,#092536e0,#115066e6),repeating-linear-gradient(135deg,rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 1px,transparent 1px,transparent 18px)}.login-brand:after{content:"";position:absolute;width:520px;height:520px;right:-220px;bottom:-260px;border:1px solid rgba(180,226,238,.22);border-radius:50%;box-shadow:0 0 0 60px #b4e2ee09,0 0 0 120px #b4e2ee06}.login-brand h1{margin:22px 0 16px;max-width:700px;font-size:clamp(36px,4.2vw,68px);line-height:1.08;letter-spacing:-.04em;font-weight:700}.login-brand p{max-width:620px;color:#e8f6fac2;font-size:16px;line-height:1.8}.login-kicker{display:inline-flex;align-items:center;gap:10px;text-transform:uppercase;letter-spacing:.16em;font-size:12px;color:#8dd4e7}.login-kicker:before{content:"";width:30px;height:1px;background:#8dd4e7}.login-facts{display:flex;gap:36px;margin-top:54px}.login-facts strong{display:block;color:#fff;font-size:24px;margin-bottom:4px}.login-facts span{color:#e1f3f89e;font-size:12px}.login-panel{display:flex;align-items:center;justify-content:center;padding:32px;background:#f5f8fa}.login-card{width:min(420px,100%);padding:14px}.login-panel-inner{width:min(450px,100%)}.login-english{color:#176b87;font-size:12px;letter-spacing:.04em}.login-legal{margin-top:18px;padding:0 14px;color:#8193a0;font-size:11px;line-height:1.9;text-align:center}.login-legal a,.sidebar-footer a{color:#176b87;text-decoration:none}.sidebar-footer a{color:#8dd4e7}.login-card h2{margin:0 0 8px;color:#12324a;font-size:30px}.login-card .login-subtitle{margin:0 0 30px;color:#6c8190}.app-layout{min-height:100vh}.app-sider{position:sticky!important;top:0;height:100vh;overflow:auto}.app-sider .ant-layout-sider-children{display:flex;flex-direction:column;height:100%}.brand-block{padding:24px 20px 20px;color:#fff}.brand-mark{display:flex;align-items:center;gap:12px}.brand-symbol{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;color:#12324a;background:linear-gradient(145deg,#a5e4f2,#65bdd3);font-weight:800}.brand-title{font-weight:650;letter-spacing:.02em}.brand-subtitle{margin-top:3px;color:#e2f2f88c;font-size:11px}.app-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:0 26px;border-bottom:1px solid #e2eaef;box-shadow:0 8px 28px #12324a0a}.header-title{color:#12324a;font-size:19px;font-weight:650}.header-user{display:flex;align-items:center;gap:12px}.page-content{padding:24px 26px 40px;max-width:1680px;margin:0 auto}.sidebar-footer{margin:14px 16px 18px;padding-top:14px;border-top:1px solid rgba(205,232,241,.15);color:#dceef494;font-size:10px;line-height:1.7}.page-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.page-intro h1{margin:0 0 6px;color:#12324a;font-size:28px;letter-spacing:-.025em}.page-intro p{margin:0;color:#6d8392}.last-updated-at{display:flex;align-items:center;gap:6px;margin-top:8px;color:#788c99;font-size:11px;font-variant-numeric:tabular-nums}.last-updated-at .anticon{color:#176b87}.currency-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:18px}.currency-card{position:relative;overflow:hidden;border:1px solid #dde7ed;box-shadow:0 12px 32px #19465d0f}.currency-card-usd{border-color:#cfe4ec;background:linear-gradient(135deg,#f2fafc,#e6f3f8)}.currency-card-cny{border-color:#efdfc4;background:linear-gradient(135deg,#fffaf0,#fcf0dd)}.currency-card .ant-card-head,.currency-card .ant-card-body{position:relative;z-index:1;background:transparent}.currency-watermark{position:absolute;left:50%;top:50%;z-index:0;color:#176b8713;font-size:96px;font-weight:800;letter-spacing:-.08em;line-height:1;pointer-events:none;text-align:center;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;white-space:nowrap}.currency-card-cny .currency-watermark{color:#b9691813}.currency-card .metric-box{background:#ffffff9e}.currency-card .metric-box.danger{background:#fff5f3c7}.currency-card:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:linear-gradient(#1f7d9d,#59bfd6);z-index:2}.currency-card-cny:before{background:linear-gradient(#b86b18,#e0a54b)}.currency-card .ant-card-head{border-bottom:1px solid #edf2f5}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.metric-box{padding:13px 14px;border-radius:10px;background:#f4f8fa}.metric-box .label{color:#718695;font-size:12px}.metric-box .value{margin-top:4px;color:#12324a;font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.metric-box.danger{background:#fff5f3}.metric-box.danger .value{color:#b42318}.aging-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.aging-cell{padding:8px 10px;border:1px solid #e5edf2;border-radius:8px;background:#fff}.aging-cell .label{color:#738795;font-size:11px}.aging-cell .amount{margin-top:2px;color:#2d4656;font-weight:650;font-variant-numeric:tabular-nums;font-size:13px}.dashboard-lower{display:grid;grid-template-columns:minmax(520px,1.25fr) minmax(360px,.75fr);gap:18px;margin-top:18px}.dashboard-chart-grid{display:grid;grid-template-columns:minmax(520px,1.15fr) minmax(360px,.85fr);align-items:stretch;gap:18px;margin-top:18px}.dashboard-chart-grid>.section-card{height:100%}.dashboard-right-stack{display:grid;grid-template-rows:minmax(0,1fr) minmax(0,1fr);gap:18px;height:100%;min-width:0}.dashboard-right-stack>.section-card{display:flex;flex-direction:column;height:100%;min-height:0}.dashboard-right-stack>.section-card .ant-card-body{flex:1;min-height:0;overflow:auto}.chart-hint{color:#7b8f9c;font-size:11px;font-weight:400}.chart-empty{padding:36px 16px;color:#7b8f9c;text-align:center}.app-version{max-width:1680px;margin:0 auto;padding:0 26px 20px;color:#8598a4;font-size:10px;letter-spacing:.06em;text-align:right}.login-version{position:fixed;right:20px;bottom:15px;color:#8a9ba6;font-size:10px;letter-spacing:.06em}.chart-legend{display:flex;gap:18px;margin-bottom:14px;color:#6f8390;font-size:11px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.legend-dot{display:inline-block;width:9px;height:9px;border-radius:3px}.legend-dot.received{background:#4ca977}.legend-dot.outstanding{background:#efbf57}.legend-dot.invoiced{background:#69aec4}.legend-line{display:inline-block;width:15px;height:2px;border-radius:2px;background:#d38b24}.annual-chart-group{margin-bottom:18px}.annual-chart-group:last-child{margin-bottom:0}.annual-structure-card{display:flex;flex-direction:column}.annual-structure-card .ant-card-body{display:flex;flex:1;min-height:0}.annual-structure-card .annual-chart{display:flex;flex:1;flex-direction:column;width:100%}.annual-structure-card .annual-chart-group{display:flex;flex:1;flex-direction:column;justify-content:space-between;margin-bottom:0}.annual-structure-card .annual-chart-group+.annual-chart-group{margin-top:18px;padding-top:16px;border-top:1px solid #edf2f5}.annual-structure-card .annual-chart-row{min-height:42px;padding-top:10px;padding-bottom:10px}.annual-chart-currency{margin-bottom:4px;color:#176b87;font-size:11px;font-weight:700;letter-spacing:.08em}.annual-chart-row{display:grid;grid-template-columns:58px minmax(120px,1fr) 125px;align-items:center;gap:12px;width:100%;padding:7px 6px;border:0;border-radius:7px;background:transparent;color:#304858;text-align:left;cursor:pointer}.annual-chart-row:hover{background:#f4f9fb}.annual-chart-year{font-size:12px;font-weight:600}.annual-chart-track{height:20px;overflow:hidden;border-radius:6px;background:#eaf0f4}.annual-chart-total{display:flex;height:100%;overflow:hidden;border-radius:6px}.annual-chart-segment{display:block;height:100%}.annual-chart-segment.received{background:linear-gradient(90deg,#3b9c6c,#72c599)}.annual-chart-segment.outstanding{background:linear-gradient(90deg,#f6d36f,#edb943)}.annual-chart-meta{color:#718795;font-size:10px;text-align:right;white-space:nowrap}.annual-chart-meta b{color:#b42318;font-size:12px}.monthly-chart-section{margin-top:8px}.monthly-chart-section+.monthly-chart-section{margin-top:20px;padding-top:16px;border-top:1px solid #edf2f5}.monthly-chart-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:4px;color:#7b8f9c;font-size:10px}.monthly-chart-head strong{color:#12324a;font-size:13px}.monthly-chart svg{display:block;width:100%;height:auto;overflow:visible}.collection-pie-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px 20px}.collection-pie-item{display:flex;align-items:center;gap:16px;min-width:0;padding:8px 0}.collection-pie{flex:0 0 108px;width:108px;height:108px;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff8c,0 8px 20px #1e485c17}.collection-pie-stats{flex:1;min-width:0}.collection-pie-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px;padding-bottom:7px;border-bottom:1px solid #edf2f5}.collection-pie-title strong{color:#12324a;font-size:15px}.collection-pie-title span{color:#176b87;font-size:11px;font-weight:600}.collection-pie-row{display:flex;justify-content:space-between;gap:8px;margin-top:6px;color:#6f8390;font-size:10px}.collection-pie-row span{display:inline-flex;align-items:center;gap:5px}.collection-pie-row b{color:#304858;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}.pie-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.pie-dot.received{background:#3b9c6c}.pie-dot.outstanding{background:#efbf57}.pie-dot.adjustment{background:#b8c5cd}.aging-chart-group{padding:12px 0;border-bottom:1px solid #edf2f5}.aging-chart-group:first-child{padding-top:0}.aging-chart-group:last-child{padding-bottom:0;border-bottom:0}.aging-chart-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:7px;color:#6f8390;font-size:11px}.aging-chart-head strong{color:#12324a;font-size:13px}.aging-chart-track{display:flex;height:24px;overflow:hidden;border-radius:7px;background:#edf2f5}.aging-chart-track i{display:block;height:100%}.aging-chart-legend{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:8px;color:#718795;font-size:10px}.aging-chart-legend span{display:inline-flex;align-items:center;gap:5px}.aging-chart-legend i{display:inline-block;width:7px;height:7px;border-radius:2px}.aging-chart-empty{padding:10px;border-radius:7px;background:#f2faf6;color:#2f855a;font-size:11px;text-align:center}.aging-not-due{margin-top:7px;color:#8a9ba6;font-size:10px}.section-card{border:1px solid #dde7ed;box-shadow:0 10px 30px #19465d0d}.filter-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:14px;margin-bottom:14px;border:1px solid #dde7ed;border-radius:12px;background:#ffffffe6}.filter-bar .ant-input-affix-wrapper{width:280px}.exception-analysis-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:14px}.exception-analysis-box{padding:12px 14px;border:1px solid #e1eaf0;border-radius:10px;background:linear-gradient(135deg,#f8fbfc,#f1f7f9)}.exception-analysis-box .ant-statistic-title{font-size:11px}.exception-analysis-box .ant-statistic-content{font-size:19px;font-variant-numeric:tabular-nums}.table-card{border:1px solid #dde7ed;box-shadow:0 12px 34px #19465d0f}.table-card .ant-table-tbody>tr{cursor:pointer}.table-card .ant-table-tbody>tr.receivable-row-paid>td{background:#edf9f0!important}.table-card .ant-table-tbody>tr.receivable-row-paid:hover>td{background:#e3f5e8!important}.table-card .ant-table-tbody>tr.receivable-row-outstanding>td{background:#fff9e8!important}.table-card .ant-table-tbody>tr.receivable-row-outstanding:hover>td{background:#fff2cc!important}.money{font-variant-numeric:tabular-nums;white-space:nowrap}.danger-money{color:#b42318;font-weight:650}.drawer-hero{padding:18px;border-radius:14px;background:linear-gradient(130deg,#12324a,#1c5b75);color:#fff}.drawer-hero .sub{color:#e3f3f8a6;margin-top:4px}.drawer-hero .amount{margin-top:18px;font-size:32px;font-weight:750;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.drawer-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.review-value{display:inline-block;padding:3px 7px;border:1px solid #ffe58f;border-radius:5px;background:#fffbe6;color:#ad6800}.review-hero{box-shadow:inset 0 0 0 2px #fadb14}.review-form-item .ant-form-item-label>label{color:#ad6800;font-weight:600}.review-form-item .ant-input,.review-form-item .ant-input-affix-wrapper,.review-form-item .ant-picker,.review-form-item .ant-select-selector,.review-form-item .ant-input-number,.review-form-item .ant-input-number-input{border-color:#ffe58f!important;background:#fffbe6!important}.invoice-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.invoice-summary-box{padding:12px 14px;border:1px solid #e2ebf0;border-radius:10px;background:#f7fafb}.invoice-summary-box.paid{background:#eff9f2;border-color:#d3ebda}.invoice-summary-box.unpaid{background:#fff7f5;border-color:#f4ddd7}.invoice-summary-box .ant-statistic-title{font-size:11px}.invoice-summary-box .ant-statistic-content{font-size:18px;font-variant-numeric:tabular-nums}.invoice-row-paid>td{background:#edf9f0!important}.invoice-row-paid:hover>td{background:#e4f5e9!important}.receivable-drawer-fullscreen .ant-drawer-content-wrapper{width:100vw!important;max-width:100vw!important}.receivable-drawer-fullscreen .ant-drawer-body{padding:20px 28px 40px}.detail-label{color:#728797;font-size:12px}.detail-value{margin-top:3px;color:#263d4b;font-weight:560}.empty-state{padding:42px 20px;text-align:center;color:#748998}.report-tabs .ant-tabs-nav{margin-bottom:18px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:18px}.backup-status{padding:18px;border-radius:12px;background:#f3f8fa;border:1px solid #e2edf2}.annual-summary-card .ant-card-body{min-width:0;overflow:hidden}.annual-summary-mobile{display:none}.pdf-import-file-list{display:grid;gap:8px;max-height:360px;margin-top:14px;overflow:auto}.pdf-import-file-item{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:9px 12px;border:1px solid #e3ebef;border-radius:8px;background:#f8fbfc}.pdf-import-file-item>.ant-space{min-width:0}.pdf-import-file-item>.ant-space .ant-space-item:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdf-import-error,.pdf-import-warning{display:block;max-width:190px;font-size:10px;line-height:1.45;white-space:normal}.pdf-import-error{color:#b42318}.pdf-import-warning{color:#ad6800}.attachment-preview-frame{display:block;width:100%;height:min(78vh,820px);border:0;background:#f3f6f8}.attachment-preview-image{display:grid;place-items:center;min-height:320px;max-height:78vh;padding:18px;overflow:auto;background:#f3f6f8}.attachment-preview-image img{display:block;max-width:100%;max-height:74vh;object-fit:contain}.status-line{display:flex;align-items:center;justify-content:space-between;gap:16px}.muted{color:#748998}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.ant-table-cell{font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:1080px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.dashboard-lower,.dashboard-chart-grid{grid-template-columns:1fr}.dashboard-chart-grid>.section-card,.dashboard-right-stack,.dashboard-right-stack>.section-card{height:auto}.annual-structure-card,.annual-structure-card .ant-card-body{display:block}.annual-structure-card .annual-chart-group{display:block;margin-bottom:18px}.dashboard-right-stack{display:flex;flex-direction:column}.dashboard-right-stack>.section-card{display:block}.dashboard-right-stack>.section-card .ant-card-body{flex:none;overflow:visible}.currency-grid{grid-template-columns:1fr}}@media(max-width:720px){.page-content{padding:16px}.app-header{padding:0 14px}.page-intro{align-items:flex-start;flex-direction:column}.metric-row,.aging-grid{grid-template-columns:repeat(2,1fr)}.filter-bar .ant-input-affix-wrapper{width:100%}.app-version{padding:0 16px 16px}.header-user-name .ant-typography:last-child{display:none}.header-user{gap:4px}.header-user>.ant-tag{display:none}.metric-row,.aging-grid,.invoice-summary-grid{grid-template-columns:1fr 1fr}.annual-summary-desktop{display:none}.annual-summary-mobile{display:grid;gap:10px;min-width:0}.annual-summary-mobile-item{display:block;width:100%;min-width:0;padding:12px;overflow:hidden;border:1px solid #e1eaf0;border-radius:10px;background:#f8fbfc;color:#304858;font:inherit;text-align:left;cursor:pointer}.annual-summary-mobile-item:hover{border-color:#b9d6e1;background:#f2f9fb}.annual-summary-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;min-width:0}.annual-summary-mobile-head strong{color:#12324a;font-size:14px}.annual-summary-mobile-rate{margin-left:auto;color:#176b87;font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.annual-summary-mobile-metrics{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:12px;min-width:0}.annual-summary-mobile-metrics>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;min-width:0;padding-top:7px;border-top:1px solid #e8eff3}.annual-summary-mobile-metrics span{flex:0 0 auto;color:#718695;font-size:11px}.annual-summary-mobile-metrics b{min-width:0;color:#263d4b;font-size:12px;text-align:right;overflow-wrap:anywhere;white-space:normal}.annual-summary-mobile-metrics .outstanding b{color:#b42318}.annual-chart-row{grid-template-columns:48px minmax(80px,1fr) 92px;gap:8px}}
