/* =============================================================================
   系统页面补充样式（在设计稿 app.css 之上做增量，不覆盖其设计系统）
   ========================================================================== */

/* 两列栅格 */
.sys-cols{display:grid;grid-template-columns:var(--cols,1fr 1fr);gap:12px;align-items:start}
@media (max-width:1180px){.sys-cols{grid-template-columns:1fr}}

/* 顶部栏在窄屏折叠 */
@media (max-width:1100px){.topbar .chips,.topbar .env-tag{display:none}}
@media (max-width:760px){.topbar .crumb,.topbar .tb{display:none}.topbar{padding-left:60px}
  /* 「问题反馈」在手机上也要留着：测试期最多的反馈就是从手机端来的（见下方 .tb-feedback 定义） */
  .topbar .tb-feedback{display:inline-flex;margin-left:auto}}

/* 筛选条 */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r2);padding:10px 12px;margin:0 0 12px;box-shadow:var(--sh)}
.filters input[type=text],.filters input[type=number],.filters input[type=date],.filters select{
  height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--r);background:#fff;color:var(--txt);
  font-family:inherit;font-size:13px;width:auto;min-width:130px}
/* app.css 全局把 input/select 设为 width:100%，在 flex 容器里需要收回。
   日期输入必须一起收回：漏掉它会因为 width:100% 独占一整行（用户 2026-09-24 反馈
   「搜索卡片里日期单独占一行」，决策表与批次列表两处都是这个原因） */
.filters input[type=date]{min-width:152px}
.filters label{white-space:nowrap;color:var(--muted)}
/* app.css 全局把 input/select 设为 width:100%，在 flex 容器里需要收回 */
.filters input[type=text]{flex:1 1 200px;max-width:340px}
#manualForm select,#manualForm input[type=text]{width:auto}
.filters input:focus,.filters select:focus{outline:2px solid var(--primary-b);outline-offset:-1px;border-color:var(--primary)}
.filters .btn{height:32px;display:inline-flex;align-items:center}

/* 输入框（校正工作台） */
.qty-in{height:30px;border:1px solid var(--line);border-radius:var(--r);font-family:inherit;font-size:13px}
.qty-in:focus{outline:2px solid var(--primary-b);outline-offset:-1px;border-color:var(--primary)}

/* 表格里的紧凑按钮 */
table .btn{padding:1px 8px;height:24px;font-size:12px;line-height:22px}

/* 设计稿 table.dt 已对 th/td 设 nowrap（防中文竖排）；这里只给「长文本列」放宽并限宽，
   避免一张表因为说明列太长而被撑到需要大量横向滚动 */
.tw table.dt td.txt,.tw table.dt th.txt{min-width:150px;max-width:420px}
/* 长文本列里的无空格长串（JSON、URL、哈希）在任意位置断行，否则会溢出到相邻列 */
.tw table.dt td.txt{overflow-wrap:anywhere}
/* 表头不参与换行（即使是长文本列），保持表头一行可读 */
.tw table.dt th.txt{white-space:nowrap;max-width:none}

/* 表格行悬停 */
table tbody tr:hover{background:var(--primary-l)}

/* 台账行选中（/data 数据源接入台账）：点一行整行高亮，配完连接回来一眼认出改的是哪条 */
#dsLedger tbody tr{cursor:pointer}
table.dt tbody tr.sel td{background:var(--primary-l)}
table.dt tbody tr.sel:hover td{background:var(--primary-l)}
/* 左侧竖条只画在首列，否则每个单元格都会出现一条竖线 */
table.dt tbody tr.sel td:first-child{box-shadow:inset 2px 0 0 var(--primary);font-weight:650}

