/* finesse · register=h5 · morph=A-app-shell + product · A=unchanged tokens (burnt orange on warm paper, deep brown ink) · B=15/13 system sans, tabular mono numbers
 * C=sticky title bar + one-line scrolling chips + hairline list rows + stacked decks · D=CSS only (deck fan, push) · E=unchanged house furniture · SOUL=4 SPECTACLE=2 DENSITY=7 */
/* 总经理手机版（10-26 重构，static/m/gm.js）：只对 body.gx 生效。顶栏标题 17、正文 15、次要 13；分类标签一行横滑；列表一行一条、细线分隔；同一类几件叠成一摞 */
.gx #s-todo, .gx #s-dash, .gx #s-work, .gx #s-msg, .gx #s-gsettle { padding-top: 0; }
.g-top { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; gap: 6px; min-height: 48px; margin: 0 -18px 2px; padding: calc(env(safe-area-inset-top) + 8px) 12px 6px 18px;
  background: rgba(243, 238, 230, .92); -webkit-backdrop-filter: blur(16px) saturate(150%); backdrop-filter: blur(16px) saturate(150%); }
.g-top h1 { flex: 1; min-width: 0; font-size: 17px; font-weight: 800; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-back { flex: none; width: 36px; height: 40px; margin-left: -10px; display: grid; place-items: center; color: var(--ink-1); border-radius: 10px; }
.g-back svg { width: 22px; height: 22px; }
.g-tr { flex: none; display: flex; align-items: center; gap: 2px; }
.g-ib { position: relative; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; color: var(--ink-1); }
/* 图标底下一条纯色圆角粗横线（10-26 用户：「弃用水彩底，改成一个纯彩色的圆角加粗横线，放在 icon 的底部靠上一点点的位置」），垫在线条下面 */
.g-ib::before { content: ''; position: absolute; left: 50%; top: 22px; width: 20px; height: 5px; margin-left: -10px; border-radius: 99px; background: #a9d2b5; pointer-events: none; }  /* 浅绿（10-26 用户：「横线颜色可以再浅一点，可以用浅绿色」） */
.g-ib svg { position: relative; }
.g-ib svg { width: 22px; height: 22px; }
.g-tb { height: 34px; padding: 0 8px; font-size: 14px; font-weight: 700; color: var(--accent); border-radius: 10px; }
.g-back:active, .g-ib:active, .g-tb:active { background: var(--panel-2); }
.g-hook { margin: 0 2px 8px; font-size: 13px; line-height: 1.5; color: var(--ink-3); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }

/* 分类标签：一行，左右滑，不换行；数为 0 的变浅；超过 5 个的收进「更多」 */
.g-chips { display: flex; gap: 6px; margin: 0 -18px 10px; padding: 2px 18px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.g-chips::-webkit-scrollbar { display: none; }
.g-chips button { flex: none; height: 32px; padding: 0 12px; display: inline-flex; align-items: center; gap: 5px; border-radius: 99px; background: var(--bg); border: 1px solid var(--line-2);
  font-size: 13.5px; font-weight: 700; color: var(--ink-2); white-space: nowrap; -webkit-tap-highlight-color: transparent; }
.g-chips button b { font-family: var(--mono); font-size: 12.5px; font-weight: 700; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.g-chips button.on { background: var(--ink-1); border-color: transparent; color: var(--bg); }
.g-chips button.on b { color: var(--accent-on-ink, #f0b38f); }
.g-chips button.z0 { opacity: .5; }
.g-chips .g-more svg { width: 15px; height: 15px; }
.g-chips button:active { transform: scale(.96); }

/* 分组标题 */
.g-lane { display: flex; align-items: baseline; gap: 6px; margin: 14px 4px 6px; font-size: 13px; font-weight: 800; color: var(--ink-2); }
.g-lane small { font-size: 12px; font-weight: 500; color: var(--ink-3); }
.g-fold { margin-left: auto; height: 26px; padding: 0 8px; font-size: 13px; font-weight: 700; color: var(--accent); border-radius: 8px; }
.g-sec:first-of-type .g-lane, .g-chips + .g-sec .g-lane { margin-top: 4px; }

/* 列表：一行一条，细线分隔；左边小标记，右边要办的事 */
.g-list { background: var(--bg); border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.g-row { position: relative; display: flex; align-items: center; gap: 10px; width: 100%; min-height: 58px; padding: 9px 10px 9px 12px; text-align: left; -webkit-tap-highlight-color: transparent; }
.g-row + .g-row { border-top: 1px solid var(--line); }
.g-row:active { background: var(--panel-2); }
.g-row.late::before, .g-dc.late::before { content: ''; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 0 3px 3px 0; background: var(--down); }
.g-b { flex: none; width: 26px; height: 26px; display: grid; place-items: center; border-radius: 8px; font-size: 12.5px; font-weight: 800; background: var(--panel-2); color: var(--ink-2); }
.g-b.r { background: var(--down-soft); color: var(--down); }
.g-b.a { background: var(--accent-soft); color: var(--accent); }
.g-b.w { background: rgba(154, 101, 18, .12); color: var(--warn); }
.g-b.g { background: var(--teal-soft); color: var(--teal); }
.g-m { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.g-t { font-size: 15px; font-weight: 700; line-height: 1.35; color: var(--ink-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-s { font-size: 13px; line-height: 1.4; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-s.two { white-space: normal; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.g-s .late, .g-s b.late { color: var(--down); font-weight: 700; }
.g-a { flex: none; display: inline-flex; align-items: center; gap: 1px; font-size: 13px; font-weight: 700; color: var(--accent); }
.g-a svg { width: 16px; height: 16px; color: var(--ink-3); }
.g-amt { font-size: 15px; font-weight: 700; color: var(--ink-1); letter-spacing: -.01em; }
.g-t .num, .g-s .num { font-family: var(--mono); font-variant-numeric: tabular-nums; }

/* 同一类几件叠成一摞（FX.deck）：每张 62px，后面露两道边，点一下按顺序展开 */
.g-deck { --h: 62px; --gap: 6px; --peek: 7px; }
.g-dc { display: flex; align-items: center; gap: 10px; padding: 0 10px 0 12px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; text-align: left; overflow: hidden;
  box-shadow: 0 1px 2px rgba(60, 38, 20, .05); -webkit-tap-highlight-color: transparent; }
.fx-deck.open .g-dc:active { background: var(--panel-2); }

/* 消息 */
.g-msg { align-items: flex-start; padding-top: 11px; padding-bottom: 11px; }
.g-msg.unread .g-t { color: var(--ink-1); }
.g-msg:not(.unread) .g-t { font-weight: 600; color: var(--ink-2); }
.g-msg.void .g-t { text-decoration: line-through; color: var(--ink-3); }
.g-ud { flex: none; width: 8px; height: 8px; margin-top: 6px; border-radius: 50%; background: var(--down); }
.g-sheet-b { font-size: 15px; line-height: 1.6; white-space: pre-wrap; margin: 6px 0 10px; }

/* 看板 */
.g-cells { display: grid; gap: 6px; }
.g-cells.c4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.g-cells.c2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.g-cell { display: flex; flex-direction: column; gap: 1px; min-width: 0; padding: 9px 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; text-align: left; }
.g-cells.in .g-cell { background: var(--panel-2); border-color: transparent; }
button.g-cell:active { background: var(--panel-2); }
.g-cell .k { font-size: 12px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-cell .v { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 18px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-cell .v small { font-family: var(--sans); font-size: 11.5px; font-weight: 700; color: var(--ink-3); margin-left: 2px; }
.g-cell .s { font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-card { display: block; width: 100%; margin-top: 10px; padding: 12px 12px 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; text-align: left; }
button.g-card:active { background: var(--panel-2); }
.g-ch { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.g-ch b { font-size: 15px; font-weight: 800; }
.g-ch small { flex: 1; min-width: 0; font-size: 12px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.g-ch svg { width: 16px; height: 16px; color: var(--ink-3); }
.g-big { display: flex; flex-direction: column; gap: 2px; }
.g-big .v { font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 24px; font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.g-big .v small { font-family: var(--sans); font-size: 12px; color: var(--ink-3); margin-left: 3px; letter-spacing: 0; }
.g-card .s { font-size: 12.5px; color: var(--ink-3); line-height: 1.5; margin: 0; }
.g-card p.s { margin-top: 6px; }
.g-bars { display: grid; gap: 6px; margin-top: 10px; }
.g-bars .r { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: 8px; font-size: 13px; }
.g-bars .r i { height: 6px; border-radius: 99px; background: var(--panel-2); overflow: hidden; }
.g-bars .r em { display: block; height: 100%; background: var(--teal); border-radius: 99px; }
.g-bars .r b { font-family: var(--mono); font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums; }
.g-sbars { height: 108px; }
.g-kv { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 12px; font-size: 13px; }
.g-kv span { color: var(--ink-3); } .g-kv b { font-weight: 600; }

/* 工作台：全部功能宫格，4 列 */
.g-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; padding: 10px 6px 6px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; }
.g-app { position: relative; display: flex; flex-direction: column; align-items: center; gap: 5px; min-height: 76px; padding: 6px 2px; border-radius: 12px; -webkit-tap-highlight-color: transparent; }
.g-app:active { background: var(--panel-2); }
.g-ic { position: relative; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 13px; background: var(--accent-soft); color: var(--accent); font-size: 17px; font-weight: 800; }
.g-ic i { position: absolute; top: -5px; right: -8px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 99px; background: var(--down); color: #fffaf4; font-style: normal; font-size: 11px; font-weight: 800; line-height: 18px; text-align: center; font-family: var(--mono); box-shadow: 0 0 0 2px var(--bg); }
.g-al { font-size: 12.5px; font-weight: 600; color: var(--ink-1); text-align: center; line-height: 1.25; }
.g-app.soon .g-ic { background: var(--panel-2); color: var(--ink-3); }
.g-app.soon .g-al { color: var(--ink-3); }
.g-app small { font-size: 10.5px; color: var(--ink-3); line-height: 1; }
.g-foot { margin: 14px 6px 0; font-size: 12.5px; color: var(--ink-3); line-height: 1.5; }

/* 结算付款 */
.g-search { display: flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px; margin-bottom: 8px; background: var(--bg); border: 1px solid var(--line-2); border-radius: 12px; }
.g-search svg { width: 18px; height: 18px; color: var(--ink-3); flex: none; }
.g-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: none; font-size: 15px; }
.g-filter { display: inline-flex; align-items: center; gap: 2px; height: 30px; padding: 0 6px 0 10px; margin-bottom: 8px; border-radius: 99px; background: var(--bg); border: 1px solid var(--line-2); font-size: 13px; font-weight: 700; color: var(--ink-2); }
.g-filter svg { width: 15px; height: 15px; }
.g-cnt { margin: 0 4px 6px; font-size: 12.5px; color: var(--ink-3); }
.g-pick { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 4px; }  /* 胶囊按钮（10-26 用户：「弹出菜单改成每行胶囊式按钮」） */
.g-pick button { display: inline-flex; align-items: center; gap: 6px; min-height: 42px; padding: 8px 16px; border-radius: 99px; background: var(--bg); border: 1px solid var(--line-2); font-size: 15px; font-weight: 700; color: var(--ink-2); text-align: left; -webkit-tap-highlight-color: transparent; }
.g-pick button.on { background: var(--ink-1); border-color: transparent; color: var(--bg); }
.g-pick button.z0 { opacity: .5; }
.g-pick button:active { transform: scale(.96); }
.g-pick button b { font-family: var(--mono); font-size: 13.5px; font-weight: 700; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.g-pick button.on b { color: var(--accent-on-ink, #f0b38f); }

.g-empty { display: flex; flex-direction: column; gap: 4px; align-items: center; text-align: center; padding: 28px 16px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; }
.g-empty b { font-size: 15px; } .g-empty span { font-size: 13px; color: var(--ink-3); line-height: 1.5; }
.g-load { padding: 28px 0; text-align: center; font-size: 13px; color: var(--ink-3); }

/* 底部「消息」未读数 */
.gx .tabbar > button { position: relative; }
.g-dot { position: absolute; top: 4px; left: calc(50% + 6px); min-width: 17px; height: 17px; padding: 0 4px; border-radius: 99px; background: var(--down); color: #fffaf4; font-style: normal;
  font-size: 10.5px; font-weight: 800; line-height: 17px; text-align: center; font-family: var(--mono); box-shadow: 0 0 0 2px var(--page); }

/* 工作台里打开的旧页面（订单、合同、入库、发票、库存）：字号跟新版一致，分段按钮改成一行横滑 */
.gx .h-screen { font-size: 20px; }
.gx .top { margin: 0 2px 10px; align-items: center; }
.gx .top .g-back { margin-right: 2px; }
.gx .row { min-height: 56px; padding: 10px 12px; gap: 10px; }
.gx .row .t { font-size: 15px; }
.gx .row .s, .gx .meta { font-size: 13px; }
.gx .badge { min-width: 26px; height: 26px; padding: 0 6px; font-size: 12.5px; border-radius: 8px; }
.gx .view .hseg, .gx #detail .hseg { display: flex; gap: 6px; padding: 2px 0; margin: 2px 0 10px; background: none; border: 0; border-radius: 0; overflow-x: auto; scrollbar-width: none; }
.gx .hseg::-webkit-scrollbar, .gx .quick::-webkit-scrollbar { display: none; }
.gx .view .hseg button, .gx #detail .hseg button { flex: none; height: 32px; padding: 0 12px; border-radius: 99px; background: var(--bg); border: 1px solid var(--line-2); font-size: 13.5px; box-shadow: none; }
.gx .view .hseg button b, .gx #detail .hseg button b { font-size: 12.5px; }
.gx .view .hseg button.on, .gx #detail .hseg button.on { background: var(--ink-1); border-color: transparent; box-shadow: none; }
.gx .quick:has(> button[data-c]), .gx .quick.ib-fl { flex-wrap: nowrap; overflow-x: auto; gap: 6px; scrollbar-width: none; }  /* 只有分类筛选（按钮带 data-c）一行横滑 */
.gx .quick:has(> button[data-c]) button, .gx .quick.ib-fl button { flex: none; height: 32px; padding: 0 12px; font-size: 13.5px; }
/* 弹出面板里的选项（答复不合格、处置结果……）照常换行、全部露出来，按钮大一号（10-26 用户：「bottom sheet 太矮了……让回复的选择按钮全部露出来，可以换行，按钮也可以稍微大一点」） */
.gx #sheet .quick { flex-wrap: wrap; overflow: visible; gap: 8px; }
.gx #sheet .quick button { flex: none; min-height: 42px; height: auto; padding: 8px 16px; font-size: 15px; line-height: 1.35; white-space: normal; text-align: left; }
.gx .search { height: 40px; margin-top: 8px; border-radius: 12px; }
.gx .search input { font-size: 15px; }
.gx .lane { margin: 14px 4px 6px; font-size: 13px; }
.gx .st .v { font-size: 19px; }
@media (prefers-reduced-motion: reduce) { .g-chips button:active, .g-app:active { transform: none; } }
/* 线条图标（10-26 用户：不要写个字当 icon，统一用电脑端导航栏那种线条简约图标） */
.g-b svg { width: 16px; height: 16px; }
.g-ic svg { width: 22px; height: 22px; }
/* 看板：个别数按重要性上色（r 门口有车等 · a 等总经理办 · w 等别人办 · g 已完成 · c 在路上） */
.g-cell.t-r { background: var(--down-soft); border-color: transparent; } .g-cell.t-r .v { color: var(--down); }
.g-cell.t-a { background: var(--accent-soft); border-color: transparent; } .g-cell.t-a .v { color: var(--accent); }
.g-cell.t-w { background: rgba(154, 101, 18, .10); border-color: transparent; } .g-cell.t-w .v { color: var(--warn); }
.g-cell.t-g { background: var(--up-soft); border-color: transparent; } .g-cell.t-g .v { color: var(--up); }
.g-cell.t-c { background: var(--teal-soft); border-color: transparent; } .g-cell.t-c .v { color: var(--teal); }
.g-cell[class*=" t-"] .k, .g-cell[class*=" t-"] .s { color: var(--ink-2); }
/* 柱子按当天吨数算像素高度：不再被上下的数字、日期挤成一样高 */
.g-sbars { height: 112px; }
.g-sbars .b i { flex: none; }

/* 页面切换（10-26 用户：「切换页面现在的动效，收缩成一个圆的，不好，改成高级感更强的页面切换方式」）：
   原生推入——新页面从右边滑进来、左侧带一道阴影，底下的页面往左退一段、略暗；返回反过来。底部栏切换不加动效 */
.gx { --g-ease: cubic-bezier(.32, .86, .28, 1); }
.gx .push.fx-rv { clip-path: none !important; transform: translateX(100%) !important; transition: transform .38s cubic-bezier(.4, 0, .6, 1) !important; will-change: transform;
  box-shadow: -14px 0 32px -20px rgba(31, 23, 16, .55); }
.gx .push.fx-rv.fx-rv-in { transform: none !important; transition: transform .46s var(--g-ease) !important; }
.gx .fx-rv > .push-body, .gx .fx-rv:not(.fx-rv-in) > .push-body { transform: none; opacity: 1; }
.gx .view { transition: transform .46s var(--g-ease), filter .46s var(--g-ease); }
.gx .phone:has(#detail.fx-rv-in) .view.on { transform: translateX(-24%); filter: brightness(.94); }
.gx .view.g-push { animation: g-push .46s var(--g-ease); }
.gx .view.g-pop { animation: g-pop .46s var(--g-ease); }
@keyframes g-push { from { transform: translateX(100%); box-shadow: -14px 0 32px -20px rgba(31, 23, 16, .55); } to { transform: none; } }
@keyframes g-pop { from { transform: translateX(-24%); filter: brightness(.94); } to { transform: none; filter: none; } }
@media (prefers-reduced-motion: reduce) {
  .gx .push.fx-rv, .gx .push.fx-rv.fx-rv-in, .gx .view { transition: none !important; }
  .gx .phone:has(#detail.fx-rv-in) .view.on { transform: none; filter: none; }
  .gx .view.g-push, .gx .view.g-pop { animation: none; }
}
/* 发通知（整屏推入）、已发 */
.g-form { display: grid; gap: 6px; }
.g-fl { margin-top: 10px; font-size: 13px; font-weight: 700; color: var(--ink-2); }
.g-form textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--line-2); border-radius: 12px; background: var(--bg); font-size: 15px; line-height: 1.55; resize: vertical; }
.g-seg3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 3px; background: var(--panel-2); border-radius: 12px; }
.g-seg3 button { height: 34px; border-radius: 9px; font-size: 14px; font-weight: 700; color: var(--ink-2); }
.g-seg3 button.on { background: var(--bg); color: var(--ink-1); box-shadow: 0 1px 3px rgba(60, 38, 20, .12); }
.g-checks { display: grid; margin-top: 4px; background: var(--bg); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.g-checks label { display: flex; align-items: center; gap: 10px; min-height: 46px; padding: 0 12px; font-size: 15px; }
.g-checks label + label { border-top: 1px solid var(--line); }
.g-checks label[hidden] { display: none; }
.g-checks input { width: 20px; height: 20px; accent-color: var(--accent); flex: none; }
.g-checks span { flex: 1; min-width: 0; }
.g-checks small { font-size: 12.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 55%; }
#nc-users .g-search { margin-top: 4px; }
.g-cell .v em { font-style: normal; font-size: 14px; font-weight: 600; color: var(--ink-3); }  /* 今日入库「已入库/计划」：计划数小一号 */
/* 工作台彩色图标（10-26 用户：「彩色的精致 icon，类似 google 的 material design 那种风格」）：每个功能一种颜色的圆角方块，自上而下由浅到深，柔和同色投影，白色图标 */
.g-ic.g-mat { width: 46px; height: 46px; border-radius: 14px; color: #fff; background: var(--c);
  background: linear-gradient(160deg, color-mix(in oklab, var(--c) 72%, #fff) 0%, var(--c) 58%, color-mix(in oklab, var(--c) 88%, #000) 100%);
  box-shadow: 0 6px 14px -8px color-mix(in oklab, var(--c) 80%, transparent), inset 0 1px 0 rgba(255, 255, 255, .28); }
.g-ic.g-mat svg { width: 24px; height: 24px; stroke-width: 2; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .12)); }
.g-app.soon .g-ic.g-mat { color: #fff; background: var(--c); background: linear-gradient(160deg, color-mix(in oklab, var(--c) 72%, #fff) 0%, var(--c) 58%, color-mix(in oklab, var(--c) 88%, #000) 100%); opacity: .42; box-shadow: none; }
.g-app.soon .g-al { color: var(--ink-3); }
.g-app:active .g-ic.g-mat { transform: scale(.94); }
@media (prefers-reduced-motion: reduce) { .g-app:active .g-ic.g-mat { transform: none; } }
/* 底部栏（10-26 用户：选中时「线条微动后变化成 icon 的最终形态」、「每个选中后都有部分是主题色」）：线条描出 + 轻弹，标 acc 的部分主题色；浅橙胶囊从中间展开 */
.gx .tabbar > button .g-ti { position: relative; width: 56px; height: 30px; display: grid; place-items: center; }
.gx .tabbar > button .g-ti::before { content: ''; position: absolute; inset: 0; border-radius: 99px; background: rgba(196, 86, 31, .14); transform: scaleX(.35); opacity: 0; transition: transform .34s var(--g-ease), opacity .18s; }
.gx .tabbar > button.on .g-ti::before { transform: none; opacity: 1; }
.gx .tabbar > button .g-ti svg, .gx .tabbar > button.on .g-ti svg { position: relative; width: 24px; height: 24px; padding: 0; border-radius: 0; background: none; color: var(--ink-3); transition: color .2s; }
.gx .tabbar > button.on .g-ti svg { color: var(--ink-1); animation: g-tpop .4s var(--g-ease); }
.gx .tabbar > button.on .g-ti svg .acc { stroke: var(--accent); }
.gx .tabbar > button.on .g-ti svg [pathLength] { animation: g-draw .38s var(--g-ease) both; }
.gx .tabbar > button.on .g-ti svg .acc[pathLength] { animation-delay: .07s; }
.gx .tabbar > button.on { color: var(--ink-1); }
@keyframes g-draw { from { stroke-dasharray: 1; stroke-dashoffset: 1; } to { stroke-dasharray: 1; stroke-dashoffset: 0; } }
@keyframes g-tpop { 0% { transform: scale(.86); } 60% { transform: scale(1.06); } 100% { transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .gx .tabbar > button.on .g-ti svg, .gx .tabbar > button.on .g-ti svg [pathLength] { animation: none; }
  .gx .tabbar > button .g-ti::before { transition: none; }
}
/* 工作台大图标：Q 版贴纸小插画（B1 带贴纸，10-26 用户选定），不要彩色方块底 */
.g-ic.g-artw { width: 52px; height: 48px; border-radius: 0; background: none; color: inherit; box-shadow: none; }
.g-ic.g-artw svg { width: 50px; height: 50px; overflow: visible; }
.g-ic.g-artw i { top: -4px; right: -4px; }
.g-app.soon .g-ic.g-artw { background: none; opacity: .42; }
.g-app:active .g-ic.g-artw { transform: scale(.94); }
/* 近 10 天入库：柱子浅色，最高的那天深色（10-26 用户：「柱子用浅色系，最高的那天也要用黑色显示」） */
.gx .g-sbars .b i { background: #ecd3bf; }
.gx .g-sbars .b.mx i { background: var(--ink-1); }
.gx .g-sbars .b.mx em { color: var(--ink-1); }
/* 工作台顶部 7 天天气：只用图标，不放天气文字；雨雪天浅青底、雨休虚线框 */
.g-wx { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; padding: 8px 6px; margin-bottom: 4px; background: var(--bg); border: 1px solid var(--line); border-radius: 14px; }
.g-wd { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 4px 0 5px; border-radius: 10px; border: 1px solid transparent; }
.g-wd .w { font-size: 12px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.g-wd svg { width: 26px; height: 26px; }
.g-wd .d { font-family: var(--mono); font-size: 10.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.g-wd.wet { background: var(--teal-soft); }
.g-wd.wet .w { color: var(--teal); }
.g-wd.rest { border: 1px dashed rgba(46, 107, 99, .55); }
/* 通用详情（左项目、右内容）、旧页面文字小标记换成的图标 */
.g-kvl { margin-top: 4px; }
.g-kvr { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 10px; padding: 11px 14px; font-size: 14.5px; line-height: 1.5; }
.g-kvr + .g-kvr { border-top: 1px solid var(--line); }
.g-kvr span { color: var(--ink-3); font-size: 13.5px; }
.g-kvr b { font-weight: 600; color: var(--ink-1); overflow-wrap: anywhere; }
.g-kvr a { color: var(--accent); font-weight: 700; }
.g-wide { display: flex; justify-content: center; width: 100%; margin-top: 12px; }
.g-ph { margin-top: 12px; } .g-ph img { width: 100%; border-radius: 12px; display: block; }
.gx .badge.g-bi { font-size: 0; padding: 0; min-width: 26px; width: 26px; height: 26px; }
.gx .badge.g-bi svg { width: 16px; height: 16px; }
/* 财务待办顶上的关键指标：数值较长（「0 车 / 计划 58 车」）时换行，不截断 */
.g-nums { margin-bottom: 4px; }
.g-nums .g-cell .v { font-size: 16px; white-space: normal; overflow: visible; line-height: 1.3; }
.g-nums .g-cell .s { white-space: normal; }
/* baseline 收尾（10-26）：手机上最小字号 11.5 */
.g-wd .d { font-size: 11.5px; font-family: var(--sans); }
.gx .s-bars .b small { font-size: 11.5px; letter-spacing: -.02em; }
.g-ic i, .gx .g-dot { font-size: 11.5px; }
.g-app small { font-size: 11.5px; }

/* 待办分组标题行右边的操作（运力调度「全部确认」，10-26） */
.gx .g-lane .g-tb { margin-left: auto; height: 28px; padding: 0 6px; font-size: 13.5px; }
.gx .g-lane .g-tb + .g-fold { margin-left: 4px; }
/* 运力调度「运输公司」（沿用经理 app 那一页）：乡镇筛选一行横滑，和新外壳的分类一样 */
.gx #cr-towns, .gx #ld-areas { flex-wrap: nowrap; overflow-x: auto; gap: 6px; scrollbar-width: none; margin-left: -2px; margin-right: -2px; }
.gx #cr-towns::-webkit-scrollbar, .gx #ld-areas::-webkit-scrollbar { display: none; }
.gx #cr-towns button, .gx #ld-areas button { flex: none; height: 32px; padding: 0 12px; font-size: 13.5px; }
