:root{--jf-primary: #0f5f9e;--jf-primary-hover: #0d5489;--jf-primary-active: #0a4a7c;--jf-primary-bg: #e7eff7;--jf-primary-line: #bcd3e8;--jf-bg: #f2f4f6;--jf-card: #ffffff;--jf-chip: #eef3f8;--jf-fill: #f7fafc;--jf-line: #d8dee4;--jf-line-weak: #e9edf1;--jf-text: #1d2733;--jf-text-secondary: #4a5765;--jf-text-tertiary: #64707e;--jf-text-disabled: #9aa5b0;--jf-text-inverse: #ffffff;--jf-ok: #1d7a3d;--jf-warn: #b25e09;--jf-info: #0f5f9e;--jf-muted: #556170;--jf-bad: #b3261e;--jf-ok-bg: #e5f4ea;--jf-ok-line: #b7dcc2;--jf-warn-bg: #fbf0e0;--jf-warn-line: #e8cfa5;--jf-warn-ink: #8a4a06;--jf-bad-bg: #fbe9e7;--jf-bad-line: #e5b4ae;--jf-muted-bg: #eceff2;--jf-muted-line: #d3d9e0;--jf-info-bg: #e7eff7;--jf-info-line: #bcd3e8;--jf-table-font-size: 13px;--jf-table-row-height: 40px;--jf-table-row-dense: 32px;--jf-table-zebra: #f7f9fb;--jf-table-hover: #eef4fa;--jf-table-selected: #e0edf8;--jf-table-head-bg: #eef3f8;--jf-table-head-color: #41505f;--jf-frozen-col-bg: #ffffff;--jf-font-sans: -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Segoe UI", Roboto, sans-serif;--jf-font-num: "SF Mono", ui-monospace, Consolas, monospace;--jf-fs-12: 12px;--jf-fs-13: 13px;--jf-fs-14: 14px;--jf-fs-16: 16px;--jf-fs-20: 20px;--jf-fs-24: 24px;--jf-lh-tight: 1.4;--jf-lh-base: 1.55;--jf-sp-1: 4px;--jf-sp-2: 8px;--jf-sp-3: 12px;--jf-sp-4: 16px;--jf-sp-5: 20px;--jf-sp-6: 24px;--jf-sp-8: 32px;--jf-radius-sm: 4px;--jf-radius: 8px;--jf-radius-lg: 12px;--jf-shadow-sm: 0 1px 2px rgba(20,35,55,.08);--jf-shadow: 0 1px 2px rgba(20,35,55,.08), 0 4px 14px rgba(20,35,55,.06);--jf-shadow-pop:0 4px 16px rgba(20,35,55,.16);--jf-sidebar-w: 200px;--jf-topbar-h: 56px;--jf-content-max: 1600px;--jf-content-pad: 20px;--jf-filterbar-min: 92px;--jf-control-h: 36px;--jf-control-h-lg: 40px;--jf-tap-min: 44px;--jf-m-tabbar-h: 56px;--jf-m-safe-bottom: env(safe-area-inset-bottom, 0px);--jf-m-card-radius: 12px;--jf-m-font-body: 16px;--jf-m-font-num: 28px;--jf-m-input-h: 48px;--jf-m-btn-h: 52px;--jf-lane-bg: #eaeef2;--jf-kcard-accent: var(--jf-primary);--jf-kcard-late: var(--jf-bad);--jf-kcard-done: var(--jf-ok);--jf-kcard-pause: var(--jf-muted);--jf-print-paper: A4 portrait;--jf-print-margin: 12mm;--jf-print-ink: #000000;--jf-print-line: #333333;--jf-print-cell-h: 8mm}html,body,#root{height:100%;margin:0}body{font-family:var(--jf-font-sans);font-size:var(--jf-fs-14);line-height:var(--jf-lh-base);color:var(--jf-text);background:var(--jf-bg);-webkit-font-smoothing:antialiased}.jf-table .ant-table{font-size:var(--jf-table-font-size)}.jf-table .ant-table-tbody>tr>td{height:var(--jf-table-row-height);line-height:var(--jf-lh-tight)}body.jf-dense .jf-table .ant-table-tbody>tr>td{height:var(--jf-table-row-dense)}.jf-table .ant-table-tbody>tr:nth-child(2n)>td{background:var(--jf-table-zebra)}.jf-table .ant-table-tbody>tr:hover>td{background:var(--jf-table-hover)!important}.jf-num{text-align:right;font-variant-numeric:tabular-nums}.jf-code{font-family:var(--jf-font-num);font-variant-numeric:tabular-nums}.jf-nil{color:var(--jf-text-tertiary)}.tag-ok{color:var(--jf-ok);background:var(--jf-ok-bg);border:1px solid var(--jf-ok-line)}.tag-warn{color:var(--jf-warn-ink);background:var(--jf-warn-bg);border:1px solid var(--jf-warn-line)}.tag-bad{color:var(--jf-bad);background:var(--jf-bad-bg);border:1px solid var(--jf-bad-line)}.tag-muted{color:var(--jf-muted);background:var(--jf-muted-bg);border:1px solid var(--jf-muted-line)}.tag-info{color:var(--jf-info);background:var(--jf-info-bg);border:1px solid var(--jf-info-line)}.jf-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--jf-radius-sm);font-size:var(--jf-fs-12);line-height:1;white-space:nowrap}.jf-card{background:var(--jf-card);border:1px solid var(--jf-line-weak);border-radius:var(--jf-radius);box-shadow:var(--jf-shadow-sm)}.jf-page-title{font-size:var(--jf-fs-20);font-weight:600;line-height:var(--jf-lh-tight);color:var(--jf-text);margin:0}.jf-page-desc{font-size:var(--jf-fs-13);color:var(--jf-text-tertiary);margin:var(--jf-sp-1) 0 0}.jf-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jf-print-sheet{width:794px;margin:24px auto;padding:44px;background:#fff;box-shadow:var(--jf-shadow);color:#111;font-size:12px;line-height:1.5}.jf-print-toolbar{width:794px;margin:16px auto 0;display:flex;gap:12px;justify-content:flex-end}.jf-print-title{text-align:center;font-size:20px;font-weight:700;letter-spacing:4px;margin:4px 0 10px}.jf-print-company{text-align:center;font-size:16px;font-weight:700}.jf-print-sub{text-align:center;color:#444;font-size:11px}.jf-print-sec{margin:10px 0 4px;font-weight:700;font-size:12.5px;border-left:3px solid #333;padding-left:6px}.jf-print-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px 12px;font-size:11.5px}.jf-print-grid .kv{display:flex;gap:4px;min-height:8mm;align-items:baseline}.jf-print-grid .kv b{font-weight:600;white-space:nowrap}.jf-print-grid .kv .fill{flex:1;border-bottom:1px solid #999;min-width:30px}.jf-print-table{width:100%;border-collapse:collapse;font-size:10.5px;margin:4px 0}.jf-print-table th,.jf-print-table td{border:1px solid #666;padding:3px 5px;text-align:left}.jf-print-table th{background:#f1f1f1;print-color-adjust:exact;-webkit-print-color-adjust:exact}.jf-print-table .num{text-align:right;font-variant-numeric:tabular-nums}.jf-print-table td.blank{height:8mm}.jf-print-sign{display:flex;justify-content:space-between;gap:16px;margin-top:14px;font-size:11.5px}.jf-print-sign .box{flex:1;min-height:10mm;border-bottom:1px solid #999}.jf-print-note{font-size:10.5px;color:#555;margin-top:8px}@media print{@page{size:A4 portrait;margin:12mm}body{background:#fff!important}.jf-print-toolbar,.antmessage,.ant-message,.ant-notification{display:none!important}.jf-print-sheet{width:auto;margin:0;padding:0;box-shadow:none}.jf-print-page-break{page-break-before:always}}
