/* App-specific styles on top of the Broadsheet system (styles.css). */
body { margin: 0; }
a { color: var(--color-accent); }
a:hover { color: var(--color-accent-700); }
input[type="date"] { font-family: var(--font-body); }

/* ── iPhone 基础适配 ────────────────────────────────────────────────── */
html {
  /* iOS 横屏会自动放大正文字号，关掉 */
  -webkit-text-size-adjust: 100%;
}
body {
  /* 默认的灰色点击闪块在纸面底色上很脏，换成主色淡影 */
  -webkit-tap-highlight-color: color-mix(in srgb, var(--color-accent) 14%, transparent);
}
button, .seg-opt, .tab, .stock-row, .picker-row, .radio {
  /* 去掉 iOS 等待双击缩放造成的 ~300ms 点击延迟 */
  touch-action: manipulation;
}
/* iOS 会给 input/button 加自己的圆角和内阴影，先清零，交给下面按 token 重设 */
input, button, textarea, select { -webkit-appearance: none; appearance: none; border-radius: 0; }
.input, .btn { border-radius: var(--radius-sm); }

@keyframes toastIn { from { opacity: 0; transform: translate(-50%, 8px); } to { opacity: 1; transform: translate(-50%, 0); } }

.app-shell { min-height: 100vh; background: var(--color-bg); color: var(--color-text); font-family: var(--font-body); }
/* 安全区：刘海/灵动岛与底部横条不能盖住内容（index.html 用了 viewport-fit=cover） */
.app-page {
  max-width: 860px; margin: 0 auto;
  padding: max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right))
           calc(120px + env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));
}

.masthead {
  border-bottom: 1px solid var(--color-divider);
  padding: var(--space-3) 0; display: flex; align-items: baseline; gap: var(--space-2); flex-wrap: wrap;
}
.masthead h1 { margin: 0; font-size: 22px; letter-spacing: -0.01em; }
.masthead .subtitle {
  font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
  color: color-mix(in srgb, var(--color-text) 60%, transparent);
}
.masthead .meta { margin-left: auto; display: flex; align-items: center; gap: var(--space-2); }
.masthead .date { font-size: 12px; color: color-mix(in srgb, var(--color-text) 60%, transparent); }
.masthead .who { font-size: 12px; }
/* 语言切换：小而明确，不跟「退出」抢注意力 */
.lang-btn {
  font-size: 11px; padding: 2px 7px; letter-spacing: 0.06em;
  border: 1px solid var(--color-divider); color: var(--color-text);
  min-width: 34px;
}
.lang-btn:hover { background: color-mix(in srgb, var(--color-text) 7%, transparent); }

/* 页签常驻顶部：手机上滚到列表深处也能直接切到盘点 */
.tabs {
  display: flex; gap: 4px; padding: var(--space-2) 0 var(--space-4);
  position: sticky; top: 0; z-index: 20; background: var(--color-bg);
  box-shadow: 0 1px 0 var(--color-divider);
}
.tab {
  background: none; border: none; cursor: pointer;
  font-family: var(--font-body); font-weight: 500; font-size: 15px;
  color: color-mix(in srgb, var(--color-text) 60%, transparent);
  padding: 8px 14px; border-radius: var(--radius-sm);
  display: inline-flex; align-items: center; gap: 6px;
}
.tab.active { background: var(--color-accent-100); color: var(--color-accent-800); font-weight: 600; }
.tab .en { font-size: 11px; letter-spacing: 0.06em; opacity: 0.7; }

.dim { color: color-mix(in srgb, var(--color-text) 60%, transparent); }
.dim65 { color: color-mix(in srgb, var(--color-text) 65%, transparent); }
.dim55 { color: color-mix(in srgb, var(--color-text) 55%, transparent); }
.empty-note { padding: var(--space-6) 0; font-style: italic; color: color-mix(in srgb, var(--color-text) 55%, transparent); }

.stack-4 { display: flex; flex-direction: column; gap: var(--space-4); }
.stack-2 { display: flex; flex-direction: column; gap: var(--space-2); }
.stack-1 { display: flex; flex-direction: column; gap: var(--space-1); }
.row-2 { display: flex; gap: var(--space-2); }

