:root{
  --p:#0f5c52;--pm:#1e7874;--pl:#27a89a;--pp:#e8f5f4;
  --acc:#f59e0b;--bg:#f0f4f8;--card:#fff;--text:#1a2332;--t2:#4a5568;--t3:#8896a5;
  --brd:#e2e8f0;--brd2:#f1f5f9;
  --ok:#059669;--ok2:#ecfdf5;--err:#dc2626;--err2:#fef2f2;
  --warn:#d97706;--warn2:#fffbeb;--info:#2563eb;--info2:#eff6ff;
  --sh:0 1px 3px rgba(0,0,0,.08);--sw:236px;
  --font-ui:'HarmonyOS Sans SC Local','PingFang SC','Microsoft YaHei',sans-serif;
  --font-data:'IBM Plex Sans Local','HarmonyOS Sans SC Local','PingFang SC','Microsoft YaHei',sans-serif
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;font-family:var(--font-ui);font-synthesis:none;background:var(--bg);color:var(--text);font-size:14px}
#zh-boot-cover{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef5ff 0%,#f8fbff 46%,#e8f1ff 100%);color:#10233f}
#zh-boot-cover .zh-boot-card{min-width:260px;max-width:88vw;padding:24px 28px;border:1px solid rgba(148,163,184,.32);border-radius:18px;background:rgba(255,255,255,.82);box-shadow:0 24px 70px rgba(37,99,235,.12);text-align:center;backdrop-filter:blur(12px)}
#zh-boot-cover .zh-boot-logo{width:42px;height:42px;margin:0 auto 12px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:#e9f2ff;color:#1473dc;font-weight:900;font-size:20px}
#zh-boot-cover .zh-boot-title{font-size:16px;font-weight:900;margin-bottom:6px}
#zh-boot-cover .zh-boot-text{font-size:12.5px;color:#64748b}
#zh-boot-cover .zh-boot-spin{display:inline-block;width:13px;height:13px;margin-right:6px;border:2px solid #bfdbfe;border-top-color:#1473dc;border-radius:50%;vertical-align:-2px;animation:zhBootSpin .75s linear infinite}
@keyframes zhBootSpin{to{transform:rotate(360deg)}}
body.zh-boot-ready #zh-boot-cover{display:none}
button,input,select,textarea{font-family:inherit}
.kv,.nv-amt,.nv-tot,.aux-kpi-v,.aux-bar-pct,.op-amt,.op-readonly-amt,.voucher-table .money-cell,.zh-money,time{font-family:var(--font-data);font-variant-numeric:tabular-nums lining-nums}
::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-thumb{background:#c5cdd8;border-radius:3px}
code{font-family:'SF Mono','Consolas',monospace}
a{text-decoration:none}
:focus-visible{outline:2px solid var(--pl);outline-offset:1px}

/* ===== 登录 ===== */
.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f5c52 0%,#1e7874 55%,#27a89a 100%);padding:20px}
.login-box{width:380px;max-width:94vw;background:#fff;border-radius:18px;padding:30px 30px 24px;box-shadow:0 24px 64px rgba(0,0,0,.28)}
.login-logo{text-align:center;margin-bottom:18px}
.login-logo .icon{width:54px;height:54px;border-radius:15px;background:linear-gradient(135deg,var(--p),var(--pl));color:#fff;font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.login-logo h1{font-size:18px;font-weight:800;color:var(--text)}
.login-logo p{font-size:11px;color:var(--t3);margin-top:4px}
.user-cards{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:14px}
.uc{border:1.5px solid var(--brd);border-radius:11px;padding:11px 9px;text-align:center;cursor:pointer;transition:.15s}
.uc:hover{border-color:#bfe3de;background:var(--pp)}
.uc.sel{border-color:var(--pl);background:var(--pp);box-shadow:0 0 0 3px #27a89a22}
.uc-av{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;margin:0 auto 6px}
.uc h4{font-size:12.5px;font-weight:700}
.uc p{font-size:10px;color:var(--t3);margin:1px 0 5px}
.role-tag{display:inline-block;font-size:9px;padding:2px 7px;border-radius:20px;font-weight:600}

/* ===== 主框架 ===== */
#app{display:flex;height:100vh;overflow:hidden}
.sidebar{width:var(--sw);background:linear-gradient(170deg,var(--p) 0%,var(--pm) 65%,#1f9a8a 100%);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;z-index:100}
.sb-logo{padding:17px 18px 13px;border-bottom:1px solid rgba(255,255,255,.12)}
.sb-logo-inner{display:flex;align-items:center;gap:10px}
.sb-icon{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.16);color:#fff;font-size:19px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sb-name h2{font-size:14.5px;font-weight:700;color:#fff;line-height:1.2}
.sb-name p{font-size:10px;color:rgba(255,255,255,.62)}
.sb-nav{flex:1;padding:8px 10px}
.sb-sec{font-size:10px;font-weight:600;letter-spacing:.6px;color:rgba(255,255,255,.45);padding:13px 10px 5px;text-transform:uppercase}
.sb-item{display:flex;align-items:center;gap:11px;padding:8.5px 11px;border-radius:9px;color:rgba(255,255,255,.82);cursor:pointer;font-size:13px;font-weight:500;margin-bottom:2px;transition:.13s;position:relative}
.sb-item i{width:17px;text-align:center;font-size:13.5px}
.sb-item:hover{background:rgba(255,255,255,.10);color:#fff}
.sb-item.active{background:rgba(255,255,255,.18);color:#fff;font-weight:600}
.sb-item.active:before{content:'';position:absolute;left:-10px;top:7px;bottom:7px;width:3px;background:var(--acc);border-radius:0 3px 3px 0}
.sb-badge{margin-left:auto;background:var(--acc);color:#fff;font-size:10px;font-weight:700;min-width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.sb-footer{padding:12px;border-top:1px solid rgba(255,255,255,.12)}
.sb-user{display:flex;align-items:center;gap:9px;cursor:pointer;padding:6px;border-radius:9px;transition:.13s}
.sb-user:hover{background:rgba(255,255,255,.10)}
.sb-av{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.sb-utxt h5{font-size:12.5px;color:#fff;font-weight:600}
.sb-utxt p{font-size:10px;color:rgba(255,255,255,.6)}

.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}
.topbar{height:56px;background:var(--card);border-bottom:1px solid var(--brd);display:flex;align-items:center;gap:9px;padding:0 18px;flex-shrink:0}
.tb-info h3{font-size:15px;font-weight:700}
.tb-info p{font-size:10.5px;color:var(--t3)}
.tb-space{flex:1}
.tb-av{width:36px;height:36px;border-radius:9px;background:var(--bg);color:var(--t2);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.13s}
.tb-av:hover{background:var(--pp);color:var(--pl)}
.notif-wrap{position:relative}
.notif-dot{position:absolute;top:5px;right:5px;width:8px;height:8px;border-radius:50%;background:var(--err);border:2px solid #fff}
.content{flex:1;overflow-y:auto;padding:20px 22px}

/* ===== 页头 ===== */
.ph{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.ph-title h1{font-size:21px;font-weight:800;letter-spacing:-.4px}
.ph-title p{font-size:12px;color:var(--t3);margin-top:3px}
.ph-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

/* ===== KPI ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}
.kpi{background:var(--card);border:1px solid var(--brd);border-radius:13px;padding:15px 16px;position:relative;overflow:hidden}
.kpi .ki{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;margin-bottom:11px}
.kpi.blue .ki{background:var(--info2);color:var(--info)}
.kpi.green .ki{background:var(--ok2);color:var(--ok)}
.kpi.orange .ki{background:var(--warn2);color:var(--warn)}
.kpi.red .ki{background:var(--err2);color:var(--err)}
.kpi.teal .ki{background:var(--pp);color:var(--pl)}
.kpi.purple .ki{background:#f3effd;color:#8b5cf6}
.kpi .kv{font-size:23px;font-weight:800;letter-spacing:-.6px;line-height:1.1}
.kpi .kl{font-size:11.5px;color:var(--t3);margin-top:3px}
.kpi .kc{font-size:11px;margin-top:7px;display:flex;align-items:center;gap:4px}

/* ===== 卡片 ===== */
.card{background:var(--card);border:1px solid var(--brd);border-radius:13px;overflow:hidden}
.ch{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--brd2)}
.ch h3{font-size:14px;font-weight:700}
.cb{padding:16px}
.card.txn-filter-card{overflow:visible}
.card.txn-filter-card .ch{overflow:visible;position:relative;z-index:20}
.txn-acct-dd{position:relative;z-index:50}
.txn-acct-panel{position:absolute;z-index:3000;top:38px;left:0;width:360px;max-width:80vw;background:#fff;border:1px solid var(--brd);box-shadow:0 14px 38px rgba(15,23,42,.16);border-radius:8px;padding:10px}

/* ===== 栅格 ===== */
.g2{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}

/* ===== 表格 ===== */
.tw{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:12.5px}
thead th{text-align:left;padding:9px 14px;background:#fafcfc;color:var(--t2);font-weight:600;font-size:11px;letter-spacing:.2px;border-bottom:1px solid var(--brd);white-space:nowrap}
tbody td{padding:9px 14px;border-bottom:1px solid var(--brd2);color:var(--text)}
tbody tr:last-child td{border-bottom:none}
th.tr,td.tr{text-align:right}
th.tc,td.tc{text-align:center}

/* ===== 报表 ===== */
.rt{width:100%;border-collapse:collapse;font-size:12.5px}
.rt th{text-align:left;padding:8px 13px;background:var(--brd2);font-weight:600;color:var(--t2);font-size:11.5px}
.rt th.tr{text-align:right}
.rt td{padding:7px 13px;border-bottom:1px solid var(--brd2)}
.rt td.tr{text-align:right}
.rt tr.rsu td{font-weight:700;background:var(--pp);color:var(--p)}
.rt tr.rsec td{font-weight:700;background:#fafcfc;color:var(--t2);font-size:11.5px}

/* ===== 表单 ===== */
.fbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.si-wrap{display:flex;align-items:center;gap:7px;background:var(--bg);border:1px solid var(--brd);border-radius:8px;padding:6px 11px}
.si-wrap i{color:var(--t3);font-size:12px}
.si{border:none;background:none;outline:none;font-size:12.5px;font-family:inherit;width:160px;color:var(--text)}
.fg{margin-bottom:13px}
.fl{display:block;font-size:11.5px;font-weight:600;color:var(--t2);margin-bottom:5px}
.fl.req:after{content:' *';color:var(--err)}
.fi,.fs{width:100%;padding:8px 11px;border:1px solid var(--brd);border-radius:8px;font-size:12.5px;font-family:inherit;color:var(--text);background:#fff;outline:none;transition:.13s}
.fi:focus,.fs:focus{border-color:var(--pl);box-shadow:0 0 0 3px #27a89a1f}
.fr{display:flex;gap:12px}
.fr>*{flex:1}
.fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}

/* ===== 按钮 ===== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 15px;border-radius:8px;font-size:13px;font-weight:600;font-family:inherit;border:1px solid transparent;cursor:pointer;transition:.14s;white-space:nowrap}
.btn-sm{padding:6px 12px;font-size:12px}
.btn-primary{background:var(--p);color:#fff}
.btn-primary:hover{background:var(--pm)}
.btn-outline{background:#fff;border-color:var(--brd);color:var(--t2)}
.btn-outline:hover{border-color:var(--pl);color:var(--pl);background:var(--pp)}
.btn-accent{background:var(--acc);color:#fff}
.btn-accent:hover{filter:brightness(.95)}

/* ===== 徽章 ===== */
.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 9px;border-radius:6px;white-space:nowrap}
.badge.ok{background:var(--ok2);color:var(--ok)}
.badge.warn{background:var(--warn2);color:var(--warn)}
.badge.gray{background:#f1f5f9;color:var(--t3)}
.badge.info{background:var(--info2);color:var(--info)}
.badge.err{background:var(--err2);color:var(--err)}

/* ===== 弹窗 ===== */
.mo{position:fixed;inset:0;background:rgba(15,32,40,.5);display:none;align-items:center;justify-content:center;z-index:10000;padding:20px;backdrop-filter:blur(2px)}
.mo.open{display:flex}
.modal{background:#fff;border-radius:15px;width:520px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(0,0,0,.32);animation:moin .18s ease}
.modal.lg{width:760px}
.modal.wecom-sync-modal{width:min(700px,calc(100vw - 32px))}
.modal.wecom-sync-modal .mb{overflow-x:hidden;scrollbar-gutter:stable}
.modal.wecom-sync-modal .zhqr-control{align-items:flex-start}
.modal.wecom-sync-modal .zhqr-picker{min-width:0}
.modal.wecom-sync-modal .zhqr-panel{position:static;width:100%;margin-top:8px;box-shadow:0 8px 22px rgba(15,23,42,.14)}
.modal.wecom-sync-modal .zhqr-date-panel{max-width:none}
@media(max-width:600px){
  .modal.wecom-sync-modal{width:calc(100vw - 20px);max-width:none}
  .modal.wecom-sync-modal .zhqr-control{gap:7px}
  .modal.wecom-sync-modal .zhqr-presets{width:100%}
  .modal.wecom-sync-modal .zhqr-preset{flex:1;padding:0 6px}
  .modal.wecom-sync-modal .zhqr-picker{flex-basis:100%}
}
.modal.internal-transfer-modal{width:min(920px,calc(100vw - 32px))}
.it-account-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.it-account-field{min-width:0}
.it-account-suggestions{max-height:292px;overflow-y:auto;padding-right:2px;scrollbar-gutter:stable}
.it-account-option.btn{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:4px 12px;width:100%;margin-top:4px;padding:8px 10px;text-align:left;white-space:normal;line-height:1.35}
.it-account-primary{min-width:0;overflow-wrap:anywhere;color:var(--text)}
.it-account-balance{white-space:nowrap;text-align:right;color:var(--t2);font-variant-numeric:tabular-nums}
.it-account-branch{grid-column:1/-1;min-width:0;color:var(--t3);font-size:10.5px;font-weight:500;line-height:1.45;overflow-wrap:anywhere}
@media(max-width:760px){
  .modal.internal-transfer-modal{width:calc(100vw - 20px);max-width:none}
  .it-account-grid{grid-template-columns:1fr}
  .it-account-option.btn{grid-template-columns:minmax(0,1fr)}
  .it-account-balance{grid-column:1;text-align:left}
  .it-account-branch{grid-column:1}
}
.it-balance-confirm-layer{z-index:10050;background:rgba(15,32,40,.36);backdrop-filter:blur(1px)}
.it-balance-confirm{width:400px;max-width:calc(100vw - 32px)}
.it-balance-confirm .mb{padding:22px 20px 18px}
.it-balance-confirm-copy{display:flex;gap:13px;align-items:flex-start}
.it-balance-confirm-icon{width:38px;height:38px;flex:0 0 38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--err2);color:var(--err);font-size:16px}
.it-balance-confirm-copy h3{font-size:15px;margin:0 0 7px;color:var(--t1)}
.it-balance-confirm-copy p{font-size:12.5px;line-height:1.7;color:var(--t2);margin:0}
@keyframes moin{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.mh{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--brd2)}
.mh h2{font-size:15.5px;font-weight:700}
.mc-btn{width:30px;height:30px;border-radius:8px;border:none;background:var(--bg);color:var(--t3);cursor:pointer;font-size:14px}
.mc-btn:hover{background:var(--err2);color:var(--err)}
.mb{padding:18px;overflow-y:auto}
.mf{padding:13px 18px;border-top:1px solid var(--brd2);display:flex;justify-content:flex-end;gap:9px}

/* ===== 提示 ===== */
.tc-wrap{position:fixed;top:18px;right:18px;z-index:11000;display:flex;flex-direction:column;gap:9px}
.toast{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--brd);border-left:3px solid var(--ok);border-radius:9px;padding:11px 15px;font-size:12.5px;font-weight:500;box-shadow:0 8px 28px rgba(0,0,0,.14);min-width:230px;animation:tin .22s ease}
@keyframes tin{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}

/* ===== 扩展工具 ===== */
.fr2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.muted{color:var(--t3)}

/* ===== 总账结账 ===== */
.gl-close-scope{display:flex;align-items:end;gap:12px;margin-bottom:12px;padding:13px 16px;background:#fff;border:1px solid var(--brd);border-radius:12px}
.gl-close-scope-field{min-width:280px;max-width:460px;flex:1}
.gl-close-scope-field label{display:block;margin-bottom:6px;color:var(--t2);font-size:11.5px;font-weight:700}
.gl-close-scope-field select{width:100%;height:38px;border:1px solid var(--brd);border-radius:8px;background:#fff;color:var(--text);padding:0 11px;font:inherit}
.gl-close-scope-field select:focus{outline:3px solid rgba(15,92,82,.13);border-color:var(--p)}
.gl-close-scope-note{color:var(--t3);font-size:11.5px;line-height:1.55}
.gl-close-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:620px;background:#fff;border:1px solid var(--brd);border-radius:13px;overflow:hidden;box-shadow:var(--sh)}
.gl-close-periods{border-right:1px solid var(--brd);background:#fbfcfd}
.gl-close-year{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 12px;border-bottom:1px solid var(--brd)}
.gl-close-year strong{font-family:var(--font-data);font-size:15px;font-variant-numeric:tabular-nums}
.gl-close-year button{width:30px;height:30px;border:1px solid var(--brd);border-radius:7px;background:#fff;color:var(--t2);cursor:pointer}
.gl-close-year button:hover{border-color:var(--pl);color:var(--p);background:var(--pp)}
.gl-close-months{padding:7px 8px}
.gl-close-month{width:100%;min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border:0;border-radius:8px;background:transparent;color:var(--text);cursor:pointer;text-align:left}
.gl-close-month:hover{background:#f1f5f9}
.gl-close-month.active{background:#fff7e5;box-shadow:inset 3px 0 0 var(--acc)}
.gl-close-month-label{font-family:var(--font-data);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.gl-close-month-state{font-size:10.5px;padding:2px 7px;border-radius:5px;background:#eef2f6;color:var(--t3);white-space:nowrap}
.gl-close-month-state.closed{background:var(--ok2);color:var(--ok)}
.gl-close-month-state.open{background:var(--warn2);color:var(--warn)}
.gl-close-main{min-width:0;overflow:hidden;background:#fff}
.gl-close-guide{display:flex;align-items:center;gap:18px;min-height:126px;padding:22px 28px;background:#f3f6fb;border-bottom:1px solid var(--brd)}
.gl-close-guide-icon{width:74px;height:74px;flex:0 0 74px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;color:var(--p);font-size:29px;box-shadow:0 9px 24px rgba(15,92,82,.10)}
.gl-close-guide h2{font-size:16px;margin-bottom:6px}
.gl-close-guide p{max-width:720px;color:var(--t2);font-size:12.5px;line-height:1.7}
.gl-close-status{display:flex;align-items:center;gap:18px;min-height:94px;padding:16px 22px;border-bottom:1px solid var(--brd)}
.gl-close-month-number{width:68px;flex:0 0 68px;border-right:1px solid var(--brd);font-family:var(--font-data);font-size:34px;font-weight:800;line-height:1;color:#405069;font-variant-numeric:tabular-nums}
.gl-close-status-copy{min-width:0;flex:1}
.gl-close-status-copy h3{font-size:16px;margin-top:5px}
.gl-close-status-copy p{font-size:11.5px;color:var(--t3);margin-top:4px}
.gl-close-actions{display:flex;gap:8px;align-items:center}
.gl-close-actions .btn[disabled]{opacity:.48;cursor:not-allowed}
.gl-close-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--brd)}
.gl-close-metric{padding:15px 20px;border-right:1px solid var(--brd2)}
.gl-close-metric:last-child{border-right:0}
.gl-close-metric span{display:block;font-size:11px;color:var(--t3);margin-bottom:4px}
.gl-close-metric strong{font-family:var(--font-data);font-size:17px;font-variant-numeric:tabular-nums}
.gl-close-checks-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px 8px}
.gl-close-checks-head h3{font-size:14px}
.gl-close-checks-head span{font-size:11.5px;color:var(--t3)}
.gl-close-check{border-bottom:1px solid var(--brd2)}
.gl-close-check:last-child{border-bottom:0}
.gl-close-check-main{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:11px;padding:13px 22px}
.gl-close-check-icon{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--ok2);color:var(--ok);font-size:12px}
.gl-close-check.fail .gl-close-check-icon{background:var(--warn2);color:var(--warn)}
.gl-close-check.loading .gl-close-check-icon{background:#eef2f6;color:var(--t3)}
.gl-close-check b{display:block;font-size:12.5px;margin-bottom:3px}
.gl-close-check p{font-size:11.5px;color:var(--t3);line-height:1.5}
.gl-close-check-side{display:flex;align-items:center;justify-content:flex-end;gap:10px;white-space:nowrap}
.gl-close-check-result{font-size:11px;font-weight:600;color:var(--ok);white-space:nowrap}
.gl-close-check.fail .gl-close-check-result{color:var(--warn)}
.gl-close-check.loading .gl-close-check-result{color:var(--t3)}
.gl-close-check-toggle{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--p);font:inherit;font-size:11px;font-weight:650;cursor:pointer;padding:4px 2px}
.gl-close-check-toggle:hover{text-decoration:underline;text-underline-offset:3px}
.gl-close-check-toggle:focus-visible{outline:2px solid var(--p);outline-offset:2px;border-radius:4px}
.gl-close-check-toggle i{font-size:9px;transition:transform .16s ease-out}
.gl-close-check-toggle[aria-expanded="true"] i{transform:rotate(180deg)}
.gl-close-check-detail{margin:0 22px 14px 63px;padding:12px 14px;background:#fff9ec;border:1px solid #f5d99d;border-radius:8px;color:#6f5318}
.gl-close-check-detail[hidden]{display:none}
.gl-close-check-detail h4{font-size:11.5px;margin-bottom:7px;color:#7a5410}
.gl-close-check-detail ul{display:grid;gap:5px;margin:0;padding-left:18px}
.gl-close-check-detail li{font-size:11.5px;line-height:1.55;overflow-wrap:anywhere}
.gl-close-check-action{margin-top:9px;padding-top:8px;border-top:1px solid #f0d9a9;font-size:11.5px;line-height:1.55}
.gl-close-check-action b{display:inline;margin:0;color:#7a5410}
.gl-close-force-summary{display:grid;gap:8px;margin:12px 0;padding:12px 14px;background:#fff8e8;border:1px solid #f2d394;border-radius:8px}
.gl-close-force-item{font-size:12px;line-height:1.55;color:#684c16}
.gl-close-force-warning{font-size:12px;line-height:1.7;color:#991b1b}
@media(max-width:900px){
  .gl-close-shell{grid-template-columns:minmax(0,1fr);min-height:0}
  .gl-close-periods{border-right:0;border-bottom:1px solid var(--brd)}
  .gl-close-months{display:flex;overflow-x:auto;gap:5px;padding:8px}
  .gl-close-month{width:auto;min-width:108px;align-items:flex-start;flex-direction:column;gap:4px}
  .gl-close-month.active{box-shadow:inset 0 -3px 0 var(--acc)}
  .gl-close-status{align-items:flex-start;flex-wrap:wrap}
  .gl-close-actions{width:100%}
  .gl-close-actions .btn{justify-content:center;min-width:132px}
}
@media(max-width:620px){
  .gl-close-scope{align-items:stretch;flex-direction:column}.gl-close-scope-field{min-width:0;width:100%;max-width:none}
  .gl-close-guide{padding:18px;align-items:flex-start}.gl-close-guide-icon{width:48px;height:48px;flex-basis:48px;font-size:20px}
  .gl-close-status{align-items:flex-start;flex-wrap:wrap;padding:15px 16px}.gl-close-actions{width:100%}.gl-close-actions .btn{flex:1;justify-content:center}
  .gl-close-metrics{grid-template-columns:1fr}.gl-close-metric{border-right:0;border-bottom:1px solid var(--brd2)}
  .gl-close-check-main{grid-template-columns:28px minmax(0,1fr);padding:12px 16px}.gl-close-check-side{grid-column:2;justify-content:flex-start}.gl-close-check-detail{margin:0 16px 12px 55px}
}

/* ===== 多账套 + 银企直联 扩展样式（恢复自上一会话 module.css） ===== */
.set-switch{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--pp);border:1px solid #d4e9e6;border-radius:8px;cursor:pointer;max-width:236px;transition:.15s;position:relative;margin-right:2px}
.set-switch:hover{background:#dcefed;border-color:#bfe3de}
.set-switch>i.fa-building{color:var(--pl);font-size:13px}
.set-switch .ss-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.set-switch .ss-txt b{font-size:12px;font-weight:700;color:var(--p);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:152px}
.set-switch .ss-txt span{font-size:9.5px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:152px}
.set-switch .ss-caret{font-size:10px;color:var(--t3);margin-left:auto;transition:.2s}
.set-switch.open .ss-caret{transform:rotate(180deg)}
.set-dd{position:absolute;top:52px;left:0;z-index:600;width:392px;max-width:92vw;background:#fff;border:1px solid var(--brd);border-radius:13px;box-shadow:0 16px 46px rgba(15,92,82,.20);display:none;flex-direction:column;overflow:hidden}
.set-dd.open{display:flex;animation:ddin .16s ease}
@keyframes ddin{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.set-dd-h{padding:11px 11px 4px}
.set-dd-tabs{display:flex;gap:6px;padding:6px 11px 9px;flex-wrap:wrap;border-bottom:1px solid var(--brd2)}
.sd-chip{font-size:11px;padding:3px 11px;border-radius:20px;background:var(--bg);color:var(--t2);cursor:pointer;border:1px solid transparent;font-weight:500;transition:.12s}
.sd-chip:hover{background:#e6edf4}
.sd-chip.on{background:var(--pl);color:#fff;border-color:var(--pl)}
.set-dd-list{max-height:344px;overflow-y:auto;padding:6px}
.sdi{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;cursor:pointer;transition:.1s}
.sdi:hover{background:var(--pp)}
.sdi.cur{background:var(--pp);box-shadow:inset 0 0 0 1px #cfeae6}
.sdi-ic{width:31px;height:31px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;flex-shrink:0}
.sdi-m{flex:1;min-width:0}
.sdi-m b{font-size:12.5px;font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text)}
.sdi-m span{font-size:10.5px;color:var(--t3)}
.sdi-r{text-align:right;flex-shrink:0}
.sdi-r b{font-size:12px;font-weight:700;color:var(--p)}
.sdi-r span{font-size:9.5px;color:var(--t3);display:block}
.set-dd-empty{padding:30px;text-align:center;color:var(--t3);font-size:12px}
.set-dd-f{padding:9px 13px;border-top:1px solid var(--brd2);font-size:11px;color:var(--t3);display:flex;justify-content:space-between;align-items:center;background:#fafcfc}
.set-dd-f a{color:var(--pl);cursor:pointer;font-weight:600}
.set-dd-f a:hover{text-decoration:underline}
.sb-set-picker{margin:5px 0 8px;padding:9px 10px;border:1px solid rgba(255,255,255,.12);border-radius:10px;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;transition:.13s}
.sb-set-picker:hover,.sb-set-picker.open{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.22)}
.sb-set-picker .ssp-top{display:flex;align-items:center;gap:8px;font-size:11px;color:rgba(255,255,255,.66);font-weight:700}
.sb-set-picker .ssp-name{display:block;margin-top:5px;font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}
.sb-set-picker .ssp-meta{display:block;margin-top:2px;font-size:10px;color:rgba(255,255,255,.58);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-set-dd{position:fixed;top:82px;left:266px;z-index:1600}
/* bank elements */
.blogo{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;color:#fff;font-size:11px;font-weight:700;flex-shrink:0}
.blogo.lg{width:34px;height:34px;font-size:15px;border-radius:9px}
.blogo.bank-logo-image{display:inline-block;object-fit:contain;background:#fff;vertical-align:middle}
.conn{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--t2)}
.conn-d{width:7px;height:7px;border-radius:50%;display:inline-block}
.conn-d.g{background:#10b981;box-shadow:0 0 0 3px #10b98122}
.conn-d.a{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b22}
.conn-d.r{background:#ef4444;box-shadow:0 0 0 3px #ef444422}
/* charts */
.chart-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.legend{display:flex;flex-direction:column;gap:7px;flex:1;min-width:130px}
.legend-i{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--t2)}
.legend-d{width:9px;height:9px;border-radius:2px;flex-shrink:0}
.legend-v{margin-left:auto;font-weight:700;color:var(--text);font-size:11.5px}
.hbars{display:flex;flex-direction:column;gap:10px;padding:4px 2px}
.hbar{display:flex;align-items:center;gap:11px}
.hbar-l{width:104px;font-size:11.5px;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.hbar-t{flex:1;height:9px;background:var(--brd2);border-radius:6px;overflow:hidden}
.hbar-f{height:100%;border-radius:6px;transition:width .6s cubic-bezier(.4,0,.2,1)}
.hbar-v{width:80px;text-align:right;font-size:11.5px;font-weight:600;color:var(--text);flex-shrink:0}
/* group / treasury info strip */
.stat-strip{display:flex;gap:16px;flex-wrap:wrap;align-items:center;padding:12px 18px;background:linear-gradient(100deg,var(--pp),#ffffff 75%);border:1px solid #d9ece9;border-radius:13px;margin-bottom:14px}
.stat-strip .ssi{display:flex;flex-direction:column;gap:1px}
.stat-strip .ssi b{font-size:16px;font-weight:800;color:var(--p);line-height:1.1}
.stat-strip .ssi span{font-size:10.5px;color:var(--t3)}
.stat-strip .sssep{width:1px;height:30px;background:var(--brd)}
/* account card */
.acct-card{border:1px solid var(--brd);border-radius:13px;padding:14px 16px;background:#fff;transition:.15s}
.acct-card:hover{box-shadow:0 5px 18px rgba(0,0,0,.07);border-color:#cfeae6;transform:translateY(-1px)}
/* payment timeline */
.pay-tl{display:flex;flex-direction:column;margin-top:4px}
.pay-step{display:flex;gap:13px;position:relative;padding-bottom:17px}
.pay-step:last-child{padding-bottom:0}
.pay-step:not(:last-child):before{content:'';position:absolute;left:11px;top:25px;bottom:0;width:2px;background:var(--brd)}
.pay-step.done:not(:last-child):before{background:var(--ok)}
.pay-dot{width:24px;height:24px;border-radius:50%;background:var(--brd2);color:var(--t3);display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0;z-index:1}
.pay-step.done .pay-dot{background:var(--ok);color:#fff}
.pay-step.cur .pay-dot{background:var(--acc);color:#fff;box-shadow:0 0 0 4px var(--warn2);animation:pulse 1.6s infinite}
.pay-step.fail .pay-dot{background:var(--err);color:#fff}
@keyframes pulse{0%,100%{box-shadow:0 0 0 4px var(--warn2)}50%{box-shadow:0 0 0 7px #f59e0b22}}
.pay-c b{font-size:12.5px;font-weight:600;display:block;color:var(--text)}
.pay-c span{font-size:11px;color:var(--t3)}
/* recon */
.match-tag{font-size:10px;padding:2px 8px;border-radius:5px;font-weight:600;white-space:nowrap}
.mt-ok{background:var(--ok2);color:var(--ok)}
.mt-no{background:var(--warn2);color:var(--warn)}
.recon-side{border:1px solid var(--brd);border-radius:12px;overflow:hidden}
.recon-side h4{font-size:12px;font-weight:700;padding:10px 14px;background:var(--brd2);margin:0;display:flex;justify-content:space-between;align-items:center}
.rrow{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--brd2);font-size:11.5px}
.rrow:last-child{border-bottom:none}
.rrow.matched{background:#f3fbf8}
.rrow.unmatched{background:#fffdf6}
.rrow .ramt{margin-left:auto;font-weight:700}
/* misc */
.mini-pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px}
.tbl-click tbody tr{cursor:pointer}
.tbl-click tbody tr:hover{background:var(--pp)}
.fchip{font-size:11px;padding:4px 11px;border-radius:8px;background:var(--bg);color:var(--t2);cursor:pointer;border:1px solid var(--brd);font-weight:500}
.fchip.on{background:var(--pl);color:#fff;border-color:var(--pl)}
.bigbal{font-size:24px;font-weight:800;color:var(--p);letter-spacing:-.5px}
.donut-c{position:relative;display:inline-flex}
.donut-ct{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.donut-ct b{font-size:15px;font-weight:800;color:var(--p)}
.donut-ct span{font-size:10px;color:var(--t3)}

/* ===== 响应式 ===== */
@media(max-width:980px){
  .kpi-grid,.g4{grid-template-columns:repeat(2,1fr)}
  .g3{grid-template-columns:1fr}
  .g2{grid-template-columns:1fr}
}
@media(max-width:680px){
  .sidebar{position:fixed;left:-260px;transition:.25s;height:100vh}
  .sidebar.show{left:0}
  .kpi-grid,.g4{grid-template-columns:1fr}
  .fr3,.fr,.fr2{grid-template-columns:1fr;flex-direction:column}
}

/* ===== 新建凭证录入台（追加） ===== */
/* ===== 新建凭证录入台 ===== */
.modal.xl{width:min(1220px,calc(100vw - 32px))}
.nv-head{display:grid;grid-template-columns:1.6fr 1.4fr 1.2fr 1.1fr .9fr;gap:12px;margin-bottom:4px}
.nv-head .fg{margin-bottom:8px}

.nv-grid-wrap{border:1px solid var(--brd);border-radius:11px;overflow:visible;margin-top:2px}
.nv-row{display:grid;grid-template-columns:38px 1.22fr 1.4fr 1.08fr .72fr .96fr .96fr 104px;align-items:center;gap:0;
  border-bottom:1px solid var(--brd2);padding:5px 8px}
.nv-row:last-child{border-bottom:none}
.nv-row-h{background:var(--pp);font-size:11.5px;font-weight:700;color:var(--p);padding:9px 8px;border-radius:10px 10px 0 0}
.nv-row-h .nv-c-amt,.nv-row-h .nv-c-qty{text-align:right;padding-right:10px}
.nv-summary-head{display:flex;align-items:center;justify-content:space-between;gap:7px;min-width:0}
.nv-summary-replace-btn{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:3px 7px;border:1px solid #c9daee;border-radius:7px;background:#fff;color:var(--p);font:inherit;line-height:1;white-space:nowrap;cursor:pointer;transition:background-color .14s,border-color .14s,color .14s}
.nv-summary-replace-btn:hover{border-color:var(--pl);background:var(--info2);color:var(--pl)}
.nv-summary-replace-btn:focus-visible{outline:2px solid var(--pl);outline-offset:2px}
.nv-summary-replace-btn i{font-size:10.5px}
.nv-replace-form{display:grid;gap:13px}
.nv-replace-field{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:10px}
.nv-replace-field label{font-size:12.5px;font-weight:700;color:var(--t2)}
.nv-replace-field .fi{width:100%}
.nv-replace-hint{margin:0;padding:9px 11px;border-radius:8px;background:var(--info2);color:var(--t2);font-size:11.5px;line-height:1.5}
.nv-number-loading{color:var(--t3)!important}
.nv-c-no{text-align:center;color:var(--t3);font-size:12px;font-weight:600}
.nv-c-sum,.nv-c-acct,.nv-c-aux,.nv-c-qty,.nv-c-amt{padding:0 5px}
.nv-c-aux{min-width:0}
.nv-c-act{display:flex;gap:4px;justify-content:flex-end;padding-left:4px}
.nv-in{padding:7px 9px;font-size:12.5px}
.nv-amt{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}
.nv-qty{text-align:right;font-variant-numeric:tabular-nums}
.nv-qty.need{border-color:var(--err);background:var(--err2)}
.nv-qty-mark{margin-left:3px;color:var(--err);font-weight:800}
.nv-qty-wrap{display:flex;flex-direction:column;gap:4px}
.nv-unit-price{display:flex;align-items:center;gap:3px;min-height:17px;padding:0 2px;color:var(--t3);font-size:10.5px;line-height:17px;white-space:nowrap}
.nv-unit-price strong{color:var(--t3);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}
.nv-unit-price em{margin-left:auto;padding:0 5px;border-radius:8px;background:var(--bg);color:var(--t3);font-size:9.5px;font-style:normal;line-height:16px}
.nv-unit-price.ready strong{color:var(--pl)}
.nv-unit-price.ready em{background:var(--info2);color:var(--pl)}
.nv-foot{background:var(--bg);border-radius:0 0 10px 10px;border-top:1px solid var(--brd);padding:8px}
.nv-tot{text-align:right;padding-right:10px;font-size:13.5px;font-weight:800;color:var(--p);font-variant-numeric:tabular-nums}

.nv-mini{width:27px;height:27px;border-radius:7px;border:1px solid var(--brd);background:#fff;color:var(--t2);
  cursor:pointer;font-size:11.5px;transition:.13s;display:inline-flex;align-items:center;justify-content:center}
.nv-mini:hover{border-color:var(--pl);color:var(--pl);background:var(--pp)}
.nv-mini.del:hover{border-color:var(--err);color:var(--err);background:var(--err2)}

/* 科目选择器 */
.acp{position:relative}
.acp-in{padding-right:28px}
.acp-mag{position:absolute;right:10px;top:9px;font-size:11px;color:var(--t3);pointer-events:none}
.acp-dd{position:absolute;top:100%;left:0;right:0;margin-top:3px;background:#fff;border:1px solid var(--brd);
  border-radius:10px;box-shadow:0 14px 38px rgba(15,92,82,.18);max-height:236px;overflow-y:auto;z-index:80;display:none;padding:4px}
.acp-dd.open{display:block}
.acp-item{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:7px;cursor:pointer;font-size:12.5px}
.acp-item:hover,.acp-item.hl{background:var(--pp)}
.acp-code{font-weight:700;color:var(--p);font-variant-numeric:tabular-nums;min-width:42px}
.acp-name{flex:1;color:var(--text)}
.acp-dir{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:5px}
.acp-dir.d{background:var(--info2);color:var(--info)}
.acp-dir.c{background:#fdeee0;color:var(--acc)}
.acp-empty{padding:12px;text-align:center;color:var(--t3);font-size:12px}

/* 状态行 */
.nv-status{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}
.nv-cap{font-size:12.5px;font-weight:600;color:var(--t2);background:var(--bg);padding:9px 13px;border-radius:9px;flex:1}
.nv-baltip{font-size:13px;font-weight:700;padding:9px 16px;border-radius:9px;white-space:nowrap}
.nv-baltip.ok{background:var(--ok2);color:var(--ok)}
.nv-baltip.bad{background:var(--warn2);color:var(--warn)}
.nv-hint{margin-top:9px;font-size:11px;color:var(--t3);display:flex;align-items:center;gap:6px}

/* 凭证模板选择 */
.nv-tpl-wrap{display:flex;flex-direction:column;gap:14px}
.nv-tpl-gt{font-size:12px;font-weight:700;color:var(--t2);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.nv-tpl-gt:before{content:'';width:3px;height:13px;background:var(--p);border-radius:2px}
.nv-tpl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}
.nv-tpl-card{display:flex;align-items:center;gap:11px;padding:11px 13px;border:1px solid var(--brd);border-radius:11px;cursor:pointer;transition:.14s;background:#fff}
.nv-tpl-card:hover{border-color:var(--pl);background:var(--pp);transform:translateY(-1px);box-shadow:0 6px 18px rgba(15,92,82,.10)}
.nv-tpl-ic{width:36px;height:36px;border-radius:9px;background:var(--pp);color:var(--p);display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.nv-tpl-m b{display:block;font-size:13px;font-weight:700;color:var(--text)}
.nv-tpl-m span{font-size:11px;color:var(--t3)}
.nv-tpl-tip{margin-top:14px;font-size:11.5px;color:var(--t2);background:var(--info2);border-radius:9px;padding:10px 13px;display:flex;align-items:center;gap:7px}
@media(max-width:880px){.nv-head{grid-template-columns:1fr 1fr}.nv-tpl-grid{grid-template-columns:1fr}
  .nv-row{grid-template-columns:30px 1.08fr 1.18fr .94fr .62fr .84fr .84fr 92px}}
@media(max-width:560px){.nv-replace-field{grid-template-columns:1fr;gap:5px}.nv-summary-replace-btn span{display:none}}

/* ===== 录入台 v2 追加 ===== */
/* ===== 录入台 v2 追加：辅助核算 / 单据上传 ===== */
/* 辅助核算行内下拉 */
.nv-aux{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.nv-aux-box{position:relative;width:100%}
.nv-aux-in{padding:6px 8px;font-size:11.8px;border-style:dashed}
.nv-aux-in.set{border-style:solid;border-color:var(--pl);background:var(--pp);color:var(--p);font-weight:600}
.nv-aux-in.need{border-color:var(--warn);background:var(--warn2)}
.nv-aux-dd{position:absolute;top:100%;left:0;width:360px;max-width:calc(100vw - 32px);margin-top:3px;background:#fff;border:1px solid var(--brd);
  border-radius:9px;box-shadow:0 14px 38px rgba(15,92,82,.16);max-height:220px;overflow-y:auto;z-index:90;display:none;padding:4px}
.nv-aux-dd.open{display:block}
.nv-aux-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 9px;border-radius:7px;cursor:pointer;font-size:12px}
.nv-aux-item:hover,.nv-aux-item.hl{background:var(--pp)}
.nv-aux-item b{color:var(--text);font-weight:650}
.nv-aux-item span{color:var(--t3);font-size:10.5px;font-variant-numeric:tabular-nums}
.nv-aux-sel{padding:5px 8px;border:1px dashed var(--brd);border-radius:7px;font-size:11.5px;font-family:inherit;
  color:var(--t2);background:var(--bg);outline:none;cursor:pointer;width:100%;min-width:108px;transition:.13s}
.nv-aux-sel:focus{border-color:var(--pl);box-shadow:0 0 0 3px #27a89a1a}
.nv-aux-sel.set{border-style:solid;border-color:var(--pl);background:var(--pp);color:var(--p);font-weight:600}
.nv-aux-sel.need{border-color:var(--warn);background:var(--warn2)}
.nv-aux-empty{display:flex;align-items:center;gap:5px;min-height:31px;padding:0 8px;border:1px solid var(--brd2);
  border-radius:7px;background:var(--bg);color:var(--t3);font-size:11.5px;white-space:nowrap}
.nv-aux-empty.need{border-color:var(--warn);background:var(--warn2);color:var(--warn);font-weight:700}
.acp-aux{font-size:9.5px;font-weight:700;color:var(--acc);background:#fdeee0;border-radius:5px;padding:1px 6px;margin-left:auto}
.aux-tag{display:inline-block;font-size:11px;color:var(--pl);background:var(--pp);border-radius:5px;padding:1px 7px;margin-left:4px;font-weight:600}

/* 原始单据上传 */
.nv-att{margin-top:14px;border:1px solid var(--brd);border-radius:11px;padding:11px 13px;background:#fff}
.nv-att-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.nv-att-h span{font-size:12.5px;font-weight:600;color:var(--t2)}
.nv-att-h b{color:var(--p);font-size:13px}
.nv-files{display:flex;gap:9px;flex-wrap:wrap;min-height:20px}
.nv-files-empty{font-size:11.5px;color:var(--t3)}
.nv-fc{display:flex;align-items:center;gap:9px;padding:7px 10px 7px 7px;border:1px solid var(--brd);border-radius:9px;background:var(--bg);position:relative;max-width:230px}
.nv-fc-thumb{width:38px;height:38px;border-radius:7px;object-fit:cover;cursor:pointer;border:1px solid var(--brd)}
.nv-fc-ic{width:38px;height:38px;border-radius:7px;background:var(--pp);color:var(--p);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.nv-fc-m{display:flex;flex-direction:column;min-width:0}
.nv-fc-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}
.nv-fc-sz{font-size:10.5px;color:var(--t3)}
.nv-fc-x{width:20px;height:20px;border-radius:6px;border:none;background:transparent;color:var(--t3);cursor:pointer;font-size:11px;flex-shrink:0}
.nv-fc-x:hover{background:var(--err2);color:var(--err)}
/* 详情里的单据（只读） */
.vd-files{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px}

/* ===== 辅助核算模块（追加） ===== */
/* ===== 辅助核算模块 ===== */
.aux-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.aux-kpi{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--brd);border-radius:12px;padding:13px 15px;cursor:pointer;transition:.14s}
.aux-kpi:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(15,92,82,.08)}
.aux-kpi-ic{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.aux-kpi-v{font-size:19px;font-weight:800;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums}
.aux-kpi-l{font-size:11.5px;color:var(--t3);margin-top:2px}

.aux-tabs{display:flex;gap:6px;flex-wrap:wrap}
.aux-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--brd);border-radius:8px;font-size:12.5px;font-weight:600;color:var(--t2);cursor:pointer;transition:.13s;background:#fff}
.aux-tab:hover{border-color:var(--pl);color:var(--pl)}
.aux-tab.on{background:var(--p);border-color:var(--p);color:#fff}
.aux-tab.on i{color:#fff !important}
.aux-tab-n{font-size:10.5px;background:rgba(0,0,0,.08);border-radius:20px;padding:0 7px;min-width:18px;text-align:center}
.aux-tab.on .aux-tab-n{background:rgba(255,255,255,.25)}

.aux-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;padding:1px 7px;border-radius:5px;margin-left:4px}
.aux-badge i{font-size:8.5px}

.aux-bar-wrap{display:inline-block;width:78px;height:7px;background:var(--brd2);border-radius:5px;overflow:hidden;vertical-align:middle}
.aux-bar{height:100%;border-radius:5px;min-width:2px;transition:width .3s}
.aux-bar-pct{font-size:11px;color:var(--t3);margin-left:7px;font-variant-numeric:tabular-nums}

@media(max-width:880px){.aux-kpis{grid-template-columns:repeat(2,1fr)}}
.btn-danger{background:#dc2626;border:1px solid #dc2626;color:#fff}.btn-danger:hover{filter:brightness(.93)}
.tabbar{display:flex;align-items:center;gap:3px;padding:7px 14px 0;background:var(--bg2,#f6f8f8);border-bottom:1px solid var(--bd);overflow-x:auto;white-space:nowrap}.tabbar::-webkit-scrollbar{height:6px}.tabbar::-webkit-scrollbar-thumb{background:#cbd5d5;border-radius:3px}.tab{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;font-size:12.5px;color:var(--t2);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:9px 9px 0 0;cursor:pointer;user-select:none;max-width:210px;flex:none}.tab>i:first-child{font-size:11px;opacity:.85}.tab>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab:hover{background:#eaf0f0;color:var(--p)}.tab.active{background:#fff;color:var(--p);font-weight:600;border-color:var(--bd);box-shadow:0 -1px 2px rgba(0,0,0,.03);position:relative}.tab.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--pl)}.tab-x{font-size:11px;opacity:.4;padding:1px 2px;border-radius:4px;margin-left:2px}.tab-x:hover{opacity:1;background:rgba(220,38,38,.12);color:var(--err)}.tab-allx{flex:none;font-size:11.5px;color:var(--t3);cursor:pointer;padding:5px 10px;border-radius:6px;margin-left:6px}.tab-allx:hover{color:var(--err);background:#fee2e2}

/* ===== 臻汇云现代科技视觉覆盖 ===== */
:root{
  --p:#0b3b8f;--pm:#0f56d9;--pl:#1f7aff;--pp:#edf5ff;
  --acc:#14b8a6;--bg:#f5f8fc;--card:rgba(255,255,255,.94);--text:#0f172a;--t2:#475569;--t3:#7b8798;
  --brd:#dbe5f2;--brd2:#edf2f8;--info:#1f7aff;--info2:#edf5ff;
  --sh:0 10px 30px rgba(15,23,42,.08);--sw:236px
}
body{background:
  radial-gradient(circle at 88% 0%,rgba(31,122,255,.10),transparent 28%),
  radial-gradient(circle at 12% 8%,rgba(20,184,166,.10),transparent 24%),
  linear-gradient(180deg,#f8fbff 0%,#f2f6fb 100%);
}
.login-screen{background:
  radial-gradient(circle at 20% 18%,rgba(45,212,191,.22),transparent 26%),
  radial-gradient(circle at 82% 12%,rgba(59,130,246,.28),transparent 30%),
  linear-gradient(135deg,#071426 0%,#0b2d66 52%,#0f766e 100%)}
.login-box{border:1px solid rgba(255,255,255,.36);background:rgba(255,255,255,.92);backdrop-filter:blur(18px);box-shadow:0 30px 90px rgba(3,7,18,.38);border-radius:20px}
.login-logo .icon,.sb-icon{background:linear-gradient(135deg,#1f7aff,#14b8a6);box-shadow:0 12px 28px rgba(31,122,255,.32)}
.login-logo h1{font-size:20px;letter-spacing:0}
.sidebar{background:linear-gradient(180deg,#071426 0%,#0b2d66 54%,#0f766e 100%);box-shadow:12px 0 34px rgba(15,23,42,.10)}
.sb-logo{border-bottom:1px solid rgba(255,255,255,.10)}
.sb-name h2{font-size:16px;letter-spacing:0}
.sb-name p{font-size:10.5px;color:rgba(255,255,255,.68)}
.sb-item{border:1px solid transparent;border-radius:10px}
.sb-item:hover{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.08)}
.sb-item.active{background:linear-gradient(90deg,rgba(31,122,255,.24),rgba(20,184,166,.16));border-color:rgba(255,255,255,.16);box-shadow:inset 0 1px 0 rgba(255,255,255,.10)}
.sb-item.active:before{background:#38bdf8}
.topbar{height:58px;background:rgba(255,255,255,.78);backdrop-filter:blur(16px);box-shadow:0 1px 0 rgba(219,229,242,.9);border-bottom:none}
.tb-info h3{font-size:16px}.tb-info p{color:#64748b}
.content{padding:22px 24px}
.card,.kpi,.acct-card,.recon-side,.nv-att{border-color:rgba(219,229,242,.9);background:var(--card);box-shadow:0 10px 28px rgba(15,23,42,.055);border-radius:12px}
.card:hover,.kpi:hover{box-shadow:0 18px 40px rgba(15,23,42,.08)}
.ch{background:linear-gradient(180deg,rgba(248,251,255,.95),rgba(255,255,255,.88))}
thead th{background:#f7faff;color:#475569}
tbody tr:hover td{background:#f8fbff}
.btn{border-radius:9px;box-shadow:0 1px 0 rgba(255,255,255,.35) inset}
.btn-primary{background:linear-gradient(135deg,#0f56d9,#1f7aff);border-color:#0f56d9}
.btn-primary:hover{background:linear-gradient(135deg,#0b3b8f,#0f56d9)}
.btn-outline{background:rgba(255,255,255,.82)}
.set-switch{background:rgba(237,245,255,.92);border-color:#cfe0f5;box-shadow:0 8px 22px rgba(31,122,255,.08)}
.set-switch>i.fa-building,.set-switch .ss-txt b{color:#0f56d9}
.set-dd{box-shadow:0 24px 70px rgba(15,23,42,.22)}
/* Keep the account-set dropdown above dashboard cards and KPI panels. */
.topbar{position:relative;z-index:1200;overflow:visible}
.set-switch{z-index:1201}
.set-switch.open{z-index:1300}
.set-dd{z-index:1301}
.badge{border-radius:999px}
.fi,.fs,.si-wrap{border-color:#dbe5f2;border-radius:9px}
.fi:focus,.fs:focus{border-color:#1f7aff;box-shadow:0 0 0 3px rgba(31,122,255,.14)}
.tab.active::after{background:#1f7aff}

/* ===== 商务科技风视觉增强 ===== */
:root{
  --bg:#f4f7fb;--card:#ffffff;--text:#0b1220;--t2:#41516a;--t3:#7b8798;
  --p:#0b2d66;--pm:#0f56d9;--pl:#1f7aff;--acc:#14b8a6;
  --brd:#d9e4f2;--brd2:#edf3fa;--sh:0 16px 42px rgba(15,23,42,.08)
}
body{background:linear-gradient(180deg,#f8fbff 0%,#f3f7fc 48%,#eef4fa 100%);letter-spacing:0}
.sidebar{position:relative;background:linear-gradient(180deg,#06101f 0%,#09265a 52%,#0d6f68 100%);box-shadow:14px 0 34px rgba(2,8,23,.14)}
.sidebar:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:28px 28px;opacity:.22;pointer-events:none}
.sb-logo,.sb-nav,.sb-footer{position:relative}
.sb-logo{padding:18px 18px 16px;background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,0));border-bottom:1px solid rgba(255,255,255,.10)}
.sb-icon{border-radius:12px;background:linear-gradient(135deg,#38bdf8,#14b8a6);box-shadow:0 12px 28px rgba(20,184,166,.25)}
.sb-name h2{font-size:17px;font-weight:800;letter-spacing:0}
.sb-sec{margin-top:6px;color:rgba(226,232,240,.54);font-size:10.5px;letter-spacing:0;text-transform:none}
.sb-item{min-height:37px;border-radius:10px;color:rgba(226,232,240,.84)}
.sb-item i{color:rgba(148,213,255,.9)}
.sb-item:hover{background:rgba(255,255,255,.105);border-color:rgba(255,255,255,.12)}
.sb-item.active{background:linear-gradient(90deg,rgba(56,189,248,.24),rgba(20,184,166,.18));border-color:rgba(125,211,252,.22);box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 10px 24px rgba(2,8,23,.10)}
.sb-item.active i{color:#7dd3fc}
.sb-item.active:before{background:#22d3ee}
.sb-set-picker{background:rgba(255,255,255,.075);border-color:rgba(125,211,252,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.sb-set-picker:hover,.sb-set-picker.open{background:rgba(56,189,248,.13);border-color:rgba(125,211,252,.28)}
.main{background:linear-gradient(180deg,rgba(255,255,255,.65),rgba(255,255,255,0) 180px)}
.topbar{height:62px;background:rgba(255,255,255,.86);border-bottom:1px solid rgba(217,228,242,.86);box-shadow:0 8px 26px rgba(15,23,42,.045)}
.tb-info h3{font-size:17px;font-weight:800;letter-spacing:0;color:#0b1220}
.tb-info p{font-size:11px;color:#64748b}
.content{padding:24px 26px}
.ph{margin-bottom:18px}
.ph-title h1{font-size:24px;font-weight:800;letter-spacing:0;color:#0b1220}
.ph-title p{font-size:12.5px;color:#64748b}
.card,.kpi,.acct-card,.recon-side,.nv-att{border:1px solid rgba(217,228,242,.92);background:rgba(255,255,255,.96);box-shadow:0 14px 38px rgba(15,23,42,.06);border-radius:12px}
.card:hover,.kpi:hover{box-shadow:0 20px 48px rgba(15,23,42,.085)}
.kpi{min-height:132px;border-top:3px solid rgba(31,122,255,.72)}
.kpi.green{border-top-color:#14b8a6}.kpi.orange{border-top-color:#f59e0b}.kpi.red{border-top-color:#ef4444}.kpi.purple{border-top-color:#8b5cf6}
.kpi .ki{border-radius:11px;box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.kpi .kv{font-size:24px;letter-spacing:0;color:#0b1220}
.kpi .kl{font-size:12px;color:#64748b}
.ch{min-height:48px;background:linear-gradient(180deg,#f9fbff,#ffffff);border-bottom:1px solid rgba(217,228,242,.9)}
.ch h3{font-size:14.5px;letter-spacing:0;color:#0b1220}
thead th{background:#f3f7fc;color:#41516a;font-weight:700;letter-spacing:0}
tbody td{border-bottom-color:#edf3fa}
tbody tr:hover td{background:#f7fbff}
.btn{min-height:32px;border-radius:9px;font-weight:700;letter-spacing:0;transition:background .15s,border-color .15s,box-shadow .15s,color .15s}
.btn-primary{background:linear-gradient(135deg,#0f56d9,#1f7aff);border-color:#0f56d9;box-shadow:0 12px 24px rgba(31,122,255,.18),inset 0 1px 0 rgba(255,255,255,.28)}
.btn-primary:hover{background:linear-gradient(135deg,#0b3b8f,#0f56d9);box-shadow:0 14px 28px rgba(31,122,255,.24)}
.btn-outline{background:#fff;border-color:#d9e4f2;color:#334155}
.btn-outline:hover{border-color:#a9c4e6;background:#f8fbff;color:#0f56d9}
.fi,.fs,.si-wrap{border-color:#d5e0ee;background:#fff}
.fi:focus,.fs:focus,.si:focus{border-color:#1f7aff;box-shadow:0 0 0 3px rgba(31,122,255,.13)}
.tabbar{background:rgba(245,248,252,.92);border-bottom-color:#d9e4f2}
.tab.active{color:#0f56d9;border-color:#d9e4f2}
.set-dd,.txn-acct-panel,.nv-aux-dd{border-color:#d9e4f2;box-shadow:0 24px 70px rgba(15,23,42,.20)}
.voucher-pro{display:flex;flex-direction:column;gap:10px}
.voucher-query{border:1px solid #d8e2f0;background:#fff;border-radius:8px;box-shadow:0 10px 26px rgba(15,23,42,.045);overflow:hidden}
.vq-main{display:flex;flex-wrap:wrap;gap:10px 16px;padding:10px 14px 8px;align-items:center}
.vq-main>.vq-row{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%;box-sizing:border-box;flex:1 1 100%;flex-wrap:wrap}
.vq-plan-row{flex:0 1 142px!important}.vq-book-row{flex:1 1 320px!important}.vq-period-row{flex:2 1 600px!important}
.vq-date-row{flex:1 1 100%!important}.vq-status-row{flex:0 1 260px!important}
.vq-fields-row{flex:2 1 520px!important}.vq-maker-row{flex:1 1 260px!important}
@media(max-width:900px){.vq-main>.vq-row{flex:1 1 100%!important}.vq-plan-row{flex:0 1 142px!important}.vq-book-row{flex:1 1 320px!important}}
.vq-label{font-size:12px;color:#0f172a;font-weight:700;white-space:nowrap}
.vq-req{color:#ef233c;margin-right:3px}
.vq-input{height:30px;border:1px solid #b9c7d9;border-radius:4px;background:#fff;padding:0 8px;font-size:12px;color:#0f172a;min-width:0}
.vq-select{height:30px;border:1px solid #b9c7d9;border-radius:4px;background:#fff;padding:0 8px;font-size:12px;color:#334155;min-width:0}
.vq-book{background:#fffdeb;border-color:#a9b7ca;font-weight:700;color:#0f172a}
.vq-chips{display:inline-flex;border:1px solid #b9c7d9;border-radius:4px;overflow:hidden;background:#fff;flex:none}
.vq-chip{height:30px;display:inline-flex;align-items:center;padding:0 12px;border-right:1px solid #d7e0ec;font-size:12px;color:#1e293b;cursor:pointer;background:#fff;white-space:nowrap}
.vq-chip:last-child{border-right:none}.vq-chip.on{background:#eef5ff;color:#0f56d9;font-weight:800}
.vq-date{width:112px;text-align:center}
.vq-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end}
.vq-icon-btn{width:30px;height:30px;border:1px solid #d7e0ec;background:#f8fafc;color:#334155;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.vq-icon-btn.primary{background:#334155;color:#fff;border-color:#334155}
.vq-tags{display:flex;align-items:center;gap:8px;padding:7px 14px;border-top:1px solid #edf2f8;background:#fbfdff;font-size:12px;min-height:34px}
.vq-tag{display:inline-flex;align-items:center;gap:6px;border:1px solid #dbe5f2;border-radius:4px;background:#fff;padding:3px 8px;color:#475569}
.vq-tag i{font-size:10px;color:#94a3b8}
.voucher-table-card{border:1px solid #d8e2f0;background:#fff;border-radius:8px;box-shadow:0 12px 30px rgba(15,23,42,.055);overflow:hidden}
.vt-toolbar{height:50px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid #d8e2f0;background:#fff}
.acctbal-query{border:1px solid #d8e2f0;background:#fff;border-radius:8px;margin-bottom:12px;box-shadow:0 10px 26px rgba(15,23,42,.045);overflow:hidden}
.abq-tabs{height:38px;display:flex;align-items:end;gap:28px;padding:0 18px;background:#f3f6fa;border-bottom:1px solid #e1e8f2}
.abq-tab{height:38px;display:inline-flex;align-items:center;font-size:12px;font-weight:800;color:#334155;position:relative}
.abq-tab.on:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:#ef233c}
.abq-body{padding:12px 18px 14px}
.abq-section-title{font-size:12px;color:#334155;border-bottom:1px dashed #cbd5e1;margin:2px 0 12px;padding-bottom:6px}
.abq-grid{display:grid;grid-template-columns:86px minmax(240px,420px) minmax(240px,420px);gap:8px 10px;align-items:center}
.abq-label{font-size:12px;color:#334155;text-align:right;white-space:nowrap}
.abq-label.req:before{content:"*";color:#ef233c;margin-right:3px}
.abq-input,.abq-select{height:28px;border:1px solid #aebbd0;border-radius:4px;background:#fff;padding:0 8px;font-size:12px;color:#0f172a;min-width:0}
.abq-inline{display:flex;align-items:center;gap:8px;min-width:0}
.abq-chips{display:inline-flex;border:1px solid #b9c7d9;border-radius:4px;overflow:hidden;background:#fff}
.abq-chip{height:28px;display:inline-flex;align-items:center;padding:0 10px;border-right:1px solid #d7e0ec;font-size:12px;color:#1e293b;cursor:pointer;background:#fff;white-space:nowrap}
.abq-chip:last-child{border-right:none}.abq-chip.on{background:#eef5ff;color:#0f56d9;font-weight:800}
.abq-checks{display:flex;flex-wrap:wrap;gap:13px 18px;font-size:12px;color:#1e293b;align-items:center}
.abq-checks label{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.abq-checks input{accent-color:#ef233c}
.abq-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;border-top:1px solid #edf2f8;padding-top:12px}
.opening-workbench{display:flex;flex-direction:column;gap:0;border:1px solid #d8e2f0;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 12px 30px rgba(15,23,42,.055);height:calc(100vh - 132px);min-height:560px}
.op-query{display:grid;grid-template-columns:48px minmax(260px,1.1fr) 48px minmax(190px,.7fr) 48px minmax(190px,.7fr) 84px minmax(210px,.9fr) 40px 52px;gap:8px 10px;align-items:center;padding:8px 12px;background:#f8fafc;border-bottom:1px solid #dce5f1}
.op-label{font-size:12px;color:#0f172a;text-align:right;white-space:nowrap}.op-label.req:before{content:"*";color:#ef233c;margin-right:2px}
.op-input,.op-select{height:28px;border:1px solid #aebbd0;border-radius:4px;background:#fff;padding:0 8px;font-size:12px;color:#0f172a;min-width:0}
.op-book-combo{position:relative;min-width:0;width:100%;z-index:20}.op-book{width:100%;font-weight:800;background:#fffdeb;border-color:#8fb3ff;padding-right:34px;outline:none}.op-book:focus{border-color:#397ce8;box-shadow:0 0 0 2px rgba(37,99,235,.12)}
.op-book-toggle{position:absolute;top:1px;right:1px;width:30px;height:26px;border:0;border-left:1px solid #d8e2ef;border-radius:0 3px 3px 0;background:#f7faff;color:#49627f;cursor:pointer}.op-book-toggle:hover,.op-book-toggle:focus-visible{background:#eaf2ff;color:#0f56d9;outline:2px solid rgba(37,99,235,.2);outline-offset:-2px}
.op-book-menu{position:absolute;z-index:30;top:32px;left:0;right:0;max-height:300px;overflow:auto;padding:4px;border:1px solid #8da9cd;border-radius:5px;background:#fff;box-shadow:0 12px 26px rgba(15,23,42,.18)}.op-book-menu[hidden]{display:none}.op-book-option{width:100%;min-height:38px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:0;border-radius:4px;background:#fff;color:#17263a;padding:6px 9px;text-align:left;cursor:pointer}.op-book-option:hover,.op-book-option.active{background:#e8f1ff;color:#0b5fc6}.op-book-option:focus-visible{outline:2px solid #397ce8;outline-offset:-2px}.op-book-option.selected{font-weight:800}.op-book-option-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.op-book-option-meta{color:#718096;font-size:11px;white-space:nowrap}.op-book-option:hover .op-book-option-meta,.op-book-option.active .op-book-option-meta{color:#376fae}.op-book-empty{padding:16px 10px;text-align:center;color:#66758a;font-size:12px}
.op-search{width:32px;height:28px;border:0;border-radius:4px;background:#334155;color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.op-reset{font-size:12px;color:#0f56d9;font-weight:700;cursor:pointer}
.op-summary{height:40px;display:flex;align-items:center;gap:18px;padding:0 12px;background:#f1f5fb;border-bottom:1px solid #dce5f1;font-size:12px;color:#334155}
.op-summary b{color:#0f172a;font-size:13px}.op-ok{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:#16a34a}.op-bad{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:#dc2626}.op-dot{width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:9px;background:#22c55e}
.op-tabs{height:38px;display:flex;align-items:flex-end;gap:22px;padding:0 14px;background:#fff;border-bottom:1px solid #d8e2f0}
.op-tab{height:38px;display:inline-flex;align-items:center;font-size:13px;color:#0f172a;font-weight:700;cursor:pointer;position:relative}.op-tab.on:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:#ef233c}.op-tab:hover{color:#0f56d9}
.op-toolbar{height:40px;display:flex;align-items:center;gap:8px;padding:0 12px;background:#fff;border-bottom:1px solid #d8e2f0}
.op-spacer{flex:1}.op-btn{height:26px;border:1px solid #c5cfdd;background:#fff;border-radius:4px;padding:0 10px;font-size:12px;color:#1e293b;cursor:pointer}.op-btn:hover{border-color:#8fb3ff;color:#0f56d9;background:#f8fbff}.op-btn.primary{background:#0f56d9;color:#fff;border-color:#0f56d9}.op-btn.danger{border-color:#fecaca;color:#b42318;background:#fff}.op-btn.danger:hover{border-color:#ef4444;color:#991b1b;background:#fef2f2}.op-btn:disabled{cursor:not-allowed;opacity:.55}
.op-table-wrap{flex:1;min-height:0;overflow:auto;background:#fff;position:relative}
.opening-table{width:100%;min-width:1280px;border-collapse:separate;border-spacing:0;font-size:12px}.opening-table th{position:sticky;background:#f4f6f9;border-right:1px solid #cfd8e5;border-bottom:1px solid #c1ccda;color:#0f172a;font-weight:800;text-align:left;padding:7px 8px;white-space:nowrap;height:33px;box-shadow:0 1px 0 #c1ccda}.opening-table thead tr:first-child th{top:0;z-index:6}.opening-table thead tr:nth-child(2) th{top:33px;z-index:5}.opening-table thead th[rowspan="2"]{top:0;z-index:7;vertical-align:middle}.opening-table th.tc,.opening-table td.tc{text-align:center}.opening-table th.tr,.opening-table td.tr{text-align:right}.opening-table td{border-right:1px solid #d6dee9;border-bottom:1px solid #d6dee9;padding:0 8px;height:30px;color:#0f172a;background:#fff;white-space:nowrap}.opening-table tr:hover td{background:#f8fbff}.opening-table .op-code{font-family:Consolas,monospace;color:#0f56d9}.op-aux{color:#0f56d9;font-size:12px}.op-amt{width:132px;height:26px;border:0;background:transparent;text-align:right;font-size:12px;color:#0f172a;padding:0 4px}.op-amt:focus{outline:1px solid #1f7aff;background:#fffdeb}.op-total-row td{position:sticky;bottom:0;z-index:3;background:#fffaf2!important;font-weight:800;border-top:1px solid #c1ccda}
.op-aux-link{border:0;background:transparent;color:#0f56d9;font-size:12px;font-weight:700;padding:0;cursor:pointer;text-decoration:none}.op-aux-link:hover{text-decoration:underline}.op-aux-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;margin-left:5px;padding:0 5px;border-radius:9px;background:#eef5ff;color:#0f56d9;font-size:11px;font-weight:800}.op-readonly-amt{display:inline-block;min-width:110px;text-align:right;color:#0f172a;font-variant-numeric:tabular-nums}
.vt-radio{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#0f172a;white-space:nowrap}
.vt-dot{width:13px;height:13px;border-radius:50%;border:1px solid #cbd5e1;display:inline-flex;align-items:center;justify-content:center}
.vt-radio.on .vt-dot{border-color:#ef233c}.vt-radio.on .vt-dot:after{content:"";width:7px;height:7px;border-radius:50%;background:#ef233c}
.vt-spacer{flex:1}.vt-count{font-size:12px;color:#475569;margin-right:8px}
.vt-btn{height:30px;border:1px solid #d7e0ec;background:#fff;border-radius:5px;padding:0 11px;font-size:12px;color:#1f2937;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}
.vt-btn.primary{background:#ef233c;border-color:#ef233c;color:#fff;font-weight:800}.vt-btn:hover{border-color:#9fb4d0;background:#f8fbff}.vt-btn.primary:hover{background:#dc1430;color:#fff}
.vt-split:after{content:"";width:1px;height:18px;background:#dbe5f2;margin-left:3px}
.voucher-table{width:1930px;min-width:1930px;table-layout:fixed;font-size:12px}
.voucher-table .vt-col-check{width:36px}.voucher-table .vt-col-index{width:48px}.voucher-table .vt-col-book{width:88px}.voucher-table .vt-col-attach{width:72px}
.voucher-table .vt-col-period{width:88px}.voucher-table .vt-col-date{width:104px}.voucher-table .vt-col-number{width:155px}.voucher-table .vt-col-source{width:84px}
.voucher-table .vt-col-summary{width:260px}.voucher-table .vt-col-money{width:130px}.voucher-table .vt-col-cashflow{width:120px}.voucher-table .vt-col-person{width:92px}
.voucher-table .vt-col-status{width:84px}.voucher-table .vt-col-actions{width:277px}
.voucher-table th{height:30px;padding:0 10px;background:#f3f5f8;border-right:1px solid #d7e0ec;border-bottom:1px solid #cfd8e5;color:#111827;font-weight:800;white-space:nowrap}
.voucher-table td{height:34px;padding:5px 10px;border-right:1px solid #edf2f8;color:#111827}
.voucher-table .voucher-head-row>td{white-space:nowrap}
.voucher-table .voucher-no-cell code{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.voucher-table .voucher-summary-cell,.voucher-table .voucher-person-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.voucher-table .money-cell{font-family:var(--font-data);font-variant-numeric:tabular-nums lining-nums;text-align:right;font-weight:700}
.voucher-table .voucher-detail-row td{height:30px;background:#fbfdff;color:#475569;border-top:1px dashed #e2e8f0}
.voucher-table .voucher-detail-row .voucher-entry-no{color:#94a3b8;text-align:center}
.voucher-table .voucher-entry-account{display:block;font-weight:700;color:#334155;margin-top:2px}
.voucher-period-range,.voucher-date-range{display:inline-flex;align-items:center;gap:6px}
.voucher-result-table{width:100%;border-collapse:collapse;font-size:12px}
.voucher-result-table th,.voucher-result-table td{padding:8px;border:1px solid #e2e8f0;vertical-align:top;text-align:left}
.voucher-result-table th{background:#f8fafc}
.voucher-empty{height:180px;text-align:center;color:#94a3b8}
.voucher-empty i{display:block;font-size:30px;margin-bottom:8px;color:#cbd5e1}

/* ===== 全局业务系统密度：适用于除凭证页外的其它模块 ===== */
.content{padding:12px 14px}
.ph{align-items:center;margin-bottom:10px;padding:0 2px}
.ph-title h1{font-size:18px;line-height:1.2}
.ph-title p{font-size:11.5px;margin-top:2px}
.ph-actions{gap:6px}
.topbar{height:54px}
.tb-info h3{font-size:15px}.tb-info p{font-size:10.5px}
.g2,.g3,.g4,.kpi-grid{gap:8px}
.card,.kpi,.acct-card,.recon-side,.nv-att{border-radius:8px;box-shadow:0 4px 14px rgba(15,23,42,.045)}
.card:hover,.kpi:hover{box-shadow:0 6px 18px rgba(15,23,42,.055)}
.ch{min-height:40px;padding:8px 12px}
.ch h3{font-size:13px}
.cb{padding:10px 12px}
.kpi{min-height:78px;padding:10px 12px;display:grid;grid-template-columns:34px 1fr;grid-template-rows:auto auto auto;column-gap:10px;align-items:center;border-top-width:2px}
.kpi .ki{grid-row:1 / 4;width:32px;height:32px;border-radius:8px;margin:0;font-size:14px}
.kpi .kv{font-size:19px;line-height:1.05}
.kpi .kl{font-size:11px;margin-top:1px}
.kpi .kc{font-size:10.5px;margin-top:3px}
table{font-size:12px}
thead th{height:30px;padding:6px 10px;font-size:11px}
tbody td{height:32px;padding:6px 10px}
.tw{border-radius:0}
.btn{min-height:30px;padding:6px 10px;font-size:12px;border-radius:6px}
.btn-sm{min-height:28px;padding:5px 9px;font-size:11.5px}
.fi,.fs{height:30px;padding:5px 9px;font-size:12px;border-radius:6px}
.si-wrap{min-height:30px;border-radius:6px}
.si{height:28px;font-size:12px}
.fbar{gap:6px}
.badge{min-height:18px;padding:2px 7px;font-size:10.5px;border-radius:999px}
.fr,.fr2,.fr3{gap:8px}
.fg{margin-bottom:8px}
.fl{font-size:11.5px;margin-bottom:4px}
.tabbar{padding:5px 10px 0}
.tab{padding:6px 10px;font-size:12px;border-radius:7px 7px 0 0}
.modal{border-radius:10px}.modal .mh{padding:12px 14px}.modal .mb{padding:12px 14px}.modal .mf{padding:10px 14px}
.voucher-pro .card,.voucher-pro .kpi{box-shadow:inherit}

/* ===== v119 商务科技风统一视觉层 ===== */
:root{
  --p:#174ea6;--pm:#2563eb;--pl:#2f80ed;--pp:#edf5ff;
  --acc:#f04438;--cyan:#14b8a6;--nav:#152238;--nav2:#20304a;
  --bg:#eef4ff;--card:#ffffff;--text:#101828;--t2:#475467;--t3:#7a8699;
  --brd:#d8e2f0;--brd2:#eef3f9;--sh:0 10px 28px rgba(15,23,42,.075);
  --sw:224px
}
body{background:linear-gradient(135deg,rgba(47,128,237,.10),transparent 34%),linear-gradient(180deg,#f7faff 0%,#edf4ff 100%)}
.login-screen{justify-content:center;background:linear-gradient(90deg,rgba(9,20,38,.62),rgba(9,20,38,.18)),radial-gradient(circle at 35% 45%,rgba(47,128,237,.28),transparent 28%),linear-gradient(135deg,#e7f0ff 0%,#c7d9f2 48%,#edf4ff 100%);overflow:hidden}
.login-screen:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 0 42%,rgba(255,255,255,.28) 42% 42.6%,transparent 42.6%),repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 1px,transparent 1px 92px);opacity:.5;pointer-events:none}
.login-stage{width:min(1180px,94vw);min-height:560px;display:grid;grid-template-columns:minmax(420px,1fr) 390px;align-items:center;gap:48px;position:relative;z-index:1}
.login-hero{color:#fff;padding:28px 0 28px 12px;text-shadow:0 14px 36px rgba(15,23,42,.32)}
.login-brand-mark{width:74px;height:74px;border-radius:22px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:34px;font-weight:900;background:linear-gradient(135deg,#ef4444,#2563eb 62%,#14b8a6);box-shadow:0 26px 72px rgba(37,99,235,.34);margin-bottom:26px}
.login-kicker{font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.74);margin-bottom:10px}
.login-hero h1{font-size:44px;line-height:1.16;font-weight:900;letter-spacing:0;max-width:620px}
.login-hero p{font-size:17px;line-height:1.7;color:rgba(255,255,255,.82);max-width:560px;margin-top:18px}
.login-metrics{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.login-metrics span{min-width:132px;padding:12px 15px;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:rgba(255,255,255,.12);backdrop-filter:blur(10px);font-size:12px;color:rgba(255,255,255,.82)}
.login-metrics b{display:block;font-size:18px;color:#fff;margin-bottom:2px}
.login-box{width:390px;border-radius:8px;padding:28px 28px 22px;border:1px solid rgba(255,255,255,.70);background:rgba(255,255,255,.96);box-shadow:0 34px 90px rgba(15,23,42,.28)}
.login-logo{text-align:left;margin-bottom:20px}
.login-logo .icon{width:42px;height:42px;border-radius:10px;margin:0 0 12px;background:linear-gradient(135deg,#ef4444,#2563eb);box-shadow:none}
.login-logo h1{font-size:19px;font-weight:900;color:#111827}
.login-logo p{font-size:12px;color:#667085}
.login-box .btn-primary{height:38px;background:#ef3f46;border-color:#ef3f46;box-shadow:0 12px 24px rgba(239,63,70,.18)}
.login-box .btn-primary:hover{background:#d92d36;border-color:#d92d36}
.login-box .fi{height:36px;border-radius:5px}
.sidebar{background:#162235;box-shadow:none;border-right:1px solid rgba(15,23,42,.14)}
.sidebar:before{display:none}
.sb-logo{height:62px;padding:12px 14px;background:#fff;border-bottom:1px solid #dce5f1}
.sb-icon{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#ef4444,#2563eb);box-shadow:none;color:#fff}
.sb-name h2{color:#e32935;font-size:18px;font-weight:900}
.sb-name p{color:#667085;font-size:10px;font-weight:700}
.sb-nav{padding:8px 8px 14px}
.sb-sec{padding:13px 9px 6px;margin:0;color:#9fb0c7;font-size:11px;font-weight:800;letter-spacing:0}
.sb-item{min-height:34px;border-radius:6px;margin-bottom:2px;padding:7px 10px;color:#d6e1f2;border:0;font-weight:600}
.sb-item i{font-size:13px;color:#7eb7ff}
.sb-item:hover{background:#24344e;color:#fff}
.sb-item.active{background:#eef4ff;color:#174ea6;box-shadow:none;border:0}
.sb-item.active i{color:#174ea6}
.sb-item.active:before{left:0;top:7px;bottom:7px;width:3px;background:#ef3f46;border-radius:3px}
.sb-badge{background:#ef3f46}
.sb-footer{border-top:1px solid rgba(255,255,255,.08);background:#101a2b}
.sb-user{border-radius:6px}.sb-user:hover{background:#24344e}
.sb-utxt h5{color:#fff}.sb-utxt p{color:#9fb0c7}
.topbar{height:58px;background:#fff;border-bottom:1px solid #dce5f1;box-shadow:0 2px 8px rgba(15,23,42,.035);backdrop-filter:none}
.tb-info h3{font-size:17px;font-weight:900;color:#101828}
.tb-info p{font-size:11px;color:#667085}
.content{padding:14px 16px;background:linear-gradient(180deg,#f7faff 0%,#eef4ff 100%)}
.ph{padding:2px 0 0;margin-bottom:12px}
.ph-title h1{font-size:20px;font-weight:900;color:#101828}
.ph-title p{font-size:12px;color:#667085}
.card,.kpi,.acct-card,.recon-side,.nv-att,.voucher-query,.voucher-table-card,.acctbal-query,.opening-workbench{border-radius:8px;border-color:#dce5f1;background:#fff;box-shadow:0 4px 14px rgba(15,23,42,.045)}
.card:hover,.kpi:hover{box-shadow:0 8px 22px rgba(15,23,42,.06)}
.ch{min-height:40px;background:#fbfdff;border-bottom-color:#e6edf6}
.ch h3{font-size:13.5px;font-weight:900;color:#101828}
thead th{background:#f3f6fb;color:#344054;font-weight:900}
tbody tr:hover td{background:#f8fbff}
.btn{border-radius:5px;font-weight:800}
.btn-primary{background:#2563eb;border-color:#2563eb;box-shadow:0 8px 18px rgba(37,99,235,.14)}
.btn-primary:hover{background:#174ea6;border-color:#174ea6}
.btn-outline{background:#fff;border-color:#cfd9e8;color:#344054}
.btn-outline:hover{background:#eef4ff;border-color:#9fb9df;color:#174ea6}
.fi,.fs,.si-wrap{border-radius:5px;border-color:#cfd9e8}
.fi:focus,.fs:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.tabbar{background:#f5f8fc;border-bottom-color:#dce5f1}
.tab{border-radius:6px 6px 0 0}.tab.active{color:#174ea6}.tab.active::after{background:#ef3f46}
.tb-av{border-radius:6px;background:#f3f6fb}.tb-av:hover{background:#eef4ff;color:#174ea6}
.zh-demo-sandbox-on #zh-demo-mask-toggle{display:none!important}
.set-switch{border-radius:6px;background:#eef4ff;border-color:#cad9ef;box-shadow:none}
.set-dd,.txn-acct-panel,.nv-aux-dd{border-radius:8px;border-color:#dce5f1;box-shadow:0 24px 70px rgba(15,23,42,.18)}
.sort-th{cursor:pointer;user-select:none}
.sort-th:hover{color:#174ea6;background:#eef4ff}
.sort-th i{margin-left:5px;font-size:10px;color:#98a2b3}
.sort-th.on i{color:#ef3f46}
.ac-workbench{border:1px solid #dce5f1;background:#fff;border-radius:8px;box-shadow:0 4px 14px rgba(15,23,42,.045);overflow:hidden}
.ac-searchbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #e5ebf3;background:#fff}
.ac-search{position:relative;flex:1;min-width:240px;max-width:620px}
.ac-search>i{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:12px;color:#98a2b3;pointer-events:none}
.ac-search .fi{width:100%;height:32px;padding-left:32px;background:#fbfcfe}
.ac-filter-inline{display:flex;align-items:center;gap:8px;margin-left:auto;color:#475467;font-size:12px;white-space:nowrap}
.ac-filter-inline .fs{width:112px;height:30px;padding:3px 8px}
.ac-leaf-only{display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;padding:5px 2px}
.ac-category-tabs{display:flex;align-items:flex-end;gap:26px;min-height:43px;padding:0 14px;border-bottom:1px solid #dce5f1;background:#fbfcfe;overflow-x:auto;white-space:nowrap}
.ac-category-tab{position:relative;display:inline-flex;align-items:center;gap:7px;height:43px;padding:0 2px;border:0;background:transparent;color:#344054;font:700 13px/1 inherit;cursor:pointer;flex:none}
.ac-category-tab:hover{color:#d92d36}
.ac-category-tab:focus-visible{outline:2px solid #2563eb;outline-offset:-3px;border-radius:4px}
.ac-category-tab.on{color:#d92d36;font-weight:900}
.ac-category-tab.on:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:#ef3f46}
.ac-category-count{min-width:20px;height:18px;padding:0 6px;border-radius:9px;background:#eef2f7;color:#667085;font-size:10.5px;line-height:18px;text-align:center;font-weight:800}
.ac-category-tab.on .ac-category-count{background:#fff0f1;color:#d92d36}
.ac-table-meta{display:flex;align-items:center;justify-content:space-between;min-height:35px;padding:6px 12px;color:#667085;font-size:11.5px;border-bottom:1px solid #e8edf4}
.ac-workbench .tw{border:0}
.ac-workbench table{min-width:1120px}
.ac-empty{text-align:center!important;padding:42px 16px!important;color:#98a2b3!important}
@media(max-width:920px){.login-stage{grid-template-columns:1fr;gap:18px;min-height:auto}.login-hero{display:none}.login-box{width:min(390px,94vw);margin:auto}}
@media(max-width:920px){.ac-searchbar{align-items:stretch;flex-wrap:wrap}.ac-search{max-width:none;width:100%}.ac-filter-inline{margin-left:0}.ac-category-tabs{gap:18px}}

