/* ============================================================
   公共订单模块 · 线框原型样式（只读线框，不含业务逻辑）
   目录：assets/proto.css
   ============================================================ */

*,*::before,*::after{box-sizing:border-box}

:root{
  --bg:#f4f5f7;
  --panel:#ffffff;
  --bd:#dfe3e8;
  --bd2:#edeff2;
  --tx:#1f2329;
  --tx2:#5f6672;
  --tx3:#8f959e;
  --pri:#1664ff;
  --pri-bg:#eef3ff;
  --ok:#0f9960;
  --ok-bg:#e9f8f1;
  --warn:#c96c00;
  --warn-bg:#fff5e6;
  --err:#d93026;
  --err-bg:#fdedec;
  --gray:#8f959e;
  --gray-bg:#f2f3f5;
  --dash:#c6cad1;
}

html,body{margin:0;padding:0}
body{
  font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--tx);background:var(--bg);
}
a{color:var(--pri);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{margin:0;font-weight:600}
table{border-collapse:collapse;width:100%}

/* ---------- 布局骨架（后台） ---------- */
.shell{display:flex;min-height:100vh}
.sidebar{
  width:224px;flex:0 0 224px;background:#fff;border-right:1px solid var(--bd);
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.sidebar .brand{
  padding:14px 16px;border-bottom:1px solid var(--bd2);font-weight:600;font-size:15px;
}
.sidebar .brand small{display:block;font-weight:400;color:var(--tx3);font-size:12px;margin-top:2px}
.sidebar .nav-1{padding:10px 8px}
.sidebar .nav-1-title{
  font-size:11px;color:var(--tx3);padding:0 8px 6px;letter-spacing:.5px;
}
.sidebar .grp{margin-bottom:6px}
.sidebar .grp-name{
  padding:6px 8px;border-radius:4px;cursor:pointer;font-size:13px;
  display:flex;justify-content:space-between;align-items:center;color:var(--tx2);
}
.sidebar .grp-name:hover{background:var(--gray-bg)}
.sidebar .grp.open .grp-name{background:var(--pri-bg);color:var(--pri);font-weight:600}
.sidebar .grp-name i{font-style:normal;font-size:10px;color:var(--tx3)}
.sidebar .sub{display:none;padding:2px 0 6px 8px;border-left:2px solid var(--bd2);margin-left:10px}
.sidebar .grp.open .sub{display:block}
.sidebar .sub .sub-t{font-size:11px;color:var(--tx3);padding:4px 8px 2px}
.sidebar .sub a{
  display:block;padding:4px 8px;border-radius:4px;font-size:13px;color:var(--tx2);
}
.sidebar .sub a:hover{background:var(--gray-bg);text-decoration:none}
.sidebar .sub a.on{background:var(--pri-bg);color:var(--pri);font-weight:600}
.sidebar .foot{padding:10px 8px;border-top:1px solid var(--bd2)}
.sidebar .foot a{font-size:12px;color:var(--tx2);display:block;padding:4px 8px;border-radius:4px}
.sidebar .foot a:hover{background:var(--gray-bg);text-decoration:none}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  height:52px;background:#fff;border-bottom:1px solid var(--bd);
  display:flex;align-items:center;justify-content:space-between;padding:0 20px;
  position:sticky;top:0;z-index:20;
}
.crumb{font-size:13px;color:var(--tx2)}
.crumb b{color:var(--tx);font-weight:600}
.topbar .tools{display:flex;gap:8px;align-items:center}
.topbar select{height:28px;border:1px solid var(--bd);border-radius:4px;padding:0 6px;font-size:13px;background:#fff}

/* 内容区自适应浏览器宽度，最大 1660px（超出后居中，不留单侧空白） */
.content{padding:18px 20px 40px;width:100%;max-width:1660px;margin:0 auto}

/* ---------- 页头 ---------- */
.hd{
  background:var(--panel);border:1px solid var(--bd);border-radius:6px;
  padding:14px 16px;margin-bottom:14px;
}
.hd h2{font-size:17px;display:flex;align-items:center;gap:8px}
.hd .code{
  font:12px/1.6 ui-monospace,Consolas,monospace;background:var(--gray-bg);
  color:var(--tx2);border-radius:3px;padding:1px 6px;font-weight:400;
}
.hd .desc{margin:6px 0 0;color:var(--tx2);font-size:13px}
.hd .acts{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 卡片 / 区块 ---------- */
.card{
  background:var(--panel);border:1px solid var(--bd);border-radius:6px;
  margin-bottom:14px;overflow:hidden;
}
.card > h3{
  font-size:14px;padding:10px 16px;border-bottom:1px solid var(--bd2);
  background:#fafbfc;display:flex;justify-content:space-between;align-items:center;
}
.card > h3 .sub{font-weight:400;font-size:12px;color:var(--tx3)}
.card .bd{padding:14px 16px}
.card .bd.tight{padding:0}

/* ---------- 折叠块（默认收起，点击标题展开） ---------- */
.fold-i{font-size:10px;color:var(--tx3);margin-right:6px;line-height:1}
.card > h3.fold-h{cursor:pointer;user-select:none}
.card > h3.fold-h:hover{background:#f4f6f8}
.card[data-fold] > h3.fold-h::before{content:'▶';font-size:10px;color:var(--tx3);margin-right:8px}
.card[data-fold].open > h3.fold-h::before{content:'▼'}
.card[data-fold] > .fold-b{display:none}
.card[data-fold].open > .fold-b{display:block}
.card[data-fold] > h3{border-bottom:none}
.card[data-fold].open > h3{border-bottom:1px solid var(--bd2)}
.fold{border-top:1px solid var(--bd2)}
.fold > .fold-b{display:none}
.fold.open > .fold-b{display:block}
.fold > .fold-h{
  cursor:pointer;user-select:none;padding:8px 16px;font-size:12px;color:var(--tx2);
  background:#fafbfc;display:flex;align-items:center;
}
.fold > .fold-h:hover{background:#f4f6f8;color:var(--tx)}
.fold.open > .fold-h{border-bottom:1px solid var(--bd2)}

/* ---------- 招生对象：按校区分组的年级 ---------- */
.gbc{display:flex;flex-direction:column;gap:6px}
.gbc-r{display:flex;gap:12px;align-items:flex-start;padding:6px 8px;border:1px dashed var(--bd);border-radius:4px}
.gbc-c{flex:0 0 84px;font-size:13px;color:var(--tx2);padding-top:3px}
.gbc-r .ckg{flex-wrap:wrap}

/* ---------- 列表封面图 ---------- */
.ph.cover{width:72px;height:40px;flex:0 0 auto;font-size:10px}
.tb td .ph.cover{margin:0 auto}

/* ---------- 批量操作条 ---------- */
.bbar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:10px 16px;border-bottom:1px solid var(--bd2);background:#fafbfc;
}
.bbar .n{font-size:13px;color:var(--tx2)}
.bbar .n b{color:var(--tx);font-variant-numeric:tabular-nums}
.btn:disabled{opacity:.45;cursor:not-allowed}
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1120px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 数字卡 ---------- */
.stat{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}
@media (max-width:1000px){.stat{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat-i{background:#fff;border:1px solid var(--bd);border-radius:6px;padding:12px 14px}
.stat-i .k{font-size:12px;color:var(--tx2)}
.stat-i .v{font-size:21px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}
.stat-i .v small{font-size:12px;font-weight:400;color:var(--tx3);margin-left:2px}

/* ---------- 线框控件 ---------- */
.ipt,.sel,.ta{
  display:inline-block;border:1px dashed var(--dash);border-radius:3px;
  background:#fbfcfd;color:var(--tx3);font-size:13px;min-width:170px;
  height:30px;line-height:28px;padding:0 9px;vertical-align:middle;
}
.sel{min-width:130px}
.ta{height:auto;min-height:64px;line-height:1.6;padding:6px 9px;width:100%}
.ipt.sm,.sel.sm{min-width:110px;height:26px;line-height:24px}
.ipt.wide,.sel.wide{width:100%}
.ipt.real,.sel.real{border-style:solid;color:var(--tx);background:#fff}
.filters{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.fi{display:flex;align-items:center;gap:6px}
.fi .lb{font-size:13px;color:var(--tx2);white-space:nowrap}
.fbar{display:flex;justify-content:space-between;align-items:center;gap:12px}
.fbar .r{display:flex;gap:8px;flex:0 0 auto}

/* ---------- 表格 ---------- */
.tb{font-size:13px;background:#fff}
.tb th{
  background:#f7f8fa;text-align:left;padding:8px 10px;border:1px solid var(--bd);
  font-weight:600;color:var(--tx2);white-space:nowrap;
}
.tb td{padding:8px 10px;border:1px solid var(--bd);vertical-align:top;background:#fff}
.tb tr:hover td{background:#fbfcfe}
.tb .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tb .amt{font-variant-numeric:tabular-nums;white-space:nowrap}
.tb .neg{color:var(--err)}
.tb .ctr{text-align:center;white-space:nowrap}
.tb .op a,.tb .op button{margin-right:6px}
.tb .op button:last-child{margin-right:0}
.tb tr.row-dis td{background:#f7f8fa;color:var(--tx3)}
.tb tr.row-hl td{background:#fffdf5}

/* ---------- 状态标签 ---------- */
.tag{
  display:inline-block;padding:0 7px;border-radius:3px;font-size:12px;
  line-height:19px;border:1px solid;white-space:nowrap;
}
.t-green{color:var(--ok);border-color:#b7e3cd;background:var(--ok-bg)}
.t-orange{color:var(--warn);border-color:#f2d6ab;background:var(--warn-bg)}
.t-gray{color:var(--tx3);border-color:var(--bd);background:var(--gray-bg)}
.t-red{color:var(--err);border-color:#f3bcb8;background:var(--err-bg)}
.t-blue{color:var(--pri);border-color:#bcd3ff;background:var(--pri-bg)}
.t-purple{color:#7f3bf5;border-color:#d6c2fb;background:#f5efff}

/* ---------- 提示块 ---------- */
.tips{
  border-left:3px solid var(--pri);background:var(--pri-bg);
  padding:8px 12px;font-size:13px;color:var(--tx2);border-radius:0 4px 4px 0;margin:10px 0;
}
.tips.warn{border-color:var(--warn);background:var(--warn-bg)}
.tips.err{border-color:var(--err);background:var(--err-bg)}
.tips.ok{border-color:var(--ok);background:var(--ok-bg)}
.tips b{color:var(--tx)}
.tips ul{margin:5px 0 0;padding-left:18px}
.tips li{margin:2px 0}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-block;padding:4px 13px;border:1px solid var(--bd);background:#fff;
  border-radius:4px;font-size:13px;cursor:pointer;color:var(--tx);line-height:20px;
  font-family:inherit;
}
.btn:hover{border-color:var(--pri);color:var(--pri);text-decoration:none}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}
.btn.pri:hover{background:#4080ff;color:#fff}
.btn.sm{padding:1px 8px;font-size:12px}
.btn.dis{background:#f5f6f7;color:#b6bbc2;border-color:var(--bd);cursor:not-allowed}
.btn.dis:hover{border-color:var(--bd);color:#b6bbc2}
.btn.danger{color:var(--err);border-color:#f3bcb8}
.btn.ghost{background:transparent}
.lnk{
  display:inline-block;padding:0;border:none;background:none;color:var(--pri);
  cursor:pointer;font-size:13px;font-family:inherit;
}
.lnk:hover{text-decoration:underline}
.lnk.dis{color:#b6bbc2;cursor:not-allowed}
.lnk.dis:hover{text-decoration:none}

/* ---------- 权限点 / 说明标记 ---------- */
.perm{
  font:11px/1.5 ui-monospace,Consolas,monospace;color:var(--tx3);
  background:var(--gray-bg);border:1px solid var(--bd2);border-radius:2px;padding:0 4px;
  white-space:nowrap;
}
.muted{color:var(--tx3)}
.sm{font-size:12px}
.ro{font-size:11px;color:var(--tx3);border:1px dashed var(--dash);border-radius:2px;padding:0 4px;margin-left:4px;white-space:nowrap}
.derive{font-size:11px;color:var(--warn);white-space:nowrap}

/* ---------- 页签 ---------- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--bd);background:#fff;padding:0 8px}
.tab{
  padding:8px 16px;border:none;background:none;cursor:pointer;font-size:13px;
  color:var(--tx2);border-bottom:2px solid transparent;font-family:inherit;
}
.tab:hover{color:var(--pri)}
.tab.on{color:var(--pri);font-weight:600;border-bottom-color:var(--pri)}
.pane{display:none}
.pane.on{display:block}

/* ---------- 弹窗 ---------- */
.modal-mask{
  position:fixed;inset:0;background:rgba(31,35,41,.45);display:none;
  align-items:center;justify-content:center;z-index:100;padding:24px;
}
.modal-mask.on{display:flex}
.modal-box{
  background:#fff;border-radius:6px;width:660px;max-width:100%;max-height:88vh;
  display:flex;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,.18);
}
.modal-hd{
  padding:12px 18px;border-bottom:1px solid var(--bd2);font-weight:600;font-size:15px;
  display:flex;justify-content:space-between;align-items:center;
}
.modal-hd button{border:none;background:none;cursor:pointer;font-size:16px;color:var(--tx3);line-height:1}
.modal-bd{padding:16px 18px;overflow:auto}
.modal-ft{padding:12px 18px;border-top:1px solid var(--bd2);text-align:right;display:flex;gap:8px;justify-content:flex-end}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;top:64px;transform:translate(-50%,-8px);background:#1f2329;
  color:#fff;padding:9px 18px;border-radius:4px;opacity:0;transition:.22s;
  z-index:200;pointer-events:none;font-size:13px;box-shadow:0 4px 16px rgba(0,0,0,.2);
}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 占位块（图片 / 图表 / 区域） ---------- */
.ph{
  background:repeating-linear-gradient(45deg,#f4f5f7,#f4f5f7 6px,#eef0f3 6px,#eef0f3 12px);
  border:1px dashed var(--dash);border-radius:4px;display:flex;align-items:center;
  justify-content:center;color:var(--tx3);font-size:12px;text-align:center;
}
.ph.img{aspect-ratio:16/9;width:100%}
.ph.chart{height:180px}
.ph.thumb{width:96px;height:54px;flex:0 0 auto}

/* ---------- 信息行 ---------- */
.kv{display:grid;grid-template-columns:120px 1fr;gap:6px 12px;font-size:13px}
.kv .k{color:var(--tx2)}
.kv .v{color:var(--tx);word-break:break-all}

/* ---------- 说明脚注 ---------- */
.note{
  font-size:12px;color:var(--tx3);border-top:1px dashed var(--bd);
  padding-top:8px;margin-top:10px;
}

/* ---------- 变更高亮（用于原型评审标记） ---------- */
.hl{outline:2px solid #ff9a2e;outline-offset:2px;border-radius:3px}
.badge-new{
  font-size:11px;background:#fff1e0;color:#c96c00;border:1px solid #f5cf9a;
  border-radius:2px;padding:0 4px;margin-left:4px;
}

/* ============================================================
   家长端（手机框）—— 固定高度，内容在框内上下滚动
   ============================================================ */
body.parent{background:#e9ebef}
.wrap-phone{padding:20px;display:flex;justify-content:center}
.phone{
  width:390px;height:844px;flex:0 0 390px;background:#fff;border:1px solid #cfd4dc;
  border-radius:26px;overflow:hidden;box-shadow:0 6px 24px rgba(0,0,0,.10);
  display:flex;flex-direction:column;
}
.phone > .p-status,.phone > .p-topbar,.phone > .p-tabbar{flex:0 0 auto}
.p-status{
  background:#f2f3f5;padding:6px 16px;font-size:12px;color:var(--tx2);
  display:flex;justify-content:space-between;
}
.p-topbar{
  background:#fff;border-bottom:1px solid var(--bd);padding:10px 14px;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
}
.p-topbar .t{font-size:15px;font-weight:600}
.p-stu{
  background:var(--pri-bg);border-bottom:1px solid var(--bd);padding:8px 14px;font-size:12px;
  color:var(--pri);display:flex;justify-content:space-between;align-items:center;
}
/* 滚动容器：占满手机框剩余高度，内容超高时在框内上下滑动 */
.p-body{background:#f4f5f7;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-bottom:8px}
.p-body::-webkit-scrollbar{width:6px}
.p-body::-webkit-scrollbar-track{background:transparent}
.p-body::-webkit-scrollbar-thumb{background:#c9ced6;border-radius:3px}
.p-tabbar{
  display:flex;border-top:1px solid var(--bd);background:#fff;
}
.p-tabbar a{
  flex:1;text-align:center;padding:8px 0 10px;font-size:11px;color:var(--tx3);
}
.p-tabbar a.on{color:var(--pri);font-weight:600}
.p-tabbar .ic{display:block;font-size:15px;line-height:20px}

.p-card{background:#fff;border-bottom:1px solid var(--bd2);padding:12px 14px}
.p-sec{background:#fff;margin-bottom:8px;border-top:1px solid var(--bd2);border-bottom:1px solid var(--bd2)}
.p-sec > .t{font-size:13px;font-weight:600;padding:10px 14px;border-bottom:1px solid var(--bd2)}
.p-sec .bd{padding:10px 14px}
.p-bar{
  position:sticky;bottom:0;background:#fff;border-top:1px solid var(--bd);
  padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.p-bar .amt{font-size:17px;font-weight:600;color:var(--err)}
.p-list{display:flex;flex-direction:column}
.p-row{
  display:flex;gap:10px;align-items:flex-start;padding:11px 14px;
  border-bottom:1px solid var(--bd2);background:#fff;
}
.p-row.dis{color:var(--tx3);background:#fafbfc}
.p-grow{flex:1;min-width:0}
.p-title{font-size:14px;font-weight:600}
.p-tabs{display:flex;background:#fff;border-bottom:1px solid var(--bd);padding:0 6px}
.p-tabs button{
  flex:1;padding:9px 0;border:none;background:none;font-size:13px;color:var(--tx2);
  cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;
}
.p-tabs button.on{color:var(--pri);font-weight:600;border-bottom-color:var(--pri)}
.p-chips{display:flex;gap:8px;flex-wrap:wrap;padding:10px 14px;background:#fff;border-bottom:1px solid var(--bd2)}
.chip{
  border:1px solid var(--bd);background:#f7f8fa;border-radius:14px;padding:3px 11px;
  font-size:12px;color:var(--tx2);cursor:pointer;
}
.chip.on{background:var(--pri-bg);border-color:#bcd3ff;color:var(--pri)}
.wire{
  border:1px dashed var(--dash);border-radius:4px;padding:8px 10px;font-size:12px;
  color:var(--tx3);background:#fbfcfd;
}

/* ---------- 家长端：卡片列表（订单 / 课程），一条记录一张白底卡片 ---------- */
.p-cardlist{padding:10px 12px}
.o-sum{
  font-size:12px;color:var(--tx3);padding:9px 14px 0;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
}
.o-sum b{color:var(--tx2);font-weight:600;font-variant-numeric:tabular-nums}
.o-card{
  background:#fff;border-radius:10px;padding:12px 14px;margin-bottom:10px;
  box-shadow:0 1px 3px rgba(31,35,41,.07);
}
.o-card[hidden],.c-card[hidden],.cr[hidden],.p-sec[hidden],.o-empty[hidden],.p-bar[hidden]{display:none}
.o-card.dis{background:#fafbfc}
.o-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.o-name{font-size:15px;font-weight:600;line-height:1.45;margin-top:7px}
.o-meta{font-size:12px;color:var(--tx3);line-height:1.6;margin-top:2px}
.o-card.dis .o-name{color:var(--tx2)}
.o-bot{
  display:flex;align-items:flex-end;justify-content:space-between;gap:10px;
  margin-top:9px;padding-top:9px;border-top:1px dashed var(--bd2);
}
.o-amt{font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.3}
.o-amt small{display:block;font-size:11px;font-weight:400;color:var(--tx3);margin-top:1px}
.o-card.dis .o-amt{color:var(--tx3);font-weight:400}
.o-acts{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;flex:0 0 auto}
.o-acts .btn{padding:3px 12px}
.o-empty{
  margin-bottom:10px;padding:40px 14px;text-align:center;color:var(--tx3);
  font-size:13px;background:#fff;border-radius:10px;
}

/* ---------- 家长端：课程卡片（选购首页 / 已购课程） ---------- */
.c-card{
  display:flex;gap:10px;align-items:center;background:#fff;border-radius:10px;
  padding:10px 12px;margin-bottom:10px;box-shadow:0 1px 3px rgba(31,35,41,.07);
}
.c-card.dis{background:#fafbfc}
.ph.sq{width:64px;height:64px;flex:0 0 64px;font-size:11px}
.c-g{flex:1;min-width:0}
.c-n{
  font-size:14px;font-weight:600;line-height:1.4;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.c-m{
  font-size:12px;color:var(--tx3);line-height:1.55;margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.c-f{display:flex;align-items:baseline;gap:8px;margin-top:4px;flex-wrap:wrap}
.c-p{font-size:15px;font-weight:600;color:var(--err);font-variant-numeric:tabular-nums}
.c-s{font-size:12px;color:var(--tx3)}
.c-s.warn{color:var(--warn)}
.c-card.dis .c-p{color:var(--tx3);font-weight:400}
.c-go{flex:0 0 auto}
.p-note{padding:2px 14px 16px;font-size:12px;color:var(--tx3);line-height:1.7}

/* ---------- 家长端：课程明细行（订单详情，移动端排版，替代表格） ---------- */
.cr{
  display:flex;gap:10px;padding:11px 14px;border-bottom:1px solid var(--bd2);background:#fff;
}
.cr:last-child{border-bottom:none}
.cr.dis{background:#fafbfc}
.cr-g{flex:1;min-width:0}
.cr-n{
  font-size:14px;font-weight:600;line-height:1.4;
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
}
.cr-m{font-size:12px;color:var(--tx3);line-height:1.6;margin-top:2px}

/* ---------- 家长端：课时进度条（P13 已购课程详情） ---------- */
.pb{height:6px;border-radius:3px;background:#eceef2;overflow:hidden;margin-top:8px}
.pb-in{height:100%;background:var(--pri);border-radius:3px;transition:width .2s}

/* ---------- 家长端：金额行（P04 / P07 共用） ---------- */
.line{
  display:flex;justify-content:space-between;gap:10px;
  padding:7px 0;border-bottom:1px solid var(--bd2);font-size:13px;
}
.line:last-child{border-bottom:none}
.line .amt{font-variant-numeric:tabular-nums}
.line .neg{color:var(--err)}
.pay-amt{font-size:24px;font-weight:700;color:var(--err);font-variant-numeric:tabular-nums}

/* ---------- 可交互控件（真实输入，用于可算页面） ---------- */
.px{
  width:110px;padding:3px 7px;border:1px solid var(--bd);border-radius:3px;
  font:inherit;font-size:13px;text-align:right;background:#fff;color:var(--tx);
}
.px.bad{border-color:var(--err);background:#fdeeec}
select.real,input.real{
  height:30px;padding:0 7px;border:1px solid var(--bd);border-radius:3px;
  font:inherit;font-size:13px;background:#fff;color:var(--tx);
}
select.real{min-width:260px}

/* ============================================================
   可交互控件：占位块由脚本升级为真实 input / select / textarea
   ============================================================ */
select.real,input.real{max-width:100%}
.fi select.real,.fi input.real{
  height:26px;min-width:128px;padding:0 6px;line-height:24px;
}
.fi select.real{cursor:pointer}
.fi input.real{cursor:text}
.fi input.real[type="date"]{min-width:134px}
.rngw{display:inline-flex;align-items:center;gap:5px}
.fi .rng{min-width:118px}
.ta.real{
  border-style:solid;color:var(--tx);background:#fff;
  font:inherit;font-size:13px;resize:vertical;width:100%;
}
input.real[type="file"]{
  height:auto;min-width:0;width:100%;max-width:280px;padding:4px 6px;font-size:12px;
}
.fx-empty{text-align:center;color:var(--tx3);padding:18px 10px;background:#fff}
.fx-empty-p{padding:18px 14px;background:#fff;text-align:center}
.p-chips .chip{user-select:none}
.p-tabs:not([data-tabs]) button{cursor:pointer}

/* ---------- 功能入口卡（替代被移出侧栏的功能页） ---------- */
.ent{border-color:#c9d8f5}
.ent > h3{background:#f5f8ff}
.ent-g{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-top:1px dashed var(--bd2)}
.ent-g:first-child{border-top:none;padding-top:0}
.ent-t{flex:0 0 92px;font-size:12px;color:var(--tx2);padding-top:4px}
.ent-b{display:flex;flex-wrap:wrap;gap:6px}

/* ---------- 批量导入（B24 派发对象） ---------- */
.imp{border:1px dashed var(--dash);border-radius:5px;background:#fbfcfd;padding:10px 12px}
.imp-h{font-size:13px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:8px}
.imp-h .muted{font-weight:400}
.imp-r{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.imp-r input.real[type="file"]{max-width:280px}
.imp[data-done] .imp-h{color:var(--ok)}

/* ---------- 真实表单 ---------- */
.fm{display:flex;flex-direction:column;gap:10px}
.fm-row{display:flex;gap:12px;align-items:flex-start}
.fm-k{flex:0 0 152px;font-size:13px;color:var(--tx2);padding-top:5px;text-align:right}
.fm-k i{color:var(--err);font-style:normal;margin-left:2px}
.fm-v{flex:1;min-width:0}
.fm-v .ipt.wide,.fm-v .ta,.fm-v select.real{width:100%;max-width:540px}
.fm-v select.real{min-width:0}
.fm-v input.real:disabled{background:#f2f3f5;color:var(--tx2)}
.fm-ro{
  font-size:13px;color:var(--tx3);background:var(--gray-bg);
  border:1px dashed var(--dash);border-radius:3px;padding:5px 9px;max-width:540px;
}
.fm-hint{font-size:12px;color:var(--tx3);margin-top:3px}
.fm-err{font-size:12px;color:var(--err);margin-top:3px;display:none}
.fm-err.on{display:block}
.ckg{display:flex;flex-wrap:wrap;gap:6px 16px;padding-top:3px}
.ck{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--tx);cursor:pointer}
.ck input{margin:0}
.fmf{font-size:12px}
@media (max-width:900px){
  .fm-row{flex-direction:column;gap:4px}
  .fm-k{flex:none;text-align:left;padding-top:0}
}

/* ---------- 首页（原型导航） ---------- */
.home{max-width:1080px;margin:0 auto;padding:28px 24px 60px}
.home h1{font-size:22px}
.home .lead{color:var(--tx2);margin:8px 0 22px;font-size:13px}
.hgrid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:900px){.hgrid{grid-template-columns:1fr}}
.hcard{background:#fff;border:1px solid var(--bd);border-radius:6px;padding:14px 16px}
.hcard h3{font-size:15px;margin-bottom:4px}
.hcard .d{font-size:12px;color:var(--tx3);margin-bottom:10px}
.hcard ol{margin:0;padding-left:20px;font-size:13px}
.hcard ol li{margin:4px 0}
.hcard a{font-size:13px}
.badge{font-size:11px;color:var(--tx3);margin-left:4px}