/* 登录后的选功能首页：欢迎语 + 一格卡片网格，以后加新功能就是网格里多一张卡。 */
.hub { display: flex; flex-direction: column; gap: var(--space-6); padding-top: var(--space-2); }
.hub-greeting { font-size: 14px; color: color-mix(in srgb, var(--color-text) 60%, transparent); }
.hub-title { margin: 2px 0 0; font-size: 26px; }
.hub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--space-3); }
.hub-card {
  display: flex; align-items: center; gap: var(--space-3); width: 100%;
  padding: var(--space-4); border-radius: var(--radius-lg);
  border: 1px solid var(--color-divider); background: var(--color-surface);
  cursor: pointer; font: inherit; color: inherit; text-align: left;
  transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.hub-card:hover { border-color: var(--color-accent); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.hub-card:active { transform: translateY(0); }
.hub-card-icon {
  flex: none; width: 52px; height: 52px; border-radius: var(--radius-md);
  background: var(--color-accent-100); display: flex; align-items: center; justify-content: center;
  font-size: 26px;
}
.hub-card-body { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.hub-card-title { font-family: var(--font-heading); font-weight: 600; font-size: 17px; }
.hub-card-desc { font-size: 13px; color: color-mix(in srgb, var(--color-text) 60%, transparent); }
.hub-card-arrow {
  flex: none; font-size: 18px; color: var(--color-accent); opacity: 0.55;
  transition: transform .15s ease, opacity .15s ease;
}
.hub-card:hover .hub-card-arrow { opacity: 1; transform: translateX(3px); }

.stock-row {
  cursor: pointer; padding: var(--space-3);
  display: flex; flex-direction: column; gap: 6px; border-radius: var(--radius-md);
  background: var(--color-surface); border: 1px solid var(--color-divider);
}
.stock-row:hover { border-color: color-mix(in srgb, var(--color-accent) 40%, var(--color-divider)); }
.stock-row + .stock-row { margin-top: var(--space-2); }
.stock-row .no { font-family: var(--font-heading); font-weight: 600; font-size: 18px; letter-spacing: 0.01em; }
.stock-row .age { margin-left: auto; font-size: 13px; white-space: nowrap; }
.stock-row .sub { font-size: 13px; color: color-mix(in srgb, var(--color-text) 65%, transparent); }
.stock-row .tags { display: flex; gap: 6px; flex-wrap: wrap; }
.warn { color: var(--color-accent-2); }

.bar-track { height: 8px; background: var(--color-accent-100); border-radius: var(--radius-sm); }
.bar-fill { height: 8px; background: var(--color-accent); border-radius: var(--radius-sm); }
.bar-track.neutral { background: var(--color-neutral-200); }
.bar-fill.neutral { background: var(--color-neutral-600); }

.stat-grid > div {
  border: 1px solid var(--color-divider); border-radius: var(--radius-md);
  background: var(--color-surface); padding: var(--space-3);
}
.stat-label { font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: color-mix(in srgb, var(--color-text) 60%, transparent); }
.stat-value { font-family: var(--font-heading); font-weight: 650; font-size: 32px; line-height: 1.15; letter-spacing: -0.01em; }

.overlay {
  position: fixed; inset: 0; z-index: 50; background: var(--color-bg); overflow: auto;
  /* 滚到边界时不把底层页面一起拖动（iOS 橡皮筋） */
  overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
}
.overlay-inner {
  max-width: 560px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--space-4);
  padding: max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right))
           calc(var(--space-8) + env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));
}
.overlay-head {
  display: flex; align-items: baseline; gap: var(--space-2);
  border-bottom: 1px solid var(--color-divider); padding: var(--space-2) 0 var(--space-3);
}
.overlay-head h2 { margin: 0; font-size: 20px; }

.login-inner {
  max-width: 420px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--space-4);
  padding: max(15vh, calc(var(--space-8) + env(safe-area-inset-top))) max(var(--space-4), env(safe-area-inset-right))
           calc(var(--space-8) + env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));
}
.login-mast { border-bottom: 1px solid var(--color-divider); padding: var(--space-2) 0 var(--space-3); }
.login-mast h1 { margin: 0; font-size: 26px; letter-spacing: -0.01em; }

.big-btn { font-size: 16px; padding: 14px; }

