/* 自动同步自 ios/styles.css（权威源），请勿直接修改。 */
:root{
  --bg:#F3F4F6; --card:#FFFFFF; --ink:#111827; --sub:#6B7280; --hint:#9CA3AF;
  --line:#E5E7EB; --primary:#3B82F6; --primary-d:#2563EB; --primary-light:#EFF6FF;
  --green:#22C55E; --red:#EF4444; --orange:#F59E0B;
  --green-light:#DCFCE7; --red-light:#FEE2E2; --orange-light:#FEF3C7;
  --tab-normal:#9CA3AF;
  --nav-active:#3B82F6; --nav-bg:#FFFFFF; --on-primary:#FFFFFF;
  --topbar:#3B82F6; --total-bg:#3B82F6; --total-bg2:#2563EB;
  --total-shadow:0 4px 12px rgba(59,130,246,.35);
  /* v11.50 界面主题：状态块（有库存/缺货/未归还/已归还/调拨）——现版蓝为淡色小标签，其余主题为实底白字大块 */
  --st-in-bg:#DCFCE7; --st-in-tx:#166534; --st-out-bg:#FEE2E2; --st-out-tx:#991B1B;
  --st-unret-bg:#FEF3C7; --st-unret-tx:#92400E; --st-ret-bg:#DCFCE7; --st-ret-tx:#166534;
  --st-tr-bg:#DBEAFE; --st-tr-tx:#1E40AF;
  /* v11.50 界面主题：尺寸（现版蓝口径；其余主题在 [data-wms-theme] 块里覆盖） */
  --name-px:15px; --sub-px:12px; --label-px:11px; --btn-h:48px; --btn-px:16px;
  --checkbox-px:20px; --radius-px:12px; --total-num-px:36px;
  --card-border:none; --card-accent:none;

  /* v11.13：「全部功能介绍」模块标题配色——原先整行走淡主题色，序号与标题糊在一起看不清，
     改为序号亮红 + 标题正文文红（同色系两档），深浅主题各一套。 */
  --feat-num:#E53935; --feat-title:#C62828;

  /* ===== 屏幕自适应滚动：可视高度与各端「固定占位」集中在这里，改一处全站生效 =====
     --vh100     : 真实可视高度（支持 dvh 的浏览器用 dvh，避免手机地址栏遮挡）
     --topbar-h  : 顶栏高度
     --botnav-h  : 底部导航高度（PC 端为 0，见 pc.css 覆写）
     --view-pad  : 主内容区上下内边距
     --scroll-free: 内容区实际可用高度，超出即自动出现滚动条 */
  --vh100:100vh;
  --topbar-h:56px; --botnav-h:56px; --footer-h:0px; --view-pad:12px; --scroll-gap:8px;
  --scroll-free:calc(var(--vh100) - var(--topbar-h) - var(--botnav-h) - var(--footer-h)
    - var(--view-pad) - var(--view-pad)
    - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px)
    - var(--scroll-gap));
}
@supports (height:100dvh){ :root{--vh100:100dvh} }

/* ===== UI 皮肤（v10.1）：主色预设 + 暗色 / 跟随系统 =====
   说明：主色预设先声明，暗色块后声明——这样在「深色 + 某主色」组合下，
   暗色块（后声明、同特异性）能盖过主色预设里的 --primary-light（浅色），保证深色模式一致。
   主色只改 --primary/--primary-d，暗色不改主色，故深色下品牌色仍可见。 */
