:root{--bg: #f5f6f8;--card: #ffffff;--border: #e5e7eb;--text: #1f2937;--muted: #6b7280;--accent: #2563eb;--accent-soft: #eff6ff;--danger: #dc2626;--radius: 10px;--shadow: 0 1px 3px rgba(16, 24, 40, .07), 0 1px 2px rgba(16, 24, 40, .04);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .14)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.55}#app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.topbar-inner{max-width:1120px;margin:0 auto;padding:0 20px;display:flex;align-items:center;gap:24px;height:54px}.brand{font-weight:700;font-size:16px;letter-spacing:.2px}.brand span{color:var(--accent)}.nav{display:flex;gap:4px}.nav a{padding:6px 14px;border-radius:8px;color:var(--muted);text-decoration:none;font-weight:500}.nav a:hover{background:var(--bg);color:var(--text)}.nav a.active{background:var(--accent-soft);color:var(--accent)}.main{max-width:1120px;margin:0 auto;padding:24px 20px 48px;width:100%;flex:1}.footer{border-top:1px solid var(--border);background:var(--card);color:var(--muted);font-size:12px;text-align:center;padding:14px 20px}.footer a{color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.page-title{font-size:18px;font-weight:700;margin:0 0 16px}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:7px 14px;font-size:13.5px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:var(--bg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#1d4fd7}.btn-danger{color:var(--danger);border-color:#fecaca}.btn-danger:hover{background:#fef2f2}.btn-sm{padding:4px 10px;font-size:12.5px}.field{margin-bottom:14px}.field label{display:block;font-weight:500;margin-bottom:5px;font-size:13px}.field input,.field select,.field textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13.5px;font-family:inherit;background:#fff;color:var(--text)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-error{color:var(--danger);font-size:13px;margin:8px 0 0}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge-待提交{background:#eef2ff;color:#4f46e5}.badge-报销中{background:#fff7ed;color:#c2410c}.badge-已到账{background:#ecfdf5;color:#047857}.badge-受阻{background:#fef2f2;color:#b91c1c}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.toolbar select,.toolbar input{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:13.5px;background:var(--card)}.toolbar input[type=search]{min-width:220px}.toolbar .spacer{flex:1}.table-wrap{overflow-x:auto}table.list{width:100%;border-collapse:collapse}table.list th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--border);white-space:nowrap}table.list td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}table.list tbody tr{cursor:pointer;transition:background .1s}table.list tbody tr:hover{background:#f9fafb}table.list tbody tr:last-child td{border-bottom:none}td.amount{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.empty{padding:48px 0;text-align:center;color:var(--muted)}.clip{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-mask{position:fixed;inset:0;background:#0f172a59;z-index:30;animation:fade-in .15s ease}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,96vw);background:var(--card);z-index:31;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:slide-in .18s ease}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-body{padding:20px;overflow-y:auto;flex:1}.drawer-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:10px;justify-content:flex-end}@keyframes slide-in{0%{transform:translate(24px);opacity:.4}to{transform:none;opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.kv{display:grid;grid-template-columns:92px 1fr;row-gap:9px;column-gap:8px;margin-bottom:18px}.kv dt{color:var(--muted);font-size:13px}.kv dd{margin:0;word-break:break-all}.pdf-frame{width:100%;height:420px;border:1px solid var(--border);border-radius:8px;background:#f3f4f6}.modal-mask{position:fixed;inset:0;background:#0f172a59;z-index:40;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;animation:fade-in .15s ease}.modal{background:var(--card);border-radius:12px;box-shadow:var(--shadow-lg);width:min(520px,100%);max-height:84vh;overflow-y:auto;padding:20px}.modal h3{margin:0 0 14px;font-size:16px}.board{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}.lane{background:#eef0f3;border-radius:var(--radius);padding:10px;min-height:200px}.lane.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--accent-soft)}.lane-head{display:flex;justify-content:space-between;font-weight:600;font-size:13px;padding:2px 6px 10px}.lane-amt{color:var(--muted);font-weight:500}.bcard{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin-bottom:8px;cursor:grab;box-shadow:var(--shadow)}.bcard:active{cursor:grabbing}.bcard .t{font-weight:600;font-size:13px;margin-bottom:4px}.bcard .m{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:18px}.stat-card{padding:16px 18px}.stat-card .label{color:var(--muted);font-size:13px;margin-bottom:6px}.stat-card .value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.stat-card .sub{color:var(--muted);font-size:12px;margin-top:2px}.chart-card{padding:18px}@media(max-width:900px){.board{grid-template-columns:repeat(2,1fr)}}