/* 盘库计时条：进行中的状态要一眼看到，用主色描边把它和下面的表单区分开 */
.session-bar {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1.5px solid var(--color-accent); border-radius: var(--radius-md);
  background: var(--color-accent-100);
}
/* 等宽数字：秒表跳动时数字宽度不变，整条不会左右抖 */
.work-clock {
  font-family: var(--font-heading); font-weight: 600; font-size: 26px;
  font-variant-numeric: tabular-nums; line-height: 1.1;
}
/* 录货页的表单：与计时条之间留出呼吸，视觉上是两块 */
.entry-form { padding-top: var(--space-1); }

/* 保存被拦下时精准指一个缺的字段，不用满屏红星——每一项都必填的话星号没有信息量 */
.field-error {
  outline: 2px solid var(--color-accent-2); outline-offset: 2px; border-radius: var(--radius-md);
}

.toast {
  /* 避开底部横条，否则提示会被 Home 指示条压住 */
  position: fixed; left: 50%; bottom: calc(28px + env(safe-area-inset-bottom)); transform: translate(-50%, 0); z-index: 80;
  background: var(--color-text); color: var(--color-bg); padding: 10px 18px;
  border-radius: var(--radius-md); font-size: 14px; box-shadow: var(--shadow-lg);
  animation: toastIn 0.2s ease; max-width: 85vw;
}

/* 多批选择弹窗的行：整行可点，勾选框够大好按（手套操作） */
.picker-row {
  display: flex; align-items: flex-start; gap: var(--space-2);
  padding: 9px var(--space-1); min-height: 44px; cursor: pointer;
  border-radius: var(--radius-md);
}
.picker-row:hover { background: color-mix(in srgb, var(--color-text) 4%, transparent); }
.picker-row input { position: absolute; opacity: 0; width: 0; height: 0; }
.picker-box {
  width: 20px; height: 20px; flex: none; margin-top: 2px;
  border: 1.5px solid var(--color-divider); border-radius: var(--radius-md);
  background: var(--color-bg);
}
.picker-row input:checked + .picker-box {
  border-color: var(--color-accent); background: var(--color-accent);
  box-shadow: inset 0 0 0 3px var(--color-bg);
}
.picker-row input:focus-visible + .picker-box { outline: 2px solid var(--color-accent); outline-offset: 2px; }

.offline-pill {
  /* 避开刘海/灵动岛 */
  position: fixed; top: calc(10px + env(safe-area-inset-top)); left: 50%; transform: translateX(-50%); z-index: 90;
  background: var(--color-accent-2-100); color: var(--color-accent-2-800);
  padding: 4px 14px; border-radius: var(--radius-md); font-size: 12px; box-shadow: var(--shadow-sm);
  max-width: 92vw; text-align: center;
  /* 只是提示、没有可点的东西：滚动后它压在吸顶 tab 上，不能吞掉点「库存」「统计」的手指 */
  pointer-events: none;
}

/* 弹窗也要避开安全区，否则在手机上按钮会贴到底部横条 */
.dialog-backdrop {
  padding: max(var(--space-4), env(safe-area-inset-top)) max(var(--space-4), env(safe-area-inset-right))
           max(var(--space-4), env(safe-area-inset-bottom)) max(var(--space-4), env(safe-area-inset-left));
  overscroll-behavior: contain;
}
.dialog { max-height: 85vh; overflow-y: auto; -webkit-overflow-scrolling: touch; }

/* 统计数字：网格排布，避免窄屏参差换行（4 个一行 + 1 个孤零零掉下来） */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: var(--space-4) var(--space-6); }

/* 表格在窄屏横向滚动，而不是把「亚马逊」压成竖排三行 */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
/* 管理员库存页的表格态：整张表包一层卡片边框，跟其余看板面板视觉统一 */
.table-card {
  border: 1px solid var(--color-divider); border-radius: var(--radius-md);
  overflow: hidden; background: var(--color-surface);
}
.table-card .table td:first-child, .table-card .table th:first-child { padding-left: var(--space-3); }
.table-card .table td:last-child, .table-card .table th:last-child { padding-right: var(--space-3); }

