/* ---- View②：每日行程（合併頁） ---- */
.today-label { font-size: 15px; font-weight: 700; }
#pickToggleBtn, #settleBtn, #rtNewBtn, #rtOverrideBtn,
#rt-prev, #rt-next, #rt-today {
  font-size: 13px; padding: 6px 12px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); color: var(--text);
}
#pickToggleBtn:hover, #rtNewBtn:hover { border-color: var(--accent); }
#settleBtn { background: var(--accent-deep); color: var(--text); border-color: var(--accent-deep); }

.today-list { display: flex; flex-direction: column; gap: 8px; }
.today-row {
  border: 1px solid var(--border); border-left: 4px solid var(--accent);
  border-radius: 8px; background: var(--card); padding: 8px 12px;
}
.today-row.done { border-left-color: var(--green); background: var(--green-soft); opacity: 0.75; }
.today-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.today-name { flex: 1; font-size: 15px; font-weight: 600; min-width: 120px; }
.today-pct { font-size: 13px; color: var(--accent); font-weight: 700; }
.today-donetag { font-size: 12px; color: var(--green); font-weight: 700; }
.today-remove { border: none; background: none; color: var(--muted); font-size: 15px; padding: 2px 6px; }
.today-remove:hover { color: var(--red); }
.today-actions { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.today-done-btn {
  font-size: 12px; padding: 4px 12px; border: none; border-radius: 6px;
  background: var(--green); color: var(--on-accent); font-weight: 600;
}
.today-prog { width: 62px; }
.today-prog-save {
  font-size: 12px; padding: 4px 10px; border: 1px solid var(--accent);
  border-radius: 6px; background: rgba(110, 160, 246, 0.14); color: var(--accent);
}
.today-reason { flex: 1; min-width: 140px; font-size: 12px; }

.pick-panel {
  border: 1px solid var(--border); border-radius: 10px; background: var(--bg-soft);
  padding: 10px 12px; margin-top: 10px;
}
.pick-head { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.pick-block-row { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; font-size: 12px; color: var(--muted); }
.pick-group { margin-bottom: 10px; }
.pick-proj { font-size: 12px; color: var(--muted); font-weight: 700; margin-bottom: 4px; }
.pick-item {
  display: block; width: 100%; text-align: left; font-size: 13px;
  padding: 7px 10px; margin-bottom: 4px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); color: var(--text);
}
.pick-item:hover { background: var(--card-soft); border-color: var(--accent); }
.pick-meta { float: right; font-size: 11px; color: var(--muted); }

.settle-panel {
  border: 2px solid var(--accent-deep); border-radius: 10px; background: var(--card);
  padding: 12px 14px; margin-top: 10px;
}
.settle-title { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.settle-sum { font-size: 13px; color: var(--muted); margin-bottom: 8px; }
.settle-block { margin-bottom: 8px; font-size: 13px; }
.settle-block ul { margin: 4px 0 0 18px; padding: 0; }
.settle-none { color: var(--muted); font-size: 12px; }
.settle-block textarea { width: 100%; margin-top: 4px; }
.settle-timeline { margin-top: 6px; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.settle-tl-row { display: flex; align-items: flex-start; gap: 10px; padding: 6px 10px; border-bottom: 1px solid var(--border-soft); }
.settle-tl-row:last-child { border-bottom: none; }
.settle-tl-busy { color: var(--muted); background: var(--bg-soft); }
.settle-tl-gap { background: rgba(95, 190, 116, 0.06); align-items: center; }
.settle-tl-time { flex: 0 0 90px; font-weight: 600; font-size: 12px; }
.settle-tl-label { font-size: 12px; }
.settle-actions { display: flex; gap: 8px; }
.settle-actions button { font-size: 13px; padding: 6px 16px; border-radius: 8px; border: 1px solid var(--border); background: var(--card-soft); color: var(--text); }
.settle-actions #settle-submit { background: var(--accent); color: var(--on-accent); border-color: var(--accent); font-weight: 600; }

/* B5：結算單張草稿表 */
.settle-row {
  padding: 8px 0; border-top: 1px solid var(--border-soft);
}
.settle-row:first-of-type { border-top: none; }
.settle-row-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.settle-row-name { font-weight: 600; }
.settle-row-status { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.settle-row-fields { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.settle-done-cb, .settle-tomorrow-cb, .settle-create-cb { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 3px; white-space: nowrap; }
.settle-progress-note { flex: 1; min-width: 160px; }
.settle-practice-row {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 6px 0; border-top: 1px solid var(--border-soft);
}
.settle-practice-row:first-of-type { border-top: none; }
.settle-practice-name { flex: 1 1 100%; }
.settle-practice-input { width: 80px; }
.settle-practice-already { color: var(--green); font-weight: 600; font-size: 12px; }

.wl-head { font-size: 13px; font-weight: 700; margin: 18px 0 6px; }
.wl-row { font-size: 12px; padding: 6px 8px; border-bottom: 1px solid var(--border-soft); }
.wl-date { font-weight: 600; margin-right: 8px; }
.wl-rate { color: var(--accent); margin-right: 8px; }
.wl-undone { color: var(--amber); }
.wl-timeline { color: var(--text); margin-top: 2px; font-size: 12px; }
.wl-review { color: var(--muted); margin-top: 2px; }
.wl-src { font-size: 11px; border: 1px solid var(--border); border-radius: 4px; padding: 0 5px; margin-right: 8px; color: var(--muted); }
.wl-src.wl-src-settled { border-color: var(--accent); color: var(--accent); }
.wl-done { margin-top: 2px; color: var(--text); }
.wl-review-edit { font-size: 11px; padding: 1px 8px; margin-top: 4px; border: 1px solid var(--border); border-radius: 5px; background: var(--card-soft); color: var(--accent); }
.wl-review .wl-review-edit { margin-top: 0; margin-left: 6px; }
.wl-review-input { width: 100%; box-sizing: border-box; margin-top: 4px; font-size: 13px; }
.wl-review-actions { display: flex; gap: 6px; margin-top: 4px; }
.wl-row.wl-missing { background: var(--amber-soft); }
.wl-missing-tag { color: var(--amber); font-weight: 600; }
.wl-row.wl-partial { background: rgba(110, 160, 246, 0.08); }
.wl-partial-tag { color: var(--accent); font-weight: 600; }

/* ⭐今日挑選的任務在 View① 標示 */
.task-card.today-pick { box-shadow: 0 0 0 2px var(--amber) inset; }
.tc-today { font-size: 11px; background: var(--amber); color: var(--on-accent-soft); border-radius: 8px; padding: 0 6px; font-weight: 700; }
/* 連續排入每日行程仍未完成的卡住警示（View①／每日行程共用） */
.tc-stuck, .today-stuck { font-size: 11px; background: var(--red-soft); color: var(--red); border-radius: 8px; padding: 0 6px; font-weight: 700; }
.tc-silent-risk {
  font-size: 11px; background: var(--red); color: #fff; border-radius: 8px;
  padding: 1px 8px; font-weight: 700;
}
.p-tag-silent-risk {
  background: var(--red); color: #fff; font-weight: 700;
}

/* ---- 每日行程：作息時段 ---- */
.rt-copy-suggest {
  display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
  border: 1px solid var(--accent); border-radius: 8px; background: rgba(110, 160, 246, 0.06);
  padding: 8px 12px;
}
.rt-copy-suggest button {
  font-size: 12px; padding: 3px 10px; border: 1px solid var(--accent);
  border-radius: 6px; background: rgba(110, 160, 246, 0.14); color: var(--accent); font-weight: 600;
}
.rt-copy-suggest select {
  font-size: 13px; padding: 2px 6px; border: 1px solid var(--border); border-radius: 6px;
  background: var(--card); color: var(--text);
}
.rt-list { display: flex; flex-direction: column; gap: 6px; }
.rt-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--border); border-left: 4px solid #6b7280;
  border-radius: 8px; background: var(--card); padding: 8px 12px; position: relative;
}
.rt-row.busy { border-left-color: var(--red); background: var(--red-soft); }
.rt-row.free { border-left-color: var(--green); background: var(--green-soft); }
.rt-row.away { border-left-color: var(--color-personal); background: var(--red-soft); }
.rt-time { font-weight: 700; font-size: 13px; min-width: 100px; }
.rt-block { flex: 1; font-size: 14px; min-width: 100px; }
.rt-pill { font-size: 11px; border-radius: 10px; padding: 1px 8px; color: var(--on-accent-soft); font-weight: 600; }
.rt-pill.busy { background: var(--red); }
.rt-pill.free { background: var(--green); }
.rt-pill.away { background: var(--color-personal); }
.rt-note { font-size: 12px; color: var(--muted); }
.rt-edit-btn { font-size: 12px; padding: 2px 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--card-soft); color: var(--text); }
.rt-edit-panel { width: 100%; margin-top: 8px; }
.rt-ref { margin-top: 16px; font-size: 13px; }
.rt-ref-title { font-weight: 700; margin-bottom: 6px; }
.rt-ref-row { padding: 3px 0; }
.rt-ref-clickable { cursor: pointer; border-radius: 4px; }
.rt-ref-clickable:hover { background: var(--card-soft); }
.rt-ref-time { margin-left: 6px; color: var(--accent); font-weight: 600; }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; }
.rt-marker { border-left-color: #565d68; background: var(--bg-soft); color: var(--muted); font-size: 13px; padding: 6px 12px; }

/* ---- 已過去／現在進行中：只在檢視「今天」時套用 ---- */
.rt-past { opacity: 0.32; filter: grayscale(35%); }
.rt-current { outline: 2px solid var(--accent); outline-offset: -1px; }
.rt-now-badge {
  display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 10px;
  background: var(--accent); color: var(--on-accent-soft); margin-right: 6px;
}
.sched-gap.rt-current { outline-offset: 0; }

/* ---- 空閒時段內的任務排程 ---- */
.sched-unscheduled {
  border: 1px dashed var(--red); border-radius: 8px; background: var(--red-soft);
  padding: 8px 12px; margin-bottom: 10px;
}
.sched-conflicted {
  border: 1px dashed var(--amber); border-radius: 8px; background: var(--amber-soft);
  padding: 8px 12px; margin-bottom: 10px;
}
.sched-conflicted .sched-section-title { color: var(--amber); }
.sched-conflict-warn {
  font-size: 12px; color: var(--amber); background: var(--amber-soft);
  border: 1px solid var(--amber); border-radius: 6px; padding: 6px 10px; margin: 4px 0;
}
.sched-section-title { font-size: 13px; font-weight: 700; margin-bottom: 6px; color: var(--red); }
.sched-gap {
  border: 1px solid rgba(95, 190, 116, 0.35); border-radius: 8px; background: rgba(95, 190, 116, 0.06);
  padding: 8px 12px; margin: 6px 0;
}
.sched-gap-head { font-size: 13px; font-weight: 700; color: var(--green); margin-bottom: 6px; display: flex; align-items: center; gap: 10px; }
.sched-gap-empty { font-size: 12px; color: var(--muted); padding: 4px 0; }
.sched-gap.rt-past { opacity: 0.4; filter: grayscale(35%); }
.sched-gap-pastempty {
  border: 1px solid var(--amber); background: var(--amber-soft); opacity: 1;
}
.sched-gap-pastempty .sched-gap-head { color: var(--amber); }
.sched-timelog-add-urge {
  border-color: var(--amber) !important; background: var(--amber-soft) !important; color: var(--amber) !important; font-weight: 600;
}
/* B3：結構化時段紀錄 */
.sched-timelog-list { margin-top: 4px; }
.tl-row {
  display: flex; align-items: center; gap: 8px; font-size: 12px;
  padding: 3px 8px; border-radius: 6px; background: var(--card-soft); margin-bottom: 3px;
}
.tl-time { color: var(--accent); font-weight: 600; }
.tl-cat { color: var(--muted); font-size: 11px; border: 1px solid var(--border); border-radius: 4px; padding: 0 5px; }
.tl-content { flex: 1; }
.tl-edit { margin-left: auto; color: var(--muted); border: none; background: transparent; font-size: 12px; }
.tl-edit:hover { color: var(--accent); }
.tl-del { color: var(--muted); border: none; background: transparent; font-size: 12px; }
.tl-del:hover { color: var(--red); }
.tl-del-confirm { flex-basis: 100%; }
.tl-edit-form {
  flex-basis: 100%; margin-top: 6px; padding: 8px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--bg-soft);
}
.sched-timelog-add { margin-top: 4px; }
.sched-timelog-add-btn {
  font-size: 12px; padding: 3px 10px; border: 1px dashed var(--border);
  border-radius: 6px; background: transparent; color: var(--muted);
}
.sched-timelog-add-btn:hover { color: var(--accent); border-color: var(--accent); }
.sched-timelog-form { margin-top: 6px; padding: 8px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-soft); }
.tl-form-row { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; flex-wrap: wrap; }
.tl-form-row:last-child { margin-bottom: 0; }
.tl-form-row input[type=time], .tl-form-row select { font-size: 12px; padding: 3px 6px; }
.tl-content.cf-wide { flex: 1; min-width: 160px; }
/* 「用了多久」快捷鈕：一鍵算出結束時間，取代手撥時間欄（回填時最花時間的就是這一步） */
.tl-quick { gap: 4px; }
.tl-dur-btn {
  font-size: 12px; padding: 3px 8px; border: 1px solid var(--border);
  border-radius: 999px; background: var(--card); color: var(--text); cursor: pointer;
}
.tl-dur-btn:hover { border-color: var(--accent); color: var(--accent); }
.tl-dur { color: var(--muted); font-size: 12px; }

