
:root{
  --bg:#F5F7FB;
  --bg-soft:#EEF2F7;
  --card:#FFFFFF;
  --line:#E5E9F0;
  --line-soft:#EEF1F6;
  --text:#0B1220;
  --text-soft:#475569;
  --text-mute:#94A3B8;
  --brand:#0B6FFF;
  --brand-2:#0A5FE0;
  --brand-soft:#E6F0FF;
  --ink:#0B1220;
  --instock:#0E7C3A;
  --instock-soft:#D6FBE3;
  --instock-border:#86EFAC;
  --borrowed:#C41818;
  --borrowed-soft:#FFE0E0;
  --borrowed-border:#FCA5A5;
  --outstock:#64748B;
  --outstock-soft:#F1F5F9;
  --warn:#D97706;
  --warn-soft:#FEF3C7;
  --violet:#7C3AED;
  --violet-soft:#EDE9FE;
  --cyan:#0891B2;
  --cyan-soft:#CFFAFE;
  --pink:#DB2777;
  --pink-soft:#FCE7F3;
  --r-sm:10px;
  --r:14px;
  --r-lg:20px;
  --r-xl:28px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
/* overflow-x 必须放在 html 上：放在 body 上会让 body 变成滚动容器，
   position:sticky 的页头（返回/标题/刷新）会随内容滚走、时好时坏 */
html{overflow-x:hidden}

/* ============ v2.2 底部导航栏（飞机/审批/我的） ============ */
.tabbar{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);
  width:100%;max-width:920px;z-index:200;
  background:var(--card);border-top:1px solid var(--line);
  display:flex;padding:6px 0 calc(10px + env(safe-area-inset-bottom, 0px));
  box-shadow:0 -4px 16px rgba(11,18,32,.05);
}
.tb{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  font-size:10px;color:var(--text-mute);font-weight:600;position:relative;
  padding:2px 0;letter-spacing:.3px;
}
.tb svg{display:block}
.tb.on{color:var(--brand)}
.tb .tb-badge{
  position:absolute;top:-3px;left:calc(50% + 9px);
  background:var(--borrowed);color:#fff;font-size:9.5px;font-weight:700;
  min-width:16px;height:16px;border-radius:999px;
  display:flex;align-items:center;justify-content:center;padding:0 4px;
}
/* T-102：角标数回到 0 时要真的藏起来。这段样式原来漏了，
   导致 _refreshBadges() 加了 gone 类也没有任何效果，红点会一直挂着旧数字。 */
.tb .tb-badge.gone{display:none}
/* 功能组：顶栏切换器 */
.gs-top{display:flex;align-items:center;gap:8px;margin-bottom:12px}
/* v1.9.13：组选择器挪到搜索框下面，尺寸不变、靠左对齐（原来是 flex:1 居中） */
.gsw-wrap{position:relative;display:flex;justify-content:flex-start;margin:10px 0 12px}
.gsw-btn{display:inline-flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:7px 18px;font-size:14px;font-weight:800;color:var(--text);
  white-space:nowrap;max-width:44vw;overflow:hidden;cursor:pointer}
.gsw-chev{transition:transform .18s;flex:none;color:var(--text-mute)}
.gsw-btn.open .gsw-chev{transform:rotate(180deg)}
.gsw-menu{display:none;position:absolute;top:44px;left:0;width:250px;background:var(--card);
  border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 40px rgba(11,18,32,.18);z-index:80;overflow:hidden;text-align:left}
.gsw-menu.open{display:block}
.gsw-t{font-size:10.5px;color:var(--text-mute);padding:9px 14px 4px;font-weight:600}
.gsw-it{display:flex;align-items:center;gap:8px;width:100%;padding:11px 14px;font-size:13.5px;font-weight:600;border-top:1px solid var(--line-soft);text-align:left;color:var(--text);cursor:pointer}
.gsw-it.on{color:var(--brand);background:var(--brand-soft)}
.gsw-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gsw-n{margin-left:auto;font-size:10.5px;color:var(--text-mute);font-weight:400;flex:none}
.gsw-chk{display:none;flex:none;color:var(--brand);font-weight:800}
.gsw-it.on .gsw-chk{display:inline}
.grp-chips{display:flex;flex-wrap:wrap;gap:8px}
.grp-chips .chip{padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:var(--card);font-size:13px;font-weight:600;color:var(--text-soft)}
.grp-chips .chip.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.reg-grp-loading{font-size:12.5px;color:var(--text-mute);line-height:2}

