/* 到货看板（控制台内页，app/arrivals.py）。颜色只用 tokens.css 已定义变量、不写裸 hex（UI 门禁）。
 * 第四轮（用户 2026-09-29「参考该到没到的货的结构」）：一块一张表，块标题左边一条色带；表头 sticky（祖先不能有 overflow）。 */
/* display:flex / grid 的块会盖掉 hidden 属性，全页兜一句（工厂待办 9-27 踩过） */
[hidden] { display: none !important; }
body { background: var(--canvas); }
.av-app { max-width: 1500px; margin: 0 auto; padding: 20px 16px 72px; }
.av-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.av-head h1 { margin: 0 0 6px; font-size: 22px; color: var(--ink); }
.av-head p { margin: 0; max-width: 820px; color: var(--muted); font-size: 13px; line-height: 1.6; }
.av-head-right { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.av-link { color: var(--accent); font-size: 13px; text-decoration: underline; text-underline-offset: 2px; }
.av-fresh { font-size: 12px; color: var(--muted); }
.av-fresh.warn { color: var(--warning-fg); }
.av-btn { white-space: nowrap; border: 1px solid var(--line); background: var(--surface); color: var(--ink); border-radius: var(--radius-sm); padding: 5px 12px; font-size: 13px; cursor: pointer; text-decoration: none; }
.av-btn:hover { background: var(--surface-hover); }
.av-btn:disabled { opacity: .6; cursor: default; }
.av-btn.primary { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); }
.av-btn.primary:hover { background: var(--accent-hover); }
.av-btn.danger { border-color: var(--danger-border); color: var(--danger-fg); }
.av-btn.danger:hover { background: var(--danger-bg); }