/* 空閒時段排功課：純估算工具，用紫色跟「＋排任務」（綠）區分，提醒這不是正式寫入 Notion 的排程 */
.sched-gap-practice-add {
  font-size: 13px; font-weight: 600; padding: 4px 14px; border: none;
  border-radius: 6px; background: var(--color-range); color: #fff;
}
.sched-gap-practice-picklist { margin-bottom: 6px; }
.pg-pick-row {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 6px 10px; margin-bottom: 4px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); font-size: 13px;
}
.pg-pick-name { font-weight: 600; flex: 1; min-width: 100px; }
.pg-pick-minutes { width: 60px; }
.pg-pick-est { color: var(--muted); font-size: 12px; min-width: 90px; }
.pg-pick-assign {
  font-size: 12px; padding: 3px 10px; border: none; border-radius: 6px;
  background: var(--color-range); color: #fff; font-weight: 600;
}
.sched-practice-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--color-range); border-radius: 8px; background: rgba(155, 127, 212, 0.1);
  padding: 6px 12px; margin-bottom: 6px; font-size: 13px;
}
.sched-practice-name { font-weight: 600; }
.sched-practice-est { color: var(--text); }
.sched-practice-remove {
  margin-left: auto; font-size: 12px; padding: 2px 8px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--card); color: var(--muted);
}
.sched-task-row {
  border: 1px solid var(--border); border-left: 4px solid var(--accent);
  border-radius: 8px; background: var(--card); padding: 8px 12px; margin-bottom: 6px;
}
.sched-task-row.done { border-left-color: var(--green); background: var(--green-soft); opacity: 0.75; }
.sched-task-row:last-child { margin-bottom: 0; }
.sched-time-row { display: flex; align-items: center; gap: 8px; margin-top: 4px; font-size: 12px; }
.sched-time-label { color: var(--accent); font-weight: 600; }
/* 進階路徑：手動輸入精確 HH:MM。主要排程方式是「＋ 從任務池挑選」面板上選 BLOCK（晨間/上午/下午/晚間），
   這顆刻意做得低調，只給需要精確鐘點的少數情境用。 */