/* ── 手机版（≤640px）────────────────────────────────────────────────── */
@media (max-width: 640px) {
  /* 关键：iOS Safari 在字号 <16px 的输入框获得焦点时会自动放大整个页面。
     16px 是不触发缩放的下限。 */
  .input { font-size: 16px; min-height: 44px; }

  /* 点按目标按 Apple HIG 至少 44pt */
  /* 仓库里可能戴手套操作，所有可点元素一律给足 44px */
  .btn { min-height: 44px; }
  .btn-ghost { min-height: 44px; }
  .lang-btn { min-height: 44px; min-width: 46px; font-size: 12px; padding: 6px 10px; }
  .seg-opt { min-height: 44px; padding: 10px 14px; font-size: 14px; }
  .tab { min-height: 48px; padding: 10px 12px; font-size: 17px; }
  .tabs { gap: var(--space-3); }

  /* 报头在窄屏收紧：标题一行，其余信息一行 */
  .masthead h1 { font-size: 21px; }
  .masthead .subtitle { display: none; }   /* 窄屏省掉英文副标题，给操作留空间 */
  .masthead .meta { width: 100%; margin-left: 0; justify-content: flex-end; }

  /* 列表行：柜号更大更好扫，整行留足触摸高度 */
  .stock-row { padding: var(--space-3); }
  .stock-row .no { font-size: 20px; }
  .stock-row .sub { font-size: 13px; }

  /* 表格单元格不换行，交给容器横向滚动 */
  .table th, .table td { white-space: nowrap; }
  .table { font-size: 13px; }

  .stat-value { font-size: 26px; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); gap: var(--space-3) var(--space-4); }

  .overlay-head h2 { font-size: 20px; }
  .dialog { width: 100%; }
}

/* ── 能不能上车 ──────────────────────────────────────────────────────
   移动端优先：仓库拿着手机站在车边查，字要大、按钮要好按。三态结果靠
   颜色一眼分清，不需要读完文字——绿=能上，黄=别的仓点排过，红=没排过。 */
