*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  font-family: -apple-system, 'PingFang TC', 'Segoe UI', sans-serif;
  background: #000; color: #fff;
  overflow: hidden;       /* 背景不捲動；計算機改用 fixed 釘住視窗（見 #calc-app） */
  user-select: none; -webkit-user-select: none;
}
/* 計算機外殼：撐滿一屏的直向 flex，tabs/display 在上、keys 由 margin-top:auto 貼底，
   中間空間由 display 區吸收；含 safe-area padding 避免瀏海/home indicator 遮擋。 */
/* 計算機釘在視窗頂端，高度由 JS 依 visualViewport（真實可視高）鎖定（見 main.js lockCalcHeight）。
   height:100dvh 只是 JS 尚未執行前的 fallback。standalone PWA 登入(鍵盤)互動後，vh/dvh/svh 與
   fixed 的 layout viewport 會量到比實際可視區大的值→底部按鍵被裁；visualViewport.height 才準。 */
#calc-app {
  position: fixed; top: 0; left: 0; right: 0;
  height: 100dvh;
  width: 100%; max-width: 420px; margin-inline: auto;
  display: flex; flex-direction: column;
  /* 底部留白加大（26px）貼近真 iOS 計算機的下方呼吸空間；keys 靠 margin-top:auto 釘在此 padding 之上。 */
  padding: calc(12px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) calc(26px + env(safe-area-inset-bottom)) calc(12px + env(safe-area-inset-left));
}
/* 顯示區吸收上方剩餘空間，數字靠下（貼近按鍵，仿 iOS）；:not([hidden]) 避免 ID 規則
   蓋掉 [hidden]{display:none}，切到匯率分頁時 calc-display 仍能正常隱藏。 */
#calc-display:not([hidden]) { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: flex-end; }
/* 匯率分頁：chips 在上、結果列表中間可捲、輸入金額貼底（與計算機數字同位置）。
   min-height:0 讓面板可縮到容器內；捲動放在 .fx-results（見下），金額與 keys 都不被裁。 */