.sched-time-btn {
  font-size: 11px; padding: 2px 8px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--card-soft); color: var(--muted);
}
.sched-time-btn:hover { color: var(--text); border-color: var(--muted); }
.sched-time-panel { margin-top: 6px; display: flex; flex-direction: column; gap: 6px; }
.sched-time-panel input[type=time] { width: 110px; font-size: 12px; }
.ste-dash { color: var(--muted); }
.sched-time-panel button {
  font-size: 12px; padding: 4px 10px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--card-soft); color: var(--text);
}
.sched-time-panel .ste-save { background: var(--green); color: var(--on-accent); border-color: var(--green); font-weight: 600; }
.ste-gaps-label { font-size: 12px; color: var(--muted); }
.ste-gaps { display: flex; flex-wrap: wrap; gap: 6px; }
.ste-gap-pick { background: var(--card-soft); border: 1px solid var(--accent); color: var(--accent); }
.ste-gaps-empty { font-size: 12px; color: var(--muted); }
.ste-manual { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ste-due-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--border); }
.ste-conflict-warn {
  font-size: 12px; color: var(--red); background: var(--red-soft);
  border-radius: 6px; padding: 6px 10px;
}
.ste-conflict-warn ul { margin: 4px 0 0; padding-left: 18px; }
.ste-force-save {
  font-size: 12px; padding: 4px 10px; border: 1px solid var(--red);
  border-radius: 6px; background: var(--red-soft); color: var(--red); font-weight: 600;
}
/* 順延：正面選項，跟「仍要儲存」（會留下重疊）的紅色警示區分開來 */
.ste-push-back {
  font-size: 12px; padding: 4px 10px; border: 1px solid var(--accent);
  border-radius: 6px; background: transparent; color: var(--accent); font-weight: 600;
}
.ste-conflict-cancel {
  font-size: 12px; padding: 4px 10px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--card-soft); color: var(--text);
}

