:root{--brand-50: #f0f7ff;--brand-100: #dceafe;--brand-500: #2f6bff;--brand-600: #1e54e6;--brand-700: #1742b8;--accent-50: #ecfdf5;--accent-500: #10b981;--accent-600: #059669;--bg: #f5f6f8;--surface: #ffffff;--surface-2:#fafbfc;--line: #ececef;--line-2: #e3e4e8;--ink-900: #0c0d10;--ink-700: #2a2c33;--ink-500: #6b6f78;--ink-400: #8e9199;--ink-300: #b8bbc2;--st-draft: #a1a4ad;--st-pending: #f59e0b;--st-rejected: #ef4444;--st-print: #0ea5e9;--st-received: #6366f1;--st-paid: #10b981;--st-withdraw: #94a3b8;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-xl: 20px;--shadow-1: 0 1px 2px rgba(15,18,30,.04), 0 1px 3px rgba(15,18,30,.04);--shadow-2: 0 6px 24px -8px rgba(15,18,30,.12), 0 2px 6px rgba(15,18,30,.04);--shadow-3: 0 24px 60px -20px rgba(15,18,30,.2), 0 8px 18px -10px rgba(15,18,30,.1);--font: "Inter", "PingFang SC", "Microsoft Yahei", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:var(--font);color:var(--ink-900);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}button{font-family:inherit}a{color:inherit;text-decoration:none}.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh;background:var(--bg);font-size:14px;color:var(--ink-900)}.side{background:#0c0d10;color:#cfd1d6;padding:18px 14px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;overflow-y:auto}.side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;color:#fff}.side .brand-mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--brand-500),#6f3bff);display:grid;place-items:center;font-weight:700;color:#fff;font-size:14px;letter-spacing:-.02em;box-shadow:inset 0 1px #ffffff2e}.side .brand-name{font-weight:600;font-size:15px;letter-spacing:-.01em}.side .brand-sub{font-size:11px;color:#6b6f78;margin-top:2px}.side .group-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:#5b5e66;padding:14px 8px 6px;font-weight:600}.nav-item{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:8px;color:#c0c2c8;cursor:pointer;transition:background .15s,color .15s;font-size:13.5px;position:relative;text-decoration:none}.nav-item:hover{background:#ffffff0a;color:#fff}.nav-item.active{background:#2f6bff2e;color:#fff}.nav-item.active:before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;background:var(--brand-500);border-radius:0 3px 3px 0}.nav-item .ico{width:18px;height:18px;display:grid;place-items:center;opacity:.9;flex-shrink:0}.nav-item .badge{margin-left:auto;background:var(--brand-500);color:#fff;font-size:10.5px;font-weight:600;padding:1px 6px;border-radius:10px;min-width:18px;text-align:center}.nav-item .badge.muted{background:#2a2c33;color:#b8bbc2}.side .me{margin-top:auto;padding:14px 10px 12px;display:flex;align-items:center;gap:10px;border-top:1px solid #1d1f24;margin-left:-4px;margin-right:-4px}.avatar{border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:600;flex-shrink:0;-webkit-user-select:none;user-select:none}.me .who{line-height:1.2;min-width:0;flex:1}.me .who-name{color:#fff;font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me .who-role{color:#6b6f78;font-size:11px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.me .logout{margin-left:auto;color:#5b5e66;cursor:pointer;display:grid;place-items:center;width:28px;height:28px;border-radius:6px;flex-shrink:0}.me .logout:hover{color:#fff;background:#ffffff0a}.main{background:var(--bg);display:flex;flex-direction:column;min-width:0}.topbar{height:60px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:16px;position:sticky;top:0;z-index:10}.crumbs{display:flex;align-items:center;gap:8px;color:var(--ink-500);font-size:13px;min-width:0}.crumbs .sep{color:var(--ink-300);display:inline-flex}.crumbs .here{color:var(--ink-900);font-weight:500}.searchbar{margin-left:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:7px 12px;display:flex;align-items:center;gap:8px;color:var(--ink-400);font-size:13px;width:280px}.searchbar kbd{margin-left:auto;font-family:var(--mono);font-size:10.5px;background:#fff;border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--ink-500)}.icon-btn{width:36px;height:36px;border-radius:8px;display:grid;place-items:center;color:var(--ink-500);cursor:pointer;border:1px solid transparent;background:transparent}.icon-btn:hover{background:var(--surface-2);border-color:var(--line);color:var(--ink-900)}.content{padding:28px;flex:1;min-height:0}.content.tight{padding:24px 28px}.pageheader{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;gap:24px;flex-wrap:wrap}.pageheader h1{font-size:22px;font-weight:600;letter-spacing:-.015em;margin:0}.pageheader .sub{color:var(--ink-500);font-size:13px;margin-top:4px}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:8px;border:1px solid var(--line-2);background:#fff;color:var(--ink-900);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s,transform .05s;white-space:nowrap;text-decoration:none}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--ink-300)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--ink-900);color:#fff;border-color:var(--ink-900)}.btn.primary:hover:not(:disabled){background:#1f2128;border-color:#1f2128}.btn.brand{background:var(--brand-500);color:#fff;border-color:var(--brand-500)}.btn.brand:hover:not(:disabled){background:var(--brand-600);border-color:var(--brand-600)}.btn.success{background:var(--accent-500);color:#fff;border-color:var(--accent-500)}.btn.success:hover:not(:disabled){background:var(--accent-600);border-color:var(--accent-600)}.btn.danger{color:#b91c1c}.btn.danger:hover:not(:disabled){background:#fef2f2;border-color:#fecaca}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-500)}.btn.ghost:hover:not(:disabled){background:var(--surface-2);color:var(--ink-900)}.btn.sm{height:30px;padding:0 10px;font-size:12.5px;gap:5px}.btn.lg{height:44px;padding:0 20px;font-size:14px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-1)}.card .hd{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.card .hd h3{margin:0;font-size:14px;font-weight:600;letter-spacing:-.005em;display:flex;align-items:center;gap:8px}.card .bd{padding:18px 20px}.card .bd.flush{padding:0}.pill{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:11px;font-size:11.5px;font-weight:500;letter-spacing:-.005em;white-space:nowrap;background:#f3f4f6;color:var(--ink-700)}.pill .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}.pill.draft{background:#f1f2f4;color:#5e6471}.pill.pending{background:#fef5e0;color:#b45309}.pill.rejected{background:#fde8e8;color:#b42318}.pill.print{background:#e0f2fe;color:#075985}.pill.received{background:#e8eaff;color:#4338ca}.pill.paid{background:#dcfce7;color:#047857}.pill.withdraw{background:#f1f2f4;color:#6b6f78}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.table th,.table td{text-align:left;padding:12px 16px;vertical-align:middle;border-bottom:1px solid var(--line)}.table th{font-weight:500;font-size:12px;color:var(--ink-500);background:var(--surface-2);letter-spacing:-.005em}.table th:first-child{border-top-left-radius:var(--radius-lg)}.table th:last-child{border-top-right-radius:var(--radius-lg)}.table tr:last-child td{border-bottom:none}.table tr:last-child td:first-child{border-bottom-left-radius:var(--radius-lg)}.table tr:last-child td:last-child{border-bottom-right-radius:var(--radius-lg)}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover td{background:#fafbfc}.table tbody tr.selected td{background:var(--brand-50)}.table .num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.table .right{text-align:right}.table .center{text-align:center}.table .code{font-family:var(--mono);font-size:12.5px;color:var(--ink-900);font-weight:500}.table a.code{color:var(--brand-600)}.table a.code:hover{text-decoration:underline}.table .who-cell{display:flex;align-items:center;gap:8px}.table .money{font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px 18px;position:relative;overflow:hidden}.kpi .label{font-size:12px;color:var(--ink-500);display:flex;align-items:center;gap:6px}.kpi .val{font-size:26px;font-weight:600;letter-spacing:-.025em;margin-top:8px;font-variant-numeric:tabular-nums;color:var(--ink-900)}.kpi .delta{margin-top:6px;font-size:11.5px;color:var(--ink-500)}.kpi .delta .up{color:var(--accent-600);font-weight:500}.kpi .delta .down{color:#b42318;font-weight:500}.kpi .spark{position:absolute;right:12px;top:14px;width:70px;height:30px;opacity:.9}.tabbar{display:flex;gap:4px;margin-bottom:18px;border-bottom:1px solid var(--line)}.tab-link{padding:10px 14px;cursor:pointer;font-size:13.5px;color:var(--ink-500);font-weight:400;border-bottom:2px solid transparent;margin-bottom:-1px;background:none;border-left:none;border-right:none;border-top:none;transition:color .12s,border-color .12s}.tab-link.active{color:var(--ink-900);font-weight:600;border-bottom-color:var(--ink-900)}.tab-count{margin-left:6px;font-size:11.5px;padding:1px 6px;border-radius:8px;background:var(--surface-2);color:var(--ink-500);font-weight:500}.tab-link.active .tab-count{background:#0c0d10;color:#fff}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;color:var(--ink-500);font-weight:500}.input,.select,.textarea{background:#fff;border:1px solid var(--line-2);border-radius:8px;padding:9px 12px;font-size:13.5px;color:var(--ink-900);font-family:inherit;width:100%;transition:border-color .12s,box-shadow .12s;outline:none}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px #2f6bff1f}.textarea{resize:vertical;min-height:70px}.empty{padding:60px 20px;text-align:center;color:var(--ink-500);font-size:13px}.empty .icon-circle{width:56px;height:56px;margin:0 auto 14px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;color:var(--ink-300)}.toggle{width:32px;height:18px;border-radius:10px;padding:2px;display:inline-flex;align-items:center;cursor:pointer;transition:background .15s;background:var(--line-2);border:none}.toggle.on{background:var(--accent-500)}.toggle .knob{width:14px;height:14px;border-radius:7px;background:#fff;transition:transform .15s;box-shadow:0 1px 2px #00000026}.toggle.on .knob{transform:translate(14px)}.checkbox{width:18px;height:18px;border-radius:5px;border:1.5px solid var(--line-2);background:#fff;display:grid;place-items:center;cursor:pointer;transition:background .12s,border-color .12s;flex-shrink:0}.checkbox.on{background:var(--brand-500);border-color:var(--brand-500)}.divider{height:1px;background:var(--line);margin:16px 0}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}.muted{color:var(--ink-500)}.tiny{font-size:11.5px}.mono{font-family:var(--mono)}@keyframes pulse-ring{0%,to{box-shadow:0 0 #2f6bff66}50%{box-shadow:0 0 0 16px #2f6bff00}}.pulse-ring{animation:pulse-ring 2s infinite}.ant-message,.ant-modal-mask,.ant-modal-wrap{z-index:10000}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-aside{grid-template-columns:minmax(0,1fr) 320px;gap:20px}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.side-backdrop{display:none}@media(max-width:900px){.app{grid-template-columns:1fr}.side{position:fixed;inset:0 auto 0 0;width:262px;max-width:82vw;height:100dvh;z-index:60;transform:translate(-100%);transition:transform .22s ease;box-shadow:0 0 40px #00000059}.side.open{transform:translate(0)}.side-backdrop.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:55}.topbar{padding:0 14px;gap:10px;height:54px}.topbar .searchbar{display:none}.crumbs{font-size:12px;min-width:0;overflow:hidden}.crumbs .here{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content{padding:14px}.content.tight{padding:12px 14px}.pageheader{align-items:flex-start;gap:12px;margin-bottom:16px}.pageheader h1{font-size:19px}.grid-2,.grid-3,.grid-4,.grid-aside,.kpi-grid{grid-template-columns:1fr!important;gap:12px}.card{border-radius:12px}.table th,.table td{padding:10px 12px}.table-scroll>.table{min-width:620px}.btn{min-height:40px}.row{flex-wrap:wrap}.tabbar{overflow-x:auto;-webkit-overflow-scrolling:touch}.tab-link{white-space:nowrap}}.nav-toggle{display:none}@media(max-width:900px){.nav-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;flex:0 0 auto;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink-900)}}