/* 首页搜索入口：和欢迎卡拉开距离，图标染蓝，一眼看出"这是搜索" */
.gsearch-box{
  display:flex;align-items:center;gap:9px;width:100%;
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:12px 14px;font-size:14px;font-weight:500;color:var(--text-mute);
  box-shadow:0 2px 6px rgba(11,18,32,.02);text-align:left;
  margin:14px 0 16px;
}
.gsearch-box svg{color:var(--brand);flex:none}
.gsearch-box:active{border-color:var(--brand)}
/* 我的页 */
.mgroup{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.mrow{
  display:flex;align-items:center;gap:12px;width:100%;
  padding:13px 14px;border-bottom:1px solid var(--line-soft);
  text-align:left;font-size:14px;font-weight:600;color:var(--text);
}
.mrow:last-child{border-bottom:none}
.mrow:active{background:var(--bg-soft)}
.mic{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:none}
.mrow-main{flex:1;min-width:0;display:flex;flex-direction:column}
.mrow-d{font-size:11px;color:var(--text-mute);font-weight:400;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mrow-ar{color:var(--text-mute);font-size:18px;flex:none}
.me-hero{display:flex;align-items:center;gap:13px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 15px}
.me-av{width:52px;height:52px;border-radius:15px;background:linear-gradient(135deg,#7FA9FF,#4C82F7);color:#fff;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;flex:none}
.me-name{font-size:17px;font-weight:800}
.me-sub{font-size:12px;color:var(--text-mute);margin-top:2px}
/* 第 2B 批：「我的」四组六项 + 我的设置 / 数据管理两个导航页 */
.me-grp{margin-top:11px}
.me-grp-t{font-size:12px;color:var(--text-mute);line-height:1.2;padding:0 2px;margin-bottom:6px}
.me-card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.me-row{
  display:flex;align-items:center;gap:11px;width:100%;min-height:46px;
  padding:0 13px;background:none;border:none;border-bottom:1px solid var(--line-soft);
  text-align:left;font:inherit;color:var(--text);
}
.me-row:last-child{border-bottom:none}
.me-row:active{background:var(--bg-soft)}
.me-row.has-d{min-height:58px}
.me-row-m{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.me-row-t{font-size:14px;font-weight:600;color:var(--text)}
.me-row-d{font-size:11px;color:var(--text-mute);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-row-ar{color:var(--text-mute);font-size:18px;line-height:1;flex:none}
/* 值在左、箭头在右，两个都要有（CHK-01）：值后留 4px，别跟箭头贴在一起 */
.me-row-v{font-size:12px;color:var(--text-mute);flex:none;margin-right:4px;max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-row .mic{color:var(--text-soft)}
.me-badge{
  background:var(--borrowed);color:#fff;font-size:11px;font-weight:700;line-height:1;
  padding:4px 6px;border-radius:8px;min-width:20px;text-align:center;flex:none;
}
.me-exit{
  width:44px;height:44px;border-radius:12px;border:1px solid #FCA5A5;background:#FEF2F2;
  display:flex;align-items:center;justify-content:center;color:#DC2626;flex:none;margin-left:auto;
}
.me-exit:active{background:#FDE2E2}
.me-av{border-radius:50%}
/* 页头专用胶囊按钮：必须与 .icon-btn/.back-btn 同高同圆角（38 / 12），不许用列表行的 .au-btn */
.head-pill{
  height:38px;padding:0 13px;border-radius:12px;background:var(--card);border:1px solid var(--line);
  display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--brand);
  font-family:inherit;flex:none;white-space:nowrap;-webkit-tap-highlight-color:transparent;
}
.head-pill svg{display:block;flex:none}
.head-pill:active{background:var(--bg-soft)}
.gs-ach{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.gs-tool{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line-soft)}
.gs-tool:last-child{border-bottom:none;padding-bottom:2px}
.gs-thumb{width:40px;height:40px;border-radius:9px;background:var(--bg-soft);display:flex;align-items:center;justify-content:center;color:var(--text-mute);flex:none}
.gs-call{
  display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;
  color:var(--instock);background:var(--instock-soft);
  padding:6px 11px;border-radius:999px;text-decoration:none;flex:none;
}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue","Segoe UI",Inter,Roboto,sans-serif;
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  font-size:16px;line-height:1.5;
  background:#F5F7FB;
  position:relative;
  padding-bottom:env(safe-area-inset-bottom, 0px);
}
body::after{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,#F5F7FB 0%,#EEF2F7 100%);
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;color:inherit}
input,textarea,select{-webkit-appearance:none;appearance:none}

/* ============ Header ============ */
/* 顶栏（logo+系统名+版本）已取消：占空间且无功能。
   页面顶部空间改由 renderHeader() 的安全区空隙 + .page-head 的安全区 padding 负责。 */
/* 统一图标按钮：所有手机看起来一致（配合 app.js 里的 APP_ICONS 内联 SVG） */
.icon-btn{
  width:38px;height:38px;border-radius:12px;background:var(--card);
  border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;
  color:var(--text-soft);flex-shrink:0;-webkit-tap-highlight-color:transparent;
  transition:background .12s,border-color .12s;
}
.icon-btn svg{display:block}
.icon-btn:active{background:var(--bg-soft);border-color:var(--line)}
.date-bar .left{display:flex;flex-direction:column;gap:1px}
.date-bar .date{font-size:14px;font-weight:600;color:var(--text)}
.date-bar .week{font-size:11px;color:var(--text-mute)}

/* ============ Home ============ */
.page-wrap{padding:14px 14px 90px;max-width:920px;margin:0 auto}
/* 飞机内首页没有顶部品牌栏，安全区由吸顶头自己负责 */
.page-wrap.bare{padding-top:14px}
/* 飞机内吸顶头：返回 + 飞机号/备注/身份 + 刷新/设置，固定不动；
   自带安全区 padding 并延伸到屏幕最顶，把"缝"盖严实 */
.ac-head{
  display:flex;align-items:center;gap:10px;
  margin:-14px -14px 12px;
  padding:calc(8px + env(safe-area-inset-top, 0px)) 14px 8px;
  position:-webkit-sticky;position:sticky;top:0;z-index:60;background:var(--bg);
}
.ac-head-main{flex:1;min-width:0}
.ac-head-code{font-size:18px;font-weight:800;letter-spacing:.3px;line-height:1.2}
.ac-head-sub{font-size:11px;color:var(--text-mute);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 全局安全区遮罩：状态栏那条"缝"永远是不透明底色，
   任何页面往上滑，内容都不会从缝里蹦出来 */
body::before{
  content:'';position:fixed;top:0;left:0;right:0;
  height:env(safe-area-inset-top, 0px);
  background:var(--bg);z-index:150;pointer-events:none;
}
.ac-tools-sp{flex:1}
.home-meta{font-size:12.5px;color:var(--text-mute);margin:-6px 0 2px;line-height:1.5;letter-spacing:.2px}
.home-title-big{
  font-size:22px;font-weight:800;color:var(--text);
  letter-spacing:.3px;line-height:1.3;
  margin:4px 0 12px;padding:0;
  word-break:break-word;
}
@media (min-width:720px){.home-title-big{font-size:26px}}
.home-stats{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;
  font-size:14px;color:var(--text-soft);
  background:var(--card);border:1px solid var(--line);
  padding:14px 18px;border-radius:var(--r);
  margin:6px 0 14px;font-weight:500;
  box-shadow:0 2px 6px rgba(11,18,32,.02);
}
.home-stats b{font-weight:800;color:var(--text);font-size:16px;margin:0 2px}
.home-stats .s-in b{color:var(--instock)}
.home-stats .s-br b{color:var(--borrowed)}
.home-stats .dot{opacity:.4;margin:0 2px}
.grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:12px;
}
@media (min-width:720px){.grid{grid-template-columns:repeat(3,1fr)}}
.big-btn{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:22px 16px 18px;display:flex;flex-direction:column;align-items:flex-start;gap:12px;
  text-align:left;position:relative;overflow:hidden;
  transition:transform .12s,box-shadow .12s;
  min-height:128px;
}
.big-btn:active{transform:scale(.985);box-shadow:0 6px 18px rgba(11,18,32,.06)}
.big-btn .icon{
  width:44px;height:44px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;font-size:22px;
  background:var(--accent-bg);color:var(--accent);
}
.big-btn .label{font-size:20px;font-weight:700;color:var(--text);line-height:1.1}
.big-btn .desc{font-size:12px;color:var(--text-mute);margin-top:-2px;line-height:1.4}
/* 首页审批角标：原来用 "审批 (2)" 拼在标题里，改成正经红色角标 */
.big-badge{
  position:absolute;top:10px;right:10px;min-width:20px;height:20px;padding:0 6px;
  border-radius:10px;background:var(--borrowed);color:#fff;
  font-size:11.5px;font-weight:700;line-height:20px;text-align:center;
  box-shadow:0 2px 6px rgba(196,24,24,.28);
}
/* 密码规则提示：默认灰、不满足变红、满足变绿 */
.pwd-tip{margin-top:6px;font-size:11.5px;line-height:1.5;color:var(--text-soft)}
.pwd-tip.bad{color:var(--borrowed);font-weight:600}
.pwd-tip.ok{color:var(--instock);font-weight:600}
.big-btn.b-instock{--accent:var(--instock);--accent-bg:var(--instock-soft)}
.big-btn.b-borrow{--accent:var(--brand);--accent-bg:var(--brand-soft)}
.big-btn.b-return{--accent:var(--violet);--accent-bg:var(--violet-soft)}
.big-btn.b-check{--accent:var(--cyan);--accent-bg:var(--cyan-soft)}
.big-btn.b-outstock{--accent:var(--outstock);--accent-bg:var(--outstock-soft)}
.big-btn.b-history{--accent:var(--pink);--accent-bg:var(--pink-soft)}
.big-btn.b-search{--accent:var(--warn);--accent-bg:var(--warn-soft)}
.big-btn.b-data{--accent:var(--cyan);--accent-bg:var(--cyan-soft)}

/* ============ Page header ============ */
.page{padding:14px;max-width:920px;margin:0 auto}
.page-head{
  display:flex;align-items:center;gap:10px;margin:0 -14px 14px;
  position:-webkit-sticky;position:sticky;top:0;z-index:50;background:var(--bg);
  padding:calc(8px + env(safe-area-inset-top, 0px)) 14px 8px;
  }
.back-btn{
  width:38px;height:38px;border-radius:12px;background:var(--card);
  border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;
  font-size:18px;color:var(--text-soft);font-weight:500;flex-shrink:0;
}
.back-btn:active{background:var(--bg-soft)}
.page-head h2{font-size:22px;font-weight:700;letter-spacing:.2px}
.page-head .sub{font-size:12px;color:var(--text-mute);font-weight:400;margin-top:1px}

/* ============ Card & Form ============ */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;margin-bottom:12px;
}
.card .card-title{
  font-size:12px;font-weight:600;color:var(--text-mute);
  letter-spacing:.6px;text-transform:uppercase;margin-bottom:10px;
}
.form-group{margin-bottom:14px}
.form-group:last-child{margin-bottom:0}
.form-label{
  display:block;font-size:13px;font-weight:600;margin-bottom:6px;
  color:var(--text-soft);letter-spacing:.1px;
}
.form-label .req{color:var(--borrowed);margin-left:2px}
.form-label .opt{color:var(--text-mute);font-weight:400;margin-left:4px;font-size:12px}
/* 已选清单/确认前核对提示色（红色醒目） */
.form-label-check{color:#DC2626 !important;font-weight:700;font-size:14px !important;display:flex;align-items:center;gap:4px}
.form-input,.form-select,.form-textarea{
  width:100%;padding:12px 14px;
  font-size:16px;color:var(--text);
  border:1px solid var(--line);border-radius:11px;
  background:#FAFBFD;transition:border-color .15s,box-shadow .15s,background .15s;
  outline:none;
}
.form-input::placeholder,.form-textarea::placeholder{color:#B6BFCD}
.form-input:focus,.form-select:focus,.form-textarea:focus{
  border-color:var(--brand);background:#fff;
  box-shadow:0 0 0 4px rgba(11,111,255,.10);
}
.form-textarea{resize:vertical;min-height:78px;line-height:1.5}
.form-row{display:flex;gap:10px}
.form-row>*{flex:1;min-width:0}
.form-select{
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;background-size:14px;
  padding-right:38px;
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  font-weight:600;border-radius:11px;transition:transform .12s,background .12s,border-color .12s;
  border:1px solid transparent;
}
.btn:active{transform:scale(.985)}
.btn:disabled{opacity:.55;pointer-events:none}
.btn-primary{
  width:100%;padding:14px 18px;font-size:16px;color:#fff;
  background:linear-gradient(135deg,#0B6FFF 0%,#0A5FE0 100%);
  box-shadow:0 6px 18px rgba(11,111,255,.22);
}
.btn-secondary{
  background:var(--card);color:var(--text-soft);
  border:1px solid var(--line);
  padding:10px 14px;font-size:14px;
}
.btn-secondary:active{background:var(--bg-soft)}
.btn-danger{background:var(--borrowed-soft);color:var(--borrowed);border:1px solid #FECACA;padding:10px 14px;font-size:14px}
.btn-toolbar{padding:7px 12px;font-size:13px;border-radius:9px}
.btn-sm{padding:7px 11px;font-size:12.5px;border-radius:8px}

/* ============ Photo ============ */
.photo-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:8px;
}
.photo-thumb{
  position:relative;aspect-ratio:1;border-radius:11px;overflow:hidden;
  background:var(--bg-soft);border:1px solid var(--line);cursor:zoom-in;
}
.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.photo-thumb .del{
  position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;
  background:rgba(15,23,42,.7);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;
  cursor:pointer;border:none;
}
.photo-add{
  aspect-ratio:1;border-radius:11px;
  border:1.5px dashed #BBD3F5;background:var(--brand-soft);color:var(--brand);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:12px;font-weight:600;
}
.photo-add:active{background:#DBEAFE}
.photo-add .pi{font-size:22px;line-height:1}
.photo-hint{font-size:12px;color:var(--text-mute);margin-top:8px;display:flex;align-items:center;gap:4px}

/* ============ Tags ============ */
.tag{
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:6px;
  font-size:11.5px;font-weight:600;letter-spacing:.1px;
}
.tag::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
.tag-instock{background:var(--instock-soft);color:var(--instock)}
.tag-borrowed{background:var(--borrowed-soft);color:var(--borrowed)}
.tag-missing{background:var(--borrowed-soft);color:var(--borrowed);border:1px solid #FCA5A5}

/* v2.2: 借出清点逐件「未确认天数」徽标（仅超 3 天才标红） */
.days-badge{
  flex-shrink:0;font-size:11px;font-weight:600;line-height:1;
  padding:3px 8px;border-radius:999px;
  background:var(--bg-soft);color:var(--text-mute);border:1px solid var(--line);
  margin-left:2px;white-space:nowrap;
}
.days-badge.days-over{
  background:var(--borrowed-soft);color:var(--borrowed);border-color:#FCA5A5;
}

/* ============ Tool group (check page) ============ */
.check-toolbar{
  display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:12px;
  background:var(--card);border:1px solid var(--line);border-radius:13px;padding:7px;
  position:sticky;top:56px;z-index:10;
}
.check-toolbar .btn{background:transparent;border:1px solid transparent;color:var(--text-soft);
  padding:7px 2px;font-size:12px;white-space:nowrap;min-width:0}
.check-toolbar .btn:hover{background:var(--bg-soft)}
.check-toolbar .btn.primary,.check-toolbar .btn.on{background:var(--brand-soft);color:var(--brand);border-color:#C7DCFB}

.group{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  margin-bottom:10px;overflow:hidden;
  transition:border-color .12s,box-shadow .12s;
}
/* v2.1.0: 全选 / 已有勾选 状态边框加粗加深蓝，与全 App 选中色统一（蓝=选中，绿留给在库状态） */
.group.has-checked{border-color:var(--brand);box-shadow:0 0 0 2px rgba(11,111,255,.30),0 4px 14px rgba(11,111,255,.12)}
.group-header{
  padding:13px 16px;display:flex;justify-content:space-between;align-items:center;
  cursor:pointer;background:transparent;width:100%;text-align:left;
}
.group-header:active{background:var(--bg-soft)}
.group-header .title{font-size:15.5px;font-weight:600;color:var(--text)}
.group-header .meta{font-size:12px;color:var(--text-mute);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.group-header .meta .checked-pill{
  background:var(--brand-soft);color:var(--brand);border:1px solid #C7DCFB;
  padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;
  display:none;
}
.group.has-checked .meta .checked-pill{display:inline-flex}
.group-header .right{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:10px}
.group-header .arrow{color:var(--text-mute);font-size:13px;transition:transform .15s}
.group.open .arrow{transform:rotate(180deg)}
.group-items{display:none;padding:0 12px 10px;background:transparent}
.group.open .group-items{display:block}
.item{
  padding:0 6px;
  border-top:1px solid var(--line-soft);
}
.item:first-child{border-top:1px solid var(--line)}
.item-row{
  display:flex;align-items:center;gap:10px;padding:11px 0;cursor:pointer;
}
.item.checked .item-row{background:linear-gradient(90deg,rgba(11,111,255,.10) 0%,rgba(11,111,255,0) 80%);border-radius:8px}
.item .chk{
  width:22px;height:22px;border-radius:6px;border:1.6px solid #CBD5E1;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:#fff;color:#fff;cursor:pointer;
}
.item.checked .chk{background:var(--brand);border-color:var(--brand)}
.item.checked .chk::after{content:'✓';font-size:14px;font-weight:800;line-height:1}
.item.no-chk{width:22px;height:22px;flex-shrink:0}
.item .info{flex:1;min-width:0}
.item .no{font-size:15px;font-weight:700;color:var(--text)}
.item .sub{font-size:12px;color:var(--text-mute);margin-top:2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.item .photomini{
  display:flex;gap:4px;margin-top:6px;flex-wrap:wrap;
}
.item .photomini img{
  width:34px;height:34px;object-fit:cover;border-radius:6px;border:1px solid var(--line);cursor:zoom-in;
}
.item .arrow-mini{
  color:var(--text-mute);font-size:18px;transition:transform .15s;flex-shrink:0;margin-left:4px;
  font-weight:300;line-height:1;display:inline-block;
}
.item.open .arrow-mini{transform:rotate(90deg);color:var(--brand)}
.item-detail{
  display:none;padding:4px 0 12px 32px;
  border-top:1px dashed var(--line-soft);margin-top:2px;
}
.item.open .item-detail{display:block}
.item-detail .detail-row{
  display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.7;
  padding:1px 0;
}
.item-detail .dk{
  color:var(--text-mute);min-width:62px;flex-shrink:0;font-size:12.5px;
}
.item-detail .detail-section{
  font-size:12px;font-weight:600;color:var(--text-soft);
  margin:8px 0 4px;letter-spacing:.3px;
}
.item-detail .detail-empty{
  font-size:12px;color:var(--text-mute);padding:2px 0;
}

/* ============ Search Page ============ */
.search-input{
  font-size:15px;padding:12px 14px;margin-bottom:10px;
}
.search-dims{
  display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;
}
.search-dims .chip{
  border:1px solid var(--line);background:var(--card);color:var(--text-soft);
  padding:6px 12px;border-radius:18px;font-size:12.5px;font-weight:600;
  cursor:pointer;transition:all .15s;
}
.search-dims .chip:active{transform:scale(.97)}
.search-dims .chip.chip-on{
  background:var(--brand);color:#fff;border-color:var(--brand);
}
.search-stats{
  font-size:12.5px;color:var(--text-mute);margin:4px 2px 10px;
}
.search-stats b{color:var(--brand);font-weight:700}

.gh-left{flex:1;min-width:0}
.gh-right{display:flex;align-items:center;gap:8px;flex-shrink:0;margin-left:10px}
.gh-select{cursor:pointer;user-select:none}
.gh-select:active{background:var(--bg-soft)}

/* ============ Tabs & Records ============ */
.tabs{
  display:flex;background:var(--bg-soft);border:1px solid var(--line);
  border-radius:12px;padding:4px;margin-bottom:12px;gap:4px;
  position:sticky;top:56px;z-index:10;
}
.tab{
  flex:1;padding:9px;text-align:center;border-radius:8px;
  font-size:13.5px;font-weight:600;cursor:pointer;color:var(--text-soft);
  transition:all .15s;
}
.tab.active{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(15,23,42,.05)}
.tab .count{
  display:inline-block;margin-left:4px;background:var(--bg-soft);color:var(--text-mute);
  padding:0 6px;border-radius:8px;font-size:11px;line-height:16px;font-weight:600;
}
.tab.active .count{background:var(--brand-soft);color:var(--brand)}

.record{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:12px 14px;margin-bottom:8px;
}
.record.collapsed{padding:10px 14px;cursor:pointer}
.record.tappable{cursor:pointer}
.record-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:8px}
.record-type{font-size:14.5px;font-weight:700;display:flex;align-items:center;gap:6px}
.record-time{font-size:11.5px;color:var(--text-mute);font-weight:500;white-space:nowrap}
.record-info{font-size:13px;color:var(--text-soft);line-height:1.7}
.record-info .row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.record-info .key{color:var(--text-mute);min-width:54px;font-size:12.5px}
.record-info .note{color:var(--text-mute);font-size:12.5px;margin-top:2px;background:var(--bg-soft);padding:4px 8px;border-radius:6px;width:100%}

/* ============ Empty & Toast ============ */
.empty{text-align:center;padding:48px 20px;color:var(--text-mute);font-size:14.5px}
.empty .icon{font-size:42px;margin-bottom:10px;opacity:.5}
.toast{
  position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(8px);
  background:rgba(11,18,32,.94);color:#fff;padding:11px 20px;border-radius:12px;
  font-size:14.5px;font-weight:500;z-index:9999;opacity:0;
  transition:opacity .18s,transform .18s;pointer-events:none;
  max-width:92%;text-align:center;backdrop-filter:blur(8px);
  box-shadow:0 10px 30px rgba(0,0,0,.18);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.success{background:linear-gradient(135deg,#0B6FFF,#0A5FE0)}

/* ============ 加载遮罩（第 3 批） ============
   跨清单打开工具详情时，要先拉那本清单的数据（HL7635 的 JSON 100KB+，弱网 1 秒）。
   这段时间必须有可见反馈，否则点一下像没反应，用户会连点。 */
.busy-mask{
  position:fixed;inset:0;background:rgba(245,247,251,.72);z-index:9000;
  display:flex;align-items:center;justify-content:center;
  backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px);
}
.busy-box{
  background:var(--card);border-radius:14px;padding:20px 26px;display:flex;align-items:center;gap:12px;
  box-shadow:0 14px 40px rgba(11,18,32,.16);border:1px solid var(--line);
  font-size:13.5px;font-weight:600;color:var(--text-soft);
}
.busy-spin{
  width:20px;height:20px;border-radius:50%;flex:none;
  border:2.4px solid var(--brand-soft);border-top-color:var(--brand);
  animation:busySpin .72s linear infinite;
}
@keyframes busySpin{to{transform:rotate(360deg)}}

/* ============ Lightbox ============ */
.lightbox{
  position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9999;
  display:none;align-items:center;justify-content:center;padding:20px;
  flex-direction:column;
}
.lightbox.show{display:flex}
.lightbox img{max-width:100%;max-height:78vh;object-fit:contain;border-radius:8px}
.lightbox .close{
  position:absolute;top:18px;right:18px;width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.15);color:#fff;font-size:20px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;
}
.lightbox .counter{color:rgba(255,255,255,.75);font-size:13px;margin-top:12px}
.lightbox .lb-toolbar{
  display:flex;align-items:center;gap:14px;margin-top:14px;flex-direction:column;
}
.lightbox .lb-btn{
  background:rgba(255,255,255,.18);color:#fff;border:none;padding:10px 20px;
  border-radius:24px;font-size:14px;cursor:pointer;
  display:inline-flex;align-items:center;gap:6px;
}
.lightbox .lb-btn:active{background:rgba(255,255,255,.32)}
.lightbox .lb-arrow{
  position:absolute;top:50%;transform:translateY(-50%);
  width:48px;height:48px;border-radius:50%;
  background:rgba(255,255,255,.15);color:#fff;font-size:28px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;
  user-select:none;-webkit-user-select:none;
}
.lightbox .lb-arrow-left{left:14px}
.lightbox .lb-arrow-right{right:14px}
.lightbox .lb-arrow:active{background:rgba(255,255,255,.32)}
.lightbox .lb-arrow.hidden{display:none}
.pick-section{margin-bottom:14px}
.pick-section .head{
  font-size:13px;font-weight:600;color:var(--text-soft);margin-bottom:8px;
  display:flex;justify-content:space-between;align-items:center;
}
.pick-section .head .pick-actions{display:flex;gap:4px}
.pick-list{
  border:1px solid var(--line);border-radius:12px;background:var(--card);
  overflow:hidden;
}
.pick-group{border-top:1px solid var(--line-soft)}
.pick-group:first-child{border-top:none}
.pick-group-head{
  padding:10px 14px;background:#F8FAFC;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  border-bottom:1px solid var(--line-soft);
}
.pick-group-head .pgn{font-size:15px;font-weight:700;color:var(--text);flex:1;min-width:0}
.pick-group-head .pgc{font-size:12px;color:var(--text-soft);font-weight:500}
.pick-group-head .pgc-pill{
  font-size:11.5px;font-weight:600;color:var(--brand);
  background:var(--brand-soft);padding:2px 8px;border-radius:6px;
}
.pick-group-items{display:flex;flex-direction:column}
.pg-arrow{
  display:inline-flex;align-items:center;justify-content:center;
  width:18px;height:18px;border-radius:4px;
  font-size:14px;font-weight:700;color:var(--text-soft);
  background:#fff;border:1px solid var(--line);
  transition:transform .15s ease;flex-shrink:0;
}
.pick-group.open .pg-arrow{transform:rotate(90deg);color:var(--brand);border-color:var(--brand-soft)}
.pick-group.collapsed .pick-group-items{display:none}
.pick-group.collapsed .pick-group-head{border-bottom:none}
.pick-group-head{cursor:pointer}
.pick-group-head:active{background:#EEF2F7}
.pick-group-items .pick-row:first-of-type{border-top:none}
.pick-row{
  display:flex;align-items:center;gap:10px;padding:10px 12px;
  border-top:1px solid var(--line-soft);cursor:pointer;user-select:none;
}
.pick-row .pick-thumb{
  width:42px;height:42px;border-radius:7px;flex-shrink:0;
  background-size:cover;background-position:center;background-color:#F1F5F9;
  border:1px solid var(--line-soft);cursor:zoom-in;position:relative;
}
.pick-row .pick-thumb-more::after{
  content:'+N';position:absolute;right:0;bottom:0;
  background:rgba(0,0,0,.7);color:#fff;
  font-size:9px;padding:1px 3px;border-radius:4px 0 6px 0;font-weight:700;line-height:1.1;
}
.pick-row .pick-thumb-empty{
  width:42px;height:42px;border-radius:7px;flex-shrink:0;
  background:#F1F5F9;color:#94A3B8;font-size:18px;
  display:flex;align-items:center;justify-content:center;border:1px dashed #E2E8F0;
}
.pick-row:first-of-type{border-top:none}
.pick-row:active{background:var(--bg-soft)}
.pick-row .chk{
  width:20px;height:20px;border-radius:5px;border:1.6px solid #CBD5E1;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;background:#fff;color:#fff;font-size:13px;font-weight:800;
}
.pick-row.on{background:rgba(11,111,255,.04)}
.pick-row.on .chk{background:var(--brand);border-color:var(--brand)}
.pick-row.on .chk::after{content:'✓'}
.pick-row .label{flex:1;font-size:14px;font-weight:500}
.pick-row .sub{font-size:11.5px;color:var(--text-mute);margin-top:1px}
.pick-group-items .pick-row .no-cell{font-size:16px;font-weight:700;color:var(--text);letter-spacing:.3px}
.pick-group-items .pick-row .no-cell-mute{color:var(--text-mute);font-size:12px;margin-left:6px;font-weight:400}
/* v1.5.8: 展开详情 */
.pick-row-detail{display:none;padding:8px 14px 12px 14px;background:#F8FAFC;border-top:1px solid var(--line-soft);font-size:13px;line-height:1.8}
.pick-row-detail.open{display:block}
.detail-row{display:flex;gap:8px;align-items:flex-start}
.detail-row .dk{color:var(--text-mute);font-size:12px;flex-shrink:0;min-width:56px;font-weight:500}
.detail-section{font-size:12px;font-weight:600;color:var(--text-soft);margin-top:8px;margin-bottom:2px;padding-top:6px;border-top:1px solid var(--line-soft)}
.detail-tag{display:inline-block;font-size:10px;color:var(--brand);cursor:pointer;padding:1px 5px;border-radius:4px;background:var(--brand-soft);margin-left:4px;vertical-align:middle}
.detail-tag:active{opacity:.7}
.pick-row.partial-row{background:linear-gradient(90deg, rgba(245,158,11,.06) 0%, rgba(255,255,255,0) 100%)}
.pick-row.partial-sub-row{background:linear-gradient(90deg, rgba(245,158,11,.08) 0%, rgba(255,255,255,0) 100%);border-left:3px solid #F59E0B}
.pick-count{
  display:inline-flex;align-items:center;gap:4px;background:var(--brand-soft);
  color:var(--brand);padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;
}

.summary-card{
  background:var(--card);border:1px solid var(--brand-soft);
  border-left:4px solid var(--brand);border-radius:var(--r);
  padding:12px 16px;margin-bottom:14px;
}
.summary-card .form-label{color:var(--brand);font-weight:700;font-size:13px;margin-bottom:6px}
.summary-text{font-size:14px;color:var(--text);line-height:1.7}
.sum-line{padding:2px 0}
.sum-line b{color:var(--brand);font-weight:700;margin-right:4px}
.sum-nos{color:var(--text-soft);font-size:13px}
.num-row .form-input{flex:1}
.num-row .del-btn{
  width:38px;height:38px;border-radius:10px;background:var(--bg-soft);
  border:1px solid var(--line);color:var(--text-mute);font-size:16px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.num-row .del-btn:active{background:var(--borrowed-soft);color:var(--borrowed);border-color:#FCA5A5}
.num-count{
  margin-top:6px;font-size:12.5px;color:var(--text-soft);
  background:var(--brand-soft);padding:6px 10px;border-radius:8px;
  display:flex;align-items:center;gap:4px;font-weight:500;
}

/* ============ Author footer ============ */
.app-footer{
  text-align:center;padding:24px 14px calc(8px + env(safe-area-inset-bottom, 0px));font-size:12px;color:var(--text-mute);
}
.app-footer .a{color:var(--brand);font-weight:600}
.section-title .line{flex:1;height:1px;background:var(--line)}

/* ============ v2.6 清点历史「简单清单」 ============ */
.record.alert{border-left:4px solid var(--borrowed)}
.inv-simple{display:flex;flex-direction:column;gap:10px;margin:6px 0 2px}
.inv-group{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.inv-group-title{font-size:13px;font-weight:700;padding:9px 14px;border-bottom:1px solid var(--line);color:var(--text-mute)}
.inv-title-miss{color:var(--borrowed)}
.inv-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}
.inv-row:last-child{border-bottom:none}
.inv-row-miss{background:var(--borrowed-soft)}
.inv-collapsible{cursor:pointer}
.inv-arrow{display:inline-block;margin-left:6px;transition:transform .2s;transform:rotate(0deg)}
.inv-group.open .inv-arrow{transform:rotate(90deg)}
.inv-group-items{padding:2px 0}
.inv-r-no{font-size:14px;font-weight:700;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}
.inv-r-pn{font-size:12px;color:var(--text-mute);white-space:nowrap;margin-left:4px}
.inv-r-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.inv-r-b{font-size:12px;color:var(--text-mute);white-space:nowrap;margin-left:auto;padding-left:10px}
.drawer-body .tag{margin-right:6px}
.stat-cell.s-total .v{color:var(--brand)}
.stat-cell .v{font-size:20px;font-weight:700;line-height:1.1}
.stat-cell .l{font-size:11.5px;color:var(--text-mute);font-weight:500}
.stat-cell.s-instock .v{color:var(--instock)}
.stat-cell.s-borrowed .v{color:var(--borrowed)}
.stat-cell.s-outstock .v{color:var(--outstock)}

@media (max-width:380px){
  .big-btn .label{font-size:18px}
  .big-btn{padding:18px 14px 14px;min-height:116px}
  .form-row{flex-wrap:wrap}
  .form-row>*{min-width:100%}
}
@media (min-width:720px){
  .form-row{gap:14px}
  .home-greet .hi{font-size:26px}
}
.merge-card .mc-name{font-size:15.5px;font-weight:700;color:var(--text)}
.merge-card .mc-no{font-size:13px;color:var(--text-mute);font-weight:500;margin-top:2px}
.merge-card .mc-actions{display:flex;gap:6px;flex-shrink:0}
.merge-card .mc-info{
  background:var(--bg-soft);border-radius:8px;padding:8px 10px;
  font-size:12.5px;color:var(--text-soft);line-height:1.7;margin-bottom:10px;
}
.merge-card .mc-candidates{display:flex;flex-direction:column;gap:6px}
.merge-card .mc-candidate{
  border:1.5px solid var(--line);border-radius:10px;padding:10px 12px;
  display:flex;align-items:center;gap:10px;cursor:pointer;
  background:var(--card);transition:border-color .12s,background .12s;
}
.merge-card .mc-candidate.selected{border-color:var(--brand);background:var(--brand-soft)}
.merge-card .mc-candidate:active{background:var(--bg-soft)}
.merge-card .mc-cand-info{flex:1;min-width:0}
.merge-card .mc-cand-name{font-size:14px;font-weight:600}
.merge-card .mc-cand-sub{font-size:12px;color:var(--text-mute);margin-top:2px;line-height:1.4}
.merge-card .mc-cand-chk{width:22px;height:22px;border-radius:6px;border:1.6px solid #CBD5E1;flex-shrink:0;background:#fff;display:flex;align-items:center;justify-content:center;color:#fff}
.merge-card .mc-candidate.selected .mc-cand-chk{background:var(--brand);border-color:var(--brand)}
.merge-card .mc-candidate.selected .mc-cand-chk::after{content:'✓';font-size:14px;font-weight:800}

/* ============ v1.4.0 导入流程预览/loading 浮层 ============ */
.import-progress{
  position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:9999;
  display:flex;align-items:center;justify-content:center;padding:20px;
}

/* ============ v1.4.1 设置页子菜单行 ============ */
.set-menu-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 16px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);margin-bottom:8px;cursor:pointer;
  transition:background .1s;
}
.set-menu-item:active{background:var(--bg-soft)}
.set-menu-item .smi-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.set-menu-item .smi-icon{font-size:20px;flex-shrink:0;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center}
.set-menu-item .smi-text{flex:1;min-width:0}
.set-menu-item .smi-title{font-size:15px;font-weight:600;color:var(--text)}
.set-menu-item .smi-sub{font-size:12px;color:var(--text-mute);margin-top:1px}
.set-menu-item .smi-arrow{color:var(--text-mute);font-size:16px;flex-shrink:0}
.set-sub-panel.open{display:block}
.merge-mode-bar .mmb-info{font-size:15px;font-weight:600;color:var(--brand)}
.merge-mode-bar .mmb-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.merge-mode-bar .mmb-actions button{font-size:14px;padding:8px 16px;border-radius:8px;font-weight:600}
.merge-choose-bar .mc-btn{flex:1;min-width:0;padding:10px 8px;border-radius:8px;border:1.5px solid var(--border);background:var(--card);text-align:center;cursor:pointer;font-size:14px;font-weight:600}
.merge-choose-bar .mc-btn:active{background:var(--brand-soft);border-color:var(--brand)}
.merge-select-item.selected{outline:2px solid var(--brand);outline-offset:-2px;border-radius:8px;background:var(--brand-soft)}
/* v1.4.1 关于页 */
.about-header{text-align:center;padding:24px 0 12px}
.about-header .ah-logo{width:64px;height:64px;border-radius:14px;margin:0 auto 8px;display:block;box-shadow:0 2px 10px rgba(11,98,166,.18)}
.about-header .ah-name{font-size:20px;font-weight:800;color:var(--text)}
.about-header .ah-ver{font-size:14px;color:var(--brand);font-weight:600;margin-top:4px}
.about-rows{margin-top:14px}
.about-rows .ar-item{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line-soft);font-size:14px}
.about-rows .ar-item:last-child{border-bottom:none}
.about-rows .ar-key{color:var(--text-mute)}
.about-rows .ar-val{font-weight:600;color:var(--text);text-align:right}
.merge-select-item-row.selected{background:var(--brand-soft);outline:2px solid var(--brand);outline-offset:-2px;border-radius:8px}
.merge-select-item-row.selected .merge-select-chk{background:var(--brand);border-color:var(--brand)}
.merge-select-item-row.selected .merge-select-chk::after{content:'✓';font-size:14px;font-weight:800;line-height:1}
.merge-field-cell.chosen{background:var(--brand-soft);border:2px solid var(--brand);margin:-1px}
.merge-field-value .photo-mini-grid{display:flex;gap:4px;flex-wrap:wrap}
.merge-field-value .photo-mini-grid img{width:60px;height:60px;object-fit:cover;border-radius:6px;cursor:zoom-in}
.import-sticky-bar .btn{width:auto;padding:10px 16px;font-size:14px}
.import-sticky-bar .btn-primary{width:auto;padding:10px 16px;font-size:14px}
/* v1.4.4: 照片选择底部菜单 */
.photo-action-sheet{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--card);border-radius:18px 18px 0 0;box-shadow:0 -4px 24px rgba(0,0,0,.15);padding:12px 16px calc(28px + env(safe-area-inset-bottom, 0px));transform:translateY(100%);transition:transform .25s ease}
.photo-action-sheet.show{transform:translateY(0)}
.photo-action-sheet .sheet-title{font-size:15px;font-weight:600;text-align:center;color:var(--text-soft);padding:6px 0 12px;border-bottom:1px solid var(--line-soft)}
.photo-action-sheet .sheet-btn{display:flex;align-items:center;gap:10px;width:100%;padding:14px 8px;font-size:16px;font-weight:500;border:none;background:none;cursor:pointer;color:var(--text);border-bottom:1px solid var(--line-soft)}
.photo-action-sheet .sheet-btn:last-of-type{border-bottom:none}
.photo-action-sheet .sheet-btn:active{background:var(--bg-soft)}
.photo-action-sheet .sheet-btn .sheet-icon{font-size:22px;width:28px;text-align:center}
.photo-action-sheet .sheet-cancel{margin-top:10px;width:100%;padding:12px;font-size:15px;font-weight:600;text-align:center;border:none;background:var(--bg-soft);border-radius:11px;cursor:pointer;color:var(--text-soft)}
.photo-action-sheet .sheet-cancel:active{background:var(--line-soft)}
.photo-action-overlay{position:fixed;inset:0;z-index:199;background:rgba(0,0,0,.4);display:none}
.photo-action-overlay.show{display:block}
/* v1.9.1: 键盘适配 */
body.keyboard-open{min-height:100vh;overflow-y:auto}
body.keyboard-open .app-header{position:relative}
body.keyboard-open .page-head{position:relative;top:0}
@media (orientation:landscape){
  .page-wrap,.page{padding-bottom:24px}
}
/* v1.4.4: 自动补全下拉 */
.autocomplete-wrap{position:relative}
.autocomplete-list{position:absolute;top:100%;left:0;right:0;z-index:50;background:var(--card);border:1px solid var(--line);border-top:none;border-radius:0 0 11px 11px;max-height:200px;overflow-y:auto;box-shadow:0 6px 16px rgba(0,0,0,.1)}
.autocomplete-list .ac-item{padding:10px 14px;font-size:14px;cursor:pointer;border-bottom:1px solid var(--line-soft)}
.autocomplete-list .ac-item:last-child{border-bottom:none}
.autocomplete-list .ac-item:active,.autocomplete-list .ac-item:hover{background:var(--brand-soft);color:var(--brand)}
.autocomplete-list .ac-item .ac-match{color:var(--brand);font-weight:600}
/* v1.5.2: 历史记录缩略图 */
.record-thumb-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.record-thumb-row img{width:64px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--line);cursor:zoom-in}
.record-thumb-placeholder{width:64px;height:64px;border-radius:8px;background:var(--bg-soft);border:1px dashed var(--line);display:flex;align-items:center;justify-content:center;font-size:24px;color:var(--text-mute)}
.data-card .dc-icon{font-size:34px;line-height:1}
.data-card .dc-title{font-size:14.5px;font-weight:700;color:var(--text)}
.data-card .dc-desc{font-size:11.5px;color:var(--text-mute);line-height:1.4}
.data-card.dc-blue{border-color:var(--brand-soft);background:linear-gradient(135deg,#fff 0%,var(--brand-soft) 100%)}
.data-card.dc-green{border-color:var(--instock-soft);background:linear-gradient(135deg,#fff 0%,var(--instock-soft) 100%)}
.data-card.dc-warn{border-color:var(--warn-soft);background:linear-gradient(135deg,#fff 0%,var(--warn-soft) 100%)}
.data-card.dc-violet{border-color:var(--violet-soft);background:linear-gradient(135deg,#fff 0%,var(--violet-soft) 100%)}
@media (min-width:720px){.data-cards{grid-template-columns:repeat(3,1fr)}}
/* 自定义开关 toggle */
.toggle-row{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.toggle-track{width:48px;height:28px;border-radius:14px;background:var(--line);position:relative;transition:background .2s;flex-shrink:0}
.toggle-track.on{background:var(--brand)}
.toggle-track::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15);transition:transform .2s}
.toggle-track.on::after{transform:translateX(20px)}
.toggle-label{font-size:14px;color:var(--text);font-weight:500}

/* ============ Premium enhancements (v2.0) ============ */
/* 平板大屏下让头部内容与正文对齐到同一列 */
.app-header .row1{max-width:920px;margin:0 auto}
/* 进场柔和淡入，营造高级感（仅透明度，不影响 sticky 定位） */
@keyframes pageIn{from{opacity:0}to{opacity:1}}
.page-wrap,.page{animation:pageIn .3s ease both}
/* 卡片/大按钮增加层次与悬浮微交互 */
.big-btn{box-shadow:0 1px 2px rgba(11,18,32,.04),0 8px 20px rgba(11,18,32,.05)}
.card{box-shadow:0 1px 2px rgba(11,18,32,.03),0 6px 16px rgba(11,18,32,.04)}
.app-header{box-shadow:0 1px 0 rgba(11,18,32,.04),0 6px 18px rgba(11,18,32,.04)}
@media (hover:hover){
  .big-btn:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(11,18,32,.08)}
  .data-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(11,18,32,.08)}
  .set-menu-item:hover{background:var(--bg-soft)}
}

/* ===== 清点页标签页（在库 / 借出 / 总数） ===== */
.check-tabs{display:flex;gap:8px;margin:4px 0 14px}
.check-tab{flex:1;min-width:0;padding:12px 8px;border-radius:var(--r);background:var(--card);border:1px solid var(--line);text-align:center;font-size:14px;color:var(--text-mute);cursor:pointer;transition:all .18s ease;position:relative;user-select:none;line-height:1.3}
.check-tab b{display:block;font-size:18px;font-weight:800;color:var(--text);margin-top:2px}
.check-tab.active{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(11,111,255,.22)}
.check-tab.active b{color:#fff}
.check-tab:active{transform:scale(.97)}
.alert-dot{display:inline-flex;align-items:center;justify-content:center;position:absolute;top:-7px;right:-7px;width:20px;height:20px;border-radius:50%;background:#EF4444;color:#fff;font-size:12px;font-weight:800;box-shadow:0 2px 6px rgba(239,68,68,.45)}
.merge-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--line,#E2E8F0);transition:all .2s}
.merge-dots .dot.on{background:var(--brand,#0B6FFF);transform:scale(1.25)}
.mc-row.sel{background:var(--brand-soft,#EAF2FF)}
.mc-val .mc-photo-grid{display:flex;gap:5px;flex-wrap:wrap;margin:2px 0;align-items:center}
.mc-val .mc-photo-grid img{width:52px;height:52px;object-fit:cover;border-radius:7px;cursor:zoom-in;transition:transform .12s,box-shadow .12s}
.mc-val .mc-photo-grid img:active{transform:scale(.93)}
.mc-val .mc-more{align-self:center;font-size:12px;color:var(--text-mute);background:var(--bg-soft);border-radius:6px;padding:2px 7px}
.mc-val .mc-nophoto{color:var(--text-mute);font-size:13px;font-style:italic}
.mc-val .mc-photo-count{display:block;font-size:11px;color:var(--text-mute);margin-top:3px}
.chip{padding:8px 14px;border-radius:20px;background:var(--card,#fff);border:1px solid var(--line,#E2E8F0);font-size:13px;color:var(--text-soft,#475569);cursor:pointer;transition:all .15s}
.chip.on{background:var(--brand,#0B6FFF);border-color:var(--brand,#0B6FFF);color:#fff;font-weight:600}
.merge-sticky-bar .btn{flex:1}
.merge-detail-title{font-size:13px;font-weight:800;color:var(--brand,#0B6FFF);margin:8px 0 4px;padding-top:8px;border-top:1px dashed var(--line,#E2E8F0)}
.ms-card .btn{width:100%}

/* ============ v2.0.8 更新日志（关于页） ============ */
.cl-title{font-size:13px;font-weight:700;color:var(--brand);margin:18px 0 10px;display:flex;align-items:center;gap:6px}
.cl-entry{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin-bottom:10px}
.cl-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px}
.cl-head b{color:var(--brand);font-size:14.5px;font-weight:700}
.cl-date{font-size:11.5px;color:var(--text-mute);font-weight:500}
.cl-items{margin:0;padding-left:20px;font-size:13px;color:var(--text-soft);line-height:1.75}
.cl-items li{margin:2px 0}

/* 入库：从公司工具清单按刻号带出信息时的提示条 */
.cat-tip{margin-top:8px;padding:9px 11px;border-radius:8px;font-size:12.5px;line-height:1.55;
  background:var(--bg-soft);border:1px solid var(--line);color:var(--text-soft)}
.cat-tip.ok{background:var(--instock-soft);border-color:var(--instock-border);color:var(--instock)}
.cat-tip.warn{background:var(--warn-soft);border-color:#FCD34D;color:#92400E}

/* 入库：清单候选（名称 / 件号 / 刻号） */
.ac-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line-soft);cursor:pointer}
.ac-row:last-child{border-bottom:none}
.ac-row:active{background:var(--bg-soft)}
.ac-nm{flex:1;min-width:0;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-ct{flex:none;font-size:11.5px;color:var(--text-mute)}
.cat-pick,.cat-chips{margin-top:8px;display:block}
.cat-pick-t{display:block;font-size:11.5px;color:var(--text-mute);margin-bottom:6px;line-height:1.5}
/* 候选多时：内部滚动，不撑长整页 */
.cat-list{display:flex;flex-wrap:wrap;gap:6px;max-height:186px;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:2px;border-radius:8px}
.cat-filter{width:100%;margin:0 0 8px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;
  background:var(--card);font-size:12.5px;color:var(--text);outline:none}
.cat-filter:focus{border-color:var(--brand)}
.cat-no-match{font-size:11.5px;color:var(--text-mute);margin-top:6px}
/* 长件号要完整显示：宁可换行也不能截断，否则选错件号 */
.cat-chip{font-size:12px;padding:6px 11px;border-radius:8px;border:1px solid var(--line);
  background:var(--bg-soft);color:var(--text-soft);max-width:100%;text-align:left;
  word-break:break-all;line-height:1.35}
.cat-chip.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:600}

/* 清点提交按钮：主标题 + 小号计数，一行不换行 */
.ck-submit{display:flex;align-items:center;justify-content:center;gap:7px;padding:12px 10px;
  font-size:14.5px;white-space:nowrap}
.ck-submit .ck-sub-cnt{font-size:11.5px;font-weight:600;opacity:.92}

/* ==================== 问题反馈 ==================== */
.fb-ro{display:flex;align-items:center;justify-content:space-between;padding:9px 0;font-size:13.5px;color:var(--text-soft)}
.fb-ro+.fb-ro{border-top:1px solid var(--line-soft)}
.fb-ro b{color:var(--text);font-weight:700}
.fb-inp{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card);
  font-family:inherit;font-size:13.5px;color:var(--text);outline:none}
.fb-inp:focus{border-color:var(--brand)}
.fb-ta{width:100%;min-height:122px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;
  background:var(--card);font-family:inherit;font-size:13.5px;color:var(--text);outline:none;
  resize:none;line-height:1.7}
.fb-ta:focus{border-color:var(--brand)}
.fb-cnt{text-align:right;font-size:11px;color:var(--text-mute);margin-top:6px}
.fb-thumbs{display:flex;gap:9px;flex-wrap:wrap}
.fb-thumb{width:72px;height:72px;border-radius:9px;overflow:hidden;position:relative;background:var(--bg-soft)}
.fb-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.fb-thumb-x{position:absolute;top:3px;right:3px;width:18px;height:18px;border-radius:50%;
  background:rgba(11,18,32,.62);color:#fff;font-size:12px;line-height:18px;text-align:center}
.fb-add{width:72px;height:72px;border-radius:9px;border:1.5px dashed var(--line);background:var(--bg-soft);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--text-mute);font-size:10.5px;font-family:inherit}
.fb-submit{width:100%;margin-top:4px;padding:14px;font-size:15px;font-weight:700}

/* 超管：列表 */
.fb-seg{display:flex;background:var(--bg-soft);border-radius:10px;padding:3px;margin-bottom:11px}
.fb-seg button{flex:1;border:none;background:none;font-family:inherit;font-size:12.5px;font-weight:600;
  color:var(--text-soft);padding:7px 0;border-radius:8px}
.fb-seg button.on{background:var(--card);color:var(--brand);box-shadow:0 1px 4px rgba(11,18,32,.08)}
.fb-item{display:flex;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:12px;margin-bottom:9px;border-left:3px solid transparent}
.fb-item.new{border-left-color:var(--borrowed)}
.fb-i-main{flex:1;min-width:0}
.fb-i-top{display:flex;align-items:center;gap:6px;margin-bottom:5px}
.fb-i-name{font-size:13px;font-weight:700}
.fb-i-emp{font-size:11px;color:var(--text-mute)}
.fb-i-time{margin-left:auto;font-size:10.5px;color:var(--text-mute);flex:none}
.fb-i-body{font-size:12.5px;color:var(--text-soft);line-height:1.55;word-break:break-word;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fb-i-foot{display:flex;align-items:center;gap:6px;margin-top:8px}
.fb-pill{font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:5px}
.fb-pill.new{background:var(--borrowed-soft);color:var(--borrowed)}
.fb-pill.done{background:var(--instock-soft);color:var(--instock)}
.fb-pill.img{background:var(--bg-soft);color:var(--text-soft);display:inline-flex;align-items:center;gap:3px}
.fb-call{width:34px;height:34px;border-radius:9px;border:none;background:var(--instock-soft);
  display:flex;align-items:center;justify-content:center;flex:none;color:var(--instock)}
.fb-call.off{background:var(--bg-soft);color:var(--text-soft)}
.fb-empty{text-align:center;color:var(--text-mute);font-size:13px;padding:46px 0}
.fb-head-clear{font-size:13px;font-weight:700;color:var(--borrowed);flex:none;padding:4px 2px}

/* 超管：详情 */
.fb-who{display:flex;align-items:center;gap:10px}
.fb-who-av{width:40px;height:40px;border-radius:11px;background:var(--brand-soft);color:var(--brand);
  font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
.fb-who-n{font-size:14.5px;font-weight:700}
.fb-who-s{font-size:11.5px;color:var(--text-mute);margin-top:2px}
.fb-cont{font-size:13.5px;line-height:1.75;white-space:pre-wrap;word-break:break-word}
.fb-shot{width:calc(50% - 5px);aspect-ratio:4/3;border-radius:9px;overflow:hidden;background:var(--bg-soft)}
.fb-shot img{width:100%;height:100%;object-fit:cover;display:block}
.fb-acts{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.fb-btn{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;border:none;border-radius:11px;
  font-family:inherit;font-size:14px;font-weight:700;padding:13px}
.fb-btn.call{background:var(--brand);color:#fff}
.fb-btn.done{background:var(--instock-soft);color:var(--instock)}
.fb-btn.del{background:var(--card);color:var(--borrowed);border:1px solid var(--borrowed-border)}

/* 历史记录「加载更早」：归档的老记录按需翻页 */
.older-wrap{padding:16px 0 28px;text-align:center}
.older-wrap .btn{display:inline-block;width:auto;padding:10px 22px;font-size:13.5px}
.older-cnt{margin-top:8px;font-size:12px;color:var(--text-mute)}
/* 第 4 批返工·修3：重拉时的极轻指示。只是件数后面挂四个字，不加转圈、不占布局、不动列表 */
.older-cnt .hist-updating{font-size:11px;opacity:.65}

/* ===== 第 4 批：统一提示条（胶囊 / 横幅 / 黄条 共用一套） =====
   只报数，不报内容：固定文案 + 数字 + 「刚刚」。
   整条可点，点了才去拉最新数据（B 档：提示不刷）。 */
.sse-tip{display:flex;align-items:center;gap:8px;width:100%;box-sizing:border-box;
  margin:10px 0 6px;padding:10px 13px;border-radius:12px;border:1px solid var(--warn-border,#F3D08A);
  background:var(--warn-soft);color:#7A4B00;font-size:13px;font-weight:700;font-family:inherit;
  text-align:left;cursor:pointer;line-height:1.35}
.sse-tip:active{transform:scale(.995);filter:brightness(.985)}
.sse-tip .sse-tip-n{font-weight:800;font-variant-numeric:tabular-nums}
.sse-tip .sse-tip-go{margin-left:auto;font-weight:600;opacity:.85;font-size:12px;white-space:nowrap}
.sse-tip .sse-tip-when{font-size:11px;font-weight:600;opacity:.7;white-space:nowrap}
.sse-tip.ok{border-color:var(--instock-border);background:var(--instock-soft);color:var(--instock)}
/* 首页三个数字变了：浅绿底 2 秒（A 档：只改那一个数字，不重绘页面） */
.hs-flash{background:var(--instock-soft);box-shadow:0 0 0 3px var(--instock-soft);border-radius:5px;
  transition:background .25s ease, box-shadow .25s ease}

/* 第 4 批 Q4：点了黄条重拉后，状态变了的行标红（提示只报数，行内才说这一行怎么了） */
.item.ck-changed{border-color:var(--borrowed-border);background:var(--borrowed-soft)}
.ck-changed-note{margin-top:8px;font-size:12px;font-weight:700;color:var(--borrowed)}
/* 工具详情：被别人借走时状态行标红（A 档，只改这一行） */
.td-status-warn{color:var(--borrowed);font-weight:800}