/* ---- 完成度百分比（即時更新） ---- */

/* ---- View①：所有專案一次顯示，依專案分區 ---- */
.proj-group { margin-bottom: 22px; padding-left: 8px; border-radius: 4px; }
.proj-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 16px; margin: 0 0 8px;
  padding: 7px 10px; background: var(--card-soft); border-radius: 8px;
  border-left: 3px solid transparent;
  position: sticky; top: 0; z-index: 10;
  background: color-mix(in srgb, var(--proj-color, var(--muted)) 22%, var(--card-soft));
}
.proj-toggle { cursor: pointer; }
.proj-toggle-icon { font-size: 13px; color: var(--muted); flex: none; }
.proj-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.proj-name { font-weight: 700; letter-spacing: 0.5px; }
.proj-rename-btn {
  margin-left: auto; font-size: 12px; padding: 2px 8px;
  border: 1px solid var(--border); border-radius: 6px; background: var(--card); color: var(--text);
}
.proj-rename-bar { margin-bottom: 8px; }

/* ================= 施工進度 ================= */
.con-subtabs { display: inline-flex; gap: 4px; }
.con-subtab {
  font-size: 13px; padding: 6px 12px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); color: var(--text);
}
.con-subtab.active { background: var(--accent); color: var(--on-accent); border-color: var(--accent); font-weight: 600; }