[data-accent="cyan"]{ --primary:#06B6D4; --primary-d:#0891B2; --primary-light:#ECFEFF; }
[data-accent="green"]{ --primary:#16A34A; --primary-d:#15803D; --primary-light:#F0FDF4; }
[data-accent="orange"]{ --primary:#F97316; --primary-d:#EA580C; --primary-light:#FFF7ED; }
[data-accent="purple"]{ --primary:#8B5CF6; --primary-d:#7C3AED; --primary-light:#F5F3FF; }
[data-accent="pink"]{ --primary:#EC4899; --primary-d:#DB2777; --primary-light:#FDF2F8; }

/* ===== v11.50 界面主题（内置三套新主题；现版蓝 = :root 默认值，无覆盖规则）=====
   顺序说明：本块在 [data-accent] 之后、[data-theme="dark"] 之前——同特异性下后声明胜出，
   故新主题的主色盖过旧 6 档主色预设（主题为顶层控制）；深色块在最后，表面色仍按现版深色值走。 */
[data-wms-theme="orange"]{
  --bg:#F5F4F2; --card:#FFFFFF; --ink:#1C1917; --sub:#57534E; --hint:#78716C;
  --line:#E7E5E4; --primary:#EA580C; --primary-d:#C2410C; --primary-light:#FFF7ED;
  --topbar:#C2410C; --total-bg:#EA580C; --total-bg2:#C2410C;
  --total-shadow:0 4px 12px rgba(0,0,0,.18);
  --nav-bg:#FFFFFF; --on-primary:#FFFFFF; --tab-normal:#78716C; --nav-active:#EA580C;
  --st-in-bg:#15803D; --st-in-tx:#FFFFFF; --st-out-bg:#B91C1C; --st-out-tx:#FFFFFF;
  --st-unret-bg:#B45309; --st-unret-tx:#FFFFFF; --st-ret-bg:#15803D; --st-ret-tx:#FFFFFF;
  --st-tr-bg:#1D4ED8; --st-tr-tx:#FFFFFF;
  --name-px:17px; --sub-px:14px; --label-px:13px; --btn-h:56px; --btn-px:17px;
  --checkbox-px:24px; --radius-px:12px; --total-num-px:38px;
  --card-border:1px solid #E7E5E4; --card-accent:none;
}
[data-wms-theme="navy"]{
  --bg:#F1F5F9; --card:#FFFFFF; --ink:#0F172A; --sub:#475569; --hint:#94A3B8;
  --line:#E2E8F0; --primary:#1D6AE5; --primary-d:#1557C0; --primary-light:#E8F1FE;
  --topbar:#0F2A43; --total-bg:#0F2A43; --total-bg2:#0F2A43;
  --total-shadow:0 4px 12px rgba(0,0,0,.18);
  --nav-bg:#0F2A43; --on-primary:#FFFFFF; --tab-normal:#94A3B8; --nav-active:#FFFFFF;
  --st-in-bg:#15803D; --st-in-tx:#FFFFFF; --st-out-bg:#B91C1C; --st-out-tx:#FFFFFF;
  --st-unret-bg:#B45309; --st-unret-tx:#FFFFFF; --st-ret-bg:#15803D; --st-ret-tx:#FFFFFF;
  --st-tr-bg:#1D4ED8; --st-tr-tx:#FFFFFF;
  --name-px:17px; --sub-px:14px; --label-px:13px; --btn-h:56px; --btn-px:17px;
  --checkbox-px:24px; --radius-px:12px; --total-num-px:38px;
  --card-border:none; --card-accent:4px solid #1D6AE5;
}
[data-wms-theme="sun"]{
  --bg:#FFFFFF; --card:#FFFFFF; --ink:#000000; --sub:#333333; --hint:#4B5563;
  --line:#9CA3AF; --primary:#0057D9; --primary-d:#0041A8; --primary-light:#E5EEFF;
  --topbar:#0057D9; --total-bg:#0057D9; --total-bg2:#0057D9;
  --total-shadow:0 4px 12px rgba(0,0,0,.18);
  --nav-bg:#FFFFFF; --on-primary:#FFFFFF; --tab-normal:#4B5563; --nav-active:#0057D9;
  --st-in-bg:#006B1F; --st-in-tx:#FFFFFF; --st-out-bg:#A30000; --st-out-tx:#FFFFFF;
  --st-unret-bg:#7A4A00; --st-unret-tx:#FFFFFF; --st-ret-bg:#006B1F; --st-ret-tx:#FFFFFF;
  --st-tr-bg:#003FA3; --st-tr-tx:#FFFFFF;
  --name-px:18px; --sub-px:15px; --label-px:14px; --btn-h:60px; --btn-px:18px;
  --checkbox-px:28px; --radius-px:8px; --total-num-px:40px;
  --card-border:2px solid #1F2937; --card-accent:none;
}

[data-theme="dark"]{
  --bg:#0F172A; --card:#1E293B; --ink:#E5E7EB; --sub:#94A3B8; --hint:#64748B;
  --line:#334155; --primary-light:#1E293B;
  --green-light:#14331F; --red-light:#3A1A1A; --orange-light:#3A2E12;
  --feat-num:#FFAB91; --feat-title:#FF8A80;
}
@media (prefers-color-scheme: dark){
  [data-theme="auto"]{
    --bg:#0F172A; --card:#1E293B; --ink:#E5E7EB; --sub:#94A3B8; --hint:#64748B;
    --line:#334155; --primary-light:#1E293B;
    --green-light:#14331F; --red-light:#3A1A1A; --orange-light:#3A2E12;
    --feat-num:#FFAB91; --feat-title:#FF8A80;
  }
}

/* 滚动条：内容超出才出现，细窄圆角、不抢视线（PC 端另有更宽的鼠标友好样式） */
html{scrollbar-width:thin;scrollbar-color:#C7CDD6 transparent}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#C7CDD6;border-radius:9px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:#9CA3AF;background-clip:padding-box}
::-webkit-scrollbar-corner{background:transparent}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;
  line-height:1.5;-webkit-text-size-adjust:100%;
  padding-top:calc(56px + env(safe-area-inset-top));
  padding-bottom:calc(var(--botnav-h) + var(--footer-h) + env(safe-area-inset-bottom));
}

/* 顶部栏 */
.topbar{
  position:fixed;left:0;right:0;top:0;z-index:20;height:calc(56px + env(safe-area-inset-top));
  background:var(--topbar, var(--primary));color:#fff;display:flex;align-items:center;
  padding:env(safe-area-inset-top) 14px 0 14px;box-shadow:0 2px 8px rgba(0,0,0,.12);
}
.topbar-icon{width:32px;height:32px;border-radius:8px;margin-right:10px;object-fit:cover;background:#fff}
.topbar-title{font-size:18px;font-weight:700;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.topbar-version{font-size:12px;color:rgba(255,255,255,.7);margin-left:8px}

/* 主区 */
#view{padding:12px;max-width:720px;margin:0 auto}

/* 卡片 */
.card{
  background:var(--card);border:var(--card-border);border-left:var(--card-accent);border-radius:var(--radius-px);padding:14px;margin-bottom:12px;
  box-shadow:0 1px 3px rgba(0,0,0,.05);
}
.card h3,.section-title{margin:0 0 12px;font-size:16px;font-weight:700;color:var(--ink)}
.empty{color:var(--sub);font-size:14px;text-align:center;padding:16px 0}

/* 表单 */
.lbl{display:block;font-size:13px;color:var(--sub);margin:12px 0 6px}
.inp{
  width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font-size:16px;
  background:var(--card);color:var(--ink);-webkit-appearance:none
}
.inp:focus{outline:none;border-color:var(--primary)}
select.inp{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236B7280' d='M1 4l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px}

/* 按钮 */
.btn-primary{
  display:block;width:100%;margin-top:14px;text-align:center;text-decoration:none;
  background:var(--primary);color:var(--on-primary);font-size:var(--btn-px);font-weight:700;
  padding:13px 16px;border:none;border-radius:12px;cursor:pointer;min-height:var(--btn-h);
}
.btn-primary:active{background:var(--primary-d)}
.btn-outline{
  display:block;width:100%;margin-top:10px;text-align:center;background:var(--card);color:var(--primary);
  border:1px solid var(--primary);border-radius:12px;padding:12px 16px;font-size:15px;font-weight:700;cursor:pointer
}
.mini{background:var(--card);border:1px solid var(--line);color:var(--primary-d);border-radius:8px;padding:5px 9px;font-size:13px;margin-left:6px;cursor:pointer;white-space:nowrap}
.mini.danger{color:var(--red);border-color:#fca5a5}
.mini.success{color:var(--green);border-color:#86efac}

/* 行按钮（业务页） */
.row-btn{
  display:flex;align-items:center;background:var(--card);border:var(--card-border);border-left:var(--card-accent);border-radius:var(--radius-px);padding:14px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.05)
}
.row-icon{
  width:40px;height:40px;border-radius:50%;background:var(--primary-light);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:20px;margin-right:14px;flex-shrink:0
}
.row-icon.red{background:var(--red-light);color:var(--red)}
.row-icon.orange{background:var(--orange-light);color:var(--orange)}
.row-main{flex:1;min-width:0}
.row-title{font-size:16px;font-weight:700;color:var(--ink)}
.row-sub{font-size:13px;color:var(--sub);margin-top:2px}
.row-arrow{font-size:22px;color:var(--hint);margin-left:8px}

/* 首页角色卡 */
.role-card{display:flex;align-items:center;background:var(--card);border:var(--card-border);border-left:var(--card-accent);border-radius:var(--radius-px);padding:14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.role-avatar{width:40px;height:40px;border-radius:10px;object-fit:cover;margin-right:10px;background:var(--bg)}
.role-info{flex:1}
.role-name{font-size:15px;font-weight:700;color:var(--ink)}
.role-sub{font-size:12px;color:var(--sub);margin-top:2px}

/* 总库存大卡片 */
.total-card{
  background:linear-gradient(135deg, var(--total-bg) 0%, var(--total-bg2) 100%);
  border-radius:16px;padding:20px;margin-bottom:12px;color:#fff;
  box-shadow:var(--total-shadow)
}
.total-num{font-size:var(--total-num-px);font-weight:800;line-height:1.1}
.total-label{font-size:13px;color:rgba(255,255,255,.85);margin-top:6px}

/* 统计小卡 */
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}
.stat{
  background:var(--card);border:var(--card-border);border-left:var(--card-accent);border-radius:var(--radius-px);padding:16px 8px;text-align:center;cursor:pointer;
  box-shadow:0 1px 3px rgba(0,0,0,.05)
}
.stat-n{font-size:26px;font-weight:800;color:var(--primary);line-height:1.1}
.stat-t{font-size:12px;color:var(--sub);margin-top:4px}

/* 趋势图 */
.chart-card{position:relative}
.chart-area{width:100%;height:180px}
.chart-legend{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:8px;font-size:12px;color:var(--sub)}
.chart-dot{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:4px}

/* 6 宫格快捷办理 */
.grid-6{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.grid-item{
  background:var(--card);border:var(--card-border);border-left:var(--card-accent);border-radius:var(--radius-px);padding:14px 8px;text-align:center;cursor:pointer;
  box-shadow:0 1px 3px rgba(0,0,0,.05)
}
.grid-ico{font-size:28px;margin-bottom:6px}
.grid-txt{font-size:13px;color:var(--ink);font-weight:600}

/* 分段控件 */
.seg{display:flex;background:var(--primary-light);border-radius:12px;padding:4px;margin-bottom:14px}
.seg.multi{flex-wrap:wrap;gap:4px}
.seg.multi .seg-btn{flex:1 1 20%;min-width:56px;padding:8px 4px;font-size:13px;border-radius:8px}
.seg-btn{flex:1;border:none;background:transparent;padding:10px;border-radius:9px;font-size:15px;font-weight:600;color:var(--sub);cursor:pointer}
.seg-btn.on{background:var(--card);color:var(--primary-d);box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* 列表 */
.list{list-style:none;margin:0;padding:0}
#qResult li{-webkit-touch-callout:none;user-select:none}
.list li{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;border-bottom:1px solid var(--line)}
.list li:last-child{border-bottom:none}
.li-main{flex:1;min-width:0}
.li-main b{font-size:var(--name-px)}
.li-sub{font-size:var(--sub-px);color:var(--sub);margin-top:2px}
.li-sub i{font-style:normal;color:var(--primary)}
.li-act{flex-shrink:0;display:flex;align-items:center}
.code{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--sub);margin-left:4px}
.price{font-size:15px;font-weight:700;color:var(--primary-d)}
.warn-badge{color:#B91C1C;font-weight:700}
.warn-row{background:#FEE2E2}
.warn-row b{color:#B91C1C}
/* 可点开的列表行（对齐安卓 ListView item 点击） */
.list li[data-act]{cursor:pointer}
.tag{display:inline-block;font-size:var(--label-px);font-weight:700;padding:2px 7px;border-radius:6px;margin-right:5px}
.tag.in{background:var(--st-in-bg);color:var(--st-in-tx)}
.tag.out{background:var(--st-out-bg);color:var(--st-out-tx)}
.tag.transfer{background:var(--st-tr-bg);color:var(--st-tr-tx)}
.tag.scrap{background:#f3e8ff;color:#6b21a8}
.tag.take{background:var(--st-unret-bg);color:var(--st-unret-tx)}
.tag.toolout{background:var(--st-unret-bg);color:var(--st-unret-tx)}
.tag.toolin{background:var(--st-ret-bg);color:var(--st-ret-tx)}
.amt{font-size:13px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}
.amt.in{background:var(--st-in-bg);color:var(--st-in-tx)}
.amt.out{background:var(--st-out-bg);color:var(--st-out-tx)}
.amt.neu{background:var(--st-tr-bg);color:var(--st-tr-tx)}

/* 出入库候选 */
.cand{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.cand-btn{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;cursor:pointer}
.cand-btn i{font-style:normal;color:var(--sub);font-size:12px;margin:0 4px}
.cand-btn span{float:right;color:var(--sub);font-size:12px}
/* v10.87：批量勾选候选行 + 确认栏 */
/* 11.49: 长物资名自动换到第二行显示全名（原先名与库存浮在同一行会被挤压） */
.cand-row{display:flex;align-items:flex-start;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;cursor:pointer}
.cand-row input[type=checkbox]{width:var(--checkbox-px);height:var(--checkbox-px);min-width:var(--checkbox-px);min-height:var(--checkbox-px);accent-color:var(--accent,#2f6fed);margin:2px 0 0;flex:none}
.cand-main{flex:1;min-width:0}
.cand-main b{display:block;font-size:14px;font-weight:600;color:var(--ink);line-height:1.35;overflow-wrap:anywhere}
.cand-main i{font-style:normal;color:var(--sub);font-size:12px;display:block;margin-top:2px;overflow-wrap:anywhere}
.cand-stock{display:block;float:none;text-align:left;color:var(--sub);font-size:12px;margin-top:2px}
.pick-bar{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.pick-bar .pick-count{flex:1;font-size:13px;color:var(--sub)}
.picked{display:flex;align-items:center;justify-content:space-between;background:var(--primary-light);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.picked b{font-size:16px}

/* 盘点表单 */
.take-grid{display:grid;grid-template-columns:1fr 70px 90px 60px;gap:8px;align-items:center;font-size:13px;color:var(--sub);padding:10px 4px;border-bottom:1px solid var(--line);font-weight:600}
.take-row{display:grid;grid-template-columns:1fr 70px 90px 60px;gap:8px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--line)}
.take-row input{width:100%;padding:8px;border:1px solid var(--line);border-radius:8px;font-size:16px;text-align:center}
.take-row .tk-name{font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.take-row .tk-sys{font-size:13px;color:var(--sub);text-align:center}

/* 底部导航 */
.bottom-nav{
  position:fixed;left:0;right:0;bottom:var(--footer-h);z-index:30;display:flex;background:var(--nav-bg);
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);
  box-shadow:0 -2px 8px rgba(0,0,0,.06);height:calc(56px + env(safe-area-inset-bottom));
}
.nav-btn{flex:1;border:none;background:transparent;color:var(--tab-normal);font-size:11px;padding:6px 0 0 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%}
.nav-btn span{font-size:11px}
.nav-btn.active{color:var(--nav-active)}

/* 模态 */
.modal{position:fixed;inset:0;z-index:50;display:none}
.modal.show{display:block}
.modal-mask{position:absolute;inset:0;background:rgba(0,0,0,.4)}
/* 弹窗高度自适应屏幕：内容超出可视区时弹窗内部自动出现滚动条 */
.modal-card{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--card);border-radius:18px 18px 0 0;padding:16px 16px calc(20px + env(safe-area-inset-bottom));animation:up .2s ease}
@supports (height:100dvh){ .modal-card{max-height:88dvh} }
@keyframes up{from{transform:translateY(20px);opacity:.6}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;font-size:17px;font-weight:700;margin-bottom:10px}
.modal-x{border:none;background:var(--primary-light);color:var(--sub);border-radius:50%;width:30px;height:30px;font-size:15px;cursor:pointer}
.modal-body{padding-top:4px}

/* 隐私锁遮罩：小屏（键盘弹出 / 矮屏）时整体可滚动，避免取消按钮够不着 */
.lock-overlay{position:fixed;inset:0;z-index:100;background:var(--card);display:none;flex-direction:column;align-items:center;justify-content:flex-start;padding:20px;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.lock-overlay.show{display:flex}
.lock-overlay>*{flex-shrink:0}
.lock-overlay .lock-box{margin:auto}   /* 空间够时自动居中，空间不够时不裁顶部 */
.lock-icon{width:72px;height:72px;border-radius:16px;margin-bottom:16px;box-shadow:0 4px 16px rgba(59,130,246,.25)}
.lock-title{font-size:20px;font-weight:800;color:var(--ink);margin-bottom:6px}
.lock-sub{font-size:14px;color:var(--sub);margin-bottom:20px;text-align:center}
.pin-row{display:flex;justify-content:center;gap:12px;margin:10px 0}
.pin-dot{width:14px;height:14px;border-radius:50%;border:1px solid var(--line);background:var(--card)}
.pin-dot.filled{background:var(--primary);border-color:var(--primary)}
.pin-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:260px;margin:0 auto}
.pin-key{
  width:72px;height:72px;border-radius:50%;border:1px solid var(--line);background:var(--card);
  font-size:22px;font-weight:600;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer
}
.pin-key:active{background:var(--primary-light)}
.pin-key.del{font-size:14px;color:var(--sub);border:none;background:transparent}
.pin-input{width:100%;padding:14px;font-size:24px;letter-spacing:8px;text-align:center;border:1px solid var(--line);border-radius:12px;margin-bottom:12px}
.pattern-wrap{width:260px;height:260px;margin:0 auto;position:relative;touch-action:none}
.pattern-wrap canvas{position:absolute;left:0;top:0;width:100%;height:100%}
.lock-actions{display:flex;gap:10px;justify-content:center;margin-top:16px}
.lock-actions button{padding:10px 18px;border-radius:10px;border:none;font-size:14px;cursor:pointer}
.lock-actions .primary{background:var(--primary);color:#fff}
.lock-actions .secondary{background:var(--bg);color:var(--ink)}

/* iOS 安装引导条 */
/* v10.85：改为可关闭的提示条（原先无关闭按钮，永久遮住顶栏导致设置入口点不到） */
.ios-hint{display:none;background:var(--primary-d);color:#fff;font-size:13px;padding:10px 14px;text-align:center;position:fixed;top:0;left:0;right:0;z-index:40;padding-top:calc(10px + env(safe-area-inset-top));display:none;align-items:center;gap:10px}
.ios-hint.show{display:flex}
.ios-hint-txt{flex:1;min-width:0}
.ios-hint-x{flex:none;background:transparent;border:1px solid rgba(255,255,255,.55);color:#fff;border-radius:8px;font-size:13px;line-height:1;padding:7px 10px;min-width:36px;min-height:32px;cursor:pointer}

/* 工具 */
.hidden{display:none !important}
.text-right{text-align:right}
.flex{display:flex;align-items:center}
.flex-1{flex:1;min-width:0}
.mb-0{margin-bottom:0}
.mt-10{margin-top:10px}

/* ===== 屏幕自适应滚动容器 =====
   .scroll-y：只在内容高于可用高度时出现竖向滚动条（自适应，不是写死高度）
   .scroll-x：内容宽于屏幕时出现横向滚动条（宽表格用）
   注意：不加 .scroll-y 时页面本身仍可整体滚动，这里只是给需要「内部滚动」的区域用。 */
.scroll-y{max-height:var(--scroll-free);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.scroll-x{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.scroll-y.auto-h{max-height:none}          /* 内容短时不限高，完全交给页面滚动 */
.scroll-y,.scroll-x{padding-bottom:2px}

/* 数据管理页：分区折叠 + 内部自适应滚动（内容超出即出现滚动条） */
.data-scroll{max-height:var(--scroll-free);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:8px}
.dsec{border:1px solid var(--line);border-radius:14px;margin:10px 0;background:var(--card);overflow:hidden}
.dsec>summary{list-style:none;cursor:pointer;padding:13px 16px;font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px;user-select:none}
.dsec>summary::-webkit-details-marker{display:none}
.dsec>summary::after{content:'▾';margin-left:auto;color:var(--sub);font-size:13px;transition:transform .2s}
.dsec[open]>summary::after{transform:rotate(180deg)}
.dsec .card{margin:0;border:none;box-shadow:none;padding:12px 16px}
.dsec .card h3{margin-top:0}

/* ===== 防溢出：屏幕装不下时给滚动条，而不是把内容裁掉 ===== */
/* 盘点表：4 列在窄屏会挤成一团 → 外层横向可滚 */
.take-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.take-wrap .take-grid,.take-wrap .take-row{min-width:420px}
/* 媒体与长文本不撑破容器 */
img,video,canvas{max-width:100%}
.card,.dsec,.row-main,.li-main{overflow-wrap:anywhere}
/* 宽表格（可视化报表等注入的原始 table）在窄屏可横向滚动 */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.table-wrap table{min-width:100%}

/* ===== 底部产品导航栏（v9.97）=====
   移动端：固定底栏，位于底部 Tab 之上；PC 端不渲染此栏（链接放在左侧栏 .nav-foot 内）。 */
.site-footer{
  position:fixed;left:0;right:0;bottom:0;z-index:31;
  display:flex;align-items:center;justify-content:center;gap:14px;
  height:calc(var(--footer-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:var(--nav-bg);border-top:1px solid var(--line);
  box-shadow:0 -2px 8px rgba(0,0,0,.06);
}
.foot-link{
  border:none;background:transparent;cursor:pointer;
  color:var(--primary-d);font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;gap:4px;
  padding:6px 10px;-webkit-tap-highlight-color:transparent;font-family:inherit;
}
.foot-link:active{opacity:.6}
.foot-sep{width:1px;height:16px;background:var(--line);flex:0 0 auto}

