/* ============================================================
   POLITE EXPRESS V21.15.22 — A1: หน้า Admin บนมือถือ
   ปัญหา: CSS ชั้นหลังๆ (app.css ~5207/5484, v521-create.css 15/101) เขียน
   padding-left 214–226px !important ไว้ใน max-width:1180/1220 หรือไม่มี media
   query เลย จึงไปทับกฎมือถือ 720px เดิม (app.css 1603) ทำให้จอ 375px เหลือใช้ ~165px
   ไฟล์นี้โหลดเป็นไฟล์สุดท้าย และใช้ selector #admin#admin (แบบเดียวกับ app.css 1637)
   เพื่อให้ชนะทุกชั้นก่อนหน้าโดยไม่ต้องแตะไฟล์เดิม
   ============================================================ */
@media(max-width:720px){
  /* คืนพื้นที่เต็มจอเมื่อ sidebar ถูกเลื่อนออกนอกจอ (translateX(-100%)) */
  #admin#admin.v21-admin{padding-left:14px!important;padding-right:14px!important}
  #admin#admin.v21-admin>.v21-admin-header,
  #admin#admin .v21-admin-header{left:0!important}

  /* หน้าสร้างงาน: ทุก grid เป็นคอลัมน์เดียวบนมือถือ
     (ชั้นหลังบังคับ .v507-bottom 7 คอลัมน์ / .v507-route-layout และ .v507-top-grid 2 คอลัมน์) */
  #admin#admin .v507-top-grid,
  #admin#admin .v507-customer-row,
  #admin#admin .v507-route-layout,
  #admin#admin .v507-lower{grid-template-columns:minmax(0,1fr)!important}
  #admin#admin .v507-page>*,
  #admin#admin .v507-top-grid>*,
  #admin#admin .v507-route-layout>*{min-width:0!important;max-width:100%!important;width:auto!important}

  /* แถบสรุปด้านล่าง (ยกเลิก · ระยะทาง · เวลา · ราคา · ค่าตอบแทน · บันทึก · มอบหมาย): 2 คอลัมน์ */
  #admin#admin .v507-bottom{grid-template-columns:1fr 1fr!important;gap:8px!important}
  #admin#admin .v507-bottom>*{width:auto!important;min-width:0!important;justify-self:stretch!important}

  /* การ์ดวิธีชำระเงิน: ปุ่มเงินสด/เครดิต ซ้อนเป็นแถวละปุ่ม ไม่ล้นขวา */
  #admin#admin .v507-pay-card{display:grid!important;grid-template-columns:minmax(0,1fr)!important;width:auto!important;max-width:100%!important;overflow:visible!important}
  #admin#admin .v507-pay-card .v507-section-label{grid-column:1!important;grid-row:1!important}
  #admin#admin .v507-pay-card .v507-pay-row{grid-column:1!important;grid-row:2!important;grid-template-columns:minmax(0,1fr)!important;gap:8px!important;height:auto!important}
  #admin#admin .v507-pay-card .v517-ref-inline,
  #admin#admin .v507-pay-card .v521-ref-inline{grid-column:1!important;grid-row:3!important;border-left:0!important;padding:0!important;margin-top:6px!important}
  #admin#admin .v507-pay-row .v507-tile{height:auto!important;min-height:52px!important;overflow:visible!important}
  #admin#admin .v507-pay-row .v507-tile strong,
  #admin#admin .v507-pay-row .v507-tile small{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;max-width:none!important}

  /* แผนที่: ยกเลิก sticky/ความสูงขั้นต่ำของเดสก์ท็อป และกันกล่องระยะทางทับข้อความ */
  #admin#admin .v507-map-card{position:relative!important;top:auto!important;min-height:0!important}
  #admin#admin .v507-map{height:260px!important;min-height:260px!important}
  #admin#admin .v507-map-empty{align-items:start!important;justify-items:center!important;padding:26px 16px 0!important}
  #admin#admin .v507-map-overlay{left:8px!important;right:8px!important;bottom:8px!important;min-width:0!important;max-width:none!important}
}

/* ============================================================
   V21.15.23 — เหตุผลของราคาอัตโนมัติ แสดงใต้ช่องราคาในหน้าสร้างงาน
   ============================================================ */