#fx-panel:not([hidden]) { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
/* 匯率輸入金額貼底對齊：數字落在顯示框底部，與計算機分頁的數字同一位置（按鍵正上方）。 */
#fx-amount { display: flex; flex-direction: column; justify-content: flex-end; }
/* 按鍵列貼底（顯示區被隱藏時亦生效），確保所有按鈕落在畫面內 */
.keys { margin-top: auto; }
.tabs { display: flex; gap: 8px; margin-bottom: 8px; }
.tab {
  flex: 1; padding: 10px; border: none; border-radius: 10px;
  background: #1c1c1e; color: #999; font-size: 1rem; cursor: pointer;
}
.tab.active { background: #2c2c2e; color: #fff; }
.display {
  text-align: right; font-size: 3.2rem; font-weight: 300;
  padding: 16px 12px; min-height: 84px; overflow: hidden;
  white-space: nowrap; text-overflow: ellipsis;
}
.keys { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.key {
  aspect-ratio: 1 / 1; border: none; border-radius: 50%;
  font-size: 1.8rem; background: #333; color: #fff; cursor: pointer;
}
.key:active { filter: brightness(1.4); }
.key.fn { background: #a5a5a5; color: #000; }
.key.op { background: #ff9500; color: #fff; }
.key.zero { aspect-ratio: auto; grid-column: span 2; border-radius: 40px; text-align: left; padding-left: 28px; }
.fx-currencies { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0; }
.fx-chip { padding: 6px 12px; border-radius: 16px; background: #1c1c1e; color: #999; border: none; cursor: pointer; font-size: .9rem; }
.fx-chip.active { background: #ff9500; color: #fff; }
.fx-results { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; display: flex; flex-direction: column; gap: 6px; padding: 0 12px 8px; }
.fx-row { display: flex; justify-content: space-between; font-size: 1.1rem; color: #ddd; }
.fx-updated { text-align: right; font-size: .75rem; color: #666; padding: 0 12px 6px; }
.fx-unavailable { color: #ff6b6b; text-align: center; padding: 8px; }

/* modal 通用 */
.modal-backdrop {
  position: fixed; inset: 0; background: rgba(0,0,0,.7);
  display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 16px;
}
.modal-box { background: #1c1c1e; color: #fff; border-radius: 16px; padding: 24px; width: 360px; max-width: 95vw; }
.modal-box h2 { font-size: 1.2rem; margin-bottom: 16px; font-weight: 600; }
.modal-box input {
  width: 100%; padding: 12px; margin-bottom: 12px; border-radius: 10px;
  border: 1px solid #3a3a3c; background: #2c2c2e; color: #fff; font-size: 1rem;
}
.modal-box video { width: 100%; border-radius: 10px; background: #000; margin-bottom: 12px; }
.modal-btn {
  width: 100%; padding: 13px; border: none; border-radius: 10px;
  background: #ff9500; color: #fff; font-size: 1rem; font-weight: 600; cursor: pointer;
  margin-bottom: 8px;
}
.modal-btn:last-child { margin-bottom: 0; }
.modal-btn.secondary { background: #3a3a3c; }
.modal-msg { text-align: center; font-size: .9rem; min-height: 1.2em; margin-top: 10px; color: #ff6b6b; }
.app-view-info { font-size: 1rem; margin-bottom: 16px; line-height: 1.8; }

/* ---- 短閒置鎖全屏 PIN 畫面（比照 .modal-box，見 reauth_lock.js）---- */
.reauth-box { background: #1c1c1e; color: #fff; border-radius: 16px; padding: 24px; width: 360px; max-width: 95vw; }
.reauth-title { font-size: 1.2rem; margin-bottom: 16px; font-weight: 600; text-align: center; }
/* PIN 與解鎖鍵同一列、按鈕靠右（輸入完拇指往右按，較好操作） */
.reauth-row { display: flex; gap: 10px; align-items: stretch; margin-bottom: 12px; }
.reauth-input {
  flex: 1; min-width: 0; padding: 12px; border-radius: 10px;
  border: 1px solid #3a3a3c; background: #2c2c2e; color: #fff; font-size: 1rem;
  text-align: center; letter-spacing: .3em;
}
.reauth-row .reauth-go { flex: none; height: 44px; padding: 0 20px; font-size: 15px; white-space: nowrap; }
.reauth-msg { text-align: center; font-size: .9rem; min-height: 1.2em; margin-bottom: 10px; color: #ff6b6b; }

/* ---- 暫存區（寬版 modal + 可橫捲表格）---- */
.modal-box.wide { width: 92vw; max-width: 900px; }
.pd-table-wrap { overflow-x: auto; display: block; -webkit-overflow-scrolling: touch; margin-bottom: 12px; }
#pd-table { width: 100%; border-collapse: collapse; min-width: 460px; }
#pd-table th, #pd-table td { padding: 8px 8px; text-align: left; border-bottom: 1px solid #3a3a3c; white-space: nowrap; }
/* 複查（唯讀）表格：唯讀好讀，行距放寬、金額欄靠右 */
#rv-table { width: 100%; border-collapse: collapse; min-width: 460px; }
#rv-table th, #rv-table td { padding: 12px 14px; text-align: left; border-bottom: 1px solid #3a3a3c; white-space: nowrap; }
#rv-table th { color: #8e8e93; font-weight: 500; font-size: .85rem; }
#rv-table .rv-amt { text-align: right; font-variant-numeric: tabular-nums; }
.rv-total { display: flex; justify-content: space-between; align-items: baseline;
  padding: 14px 4px 4px; margin-bottom: 16px; border-top: 2px solid #3a3a3c; font-weight: 600; }
.rv-total .rv-total-cnt { color: #8e8e93; font-weight: 400; font-size: .9rem; }
.rv-total .rv-total-amt { color: #4cd964; font-size: 1.35rem; margin-left: 6px; font-variant-numeric: tabular-nums; }
.pd-row-err { color: #ff6b6b; font-size: .8rem; margin-top: 4px; white-space: normal; }
.pd-ocr-failed { color: #ff6b6b; font-size: .8rem; margin-top: 4px; white-space: normal; }
/* 無單據建帳表單（在按鈕下方展開）*/
.pd-noreceipt-box { display: flex; flex-direction: column; gap: 8px; margin: 10px 0 4px;
  padding: 12px; background: #2c2c2e; border-radius: 10px; }
.pd-noreceipt-box input, .pd-noreceipt-box select { font-size: 16px; padding: 8px;
  border-radius: 8px; border: 1px solid #48484a; background: #1c1c1e; color: #fff; }
.nr-photo { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.nr-cam video { width: 100%; max-width: 320px; border-radius: 8px; background: #000; }
.nr-preview img { border-radius: 8px; vertical-align: middle; margin-right: 8px; }

/* ---- 管理後台（手機優先；與 covert 計算機樣式區隔）---- */
.admin-panel {
  position: fixed; inset: 0; background: #f5f6f8; color: #1c1c1e;
  display: flex; flex-direction: column; z-index: 50; overflow: hidden;
  font-size: 16px; -webkit-text-size-adjust: 100%;
}
/* 內容欄：桌機置中限寬 900px，手機自然填滿（webapp .container 一致做法）→ 網頁/手機排版一致 */
.ap-inner { max-width: 900px; margin: 0 auto; width: 100%; }
.ap-head { background: #fff; border-bottom: 1px solid #e0e0e0; }
.ap-head-inner {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 16px;
}
.ap-title { font-weight: 600; font-size: 18px; }
.ap-who { color: #666; font-size: 14px; }
.ap-head-inner .ap-logout { margin-left: auto; }
.ap-select {
  padding: 10px 12px; border: 1px solid #ccc; border-radius: 8px; font-size: 16px; min-height: 44px;
}
.ap-tabs { background: #fff; border-bottom: 1px solid #e0e0e0; }
.ap-tabs-inner {
  display: flex; gap: 4px; padding: 8px 16px; overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.ap-tab {
  padding: 10px 16px; border: none; background: transparent; border-radius: 8px;
  font-size: 16px; color: #555; cursor: pointer; white-space: nowrap; min-height: 44px;
}
.ap-tab.active { background: #007aff; color: #fff; }
.ap-body { flex: 1; overflow-y: auto; }
.ap-body > .ap-inner { padding: 16px; }
/* 表格包在可橫向捲動的容器：手機上欄多也不會擠爆版面 */
.ap-table-wrap {
  overflow-x: auto; -webkit-overflow-scrolling: touch;
  background: #fff; border-radius: 10px; border: 1px solid #eee;
}
.ap-table { width: 100%; border-collapse: collapse; min-width: 460px; }
.ap-table th, .ap-table td {
  padding: 12px 12px; text-align: left; border-bottom: 1px solid #eee;
  font-size: 15px; white-space: nowrap;
}
.ap-table th { background: #fafafa; color: #666; font-weight: 500; }
.ap-table select {
  padding: 8px 8px; border: 1px solid #ccc; border-radius: 6px; font-size: 15px; min-height: 38px;
}
.ap-form { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.ap-form input, .ap-form select {
  padding: 12px 12px; border: 1px solid #ccc; border-radius: 8px; font-size: 16px;
  min-height: 44px; flex: 1 1 auto; min-width: 120px;
}
.ap-btn {
  padding: 11px 18px; border: none; border-radius: 8px; background: #007aff; color: #fff;
  font-size: 16px; cursor: pointer; min-height: 44px;
}
.ap-btn.secondary { background: #8e8e93; }
.ap-btn.danger { background: #ff3b30; }
.ap-btn:disabled { opacity: 0.5; }
.ap-msg { width: 100%; font-size: 14px; min-height: 20px; }
.ap-badge { display: inline-block; padding: 3px 10px; border-radius: 10px; font-size: 13px; }
.ap-badge.pending { background: #fff3cd; color: #856404; }
.ap-badge.approved { background: #d4edda; color: #155724; }
.ap-badge.revoked { background: #f8d7da; color: #721c24; }
.ap-badge.inactive { background: #e2e3e5; color: #6c757d; }
.ap-rowbtns { display: flex; gap: 6px; flex-wrap: wrap; }
.ap-rowbtns .ap-btn { padding: 8px 12px; font-size: 14px; min-height: 38px; }
.ap-face-status { font-size: 14px; }
.ap-video { width: 100%; max-width: 320px; border-radius: 8px; margin-top: 8px; }

/* ---- 稽核（待稽核 / 當日總表；沿用 .ap-* 淺色管理後台主題）---- */
.audit-sub { display: flex; gap: 8px; margin-bottom: 12px; }
.audit-sub .ap-tab { background: #fff; border: 1px solid #e0e0e0; }
.audit-sub .ap-tab.active { background: #007aff; border-color: #007aff; }
/* class 選擇器（.pd-table）：暫存區 modal 用 #pd-table（深色 ID），稽核用 class（淺色），互不影響 */
.pd-table {
  width: 100%; border-collapse: collapse; min-width: 460px;
  background: #fff; border-radius: 10px; overflow: hidden;
}
.pd-table th, .pd-table td {
  padding: 12px 12px; text-align: left; border-bottom: 1px solid #eee;
  font-size: 15px; white-space: nowrap;
}
.pd-table th { background: #fafafa; color: #666; font-weight: 500; }
.au-group { margin-bottom: 16px; }
.au-group-head {
  padding: 8px 4px; margin-bottom: 6px; font-weight: 600; color: #444;
  border-bottom: 2px solid #e0e0e0;
}
.au-actionbar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  margin-top: 16px; padding-top: 16px; border-top: 1px solid #e0e0e0;
}
.au-actionbar .modal-btn {
  width: auto; display: inline-block; min-height: 44px; padding: 10px 18px;
  margin-bottom: 0;
}
.au-subtotal { font-size: 16px; font-weight: 600; color: #007aff; }
.au-open { background: #eef6ff; }
.au-open td { font-weight: 600; }
.au-thumb { cursor: zoom-in; }
.au-time { white-space: nowrap; color: #666; font-size: .85rem; }
.au-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.8); display: flex;
  align-items: center; justify-content: center; z-index: 1000; }
.au-lightbox-stage { max-width: 92vw; max-height: 92vh; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  touch-action: none; cursor: grab; }
.au-lightbox-stage img { max-width: 92vw; max-height: 92vh; will-change: transform;
  user-select: none; -webkit-user-select: none; box-shadow: 0 4px 24px rgba(0,0,0,.5); }
.au-lightbox-close { position: fixed; top: 12px; right: 16px; z-index: 1001;
  width: 44px; height: 44px; border: none; border-radius: 50%;
  background: rgba(0,0,0,.55); color: #fff; font-size: 28px; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center; }
.au-day-nav { margin: 8px 0; font-size: .9rem; }
.au-day-nav select, .au-day-nav input[type="date"] { font-size: 16px; padding: 4px; }
.au-daytotal { margin: 12px 0; font-size: 1rem; text-align: right; }
.au-daytotal b { color: #007aff; font-size: 1.15rem; }
tr.au-int { cursor: pointer; }
tr.au-int:hover { background: #f5faff; }
tr.au-open-row { background: #eef6ff; }
tr.au-open-row td { font-weight: 600; }
.au-detail > td { background: #fafafa; padding: 8px; }
.au-detail-table { width: 100%; border-collapse: collapse; font-size: .85rem; }
.au-detail-table th, .au-detail-table td { border-bottom: 1px solid #eee; padding: 4px 6px; text-align: left; }
.au-mod { color: #d17b00; font-size: .75rem; border: 1px solid #d17b00; border-radius: 3px; padding: 0 3px; }
.pd-ocring { color: #888; font-size: .85rem; }
.au-trail-btn { background: none; border: none; color: #007aff; font-size: .78rem; padding: 0 2px; cursor: pointer; text-decoration: underline; }
.au-lastmod { color: #888; font-size: .72rem; }
.au-trail-tr td { background: #f6f6f8; color: #444; font-size: .8rem; padding: 4px 10px; }
.au-trail-row { padding: 1px 0; }
.au-trail-empty { color: #999; }
.pd-note { width: 120px; }
.ap-row-rejected { background: #ffebee; }
.ap-reject-reason { color: #c62828; font-size: .78rem; margin-bottom: 4px; }
.ap-overdue { background: #fff3e0; border-left: 4px solid #ef6c00; padding: 8px 12px; margin-bottom: 8px; }

/* ---- 會計核銷面板 ---- */
.rc-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 12px; }
.rc-filters select, .rc-filters input[type="date"] {
  font-size: 14px; padding: 6px 8px; border-radius: 6px; border: 1px solid #ccc;
}
.rc-totals { font-size: 15px; margin: 8px 0 12px; display: flex; gap: 16px; flex-wrap: wrap; }
.rc-amt { font-variant-numeric: tabular-nums; font-weight: 600; }
.rc-neg { color: #c62828; }
.rc-batchbar { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.rc-msg { font-size: 14px; color: #c62828; }
.rc-manual-form { margin-bottom: 16px; }
.rc-reject-reason { color: #c62828; font-size: .78rem; margin-top: 2px; }
/* 註：核銷工作台的 .rc-rowbtns 是 <td>（見 reconcile.js rowHtml），操作鈕排列改由
   .wk-rc-table td.rc-rowbtns 處理（保持 table-cell，勿在此把 td 變成 flex 容器）。 */
/* Addendum 10.1：重送標記徽章——會計要一眼認出「主管重新確認過的單」，配色刻意跟
   .rc-reject-reason（紅）/ .au-mod（橘）區隔，用醒目的藍紫底色 + 粗體。 */
.rc-resubmit {
  display: inline-block; margin-top: 4px; padding: 2px 8px; border-radius: 10px;
  background: #ede7f6; color: #4527a0; border: 1px solid #7e57c2;
  font-size: .78rem; font-weight: 700; white-space: nowrap;
}

/* ---- 月報表交叉表（會計/經理共用，Task 14）---- */
.mr-toggle {
  background: none; border: none; cursor: pointer; font-size: 12px;
  color: #007aff; padding: 0 2px; width: 18px;
}
.mr-child-name { padding-left: 28px; color: #555; }
.mr-total-row td { font-weight: 700; border-top: 2px solid #ddd; }
.mr-head { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 10px; }
.mr-period { font-weight: 600; }
.mr-store-pick { color: #555; }
.mr-table.mr-single { max-width: 420px; }

/* ---- 會計月結管理 tab（期間狀態/挪期/提前封月/上期未處理單/月結設定，Task 17）---- */
.rc-period-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.rc-period-label { font-size: 15px; font-weight: 600; }
.rc-period-next { font-size: 14px; font-weight: 600; color: var(--wk-muted); }
.ap-badge.open { background: #d4edda; color: #155724; }
.ap-badge.closing { background: #fff3cd; color: #856404; }
.ap-badge.closed { background: #e2e3e5; color: #6c757d; }
.rc-period-section { margin-bottom: 24px; }
.rc-period-section h3 { font-size: 16px; margin: 0 0 8px; color: #333; }
.ap-hint { color:#888; font-size:12px; margin-top:8px; } .st-onoff { cursor:pointer; user-select:none; }

/* ============================================================
   工作台設計系統（UI 重塑 2026-07；會計桌機 pilot，各角色沿用）
   token + 側欄工作台殼。與舊 .ap-* / .rc-* / .mr-* 並存，本段只新增不改動上方。
   視覺 SoT: docs/superpowers/ui-prototypes/accountant-desktop.html
   ============================================================ */

/* ---- design tokens（值逐字取自原型 :root 三段，全部加 --wk- 前綴） ---- */
:root {
  --wk-accent: #2E6BE6;
  --wk-accent-ink: #1E4FB8;
  --wk-accent-soft: #E8EFFC;
  --wk-ground: #F4F6FA;
  --wk-surface: #FFFFFF;
  --wk-surface-2: #F8FAFD;
  --wk-ink: #1C2733;
  --wk-muted: #5C6B80;
  --wk-faint: #8896A8;
  --wk-line: #DDE4EE;
  --wk-line-soft: #E8EDF5;
  --wk-ok: #1E9E5A;      --wk-ok-soft: #E3F5EB;   --wk-ok-ink: #14713F;
  --wk-warn: #C7860A;    --wk-warn-soft: #FCF2DC; --wk-warn-ink: #8F5E03;
  --wk-bad: #D6455A;     --wk-bad-soft: #FCE9EC;  --wk-bad-ink: #AF2B40;
  --wk-neutral-soft: #EDF1F7;
  --wk-shadow: 0 1px 2px rgba(28,39,51,.05),0 4px 16px rgba(28,39,51,.06);
  --wk-shadow-pop: 0 8px 32px rgba(28,39,51,.18);
  --wk-radius: 10px;
  --wk-radius-sm: 7px;
  --wk-sidebar-w: 208px;
  --wk-toolbar-bg: rgba(244,246,250,.92);
  --wk-sticky-shadow: -1px 0 0 0 var(--wk-line),-9px 0 12px -8px rgba(20,28,40,.14);
  --wk-sticky-col-shadow: 1px 0 0 0 var(--wk-line),9px 0 12px -8px rgba(20,28,40,.14);
}
@media (prefers-color-scheme: dark) {
  :root {
    --wk-accent: #5B8DF0;
    --wk-accent-ink: #8FB2F5;
    --wk-accent-soft: #1D2C4A;
    --wk-ground: #12161D;
    --wk-surface: #1A2029;
    --wk-surface-2: #1F2631;
    --wk-ink: #E4EAF2;
    --wk-muted: #96A3B5;
    --wk-faint: #6B7889;
    --wk-line: #2C3542;
    --wk-line-soft: #252D39;
    --wk-ok: #3DBE7B;   --wk-ok-soft: #15301F;   --wk-ok-ink: #6FD8A0;
    --wk-warn: #E0A63C; --wk-warn-soft: #33290F; --wk-warn-ink: #EFC170;
    --wk-bad: #E56B7D;  --wk-bad-soft: #3A1B21;  --wk-bad-ink: #F09AA7;
    --wk-neutral-soft: #252D39;
    --wk-shadow: 0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.3);
    --wk-shadow-pop: 0 8px 32px rgba(0,0,0,.55);
    --wk-toolbar-bg: rgba(18,22,29,.92);
    --wk-sticky-shadow: -1px 0 0 0 var(--wk-line),-9px 0 14px -8px rgba(0,0,0,.55);
    --wk-sticky-col-shadow: 1px 0 0 0 var(--wk-line),9px 0 14px -8px rgba(0,0,0,.55);
  }
}
:root[data-theme="dark"] {
  --wk-accent: #5B8DF0; --wk-accent-ink: #8FB2F5; --wk-accent-soft: #1D2C4A;
  --wk-ground: #12161D; --wk-surface: #1A2029; --wk-surface-2: #1F2631;
  --wk-ink: #E4EAF2; --wk-muted: #96A3B5; --wk-faint: #6B7889;
  --wk-line: #2C3542; --wk-line-soft: #252D39;
  --wk-ok: #3DBE7B; --wk-ok-soft: #15301F; --wk-ok-ink: #6FD8A0;
  --wk-warn: #E0A63C; --wk-warn-soft: #33290F; --wk-warn-ink: #EFC170;
  --wk-bad: #E56B7D; --wk-bad-soft: #3A1B21; --wk-bad-ink: #F09AA7;
  --wk-neutral-soft: #252D39;
  --wk-shadow: 0 1px 2px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.3);
  --wk-shadow-pop: 0 8px 32px rgba(0,0,0,.55);
  --wk-toolbar-bg: rgba(18,22,29,.92);
  --wk-sticky-shadow: -1px 0 0 0 var(--wk-line),-9px 0 14px -8px rgba(0,0,0,.55);
  --wk-sticky-col-shadow: 1px 0 0 0 var(--wk-line),9px 0 14px -8px rgba(0,0,0,.55);
}
:root[data-theme="light"] {
  --wk-accent: #2E6BE6; --wk-accent-ink: #1E4FB8; --wk-accent-soft: #E8EFFC;
  --wk-ground: #F4F6FA; --wk-surface: #FFFFFF; --wk-surface-2: #F8FAFD;
  --wk-ink: #1C2733; --wk-muted: #5C6B80; --wk-faint: #8896A8;
  --wk-line: #DDE4EE; --wk-line-soft: #E8EDF5;
  --wk-ok: #1E9E5A; --wk-ok-soft: #E3F5EB; --wk-ok-ink: #14713F;
  --wk-warn: #C7860A; --wk-warn-soft: #FCF2DC; --wk-warn-ink: #8F5E03;
  --wk-bad: #D6455A; --wk-bad-soft: #FCE9EC; --wk-bad-ink: #AF2B40;
  --wk-neutral-soft: #EDF1F7;
  --wk-shadow: 0 1px 2px rgba(28,39,51,.05),0 4px 16px rgba(28,39,51,.06);
  --wk-shadow-pop: 0 8px 32px rgba(28,39,51,.18);
  --wk-toolbar-bg: rgba(244,246,250,.92);
  --wk-sticky-shadow: -1px 0 0 0 var(--wk-line),-9px 0 12px -8px rgba(20,28,40,.14);
  --wk-sticky-col-shadow: 1px 0 0 0 var(--wk-line),9px 0 12px -8px rgba(20,28,40,.14);
}

/* ---- 殼：取代 .admin-panel 的全屏定位角色（覆蓋整頁，蓋在 covert 計算機外殼之上） ---- */
.wk-app {
  position: fixed; inset: 0; z-index: 50;
  background: var(--wk-ground); color: var(--wk-ink); overflow: auto;
}
.wk-app button, .wk-app input, .wk-app select, .wk-app textarea { font: inherit; color: inherit; }

/* ---- 左側欄 ---- */
.wk-sidebar {
  position: fixed; inset: 0 auto 0 0; width: var(--wk-sidebar-w);
  background: var(--wk-surface); border-right: 1px solid var(--wk-line-soft);
  display: flex; flex-direction: column; z-index: 40;
}
.wk-brand { padding: 22px 18px 18px; border-bottom: 1px solid var(--wk-line-soft); }
.wk-brand-name { font-size: 17px; font-weight: 700; letter-spacing: .02em; }
.wk-brand-sub { font-size: 12px; color: var(--wk-faint); margin-top: 2px; letter-spacing: .08em; }
.wk-nav { padding: 12px 10px; display: flex; flex-direction: column; gap: 2px; flex: 1; }
.wk-nav-item {
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 9px 12px; border: 0; background: none; border-radius: var(--wk-radius-sm);
  color: var(--wk-muted); font-size: 14px; text-align: left;
  transition: background .12s, color .12s;
}
.wk-nav-item:hover { background: var(--wk-surface-2); color: var(--wk-ink); }
.wk-nav-item[aria-current="page"] { background: var(--wk-accent-soft); color: var(--wk-accent-ink); font-weight: 600; }
.wk-side-foot { padding: 14px 16px; border-top: 1px solid var(--wk-line-soft); }
.wk-side-user { display: flex; align-items: center; gap: 10px; }
.wk-avatar {
  width: 32px; height: 32px; border-radius: 50%; flex: none;
  background: var(--wk-accent-soft); color: var(--wk-accent-ink);
  display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700;
}
.wk-side-user-name { font-size: 13px; font-weight: 600; line-height: 1.3; }
.wk-side-user-role { font-size: 12px; color: var(--wk-faint); }
.wk-side-foot .wk-btn { margin-top: 10px; width: 100%; }

/* ---- 主區 ---- */
.wk-main { margin-left: var(--wk-sidebar-w); min-height: 100vh; display: flex; flex-direction: column; }
.wk-view { display: none; flex: 1; flex-direction: column; }
.wk-view.active { display: flex; }

/* ---- sticky 工具列（毛玻璃） ---- */
.wk-toolbar {
  position: sticky; top: 0; z-index: 30;
  background: var(--wk-toolbar-bg); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--wk-line-soft);
  padding: 14px 28px 12px; display: flex; flex-direction: column; gap: 10px;
}
.wk-toolbar-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

/* ---- 按鈕 ---- */
.wk-btn {
  height: 32px; padding: 0 14px; font-size: 13px; font-weight: 600;
  border-radius: var(--wk-radius-sm); border: 1px solid transparent;
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
  transition: background .12s, border-color .12s, color .12s, box-shadow .12s;
}
.wk-btn-primary { background: var(--wk-accent); color: #fff; border-color: var(--wk-accent); }
.wk-btn-primary:hover { filter: brightness(1.08); }
.wk-btn-secondary { background: var(--wk-surface); color: var(--wk-ink); border-color: var(--wk-line); }
.wk-btn-secondary:hover { border-color: var(--wk-faint); }
.wk-btn-ghost { background: none; color: var(--wk-accent-ink); border-color: transparent; }
.wk-btn-ghost:hover { background: var(--wk-accent-soft); }
.wk-btn-danger-soft { background: var(--wk-bad-soft); color: var(--wk-bad-ink); border-color: var(--wk-bad); }
.wk-btn-danger-soft:hover { background: var(--wk-bad); color: #fff; border-color: var(--wk-bad); }
.wk-btn-ok-soft { background: var(--wk-ok-soft); color: var(--wk-ok-ink); border-color: var(--wk-ok); }
.wk-btn-ok-soft:hover { background: var(--wk-ok); color: #fff; }
.wk-btn:disabled { opacity: .45; cursor: not-allowed; }

/* ---- 卡片 ---- */
.wk-card { background: var(--wk-surface); border: 1px solid var(--wk-line-soft); border-radius: var(--wk-radius); box-shadow: var(--wk-shadow); }
.wk-card-head { padding: 14px 18px; border-bottom: 1px solid var(--wk-line-soft); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wk-card-title { font-size: 14px; font-weight: 700; }
.wk-card-body { padding: 16px 18px; }

/* ---- 金額 / 店代號 ---- */
.num { font-variant-numeric: tabular-nums; text-align: right; font-weight: 600; white-space: nowrap; }
.num.neg { color: var(--wk-bad); }
.wk-store-tag {
  display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .05em;
  font-variant-numeric: tabular-nums; color: var(--wk-accent-ink);
  background: var(--wk-accent-soft); border-radius: 5px; padding: 1px 7px;
}

/* ---- 窄視窗防爆版（照原型 fallback：側欄轉頂列） ---- */
@media (max-width: 900px) {
  .wk-sidebar { position: static; width: auto; flex-direction: row; align-items: center; flex-wrap: wrap; border-right: 0; border-bottom: 1px solid var(--wk-line-soft); }
  .wk-brand { border-bottom: 0; padding: 12px 16px; }
  .wk-store-scope { border-bottom: 0; padding: 8px 12px; flex: 0 0 168px; }
  .wk-store-scope-label { display: none; }
  .wk-nav { flex-direction: row; padding: 8px; overflow-x: auto; }
  .wk-nav-ro { display: none; }
  .wk-side-foot { border-top: 0; margin-left: auto; }
  .wk-side-foot .wk-btn { display: none; }
  .wk-main { margin-left: 0; }
  .wk-toolbar { padding-left: 16px; padding-right: 16px; }
}

/* ---- 按鈕：danger（實心，值同原型 reject 按鈕 inline style: bg/border=--bad） ---- */
.wk-btn-danger { background: var(--wk-bad); color: #fff; border-color: var(--wk-bad); }
.wk-btn-danger:hover { filter: brightness(1.08); }

/* ---- Modal（取代 window.prompt/confirm；值照原型 accountant-desktop.html 的 .modal-* 段） ---- */
.wk-modal-backdrop {
  position: fixed; inset: 0; background: rgba(20,28,40,.45); z-index: 60;
  display: none; align-items: center; justify-content: center; padding: 24px;
}
.wk-modal-backdrop.open { display: flex; }
.wk-modal {
  background: var(--wk-surface); border-radius: 14px; box-shadow: var(--wk-shadow-pop);
  width: 100%; max-width: 440px; border: 1px solid var(--wk-line-soft);
}
.wk-modal-head { padding: 18px 20px 0; display: flex; align-items: flex-start; gap: 10px; }
.wk-modal-title { font-size: 15px; font-weight: 700; flex: 1; }
.wk-modal-x {
  background: none; border: 0; color: var(--wk-faint); font-size: 18px; line-height: 1;
  padding: 2px 6px; border-radius: 5px;
}
.wk-modal-x:hover { background: var(--wk-neutral-soft); color: var(--wk-ink); }
.wk-modal-body { padding: 12px 20px 4px; font-size: 13px; color: var(--wk-muted); }
.wk-input {
  width: 100%; box-sizing: border-box; height: 34px; margin-top: 10px; padding: 0 11px;
  border: 1px solid var(--wk-line); border-radius: var(--wk-radius-sm); background: var(--wk-surface);
  font-size: 13px; color: var(--wk-ink);
}
.wk-input:focus { border-color: var(--wk-accent); box-shadow: 0 0 0 3px var(--wk-accent-soft); outline: none; }
.wk-modal-err { color: var(--wk-bad-ink); font-size: 12px; margin-top: 6px; min-height: 15px; }
.wk-modal-foot { padding: 16px 20px 18px; display: flex; justify-content: flex-end; gap: 8px; }

/* ============================================================
   核銷表（Task 3；會計桌機 pilot 第一個完整視覺驗收點）
   視覺 SoT: docs/superpowers/ui-prototypes/accountant-desktop.html（.tx-table/.doc-cell/.status-cell 段）
   7 欄：勾選/單據(縮圖+摘要+單號·建立者)/店別/分類/金額/燈號+狀態/操作，依營業日分組卡片。
   ============================================================ */

/* ---- 表單控件（篩選列用；小尺寸，跟 .wk-input 共用 class 但工具列情境覆寫寬度/間距） ---- */
.wk-select {
  height: 32px; padding: 0 26px 0 10px; font-size: 13px;
  background: var(--wk-surface); border: 1px solid var(--wk-line); border-radius: var(--wk-radius-sm);
  color: var(--wk-ink); appearance: none;
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238896A8' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 9px center;
  transition: border-color .12s, box-shadow .12s;
}
.wk-select:hover { border-color: var(--wk-faint); }
.wk-select:focus { border-color: var(--wk-accent); box-shadow: 0 0 0 3px var(--wk-accent-soft); outline: none; }
/* .wk-input 原是 modal 專用（width:100%/margin-top:10px），工具列一行排列要收成內容寬、貼齊按鈕 */
.wk-toolbar-row .wk-input, .wk-toolbar-row .wk-select { width: auto; margin-top: 0; }
.wk-toolbar-row .wk-input { height: 32px; }

/* ---- 按鈕：小尺寸（表格列內操作鈕用，避免 32px 高的預設 .wk-btn 撐爆行高） ---- */
.wk-btn-sm { height: 26px; padding: 0 8px; font-size: 12px; font-weight: 500; }

/* ---- 主區 body（sticky 工具列下方的可捲動內容區，對齊原型 .page-body 內距） ---- */
.wk-page-body { padding: 20px 28px 48px; display: flex; flex-direction: column; gap: 18px; }
@media (max-width: 900px) { .wk-page-body { padding-left: 16px; padding-right: 16px; } }

.wk-empty { color: var(--wk-faint); font-size: 13px; padding: 24px; text-align: center; }

/* ---- 依營業日分組卡片 ---- */
.wk-rc-group + .wk-rc-group { margin-top: 14px; }
.wk-rc-dayhead {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 16px; font-size: 13px; font-weight: 700; color: var(--wk-muted);
  letter-spacing: .03em; background: var(--wk-surface-2); border-bottom: 1px solid var(--wk-line-soft);
  border-radius: var(--wk-radius) var(--wk-radius) 0 0;
}
.wk-rc-daysub { font-size: 12px; font-weight: 500; color: var(--wk-muted); display: inline-flex; align-items: center; gap: 6px; }
.wk-rc-daysub .num { font-size: 13px; font-weight: 700; color: var(--wk-ink); }

/* ---- 表格外層可橫捲容器（原型 .table-wrap；一般桌機因 min-width:680px 一頁看完免橫捲） ---- */
.table-wrap { overflow-x: auto; border-radius: 0 0 var(--wk-radius) var(--wk-radius); }

/* ---- 核銷表：separate + border-spacing:0（避免日後加 sticky 表頭踩雷）---- */
.wk-rc-table { width: 100%; min-width: 680px; border-collapse: separate; border-spacing: 0; }
.wk-rc-table th {
  text-align: left; font-size: 12px; font-weight: 600; color: var(--wk-faint);
  padding: 9px 10px; border-bottom: 1px solid var(--wk-line); background: var(--wk-surface);
  white-space: nowrap; letter-spacing: .04em;
}
.wk-rc-table th.num-h { text-align: right; }
.wk-rc-table td {
  padding: 9px 10px; border-bottom: 1px solid var(--wk-line-soft);
  font-size: 13px; vertical-align: middle; background: var(--wk-surface);
}
.wk-rc-table tbody tr:hover td { background: var(--wk-surface-2); }
.wk-rc-table td.wk-rc-sel { width: 36px; }
.wk-rc-table input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--wk-accent); cursor: pointer; }

/* ---- 單據格：縮圖 + 摘要 + 單號·建立者（併欄） ---- */
.wk-doc-cell { display: flex; align-items: flex-start; gap: 9px; min-width: 188px; max-width: 320px; }
.wk-rcp-thumb {
  width: 44px; height: 34px; border-radius: 5px; flex: none; object-fit: cover;
  background: var(--wk-neutral-soft); border: 1px solid var(--wk-line-soft); cursor: zoom-in;
}
.wk-rcp-none {
  display: flex; align-items: center; justify-content: center; width: 44px; height: 34px;
  border-radius: 5px; flex: none; background: var(--wk-neutral-soft); color: var(--wk-faint); font-size: 12px;
}
.wk-doc-meta { min-width: 0; }
.wk-doc-summary { display: block; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wk-doc-sub {
  display: block; font-size: 11px; color: var(--wk-faint); font-variant-numeric: tabular-nums;
  margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ---- 分類 / 金額行內編輯 ---- */
.wk-rc-table select[data-f="category"] { height: 28px; font-size: 12px; min-width: 88px; max-width: 128px; }
.wk-amt-input {
  width: 82px; height: 28px; text-align: right; font-variant-numeric: tabular-nums;
  font-size: 13px; font-weight: 600; padding: 0 8px;
  border: 1px solid var(--wk-accent); border-radius: var(--wk-radius-sm);
  background: var(--wk-surface); box-shadow: 0 0 0 3px var(--wk-accent-soft); color: var(--wk-ink);
}
.wk-amt-input.neg { color: var(--wk-bad); }

/* ---- 燈號 + 狀態（併欄） ---- */
.wk-lamp-cell { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; white-space: nowrap; }
.wk-status {
  display: inline-flex; align-items: center; padding: 2px 9px; border-radius: 999px;
  font-size: 12px; font-weight: 600; line-height: 1.6; white-space: nowrap;
  background: var(--wk-neutral-soft); color: var(--wk-muted);
}
tr[data-status="audited"] .wk-status { background: var(--wk-warn-soft); color: var(--wk-warn-ink); }
tr[data-status="reconciled"] .wk-status { background: var(--wk-ok-soft); color: var(--wk-ok-ink); }
tr[data-status="rejected"] .wk-status { background: var(--wk-bad-soft); color: var(--wk-bad-ink); }

/* ---- 操作欄：table-cell（勿 flex，否則欄寬塌成 1% 且按鈕溢出格外、hover 底色蓋不到）；
   內容寬即可，不搶「單據」欄空間。按鈕靠右並排，rowbtns 內 pd-row-err 換行落下方 ---- */
.wk-rc-table td.rc-rowbtns { display: table-cell; width: 1%; white-space: nowrap; text-align: right; }
.wk-rc-table td.rc-rowbtns .wk-btn { margin-left: 6px; }
.wk-rc-table td.rc-rowbtns .wk-btn:first-child { margin-left: 0; }
/* 挪下期為 ghost（透明底），在一排實心/外框按鈕中易被誤認成純文字；補上外框讓它明顯是按鈕 */
.wk-rc-table td.rc-rowbtns .wk-btn-ghost { border-color: var(--wk-line); }

/* ---- 窄桌機（側欄仍固定 208px，但表格可用寬不足）收斂欄距，免橫捲 ----
   worst-case（可編輯列：金額 input + 分類 select + 三顆操作鈕）表格本徵寬約 792px；
   側欄固定的版位在 ~900–1090px 視窗會擠不下。<900px 走手機版側欄橫排、表格已滿寬，不受此段影響。
   本段共回收約 110px 欄距，讓 ~940px 起免橫捲。 */
@media (min-width: 901px) and (max-width: 1100px) {
  .wk-page-body { padding-left: 18px; padding-right: 18px; }
  .wk-rc-table th, .wk-rc-table td { padding: 8px 6px; }
  .wk-doc-cell { min-width: 156px; }
  .wk-rc-table select[data-f="category"] { min-width: 78px; }
  .wk-amt-input { width: 72px; }
  .wk-rc-table td.rc-rowbtns .wk-btn { margin-left: 4px; }
  .wk-rc-table .wk-btn-sm { padding: 0 6px; }
}

/* ============================================================
   經理工作台元件（UI 重塑 2026-07；super_admin/manager 桌機）
   沿用會計 pilot 的 --wk-* token 與殼；本段只新增經理專屬元件。
   視覺 SoT: docs/superpowers/ui-prototypes/manager-desktop.html
   ============================================================ */
/* 全域選店（側欄頂部；一個動作同時決定 稽核＋月報表） */
.wk-store-scope{ padding:14px 14px 12px; border-bottom:1px solid var(--wk-line-soft); }
.wk-store-scope-label{ display:block; font-size:12px; color:var(--wk-faint); margin-bottom:6px; letter-spacing:.03em; }
.wk-store-scope-sel{ width:100%; height:36px; padding:0 30px 0 12px; appearance:none; -webkit-appearance:none;
  border:1.5px solid var(--wk-accent); border-radius:var(--wk-radius-sm);
  background-color:var(--wk-accent-soft); color:var(--wk-accent-ink);
  font-size:13px; font-weight:700; letter-spacing:.03em; cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%238896A8' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 10px center; }
.wk-store-scope-sel:focus{ box-shadow:0 0 0 3px var(--wk-accent-soft); outline:none; }
/* nav 圖示 + 唯讀標記 */
.wk-nav-ico{ width:18px; height:18px; flex:none; display:inline-block; }
.wk-nav-ico svg{ display:block; width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.wk-nav-ro{ margin-left:auto; font-size:11px; color:var(--wk-faint); letter-spacing:.02em; }
/* 徽章 / pill */
.wk-badge{ display:inline-flex; align-items:center; gap:5px; padding:2px 9px; border-radius:999px;
  font-size:12px; font-weight:600; line-height:1.6; white-space:nowrap; }
.wk-badge-open,.wk-badge-done{ background:var(--wk-ok-soft); color:var(--wk-ok-ink); }
.wk-badge-pending{ background:var(--wk-warn-soft); color:var(--wk-warn-ink); }
.wk-badge-bad{ background:var(--wk-bad-soft); color:var(--wk-bad-ink); }
.wk-badge-neutral,.wk-badge-locked{ background:var(--wk-neutral-soft,#EDF1F7); color:var(--wk-muted); }
.wk-badge-scope{ background:var(--wk-accent-soft); color:var(--wk-accent-ink); font-variant-numeric:tabular-nums; }

/* ---- 月報表交叉表 .wk-xt（Task 2；會計＋經理共用升級，取代舊 .pd-table.mr-table）----
   ⚠️ sticky 首欄必須 border-collapse:separate + border-spacing:0，collapse 會讓 sticky
   欄被裁掉（瀏覽器已知行為）；邊框只靠 border-bottom。值逐字取自原型 manager-desktop.html .xt。 */
.wk-xt{ border-collapse:separate; border-spacing:0; width:100%; min-width:640px; font-size:13px; }
.wk-xt th,.wk-xt td{ padding:10px 14px; text-align:right; border-bottom:1px solid var(--wk-line-soft);
  white-space:nowrap; background:var(--wk-surface); }
.wk-xt thead th{ font-size:12px; font-weight:600; color:var(--wk-faint); letter-spacing:.04em; border-bottom:1px solid var(--wk-line); }
.wk-xt th:first-child,.wk-xt td:first-child{ text-align:left; position:sticky; left:0; z-index:2;
  min-width:168px; box-shadow:var(--wk-sticky-col-shadow, 1px 0 0 0 var(--wk-line)); }
.wk-xt td{ font-variant-numeric:tabular-nums; }
.wk-xt tbody tr:hover td{ background:var(--wk-surface-2); }
.wk-xt .wk-xt-tot{ background:var(--wk-accent-soft); color:var(--wk-accent-ink); font-weight:700; }
.wk-xt tbody tr:hover td.wk-xt-tot{ background:var(--wk-accent-soft); }
.wk-xt tr.mr-total-row td{ font-weight:700; border-top:2px solid var(--wk-line); border-bottom:0; }
.wk-xt tr.mr-child-row td{ background:var(--wk-surface-2); color:var(--wk-muted); font-size:12px; font-weight:400; }
.wk-xt tr.mr-child-row td:first-child{ padding-left:38px; background:var(--wk-surface-2); }
.wk-cat-toggle{ background:none; border:0; padding:0; display:inline-flex; align-items:center; gap:7px;
  font-size:13px; font-weight:600; color:var(--wk-ink); }
.wk-tri{ width:0; height:0; border-left:5px solid var(--wk-faint); border-top:4px solid transparent;
  border-bottom:4px solid transparent; transition:transform .12s; flex:none; }
.wk-cat-toggle[aria-expanded="true"] .wk-tri{ transform:rotate(90deg); }
.wk-cat-plain{ padding-left:12px; }
.wk-xt.wk-xt-one{ min-width:420px; max-width:560px; }

/* ---- 工具列/報表小元件（Task 2；原型對應 .period-title/.spacer/.filter-label/.report-note）---- */
.wk-toolbar-title{ font-size:17px; font-weight:700; }
.wk-spacer{ flex:1; }
.wk-filter-label{ font-size:12px; color:var(--wk-faint); }
.wk-report-note{ font-size:12px; color:var(--wk-faint); padding:10px 18px 14px; }

/* ---- 月結設定唯讀 view（Task 3；經理端 .wk-ro-*；值逐字取自原型 .ro-banner/.ro-card/.grid-2/.kv-row）---- */
.wk-ro-banner{ display:flex; align-items:center; gap:10px; background:var(--wk-neutral-soft,#EDF1F7);
  border:1px solid var(--wk-line-soft); border-radius:var(--wk-radius); padding:12px 16px; font-size:13px; color:var(--wk-muted); }
.wk-ro-banner b{ color:var(--wk-ink); }
.wk-ro-card{ background:var(--wk-surface-2); }
.wk-grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; }
@media (max-width:1100px){ .wk-grid-2{ grid-template-columns:1fr; } }
.wk-kv-row{ display:flex; justify-content:space-between; gap:16px; padding:9px 0;
  border-bottom:1px dashed var(--wk-line-soft); font-size:13px; }
.wk-kv-row:last-child{ border-bottom:0; }
.wk-kv-row .k{ color:var(--wk-muted); }
.wk-kv-row .v{ font-weight:600; font-variant-numeric:tabular-nums; text-align:right; }

/* ---- 店別管理 view（Task 4；經理端 .wk-store-table 等；值逐字取自原型 .store-table/.sc-code/.chk-inline/.add-row/.legend-hint）---- */
.wk-store-table{ border-collapse:separate; border-spacing:0; width:100%; min-width:720px; }
.wk-store-table th{
  text-align:left; font-size:12px; font-weight:600; color:var(--wk-faint);
  padding:9px 14px; border-bottom:1px solid var(--wk-line); white-space:nowrap; letter-spacing:.04em;
  background:var(--wk-surface); }
.wk-store-table td{
  padding:11px 14px; border-bottom:1px solid var(--wk-line-soft);
  font-size:13px; vertical-align:middle; background:var(--wk-surface); }
.wk-store-table tbody tr:hover td{ background:var(--wk-surface-2); }
.wk-store-table tr:last-child td{ border-bottom:0; }
.wk-sc-code{
  font-size:15px; font-weight:700; letter-spacing:.06em; font-variant-numeric:tabular-nums;
  background:var(--wk-accent-soft); color:var(--wk-accent-ink);
  border-radius:var(--wk-radius-sm); padding:4px 12px; display:inline-block; }
.wk-chk-inline{ display:inline-flex; align-items:center; gap:8px; font-size:13px; cursor:pointer; user-select:none; }
.wk-chk-inline .wk-chk-note{ font-size:12px; color:var(--wk-faint); }
.wk-add-row{ display:flex; gap:8px; align-items:center; max-width:420px; }
.wk-add-row .wk-input{ flex:1; text-transform:uppercase; letter-spacing:.08em; font-weight:700; }
.wk-add-row .wk-input::placeholder{ text-transform:none; letter-spacing:0; font-weight:400; color:var(--wk-faint); }
.wk-legend-hint{ font-size:12.5px; color:var(--wk-muted); line-height:1.8; }
.wk-legend-hint b{ color:var(--wk-ink); }
.wk-store-ip-cell{ min-width:260px; }
.wk-store-ip-cur{ font-size:12.5px; color:var(--wk-muted); margin-bottom:6px; font-variant-numeric:tabular-nums; }
.wk-store-ip-edit{ display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.wk-store-ip-edit .wk-store-ip-input{ width:180px; }

/* ---- 稽核 view（Task 5）----
   經理端（唯讀）：值逐字取自原型 manager-desktop.html:308-348（.audit-table/.day-head/.doc-cell/
   .lamp/.dot*/.chip/.empty-tip/.empty-stores/.audit-back-bar），wk- 前綴、var(--x)→var(--wk-x)。
   主管端（可操作，待稽核/總表）沿用同一份 .wk-audit-table，機械 class swap（原 .pd-table）。 */
.wk-audit-table{ border-collapse:separate; border-spacing:0; width:100%; min-width:760px; }
.wk-audit-table th{
  text-align:left; font-size:12px; font-weight:600; color:var(--wk-faint);
  padding:9px 12px; border-bottom:1px solid var(--wk-line); white-space:nowrap; letter-spacing:.04em;
  background:var(--wk-surface); }
.wk-audit-table th.num-h{ text-align:right; }
.wk-audit-table td{
  padding:9px 12px; border-bottom:1px solid var(--wk-line-soft);
  font-size:13px; vertical-align:middle; background:var(--wk-surface); }
.wk-audit-table tbody tr:hover td{ background:var(--wk-surface-2); }
.wk-audit-table tr.wk-day-head td{
  background:var(--wk-ground); color:var(--wk-muted); font-size:12px; font-weight:700;
  letter-spacing:.05em; padding:8px 12px; }
.wk-audit-table tr.wk-day-head:hover td{ background:var(--wk-ground); }
/* 表格內行內編輯（主管待稽核用）：.wk-input 原是 modal 專用（width:100%/margin-top:10px），
   表格列內要收成內容寬、貼齊欄位，按 data-f 各給合宜寬度。 */
.wk-audit-table .wk-input{ width:auto; height:28px; margin-top:0; padding:0 8px; font-size:13px; }
.wk-audit-table input[data-f="amount"].wk-input{ width:84px; text-align:right; font-variant-numeric:tabular-nums; }
.wk-audit-table input[data-f="note"].wk-input{ width:150px; }
/* 稽核列的單據格：縮圖＋摘要＋單號·建立者·時間（＋備註），比核銷表 .wk-doc-cell 稍寬 */
.wk-audit-doc{ min-width:220px; max-width:340px; }
.wk-doc-note{ display:block; font-size:12px; color:var(--wk-faint); margin-top:3px; white-space:normal; }
.wk-chip{ font-size:11px; padding:2px 8px; border-radius:999px; background:var(--wk-neutral-soft); color:var(--wk-muted); white-space:nowrap; }
.wk-lamp{ display:inline-flex; align-items:center; gap:6px; font-size:12px; white-space:nowrap; }
.wk-dot{ width:9px; height:9px; border-radius:50%; flex:none; }
.wk-dot-g{ background:var(--wk-ok); box-shadow:0 0 0 3px var(--wk-ok-soft); }
.wk-dot-y{ background:var(--wk-warn); box-shadow:0 0 0 3px var(--wk-warn-soft); }
.wk-empty-tip{
  text-align:center; padding:52px 24px; color:var(--wk-muted); font-size:14px;
  background:var(--wk-surface); border:1px dashed var(--wk-line); border-radius:var(--wk-radius); }
.wk-empty-tip b{ color:var(--wk-accent-ink); }
.wk-empty-stores{ display:flex; gap:8px; justify-content:center; margin-top:14px; flex-wrap:wrap; }
.wk-audit-back-bar{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.wk-msg{ font-size:13px; margin-top:8px; color:var(--wk-muted); }

/* ---- 帳號 / 裝置 / 操作記錄 view（Task 6；純外觀 class swap 自舊 .ap-*/.pd-*）----
   .wk-table：多欄清單通用表格，樣式精神同 .wk-store-table/.wk-audit-table 但不設 min-width（各頁欄數不一）。 */
.wk-table{ border-collapse:separate; border-spacing:0; width:100%; }
.wk-table th{
  text-align:left; font-size:12px; font-weight:600; color:var(--wk-faint);
  padding:9px 12px; border-bottom:1px solid var(--wk-line); white-space:nowrap; letter-spacing:.04em;
  background:var(--wk-surface); }
.wk-table td{
  padding:9px 12px; border-bottom:1px solid var(--wk-line-soft);
  font-size:13px; vertical-align:middle; background:var(--wk-surface); }
.wk-table tbody tr:hover td{ background:var(--wk-surface-2); }
.wk-table tr:last-child td{ border-bottom:0; }
.wk-table select{ font-size:13px; padding:4px 6px; }
.wk-rowbtns{ display:flex; gap:6px; flex-wrap:wrap; }
/* 我的密碼（值逐字取自原型 manager-desktop.html:388-392） */
.wk-pw-card{ max-width:420px; }
.wk-pw-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:14px; }
.wk-pw-field label{ font-size:13px; font-weight:600; }
.wk-pw-field .help{ font-size:12px; color:var(--wk-faint); }
.wk-pw-input{ width:160px; letter-spacing:.4em; font-variant-numeric:tabular-nums; text-align:center; }

/* ============================================================
   手機設計層（UI 重塑 2026-07；員工/主管/經理手機共用基底）
   沿用既有 --wk-* token；本段新增手機殼/抬頭/tab/卡片/取景框等 .mb-* 元件。
   視覺 SoT: docs/superpowers/ui-prototypes/employee-mobile.html
   ============================================================ */
:root{
  --mb-stage:#E3E8F0; --mb-cam:#232B36; --mb-cam-2:#2C3542;
  --mb-thumb-a:#E1E7F0; --mb-thumb-b:#CFD8E5;
  --mb-shadow:0 18px 44px rgba(28,39,51,.18);
}
:root[data-theme="dark"]{ --mb-stage:#0C0F14; --mb-cam:#0E1319; --mb-cam-2:#1A222D;
  --mb-thumb-a:#252E3B; --mb-thumb-b:#1E2632; --mb-shadow:0 18px 44px rgba(0,0,0,.5); }
@media (prefers-color-scheme: dark){ :root{ --mb-stage:#0C0F14; --mb-cam:#0E1319; --mb-cam-2:#1A222D;
  --mb-thumb-a:#252E3B; --mb-thumb-b:#1E2632; --mb-shadow:0 18px 44px rgba(0,0,0,.5); } }
/* 殼：滿版（非原型的 phone 外框——那只是原型展示用）。#modal-root 掛載。 */
.mb-app{ position:fixed; inset:0; z-index:50; display:flex; flex-direction:column; line-height:1.45;
  background:var(--wk-ground); color:var(--wk-ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Segoe UI","Microsoft JhengHei",sans-serif; }
/* 平板/寬視窗：把手機殼框在 760px 置中（對齊原型 manager-audit / employee-mobile 的
   @media(min-width:768px)：手機滿版、平板以上收成置中的 app 欄）。<768px 維持滿版不變。
   兩側鋪中性 backdrop（--mb-stage），避免露出底層計算機頁。 */
@media (min-width:768px){
  .mb-app{ max-width:760px; margin-inline:auto;
    border-inline:1px solid var(--wk-line); box-shadow:0 0 48px rgba(20,30,45,.16); }
  .mb-app::before{ content:""; position:fixed; inset:0; z-index:-1; background:var(--mb-stage); }
}
.mb-appbar{ flex:none; display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:12px 14px 10px; background:var(--wk-surface); border-bottom:1px solid var(--wk-line); }
.mb-who{ display:flex; align-items:center; gap:9px; min-width:0; }
.mb-store-badge{ flex:none; display:inline-flex; align-items:center; justify-content:center;
  width:32px; height:32px; border-radius:9px; background:var(--wk-accent-soft); color:var(--wk-accent-ink);
  font-weight:700; font-size:13px; letter-spacing:.05em; }
.mb-who .mb-name{ font-weight:600; font-size:15px; }
.mb-who .mb-sub{ font-size:11px; color:var(--wk-faint); display:block; margin-top:1px; }
.mb-appbar-actions{ display:flex; gap:6px; }
.mb-icon-btn{ width:44px; height:44px; border:1px solid var(--wk-line); background:var(--wk-surface-2);
  border-radius:var(--wk-radius-sm); display:inline-flex; align-items:center; justify-content:center; color:var(--wk-muted); }
.mb-orient{ flex:none; display:flex; background:var(--wk-surface-2); border:1px solid var(--wk-line);
  border-radius:999px; padding:2px; gap:2px; }
.mb-orient button{ min-height:40px; padding:0 11px; border:none; border-radius:999px; background:none;
  color:var(--wk-muted); font-size:12.5px; font-weight:600; }
.mb-orient button[aria-pressed="true"]{ background:var(--wk-accent); color:#fff; }
.mb-content{ flex:1; overflow-y:auto; overflow-x:hidden; position:relative; overscroll-behavior:contain; }
.mb-pane{ display:none; padding:14px 14px 20px; }
.mb-pane.active{ display:block; }
.mb-pane-title{ font-size:16px; font-weight:700; margin:2px 2px 4px; }
.mb-pane-sub{ font-size:12px; color:var(--wk-muted); margin:0 2px 12px; }
.mb-tabbar{ flex:none; display:flex; background:var(--wk-surface); border-top:1px solid var(--wk-line);
  padding:6px 8px calc(8px + env(safe-area-inset-bottom,6px)); }
.mb-tab{ flex:1; min-height:52px; border:none; background:none; border-radius:var(--wk-radius-sm);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  color:var(--wk-faint); font-size:11.5px; font-weight:600; position:relative; }
.mb-tab svg{ width:23px; height:23px; }
.mb-tab.active{ color:var(--wk-accent); background:var(--wk-accent-soft); }
.mb-badge{ position:absolute; top:4px; left:calc(50% + 8px); min-width:18px; height:18px; padding:0 5px;
  border-radius:999px; background:var(--wk-bad); color:#fff; font-size:11px; display:flex; align-items:center;
  justify-content:center; font-variant-numeric:tabular-nums; }
.mb-badge.zero{ display:none; }
.mb-btn{ min-height:44px; padding:0 16px; border-radius:var(--wk-radius-sm); border:1px solid var(--wk-line);
  background:var(--wk-surface); font-size:14.5px; font-weight:600; color:var(--wk-ink);
  display:inline-flex; align-items:center; justify-content:center; gap:6px; }
.mb-btn-primary{ background:var(--wk-accent); border-color:var(--wk-accent); color:#fff; }
.mb-btn-danger{ color:var(--wk-bad-ink); border-color:var(--wk-line); background:var(--wk-surface); }
.mb-btn-ghost{ background:var(--wk-surface-2); color:var(--wk-muted); font-weight:500; }
.mb-btn-sm{ font-size:13.5px; padding:0 13px; }
.mb-amt{ font-variant-numeric:tabular-nums; } .mb-amt.neg{ color:var(--wk-bad); }
.mb-toast{ position:fixed; left:50%; bottom:86px; transform:translateX(-50%) translateY(8px);
  background:var(--wk-ink); color:var(--wk-ground); font-size:13px; padding:9px 16px; border-radius:999px;
  opacity:0; pointer-events:none; white-space:nowrap; transition:opacity .25s,transform .25s; z-index:90;
  max-width:88%; overflow:hidden; text-overflow:ellipsis; }
.mb-toast.show{ opacity:.96; transform:translateX(-50%) translateY(0); }

/* ---- 拍單 pane：取景框 / 快門 / cam-dock / 上傳（Task 2；值照原型 employee-mobile.html:111-158） ---- */
#mb-pane-shoot.active{ padding:0; display:flex; flex-direction:column; height:100%; }
.mb-viewfinder{ flex:1; position:relative; isolation:isolate; background:
  radial-gradient(120% 90% at 50% 30%, var(--mb-cam-2), var(--mb-cam) 70%);
  display:flex; align-items:center; justify-content:center; min-height:220px; overflow:hidden; }
  /* isolation:isolate 讓 #mb-cap-video 的 z-index:-1 關在本容器 stacking context 內，
     畫在漸層背景之上（可見）、取景框/提示之下；否則負 z-index 會掉到祖父層被背景蓋住(鏡頭看不到)。 */
.mb-vf-frame{ width:68%; aspect-ratio:3/4; max-height:64%; position:relative; }
.mb-vf-frame::before,.mb-vf-frame::after,
.mb-vf-frame b::before,.mb-vf-frame b::after{ content:""; position:absolute; width:26px; height:26px;
  border:3px solid rgba(255,255,255,.85); }
.mb-vf-frame::before{ top:0; left:0; border-right:0; border-bottom:0; border-radius:6px 0 0 0; }
.mb-vf-frame::after{ top:0; right:0; border-left:0; border-bottom:0; border-radius:0 6px 0 0; }
.mb-vf-frame b::before{ bottom:0; left:0; border-right:0; border-top:0; border-radius:0 0 0 6px; }
.mb-vf-frame b::after{ bottom:0; right:0; border-left:0; border-top:0; border-radius:0 0 6px 0; }
.mb-vf-hint{ position:absolute; left:0; right:0; bottom:14px; text-align:center;
  color:rgba(255,255,255,.75); font-size:12.5px; letter-spacing:.04em; }
.mb-vf-flash{ position:absolute; inset:0; background:#fff; opacity:0; pointer-events:none; }
.mb-vf-flash.on{ animation:mbFlash .28s ease-out; }
@keyframes mbFlash{ 0%{ opacity:.85; } 100%{ opacity:0; } }
.mb-shot-count{ position:absolute; top:12px; left:12px; background:rgba(0,0,0,.55);
  color:#fff; font-size:12.5px; padding:6px 11px; border-radius:999px;
  font-variant-numeric:tabular-nums; z-index:1; }
.mb-cam-dock{ flex:none; background:var(--wk-surface); border-top:1px solid var(--wk-line);
  padding:14px 18px 16px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.mb-shutter{ width:74px; height:74px; border-radius:50%; border:none; flex:none;
  background:var(--wk-accent); position:relative; box-shadow:0 6px 18px rgba(46,107,230,.35); }
.mb-shutter::after{ content:""; position:absolute; inset:5px; border-radius:50%;
  border:3px solid var(--wk-surface); background:var(--wk-accent); }
.mb-shutter:active{ transform:scale(.94); }
.mb-cam-side{ flex:1; display:flex; flex-direction:column; gap:8px; }
.mb-cam-side .mb-btn{ width:100%; }
.mb-upload-panel{ flex:none; background:var(--wk-surface); border-top:1px solid var(--wk-line);
  padding:18px 16px 22px; display:none; flex-direction:column; gap:12px; text-align:center; }
.mb-upload-panel.show{ display:flex; }
.mb-upl-line{ font-size:14px; color:var(--wk-muted); }
.mb-upl-bar{ height:6px; border-radius:999px; background:var(--wk-surface-2);
  border:1px solid var(--wk-line); overflow:hidden; }
.mb-upl-bar i{ display:block; height:100%; width:0; background:var(--wk-accent);
  border-radius:999px; transition:width .5s ease; }
.mb-upl-done{ display:none; flex-direction:column; gap:12px; align-items:center; }
.mb-upl-done.show{ display:flex; }
.mb-upl-done .big{ font-size:15px; font-weight:600; }
.mb-upl-done .ok-chip{ display:inline-flex; align-items:center; gap:6px; background:var(--wk-ok-soft);
  color:var(--wk-ok-ink); border-radius:999px; padding:7px 14px; font-size:13px; }

/* ============================================================
   橫式模式：tab bar → 左側直向 rail（三個 tab 全高常駐，不可 display:none）；
   拍單相機填滿、快門靠右垂直置中。值照原型 employee-mobile.html:330-364。
   ============================================================ */
.mb-app.land .mb-tabbar{ position:absolute; left:0; top:0; bottom:0; width:76px;
  flex-direction:column; justify-content:flex-start; gap:6px;
  border-top:none; border-right:1px solid var(--wk-line);
  padding:10px 7px calc(10px + env(safe-area-inset-bottom,0px)); z-index:5; }
.mb-app.land .mb-tab{ flex:0 0 auto; min-height:60px; font-size:11px; }
.mb-app.land .mb-appbar{ margin-left:76px; }
.mb-app.land .mb-content{ margin-left:76px; }
.mb-app.land #mb-pane-shoot{ padding:0; position:relative; }
.mb-app.land .mb-viewfinder{ position:absolute; inset:0; }
.mb-app.land .mb-vf-frame{ width:auto; height:70%; aspect-ratio:4/3; max-height:none; }
.mb-app.land .mb-vf-hint{ bottom:16px; left:16px; right:auto; text-align:left; max-width:56%; }
.mb-app.land .mb-cam-dock{ position:absolute; right:18px; top:0; bottom:0; left:auto;
  width:auto; background:none; border:none; padding:0;
  flex-direction:column; justify-content:center; gap:14px; z-index:2; }
.mb-app.land .mb-cam-side{ width:112px; flex:0 0 auto; }
.mb-app.land .mb-cam-side .mb-btn{ width:100%;
  background:rgba(0,0,0,.5); border-color:rgba(255,255,255,.28); color:#fff;
  backdrop-filter:blur(4px); }
.mb-app.land .mb-cam-side .mb-btn-primary{ background:var(--wk-accent); border-color:var(--wk-accent); }
.mb-app.land .mb-shot-count{ top:14px; left:14px; }
.mb-app.land .mb-upload-panel.show{ position:absolute; inset:0; left:auto; margin:auto;
  height:max-content; max-width:340px; border:1px solid var(--wk-line);
  border-radius:var(--wk-radius); box-shadow:var(--mb-shadow); z-index:4; }

/* ---------- Task 3：確認區卡片（值照原型 employee-mobile.html:172-279，加 mb- 前綴 + --wk- token） ---------- */
.mb-toolbar{ display:flex; gap:8px; margin-bottom:12px; }
.mb-toolbar .mb-btn{ flex:1; }
.mb-toolbar .mb-btn.refresh{ flex:0 0 auto; width:52px; padding:0; font-size:17px; color:var(--wk-muted); }

.mb-cardlist{ display:flex; flex-direction:column; gap:12px; }
.mb-card{ background:var(--wk-surface); border:1px solid var(--wk-line); border-radius:var(--wk-radius);
  padding:12px; display:flex; flex-direction:column; gap:10px; }
.mb-card-head{ display:flex; gap:10px; align-items:flex-start; }

/* 收據縮圖：真 <img thumb_url>（非原型假收據 CSS），無圖時退回佔位塊 */
.mb-thumb{ flex:none; width:52px; height:64px; border-radius:var(--wk-radius-sm); position:relative;
  padding:0; border:1px solid var(--wk-line); overflow:hidden; background:var(--wk-surface-2);
  display:block; cursor:zoom-in; }
.mb-thumb img{ display:block; width:100%; height:100%; object-fit:cover; }
.mb-thumb:hover{ border-color:var(--wk-faint); }
.mb-thumb.placeholder{ cursor:default; background:linear-gradient(160deg,var(--mb-thumb-a),var(--mb-thumb-b));
  display:flex; align-items:center; justify-content:center; color:var(--wk-faint); font-size:17px; }
.mb-zoom-badge{ position:absolute; right:2px; bottom:2px; width:16px; height:16px; border-radius:5px;
  background:rgba(20,28,38,.72); color:#fff; display:flex; align-items:center; justify-content:center; font-size:9px; }

.mb-dot{ position:absolute; top:-4px; right:-4px; width:12px; height:12px; border-radius:50%;
  border:2px solid var(--wk-surface); }
.mb-dot-ok{ background:var(--wk-ok); } .mb-dot-warn{ background:var(--wk-warn); } .mb-dot-bad{ background:var(--wk-bad); }
.mb-thumb-wrap{ position:relative; flex:none; }
.mb-card-meta{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.mb-card-time{ font-size:11.5px; color:var(--wk-faint); }
.mb-card-id{ font-size:11.5px; color:var(--wk-faint); letter-spacing:.03em; }

.mb-field{ display:flex; flex-direction:column; gap:4px; }
.mb-field label{ font-size:11px; color:var(--wk-faint); letter-spacing:.08em; }
.mb-field input, .mb-field select{ min-height:44px; border:1px solid var(--wk-line);
  border-radius:var(--wk-radius-sm); background:var(--wk-surface-2); padding:0 11px; font-size:14.5px;
  width:100%; color:var(--wk-ink); }
.mb-field input::placeholder{ color:var(--wk-faint); }
.mb-field input:focus, .mb-field select:focus{ outline:2px solid var(--wk-accent); outline-offset:0;
  border-color:var(--wk-accent); }
.mb-field-row{ display:flex; gap:8px; }
.mb-field-row .mb-field{ flex:1; min-width:0; }
.mb-field-row .mb-field.mb-f-amt{ flex:0 0 118px; }
.mb-f-amt input{ text-align:right; font-variant-numeric:tabular-nums; font-weight:600; }
.mb-card-actions{ display:flex; gap:8px; margin-top:2px; }
.mb-card-actions .mb-btn{ flex:1; }

.mb-status-strip{ display:flex; align-items:center; gap:8px; border-radius:var(--wk-radius-sm);
  padding:10px 12px; font-size:13.5px; }
.mb-status-strip.pending{ background:var(--wk-surface-2); color:var(--wk-muted); border:1px dashed var(--wk-line); }
.mb-status-strip.fail{ background:var(--wk-warn-soft); color:var(--wk-warn-ink); }
.mb-skeleton{ display:flex; flex-direction:column; gap:8px; margin-top:2px; }
.mb-skeleton i{ display:block; height:12px; border-radius:6px; background:var(--wk-surface-2);
  border:1px solid var(--wk-line); }
.mb-skeleton i:nth-child(1){ width:62%; } .mb-skeleton i:nth-child(2){ width:40%; }
@media (prefers-reduced-motion: no-preference){
  .mb-dot-warn.pulse{ animation:mbPulse 1.6s ease-in-out infinite; }
  @keyframes mbPulse{ 50%{ opacity:.35; } }
}
.mb-card.sent{ opacity:.72; }
.mb-sent-chip{ display:inline-flex; align-items:center; gap:6px; align-self:flex-start;
  background:var(--wk-ok-soft); color:var(--wk-ok-ink); border-radius:999px;
  padding:7px 13px; font-size:13px; font-weight:600; }

.mb-empty-state{ display:none; text-align:center; color:var(--wk-faint); font-size:14px;
  padding:52px 12px; border:1px dashed var(--wk-line); border-radius:var(--wk-radius); }

/* 無單據建帳表單卡：accent 邊框 + accent-soft 光暈（原型 #manualCard :270-274） */
.mb-manual-card{ border-color:var(--wk-accent); box-shadow:0 0 0 3px var(--wk-accent-soft); }
.mb-manual-card h3{ margin:0; font-size:14.5px; }

/* ---------- Task 5：複查唯讀卡 + 合計 bar（值照原型 employee-mobile.html:281-296，加 mb- 前綴 + --wk- token） ---------- */
.mb-ro-card{ gap:8px; }
.mb-ro-line{ display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.mb-ro-line .k{ font-size:12px; color:var(--wk-faint); }
.mb-ro-line .v{ font-size:13.5px; color:var(--wk-ink); text-align:right; min-width:0; }
.mb-ro-summary{ font-size:14.5px; font-weight:600; line-height:1.35; }
.mb-chip{ display:inline-flex; align-items:center; border-radius:999px; padding:3px 10px;
  font-size:11.5px; background:var(--wk-accent-soft); color:var(--wk-accent-ink); }
.mb-ro-amt{ font-size:17px; font-weight:700; text-align:right; font-variant-numeric:tabular-nums; }
.mb-total-bar{ position:sticky; bottom:0; margin-top:12px; background:var(--wk-surface);
  border:1px solid var(--wk-line); border-radius:var(--wk-radius); padding:13px 14px;
  display:flex; justify-content:space-between; align-items:center;
  box-shadow:0 -8px 18px rgba(28,39,51,.06); }
.mb-total-bar .lbl{ font-size:13.5px; color:var(--wk-muted); }
.mb-total-bar .sum{ font-size:19px; font-weight:800; color:var(--wk-ok-ink);
  font-variant-numeric:tabular-nums; }

/* ============================================================
   手機設計層－主管稽核（UI 重塑 2026-07；manager 手機/平板）
   沿用員工手機段落的 .mb-app/.mb-appbar/.mb-content/.mb-pane/.mb-toast 基底。
   本段新增主管專屬：可橫捲主分頁 / segmented 子分頁 / 稽核卡 / 常駐 action bar /
   唯讀班別卡 / 佔位卡。視覺 SoT: docs/superpowers/ui-prototypes/manager-audit.html
   ============================================================ */
/* 可橫捲主分頁（原型 .tabs/.tab；置於 .mb-appbar 下方） */
.mb-toptabs{ flex:none; display:flex; gap:2px; padding:0 8px; background:var(--wk-surface);
  border-bottom:1px solid var(--wk-line); overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.mb-toptabs::-webkit-scrollbar{ display:none; }
.mb-toptab{ flex:none; min-height:46px; padding:0 14px; border:0; background:none;
  color:var(--wk-muted); font-weight:600; font-size:15.5px; white-space:nowrap;
  border-bottom:2.5px solid transparent; margin-bottom:-1px; position:relative; }
.mb-toptab.active{ color:var(--wk-accent-ink); border-bottom-color:var(--wk-accent); }
/* segmented 子分頁（原型 .subtabs/.subtab；稽核用 待稽核/總表） */
.mb-subtabs{ display:flex; gap:4px; padding:4px; margin-bottom:12px;
  background:var(--wk-surface-2); border:1px solid var(--wk-line); border-radius:var(--wk-radius); }
.mb-subtab{ flex:1; min-height:40px; border:0; border-radius:var(--wk-radius-sm); background:none;
  font-weight:600; font-size:15px; color:var(--wk-muted); }
.mb-subtab.active{ background:var(--wk-surface); color:var(--wk-accent-ink); box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08)); }
/* 常駐底部 action bar（原型 .actionbar/.ab-*；僅稽核分頁顯示） */
.mb-actionbar{ flex:none; background:var(--wk-surface); border-top:1px solid var(--wk-line);
  padding:9px 12px calc(10px + env(safe-area-inset-bottom,0px)); box-shadow:0 -4px 16px rgba(20,30,45,.08); }
.mb-actionbar[hidden]{ display:none; }
.mb-ab-sub{ display:flex; justify-content:space-between; align-items:baseline;
  font-size:13.5px; color:var(--wk-muted); padding:0 2px 8px; }
.mb-ab-sub b{ font-size:16px; color:var(--wk-ink); font-variant-numeric:tabular-nums; }
.mb-ab-btns{ display:flex; gap:8px; }
.mb-ab-btn{ flex:1; min-height:48px; border-radius:var(--wk-radius-sm); border:1px solid transparent;
  font-weight:700; font-size:15.5px; }
.mb-ab-primary{ background:var(--wk-accent); color:#fff; border-color:var(--wk-accent); }
.mb-ab-secondary{ background:var(--wk-accent-soft); color:var(--wk-accent-ink);
  border-color:color-mix(in srgb, var(--wk-accent) 30%, transparent); }
.mb-ab-err{ display:block; font-size:12.5px; color:var(--wk-bad); padding:6px 2px 0; min-height:1em; }
/* 佔位卡（Task 5 前，帳號/裝置/操作記錄/我的密碼 pane 暫時空殼用） */
.mb-ph-card{ background:var(--wk-surface); border:1px solid var(--wk-line); border-radius:var(--wk-radius);
  box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08)); padding:14px; margin-bottom:12px; }
.mb-ph-card h3{ margin:0 0 10px; font-size:14.5px; }

/* 稽核卡（待稽核，Task 2）：原型 manager-audit.html .card 家族，mb-au- 前綴 */
.mb-day-head{ display:flex; justify-content:space-between; align-items:baseline; padding:2px 4px 8px; margin-top:6px; }
.mb-day-head .d{ font-weight:700; font-size:15px; color:var(--wk-muted); }
.mb-day-head .sum{ font-size:13.5px; color:var(--wk-faint); } .mb-day-head .sum b{ color:var(--wk-ink); font-weight:700; }
.mb-overdue{ display:flex; gap:10px; align-items:flex-start; background:var(--wk-warn-soft);
  border:1px solid color-mix(in srgb, var(--wk-warn) 35%, transparent); color:var(--wk-warn-ink);
  border-radius:var(--wk-radius); padding:11px 13px; margin-bottom:14px; font-size:14px; font-weight:600; }
.mb-au-card{ background:var(--wk-surface); border:1px solid var(--wk-line); border-radius:var(--wk-radius);
  box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08)); padding:12px; display:flex; flex-direction:column; gap:10px; margin-bottom:12px; }
.mb-au-top{ display:flex; gap:10px; align-items:flex-start; }
.mb-au-thumb{ width:56px; height:56px; flex:none; border-radius:var(--wk-radius-sm); object-fit:cover;
  border:1px solid var(--wk-line); cursor:zoom-in; background:var(--wk-surface-2); }
.mb-au-thumb.none{ display:flex; align-items:center; justify-content:center; color:var(--wk-faint); font-size:12px; }
.mb-au-meta{ flex:1; min-width:0; }
.mb-au-docno{ font-weight:700; font-size:15.5px; letter-spacing:.2px; font-variant-numeric:tabular-nums; }
.mb-au-byline{ font-size:13px; color:var(--wk-faint); margin-top:2px; }
.mb-au-summary{ font-size:15.5px; color:var(--wk-ink); }
.mb-au-flag{ display:flex; gap:8px; align-items:flex-start; font-size:13.5px; font-weight:600;
  background:var(--wk-bad-soft); color:var(--wk-bad-ink);
  border:1px solid color-mix(in srgb, var(--wk-bad) 30%, transparent); border-radius:var(--wk-radius-sm); padding:8px 10px; }
.mb-au-fields{ display:grid; grid-template-columns:1fr 116px; gap:8px; }
.mb-au-field{ display:flex; flex-direction:column; gap:4px; min-width:0; }
.mb-au-field.full{ grid-column:1 / -1; }
.mb-au-field label{ font-size:13px; color:var(--wk-faint); }
.mb-au-field select,.mb-au-field input{ min-height:44px; width:100%; border:1px solid var(--wk-line);
  border-radius:var(--wk-radius-sm); background:var(--wk-surface-2); padding:0 10px; font-size:16px; color:var(--wk-ink); }
.mb-au-field input.amt{ text-align:right; font-variant-numeric:tabular-nums; font-weight:700; }
/* 經理唯讀稽核卡：分類/金額/備註以純文字顯示（取代 select/input），高度與可編輯版對齊。 */
.mb-au-field .mb-au-ro-val{ min-height:44px; display:flex; align-items:center; font-size:16px; color:var(--wk-ink); word-break:break-word; }
.mb-au-field .mb-au-ro-val.num{ justify-content:flex-end; text-align:right; font-variant-numeric:tabular-nums; font-weight:700; }
.mb-au-check{ min-height:48px; border:0; border-radius:var(--wk-radius-sm); background:var(--wk-accent);
  color:#fff; font-weight:700; font-size:16.5px; }
.mb-au-hist-toggle{ align-self:flex-start; min-height:40px; padding:0 4px; border:0; background:none;
  color:var(--wk-accent-ink); font-size:14px; font-weight:600; }
.mb-au-hist{ border-top:1px dashed var(--wk-line); padding-top:9px; font-size:13px; color:var(--wk-muted); }
.mb-au-hist[hidden]{ display:none; }
.mb-au-err{ font-size:12.5px; color:var(--wk-bad); min-height:1em; }
.mb-au-lastmod{ font-size:12.5px; color:var(--wk-warn-ink); }

/* chip 家族（原型 .chip/.chip-ok/.chip-warn/.chip-bad/.chip-line；桌面稽核未建，Task 2「主管改」
   徽章與 Task 3 分類/狀態徽章共用，此處一併補齊） */
.chip{ display:inline-flex; align-items:center; padding:2px 8px; border-radius:999px;
  font-size:12px; font-weight:700; line-height:1.5; }
.chip-warn{ background:var(--wk-warn-soft); color:var(--wk-warn-ink); }
.chip-ok{ background:var(--wk-ok-soft); color:var(--wk-ok-ink); }
.chip-bad{ background:var(--wk-bad-soft); color:var(--wk-bad-ink); }
.chip-line{ background:var(--wk-surface-2); color:var(--wk-muted); border:1px solid var(--wk-line); }

/* 總表查詢唯讀班別卡（Task 3）：原型 manager-audit.html .shift-head/.rcard 家族，mb-/mb-ro- 前綴。
   .mb-ro-card/.mb-ro-amt 於 Task 5（複查唯讀卡，review.js）已定義局部樣式；這裡在 #mb-au-body 範圍內
   補齊本卡外觀，避免動到既有複查卡樣式（gap:8px／text-align:right 等沿用該共用規則）。 */
#mb-au-body .mb-ro-card{ background:var(--wk-surface); border:1px solid var(--wk-line);
  border-radius:var(--wk-radius); padding:11px 12px; display:flex; flex-direction:column; }
.mb-ro-top{ display:flex; gap:10px; align-items:flex-start; }
.mb-ro-main{ flex:1; min-width:0; }
.mb-ro-line1{ display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
#mb-au-body .mb-ro-amt{ font-weight:700; font-variant-numeric:tabular-nums; font-size:16.5px; flex:none; }
.mb-ro-sum{ font-size:14px; color:var(--wk-ink); margin-top:1px; }
.mb-ro-tags{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:5px; }
.mb-ro-note{ font-size:13px; color:var(--wk-muted); }
.mb-ro-audit{ font-size:12.5px; color:var(--wk-faint); }

.mb-shift-head{ display:flex; justify-content:space-between; align-items:baseline; gap:8px;
  padding:2px 4px 8px; margin-top:8px; flex-wrap:wrap; }
.mb-shift-head .s{ font-weight:700; font-size:14px; color:var(--wk-muted); }
.mb-shift-head .sum{ font-size:13px; color:var(--wk-faint); }
.mb-shift-head .sum b{ color:var(--wk-ink); font-weight:700; }

.mb-day-total{ margin-top:4px; padding:13px 14px; border-radius:var(--wk-radius);
  background:var(--wk-surface); border:1px solid var(--wk-line);
  display:flex; justify-content:space-between; align-items:baseline; font-weight:700; }
.mb-day-total .l{ font-size:13.5px; color:var(--wk-muted); }
.mb-day-total .v{ font-size:17px; font-variant-numeric:tabular-nums; }

.mb-au-daynav{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.mb-au-daynav input[type=date]{ min-height:44px; flex:1; border:1px solid var(--wk-line);
  border-radius:var(--wk-radius-sm); background:var(--wk-surface); padding:0 10px;
  font-size:14.5px; color:var(--wk-ink); }

/* 操作記錄/帳號/裝置（Task 4）：重用桌面 renderLogs/renderAccounts/renderDevices，
   .mb-admin-embed 把桌面 .wk-*/.ap-*/.pd-* 元件收進手機殼——單欄、可橫捲、觸控尺寸。
   不改桌面元件本身，只在此 scope 內覆蓋關鍵幾點。 */
.mb-admin-embed{ padding:2px; }
.mb-admin-embed .wk-toolbar,.mb-admin-embed .wk-page-body{ padding-left:0; padding-right:0; }
.mb-admin-embed input,.mb-admin-embed select,.mb-admin-embed button{ min-height:40px; } /* 觸控尺寸 */
.mb-admin-embed .wk-card{ margin-bottom:12px; }
/* 重用桌面 .wk-table 在手機殼內改「單欄卡片」呈現（每列一張卡、欄位加 data-label 標籤、
   操作鈕換行），不再需要往右橫捲。桌面版 .wk-table（不在 .mb-admin-embed 內）完全不受影響。 */
.mb-admin-embed .table-wrap{ overflow-x:visible; }
/* 例外：月報表交叉表（.wk-xt，min-width:640px、首欄 sticky）在手機殼內仍需橫捲看各店欄位，
   不走上面清單表的卡片化（.wk-table）。specificity 高於上一行故勝出，只命中交叉表。 */
.mb-admin-embed .table-wrap:has(.wk-xt),
.mb-admin-embed .table-wrap:has(.wk-audit-table){ overflow-x:auto; -webkit-overflow-scrolling:touch; }
/* 手機殼：月報表交叉表用 table-layout:fixed，才能把 sticky 首欄(科目)壓窄、讓金額欄看得到
   （auto layout 會忽略 cell 的 max-width、依內容撐寬）。桌機 .wk-xt 不在 embed 內、維持 auto。 */
.mb-admin-embed .wk-xt{ table-layout:fixed; }
.mb-admin-embed .wk-xt th:first-child,
.mb-admin-embed .wk-xt td:first-child{ width:92px; min-width:92px; white-space:normal; word-break:break-word; }
/* 單店月報表只有「科目｜金額」兩欄——手機殼內免橫拉直接看到金額（多店/全部門市仍橫捲各店欄）。 */
.mb-admin-embed .wk-xt.wk-xt-one{ min-width:0; }
.mb-admin-embed .wk-card:has(.wk-table){ border:0; background:none; box-shadow:none; padding:0; } /* 攤平外層卡，只留每列卡 */
.mb-admin-embed .wk-table{ min-width:0; width:100%; border-collapse:collapse; }
.mb-admin-embed .wk-table thead{ display:none; }                       /* 隱藏表頭，改用每格標籤 */
.mb-admin-embed .wk-table tbody,
.mb-admin-embed .wk-table tr,
.mb-admin-embed .wk-table td{ display:block; width:auto; }
.mb-admin-embed .wk-table tr{ background:var(--wk-surface); border:1px solid var(--wk-line);
  border-radius:var(--wk-radius); box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08));
  padding:8px 12px; margin-bottom:10px; }
.mb-admin-embed .wk-table td{ display:flex; align-items:center; justify-content:space-between;
  gap:12px; padding:7px 0; border:0; border-bottom:1px solid var(--wk-line-soft); text-align:right; }
.mb-admin-embed .wk-table td:last-child{ border-bottom:0; }
.mb-admin-embed .wk-table td::before{ content:attr(data-label); flex:none; text-align:left;
  font-size:12px; font-weight:600; color:var(--wk-faint); }
.mb-admin-embed .wk-table td select,
.mb-admin-embed .wk-table td input{ max-width:62%; }
/* 操作欄：整列、按鈕換行平均分，不加標籤 */
.mb-admin-embed .wk-table td.wk-rowbtns{ flex-wrap:wrap; justify-content:stretch; padding-top:10px; }
.mb-admin-embed .wk-table td.wk-rowbtns::before{ content:none; }
.mb-admin-embed .wk-table td.wk-rowbtns .wk-btn{ flex:1 1 auto; min-width:92px; }
/* 空狀態列（colspan）：置中、不加標籤 */
.mb-admin-embed .wk-table td[colspan]{ justify-content:center; text-align:center; color:var(--wk-muted); }
.mb-admin-embed .wk-table td[colspan]::before{ content:none; }

/* 我的密碼（Task 5）：原型 manager-audit.html .form-field/.pw-btn，mb- 前綴、var(--x)→var(--wk-x) */
.mb-form-field{ display:flex; flex-direction:column; gap:5px; margin-bottom:12px; }
.mb-form-field label{ font-size:12.5px; color:var(--wk-muted); font-weight:600; }
.mb-form-field input{ min-height:44px; border:1px solid var(--wk-line); border-radius:var(--wk-radius-sm);
  background:var(--wk-surface-2); padding:0 12px; font-size:15px; color:var(--wk-ink); }
.mb-pw-btn{ width:100%; min-height:46px; border:0; border-radius:var(--wk-radius-sm);
  background:var(--wk-accent); color:#fff; font-weight:700; font-size:15px; }

/* ============================================================
   手機設計層－經理（UI 重塑 2026-07；super_admin 手機/平板）
   沿用員工/主管手機段落的 .mb-app/.mb-appbar/.mb-toptabs/.mb-admin-embed/.mb-ph-card 基底。
   本段新增經理專屬：抬頭跨店選店 / 月結唯讀卡 / 店別管理卡。
   視覺 SoT: docs/superpowers/ui-prototypes/super-mobile.html
   ============================================================ */
/* 抬頭跨店選店（原型 .store-sel；置於 .mb-appbar-actions） */
.mb-store-sel{ max-width:104px; min-height:36px; padding:0 26px 0 10px; font-size:14px; font-weight:600;
  color:var(--wk-ink); background:var(--wk-surface-2); border:1px solid var(--wk-line);
  border-radius:var(--wk-radius-sm); appearance:none; -webkit-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat; background-position:right 8px center; }
.mb-store-sel:focus{ outline:none; box-shadow:0 0 0 3px var(--wk-accent-soft); border-color:var(--wk-accent); }

/* 月結 pane（Task 2）：原型 .ro-card/.ro-head/.ro-lock/.kv/.badge，mb- 前綴、var(--x)→var(--wk-x)
   ⚠️ .mb-badge 與 tab 紅點徽章（約 805 行）同名，此處僅限定套用於月結抬頭 #mb-month-head 內，
   避免同 specificity 後宣告蓋掉 tab 上的 #mb-security-badge / #mb-confirm-badge 紅底白字。 */
.mb-month-head{ display:flex; align-items:baseline; gap:8px; padding:2px 4px 10px; }
.mb-month-head h2{ margin:0; font-size:17px; }
#mb-month-head .mb-badge{ font-size:11.5px; font-weight:700; padding:2px 8px; border-radius:999px;
  background:var(--wk-surface-2); color:var(--wk-muted); }
#mb-month-head .mb-badge-open{ background:var(--wk-warn-soft); color:var(--wk-warn-ink); }
.mb-closing-card{ background:var(--wk-surface); border:1px solid var(--wk-line); border-radius:var(--wk-radius);
  box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08)); padding:13px 14px; margin-bottom:14px; }
.mb-ro-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.mb-ro-head h3{ margin:0; font-size:14.5px; }
.mb-ro-lock{ font-size:12px; font-weight:600; color:var(--wk-muted); }
.mb-kv{ display:flex; justify-content:space-between; padding:6px 0; border-top:1px solid var(--wk-line-soft); font-size:13.5px; }
.mb-kv .k{ color:var(--wk-muted); } .mb-kv .v{ color:var(--wk-ink); font-weight:600; font-variant-numeric:tabular-nums; }
.mb-month-scope{ font-size:12.5px; color:var(--wk-faint); font-weight:600; padding:0 2px 8px; }

/* 店別管理 pane（Task 3）：原型 .store-card/.sc-top/.sc-code/.sc-conn/.sc-toggle/.sc-kill/.add-box，
   mb- 前綴、var(--x)→var(--wk-x) */
.mb-store-hint{ font-size:12.5px; line-height:1.6; color:var(--wk-muted); background:var(--wk-surface-2);
  border:1px solid var(--wk-line); border-radius:var(--wk-radius); padding:10px 12px; margin:0 0 14px; }
.mb-store-card{ background:var(--wk-surface); border:1px solid var(--wk-line); border-radius:var(--wk-radius);
  box-shadow:var(--mb-shadow,0 1px 2px rgba(28,39,51,.08)); padding:13px 14px; margin-bottom:12px;
  display:flex; flex-direction:column; gap:11px; }
.mb-store-top{ display:flex; align-items:center; gap:10px; }
.mb-store-code{ font-weight:800; font-size:16px; letter-spacing:.5px; }
.mb-store-conn{ margin-left:auto; font-size:11.5px; font-weight:700; padding:2px 9px; border-radius:999px; }
.mb-store-conn.on{ background:var(--wk-ok-soft); color:var(--wk-ok-ink); }
.mb-store-conn.off{ background:var(--wk-bad-soft); color:var(--wk-bad-ink); }
.mb-store-toggle{ display:flex; gap:9px; align-items:flex-start; font-size:13.5px; color:var(--wk-ink); }
.mb-store-toggle input{ width:20px; height:20px; margin-top:1px; flex:none; accent-color:var(--wk-accent); }
.mb-store-kill{ min-height:44px; border-radius:var(--wk-radius-sm); border:1px solid color-mix(in srgb, var(--wk-bad) 32%, transparent);
  background:var(--wk-bad-soft); color:var(--wk-bad-ink); font-weight:700; font-size:13.5px; }
.mb-store-kill.is-off{ border-color:color-mix(in srgb, var(--wk-ok) 32%, transparent);
  background:var(--wk-ok-soft); color:var(--wk-ok-ink); }
.mb-store-add{ background:var(--wk-surface); border:1px dashed var(--wk-line); border-radius:var(--wk-radius);
  padding:13px 14px; margin-top:4px; }
.mb-store-add h3{ margin:0 0 10px; font-size:14px; }
.mb-store-add input{ width:100%; min-height:44px; border:1px solid var(--wk-line); border-radius:var(--wk-radius-sm);
  background:var(--wk-surface-2); padding:0 12px; font-size:15px; color:var(--wk-ink); margin-bottom:10px;
  text-transform:uppercase; }

/* 店卡片內：地點限定 IP 維護（Task 5，Phase 2 地點閘）。沿用 .mb-store-card 內既有間距與 .mb-pw-btn 按鈕。 */
.mb-store-ip{ border-top:1px solid var(--wk-line-soft); padding-top:11px; display:flex; flex-direction:column; gap:8px; }
.mb-store-ip-hint{ font-size:12.5px; color:var(--wk-muted); line-height:1.5; }
.mb-store-ip-cur{ font-weight:600; color:var(--wk-ink); font-variant-numeric:tabular-nums; }
.mb-store-ip-input{ width:100%; min-height:42px; border:1px solid var(--wk-line); border-radius:var(--wk-radius-sm);
  background:var(--wk-surface-2); padding:0 12px; font-size:14px; color:var(--wk-ink); }