/* ---- 📊 分析報表 ---- */
.an-range-btn {
  font-size: 13px; padding: 6px 12px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); color: var(--text);
}
.an-range-btn.active { background: var(--accent); color: var(--on-accent); border-color: var(--accent); font-weight: 600; }
.an-summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
  border: 1px solid var(--border); border-left: 3px solid var(--green); border-radius: 8px; background: var(--card);
  padding: 10px 14px; margin-bottom: 14px; font-size: 13px; color: var(--muted);
}
.an-summary-range { font-weight: 600; color: var(--text); }
.an-summary-item b { color: var(--text); }
.an-block {
  border: 1px solid var(--border); border-radius: 8px; background: var(--card);
  padding: 10px 14px; margin-bottom: 14px;
}
.an-block-title { font-size: 14px; font-weight: 700; margin-bottom: 8px; }
.an-block-rank { border-left: 3px solid var(--amber); }
.an-block-rank .an-block-title { color: var(--amber); }
.an-block-daily { border-left: 3px solid var(--accent); }
.an-block-daily .an-block-title { color: var(--accent); }
.an-rank-row { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.an-rank-name { flex: 0 0 90px; font-size: 13px; font-weight: 600; }
.an-bar { flex: 1; height: 10px; background: var(--card-soft); border-radius: 5px; overflow: hidden; }
.an-bar-fill { height: 100%; border-radius: 5px; }
.an-rank-mins { flex: 0 0 220px; text-align: right; font-size: 12px; color: var(--muted); }
.an-rank-avg { color: var(--muted); opacity: 0.75; }
.an-day-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  padding: 6px 10px; border-bottom: 1px solid var(--border-soft); font-size: 13px;
}
.an-day-empty { color: var(--muted); }
.an-day-date { flex: 0 0 90px; font-weight: 600; }
.an-day-practice { font-size: 12px; color: var(--accent); }
.an-day-proj {
  font-size: 12px; border: 1px solid; border-radius: 10px; padding: 1px 8px;
}
#conNewBtn {
  font-size: 13px; padding: 6px 12px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--card); color: var(--text);
}

.con-loglist { display: flex; flex-direction: column; gap: 8px; }
.con-logrow {
  border: 1px solid var(--border); border-left: 4px solid var(--color-personal);
  border-radius: 8px; background: var(--card); padding: 8px 12px;
}
.con-logrow.stop { border-left-color: var(--red); background: var(--red-soft); }
.con-logtop { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13px; }
.con-date { font-weight: 600; }
.con-statuspill { font-size: 12px; border-radius: 10px; padding: 1px 8px; color: var(--on-accent-soft); font-weight: 600; background: var(--color-personal); }
.con-statuspill.stop { background: var(--red); }
.con-reason { font-size: 12px; background: var(--amber-soft); color: var(--amber); border-radius: 10px; padding: 1px 8px; }
.con-by { font-size: 12px; color: var(--muted); margin-left: auto; }
.con-phase { font-size: 12px; background: var(--blue-soft, rgba(90,140,220,.15)); color: var(--accent); border-radius: 10px; padding: 1px 8px; }
.con-continues { font-size: 12px; color: var(--muted); }
.con-report { font-size: 14px; margin: 4px 0; }
.con-note { font-size: 13px; color: var(--muted); }
.con-photo-btn {
  font-size: 12px; margin-top: 4px; padding: 3px 10px; border: 1px solid var(--accent);
  border-radius: 6px; background: rgba(110, 160, 246, 0.14); color: var(--accent);
}

