/* LEMPFA 界面 tokens + 组件（ADR-0002：一份手写 CSS，页面只用这里的类，不自己画基础样式）。
   视觉底稿：67b7312:docs/designs/boss-day-2026-09-23/claude-2-*.html、67b7312:docs/designs/attendance-2026-09-24/。
   颜色只有四种意思：红 = 出问题，黄 = 要处理，绿 = 在班 / 好，蓝 = 有人找你；其余黑白灰。 */
:root{
  --bg:#fff; --soft:#f4f4f5; --soft2:#fafafa; --line:#e4e4e7; --hair:#f0f0f1;
  --ink:#18181b; --ink2:#3f3f46; --ink3:#71717a; --ink4:#a1a1aa; --ink5:#d4d4d8;
  --red:#b42318; --red-dot:#dc2626; --red-bg:#fff1f0; --red-line:#fecaca;
  --amber:#9a4b00; --amber-dot:#f59e0b; --amber-bg:#fff4e5; --amber-line:#fed7aa;
  --green:#15803d; --green-dot:#16a34a; --green-bg:#ecfdf3;
  --blue:#1d4ed8; --blue-dot:#2563eb; --blue-bg:#eef4ff;
  --r-s:10px; --r-m:14px; --r-l:18px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei","Noto Sans SC",Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
/* 手机（10-01）：点按只闪一层很淡的灰（安卓默认是一大块蓝 / 灰）；manipulation 去掉双击放大，点按钮不再等 300 ms */
a,button,summary,label,select,[role=button]{-webkit-tap-highlight-color:rgba(0,0,0,.06);touch-action:manipulation}
.n{font-variant-numeric:tabular-nums}
.muted{color:var(--ink3)}
svg.i{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ---------- 手机页面外壳 ---------- */
.app{max-width:480px;margin:0 auto;min-height:100vh;min-height:100dvh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.app.wide{max-width:640px}   /* 看板那一套的页（/estado /imprimir）和看板同宽：panel/static/panel/board.css 的 #app 也是 640（10-23） */
.app.nonav{padding-bottom:24px}
.hd{display:flex;align-items:center;gap:4px;height:56px;padding:0 12px 0 6px;position:sticky;top:0;background:rgba(255,255,255,.96);z-index:5}
.hd .back{width:40px;height:40px;display:grid;place-items:center}
.hd h1{flex:1;margin:0 0 0 6px;font-size:19px;font-weight:600}
.hd .side{font-size:13px;color:var(--ink4)}
.nav{position:fixed;left:0;right:0;bottom:0;height:calc(72px + env(safe-area-inset-bottom));padding:8px 0 env(safe-area-inset-bottom);display:flex;background:rgba(255,255,255,.97);border-top:1px solid var(--hair);z-index:5}
.nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:10.5px;font-weight:500;color:var(--ink4);position:relative}
.nav a.on{color:var(--ink)}.nav svg.i{width:24px;height:24px;stroke-width:1.6}
.badge{position:absolute;top:-2px;left:54%;min-width:17px;height:17px;border-radius:9px;background:var(--red-dot);color:#fff;font-size:10.5px;font-weight:600;line-height:17px;text-align:center;padding:0 4px}

/* ---------- 组件 ---------- */
.stt{display:flex;align-items:center;gap:8px;margin:2px 16px 0;min-height:36px;padding:6px 14px;border-radius:12px;background:var(--soft);font-size:13.5px;font-weight:500;color:var(--ink2)}
.stt[hidden],.note[hidden],.err[hidden]{display:none}
.stt.w{background:var(--amber-bg);color:var(--amber)}.stt.r{background:var(--red-bg);color:var(--red)}.stt.b{background:var(--blue-bg);color:var(--blue)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--ink4);flex:none}
.dot.g{background:var(--green-dot)}.dot.w{background:var(--amber-dot)}.dot.r{background:var(--red-dot)}.dot.b{background:var(--blue-dot)}
.hero{margin:10px 16px 0;padding:16px;border-radius:var(--r-l);background:var(--soft)}
.hero .l{display:flex;justify-content:space-between;font-size:13px;font-weight:500;color:var(--ink3)}
.hero .v{font-size:30px;font-weight:600;letter-spacing:-.02em;margin-top:6px;line-height:1.15}
.hero .v small{font-size:13px;font-weight:500;color:var(--ink3);letter-spacing:0;margin-left:8px}
.grp{margin:10px 16px 0;padding:4px 16px;border-radius:var(--r-l);background:var(--soft)}
.grp.w{background:var(--amber-bg);box-shadow:inset 0 0 0 1.5px var(--amber-line)}
.grp.r{background:var(--red-bg)}
.grp>.t{font-size:13px;font-weight:600;color:var(--ink3);padding:10px 0 2px}
.row{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 0}
.row+.row{border-top:1px solid rgba(0,0,0,.05)}
.row .a{flex:1;min-width:0}.row .a b{display:block;font-size:15px;font-weight:600}
.row .a small{display:block;font-size:12.5px;color:var(--ink3);margin-top:1px}
.row .v{font-weight:500;white-space:nowrap}.row.wr .v,.row.wr .a b{color:var(--amber)}.row.bad .v,.row.bad .a b{color:var(--red)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:var(--r-m);border:0;background:var(--ink);color:#fff;font-size:15.5px;font-weight:600;cursor:pointer}
.btn.sec{background:var(--soft);color:var(--ink)}.btn.sm{min-height:36px;padding:0 14px;border-radius:var(--r-s);font-size:13.5px}
.btn.block{display:flex;width:calc(100% - 32px);margin:12px 16px 0}
.btn:disabled{background:var(--line);color:var(--ink4)}
.note{margin:12px 22px 0;font-size:13px;color:var(--ink4)}
.err{margin:10px 16px 0;padding:10px 14px;border-radius:12px;background:var(--red-bg);color:var(--red);font-weight:600}
.okmsg{margin:10px 16px 0;padding:10px 14px;border-radius:12px;background:var(--green-bg);color:var(--green);font-weight:600}
.inp{width:100%;min-height:46px;padding:0 14px;border-radius:12px;border:0;background:#fff;box-shadow:inset 0 0 0 1.5px var(--line);font-size:16px}
.inp:focus{outline:none;box-shadow:inset 0 0 0 2px var(--ink)}
.seg{display:flex;gap:4px;margin:4px 16px 0;background:var(--soft);border-radius:12px;padding:3px}
.seg a{flex:1;text-align:center;height:34px;line-height:34px;border-radius:10px;font-size:14px;font-weight:500;color:var(--ink2)}
.seg a.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06)}
.per{display:flex;align-items:center;gap:6px;height:44px;padding:0 12px}
.per a{width:36px;height:36px;display:grid;place-items:center;color:var(--ink2)}.per b{font-size:16px}.per span{flex:1;font-size:13px;color:var(--ink4);margin-left:6px}
.tbl{width:100%;border-collapse:collapse}.tbl th{font-size:12.5px;font-weight:500;color:var(--ink3);text-align:left;padding:8px 0}
.tbl td{padding:9px 0;border-top:1px solid rgba(0,0,0,.05)}.tbl .r{text-align:right}
.chip{display:inline-block;padding:2px 8px;border-radius:7px;font-size:12px;font-weight:600;background:#fff;color:var(--ink2);margin:2px 4px 2px 0}
.chip.w{background:var(--amber-bg);color:var(--amber)}.chip.r{background:var(--red-bg);color:var(--red)}.chip.g{background:var(--green-bg);color:var(--green)}

/* 两列格子：每格 = 段名 / 一个数 / 一行，有事的格子段名后一个点、数字变色 */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 16px 0}
.tile{display:flex;flex-direction:column;min-width:0;height:92px;padding:12px 14px;border-radius:16px;background:var(--soft)}
.tile .l{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--ink3)}
.tile .v{font-size:18px;font-weight:600;margin-top:5px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .s{margin-top:auto;font-size:12.5px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile.bad .v{color:var(--red)}.tile.warn .v{color:var(--amber)}.tile.wide{grid-column:1/-1}
/* 逐时柱：一种灰，当前小时黑 */
.bars{display:flex;align-items:flex-end;gap:4px;height:44px;margin-top:14px}
.bars i{flex:1;border-radius:3px;background:#c9c9ce;min-height:3px}.bars i.c{background:var(--ink)}.bars i.z{background:var(--line)}
.hero .sp{display:flex;gap:22px;margin-top:8px;font-size:14px;color:var(--ink2)}.hero .sp span{color:var(--ink3);margin-right:6px}
/* 弹窗：服务端渲染（?sheet=…），点遮罩或 × 回到不带 sheet 的地址 */
.shade{position:fixed;inset:0;background:rgba(10,10,14,.34);z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;max-height:88vh;overflow:auto;background:#fff;border-radius:22px 22px 0 0;padding:8px 0 calc(24px + env(safe-area-inset-bottom));z-index:21}
.sheet .grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 10px}
.sheet .sh{display:flex;align-items:baseline;gap:8px;padding:0 16px 0 20px}.sheet .sh b{flex:1;font-size:19px}.sheet .sh span{font-size:13px;color:var(--ink3)}
.sheet .sh a{width:36px;height:36px;display:grid;place-items:center;color:var(--ink3)}
.sheet .go{display:flex;align-items:center;justify-content:space-between;margin:12px 16px 0;padding:14px 16px;border-radius:14px;background:var(--soft);font-weight:600}
/* 排班一周表：名字列 + 7 天，格子可点（?cell=）；名字下一行 = 本周排 / 合同，超了变色 */
.wk{margin:10px 8px 0}
.wk table{width:100%;border-collapse:separate;border-spacing:3px;table-layout:fixed}
.wk th{font-size:11.5px;font-weight:500;color:var(--ink3);text-align:center;padding:2px 0;line-height:1.25}
.wk th.nm{width:74px}.wk th.td{color:var(--ink);font-weight:700}
.wk td.nm{font-size:13px;font-weight:600;padding:2px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wk td.nm small{display:block;font-size:11px;font-weight:500;color:var(--ink3)}
.wk td.nm.w small{color:var(--amber)}.wk td.nm.r small{color:var(--red);font-weight:600}
.wk td.c a{display:grid;place-items:center;height:40px;border-radius:9px;background:var(--soft);font-size:12px;font-weight:600;letter-spacing:-.03em;overflow:hidden;white-space:nowrap}
.wk td.c a.off{background:var(--soft2);color:var(--ink4);font-weight:500}
.wk td.c a.lv{background:var(--blue-bg);color:var(--blue)}.wk td.c a.bad{background:var(--red-bg);color:var(--red)}
.wk td.c a.on{box-shadow:inset 0 0 0 2px var(--ink)}
/* 弹窗里的选项：一行一个，右边小字 */
.picks{display:grid;gap:8px;margin:12px 16px 0}
.picks button{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:52px;padding:0 16px;border-radius:14px;border:0;background:var(--soft);font-size:15.5px;font-weight:600;cursor:pointer;text-align:left}
.picks button span{font-weight:500;color:var(--ink3);font-size:13.5px}
.picks button.on{box-shadow:inset 0 0 0 2px var(--ink);background:#fff}
.fl{display:flex;gap:8px;align-items:center;margin:10px 16px 0}.fl.eq>.btn{flex:1;min-width:0;padding:0 8px;text-align:center;line-height:1.2}.fl .inp{flex:1;min-width:0}
.lbl{display:block;margin:12px 16px 4px;font-size:13px;font-weight:600;color:var(--ink3)}
.lbl+.inp,.lbl+select.inp{margin:0 16px;width:calc(100% - 32px)}
.chk{display:flex;gap:10px;align-items:flex-start;margin:10px 16px 0;font-size:14px}.chk input{width:20px;height:20px;margin-top:1px}
.chip.b{background:var(--blue-bg);color:var(--blue)}
/* 页头右边一排小按钮（老板端：眼睛 / 前一天 / 后一天） */
.tile .l .dot{width:7px;height:7px}
a.hero,a.tile,a.grp,a.row{color:inherit}

/* ---------- 老板「今天」页（09-25 定稿 67b7312:docs/designs/boss-today-2026-09-25/today-v1/）：暖白底、白卡细边；汇总页同一套 ---------- */
:root{--paper:#fbf9f9;--card-line:#e7e1e2;--hair2:#f0ecec;--tile:#f6f4f4;--web:#2a78d6;--web-bg:#e4eefb;--web-soft:#9dbde8;--up:#1f8a4c;--dn:#c8362f}
body.paper{background:var(--paper)}.paper .nav{background:rgba(251,249,249,.97)}
/* 页头：左页名，右 口径下拉 + 眼睛 */
.ph{display:flex;align-items:center;gap:6px;padding:12px 16px 0}
.ph h1{flex:1;margin:0;font-size:24px;font-weight:800;letter-spacing:-.02em}
.ph .kb{width:40px;height:40px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);display:grid;place-items:center;color:var(--ink)}
.srcpk{position:relative}
.srcpk summary{list-style:none;display:inline-flex;align-items:center;gap:4px;height:40px;padding:0 10px 0 14px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);font-size:14px;font-weight:700;cursor:pointer;white-space:nowrap}
.srcpk summary::-webkit-details-marker{display:none}.srcpk summary svg.i{width:16px;height:16px;color:var(--ink3)}
.srcpk.web summary{color:var(--web)}
.srcpk .mn{position:absolute;right:0;top:46px;width:200px;padding:6px;border-radius:14px;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.16),inset 0 0 0 1px var(--card-line);z-index:30}
.srcpk .mn a{display:flex;align-items:center;gap:8px;padding:10px;border-radius:10px;font-size:14px;font-weight:600}
.srcpk .mn a small{display:block;font-size:11.5px;color:var(--ink3);font-weight:500}.srcpk .mn a.on{background:var(--tile)}
.srcpk .mn a svg.i{margin-left:auto;width:18px;height:18px}.srcpk .mn .nt{padding:6px 10px 4px;font-size:11.5px;color:var(--ink4)}
/* 日期长条：‹ 点 · 日期 星期 · 回今天 › */
.demo{margin:10px 16px 0;padding:6px 12px;border-radius:10px;background:var(--amber-bg);color:var(--amber);font-size:12.5px;font-weight:700;text-align:center}
/* 合计卡：状态横条贴顶 + 现网那种营业额（大字 · 四格 · 网店一行）+ 逐时柱 */
.mc{margin:12px 16px 0;padding:16px;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
/* 合计卡里关机后的几段：应收 · 钱箱 · 详情 */
.due{padding:12px 14px;border-radius:14px;background:var(--ink);color:#fff}
.due .r1{display:flex;align-items:baseline;justify-content:space-between}.due small{font-size:12.5px;color:var(--ink4)}.due b{font-size:20px;font-weight:700}
.due .r2{margin-top:4px;font-size:12px;color:#8b8288}
/* 纸表：结构照原纸表，线用细线，数字居中 */
.rp{font-size:13px;font-variant-numeric:tabular-nums;margin-top:6px}.rp table{width:100%;border-collapse:collapse;table-layout:fixed}
.rp td,.rp th{border:1px solid var(--card-line);padding:5px 6px;height:24px;text-align:center;font-weight:400}
.rp th{background:var(--tile);color:var(--ink3);font-size:12px}.rp .meta td{background:var(--tile)}.rp .meta td b{font-weight:400;color:var(--ink3);margin-right:5px}
.rp .tot td{font-weight:700;background:var(--tile)}.rp .gap td{height:6px;padding:0;background:var(--hair2)}
.rp .kv td{width:25%}.rp .kv td.l{color:var(--ink3);font-size:12.5px}.rp .foot td{text-align:left}.rp .foot td span{color:var(--ink3);margin-right:4px}
.rp table+table tr:first-child>*{border-top:0}
/* 七块：白卡，标题行 = 图标 · 名 · 右边一个数；行 · 付款比例条 · 三格 · 人 · 设备；关机后折叠成一行 */
.blk{display:block;margin:10px 16px 0;padding:14px 16px;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
.cap{font-size:12px;color:var(--ink3);margin-top:10px}
.pr{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px}
.pr .nm{width:58px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr .tm{width:70px;font-size:12px;color:var(--ink3);white-space:nowrap}.pr .tm.w{color:var(--amber)}
.pr .st{flex:1;text-align:right;font-size:12.5px;color:var(--ink3)}.pr .v{width:48px;text-align:right;font-weight:600}
.fold{margin:8px 16px 0;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
.fold>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary .w{flex:1;min-width:0}.fold>summary .w b{display:block;font-size:14.5px}
.fold>summary .w small{display:block;font-size:12.5px;color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fold>summary .w small em{font-style:normal;font-weight:600}.fold>summary .w small em.r{color:var(--red)}.fold>summary .w small em.a{color:var(--amber)}
.fold>summary .v{font-size:14px;font-weight:600;white-space:nowrap}.fold>summary>svg.i{color:var(--ink4)}
.fold[open]>summary>svg.i{transform:rotate(180deg)}.fold>.blk{margin:0;box-shadow:none;padding-top:0}

/* 员工端（09-25 定稿 67b7312:docs/designs/staff-2026-09-25/）：页头右上自己的名字；今天页大入口（黑底整行 · 横条） */
.ph h1 small{display:block;font-size:13px;font-weight:600;color:var(--ink3);letter-spacing:0;margin-top:2px}

/* ---------- 店里电脑全屏（打卡屏） ---------- */
.kz{min-height:100vh;display:flex;flex-direction:column;background:#fff;user-select:none}
.kz .kbar{height:64px;flex:none;display:flex;justify-content:space-between;align-items:center;padding:0 40px}
.kz .wm{font-size:14px;font-weight:600;letter-spacing:.34em;color:#c4c4ca}
.kz .kr{display:flex;align-items:center;gap:24px;font-size:17px;font-weight:500;color:var(--ink4)}
.kz .net{display:flex;align-items:center;gap:8px;color:var(--green-dot)}.kz .net.off{color:#c2410c}
.kz .offb{display:none;margin:0 40px;padding:14px 22px;border-radius:16px;background:var(--amber-bg);color:var(--amber);font-size:20px;font-weight:600;text-align:center}
.kz.offline .offb{display:block}.kz.offline .net.ok{display:none}.kz:not(.offline) .net.off{display:none}
.kz .stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px}
.kz .kfoot{height:56px;flex:none;text-align:center;font-size:16px;color:#c4c4ca}
.kz .clock{font-size:clamp(96px,17vw,220px);font-weight:300;line-height:1;letter-spacing:-.05em}
.kz .clock.sm{font-size:clamp(64px,9vw,120px)}
.kz .ask{font-size:32px;font-weight:500;color:var(--ink2);margin-top:24px}.kz .ask.bad{color:var(--red)}
.kz .slots{display:flex;gap:22px;margin-top:28px}
.kz .slots span{width:82px;height:96px;border-radius:22px;background:var(--soft);display:grid;place-items:center}
.kz .slots span.cur{box-shadow:inset 0 0 0 2.5px var(--ink)}
.kz .slots span.f::after{content:"";width:22px;height:22px;border-radius:50%;background:var(--ink)}
.kz .slots.err span{background:var(--red-bg);box-shadow:inset 0 0 0 2px var(--red-line)}
.kz .tip{font-size:18px;color:var(--ink4);margin-top:24px}
.kz .who{font-size:clamp(56px,6vw,84px);font-weight:600;line-height:1.1}
.kz .act{display:inline-flex;align-items:center;gap:20px;margin-top:24px;padding:20px 40px 20px 32px;border-radius:30px}
.kz .act svg.i{width:52px;height:52px;stroke-width:1.7}.kz .act span{font-size:52px;font-weight:600}.kz .act b{font-size:72px;font-weight:500;letter-spacing:-.02em;margin-left:10px}
.kz .act.in,.kz .act.break_in{background:var(--green-bg);color:var(--green)}.kz .act.break_out{background:var(--amber-bg);color:#b45309}.kz .act.out{background:var(--soft);color:var(--ink2)}
.kz .ctx{font-size:23px;color:var(--ink3);margin-top:20px}.kz .ctx.xl{font-size:38px;color:var(--ink);font-weight:500}
.kz .cd{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:32px}
.kz .track{width:460px;max-width:80vw;height:8px;border-radius:4px;background:#ededf0;overflow:hidden}
.kz .track i{display:block;height:100%;width:100%;background:var(--ink);border-radius:4px;transform-origin:left;animation:kzcd var(--cd,3s) linear forwards}
@keyframes kzcd{from{transform:scaleX(1)}to{transform:scaleX(0)}}
.kz .cd span{font-size:19px;color:var(--ink4)}
.kz kbd{display:inline-grid;place-items:center;min-width:32px;height:30px;padding:0 8px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1.5px var(--ink5),0 2px 0 var(--ink5);font:600 17px var(--font);color:var(--ink2);margin:0 4px}
.kz .btns{display:flex;gap:16px;margin-top:30px;flex-wrap:wrap;justify-content:center}
.kz .btns button{min-height:68px;padding:0 36px;border-radius:20px;border:0;font-size:26px;font-weight:600;cursor:pointer;background:var(--soft);color:var(--ink)}
.kz .btns button.pri{background:var(--ink);color:#fff}
.kz .done svg{width:120px;height:120px;stroke:var(--green-dot);stroke-width:1.4;fill:none}
.kz .q{font-size:32px;line-height:1.5;color:var(--ink2);margin-top:14px}.kz .q b{color:var(--ink)}
.kz .tpick{display:flex;align-items:center;gap:14px;margin-top:24px}
.kz .tpick input{width:150px;height:120px;border:0;border-radius:26px;background:var(--soft);text-align:center;font:500 96px var(--font);font-variant-numeric:tabular-nums}
.kz .tpick em{font-size:84px;font-style:normal;color:var(--ink4)}
.kz .diff{display:flex;align-items:baseline;gap:22px;margin-top:24px}.kz .diff span{font-size:42px;font-weight:600}
.kz .diff s{font-size:58px;color:#c4c4ca}.kz .diff b{font-size:80px;font-weight:600;color:#b45309}
.kz .cn{font-size:20px;color:var(--ink4);margin-top:18px}
.kz .hide{position:absolute;left:-9999px;opacity:0}

/* ---- 老板端「更多」：分组里一格一个入口（四列小白块）；群那一行：名字 + 最后一句 + 未读数 ---- */
.ent{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:6px 0 12px}
.ent a{min-height:40px;padding:4px 2px;border-radius:var(--r-s);background:var(--bg);display:grid;place-items:center;text-align:center;font-size:13.5px;font-weight:500;line-height:1.2}
.cnt{min-width:20px;height:20px;border-radius:10px;background:var(--red-dot);color:#fff;font-size:11.5px;font-weight:600;line-height:20px;text-align:center;padding:0 6px;flex:none}
.cnt.b{background:var(--blue-dot)}
.row>svg.i{color:var(--ink4);width:18px;height:18px}
.row button.plain{border:0;background:none;padding:0;font:inherit;font-weight:600;cursor:pointer;color:var(--ink)}
/* 应用列表一格一个应用：图标 + 名字（10-05 ZHOU.G「更多页全挤在一起」：原来只有一排排小字格） */
.appgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px 4px;padding:16px 0 14px}
.appgrid a{display:flex;flex-direction:column;align-items:center;gap:7px;color:var(--ink2);font-size:12.5px;font-weight:500;line-height:1.25;text-align:center;min-width:0}
.appgrid a img,.appgrid a .ph{width:52px;height:52px;border-radius:13px;display:block;flex:none}
.appgrid a .ph{display:grid;place-items:center;background:var(--soft);color:var(--ink2);font-size:20px;font-weight:700}
.appgrid a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.appgrid a:active img{transform:scale(.94)}
/* 退出登录：点开先确认（core/templates/ui/_logout.html） */
.row.lo{display:block;padding:0}
.row.lo>summary{list-style:none;min-height:48px;display:flex;align-items:center;font-weight:600;cursor:pointer;color:var(--ink)}
.row.lo>summary::-webkit-details-marker{display:none}
.row.lo[open]>summary{color:var(--ink3)}
.row.lo form{display:flex;align-items:center;gap:10px;padding:0 0 12px}.row.lo form span{flex:1;font-size:14px;color:var(--ink2)}
.btn.danger{background:var(--red);color:#fff}
.row select.plain{border:0;background:none;font:inherit;color:var(--ink3);cursor:pointer}

/* ---- 群 /grupo/：按天分隔、别人的靠左灰泡、自己的靠右黑泡、@我的蓝泡、引用卡、图、新消息分隔线、底部输入条 ---- */
.app.chatpg{padding-bottom:calc(84px + 64px + env(safe-area-inset-bottom))}.app.chatpg.nonav{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
.app.chatpg.withref{padding-bottom:calc(84px + 104px + env(safe-area-inset-bottom))}.app.chatpg.nonav.withref{padding-bottom:calc(116px + env(safe-area-inset-bottom))}
.msgs{padding:0 16px}
.msgs .dsep{text-align:center;font-size:12px;font-weight:500;color:var(--ink4);margin:10px 0}
.msgs .unr{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:500;color:var(--blue);margin:6px 0 12px}
.msgs .unr::before,.msgs .unr::after{content:"";flex:1;height:1px;background:var(--blue-dot);opacity:.35}
.msg{margin:0 0 12px;max-width:82%;width:fit-content}.msg.cont{margin-top:-8px}
.msg .who{font-size:12.5px;font-weight:500;color:var(--ink3);margin:0 0 4px 4px}.msg .who span{color:var(--ink4);margin-left:8px}
.msg .bb{background:var(--soft);border-radius:4px 16px 16px 16px;padding:9px 12px;font-size:15px;line-height:1.45;overflow-wrap:anywhere}
.msg.me{margin-left:auto}.msg.me .bb{background:var(--ink);color:#fff;border-radius:16px 4px 16px 16px}
.msg.atme .bb{background:var(--blue-bg)}
.msg .tm{font-size:11px;color:var(--ink4);text-align:right;margin-top:3px}
.msg .pic{display:block;margin:-3px -6px 6px}.msg .pic img{display:block;max-width:220px;max-height:220px;border-radius:10px;background:var(--line)}
.msg .bb .pic:last-child{margin-bottom:-3px}
.atn{font-style:normal;color:var(--blue);font-weight:600}.msg.me .atn{color:#bfdbfe}
.ref{display:block;margin-top:8px;background:var(--bg);color:var(--ink);border-radius:12px;padding:9px 12px;box-shadow:inset 0 0 0 1px var(--line)}
.ref .rt{font-size:13px;font-weight:600;color:var(--ink3)}.ref .rv{font-size:14px;color:var(--ink);margin-top:2px}.ref .rs{font-size:12px;color:var(--ink4);margin-top:4px}
.older{display:block;text-align:center;font-size:13px;color:var(--ink3);padding:8px 0 4px}
.comp{position:fixed;left:0;right:0;bottom:calc(72px + env(safe-area-inset-bottom));max-width:480px;margin:0 auto;display:flex;align-items:center;gap:6px;padding:8px 10px;background:var(--bg);border-top:1px solid var(--hair);z-index:6}
.nonav .comp{bottom:0;padding-bottom:calc(8px + env(safe-area-inset-bottom))}
.comp .ci{flex:1;min-width:0;height:40px;border-radius:20px;border:0;background:var(--soft);padding:0 16px;font-size:16px}
.comp .ci:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--ink5)}
.comp .cb{width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:0;background:none;color:var(--ink2);cursor:pointer;flex:none;font-size:18px;font-weight:600;list-style:none}
.comp .cb::-webkit-details-marker{display:none}
.comp .cb.on{background:var(--blue-bg);color:var(--blue)}
.comp .snd{background:var(--ink);color:#fff}
.comp input[type=file]{display:none}
.comp details{position:static}
.comp details[open] .cb{background:var(--blue-bg);color:var(--blue)}
.atl{position:absolute;left:8px;right:8px;bottom:60px;max-height:50vh;overflow:auto;background:var(--bg);border-radius:var(--r-m);box-shadow:0 6px 28px rgba(0,0,0,.14),inset 0 0 0 1px var(--line);padding:6px}
.atl .t{font-size:12.5px;font-weight:600;color:var(--ink3);padding:6px 10px 4px}
.atl label{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 10px;border-radius:var(--r-s);font-weight:500;cursor:pointer}
.atl label:has(input:checked){background:var(--blue-bg);color:var(--blue)}
.atl input{width:18px;height:18px}
.pend{position:fixed;left:0;right:0;max-width:480px;margin:0 auto;bottom:calc(72px + 56px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--soft2);border-top:1px solid var(--hair);font-size:13.5px;z-index:6}
.nonav .pend{bottom:calc(56px + env(safe-area-inset-bottom))}
.pend span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pend b{color:var(--ink3);font-weight:600;margin-right:6px}
.bigimg{position:fixed;inset:0;z-index:21;display:grid;place-items:center;padding:16px}
.bigimg img{max-width:100%;max-height:calc(100vh - 32px);border-radius:12px}
.bigimg a.x{position:fixed;top:12px;right:12px;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;background:var(--bg);color:var(--ink)}
/* ---- picking：网单（店里手机：列表 / 配货 / 打包 / 交快递） ---- */
/* 商品小图：列表一排小图，配货行大一号；没图 = 灰块 + 相机 */
.ths{display:flex;align-items:center;gap:6px;margin-top:8px}.ths span{font-size:13px;color:var(--ink3);margin-left:2px}
.th{width:44px;height:44px;border-radius:10px;background:var(--line);overflow:hidden;flex:none;display:grid;place-items:center;color:var(--ink4)}
.th img{width:100%;height:100%;object-fit:cover;display:block}.th.lg{width:60px;height:60px;border-radius:12px}
/* 配货一行：大图 | 名字 + 小字 | ×数量，下面一对按钮（找到 / 找不到）；找到了名字划掉 */
.pl+.pl{border-top:1px solid rgba(0,0,0,.05)}
.row .q{font-size:15px;font-weight:600;white-space:nowrap}
.row.done .a b{text-decoration:line-through;color:var(--ink4)}
.duo{display:flex;gap:8px;padding:0 0 12px}.duo form{flex:1;display:flex}.duo .btn{flex:1;min-height:44px}
/* 09-29：主键（Lo tengo）占三分之二，有副作用的「No lo encuentro」小一号；只有一个键（Deshacer）时靠右、不撑满 */
.duo.one{justify-content:flex-end}.duo.one form{flex:0 0 auto;min-width:120px}
.th.more{font-size:13px;font-weight:600;color:var(--ink3);background:var(--soft)}
.grp .btn.sec{background:#fff;box-shadow:inset 0 0 0 1px var(--line)}   /* 灰块里的次按钮：白底，不然和块一个色 */
/* 大图（弹窗里） */
.big{display:block;width:calc(100% - 32px);margin:6px 16px 0;aspect-ratio:1/1;border-radius:16px;background:var(--soft);object-fit:contain}
div.big{display:grid;place-items:center;color:var(--ink4)}
/* 09-29：大图弹窗改纯 CSS :target（#img-行）：零 JS、离线能开、返回键退的是锚点。样子同 .shade/.sheet，类名不同是为了不被 _sheetjs 当成弹窗（它会把页面锁住不滚） */
.imgbox{display:none}.imgbox:target{display:block}
.imgbox .veil{position:fixed;inset:0;background:rgba(10,10,14,.34);z-index:20}
.imgbox .pane{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;max-height:88vh;max-height:88dvh;overflow:auto;background:#fff;border-radius:22px 22px 0 0;padding:8px 0 calc(24px + env(safe-area-inset-bottom));z-index:21}
.imgbox .grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 10px}
.imgbox .sh{display:flex;align-items:baseline;gap:8px;padding:0 16px 0 20px}.imgbox .sh b{flex:1;font-size:19px}.imgbox .sh span{font-size:13px;color:var(--ink3)}
.imgbox .sh a{width:44px;height:44px;display:grid;place-items:center;color:var(--ink3)}
.imgbox .okmsg,.imgbox .stt{margin-top:12px}
/* 09-29 ZHOU.G「首页分割不清楚」：网单列表每单一张白卡，卡间留白；左边色条 黄 = 有找不到的 / 绿 = 找齐了（两天以上的不加红条、不写催促的字）；分组是小标题不是彩色大块 */
.osec{display:flex;align-items:center;gap:8px;margin:18px 20px 8px;font-size:13.5px;font-weight:600;color:var(--ink3)}
.osec.w{color:var(--amber)}.osec .n{color:var(--ink4);font-weight:500}
.ogap{height:12px}
a.ocard{display:block;margin:0 16px 10px;padding:12px 14px 12px 16px;border-radius:var(--r-l);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line),0 1px 2px rgba(0,0,0,.04);color:inherit}
.ocard.w{box-shadow:inset 4px 0 0 var(--amber-dot),inset 0 0 0 1px var(--line),0 1px 2px rgba(0,0,0,.04)}
.ocard.g{box-shadow:inset 4px 0 0 var(--green-dot),inset 0 0 0 1px var(--line),0 1px 2px rgba(0,0,0,.04)}
.ocard .oh{display:flex;align-items:center;gap:6px}.ocard .oh b{font-size:17px;font-weight:700}.ocard .oh .chip{margin:0}
.ocard .op{margin-left:auto;font-size:14px;font-weight:600;color:var(--ink2);white-space:nowrap}
.ocard .om{display:block;font-size:12.5px;color:var(--ink3);margin-top:2px}
.ocard .ths{margin-top:10px}
.ocard .onames{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12.5px;color:var(--ink3);margin-top:8px}
/* 配货单页：一行一张卡，右边大号数量块（多件黄底，一眼看出要拿几件），按钮在卡片下沿（09-29「数量太不起眼」） */
.lcard{margin:0 16px 10px;padding:12px;border-radius:var(--r-l);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line),0 1px 2px rgba(0,0,0,.04)}
.lcard:first-of-type{margin-top:10px}
/* 有货的卡片（09-29 ZHOU.G 看了截图定）：不划删除线（装袋回头核对要认得出），左边绿条 + 状态字前绿勾；图缩小、名字两行、「改回来」小键在右边，卡片矮一半 */
.lcard.done{box-shadow:inset 4px 0 0 var(--green-dot),inset 0 0 0 1px var(--line)}
.lcard.done .lhead{align-items:center}.lcard.done .th.xl{width:52px;height:52px;border-radius:10px}
.lcard.done .lhead .a b{-webkit-line-clamp:2;color:var(--ink2);font-weight:500}
.lhead .a small.ok{display:flex;align-items:center;gap:4px;color:var(--green);font-weight:600}.lhead .a small.ok svg.i{width:15px;height:15px;stroke-width:2.4}
.lhead .undo{flex:none;display:flex;gap:6px}.lhead .undo form{display:flex}.lhead .undo>a.btn{min-height:44px;padding:0 12px}.lhead .undo .btn{min-height:44px;padding:0 12px}
.lcard.miss{box-shadow:inset 4px 0 0 var(--amber-dot),inset 0 0 0 1px var(--line)}
.lhead{display:flex;align-items:flex-start;gap:12px}
.lhead .a{flex:1;min-width:0}.lhead a.a{color:inherit}  /* 点名字也开大图弹窗（09-29 ZHOU.G） */.lhead .a b{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:15px;font-weight:600;line-height:1.35}
.lhead .a small{display:block;font-size:12.5px;color:var(--ink3);margin-top:3px}.lhead .a small.w{color:var(--amber);font-weight:600}
.th.xl{width:104px;height:104px;border-radius:12px}  /* 找货靠看图（10-14 从 76 放大） */
.qbig{flex:none;min-width:58px;padding:6px 8px;border-radius:12px;background:var(--soft);text-align:center;line-height:1.1}
.qbig b{display:block;font-size:26px;font-weight:700;color:var(--ink)}.qbig small{font-size:11.5px;color:var(--ink3)}
.qbig.many{background:var(--amber-bg);box-shadow:inset 0 0 0 1.5px var(--amber-line)}.qbig.many b{color:var(--amber)}
.lacts{display:flex;gap:8px;margin-top:12px}.lacts form{flex:1;display:flex}.lacts form:first-child{flex:2}.lacts>.btn{flex:1}
.lacts .btn{flex:1;min-height:44px;padding:0 8px}.lacts .btn.sec{box-shadow:inset 0 0 0 1px var(--line);background:var(--bg)}
.imgbox .sh .qbig{align-self:center;min-width:48px;padding:4px 6px}.imgbox .sh .qbig b{font-size:20px}
/* 「不够」：找到几件的数字格子 */
.numgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 16px 0}
.numgrid .btn{flex:1;min-height:52px;font-size:20px;box-shadow:inset 0 0 0 1px var(--line);background:var(--bg)}
.numin{display:flex;gap:8px;margin:14px 16px 0}.numin .inp{flex:1;font-size:20px;text-align:center}
/* 缺货收件箱（配货列表页顶上，09-29 ZHOU.G）：一块浅黄底，每行一件「不够 / 没货」的货：小图 · 名字 + 单号 · 右边 找到/要；整行点进那张单那一行 */
details.oboard{margin:14px 16px 4px;padding:2px 14px 6px;border-radius:var(--r-l);background:var(--amber-bg);box-shadow:inset 0 0 0 1.5px var(--amber-line)}
.oboard summary{list-style:none;display:flex;align-items:center;gap:8px;padding:12px 0 8px;font-size:15px;font-weight:700;color:var(--amber);cursor:pointer}
.oboard summary::-webkit-details-marker{display:none}.oboard summary svg.i{margin-left:auto;width:18px;height:18px}.oboard[open] summary svg.i{transform:rotate(180deg)}
.oboard .brow{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--amber-line);color:inherit}
.oboard .brow .a{flex:1;min-width:0}.oboard .brow b{display:block;font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.oboard .brow small{display:block;font-size:12.5px;color:var(--amber);font-weight:600;margin-top:2px}
.oboard .bq{flex:none;font-size:18px;font-weight:700;color:var(--amber)}
/* 一次拿（跨单汇总）：同一块样子、中性色（不是缺货，不用黄） */
details.obatch{background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}.obatch summary{color:var(--ink)}.obatch summary svg.i:first-child{margin-left:0;width:18px;height:18px}
.obatch .brow{border-top-color:var(--line)}.obatch .brow small{color:var(--ink3);font-weight:500}.obatch .brow small a{color:var(--blue);font-weight:600}.obatch .bq{color:var(--ink)}
/* 单号查找框 */
.pfind{margin:10px 16px 0}.pfind .inp{min-height:42px;font-size:16px}
/* 客人留言（蓝 = 有人找你）：单页顶上一条，文字可以长 */
/* 从缺货收件箱 / 打勾后跳到 #l行：别被顶栏盖住，并框一下是哪一件（Fable 第三轮） */
/* 右上角快速换人（店里共用手机，09-29）：名字格子 + PIN，放在弹窗里 */
.imgbox .whoform{margin:12px 16px 0}.imgbox .whoform .inp{text-align:center;font-size:22px;letter-spacing:.4em;margin-bottom:10px}
.imgbox .whoform .btn.block{width:100%;margin:0}
.lcard,.ocard{scroll-margin-top:calc(68px + env(safe-area-inset-top))}
/* 跳到那一件：框一下就淡掉（09-29：一直框着像被选中了） */
.lcard:target{animation:tgt 1.8s ease-out forwards}
@keyframes tgt{0%,40%{outline:2px solid var(--ink);outline-offset:-2px}100%{outline:2px solid transparent;outline-offset:-2px}}
@media (prefers-reduced-motion:reduce){.lcard:target{animation:none}}
/* 颜色 / 尺码单独一行加粗（从名字里拆出来，找货最要紧的就是它） */
.lhead .a em.var,.imgbox .sh em.var{display:block;font-style:normal;font-weight:700;font-size:14px;color:var(--ink);margin-top:3px}
.imgbox .sh em.var{font-size:15px}
/* 不是第一件的「有货」：描边，不抢眼 */
.lacts .btn.line{background:var(--bg);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--ink)}
/* 配货两页的配色全在下面 body.pick 那段（10-19 视觉）；这里只剩数量块的通用样子 */
.qbig.many{background:var(--ink);box-shadow:none}.qbig.many b,.qbig.many small{color:var(--bg)}
.qbig.part b{font-size:20px}
.row .a small a.lnk{color:var(--blue);font-weight:600}
.row .a small.w{color:var(--amber)}
/* 表单里的分段单选（箱子 小 / 中 / 大）：和 .seg 链接一个样 */
.seg input{position:absolute;opacity:0;pointer-events:none}
.row .seg{margin:0;flex:none;width:156px}
.row .inp.sm{width:96px;min-height:40px;text-align:right}
/* 步骤：做完的绿勾，没做的淡圈 */
.row .ck{color:var(--green-dot)}.row .ck.no{color:var(--ink5)}
/* ---- 店员端：今天 / 我 / 预定 / 补货（panel/staff、tracking、restock） ---- */
.hd .who{padding:4px 10px;border-radius:10px;background:var(--soft);font-size:13px;font-weight:600;color:var(--ink2)}
.row .cv{display:grid;color:var(--ink4)}
.row .acts{flex:none;display:flex;gap:6px}
.go{display:flex;align-items:center;justify-content:space-between;margin:12px 16px 0;padding:14px 16px;border-radius:14px;background:var(--soft);font-weight:600}
.row.at .a b{color:var(--blue)}
.row .ic{width:34px;height:34px;border-radius:10px;background:#fff;display:grid;place-items:center;color:var(--ink2);flex:none}
.row form{margin:0}.row .acts{display:flex;gap:6px;flex:none}
.row .a small.cut{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qa{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 16px 0}.qa .btn{min-height:50px}
/* 缩略图：点开 = ?photo= 弹窗看大图 */
.thumb{width:44px;height:44px;border-radius:10px;object-fit:cover;background:var(--line);flex:none;display:block}
.sheetimg{display:block;width:calc(100% - 32px);margin:10px 16px 0;border-radius:14px;background:var(--soft)}
.sheetimg.flip{transform:rotate(180deg)}
/* 票据拍照页：拍好的几页三列缩略图，右上角 × 删掉；文件框藏起来、由 label 按钮触发（display:none 的在部分 iOS 上点不开） */
.vh{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 16px 0}.shots:empty{display:none}
.shots figure{position:relative;margin:0}.shots img{display:block;width:100%;aspect-ratio:3/4;object-fit:contain;border-radius:10px;background:var(--soft);cursor:zoom-in}
.shots .n{position:absolute;left:6px;bottom:6px;padding:0 6px;border-radius:8px;background:rgba(0,0,0,.6);color:#fff;font-size:12px}
.shots button{position:absolute;top:2px;right:2px;width:44px;height:44px;border:0;border-radius:22px;background:rgba(0,0,0,.6);color:#fff;font-size:20px;line-height:44px;cursor:pointer}
/* 票据各页（appclass docs）：手机上点得准——筛选、PDF / CSV、右上入口都到 44px（Fable / Astra 10-09） */
.docs .seg a{height:44px;line-height:44px}
.docs .acts .btn.sm{min-height:44px;padding:0 16px}
.docs .fl .btn.sm{min-height:46px}
.docs .hd .side a{display:inline-block;padding:12px 4px 12px 12px;font-size:14px;font-weight:600;color:var(--ink2)}
.docs .row .a small.cut{white-space:normal}
.docs .note a.lnk{color:var(--blue);font-weight:600}
/* 拍照预览：长小票显示整张（contain），点开全屏看 */
.viewer{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.92)}
.viewer img{max-width:100%;max-height:100%}
.viewer button{position:absolute;top:12px;right:12px;min-height:44px;padding:0 16px;border:0;border-radius:22px;background:#fff;color:var(--ink);font-weight:600}
/* 票据列表：一批下面一张单子一小行（类型 chip · 供应商 · 号码 · 合计） */
.row .a small.doc{display:flex;align-items:center;gap:6px;margin-top:3px}.row .a small.doc .chip{margin:0;flex:none}
.row .a small.doc .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .a small.doc b{display:inline;flex:none;font-size:inherit}
/* 表单里的单选一排（付款方式 / 补货类型）：选中的白底黑框 */
.segr{display:flex;flex-wrap:wrap;gap:6px;margin:0 16px}
.segr label{flex:1;min-width:84px;display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 10px;border-radius:12px;background:var(--soft);font-weight:600;font-size:14.5px;cursor:pointer}
.segr input{position:absolute;opacity:0;pointer-events:none}
.segr label:has(input:checked){background:#fff;box-shadow:inset 0 0 0 2px var(--ink)}
/* 一周的班（「我」）：7 格，有班黑、休灰、请假蓝 */
.kv .v{white-space:normal;text-align:right}
.grp.g{background:var(--green-bg)}.grp.g>.t{color:var(--green)}
.grp.w .picks button{background:#fff}
.btn.danger{background:var(--red)}
.pair{display:flex;gap:10px;margin:0 16px}.pair>span{flex:1;min-width:0}.pair .lbl{margin:12px 0 4px}.pair .lbl+.inp{margin:0;width:100%}
.inp[type=file]{padding-top:10px}
details.more{margin:12px 16px 0}details.more>summary{min-height:44px;display:flex;align-items:center;font-size:14px;font-weight:600;color:var(--ink3);cursor:pointer}
details.more .lbl{margin-left:0;margin-right:0}details.more .lbl+.inp{margin:0;width:100%}
.row select.inp{width:auto;min-height:38px}.row button.lnk{flex:1;border:0;background:none;padding:0;text-align:left;font-size:15px;font-weight:600;cursor:pointer}
/* ---- 老板端账目 / 统计（panel/templates/panel/board/accounts.html、stats*.html） ---- */
/* 一行里的小按钮表单、左边固定宽的名字、变好了的数（绿） */
.per .off{width:36px;height:36px;display:grid;place-items:center;color:var(--ink5)}
.row form{margin:0}.row .k{min-width:60px;flex:none;font-weight:600}
/* 合计卡下面那行放不下时折行，每一项（名字 + 钱）不拆开 */
.hero .sp.wrap{flex-wrap:wrap;gap:2px 18px}.hero .sp.wrap>b{font-weight:inherit;white-space:nowrap}
.row.good .v{color:var(--green)}.row .v.muted{color:var(--ink3)}.row .v.w{color:var(--amber)}.row .a small.w{color:var(--amber)}
/* 变化行前面的小方块箭头：↗ 灰、↘ 灰、要处理黄 */
.ic{width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:8px;background:var(--bg);font-size:14px;font-weight:600;color:var(--ink2)}
.ic.w{color:var(--amber)}
/* 小走势：一条线，服务端算好 points */
/* 今年 / 去年并排的柱：.bars 里每个桶一个 .pr（今年一根 + 去年一根浅的）；还没到的桶 .z */
.bars .pr{flex:1;display:flex;align-items:flex-end;gap:1px;height:100%;min-width:0}
.bars .pr i{min-height:2px}.bars .pr i.o{background:var(--line)}
.lg{display:flex;gap:14px;font-size:11.5px;color:var(--ink4);margin-top:6px}
.lg i{display:inline-block;width:8px;height:8px;border-radius:2px;background:var(--ink5);margin-right:5px}.lg i.o{background:var(--line)}
/* ---- supply：采购 / 收货 / 跑货 ---- */
/* 商品小图（凡是商品都带）：点开 = 全屏大图（CSS :target，不要 JS）；没图 = 空灰块 */
.pic{position:relative;flex:none;display:block;width:52px;height:52px;border-radius:12px;background:var(--line);overflow:hidden}
.pic img{width:100%;height:100%;object-fit:cover;display:block}
.pic::after{content:"";position:absolute;right:4px;bottom:4px;width:12px;height:12px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 2.5px var(--ink3)}
.pic.none{background:var(--soft2);box-shadow:inset 0 0 0 1.5px var(--line)}.pic.none::after{display:none}
.pic.lg{width:100%;height:auto;aspect-ratio:1/1;border-radius:var(--r-l)}
.pv{display:none;position:fixed;inset:0;z-index:30;flex-direction:column;background:var(--ink);color:var(--bg)}
.pv:target{display:flex}
.pv .pvx{height:56px;display:flex;align-items:center;padding:0 10px;color:var(--bg)}
.pv img{flex:1;min-height:0;width:100%;object-fit:contain}
.pv .pvt{padding:16px 20px calc(28px + env(safe-area-inset-bottom))}.pv .pvt b{display:block;font-size:19px;font-weight:600}
.pv .pvt small{display:block;margin-top:4px;font-size:13.5px;color:var(--ink4)}
/* 数量 − n ＋（每个按钮一个 POST） */
.stp{display:flex;align-items:center;gap:4px;flex:none}.stp form{margin:0}
.stp button{width:44px;height:44px;border:0;border-radius:9px;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--line);font-size:17px;font-weight:600;cursor:pointer;line-height:1}
.stp b{min-width:28px;text-align:center;font-size:16px;font-weight:600}
/* 行尾的删 / 不做了「✕」：离旁边的主按钮远一点、热区 44px（补货、收货单行），手机上别误点 */
.row .act.far,.row .acts.far{gap:20px}.row .far .btn.x{min-width:44px;min-height:44px;padding:0}
/* 底栏超过 6 个入口（进货 / 收货的底栏带上补货 · 图册 · 标签）：字小一号、不溢出 */
.nav:has(> a:nth-child(7)) a{min-width:0;font-size:9.5px}.nav:has(> a:nth-child(7)) a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 一张采购单的进度：四格一行，没到的灰，要处理的黄 */
.prog{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 16px 0}
.prog div{min-height:70px;padding:10px;border-radius:12px;background:var(--soft);font-size:12px;color:var(--ink3);line-height:1.3}
.prog b{display:block;margin:6px 0 2px;font-size:13.5px;color:var(--ink)}
.prog .off b{color:var(--ink4)}.prog .off .dot{background:var(--ink5)}
.prog .w{background:var(--amber-bg);color:var(--amber)}.prog .w b{color:var(--amber)}.prog .w .dot{background:var(--amber-dot)}
.prog .dot{display:block;width:7px;height:7px;background:var(--ink)}
/* 跑货路线：编号圆点，当前这一站黑底 */
.num{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--bg);font-size:13px;font-weight:600;color:var(--ink2)}
.num.on{background:var(--ink);color:var(--bg)}.num.ok{background:var(--green-bg);color:var(--green)}
.row.done .a b{text-decoration:line-through;color:var(--ink4)}
.row .act{display:flex;align-items:center;gap:6px;flex:none}.row .act form{margin:0;display:flex;gap:6px;align-items:center}
.row .act .inp{width:54px;min-height:36px;padding:0 6px;text-align:center}
.grp .btn.sec{background:var(--bg)}
/* 单选变分段（付款方式、单据有没有）：label 包 radio */
.seg label{flex:1;min-width:0;position:relative;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 4px;height:34px;line-height:34px;border-radius:10px;font-size:14px;font-weight:500;color:var(--ink2);cursor:pointer}
.seg label input{position:absolute;opacity:0;pointer-events:none}
.seg label:has(input:checked){background:var(--bg);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06)}
/* 虚线「加一样」按钮 · 下单内容文本框 */
.btn.add{background:transparent;color:var(--ink2);border:1.5px dashed var(--ink5);font-weight:500}
textarea.inp{min-height:180px;padding:12px 14px;font:13px/1.5 ui-monospace,Menlo,Consolas,monospace;resize:vertical}
input[type=file].inp{padding:10px 14px;font-size:14px}
.fl .btn{flex:none}
/* ---- 店里电脑（CAJA2 1366×768）：ui/pc.html 外壳 + 电脑首页 + 商品查价（打价签链到 /etiquetas/） ----
   设计稿 67b7312:docs/designs/boss-day-2026-09-23/claude-2-pc-purchase-web.html 顶上三屏。顶栏 = 店名 + 四个入口（F1–F4）+ 谁在用 + 日期；
   下面左大右窄（右栏 .pcside 放群 / 设备 / 选中的那件货）。窄屏（< 900px，手机上看点钞单）右栏落到下面。 */
.pc{min-height:100vh;display:flex;flex-direction:column}
.pcbar{min-height:58px;flex:none;display:flex;align-items:center;gap:6px;padding:0 20px;border-bottom:1px solid var(--hair);background:#fff;position:sticky;top:0;z-index:6}
.pcbar .wm{font-size:13px;font-weight:600;letter-spacing:.3em;color:var(--ink4);margin-right:16px;white-space:nowrap}
.pcnav{display:flex;gap:4px;overflow-x:auto;min-width:0}
.pcnav a{display:flex;align-items:center;gap:8px;height:42px;padding:0 14px;border-radius:12px;font-size:16px;font-weight:600;color:var(--ink3);white-space:nowrap}
.pcnav a.on{background:var(--soft);color:var(--ink)}
.pcnav a:focus-visible,.pcwho a:focus-visible,a.tile:focus-visible,.pp:focus-visible{outline:2.5px solid var(--ink);outline-offset:2px}
.kbd{display:inline-grid;place-items:center;min-width:26px;height:22px;padding:0 5px;border-radius:6px;box-shadow:inset 0 0 0 1.25px var(--ink5);font-size:11.5px;font-weight:600;color:var(--ink4)}
.pcbar .sp{flex:1}
.pcwho{display:flex;align-items:center;gap:6px;font-size:14.5px;color:var(--ink2);white-space:nowrap}
.pcwho a.ask{font-weight:600;background:var(--soft);border-radius:18px;padding:8px 14px;color:var(--ink)}
.pcwho a.sw,.pcwho button{border:0;background:none;color:var(--ink3);font-size:13.5px;font-weight:500;cursor:pointer;padding:6px 8px;border-radius:8px}
.pcwho form{margin:0}
.pcdate{font-size:14.5px;color:var(--ink3);margin-left:12px;white-space:nowrap}
.pcbody{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 340px}
.pcbody.full{grid-template-columns:minmax(0,1fr)}
.pcmain{padding:20px 26px 32px;min-width:0}
.pcbody.full .pcmain{max-width:1180px}
.pcside{background:var(--soft2);border-left:1px solid var(--hair);padding:18px 16px 28px;min-width:0;position:sticky;top:58px;height:calc(100vh - 58px);overflow-y:auto}
.pcside .grp{margin:0 0 12px;background:#fff}
.pcside .grp>.t{padding-top:12px}
.pchd{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.pchd .clock{font-size:46px;font-weight:600;letter-spacing:-.02em;line-height:1}
.pchd h1{margin:0;font-size:24px;font-weight:600}
.pchd .sub{flex:1;font-size:15.5px;color:var(--ink3)}
.pc .stt,.pc .seg,.pc .hero{margin:14px 0 0}
.pc .pcmain .grp{margin:14px 0 0}
.pc .err,.pc .okmsg{margin:12px 0 0}
.pc .note{margin:12px 2px 0}
.pc .btn.block{width:100%;margin:12px 0 0}
.pc .fl{margin:10px 0 0}
.pc .lbl{margin:10px 0 4px}.pc .lbl+.inp{margin:0;width:100%}
/* 首页六格：3 列、大字，整格是链接；底下两行小字（.r 出问题 / .w 要处理） */
.pc .tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0 0}
.pc .tile{height:156px;padding:16px 18px;border-radius:var(--r-l)}
.pc .tile .l{font-size:15px}
.pc .tile .v{font-size:24px;margin-top:6px}
.pc .tile .s{font-size:14px;line-height:1.6;color:var(--ink2);white-space:normal}
.pc .tile .s div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc .tile .s .r{color:var(--red);font-weight:600}.pc .tile .s .w{color:var(--amber);font-weight:600}
.pc .tile.dim{background:var(--soft2)}.pc .tile.dim .v{color:var(--ink4)}
/* 右栏一行：左字右值（设备、价签信息） */
.lv{display:flex;align-items:center;gap:10px;min-height:35px;font-size:14.5px;color:var(--ink2)}
.lv+.lv{border-top:1px solid rgba(0,0,0,.04)}
.lv b{margin-left:auto;font-weight:500;text-align:right;color:var(--ink)}
.lv b.g{color:var(--green-dot)}.lv b.r{color:var(--red);font-weight:600}.lv b.w{color:var(--amber);font-weight:600}.lv b.o{color:var(--ink4)}
.cm{font-size:14px;line-height:1.5;color:var(--ink2);padding:5px 0}.cm b{font-weight:600;margin-right:6px;color:var(--ink)}
/* 商品查价：大搜索条（扫码枪直接打进来 + 回车）+ 结果行 + 右栏大图 */
.srch{display:flex;align-items:center;gap:10px;height:58px;border-radius:16px;background:var(--soft);padding:0 16px;margin:0}
.srch svg.i{width:22px;height:22px;color:var(--ink3)}
.srch input{flex:1;min-width:0;height:100%;border:0;background:none;font-size:19px;outline:none}
.srch em{font-style:normal;font-size:13px;color:var(--ink4);white-space:nowrap}
.srch:focus-within{box-shadow:inset 0 0 0 2px var(--ink)}
.pp{display:flex;align-items:center;gap:14px;padding:10px 12px;border-radius:16px;margin-top:8px}
.pp.on{background:var(--soft)}
.pp .th{width:64px;height:64px;border-radius:12px;background:var(--line);object-fit:cover;flex:none}
.pp .pi{flex:1;min-width:0}.pp .pi b{display:block;font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pp .pi span{font-size:13px;color:var(--ink4)}
.pp .pv{display:block;position:static;z-index:auto;background:none;color:inherit;text-align:right;white-space:nowrap}   /* 和上面全屏看图的 .pv 撞名：以前结果行的价格被 display:none 藏掉（09-29 标签页发现，商品页同一个问题） */.pp .pv b{display:block;font-size:18px;font-weight:600}.pp .pv span{font-size:13px;color:var(--ink3)}
.pcimg{display:block;width:100%;aspect-ratio:2/1;border-radius:16px;background:var(--line);object-fit:cover;margin:0 0 12px}
.pchd2{font-size:18px;font-weight:600;margin:22px 0 0}.pchd2 small{font-size:13px;font-weight:500;color:var(--ink4);margin-left:6px}
/* 标签 label（/etiquetas/；2026-10-08 ZHOU.G 定「CF 10-08」一版，四页同一套）：白顶栏（下面一条细线，没有色带）、下划线页签、浅灰页、
   白卡 1px 细边 8px 圆角；全页只有打印键是彩色（蓝），选中的二选一 / 选片 = 浅蓝底蓝边；出错的格子描红、原因写在打印键下面；缺的格子标橙。
   版面 = 左主卡片（输入 → 签 → 张数 → 打印 → 出纸状态）+ 右栏 300（设置 / 模板 / 最近打过的）；大签两页主卡片里再分左格子右签。
   店里电脑 1366×768 / 1280×800 一屏放下打印键；≤ 900 叠一栏，≤ 720 手机（触屏左上「‹」回首页，输入 16px 不放大）。 */
body.lbapp{--lb-page:#f6f6f7;--lb-ln:#e2e2e5;--lb-ln2:#cdcdd2;--lb-ink:#1d1d1f;--lb-ink2:#4a4a50;--lb-ink3:#6b6b73;--lb-blue:#2563eb;--lb-blue-h:#1d4ed8;--lb-bluebg:#eff6ff;
  background:var(--lb-page);color:var(--lb-ink);min-height:100vh;display:flex;flex-direction:column}
.lbapp [hidden]{display:none!important}
.lbtop{display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;height:52px;padding:0 24px;background:#fff;border-bottom:1px solid var(--lb-ln);position:sticky;top:0;z-index:6;flex:none}
.lbbrand{display:flex;align-items:center;gap:6px;min-width:0}
.lbtop .brand{font-size:13px;font-weight:800;letter-spacing:.18em}
.lbback{display:none;width:40px;height:40px;margin-left:-8px;border-radius:8px;place-items:center;color:var(--lb-ink)}
.lbtop nav{display:flex}
.lbtab{display:flex;align-items:center;padding:0 14px;font-size:15px;font-weight:500;color:var(--lb-ink3);white-space:nowrap}
.lbtab:hover{color:var(--lb-ink)}.lbtab.on{color:var(--lb-ink);font-weight:600;box-shadow:inset 0 -2px 0 var(--lb-blue)}
.lbtop .st{justify-self:end;display:flex;align-items:center;gap:14px;font-size:12.5px;color:var(--lb-ink3)}
.lbapp .pr{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.lbtop .dot{width:7px;height:7px}
.lbmain{flex:1;padding:18px 24px 22px}
.lbgrid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start;width:1180px;max-width:100%;margin:0 auto}
.lbleft{min-width:0}.lbside{display:flex;flex-direction:column;gap:14px;min-width:0}
.lbcard{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px var(--lb-ln);padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0}
.lbside .lbcard{padding:14px 16px;gap:0}
.lbcard h3{margin:0;font-size:14.5px;font-weight:600}
.lbsubt{margin:3px 0 8px;font-size:12.5px;color:var(--lb-ink3)}
.lbkeys{margin:10px 2px 0;font-size:12px;color:var(--lb-ink3)}
.lbk{display:block;font-size:12.5px;font-weight:600;color:var(--lb-ink2)}
.lberr .lbk{color:var(--red)}
/* 输入 */
.lbin{display:block;width:100%;height:40px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);padding:0 12px;font-size:15px;font-weight:500;color:var(--lb-ink);outline:0}
.lbin.sm{width:140px}
select.lbin{padding-right:8px;cursor:pointer}
.lbta{display:block;width:100%;min-height:64px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);padding:9px 12px;font-size:15px;font-weight:500;line-height:1.5;color:var(--lb-ink);resize:vertical;outline:0}
.lbin:focus,.lbta:focus{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lberr .lbin,.lberr .lbta{box-shadow:inset 0 0 0 2px var(--red-dot)}
.lbsub{margin-top:6px;font-size:12.5px;color:var(--lb-ink3)}
.lbsub button,.lblink{border:0;background:none;padding:0;font:inherit;font-size:13.5px;color:var(--lb-ink3);text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap}
.lblink:hover,.lbsub button:hover{color:var(--lb-ink)}
.lbrow{display:flex;align-items:center;gap:10px}.lbrow .lbin{flex:1}
.lbcount{margin-top:4px;font-size:12px;color:var(--lb-ink3);text-align:right}.lbcount.bad{color:var(--red);font-weight:700}
/* 选片 */
.lbpick{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px}
.lbpick.rooms{grid-template-columns:repeat(6,minmax(0,1fr)) minmax(0,1.7fr)}
.lbpick button{min-width:0;height:38px;padding:0 8px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);font-size:13px;font-weight:500;line-height:1.15;color:var(--lb-ink2);cursor:pointer}
.lbpick button:hover{box-shadow:inset 0 0 0 1px var(--lb-ink3)}
.lbpick button.on{background:var(--lb-bluebg);color:var(--lb-blue);box-shadow:inset 0 0 0 1.5px var(--lb-blue);font-weight:600}
.lbpick.rooms button{height:44px;font-size:17px;font-weight:700}.lbpick.rooms button.s{font-size:12.5px}
.lbpick .own{min-width:0;width:100%;height:38px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);padding:0 10px;font-size:13px;font-weight:500;outline:0}
.lbpick .own:focus{box-shadow:inset 0 0 0 2px var(--lb-blue)}
/* 价签：扫码框 + 下拉 */
.lbscan{position:relative}
.lbscan .srch{height:54px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 2px var(--lb-ink)}
.lbscan .srch:focus-within{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lbscan .srch input{font-size:18px}.lbscan .srch input::placeholder{color:var(--ink4)}
.lbhits{position:absolute;left:0;right:0;top:58px;z-index:5;max-height:min(62vh,520px);overflow-y:auto;overscroll-behavior:contain;border-radius:8px;background:#fff;box-shadow:0 0 0 1px var(--lb-ln),0 12px 28px rgba(0,0,0,.10)}
.lbhit{display:flex;align-items:center;gap:12px;height:48px;padding:0 16px;border-top:1px solid var(--hair)}.lbhit:first-child{border-top:0}
.lbhit.on,.lbhit:hover{background:var(--lb-bluebg)}
.lbhit b{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbhit span{font-size:14px;color:var(--lb-ink3);font-variant-numeric:tabular-nums}
.lbhit em{width:76px;font-style:normal;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}
.lbhits .none{margin:0;padding:14px 16px;color:var(--lb-ink3)}
.lbmeta{margin-top:-4px;font-size:13px;color:var(--lb-ink3)}
.lbnote{margin:0;padding:10px 14px;border-radius:8px;font-size:14px;font-weight:500}
.lbnote.w{background:var(--amber-bg);color:var(--amber)}.lbnote.r{background:var(--red-bg);color:var(--red)}
/* 签（服务器画的出纸位图） */
.lbstage{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-items:center;min-width:0;padding:18px;border-radius:8px;background:repeating-conic-gradient(#f2f2f4 0 25%,#fafafb 0 50%) 0 0/16px 16px;box-shadow:inset 0 0 0 1px var(--lb-ln)}
.lbpv{display:grid;place-items:center;overflow:hidden;border-radius:4px;background:#fff;box-shadow:0 0 0 1px var(--lb-ln2),0 4px 14px rgba(0,0,0,.06)}
.lbpv img{display:block;width:100%;height:100%}
.lbpv.s{width:480px;max-width:100%;aspect-ratio:320/200}.lbpv.s img{image-rendering:pixelated}
.lbpv.b{align-self:center;width:min(100%,calc((100vh - 330px) / 1.5));aspect-ratio:100/150}
.lbpv.empty{background:#fafafa;box-shadow:inset 0 0 0 1px var(--lb-ln2);padding:0 20px;font-size:14.5px;color:var(--lb-ink3);text-align:center}
.lbpv.bad{box-shadow:0 0 0 3px var(--red-dot)}
.lbpvline{font-size:12.5px;color:var(--lb-ink3);text-align:center}.lbpvline b{color:var(--lb-ink2);font-weight:600}
/* 张数 + 打印（全页唯一的彩色键）、原因、出纸状态 */
.lbact{display:grid;grid-template-columns:110px minmax(0,1fr);gap:10px;align-items:end}
.lbq{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:600;color:var(--lb-ink2)}
.lbq input{width:100%;height:52px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);text-align:center;font-size:22px;font-weight:800;outline:0}
.lbq input:focus{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lbgo{display:flex;align-items:center;justify-content:center;gap:10px;min-width:0;height:52px;border:0;border-radius:8px;background:var(--lb-blue);color:#fff;font-size:17px;font-weight:700;cursor:pointer}
.lbgo:hover{background:var(--lb-blue-h)}
.lbgo .kbd{background:none;color:inherit;min-width:0;height:auto;font-size:11px;font-weight:700;padding:0 6px;line-height:17px;border-radius:5px;box-shadow:inset 0 0 0 1.2px currentColor;opacity:.8}
.lbgo:disabled{background:#eef0f3;color:#9a9aa2;cursor:not-allowed}
.lbwhy{margin:-4px 0 0;font-size:13.5px;font-weight:600;color:var(--red)}
.lbjob{display:flex;align-items:center;gap:10px;min-height:42px;padding:6px 14px;border-radius:8px;font-size:14px;font-weight:500}
.lbjob.ok{background:var(--green-bg);color:var(--green)}.lbjob.w{background:var(--amber-bg);color:var(--amber)}.lbjob.r{background:var(--red-bg);color:var(--red)}
.lbjob>span{min-width:0}.lbjob button{flex:none;margin-left:auto;border:0;background:none;padding:0;font:inherit;font-weight:700;color:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
/* 右栏：设置 / 模板 / 最近打过的 */
.lbside .lbset{gap:10px}.lbset .lbsubt{margin-bottom:0}
.lbset .lbk{margin-bottom:5px}
.lbrow2{display:grid;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:6px 10px;padding-top:10px;border-top:1px solid #f0f0f2}.lbset .lbrow2 .lbk{margin:0}
.lbhint{grid-column:2;margin:0;font-size:12px;line-height:1.35;color:var(--lb-ink3)}.lbset .lbhint{margin-top:-2px}
.lbrec{display:flex;justify-content:space-between;gap:10px;width:100%;padding:8px 0;border:0;border-top:1px solid #f0f0f2;background:none;font:inherit;font-size:13px;color:var(--lb-ink);text-align:left}
.lbcard h3+.lbrec{margin-top:8px}
.lbrec span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lbrec small{flex:none;color:var(--lb-ink3)}
.lbrec em{font-style:normal;font-size:12px;color:var(--lb-ink3)}
a.lbrec:hover span,button.lbrec:hover span{color:var(--lb-blue)}button.lbrec{cursor:pointer}
/* 文字签（10-19 重做）：没有右栏；页头一句「这页打什么」→ 左写字框（每行右边写这一行印成签上哪一块）+ 模板一排 + 三条规则、右签 + 打印 → 下面一排真示例 */
.lbgrid.wide{grid-template-columns:minmax(0,1fr)}
.lbxhd{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.lbxhd h1{margin:0;font-size:18px;font-weight:700}.lbxhd p{margin:0;font-size:13px;color:var(--lb-ink3)}
.lbxwork{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:18px;align-items:start;margin-top:10px}
.lbxed{gap:8px;padding:14px}
.lbxbox{position:relative;overflow:hidden;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 2px var(--lb-ink)}
.lbxbox:focus-within{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lberr.lbxbox{box-shadow:inset 0 0 0 2px var(--red-dot)}
.lbxbox textarea{position:relative;z-index:1;display:block;width:100%;height:160px;margin:0;border:0;outline:0;background:none;resize:none;padding:8px 210px 8px 44px;
  font:700 21px/36px var(--font);letter-spacing:.01em;color:var(--lb-ink);white-space:pre;overflow:auto}
.lbxbox textarea::placeholder{color:#c3c3c9;font-weight:600}
.lbxrows{position:absolute;z-index:2;inset:8px 0 auto 0;pointer-events:none}
.lbxrows div{display:flex;align-items:center;justify-content:space-between;height:36px}.lbxrows div+div{box-shadow:inset 0 1px 0 #ececef}
.lbxrows .n{width:44px;height:100%;display:grid;place-items:center;background:#fff;font-size:12px;font-weight:600;color:var(--lb-ink3)}
.lbxrows .r{margin-right:12px;padding:2px 8px;border-radius:6px;background:var(--lb-page);font-size:12px;font-weight:600;color:var(--lb-ink3);white-space:nowrap}
.lbxrows .r.p{background:var(--lb-bluebg);color:var(--lb-blue)}
.lbxtools{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.lbtg{flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);font:inherit;font-size:13.5px;font-weight:600;color:var(--lb-ink2);cursor:pointer}
.lbtg:hover{box-shadow:inset 0 0 0 1px var(--lb-ink3)}
.lbtg.on{background:var(--lb-bluebg);color:var(--lb-blue);box-shadow:inset 0 0 0 1.5px var(--lb-blue)}
.lbtg kbd{font:inherit;font-size:11px;font-weight:700;padding:0 5px;border-radius:4px;box-shadow:inset 0 0 0 1.2px currentColor;opacity:.7}
select.lbtg{width:auto;padding:0 10px;appearance:none}#tq{width:98px}#zone{width:88px}
.lbtgset{flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 4px 0 10px;border-radius:8px;box-shadow:inset 0 0 0 1px var(--lb-ln2);font-size:13px;font-weight:600;color:var(--lb-ink2)}
.lbtgset span{margin-right:4px}
.lbtgset button{height:26px;min-width:30px;padding:0 5px;border:0;border-radius:6px;background:none;font:inherit;font-size:13px;font-weight:600;color:var(--lb-ink2);cursor:pointer}
.lbtgset button:hover{background:var(--lb-page)}.lbtgset button.on{background:var(--lb-bluebg);color:var(--lb-blue)}
.lbxbox .lbcount{display:none;position:absolute;z-index:2;right:12px;bottom:4px;margin:0;padding:1px 8px;border-radius:6px;background:var(--red-bg);font-size:12px}.lbxbox .lbcount.bad{display:block}
@media (min-width:1101px){.lbxtools{flex-wrap:nowrap}}
.lbxhow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.lbxhow div{display:flex;align-items:center;gap:8px;padding:5px 9px;border-radius:8px;background:var(--lb-page);font-size:12px;line-height:1.3;color:var(--lb-ink2)}
.lbxhow b{flex:none;display:grid;place-items:center;min-width:40px;height:24px;padding:0 5px;border-radius:5px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);font-size:12px;font-weight:800;color:var(--lb-ink)}
.lbxout{display:flex;flex-direction:column;gap:10px;min-width:0}
.lbxout .lbstage{padding:14px}.lbxout .lbpv.s{width:100%}
.lbxex{margin-top:12px}
.lbxex h2{display:flex;align-items:baseline;gap:10px;margin:0 0 8px;font-size:13.5px;font-weight:700;color:var(--lb-ink2)}
.lbxex h2 small{font-size:12.5px;font-weight:400;color:var(--lb-ink3)}
.lbxgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.lbxe{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:center;padding:10px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln);font:inherit;text-align:left;color:var(--lb-ink);cursor:pointer}
.lbxe:hover{box-shadow:inset 0 0 0 1px var(--lb-ink3)}.lbxe.on{background:var(--lb-bluebg);box-shadow:inset 0 0 0 2px var(--lb-blue)}
.lbxe img{width:120px;height:75px;image-rendering:pixelated;background:#fff;box-shadow:0 0 0 1px var(--lb-ln2);border-radius:2px}
.lbxe span{min-width:0}.lbxe b{display:block;font-size:13.5px;font-weight:700}.lbxe small{display:block;margin-top:2px;font-size:12px;color:var(--lb-ink3);line-height:1.35}
.lbxe code{display:block;margin-top:5px;font:600 11.5px/1.3 ui-monospace,Consolas,monospace;color:var(--lb-ink2);white-space:pre;overflow:hidden;text-overflow:ellipsis}
.lbxrec{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;font-size:12.5px;font-weight:600;color:var(--lb-ink3)}
.lbxrec .lbrec{width:auto;padding:4px 10px;border-top:0;border-radius:6px;box-shadow:inset 0 0 0 1px var(--lb-ln);background:#fff}
@media (max-width:1100px){.lbxgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.lbxwork{grid-template-columns:minmax(0,1fr)}.lbxhow{grid-template-columns:minmax(0,1fr)}}
@media (max-width:720px){.lbxbox textarea{padding-right:12px}.lbxrows .r{display:none}
  .lbtgset{flex-wrap:wrap;height:auto;padding:4px 6px 4px 10px}.lbtgset span{width:100%}.lbxex h2{flex-wrap:wrap}}
/* 大签：主卡片里左格子、右签 */
.lbsplit{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}
@media (min-width:901px){.lbgrid.wide .lbsplit{grid-template-columns:minmax(0,1fr) 360px}.lbgrid.wide .lbpick{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.lbgrid.wide .lbpick.rooms{grid-template-columns:repeat(6,minmax(0,1fr)) minmax(0,1.7fr)}}.lbgrid.wide .lbleft>.lbcard+.lbcard{margin-top:14px}.lbgrid.wide .lbleft>.lbcard+.lbcard h3+.lbrec{margin-top:4px}
.lbfields{display:flex;flex-direction:column;gap:10px;min-width:0}
.lbright{display:flex;flex-direction:column;gap:12px;min-width:0;position:sticky;top:70px}
.lbta.paste{min-height:84px;box-shadow:inset 0 0 0 2px var(--lb-ink);font-size:15px}
.lbta.paste:focus{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lbtable{display:flex;flex-direction:column}
.lbfr{display:grid;grid-template-columns:110px minmax(0,1fr);gap:14px;align-items:center;padding:9px 0;border-top:1px solid #f0f0f2}
.lbfr:first-child{border-top:0}.lbfr.tall{align-items:start}.lbfr.tall>.lbk{padding-top:10px}
.lbfr.miss>.lbk{color:var(--amber)}
.lbfr.miss .lbin,.lbfr.miss .lbta{background:var(--amber-bg);box-shadow:inset 0 0 0 1.5px var(--amber-dot)}
.srch.lbre{height:44px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--lb-ln2);padding:0 12px}.srch.lbre input{font-size:14.5px}.srch.lbre svg.i{width:18px;height:18px}
.srch.lbre:focus-within{box-shadow:inset 0 0 0 2px var(--lb-blue),0 0 0 4px var(--lb-bluebg)}
.lbfoot{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:14px;height:34px;padding:0 24px;border-top:1px solid var(--lb-ln);font-size:11.5px;color:var(--lb-ink3)}
.lbfoot b{font-weight:700;letter-spacing:.08em;color:var(--lb-ink2)}
@media (pointer:coarse){.lbback{display:inline-grid}.lbapp input,.lbapp textarea,.lbapp select,.lbapp .srch.lbre input,.lbapp .lbpick .own{font-size:16px}}
@media (max-width:1100px){.lbsplit{grid-template-columns:minmax(0,1fr) 260px}}
@media (max-width:900px){.lbgrid,.lbsplit{grid-template-columns:minmax(0,1fr)}.lbright{position:static}.lbpv.b{width:280px}.lbcard{padding:14px}.lbact{grid-template-columns:96px minmax(0,1fr)}}
@media (max-width:720px){.lbtop{grid-template-columns:auto 1fr;gap:6px;padding:0 8px 0 12px}.lbtop .brand{display:none}.lbtop .st{display:none}.lbtop nav{overflow-x:auto}.lbtab{padding:0 12px}
  .lbmain{padding:14px 12px 20px}.lbfr{grid-template-columns:1fr;gap:6px}.lbfr.tall>.lbk{padding-top:0}.lbpick.rooms{grid-template-columns:repeat(4,1fr)}.lbfoot{padding:0 12px}}
/* 标签手机版（10-25 ZHOU.G「手机也能快和准」，Issue #395）：张数 + 打印钉在屏幕底部，划到哪都按得到，按了不打的原因贴在它上面；
   地址签粘完只亮出缺的 / 预览判错的格子（其余收起，「Ver todas las casillas」展开）；没键盘的不显示按键说明。 */
.lbmore{display:none}
.lbfct{display:block;width:100%;margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:default}
@media (pointer:coarse){.lbkeys,.lbgo .kbd,.lbtg kbd{display:none}}
@media (max-width:720px){
  .lbapp{padding-bottom:84px}
  .lbapp .lbact{position:fixed;z-index:20;left:0;right:0;bottom:0;margin:0;padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    grid-template-columns:96px minmax(0,1fr);background:#fff;box-shadow:0 -1px 0 var(--lb-ln),0 -6px 18px rgba(0,0,0,.06)}
  .lbapp .lbact .lbq>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .lbapp .lbact .lbq input,.lbapp .lbact .lbgo{height:52px}
  .lbapp .lbwhy:not([hidden]){position:fixed;z-index:20;left:0;right:0;bottom:calc(72px + env(safe-area-inset-bottom));margin:0;padding:8px 14px;background:#fff;box-shadow:0 -1px 0 var(--lb-ln)}
  .lbapp:has(.lbwhy:not([hidden])){padding-bottom:124px}
  .lbpv.b{width:min(62vw,240px)}
  .lbtable.lbfold>.lbfr:not(.show):not(.lberr){display:none}
  .lbtable.lbfold:not(:has(>.show,>.lberr)){display:none}
  .lbtable.lbfold+.lbmore{display:block;width:100%;height:44px;border:0;border-radius:8px;background:var(--lb-page);font:inherit;font-size:14px;font-weight:600;color:var(--lb-ink2)}
  .lbxgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lbxe{grid-template-columns:1fr;gap:6px;padding:8px}.lbxe img{width:100%;height:auto;aspect-ratio:320/200}.lbxe small,.lbxe code{display:none}
}
/* 收成一行的卡片只在手机上（窄 + 触屏）：店里电脑窗口开窄了照样摊开（Fable 10-25）。JS 的判断在 _sheet.html 的 FOLD，两处同一个式子 */
@media (max-width:720px) and (pointer:coarse){
  .lbfc .lbfct{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;margin:-10px 0;cursor:pointer}
  .lbfc .lbfct::after{content:"";flex:none;width:8px;height:8px;margin-right:4px;border:solid var(--lb-ink3);border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
  .lbfc.open .lbfct::after{transform:rotate(-135deg) translateX(-2px)}
  .lbfc:not(.open)>:not(h3){display:none}
}
.wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;margin:12px 0 0}
.wall .ph{position:relative;border-radius:14px;overflow:hidden;background:var(--soft)}
.wall .ph img{display:block;width:100%;aspect-ratio:1;object-fit:cover;-webkit-touch-callout:none;user-select:none}
.wall .ph .cap{font-size:12.5px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink2)}
.wall .ph .add{position:absolute;top:6px;right:6px;width:36px;height:36px;border-radius:18px;display:grid;place-items:center;background:rgba(255,255,255,.92);color:var(--ink)}
.pc details{margin:12px 0 0}.pc details>summary{cursor:pointer;min-height:40px;line-height:40px;font-size:14.5px;font-weight:600;color:var(--ink2)}
@media (max-width:900px){
  .pcbar{flex-wrap:wrap;padding:6px 10px;gap:4px}.pcbar .wm,.pcdate,.pcnav .kbd{display:none}
  .pcbody{grid-template-columns:minmax(0,1fr)}.pcside{border-left:0;border-top:1px solid var(--hair);position:static;height:auto}
  .pcmain{padding:14px 14px 24px}.pc .tiles{grid-template-columns:1fr 1fr}.pc .tile{height:132px}
}
@media print{.pcbar,.pcside{display:none!important}.pcbody{display:block}.pcmain{padding:0}}

/* ---------- 全站统一（09-25 ZHOU.G「交互统一一致」）：暖白底 · 白卡细边 · 页头同一个样（左页名 / 二级页左上 ‹ 返回）· 底栏同色。
   放在最后，盖掉前面各页的旧底色；新页只用组件，不自己画。 ---------- */
html,body{background:var(--paper)}
/* 页头让开刘海：装到 iPhone 主屏幕全屏开时页面顶到状态栏下面，返回键和右上换人点不到（Fable 10-01 中-6）；浏览器标签页里这个值是 0，不变 */
.hd{height:auto;min-height:calc(64px + env(safe-area-inset-top));padding:calc(12px + env(safe-area-inset-top)) 16px 4px;gap:10px;background:rgba(251,249,249,.96)}
.hd h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hd h1 small{font-size:13px;font-weight:600;color:var(--ink3);letter-spacing:0}
.hd .back{width:40px;height:40px;flex:none;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);color:var(--ink)}
.hd .side{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink3)}
.nav{background:rgba(251,249,249,.97);border-top-color:#ebe6e7}
.hero,.grp,.tile{background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
.grp.w{background:var(--amber-bg);box-shadow:inset 0 0 0 1.5px var(--amber-line)}.grp.r{background:var(--red-bg);box-shadow:none}.grp.g{background:var(--green-bg);box-shadow:none}
.row+.row{border-top-color:var(--hair2)}
.stt{background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}.stt.w{background:var(--amber-bg);box-shadow:none}.stt.r{background:var(--red-bg);box-shadow:none}.stt.b{background:var(--blue-bg);box-shadow:none}
.seg{background:#f0ecec}.btn.sec,.grp .btn.sec{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1px var(--card-line)}
.sheet .go{background:var(--tile)}
input[type=file]{font-size:13.5px;color:var(--ink3);max-width:100%}
input[type=file]::file-selector-button{margin-right:10px;min-height:40px;padding:0 14px;border:0;border-radius:var(--r-s);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);color:var(--ink);font:600 14px var(--font);cursor:pointer}
/* 弹窗：从下面滑上来；拖动条更好抓；遮罩淡入 */
@keyframes sheetup{from{transform:translateY(40px)}to{transform:none}}@keyframes shadein{from{opacity:0}to{opacity:1}}
.sheet{animation:sheetup .18s ease-out;overscroll-behavior:contain;touch-action:pan-y}.shade{animation:shadein .18s ease-out}
.sheet .grab{width:44px;height:5px;margin:2px auto 12px}
/* 登录 / PIN：一张卡居中 */
.auth{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:24px 20px 48px;max-width:420px;margin:0 auto}
.auth .mk2{width:56px;height:56px;border-radius:16px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:600;position:relative;margin-bottom:18px}
.auth .mk2::after{content:"";position:absolute;left:17px;right:17px;bottom:13px;height:1.5px;background:var(--ink4)}
.auth h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.02em}.auth .sub{margin:4px 0 20px;color:var(--ink3);font-size:14px}
.auth .card2{padding:18px;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
.auth label{display:block;font-size:13px;font-weight:600;color:var(--ink3);margin:0 0 6px}.auth .inp{margin-bottom:14px}
.auth .btn{width:100%}.auth .err,.auth .okmsg{margin:0 0 14px}
/* ---------- 登录页（2026-09-29 改定 Fable A「一列」，67b7312:docs/designs/login-2026-09-29/v2/fable-a.html）：只作用于 body.lg ----------
   没有卡片、没有背景装饰，一列 360px 左对齐：字标、标题、两个框、一颗黑键；层次只靠字重和灰阶。
   自己一套 --lg-* 色（设计稿的配色），跟随系统深色；蓝色只用在焦点环和过期提示 */
body.lg{--lg-bg:#FAFAFA;--lg-fg:#18181B;--lg-fg2:#71717A;--lg-fg3:#A1A1AA;--lg-line:#E4E4E7;--lg-line2:#D4D4D8;--lg-field:#FFFFFF;
  --lg-btn:#18181B;--lg-btn-fg:#FFFFFF;--lg-btn-hover:#27272A;--lg-accent:#2563EB;--lg-ring:rgba(37,99,235,.22);
  --lg-bad:#DC2626;--lg-bad-bg:#FEF2F2;--lg-bad-line:#FECACA;--lg-lock:#B45309;--lg-lock-bg:#FFFBEB;--lg-lock-line:#FDE68A;
  --lg-info:#1D4ED8;--lg-info-bg:#EFF6FF;--lg-info-line:#BFDBFE;
  background:var(--lg-bg);color:var(--lg-fg);min-height:100dvh}
@media (prefers-color-scheme:dark){body.lg{color-scheme:dark;--lg-bg:#0A0A0B;--lg-fg:#FAFAFA;--lg-fg2:#A1A1AA;--lg-fg3:#71717A;--lg-line:#27272A;--lg-line2:#3F3F46;
  --lg-field:#131316;--lg-btn:#FAFAFA;--lg-btn-fg:#0A0A0B;--lg-btn-hover:#E4E4E7;--lg-accent:#3B82F6;--lg-ring:rgba(59,130,246,.30);
  --lg-bad:#F87171;--lg-bad-bg:#1F1315;--lg-bad-line:#4C1D1D;--lg-lock:#FBBF24;--lg-lock-bg:#1C1810;--lg-lock-line:#4A3A10;
  --lg-info:#60A5FA;--lg-info-bg:#0F172A;--lg-info-line:#1E3A5F}}
body.lg .app{width:100%;min-height:100dvh;padding-bottom:0;display:flex;flex-direction:column;position:relative}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lg-top{position:absolute;top:0;right:0;z-index:2;padding:14px 16px;padding-top:max(14px,env(safe-area-inset-top))}
.lg-seg{display:inline-flex;align-items:center;padding:2px;border:1px solid var(--lg-line);border-radius:999px;background:var(--lg-field)}
.lg-seg a{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:999px;font-size:13px;font-weight:500;color:var(--lg-fg2)}
.lg-seg a.on{background:var(--lg-fg);color:var(--lg-bg);font-weight:600}
.lg-seg a:focus-visible{outline:2px solid var(--lg-accent);outline-offset:1px}
.lg-main{flex:1;display:flex;flex-direction:column;justify-content:center;width:100%;max-width:360px;margin:0 auto;padding:96px 20px 40px}
@media (min-width:700px){.lg-main{padding:80px 0 60px}}
.lg-brand{margin:0 0 36px}
.lg-brand .name{display:block;font-size:15px;font-weight:700;letter-spacing:.16em;line-height:1}
.lg-brand .sys{display:block;margin-top:7px;font-size:11px;font-weight:500;letter-spacing:.18em;color:var(--lg-fg3)}
.lg-h{margin:0 0 24px;font-size:26px;font-weight:600;letter-spacing:-.01em;line-height:1.2}
.lg-alert{display:flex;align-items:flex-start;gap:10px;margin:0 0 20px;padding:11px 13px;border:1px solid;border-radius:8px;font-size:14px;line-height:1.45}
.lg-alert::before{content:"";flex:none;width:8px;height:8px;margin-top:6px;border-radius:50%;background:currentColor}
.lg-alert.bad{color:var(--lg-bad);background:var(--lg-bad-bg);border-color:var(--lg-bad-line)}
.lg-alert.lock{color:var(--lg-lock);background:var(--lg-lock-bg);border-color:var(--lg-lock-line)}
.lg-alert.info{color:var(--lg-info);background:var(--lg-info-bg);border-color:var(--lg-info-line)}
.lg-field{margin:0 0 16px}
.lg-field label{display:block;margin:0 0 6px;font-size:13px;font-weight:500;color:var(--lg-fg2)}
.lg-field input{display:block;width:100%;height:48px;padding:0 12px;font:inherit;font-size:16px;color:var(--lg-fg);background:var(--lg-field);
  border:1px solid var(--lg-line2);border-radius:8px;outline:0;transition:border-color .12s,box-shadow .12s}
.lg-field input:hover{border-color:var(--lg-fg3)}
.lg-field input:focus{border-color:var(--lg-accent);box-shadow:0 0 0 3px var(--lg-ring)}
.lg-bad .lg-field input{border-color:var(--lg-bad-line)}.lg-bad .lg-field input:focus{border-color:var(--lg-accent)}
.lg-go{appearance:none;cursor:pointer;display:block;width:100%;height:48px;margin-top:8px;font:inherit;font-size:15px;font-weight:600;color:var(--lg-btn-fg);
  background:var(--lg-btn);border:0;border-radius:8px;transition:background .12s}
.lg-go:hover{background:var(--lg-btn-hover)}.lg-go:focus-visible{outline:2px solid var(--lg-accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.lg-field input,.lg-go{transition:none}}
.who3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.who3 span{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;border-radius:14px;background:var(--tile);font-size:14px;font-weight:700;color:var(--ink);cursor:pointer}
.who3 span i{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--ink3);color:#fff;font-style:normal;font-size:15px}
/* 个人号换人（picking/_acct_sheet.html）：名字就是按钮，点了直接切；当前这个人黑底 */
.imgbox > .pane > .who3{margin:12px 16px 0}.who3 form{margin:0}.who3 .whob{appearance:none;border:0;padding:0;margin:0;background:none;width:100%;font:inherit;cursor:pointer;text-align:inherit}
.who3 .whob span{width:100%}.who3 .whob.on span{background:var(--ink);color:#fff}.who3 .whob.on span i{background:#fff;color:var(--ink)}
/* 发货（picking/_ship.html，2026-09-30）：收件人卡、运单号一行、重量、网店已有运单号时的确认格 */
.ship{margin-top:6px}.ship .lcard{padding:12px 14px}.shipto{display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.4}.shipto b{font-size:15px}
.shiprow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.shiprow .trk{font-size:16px;font-weight:700;letter-spacing:.02em;word-break:break-all}
.shipform{margin:12px 16px 0}
.shipkg{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:14px;color:var(--ink2)}.shipkg .inp{width:110px;text-align:center;margin:0}
.shipforce{display:flex;align-items:center;gap:8px;margin:8px 0 12px;font-size:14px}
.shipcus{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0 12px}.shipcus th{text-align:left;color:var(--ink3);font-weight:500;padding:4px 4px;border-bottom:1px solid var(--line)}.shipcus td{padding:5px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.shipx{margin-top:10px}.shipx summary{font-size:13px;color:var(--ink3);cursor:pointer;padding:6px 0}.shipx form{margin-top:8px}

/* 店里电脑外壳在手机上（老板从「更多」进点钞 / 商品；09-25 全站爬出来的问题）：顶栏换行、两栏叠成一栏、右栏不再钉住 */
/* 店里目录 /muestrario/（supply/showcase.py，2026-09-30）：图墙上的参考价 / 网店角标、筛选条、右栏分类树、单款大图、翻页。 */
.pcbar .wm.mu-wm{font-size:15px;letter-spacing:.02em;color:var(--ink);font-weight:700;text-transform:none}
.mu-eye{padding:0 10px;background:transparent;color:var(--ink4)}
.mu-fl{margin:14px 0 0}
.mu-chips{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0 0}
.mu-chips .chip{background:var(--soft);font-weight:500;padding:5px 11px;border-radius:9px;margin:0}
.mu-chips .chip.on{background:var(--ink);color:#fff}
.mu-wall{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}
.mu-wall .ph{display:block;background:var(--bg);box-shadow:inset 0 0 0 1px var(--hair)}
.mu-wall .ph img{object-fit:contain;background:#fff}
.mu-wall .ph .cap{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;height:calc(2.6em + 10px)}
.mu-wall .ph .mu-sub{height:auto;-webkit-line-clamp:1;padding-top:0;color:var(--ink4);font-size:11.5px}
.mu-px{position:absolute;top:6px;right:6px;padding:2px 8px;border-radius:8px;background:rgba(255,255,255,.94);font-size:13px;font-weight:700;color:var(--ink)}
.mu-web{position:absolute;top:6px;left:6px;padding:2px 7px;border-radius:7px;background:var(--green-bg);color:var(--green);font-size:11.5px;font-weight:600}
.mu-noimg{display:block;width:100%;aspect-ratio:1;background:var(--soft)}
.mu-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0 0}
.mu-tree{padding-bottom:10px}
.mu-tree a{display:flex;align-items:baseline;gap:8px;padding:6px 8px;border-radius:9px;color:var(--ink2)}
.mu-tree a small{margin-left:auto;color:var(--ink4);font-size:12px}
.mu-tree a.mu-top{font-weight:600;color:var(--ink)}
.mu-tree a.mu-kid{padding-left:22px;font-size:13.5px}
.mu-tree a.on{background:var(--soft)}
.mu-tree a:hover{background:var(--soft2)}
.mu-name{margin:12px 0 0;font-size:22px;font-weight:600;line-height:1.3}
.mu-big{display:block;width:100%;max-width:640px;aspect-ratio:1;object-fit:contain;background:#fff;border-radius:16px;box-shadow:inset 0 0 0 1px var(--hair);margin:14px 0 0}
.mu-price{font-size:22px;font-weight:700}
.mu-stockbtn{width:100%;margin:6px 0 8px}
@media (max-width:700px){
  .pcbar{flex-wrap:wrap;height:auto;padding:8px 12px;gap:4px}.pcbar .wm{display:none}.pcbar .kbd{display:none}.pcbar .pcdate{display:none}
  .pcnav a{padding:6px 8px}.pcbody{grid-template-columns:minmax(0,1fr)}.pcmain{padding:12px 16px 24px}
  .pcside{position:static;height:auto;border-left:0;border-top:1px solid var(--hair);padding:14px 16px 24px}
}
/* ---------- 账号应用（account，2026-10-01，ADR-0004 第 3 步）：人员列表 · 每人一页 · 逐项调 · 新建 · 我的 · 换人。
   只用 tokens；头像 / 角色小标 / 开关 / 四格号码是这一段新加的组件，别的页要用直接拿。 ---------- */
/* 头像：名字首字，圆；管理员黑底（ad）；停用浅灰；设备方角 */
.av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--tile);box-shadow:inset 0 0 0 1px var(--card-line);color:var(--ink2);font-weight:700;font-size:15px}
.av.ad{background:var(--ink);color:#fff;box-shadow:none}.av.off{background:var(--soft);color:var(--ink4);box-shadow:none}.av.dev{border-radius:12px;font-size:13px}
.av.big{width:72px;height:72px;font-size:28px}
/* 角色小标：跟在名字后面；管理员黑（ad）、自定义描边、要处理黄 */
.rt{display:inline-block;margin-left:6px;padding:0 7px;border-radius:6px;background:var(--tile);color:var(--ink2);font-size:11.5px;font-weight:600;line-height:19px;vertical-align:2px;white-space:nowrap}
.rt.ad{background:var(--ink);color:#fff}.rt.x{background:transparent;box-shadow:inset 0 0 0 1px var(--card-line);color:var(--ink3)}
.row .a small em{font-style:normal;color:var(--amber);font-weight:600}
.row.off .a b{color:var(--ink3)}
/* 列表顶上：新账号按钮 */
.hd .add{display:inline-flex;align-items:center;gap:4px;height:36px;padding:0 12px 0 10px;border-radius:10px;background:var(--ink);color:#fff;font-size:14px;font-weight:600;white-space:nowrap}
.hd .add svg.i{width:18px;height:18px}
/* 每人一页的头：头像居中 + 名字 + 小字 + 标签；下面三格事实 */
/* 某人页的头（账号页 me / person）。10-01 从 .pf 改名：.pf 是配货打勾表单 09-29 起就用的名字，撞上后三个打勾键被压成一列小按钮（Fable 10-01 高-3） */
.prof{display:flex;flex-direction:column;align-items:center;text-align:center;padding:4px 16px 0}
.prof h2{margin:10px 0 0;font-size:22px;font-weight:800;letter-spacing:-.02em}
.prof .u{font-size:13px;color:var(--ink3);margin-top:2px}
.prof .tags{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:8px}.prof .tags .rt{margin:0}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 16px 0}
.facts div{min-width:0;padding:10px 12px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 1px var(--card-line)}
.facts small{display:block;font-size:11.5px;color:var(--ink3)}
.facts b{display:block;margin-top:2px;font-size:14.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.facts b.g{color:var(--green)}.facts b.w{color:var(--amber)}
/* 角色一排：横着能滑，当前这个黑底；点了弹窗确认 */
.roles{display:flex;gap:6px;overflow-x:auto;padding:12px 0 4px;scrollbar-width:none}.roles::-webkit-scrollbar{display:none}
.roles a{flex:none;height:34px;line-height:34px;padding:0 13px;border-radius:999px;background:var(--tile);font-size:13.5px;font-weight:600;color:var(--ink2)}
.roles a.on{background:var(--ink);color:#fff}
/* 权限摘要：左边应用名，右边这个人有的码（绿） */
.capl{padding:8px 0 10px}
.capl .g{display:flex;gap:10px;padding:4px 0;font-size:13.5px}
.capl .g>span{width:64px;flex:none;padding-top:2px;color:var(--ink3);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.capl .g>div{flex:1;display:flex;flex-wrap:wrap;gap:5px}
.capl i{font-style:normal;font-size:12.5px;font-weight:600;padding:2px 8px;border-radius:7px;background:var(--green-bg);color:var(--green)}
.capl .none{padding:6px 0;color:var(--ink3);font-size:13.5px}
/* 危险的行（停用）：红字 */
.row.dng .a b{color:var(--red)}.row.dng .ic{background:var(--red-bg);color:var(--red)}
.grp .row .ic{background:var(--tile)}
/* 改动记录：一条竖线串起来，点的颜色 = 黑 改权限 / 红 停用、踢下线 */
.tl{padding:6px 0 8px}
.tl .e{display:flex;gap:12px;padding:7px 0;position:relative}
.tl .e::before{content:"";position:absolute;left:4px;top:20px;bottom:-7px;width:1.5px;background:var(--hair2)}.tl .e:last-child::before{display:none}
.tl .e>i{width:10px;height:10px;margin-top:5px;border-radius:50%;flex:none;background:var(--ink5);box-shadow:0 0 0 3px #fff}
.tl .e>i.k{background:var(--ink)}.tl .e>i.r{background:var(--red-dot)}
.tl .e div{flex:1;min-width:0;font-size:14px}.tl .e small{display:block;margin-top:1px;font-size:12px;color:var(--ink3)}
/* 开关（逐项调）：整行是 label，勾选框藏起来，右边画一个开关 */
.swr{display:flex;align-items:center;gap:10px;min-height:54px;padding:6px 0;cursor:pointer}
.swr+.swr{border-top:1px solid var(--hair2)}
.swr .a{flex:1;min-width:0}.swr .a b{display:block;font-size:14.5px;font-weight:600}.swr .a small{display:block;font-size:12px;color:var(--ink3)}
.swr input{position:absolute;opacity:0;pointer-events:none}
.swr .sw{width:44px;height:26px;border-radius:13px;background:var(--ink5);position:relative;flex:none;transition:background .15s}
.swr .sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);transition:left .15s}
.swr input:checked+.sw{background:var(--ink)}.swr input:checked+.sw::after{left:21px}
.swr input:disabled+.sw{opacity:.35}.swr input:focus-visible+.sw{outline:2px solid var(--blue-dot);outline-offset:2px}
/* 底部常驻的主按钮（逐项调的保存、新建的下一步）：页面底色渐隐 */
.dock{position:sticky;bottom:0;margin-top:14px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(251,249,249,0),var(--paper) 28%)}
.ntlater{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:4px 16px 24px}.ntlater small{flex-basis:100%;text-align:center;font-size:12.5px;color:var(--ink3)}.ntlater .btn{min-height:44px}  /* 告知书「现在不签」的出口（10-14） */
.dock .btn{width:100%}.dock small{display:block;margin-top:8px;text-align:center;font-size:12px;color:var(--ink3)}
/* 新建：选角色的卡（label 包 radio），选中的黑框 + 实心圆 */
/* 密码框右边的眼睛 */
.pwd{position:relative;margin:0 16px}.pwd .inp{padding-right:52px}
.pwd button{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;height:40px;border:0;background:none;display:grid;place-items:center;color:var(--ink3);cursor:pointer}
/* 换人：四格号码，打满自动确认（account/pin.html） */
.slots4,.auth .slots4{display:flex;justify-content:center;gap:12px;margin:14px 0 4px;cursor:text}
.slots4 span{width:52px;height:60px;border-radius:14px;background:var(--tile);display:grid;place-items:center}
.slots4 span.f::after{content:"";width:14px;height:14px;border-radius:50%;background:var(--ink)}
.slots4 span.cur{background:#fff;box-shadow:inset 0 0 0 2px var(--ink)}
.slots4.bad span{background:var(--red-bg)}
@keyframes shake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}.slots4.bad{animation:shake .3s}
.pinhide{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.kbd{display:inline-block;min-width:22px;padding:0 5px;border-radius:5px;background:var(--tile);box-shadow:inset 0 -1px 0 var(--ink5);font-size:11.5px;font-weight:700;color:var(--ink2);text-align:center}
/* 小件：行右边的灰值、空状态、红色的退出、够长了变绿、换人页提示、弹窗里的分段 */
.row .v.m{color:var(--ink3);font-weight:500;max-width:52%;overflow:hidden;text-overflow:ellipsis}
.tl .none,.capl .none{padding:6px 0;color:var(--ink3);font-size:13.5px}
.row.dng .lnk{color:var(--red)}
.note.okc{color:var(--green);font-weight:600}
.pintip{margin:10px 0 14px;text-align:center;font-size:13px;color:var(--ink3)}
.sheet .segr{margin-top:12px}.sheet .grp{margin-top:12px}
/* 第二版：开着的应用一排小绿片；开关行里的小开关往里缩；开关下面的灰字说明 */
.capl .chips{display:flex;flex-wrap:wrap;gap:5px}
.swr.sub{padding-left:18px}.swr.sub .a b{font-size:13.5px;font-weight:600}
.swr .a small.nt{color:var(--amber)}
/* 第三版（10-01，稿 67b7312:docs/designs/account-onboarding-2026-09-30）：第一次登录三步 · 我的资料 · 某人页三段 */
/* 分步进度：几段细条，走过的和当前的黑、没到的浅；下面一行小字「第几步」 */
.stepbar{display:flex;gap:5px;margin:14px 16px 0}.stepbar i{flex:1;height:4px;border-radius:2px;background:var(--card-line)}.stepbar i.on{background:var(--ink)}
.stepno{margin:10px 20px 0;font-size:12.5px;font-weight:600;color:var(--ink3)}
/* 分节标题：一句大字 + 一行说明 */
.sech{margin:18px 20px 0;font-size:15px;font-weight:800;letter-spacing:-.01em}
.sech small{display:block;font-size:12.5px;font-weight:500;color:var(--ink3);margin-top:2px;letter-spacing:0;line-height:1.45}
/* 表单里一项：标签（+ 小标）+ 输入 + 一行小字（谁能看 / 提示） */
.fq{margin:14px 16px 0}
.fq>label{display:flex;align-items:baseline;gap:6px;margin:0 4px 6px;font-size:13.5px;font-weight:600;color:var(--ink2)}
.fq .tag{font-size:11px;font-weight:600;padding:0 6px;border-radius:5px;line-height:17px;background:var(--tile);color:var(--ink3)}
.fq .pwd{margin:0}
.priv{display:flex;gap:6px;align-items:flex-start;margin:6px 4px 0;font-size:11.5px;line-height:1.4;color:var(--ink3)}
.priv svg.i{width:13px;height:13px;margin-top:1px;flex:none}
.hint2{margin:6px 4px 0;min-height:17px;font-size:12px;color:var(--green);font-weight:600}.hint2.no{color:var(--ink3)}
.dock.st{position:static;background:none}
/* 告知书：全文在固定高的框里滚，底下一行提示（滚到底变绿）+ 一个「已收到」大勾（真的 checkbox 藏起来，画一个方框） */
.scrollbox{margin:12px 16px 0;height:56vh;min-height:320px;overflow:auto;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);padding:0 14px 8px;-webkit-overflow-scrolling:touch}
.scrollbox .corp-h{margin:0 -14px;padding:12px 14px;border-bottom:1px solid var(--hair2)}
.corp-h b{display:block;font-size:15px;letter-spacing:.02em}.corp-h small{display:block;font-size:12px;color:var(--ink3);margin-top:2px}
.pts{margin:8px 0 0;padding-left:20px;font-size:13.5px;line-height:1.55;color:var(--ink2)}.pts li{margin:8px 0}.pts b{color:var(--ink)}
.sbver{margin:4px 0 0;font-size:11.5px;color:var(--ink4)}
.sbhint{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 20px 0;font-size:12.5px;color:var(--ink3)}.sbhint svg.i{width:14px;height:14px}
.sbhint.ok{color:var(--green)}.sbhint .lnk{color:var(--blue);font-weight:600}
.ack{display:flex;gap:12px;align-items:flex-start;margin:14px 16px 0;padding:14px 16px;border-radius:14px;background:#fff;box-shadow:inset 0 0 0 2px var(--ink);cursor:pointer}
.ack input{position:absolute;opacity:0;pointer-events:none}
.ack .bx{width:24px;height:24px;border-radius:7px;background:#fff;box-shadow:inset 0 0 0 2px var(--ink);color:#fff;display:grid;place-items:center;flex:none}
.ack .bx svg.i{width:16px;height:16px;stroke-width:2.6;opacity:0}
.ack:has(input:checked) .bx{background:var(--ink)}.ack:has(input:checked) .bx svg.i{opacity:1}
.ack:has(input:focus-visible) .bx{outline:2px solid var(--blue-dot);outline-offset:2px}
.ack b{font-size:14.5px}.ack small{display:block;font-size:12px;color:var(--ink3);margin-top:2px}
.ack.off{box-shadow:inset 0 0 0 1px var(--card-line);color:var(--ink4);cursor:default}.ack.off .bx{background:var(--tile);box-shadow:inset 0 0 0 2px var(--ink5)}
.dock .btn.gate:not(.ready){background:var(--line);color:var(--ink4);pointer-events:none}
/* 自己选号码：白卡里一行问题 + 四格 + 一行提示 */
.pinbox{margin:14px 16px 0;padding:18px 16px 16px;border-radius:var(--r-l);background:#fff;box-shadow:inset 0 0 0 1px var(--card-line);text-align:center}
.pinbox .q{font-size:14px;font-weight:600;color:var(--ink2)}
.pinbox .tip{margin-top:10px;font-size:12.5px;line-height:1.45;color:var(--ink3)}
/* 某人页：签收 / 第一次登录一行右边的状态片 */
.st2{font-size:12px;font-weight:700;padding:2px 8px;border-radius:7px;white-space:nowrap}
.st2.ok{background:var(--green-bg);color:var(--green)}.st2.w{background:var(--amber-bg);color:var(--amber)}.st2.x{background:var(--tile);color:var(--ink3)}
/* 告知书打印版：纯文字，打印时按钮和提示不出 */
.prt{padding:20px 20px 0}.prt h1{margin:0 0 12px;font-size:20px;font-weight:800;letter-spacing:-.01em}.prt p{font-size:13.5px;line-height:1.55}
.prt .btn{margin-top:16px}.prt .note{margin:10px 0 0}
@media print{.prt .noprint{display:none}.prt{padding:0}}
/* ---------- 账号应用 · 完 ---------- */
/* 商品 product（/productos/，2026-09-30）：模板里原来写死的 style 挪到这里（ADR-0004：每个应用在末尾加自己一段，只用 tokens，不改别的段） */
.stt .p-go{margin-left:auto}
.pchd.p-hd{margin-top:16px}.srch.p-q{margin-top:12px}.lv b.p-k{margin-left:0}
.grp.p-form{padding-bottom:14px}.grp.p-narrow{max-width:560px}.p-chips{margin-top:8px}.inp.p-notes{padding-top:10px}
.seg.p-tabs{max-width:420px}form.p-row{padding-bottom:12px}.inp.p-wide{flex:3}
/* 页面底部那行版本号（core/templates/ui/_version.html，caja 的页面由 cash/views.py 注入同一行）：小字、灰、居中；打印不带 */
.ver{font-size:11px;color:var(--ink4);text-align:center;padding:12px 16px calc(12px + env(safe-area-inset-bottom))}@media print{.ver{display:none}}
/* 触屏手机（10-01，安卓 / iOS 一轮）：
   ① iPhone 输入框字小于 16px 时一点进去整页放大、出来不缩回——这几处原来 15px，触屏上抬到 16px（电脑上不变）
   ② 可以点的小标签（chip，27px 高）点击范围上下各扩 8px，样子不变 */
@media (pointer:coarse){
  select.plain,.row select.plain,.comp .ci,.pfind .inp{font-size:16px}
  a.chip,button.chip,label.chip{position:relative}
  a.chip::after,button.chip::after,label.chip::after{content:"";position:absolute;inset:-8px -3px}
}
/* 配货商品图：长按不弹 iOS 的链接预览 / 存图菜单（Fable 10-01 低-12；照 .wall .ph img） */
.lhead a.th,.lhead a.th img,.imgbox .big{-webkit-touch-callout:none;user-select:none}
/* ---------- 配货 picking（/pedidos-online/，body.pick；2026-10-09 ZHOU.G「按这个风格改版这个应用」，稿 claude.ai/artifact/1mR2xEJ3tAHWeU36tqyeB7）：
   CF 后台样子，和标签页同一套底色 / 线 / 灰字：白顶栏下一条细线、下划线页签、浅灰页、白卡 1px 细边 8px 圆角。
   颜色只有一个蓝 #2563EB（10-07）；小标 = 圆角片 + 小圆点：黄 = 要处理、绿 = 好了、蓝 = 正在、灰 = 中性，不用橙（10-09）；
   快递公司（.chip.via）是灰字不是标签；单张顶上一条找货进度条（.pkbar）。点按 ≥ 44，主键 48。只换样子，结构和表单不动。 ---------- */
body.pick{--pk-page:#f6f6f7;--pk-line:#e2e2e5;--pk-line2:#cdcdd2;--pk-hair:#ececef;--pk-ink:#1d1d1f;--pk-ink2:#4a4a50;--pk-ink3:#6b6b73;
  --pk-blue:#2563eb;--pk-blue-h:#1d4ed8;--pk-blue-bg:#eff6ff;--pk-blue-ln:#bfdbfe;
  --pk-y:#713f12;--pk-y-bg:#fefce8;--pk-y-chip:#fef9c3;--pk-y-ln:#fde68a;--pk-y-dot:#ca8a04;
  --pk-g:#166534;--pk-g-bg:#f0fdf4;--pk-g-chip:#dcfce7;--pk-g-ln:#bbf7d0;--pk-g-dot:#16a34a;
  --pk-n-chip:#f0f0f2;--pk-n-dot:#8e8e96;--pk-r:8px;
  background:var(--pk-page);color:var(--pk-ink)}
body.pick .hd{background:#fff;box-shadow:none;border-bottom:1px solid var(--pk-line)}
body.pick .hd h1{font-size:16px;font-weight:600;letter-spacing:-.01em}
body.pick .hd .back{width:44px;height:44px;border-radius:var(--pk-r);color:var(--pk-ink)}
body.pick .hd .side{color:var(--pk-ink2);font-size:14px}
/* 右上换人：白底细边的键，44 高 */
/* 小标：圆角片 + 小圆点 */
body.pick .chip{display:inline-flex;align-items:center;gap:5px;padding:1px 8px;border-radius:10px;background:var(--pk-n-chip);color:var(--pk-ink2);font-size:12px;font-weight:500;line-height:18px;box-shadow:none}
body.pick .chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--pk-n-dot);flex:none}
body.pick .chip.w{background:var(--pk-y-chip);color:var(--pk-y)}body.pick .chip.w::before{background:var(--pk-y-dot)}
body.pick .chip.g{background:var(--pk-g-chip);color:var(--pk-g)}body.pick .chip.g::before{background:var(--pk-g-dot)}
body.pick .chip.b{background:var(--pk-blue-bg);color:var(--pk-blue)}body.pick .chip.b::before{background:var(--pk-blue)}
body.pick .chip.r{background:var(--red-bg);color:var(--red)}body.pick .chip.r::before{background:var(--red-dot)}
body.pick .chip.via{padding:0;background:none;color:var(--pk-ink3);font-size:12px;font-weight:400}body.pick .chip.via::before{display:none}
/* 提示条：整块浅色 + 圆点，不加左色条 */
body.pick .stt{margin:10px 16px 0;min-height:44px;padding:8px 12px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);font-size:14px;font-weight:500;color:var(--pk-ink2)}
body.pick .stt.w{background:var(--pk-y-bg);box-shadow:inset 0 0 0 1px var(--pk-y-ln);color:var(--pk-y)}
body.pick .stt.g{background:var(--pk-g-bg);box-shadow:inset 0 0 0 1px var(--pk-g-ln);color:var(--pk-g)}
body.pick .stt.b{background:var(--pk-blue-bg);box-shadow:inset 0 0 0 1px var(--pk-blue-ln);color:var(--pk-blue)}
body.pick .stt .dot{width:6px;height:6px}body.pick .dot.w{background:var(--pk-y-dot)}body.pick .dot.g{background:var(--pk-g-dot)}body.pick .dot.b{background:var(--pk-blue)}
body.pick .okmsg{margin:10px 16px 0;padding:10px 12px;border-radius:var(--pk-r);background:var(--pk-g-bg);box-shadow:inset 0 0 0 1px var(--pk-g-ln);color:var(--pk-g);font-size:14px}
body.pick .err{margin:10px 16px 0;padding:10px 12px;border-radius:var(--pk-r);background:var(--red-bg);box-shadow:inset 0 0 0 1px var(--red-line);color:var(--red);font-size:14px}
body.pick .note{margin:10px 18px 0;font-size:14px;color:var(--pk-ink3)}
/* 找单号 */
body.pick .pfind{margin:12px 16px 0}
body.pick .inp{min-height:44px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line2)}
body.pick .inp:focus{outline:0;box-shadow:inset 0 0 0 1px var(--pk-blue),0 0 0 3px var(--pk-blue-bg)}
/* 页签：下划线 */
body.pick .seg{margin:8px 0 0;padding:0 16px;gap:20px;border-radius:0;background:#fff;box-shadow:inset 0 -1px 0 var(--pk-line)}
body.pick .seg a{flex:none;height:44px;display:flex;align-items:center;gap:6px;padding:0;border-radius:0;background:none;box-shadow:none;font-size:14px;font-weight:500;color:var(--pk-ink3)}
body.pick .seg a.on{background:none;box-shadow:inset 0 -2px 0 var(--pk-blue);color:var(--pk-ink);font-weight:600}
body.pick .seg a .n{min-width:20px;padding:0 6px;border-radius:10px;background:var(--pk-n-chip);color:var(--pk-ink2);font-size:12px;line-height:18px;text-align:center}
/* 分段小标题：小号大写灰字 */
body.pick .osec{margin:18px 18px 8px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pk-ink3)}
body.pick .osec .dot{display:none}body.pick .osec .n{color:var(--pk-ink3)}
/* 单子卡 */
body.pick a.ocard,body.pick .ocard.w,body.pick .ocard.g{margin:0 16px 8px;padding:12px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
body.pick a.ocard:hover{box-shadow:inset 0 0 0 1px var(--pk-blue-ln)}
body.pick .ocard .oh{gap:8px;flex-wrap:wrap}body.pick .ocard .oh b{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
body.pick .ocard .op{font-size:14px;font-weight:500;color:var(--pk-ink2)}
body.pick .ocard .om,body.pick .ocard .onames{font-size:12px;color:var(--pk-ink3)}
body.pick .th{border-radius:6px;background:var(--pk-page);box-shadow:inset 0 0 0 1px var(--pk-hair)}
body.pick .ocard .th{width:40px;height:40px}
/* 一件货一张卡 */
body.pick .lcard,body.pick .lcard.done,body.pick .lcard.miss{margin:0 16px 8px;padding:12px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
body.pick .lcard.miss{box-shadow:inset 0 0 0 1px var(--pk-y-ln)}
body.pick .lhead .a b{font-size:16px;font-weight:600}
body.pick .lcard.done .lhead .a b{color:var(--pk-ink2);font-weight:500}
body.pick .lcard.done .lhead{flex-wrap:wrap}body.pick .lcard.done .lhead .a{min-width:150px}body.pick .lcard.done .lhead .undo{margin-left:auto}  /* 多件找到后右边两个键：名字窄于 150 就换到下一行靠右，不把名字挤成三行 */
body.pick .lhead .a small{font-size:12px;color:var(--pk-ink3)}
body.pick .lhead .a small.w{color:var(--pk-y)}body.pick .lhead .a small.ok{color:var(--pk-g)}
body.pick .lhead .a em.var{color:var(--pk-ink)}
body.pick .qbig{min-width:56px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
/* 商品卡两列（10-19 视觉）：图 | 名字 + 变体 + 货号 · 价 + 数量块；数量块进右侧信息区，名字拿到整宽（原来三列把名字夹到 120px） */
body.pick .lhead .a .qbig{display:inline-flex;align-items:baseline;gap:5px;margin-top:6px;padding:3px 10px;min-width:0;text-align:left}body.pick .lhead .a .qbig b{display:inline;font-size:22px}
body.pick .lhead .a .meta{display:block;margin-top:2px}body.pick .lcard .th.xl img{object-fit:contain;background:#fff}
/* 提示条合一（10-19 视觉）：几条同时在只露第一条，右边「+N」，点一下展开 */
body.pick .pknotes.multi:not(.open)>:not(.first):not(.nmore){display:none}
body.pick .pknotes .nmore{display:block;margin:4px 16px 0 auto;min-height:32px;padding:0 12px;border:0;border-radius:16px;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);color:var(--pk-ink2);font-size:12px;font-weight:600;cursor:pointer}
body.pick .qbig b{font-size:22px;font-weight:600;color:var(--pk-ink)}body.pick .qbig small{color:var(--pk-ink3)}
body.pick .qbig.many{background:var(--pk-n-chip);box-shadow:inset 0 0 0 1px var(--pk-line)}body.pick .qbig.many b{color:var(--pk-ink)}body.pick .qbig.many small{color:var(--pk-ink2)}  /* 多件不是异常：中性（三家 10-23，原来黄底和缺货一个颜色） */
/* 键：只有一个蓝；次键白底细边 */
body.pick .btn{min-height:48px;border-radius:var(--pk-r);background:var(--pk-blue);color:#fff;font-size:16px;font-weight:600;box-shadow:none}
body.pick .btn:hover{background:var(--pk-blue-h)}
body.pick .btn.sec,body.pick .lacts .btn.sec,body.pick .lhead .undo .btn.sec,body.pick .numgrid .btn{background:#fff;color:var(--pk-ink);box-shadow:inset 0 0 0 1px var(--pk-line2);font-weight:500}
body.pick .btn.line,body.pick .lacts .btn.line{background:#fff;color:var(--pk-blue);box-shadow:inset 0 0 0 1px var(--pk-blue)}
body.pick .btn.sm,body.pick .lhead .undo .btn,body.pick .lhead .undo>a.btn{min-height:44px;font-size:14px}
body.pick .btn:disabled{background:var(--pk-n-chip);color:var(--pk-ink3);box-shadow:none}
body.pick .lacts .btn{min-height:48px}
body.pick .go{margin:10px 16px 0;min-height:44px;padding:0 14px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);color:var(--pk-blue);font-size:14px;font-weight:600}
/* 缺货 / 一次拿 两个折叠框：白卡，标题后一枚小标 */
body.pick details.oboard{margin:12px 16px 4px;padding:0 12px 2px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-y-ln)}
body.pick .oboard summary{min-height:44px;padding:0;font-size:14px;font-weight:600;color:var(--pk-y)}
body.pick .oboard summary .dot{width:6px;height:6px}
body.pick .oboard .brow{border-top:1px solid var(--pk-hair)}
body.pick .oboard .brow b{font-size:14px;font-weight:500}body.pick .oboard .brow small{font-size:12px;font-weight:400;color:var(--pk-y)}
body.pick .oboard .bq{font-size:16px;font-weight:600;color:var(--pk-y);font-variant-numeric:tabular-nums}
body.pick details.obatch{box-shadow:inset 0 0 0 1px var(--pk-line)}body.pick .obatch summary{color:var(--pk-ink)}
body.pick .obatch .brow small{color:var(--pk-ink3)}body.pick .obatch .brow small a{color:var(--pk-blue)}body.pick .obatch .bq{color:var(--pk-ink)}
/* 二选一（袋子 / 箱子）：选中的浅蓝底蓝边 */
body.pick .segr label{min-height:48px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line2);font-size:14px;font-weight:500}
body.pick .segr label:has(input:checked){background:var(--pk-blue-bg);box-shadow:inset 0 0 0 1.5px var(--pk-blue);color:var(--pk-blue);font-weight:600}
/* 底部弹窗（大图 / 不够几件 / 换人） */
body.pick .imgbox .pane{border-radius:12px 12px 0 0}
/* 弹窗钉成 fixed（10-23 Fable：.imgbox 在文档末尾，:target 一开浏览器先把整页滚到底、关了又跳回那张卡）；开着时 html 不滚（imgbox.js 加 sheet-open） */
body.pick .imgbox:target{position:fixed;inset:0;z-index:20}body.pick .imgbox .veil,body.pick .imgbox .pane{position:absolute}
html.sheet-open{overflow:hidden}body.pick .imgbox .pane{overscroll-behavior:contain}
/* 弹窗头：标题 18、变体 14（原来 19 / 15 是底座残留，字号不成档）；数量块纯文字（和 × 挨着像第二个键） */
body.pick .imgbox .sh b{font-size:18px}body.pick .imgbox .sh em.var{font-size:14px}body.pick .imgbox .sh .qbig{background:none;box-shadow:none;padding:0;min-width:0}
/* 没图：卡上 64px、弹窗里 120px 一个相机（原来 104px / 整屏灰块只为说「没照片」，三家 10-23） */
body.pick .lhead .th.xl.none{width:64px;height:64px}body.pick .imgbox .big.none{height:120px;aspect-ratio:auto;background:var(--pk-hair);color:var(--pk-ink3)}
/* 缺货的大图也能直接按「有货」（Astra 10-23）：藏掉的只是「缺货」那个键 */
body.pick .imgbox.miss .la-todo{display:flex}body.pick .imgbox.miss .la-todo form[data-status=missing]{display:none}
/* 「缺几件」的数字键：大数 + 小字「缺 N」（两家 10-23：入口叫「缺几件」，填的却是拿到的数） */
body.pick .numgrid .btn{flex-direction:column;gap:0;line-height:1.1}body.pick .numgrid .btn b{font-size:22px;font-weight:600}body.pick .numgrid .btn small{font-size:12px;color:var(--pk-ink3)}
body.pick .numin{align-items:center}body.pick .numin .lack{min-width:48px;font-size:14px;color:var(--pk-y)}
/* 错误卡：从报错点进来定位到那一条、高亮 */
body.pick .lcard li:target{background:var(--pk-y-bg);box-shadow:inset 0 0 0 1px var(--pk-y-ln);border-radius:6px;padding:4px 8px;margin:0 -8px}
/* 卡上贴的离线报错（pick.js cardErr） */
body.pick .lcard .lerr.q{margin-top:8px}
/* 客人卡和第一张商品卡、错误卡顶上的提示和第一张卡：留 8px（原来贴着，Sol / Astra 10-23） */
body.pick .pcard+.lcard,body.pick .okmsg+.lcard{margin-top:8px}
/* 底条「还差 N 件」是状态不是键：去掉键的样子，找齐变成真键时形状本身就是信号（Fable 10-23） */
body.pick .pkfoot .btn.off{background:none;box-shadow:none;color:var(--pk-ink2);font-weight:500}
/* 列表卡商品名是挑单的依据：14 / 次灰，不再是全页最小最淡的字（Fable 10-23） */
body.pick .ocard .onames{font-size:14px;color:var(--pk-ink2)}
/* 弹窗头上 ‹ 2 / 7 ›（10-19）：32px 圆键、离拇指远；到头的那边灰掉 */
body.pick .imgbox .bigw{position:relative;margin:6px 16px 0}body.pick .imgbox .bigw .big{width:100%;margin:0}
body.pick .imgbox .nv{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 1px 4px rgba(0,0,0,.18);color:var(--pk-ink)}body.pick .imgbox .nv.l{left:8px}body.pick .imgbox .nv.r{right:8px}body.pick .imgbox .nv svg{width:22px;height:22px}
body.pick .imgbox .pos{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);padding:2px 8px;border-radius:10px;background:rgba(0,0,0,.45);color:#fff;font-size:12px;font-weight:600}
/* 单张顶上的找货进度条：顶栏正下方，跟着离线打勾一起变（pick.js paintBar），蓝 = 还在找，绿 = 找齐了 */
body.pick .pkbar{height:3px;background:var(--pk-hair)}  /* 不钉住：顶栏高度会变（长名字换行），钉住会被盖 */
body.pick .pkbar b{display:block;height:3px;background:var(--pk-blue);transition:width .2s}
body.pick .pkbar.g b{background:var(--pk-g-dot)}
/* 订单这一块（10-09 订单管理）：顶上三格 配货 · 找订单 · 快递；一张单的全部 = 白卡分段；电脑 ≥ 1100px 变宽、单页左右两列 */
body.pick .seg.stages{margin-top:10px;overflow-x:auto;scrollbar-width:none}
body.pick .pcard{margin:10px 16px 0;padding:12px 14px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
body.pick .pcard h2{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:14px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--pk-ink3)}
body.pick .pcard h2 .chip{text-transform:none;letter-spacing:0}
body.pick .pcard h3{margin:12px 0 4px;font-size:12px;font-weight:600;color:var(--pk-ink3)}
body.pick .pcard p{margin:0;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
body.pick .pcard p a{color:var(--pk-blue)}
body.pick .pcard p.none{color:var(--pk-ink3);font-size:14px}
body.pick .pcard .note{margin:8px 0 0}
body.pick .odline{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:2px 12px;padding:9px 0;border-top:1px solid var(--pk-hair)}
body.pick .odline .a{grid-column:2/-1}body.pick .odline .a b{display:block;font-size:14px;font-weight:500}
body.pick .odline .a small{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;font-size:12px;color:var(--pk-ink3)}
body.pick .odline .q{font-size:14px;color:var(--pk-ink3)}body.pick .odline .t{font-size:14px;font-weight:600;text-align:right}
body.pick .odtot{margin-top:4px;padding-top:6px;border-top:1px solid var(--pk-line)}
body.pick .odtot div{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:14px;color:var(--pk-ink2)}
body.pick .odtot b{font-weight:500;color:var(--pk-ink)}
body.pick .odtot .sum{font-size:16px;color:var(--pk-ink)}body.pick .odtot .sum b{font-weight:700}
body.pick .odtot .sub{font-size:12px;color:var(--pk-ink3)}body.pick .odtot .sub b{color:var(--pk-ink3)}
body.pick .odkv{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:6px 0;border-top:1px solid var(--pk-hair);font-size:14px;color:var(--pk-ink)}
body.pick .pcard h2+.odkv{border-top:0}
body.pick .odkv small{display:block;font-size:12px;color:var(--pk-ink3)}body.pick .odkv b{font-weight:600}
body.pick a.odkv{color:var(--pk-ink)}body.pick a.odkv svg{color:var(--pk-ink3);flex:none}
body.pick .odmsg{margin:6px 0;padding:8px 10px;border-radius:8px;background:var(--pk-page);font-size:14px;line-height:1.45;overflow-wrap:anywhere}
body.pick .odmsg.shop{background:var(--pk-blue-bg)}body.pick .odmsg.note{background:var(--pk-y-bg);box-shadow:inset 0 0 0 1px var(--pk-y-ln)}
body.pick .odmsg small{display:block;margin-bottom:2px;font-size:12px;color:var(--pk-ink3)}
body.pick .tl .e>i{box-shadow:0 0 0 3px #fff}
body.pick .tl .e.k-shop>i{background:var(--pk-blue)}body.pick .tl .e.k-pick>i,body.pick .tl .e.k-carrier>i{background:var(--pk-g-dot)}
body.pick .tl .e.k-ship>i{background:var(--pk-ink)}body.pick .tl .e.k-msg>i{background:var(--pk-n-dot)}body.pick .tl .e.k-warn>i{background:var(--pk-y-dot)}
/* 订单总览 / 快递总览的表格（10-10 电脑版）：手机一列卡片 .pcards，≥ 1100px 换成表格 .ptable */
body.pick .ptitle-sub{margin:6px 18px 0;font-size:14px;color:var(--pk-ink3)}
body.pick .ptable{display:none}
body.pick .pprob{display:flex;align-items:center;gap:8px;color:var(--pk-y)}body.pick .pprob b{font-weight:600}
body.pick .odacts{display:flex;flex-wrap:wrap;gap:8px;margin:10px 16px 0}body.pick .odacts .btn{flex:1 1 140px;display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;font-size:14px}
/* 订单页手机一列的顺序（.o1–.o8，见 order_detail.html）；电脑两列照写的顺序 */
body.pick .odgrid{display:flex;flex-direction:column}body.pick .odgrid>.odmain,body.pick .odgrid>.odside{display:contents}
body.pick .o1{order:1}body.pick .o2{order:2}body.pick .o3{order:3}body.pick .o4{order:4}body.pick .o5{order:5}body.pick .o6{order:6}body.pick .o7{order:7}body.pick .o8{order:8}
body.pick .wsrc{margin:-6px 0 10px;font-size:12px;color:var(--pk-ink3)}
body.pick .odline .a em.var{display:block;font-style:normal;font-size:14px;color:var(--pk-ink)}
body.pick .odkv small.ctnote{color:var(--pk-ink2)}
/* 订单页「物流跟踪」（10-10 设计稿，10-14 今天页删了） */
body.pick .odwhere.w{background:var(--pk-y-bg);box-shadow:inset 0 0 0 1px var(--pk-y-ln)}
body.pick .odwhere .wh{display:block;font-size:16px;font-weight:600;margin:2px 0 10px}body.pick .odwhere.w .wh{color:var(--pk-y)}
body.pick .wsteps{list-style:none;margin:0 0 10px;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
body.pick .wsteps li{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--pk-ink3)}body.pick .wsteps i{display:block;height:4px;border-radius:2px;background:var(--pk-line)}
body.pick .wsteps li.done{color:var(--pk-g)}body.pick .wsteps li.done i{background:var(--pk-g-dot)}
body.pick .wtrk{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:var(--pk-page);margin-bottom:10px}
body.pick .wtrk span{font-size:12px;color:var(--pk-ink3)}body.pick .wtrk b{flex:1;font-weight:500;overflow-wrap:anywhere}body.pick .wtrk .btn{min-height:44px;padding:0 12px;font-size:14px;flex:none}
body.pick .odwhere .btn.block{width:100%;display:flex;align-items:center;justify-content:center;margin:0}
/* 10-10 两家审后：缺货备注 */
body.pick .ctans .inp{width:100%;box-sizing:border-box;margin:4px 0 0}
body.pick .ctnote{margin:4px 0 8px;font-size:14px;color:var(--pk-ink2)}
body.pick details.odmore summary{list-style:none;cursor:pointer}body.pick details.odmore summary::-webkit-details-marker{display:none}
body.pick details.odmore summary h2{margin:0}body.pick details.odmore[open] summary h2{margin-bottom:6px}

/* 全部订单：日期范围、分页（10-10 设计稿「电脑 4」） */
body.pick .frange{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 16px 0;font-size:14px;color:var(--pk-ink2)}
body.pick .frange select{height:36px;border-radius:6px;border:1px solid var(--pk-line2);background:#fff;font:inherit;padding:0 8px}
body.pick .frange .inp{width:auto;min-height:36px;height:36px;padding:0 8px}body.pick .frange small{margin-left:auto;color:var(--pk-ink3)}
body.pick .pager{display:flex;align-items:center;gap:8px;justify-content:flex-end;margin:10px 16px;color:var(--pk-ink3);font-size:14px}body.pick .pager span{margin-right:auto}
body.pick .ptable th a{color:inherit}body.pick tr.rowlink{cursor:pointer}
/* 缺货联系客人（10-10） */
body.pick .ctbox.w{box-shadow:inset 0 0 0 1px var(--pk-y-ln);background:var(--pk-y-bg)}
body.pick .ctmiss{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}body.pick .ctmiss span{padding:2px 8px;border-radius:6px;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-y-ln);font-size:14px;color:var(--pk-y)}
body.pick .ctmsgs{display:flex;flex-direction:column;gap:6px;margin:8px 0}
body.pick .ctmsg{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
body.pick .ctmsg summary{min-height:44px;display:flex;align-items:center;padding:0 12px;font-size:14px;font-weight:500;cursor:pointer}
body.pick .ctmsg p{margin:0 12px 8px;font-size:14px;color:var(--pk-ink2);line-height:1.45}body.pick .ctmsg .btn{margin:0 12px 12px;min-height:44px;display:flex;align-items:center;justify-content:center}
body.pick .ctrow{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}body.pick .ctrow .btn{flex:1 1 100px;min-height:44px;font-size:14px}
body.pick .ctrow .btn.on{background:var(--pk-blue-bg);box-shadow:inset 0 0 0 1.5px var(--pk-blue);color:var(--pk-blue)}
body.pick .odreach{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 10px}body.pick .odreach .btn{flex:1 1 90px;min-height:44px;display:flex;align-items:center;justify-content:center;font-size:14px}
body.pick .odline .odth{grid-row:span 2;width:48px;height:48px;display:grid;place-items:center;overflow:hidden}body.pick .odline .odth a{display:block;width:100%;height:100%}
body.pick .odline .odth img{width:100%;height:100%;object-fit:cover;display:block}
body.pick .ptable .itemsc{min-width:220px}body.pick .ptable .it{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:14px}
body.pick .ptable .it .th{width:32px;height:32px;flex:none;overflow:hidden;display:flex;align-items:center;justify-content:center}
body.pick .ptable .it .th img{width:100%;height:100%;object-fit:cover}body.pick .ptable .it .th svg{width:16px;height:16px}
body.pick .ptable .it span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (min-width:1100px){  /* 和电脑外壳同一个断点（两家 10-10：900–1100 之间原来是第三种布局） */
  body.pick .app.wide{max-width:1100px}
  body.pick .pcards{display:none}
  body.pick .pbox{margin:12px 16px 0;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);overflow:hidden}
  body.pick .pbox .seg.stages{margin:0;flex-wrap:wrap}
  body.pick .pbox>.note{margin:10px 16px}
  body.pick .ptable{display:block;overflow-x:auto}
  body.pick .ptable table{width:100%;border-collapse:collapse;font-size:14px}
  body.pick .ptable th{padding:9px 12px;background:#fafafa;border-bottom:1px solid var(--pk-hair);font-size:12px;font-weight:600;color:var(--pk-ink3);text-align:left;white-space:nowrap}
  body.pick .ptable td{padding:10px 12px;border-bottom:1px solid var(--pk-hair);vertical-align:top}
  body.pick .ptable tr:last-child td{border-bottom:0}
  body.pick .ptable tr:hover td{background:#fafafa}body.pick .ptable tr.w td{background:#fefce8}
  body.pick .ptable td small{display:block;font-size:12px;color:var(--pk-ink3)}
  body.pick .ptable td a{color:var(--pk-blue);font-weight:500}
  body.pick .ptable .r{text-align:right;white-space:nowrap}
  body.pick .ptable .lastc{font-size:14px;color:var(--pk-ink2);min-width:200px}
  body.pick .ptable .chip{white-space:nowrap}
  body.pick .odacts{justify-content:flex-end}body.pick .odacts .btn{flex:none}
  body.pick .odgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:0;align-items:start}
  body.pick .odgrid>.odmain,body.pick .odgrid>.odside{display:flex;flex-direction:column}
  body.pick .odside .pcard{margin-left:0}
  body.pick .odline{grid-template-columns:56px minmax(0,1fr) 160px 100px}body.pick .odline .a{grid-column:auto}body.pick .odline .odth{grid-row:auto;width:56px;height:56px}
  body.pick .odline .q{text-align:right;align-self:center}body.pick .odline .t{align-self:center}
}

/* 配货手机改版（10-14）：右上角名字 = 换人；两天以上的卡红边红字；待发货卡片下沿「打印面单」；电脑才有的块（.deskonly）手机上不出 */
body.pick .hd .side .whochip{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 10px 0 14px;border-radius:22px;box-shadow:inset 0 0 0 1px var(--pk-line2);background:#fff;color:var(--pk-ink);font-size:14px;font-weight:500}
body.pick .whochip svg{width:14px;height:14px}body.pick .whochip.ask{background:var(--pk-blue);box-shadow:none;color:#fff}
body.pick a.ocard.late{box-shadow:inset 0 0 0 1px #f3b4ae}body.pick .ocard.late .om{color:var(--red)}
body.pick .ocard .ocbtn{margin-top:10px;pointer-events:none}
#pick-results .seg.stages,#pick-results .pager,#pick-results .frange{display:none}  /* 配货页里的搜索结果只要卡片：页签 / 分页 / 日期在「找订单」整页上 */

body.pick .pkfoot{position:fixed;left:0;right:0;bottom:0;z-index:4;margin:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--pk-line)}
body.pick .pkfoot:empty{display:none}body.pick .pkfoot .err{margin:0 0 8px}body.pick .lcard .lerr{margin:8px 0 0}
body.pick .numgrid .btn{font-size:22px}body.pick .numgrid .btn.on{box-shadow:inset 0 0 0 2px var(--pk-blue);color:var(--pk-blue)}  /* 「找到了几件」的数字键：大字；上次选的描蓝（Sol 10-18：原来被 15px 盖掉） */body.pick .pkdone{display:flex;align-items:center;gap:12px}body.pick .pkdone small{flex:1;min-width:0;font-size:14px;color:var(--pk-ink2)}body.pick .pkdone .btn{min-height:48px;padding:0 18px}body.pick .pkfoot:has(.pkdone.bad){background:var(--pk-y-bg);border-top-color:var(--pk-y-ln)}body.pick .pkdone.bad small{color:var(--pk-y);font-weight:600}body.pick a.pkdone{min-height:44px}  /* 登记不确定那条点进登记页核实 */
body.pick a.ocard.dim{background:var(--pk-page);box-shadow:inset 0 0 0 1px var(--pk-hair)}  /* 待揽收：淡的是卡不是字（Astra 10-23：整卡 .6 透明把字淡到 2.4:1） */
/* 一按就有反馈（10-14 安卓「点不动」）：键按下去缩一下；打勾发送中卡片淡一点、字蓝 */
/* 卡片三种状态的键（10-14）：要找 = 有货 / 缺几件 / 缺货；有货 = 右上小键；缺货 = 有货（描边）/ 缺几件 / 撤销 */
body.pick .lcard .la-found,body.pick .lcard.done .la-qty,body.pick .lcard.done .lacts,body.pick .lcard.miss .la-todo,body.pick .lcard:not(.miss) .la-missing{display:none}
body.pick .lcard.done .la-found{display:flex}
body.pick .imgbox .la-st,body.pick .imgbox.done .la-todo{display:none}body.pick .imgbox.done .la-st,body.pick .imgbox.miss .la-st{display:block}  /* miss 的 .la-todo 留着（只藏「缺货」键，见上面） */
body.pick .owait{margin-top:8px}body.pick .owait>summary{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;font-size:14px;font-weight:500;color:var(--pk-ink2);cursor:pointer;list-style:none}body.pick .owait>summary::-webkit-details-marker{display:none}body.pick .owait>summary svg{width:14px;height:14px;margin-left:auto}body.pick .owait[open]>summary svg{transform:rotate(180deg)}
body.pick .imgbox.sending .pane{pointer-events:none;opacity:.8}
body.pick .pknote.open{display:block;-webkit-line-clamp:unset;overflow:visible}  /* 客人留言点一下看全文（10-14） */
body.pick .btn{touch-action:manipulation}body.pick .btn:active{transform:scale(.97)}body.pick .lcard.sending{opacity:.8;pointer-events:none}body.pick .lcard.sending .offl{color:var(--pk-blue)}
/* 配货页客人一条（10-14）：名字 + 小键 + 订单详情；客人留言像便签 */
body.pick .pkwho{margin:10px 16px 0;padding:6px 6px 6px 14px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line)}
body.pick .pkwho-h{display:flex;align-items:center;gap:4px;min-height:44px}body.pick .pkwho-h b{flex:1;min-width:0;font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.pick .pkwho .more{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;font-size:14px;font-weight:500;color:var(--pk-blue)}
body.pick .pknote{margin:4px 8px 6px 0;padding:8px 10px;border-radius:6px;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);color:var(--pk-ink2);font-size:14px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}  /* 客人留言是信息不是警告：白底细边（三家 10-23，原来和「清单没更新」同一组黄） */body.pick .pknote small{color:var(--pk-ink3);font-size:12px}
body.pick .pcard .pknote{margin:0 0 8px;line-height:1.5;overflow-wrap:anywhere}
body.pick .pknote-b{display:block;width:100%;margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}  /* 客人留言是个真按钮（键盘 / 读屏能点），样子还是那张黄便签 */
body.pick .odrecent{margin-top:4px;padding-top:8px;border-top:1px solid var(--pk-hair)}body.pick .odr{display:flex;gap:10px;padding:4px 0;font-size:14px;color:var(--pk-ink2)}body.pick .odr small{flex:none;width:76px;color:var(--pk-ink3)}
body.pick .odall summary{display:flex;align-items:center;gap:6px;min-height:44px;font-size:14px;font-weight:500;color:var(--pk-blue);cursor:pointer}
body.pick .odrecent:has(.odall[open])>.odr{display:none}body.pick .odall[open] summary{order:1}body.pick .odall[open]{display:flex;flex-direction:column}  /* 点开「全部记录」：换掉上面三行，列表同一种画法，按钮挪到最下面当「收起」（10-20） */
@media (min-width:1100px){.mobonly{display:none!important}}  /* 手机才有的块（和 .deskonly 反过来） */
/* 订单详情（10-14）：主操作一个、只一行合计、查件链接跟着运单号；电脑上照旧全部 */
body.pick .odgo{display:block;margin:10px 16px 0}body.pick a.odgo{display:flex;align-items:center;justify-content:center;min-height:48px}body.pick .odgo .btn{min-height:48px}
body.pick .odtot1{margin-top:6px;padding-top:10px;border-top:1px solid var(--pk-line);font-size:16px;color:var(--pk-ink)}body.pick .odtot1 b{font-weight:700}body.pick .odtot1 small{font-size:12px;color:var(--pk-ink3)}
body.pick .wlink{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:500;color:var(--pk-blue)}
@media (min-width:1100px){body.pick .odtot1{display:none}}  /* 待揽收：不用人管，淡一点（页签数也不算它们） */body.pick .app:has(.pkfoot:not(:empty)){padding-bottom:var(--pkfoot,88px)}  /* 底条实际多高留多少（pick.js ResizeObserver 写 --pkfoot；报错换行时不挡住袋子 / 箱子，Sol 10-18） */body.pick .pkfoot .btn.off{background:var(--pk-n-chip);color:var(--pk-ink3);box-shadow:none}
@media (max-width:1099.98px){.deskonly{display:none!important}}  /* 和电脑外壳同一个断点 */
/* 小于 44 的点补齐（10-09 GPT 审）：一次拿里的单号、登记卡上的单号、核实 / 取消折叠、「我知道，再登记一次」 */
body.pick .obatch .brow small a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
body.pick .shiprow>a.n{display:inline-flex;align-items:center;min-height:44px}
body.pick .shipx summary{padding:13px 0;font-size:14px;line-height:18px}  /* 留着展开三角，不用 flex */
body.pick .shipforce{min-height:44px;margin:4px 0 8px}
/* 换人弹窗（个人号 / 设备 PIN 两种）：白底细边，当前这个人浅蓝底蓝边，不再黑底 */
body.pick .who3 span{border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);font-weight:600}
body.pick .who3 span i{background:var(--pk-n-chip);color:var(--pk-ink2)}
body.pick .who3 .whob.on span{background:var(--pk-blue-bg);box-shadow:inset 0 0 0 1.5px var(--pk-blue);color:var(--pk-blue)}
body.pick .who3 .whob.on span i{background:var(--pk-blue);color:#fff}
/* ---------- 电脑外壳（10-10，ui/_desk.html；页面给了 desk 才有）：≥ 1100px 顶栏 + 左侧栏 + 宽内容；窄了全藏、照旧手机外壳 ---------- */
.deskbar,.desknav{display:none}
@media (min-width:1100px){
  body:has(.desk){background:#f6f6f7}
  .desk{display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:56px auto;min-height:100vh}
  .deskbar{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:0 20px;background:#fff;border-bottom:1px solid #e2e2e5;position:sticky;top:0;z-index:6;font-size:14px}
  .deskbar .wm{font-weight:650;letter-spacing:.02em;color:#1d1d1f}
  .deskbar .sl{color:#cdcdd2}.deskbar a{color:#4a4a50}.deskbar a:hover{color:#1d1d1f}.deskbar .cur{color:#1d1d1f;font-variant-numeric:tabular-nums}
  .deskbar .dsearch{flex:1;max-width:560px;margin-left:20px;display:flex;align-items:center;gap:8px;height:38px;padding:0 10px 0 12px;border-radius:8px;background:#f6f6f7;box-shadow:inset 0 0 0 1px #e2e2e5}
  .deskbar .dsearch:focus-within{background:#fff;box-shadow:inset 0 0 0 1px #2563eb,0 0 0 3px #eff6ff}
  .deskbar .dsearch svg{width:16px;height:16px;stroke:#6b6b73;flex:none}
  .deskbar .dsearch input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:14px;color:#1d1d1f}
  .deskbar kbd{font:500 11px ui-monospace,monospace;color:#6b6b73;border:1px solid #e2e2e5;border-radius:4px;padding:0 5px}
  .deskbar .sp{flex:1}
  .deskbar .dstat{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#4a4a50;white-space:nowrap}.deskbar .dstat i{width:6px;height:6px;border-radius:50%;background:#16a34a}
  .deskbar .dstat.w{color:#713f12}.deskbar .dstat.w i{background:#ca8a04}
  .deskbar .dwho{width:32px;height:32px;border-radius:50%;background:#eff6ff;color:#1d4ed8;font-weight:600;font-size:13px;display:flex;align-items:center;justify-content:center}
  .deskbar .dwho.ask{width:auto;padding:0 12px;border-radius:16px;background:#2563eb;color:#fff}
  .desknav{display:flex;flex-direction:column;gap:2px;padding:12px 12px 24px;position:sticky;top:56px;align-self:start;max-height:calc(100vh - 56px);overflow-y:auto}
  .desknav .dh{padding:14px 12px 6px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#6b6b73}
  .desknav a{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 12px;border-radius:6px;color:#4a4a50;font-size:14px}
  .desknav a:hover{background:#ececef;color:#1d1d1f}
  .desknav a.on{background:#fff;box-shadow:inset 0 0 0 1px #e2e2e5;color:#1d1d1f;font-weight:500}
  .desknav a span{flex:1}.desknav a b{font:500 12px ui-monospace,monospace;color:#6b6b73}
  .deskmain{min-width:0}
  .desk .app{max-width:1240px;margin:0;padding:4px 12px 40px}
  .desk .app>.hd{position:static;background:none;box-shadow:none;border:0}
  .desk .hd .back:not([data-from]),.desk .pfind-m{display:none}  /* 返回键有面包屑（带 data-from 的回来处：搜索结果 / 快递页，面包屑回不去，留着），页面里的搜索框有顶栏那个 */
  body:has(.desk) .nav{display:none}
  body.pick .desk .pkfoot{position:sticky;margin-top:16px}
}
/* ---------- 票据（document）零售后台样式（2026-10-09 ZHOU.G「只票据试试」，设计稿 docs/designs/document-2026-10-09/）：只作用于 .app.docs ----------
   参考零售后台的通行做法（Shopify 后台 Polaris、Square 商家后台）：浅灰页、白卡 12px 圆角细阴影、页头大标题 + 右上一个深色主操作、
   圆角徽章带小圆点（黄 = 要处理、绿 = 好、蓝 = 进行中、灰 = 中性）、提示是整块色带图标；不用橙色。桌面（≥ 900px）列表和月份页变宽、列表出表格。 */
body:has(.app.docs){background:#f1f1f1}
.app.docs{--d-page:#f1f1f1;--d-surf:#fff;--d-surf2:#f7f7f7;--d-line:#e3e3e3;--d-line2:#cccccc;--d-ink:#303030;--d-ink2:#616161;
  --d-link:#005bd3;--d-att-bg:#fff1b8;--d-att:#5e4200;--d-att-dot:#b28400;--d-ok-bg:#cdfee1;--d-ok:#0c5132;--d-ok-dot:#29845a;
  --d-info-bg:#e0f0ff;--d-info:#00527c;--d-info-dot:#0094d5;--d-neu-bg:#ebebeb;--d-neu:#4a4a4a;
  --d-sh:0 1px 0 rgba(26,26,26,.07),0 0 0 1px rgba(26,26,26,.06);background:var(--d-page);color:var(--d-ink)}
.docs .hd{background:rgba(241,241,241,.96)}
.docs .hd h1{font-size:21px;font-weight:700}
.docs .hd .back{background:none;box-shadow:none;color:var(--d-ink2)}
.docs .hd .side a.btn{display:inline-flex;min-height:44px;padding:0 14px;font-size:14px;color:#fff}
.docs .hd .side a.btn.sec{color:var(--d-ink)}
.docs .btn{background:var(--d-ink);color:#fff;border-radius:8px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.4),0 1px 0 rgba(0,0,0,.1)}
.docs .btn:disabled,.docs .btn[aria-disabled=true]{background:var(--d-neu-bg);color:#a3a3a3;box-shadow:none;cursor:default}
.docs .btn.sec,.docs .grp .btn.sec{background:var(--d-surf);color:var(--d-ink);box-shadow:inset 0 0 0 1px var(--d-line2),0 1px 0 rgba(0,0,0,.05)}
.docs .grp,.docs .go{background:var(--d-surf);border-radius:12px;box-shadow:var(--d-sh)}
.docs .grp{padding:2px 14px}
.docs .grp .t{color:var(--d-ink2);font-weight:650}
.docs .row+.row{border-top:1px solid var(--d-line)}
.docs .row .a small,.docs .note{color:var(--d-ink2)}
.docs a.lnk,.docs .note a.lnk,.docs .stt a.lnk{color:var(--d-link);font-weight:600}
.docs .inp{background:var(--d-surf2);border-radius:8px;box-shadow:inset 0 0 0 1px var(--d-line)}
.docs .inp:focus{outline:0;box-shadow:inset 0 0 0 1.5px var(--d-ink)}
.docs .seg{background:none;padding:0;gap:4px}
.docs .seg a{flex:none;padding:0 14px;border-radius:8px;color:var(--d-ink2);font-weight:550}
.docs .seg a.on{background:var(--d-neu-bg);color:var(--d-ink);font-weight:650;box-shadow:none}
.docs .chip{border-radius:999px;padding:1px 8px;font-weight:550;background:var(--d-neu-bg);color:var(--d-neu)}
.docs .chip.w{display:inline-flex;align-items:center;gap:5px;background:var(--d-att-bg);color:var(--d-att)}
.docs .chip.w::before{content:"";width:6px;height:6px;border-radius:3px;background:var(--d-att-dot)}
.docs .chip.g{display:inline-flex;align-items:center;gap:5px;background:var(--d-ok-bg);color:var(--d-ok)}
.docs .chip.g::before{content:"";width:6px;height:6px;border-radius:3px;background:var(--d-ok-dot)}
.docs .chip.b{display:inline-flex;align-items:center;gap:5px;background:var(--d-info-bg);color:var(--d-info)}
.docs .chip.b::before{content:"";width:6px;height:6px;border-radius:3px;background:var(--d-info-dot)}
.docs .stt{border-radius:12px;padding:10px 14px;align-items:flex-start;background:var(--d-surf);box-shadow:var(--d-sh);color:var(--d-ink2)}
.docs .stt .dot{margin-top:5px}
.docs .stt.w{background:var(--d-att-bg);color:var(--d-att);box-shadow:none}.docs .stt.w .dot.w{background:var(--d-att-dot)}
.docs .stt.b{background:var(--d-info-bg);color:var(--d-info);box-shadow:none}.docs .stt.b .dot{background:var(--d-info-dot)}
/* 要看一眼写清在哪（10-13）：详情页出问题的那页上面一串黄条；列表一张票一行，小图 + 每个问题一行可点 */
.docs .flag{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.docs .row.found{align-items:flex-start;gap:12px}
.docs .row.found .thumb{width:56px;height:auto;max-height:140px;object-fit:cover;object-position:top}
.docs .row.found small.doc{display:flex;gap:6px;align-items:flex-start;margin-top:6px;white-space:normal}
.docs .row.found small.doc .chip{flex:none}
.docs .okmsg{border-radius:12px;background:var(--d-ok-bg);color:var(--d-ok)}
.docs .tbl th{color:var(--d-ink2);font-weight:600}
.docs .sheetimg{border-radius:12px;box-shadow:var(--d-sh);background:var(--d-surf)}
/* 月份页顶上的关键数字 */
.docs .metrics{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr) minmax(0,.8fr);gap:8px;margin:10px 16px 0}
.docs .metric{background:var(--d-surf);border-radius:12px;box-shadow:var(--d-sh);padding:10px 12px;min-width:0}
.docs .metric small{display:block;font-size:12px;color:var(--d-ink2)}
.docs .metric b{display:block;font-size:17px;font-weight:700;margin-top:2px;overflow-wrap:anywhere}
.docs .msub{margin:14px 20px 0;font-size:13px;font-weight:650;color:var(--d-ink2)}
/* 拍照页：虚线框加页 */
.docs .drop{margin:12px 16px 0;padding:16px;border-radius:12px;border:1.5px dashed var(--d-line2);background:var(--d-surf);display:flex;flex-direction:column;gap:8px}
.docs .drop .btn.block{margin:0;width:100%}
.docs .drop .note{margin:4px 2px 0;text-align:center}
.docs .shotcard{margin:12px 16px 0;background:var(--d-surf);border-radius:12px;box-shadow:var(--d-sh)}
.docs .shotcard .shots{margin:0;padding:12px}
.docs .shotcard:not(:has(figure)){display:none}
.docs .shots img{background:var(--d-surf2);border-radius:8px}
.docs .shots button{background:radial-gradient(circle,rgba(26,26,26,.72) 0 13px,transparent 14px);font-size:15px}
/* 桌面：列表 / 月份页变宽，列表换成表格（手机那份卡片列表藏起来） */
.docs .dtable{display:none}
@media (min-width:900px){
  .app.docs.wide{max-width:1100px}
  .docs.wide .mlist{display:none}
  .docs.wide .dtable{display:block;margin:10px 16px 0;background:var(--d-surf);border-radius:12px;box-shadow:var(--d-sh);overflow-x:auto}
  .docs .dtable table{width:100%;border-collapse:collapse;font-size:14px}
  .docs .dtable th{font-size:12.5px;font-weight:600;color:var(--d-ink2);text-align:left;padding:9px 12px;background:var(--d-surf2);border-bottom:1px solid var(--d-line);white-space:nowrap}
  .docs .dtable td{padding:10px 12px;border-bottom:1px solid var(--d-line);white-space:nowrap;vertical-align:middle}
  .docs .dtable tr:last-child td{border-bottom:0}
  .docs .dtable td.r,.docs .dtable th.r{text-align:right}
  .docs .dtable td.nm{white-space:normal;min-width:180px}
  .docs .dtable td.num{white-space:normal;overflow-wrap:anywhere;max-width:160px}
  .docs .dtable tr.day td{background:var(--d-surf2);font-size:12.5px;font-weight:650;color:var(--d-ink2);padding:7px 12px}
  .app.docs.mid{max-width:760px}
  /* 搜索和扫描日期并排 */
  .docs.wide form{display:grid;grid-template-columns:minmax(0,1fr) 280px;margin:0 16px}
  .docs.wide form .fl{margin-left:0;margin-right:0}
  .docs.wide form .fl:first-of-type{grid-column:1;grid-row:2;margin-right:8px;margin-top:0}
  .docs.wide form .lbl{grid-column:2;grid-row:1;margin-left:0}
  .docs.wide form .fl:last-of-type{grid-column:2;grid-row:2}
}

/* ---------- 网店商品管理（appclass channel，2026-10-20 Fable 稿）：表格 + 分块表单，状态文字 + 色，AI 写的紫色 IA，改过的字段黄线「Cambiado」。
   手机：一列，顶栏入口藏起来、底部三个大按钮；电脑（≥ 900px）：整宽到 1280，列表是表格、编辑页右边一栏改动清单。 ---------- */
.app.channel{--t-ia:#6d28d9;--t-ia-bg:#f3e8ff;--t-chg:#d97706;padding-bottom:calc(96px + env(safe-area-inset-bottom))}
.channel .tbar{display:flex;align-items:center;gap:10px;min-height:52px;padding:0 12px 0 6px;position:sticky;top:0;background:rgba(255,255,255,.97);border-bottom:1px solid var(--line);z-index:5}
.channel .tbar .back{width:40px;height:40px;display:grid;place-items:center}
.channel .tbar .brand{font-size:15px;font-weight:650}
.channel .ttabs,.channel .tside{display:none}
.channel .gdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green-dot);margin-right:4px;vertical-align:1px}
.tnav{height:calc(64px + env(safe-area-inset-bottom))}
.channel .tpad{margin:10px 16px 0}
.channel .ia{display:inline-block;padding:0 5px;border-radius:5px;background:var(--t-ia-bg);color:var(--t-ia);font-size:11px;font-weight:700;letter-spacing:.02em;vertical-align:1px}
.channel .cflag{display:inline-block;padding:0 6px;border-radius:5px;background:var(--amber-bg);color:var(--amber);font-size:11.5px;font-weight:650}
.channel .mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px}
.channel .ok{color:var(--green);font-weight:600}.channel .bad{color:var(--red);font-weight:600}
.channel .lnk{color:var(--blue);font-weight:600}
.channel .small{font-size:12.5px}
.channel .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.channel .rdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--red-dot);vertical-align:2px}
.channel .keys{font-size:12px}
/* 筛选、体检问题、批量条 */
.channel .tfilters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 16px 0}
.channel .tfilters .tsearch{position:relative;flex:1 1 100%}
.channel .tfilters .tsearch kbd{display:none}
.channel .tfilters select.inp{flex:1 1 140px;width:auto;min-width:0;max-width:100%}
.channel .tfilters .tck{display:flex;align-items:center;gap:6px;font-size:14px;min-height:44px}
.channel .tcount{flex:1 1 100%;font-size:12.5px}
.channel .tprob{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 16px 0;font-size:13px}
.channel .tchip{display:inline-flex;gap:6px;align-items:center;min-height:36px;padding:0 12px;border-radius:18px;box-shadow:inset 0 0 0 1.5px var(--line);font-size:13px;color:var(--ink2)}
.channel .tchip.on{background:var(--ink);color:#fff;box-shadow:none}
.channel .tbatch{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 16px 0;padding:10px 12px;border-radius:12px;background:var(--ink);color:#fff}
.channel .tbatch[hidden]{display:none}
.channel .tbatch .inp{width:auto;flex:1 1 180px;min-width:0;max-width:100%;color:var(--ink)}
.channel .tbatch .btn.sec{background:#3f3f46;color:#fff}
.channel .tbatch .note2{font-size:12px;color:#d4d4d8}
/* 表格（手机上照样是表格，横着可滚；名称列能折行） */
.channel .ttable{margin:10px 16px 0;overflow-x:auto;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line)}
.channel .ttable table{width:100%;border-collapse:collapse;font-size:14px}
.channel .ttable th{font-size:12px;font-weight:600;color:var(--ink3);text-align:left;padding:8px 10px;background:var(--soft2);border-bottom:1px solid var(--line);white-space:nowrap}
.channel .ttable td{padding:8px 10px;border-bottom:1px solid var(--hair);vertical-align:middle}
.channel .ttable tr:last-child td{border-bottom:0}
.channel .ttable .r{text-align:right}
.channel .ttable td.nm{min-width:220px}
.channel .ttable td.nm small{display:block;font-size:12px}
.channel .ttable td.nm small.msum{display:none}
.channel .ttable td.probs{min-width:200px}
.channel .ttable tr.sel td{background:var(--blue-bg)}
.channel .ttable tr.cur td:first-child{box-shadow:inset 3px 0 0 var(--ink)}
.channel .ttable tr.dim td{color:var(--ink4)}
.channel .ttable input[type=checkbox]{width:20px;height:20px}
.channel .timg{width:44px;height:44px;border-radius:8px;object-fit:cover;background:var(--soft);display:inline-grid;place-items:center;font-size:10px;color:var(--ink4);vertical-align:middle}
.channel .pchip{display:inline-block;margin:2px 4px 2px 0;padding:1px 7px;border-radius:6px;box-shadow:inset 0 0 0 1px var(--red-line);color:var(--red);font-size:12px}
.channel .tpager{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 16px 0;font-size:13px}
.channel .tpager .keys{display:none}
/* 编辑页 */
.channel .thead{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:12px 16px 0}
.channel .thead h1{margin:0;font-size:20px;font-weight:650;flex:1 1 100%}
.channel .thead .acts{display:none}
.channel .tsec{margin:14px 16px 0;padding-top:12px;border-top:1px solid var(--line)}
/* 手机：站着能做完的（价、能不能买、分类、图）在前，长文字、组合、SEO 在后（Fable 稿手机页） */
.channel .tform{display:flex;flex-direction:column}.channel .tsec.s-late{order:2}
.channel .tsec h2,.channel .tside2 h2,.channel .tpub h2{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;font-size:15px;font-weight:650}
.channel .tf{display:grid;gap:4px;margin:0 0 12px;padding-left:10px;border-left:3px solid transparent}
.channel .tf.chg,.channel .timgs.chg{border-left-color:var(--t-chg)}
.channel .tf>label{font-size:13px;font-weight:600;color:var(--ink2)}
.channel .tf select.inp{min-width:0;max-width:100%}
.channel .tf textarea.inp{min-height:84px;padding:10px 14px;resize:vertical;line-height:1.45;font-size:16px}
.channel .tf .was{font-size:12.5px;color:var(--ink3);text-decoration:line-through;text-decoration-color:var(--ink5)}
.channel .tf .seen{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--t-ia);min-height:36px}
.channel .tf.lock span{font-size:13px}
.channel .tf .row2{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.channel .inp.chg{box-shadow:inset 0 0 0 2px var(--t-chg)}
.channel details.ten{margin:6px 0 0}
.channel details.ten summary{min-height:44px;display:flex;align-items:center;gap:6px;font-weight:600;cursor:pointer}
.channel details.ten summary::-webkit-details-marker{display:none}
.channel details.ten summary::after{content:"";width:8px;height:8px;margin-left:auto;margin-right:4px;border-right:2px solid var(--ink3);border-bottom:2px solid var(--ink3);transform:rotate(45deg)}
.channel details.ten[open] summary::after{transform:rotate(-135deg)}
.channel .timgs{display:flex;flex-wrap:wrap;gap:10px;padding-left:10px;border-left:3px solid transparent}
.channel .tim{display:grid;gap:4px;width:120px;font-size:13px}
.channel .tim img{width:120px;height:120px;object-fit:cover;border-radius:10px;background:var(--soft)}
.channel .tim label{display:flex;align-items:center;gap:6px;min-height:32px}
.channel .seg2{display:flex;flex-wrap:wrap;gap:8px}
.channel .seg2 label{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:12px;box-shadow:inset 0 0 0 1.5px var(--line);font-size:14px}
.channel .tside2{margin:16px 16px 0;padding:14px;border-radius:14px;background:var(--soft2);box-shadow:inset 0 0 0 1px var(--line)}
.channel .tside2 .cline{padding:6px 0;border-bottom:1px solid var(--hair);font-size:14px}
.channel .tside2 .btn.block{width:100%;margin:12px 0 0}
.channel .tside2 .follow{margin-top:16px}
.channel .tside2 .pl{padding:8px 0;border-bottom:1px solid var(--hair);display:grid;gap:2px}
.channel .tside2 .pl small{font-size:12.5px}
.channel .tbottom{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));display:flex;gap:10px;padding:10px 16px;background:rgba(255,255,255,.97);border-top:1px solid var(--hair);z-index:4}
.channel .tbottom .btn{flex:1}
.channel .nbar:not(.on){display:none}
.channel .tphoto{margin:12px 0 0}
.channel .tphoto .btn{cursor:pointer}
/* 待审 */
.channel .tqueue{margin:10px 16px 0;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.channel .tqueue .qi{flex:0 0 220px;display:grid;gap:2px;padding:10px 12px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line);font-size:13.5px}
.channel .tqueue .qi.on{box-shadow:inset 0 0 0 2px var(--ink)}
.channel .tqueue .qi.dim{color:var(--ink3)}
.channel .tqueue .qi small{font-size:12px;color:var(--ink3)}
.channel .tqueue .qsep,.channel .tqueue .keys{display:none}
.channel .tcmp .thead .acts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;flex:1 1 100%}
.channel .tcmp .thead .acts form{display:inline-flex;gap:8px;align-items:center}
.channel .tcmp .stt{margin:10px 16px 0}
.channel table.cmp th[scope=row]{font-size:13px;font-weight:600;color:var(--ink2);white-space:normal;background:none;width:150px;vertical-align:top}
.channel table.cmp td{vertical-align:top}
.channel table.cmp td.old{color:var(--ink3);text-decoration:line-through;text-decoration-color:var(--ink5);max-width:360px}
.channel table.cmp td.new .html p{margin:0 0 6px}
.channel table.cmp tr.moved td{background:var(--red-bg)}
.channel .tpub{margin:20px 0 0}
.channel .tpub h2{margin:0 16px 8px}
/* 记录 */
.channel .tlog{margin:10px 16px 0;display:grid;gap:10px}
.channel .tlog .lg{padding:10px 12px;border-radius:12px;box-shadow:inset 0 0 0 1px var(--line)}
.channel .tlog .lh{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-size:13.5px;margin-bottom:4px}
.channel .tlog .lc{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:13px;padding:3px 0}
.channel .tlog .lc .k{font-weight:600;min-width:120px}.channel .tlog .lc .b{color:var(--ink3);text-decoration:line-through}.channel .tlog .lc .arr{color:var(--ink4)}
.channel .tfilters.inline{margin:0;flex:1 1 100%}
@media (min-width:900px){
  .app.channel{max-width:1280px;padding-bottom:32px}
  .tnav,.channel .tbottom{display:none}
  .channel .tbar{gap:16px;padding:0 20px 0 8px}
  .channel .ttabs{display:flex;gap:2px}
  .channel .ttabs a{padding:8px 12px;border-radius:8px;font-size:14px;color:var(--ink3)}
  .channel .ttabs a.on{color:var(--ink);font-weight:650;box-shadow:inset 0 -2px 0 var(--ink);border-radius:0}
  .channel .ttabs .cnt{font-style:normal;font-size:11.5px;padding:0 6px;border-radius:8px;background:var(--soft);color:var(--ink2);margin-left:4px}
  .channel .tside{display:block;margin-left:auto;font-size:12.5px}
  .channel .tfilters{flex-wrap:nowrap;margin:14px 20px 0}
  .channel .tfilters .tsearch{flex:2 1 320px}
  .channel .tfilters .tsearch kbd{display:block;position:absolute;right:12px;top:50%;transform:translateY(-50%);font:12px ui-monospace,monospace;color:var(--ink4);padding:0 5px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--line)}
  .channel .tcount{flex:0 1 auto;white-space:nowrap}
  .channel .tprob,.channel .tbatch,.channel .ttable,.channel .tpager,.channel .thead,.channel .tpad,.channel .tlog{margin-left:20px;margin-right:20px}
  .channel .tpager .keys{display:inline;margin-left:auto}
  .channel .ttable td{white-space:nowrap}
  .channel .ttable td.nm,.channel .ttable td.probs{white-space:normal}
  .channel .thead h1{flex:0 1 auto}
  .channel .thead .acts{display:flex;gap:8px;align-items:center;margin-left:auto}
  .channel .tgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px;margin:0 20px;align-items:start}
  .channel .tgrid .ttable{margin:14px 0 0}
  .channel .tgrid .tsec{margin-left:0;margin-right:0}
  .channel .tsec.s-late{order:0}
  .channel .tside2{position:sticky;top:64px;margin:14px 0 0}
  .channel .tf{grid-template-columns:180px minmax(0,1fr);column-gap:14px}
  .channel .tf>label{padding-top:12px}
  .channel .tf .was,.channel .tf .seen,.channel .tf .row2+.was{grid-column:2}
  .channel .tphoto{display:none}
  .channel .tqgrid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:0 20px;margin:0 20px}
  .channel .tqueue{flex-direction:column;overflow:visible;margin:14px 0 0;max-height:calc(100vh - 120px);overflow-y:auto;position:sticky;top:64px}
  .channel .tqueue .qi{flex:none}
  .channel .tqueue .qsep,.channel .tqueue .keys{display:block;font-size:12px;margin:8px 4px 0}
  .channel .tcmp .thead,.channel .tcmp .ttable,.channel .tcmp .stt{margin-left:0;margin-right:0}
  .channel .tcmp .thead .acts{flex:0 1 auto}
  .channel .tpub h2{margin:0 20px 8px}
}
/* 10-20 审查后：对照表折行（电脑上原来长文字叠到隔壁栏）、手机上上下排；列表 / 上新在手机上是卡片；批次整表；新品一屏；分类小标签 */
.channel .stt.g{background:var(--green-bg);color:var(--green)}
.channel .hint{font-size:12px;color:var(--ink3)}
.channel .chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.channel .cchip{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 10px;border-radius:10px;background:var(--soft);font-size:13px}
.channel .vchip{display:inline-block;margin:2px 6px 2px 0;padding:3px 8px;border-radius:8px;background:var(--soft);font-size:13px}
.channel .tacts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:14px 16px 0}
.channel .tacts form{display:inline-flex}
.channel .tnew{display:grid;gap:12px;margin:12px 16px 0}
.channel .tnew .nimgs{display:flex;gap:8px;overflow-x:auto}
.channel .tnew .nimgs img{width:140px;height:140px;object-fit:cover;border-radius:10px;background:var(--soft);flex:none}
.channel .tnew .nkv{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:14px}
.channel .tnew .nkv dt{color:var(--ink3);font-size:13px}
.channel .tnew .nkv dd{margin:0}
.channel table.cmp th,.channel table.cmp td{white-space:normal!important;overflow-wrap:anywhere}
.channel .tqueue .qi.lotq{box-shadow:inset 0 0 0 1.5px var(--blue);color:var(--blue)}
.channel .tlot td.nm .lc{font-size:13px;padding:2px 0}
.channel .tlot .b{color:var(--ink3);text-decoration:line-through}
.channel .tlotbar{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:flex-end;margin:10px 16px 0;padding:10px 0;background:rgba(255,255,255,.97)}
.channel .tbatch .tck.all{color:#fff;font-size:13px;min-height:36px}
@media (max-width:899px){
  /* 对照表：一字段一块——标签、网店现在（划掉）、新的 */
  .channel table.cmp thead{display:none}
  .channel table.cmp tr{display:grid;gap:2px;padding:8px 10px;border-bottom:1px solid var(--hair)}
  .channel table.cmp th[scope=row],.channel table.cmp td{display:block;padding:0;border:0;width:auto;max-width:none}
  .channel table.cmp td.old{font-size:13px}
  .channel .tacts{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));padding:10px 0;background:rgba(255,255,255,.97);z-index:3}
  /* 列表 / 上新：卡片（勾 + 图 + 名字一行，下面价格、状态、问题） */
  .channel .tlist{box-shadow:none;overflow:visible}
  .channel .tlist thead{display:none}
  .channel .tlist tr{display:grid;grid-template-columns:28px 52px minmax(0,1fr);gap:4px 8px;padding:10px 0;border-bottom:1px solid var(--hair);align-items:center}
  .channel .tlist td{display:block;padding:0;border:0;white-space:normal}
  .channel .tlist td:nth-child(1){grid-row:1/3}
  .channel .tlist td:nth-child(2){grid-row:1/3}
  .channel .tlist td.nm{min-width:0}
  .channel .tlist td.nm small.msum{display:block;margin-top:2px;font-size:13px;color:var(--ink2)}
  .channel .tlist.nu td:nth-child(n+4):not(:last-child){display:none}
  .channel .tlist.nu td:nth-child(1):empty{display:block}
  .channel .tside2 .btn.pconly{display:none}
  .channel .tlist td:nth-child(n+4){grid-column:3;font-size:13px}
  .channel .tlist td.r{text-align:left}
  .channel .tlist td:empty{display:none}
  .channel .tlist.idx td:nth-child(4),.channel .tlist.idx td:nth-child(8){display:none}
  .channel .tlist.idx td:nth-child(5),.channel .tlist.idx td:nth-child(6){display:inline-block;grid-column:3}
}
@media (min-width:900px){
  .channel .tacts,.channel .tnew{margin-left:0;margin-right:0}
  .channel .tnew{grid-template-columns:auto minmax(0,1fr);align-items:start}
  .channel .tlotbar{bottom:0;margin-left:20px;margin-right:20px}
}
.channel .tlog .lg,.channel .tlog .lc{min-width:0}.channel .tlog .lc span{min-width:0;overflow-wrap:anywhere;word-break:break-word}
@media (min-width:900px){.channel .ttabs a.sep{margin-left:10px;padding-left:14px;box-shadow:inset 1px 0 0 var(--line);border-radius:0}}
.channel .tlog .lh,.channel .tlog .lh a,.channel .tlog .small,.channel .tlog .lc .k,.channel .tqueue .qi b{min-width:0;overflow-wrap:anywhere;word-break:break-word}
/* ---------- 进货 · Carygus 建 TPV 商品（/compras/carygus/，purchase/carygus_*.html，Issue #381）：10-25 ZHOU.G「和配货应用一个逻辑」——
   页面套配货的 body.pick（白卡 .lcard / .ocard、底部 .pkfoot 一个蓝键），这里只补卡里的勾、两个框和折叠的两行 ---------- */
body.pick .cg-h{margin:14px 16px 8px;font-size:13px;font-weight:600;color:var(--pk-ink3)}body.pick .cg-h small{display:block;font-weight:400;margin-top:2px}
body.pick .cg-card{transition:opacity .15s}body.pick .cg-card.off{opacity:.5}
body.pick .cg-g{display:flex;align-items:flex-start;gap:12px}
body.pick .cg-g .th.xl{flex:none;width:68px;height:68px;border-radius:8px;overflow:hidden}body.pick .cg-g .th.xl img{width:100%;height:100%;object-fit:contain;background:#fff}
body.pick .cg-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
body.pick .cg-name,body.pick .cg-title{display:block;width:calc(100% + 6px);margin:0 0 0 -6px;padding:4px 6px;border:0;border-radius:6px;background:transparent;font:inherit;font-size:16px;font-weight:600;line-height:1.3;color:var(--pk-ink);resize:none;overflow-wrap:anywhere}
body.pick .cg-name:focus{outline:0;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-blue),0 0 0 3px var(--pk-blue-bg)}
body.pick .cg-row{display:flex;align-items:flex-end;gap:10px;margin-top:8px}  /* 卡片下半截占满整张卡：左边两行小字，右边价格 */body.pick .cg-row .meta{flex:1;min-width:0;margin:0;font-size:13px;line-height:1.4;color:var(--pk-ink3)}
body.pick .cg-pvp{display:block;color:var(--pk-ink2)}body.pick .cg-pvp .nw{white-space:nowrap}  /* 货号 / PVP 各自不折，放不下各占一行 */
body.pick .cg-eur{position:relative;flex:none;display:block}
body.pick .cg-p{width:104px;height:44px;padding:0 28px 0 10px;border:0;border-radius:8px;background:var(--pk-page);box-shadow:inset 0 0 0 1px var(--pk-hair);font:inherit;font-size:19px;font-weight:700;text-align:right;color:var(--pk-ink)}
body.pick .cg-p:focus{outline:0;background:#fff;box-shadow:inset 0 0 0 1px var(--pk-blue),0 0 0 3px var(--pk-blue-bg)}
body.pick .cg-eur i{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-style:normal;font-size:15px;font-weight:600;color:var(--pk-ink3);pointer-events:none}
body.pick .cg-tick{flex:none;display:grid;place-items:center;width:44px;height:44px;margin:-4px -6px 0 0;cursor:pointer}
body.pick .cg-tick input{width:28px;height:28px;margin:0;accent-color:var(--pk-blue)}
body.pick .cg-fold{margin:8px 16px 0;font-size:13.5px;color:var(--pk-ink3)}body.pick .cg-fold summary{cursor:pointer;padding:8px 0;font-weight:500}
body.pick .cg-mini{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid var(--pk-hair)}
body.pick .cg-mini b{font-weight:500;color:var(--pk-ink2);min-width:0;overflow-wrap:anywhere}body.pick .cg-mini span{flex:none;text-align:right}
body.pick .cg-pad{height:84px}
body.pick .pkfoot .btn:disabled{opacity:.45}
body.pick .cg-wait{color:var(--pk-blue)!important;font-weight:600}
body.pick .cg-card s{color:var(--pk-ink3)}
body.pick .cg-state{margin:16px 16px 12px;padding:22px 16px;border-radius:var(--pk-r);background:#fff;box-shadow:inset 0 0 0 1px var(--pk-line);text-align:center}
body.pick .cg-state b{display:block;font-size:18px;font-weight:600;margin-top:10px}body.pick .cg-state small{display:block;margin-top:6px;font-size:14px;line-height:1.4;color:var(--pk-ink2)}
body.pick .cg-ico{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%}body.pick .cg-ico .i{width:28px;height:28px;stroke-width:2.5}
body.pick .cg-state.g{box-shadow:inset 0 0 0 1px var(--pk-g-ln)}body.pick .cg-state.g .cg-ico{background:var(--pk-g-chip);color:var(--pk-g)}
body.pick .cg-state.b .cg-ico{background:var(--pk-blue-bg);color:var(--pk-blue)}
body.pick .cg-state.r{box-shadow:inset 0 0 0 1px var(--red-line)}body.pick .cg-state.r .cg-ico{background:var(--red-bg);color:var(--red)}
body.pick .cg-spin{width:26px;height:26px;border-radius:50%;border:3px solid var(--pk-blue-ln);border-top-color:var(--pk-blue);animation:cgspin .9s linear infinite}
@keyframes cgspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){body.pick .cg-spin{animation:none}}
