/* 排班：月曆與時段 */
.pps-monthbar{display:flex;align-items:center;justify-content:center;gap:14px;margin:0 0 16px}
.pps-month{font-size:1.15rem;font-weight:800;min-width:9em;text-align:center}

.pps-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:0 0 16px}
.pps-wd{text-align:center;font-size:.76rem;font-weight:700;color:var(--c-muted);padding:4px 0}
.pps-pad{min-height:10px}

.pps-cell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:3px;
	min-height:78px;padding:8px 4px;border:1px solid var(--c-line);border-radius:12px;background:var(--c-surface);
	cursor:pointer;text-decoration:none;color:var(--c-ink);transition:border-color .15s ease,background .15s ease}
.pps-cell:hover{border-color:var(--c-leaf-soft)}
.pps-cell input[type=checkbox]{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.pps-cell.is-past{opacity:.42}
.pps-cell.is-past input{cursor:not-allowed}
.pps-d{font-size:1.02rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.pps-mark{font-size:.66rem;color:var(--c-muted);text-align:center;line-height:1.3}
/* 月曆格子裡的人名標籤：每個人固定一個顏色 */
.pps-whos{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;align-content:flex-start;width:100%;margin-top:1px}
.pps-who{font-size:.62rem;font-weight:700;line-height:1.5;padding:1px 6px;border-radius:999px;
	white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
/* 格子選起來（員工端）時，標籤要在深色底上看得見 */
.pps-cell:has(input:checked) .pps-who{background:rgba(255,255,255,.9)!important}
/* 月曆下方的人名對照 */
.pps-people{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0 0;padding:10px 12px;
	border:1px solid var(--c-line);border-radius:12px;background:var(--c-surface)}
.pps-people-l{font-size:.78rem;font-weight:700;color:var(--c-muted)}
.pps-person{display:inline-flex;align-items:center;gap:5px}
.pps-person-n{font-size:.8rem}
/* 打過的名字清單 */
.pps-namelist{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 2px}
.pps-nameitem{display:inline-flex;align-items:center;gap:4px;padding:5px 6px 5px 12px;
	border:1px solid var(--c-line);border-radius:999px;background:var(--c-surface);font-size:.86rem}
.pps-namex{border:0;background:none;cursor:pointer;color:var(--c-muted);font-size:.9rem;
	line-height:1;padding:2px 4px;border-radius:50%}
.pps-namex:hover{background:#f3e3e3;color:var(--c-bad)}
/* 快速填入：點一下就把名字帶進剛才碰過的欄位 */
.pps-quicknames{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px;
	padding:10px 12px;border:1px dashed var(--c-line);border-radius:12px;background:var(--c-surface)}
.pps-quick-l{font-size:.78rem;font-weight:700;color:var(--c-muted);margin-right:2px}
.pps-quickname{font:inherit;font-size:.84rem;font-weight:600;cursor:pointer;padding:5px 12px;
	border:1px solid var(--c-line);border-radius:999px;background:#fff;color:var(--c-ink)}
.pps-quickname:hover{border-color:var(--c-leaf);background:var(--c-ok-bg)}
.pps-dim{opacity:.5}

/* 員工端：勾選後整格變色 */
.pps-cell:has(input:checked){background:var(--c-leaf);border-color:var(--c-leaf);color:#fff}
.pps-cell:has(input:checked) .pps-mark{color:#fff}
.pps-cell.is-on{background:var(--c-ok-bg);border-color:var(--c-leaf-soft)}
.pps-cell.is-assigned{background:var(--c-ok-bg);border-color:var(--c-leaf-soft)}

.pps-badges{display:flex;flex-wrap:wrap;gap:3px;justify-content:center}
.pps-b{font-size:.64rem;font-weight:700;padding:1px 6px;border-radius:999px;white-space:nowrap}
.pps-b-out{background:#E4EFDC;color:#2F6B43}
.pps-b-sit{background:#FDF3E2;color:#8A5A12}
.pps-assigned{font-weight:700;color:#2F6B43}

.pps-legend{display:flex;flex-wrap:wrap;gap:14px;margin:0 0 12px;font-size:.78rem;color:var(--c-muted)}
.pps-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.pps-i-out{background:#E4EFDC;border:1px solid #2F6B43}
.pps-i-sit{background:#FDF3E2;border:1px solid #8A5A12}
.pps-i-as{background:var(--c-ok-bg);border:1px solid #93C168}

.pps-confirm{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pps-confirm form{margin:0}

/* 時段勾選 */
.pps-hours{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.pps-hour{position:relative;display:flex;align-items:center;justify-content:center;padding:12px 8px;border:1.5px solid var(--c-line);
	border-radius:12px;background:#fff;cursor:pointer;font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums}
.pps-hour input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.pps-hour:has(input:checked){background:var(--c-leaf);border-color:var(--c-leaf);color:#fff}

/* 管理員：單日排班 */
.pps-hourrows{display:flex;flex-direction:column;gap:10px}
.pps-hourrow{display:grid;grid-template-columns:128px 1fr;gap:12px;align-items:center;
	padding:10px 0;border-bottom:1px solid var(--c-line)}
.pps-hourrow:last-child{border-bottom:0}
.pps-hourbody{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* 手寫指派：排給還沒註冊的人 */
.pps-manual-in{flex:1 1 180px;min-width:150px;padding:8px 12px;border:1.5px dashed var(--c-line);
  border-radius:10px;font:inherit;font-size:.9rem;background:transparent;color:inherit}
.pps-manual-in:focus{outline:none;border-style:solid;border-color:var(--c-leaf,#3c7a4c)}
.pps-hourrow.is-filled .pps-hourlabel{font-weight:800;color:var(--c-leaf,#3c7a4c)}
.pps-manual{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.pps-manual-l{font-size:.86rem;font-weight:700;opacity:.85}
.pps-manual input{padding:9px 12px;border:1.5px dashed var(--c-line);border-radius:10px;
  font:inherit;font-size:.9rem;background:transparent;color:inherit}
.pps-manual input:focus{outline:none;border-style:solid;border-color:var(--c-leaf,#3c7a4c)}
/* 一個時段排好幾個人 */
.pps-manualbox{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex:1 1 220px}
.pps-addname{flex:0 0 auto;border:1px dashed var(--c-line);background:transparent;color:var(--c-muted);
  border-radius:999px;padding:6px 12px;font:inherit;font-size:.82rem;cursor:pointer;white-space:nowrap}
.pps-addname:hover{border-style:solid;border-color:var(--c-leaf,#3c7a4c);color:var(--c-leaf,#3c7a4c)}
.pps-rosterlist{margin:6px 0 14px;padding-left:20px;line-height:1.85;font-size:.92rem}
.pps-hourlabel{font-weight:700;font-size:.86rem;font-variant-numeric:tabular-nums;color:var(--c-muted)}
.pps-picks{display:flex;flex-wrap:wrap;gap:7px}
.pps-pick{position:relative;display:inline-flex;align-items:center;padding:8px 16px;border:1.5px solid var(--c-line);
	border-radius:999px;background:#fff;cursor:pointer;font-size:.88rem;font-weight:600}
.pps-pick input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer}
.pps-pick:has(input:checked),.pps-pick.is-on{background:var(--c-leaf);border-color:var(--c-leaf);color:#fff}

.pps-sub{font-weight:800;font-size:.94rem;margin:14px 0 6px}
.pps-sub:first-child{margin-top:0}
.pps-roleform{display:flex;align-items:center;gap:8px}
.pps-roleform .ppc-select{width:auto;min-width:170px;padding:8px 12px;font-size:.88rem}

/* 員工端沒有側邊選單 */
.pps-body{grid-template-columns:1fr}
.pps .ppc-main{padding-bottom:40px}

@media (max-width:860px){
	.pps-cal{gap:4px}
	.pps-cell{min-height:64px;padding:6px 2px;border-radius:10px}
	.pps-d{font-size:.92rem}
	.pps-mark,.pps-b{font-size:.58rem}
	.pps-cell{min-height:72px}
	.pps-who{font-size:.56rem;padding:1px 4px}
	.pps-whos{gap:2px}
	.pps-hourrow{grid-template-columns:1fr;gap:6px}
	.pps-hours{grid-template-columns:repeat(auto-fill,minmax(108px,1fr))}
	.pps-roleform{width:100%}
	.pps-roleform .ppc-select{flex:1;min-width:0}
}

/* 員工登入：Face ID */
.pps-authtabs{justify-content:center;margin-bottom:18px}
.pps-faceid{gap:10px;font-size:1rem;padding:15px 24px}
.pps-face{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;
	border:2px solid currentColor;font-size:13px;line-height:1}
.pps-check{list-style:none;margin:6px 0 16px;padding:0;text-align:left;display:grid;gap:8px}
.pps-check li{display:flex;align-items:flex-start;gap:9px;font-size:.92rem;padding:10px 14px;border-radius:12px;
	background:#F6F9F3;border:1px solid var(--c-line);color:var(--c-muted)}
.pps-check li.is-ok{background:var(--c-ok-bg);border-color:#CFE0C4;color:#2F6B43}
.pps-check li.is-wait{background:var(--c-warn-bg);border-color:#F0DCBE;color:var(--c-warn)}
.pps-check b{font-weight:900}
.pps-h{margin:0 0 16px;font-size:1.3rem;font-weight:800}

/* 路線的每一站 */
.pps-stop{display:flex;gap:14px;align-items:flex-start;padding:13px 0;border-bottom:1px solid var(--c-line)}
.pps-stop:last-child{border-bottom:0}
.pps-stop-n{flex:none;width:30px;height:30px;border-radius:50%;background:var(--c-leaf);color:#fff;
	display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.86rem}
.pps-stop b{display:block;font-size:.98rem}