.con-schlist { display: flex; flex-direction: column; }
.con-schrow {
  display: flex; align-items: center; gap: 8px; font-size: 14px;
  padding: 7px 8px; border-bottom: 1px solid var(--border-soft); flex-wrap: wrap;
}
.con-schrow.task { padding-left: 26px; font-size: 13px; }
.con-schrow.mile { font-weight: 600; background: var(--bg-soft); }
.con-schmark { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.con-schname { flex: 1; min-width: 120px; }
.con-schstatus { font-size: 12px; font-weight: 600; }
.con-schdate { font-size: 12px; color: var(--muted); }
.con-schdate.actual { color: var(--green); }
.con-vendor { font-size: 12px; color: var(--purple); }
.con-sch-edit { font-size: 12px; padding: 1px 6px; border: 1px solid var(--border); border-radius: 6px; background: var(--card-soft); color: var(--text); }
.con-sch-orphan { font-size: 12px; color: var(--muted); margin: 8px 0 2px; }
.con-sch-panel { margin: 0 0 6px 26px; }

/* ================= 🛂 入出境天數（v12）================= */
.i94-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin-bottom: 12px; }
.i94-card { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px; }
.i94-card.i94-warn { border-color: var(--amber); background: var(--amber-soft); }
.i94-card.i94-danger { border-color: var(--red); background: var(--red-soft); }
.i94-card-label { font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.i94-card-value { font-size: 15px; font-weight: 700; }
.i94-card-sub { font-size: 13px; margin-top: 2px; }
.i94-card.i94-danger .i94-card-sub { color: var(--red); font-weight: 600; }
.i94-card.i94-warn .i94-card-sub { color: var(--amber); font-weight: 600; }
.i94-disclaimer { font-size: 11px; color: var(--muted); margin-top: 8px; }
.i94-table { display: flex; flex-direction: column; gap: 6px; }
.i94-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 8px 10px; background: var(--card); border: 1px solid var(--border-soft); border-radius: 8px; }
.i94-trip { font-weight: 600; min-width: 90px; }
.i94-dates { color: var(--text); }
.i94-days { color: var(--accent); font-size: 13px; }
.i94-port { font-size: 12px; color: var(--muted); border: 1px solid var(--border); border-radius: 6px; padding: 1px 6px; }
.i94-note { font-size: 12px; color: var(--muted); }
.i94-edit-btn { margin-left: auto; background: var(--card-soft); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: 3px 9px; font-size: 13px; }
.i94-delete-btn { margin-left: 6px; background: var(--red-soft); border: 1px solid var(--red); color: var(--red); border-radius: 6px; padding: 3px 9px; font-size: 13px; }
.i94-edit-form { margin: 4px 0 10px; }
.i94-confirm-bar { margin: -2px 0 4px; }

