:root{--primary: #1976ff;--primary-hover: #165dff;--primary-bg: #e8f3ff;--border: #e5e6eb;--text: #1f2329;--muted: #86909c}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);background:#f5f7fa;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}.layout{display:flex;min-height:100vh}.sidebar{width:200px;background:#1d2129;color:#fff;flex-shrink:0;display:flex;flex-direction:column}.sidebar .logo{padding:20px 20px 16px;font-size:16px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar .logo small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:4px}.sidebar .menu{flex:1;padding:12px 0}.sidebar .menu a{display:block;padding:12px 20px;color:#c9cdd4;text-decoration:none;font-size:14px;transition:background .2s}.sidebar .menu a:hover{background:#ffffff0f;color:#fff}.sidebar .menu a.router-link-exact-active{background:var(--primary);color:#fff}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{height:56px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px}.topbar .page-title{font-size:16px;font-weight:600}.topbar .user-info{display:flex;align-items:center;gap:16px;font-size:14px;color:#4e5969}.topbar .user-info .role-tag{background:var(--primary-bg);color:var(--primary);border-radius:4px;padding:2px 8px;font-size:12px;margin-left:6px}.topbar .logout-btn{border:1px solid var(--border);background:#fff;color:#4e5969;padding:6px 14px;border-radius:6px;cursor:pointer;font-size:13px}.topbar .logout-btn:hover{border-color:#f53f3f;color:#f53f3f}.content{flex:1;padding:24px;overflow:auto;background:#f5f7fa}.panel{background:#fff;border-radius:10px;padding:16px;box-shadow:0 1px 4px #0000000a;margin-bottom:16px}.panel-title{font-size:15px;font-weight:600;margin-bottom:10px}.panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.panel-header>.panel-title{margin:0}.btn{border:1px solid var(--border);background:#fff;color:var(--text);padding:7px 14px;border-radius:6px;cursor:pointer;font-size:13px;transition:all .2s}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{opacity:.9}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.sm{padding:3px 8px;font-size:12px}.row-actions{display:inline-flex;flex-wrap:nowrap;gap:8px;align-items:center;white-space:nowrap}.form-item{margin-bottom:16px}.form-item .label{display:block;font-size:13px;color:#4e5969;margin-bottom:6px}.form-item input{width:100%;height:40px;border:1px solid var(--border);border-radius:8px;padding:0 12px;font-size:14px;outline:none;background:#f7f8fa}.form-item input:focus{border-color:var(--primary);background:#fff}.hint{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.6}.filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.filter-bar>.filter-row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.filter-bar .f-item{display:flex;flex-direction:column;gap:4px}.filter-bar .f-item label{font-size:12px;color:var(--muted)}.filter-bar .f-item.actions{flex-direction:row;align-items:flex-end;gap:8px}.filter-bar select,.filter-bar input[type=text],.filter-bar input[type=number]{height:32px;border:1px solid var(--border);border-radius:6px;padding:0 10px;font-size:13px;color:#4e5969;outline:none;background:#fff}.filter-bar select{width:160px;min-width:140px;max-width:240px}.filter-bar input[type=date]{width:150px;height:32px;border:1px solid var(--border);border-radius:6px;padding:0 10px;font-size:13px;color:#4e5969;background:#fff}.filter-bar input[type=text]{width:200px}.filter-bar input[type=number]{width:150px}.filter-bar .btn{height:32px;line-height:1;padding:0 12px}.filter-bar .check-label{display:flex;align-items:center;gap:6px;font-size:13px;color:#4e5969}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:10px;text-align:left;border-bottom:1px solid #f0f1f3;white-space:nowrap}.table th{background:#fafbfc;color:#4e5969;font-weight:500}.table tbody tr:hover{background:#f7f8fa}.table td .badge,.table td .btn{vertical-align:middle}.table td.money{font-variant-numeric:tabular-nums}.table td.wrap{white-space:normal}.pagination{display:flex;align-items:center;gap:8px;margin-top:16px;justify-content:flex-end;font-size:13px;color:#4e5969}.pagination .btn{padding:4px 10px}.empty{text-align:center;padding:40px 0;color:var(--muted);font-size:14px}.msg{margin-top:12px;font-size:13px}.msg.ok{color:#00b42a}.msg.error{color:#f53f3f}.badge{display:inline-block;padding:3px 10px;border-radius:4px;font-size:12px;font-weight:500}.badge.green{background:#e8ffea;color:#00b42a}.badge.red{background:#ffece8;color:#f53f3f}.badge.orange{background:#fff7e8;color:#ff7d00}.badge.gray{background:#f2f3f5;color:var(--muted)}.badge.blue{background:var(--primary-bg);color:var(--primary)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1d2129,#2f3542)}.login-card{width:360px;background:#fff;border-radius:12px;padding:36px 32px;box-shadow:0 12px 40px #00000040}.login-card .brand{text-align:center;margin-bottom:28px}.login-card .brand h1{font-size:20px;font-weight:600;margin:0}.login-card .brand p{margin-top:6px;font-size:13px;color:var(--muted)}.login-btn{width:100%}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.modal-box{background:#fff;border-radius:10px;width:100%;max-width:460px;padding:24px;max-height:85vh;overflow-y:auto}.modal-box .modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.modal-box .modal-title{font-size:16px;font-weight:600}.modal-box .modal-close{border:none;background:none;font-size:20px;cursor:pointer;color:var(--muted);line-height:1}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:20px}.balance-num{font-size:26px;font-weight:600;color:var(--primary);font-variant-numeric:tabular-nums}.balance-num .unit{font-size:14px;font-weight:400;color:#4e5969;margin-left:6px}.grid8{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.idx-card{background:#f7f8fa;border:1px solid var(--border);border-radius:8px;padding:12px;text-align:center}.idx-card .name{color:#4e5969;font-size:12px;margin-bottom:6px}.idx-card .val{font-size:26px;font-weight:600;color:var(--primary);font-variant-numeric:tabular-nums}.legal-note{color:var(--muted);font-size:12px;border-top:1px dashed var(--border);padding-top:8px;margin-top:12px;line-height:1.6}.serial-line{color:#4e5969;font-size:12px;margin-top:10px;line-height:1.8;word-break:break-all}
