
*{box-sizing:border-box}
html,body{margin:0;padding:0}
:root{
  --bg:#f3f6fa;--card:#fff;--ink:#101d2f;--muted:#6a7a91;--line:#e4eaf2;
  --brand:#0e63b3;--brand-d:#0b5296;--teal:#0e9aa7;--ok:#12855b;--warn:#b26a05;--bad:#c0392b;
  --radius:14px;
}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
[hidden]{display:none !important}
a{color:var(--brand);text-decoration:none}
h1,h2,h3,h4{margin:0}

/* ================= 登录 ================= */
.login{min-height:100vh;display:grid;grid-template-columns:1.06fr .94fr;background:#fff}
.login-art{position:relative;overflow:hidden;color:#fff;padding:64px 60px;display:flex;align-items:center;
  background:linear-gradient(158deg,#0a1c30 0%,#0d3350 48%,#0a5a68 100%)}
.login-art:before{content:'';position:absolute;width:520px;height:520px;border-radius:50%;right:-160px;top:-160px;
  background:radial-gradient(circle,rgba(46,166,200,.34),transparent 68%)}
.login-art:after{content:'';position:absolute;width:420px;height:420px;border-radius:50%;left:-140px;bottom:-180px;
  background:radial-gradient(circle,rgba(20,200,180,.24),transparent 70%)}
.art-inner{position:relative;z-index:1;max-width:430px}
.logo-mark{width:54px;height:54px;border-radius:15px;background:linear-gradient(135deg,#2f9ee0,#12b3a8);
  display:grid;place-items:center;font-size:24px;font-weight:700;box-shadow:0 10px 30px rgba(18,150,200,.4);margin-bottom:26px}
.login-art h1{font-size:31px;line-height:1.42;font-weight:650;letter-spacing:.5px}
.art-sub{margin:14px 0 30px;color:#a9c6dd;font-size:14px;letter-spacing:1px}
.art-list{list-style:none;margin:0;padding:0}
.art-list li{position:relative;padding-left:20px;margin-bottom:13px;font-size:13.5px;color:#c8dcec}
.art-list li:before{content:'';position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:2px;
  background:linear-gradient(135deg,#35b6d8,#35d39a)}
.art-foot{margin-top:44px;font-size:11.5px;color:#6f8ba3;letter-spacing:1px}
.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:40px 32px;background:#fbfcfe}
.login-card{width:100%;max-width:352px}
.login-card h2{font-size:22px;margin-bottom:6px}
.login-sub{color:var(--muted);font-size:13px;margin:0 0 26px}
.login-card .fld{margin-bottom:16px}
.login-err{color:#c0392b;font-size:12.5px;min-height:18px;margin:-4px 0 8px}
.login-card .btn.block{width:100%;justify-content:center;padding:11px;font-size:14px}
.login-foot{margin-top:18px;text-align:center;font-size:12px;color:#9aa9bd}

/* ================= 框架 ================= */
.app{display:flex;min-height:100vh}
.side{width:232px;flex:0 0 232px;background:linear-gradient(180deg,#0c2036 0%,#0a1a2b 100%);color:#b9c8da;
  display:flex;flex-direction:column;padding:20px 14px 14px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{display:flex;align-items:center;gap:10px;padding:0 6px 20px;border-bottom:1px solid rgba(255,255,255,.07);margin-bottom:14px}
.brand .mark{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#2f9ee0,#12b3a8);
  display:grid;place-items:center;color:#fff;font-weight:700;font-size:16px;flex:0 0 36px;box-shadow:0 4px 14px rgba(18,150,200,.35)}
.brand b{display:block;color:#fff;font-size:13.5px;letter-spacing:.3px;white-space:nowrap}
.brand span{font-size:10.5px;color:#7f93ab;letter-spacing:1.5px}
.nav{display:flex;flex-direction:column;gap:2px}
.nav .grp{font-size:10.5px;color:#5d7288;letter-spacing:1.4px;padding:14px 12px 6px}
.nav button{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;
  color:#a9bbcf;font-size:13px;transition:.15s}
.nav button:hover{background:rgba(255,255,255,.06);color:#e6eef7}
.nav button.on{background:rgba(47,158,224,.16);color:#fff;box-shadow:inset 2px 0 0 #35b6d8}
.nav svg{width:16px;height:16px;flex:0 0 16px;opacity:.9}
.side-foot{margin-top:auto;font-size:10.5px;color:#5d7288;padding:14px 8px 2px;border-top:1px solid rgba(255,255,255,.07)}
.dot-live{display:inline-block;width:6px;height:6px;border-radius:50%;background:#35d39a;margin-right:6px}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);padding:13px 26px;display:flex;align-items:center;gap:14px}
.top h1{font-size:17px;font-weight:650;letter-spacing:.2px}
.top .sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.top .sp{flex:1}
.who{display:flex;align-items:center;gap:9px;padding-left:14px;border-left:1px solid var(--line)}
.who .av{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#1e78c0,#14a8a0);
  color:#fff;display:grid;place-items:center;font-size:13px;font-weight:600}
.who .nm{font-size:12.5px;font-weight:600;line-height:1.3}
.who .rl{font-size:10.5px;color:var(--muted)}
.content{padding:20px 26px 48px;max-width:1680px;width:100%}

/* ================= 通用组件 ================= */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:17px 20px;
  box-shadow:0 1px 2px rgba(16,32,56,.04)}
.card.pad0{padding:0;overflow:hidden}
.card h3{font-size:14.5px;font-weight:650;display:flex;align-items:center;gap:8px}
.card .hint{font-size:11.5px;color:var(--muted);margin-top:3px}
.sec{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.sec .t{font-size:15px;font-weight:650}
.sec .d{font-size:11.5px;color:var(--muted);margin-top:3px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px 18px;
  box-shadow:0 1px 2px rgba(16,32,56,.04)}
.kpi .lb{font-size:12.5px;color:var(--muted)}
.kpi .v{font-size:26px;font-weight:700;letter-spacing:-.5px;margin:7px 0 3px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:12px;font-weight:500;color:var(--muted);margin-left:4px;letter-spacing:0}
.kpi .s{font-size:11.5px;color:var(--muted)}
.kpi.alert{background:linear-gradient(180deg,#fff7f6,#fff);border-color:#f6d7d2}
.kpi.alert .v{color:#c0392b}
.kpi.good{background:linear-gradient(180deg,#f5fcf8,#fff);border-color:#d5ecdf}
.kpi.good .v{color:#127a53}

.btn{all:unset;box-sizing:border-box;cursor:pointer;font-size:12.5px;padding:8px 14px;border-radius:9px;
  border:1px solid var(--line);background:#fff;color:#33475e;display:inline-flex;align-items:center;gap:6px;
  transition:.15s;white-space:nowrap;line-height:1.35}
.btn:hover{border-color:#c3d6ea;background:#f8fbff}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 8px rgba(14,99,179,.22)}
.btn.primary:hover{background:var(--brand-d)}
.btn.danger{color:#b42318;border-color:#f0d3cf}
.btn.danger:hover{background:#fdf3f2;border-color:#e5b3ad}
.btn.ghost{border-color:transparent;background:transparent;color:#5b6b81}
.btn.ghost:hover{background:#f2f6fb}
.btn.sm{padding:5px 10px;font-size:12px;border-radius:7px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.btn svg{width:14px;height:14px}

.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:11.5px;
  font-weight:600;white-space:nowrap}
.pill i{width:5px;height:5px;border-radius:50%;background:currentColor;display:block}
.pill.ok{background:#e8f7ef;color:#0f7a4a}
.pill.warn{background:#fdf3e2;color:#a9650b}
.pill.bad{background:#fdeae8;color:#b42318}
.pill.info{background:#e8f1fd;color:#12579e}
.pill.done{background:#eef2f7;color:#4a5b70}
.tag{display:inline-block;font-size:11px;color:#4a5b70;background:#f2f5f9;border:1px solid #e8eef6;
  border-radius:6px;padding:1px 7px;white-space:nowrap}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;letter-spacing:-.2px}

/* ================= 表格 ================= */
.tbl-wrap{overflow:auto}
table.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
table.tbl th{text-align:left;font-weight:600;font-size:11.5px;color:#5c6c82;padding:11px 12px;
  border-bottom:1px solid var(--line);white-space:nowrap;background:#f8fafc;position:sticky;top:0;z-index:1}
table.tbl td{padding:11px 12px;border-bottom:1px solid #f0f4f9;vertical-align:middle}
table.tbl tbody tr:last-child td{border-bottom:none}
table.tbl tbody tr:hover{background:#f8fbff}
table.tbl tr.clickable{cursor:pointer}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.num.bad{color:#c0392b;font-weight:600}
.num.strong{font-weight:650}
.c-name{font-weight:600;color:#16283e;line-height:1.4}
.c-sub{font-size:11px;color:#8b9ab0;margin-top:2px;white-space:nowrap}
.tfoot{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;font-size:12px;
  color:var(--muted);border-top:1px solid var(--line);background:#fcfdff;gap:10px;flex-wrap:wrap}
.row-sum td{background:#f7fafd;font-weight:650}
.row-group td{background:#eef4fa;font-weight:600;color:#2b4a6b;font-size:12.5px}

/* ================= 表单 ================= */
.fld{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.fld>span{font-size:12.5px;color:#4a5b70;font-weight:500}
.fld .req{color:#d0453a;margin-left:2px}
.fld .tip{font-size:11px;color:#93a3b8}
input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea{
  font-family:inherit;font-size:13px;color:var(--ink);background:#fff;border:1px solid #d9e2ee;
  border-radius:9px;padding:9px 11px;outline:none;transition:.15s;width:100%}
input:focus,select:focus,textarea:focus{border-color:#8ab8e0;box-shadow:0 0 0 3px rgba(14,99,179,.09)}
input::placeholder,textarea::placeholder{color:#a8b6c8}
textarea{resize:vertical;min-height:64px}
select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236a7a91' stroke-width='2.4'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;padding-right:30px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.form-grid .full{grid-column:1/-1}
.form-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.upload{display:flex;align-items:center;gap:10px;border:1px dashed #cfdbe8;border-radius:10px;
  padding:10px 12px;background:#fafcff;font-size:12.5px;color:#5b6b81;cursor:pointer;transition:.15s}
.upload:hover{border-color:#9cc4e8;background:#f5faff}
.upload input{display:none}
.upload .up-ico{width:26px;height:26px;border-radius:8px;background:#e8f2fd;color:#12579e;display:grid;place-items:center;flex:0 0 26px}
.upload .up-name{color:#16283e;font-weight:600;word-break:break-all}
.upload.has{border-style:solid;border-color:#cfe3f5;background:#f7fbff}
.link-btn{all:unset;cursor:pointer;color:var(--brand);font-size:12px}
.link-btn:hover{text-decoration:underline}

/* ================= 弹窗 ================= */
.mask{position:fixed;inset:0;background:rgba(10,22,38,.46);display:flex;align-items:center;justify-content:center;
  padding:24px;z-index:80;opacity:0;pointer-events:none;transition:.18s}
.mask.on{opacity:1;pointer-events:auto}
.dialog{background:#fff;border-radius:16px;width:min(560px,100%);max-height:90vh;display:flex;flex-direction:column;
  box-shadow:0 28px 70px rgba(10,25,45,.32);transform:translateY(10px) scale(.99);transition:.2s}
.mask.on .dialog{transform:none}
.dialog.wide{width:min(820px,100%)}
.dialog.xwide{width:min(1080px,100%)}
.dialog-hd{padding:17px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}
.dialog-hd h3{font-size:15.5px;font-weight:650;flex:1}
.dialog-bd{padding:18px 22px;overflow:auto}
.dialog-ft{padding:13px 22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;
  align-items:center;gap:10px}
.dialog-ft .r{display:flex;gap:9px;margin-left:auto}
.x{all:unset;cursor:pointer;width:30px;height:30px;border-radius:8px;display:grid;place-items:center;color:#7b8ba1}
.x:hover{background:#f2f6fb;color:#33475e}

/* ================= 台账编辑器 ================= */
.ledger-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.ledger-tbl th{background:#f8fafc;font-size:11.5px;color:#5c6c82;font-weight:600;text-align:left;
  padding:9px 8px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1}
.ledger-tbl td{padding:3px 4px;border-bottom:1px solid #f2f5f9}
.ledger-tbl input{border:1px solid #e3ebf4;background:#fff;padding:6px 8px;border-radius:6px;
  font:inherit;width:100%;box-sizing:border-box;color:var(--ink)}
.ledger-tbl input:hover{border-color:#c9dcee}
.ledger-tbl input:focus{border-color:#9cc4e8;background:#fff;outline:none;box-shadow:0 0 0 2px rgba(14,99,179,.08)}
.ledger-tbl td.idx{color:#8b9ab0;font-size:12px;text-align:center;width:42px}
.ledger-tbl td.del{width:44px;text-align:center}
.ledger-sum{display:flex;justify-content:flex-end;gap:26px;padding:12px 8px;font-size:13px;border-top:1px solid var(--line)}
.ledger-sum b{font-size:16px;font-variant-numeric:tabular-nums}

/* ================= 其它 ================= */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.search{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:9px;
  padding:8px 11px;width:280px;max-width:100%}
.search svg{width:14px;height:14px;color:#93a3b8;flex:0 0 14px}
.search input{all:unset;flex:1;font-size:13px;color:var(--ink)}
.search input::placeholder{color:#9aa9bd}
.filters{display:flex;gap:9px;flex-wrap:wrap}
.filters select{width:auto;min-width:118px}
.empty{padding:46px 20px;text-align:center;color:#9aa9bd;font-size:13px}
.empty .big{font-size:15px;color:#7b8ba1;margin-bottom:6px}
.approve-bar{display:flex;gap:8px;justify-content:flex-end}
.file-link{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--brand)}
#toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,16px);background:#16283e;color:#fff;
  font-size:13px;padding:10px 18px;border-radius:10px;opacity:0;pointer-events:none;transition:.22s;z-index:90;
  box-shadow:0 10px 30px rgba(10,25,45,.3);max-width:76vw}
#toast.on{opacity:1;transform:translate(-50%,0)}
#toast.err{background:#8f2a20}
#toast.ok{background:#14603f}
.spin{width:15px;height:15px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;
  animation:sp .7s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}
.loading{padding:60px;text-align:center;color:#8b9ab0;font-size:13px}
.hr{height:1px;background:var(--line);margin:16px 0}
.stat-line{display:flex;gap:22px;flex-wrap:wrap;font-size:12.5px;color:#5b6b81}
.stat-line b{color:#16283e;font-variant-numeric:tabular-nums}

@media(max-width:1180px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g2,.g3,.g4{grid-template-columns:1fr}
}
@media(max-width:900px){
  .login{grid-template-columns:1fr}
  .login-art{display:none}
  .side{width:62px;flex:0 0 62px;padding:14px 8px}
  .brand{padding:0 0 12px;justify-content:center;border:none}
  .brand>div:last-child{display:none}
  .nav button span,.nav .grp,.side-foot{display:none}
  .nav button{justify-content:center;padding:11px}
  .content{padding:16px 14px 40px}
  .top{padding:12px 14px}
  .who .nm,.who .rl{display:none}
  .form-grid{grid-template-columns:1fr}
}

/* 多选项目 / 财务补充 */
.chk-list{max-height:160px;overflow:auto;border:1px solid #d9e2ee;border-radius:9px;padding:5px;background:#fff;margin-top:6px}
.chk{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:12.5px;color:#33475e;cursor:pointer;line-height:1.4}
.chk:hover{background:#f5f9ff}
.chk input{width:auto;margin:0;flex:0 0 auto;accent-color:#0e63b3}
.chk .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chk .cd{font-size:10.5px;color:#8b9ab0;white-space:nowrap}
.q-row td{background:#f5f9fd;font-weight:650;color:#2b4a6b}
.pend-box{border:1px solid #f3e3c8;background:#fffcf6;border-radius:12px;padding:4px 0}
.pend-box .tbl th{background:#fffcf6}

/* ===== 修正 ===== */
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input:focus,select:focus,textarea:focus{outline:none}
.btn:focus-visible,.nav button:focus-visible,.link-btn:focus-visible{outline:2px solid #7db6e6;outline-offset:2px}
.grid.items-start{align-items:start}
.tbl.dense th{padding:9px 8px}
.tbl.dense td{padding:9px 8px}
.tbl.dense{min-width:1130px}
.ledger-tbl input[data-k="sets"],.ledger-tbl input[data-k="fee"]{text-align:right;font-variant-numeric:tabular-nums}
@media(max-width:1400px){.tbl.dense{min-width:1080px}}
.row-group td{padding-top:9px;padding-bottom:9px}
.chk-list{max-height:178px}
.fld{margin-bottom:13px}
input:not([type=checkbox]):not([type=radio]):not([type=file]),select{padding:8px 11px}
.chk-sum{display:inline-block;font-size:11.5px;color:#0e63b3;margin-left:8px}

/* ===== 表单宽度与对齐 ===== */
.form-grid > *{min-width:0}
.fld input,.fld select,.fld textarea{min-width:0;max-width:100%}
.dialog-bd .form-grid{width:100%}
table.tbl th.num{text-align:right}
input[type=checkbox],input[type=radio]{width:auto;height:auto;accent-color:#0e63b3}
input[type=file]{border:none;background:none;padding:0}

/* 备案号 */
.icp{font-size:11px;color:#93a3b8;line-height:1.7;margin-top:10px;text-align:center;word-break:break-all}
.icp a{color:#93a3b8;text-decoration:none}
.icp a:hover{color:#0e63b3;text-decoration:underline}
.side-foot .icp{text-align:left;color:#4f647c;margin-top:6px;font-size:10.5px}
.side-foot .icp a{color:#4f647c}
.side-foot .icp a:hover{color:#8fb8dd}

.row-year td{background:#fbfcfe;color:#5b6b81;font-weight:600;font-size:12px;padding:7px 12px;border-bottom:1px solid #eef3f9}
.row-year td:first-child{padding-left:28px;position:relative}
.row-year td:first-child:before{content:'';position:absolute;left:15px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:#b6c8db}
.row-group td{background:#eef4fa;color:#2b4a6b;font-weight:600;font-size:12.5px}

/* 表单逐项错误提示 + 密码可见 */
.fld-err{font-style:normal;font-size:11.5px;color:#c0392b;display:none;margin-top:-2px}
.fld-err.on{display:block}
.pwd-wrap{position:relative;display:flex}
.pwd-wrap input{width:100%;padding-right:56px}
.pwd-eye{all:unset;position:absolute;right:6px;top:50%;transform:translateY(-50%);cursor:pointer;
  font-size:11.5px;color:#0e63b3;padding:5px 8px;border-radius:6px;line-height:1}
.pwd-eye:hover{background:#eef4fb}

/* ===== 项目管理/台账 增强 ===== */
.pname{all:unset;cursor:pointer;font-weight:600;color:#16283e;font-size:13px;line-height:1.4}
.pname:hover{color:#0e63b3;text-decoration:underline}
.ttype{background:#eef4fb;border-color:#d5e5f6;color:#12579e;font-size:10.5px;padding:0 6px;margin-left:2px}
.info-head{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.info-name{font-size:15px;font-weight:650;line-height:1.4}
.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}
.info-row{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed #eef2f7;font-size:13px}
.info-k{color:#6a7a91;width:84px;flex:0 0 84px}
.info-v{flex:1;color:#16283e;word-break:break-all}
.info-v.empty{color:#b6c3d2}
.info-foot{margin-top:14px;font-size:12px;color:#8b9ab0}
.prog-line{display:flex;align-items:center;gap:12px;margin:2px 0 14px}
.prog-line .bar{flex:1;height:8px;background:#eef2f8;border-radius:99px;overflow:hidden;display:block}
.prog-line .bar>i{display:block;height:100%;background:linear-gradient(90deg,#2f8fd8,#12b39a);border-radius:99px;transition:width .2s}
.prog-hint{font-size:12px;color:#6a7a91;white-space:nowrap}
.ledger-tbl select{width:100%;padding:5px 20px 5px 7px;font-size:12px;border:1px solid #e3ebf4;background-color:#fff;
  border-radius:6px;color:#33475e;appearance:none;background-repeat:no-repeat;background-position:right 5px center;background-size:9px;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%238b9ab0' stroke-width='3'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E")}
.ledger-tbl select:hover{border-color:#c9dcee}
.ledger-tbl select:focus{border-color:#9cc4e8;outline:none;box-shadow:0 0 0 2px rgba(14,99,179,.08)}
.ledger-tbl select:disabled{color:#b6c3d2;background-color:#f7f9fc;border-color:#eef2f8}
.qty-cell{display:flex;align-items:center;gap:5px;min-width:0}
.qty-cell input{flex:1 1 0;width:0;min-width:0}
.unit-tag{flex:0 0 auto;font-size:11px;color:#5b6b81;background:#f2f6fb;border-radius:5px;padding:3px 6px;white-space:nowrap;min-width:22px;text-align:center}
.todo-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed #eef2f7;font-size:12.5px}
.todo-item:last-child{border-bottom:none}
.todo-item .nm{flex:1;min-width:0}
.todo-item .nm b{display:block;color:#16283e;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo-item .nm span{color:#8b9ab0;font-size:11px}

.ledger-tbl td{padding:3px 4px}
.ledger-tbl td.num{padding-right:8px}

.ledger-tbl input:disabled{background:#f5f8fc;color:#93a3b8;border-color:#eef2f8}

.perm-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}
.perm-row{display:flex;align-items:center;gap:8px;padding:8px 6px;border-radius:6px;font-size:13px;color:#33475e;cursor:pointer}
.perm-row:hover{background:#f5f9fd}
.perm-row input{width:auto;margin:0}
.perm-row .pl{flex:1}