/* 打印视图 */
.print-body{background:#eef1f6;padding:24px}
.print-sheet{background:#fff;max-width:820px;margin:0 auto;padding:28px 32px;border-radius:10px;box-shadow:var(--sh2)}
.print-sheet h1{font-size:20px;margin-bottom:14px}
.print-meta{display:flex;flex-wrap:wrap;gap:6px 20px;font-size:12.5px;color:var(--txt2);margin-bottom:16px;
  padding-bottom:12px;border-bottom:1px solid var(--line)}
.print-sheet table{width:100%;border-collapse:collapse;font-size:13px}
.print-sheet th,.print-sheet td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.print-sheet th{background:var(--line2)}
.print-sign{display:flex;gap:28px;margin-top:26px;font-size:12.5px;color:var(--txt2)}
.print-actions{margin-top:22px;display:flex;gap:10px}
.print-actions button,.print-actions a{height:32px;padding:0 16px;border:1px solid var(--line);border-radius:var(--r);
  background:#fff;font-family:inherit;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;color:var(--txt)}
.print-actions button{background:var(--primary);color:#fff;border-color:var(--primary)}

/* 移动端底部导航（设计稿未覆盖：真实系统的门店端入口） */
.sys-mobile-bar{display:none}

/* ---------------- 通用表单弹窗（所有编辑操作复用） ---------------- */
.sys-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.sys-modal{background:#fff;border-radius:var(--r2);box-shadow:var(--sh2);width:min(580px,100%);max-height:88vh;display:flex;flex-direction:column}
/* wide：取数 SQL 这类要多写几行的弹窗用宽版 */
.sys-modal.wide{width:min(880px,100%)}
.sys-modal.wide .sys-f textarea{min-height:132px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6}
.sys-modal>h3{margin:0;font-size:15px;font-weight:650;padding:13px 16px;border-bottom:1px solid var(--line2)}
.sys-modal-b{padding:15px 16px;overflow:auto}
.sys-modal-f{padding:11px 16px;border-top:1px solid var(--line2);display:flex;gap:8px;align-items:center}
.sys-f{display:grid;grid-template-columns:104px 1fr;gap:10px 12px;align-items:center}
.sys-f>label{font-size:12.5px;color:var(--txt2);text-align:right}
.sys-f input,.sys-f select,.sys-f textarea{width:100%;font-family:inherit;font-size:13px}
.sys-f textarea{min-height:70px;padding:7px 9px;border:1px solid var(--line);border-radius:var(--r)}
.sys-f .full{grid-column:1/-1}
.sys-f .hint{grid-column:1/-1;font-size:11.5px;color:var(--muted);margin:-5px 0 3px 116px}
.sys-modal-msg{font-size:12px;margin-right:auto}
.sys-modal-msg.ok{color:var(--ok)}
.sys-modal-msg.err{color:var(--danger)}
/* 行内可编辑单元格 */
.inline-edit{display:flex;align-items:center;gap:6px}
.inline-edit .val{font-weight:600;min-width:44px}
/* 表格里的操作按钮组 */
.act-group{display:flex;gap:4px;flex-wrap:nowrap}
@media (max-width:760px){
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:238px;transform:translateX(-100%);transition:transform .2s;z-index:60}
  html.nav-open .sidebar{transform:none}
  .sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:55}
  html.nav-open .sidebar-backdrop{display:block}
  .sys-mobile-bar{display:flex;position:fixed;left:0;right:0;bottom:0;height:52px;background:#fff;
    border-top:1px solid var(--line);z-index:50;box-shadow:0 -2px 10px rgba(16,24,40,.06)}
  .sys-mobile-bar a{flex:1;display:flex;align-items:center;justify-content:center;font-size:12.5px;color:var(--muted);font-weight:600}
  .sys-mobile-bar a.on{color:var(--primary)}
  .content{padding-bottom:64px}
  .kpis.c6,.kpis.c5,.kpis.c4{grid-template-columns:repeat(3,1fr)}
  .page-head{flex-direction:column;align-items:flex-start;gap:10px}
}

/* 顶部移动端菜单按钮 */
.sys-menu-btn{display:none}
@media (max-width:760px){
  .sys-menu-btn{display:inline-flex;position:fixed;left:12px;top:12px;z-index:70;width:38px;height:38px;
    border-radius:10px;border:1px solid var(--line);background:#fff;align-items:center;justify-content:center;
    font-size:17px;box-shadow:var(--sh);cursor:pointer}
}

/* ---------------- 候选池选择（手动发起决策） ---------------- */
.pick-tools{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:0 0 10px;border-bottom:1px solid var(--line2);margin-bottom:10px}
.pick-tools .sep{width:1px;height:16px;background:var(--line);margin:0 4px}
.pick-chip{height:26px;padding:0 10px;border:1px solid var(--line);border-radius:13px;background:#fff;
  font-family:inherit;font-size:12px;color:var(--txt2);cursor:pointer;transition:.12s}
.pick-chip:hover{background:var(--primary-l);border-color:var(--primary-b);color:var(--primary-d)}
.pick-chip.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.pick-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2px 10px;max-height:250px;overflow:auto;padding:2px}
.pick-item{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:4px 6px;border-radius:6px;cursor:pointer}
.pick-item:hover{background:var(--primary-l)}
.pick-item input{width:auto;height:auto;flex:none}
.pick-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pick-item .lv{font-style:normal;color:var(--muted);font-size:11px;flex:none}
.pick-bar{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r2);padding:12px 14px;margin:12px 0;box-shadow:var(--sh);position:sticky;bottom:8px;z-index:10}
@media (max-width:760px){.pick-list{grid-template-columns:1fr;max-height:200px}.pick-bar{flex-wrap:wrap}}
/* ---------------- 登录页 ---------------- */
.login-body{background:linear-gradient(160deg,#0f172a 0%,#1e293b 55%,#0f172a 100%);min-height:100vh;
  display:flex;align-items:center;justify-content:center;padding:24px}
.login-wrap{width:100%;max-width:420px}
.login-card{background:#fff;border-radius:14px;padding:26px 26px 20px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-brand{display:flex;gap:11px;align-items:center;margin-bottom:18px}
.login-brand .mark{width:42px;height:42px;border-radius:11px;background:var(--primary);color:#fff;display:flex;
  align-items:center;justify-content:center;font-size:19px;font-weight:700}
.login-brand .txt{font-size:16px;font-weight:700;line-height:1.25}
.login-brand .txt small{display:block;font-size:10px;color:var(--muted);font-weight:500;letter-spacing:.06em}
.login-f{display:block;margin-bottom:13px}
.login-f>span{display:block;font-size:12.5px;color:var(--txt2);margin-bottom:5px}
.login-f input{width:100%;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:var(--r);
  font-family:inherit;font-size:13.5px}
.login-f input:focus{outline:2px solid var(--primary-b);outline-offset:-1px;border-color:var(--primary)}
.login-btn{width:100%;height:40px;margin-top:4px;font-size:14px}
.login-foot{margin-top:16px;padding-top:13px;border-top:1px solid var(--line2);font-size:11.5px;color:var(--muted);line-height:1.7}
.login-users{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}
.login-u{background:var(--line2);border-radius:12px;padding:3px 10px;cursor:pointer;font-size:11.5px;color:var(--txt2)}
.login-u:hover{background:var(--primary-l);color:var(--primary-d)}

/* ---------------- 问题反馈（顶栏入口 + 弹窗） ---------------- */
.tb-feedback{background:var(--primary-l);color:var(--primary-d);border-color:var(--primary-b);font-weight:600}
.tb-feedback:hover{background:var(--primary);color:#fff}
.sys-modal.fb{width:min(760px,100%)}
/* 问题描述框 = 富文本编辑器：粘贴的截图**直接显示在描述正文里** */
.fb-desc{border:1px solid var(--line);border-radius:var(--r);background:#fff;overflow:hidden;transition:.15s}
.fb-desc:hover{border-color:var(--line2)}
.fb-desc:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-l)}
.fb-desc.on{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-l);background:#fbfdff}
.fb-editor{min-height:112px;max-height:46vh;overflow:auto;padding:10px 11px;font-size:13px;line-height:1.8;
  outline:none;word-break:break-word;white-space:pre-wrap}
.fb-editor:empty:before{content:attr(data-ph);color:var(--muted);white-space:pre-wrap;pointer-events:none}
.fb-editor .fb-img{position:relative;display:inline-block;margin:4px 2px;vertical-align:top;line-height:0}
.fb-editor .fb-img img{display:block;max-width:100%;max-height:260px;border:1px solid var(--line2);
  border-radius:var(--r);cursor:zoom-in}
.fb-editor .fb-img .rm{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;
  background:var(--danger);color:#fff;font-size:12px;line-height:18px;text-align:center;cursor:pointer;
  box-shadow:0 1px 3px rgba(15,23,42,.3);user-select:none}
.fb-editor .fb-img .rm:hover{background:#b91c1c}
.fb-desc .fb-files:not(:empty){display:flex;flex-wrap:wrap;gap:8px;padding:2px 10px 8px}
.fb-desc-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;
  border-top:1px dashed var(--line2);background:#fafbfd}
.fb-desc-foot .btn{padding:3px 10px;height:26px;font-size:12px}
.fb-desc-foot #fbMeta{margin-left:auto}
.fb-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;
  padding:3px 10px 3px 5px;font-size:12px;background:#fff;max-width:100%}
.fb-chip .nm{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fb-chip .x{cursor:pointer;color:var(--danger);font-weight:700;padding:0 3px;line-height:1}
.fb-chip .x:hover{background:var(--danger);color:#fff;border-radius:50%}
.fb-meta{font-size:11.5px;color:var(--muted);margin-top:7px}
.fb-view img{display:block;max-width:100%;max-height:340px;border:1px solid var(--line);border-radius:var(--r);margin:2px 0 4px}
/* 详情里"贴回正文原位"的截图 */
.fb-inline{display:block;max-width:100%;max-height:300px;margin:6px 0;border:1px solid var(--line2);
  border-radius:var(--r);cursor:zoom-in}
