*{margin:0;padding:0;box-sizing:border-box}
:root{--nav-bg:#1a3a5c;--nav-hover:#234a72;--primary:#ff8c00;--primary-hover:#e67e00;--primary-light:#fff5e6;--success:#52c41a;--success-light:#f6ffed;--danger:#ff4d4f;--danger-light:#fff1f0;--info:#1890ff;--info-light:#e6f7ff;--bg:#f0f2f5;--card:#fff;--text:#1a1a2e;--text-2:#555;--text-3:#999;--border:#e8e8e8;--shadow:0 2px 12px rgba(0,0,0,0.06);--radius:8px;--nav-width:240px;--header-height:60px}
body{font-family:-apple-system,'PingFang SC','Microsoft YaHei','Helvetica Neue',sans-serif;background:var(--bg);color:var(--text);font-size:14px;min-height:100vh;overflow-x:hidden}
.org-tree{padding:4px 16px}.org-tree-node{margin:3px 0}.org-tree-row{display:flex;align-items:center;gap:6px;padding:8px 14px;cursor:pointer;border-radius:6px}.org-tree-row:hover{background:var(--hover)}.org-tree-name{font-size:14px;font-weight:500}.org-tree-toggle{font-size:10px;color:var(--text-3);width:16px;text-align:center;flex-shrink:0}.org-tree-actions{display:flex;gap:6px;margin-left:auto;flex-shrink:0}#app{display:flex;min-height:100vh}

/* ======= 登录页 ======= */
.login-page{display:flex;min-height:100vh;width:100%}
.login-left{flex:1;background:linear-gradient(135deg,#1a3a5c 0%,#2a5a8c 100%);display:flex;flex-direction:column;justify-content:center;align-items:center;padding:60px;color:#fff}
.login-left h1{font-size:36px;font-weight:700;letter-spacing:2px}
.login-left p{font-size:16px;margin-top:12px;opacity:.8}
.login-left .brand-icon{font-size:64px;margin-bottom:20px}
.login-right{width:480px;background:#fff;display:flex;flex-direction:column;justify-content:center;padding:60px;position:relative}
.login-right h2{font-size:22px;font-weight:600;color:var(--text);margin-bottom:8px}
.login-right .login-sub{color:var(--text-3);font-size:13px;margin-bottom:32px}
.form-group{margin-bottom:20px}
.form-group label{display:block;font-size:13px;font-weight:500;color:var(--text-2);margin-bottom:6px}
.form-group input{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;transition:border .2s;outline:none}
.form-group input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,140,0,.12)}
.login-btn{width:100%;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius);font-size:15px;font-weight:600;cursor:pointer;transition:.2s}
.login-btn:hover{background:var(--primary-hover)}
.login-btn:disabled{opacity:.6;cursor:not-allowed}
.login-err{color:var(--danger);font-size:13px;margin-top:10px;text-align:center}
.login-loading{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle;margin-right:8px}
.login-icp{position:absolute;bottom:16px;left:60px;right:60px;border-top:1px solid #eee;padding-top:12px;text-align:center;font-size:12px;color:var(--text-3)}
.beian-img{width:14px;height:14px;vertical-align:middle;flex-shrink:0}
.beian-link{color:var(--text-2);text-decoration:none}
.beian-link:hover{text-decoration:underline}
.beian-link+.beian-link{margin-left:16px}
@keyframes spin{to{transform:rotate(360deg)}}

/* 扫码登录样式 */
.login-qr-row{text-align:center;margin-top:10px}
.login-qr-btn{background:none;border:none;color:#07c160;font-size:13px;cursor:pointer;padding:6px 0;width:100%;transition:.2s}
.login-qr-btn:hover{color:#06ad56}
.login-qr-btn:disabled{color:#94d3a0;cursor:not-allowed}
.qr-inline-wrap{text-align:center;padding:12px 0}
.qr-code-wrap{width:200px;height:200px;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:8px;overflow:hidden}
.qr-code-wrap img{width:100%;height:100%;object-fit:contain}
.qr-hint{font-size:13px;color:#666;margin-bottom:5px}
.qr-expired{color:#e74c3c;font-size:13px}
.qr-user-name{color:#07c160;font-size:14px;font-weight:500;margin-bottom:10px}
.qr-loading-spinner{display:inline-block;width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#07c160;border-radius:50%;animation:qrspin .8s linear infinite}
.qr-blur { filter: blur(6px); position: relative; }
.qr-scanned-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background: rgba(255,255,255,0.3); border-radius: 8px; filter: none; z-index: 10; }
.qr-scanned-text { font-size: 16px; color: #07c160; font-weight: 600; }@keyframes qrspin{to{transform:rotate(360deg)}}

/* ======= 侧边栏 ======= */
.sidebar{width:var(--nav-width);background:var(--nav-bg);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;flex-shrink:0}
.sidebar-brand{height:var(--header-height);display:flex;align-items:center;padding:0 20px;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar-brand .brand-icon{width:36px;height:36px;background:var(--primary);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px}
.sidebar-brand .brand-text{font-size:16px;font-weight:600}
.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}
.nav-section{padding:16px 20px 6px;font-size:11px;color:rgba(255,255,255,.35);text-transform:uppercase;letter-spacing:1.5px}
.nav-item{display:flex;align-items:center;gap:12px;padding:11px 20px;color:rgba(255,255,255,.65);cursor:pointer;transition:all .15s;font-size:14px;border-left:3px solid transparent;text-decoration:none}
.nav-item:hover{color:#fff;background:var(--nav-hover)}
.nav-item.active{color:#fff;background:rgba(255,140,0,.15);border-left-color:var(--primary)}
.nav-icon{font-size:18px;width:22px;text-align:center;flex-shrink:0}
.nav-label{flex:1}
.nav-badge{background:var(--danger);color:#fff;font-size:11px;font-weight:600;padding:1px 8px;border-radius:10px;min-width:20px;text-align:center}
.sidebar-footer{padding:16px 20px;border-top:1px solid rgba(255,255,255,.08);cursor:pointer;transition:.15s}
.sidebar-footer:hover{background:var(--nav-hover)}

.user-row{display:flex;align-items:center;gap:10px}
.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--primary);display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;font-weight:700;flex-shrink:0}
.user-name{font-size:13px;color:#fff}
.user-role{font-size:11px;color:rgba(255,255,255,.5)}

/* ======= 主区域 ======= */
.main-area{margin-left:var(--nav-width);flex:1;display:flex;flex-direction:column;min-height:100vh}
.header{height:var(--header-height);background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 0 0 28px;flex-shrink:0;position:sticky;top:0;z-index:50}
.header-left{display:flex;align-items:center;gap:14px}
.header-title{font-size:17px;font-weight:600}
.header-subtitle{font-size:12px;color:var(--primary);background:var(--primary-light);padding:4px 12px;border-radius:4px}
.header-right{display:flex;align-items:center;gap:16px;font-size:13px;color:var(--text-3);padding-right:28px}
.header-date{display:flex;align-items:center;gap:4px}
.content{flex:1;padding:24px 0 24px 28px;overflow-y:auto}

/* ======= 卡片 ======= */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 28px;margin-bottom:16px}
.card-title{font-size:15px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}
.card-title .more{font-size:12px;color:var(--primary);cursor:pointer}

/* ======= KPI ======= */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.kpi-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;align-items:center;gap:16px;cursor:pointer;transition:.2s}
.kpi-card:hover{transform:translateY(-2px);box-shadow:0 4px 20px rgba(0,0,0,.1)}
.kpi-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}
.kpi-icon.income{background:var(--success-light);color:var(--success)}
.kpi-icon.expense{background:#fff7e6;color:#fa8c16}
.kpi-icon.balance{background:var(--info-light);color:var(--info)}
.kpi-icon.cars{background:#f0f5ff;color:#597ef7}
.kpi-body{flex:1}
.kpi-label{font-size:12px;color:var(--text-3);margin-bottom:4px}
.kpi-value{font-size:22px;font-weight:700;color:var(--text)}
.kpi-sub{font-size:11px;color:var(--text-3);margin-top:2px}
.kpi-value.green{color:var(--success)}
.kpi-value.red{color:var(--danger)}
.kpi-value.orange{color:var(--primary)}

/* ======= 仪表盘布局 ======= */
.dash-grid{display:grid;grid-template-columns:1.2fr 1.2fr 1fr;gap:16px}
.dash-main{min-width:0}.dash-main .card{height:100%;display:flex;flex-direction:column}.dash-main .org-list{flex:1}.dash-narrow{min-width:0}

/* ======= 快捷入口 ======= */
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.quick-item{padding:20px 12px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);text-align:center;cursor:pointer;transition:.2s}
.quick-item:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.1)}
.quick-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:22px;margin:0 auto 8px}

/* ======= 组织排行 ======= */
.org-list{}
.org-item{display:flex;align-items:center;padding:12px 0;gap:12px;border-bottom:1px solid #f5f5f5}
.org-item:last-child{border-bottom:none}
.org-rank{width:24px;height:24px;border-radius:50%;background:#f0f0f0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-3);flex-shrink:0}
.org-rank.rank-1{background:#fff7e6;color:#fa8c16}
.org-rank.rank-2{background:#f0f5ff;color:#597ef7}
.org-rank.rank-3{background:#f6ffed;color:var(--success)}
.org-info{flex:1;min-width:0}
.org-name{font-size:13px;font-weight:500;display:block}
.org-count{font-size:11px;color:var(--text-3)}
.org-nums{text-align:right;flex-shrink:0}
.org-month-income{text-align:right;margin-left:auto;flex-shrink:0}
.org-nums .org-income{color:var(--success);font-size:12px;display:block}
.org-nums .org-expense{color:var(--danger);font-size:12px;display:block}
.org-bar-track{height:3px;background:#f0f0f0;border-radius:2px;flex:1;margin-left:auto;max-width:120px}
.org-bar{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--primary),#ffb366);transition:width .5s}

/* ======= 待审批列表 ======= */
.ap-list{}
.ap-item{padding:14px 0;border-bottom:1px solid #f5f5f5;cursor:pointer;transition:.15s}
.ap-item:hover{background:#fafafa;margin:-14px -16px;padding:14px 16px;border-radius:var(--radius)}
.ap-item:last-child{border-bottom:none}
.ap-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.ap-title{font-size:13px;font-weight:500;color:var(--text)}
.ap-amount{font-size:14px;font-weight:600;color:var(--primary)}
.ap-meta{font-size:11px;color:var(--text-3);display:flex;gap:12px}

/* ======= 页面头部 ======= */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-right:28px}
.page-header h3{font-size:18px;font-weight:600}
.page-actions{display:flex;gap:8px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:.2s;text-decoration:none}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-hover)}
.btn-success{background:var(--success);color:#fff}
.btn-success:hover{background:#45a91a}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover{background:#e04345}
.btn-outline{background:#fff;border:1px solid var(--border);color:var(--text)}
.btn-outline:hover{border-color:var(--primary);color:var(--primary)}
.btn-sm{padding:5px 10px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ======= 筛选栏 ======= */
.filter-bar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.filter-group{position:relative}
.filter-btn{display:flex;align-items:center;gap:4px;padding:7px 12px;background:#fff;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer;transition:.2s}
.filter-btn:hover{border-color:var(--primary)}
.filter-btn .arrow{font-size:10px;color:var(--text-3)}
.filter-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.1);z-index:50;min-width:140px;padding:4px}
.filter-option{padding:8px 14px;font-size:13px;cursor:pointer;border-radius:4px;white-space:nowrap}
.filter-option:hover{background:var(--primary-light);color:var(--primary)}
.filter-option.active{background:var(--primary);color:#fff}
.date-range{display:inline-flex;align-items:center;gap:4px;cursor:pointer;position:relative;width:fit-content;font-size:13px;font-weight:400;color:var(--primary);margin-left:12px;padding:2px 8px;border:1px solid var(--border);border-radius:4px;background:var(--card)}
.date-range .date-display{padding:6px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--card);color:var(--text);cursor:pointer;white-space:nowrap}
.date-range .date-display:hover{border-color:var(--primary)}
.date-picker-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9998;background:transparent}
.date-picker-popup{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border-radius:10px;box-shadow:0 4px 20px rgba(0,0,0,.15);display:flex;z-index:9999;overflow:hidden;animation:fadeIn .12s}
@keyframes fadeIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
.date-picker-quick{width:95px;padding:8px 0;border-right:1px solid #eee;background:#fafafa}
.date-picker-quick .qp-item{padding:4px 12px;font-size:12px;cursor:pointer;color:#333;transition:.1s}
.date-picker-quick .qp-item:hover{background:#e8f4fd;color:#1a73e8}
.date-picker-quick .qp-item.active{background:#e8f4fd;color:#1a73e8;font-weight:600}
.date-picker-calendars{flex:1;padding:10px;display:flex;gap:8px}
.date-picker-month{flex:1}
.date-picker-month .mp-title{text-align:center;font-size:13px;font-weight:600;padding:4px 0 8px;color:#333;display:flex;align-items:center;justify-content:center;gap:6px}
.date-picker-month .mp-title .mp-nav{cursor:pointer;padding:2px 6px;border-radius:4px;font-size:16px;line-height:1;user-select:none}
.date-picker-month .mp-title .mp-nav:hover{background:#f0f0f0}
.date-picker-month .mp-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:10px;color:#999;margin-bottom:2px}
.date-picker-month .mp-days{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.date-picker-month .mp-day{display:flex;align-items:center;justify-content:center;font-size:12px;color:#333;cursor:pointer;border-radius:50%;transition:.1s;width:26px;height:26px;margin:auto}
.date-picker-month .mp-day:hover{background:#f0f0f0}
.date-picker-month .mp-day.selected{background:#ff8c00;color:#fff;font-weight:600}
.date-picker-month .mp-day.other-month{color:#ccc}
.date-picker-footer{display:flex;justify-content:flex-end;gap:6px;padding:8px 12px;border-top:1px solid #eee}
.date-picker-footer button{padding:4px 14px;border-radius:6px;font-size:12px;cursor:pointer}

/* ======= 表格 ======= */
.data-table{width:100%;border-collapse:collapse;table-layout:fixed}
.data-table th{text-align:left;padding:10px 12px;font-size:12px;font-weight:600;color:var(--text-3);border-bottom:2px solid var(--border);white-space:nowrap}
.data-table td{text-align:left;padding:10px 12px;font-size:12px;border-bottom:1px solid #f5f5f5}
.data-table tr{cursor:pointer;transition:.1s}
.data-table tr:hover td{background:#fafafa}
.data-table .amount{font-weight:600;text-align:left}
.data-table .amount.income{color:var(--success)}
.data-table .amount.expense{color:var(--danger)}
.text-center{text-align:center}
.text-right{text-align:right}

/* ======= 标签 ======= */
.tag{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500}
.tag-pending{background:#fff7e6;color:#fa8c16}
.tag-approved{background:var(--success-light);color:var(--success)}
.tag-rejected{background:var(--danger-light);color:var(--danger)}
.tag-confirmed{background:var(--info-light);color:var(--info)}

/* ======= 模态框 ======= */
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:200;display:flex;align-items:center;justify-content:center}
.modal-box{background:#fff;border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,.18);overflow:hidden;display:flex;flex-direction:column;max-height:80vh}
.modal{background:#fff;border-radius:var(--radius);box-shadow:0 8px 40px rgba(0,0,0,.15);max-width:600px;width:90%;max-height:85vh;overflow:hidden;display:flex;flex-direction:column}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border)}
.modal-header h4{font-size:16px;font-weight:600}
.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:6px;font-size:18px;color:var(--text-3);transition:.2s}
.modal-close:hover{background:#f5f5f5;color:var(--text)}
.modal-body{padding:20px;overflow-y:auto;flex:1}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid var(--border)}
.modal-footer .btn{padding:9px 20px}

/* ======= 表单 ======= */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-grid .full{grid-column:span 2}
.form-field{margin-bottom:4px}
.form-field label{display:block;font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:5px}
.form-field input,.form-field select,.form-field textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;transition:border .2s;background:#fff}
.form-field input:focus,.form-field select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,140,0,.1)}
.form-field textarea{resize:vertical;min-height:60px}

/* ======= 详情展示 ======= */
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.detail-item{margin-bottom:4px;padding:8px 0;border-bottom:1px solid #f5f5f5}
.detail-item .label{font-size:12px;color:var(--text-3);margin-bottom:2px}
.detail-item .value{font-size:14px;font-weight:500;color:var(--text)}


/* ======= Toast ======= */
.toast{position:fixed;top:20px;right:20px;z-index:999;padding:14px 20px;border-radius:var(--radius);box-shadow:0 4px 20px rgba(0,0,0,.15);font-size:14px;animation:slideIn .3s;max-width:360px}
.toast.suc{background:var(--success);color:#fff}
.toast.err{background:var(--danger);color:#fff}
.toast.warn{background:#fa8c16;color:#fff}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
.no-data{text-align:center;padding:40px 0;color:var(--text-3);font-size:14px}
.loading{display:flex;align-items:center;justify-content:center;padding:40px;color:var(--text-3)}
.spin{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite;margin-right:8px}
.pagination{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px 0}
.pagination .page-btn{padding:6px 12px;border:1px solid var(--border);border-radius:4px;font-size:13px;cursor:pointer;background:#fff}
.pagination .page-btn:hover{border-color:var(--primary);color:var(--primary)}
.pagination .page-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.pagination .page-btn:disabled{opacity:.4;cursor:not-allowed}
.pagination .page-info{font-size:13px;color:var(--text-3)}

/* ======= 报表页 ======= */
.report-summary-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}
.chart-tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:2px solid var(--border)}
.chart-tab{padding:10px 20px;font-size:13px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:.2s;color:var(--text-3)}
.chart-tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
.trend-ranges{display:flex;gap:8px;margin-bottom:12px}
.trend-ranges .range-btn{padding:4px 14px;font-size:12px;border:1px solid var(--border);border-radius:4px;cursor:pointer;background:#fff;color:var(--text-2);transition:.2s}
.trend-ranges .range-btn.active{border-color:var(--primary);color:var(--primary);background:var(--primary-bg,#e6f7ff);font-weight:600}

/* ======= 数据图表 ======= */
.sync-search-bar{position:relative;margin-bottom:24px;max-width:400px}
.sync-search-input{width:100%;padding:10px 16px 10px 40px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none;background:#f8f9fa;transition:.2s}
.sync-search-input:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px rgba(64,150,255,.1)}
.sync-search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:16px;opacity:.5}
.sync-report-group{margin-bottom:32px}
.sync-group-title{font-size:15px;font-weight:600;color:var(--text-2);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.sync-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
.sync-card{border:1px solid #e8ecf1;border-radius:12px;padding:32px 16px;background:#fff;color:var(--text);text-align:center;cursor:pointer;transition:transform .2s,box-shadow .2s;min-height:90px;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.sync-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.08);border-color:#d0d5dd}
.sync-card-text{font-size:14px;font-weight:500;line-height:1.4}

/* ======= 系统管理 ======= */
.sys-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.sys-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;cursor:pointer;transition:.2s;text-align:center}
.sys-card:hover{transform:translateY(-2px);box-shadow:0 4px 20px rgba(0,0,0,.1)}
.sys-card .sys-icon{font-size:36px;margin-bottom:10px}
.sys-card .sys-name{font-size:14px;font-weight:500;color:var(--text)}
.sys-card .sys-desc{font-size:12px;color:var(--text-3);margin-top:4px}
.audit-filter-bar{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.audit-filter-bar select,.audit-filter-bar input{border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:13px;background:var(--input-bg);color:var(--text)}
.audit-filter-bar .btn{padding:6px 16px}
.cell-time{white-space:nowrap;font-size:12px;color:var(--text-2)}
.badge-module{background:#e8f4fd;color:#1a73e8;padding:2px 8px;border-radius:4px;font-size:12px}
.cell-detail{font-size:13px;color:var(--text-2);word-break:break-word;min-width:120px}
.audit-filter-bar{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.audit-filter-bar select,.audit-filter-bar input{border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:13px;background:var(--input-bg);color:var(--text)}
.audit-filter-bar .btn{padding:6px 16px}
.cell-time{white-space:nowrap;font-size:12px;color:var(--text-2)}
.badge-module{background:#e8f4fd;color:#1a73e8;padding:2px 8px;border-radius:4px;font-size:12px}
.cell-detail{font-size:13px;color:var(--text-2);word-break:break-word;min-width:120px}
.audit-log-table{width:100%;border-collapse:collapse}
.audit-log-table th{text-align:left;padding:10px 16px 10px 0;font-weight:600;white-space:nowrap}
.audit-log-table td{padding:10px 16px 10px 0;text-align:left;vertical-align:middle}
.audit-table-wrap{margin-top:12px;overflow-x:auto}


.table-wrap{overflow-x:auto}
.action-btn{padding:3px 8px;border-radius:4px;font-size:11px;cursor:pointer;border:none;margin:0 2px}
.action-btn.edit{background:var(--info-light);color:var(--info)}
.action-btn.del{background:var(--danger-light);color:var(--danger)}
.action-btn.restore-btn{background:#f6ffed;color:#52c41a}
.tr-disabled{opacity:.6;background:#fafafa}
.text-disabled{text-decoration:line-through;color:#aaa}
.badge-status{font-size:11px;padding:2px 8px;border-radius:10px}
.badge-active{background:#f6ffed;color:#52c41a}
.badge-inactive{background:#fff2f0;color:#ff4d4f}

/* Scrollbar */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#ddd;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#bbb}

/* ======= 确认弹窗 ======= */
.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:300;display:flex;align-items:center;justify-content:center}
.confirm-box{background:#fff;border-radius:var(--radius);padding:28px;max-width:400px;width:90%;text-align:center}
.confirm-box p{font-size:15px;margin-bottom:20px;color:var(--text)}
.confirm-actions{display:flex;gap:10px;justify-content:center}

.approval-timeline{padding:12px 0;position:relative}
.timeline-step{display:flex;gap:12px;padding-bottom:20px;position:relative}
.timeline-step:not(:last-child)::before{content:"";position:absolute;left:7px;top:20px;bottom:0;width:2px;background:var(--border)}
.timeline-dot{width:16px;height:16px;border-radius:50%;flex-shrink:0;margin-top:2px;background:var(--border)}
.timeline-dot.approved{background:var(--success)}
.timeline-dot.rejected{background:var(--danger)}
.timeline-dot.transferred{background:var(--success)}
.timeline-dot.returned{background:#ff7a45}
.timeline-dot.pending{background:var(--primary);animation:pulse 1.5s infinite}
.timeline-dot.waiting{background:var(--border)}
.timeline-dot.transferred{background:var(--success)}
.timeline-dot.returned{background:#ff7a45}
.timeline-dot.init{background:var(--success) !important}
.timeline-content{flex:1}
.timeline-label{font-size:13px;font-weight:500;color:var(--text)}
.timeline-approvers{font-size:11px;color:var(--text-3);margin-top:2px}
.timeline-approvers{font-size:11px;color:var(--text-3);margin-top:2px}
.timeline-status{font-size:11px;margin-top:2px;font-weight:500}
.timeline-status.approved{color:var(--success)}
.timeline-status.rejected{color:var(--danger)}
.timeline-status.transferred{color:var(--success)}
.timeline-status.returned{color:#ff7a45}
.timeline-status.pending{color:var(--primary)}
.timeline-status.waiting{color:var(--text-3)}
.timeline-status.transferred{color:var(--success)}
.timeline-status.returned{color:#ff7a45}
@keyframes pulse{0%{opacity:1}50%{opacity:.5}100%{opacity:1}}
.record-list{margin-top:8px}
.record-item{padding:8px 0;border-bottom:1px solid #f5f5f5}
.record-item:last-child{border-bottom:none}
.record-row{display:flex;align-items:center;gap:12px;font-size:13px}
.record-action{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}
.record-action.submit{background:#e6f7ff;color:#1890ff}
.record-action.approve{background:#f6ffed;color:var(--success)}
.record-action.reject{background:#fff2f0;color:var(--danger)}
.record-action.revoke{background:#fff7e6;color:#fa8c16}
.record-action.split_modified{background:#f0f5ff;color:#2f54eb}
.record-actor{font-weight:500}
.record-time{font-size:11px;color:var(--text-3);margin-left:auto}
.record-comment{margin-top:4px;font-size:12px;color:var(--text-2);padding-left:66px}
.detail-section-title{font-size:14px;font-weight:600;color:var(--text);margin:16px 0 8px;padding-top:12px;border-top:1px solid var(--border)}
/* ============ 顶部组织选择器 ============ */
.header-org-selector{margin-right:15px}
.header-org-btn{padding:6px 18px;font-size:16px;font-weight:600;border:1.5px solid var(--primary);border-radius:8px;background:#fff8f0;max-width:320px;transition:.15s}
.header-org-btn:hover{background:#fff0e0;box-shadow:0 2px 8px rgba(255,122,0,.15)}
.header-org-btn .org-selector-current{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.header-org-btn .arrow{font-size:11px;color:var(--primary);transition:.2s;margin-left:4px}
.header-org-btn .arrow.open{transform:rotate(180deg)}
/* ============ 全局组织选择器下拉 ============ */
.org-selector-wrap{position:relative;display:inline-block}
.org-selector-btn{display:flex;align-items:center;gap:4px;padding:5px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px;background:#fff;transition:.15s;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.org-selector-btn:hover{border-color:var(--primary);background:#fff8f0}
.org-selector-btn .arrow{font-size:9px;color:var(--text-3);transition:.2s}
.org-selector-btn .arrow.open{transform:rotate(180deg)}
.org-selector-dropdown{position:absolute;top:100%;left:0;min-width:220px;max-height:340px;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.1);z-index:999;margin-top:4px}
.org-selector-dropdown .opt{padding:8px 14px;cursor:pointer;font-size:13px;transition:.1s;display:flex;align-items:center;gap:6px}
.org-selector-dropdown .opt:hover{background:#fff5eb}
.org-selector-dropdown .opt.active{background:#fff0e0;color:var(--primary);font-weight:600}
.org-selector-dropdown .opt .org-level-tag{font-size:10px;padding:1px 5px;border-radius:3px;background:#f0f0f0;color:var(--text-3)}

.detail-grid-split{display:flex;flex-direction:column;gap:4px}.split-card{transition:box-shadow .2s}.split-card:hover{border-color:var(--primary)!important;box-shadow:0 1px 4px rgba(0,0,0,.08)}/* returned tag */
.tag-warning{background:#fff7e6;color:#d46b08;border:1px solid#ffd591}


/* return modal options */
.return-option,.step-option{border:1px solid var(--border);border-radius:8px;padding:12px 16px;cursor:pointer;display:flex;align-items:center;gap:8px;margin-bottom:8px;transition:.15s}
.return-option:hover,.step-option:hover{background:#f5f5f5}
.return-option.active,.step-option.active{border-color:var(--primary);background:var(--primary-light)}
.step-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.step-dot.approved{background:var(--success)}
.step-dot.pending{background:var(--primary)}
.step-dot.waiting{background:#ddd}
.step-dot.rejected{background:var(--danger)}
.step-dot.transferred{background:var(--success)}
.tag-outstanding{background:#fff7e6;color:#d46b08}
.tag-partially_repaid{background:#e6f7ff;color:#1890ff}
.tag-repaid{background:#f6ffed;color:#52c41a}



/* Header language toggle in logged-in state */
.header-lang{display:flex;align-items:center;gap:4px;margin-left:auto;margin-right:12px}
.header-lang-btn{cursor:pointer;padding:3px 8px;border-radius:5px;font-size:12px;line-height:1;color:#999;transition:.2s;user-select:none}
.header-lang-btn:hover{background:rgba(255,140,0,.08);color:#f80}
.header-lang-btn.active{background:#fff0e0;color:#f80;font-weight:600}
/* Login page language toggle - top right of login card */
.login-right-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.login-lang-bar{display:flex;gap:4px;flex-shrink:0}
.login-lang-bar .lang-btn{cursor:pointer;padding:3px 8px;border-radius:5px;font-size:12px;color:#999;transition:.2s;user-select:none}
.login-lang-bar .lang-btn:hover{background:rgba(255,140,0,.06);color:#f80}
.login-lang-bar .lang-btn.active{background:#fff0e0;color:#f80;font-weight:600}

/* === Inline-style migration utilities === */
.u-1{padding:8px 12px;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);transition:background 0.15s}


/* === Migrated inline styles === */
.s0{display:flex;gap:8px;align-items:center}
.s1{cursor:pointer;color:red;font-size:18px}
.s2{width:100px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}
.s3{width:100px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px;background:#f0f0f0;color:#666}
.s4{flex:1;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px;background:#f5f5f5;cursor:not-allowed}
.s5{font-size:13px;font-weight:600;color:var(--text-2);margin:8px 0 6px}
.s6{padding:0 20px 12px;border-top:1px solid var(--border);margin-top:4px}
.s7{color:#000;text-decoration:underline;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s8{width:48px;height:48px;object-fit:cover;border-radius:4px;border:1px solid var(--border)}
.s9{display:flex;align-items:center;gap:10px;padding:6px;background:#f9f9f9;border-radius:4px}
.s10{display:flex;flex-direction:column;gap:6px}
.s11{flex:1;padding:6px;border:1px solid var(--border);border-radius:4px;font-size:13px}
.s12{display:flex;gap:8px;flex-direction:column;align-items:stretch}
.s13{color:red}
.s14{font-weight:600;margin-bottom:4px}
.s15{text-align:center;padding:20px;color:var(--text-3);font-size:13px}
.s16{max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:8px}
.s17{width:100%;padding:8px 10px;font-size:13px;border:1px solid var(--border);border-radius:6px;outline:none;box-sizing:border-box}
.s18{margin-bottom:12px}
.s19{display:flex;gap:10px}
.s20{margin-bottom:14px}
.s21{margin-bottom:8px}
.s22{max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:6px}
.s23{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;margin-bottom:8px}
.s24{margin-bottom:10px;font-size:13px;color:var(--text-2)}
.s25{padding:10px 16px;cursor:pointer;font-size:13px;transition:background 0.15s}
.s26{position:absolute;bottom:100%;right:0;margin-bottom:4px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.12);z-index:100;min-width:120px;overflow:hidden}
.s27{position:relative;display:inline-block}
.u-95{text-align:right;padding-right:20px}
.s28{text-align:right;padding-top:8px}
.s29{display:block;margin-top:4px;font-size:12px}
.s30{font-size:13px;color:#d46b08}
.s31{margin:12px 0;padding:10px 14px;background:#fff7e6;border:1px solid #ffd591;border-radius:6px;display:flex;align-items:center;gap:8px}
.s32{font-size:12px;padding:4px 12px}
.s33{font-size:11px;color:#ad8b00;background:#fffbe6;padding:1px 6px;border-radius:3px;flex-shrink:0}
.s34{margin-bottom:10px;padding:10px 12px;background:#fffbe6;border-radius:6px;border:1px solid #ffe58f}
.s35{padding:8px 14px;color:#999;font-size:12px}
.s36{padding:8px 14px;cursor:pointer;font-size:12px;border-bottom:1px solid #f0f0f0;white-space:nowrap}
.s37{position:relative;margin-top:4px}
.s38{font-size:11px;color:#bbb}
.s39{margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}
.s40{color:red;margin-left:6px}
.s41{font-size:11px;color:var(--text-3);text-align:right}
.s42{font-size:13px;font-weight:600;color:var(--primary);white-space:nowrap}
.s43{flex:1;padding:4px 8px;font-size:12px;border:1px solid var(--border);border-radius:4px;background:#fff}
.s44{font-size:13px;font-weight:500;flex:1}
.s45{font-size:11px;color:var(--text-3);margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid #e8e8e8}
.s46{margin-bottom:10px;padding:10px 12px;background:#f8f9fa;border-radius:6px;border:1px solid var(--border)}
.s47{font-size:11px;color:var(--text-3);font-weight:400;margin-left:8px}
.s48{white-space:pre-wrap;font-size:13px;color:#333;background:#f8f9fa;padding:6px 8px;border-radius:4px;line-height:1.5;word-break:break-all}
.s49{font-size:12px;margin-top:4px}
.s50{width:100%;font-size:13px;padding:6px 8px;border:1px solid var(--border);border-radius:4px}
.s51{width:100%;min-height:60px;resize:vertical;font-size:13px;padding:8px;border:1px solid var(--border);border-radius:6px}
.s52{max-width:640px;max-height:85vh}
.s53{color:var(--danger);font-weight:700}
.s54{color:var(--success);font-weight:700}
.s55{font-weight:500}
.s56{text-align:center;padding:40px;color:#dc2626}
.s57{padding:6px 14px;border:1px solid var(--border);border-radius:4px;background:#fafafa;cursor:pointer;font-size:13px}
.s58{display:flex;gap:6px}
.s59{cursor:pointer;color:#999}
.s60{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid var(--border);border-radius:14px;font-size:12px;background:#f3f4f6}
.s61{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.s62{font-size:13px;display:flex;align-items:center;gap:4px}
.s63{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.s64{grid-column:1/-1;border-top:1px solid var(--border);padding-top:12px}
.s65{max-width:760px}
.s66{font-size:13px;white-space:nowrap}
.s67{display:flex;align-items:center;gap:8px}
.s68{font-size:13px;display:flex;align-items:center;gap:6px;margin-bottom:8px}
.s69{font-size:13px;font-weight:500;color:var(--primary);min-width:28px}
.s70{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}
.s71{font-size:13px;display:flex;align-items:center;gap:4px;white-space:nowrap}
.s72{display:flex;gap:8px;margin-bottom:6px}
.s73{max-width:680px}
.s74{color:var(--text-3);font-size:12px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s75{color:var(--text-3);font-size:12px;font-family:monospace}
.s76{padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px}
.s77{font-size:13px;font-weight:500;margin-right:4px}
.s78{display:flex;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden}
.s79{margin-bottom:12px;display:flex;align-items:center;gap:10px}
.s80{font-family:monospace;font-size:12px;color:var(--text-3)}
.s81{font-size:12px;color:var(--text-3);margin-top:2px}
.s82{font-weight:500;font-size:14px}
.s83{flex:1;cursor:pointer}
.s84{padding:8px 0;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:8px}
.s85{margin-bottom:12px;display:flex;gap:8px;flex-wrap:wrap}
.s86{background:var(--primary);color:#fff;font-size:11px;padding:4px 8px;border:none;border-radius:4px;cursor:pointer}
.s87{color:#1890ff}
.s88{font-size:13px;color:var(--text-3);display:flex;align-items:center;gap:4px;cursor:pointer}
.s89{display:flex;gap:12px;align-items:center}
.s90{background:var(--primary-light);color:var(--primary)}
.s91{max-width:540px}
.s92{color:var(--success);font-weight:600}
.s93{color:var(--danger);font-weight:600}
.s94{margin-bottom:16px;font-size:13px;color:var(--text-3)}
.s95{resize:vertical;font-family:inherit}
.s96{margin-top:4px;font-size:12px;color:var(--primary)}
.s97{justify-content:space-between}
.s98{font-size:12px;color:var(--primary);margin-top:4px}
.s99{font-size:16px;font-weight:600}
.s100{width:64px;height:64px;border-radius:50%;background:var(--primary);display:flex;align-items:center;justify-content:center;font-size:28px;color:#fff;font-weight:700;margin:0 auto 12px}
.s101{text-align:center;margin-bottom:20px}
.s102{width:110px}
.s103{width:130px}
.s104{margin-top:12px}
.s105{gap:10px;flex-wrap:wrap}
.s106{max-width:1200px;}
.s107{margin-left:12px;color:var(--primary)}
.s108{font-size:14px;color:var(--text-1);font-weight:600}
.s109{justify-content:space-between;padding:12px 16px}
.s110{text-align:center;padding:12px 0}
.s111{width:100%}
.s112{text-align:center;padding:60px 0;color:var(--danger)}
.s113{height:calc(85vh - 120px);overflow:auto;padding:16px}
.s114{display:flex;flex:1;align-items:center;gap:8px;flex-wrap:wrap}
.s115{flex-wrap:wrap;gap:8px}
.s116{max-width:1400px;height:85vh}
.s117{height:460px}
.s118{padding:4px 12px;background:var(--primary,#1890ff);color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer}
.s119{font-size:12px;color:var(--text-3);margin:0 4px}
.s120{font-size:12px;color:var(--text-3);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s121{font-weight:600;color:var(--primary)}
.s122{font-size:12px;color:var(--text-2)}
.s123{padding:7px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;width:180px}
.s124{color:var(--primary)}
.s125{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.s126{width:200px}
.s127{height:220px}
.s128{font-size:11px;color:var(--text-3);background:var(--bg);padding:1px 6px;border-radius:4px;margin-right:6px}
.s129{color:var(--info)}
.s130{background:#f6ffed}
.s131{background:var(--info-light)}
.s132{background:#fff7e6}
.s133{background:var(--success-light)}
.s134{margin-left:8px;color:#1890ff;cursor:pointer;border:none;background:none;font-size:13px;}
.s135{margin-top:4px;color:#999;font-size:12px;}

/* ====== Utility classes for template-modal-*.html ====== */
.u-11{font-size:12px}
.u-25{display:flex;flex-direction:column;gap:8px}
.u-26{font-size:12px;color:var(--text-3);display:block;margin-top:2px}
.u-32{display:flex;gap:8px;align-items:center;margin-bottom:6px}
.u-38{max-width:520px}
.u-53{font-size:12px;color:var(--text-3)}
.u-67{font-size:13px;color:var(--text-3)}
.u-76{max-width:420px}
.u-77{max-width:460px}


/* ======= 审批模板表单 ======= */
.tpl-section{border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:16px;background:#fafafa}
.tpl-section-title{font-size:14px;font-weight:600;color:var(--text-1);margin-bottom:14px;display:flex;align-items:center;gap:6px}
.tpl-section-title::before{content:'';display:inline-block;width:3px;height:14px;background:var(--primary);border-radius:2px}
.tpl-row{display:flex;flex-direction:column;gap:4px;margin-bottom:14px}
.tpl-row:last-child{margin-bottom:0}
.tpl-row label{font-size:12px;font-weight:500;color:var(--text-2)}
.tpl-row .required{color:#ff4444;margin-left:2px}
.tpl-row input,.tpl-row select,.tpl-row textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;transition:border .2s;background:#fff;box-sizing:border-box}
.tpl-row input:focus,.tpl-row select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(255,140,0,.1)}
.tpl-row textarea{resize:vertical;min-height:60px}
.tpl-hint{font-size:11px;color:var(--text-3);margin-top:2px}
.tpl-field-row{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:6px;flex-wrap:wrap}
.tpl-field-row .tpl-field-name{flex:2;min-width:100px}
.tpl-field-row .tpl-field-type{flex:1.2;min-width:80px}
.tpl-field-row .tpl-field-del{flex:0 0 32px;height:32px;display:flex;align-items:center;justify-content:center}
.tpl-field-sub{width:100%;display:flex;gap:8px;align-items:center;padding-top:6px;border-top:1px solid #f0f0f0}
.tpl-field-sub input{flex:1}
.tpl-step-row{display:flex;gap:8px;align-items:center;margin-bottom:8px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:6px;flex-wrap:wrap}
.tpl-step-num{font-size:13px;font-weight:600;color:var(--primary);min-width:22px}
.tpl-step-name{flex:1.5;min-width:100px}
.tpl-step-role{flex:1.2;min-width:80px}
.tpl-step-level{flex:1;min-width:80px}
.tpl-step-del{flex:0 0 32px}
.tpl-add-btn{padding:7px 16px;border:1px dashed var(--primary);background:transparent;color:var(--primary);border-radius:6px;cursor:pointer;font-size:13px;transition:all .2s;margin-top:4px}
.tpl-add-btn:hover{background:rgba(255,140,0,.06);border-color:var(--primary)}
.tpl-del-btn{width:30px;height:30px;border:none;background:#f5f5f5;border-radius:6px;cursor:pointer;font-size:14px;color:#999;display:flex;align-items:center;justify-content:center;transition:all .2s}
.tpl-del-btn:hover{background:#fee;color:#e44}
.tpl-check-row{display:flex;align-items:center;gap:8px;font-size:13px}
.tpl-check-row input[type=checkbox]{width:auto}
.tpl-split-row{display:flex;align-items:center;gap:8px;padding:8px 0}
.tpl-split-row select{flex:1;max-width:260px;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;background:#fff}

.u-47{max-width:60px;max-height:60px;object-fit:cover;border-radius:4px;margin-right:4px;vertical-align:middle}
.u-28{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:#f5f5f5;border-radius:4px;margin:3px;font-size:12px;color:var(--text-2);text-decoration:none}
.u-72{display:inline-block}

/* ===== 付款账户选择 ===== */
.u-29{font-size:12px;color:var(--text-2);display:block;margin-bottom:2px}
.u-50{font-size:13px;font-weight:500;display:block}
.u-51{font-size:11px;color:#999;display:block}
.u-52{font-size:11px;color:#999}
.u-54{cursor:pointer;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;display:inline-block;background:#fff}
.u-55{cursor:pointer;padding:6px 10px;border:1px dashed var(--border);border-radius:6px;font-size:13px;color:#999;display:inline-block;background:#fafafa}
.u-55:hover{border-color:#999}
.u-57{margin-bottom:6px}
.u-73{margin-top:6px}
.u-87{font-size:13px;font-weight:600;padding:8px 14px;border-bottom:1px solid #eee}
.u-91{padding:8px 14px;cursor:pointer;font-size:12px;border-bottom:1px solid #f0f0f0;white-space:nowrap}
.u-92{background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.12);max-height:200px;overflow-y:auto;min-width:220px}
.u-93{position:absolute;z-index:10;margin-top:4px;left:0}

/* ===== 表格/列表基础样式 ===== */
.u-3{font-size:13px;color:var(--text-2);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-10{font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;width:130px;box-sizing:border-box}
.u-13{cursor:pointer}
.u-18{padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px}
.u-20{min-height:60px;resize:vertical;font-size:13px}
.u-24{font-size:13px;color:var(--text-2);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-27{font-size:12px;padding:4px 10px}
.u-36{font-weight:500;font-size:14px}
.u-44{font-size:12px;color:var(--text-3);white-space:nowrap;padding:4px 6px;text-align:left;font-weight:500}
.u-46{font-size:12px;color:var(--text-2)}
.u-48{font-size:13px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;width:100%;box-sizing:border-box}
.u-56{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.u-62{display:inline-block;padding:1px 6px;border-radius:3px;font-size:11px}
.u-85{font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;width:140px}
.u-86{font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;width:130px}
.u-94{text-align:center;padding:40px 20px;color:#999;font-size:14px}
.u-96{width:100%;min-height:60px;resize:vertical;font-size:13px;box-sizing:border-box}
.u-98{width:100px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:13px}

/* ===== 空数据提示 ===== */
.u-5{text-align:center;padding:30px 20px;color:#999;font-size:13px}

/* ===== 弹窗宽度变体 ===== */
.u-8{max-width:520px}
.u-39{max-width:600px}
.u-78{max-width:600px}
.u-79{max-width:520px}
.u-80{max-width:500px}
.u-81{max-width:580px}
.u-99{max-width:480px}

/* ===== 表单布局 ===== */
.u-9{grid-column:1/-1}
.u-61{min-width:120px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px}

/* ===== 快捷入口/导航 ===== */
.u-12{font-size:14px;font-weight:500;color:var(--text)}

/* ===== 筛选栏 ===== */
.u-30{display:flex;align-items:center;gap:4px;margin-top:4px}
.u-31{margin:10px 0}
.u-40{padding:6px 0;min-width:100px}
.u-41{font-size:13px;padding:4px 12px;cursor:pointer}

/* ===== 模态内标题/标签 ===== */
.u-33{font-size:14px;font-weight:600;padding:8px 0;margin-top:4px}
.u-35{font-size:14px;margin-right:4px}
.u-58{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.u-59{margin:4px 0;padding:8px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px}
.u-60{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.u-63{font-size:12px;color:#999;padding:4px 0}
.u-64{font-size:13px;font-weight:500;margin-top:8px;padding:6px 0;border-top:1px solid var(--border)}
.u-65{font-size:12px;color:var(--text-3);display:block;margin-bottom:2px}
.u-66{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.u-68{font-size:12px;padding:4px 8px;margin-top:4px}
.u-69{font-size:12px;color:#999;margin:0 4px}
.u-70{grid-column:1/-1}
.u-71{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.u-75{min-width:120px}
.u-82{padding:8px 14px;font-size:13px;white-space:nowrap;cursor:pointer}
.u-90{text-align:center;padding:12px;color:#999;font-size:12px}
.u-100{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}

/* ===== 布局/二维码/其他 ===== */
.u-43{font-size:12px;color:#999}
.u-45{text-align:center;padding:20px;color:#999;font-size:13px}
.u-74{font-size:12px;color:#e67e22;text-align:center}

/* ===== 审批/转交/退回等 ===== */
.u-16{min-width:150px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}