/* 筛选：一行一种，标签在左（和该到没到的货一样） */
.av-filters { margin: 12px 0 6px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface); display: grid; gap: 8px; }
.av-frow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.av-flabel { flex: 0 0 40px; font-size: 13px; color: var(--muted); }
.av-flabel2 { flex: 0 0 auto; margin-left: 12px; }
.av-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.av-chips button { border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); border-radius: var(--radius-full); padding: 4px 12px; font-size: 13px; cursor: pointer; }
.av-chips button:hover { background: var(--surface-hover); }
.av-chips button.on { background: var(--accent); border-color: var(--accent); color: var(--text-on-accent); }
.av-chips button small { margin-left: 5px; opacity: .8; }
#av-owner { border: 1px solid var(--border-control); border-radius: var(--radius-sm); padding: 4px 8px; font-size: 13px; background: var(--surface); color: var(--ink); max-width: 200px; }
/* 2026-10-01 吸顶筛选条里的复制品（shared/section-tabs.js .sq-secpin）没有 id，下拉框照上面 #av-owner 的样子补一份 */
.sq-secpin .av-frow select { border: 1px solid var(--border-control); border-radius: var(--radius-sm); padding: 2px 8px; font-size: 13px; background: var(--surface); color: var(--ink); max-width: 160px; }
.sq-secpin .av-flabel { flex-basis: auto; }
#av-q { margin-left: auto; min-width: 240px; border: 1px solid var(--border-control); border-radius: var(--radius-sm); padding: 6px 10px; font-size: 13px; background: var(--surface); color: var(--ink); }
.av-mine { margin: 4px 2px; font-size: 13px; color: var(--info-fg); }
.av-linkbtn { border: 0; background: none; padding: 0; font: inherit; color: var(--accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.av-msg { font-size: 13px; color: var(--muted); margin: 10px 0; }
.av-msg.err { color: var(--danger-fg); }

/* 顶上一排（老板 2026-09-30 第二次）：看几天 + 按时间三个开关（过去 · 该到没到 · 未来）；每个开关两行：大字几单，小字哪几天 / 其中几单 */
.av-jumpbar { position: sticky; top: 0; z-index: 4; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 10px 0 4px; padding: 8px 0; background: var(--canvas); }
.av-days { display: flex; align-items: center; gap: 6px; }
.av-days .av-flabel { flex: 0 0 auto; }
.av-jump { display: flex; flex-wrap: wrap; gap: 8px; }
/* 2026-10-01：滚下去以后条里的小「收货 / 出货」+ 右头「筛选：…」；出货那边换成 B2B / B2C 两个跳转按钮 */
.av-mini { flex: 0 0 auto; display: inline-flex; border: 1px solid var(--border-strong); border-radius: var(--radius-full); overflow: hidden; background: var(--surface); }
.av-mini button { border: 0; background: none; padding: 6px 14px; font: inherit; font-size: 13px; font-weight: 600; color: var(--ink-2); cursor: pointer; white-space: nowrap; }
.av-mini button + button { border-left: 1px solid var(--border-strong); }
.av-mini button.on { background: var(--accent); color: var(--text-on-accent); }
.av-mini button:hover:not(.on) { background: var(--surface-hover); }
.av-fltslot { margin-left: auto; display: inline-flex; min-width: 0; }
.av-fltslot:empty { display: none; }
.av-jump button { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 1px; border: 1px solid var(--border); background: var(--surface); color: var(--ink-2);
  border-radius: var(--radius-md); padding: 6px 14px 5px; font-size: 13px; text-align: left; cursor: pointer; }
.av-jump button:hover { background: var(--surface-hover); }
.av-jump .av-jt { font-weight: 600; white-space: nowrap; }
.av-jump .av-jt .av-when-pill { margin-right: 6px; }
.av-jump button b { font-size: 17px; color: var(--ink); margin: 0 2px; }
.av-jump button small { font-size: 12px; color: var(--muted); white-space: nowrap; }
.av-jump button.past b { color: var(--success-fg); }
.av-jump button.past .av-when-pill { background: var(--success-fg); }
.av-jump button.late b { color: var(--warning-fg); }
.av-jump button.late .av-when-pill { background: var(--warning-fg); }
.av-jump button.future b { color: var(--info-fg); }
.av-jump button.future .av-when-pill { background: var(--info-fg); }

/* 一块：标题一行（几单几件 + 看几天的按钮 + 这块怎么算），下面一张表 */
.av-sec { margin-top: 20px; scroll-margin-top: 8px; }
.av-range { font-size: 13px; color: var(--ink-2); }
.av-sec-head { display: flex; align-items: center; gap: 6px 12px; flex-wrap: wrap; padding: 8px 12px; border-left: 5px solid var(--border-strong); background: var(--surface-sunken); border-radius: 0 var(--radius-md) var(--radius-md) 0; }
.av-sec-head h2 { margin: 0; font-size: 17px; color: var(--ink); white-space: nowrap; }
.av-sec-head h2 b { margin-left: 8px; font-size: 14px; }
.av-sec-head p { margin: 0; flex-basis: 100%; font-size: 12px; color: var(--muted); line-height: 1.6; }
.av-when-pill { display: inline-block; font-size: 12px; font-weight: 600; line-height: 20px; padding: 0 8px; margin-right: 8px;
  border-radius: var(--radius-full); color: var(--text-on-accent); vertical-align: 2px; }
.av-sec.future .av-sec-head { border-left-color: var(--info-fg); background: var(--info-bg); }
.av-sec.future h2, .av-sec.future h2 b { color: var(--info-fg); }
.av-sec.future .av-when-pill { background: var(--info-fg); }
.av-sec.future .av-chips button.on { background: var(--info-fg); border-color: var(--info-fg); }
.av-sec.past .av-sec-head { border-left-color: var(--success-fg); background: var(--success-bg); }
.av-sec.past h2, .av-sec.past h2 b { color: var(--success-fg); }
.av-sec.past .av-when-pill { background: var(--success-fg); }
.av-sec.past .av-chips button.on { background: var(--success-fg); border-color: var(--success-fg); }
.av-sec.late .av-sec-head { border-left-color: var(--warning-fg); background: var(--warning-bg); }
.av-sec.late h2, .av-sec.late h2 b { color: var(--warning-fg); }
.av-sec.late .av-when-pill { background: var(--warning-fg); }
.av-directx { color: var(--warning-fg); font-weight: 600; }
.av-sec details > summary { cursor: pointer; list-style: none; }
.av-sec details > summary::-webkit-details-marker { display: none; }
.av-sec details > summary h2::after { content: "  ▸ 点开"; font-size: 12px; font-weight: 400; color: var(--muted); }
.av-sec details[open] > summary h2::after { content: "  ▾ 收起"; }
.av-empty { margin: 8px 12px; font-size: 13px; color: var(--muted); }
.av-h3 { font-size: 14px; margin: 14px 0 6px; color: var(--ink-2); }
.av-h3 small { font-size: 12px; font-weight: 400; color: var(--muted); margin-left: 8px; }

/* 表：定宽、一格一行、放不下「…」、悬停看全文；圆角不用 overflow（会让 sticky 失效） */
.av-table { width: 100%; min-width: 940px; margin-top: 6px; border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 13px; color: var(--ink-2); background: var(--surface); }
.av-table th { position: sticky; top: 0;   /* 有吸顶开关条时 arrivals.js stickTop 改成条的高度 */ z-index: 2; background: var(--surface-sunken); color: var(--muted); font-weight: 600; font-size: 12px; text-align: left;
  padding: 6px 8px; border-bottom: 1px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.av-table td { padding: 0 8px; height: 42px; border-bottom: 1px solid var(--border-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; }
.av-table tbody tr[data-id] { cursor: pointer; }
.av-table tbody tr[data-id]:hover td { background: var(--surface-hover); }
.av-table tbody tr.cur td { background: var(--info-bg); }
.av-table tbody tr.cur td:first-child { box-shadow: inset 3px 0 0 var(--info-fg); }
.av-table tbody tr.urgent td:first-child { box-shadow: inset 3px 0 0 var(--danger-fg); }
/* 日子小标题：今天 9月29日 周二 · 2 单 3 件 */
.av-table tr.day td { height: 34px; background: var(--surface-sunken); border-top: 2px solid var(--border); color: var(--ink); }
.av-table tr.day:first-child td { border-top: 0; }
.av-dayh { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.av-dayh b { font-size: 14px; }
.av-dayh span { font-size: 13px; color: var(--ink-2); }
.av-dayh small { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; }
.av-table tr.day.today .av-dayh b { color: var(--info-fg); }
.av-table tr.day.onway .av-dayh b { color: var(--info-fg); }
.av-table tr.day.overdue .av-dayh b { color: var(--warning-fg); }
.av-table tr.day.empty td { height: 26px; background: var(--surface); border-top: 1px solid var(--border-subtle); font-size: 12px; color: var(--muted); }

.av-table td.pi { color: var(--ink); }
.av-mark { font-family: var(--font-mono); font-weight: 600; }
.av-tag { display: inline-block; margin-left: 6px; border-radius: 4px; padding: 0 5px; font-size: 11px; line-height: 17px; border: 1px solid var(--neutral-border); background: var(--neutral-bg); color: var(--neutral-fg); vertical-align: 1px; }
.av-tag.b2c { border-color: var(--info-border); background: var(--info-bg); color: var(--info-fg); }
.av-tag.b2b { border-color: var(--accent-soft-border); background: var(--accent-soft-bg); color: var(--accent-soft-fg); }
.av-tag.warn { border-color: var(--warning-border); background: var(--warning-bg); color: var(--warning-fg); }
.av-table td.im { padding: 0 4px; text-overflow: clip; }
.av-img { display: inline-block; width: 34px; height: 34px; object-fit: contain; border-radius: 4px; background: var(--surface-sunken); vertical-align: middle; }
.av-table td.prod { color: var(--ink); }
.av-table td.prod b { margin-left: 2px; }
.av-sku { color: var(--muted); font-size: 12px; margin-left: 6px; }
.av-more { color: var(--muted); font-size: 12px; }
.av-table td.qty { text-align: right; padding-right: 12px; }
.av-table td.qty.big { font-weight: 700; color: var(--info-fg); }
.av-got { color: var(--success-fg); font-weight: 600; }
.av-onway { color: var(--info-fg); }
.av-late { color: var(--warning-fg); font-weight: 600; }
.av-today { color: var(--info-fg); }
.av-pill { display: inline-block; border-radius: 4px; padding: 0 5px; font-size: 11px; font-weight: 600; line-height: 17px; border: 1px solid; }
.av-pill.claim { color: var(--success-fg); background: var(--success-bg); border-color: var(--success-border); }
.av-pill.stale { color: var(--warning-fg); background: var(--warning-bg); border-color: var(--warning-border); }
.av-note { color: var(--ink-2); }
.av-out { color: var(--ink); font-weight: 600; }
.av-out.direct { color: var(--warning-fg); }
.av-out.sent { color: var(--success-fg); font-weight: 400; }
.av-claim { color: var(--success-fg); }
/* 快递轨迹：从哪到哪 / 签收（app/express_track.py） */
.av-exp { display: inline-block; padding: 0 6px; border-radius: 9px; font-size: 12px; line-height: 18px; border: 1px solid var(--neutral-border); color: var(--text-muted); background: var(--neutral-bg); }
.av-exp.good { color: var(--success-fg); background: var(--success-bg); border-color: var(--success-border); }
.av-exp.info { color: var(--info-fg); background: var(--info-bg); border-color: var(--info-border); }
.av-exp.warn { color: var(--warning-fg); background: var(--warning-bg); border-color: var(--warning-border); font-weight: 600; }
.av-exp.bad { color: var(--danger-fg); background: var(--danger-bg); border-color: var(--danger-border); }
.av-table td.who { color: var(--ink-2); }
.dot { color: var(--muted); }
/* 四种标记：急=红、大批量=蓝、重要=琥珀、要检查=紫；悬停看规则和这张的理由 */
.av-table td.tags { text-overflow: clip; }
.av-tagx { display: inline-block; font-size: 12px; font-weight: 600; line-height: 20px; padding: 0 7px; margin-right: 3px; border-radius: var(--radius-full); border: 1px solid; white-space: nowrap; }
.av-tagx.urgent { color: var(--danger-fg); background: var(--danger-bg); border-color: var(--danger-border); }
.av-tagx.bulk { color: var(--info-fg); background: var(--info-bg); border-color: var(--info-border); }
.av-tagx.risk { color: var(--warning-fg); background: var(--warning-bg); border-color: var(--warning-border); }
.av-tagx.check { color: var(--v-700); background: var(--v-50); border-color: var(--v-200); }

/* 要发出的：两张表 */
.av-ship td { height: 36px; }
.av-ship td.pi { font-family: var(--font-mono); }
.av-ship tr.done td { color: var(--muted); }
.av-ship tr.skip td { color: var(--text-disabled); text-decoration: line-through; }
.av-ship .ok { color: var(--success-fg); }
.av-ship .warn { color: var(--warning-fg); }
.av-ship .muted { color: var(--muted); }
.av-ship .empty { color: var(--muted); text-align: center; height: 44px; }

.av-src { margin-top: 26px; font-size: 13px; color: var(--ink-2); }
.av-src summary { cursor: pointer; font-size: 13px; color: var(--accent); }
.av-src dl { margin: 10px 0 0; display: grid; grid-template-columns: max-content 1fr; gap: 6px 14px; }
.av-src dt { color: var(--muted); }
.av-src dd { margin: 0; line-height: 1.6; }
.av-src a { color: var(--accent); }
.av-src .err { color: var(--danger-fg); }

/* 右侧详情（点一行）。顶栏 sticky；z-index 高过表头 */
.av-panel { position: fixed; top: 0; right: 0; bottom: 0; width: min(440px, 100vw); z-index: 20; background: var(--surface);
  border-left: 1px solid var(--border-strong); box-shadow: var(--shadow-3); overflow-y: auto; }
.av-panel-top { position: sticky; top: 0; z-index: 1; display: flex; justify-content: space-between; align-items: flex-start; gap: 10px;
  padding: 12px 14px; background: var(--surface); border-bottom: 1px solid var(--border); }
.av-panel-top b { font-family: var(--font-mono); font-size: 17px; color: var(--ink); }
.av-panel-sub { margin-top: 2px; font-size: 13px; color: var(--muted); }
.av-x { border: 0; background: none; font-size: 24px; line-height: 1; color: var(--muted); cursor: pointer; padding: 0 4px; }
.av-x:hover { color: var(--ink); }
.av-panel-body { padding: 12px 14px 24px; font-size: 13px; color: var(--ink-2); line-height: 1.6; }
.av-panel-body h3 { margin: 16px 0 6px; font-size: 13px; color: var(--muted); font-weight: 600; }
.av-hl { border-radius: var(--radius-md); padding: 10px 12px; background: var(--surface-sunken); border-left: 4px solid var(--border-strong); }
.av-hl .big { font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.5; }
.av-hl .sub { margin-top: 2px; font-size: 12px; color: var(--muted); }
.av-hl.bad { background: var(--danger-bg); border-left-color: var(--danger-fg); }
.av-hl.warn { background: var(--warning-bg); border-left-color: var(--warning-fg); }
.av-hl.info { background: var(--info-bg); border-left-color: var(--info-fg); }
.av-hl.ok { background: var(--success-bg); border-left-color: var(--success-fg); }
.av-act { margin-top: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-md); background: var(--surface-sunken); display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.av-act input[type=date] { border: 1px solid var(--border-control); border-radius: var(--radius-sm); padding: 4px 6px; font-size: 13px; margin-left: 4px; }
.av-hint { flex-basis: 100%; margin: 0; font-size: 12px; color: var(--muted); line-height: 1.6; }
.av-msg2 { flex-basis: 100%; margin: 0; font-size: 12px; color: var(--muted); }
.av-msg2:empty { display: none; }
.av-msg2.err { color: var(--danger-fg); }
.av-whys { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.av-whys .av-tagx { margin-right: 6px; }
.av-fullitems { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.av-fullitems li { display: flex; align-items: center; gap: 10px; }
.av-fullitems img, .av-noimg { flex: 0 0 48px; width: 48px; height: 48px; object-fit: contain; border-radius: var(--radius-sm); background: var(--surface-sunken); }
.av-noimg { display: inline-flex; align-items: center; justify-content: center; font-size: 11px; color: var(--muted); }
.av-fullitems span { flex: 1; min-width: 0; color: var(--ink); }
.av-fullitems small { display: block; color: var(--muted); }
.av-facts { display: grid; grid-template-columns: max-content 1fr; gap: 4px 14px; margin: 0; }
.av-facts dt { color: var(--muted); }
.av-facts dd { margin: 0; word-break: break-all; }
.av-outfull { margin: 0 0 8px; line-height: 1.6; white-space: pre-line; }
.av-panel-acts { position: sticky; bottom: 0; display: flex; flex-wrap: wrap; gap: 8px; margin: 18px -14px -24px; padding: 10px 14px; background: var(--surface); border-top: 1px solid var(--border); }
/* 面板开着：宽屏时左边内容让出面板的宽度；窄屏就盖在上面 */
/* 表放不下（定宽列加起来 ~720px，产品、单号两列要留地方）就不让，盖在上面 */
@media (min-width: 1500px) { body.panel-open { padding-right: 440px; } }

/* 窄屏（仓库拿手机看）：一行变成一张小卡，表头藏起来 */
@media (max-width: 760px) {
  #av-q { min-width: 0; width: 100%; margin-left: 0; }
  .av-flabel2 { margin-left: 0; }
  .av-table:not(.av-ship) colgroup, .av-table:not(.av-ship) thead { display: none; }
  .av-table:not(.av-ship), .av-table:not(.av-ship) tbody { display: block; min-width: 0; }
  .av-table:not(.av-ship) tr { display: block; }
  .av-table:not(.av-ship) tr[data-id] { display: grid; grid-template-columns: 44px 1fr auto; column-gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--border-subtle); }
  .av-table:not(.av-ship) tr[data-id] td { display: block; height: auto; padding: 0; border: 0; line-height: 1.6; white-space: normal; }
  .av-table:not(.av-ship) tr[data-id] td.im { grid-row: 1 / span 4; }
  .av-table:not(.av-ship) tr[data-id] td.pi { grid-column: 2; }
  .av-table:not(.av-ship) tr[data-id] td.qty { grid-column: 3; grid-row: 1; padding: 0; }
  .av-table:not(.av-ship) tr[data-id] td.prod, .av-table:not(.av-ship) tr[data-id] td.when,
  .av-table:not(.av-ship) tr[data-id] td.tags, .av-table:not(.av-ship) tr[data-id] td.av-note { grid-column: 2 / span 2; }
  .av-table:not(.av-ship) tr[data-id] td.av-note { font-size: 12px; white-space: nowrap; }
  .av-table:not(.av-ship) tr[data-id] td.who { display: none; }
  .av-table:not(.av-ship) tr[data-id] td.tags.none { display: none; }
  .av-table tbody tr.urgent td:first-child, .av-table tbody tr.cur td:first-child { box-shadow: none; }
  .av-table:not(.av-ship) tr.urgent[data-id] { box-shadow: inset 3px 0 0 var(--danger-fg); }
  .av-table:not(.av-ship) tr.day td { display: block; height: auto; padding: 6px 10px; }
  .av-img { width: 44px; height: 44px; }
  .av-ship { display: block; overflow-x: auto; }
  /* 手机上三个开关竖着排，吸顶会占掉快三分之一屏：不吸顶，一个开关铺满一行 */
  .av-jumpbar { position: static; }
  .av-jump { width: 100%; }
  .av-jump button { flex: 1 1 100%; }
}

/* 要发出的：B2B / B2C 同一套列（用户 9-29「上下一样的，别错开来」） */
.av-ship td.qty { text-align: right; padding-right: 12px; }
.av-ship td.prod { color: var(--ink); }
.av-ship td.prod.muted { color: var(--muted); }
.av-ship .av-sku { margin-left: 6px; color: var(--muted); font-size: 12px; }
.av-ship .av-more { color: var(--muted); font-size: 12px; }
.av-ship td.who { color: var(--ink-2); }

/* 到货照片（用户 9-29：不用翻群、不用去 TC） */
.av-ph { display: inline-block; margin-left: 6px; font-size: 11px; line-height: 18px; padding: 0 6px; border-radius: var(--radius-full);
  color: var(--success-fg); background: var(--success-bg); border: 1px solid var(--success-border); }
.av-phpost { margin-bottom: 10px; }
.av-phcap { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.av-phcap small { display: block; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.av-thumbs { display: flex; flex-wrap: wrap; gap: 6px; }
.av-thumb { padding: 0; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-sunken); cursor: zoom-in; width: 76px; height: 76px; overflow: hidden; }
.av-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.av-thumb:hover { border-color: var(--border-strong); }
.av-loose { margin: 12px 0 4px; padding: 10px 12px; border: 1px dashed var(--border-strong); border-radius: var(--radius-md); background: var(--surface); }
.av-loose summary { cursor: pointer; font-size: 13px; color: var(--ink-2); }
.av-loose[open] summary { margin-bottom: 6px; }
.av-lightbox { position: fixed; inset: 0; z-index: 80; background: var(--overlay); display: flex; align-items: center; justify-content: center; }
.av-lightbox img { max-width: calc(100vw - 120px); max-height: calc(100vh - 110px); object-fit: contain; background: var(--surface); border-radius: var(--radius-sm); box-shadow: var(--shadow-3); }
.av-lb-x { position: absolute; top: 12px; right: 16px; border: 0; background: var(--surface); color: var(--ink); width: 36px; height: 36px; border-radius: var(--radius-full); font-size: 22px; cursor: pointer; }
.av-lb-nav { position: absolute; top: 50%; transform: translateY(-50%); border: 0; background: var(--surface); color: var(--ink); width: 40px; height: 56px; border-radius: var(--radius-md); font-size: 28px; cursor: pointer; }
.av-lb-nav.prev { left: 16px; }
.av-lb-nav.next { right: 16px; }
.av-lb-bar { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); display: flex; gap: 14px; align-items: center; max-width: calc(100vw - 40px);
  background: var(--surface); color: var(--ink); padding: 6px 14px; border-radius: var(--radius-full); font-size: 13px; box-shadow: var(--shadow-2); }
.av-lb-bar span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.av-lb-bar a { color: var(--accent); white-space: nowrap; }
@media (max-width: 640px) {
  .av-lightbox img { max-width: 100vw; max-height: calc(100vh - 120px); }
  .av-lb-nav { width: 34px; height: 46px; font-size: 22px; }
}

/* 运费（用户 9-29：到货这里顺便填） */
.av-fr { display: inline-block; margin-left: 6px; font-size: 11px; line-height: 18px; padding: 0 6px; border-radius: var(--radius-full);
  color: var(--ink-2); background: var(--surface-sunken); border: 1px solid var(--border); }
.av-fr.sug { color: var(--warning-fg); background: var(--warning-bg); border-color: var(--warning-border); }
.av-frs { margin: 0 0 8px; font-size: 13px; color: var(--muted); line-height: 1.6; }
.av-frs.ok { color: var(--success-fg); }
.av-frs.sug { color: var(--warning-fg); }
.av-frs .bad, .av-frsum.bad { color: var(--danger-fg); }
.av-frform { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 10px 12px; background: var(--surface-sunken); }
.av-frmode { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-bottom: 8px; font-size: 13px; }
.av-frpaid input[type=number], .av-frpaid input[type=text] { width: 90px; border: 1px solid var(--border-control); border-radius: var(--radius-sm); padding: 3px 6px; font-size: 13px; background: var(--surface); color: var(--ink); }
.av-frtab { width: 100%; margin-top: 8px; border-collapse: collapse; font-size: 13px; table-layout: fixed; }
.av-frtab td { padding: 4px 4px; border-bottom: 1px solid var(--border-subtle); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.av-frtab td:first-child { width: 34%; }
.av-frtab td:last-child { width: 120px; text-align: right; }
.av-frtab td.p { color: var(--muted); }
.av-frtab tr.me td { background: var(--info-bg); }
.av-frtab small { color: var(--info-fg); }
.av-frsum { margin: 6px 0 0; font-size: 12px; color: var(--muted); }
.av-fracts { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.av-frlist { margin: 0; padding-left: 18px; font-size: 13px; }
.av-frchat { margin-top: 6px; font-size: 12px; color: var(--muted); }
.av-frchat summary { cursor: pointer; }
.av-frchat pre { white-space: pre-wrap; font-family: inherit; margin: 6px 0 0; line-height: 1.6; }
.av-fexport { margin: 4px 0 0; font-size: 12px; color: var(--muted); }
.av-fexport a { color: var(--accent); }
.av-frform .av-link { border: 0; background: none; padding: 6px 0 0; cursor: pointer; }
.av-learn { margin: 6px 0 0; padding-left: 18px; font-size: 12px; line-height: 1.6; }
.av-learn small { color: var(--muted); }

/* 收货 / 出货切换（老板 9-29） */
.av-off { display: none !important; }
.av-tabs { display: inline-flex; gap: 0; margin: 12px 0 4px; border: 1px solid var(--border-strong); border-radius: var(--radius-full); overflow: hidden; background: var(--surface); }
.av-tabs button { border: 0; background: none; padding: 7px 26px; font: inherit; font-size: 15px; font-weight: 600; color: var(--ink-2); cursor: pointer; }
.av-tabs button + button { border-left: 1px solid var(--border-strong); }
.av-tabs button.on { background: var(--accent); color: var(--text-on-accent); }
.av-tabs button:hover:not(.on) { background: var(--surface-hover); }
.av-outmoney { margin: 4px 0 0; font-size: 13px; color: var(--ink-2); }
.av-ship .av-oday { color: var(--muted); font-size: 11px; font-family: inherit; }
.av-ship .av-fk { margin-left: 3px; font-size: 11px; color: var(--muted); }
.av-ship td b { font-weight: 600; color: var(--ink); }
/* 出货两张表 10 列、加起来约 1390px：窄屏时横着滚（每天几十行，表头 sticky 让给横滚）。
   2026-10-01：放得下时 arrivals.js stickTop 加 .fits 去掉横滚，表头才能吸在开关条下面（原来宽屏也一直横滚、表头不吸） */
.av-shipwrap { overflow-x: auto; }
.av-shipwrap.fits { overflow: visible; }
.av-shipwrap .av-ship { min-width: 1390px; }
.av-aih { margin: 4px 0 0; font-size: 12px; color: var(--info-fg); line-height: 1.6; }
.av-aih.muted { color: var(--muted); }
.av-aih small { color: var(--muted); margin-left: 4px; }
/* 收货三块切换（老板 9-30「做切换，不用拉得这么长」）：选中的那块实心，颜色跟块走（过去绿 / 该到没到橙 / 未来蓝） */
.av-jump button.on { color: var(--text-on-accent); }
.av-jump button.on b, .av-jump button.on small { color: var(--text-on-accent); }
.av-jump button.on .av-when-pill { background: var(--surface); }
.av-jump button.past.on { background: var(--success-fg); border-color: var(--success-fg); }
.av-jump button.past.on .av-when-pill { color: var(--success-fg); }
.av-jump button.late.on { background: var(--warning-fg); border-color: var(--warning-fg); }
.av-jump button.late.on .av-when-pill { color: var(--warning-fg); }
.av-jump button.future.on { background: var(--info-fg); border-color: var(--info-fg); }
.av-jump button.future.on .av-when-pill { color: var(--info-fg); }
/* 出货标签上写今天几单、几单还没发 */
.av-tabs button small { margin-left: 6px; font-size: 12px; font-weight: 400; opacity: .85; }

/* 10-01：收货「过去」「未来」各一排日子按钮（照出货）；出货一行能点开看详情 */
.av-daypick { margin-top: 8px; flex-basis: 100%; }
.av-ship tbody tr[data-ship] { cursor: pointer; }
.av-ship tbody tr[data-ship]:hover td { background: var(--surface-hover); }
.av-ship tbody tr.cur td { background: var(--accent-soft-bg); }
.av-track { margin: 0 0 8px; padding: 8px 10px; font-size: 12px; line-height: 1.6; color: var(--ink-2); background: var(--surface-sunken); border-radius: 8px; }
.av-track > b { display: block; color: var(--ink); }
.av-track > div { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.av-track small { color: var(--muted); }
.av-inlist { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.8; color: var(--ink-2); }

/* 手机上（2026-10-01 老板：仓库拿手机收一下货，别全摆出来）：顶上那排（催货链接 / 数据几点 / 刷新）挤成两行；
   一大块筛选收进「筛选」按钮（shared/phone-kit.js，接在收货 / 出货后面），搜索框留在外面 */
@media (max-width: 640px) {
  .av-app { padding-top: 10px; }
  .av-head { gap: 0; }
  .av-head > div:first-child:empty { display: none; }
  .av-head-right { width: 100%; gap: 4px 10px; }
  .av-head-right .av-fresh { order: 3; flex-basis: 100%; }
  .av-head-right .av-btn { margin-left: auto; padding: 4px 10px; }
  .av-tabs { margin-top: 8px; }
  .av-tabs + .phf-btn { max-width: calc(100% - 150px); margin-left: 8px; }
  .av-panel { width: 100vw; border-left: 0; }
}

/* 2026-10-04 老板：可视化——标记 / 认领 / 过期换成全站同一套状态牌、块标题带图标、详情里一排「进来到出去」进度点（shared/viz.css） */
.av-table td.tags .sqv-pill { margin-right: 3px; }
.av-table td .sqv-pill { vertical-align: middle; }
.av-whys .sqv-pill { margin-right: 6px; }
.av-sec-head h2 .av-hico { display: inline-grid; place-items: center; width: 26px; height: 26px; margin-right: 8px; border-radius: 8px;
  background: var(--surface); color: inherit; vertical-align: middle; }
.av-sec.out .av-sec-head h2 .av-hico { background: var(--accent-soft-bg); color: var(--accent); }
.av-sec .sqv-empty { margin-top: 8px; border: 1px dashed var(--border); border-radius: var(--radius-md); background: var(--surface); }
.av-stages { margin: 10px 0 2px; padding: 10px 4px 8px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); }