.v507-point>.v507-price-hint{display:block;margin:3px 0 2px;text-align:right;font-size:10.5px;line-height:1.3;color:#64748b;white-space:normal}
.v507-point>.v507-price-hint.ok{color:#15803d}
.v507-point>.v507-price-hint.warn{color:#b45309}
.v507-point>.v507-price-hint.manual{color:#1d4ed8}
.v507-point>.v507-price-hint:empty{display:none}

/* V21.15.24 — แผงหลังบันทึกใบงานสำเร็จ */
.v507-saved-panel{position:fixed;left:50%;bottom:92px;transform:translate(-50%,20px);z-index:9000;display:none;gap:12px 16px;align-items:center;flex-wrap:wrap;max-width:min(720px,calc(100vw - 24px));padding:12px 16px;border:1px solid #86efac;border-radius:14px;background:#f0fdf4;box-shadow:0 12px 32px rgba(15,23,42,.18);opacity:0;transition:opacity .2s,transform .2s;font-family:inherit}
.v507-saved-panel.show{display:flex;opacity:1;transform:translate(-50%,0)}
.v507-saved-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 260px}
.v507-saved-text b{color:#166534;font-size:15px}
.v507-saved-text span{color:#3f6212;font-size:12.5px;line-height:1.4}
.v507-saved-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.v507-saved-actions button{font:inherit;font-size:13px;font-weight:700;border-radius:10px;padding:9px 14px;cursor:pointer;border:1px solid transparent}
.v507-saved-new{background:#0f8a5f;color:#fff}
.v507-saved-orders{background:#fff;color:#0f2a4d;border-color:#cbd5e1!important}
.v507-saved-close{background:transparent;color:#64748b;font-size:18px;padding:4px 8px!important;border:0!important}
@media(max-width:720px){.v507-saved-panel{bottom:calc(88px + env(safe-area-inset-bottom,0px));left:12px;right:12px;transform:none;max-width:none}.v507-saved-panel.show{transform:none}.v507-saved-actions button{flex:1 1 auto}}

/* ============================================================
   V21.15.25 — สถานะความพร้อมของ Messenger ตอนมอบหมายงาน
   ============================================================ */
.pe-assign-summary{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 8px;font-size:12.5px;color:#475569}
.pe-assign-summary b{color:#0f172a}
.pe-assign-dim{color:#94a3b8}
#assignmentMessengerSelect{font-size:14px}
.pe-assign-detail{margin-top:8px;padding:10px 12px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0;font-size:12.5px;line-height:1.5;color:#334155;text-align:left}
.pe-assign-detail ul{margin:6px 0 0;padding-left:18px}
.pe-assign-detail .pe-assign-block{margin-top:6px;color:#b91c1c;font-weight:600}
#admin#admin .v507-assign-option{display:flex!important;align-items:center!important;gap:10px!important}
.v507-assign-state{margin-left:auto;font-style:normal;font-size:12px;font-weight:700;white-space:nowrap;padding:4px 9px;border-radius:999px;background:#f1f5f9;color:#334155}
.v507-assign-state[data-tone=green]{background:#dcfce7;color:#166534}
.v507-assign-state[data-tone=amber]{background:#fef3c7;color:#92400e}
.v507-assign-state[data-tone=orange]{background:#ffedd5;color:#9a3412}
.v507-assign-state[data-tone=red]{background:#fee2e2;color:#991b1b}
.v507-assign-state[data-tone=purple]{background:#ede9fe;color:#5b21b6}
.v507-assign-state[data-tone=slate]{background:#e2e8f0;color:#334155}
.v507-assign-state[data-tone=gray]{background:#e5e7eb;color:#4b5563}
.v507-assign-option.blocked{opacity:.55}

/* V21.15.25 — create-page popups (เลือก Messenger / ลูกค้า) were 360px fixed and overflowed a 375px phone */
@media(max-width:720px){
  #admin#admin .v507-overlay{padding:12px}
  #admin#admin .v507-modal{width:auto;max-width:calc(100vw - 24px);box-sizing:border-box}
}

/* V21.15.25 — route header wraps on phones (it forced a 451px layout on a 375px screen) */
@media(max-width:720px){
  #admin#admin .v507-route-head{flex-wrap:wrap!important;row-gap:6px!important;height:auto!important;min-height:42px!important;padding:8px 10px!important}
  #admin#admin .v507-route-head .v507-count{margin-left:auto!important}
  #admin#admin .v507-route-head .v507-add-stop{flex:0 0 auto!important}
  #admin#admin #v507Page,#admin#admin .v507-card{max-width:100%;box-sizing:border-box}
}

/* ============================================================
   V21.15.26 — แถบแจ้งงานค้างจากวันอื่นบนหน้าคำสั่งงาน
   ============================================================ */
.pe-otherday-notice{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 10px;padding:10px 14px;border-radius:10px;background:#fffbeb;border:1px solid #fcd34d;color:#78350f;font-size:13px;line-height:1.5}
.pe-otherday-notice b{color:#92400e}
.pe-otherday-btn{margin-left:auto;border:0;border-radius:8px;padding:7px 12px;background:#0f172a;color:#fff;font-weight:700;font-size:12.5px;cursor:pointer;white-space:nowrap}
@media(max-width:720px){.pe-otherday-btn{margin-left:0;width:100%}}

/* ============================================================
   V21.15.28 — แท็บราคาพิเศษรายลูกค้า + ป้ายบนหน้าสร้างงาน
   ============================================================ */
.pe-sp{display:flex;flex-direction:column;gap:14px;text-align:left}
.pe-sp-box{border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;background:#fff}
.pe-sp-box h4{margin:0 0 8px;font-size:15px;color:#0f172a}
.pe-sp-help{font-size:12.5px;line-height:1.6;color:#64748b;margin-top:6px}
.pe-sp-help b{color:#334155}
.pe-sp-minrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#admin#admin .pe-sp-minrow input{width:140px;padding:9px 11px;border:1px solid #cbd5e1;border-radius:9px;font-size:15px;font-weight:700}
.pe-sp-minrow span{font-size:13px;color:#64748b}
#admin#admin .pe-sp textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #cbd5e1;border-radius:9px;font-size:14px;line-height:1.7;font-family:inherit;resize:vertical}
.pe-sp-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px}
#admin#admin .pe-sp-btn{border:1px solid #cbd5e1;border-radius:9px;padding:9px 14px;background:#f8fafc;color:#0f172a;font-weight:700;font-size:13.5px;cursor:pointer}
#admin#admin .pe-sp-btn.primary{background:#0f172a;border-color:#0f172a;color:#fff}
.pe-sp-status{font-size:12.5px;color:#64748b}
.pe-sp-status.ok{color:#166534;font-weight:700}
.pe-sp-status.warn{color:#b45309;font-weight:700}
.pe-sp-testrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}
#admin#admin .pe-sp-testrow input{flex:1 1 260px;min-width:0;padding:9px 11px;border:1px solid #cbd5e1;border-radius:9px;font-size:14px}
.pe-sp-testout{font-size:12.5px;color:#64748b;font-weight:600}
.pe-sp-testout.ok{color:#166534}
.pe-sp-testout.warn{color:#b45309}
.pe-sp-table{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}
.pe-sp-row{display:grid;grid-template-columns:1fr 110px 70px;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid #eef2f6;font-size:14px}
.pe-sp-row:last-child{border-bottom:0}
.pe-sp-row.head{background:#f8fafc;font-size:12.5px;font-weight:700;color:#475569}
.pe-sp-row span:nth-child(2){font-weight:800;font-variant-numeric:tabular-nums}
#admin#admin .pe-sp-del{border:1px solid #fecaca;background:#fef2f2;color:#b91c1c;border-radius:8px;padding:6px 10px;font-size:12.5px;font-weight:700;cursor:pointer}
.pe-sp-empty{padding:18px;text-align:center;color:#94a3b8;font-size:13.5px}
.pe-sp-badge{margin:0 0 10px;padding:9px 13px;border-radius:10px;background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;font-size:13px;font-weight:600}
@media(max-width:720px){.pe-sp-row{grid-template-columns:1fr 84px 58px;font-size:13px}}

/* V21.15.29 — เตือนเมื่อปลายทางของลูกค้าราคาพิเศษไม่มีในรายการ */
.pe-sp-miss{margin-top:7px;padding-top:7px;border-top:1px dashed #c7d2fe;color:#9a3412;font-weight:600;line-height:1.6}

/* V21.15.30 — ลูกค้ารู้จักแล้วแต่ยังไม่ได้ตั้งราคาพิเศษ + ปุ่มลัดจากฟอร์มแก้ไขลูกค้า */
.pe-sp-badge.muted{background:#f8fafc;border-color:#e2e8f0;color:#64748b;font-weight:500}
.pe-sp-badge.muted b{color:#334155}
#admin#admin .pe-sp-go{border:1px solid #c7d2fe!important;background:#eef2ff!important;color:#3730a3!important;font-weight:700!important}

/* V21.15.32 — บอกให้ชัดว่ากำลังแก้รายการของลูกค้ารายไหน + ปุ่มลบทั้งรายการ */
.pe-sp-who{color:#1d4ed8}
.pe-sp-warn{margin-top:8px;padding:8px 10px;border-radius:8px;background:#fffbeb;border:1px solid #fcd34d;color:#92400e;font-size:12.5px;line-height:1.6}
#admin#admin .pe-sp-clear{float:right;border:1px solid #fecaca;background:#fef2f2;color:#b91c1c;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:700;cursor:pointer}

/* ============================================================
   V21.15.33 — ตารางลูกค้า: ตัวหนังสือเล็กลง แถวเตี้ยลง และปุ่ม ดู/แก้ไข ติดขอบขวาเสมอ
   app.css บังคับ td ไว้ที่ 17px / สูง 76px และตารางกว้างขั้นต่ำ 1400px จึงต้องใช้ !important ทับ
   ============================================================ */
#admin#admin .v2103-table{min-width:1040px!important;font-size:13.5px!important}
#admin#admin .v2103-table th{padding:10px 10px!important;font-size:12px!important}
#admin#admin .v2103-table td{height:auto!important;min-height:0!important;padding:9px 10px!important;font-size:13.5px!important;line-height:1.5!important}
#admin#admin .v2103-company-cell{min-width:190px!important}
#admin#admin .v2103-company-cell b{font-size:13.5px!important}
#admin#admin .v2103-company-cell small{font-size:11.5px!important;line-height:1.45!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#admin#admin .v2103-table th.check,#admin#admin .v2103-table td.check{width:38px!important}
#admin#admin .v2103-row-btn{padding:5px 10px!important;font-size:12px!important}
#admin#admin .v2103-type-badge,#admin#admin .v2103-status-badge,#admin#admin .v2103-online-badge{font-size:11.5px!important;padding:3px 8px!important}
/* ปุ่ม ดู/แก้ไข ลอยติดขอบขวา ไม่ต้องเลื่อนไปสุดเพื่อกด */
#admin#admin .v2103-table th.action,#admin#admin .v2103-table td.action{position:sticky;right:0;z-index:3;background:#fff!important;box-shadow:-8px 0 10px -8px rgba(15,23,42,.18)}
#admin#admin .v2103-table th.action{background:#fafbfc!important;z-index:4}
#admin#admin .v2103-table tbody tr:hover td.action{background:#fcfcfd!important}
@media(max-width:1100px){#admin#admin .v2103-table{min-width:900px!important}}

/* ============================================================
   V21.15.34 — R1 แถบเตือนในหน้ารายงาน + M1/M2 มือถือ (แถบหัว Admin ทุกหน้า + หน้าแมสเซนเจอร์)
   ============================================================ */
.pe-report-warn{display:flex;flex-direction:column;gap:4px;margin:0 0 12px;padding:12px 15px;border-radius:11px;background:#fff7ed;border:1px solid #fdba74;color:#9a3412;font-size:13.5px;line-height:1.6}
.pe-report-warn b{color:#7c2d12;font-size:14.5px}
.pe-report-warn code{font-family:ui-monospace,monospace;background:#ffedd5;border-radius:5px;padding:1px 6px;font-size:12.5px}

@media(max-width:720px){
  /* M1 — แถบหัวใช้ร่วมกันทุกหน้า: เดิมกว้าง 563px ที่จอ 375px */
  #admin#admin .v21-admin-header{flex-wrap:wrap!important;height:auto!important;min-height:0!important;padding:10px 12px!important;row-gap:8px!important;column-gap:8px!important}
  #admin#admin .v21-global-search{order:9;flex:1 1 100%!important;width:100%!important;min-width:0!important;max-width:100%!important}
  #admin#admin .v21-global-search input,#admin#admin #v21GlobalSearch{width:100%!important;min-width:0!important;box-sizing:border-box!important}
  #admin#admin .v21-head-actions{margin-left:auto!important;flex:0 0 auto!important}
  /* M1 — แถวแท็บและแถวปุ่มของหน้าแมสเซนเจอร์ */
  #admin#admin .pm-head,#admin#admin .pm-tabs,#admin#admin .pm-head-actions{flex-wrap:wrap!important;overflow:visible!important;width:auto!important;max-width:100%!important;gap:8px!important}
  #admin#admin .pm-tab,#admin#admin .pm-btn{white-space:normal!important;min-width:0!important;font-size:13px!important;padding:9px 12px!important}
  #admin#admin .pm-btn{flex:1 1 140px!important}
  /* M2 — ชิปตัวกรองสถานะ: เดิมยาว 900px เห็นแค่ 2 ชิป */
  #admin#admin .pm-status-tabs{flex-wrap:wrap!important;overflow:visible!important;width:auto!important;max-width:100%!important;gap:6px!important}
  #admin#admin .pm-stab{flex:0 0 auto!important;font-size:12.5px!important;padding:6px 10px!important}
}

/* ============================================================
   V21.15.35 — A5 ชื่อเมนู sidebar ที่จอกลาง + A6/M5 คำอ่านวันที่แบบไทย
   ============================================================ */
.pe-date-th{display:block;margin-top:3px;font-size:11.5px;line-height:1.4;color:#64748b;font-weight:600;letter-spacing:.01em}

/* A5 — app.css ซ่อนชื่อเมนูไว้ตั้งแต่จอ 1050px ลงมา (ตอนนั้น sidebar กว้าง 70px)
   แต่ชั้นหลัง ๆ บังคับ sidebar กลับเป็น ~210px ผลคือแถบกว้างเต็มแต่เหลือไอคอนล้วน
   ช่วง 721–1050px จึงคืนชื่อเมนูกลับมา (ต่ำกว่า 721px เป็นโหมดลิ้นชักซึ่งถูกต้องอยู่แล้ว) */
@media(min-width:721px) and (max-width:1050px){
  #admin#admin .v21-nav-label{display:block!important;flex:1!important;text-align:left!important}
  #admin#admin .v21-nav-badge{display:inline-flex!important}
  #admin#admin .v21-side-footer{display:block!important}
  #admin#admin .v21-nav-btn{justify-content:flex-start!important;padding:10px 12px!important;gap:10px!important}
  #admin#admin .v21-nav-icon{width:auto!important;flex:0 0 auto!important}
  #admin#admin .v21-side-brand div{display:block!important}
}

/* ============================================================
   V21.15.39 — หน้าลูกค้า: กล่องสรุปเส้นทางเคยลอยทับแผนที่ บนมือถือจึงบังหมุด A–B และเส้นทาง
   ตั้งแต่จอ 900px ลงมา (จุดเดียวกับที่หน้าลูกค้าเปลี่ยนเป็นคอลัมน์เดียวอยู่แล้ว) ให้ย้ายลงมาอยู่ใต้แผนที่แทน
   ============================================================ */
@media(max-width:900px){
  #customerPortal .cp-map-panel{height:auto!important;display:flex!important;flex-direction:column!important;gap:10px!important;background:transparent!important}
  #customerPortal .cp-map{position:relative!important;inset:auto!important;height:300px!important;width:100%!important;border-radius:14px!important;overflow:hidden!important;background:#e8edf2!important}
  #customerPortal .cp-map-overlay{position:static!important;left:auto!important;right:auto!important;bottom:auto!important;box-shadow:none!important;border-radius:12px!important;background:#fff!important;font-size:12.5px!important}
}
/* จอเล็กมาก ให้แผนที่เตี้ยลงอีกนิด จะได้เห็นทั้งแผนที่และข้อความในหน้าจอเดียว */
@media(max-width:430px){
  #customerPortal .cp-map{height:250px!important}
}

/* V21.15.43 — the Messenger app's own duty status was cut to "สถานะ: พร้อมบริ…".
   .v2156-ready-row is a 3-column grid; the status cell got 132px for 140px of text.
   Let the status take the room it needs and let the area picker give room up instead. */
#rider#rider .v2156-ready-row{grid-template-columns:auto auto minmax(0,1fr)!important;align-items:center!important}
#rider#rider .v2156-ready-left{overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important}
#rider#rider .v2156-area-wrap{min-width:0!important}
#rider#rider .v2156-area-wrap select{width:100%!important;min-width:0!important}
@media(max-width:360px){
  #rider#rider .v2156-ready-row{grid-template-columns:auto auto!important;row-gap:8px!important}
  #rider#rider .v2156-area-wrap{grid-column:1/-1!important}
}

/* ============================================================
   V21.15.95 — หน้าลูกค้าบน iPad (เจ้าของ: "หน้าลูกค้าดูในไอแพด เหมือนจะเพี้ยน ๆ ไม่ลงตัว")
   ไอแพดแนวตั้ง (กว้าง 700–900px) เคยได้หน้าตาแบบมือถือที่ยืดกว้าง: ปุ่มเข้าสู่ระบบไปติดโลโก้ ช่องกรอกยาวเต็มจอ
   และแผนที่ไปอยู่ล่างสุดของหน้า ต้องเลื่อนลงไปดูเส้นทาง
   ตอนนี้ใช้แบบเดียวกับไอแพดแนวนอน/คอม: ฟอร์มซ้าย แผนที่ขวา · หัวเว็บ 2 แถวสูงคงที่ 110px
   มือถือ (ต่ำกว่า 700px) ยังเป็นคอลัมน์เดียวเหมือนเดิม
   ============================================================ */
/* ปุ่มเข้าสู่ระบบ/ออก ชิดขวาเมื่อหัวเว็บแบ่งเป็น 2 แถว (มือถือ + ไอแพดแนวตั้ง) — เดิมไปติดอยู่ข้างโลโก้ */
@media(max-width:900px){
  #customerPortal .cp-account{margin-left:auto}
}
@media(min-width:700px) and (max-width:900px){
  #customerPortal .cp-topbar{height:110px!important;min-height:0!important;padding:6px 18px 0!important;align-content:space-between!important;row-gap:0!important}
  #customerPortal .cp-logo{height:46px!important}
  #customerPortal .cp-nav{margin:0 -18px!important;width:calc(100% + 36px)!important;align-items:stretch!important}
  body #customerPortal .cp-nav button{height:50px!important;padding:0 12px!important;font-size:16px!important;line-height:1.2!important}
  #customerPortal #cpOrderScreen{min-height:0!important}   /* .cp-screen คิดหัวเว็บ 76px ไว้ → หน้าเลยจอ 34px */
  #customerPortal .cp-order-layout{grid-template-columns:minmax(330px,390px) minmax(0,1fr)!important;height:calc(100vh - 110px)!important;height:calc(100dvh - 110px)!important;min-height:560px!important}
  #customerPortal .cp-order-panel{overflow-y:auto!important;border-right:1px solid #dde2e8!important;padding-bottom:110px!important}
  #customerPortal .cp-contact-grid{grid-template-columns:1fr 1fr!important}
  /* แผนที่เต็มคอลัมน์ขวา กล่องสรุปเส้นทางลอยด้านล่างแบบหน้าจอคอม (ยกเลิกกฎมือถือของ V21.15.39 เฉพาะช่วงนี้) */
  #customerPortal .cp-map-panel{display:block!important;height:auto!important;background:#e8edf2!important;position:relative!important}
  #customerPortal .cp-map{position:absolute!important;inset:0!important;height:auto!important;border-radius:0!important}
  #customerPortal .cp-map-overlay{position:absolute!important;left:14px!important;right:14px!important;bottom:14px!important;box-shadow:0 8px 28px rgba(15,23,42,.18)!important}
}
/* ไอแพดแนวนอน: หัวเว็บจริงสูง 82px แต่ตัวเลย์เอาต์หักไว้ 76px (หน้าเลยจอ 6px) · 100dvh = ไม่นับแถบเครื่องมือของ Safari */
@media(min-width:901px) and (max-width:1366px) and (pointer:coarse){
  body.customer-active #customerPortal #cpOrderScreen{min-height:0!important}
  body.customer-active #customerPortal .cp-order-layout{height:calc(100dvh - 82px)!important}
}
/* ตัวหนังสือเล็กบนแท็บเล็ต (เดิม 10–12px อ่านยากบนไอแพด) · ป้าย "จุดส่ง 1" เคยชิดขอบกล่อง */
@media(min-width:700px) and (max-width:1366px){
  #customerPortal .cp-section-title{font-size:13.5px!important}
  #customerPortal .cp-order-panel .tiny{font-size:12px!important;line-height:1.45!important}
  #customerPortal .cp-stop-title{font-size:13.5px!important}
  #customerPortal .cp-route-price,#customerPortal .cp-thai-time-note{font-size:11.5px!important}
  #customerPortal .cp-distance,#customerPortal .cp-price-warning{font-size:12px!important}
}
#customerPortal .cp-stop-head{padding-top:2px;margin-bottom:6px}

/* ============================================================
   V21.15.95 — การ์ด "ติดตั้งแอปลงหน้าจอ" ในแอป Messenger (pe-device.js)
   ============================================================ */
.pe-install-card{display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px 12px;align-items:center;margin:12px 16px 0;padding:14px;background:#fff8e6;border:1px solid #efd9a0;border-radius:16px;box-shadow:0 4px 14px rgba(15,23,42,.06)}
.pe-install-card[hidden]{display:none!important}
.pe-install-card>img{width:52px;height:52px;border-radius:12px;display:block}
.pe-install-body b{display:block;font-size:16px;font-weight:900;color:#111;margin-bottom:2px}
.pe-install-body span{display:block;font-size:13.5px;line-height:1.5;color:#374151}
.pe-install-act{grid-column:1/-1;display:flex;align-items:center;gap:14px}
.pe-install-go{flex:1;min-height:46px;border:0;border-radius:12px;background:linear-gradient(180deg,#e7c173,#c2922e);color:#1f1705;font-size:16px;font-weight:900;cursor:pointer}
.pe-install-later{background:none;border:0;color:#8a6414;font-weight:800;font-size:14px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:8px 4px}
#peInstallHelp{position:fixed;inset:0;z-index:12000;background:rgba(15,23,42,.55);display:flex;align-items:flex-end;justify-content:center;padding:16px}
#peInstallHelp[hidden]{display:none!important}
#peInstallHelp .pe-install-sheet{width:min(460px,100%);background:#fff;border-radius:20px;padding:20px 20px calc(20px + env(safe-area-inset-bottom));box-shadow:0 20px 50px rgba(0,0,0,.3)}
#peInstallHelp h3{margin:0 0 4px;font-size:19px}
#peInstallHelp p{margin:0 0 12px;color:#4b5563;font-size:14px}
#peInstallHelp ol{margin:0;padding-left:22px;display:grid;gap:10px;font-size:15px;line-height:1.55}
#peInstallHelp ol b{color:#8a6414}
/* ============================================================
   V21.15.97 — กล่องวิธีเปิดสิทธิ์ตำแหน่ง (#peGpsHelp ใช้ .pe-ask เดิม) · คำอธิบายในรายการปัญหาที่เครื่องพนักงานแจ้งเข้ามา
   ============================================================ */
#peGpsHelp .pe-gps-help{max-width:460px}
#peGpsHelp .pe-gps-help h3{margin:0 0 6px;font-size:19px;line-height:1.35}
#peGpsHelp .pe-gps-help p{margin:0 0 10px;color:#4b5563;font-size:14px}
#peGpsHelp .pe-gps-help ol{margin:0 0 6px;padding-left:22px;display:grid;gap:8px;font-size:15px;line-height:1.55;text-align:left}
#peGpsHelp .pe-gps-help ol b{color:#8a6414}
.pe-errlog-hint{display:block;margin-top:4px;color:#8a6414!important;font-weight:700}

/* ============================================================
   V21.15.96 — ปุ่มเดียวทำงานทีละขั้น (pe-rider-steps.js) ติดล่างจอในหน้ารายละเอียดใบงานของ Messenger
   ============================================================ */
.pe-step-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;z-index:20;width:min(760px,100%);box-sizing:border-box;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(248,250,252,.97);border-top:1px solid #e2e8f0;box-shadow:0 -10px 30px rgba(15,23,42,.14)}
.pe-step-bar[hidden]{display:none!important}
.pe-step-count{font-size:13px;font-weight:800;color:#64748b;margin:0 2px 6px;min-height:16px}
.pe-step-go{width:100%;min-height:74px;display:flex;align-items:center;gap:14px;text-align:left;border:0;border-radius:18px;padding:12px 18px;cursor:pointer;color:#fff;background:#2563eb;box-shadow:0 8px 20px rgba(37,99,235,.28);font:inherit}
.pe-step-bar[data-tone="gold"] .pe-step-go{background:linear-gradient(180deg,#e7c173,#c2922e);color:#1f1705;box-shadow:0 8px 20px rgba(194,146,46,.32)}
.pe-step-bar[data-tone="green"] .pe-step-go{background:#059669;box-shadow:0 8px 20px rgba(5,150,105,.3)}
.pe-step-bar[data-tone="muted"] .pe-step-go{background:#e2e8f0;color:#475569;box-shadow:none}
.pe-step-go:disabled{cursor:default;opacity:.92}
.pe-step-icon{font-size:30px;line-height:1;flex:none;width:36px;text-align:center}
.pe-step-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.pe-step-text b{font-size:21px;font-weight:900;line-height:1.25}
.pe-step-text small{font-size:14px;font-weight:700;opacity:.9;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-step-more{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.pe-step-more button{flex:1 1 auto;min-height:40px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;color:#334155;font-size:14px;font-weight:800;cursor:pointer;padding:6px 10px}
.pe-step-more button[hidden]{display:none!important}
.pe-step-more [data-fail]{color:#be123c;border-color:#fecdd3;background:#fff1f2}
/* เว้นที่ด้านล่าง ไม่ให้เนื้อหาสุดท้ายโดนแถบปุ่มบัง */
#riderJobDetailBody.pe-steps-on{padding-bottom:190px}
/* ปุ่มขั้นตอนเดิมที่กระจายอยู่ 3 ที่ — ซ่อน เพราะรวมมาที่ปุ่มใหญ่แล้ว (นำทาง / โทร / ถ่ายรูป / ส่งไม่สำเร็จ ยังอยู่ครบ) */
#riderJobDetailBody.pe-steps-on .rider-detail-actions .pe-track-action,
#riderJobDetailBody.pe-steps-on .rider-detail-actions .rider-big-action.primary,
#riderJobDetailBody.pe-steps-on .rider-detail-actions .rider-big-action.green,
#riderJobDetailBody.pe-steps-on .pe-stop-track button,
#riderJobDetailBody.pe-steps-on [id^="riderSuccessBtn_"],
#riderJobDetailBody.pe-steps-on [id^="riderReturnCompleteBtn_"]{display:none!important}
#riderJobDetailBody .rider-fail-row.pe-step-focus{outline:3px solid #f43f5e;outline-offset:4px;border-radius:12px;transition:outline-color .3s}
@media(max-width:420px){.pe-step-text b{font-size:19px}.pe-step-go{min-height:68px;padding:10px 14px;gap:10px}}

#peInstallHelp .pe-install-close{margin-top:16px;width:100%;min-height:46px;border:1px solid #d1d5db;border-radius:12px;background:#fff;font-size:15px;font-weight:800;cursor:pointer}

/* ===== V21.15.98 พาร์ทไทม์ — เครดิตรายได้ (pe-parttime.js) ===== */
/* Messenger app: wallet card */
#v2156RiderShell .pe-pt{display:grid;gap:12px;margin-top:12px}
#v2156RiderShell .pe-pt-card{background:#fff;border:1px solid #e0e3e7;border-radius:16px;padding:16px 18px}
#v2156RiderShell .pe-pt-head{display:grid;gap:4px;padding:14px 16px;border-radius:14px;background:#15294a;color:#fff}
#v2156RiderShell .pe-pt-head small{font-size:13px;font-weight:700;color:#c9d4e8}
#v2156RiderShell .pe-pt-head b{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.15}
#v2156RiderShell .pe-pt-head span{font-size:13px;font-weight:600;color:#e3aa4f;line-height:1.45}
#v2156RiderShell .pe-pt-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
#v2156RiderShell .pe-pt-grid>div{padding:10px 12px;border-radius:12px;background:#f5f6f8;min-width:0}
#v2156RiderShell .pe-pt-grid small{display:block;font-size:12px;font-weight:700;color:#6b7280}
#v2156RiderShell .pe-pt-grid b{display:block;margin-top:2px;font-size:17px;font-weight:800;color:#111827;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
#v2156RiderShell .pe-pt-card h4{margin:16px 0 6px;font-size:15px;font-weight:800;color:#111827}
.pe-pt-list{list-style:none;margin:0;padding:0;display:grid}
.pe-pt-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #eef0f2}
.pe-pt-list li:first-child{border-top:0}
.pe-pt-list li span{min-width:0}
.pe-pt-list li b{display:block;font-size:15px;font-weight:800;font-variant-numeric:tabular-nums}
.pe-pt-list li small{display:block;margin-top:2px;font-size:12px;font-weight:600;color:#7b818b;overflow-wrap:anywhere}
.pe-pt-list li em{flex:none;font-style:normal;font-size:12px;font-weight:800;padding:3px 9px;border-radius:999px}
.pe-pt-in b{color:#15803d}.pe-pt-in em{background:#dcfce7;color:#166534}
.pe-pt-out b{color:#1f2937}.pe-pt-out em{background:#eef2f7;color:#334155}
.pe-pt-empty{margin:8px 0 0;font-size:13px;font-weight:600;color:#7b818b;text-align:center;padding:10px}
.pe-pt-warn{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:700}
.pe-pt-toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));z-index:10050;transform:translate(-50%,20px);opacity:0;pointer-events:none;
  max-width:min(92vw,460px);padding:12px 18px;border-radius:14px;background:#14532d;color:#fff;font-size:15px;font-weight:800;line-height:1.4;text-align:center;box-shadow:0 12px 30px rgba(0,0,0,.25);transition:opacity .25s,transform .25s}
.pe-pt-toast.show{opacity:1;transform:translate(-50%,0)}
/* Admin: Messenger page → เครดิตพาร์ทไทม์ */
#pmPartTimePane{margin-top:14px}
#pmPartTimePane .pe-pt-setting{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:16px 18px;margin-bottom:14px}
#pmPartTimePane .pe-pt-setting-text{flex:1 1 260px;min-width:0}
#pmPartTimePane .pe-pt-setting-text b{display:block;font-size:15px;color:var(--pm-ink,#1f2530)}
#pmPartTimePane .pe-pt-setting-text small,#pmPartTimePane .pe-pt-when{display:block;font-size:12px;color:var(--pm-muted,#7a818c)}
#pmPartTimePane .pe-pt-when{flex-basis:100%}
#pmPartTimePane .pe-pt-cut{display:inline-flex;align-items:center;gap:6px;font-weight:800}
#pmPartTimePane .pe-pt-cut input{width:84px;height:42px;padding:0 10px;border:1px solid #dcdfe5;border-radius:10px;font-size:18px;font-weight:800;text-align:center}
#pmPartTimePane .pe-pt-share{font-weight:700;color:var(--pm-text,#3b4250)}
#pmPartTimePane .pe-pt-share b{color:#15803d;font-size:16px}
#pmPartTimePane .pe-pt-summary{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-bottom:14px;padding:14px 18px;border-radius:16px;background:#15294a;color:#fff}
#pmPartTimePane .pe-pt-summary small{display:block;font-size:12px;font-weight:700;color:#c9d4e8}
#pmPartTimePane .pe-pt-summary b{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}
#pmPartTimePane .pe-pt-summary p{flex:1 1 280px;margin:0;font-size:13px;line-height:1.5;color:#e3aa4f;font-weight:600}
#pmPartTimePane .pe-pt-table td small{display:block;font-size:12px;color:var(--pm-muted,#7a818c)}
#pmPartTimePane .pe-pt-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
#pmPartTimePane .pe-pt-due{color:#b45309}
#pmPartTimePane .pe-pt-actions{white-space:nowrap;text-align:right}
#pmPartTimePane .pe-pt-actions .pm-btn{height:36px;padding:0 12px!important;font-size:13px!important}
#pmPartTimePane .pe-pt-empty{padding:28px 12px}
.pe-pt-link{border:0;background:none;padding:0;margin:0;color:#b77b1c;font-weight:800;text-decoration:underline;cursor:pointer}
.pe-pt-link.danger{color:#be123c;font-size:12px;flex:none}
.pe-pt-modal{position:fixed;inset:0;z-index:10040;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.45)}
.pe-pt-modal-box{width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:18px;padding:20px 22px;box-shadow:0 24px 60px rgba(0,0,0,.3);color:#1f2530}
.pe-pt-modal-box h3{margin:0 0 6px;font-size:19px;font-weight:800}
.pe-pt-modal-sub{margin:0 0 14px;font-size:14px;color:#4b5563}
.pe-pt-modal-sub b{color:#b45309;font-variant-numeric:tabular-nums}
.pe-pt-field{display:grid;gap:6px;margin-bottom:12px;font-size:14px;font-weight:700}
.pe-pt-field input{height:46px;padding:0 12px;border:1px solid #d1d5db;border-radius:12px;font-size:17px;font-weight:700}
.pe-pt-modal-hint{margin:0 0 14px;font-size:13px;color:#6b7280;line-height:1.5}
.pe-pt-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}
.pe-pt-modal .pm-btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 18px;border-radius:11px;font-size:15px;font-weight:800;cursor:pointer}
.pe-pt-modal .pm-btn.gold{background:#e3aa4f;border:1px solid #e3aa4f;color:#241a08}
.pe-pt-modal .pm-btn.ghost{background:#fff;border:1px solid #dcdfe5;color:#1f2530}
.pe-pt-modal .pm-btn:disabled{opacity:.6;cursor:wait}
@media(max-width:560px){#pmPartTimePane .pe-pt-actions{white-space:normal}#pmPartTimePane .pe-pt-actions .pm-btn{width:100%;margin-top:6px}.pe-pt-modal-actions .pm-btn{flex:1}}#pmPartTimePane .pe-pt-table th.num{text-align:right!important}
/* ===== V21.15.98 ช่อง "ประเภทพนักงาน / รายได้": ชื่อสั้น + สีน้ำตาล 3 ระดับ (เจ้าของขอ) =====
   งานด่วน = น้ำตาลอ่อนมาก · เงินเดือน = เข้มขึ้นหน่อย · พาร์ทไทม์ = น้ำตาล */
option.pe-wt-urgent{background:#f7efe4;color:#4a3826}
option.pe-wt-salary{background:#e0c29a;color:#3a2714}
option.pe-wt-parttime{background:#9a6a3e;color:#fff}
select.pe-wt-select,#admin#admin.v21-admin select.pe-wt-select{font-weight:800!important}
select.pe-wt-select[data-wt="urgent"],#admin#admin.v21-admin select.pe-wt-select[data-wt="urgent"]{background-color:#f7efe4!important;color:#4a3826!important;border-color:#e3cfb3!important}
select.pe-wt-select[data-wt="salary"],#admin#admin.v21-admin select.pe-wt-select[data-wt="salary"]{background-color:#e0c29a!important;color:#3a2714!important;border-color:#c49d6b!important}
select.pe-wt-select[data-wt="parttime"],#admin#admin.v21-admin select.pe-wt-select[data-wt="parttime"]{background-color:#9a6a3e!important;color:#fff!important;border-color:#7a522d!important}
.pe-wt-hint{display:block;margin-top:5px;font-size:12px;font-weight:600;color:#7a6a58;line-height:1.4}/* V21.15.98 ค่าบริการพาร์ทไทม์ 5 ช่อง (ตามหน้า "ค่าบริการ" ที่เจ้าของส่งมา) */
#pmPartTimePane .pe-pt-setting-text{flex-basis:100%}
#pmPartTimePane .pe-pt-rates{flex-basis:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px 18px}
#pmPartTimePane .pe-pt-rate{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--pm-line,#e9ebef);border-radius:12px;background:#fcfbf8;min-width:0}
#pmPartTimePane .pe-pt-rate>span:first-child{font-weight:800;color:var(--pm-ink,#1f2530);min-width:0}
#pmPartTimePane .pe-pt-rate small{display:block;font-size:12px;font-weight:600;color:var(--pm-muted,#7a818c)}
#pmPartTimePane .pe-pt-rate-in{display:inline-flex;align-items:center;gap:6px;flex:none}
#pmPartTimePane .pe-pt-rate-in input{width:92px;height:42px;padding:0 10px;border:1px solid #dcdfe5;border-radius:10px;font-size:17px;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}
#pmPartTimePane .pe-pt-rate-in em{font-style:normal;font-weight:700;color:var(--pm-muted,#7a818c);min-width:26px}
#pmPartTimePane .pe-pt-example{flex-basis:100%;margin:2px 0 0;padding:10px 12px;border-radius:12px;background:#fdf3e1;color:#5f4717;font-size:13px;line-height:1.6}
#pmPartTimePane .pe-pt-example.bad{background:#fff1f2;color:#9f1239}
#pmPartTimePane .pe-pt-setting-foot{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
#pmPartTimePane .pe-pt-setting-foot .pe-pt-when{flex-basis:auto}
/* ===== V21.15.99 กล่องที่เปิดจากหน้ารายละเอียดงาน ต้องอยู่ "หน้า" หน้ารายละเอียดงาน =====
   อนุสรณ์: "กดจุด B ไม่ได้ ทำให้ปิดงานไม่ได้" — อยู่ห่างหมุดเกิน 250–500 ม. ระบบเปิดกล่องให้ใส่เหตุผล (.pe-ask z 9500)
   แต่หน้ารายละเอียดงาน (.rider-detail-overlay) อยู่ชั้น 99999 กล่องจึงไปอยู่ข้างหลัง มองไม่เห็น และปุ่มขั้นตอนค้าง "กำลังบันทึก…"
   กล่องวิธีเปิดสิทธิ์ตำแหน่ง (#peGpsHelp ใช้ .pe-ask) · ดูรูป · ข้อความเติมเครดิต ก็โดนแบบเดียวกัน */
.pe-ask{z-index:100100!important}
#pePhotoViewer{z-index:100120!important}
.pe-pt-toast{z-index:100110}
/* V21.16.00 แถบ "มีแอปรุ่นใหม่ · แตะเพื่ออัปเดต" (pe-device.js) — อยู่เหนือทุกหน้า รวมหน้ารายละเอียดงาน */
.pe-update-bar{position:fixed;left:50%;top:calc(10px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:100200;display:flex;align-items:center;gap:12px;
  max-width:calc(100vw - 24px);padding:10px 12px 10px 16px;border-radius:14px;background:#15294a;color:#fff;font-size:15px;font-weight:800;box-shadow:0 12px 30px rgba(15,23,42,.3);cursor:pointer}
.pe-update-bar[hidden]{display:none}
.pe-update-bar button{flex:none;min-height:38px;padding:0 16px;border:0;border-radius:10px;background:#e3aa4f;color:#241a08;font-size:15px;font-weight:800;cursor:pointer}
/* ===== V21.16.02 สีเวลาเข้างาน (หน้า Messenger ของแอดมิน) — เจ้าของ: เข้า 08:00 = เขียว · 08:01–08:30 = ส้ม · หลังจากนั้น = แดง ===== */
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-big.in.pm-in-on,#v2106MessengerPage .pm-big.in.pm-in-on,.pm-modal .pm-in-on{color:#15803d!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-big.in.pm-in-late,#v2106MessengerPage .pm-big.in.pm-in-late,.pm-modal .pm-in-late{color:#e7710b!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-big.in.pm-in-very,#v2106MessengerPage .pm-big.in.pm-in-very,.pm-modal .pm-in-very{color:#dc2626!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-table td small.pm-in-note,#v2106MessengerPage .pm-table td small.pm-in-note{display:inline-block;margin-top:3px;padding:1px 8px;border-radius:999px;font-weight:800!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-table td small.pm-in-note.pm-in-on,#v2106MessengerPage .pm-table td small.pm-in-note.pm-in-on{background:#e6f6ec;color:#15803d!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-table td small.pm-in-note.pm-in-late,#v2106MessengerPage .pm-table td small.pm-in-note.pm-in-late{background:#fff0e1;color:#c2570a!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-table td small.pm-in-note.pm-in-very,#v2106MessengerPage .pm-table td small.pm-in-note.pm-in-very{background:#fdecec;color:#dc2626!important}
.pm-modal small.pm-in-note{font-weight:800}
#v2106MessengerPage .pm-late-legend{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
#v2106MessengerPage .pm-late-legend[hidden]{display:none}
#v2106MessengerPage .pm-late-legend i{display:inline-block;width:12px;height:12px;border-radius:4px}
#v2106MessengerPage .pm-late-legend i.pm-in-on{background:#15803d}#v2106MessengerPage .pm-late-legend i.pm-in-late{background:#e7710b}#v2106MessengerPage .pm-late-legend i.pm-in-very{background:#dc2626}
#v2106MessengerPage .pm-late-legend span{margin-left:4px}
/* V21.16.03 แชร์ติดตามงานให้ลูกค้า (assets/pe-share.js) — panel above the Admin job detail (z 16000) and the customer page */
#peShareSheet.pe-share-bg{position:fixed;inset:0;z-index:100150;display:none;align-items:center;justify-content:center;padding:16px;background:rgba(15,23,42,.45)}
#peShareSheet.pe-share-bg.show{display:flex}
#peShareSheet .pe-share-card{width:min(520px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;color:#111827;border-radius:16px;box-shadow:0 18px 50px rgba(15,23,42,.28);font-family:inherit}
#peShareSheet .pe-share-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid #e2e8f0;position:sticky;top:0;background:#fff}
#peShareSheet .pe-share-head b{font-size:16px}
#peShareSheet .pe-share-x{border:0;background:#f1f5f9;color:#111827;border-radius:999px;width:34px;height:34px;font-size:15px;cursor:pointer}
#peShareSheet .pe-share-body{padding:14px 16px 16px;display:grid;gap:10px}
#peShareSheet .pe-share-label{font-size:13px;font-weight:700;color:#475569}
#peShareSheet .pe-share-text{width:100%;resize:vertical;border:1px solid #cbd5e1;border-radius:10px;padding:10px 12px;font:14px/1.5 inherit;font-family:inherit;color:#111827;background:#f8fafc}
#peShareSheet .pe-share-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#peShareSheet .pe-share-btn{display:flex;align-items:center;justify-content:center;text-align:center;min-height:44px;padding:8px 10px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#111827;font:inherit;font-size:14px;font-weight:700;text-decoration:none;cursor:pointer}
#peShareSheet .pe-share-btn.primary{background:#111827;border-color:#111827;color:#fff}
#peShareSheet .pe-share-btn.line{background:#06c755;border-color:#06c755;color:#fff}
#peShareSheet .pe-share-link{display:flex;gap:8px}
#peShareSheet .pe-share-link input{flex:1;min-width:0;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px;font:13px ui-monospace,Menlo,Consolas,monospace;color:#334155;background:#f8fafc}
#peShareSheet .pe-share-mini{border:1px solid #cbd5e1;background:#fff;border-radius:8px;padding:0 12px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
#peShareSheet .pe-share-msg{min-height:20px;font-size:14px;font-weight:700;color:#047857}
#peShareSheet .pe-share-msg.bad{color:#b91c1c}
#peShareSheet .pe-share-info{margin:0;padding-left:18px;color:#64748b;font-size:13px;line-height:1.55}
#peShareSheet .pe-share-renew{justify-self:start;border:0;background:none;color:#64748b;font:inherit;font-size:13px;text-decoration:underline;cursor:pointer;padding:4px 0}
#peShareSheet .pe-share-renew.armed{color:#b91c1c;font-weight:700}
#peShareSheet button:focus-visible,#peShareSheet a:focus-visible{outline:3px solid #60a5fa;outline-offset:2px}
@media (max-width:560px){#peShareSheet.pe-share-bg{align-items:flex-end;padding:0}#peShareSheet .pe-share-card{border-radius:16px 16px 0 0;max-height:92dvh}#peShareSheet .pe-share-actions{grid-template-columns:1fr}}
.cp-detail-box.pe-share-box{display:grid;gap:6px}
.cp-detail-box.pe-share-box .cp-share-btn{justify-self:start;margin-top:4px;min-height:42px;padding:8px 16px;border-radius:10px;border:0;background:#111827;color:#fff;font:inherit;font-weight:700;cursor:pointer}

/* V21.16.04 Polite Points (assets/pe-points.js) — box in the Admin job detail + tab in the customer popup */
#v2105OrderDetailBody .pe-pts-box{margin-top:14px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#fffdf5;display:grid;gap:6px}
#v2105OrderDetailBody .pe-pts-box>b{font-size:14px}
#v2105OrderDetailBody .pe-pts-have{font-size:14px;color:#334155}
#v2105OrderDetailBody .pe-pts-num{font-size:22px;font-weight:800;color:#a16207;font-variant-numeric:tabular-nums}
#v2105OrderDetailBody .pe-pts-note{font-size:12.5px;color:#64748b}
#v2105OrderDetailBody .pe-pts-used{font-size:13.5px;font-weight:700;color:#047857}
#v2105OrderDetailBody .pe-pts-box .pe-pts-redeem{justify-self:start}
#v2105OrderDetailBody .pe-pts-box .pe-pts-redeem.armed,#v2105OrderDetailBody .pe-pts-box .pe-pts-undo.armed{background:#b45309!important;border-color:#b45309!important;color:#fff!important}
#v2105OrderDetailBody .pe-pts-box .pe-pts-redeem:disabled{opacity:.45;cursor:not-allowed}
#v2105OrderDetailBody .pe-pts-undo{justify-self:start;border:0;background:none;color:#b91c1c;font:inherit;font-size:13px;text-decoration:underline;cursor:pointer;padding:2px 0}
#v2105OrderDetailBody .pe-pts-msg{min-height:16px;font-size:13px;font-weight:700;color:#047857}
#v2105OrderDetailBody .pe-pts-msg.bad{color:#b91c1c}
/* V21.16.10 "💰 ค่ารอบ Messenger" in the job detail (pe-parttime.js) */
#v2105OrderDetailBody .pe-pay-box{margin-top:14px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;display:grid;gap:6px}
#v2105OrderDetailBody .pe-pay-box>b{font-size:14px}
#v2105OrderDetailBody .pe-pay-line{font-size:14px;color:#334155}
#v2105OrderDetailBody .pe-pay-warn{font-size:13px;font-weight:700;color:#b45309;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:6px 10px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-pay-btn,#v2105OrderDetailBody .pe-pay-btn{justify-self:start;min-height:38px;padding:7px 14px!important;border-radius:10px!important;border:1px solid #cbd5e1!important;background:#fff!important;color:#0f172a!important;font-size:13.5px!important;font-weight:700;cursor:pointer}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-pay-btn.v2105-black-btn,#v2105OrderDetailBody .pe-pay-btn.v2105-black-btn{background:#111!important;border-color:#111!important;color:#fff!important}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-pay-btn.armed,#v2105OrderDetailBody .pe-pay-btn.armed{background:#b45309!important;border-color:#b45309!important;color:#fff!important}
#v2105OrderDetailBody .pe-pay-btn:disabled{opacity:.5;cursor:wait}
#v2105OrderDetailBody .pe-pay-msg{min-height:16px;font-size:13px;font-weight:600;color:#047857}
#v2105OrderDetailBody .pe-pay-msg.bad{color:#b91c1c}
.pe-pts-tab{display:grid;gap:10px}
.pe-pts-tab .pe-pts-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.pe-pts-tab .pe-pts-tiles div{border:1px solid #e2e8f0;border-radius:10px;padding:10px 12px;background:#fff}
.pe-pts-tab .pe-pts-tiles span{display:block;font-size:12px;color:#64748b}
.pe-pts-tab .pe-pts-tiles b{font-size:20px;font-variant-numeric:tabular-nums}
.pe-pts-tab .pe-pts-tiles div:first-child b{color:#a16207}
.pe-pts-tab .pe-pts-note{font-size:12.5px;color:#64748b}
.pe-pts-tab .pe-pts-note.bad{color:#b91c1c}
.pe-pts-tab h4{margin:6px 0 0;font-size:14px}
.pe-pts-tab .pe-pts-list{border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff}
.pe-pts-tab .pe-pts-row{display:grid;grid-template-columns:150px 90px 1fr 70px;gap:8px;align-items:center;padding:7px 12px;border-top:1px solid #f1f5f9;font-size:13px;font-variant-numeric:tabular-nums}
.pe-pts-tab .pe-pts-row:first-child{border-top:0}
.pe-pts-tab .pe-pts-row b{text-align:right}
.pe-pts-tab .pe-pts-row b.plus{color:#047857}.pe-pts-tab .pe-pts-row b.minus{color:#b91c1c}
.pe-pts-tab .pe-pts-job{border:0;background:none;padding:0;font:inherit;font-weight:700;color:#1d4ed8;text-align:left;cursor:pointer}
.pe-pts-tab .pe-pts-empty{padding:10px 12px;color:#94a3b8;font-size:13px}
@media (max-width:640px){.pe-pts-tab .pe-pts-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.pe-pts-tab .pe-pts-row{grid-template-columns:1fr auto;grid-auto-rows:auto}.pe-pts-tab .pe-pts-row span{font-size:12px;color:#64748b}}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-pts-num,#v2105OrderDetailBody .pe-pts-box .pe-pts-num{font-size:22px!important;font-weight:800!important;line-height:1.2}

/* V21.16.05 ดาวพนักงาน (assets/pe-stars.js) — Admin ranking tab · job detail · customer order page · Messenger home card */
#v2106MessengerPage .pm-star-ico{color:#d97706;font-size:15px}
#v2106MessengerPage .pe-st-page{display:grid;gap:12px}
#v2106MessengerPage .pe-st-head{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:flex-end}
#v2106MessengerPage .pe-st-head h3{margin:0;font-size:18px}
#v2106MessengerPage .pe-st-head p{margin:2px 0 0;color:#64748b;font-size:13px}
#v2106MessengerPage .pe-st-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#v2106MessengerPage .pe-st-tools label{display:flex;gap:6px;align-items:center;font-size:13px;color:#475569}
#v2106MessengerPage .pe-st-tools input{border:1px solid #cbd5e1;border-radius:8px;padding:6px 8px;font:inherit}
#v2106MessengerPage .pe-st-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:12px;background:#fff}
#v2106MessengerPage .pe-st-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:760px}
#v2106MessengerPage .pe-st-table th{background:#f8fafc;color:#475569;font-weight:700;text-align:left;padding:9px 10px;border-bottom:1px solid #e2e8f0;white-space:nowrap}
#v2106MessengerPage .pe-st-table td{padding:9px 10px;border-bottom:1px solid #f1f5f9;vertical-align:top}
#v2106MessengerPage .pe-st-table .num{text-align:right;font-variant-numeric:tabular-nums}
#v2106MessengerPage .pe-st-table td.rank{width:42px;font-size:18px;text-align:center}
#v2106MessengerPage .pe-st-table tr.pe-st-top td{background:#fffbeb}
#v2106MessengerPage .pe-st-table td.who button{border:0;background:none;padding:0;font:inherit;font-weight:700;color:#1d4ed8;cursor:pointer;text-align:left}
#v2106MessengerPage .pe-st-table td.who small,#v2106MessengerPage .pe-st-table td small{display:block;color:#94a3b8;font-size:11.5px}
#v2106MessengerPage .pe-st-table td.overall{font-size:17px;font-weight:800;color:#b45309;white-space:nowrap}
#v2106MessengerPage .pe-st-table.dim td{color:#64748b}
#v2106MessengerPage .pe-st-avg{color:#b45309;white-space:nowrap}
#v2106MessengerPage .pe-st-parts{font-size:11.5px;color:#64748b}
#v2106MessengerPage .pe-st-more td{background:#f8fafc}
#v2106MessengerPage .pe-st-c{font-size:13px;margin:3px 0}
#v2106MessengerPage .pe-st-c small{color:#94a3b8}
#v2106MessengerPage .pe-st-c.admin{color:#475569}
#v2106MessengerPage .pe-st-stars{color:#f59e0b;letter-spacing:1px}
#v2106MessengerPage .pe-st-none{color:#cbd5e1}
#v2106MessengerPage .pe-st-note{color:#64748b;font-size:13px;padding:10px 2px}
#v2106MessengerPage .pe-st-note.bad{color:#b91c1c}
#v2106MessengerPage .pe-st-sub{margin:6px 0 0;font-size:14px;color:#475569}
#v2106MessengerPage .pe-st-legend{font-size:12px;color:#64748b;line-height:1.6}
#v2105OrderDetailBody .pe-st-box{margin-top:14px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;display:grid;gap:8px}
#v2105OrderDetailBody .pe-st-line{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13.5px}
#v2105OrderDetailBody .pe-st-line>span:first-child{min-width:56px;color:#64748b;font-weight:700}
#v2105OrderDetailBody .pe-st-stars{color:#f59e0b;letter-spacing:1px}
#v2105OrderDetailBody .pe-st-note{font-size:12.5px;color:#64748b}
#v2105OrderDetailBody .pe-st-text{border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px;font:inherit;font-size:13px}
#v2105OrderDetailBody .pe-st-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pe-st-msg{font-size:13px;font-weight:700;color:#047857}.pe-st-msg.bad{color:#b91c1c}
.pe-st-pick{display:inline-flex;gap:4px}
.pe-st-pick button{width:36px;height:36px;border:1px solid #e2e8f0;border-radius:9px;background:#f8fafc;color:#cbd5e1;font-size:20px;line-height:1;cursor:pointer;padding:0}
.pe-st-pick button.on{color:#f59e0b;background:#fffbeb;border-color:#fcd34d}
#admin#admin.v21-admin .pe-st-pick button{width:36px!important;height:36px!important;min-height:0!important;padding:0!important;font-size:20px!important}
.cp-detail-box.pe-st-cbox{display:grid;gap:8px}
/* V21.16.33 the Messenger's all-time customer stars beside their name */
#cpHistoryDetail .pe-st-ms{white-space:nowrap;color:#b45309;font-weight:700;font-variant-numeric:tabular-nums}
#cpHistoryDetail .pe-st-ms small{color:#64748b;font-weight:500}
.cp-detail-box.pe-st-cbox .pe-st-text{width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:8px 10px;font:inherit;resize:vertical}
.cp-detail-box.pe-st-cbox .pe-st-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.cp-detail-box.pe-st-cbox .cp-share-btn{min-height:42px;padding:8px 16px;border-radius:10px;border:0;background:#111827;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.pe-st-rcard{margin:10px 12px;padding:12px 14px;border-radius:14px;background:#fff;border:1px solid #fde68a;box-shadow:0 2px 10px rgba(15,23,42,.06);display:grid;gap:6px;color:#111827}
.pe-st-rcard .pe-st-rhead{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.pe-st-rcard .pe-st-rhead span{font-size:12px;color:#64748b}
.pe-st-rcard .pe-st-rbig{font-size:26px;font-weight:800;color:#b45309;display:flex;align-items:baseline;gap:8px}
.pe-st-rcard .pe-st-rbig small{font-size:12px;font-weight:600;color:#64748b}
.pe-st-rcard .pe-st-rgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.pe-st-rcard .pe-st-rgrid div{background:#fffbeb;border-radius:10px;padding:6px 8px;display:grid;gap:1px}
.pe-st-rcard .pe-st-rgrid span{font-size:11px;color:#92400e}
.pe-st-rcard .pe-st-rgrid small{font-size:10.5px;color:#64748b}
.pe-st-rcard .pe-st-avg{color:#b45309}
.pe-st-rcard .pe-st-none{color:#cbd5e1}
.pe-st-rcard .pe-st-parts{font-size:11.5px;color:#64748b}
.pe-st-rcard .pe-st-c{font-size:12.5px;color:#334155}
.pe-st-rcard .pe-st-stars{color:#f59e0b}
.pe-st-rcard .pe-st-note{font-size:12.5px;color:#64748b}
#admin#admin.v21-admin #v2106MessengerPage .pe-st-table td.who{min-width:180px;white-space:nowrap}
#admin#admin.v21-admin #v2106MessengerPage .pe-st-table td.who button{white-space:nowrap!important;width:auto!important;min-height:0!important;height:auto!important;padding:0!important;margin:0!important;background:none!important;border:0!important;box-shadow:none!important;color:#1d4ed8!important;font-weight:700!important;font-size:14px!important}
#admin#admin.v21-admin #v2106MessengerPage .pe-st-table td:nth-child(6){min-width:230px}
#admin#admin.v21-admin #v2106MessengerPage .pe-st-table td:nth-child(4),#admin#admin.v21-admin #v2106MessengerPage .pe-st-table td:nth-child(5){white-space:nowrap}
#admin#admin.v21-admin #v2106MessengerPage .pe-st-head h3{font-size:18px!important;margin:0!important}

/* V21.16.06 iPad: the cleanup tool's checkbox ("แสดงเฉพาะรายการที่ดูเป็นงานทดสอบ") took app.css's input{width:100%} and
   squeezed its text into a narrow column (owner's iPad photo). Real checkbox size, and the row spans the whole card. */
#admin .v2140-cleanup-controls .v2140-cleanup-check{grid-column:1/-1;display:flex;align-items:flex-start;gap:10px;width:auto}
#admin .v2140-cleanup-controls .v2140-cleanup-check input[type=checkbox]{width:22px!important;min-width:22px;height:22px!important;flex:0 0 22px;margin:2px 0 0!important;padding:0!important}
#admin .v2140-cleanup-controls .v2140-cleanup-check span{flex:1 1 auto;min-width:0}
/* V21.16.06 the V16 scan card's "📸 ถ่ายรูป" is now a <label for="scanFile"> (iPad) — keep it looking like the old button */
#admin label.pe-v7cta-label,label.pe-v7cta-label{display:block;box-sizing:border-box;text-align:center;cursor:pointer;font-weight:800;font-size:16px;color:#5b21b6;background:#fff;border:0;border-radius:14px;padding:13px 16px;margin-top:14px;width:100%;-webkit-tap-highlight-color:transparent;user-select:none}
label.pe-v7cta-label:active{transform:translateY(1px);filter:brightness(.97)}
label.pe-v7cta-label:focus-visible{outline:3px solid #c4b5fd;outline-offset:2px}

/* V21.16.08 ถ่ายรูปใบงานเข้า V17.1 Bulk Destination (assets/pe-bulkscan.js) */
#admin .bulk-panel .pe-bs{display:grid;gap:6px;align-content:start}
#admin#admin.v21-admin .bulk-panel label.pe-bs-btn,.bulk-panel label.pe-bs-btn{display:flex!important;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:10px 14px!important;border-radius:12px;background:#4338ca!important;color:#fff!important;font-size:15px!important;font-weight:800!important;cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;user-select:none}
.bulk-panel label.pe-bs-btn:active{filter:brightness(.95);transform:translateY(1px)}
#admin .bulk-panel .pe-bs-review{margin:12px 0;padding:12px 14px;border:1px solid #c7d2fe;border-radius:14px;background:#eef2ff;display:grid;gap:8px}
#admin .bulk-panel .pe-bs-review.hide{display:none}
#admin .bulk-panel .pe-bs-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
#admin .bulk-panel .pe-bs-head span{font-weight:800;color:#4338ca}
/* V21.16.09 — 1 photo = 1 drop-off: one card per photo (photo · ชื่อบริษัท/ที่อยู่ · ผู้ติดต่อ · เบอร์) */
#admin .bulk-panel .pe-bs-cards{display:grid;gap:10px}
#admin .bulk-panel .pe-bs-cards:empty{display:none}
#admin .bulk-panel .pe-bs-card{display:grid;grid-template-columns:120px minmax(0,1fr);gap:12px;padding:12px;border:1px solid #c7d2fe;border-radius:12px;background:#fff}
#admin .bulk-panel .pe-bs-card.big{grid-template-columns:minmax(0,1fr)}
#admin#admin.v21-admin .bulk-panel .pe-bs-thumb{display:block;width:100%;min-height:0!important;height:auto;padding:0!important;margin:0;border:1px solid #e0e7ff!important;border-radius:8px!important;background:#f1f5f9!important;overflow:hidden;cursor:zoom-in;align-self:start}
#admin .bulk-panel .pe-bs-thumb img{display:block;width:100%;height:150px;object-fit:cover;object-position:top}
#admin#admin.v21-admin .bulk-panel .pe-bs-card.big .pe-bs-thumb{cursor:zoom-out}
#admin .bulk-panel .pe-bs-card.big .pe-bs-thumb img{height:auto;max-height:80vh;object-fit:contain}
#admin .bulk-panel .pe-bs-fields{display:grid;gap:8px;min-width:0;align-content:start}
#admin .bulk-panel .pe-bs-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#admin .bulk-panel .pe-bs-card-head b{color:#3730a3;font-size:15px}
#admin .bulk-panel .pe-bs-card-head span{color:#64748b;font-size:13px}
#admin#admin.v21-admin .bulk-panel button.pe-bs-del{margin-left:auto;min-height:34px!important;padding:4px 12px!important;border:1px solid #fecaca!important;border-radius:8px!important;background:#fff!important;color:#b91c1c!important;font-size:13px!important;font-weight:700}
#admin#admin.v21-admin .bulk-panel label.pe-bs-f{display:grid;gap:4px;margin:0;font-size:13px!important;font-weight:700;color:#475569}
#admin#admin.v21-admin .bulk-panel .pe-bs-f textarea,#admin#admin.v21-admin .bulk-panel .pe-bs-f input{width:100%;margin:0;padding:8px 10px!important;border:1px solid #cbd5e1!important;border-radius:8px!important;background:#fff!important;color:#0f172a!important;font-weight:500}
#admin#admin.v21-admin .bulk-panel .pe-bs-f textarea{min-height:84px!important;resize:vertical}
#admin .bulk-panel .pe-bs-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:8px}
#admin .bulk-panel .pe-bs-note{font-size:13px;font-weight:700;color:#b91c1c}
#admin .bulk-panel .pe-bs-note:empty,#admin .bulk-panel .pe-bs-alts:empty{display:none}
#admin .bulk-panel .pe-bs-alts{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:#475569}
#admin#admin.v21-admin .bulk-panel .pe-bs-alts button{min-height:32px!important;padding:5px 12px!important;border:1px dashed #a5b4fc!important;border-radius:999px!important;background:#eef2ff!important;color:#3730a3!important;font-size:13px!important;font-weight:600;text-align:left;white-space:normal}
@media (max-width:600px){#admin .bulk-panel .pe-bs-card{grid-template-columns:minmax(0,1fr)}#admin .bulk-panel .pe-bs-row{grid-template-columns:minmax(0,1fr)}}
#admin .bulk-panel .pe-bs-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#admin#admin.v21-admin .bulk-panel label.pe-bs-more,.bulk-panel label.pe-bs-more{display:inline-flex!important;align-items:center;min-height:40px;padding:8px 14px!important;border-radius:10px;border:1px solid #a5b4fc;background:#fff!important;color:#3730a3!important;font-size:14px!important;font-weight:700!important;cursor:pointer}
#admin .bulk-panel .pe-bs-status{min-height:18px;font-size:13px;font-weight:700;color:#3730a3}
#admin .bulk-panel .pe-bs-status.bad{color:#b91c1c}

/* V21.16.11 create page: what a part-timer gets (section 05) + each Messenger's pay in "เลือก Messenger" */
.cx-money .cx-money-alt{display:block;margin-top:6px;font-size:13px!important;font-weight:700;color:#9a6a3e;font-variant-numeric:tabular-nums}
.cx-money .cx-money-alt[hidden]{display:none}
.v507-assign-option .v507-assign-pay{font-weight:800;color:#047857;font-variant-numeric:tabular-nums}

/* V21.16.13 ขอถอนเงิน — Messenger card button + request window (pe-parttime.js) */
.pe-pt-card .pe-wd{display:grid;gap:6px;margin:12px 0 4px}
.pe-pt-card .pe-wd-btn{min-height:50px;border:0;border-radius:12px;background:#15803d;color:#fff;font-size:16px;font-weight:800;cursor:pointer;padding:10px 14px;font-variant-numeric:tabular-nums}
.pe-pt-card .pe-wd-btn:disabled{background:#e2e8f0;color:#64748b;cursor:not-allowed}
.pe-pt-card .pe-wd-rule{font-size:12px;color:#64748b;text-align:center}
.pe-wd-note{margin:0;padding:8px 10px;border-radius:10px;font-size:13.5px;line-height:1.45}
.pe-wd-note.wait{background:#fffbeb;color:#92400e;border:1px solid #fde68a}
.pe-wd-note.ok{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}
.pe-wd-note.bad{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}
.pe-wd-bankbox{display:grid;gap:8px;margin:0 0 12px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}
.pe-wd-bankbox .pe-pt-field{margin-bottom:4px}
.pe-pt-field select{height:46px;padding:0 10px;border:1px solid #d1d5db;border-radius:12px;font-size:16px;font-weight:700;background:#fff;color:#1f2530}
.pe-wd-bankline{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pe-wd-bankline span{display:grid;gap:2px;font-size:15px;font-variant-numeric:tabular-nums}
.pe-wd-bankline small{color:#64748b;font-size:13px}
.pe-wd-err{margin:0;min-height:18px;color:#b91c1c;font-size:13.5px;font-weight:700}
/* Admin: requests waiting for a transfer (tab "เครดิตพาร์ทไทม์") + the count on the menu */
#pmPartTimePane .pe-wd-admin{border:1px solid #fcd34d;background:#fffbeb}
.pe-wd-admin-title{display:block;margin-bottom:8px;font-size:15px;color:#92400e}
.pe-wd-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.pe-wd-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:#fff;border:1px solid #fde68a;border-radius:10px;flex-wrap:wrap}
.pe-wd-who{display:grid;gap:3px;min-width:0}
.pe-wd-who small{color:#64748b;font-size:12.5px}
.pe-wd-amt{color:#15803d;font-variant-numeric:tabular-nums}
.pe-wd-bank b{color:#0f172a;letter-spacing:.3px;font-variant-numeric:tabular-nums}
.pe-wd-who .pe-wd-over{color:#b91c1c;font-weight:700}
.pe-wd-actions{display:flex;gap:8px;flex-wrap:wrap}
.pe-wd-admin-hint{margin:8px 0 0;font-size:12.5px;color:#92400e}
.pe-wd-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;margin-left:6px;border-radius:999px;background:#dc2626;color:#fff;font-size:12px;font-weight:800;line-height:1}

/* V21.16.14 tab "คำขอถอนเงิน" (Messenger page) + "💸 ขอถอนเงิน N" in the Admin header (pe-parttime.js) */
#pmWithdrawPane{margin-top:14px}
.pe-wdt-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:14px}
.pe-wdt-tiles>div{display:grid;gap:2px;padding:14px 16px;border:1px solid #e9ebef;border-radius:14px;background:#fff}
.pe-wdt-tiles>div.due{border-color:#fcd34d;background:#fffbeb}
.pe-wdt-tiles small{font-size:12px;font-weight:700;color:#7a818c}
#admin#admin.v21-admin .pe-wdt-tiles b,.pe-wdt-tiles b{font-size:22px!important;line-height:1.25!important;font-weight:800;color:#1f2530;font-variant-numeric:tabular-nums}
.pe-wdt-tiles span{font-size:13px;color:#4b5563;font-variant-numeric:tabular-nums}
.pe-wdt-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.pe-wdt-chips{display:flex;flex-wrap:wrap;gap:6px}
#admin#admin.v21-admin .pe-wdt-chip,.pe-wdt-chip{min-height:36px;padding:0 14px!important;border-radius:999px!important;border:1px solid #dcdfe5!important;background:#fff!important;color:#1f2530!important;font-size:14px!important;font-weight:700;cursor:pointer}
#admin#admin.v21-admin .pe-wdt-chip.on,.pe-wdt-chip.on{background:#15294a!important;border-color:#15294a!important;color:#fff!important}
.pe-wdt-chip em{font-style:normal;margin-left:4px;opacity:.75}
.pe-wdt-who{display:inline-flex;align-items:center;gap:8px;font-weight:700}
.pe-wdt-who select{height:38px;min-width:180px;padding:0 10px;border:1px solid #dcdfe5;border-radius:10px;background:#fff}
.pe-wdt-table td small{display:block;font-size:12px;color:#7a818c}
.pe-wdt-table .num{text-align:right!important;white-space:nowrap;font-variant-numeric:tabular-nums}
.pe-wdt-acc{color:#0f172a;letter-spacing:.3px;font-variant-numeric:tabular-nums}
.pe-wdt-st{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12.5px;font-weight:800;white-space:nowrap}
.pe-wdt-st.wait{background:#fef3c7;color:#92400e}
.pe-wdt-st.ok{background:#dcfce7;color:#166534}
.pe-wdt-st.bad{background:#fee2e2;color:#991b1b}
.pe-wdt-table tr.pending td{background:#fffdf5}
.pe-wdt-actions{white-space:nowrap;text-align:right}
.pe-wdt-actions .pm-btn+.pm-btn{margin-left:6px}
.pe-wd-none{margin:0 0 14px;font-size:13.5px;color:#4b5563}
.pe-wd-admin-title .pe-pt-link{margin-left:8px;font-size:13px}
#admin#admin.v21-admin .v21-head-actions .pe-wd-pill,.pe-wd-pill{display:inline-flex;align-items:center;gap:4px;height:38px;padding:0 14px!important;border-radius:999px!important;border:1px solid #fca5a5!important;background:#fef2f2!important;color:#b91c1c!important;font-size:14px!important;font-weight:800;cursor:pointer;white-space:nowrap}
@media (max-width:720px){.pe-wdt-actions{white-space:normal}.pe-wdt-actions .pm-btn{width:100%;margin:4px 0 0!important}}

/* V21.16.15 "บริษัทโอนเงินให้แล้ว" box on the part-timer's phone (stays until รับทราบ; above the job sheet) */
.pe-pt-modal.pe-wdn-modal{z-index:100140}
.pe-wdn{text-align:center}
.pe-wdn-paid{display:grid;justify-items:center;gap:6px;padding:6px 0 4px}
.pe-wdn-ico{font-size:44px;line-height:1}
.pe-wdn h3{margin:0;font-size:20px;font-weight:800}
.pe-wdn-paid h3{color:#15803d}
.pe-wdn-amt{font-size:34px;font-weight:800;color:#15803d;font-variant-numeric:tabular-nums}
.pe-wdn p{margin:0;font-size:14px;color:#374151;font-variant-numeric:tabular-nums}
.pe-wdn small{display:block;margin-top:6px;font-size:13px;color:#6b7280}
.pe-wdn-bad{margin-top:12px;padding:12px;border:1px solid #fecaca;border-radius:12px;background:#fef2f2}
.pe-wdn-bad h3{color:#b91c1c;font-size:17px}
.pe-wdn .pe-pt-modal-actions{justify-content:center}
.pe-wdn .pe-pt-modal-actions .pm-btn{min-width:180px;font-size:17px}
/* Admin credit table: the transfer button shows where that person stands */
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-btn.pe-pt-btn-paid,.pm-btn.pe-pt-btn-paid{background:#16a34a!important;border:1px solid #16a34a!important;color:#fff!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-btn.pe-pt-btn-wait,.pm-btn.pe-pt-btn-wait{background:#fef3c7!important;border:1px solid #f59e0b!important;color:#92400e!important}
#v2106MessengerPage .pm-btn:active{transform:translateY(1px);filter:brightness(.92)}
/* V21.16.15 after the app updated itself */
.pe-updated-toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:100150;max-width:calc(100vw - 32px);padding:10px 16px;border-radius:999px;background:#15294a;color:#fff;font-size:14px;font-weight:700;box-shadow:0 10px 30px rgba(0,0,0,.25);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* V21.16.16 QR รับเงิน (pe-payqr.js) — full-screen QR above everything, easy to scan from another phone */
.pe-payqr-overlay{position:fixed;inset:0;z-index:100160;display:grid;place-items:center;padding:14px;background:rgba(15,23,42,.6);overflow:auto}
.pe-payqr-card{position:relative;width:min(440px,100%);max-height:calc(100vh - 28px);overflow:auto;display:grid;justify-items:center;gap:8px;padding:18px 18px 16px;border-radius:20px;background:#fff;color:#1f2530;text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.pe-payqr-x{position:absolute;top:8px;right:10px;width:40px;height:40px;border:0!important;border-radius:999px!important;background:#f1f5f9!important;color:#334155!important;font-size:24px!important;line-height:1;cursor:pointer;padding:0!important}
.pe-payqr-title{font-size:18px;font-weight:800;padding:0 34px}
.pe-payqr-amt{display:grid;gap:2px;width:100%;padding:10px 12px;border-radius:14px;background:#ecfdf5;border:1px solid #a7f3d0}
.pe-payqr-amt small{font-size:12.5px;color:#047857;font-weight:700}
.pe-payqr-amt b{font-size:30px;font-weight:800;color:#15803d;font-variant-numeric:tabular-nums}
.pe-payqr-img{display:block;width:100%;max-width:340px;height:auto;border-radius:14px;background:#fff}
.pe-payqr-acc{margin:0;font-size:15px;font-weight:800}
.pe-payqr-note{margin:0;font-size:13px;color:#4b5563;line-height:1.5}
.pe-payqr-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-top:4px}
.pe-payqr-save,.pe-payqr-done{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:12px;font-size:15px;font-weight:800;text-decoration:none;cursor:pointer}
.pe-payqr-save{background:#15294a;color:#fff!important;border:1px solid #15294a}
.pe-payqr-done{background:#fff!important;color:#1f2530!important;border:1px solid #d1d5db!important}
/* customer order box */
.pe-payqr-box .pe-payqr-row{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:center;margin-top:8px}
.pe-payqr-thumb{display:block;width:96px;padding:0;border:1px solid #e5e7eb;border-radius:12px;background:#fff;overflow:hidden;cursor:zoom-in}
.pe-payqr-thumb img{display:block;width:100%;height:auto}
.pe-payqr-info{display:grid;gap:4px;min-width:0}
.pe-payqr-info small{font-size:12px;color:#6b7280;font-weight:700}
.pe-payqr-due{font-size:22px;font-weight:800;color:#15803d;font-variant-numeric:tabular-nums}
.pe-payqr-info span{font-size:12.5px;color:#4b5563;line-height:1.45}
.pe-payqr-btn{justify-self:start;min-height:40px;padding:6px 14px;border:0;border-radius:10px;background:#15294a;color:#fff;font-size:14px;font-weight:800;cursor:pointer}
/* Messenger job detail + wallet */
.pe-payqr-rider{display:grid;gap:4px;margin:10px 12px}
.pe-payqr-rider-btn{min-height:50px;border:0;border-radius:12px;background:#15803d;color:#fff;font-size:16px;font-weight:800;cursor:pointer;padding:8px 12px}
.pe-payqr-rider small{font-size:12.5px;color:#4b5563;text-align:center}
.pe-payqr-wallet{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;padding:12px 14px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}
.pe-payqr-wallet b{display:block;font-size:15px;color:#1e3a8a}
.pe-payqr-wallet small{display:block;font-size:12.5px;color:#475569}
.pe-payqr-wallet button{flex:none;min-height:42px;padding:6px 14px;border:0;border-radius:10px;background:#1d4ed8;color:#fff;font-size:14px;font-weight:800;cursor:pointer}
/* Admin job detail */
#v2105OrderDetailBody .pe-payqr-admin{margin-top:14px;padding:12px 14px;border:1px solid #bbf7d0;border-radius:12px;background:#f0fdf4;display:grid;gap:6px}
#v2105OrderDetailBody .pe-payqr-admin span{font-size:14px;color:#334155}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-payqr-admin .pe-payqr-btn{background:#15294a!important;border:1px solid #15294a!important;color:#fff!important;min-height:38px;padding:6px 14px!important;border-radius:10px!important;font-size:14px!important}

/* V21.16.17 งานแทน: the km in the job detail says where it is measured from */
#admin#admin.v21-admin #v2105OrderDetailBody .v2105-detail-stat b .pe-km-note{display:block;font-size:11.5px;font-weight:500;color:#64748b;line-height:1.3;margin-top:1px}

/* V21.16.18 แถบเมนูซ้ายขนาดตัวหนังสือเท่ากันทุกหน้า — หน้า "คำสั่งงาน" กับ "Messenger" มีกฎใน app.css ที่ย่อทุกอย่างเป็น 13px
   (#admin#admin.v21-admin.v21-view-orders * / .v21-view-messengers *) ซึ่งไปย่อแถบเมนูซ้ายด้วย · หน้าอื่นเป็น 16px ทั้งแถบ
   กฎนี้ตรึงแถบเมนูซ้ายไว้ที่ 16px เท่าหน้าอื่น (ตัวเนื้อหาของสองหน้านั้นยังเป็น 13px เหมือนเดิม) */
#admin#admin.v21-admin aside.v21-sidebar,#admin#admin.v21-admin aside.v21-sidebar *{font-size:16px!important}
/* V21.16.19 จุดที่ Messenger แจ้ง "ไม่สำเร็จ" — กล่องตรวจ 3 ปุ่มบนสุดของรายละเอียดใบงาน (เปลี่ยนเป็นส่งสำเร็จ · อนุมัติ · ไม่อนุมัติ) */
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-box{margin:0 0 14px;padding:12px 14px;border:1px solid #fcd34d;border-radius:12px;background:#fffbeb;display:grid;gap:10px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-box h4{margin:0;font-size:15px!important;font-weight:800;color:#92400e}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-item{display:grid;gap:7px;padding-top:10px;border-top:1px dashed #fde68a}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-box h4+.pe-sr-item{border-top:0;padding-top:0}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-head b{font-size:15px!important;color:#1f2937}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-state{font-size:13px!important;font-weight:700;color:#b45309;background:#fef3c7;border-radius:999px;padding:2px 10px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-item.done .pe-sr-state{color:#334155;background:#e2e8f0}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-why,#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-note{font-size:14px!important;color:#475569;line-height:1.5}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-why b{font-size:14px!important;color:#b91c1c}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-photo{justify-self:start}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-photo img{width:96px;height:96px;object-fit:cover;border-radius:10px;border:1px solid #e5e7eb;display:block}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-input{width:100%;min-height:40px;padding:6px 10px!important;border:1px solid #d1d5db!important;border-radius:10px!important;background:#fff!important;font-size:14px!important}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-actions{display:flex;flex-wrap:wrap;gap:8px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-actions .pe-sr-btn{min-height:40px;padding:6px 14px!important;font-size:14px!important;width:auto}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-actions .pe-sr-btn.armed{outline:3px solid #f59e0b;outline-offset:1px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-sr-actions .pe-sr-btn[disabled]{opacity:.45;cursor:default}
/* V21.16.54 ปิดงานแทน Messenger — folded away by default */
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-box{margin:0 0 14px;padding:10px 14px;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-box summary{cursor:pointer;font-size:15px!important;font-weight:800;color:#334155;list-style:revert}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-box summary small{font-size:13px!important;font-weight:500;color:#64748b}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-box[open]{display:grid;gap:10px;background:#fff}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-hint{margin:0;font-size:13px!important;color:#b45309;line-height:1.5}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-item{display:grid;gap:7px;padding-top:10px;border-top:1px dashed #e2e8f0}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-item b{font-size:15px!important;color:#1f2937}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-btn{min-height:40px;padding:6px 14px!important;font-size:14px!important;width:auto}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-cl-btn[disabled]{opacity:.45;cursor:default}
/* V21.16.23 แอปพาร์ทไทม์ หน้าเงินในระบบ: การ์ดเครดิตพาร์ทไทม์ขึ้นไปแทนการ์ด "รายได้จากงานที่อนุมัติแล้ว" (ซ้ำกับรายได้สะสมในการ์ดเครดิต) */
#v2156WalletScreen .v2156-wallet-card.pe-pt-hide{display:none!important}
/* V21.16.24 แอป Messenger รายละเอียดงาน: สถานะ (เช่น "สำเร็จ") ตัวใหญ่ขึ้น อยู่มุมขวาบนของหัวสีเข้ม
   เจ้าของ: "ตรงคำว่าสำเร็จเล็กเกินไปอยากให้ตัวใหญ่กว่านี้ และให้อยู่ตรงมุมขวาบน" — จัดเป็นตาราง 2 ช่อง เลขงานไม่ถูกทับแม้สถานะยาว */
#riderJobDetailBody .rider-detail-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:12px;align-items:start}
#riderJobDetailBody .rider-detail-hero>*{grid-column:1/-1}
#riderJobDetailBody .rider-detail-hero>.rider-detail-jobid{grid-column:1;grid-row:1;overflow-wrap:anywhere;align-self:center}
#riderJobDetailBody .rider-detail-hero>.rider-detail-status{grid-column:2;grid-row:1;margin-top:0;align-self:center;justify-self:end;max-width:52vw;
  font-size:21px;line-height:1.25;font-weight:900;text-align:center;padding:6px 14px;border-radius:999px;background:rgba(253,230,138,.14);border:1px solid rgba(253,230,138,.45)}
/* V21.16.25 หน้าแอดมิน รายละเอียดใบงานพาร์ทไทม์: การ์ด "พาร์ทไทม์ได้ 80%" ในแถวตัวเลขบนสุด ต่อจากค่าขนส่ง
   เจ้าของ: "ทำไมตรงดูรายละเอียดหน้าแอดมินของพาร์ทไทม์ถึงไม่เห็นราคาที่พนักงานได้ ตรงนี้" — แถวที่มีการ์ดนี้ขยายเป็น 6 ช่อง (จอเล็ก 2 ช่องเหมือนเดิม) */
#admin#admin.v21-admin #v2105OrderDetailBody .v2105-detail-stats.pe-pt-paystats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))!important}
#admin#admin.v21-admin #v2105OrderDetailBody .v2105-detail-stat.pe-pt-paystat{background:#f0fdf4!important;border-color:#bbf7d0!important}
#admin#admin.v21-admin #v2105OrderDetailBody .v2105-detail-stat.pe-pt-paystat b{color:#15803d!important}
@media(max-width:760px){#admin#admin.v21-admin #v2105OrderDetailBody .v2105-detail-stats.pe-pt-paystats{grid-template-columns:1fr 1fr!important}}
/* V21.16.26 หน้า ยอดขาย / ค่าบริการ: หัว "ค่าขนส่ง" คลุม 3 ช่อง (ราคาเต็ม · พนักงานได้ · บริษัทได้) · ประเภทพนักงานใต้ยอดพนักงานได้
   เจ้าของ: "ค่าขนส่ง แยกออก … ช่องแรกราคาเต็ม ช่องที่สองส่วนที่พนักงานได้ ช่องที่สาม ส่วนที่บริษัทได้ ทำแบบนี้ทั้งสามประเภทพนักงาน" */
.sf-table thead th[rowspan]{vertical-align:bottom}
.sf-table thead th.sf-group{text-align:center!important;border-bottom:1px solid var(--sf-line)}
.sf-table td .sf-sub{display:block;font-size:11.5px!important;font-weight:600;color:var(--sf-muted)!important;margin-top:2px}
.sf-table td.sf-company{font-weight:700!important}
.sf-list .sf-split-note{padding:0 22px 12px;line-height:1.5}
.sf-kpi.sf-kpi-company b{color:#15803d}

/* V21.16.35 Messenger pickers as cards — owner (iPad): "รายชื่อเรียงกันมา ดูชื่อยากมาก ยิ่งถ้ามีหลายคนดูลำบาก".
   The create page's window sits inside #admin, where "#admin#admin.v21-admin *" forces 16px — hence the 3-id selectors. */
.pe-pick-search{display:block;width:100%;box-sizing:border-box;min-height:46px;margin:0 0 10px;padding:10px 14px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;font:inherit;font-size:16px;color:#0f172a}
.pe-pick-search:focus{outline:none;border-color:#c9a227;box-shadow:0 0 0 3px rgba(201,162,39,.2)}
.pe-pick-none{grid-column:1/-1;padding:18px;text-align:center;color:#64748b;font-size:14px}
.pe-pick-av{width:52px;height:52px;border-radius:50%;object-fit:cover;background:#f1f5f9;border:1px solid #e2e8f0;flex:none}
/* create page: "มอบหมายงานทันที" */
#admin#admin #v507AssignOverlay .v507-modal{width:min(820px,calc(100vw - 32px));max-width:none;max-height:calc(100vh - 36px);max-height:calc(100dvh - 36px);display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box}
#admin#admin #v507AssignOverlay .v507-assign-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;align-content:start;overflow:auto;flex:1 1 auto;min-height:120px;padding:2px 2px 4px;-webkit-overflow-scrolling:touch}
#admin#admin #v507AssignOverlay .v507-assign-option{position:relative;display:grid!important;grid-template-columns:52px minmax(0,1fr);column-gap:12px;row-gap:6px;align-items:center!important;min-height:78px;margin:0;padding:12px 14px;border:2px solid #e5e7eb;border-radius:14px;background:#fff;cursor:pointer;box-sizing:border-box}
#admin#admin #v507AssignOverlay .v507-assign-option[hidden]{display:none!important}
#admin#admin #v507AssignOverlay .v507-assign-option>input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
#admin#admin #v507AssignOverlay .v507-assign-option .pe-pick-av{grid-row:1/3}
#admin#admin #v507AssignOverlay .v507-assign-text{min-width:0}
#admin#admin #v507AssignOverlay .v507-assign-name{font-size:18px!important;font-weight:800!important;color:#0f172a;line-height:1.25}
#admin#admin #v507AssignOverlay .v507-assign-code{font-style:normal;font-size:12.5px!important;color:#64748b;margin-left:8px;white-space:nowrap}
#admin#admin #v507AssignOverlay .v507-assign-text small{display:block;margin-top:3px;font-size:13.5px!important;color:#475569}
#admin#admin #v507AssignOverlay .v507-assign-text small b{font-size:13.5px!important}
#admin#admin #v507AssignOverlay .v507-assign-state{grid-column:2;justify-self:start;margin:0;font-size:12.5px!important}
#admin#admin #v507AssignOverlay .v507-assign-option.pe-picked,#admin#admin #v507AssignOverlay .v507-assign-option:has(input:checked){border-color:#c9a227;background:#fffbeb;box-shadow:0 0 0 3px rgba(201,162,39,.18)}
#admin#admin #v507AssignOverlay .v507-assign-option.blocked{opacity:.5;cursor:not-allowed}
#admin#admin #v507AssignOverlay .pe-pick-search{font-size:16px!important}
#admin#admin #v507AssignOverlay .v507-modal-actions{flex:none}
/* saved job: "มอบหมาย" / "เปลี่ยน Messenger" (the <select> stays for the rules, hidden) */
#assignmentOverlay select.pe-pick-native{display:none}
#assignmentOverlay .assign-modal:has(#peAssignCards){width:min(820px,calc(100vw - 32px));max-width:none;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;box-sizing:border-box}
.pe-pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;max-height:min(52vh,560px);overflow:auto;padding:2px 2px 4px;margin-bottom:8px;-webkit-overflow-scrolling:touch}
.pe-pick-card{display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:12px;row-gap:6px;align-items:center;min-height:78px;padding:12px 14px;border:2px solid #e5e7eb;border-radius:14px;background:#fff;text-align:left;font:inherit;color:#0f172a;cursor:pointer}
.pe-pick-card[hidden]{display:none}
.pe-pick-card .pe-pick-av{grid-row:1/3}
.pe-pick-text{min-width:0}
.pe-pick-name{font-size:18px;font-weight:800!important;line-height:1.25}
.pe-pick-code{font-style:normal;font-size:12.5px;color:#64748b;margin-left:8px;white-space:nowrap}
.pe-pick-text small{display:block;margin-top:3px;font-size:13.5px;color:#475569}
.pe-pick-tag{grid-column:2;justify-self:start;font-style:normal;font-size:12.5px;font-weight:700;white-space:nowrap;padding:4px 10px;border-radius:999px;background:#f1f5f9;color:#334155}
.pe-pick-tag[data-tone=green]{background:#dcfce7;color:#166534}.pe-pick-tag[data-tone=amber]{background:#fef3c7;color:#92400e}
.pe-pick-tag[data-tone=orange]{background:#ffedd5;color:#9a3412}.pe-pick-tag[data-tone=red]{background:#fee2e2;color:#991b1b}
.pe-pick-tag[data-tone=purple]{background:#ede9fe;color:#5b21b6}.pe-pick-tag[data-tone=slate]{background:#e2e8f0;color:#334155}
.pe-pick-tag[data-tone=gray]{background:#e5e7eb;color:#4b5563}
.pe-pick-card.pe-picked{border-color:#c9a227;background:#fffbeb;box-shadow:0 0 0 3px rgba(201,162,39,.18)}
.pe-pick-card:disabled{opacity:.5;cursor:not-allowed}
.pe-pick-card:focus-visible,#admin#admin #v507AssignOverlay .v507-assign-option:focus-within{outline:3px solid #60a5fa;outline-offset:2px}
@media (max-width:640px){.pe-pick-grid,#admin#admin #v507AssignOverlay .v507-assign-list{grid-template-columns:1fr}}
/* V21.16.46 owner (iPad): "ชื่อยังทับกันอยู่เล็กน้อย อยากให้ลงตัวกว่านี้ · ใต้ชื่อแต่ละคน ที่มีคำว่า พาร์ทไทม์ งานแทน งานด่วน อยากให้ไฮไลท์เป็นสี
   ต่างกัน" — the vowel and tone marks above and below a Thai letter need more room than 1.25 lines (Safari draws them taller), so
   names get 1.5, the line under them 1.9, the cards line up from the top; the type is a coloured label: งานด่วน orange ·
   งานแทน / เงินเดือน blue · พาร์ทไทม์ pink (a square-ish label, unlike the round availability tag). */
.pe-pick-card,#admin#admin #v507AssignOverlay .v507-assign-option{align-items:start!important;row-gap:8px!important;padding:14px!important;min-height:88px!important}
.pe-pick-card .pe-pick-av,#admin#admin #v507AssignOverlay .v507-assign-option .pe-pick-av{align-self:center}
.pe-pick-text,#admin#admin #v507AssignOverlay .v507-assign-text{line-height:1.5!important;padding-top:2px}
.pe-pick-name,#admin#admin #v507AssignOverlay .v507-assign-name{line-height:1.5!important;overflow-wrap:anywhere}
.pe-pick-code,#admin#admin #v507AssignOverlay .v507-assign-code{display:inline-block;line-height:1.5!important}
.pe-pick-text small,#admin#admin #v507AssignOverlay .v507-assign-text small{margin-top:6px!important;line-height:1.9!important}
.pe-pick-tag,#admin#admin #v507AssignOverlay .v507-assign-state{line-height:1.5!important}
.pe-type{display:inline-block;padding:1px 9px;border:1px solid;border-radius:7px;font-size:13px;font-weight:700;line-height:1.55;white-space:nowrap}
.pe-type-urgent{background:#ffedd5;border-color:#fdba74;color:#c2410c}
.pe-type-replacement{background:#dbeafe;border-color:#93c5fd;color:#1d4ed8}
.pe-type-parttime{background:#fce7f3;border-color:#f9a8d4;color:#be185d}
#admin#admin #v507AssignOverlay .pe-type,#admin#admin #assignmentOverlay .pe-type{font-size:13px!important;font-weight:700!important}
/* V21.16.47 owner (photo of the picker with 16+ staff on the office PC): "ชื่อยังทับกันอยู่" — the real cause: when the list is
   longer than the window, the grid squeezed every card to its minimum height (88 px for 109 px of content), so each card's
   bottom row (ว่าง · เข้างานแล้ว / กำลังวิ่งงาน EX-…) slid under the next card. Rows are as tall as their content now and the list
   scrolls instead (the same fix as the announcement list in V21.16.35). */
.pe-pick-grid,#admin#admin #v507AssignOverlay .v507-assign-list{grid-auto-rows:max-content!important;align-content:start!important}
.pe-pick-card,#admin#admin #v507AssignOverlay .v507-assign-option{min-height:max-content!important;height:auto!important;overflow:visible!important}
/* V21.16.47 owner: "สีไฮไลท์ ให้อยู่ในภาพที่สองด้วย" — the same coloured type label on the Messenger page, under each name */
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-person-text .pe-type{display:inline-block;margin-left:2px;padding:0 8px;font-size:12.5px!important;font-weight:700!important;line-height:1.6;vertical-align:baseline}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-person-text .pe-type-urgent{color:#c2410c!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-person-text .pe-type-replacement{color:#1d4ed8!important}
#admin#admin.v21-admin #v2106MessengerPage.pm-page .pm-person-text .pe-type-parttime{color:#be185d!important}

/* V21.16.48 job urgency: green / orange / red buttons in section 01 of the create page, and a tag on ด่วน / ด่วนมาก jobs
   (order list, Messenger home card) */
#admin#admin #cxKind .cx-priority{display:flex;align-items:center;gap:10px 14px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px dashed #e5e7eb}
#admin#admin #cxKind .cx-priority-label{font-size:15px!important;font-weight:700!important;color:#334155}
#admin#admin #cxKind .cx-priority-btns{display:flex;gap:8px;flex-wrap:wrap}
#admin#admin #cxKind .cx-pri{min-height:44px;padding:0 18px;border-radius:999px;border:2px solid #e5e7eb;background:#fff;font-size:15px!important;font-weight:700!important;cursor:pointer;transition:background .15s,color .15s}
#admin#admin #cxKind .cx-pri.normal{border-color:#86efac;color:#15803d}
#admin#admin #cxKind .cx-pri.high{border-color:#fdba74;color:#c2410c}
#admin#admin #cxKind .cx-pri.urgent{border-color:#fca5a5;color:#b91c1c}
#admin#admin #cxKind .cx-pri.normal.active{background:#16a34a;border-color:#16a34a;color:#fff}
#admin#admin #cxKind .cx-pri.high.active{background:#f97316;border-color:#f97316;color:#fff}
#admin#admin #cxKind .cx-pri.urgent.active{background:#dc2626;border-color:#dc2626;color:#fff}
.pe-pri{display:inline-block;margin:0 6px;padding:1px 9px;border-radius:999px;font-size:12px;font-weight:800;line-height:1.6;white-space:nowrap;vertical-align:middle}
.pe-pri-high{background:#ffedd5;color:#c2410c;border:1px solid #fdba74}
.pe-pri-urgent{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5}
#admin#admin .pe-pri{font-size:12px!important;font-weight:800!important}
/* V21.16.49 งานไปรับเอกสารกลับมาให้ลูกค้า: the option on the create page, its tag, and the note on the Messenger's job screen */
.pe-pri-collect{background:#e0f2fe;color:#0369a1;border:1px solid #7dd3fc}
/* V21.16.50 the tick is on each stop card ("📥 ไปรับที่จุดนี้"); a ticked card turns blue and reads "จุดไปรับเอกสาร" */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-check.pe-stop-collect{padding:5px 10px!important;border:1px solid #bae6fd;border-radius:10px;background:#fff}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-check.pe-stop-collect input{accent-color:#0284c7}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-check.pe-stop-collect span{color:#0369a1!important;font-weight:700!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .pe-collect-on .cx-check.pe-stop-collect{background:#0284c7;border-color:#0284c7}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .pe-collect-on .cx-check.pe-stop-collect span{color:#fff!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-point.pe-collect-on::after{border-color:#7dd3fc;background:#f0f9ff}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-point.pe-collect-on>.v507-point-num{background:#0284c7!important;box-shadow:0 0 0 4px #fff,0 0 0 5px #bae6fd!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .pe-collect-on .cx-point-type{border-color:#7dd3fc;color:#0369a1!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .pe-collect-on .cx-point-type.drop .cx-i{color:#0284c7}
#admin#admin #v507Page .pe-collect-hint{margin:0 0 12px;padding:10px 14px;border-radius:12px;background:#e0f2fe;border:1px solid #bae6fd;color:#0c4a6e;font-size:14px!important;line-height:1.6}
#admin#admin #v507Page .pe-collect-hint b{font-size:14px!important;font-weight:800!important}
#admin#admin #v507Page .pe-collect-hint[hidden]{display:none!important}
.pe-collect-badge{display:inline-block;margin-top:4px;padding:1px 9px;border-radius:999px;background:#e0f2fe;border:1px solid #7dd3fc;color:#0369a1;font-size:12.5px;font-weight:800;line-height:1.6}
.pe-collect-note{margin:0 0 12px;padding:12px 14px;border-radius:14px;background:#e0f2fe;border:1px solid #7dd3fc;color:#0c4a6e;font-size:15px;font-weight:700;line-height:1.55}

/* V21.16.53 /messenger and /admin each have their own login page (app.js staffLoginLook) */
#login .pe-staff-kind{display:block;width:max-content;max-width:100%;margin:2px auto 6px;padding:5px 16px;border-radius:999px;background:#fdf6e3;border:1px solid #e0c29a;color:#7c5a10;font-size:15px;font-weight:800;letter-spacing:.01em}
#login .pe-staff-kind.admin{background:#f1f5f9;border-color:#cbd5e1;color:#1e293b}
#login.pe-login-rider .login-tab.active,#login.pe-login-admin .login-tab.active{pointer-events:none}

/* V21.16.52 ลายเซ็นผู้รับ (pe-signature.js) — the pad, the Messenger's stop cards, the photo cards Admin / the customer see */
.pe-sign{position:fixed;inset:0;z-index:100300;display:grid;place-items:center;padding:12px;background:rgba(15,23,42,.66)}
.pe-sign[hidden]{display:none!important}
body.pe-sign-open{overflow:hidden}
.pe-sign-box{width:min(560px,100%);display:grid;gap:10px;padding:16px;border-radius:16px;background:#fff;color:#111827;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.pe-sign-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pe-sign-head b{font-size:18px}
.pe-sign-x{width:38px;height:38px;border:0;border-radius:50%;background:#f1f5f9;font-size:22px;line-height:1;cursor:pointer}
.pe-sign-hint{margin:0;font-size:14px;color:#475569}
.pe-sign-canvas{display:block;width:100%;height:min(260px,42vh);border:2px dashed #94a3b8;border-radius:12px;background:#fff;touch-action:none;cursor:crosshair}
.pe-sign-name{width:100%;box-sizing:border-box;min-height:46px;padding:8px 12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;font-size:16px}
.pe-sign-msg{min-height:20px;font-size:14px;font-weight:600;color:#047857}.pe-sign-msg.bad{color:#b91c1c}
.pe-sign-act{display:grid;grid-template-columns:1fr 2fr;gap:8px}
.pe-sign-act button{min-height:50px;margin:0!important;border-radius:12px;border:1px solid #cbd5e1;background:#fff;font:inherit;font-size:16px;font-weight:700;cursor:pointer}
.pe-sign-act button.primary{border:0;background:#111827;color:#fff}
.pe-sign-act button:disabled{opacity:.55;cursor:wait}
.pe-step-more [data-sign].done{color:#047857;border-color:#a7f3d0;background:#ecfdf5}
.pe-sig-badge{display:inline-block;margin:4px 0 0 6px;padding:1px 9px;border-radius:999px;background:#ecfdf5;border:1px solid #a7f3d0;color:#047857;font-size:12.5px;font-weight:800;line-height:1.6}
.pe-sig-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:10px;padding:10px;border:1px dashed #cbd5e1;border-radius:12px;background:#f8fafc}
.pe-sig-row img{width:120px;height:56px;object-fit:contain;background:#fff;border:1px solid #e2e8f0;border-radius:8px}
.pe-sig-row span{flex:1 1 140px;font-weight:700;color:#047857}
.pe-sig-row button{min-height:44px;padding:0 14px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;font:inherit;font-weight:700;cursor:pointer}
.pe-ev-sig{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;font:inherit;cursor:zoom-in;text-align:left;width:100%}
.pe-ev-sig img{width:96px;height:44px;object-fit:contain;flex:none}
.pe-ev-sig span{font-size:13px;font-weight:700;color:#047857}
/* V21.16.52 บริการเสริมด้านเอกสาร on the create page · the Messenger's plate in the customer's order */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-check.pe-doc-check small{margin-left:2px;color:#b45309!important;font-size:12px!important;font-weight:700!important}
.pe-cp-plate{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:6px;border:1px solid #cbd5e1;background:#fff;font-size:12.5px;font-weight:700;color:#0f172a;vertical-align:middle}

/* V21.16.46 announcements up to 30,000 characters: a taller box, a counter, and long ones folded in the list */
#v2109AnnouncementOverlay #v2109AnnMessage{min-height:240px;resize:vertical}
.v2109-count{margin-top:6px;font-size:13px;color:#64748b;text-align:right}
.v2109-count.over{color:#b91c1c;font-weight:700}
.v2109-msg.v2109-long{max-height:11.5em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,transparent);mask-image:linear-gradient(#000 70%,transparent)}
.v2109-msg.v2109-long.open{max-height:none;-webkit-mask-image:none;mask-image:none}
.v2109-more{margin-top:6px;border:0;background:none;color:#2563eb;font:inherit;font-size:14px;font-weight:700;cursor:pointer;padding:4px 0}

/* V21.16.35 งานกองกลาง (pe-pool.js) */
/* create page: a 4th button "📢 ส่งเข้ากองกลาง" in the action bar */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-actions.pe-pool-4{grid-template-columns:minmax(120px,auto) minmax(0,1fr) minmax(0,1fr) minmax(0,1.2fr)}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-actions .pe-pool-create{border-color:#2563eb!important;color:#1d4ed8!important;background:#eff6ff!important}
@media (max-width:860px){#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-actions.pe-pool-4 .cx-btn{font-size:15px!important;padding:0 8px!important}}
@media (max-width:640px){#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-actions.pe-pool-4{grid-template-columns:50px minmax(0,1fr) minmax(0,1fr) minmax(0,1.15fr)}
  #admin#admin.v21-admin.v21-view-create #v507Page.pe-cx .cx-actions.pe-pool-4 .cx-btn{font-size:13px!important}}
/* job detail: send to / take out of the pool */
.pe-pool-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:12px 14px;border-radius:12px;background:#eff6ff;border:1px solid #bfdbfe}
.pe-pool-box-text{display:grid;gap:2px;flex:1 1 240px;min-width:0}
.pe-pool-box-text b{color:#1e3a8a}
.pe-pool-box-text span{font-size:13px;color:#334155}
.pe-pool-btn{min-height:42px;padding:8px 16px;border-radius:10px;border:0;background:#1d4ed8;color:#fff;font:inherit;font-weight:700;cursor:pointer}
.pe-pool-btn.ghost{background:#fff;color:#1d4ed8;border:1px solid #93c5fd}
.pe-pool-btn:disabled{opacity:.55;cursor:wait}
/* Messenger home: the pool card */
.pe-pool-card{margin:10px 12px;padding:12px 14px;border-radius:14px;background:#fff;border:2px solid #93c5fd;box-shadow:0 2px 10px rgba(15,23,42,.06);display:grid;gap:10px;color:#111827}
.pe-pool-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pe-pool-head b{font-size:17px;color:#1e3a8a}
.pe-pool-count{font-size:13px;font-weight:700;padding:3px 10px;border-radius:999px;background:#dbeafe;color:#1e40af}
.pe-pool-note{font-size:14px;color:#64748b}
.pe-pool-msg{font-size:14px;font-weight:700;color:#047857;background:#ecfdf5;border-radius:10px;padding:8px 10px}
.pe-pool-job{display:grid;gap:8px;padding:12px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc}
.pe-pool-top{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:#475569}
.pe-pool-top b{color:#0f172a}
.pe-pool-route{display:grid;gap:4px;font-size:14.5px}
.pe-pool-route>div{display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:start}
.pe-pool-route i{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:12px;font-weight:800;color:#fff;background:#ef233c}
.pe-pool-route i.a{background:#059669}
.pe-pool-route span{overflow-wrap:anywhere}
.pe-pool-route .more{display:block;font-size:13px;color:#64748b;padding-left:32px}
.pe-pool-meta{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:14px;color:#334155}
.pe-pool-meta b{color:#b45309;font-size:16px}
.pe-pool-take{min-height:48px;border:0;border-radius:12px;background:#111827;color:#fff;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
.pe-pool-take:disabled{opacity:.6;cursor:wait}

/* V21.16.35 owner: "หน้าข่าวประกาศของพนักงานพอกดเข้าไปอ่านขึ้นไม่เต็มหัวข้อ" — the list squeezed every announcement to fit the window
   (a grid whose items hide their overflow may shrink below their content), so titles and long texts were cut instead of the
   list scrolling; the window was also centred at 92vh (its top could go off a phone screen) and the title ran into the date. */
.rider-ann-list{grid-auto-rows:max-content;align-content:start;min-height:0;overscroll-behavior:contain}
.rider-ann-overlay{align-items:flex-start!important;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))!important}
.rider-ann-modal{max-height:calc(100vh - 24px)!important;max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important}
.rider-ann-item-title{display:block;overflow-wrap:anywhere;white-space:normal}
/* V21.16.35 (2nd) owner after the first fix went live: "เหมือนเดิมอ่านข่าวไม่ได้เลื่อนขึ้นลงไม่ได้" — on a phone the whole window
   now scrolls as one page (a scroll area inside a box inside a fixed layer does not scroll reliably on every phone);
   the head with "ปิด" stays on top while scrolling */
@media (max-width:760px){
  .rider-ann-overlay.show{display:block!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}
  .rider-ann-overlay .rider-ann-modal{display:block!important;max-height:none!important;overflow:visible!important;margin:0 auto}
  .rider-ann-overlay .rider-ann-list{overflow:visible!important;max-height:none!important;border-radius:0 0 20px 20px}
  .rider-ann-overlay .rider-ann-modal-head{position:sticky;top:calc(-1 * max(12px,env(safe-area-inset-top)));z-index:2;background:#fff;border-radius:20px 20px 0 0}
  .rider-ann-overlay .rider-ann-item{scroll-margin-top:96px}
}
.rider-ann-item-meta{display:block}
.rider-ann-item.open .rider-ann-item-title{font-size:17px}

/* V21.16.37 "หมดเวลาเข้าสู่ระบบ" — a staff login that ran out stops the page (saves would not reach the server) */
#peSessionExpired{position:fixed;inset:0;z-index:2147483001;display:grid;place-items:center;padding:20px;background:rgba(15,23,42,.72)}
#peSessionExpired .pe-sx-box{width:min(420px,100%);display:grid;gap:10px;text-align:center;padding:22px 20px;border-radius:16px;background:#fff;color:#111827;box-shadow:0 24px 60px rgba(0,0,0,.35)}
#peSessionExpired b{font-size:20px}
#peSessionExpired p{margin:0;font-size:15px;color:#334155;line-height:1.5}
#peSessionExpired .pe-sx-sub{font-size:13.5px;color:#64748b}
#peSessionExpired button{margin-top:6px;min-height:50px;border:0;border-radius:12px;background:#111827;color:#fff;font:inherit;font-size:17px;font-weight:800;cursor:pointer}

/* V21.16.35 "กำลังเข้าสู่ระบบ…" while a logged-in device checks its login (instead of a flash of the login form) */
#peSessionSplash{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;padding:24px;background:#0b0d10;color:#fff;font-family:inherit}
#peSessionSplash .pe-ss-box{display:grid;justify-items:center;gap:12px;text-align:center;max-width:340px}
#peSessionSplash img{width:150px;height:auto}
#peSessionSplash b{font-size:18px;font-weight:700}
#peSessionSplash b::after{content:"";display:block;width:28px;height:28px;margin:14px auto 0;border-radius:50%;border:3px solid rgba(255,255,255,.25);border-top-color:#d4a72c;animation:peSsSpin .9s linear infinite}
#peSessionSplash small{font-size:14px;color:#cbd5e1;line-height:1.5}
#peSessionSplash .pe-ss-actions{display:grid;gap:10px;width:100%}
#peSessionSplash .pe-ss-actions[hidden]{display:none}
#peSessionSplash .pe-ss-box:has(.pe-ss-actions:not([hidden])) b::after{display:none}
#peSessionSplash .pe-ss-actions button{min-height:48px;border-radius:12px;border:0;background:#d4a72c;color:#111;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
#peSessionSplash .pe-ss-actions button.ghost{background:transparent;color:#e5e7eb;border:1px solid #475569}
@keyframes peSsSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){#peSessionSplash b::after{animation:none}}

/* V21.16.38 a customer with several numbers ("02-123-4567 / 081-234-5678") — one tap-to-call line per number */
.rider-info-box a.pe-tel{display:block}

/* V21.16.40 QR เริ่มใช้งาน — Admin's QR window, the Messenger's start splash / 6-digit code box / 3 setup steps */
#peInviteDlg{position:fixed;inset:0;z-index:100200;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.6);overflow-y:auto}
#peInviteDlg[hidden],#peSetup[hidden],#peStartCodeBox[hidden]{display:none!important}
#peInviteDlg .pe-inv-box{width:min(440px,100%);display:grid;gap:12px;padding:18px;border-radius:16px;background:#fff;color:#111827;box-shadow:0 24px 60px rgba(0,0,0,.3);font-size:15px}
#peInviteDlg .pe-inv-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
#peInviteDlg .pe-inv-head b{font-size:18px}
#peInviteDlg .pe-inv-x{border:0;background:#f1f5f9;border-radius:50%;width:36px;height:36px;font-size:22px;line-height:1;cursor:pointer}
#peInviteDlg .pe-inv-wait{margin:8px 0;color:#475569}
#peInviteDlg .pe-inv-qr{display:grid;justify-items:center;gap:6px}
#peInviteDlg .pe-inv-qr canvas{width:min(260px,70vw);height:auto;image-rendering:pixelated;border:1px solid #e2e8f0;border-radius:12px}
#peInviteDlg .pe-inv-qr-note{color:#b45309;text-align:center}
#peInviteDlg .pe-inv-code{display:grid;justify-items:center;gap:2px;padding:10px;border-radius:12px;background:#fdf6e3}
#peInviteDlg .pe-inv-code span{font-size:13px;color:#7c5a10}
#peInviteDlg .pe-inv-code b{font-size:34px;letter-spacing:4px;font-variant-numeric:tabular-nums;color:#111827}
#peInviteDlg .pe-inv-code small{font-size:13px;color:#64748b}
#peInviteDlg .pe-inv-steps{margin:0;padding-left:20px;display:grid;gap:4px;font-size:14px;color:#334155;line-height:1.5}
#peInviteDlg .pe-inv-act{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#peInviteDlg .pe-inv-act button{min-height:46px;border-radius:12px;border:1px solid #cbd5e1;background:#fff;font:inherit;font-size:14.5px;font-weight:700;cursor:pointer}
#peInviteDlg .pe-inv-act .pe-inv-copy{background:#06c755;border-color:#06c755;color:#fff}
#peInviteDlg .pe-inv-warn{margin:0;font-size:13px;color:#92400e}
#peInviteDlg .pe-inv-act .pe-inv-copy.done{background:#047857;border-color:#047857}
#peInviteDlg .pe-inv-msg{display:grid;gap:6px}
#peInviteDlg .pe-inv-msg[hidden]{display:none}
#peInviteDlg .pe-inv-msg small{font-size:13px;color:#475569;line-height:1.45}
#peInviteDlg .pe-inv-msg textarea{width:100%;box-sizing:border-box;font:inherit;font-size:13.5px;line-height:1.5;padding:8px 10px;border:1px solid #cbd5e1;border-radius:10px;background:#f8fafc;resize:vertical}
@media (max-width:420px){#peInviteDlg .pe-inv-act{grid-template-columns:1fr}}
#admin#admin .pm-invite{background:#fdf6e3!important;border-color:#e0c29a!important;color:#7c5a10!important;font-weight:700!important;white-space:nowrap}
.pm-menu-emoji{width:18px;text-align:center}
#peStartSplash{position:fixed;inset:0;z-index:2147483002;display:grid;place-items:center;padding:24px;background:#0b0d10;color:#fff}
#peStartSplash .pe-start-box{display:grid;justify-items:center;gap:14px;text-align:center;max-width:360px}
#peStartSplash img{width:96px;height:96px;border-radius:22px}
#peStartSplash b{display:block;font-size:19px}
#peStartSplash small{display:block;margin-top:6px;font-size:14px;line-height:1.55;color:#cbd5e1}
#peStartSplash button{margin-top:14px;min-height:48px;padding:0 22px;border:0;border-radius:12px;background:#d4a72c;color:#111;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
.pe-start-code{margin-top:10px;display:grid;gap:8px}
.pe-start-code .pe-start-open{min-height:46px;border:1px dashed #c9a24a;border-radius:12px;background:#fdf6e3;color:#7c5a10;font:inherit;font-size:15px;font-weight:700;cursor:pointer}
.pe-start-code .pe-start-form{display:grid;gap:8px}
.pe-start-code .pe-start-form[hidden]{display:none}
.pe-start-code input{font-size:24px!important;letter-spacing:4px;text-align:center}
.pe-start-code input::placeholder{font-size:16px;letter-spacing:0}
.pe-start-code small{text-align:center;color:#64748b}
#peSetup{position:fixed;inset:0;z-index:100150;display:grid;place-items:center;padding:16px;background:rgba(15,23,42,.62);overflow-y:auto}
#peSetup .pe-setup-box{width:min(440px,100%);display:grid;gap:12px;padding:18px;border-radius:18px;background:#fff;color:#111827;box-shadow:0 24px 60px rgba(0,0,0,.3)}
#peSetup .pe-setup-head b{display:block;font-size:20px}
#peSetup .pe-setup-head small{display:block;font-size:14px;color:#64748b;margin-top:2px}
#peSetup ol{margin:0;padding:0;list-style:none;display:grid;gap:10px}
#peSetup .pe-setup-step{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px;border-radius:14px;border:1px solid #e2e8f0;background:#f8fafc}
#peSetup .pe-setup-step.done{background:#ecfdf5;border-color:#a7f3d0}
#peSetup .pe-setup-tick{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:#e2e8f0;color:#334155}
#peSetup .pe-setup-step.done .pe-setup-tick{background:#059669;color:#fff}
#peSetup .pe-setup-step b{display:block;font-size:16px}
#peSetup .pe-setup-step small{display:block;font-size:13.5px;line-height:1.45;color:#475569;margin-top:2px}
#peSetup .pe-setup-step em{font-style:normal;font-size:13px;font-weight:700;color:#047857}
#peSetup .pe-setup-step button{min-height:42px;padding:0 14px;border:0;border-radius:10px;background:#111827;color:#fff;font:inherit;font-size:15px;font-weight:700;cursor:pointer}
#peSetup .pe-setup-step button:disabled{opacity:.45;cursor:default}
#peSetup .pe-setup-foot{display:grid;gap:8px}
#peSetup .pe-setup-done{min-height:50px;border:0;border-radius:12px;background:#d4a72c;color:#111;font:inherit;font-size:16px;font-weight:800;cursor:pointer}
#peSetup .pe-setup-done.all{background:#059669;color:#fff}
#peSetup .pe-setup-later{min-height:40px;border:0;background:transparent;color:#64748b;font:inherit;font-size:14px;cursor:pointer}
#peInstallHelp{z-index:100250!important}   /* "ดูวิธี" from the setup steps opens on top of them */

/* V21.16.42 who is logged in on this phone, on the Messenger home page (photo · full name · code · type); tap → ตั้งค่า */
.v2156-me{display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;margin:2px 0 14px;padding:10px 12px;border:1px solid rgba(212,167,44,.5);border-radius:16px;background:rgba(255,255,255,.06);color:#fff;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.v2156-me:active{background:rgba(255,255,255,.12)}
.v2156-me-photo{flex:0 0 56px;width:56px;height:56px;border-radius:50%;overflow:hidden;border:2px solid #d4a72c;background:#1f2937}
.v2156-me-photo img{width:100%;height:100%;object-fit:cover;display:block}
.v2156-me-text{display:grid;flex:1;min-width:0}
.v2156-me-text b{font-size:20px;font-weight:800;line-height:1.3;color:#fff;overflow-wrap:anywhere}
.v2156-me-text small{margin-top:2px;font-size:14.5px;font-weight:600;color:#e8c56a}
.v2156-me-text small:empty{display:none}
.v2156-me-go{flex:0 0 auto;font-size:28px;line-height:1;color:#d4a72c}

/* V21.16.55 owner: "อยากให้โชว์ใต้ชื่อตอนจะกดมอบหมาย" — each Messenger's stars (all months) on the line under the name in both
   pickers. Both windows sit inside #admin, which forces 16px and its own weights — hence the 3-id selectors. */
.pe-pick-stars,#admin#admin #v507AssignOverlay .pe-pick-stars,#admin#admin #assignmentOverlay .pe-pick-stars{display:block;margin-top:2px;font-size:14px!important;font-weight:600!important;line-height:1.6!important;color:#475569}
#admin#admin #v507AssignOverlay .pe-pick-stars *,#admin#admin #assignmentOverlay .pe-pick-stars *{font-size:14px!important}
.pe-pick-stars .pe-ps-c,#admin#admin #v507AssignOverlay .pe-pick-stars .pe-ps-c,#admin#admin #assignmentOverlay .pe-pick-stars .pe-ps-c{color:#b45309;font-weight:800!important;letter-spacing:.5px;white-space:nowrap}
.pe-pick-stars .pe-ps-a{white-space:nowrap}
.pe-pick-stars.none,.pe-pick-stars.wait{color:#94a3b8}

/* V21.16.59 หน้าสร้างงานแบบย่อ (pe-compact.js) — owner: "อยากย่อหน้าแอดมินสั่งงานให้ง่ายขึ้นแบบนี้". One column, the step bar
   gone, ประเภทงาน as one chip, each point's contact details folded, บริการเสริม and ข้อมูลลูกค้า / ชำระเงิน / อื่น ๆ folded, the
   total price above the one-tap buttons. Only classes on #v507Page hide things — every field stays where it was. */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-steps{display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-layout{grid-template-columns:minmax(0,1fr)!important;max-width:880px;margin-left:auto;margin-right:auto}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-actions{max-width:880px;margin-left:auto!important;margin-right:auto!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxKind>header.cx-head,
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxDetail>header.cx-head,
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-card .cx-head .cx-num{display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side>.cx-card{flex:1 0 100%!important;width:100%!important;max-width:none!important;box-sizing:border-box}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxKind:not(.pe-cmp-open)>:not(.pe-cmp-kindbar){display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point:not(.pe-cmp-open)>.cx-contact-row{display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxDetail:not(.pe-cmp-open)>:not(.pe-cmp-extrasbar):not(#v507ReplacementPayWrap){display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side{flex-wrap:wrap}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side:not(.pe-cmp-open)>:not(.pe-cmp-morebar){display:none!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side:not(.pe-cmp-open){padding:0!important}
/* the fold bars */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar{display:flex;align-items:center;gap:12px;width:100%;box-sizing:border-box;margin:0;padding:12px 4px;border:0;background:transparent;color:#232620;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar .pe-cmp-title{flex:0 1 auto;min-width:0;font-size:17px!important;font-weight:800!important;line-height:1.5!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar .pe-cmp-title small{font-size:14px!important;font-weight:500!important;color:#6e7166;margin-left:6px}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar .pe-cmp-sum{flex:1 1 auto;min-width:0;text-align:right;font-size:14px!important;font-weight:600!important;line-height:1.5!important;color:#8a6414;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar .pe-cmp-ico{flex:0 0 26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#f3f1ea;color:#232620;font-size:20px!important;font-weight:700!important;line-height:1!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar .pe-cmp-ico::before{content:"+"}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-open>.pe-cmp-bar .pe-cmp-ico::before{content:"−"}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-bar:focus-visible{outline:3px solid #60a5fa;outline-offset:2px;border-radius:12px}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-kindbar .pe-cmp-chip{display:inline-block;padding:6px 14px;border-radius:12px;background:#fbf1d9;color:#8a6414;font-size:16px!important;font-weight:800!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-kindbar .pe-cmp-chip::after{content:" ▾";font-size:13px}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-kindbar .pe-cmp-ico{display:none}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxKind.pe-cmp-open>.pe-cmp-kindbar{margin-bottom:8px}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact #cxDetail.pe-cmp-open>.pe-cmp-extrasbar,
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side.pe-cmp-open>.pe-cmp-morebar{margin-bottom:6px;border-bottom:1px solid #eeeae0}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side>.pe-cmp-morebar{flex:1 0 100%;min-height:60px;padding:14px 18px;border:1px solid #e9e5da;border-radius:18px;background:#fff}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-side.pe-cmp-open>.pe-cmp-morebar{border-radius:18px}
/* a point's contact fold: a small line under the address */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar{grid-column:4;padding:4px 2px 2px;gap:8px;color:#5b6170}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar .pe-cmp-title{font-size:14px!important;font-weight:600!important;color:#5b6170}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar.pe-cmp-filled .pe-cmp-title{color:#232620}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar .pe-cmp-ico{order:-1;flex-basis:20px;height:20px;background:transparent;font-size:12px!important}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar .pe-cmp-ico::before{content:"▶"}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point.pe-cmp-open>.pe-cmp-ptbar .pe-cmp-ico::before{content:"▼"}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .v507-point>.pe-cmp-ptbar .pe-cmp-sum{display:none}
/* the total price above the buttons */
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .cx-actions>.pe-cmp-total{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;border:1px solid #e9e5da;border-radius:14px;background:#fff;box-shadow:0 2px 10px rgba(15,23,42,.06)}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-total-l{display:grid;font-size:16px!important;font-weight:800!important;line-height:1.4!important;color:#232620}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-total-l small{font-size:13px!important;font-weight:500!important;color:#6e7166}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-total-v{font-size:24px!important;font-weight:800!important;line-height:1.3!important;color:#232620;white-space:nowrap}
#admin#admin.v21-admin.v21-view-create #v507Page.pe-cx.pe-compact .pe-cmp-total.pe-cmp-total-empty .pe-cmp-total-v{color:#9a9c94}

/* V21.16.57 owner: "โปรแกรมเก่าค้นได้ 2 วิธีคือค้นชื่อ และรหัสลูกค้า" — the customer code shown first on each saved-customer row
   of the create-page search, the way the old program listed it (code · company · address) */
.v521-row .v521-code{display:inline-block;margin:0 0 2px;padding:0 7px;border-radius:6px;background:#eef4fb;color:#1f4f8d;font-style:normal;font-weight:800;font-size:11px;line-height:1.6;letter-spacing:.3px}

/* V21.16.58 รูปเอกสาร / ใบงาน (pe-attach.js) — create page section 03, Admin job detail, Messenger job screen */
.pe-att-create{margin-top:14px;padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc}
.pe-att-chead{display:grid;gap:2px;margin-bottom:8px}
.pe-att-chead .cx-label{margin:0}
.pe-att-chead small,.pe-att-note{color:#64748b;font-size:12.5px;line-height:1.5}
.pe-att-note{margin-top:6px}
.pe-att-btns{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.pe-att-add{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid #d4a72c;border-radius:10px;background:#fff;color:#7a5a00;font-weight:700;font-size:14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.pe-att-add:hover{background:#fff8e6}
.pe-att-add:active{background:#fdecc0}
.pe-att-add input{display:none}
.pe-att-msg{font-size:13px;color:#047857}
.pe-att-msg.bad{color:#b91c1c}
.pe-att-thumbs,.pe-att-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin-top:10px}
.pe-att-thumbs[hidden]{display:none}
.pe-att-grid{margin:0 0 10px}
.pe-att-item{position:relative;margin:0;display:grid;gap:4px;min-width:0}
.pe-att-thumb{display:block;width:100%;aspect-ratio:3/4;padding:0;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#fff;cursor:zoom-in}
.pe-att-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pe-att-thumb.broken{background:#f1f5f9}
.pe-att-thumb.broken img{visibility:hidden}
.pe-att-item figcaption{font-size:12.5px;font-weight:700;color:#334155;line-height:1.35;overflow-wrap:anywhere}
.pe-att-item figcaption small{display:block;font-weight:500;color:#64748b;font-size:11.5px}
.pe-att-del{position:absolute;top:4px;right:4px;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:rgba(15,23,42,.72);color:#fff;font-size:14px;line-height:28px;text-align:center;cursor:pointer}
.pe-att-del:hover{background:#b91c1c}
.pe-att-del:disabled{opacity:.5}
.pe-att-empty{grid-column:1/-1;padding:12px;border:1px dashed #e2e8f0;border-radius:10px;color:#94a3b8;font-size:13px;text-align:center}
.pe-att-label small{font-weight:600;color:#64748b;margin-left:4px}
.pe-att-box{margin-bottom:10px}
.pe-att-rider{margin:0 12px 12px;padding:12px;border-radius:16px;background:#fff;border:1px solid #e5e7eb;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.pe-att-rtitle{font-weight:800;font-size:16px;color:#111827;margin-bottom:8px}
.pe-att-rtitle small{display:block;font-weight:500;font-size:13px;color:#64748b}
.pe-att-rider .pe-att-grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));margin:0}
.pe-att-status{position:fixed;right:16px;bottom:16px;z-index:100300;display:flex;align-items:center;gap:8px;max-width:min(440px,calc(100vw - 32px));padding:10px 12px;border-radius:12px;background:#0f172a;color:#fff;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.pe-att-status[hidden]{display:none}
.pe-att-status.bad{background:#7f1d1d}
.pe-att-status span{flex:1;min-width:0;overflow-wrap:anywhere}
.pe-att-status button{flex:0 0 auto;min-height:32px;padding:0 10px;border:0;border-radius:8px;background:rgba(255,255,255,.16);color:#fff;font:inherit;font-weight:700;cursor:pointer}
.pe-att-status button[hidden]{display:none}
/* V21.16.60 ราคานอกตารางโซน — tag in the order list, Admin's price box in the job detail, the place list on ตั้งค่า → พื้นที่บริการ,
   the customer's accept / decline box (pe-quote.js) */
.pe-pri-quote{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}
.pe-pri-quote.wait{background:#ede9fe;color:#5b21b6;border-color:#c4b5fd}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box{display:grid;gap:10px;margin:0 0 14px;padding:14px;border:2px solid #f59e0b;border-radius:14px;background:#fffbeb}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box.quoted{border-color:#a78bfa;background:#f5f3ff}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-head{display:grid;gap:2px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-head b{font-size:17px!important;font-weight:900!important;color:#78350f}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box.quoted .pe-qt-head b{color:#4c1d95}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-head span,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-hint{font-size:13.5px!important;color:#57534e;line-height:1.5}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sent{display:grid;gap:3px;padding:10px 12px;border-radius:10px;background:#fff;border:1px solid #ddd6fe}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sent b{font-size:15px!important;color:#4c1d95}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sent span,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sent small{font-size:13px!important;color:#57534e;line-height:1.5}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-again summary{cursor:pointer;font-size:14px!important;font-weight:800;color:#5b21b6;list-style:revert}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-again[open] summary{margin-bottom:8px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-form{display:grid;gap:8px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sub{margin-top:4px;font-size:14px!important;font-weight:800!important;color:#1f2937}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sub small{font-size:12.5px!important;font-weight:500;color:#64748b}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-place{display:grid;gap:6px;padding:10px 12px;border-radius:10px;background:#fff;border:1px solid #fde68a}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-pname,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sname{display:flex;align-items:baseline;gap:8px;min-width:0;font-size:14.5px!important;font-weight:700;color:#1f2937}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-pname span,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sname{overflow-wrap:anywhere}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-pname i,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sname i{flex:0 0 auto;display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#111827;color:#fff;font-style:normal;font-size:12px!important;font-weight:800}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-pname em{flex:0 0 auto;font-style:normal;font-size:12px!important;font-weight:700;color:#b45309}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-sname small{flex:0 0 auto;font-size:12px!important;font-weight:600;color:#64748b}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-zone,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-remember,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13.5px!important;color:#374151}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-note{display:grid}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-remember small{font-size:12px!important;color:#64748b}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box select,#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box input[type=text],#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-box input[type=number]{min-height:38px;padding:4px 10px!important;border:1px solid #d1d5db!important;border-radius:9px!important;background:#fff!important;font-size:14px!important}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-remember input[type=text]{width:12em;max-width:100%}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-remember input[type=checkbox]{width:18px;height:18px}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-stop{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:8px 12px;border-radius:10px;background:#fff;border:1px solid #e5e7eb}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-price{display:flex;align-items:center;gap:6px;font-size:14px!important;font-weight:700}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-price input{width:7.5em;text-align:right;font-weight:800!important}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-total{font-size:15px!important;font-weight:800!important;color:#111827}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-send{min-height:42px;padding:6px 18px!important;border:0;border-radius:10px;background:#111827;color:#fff;font-size:15px!important;font-weight:800!important;cursor:pointer;width:auto}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-send[disabled]{opacity:.4;cursor:default}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-status{font-size:13.5px!important;color:#047857;min-height:1em}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-status.bad{color:#b91c1c}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-lockhint{font-size:13.5px!important;font-weight:700;color:#92400e;align-self:center}
#admin#admin.v21-admin .pe-qt-places{margin-top:18px;padding-top:14px;border-top:1px solid #e5e7eb;display:grid;gap:10px}
#admin#admin.v21-admin .pe-qt-places-head h3{margin:0;font-size:17px!important;font-weight:900!important;color:#111827}
#admin#admin.v21-admin .pe-qt-places-head p{margin:2px 0 0;font-size:13.5px!important;color:#64748b;line-height:1.5}
#admin#admin.v21-admin .pe-qt-padd{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
#admin#admin.v21-admin .pe-qt-padd input{flex:1 1 220px;min-height:40px;padding:4px 10px!important;border:1px solid #d1d5db!important;border-radius:10px!important;font-size:14px!important}
#admin#admin.v21-admin .pe-qt-padd select{min-height:40px;padding:4px 10px!important;border:1px solid #d1d5db!important;border-radius:10px!important;font-size:14px!important}
#admin#admin.v21-admin .pe-qt-pstatus{font-size:13.5px!important;color:#047857;min-height:1em}
#admin#admin.v21-admin .pe-qt-pstatus.bad{color:#b91c1c}
#admin#admin.v21-admin .pe-qt-plist{display:grid;gap:6px}
#admin#admin.v21-admin .pe-qt-prow{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto auto;align-items:center;gap:10px;padding:8px 12px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;font-size:14px!important}
#admin#admin.v21-admin .pe-qt-prow b{overflow-wrap:anywhere}
#admin#admin.v21-admin .pe-qt-prow small{font-size:12px!important;color:#94a3b8}
#admin#admin.v21-admin .pe-qt-pdel{min-height:32px;padding:2px 12px!important;border:1px solid #fecaca;border-radius:8px;background:#fff;color:#b91c1c;font-size:13px!important;font-weight:700;cursor:pointer;width:auto}
#admin#admin.v21-admin .pe-qt-empty{padding:12px;border:1px dashed #e2e8f0;border-radius:10px;color:#94a3b8;font-size:13.5px!important;text-align:center}
@media(max-width:760px){#admin#admin.v21-admin .pe-qt-prow{grid-template-columns:minmax(0,1fr) auto auto}#admin#admin.v21-admin .pe-qt-prow small{grid-column:1/-1}}
.pe-qt-cbox{margin-top:16px;padding:18px 20px;border-radius:16px;border:2px solid #f59e0b!important;background:#fffbeb!important}
.pe-qt-cbox.quoted{border-color:#7c3aed!important;background:#f5f3ff!important}
.pe-qt-cbox.ok{border-color:#86efac!important;background:#f0fdf4!important}
.pe-qt-cbox>b{display:block;margin-bottom:6px;font-size:16px}
.pe-qt-clines{display:grid;gap:4px;margin:6px 0}
.pe-qt-cline,.pe-qt-ctotal{display:flex;justify-content:space-between;gap:10px;font-size:14px}
.pe-qt-cline span{min-width:0;overflow-wrap:anywhere;color:#475569}
.pe-qt-ctotal{padding-top:6px;border-top:1px dashed #c4b5fd;font-size:16px;font-weight:800}
.pe-qt-cactions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 6px}
.pe-qt-accept,.pe-qt-decline{flex:1 1 160px;min-height:46px;border-radius:12px;font:inherit;font-weight:800;font-size:15px;cursor:pointer}
.pe-qt-accept{border:0;background:#111827;color:#fff}
.pe-qt-decline{border:1px solid #fca5a5;background:#fff;color:#b91c1c}
.pe-qt-accept:disabled,.pe-qt-decline:disabled{opacity:.5;cursor:default}
/* V21.16.61 owner: "ไม่เห็นมีป้ายบอกว่าอยู่นอกโซนหรือ รอแอดมินคิดราคา" — the stop and the price box say it in a coloured label */
#customerPortal .cp-route-price.pe-qt-chip,#customerPortal .cp-route-price.pe-qt-chip-no{display:inline-block!important;margin-top:8px!important;padding:6px 12px!important;border-radius:999px!important;font-size:14px!important;font-weight:800!important;line-height:1.4!important}
#customerPortal .cp-route-price.pe-qt-chip{background:#fef3c7!important;color:#92400e!important;border:1px solid #fcd34d!important}
#customerPortal .cp-route-price.pe-qt-chip-no{background:#fee2e2!important;color:#b91c1c!important;border:1px solid #fca5a5!important}
#customerPortal #cpPriceWarning.pe-qt-warn,#customerPortal #cpPriceWarning.pe-qt-warn-no{display:block!important;margin-top:10px!important;padding:10px 12px!important;border-radius:12px!important;font-size:14px!important;font-weight:700!important;line-height:1.5!important}
#customerPortal #cpPriceWarning.pe-qt-warn{background:#fffbeb!important;color:#92400e!important;border:1px solid #fcd34d!important}
#customerPortal #cpPriceWarning.pe-qt-warn-no{background:#fef2f2!important;color:#b91c1c!important;border:1px solid #fca5a5!important}
/* V21.16.63 the Admin price box: road distance + the distance-table price as a starting point */
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-dist{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 12px;border-radius:10px;background:#eff6ff;border:1px solid #bfdbfe;font-size:14px!important;color:#1e3a8a}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-dist b{font-weight:900!important}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-dist small{font-size:12.5px!important;color:#64748b}
#admin#admin.v21-admin #v2105OrderDetailBody .pe-qt-usedist{min-height:32px;padding:2px 12px!important;border:1px solid #93c5fd;border-radius:8px;background:#fff;color:#1d4ed8;font-size:13px!important;font-weight:800!important;cursor:pointer;width:auto}