/* ================= 手機版面（RWD，≤640px）================= */
/* ---- 🪑 法座尺寸計算（v13）---- */
.rc-block {
  background: var(--card); border: 1px solid var(--border); border-radius: 8px;
  padding: 12px; margin-bottom: 12px;
}
.rc-block-head { font-weight: 600; margin-bottom: 8px; }
.rc-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; margin-top: 8px; }
.rc-card {
  background: var(--card-soft); border: 1px solid var(--border); border-radius: 8px; padding: 10px;
}
.rc-card.rc-dual { border-color: var(--red); background: var(--red-soft); }
.rc-card-cm { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.rc-card-sub { font-size: 12px; color: var(--muted); margin-top: 6px; }
.rc-card-row { font-size: 13px; margin-top: 2px; display: flex; align-items: center; gap: 6px; }
.rc-tag {
  font-size: 11px; padding: 1px 6px; border-radius: 4px; border: 1px solid var(--border-soft); color: var(--muted);
}
.rc-tag.rc-red { color: var(--red); border-color: var(--red); background: var(--red-soft); }
.rc-tag.rc-black { color: var(--muted); border-color: var(--border-soft); background: transparent; }
.rc-dual-badge { margin-top: 6px; font-size: 12px; font-weight: 700; color: var(--red); }
.rc-use-stairs, .rc-use-backrest {
  margin-top: 8px; margin-right: 6px; font-size: 12px; padding: 3px 10px; border: 1px solid var(--border);
  border-radius: 6px; background: var(--card); color: var(--text); cursor: pointer;
}

/* ---- 🔢 修行計數器（20260812）：全螢幕點按計數，session-only 不落地存，送出才走既有寫入流程 ---- */
.p-counter-btn, .fp-counter-btn {
  background: var(--accent-deep); border: 1px solid var(--accent); color: var(--text);
  border-radius: 6px; padding: 4px 10px; font-size: 12.5px;
}
.counter-backdrop {
  position: fixed; inset: 0; background: rgba(0, 0, 0, 0.75); z-index: 500;
  display: flex; align-items: center; justify-content: center;
}
.counter-panel {
  background: var(--bg-soft); border: 1px solid var(--border); border-radius: 12px;
  width: min(480px, 94vw); max-height: 92vh; overflow-y: auto;
  display: flex; flex-direction: column; align-items: stretch; gap: 10px;
  padding: 16px 20px 20px;
}
.counter-head {
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
}
.counter-task { font-size: 16px; font-weight: 700; }
.counter-close-btn { border: none; background: none; font-size: 18px; color: var(--muted); }
.counter-sub { font-size: 12.5px; color: var(--muted); }
.counter-display {
  text-align: center; font-size: 76px; font-weight: 800; line-height: 1.1;
  color: var(--accent); letter-spacing: 1px; margin: 4px 0;
  font-variant-numeric: tabular-nums;
}
.counter-time-hint { text-align: center; font-size: 12.5px; color: var(--muted); margin-top: -8px; }
.counter-tap-row { display: flex; justify-content: center; }
.counter-tap-btn {
  width: 100%; min-height: 140px; font-size: 22px; font-weight: 700;
  border: 2px solid var(--accent); border-radius: 16px;
  background: var(--accent-deep); color: var(--text);
  touch-action: manipulation; user-select: none; -webkit-user-select: none;
}
.counter-tap-btn:active { background: var(--accent); }
.counter-mini-row { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.counter-minus-btn, .counter-108-btn, .counter-reset-btn {
  flex: 1; min-width: 90px; padding: 10px 8px; font-size: 14px; font-weight: 600;
  border: 1px solid var(--border); border-radius: 8px; background: var(--card-soft); color: var(--text);
}
.counter-108-btn { border-color: var(--purple); color: var(--purple); }
.counter-reset-btn { color: var(--red); border-color: var(--red-soft); }
.counter-result {
  text-align: center; font-size: 13.5px; background: var(--green-soft); color: var(--green);
  border-radius: 8px; padding: 8px 10px;
}
.counter-result .counter-continue-btn, .counter-result .counter-done-btn {
  margin-top: 8px; margin-right: 6px; font-size: 13px; padding: 5px 14px;
  border: 1px solid var(--border); border-radius: 6px; background: var(--card); color: var(--text);
}
.counter-submit-row { display: flex; justify-content: center; }
.counter-submit-btn {
  width: 100%; padding: 12px; font-size: 16px; font-weight: 700;
  border: none; border-radius: 10px; background: var(--green); color: var(--on-accent);
}
.counter-submit-btn:disabled { opacity: 0.4; }

/* 電腦板螢幕空間較寬裕，字體整體稍微放大一點比較好讀（20260819用戶反映）；
   全站字級都是寫死的 px 而非 rem，逐一改比例風險高，改用 zoom 整體等比放大最直接。
   手機板維持原尺寸不動（螢幕小，放大反而擠）。 */
@media (min-width: 900px) {
  body { zoom: 1.1; }
}

/* Keep today's main column readable with the 232px sidebar and desktop zoom. */
@media (min-width: 641px) and (max-width: 1200px) {
  .v2-grid { grid-template-columns: 1fr; }
  /* Stacked layout: 修行今日配速 reads before the full-day schedule, not after it
     (20260908 用戶要求；雙欄時左右並排無此問題，只在單欄堆疊時需要調整順序). */
  .v2-side { order: -1; }
}

@media (max-width: 640px) {
  #appShell { flex-direction: column; }
  #sidebar {
    width: 100%;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 10px;
    padding: 8px 12px;
    position: static;
    height: auto;
    border-right: none;
    border-bottom: 1px solid var(--border);
  }
  .sidebar-head { width: 100%; }
  #sidebar h1 { font-size: 16px; width: 100%; margin: 0; }
  #sidebar.collapsed { width: 100%; padding-left: 8px; padding-right: 8px; }
  #sidebar.collapsed .tab-text { display: inline; }
  #sidebar.collapsed .sidebar-head { justify-content: space-between; }
  #sidebarToggle { display: none; }
  #tabs { flex-direction: row; flex-wrap: wrap; gap: 4px; width: 100%; }
  .tab { padding: 7px 10px; font-size: 13px; flex: 1 1 auto; text-align: center; }
  #app-header { padding: 8px 12px; justify-content: flex-start; flex-wrap: wrap; gap: 8px 10px; }
  #syncStatus, #summaryBtn, #summaryPreviewBtn { padding: 6px 10px; font-size: 12px; }

  main { padding: 12px; }

  .v2-grid { grid-template-columns: 1fr; }
  .v2-side { order: -1; }
  .v3-grid { grid-template-columns: 1fr; }

  .controls { flex-wrap: wrap; gap: 8px 12px; }
  .create-form .cf-row { flex-direction: column; align-items: stretch; }
  .create-form input[type=text],
  .create-form .cf-wide { min-width: 0; width: 100%; }
  .create-form input[type=number] { width: 100%; }
  .create-form select { width: 100%; }

  .row-label { width: 128px; min-width: 128px; font-size: 13px; }
  .row-label .note { font-size: 11px; }

  #calendar3 { max-height: 60vh; }
  .cal-cell { min-height: 62px; padding: 2px; }
  .cal-dow { padding: 4px 2px; font-size: 11px; }
  .cal-date { font-size: 14px; }
  .cal-date-month { font-size: 10px; }
  .cal-lunar { font-size: 9px; }
  .cal-event { font-size: 10px; padding: 0 2px; }
  .cal-add-btn { width: 15px; height: 15px; line-height: 13px; font-size: 11px; }
  /* Expand inward; the cell clips the hit area so it cannot select a neighbour. */
  .cal-add-btn::before {
    content: '';
    position: absolute;
    right: -3px;
    bottom: -3px;
    width: 32px;
    height: 32px;
  }

  .practice-cards { grid-template-columns: 1fr; }
  .fp-cards { grid-template-columns: 1fr; }
  .rp-cards { grid-template-columns: 1fr; }
  .fp-report-row input[type=date] { width: 100%; }
  .practice-card .p-report { flex-wrap: wrap; }
  .practice-card .p-report-label { min-width: 64px; }

  #sm-text { min-height: 300px; font-size: 12px; }
  .modal-box { padding: 12px; }

  .rc-card-grid { grid-template-columns: 1fr; }

  .counter-panel { padding: 12px 14px 16px; }
  .counter-display { font-size: 56px; }
  .counter-tap-btn { min-height: 110px; font-size: 18px; }

  .el-reader-backdrop { align-items: stretch; }
  .el-reader-panel { width: 100%; max-height: 100vh; border-radius: 0; }
  .el-reader-body { padding: 16px; max-width: none; }
  .el-review-due-card { align-items: stretch; flex-direction: column; }
  .el-review-start { width: 100%; }
  .el-review-prompt { font-size: 21px; }
  .el-review-assess { grid-template-columns: 1fr; }
}

.rc-profile { border: 1px solid var(--accent, #729df0); position: sticky; top: 64px; z-index: 20; }
.rc-profile .hint { font-size: 12px; }
#rc-reference-search { background: var(--card-soft); color: var(--text); border: 1px solid var(--border); border-radius: 6px; padding: 7px 10px; max-width: 100%; }
.rc-profile-values { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-bottom: 8px; }
.rc-reference-scroll { max-width: 100%; overflow-x: auto; margin-top: 12px; }
.rc-reference-table { border-collapse: collapse; min-width: 1500px; width: 100%; }
.rc-reference-table th, .rc-reference-table td { padding: 10px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--border, #384151); white-space: pre-wrap; overflow-wrap: anywhere; min-width: 85px; }
.rc-reference-table th { font-size: 12px; color: var(--muted); }
.rc-reference-table td:nth-child(12), .rc-reference-table td:nth-child(13) { min-width: 220px; }
.rc-adopt { margin-top: 8px; min-height: 44px; }