.canship { display: flex; flex-direction: column; gap: var(--space-4); padding-top: var(--space-3); }
.canship-fc-row { display: flex; gap: var(--space-2); }
.canship-fc-btn {
  flex: 1; padding: 14px 8px; font-size: 18px; font-weight: 600;
  border: 1px solid var(--color-divider); border-radius: var(--radius-md);
  background: var(--color-surface); cursor: pointer; font-family: var(--font-heading);
}
.canship-fc-btn.active { background: var(--color-accent); color: #fff; border-color: var(--color-accent); }

.canship-result {
  padding: var(--space-4); border-radius: var(--radius-lg); font-size: 22px; font-weight: 700;
  font-family: var(--font-heading); text-align: center;
}
.canship-result--yes { background: #e7f6ec; color: #146c2e; }
.canship-result--ask { background: #ffe9d1; color: #93450a; }
.canship-result--other { background: #fff3d6; color: #8a5a00; }
.canship-result--no { background: #fdeaea; color: #a3231f; }
.canship-result-note { margin-top: 6px; font-size: 13px; font-weight: 400; }
.canship-result-no { margin-bottom: 4px; font-size: 14px; font-family: ui-monospace, monospace; letter-spacing: 0.5px; opacity: 0.85; }
/* 橙灯要把「排在哪一趟」摆出来，工人照着念给小奥听 */
.canship-ask-row {
  margin-top: 8px; padding-top: 8px; font-size: 14px; font-weight: 400; text-align: left;
  border-top: 1px solid color-mix(in srgb, currentColor 25%, transparent);
  display: flex; flex-direction: column; gap: 2px;
}
.canship-ask-no { font-weight: 600; }

/* 柜号联想：候选是按钮，手指点得到；三列——柜号、客户、日期 */
.canship-suggest {
  margin-top: 6px; display: flex; flex-direction: column; gap: 2px;
  max-height: 260px; overflow-y: auto;
}
.canship-suggest-row {
  display: grid; grid-template-columns: 1fr auto auto; gap: var(--space-3); align-items: baseline;
  width: 100%; padding: 12px 10px; text-align: left; cursor: pointer;
  background: var(--color-surface); border: 1px solid var(--color-divider);
  border-radius: var(--radius-sm); font-family: inherit; font-size: 15px;
}
.canship-suggest-row:active { background: color-mix(in srgb, var(--color-text) 12%, transparent); }
.canship-suggest-no { font-weight: 400; font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
/* 已输入的几位压淡、没输的几位放大加色，一眼看出候选之间差在哪 */
.canship-suggest-typed { color: color-mix(in srgb, var(--color-text) 45%, transparent); }
.canship-suggest-no b { font-weight: 700; font-size: 1.15em; color: var(--color-accent); }
.canship-suggest-customer { font-size: 13px; color: color-mix(in srgb, var(--color-text) 65%, transparent); }
.canship-suggest-date { font-size: 13px; color: color-mix(in srgb, var(--color-text) 55%, transparent); font-variant-numeric: tabular-nums; white-space: nowrap; } /* 320px 宽的手机上「9/18 20:00」别折成两行 */

.canship-history { display: flex; flex-direction: column; gap: 2px; }
.canship-history-title { font-size: 12px; text-transform: uppercase; letter-spacing: 0.05em; color: color-mix(in srgb, var(--color-text) 60%, transparent); margin-bottom: 4px; }
.canship-history-row {
  padding: 8px 10px; font-size: 13px; border-radius: var(--radius-sm);
  background: var(--color-surface); border: 1px solid var(--color-divider);
}

/* 被拒的那一趟：整行红底，翻历史时一眼看到，不用去找小标签 */
.canship-history-row--rejected {
  background: #fdeaea; border-color: #f0c0be; color: #a3231f; font-weight: 600;
}

.canship-unparsed { max-height: 220px; overflow-y: auto; margin-top: 6px; display: flex; flex-direction: column; gap: 2px; }
.canship-unparsed-row {
  padding: 4px 8px; font-size: 12px; font-family: monospace; color: color-mix(in srgb, var(--color-text) 75%, transparent);
  background: var(--color-surface); border-radius: 4px;
}

/* 按下反馈：手机没有 hover，必须有 :active 才知道点到了 */
.stock-row:active, .picker-row:active {
  background: color-mix(in srgb, var(--color-text) 9%, transparent);
}
.canship-fc-btn:active { background: color-mix(in srgb, var(--color-text) 12%, transparent); }
.btn:active { transform: translateY(1px); }
@media (prefers-reduced-motion: reduce) {
  .btn:active { transform: none; }
  .hub-card, .hub-card-arrow { transition: none; }
  .hub-card:hover { transform: none; }
}

/* 离线待上传队列：用提醒色而不是报错色——东西没丢，只是还在手机里 */
.outbox-box {
  padding: var(--space-2) var(--space-3);
  border: 1.5px dashed var(--color-accent-2-800); border-radius: var(--radius-md);
  background: var(--color-accent-2-100);
}

/* 柜号联想：整行可点，柜号大字、客户小字；在库的那条用主色标出 */
.no-suggest {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2);
  width: 100%; margin-top: 4px; padding: 8px 12px; text-align: left;
  border: 1px solid var(--color-neutral-300); border-radius: var(--radius-md);
  background: var(--color-bg); font: inherit; color: inherit; cursor: pointer;
}
.no-suggest:active { background: var(--color-accent-100); }
.no-suggest-no { font-family: var(--font-heading); font-weight: 600; font-size: 16px; letter-spacing: 0.04em; }
.no-suggest-meta { font-size: 12px; opacity: 0.65; white-space: nowrap; }

/* ── 录货页改版（2026-10-05）：三张序号卡片、无虚线、底部固定保存 ── */
.entry-page { padding-bottom: 84px; }
.stack-3 { display: flex; flex-direction: column; gap: var(--space-3); }
/* 提示条不能盖住底部固定的保存按钮，也不能吃掉点击 */
.toast { pointer-events: none; }
body[data-view="entry"] .toast { bottom: calc(92px + env(safe-area-inset-bottom)); }
.ecard {
  display: flex; flex-direction: column; gap: var(--space-2);
  background: #fff; border: 1px solid var(--color-neutral-200); border-radius: var(--radius-lg);
  padding: var(--space-3) var(--space-3) var(--space-3);
}
.ecard h3 { margin: 0 0 2px; font-size: 13px; color: var(--color-neutral-600); letter-spacing: 0.06em; display: flex; align-items: center; }
.ecard h3 b {
  display: inline-block; width: 20px; height: 20px; border-radius: 50%; margin-right: 8px;
  background: var(--color-text); color: #fff; font-size: 12px; text-align: center; line-height: 20px;
}
.ecard .field { display: flex; flex-direction: column; gap: 6px; }
.ecard .field > label, .ecard .field-head > label { font-size: 13px; color: var(--color-neutral-600); }
.ecard .seg-opt { font-size: 14px; color: inherit; }
.input-big { font-size: 20px !important; font-weight: 600; letter-spacing: 0.05em; min-height: 48px; }
.hint {
  padding: 7px 10px; border-radius: var(--radius-sm); font-size: 12px;
  background: var(--color-accent-100); color: var(--color-accent-800);
}
.hint-warn { background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
.hint-warn .no-suggest { background: #fff; }
.auto-note { margin-left: 6px; font-size: 12px; font-weight: 400; color: var(--color-neutral-500); }
.fc-more { margin-top: 2px; font-size: 13px !important; min-height: 38px !important; background: transparent; }
/* 上面的 13px !important 盖过了手机版 .input 的 16px：iOS 聚焦 <16px 的框会放大整页、保存栏被挤出屏幕。
   横屏 iPhone 宽过 640，所以按触屏也算上 */
@media (max-width: 640px), (pointer: coarse) { .fc-more { font-size: 16px !important; } }
/* 选项组：没选的浅灰、选中的深色，不再描虚线 */
.ecard .seg { border: none; gap: 6px; background: transparent; overflow: visible; }
.ecard .seg-opt { border-radius: var(--radius-md); background: var(--color-neutral-100); justify-content: center; }
.ecard .seg-opt + .seg-opt { border-left: none; }
.ecard .seg-opt:has(input:checked) { background: var(--color-accent); color: #fff; }
.ecard .seg.field-error .seg-opt:not(:has(input:checked)) { background: var(--color-accent-2-100); }
/* 状态开关：破损 / HOLD / 高板，点亮才算 */
.chips { display: flex; gap: 8px; }
.chip {
  flex: 1; min-height: 44px; padding: 10px 4px; border-radius: var(--radius-md);
  border: 1.5px solid var(--color-neutral-300); background: #fff; color: var(--color-neutral-600);
  font: inherit; font-size: 15px; font-weight: 600; cursor: pointer;
}
.chip.on { border-color: var(--color-accent-2); background: var(--color-accent-2-100); color: var(--color-accent-2-800); }
/* 盘库计时条：一行小条，不再占大块 */
.work-bar {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap;
  padding: 8px 12px; border-radius: var(--radius-md); background: var(--color-accent-100); font-size: 13px;
}
.work-bar .work-clock { font-size: 18px; margin: 0 4px; }
.work-bar-btns { display: flex; gap: 6px; margin-left: auto; }
.work-bar-btns .btn { min-height: 36px; padding: 6px 12px; font-size: 13px; }
/* 保存按钮固定在屏幕底部，不用滚到最后去找 */
.save-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
  padding: 10px var(--space-3) calc(10px + env(safe-area-inset-bottom));
  background: linear-gradient(to bottom, transparent, var(--color-bg) 35%);
  pointer-events: none;
}
.save-bar .btn { pointer-events: auto; max-width: 640px; margin: 0 auto; display: block; box-shadow: var(--shadow-sm); }
/* 录货页顶部收紧（手机） */
@media (max-width: 640px) {
  body[data-view="entry"] .masthead h1 { font-size: 18px; }
  body[data-view="entry"] .masthead .subtitle { display: none; }
  body[data-view="entry"] .masthead { padding-bottom: 4px; }
}
/* 成员能进哪个仓：用主色（不是破损/HOLD 那种品红警示色），表格里小号 */
.site-chip {
  font: inherit; font-size: 12px; padding: 3px 10px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--color-divider); background: transparent; color: color-mix(in srgb, var(--color-text) 60%, transparent);
}
.site-chip.on { border-color: var(--color-accent); background: var(--color-accent-100); color: var(--color-accent-800); }
/* 亚马逊仓点快捷按钮：每行 4 个，超过 4 个（卡加 8 个）自动换第二行 */
.ecard .seg.fc-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ecard .seg.fc-grid .seg-opt { padding-left: 4px; padding-right: 4px; }
