/* =========================================================================
 * 物资管理平台 · 样式 app.css
 * ========================================================================= */
:root{
  --jade:#2F5D3A; --jade-2:#3C7A4B; --jade-soft:#EAF2EC;
  --ink:#1f2a24; --ink-2:#4a5750; --ink-3:#8a958e;
  --line:#e4e9e5; --bg:#f5f7f5; --card:#fff; --warn:#d97706; --danger:#dc2626; --ok:#16a34a;
  --shadow:0 1px 3px rgba(20,40,30,.08),0 4px 16px rgba(20,40,30,.06);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);background:var(--bg);font-size:14px;line-height:1.55;-webkit-tap-highlight-color:transparent}
button{font-family:inherit}
.mono{font-family:"SFMono-Regular",Consolas,Menlo,monospace}
.muted{color:var(--ink-3)}
/* hidden 属性必须始终生效（覆盖下方 display:flex 等规则，避免覆盖层/登录层拦截交互） */
[hidden]{display:none!important}

/* ---------- 按钮 ---------- */
.btn{border:none;border-radius:8px;padding:9px 16px;font-size:14px;cursor:pointer;background:var(--jade-soft);color:var(--jade);font-weight:600;transition:.15s}
.btn:hover{filter:brightness(.97)}
.btn--primary{background:var(--jade);color:#fff}
.btn--ghost{background:#fff;border:1px solid var(--line);color:var(--ink-2)}
.btn--danger{background:#fff;color:var(--danger);border:1px solid #f3c9c9}
.btn--danger:hover{background:#fff1f1}
.btn--sm{padding:5px 10px;font-size:12.5px;border-radius:6px}
.btn--block{width:100%;padding:12px;font-size:15px;margin-top:6px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ---------- 登录 ---------- */
.login{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2F5D3A,#3C7A4B)}
.login__card{background:#fff;border-radius:18px;padding:34px 30px;width:340px;max-width:90vw;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.login__logo{font-size:46px;text-align:center}
.login__title{text-align:center;margin:6px 0 2px;color:var(--jade)}
.login__org{text-align:center;color:var(--ink-3);margin-bottom:18px;font-size:13px}
.login__form label{display:block;font-size:12.5px;color:var(--ink-2);margin:12px 0 5px}
.login__form input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;font-size:15px;outline:none}
.login__form input:focus{border-color:var(--jade)}
.login__err{color:var(--danger);font-size:12.5px;min-height:16px;margin-top:8px}
.login__hint{margin-top:16px;font-size:11.5px;color:var(--ink-3);line-height:1.6;border-top:1px dashed var(--line);padding-top:12px}

/* ---------- 应用框架 ---------- */
.app{display:flex;height:100vh;overflow:hidden}
.side{width:228px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}
.side__brand{display:flex;align-items:center;gap:10px;padding:16px 16px;border-bottom:1px solid var(--line)}
.side__logo{font-size:26px}
.side__brand-tx b{display:block;font-size:15px;color:var(--jade)}
.side__brand-tx small{color:var(--ink-3);font-size:11px}
.side__nav{flex:1;overflow:auto;padding:8px}
.nav__item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:none;padding:11px 12px;border-radius:9px;color:var(--ink-2);cursor:pointer;font-size:14px;margin-bottom:2px}
.nav__item:hover{background:var(--jade-soft)}
.nav__item.active{background:var(--jade);color:#fff}
.nav__ic{font-size:16px}
.side__foot{padding:12px 14px;border-top:1px solid var(--line)}
.side__user{margin-bottom:8px;font-size:13px}
.side__user b{color:var(--ink)}
.side__user small{display:block;color:var(--ink-3);font-size:11px}

.main{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}
.topbar{height:56px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:12px;flex-shrink:0}
.topbar__menu{display:none;border:none;background:none;font-size:22px;cursor:pointer;color:var(--ink-2)}
.topbar__title{margin:0;font-size:17px;color:var(--jade);flex:1}
.topbar__right{display:flex;align-items:center;gap:10px}
.topbar__user{font-size:13px;color:var(--ink-2)}
.view{flex:1;overflow:auto;padding:18px}
.view > *{max-width:1180px}

/* ---------- 卡片 ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.card{background:var(--card);border-radius:12px;padding:16px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow)}
.card__ic{font-size:26px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:var(--jade-soft);border-radius:11px}
.card__tx b{display:block;font-size:22px;color:var(--ink)}
.card__tx span{font-size:12.5px;color:var(--ink-3)}
.card.danger .card__ic{background:#fdecec;color:var(--danger)}
.card.warn .card__ic{background:#fef3e2;color:var(--warn)}

/* ---------- 面板 ---------- */
.panel{background:var(--card);border-radius:12px;box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}
.panel__hd{font-weight:700;color:var(--ink);padding:13px 16px;border-bottom:1px solid var(--line);font-size:14px}
.panel__bd{padding:14px 16px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ---------- 工具栏 / 标签 ---------- */
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.inp{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:14px;outline:none;background:#fff;font-family:inherit}
.inp:focus{border-color:var(--jade)}
.inp.search{flex:1;max-width:280px}
.tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.tab{border:1px solid var(--line);background:#fff;border-radius:8px;padding:7px 14px;cursor:pointer;font-size:13.5px;color:var(--ink-2)}
.tab.active{background:var(--jade);color:#fff;border-color:var(--jade)}

/* ---------- 表格 ---------- */
.tbl-wrap{background:var(--card);border-radius:12px;box-shadow:var(--shadow);overflow:auto}
.tb{width:100%;border-collapse:collapse;font-size:13.5px}
.tb th{background:#f0f4f1;text-align:left;padding:10px 12px;font-weight:600;color:var(--ink-2);white-space:nowrap;border-bottom:1px solid var(--line)}
.tb td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.tb tbody tr:hover{background:#fafcfb}
.tb tbody tr:last-child td{border-bottom:none}
.row-warn{background:#fff7f3}
.row-warn:hover{background:#fff1e8}
.row-sum td{font-weight:700;background:#f3f8f4;border-top:2px solid #d8e5dc}
.chkgrid{display:flex;flex-wrap:wrap;gap:4px 12px;max-width:340px}
.chk{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--ink-2);white-space:nowrap}
.chk input{margin:0}
.panel--flush .panel__bd{padding:0}
.li{display:flex;gap:8px;align-items:center;padding:9px 10px;border-radius:8px;background:#f7f9f8;margin-bottom:6px;font-size:13.5px}
.li.warn{background:#fef3e2;color:#92400e}
.li small{color:var(--ink-3);margin-left:auto}

/* 进度条 */
.bar{height:8px;background:#e7ede9;border-radius:5px;overflow:hidden;min-width:90px;display:inline-block;width:120px;vertical-align:middle}
.bar i{display:block;height:100%;background:var(--jade)}

/* 徽章 */
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600}
.badge--ok{background:#e7f6ec;color:var(--ok)}
.badge--warn{background:#fef3e2;color:var(--warn)}
.badge--danger{background:#fdecec;color:var(--danger)}
.badge--info{background:#eef2ff;color:#3b5bdb}
/* 重点工作：已办结整行显示绿色 */
.tb tr.row-done{background:#e6f7ee}
.tb tr.row-done td{color:#1f7a3d}
.tb tr.row-done td:first-child{font-weight:700}
/* 重点工作：逾期未办结整行显示红色提示（已办结绿色优先） */
.tb tr.row-overdue{background:#fdecec}
.tb tr.row-overdue td{color:#c92a2a;font-weight:600}
.tb tr.row-overdue td:first-child{font-weight:700}
.tb tr.row-overdue:hover{background:#fbd8d8}

/* 重点工作：整页容器（突破 .view 的 1180px 限制，向右铺满拉宽） */
.wt-page{max-width:none!important}
/* 列表与汇总两栏布局 + 汇总卡片（缩小间距，使汇总更靠右、贴近边框） */
.wt-layout{display:flex;gap:8px;align-items:flex-start}
.wt-left{flex:1 1 auto;min-width:0}
.wt-right{flex:0 0 260px;max-width:260px}
@media(max-width:960px){.wt-layout{flex-wrap:wrap}.wt-right{flex:1 1 100%;max-width:none}}
/* 缩小行距、紧凑单元格，使版面更精致 */
.wt-page .tb th{padding:7px 10px;font-size:13px}
.wt-page .tb td{padding:6px 10px;line-height:1.35}
/* 加宽「主要任务」列与「操作」列 */
.wt-page .tb th:nth-child(4),.wt-page .tb td:nth-child(4){width:15%}
.wt-page .tb th:nth-child(11),.wt-page .tb td:nth-child(11){white-space:nowrap;min-width:240px}
.wt-summary .panel__bd{padding:10px 12px}
.wt-summary .sm-row{display:flex;justify-content:space-between;align-items:baseline;margin-top:8px}
.wt-summary .sm-row__l{font-size:13px;color:#334155}
.wt-summary .sm-row__l b{font-size:16px;color:#0f172a}
.wt-summary .sm-row__r{font-size:13px;font-weight:700;color:#475569}
.wt-summary .bar{height:9px;border-radius:5px;background:#e9eef5;overflow:hidden;margin-top:3px}
.wt-summary .bar .bar--all{background:#3b82f6}
.wt-summary .bar .bar--ok{background:#16a34a}
.wt-summary .bar .bar--warn{background:#f59e0b}
.wt-summary .bar .bar--info{background:#0ea5e9}

/* 表单 */
.form{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.fld{display:flex;flex-direction:column;gap:5px}
.fld label{font-size:12.5px;color:var(--ink-2)}
.fld .inp{width:100%}

/* 登录页「记住密码」 */
.remember-row{display:flex;align-items:center;gap:8px;margin:4px 0 12px;font-size:13px;color:var(--ink-2);cursor:pointer;user-select:none}
.remember-row input{width:16px;height:16px;accent-color:var(--jade);cursor:pointer}
.remember-row:hover{color:var(--jade)}

/* 时间线 */
.timeline{list-style:none;margin:0;padding:0}
.timeline li{position:relative;padding:6px 0 6px 18px;font-size:13px;border-left:2px solid var(--line);margin-left:6px}
.timeline li .dot{position:absolute;left:-6px;top:10px;width:10px;height:10px;border-radius:50%;background:var(--jade)}
.timeline li small{color:var(--ink-3);margin-left:6px}

/* 危险操作 tab（恢复初始状态） */
.tab--danger{color:var(--danger)}
.tab--danger.active{background:#fdecec;color:#b91c1c;border-color:var(--danger)}

/* ---------- 弹层（窗口内自适应：头部/底部常驻，内容区上下左右可滚动） ---------- */
.overlay{position:fixed;inset:0;background:rgba(15,25,20,.45);display:flex;align-items:flex-start;justify-content:center;padding:16px;overflow:hidden;z-index:50}
.modal{background:#fff;border-radius:14px;width:560px;max-width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3);margin:auto;
  display:flex;flex-direction:column;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:hidden}
.modal--wide{width:920px}
.modal--max{width:calc(100vw - 16px)!important;height:calc(100vh - 16px)!important;max-height:none!important;margin:0!important}
.modal__hd{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 18px;border-bottom:1px solid var(--line);cursor:move;user-select:none;background:#fff;position:relative;z-index:2}
.modal__hd b{font-size:16px;color:var(--jade);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.modal__hd-act{flex:0 0 auto;display:flex;align-items:center;gap:2px}
.modal__x{border:none;background:none;font-size:22px;cursor:pointer;color:var(--ink-3);line-height:1;padding:0 6px;border-radius:6px}
.modal__x:hover{background:#f1f5f2;color:var(--jade)}
.modal__x[data-max]{font-size:17px}
.modal__bd{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:16px 18px}
.modal__ft{flex:0 0 auto;display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid var(--line);background:#fff;position:relative;z-index:2}

/* 明细区：固定高度 + 下拉(纵向) + 右拉(横向) 双向滚动，表头随滚动固定 */
.items-wrap{max-height:44vh;overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:10px;padding:4px 8px 8px;background:#fcfdfc}
.c-row,.i-row,.q-row,.a-row{display:grid;gap:6px;align-items:center;margin:6px 0}
/* 需求1/2/4/5：物品编号与物品名称拆成两列 */
.c-row{grid-template-columns:minmax(104px,1fr) minmax(150px,2fr) 84px 56px 72px 76px 72px 94px 30px;min-width:880px}
.i-row{grid-template-columns:minmax(104px,1fr) minmax(140px,1.8fr) minmax(96px,1fr) 72px 56px 76px 84px 30px;min-width:800px}
.q-row{grid-template-columns:minmax(104px,1fr) minmax(140px,1.8fr) 84px 56px 76px minmax(110px,1.2fr) 30px;min-width:800px}
/* 需求6：入库申请明细（编号/名称/规格/单位/数量/单价/合价） */
/* 规格型号列加宽并允许整行换行显示（不再截断），便于核对是否选错 */
.a-row{grid-template-columns:minmax(104px,1fr) minmax(140px,1.8fr) minmax(160px,1.8fr) 56px 76px 76px 94px 30px;min-width:880px}
/* 规格型号：完整显示、自动换行，避免被输入框截断导致选错看不出 */
.a-spec-cell{display:block;min-width:0}
.a-spec-text{display:block;white-space:normal;word-break:break-word;overflow-wrap:anywhere;line-height:1.3;font-size:12px;color:var(--ink-1);padding:3px 2px}
.c-row--head,.i-row--head,.q-row--head,.a-row--head{margin:0 0 2px;position:sticky;top:0;z-index:1;background:#fcfdfc;padding:4px 0 6px;border-bottom:1px dashed var(--line);
  font-size:11.5px;font-weight:600;color:var(--ink-3);letter-spacing:.2px}
.c-row--head,.i-row--head,.q-row--head{margin:0 0 2px;position:sticky;top:0;z-index:1;background:#fcfdfc;padding:4px 0 6px;border-bottom:1px dashed var(--line);
  font-size:11.5px;font-weight:600;color:var(--ink-3);letter-spacing:.2px}
.c-row--head span,.i-row--head span,.q-row--head span,.a-row--head span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-row .inp,.i-row .inp,.a-row .inp{min-width:0}
.c-val{text-align:right;font-variant-numeric:tabular-nums;color:var(--jade);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c-delrow,.i-delrow,.a-delrow{white-space:nowrap;padding-left:0;padding-right:0}
/* 入库申请：编号与名称不对应时报错高亮 */
.a-row.row-err{outline:2px solid #e03131;outline-offset:-2px;background:#fff5f5;border-radius:8px}
/* 细滚动条，便于鼠标拖动 */
.items-wrap::-webkit-scrollbar,.modal__bd::-webkit-scrollbar{width:10px;height:10px}
.items-wrap::-webkit-scrollbar-thumb,.modal__bd::-webkit-scrollbar-thumb{background:#c9d4cd;border-radius:6px}
.items-wrap::-webkit-scrollbar-thumb:hover,.modal__bd::-webkit-scrollbar-thumb:hover{background:#a9b8ae}

/* Toast */
.toast{position:fixed;left:50%;top:20px;transform:translateX(-50%) translateY(-20px);background:rgba(31,42,36,.94);color:#fff;padding:10px 18px;border-radius:10px;font-size:13.5px;opacity:0;transition:.25s;z-index:99;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{background:#b91c1c}

/* 手机端「安装APP」悬浮入口 */
.install-fab{position:fixed;right:14px;bottom:18px;z-index:45;border:none;border-radius:999px;padding:11px 16px;background:var(--jade);color:#fff;font-size:13.5px;font-weight:600;box-shadow:0 8px 22px rgba(47,93,58,.35);cursor:pointer}
.install-fab:hover{filter:brightness(1.06)}
.install-fab:active{transform:translateY(1px)}
@media print{.install-fab{display:none!important}}

/* ---------- 出库单（打印） ---------- */
.sheet{max-width:720px;margin:0 auto;padding:8px 4px;color:#111}
.sheet__hd{display:flex;align-items:flex-end;justify-content:space-between;border-bottom:2px solid #333;padding-bottom:8px}
.sheet__hd h2{margin:0;font-size:20px}
.sheet__title{text-align:center;flex:1;margin:0!important}
.sheet__no{font-size:13px;color:#444}
.sheet__meta{font-size:12.5px;color:#333;margin:8px 0}
.sheet__tb{width:100%;border-collapse:collapse;font-size:13px;margin-top:6px}
.sheet__tb th,.sheet__tb td{border:1px solid #555;padding:6px 7px;text-align:left}
.sheet__tb th{background:#f2f2f2;font-weight:600}
.sheet__tb .muted{color:#888;font-size:11px}
.sheet__ap{margin-top:10px;font-size:12.5px;line-height:1.9;border-top:1px dashed #ccc;padding-top:8px}
.sheet__ap .ap-ln{white-space:pre-wrap}
.sheet__ft{display:flex;justify-content:space-between;gap:10px;margin-top:18px;font-size:12.5px;flex-wrap:wrap}
.sheet__org{text-align:center;margin-top:14px;font-size:12px;color:#555}
.sheet__pg{text-align:center;margin-top:8px;font-size:12px;color:#333}
.sheet__sig{width:100%;border-collapse:collapse;margin-top:14px;font-size:12.5px}
.sheet__sig td{border:1px solid #555;padding:12px 8px;text-align:center;width:33.33%;line-height:2}
.sig-cell{min-height:34px}

/* ---------- 验收表 / 结算单（结算办理，版式参照单位样表） ---------- */
.acc__org{text-align:center;font-size:12.5px;color:#333;margin-bottom:2px}
.acc__sub{text-align:center;font-weight:700;font-size:14px;margin:12px 0 4px}
.acc__sup{text-align:right;font-size:12px;color:#333;margin-bottom:4px}
.acc__tb{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:4px}
.acc__tb th,.acc__tb td{border:1px solid #555;padding:6px 7px;text-align:left;line-height:1.7}
.acc__tb th{background:#f2f2f2;font-weight:600;text-align:center}
.acc__tb .acc__k{background:#f7f7f7;font-weight:600;text-align:center;white-space:nowrap;width:110px}
.acc__tb .acc__date{text-align:center;white-space:nowrap;width:130px}
.acc__tb--op td{height:56px;vertical-align:top}
.acc__tb--sig td{height:44px}
/* 需求5：签字栏合并为单列（无姓名/下划线），增高便于手写 */
.acc__tb--sig .acc__k{white-space:normal;width:160px;vertical-align:middle}
.acc__tb--sig .acc__sig{height:64px;border:1px solid #555}

/* ---------- 响应式（移动端 APP） ---------- */
@media screen and (max-width:900px){
  .side{position:fixed;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);transition:.2s;box-shadow:4px 0 20px rgba(0,0,0,.15)}
  .side.open{transform:translateX(0)}
  .topbar__menu{display:block}
  .grid2{grid-template-columns:1fr}
  .form{grid-template-columns:1fr}
  .view{padding:14px}
}
@media screen and (max-width:560px){
  .cards{grid-template-columns:1fr 1fr}
  .card__tx b{font-size:18px}
  .tb{font-size:12.5px}
  .overlay{padding:8px}
  .modal{width:100%;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px)}
  .modal__bd{padding:12px}
  .items-wrap{max-height:40vh}
  .modal__ft{padding:10px 12px}
}
@media print{
  body{background:#fff}
  .side,.topbar,.overlay{display:none!important}
  @page{size:A4;margin:12mm}
  .sheet{max-width:none;width:100%;box-shadow:none}
  .sheet__cut{page-break-after:always}
  .sheet__ft,.sheet__hd,.sheet__org,.sheet__pg,.sheet__sig{break-inside:avoid}
  .sheet__tb thead{display:table-header-group}
  .acc__tb{break-inside:auto}
  .acc__tb tr{break-inside:avoid}
}
/* 屏幕预览批量打印时，分页线可视化但打印时不占空间 */
.sheet__cut{height:0;border-top:2px dashed #ccc;margin:14px 0}
.sheet--page{margin-bottom:18px}
