:root{--c-canvas:#f2f3f5;--c-surface:#fff;--c-primary:#165dff;--c-primary-hover:#0e42d2;--c-primary-soft:#e8f3ff;--c-text:#1d2129;--c-text-2:#4e5969;--c-border:#e5e6eb;--c-control:#86909c;--c-success:#167c3a;--c-warning:#925b00;--c-error:#cb272d;--page-pad:24px}@media (width<=1380px){:root{--page-pad:20px}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--c-canvas);color:var(--c-text);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.5715 PingFang SC,Microsoft YaHei,Noto Sans CJK SC,system-ui,sans-serif}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.numeric{font-variant-numeric:tabular-nums}.app-header{z-index:20;border-bottom:1px solid var(--c-border);background:#fff;justify-content:space-between;align-items:center;gap:24px;height:56px;padding:0 24px;display:flex;position:sticky;top:0}.brand{color:var(--c-text);align-items:center;gap:10px;font-size:18px;font-weight:600;text-decoration:none;display:flex}.brandmark{grid-template-columns:repeat(2,1fr);gap:3px;width:24px;height:24px;display:grid}.brandmark i{background:var(--c-primary);border-radius:1px}.brandmark i:last-child{background:#94bfff}.header-right{color:var(--c-text-2);align-items:center;gap:16px;display:flex}.demo-label{border:1px solid var(--c-border);color:var(--c-text-2);border-radius:2px;padding:0 6px;font-size:12px;line-height:20px}.user-trigger{height:32px;color:var(--c-text);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:3px;align-items:center;gap:8px;padding:0 8px;display:inline-flex}.user-trigger:hover{background:#f2f3f5}.avatar{width:26px;height:26px;color:var(--c-text-2);background:#f2f3f5;border-radius:50%;place-items:center;font-size:12px;display:inline-grid}.user-role{color:var(--c-text-2);font-size:13px}.app-body{grid-template-columns:200px minmax(0,1fr);min-height:calc(100vh - 56px);display:grid}.app-sider{border-right:1px solid var(--c-border);background:#fff;height:calc(100vh - 56px);padding:16px 8px;position:sticky;top:56px;overflow-y:auto}.app-sider .ant-menu-inline{border-inline-end:0!important}.app-sider .ant-menu-item,.app-sider .ant-menu-submenu-title{width:100%!important;margin-inline:0!important}.app-main{min-width:0;padding:0 var(--page-pad) var(--page-pad)}.breadcrumb{align-items:center;height:44px;font-size:13px;display:flex}.panel{background:#fff;border-radius:4px;min-width:0}.panel+.panel{margin-top:16px}.page-header{padding:20px 24px 0}.title-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.title-group{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.page-title{font-size:20px;font-weight:600;line-height:28px}.subtitle{color:var(--c-text-2);margin-top:4px;font-size:13px}.header-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.meta-line{color:var(--c-text-2);flex-wrap:wrap;gap:8px 24px;padding:14px 24px 20px;font-size:13px;display:flex}.meta-line>span{gap:10px;display:inline-flex}.meta-line b{color:var(--c-text);font-weight:400}.details{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px;margin:0;padding:20px 24px;display:grid}.details.pt0{padding-top:0}.details dl{min-width:0;margin:0}.details dt{color:var(--c-text-2);margin-bottom:5px;font-size:13px}.details dd{overflow-wrap:anywhere;margin:0;font-size:14px}.details .amount{font-variant-numeric:tabular-nums;font-size:22px;font-weight:500;line-height:28px}@media (width<=1380px){.details{column-gap:16px}}.steps-wrap{border-top:1px solid var(--c-border);padding:20px 24px}.columns{grid-template-columns:minmax(0,1fr) 272px;align-items:start;gap:16px;margin-top:16px;display:grid}.columns.wide-side{grid-template-columns:minmax(0,1fr) 300px}@media (width<=1380px){.columns{grid-template-columns:minmax(0,1fr) 248px}.columns.wide-side{grid-template-columns:minmax(0,1fr) 280px}}.section-head{justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.section-title{font-size:16px;font-weight:600;line-height:24px}.section-sub{color:var(--c-text-2);font-size:13px}.section-body{padding:0 20px 20px}.panel-tabs .ant-tabs-nav{margin:0;padding:0 20px}.panel-tabs .ant-tabs-tab{font-size:14px}.filter-bar{flex-wrap:wrap;align-items:center;gap:12px;padding:16px 20px;display:flex}.table-wrap{padding:0 20px;overflow-x:auto}.table-wrap .ant-table{font-size:14px}.table-wrap .ant-table-thead>tr>th{height:40px;font-size:13px;font-weight:500;padding-block:0!important}.table-wrap .ant-table-tbody>tr>td{height:48px}.table-wrap.compact .ant-table-tbody>tr>td{height:46px;padding-block:8px;font-size:13px}.table-wrap .ant-pagination{margin:16px 0!important}.cell-sub{color:var(--c-text-2);margin-top:2px;font-size:12px;display:block}.cell-ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:280px;display:block;overflow:hidden}.num{text-align:right;font-variant-numeric:tabular-nums}.status{white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}.status:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.status.blue{color:var(--c-primary)}.status.green{color:var(--c-success)}.status.amber{color:var(--c-warning)}.status.red{color:var(--c-error)}.status.gray{color:var(--c-text-2)}.ref-link{color:var(--c-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none}.ref-link:hover{color:var(--c-primary-hover);text-decoration:underline}.timeline{padding:4px 20px 20px}.event{border-left:1px solid var(--c-border);padding:0 0 20px 18px;font-size:13px;position:relative}.event:last-child{padding-bottom:0}.event:before{content:"";background:#86909c;border-radius:50%;width:5px;height:5px;position:absolute;top:7px;left:-3px}.event small{color:var(--c-text-2);margin-top:4px;font-size:12px;display:block}.event p{color:var(--c-text-2);overflow-wrap:anywhere;margin-top:4px}.inline-meta{grid-template-columns:76px minmax(0,1fr);gap:12px 10px;margin:0;font-size:13px;display:grid}.inline-meta dt{color:var(--c-text-2)}.inline-meta dd{overflow-wrap:anywhere;margin:0}.divider{border-top:1px solid var(--c-border);margin:18px 0}.cost-total{color:var(--c-text-2);justify-content:space-between;align-items:center;font-size:13px;display:flex}.cost-total strong{color:var(--c-text);font-variant-numeric:tabular-nums;font-size:20px;font-weight:500}.approval-flow{padding:8px 20px 24px}.approval-node{grid-template-columns:22px minmax(0,1fr);column-gap:12px;padding-bottom:28px;font-size:14px;display:grid;position:relative}.approval-node:last-child{padding-bottom:0}.approval-node:not(:last-child):after{content:"";background:var(--c-border);width:1px;position:absolute;top:26px;bottom:5px;left:10px}.node-circle{background:var(--c-primary-soft);width:22px;height:22px;color:var(--c-primary);border-radius:50%;place-items:center;font-size:12px;display:grid}.approval-node.active .node-circle{background:var(--c-primary);color:#fff}.approval-node.returned .node-circle{color:var(--c-error);background:#ffece8}.approval-node small{color:var(--c-text-2);margin-top:5px;font-size:13px;display:block}.approval-node time{color:var(--c-text-2);margin-top:4px;font-size:12px;display:block}.approval-node p{overflow-wrap:anywhere;margin-top:8px;font-size:13px}.reason-row{border-bottom:1px solid var(--c-border);gap:20px;padding:20px 0;font-size:14px;display:flex}.reason-row label{color:var(--c-text-2);white-space:nowrap}.form-actions{justify-content:flex-end;align-items:center;gap:8px;padding-top:16px;display:flex}.disabled-reason{color:var(--c-text-2);margin-right:auto;font-size:13px}.empty-text{text-align:center;color:var(--c-text-2);padding:32px 20px;font-size:13px}.scope-tag{color:var(--c-text-2);white-space:nowrap;background:#f2f3f5;border-radius:2px;padding:0 6px;font-size:12px;line-height:20px;display:inline-flex}.drawing-preview{border:1px solid var(--c-border);background:#f7f8fa;border-radius:4px;justify-content:center;align-items:center;min-height:320px;padding:12px;display:flex}.drawing-preview img{max-width:100%;max-height:520px}.center-page{place-items:center;min-height:100vh;padding:24px;display:grid}.raw-box{border:1px solid var(--c-border);white-space:pre-wrap;word-break:break-all;background:#f7f8fa;border-radius:3px;max-height:160px;padding:8px 12px;font:12px/1.6 ui-monospace,Menlo,monospace;overflow:auto}.lines-table{border-collapse:collapse;width:100%;font-size:13px}.lines-table th{text-align:left;color:var(--c-text-2);white-space:nowrap;background:#f7f8fa;padding:6px 8px;font-weight:500}.lines-table td{border-top:1px solid #f2f3f5;padding:6px 8px}.lines-table .num{text-align:right}.lines-scroll{width:0;min-width:100%;overflow-x:auto}.lines-scroll .lines-table{table-layout:auto;width:max-content;min-width:100%}.lines-scroll .lines-table td{white-space:nowrap;overflow-wrap:normal}.lines-scroll .lines-table td.wrap{white-space:normal;overflow-wrap:anywhere;min-width:160px}.columns>.panel+.panel{margin-top:0}.stack>.panel+.panel{margin-top:16px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px;display:grid}.form-item{min-width:0}.form-item.wide{grid-column:1/-1}.form-label{color:var(--c-text);margin-bottom:6px;font-size:14px;display:block}.req-mark{color:var(--c-error);margin-right:4px}.field-error{color:var(--c-error);margin-top:4px;font-size:13px}.field-help{color:var(--c-text-2);margin-top:4px;font-size:13px}.readonly-value{min-height:32px;color:var(--c-text);align-items:center;display:flex}.line-editor{overflow-x:auto}.line-editor.invalid .lines-table{outline:1px solid var(--c-error)}.line-editor .lines-table td{vertical-align:middle}.action-bar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.kv-row{color:var(--c-text-2);flex-wrap:wrap;gap:24px;font-size:13px;display:flex}.kv-row b{color:var(--c-text);margin-left:8px;font-weight:400}.confirm-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.confirm-cell{border:1px solid var(--c-border);border-radius:4px;padding:10px 12px;font-size:13px}.confirm-cell .who{color:var(--c-text);margin-bottom:4px}.confirm-cell .when{color:var(--c-text-2)}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:20px 24px;display:grid}.metric-grid dl{margin:0}.metric-grid dt{color:var(--c-text-2);margin-bottom:5px;font-size:13px}.metric-grid dd{font-variant-numeric:tabular-nums;margin:0;font-size:22px;font-weight:500;line-height:28px}.print-sheet{border:1px solid var(--c-border);background:#fff;padding:32px 40px;font-size:14px;line-height:1.9}.print-sheet h2{text-align:center;margin-bottom:16px;font-size:20px}.stamp{color:#cb272d;text-align:center;border:3px solid #cb272d;border-radius:50%;place-items:center;width:120px;height:120px;font-size:13px;display:inline-grid;transform:rotate(-12deg)}@media print{.app-header,.app-sider,.breadcrumb,.ant-drawer-footer,.ant-drawer-header,.no-print{display:none!important}}.form-label.required:before,.lines-table th .required:before{content:"*";color:var(--c-error);margin-right:4px}.ant-descriptions-bordered .ant-descriptions-view>table{table-layout:fixed}.ant-descriptions-bordered .ant-descriptions-item-content{overflow-wrap:anywhere}.avatar.demo{background:var(--c-primary,#1664ff);color:#fff}.operator-hint{color:var(--c-text-2);white-space:nowrap;align-self:center;margin-right:auto;font-size:12px}.operator-hint.none{color:#d4380d}.ant-modal-confirm .operator-hint{margin-top:8px;display:block}.row-actions{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.row-actions .ant-btn{padding:0 6px}.lock-reason{color:var(--c-text-2);white-space:nowrap;font-size:12px}.draft-strip{border:1px solid var(--c-border,#e5e6eb);background:#fafbfc;border-radius:4px;margin-bottom:12px;padding:8px 12px}.draft-strip h3{margin:0 0 6px;font-size:13px;font-weight:600}.draft-strip .draft-row{border-top:1px dashed #e5e6eb;align-items:center;gap:12px;padding:4px 0;font-size:13px;display:flex}.draft-strip .draft-row:first-of-type{border-top:0}.draft-strip .draft-row .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.source-empty{color:var(--c-text-2);font-size:13px}.ref-list{margin-top:12px}.ref-list li{margin:2px 0}.snapshot-json{border:1px solid var(--c-border,#e5e6eb);white-space:pre-wrap;word-break:break-all;background:#f7f8fa;max-height:360px;padding:12px;font-size:12px;overflow:auto}
