/* app.css — 全站唯一樣式表。合併自 tokens(變數+基礎) + face-ui(相機頁) + admin。 */

/* design-tokens.css — OKLCH light theme，依照 design-tokens skill */

:root {
  /* 背景 */
  --bg-base: oklch(0.97 0.005 250);
  --bg-surface: oklch(0.94 0.005 250);
  --bg-overlay: oklch(0.90 0.008 250);
  --bg-hover: oklch(0.92 0.005 250);

  /* 文字 */
  --text-primary: oklch(0.20 0.01 250);
  --text-secondary: oklch(0.45 0.01 250);
  --text-muted: oklch(0.60 0.008 250);

  /* 語意 */
  --color-pass: oklch(0.48 0.16 150);
  --color-critical: oklch(0.55 0.22 25);
  --color-warn: oklch(0.52 0.14 80);
  --color-info: oklch(0.52 0.13 240);
  --color-link: oklch(0.48 0.15 250);

  /* Badge 背景 */
  --badge-bg-warn: oklch(0.92 0.04 80);
  --badge-bg-info: oklch(0.92 0.03 240);
  --badge-bg-pass: oklch(0.92 0.04 150);

  /* 邊框 */
  --border-subtle: oklch(0.85 0.005 250);

  /* 字級（用 px 避免 rem 在 html / body 連鎖放大） */
  --text-xs: 18px;   /* 徽章 / 標籤 / 最小字 */
  --text-sm: 20px;   /* 表格內文 */
  --text-base: 24px; /* 正文預設 */
  --text-lg: 28px;   /* 強調 */
  --text-xl: 32px;   /* 區段標題 */
  --text-2xl: 48px;  /* 摘要數字 */
  --text-3xl: 56px;  /* 主標 */
}

/* 舊瀏覽器 fallback — 用 hex */
@supports not (color: oklch(0 0 0)) {
  :root {
    --bg-base: #f5f6f8;
    --bg-surface: #ecedf0;
    --bg-overlay: #dfe0e5;
    --bg-hover: #e5e6ea;
    --text-primary: #1e2030;
    --text-secondary: #5e6070;
    --text-muted: #8a8c98;
    --color-pass: #1e8050;
    --color-critical: #c93135;
    --color-warn: #8a7020;
    --color-info: #2a6bb8;
    --color-link: #1e5ab8;
    --badge-bg-warn: #fcf5e8;
    --badge-bg-info: #e8f0fc;
    --badge-bg-pass: #e8fcef;
    --border-subtle: #d5d6da;
  }
}

html, body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang TC", "Microsoft JhengHei", Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: var(--text-base);
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-base);
}

h1 { font-size: var(--text-3xl); font-weight: 700; }
h2 { font-size: var(--text-xl); font-weight: 700; margin: 24px 0 12px; }
h3 { font-size: var(--text-lg); font-weight: 700; margin: 16px 0 8px; }

button, input, select, textarea {
  font-size: var(--text-base);
  font-family: inherit;
}

small { font-size: var(--text-xs); color: var(--text-muted); }
code { font-size: var(--text-sm); background: var(--bg-overlay); padding: 2px 6px; border-radius: 4px; }

.hint { color: var(--text-secondary); font-size: var(--text-sm); margin: 4px 0 12px; }

/* 標籤+欄位橫列 — 相機頁補充/同意 dialog、admin 情境設定/連結欄位共用 */
.field-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 8px 0;
}
.field-row[hidden] { display: none; } /* display:flex 會蓋過 [hidden] 預設，須還原 */
.field-row label {
  flex: 0 0 7em;
  font-size: var(--text-base);
}
.field-row input[type=text],
.field-row select {
  flex: 1;
  min-width: 0;
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-surface);
  font-size: var(--text-base);
}

/* ============ 相機頁元件（原 face-ui.css）============ */

.face-overlay {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
}

/* Modals */
.audio-unlock-overlay, .consent-overlay, .fields-overlay, .alert-popup {
  position: fixed;
  inset: 0;
  background: oklch(0.20 0.01 250 / 0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 16px;
}
.audio-unlock-card, .consent-card, .fields-card, .alert-card {
  background: var(--bg-base);
  padding: 32px;
  border-radius: 16px;
  max-width: 560px;
  width: 100%;
  box-shadow: 0 16px 48px oklch(0.20 0.01 250 / 0.35);
}
.audio-unlock-card h2, .consent-card h2, .fields-card h2 {
  margin: 0 0 12px;
  color: var(--text-primary);
}
.audio-unlock-card p, .consent-card p, .fields-card p {
  font-size: var(--text-base);
  color: var(--text-secondary);
}

/* Buttons inside modals */
.consent-actions, .fields-actions, .audio-actions {
  display: flex;
  gap: 12px;
  margin-top: 24px;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.btn-modal {
  padding: 14px 28px;
  border-radius: 10px;
  cursor: pointer;
  border: 1px solid var(--border-subtle);
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: var(--text-base);
  font-weight: 600;
}
.btn-modal-primary {
  background: var(--color-pass);
  color: white;
  border-color: var(--color-pass);
}
.btn-modal-primary:disabled {
  background: var(--text-muted);
  border-color: var(--text-muted);
  cursor: not-allowed;
}
.btn-modal-secondary {
  background: var(--bg-surface);
}
.btn-modal-cancel {
  background: transparent;
}


/* Multi-text field (companion list) */
.multi-text-row {
  margin: 8px 0;
}
.multi-text-row > label {
  display: block;
  font-size: var(--text-base);
  margin-bottom: 6px;
}
.multi-text-list { display: flex; flex-direction: column; gap: 6px; }
.multi-text-item {
  display: flex;
  gap: 8px;
}
.multi-text-item input {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  font-size: var(--text-base);
}
.multi-text-add, .multi-text-remove {
  padding: 8px 14px;
  border: 1px dashed var(--border-subtle);
  background: transparent;
  color: var(--color-link);
  border-radius: 8px;
  cursor: pointer;
  font-size: var(--text-sm);
}
.multi-text-remove { color: var(--color-critical); }
.multi-text-add { margin-top: 8px; align-self: flex-start; }

/* Result card */
.result-card {
  position: fixed;
  top: 32px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-base);
  padding: 20px 36px;
  border-radius: 24px;
  box-shadow: 0 8px 24px oklch(0.20 0.01 250 / 0.25);
  display: flex;
  align-items: center;
  gap: 16px;
  z-index: 100;
  animation: result-pop 0.3s ease-out;
  border-left: 8px solid var(--color-pass);
}
.result-icon {
  font-size: var(--text-2xl);
  color: var(--color-pass);
  line-height: 1;
}
.result-text {
  font-size: var(--text-xl);
  font-weight: 700;
  color: var(--text-primary);
}
.result-badge {
  padding: 6px 14px;
  border-radius: 999px;
  font-size: var(--text-sm);
  font-weight: 700;
  background: var(--badge-bg-info);
  color: var(--color-info);
}
.result-retry {
  background: var(--badge-bg-warn);
  color: var(--color-warn);
  border-left-color: var(--color-warn);
}
.alert-card h2 {
  color: var(--color-critical);
  font-size: var(--text-xl);
}
@keyframes result-pop {
  from { transform: translate(-50%, -100%); opacity: 0; }
}

/* result-card 的 tone — 命中警示名單時整張卡上色 */
.result-card.tone-critical {
  background: oklch(0.92 0.06 25);
  border-left-color: var(--color-critical);
  animation: result-pop 0.3s ease-out, urgent-pulse 1s ease-in-out 0.3s 3;
}
.result-card.tone-critical .result-icon { color: var(--color-critical); }
.result-card.tone-critical .result-badge { background: var(--color-critical); color: white; }
.result-card.tone-warn {
  background: var(--badge-bg-warn);
  border-left-color: var(--color-warn);
}
.result-card.tone-warn .result-icon { color: var(--color-warn); }
.result-card.tone-warn .result-badge { background: var(--color-warn); color: white; }
.result-card.tone-info { border-left-color: var(--color-info); }
.result-card.tone-info .result-icon { color: var(--color-info); }
.result-card.tone-info .result-badge { background: var(--color-info); color: white; }
.result-card.tone-pass .result-badge { background: var(--color-pass); color: white; }
.result-card.tone-purple {
  border-left-color: oklch(0.50 0.17 300);
}
.result-card.tone-purple .result-icon { color: oklch(0.50 0.17 300); }
.result-card.tone-purple .result-badge {
  background: oklch(0.50 0.17 300); color: white;
}
.result-card.tone-pink {
  border-left-color: oklch(0.52 0.17 340);
}
.result-card.tone-pink .result-badge {
  background: oklch(0.52 0.17 340); color: white;
}

@keyframes urgent-pulse {
  0%, 100% { box-shadow: 0 8px 24px oklch(0.20 0.01 250 / 0.25); }
  50% { box-shadow: 0 0 0 8px oklch(0.55 0.22 25 / 0.4), 0 8px 24px oklch(0.20 0.01 250 / 0.25); }
}

/* Generic error/readonly text */
.error, .readonly {
  padding: 40px 24px;
  text-align: center;
  font-size: var(--text-lg);
}
.error { color: var(--color-critical); }
.readonly { color: var(--text-secondary); }

/* ============ Admin 元件（原 admin.css）============ */

body { margin: 0; background: var(--bg-base); color: var(--text-primary); }

.admin-header {
  background: oklch(0.20 0.01 250);
  color: var(--bg-base);
  padding: 16px 24px;
}
.admin-header h1 { margin: 0 0 12px; color: var(--bg-base); }

.admin-tabs button {
  background: transparent;
  border: none;
  color: var(--bg-base);
  padding: 10px 20px;
  cursor: pointer;
  border-bottom: 3px solid transparent;
  font-size: var(--text-base);
}
.admin-tabs button.active {
  border-bottom-color: var(--color-pass);
  font-weight: 700;
}

#admin-main { padding: 24px; max-width: 1280px; margin: 0 auto; }

table.admin-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--bg-surface);
  border-radius: 8px;
  overflow: hidden;
}
.admin-table th, .admin-table td {
  padding: 14px 12px;
  text-align: left;
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-sm);
}
.admin-table thead {
  background: var(--bg-overlay);
  font-size: var(--text-sm);
  font-weight: 600;
}
.admin-table img.thumb {
  width: 64px;
  height: 64px;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--border-subtle);
}

.btn {
  padding: 10px 18px;
  border-radius: 8px;
  cursor: pointer;
  border: 1px solid var(--border-subtle);
  background: var(--bg-surface);
  color: var(--text-primary);
  font-size: var(--text-sm);
  font-weight: 600;
}
.btn:hover { background: var(--bg-hover); }
.btn-primary {
  background: var(--color-pass);
  color: white;
  border-color: var(--color-pass);
}
.btn-danger {
  background: var(--color-critical);
  color: white;
  border-color: var(--color-critical);
}
.btn-sm {
  padding: 6px 10px;
  font-size: var(--text-xs);
  font-weight: 600;
}

/* 操作欄：固定窄寬度 + 按鈕 wrap 成 2x2 */
.col-actions { width: 1%; white-space: nowrap; }
.action-buttons {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  min-width: 140px;
}

/* 近 3 日簽到按鈕：行內表格樣式 */
.btn-count {
  text-align: left;
  padding: 8px 12px;
  line-height: 1.4;
}
.btn-count div { font-size: var(--text-sm); }
.btn-count strong { color: var(--color-pass); font-size: var(--text-base); }

/* 備註欄按鈕：整格可點，hover 反白 */
.btn-edit-meta {
  text-align: left;
  padding: 8px 12px;
  width: 100%;
  background: transparent;
  border: 1px dashed transparent;
  font-size: var(--text-sm);
}
.btn-edit-meta:hover {
  background: var(--bg-hover);
  border-color: var(--border-subtle);
}

/* 備註編輯 modal */
.meta-modal { min-width: 520px; }
.meta-rows { display: flex; flex-direction: column; gap: 8px; margin: 16px 0; }
.meta-row {
  display: grid;
  grid-template-columns: 160px 1fr auto;
  gap: 8px;
  align-items: center;
}
.meta-row input {
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-base);
  font-size: var(--text-base);
}
.meta-remove {
  padding: 6px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: transparent;
  color: var(--color-critical);
  font-size: var(--text-base);
  cursor: pointer;
}
.meta-add {
  font-size: var(--text-sm);
  border-style: dashed;
}

/* 身份分類專屬區塊（在 meta editor 內） */
.identity-block {
  padding: 16px;
  background: var(--bg-surface);
  border-radius: 8px;
  margin: 16px 0;
}
.identity-label {
  display: block;
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--text-secondary);
  margin-bottom: 8px;
}
.identity-select {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-base);
  font-size: var(--text-base);
}
.identity-block .hint { margin: 8px 0 0; font-size: var(--text-xs); }

/* 人員 tab 姓名旁的身份徽章 */
.identity-badge {
  display: inline-block;
  margin-left: 8px;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: var(--text-xs);
  font-weight: 700;
  background: var(--tone-bg, var(--bg-overlay));
  color: var(--tone-color, var(--text-secondary));
  vertical-align: middle;
}

/* 警示名單：建立新名單表單 — 用 grid 排，每欄都有足夠寬度 */
.new-list-form {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto;
  gap: 16px;
  align-items: end;
  margin-bottom: 24px;
  padding: 20px;
  background: var(--bg-surface);
  border-radius: 12px;
}
.new-list-form label {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: var(--text-sm);
  font-weight: 600;
  color: var(--text-secondary);
}
.new-list-form select,
.new-list-form input {
  padding: 12px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-base);
  color: var(--text-primary);
  font-size: var(--text-base);
}
.new-list-form .btn-primary {
  padding: 14px 24px;
  white-space: nowrap;
}
.new-list-form .custom-id-wrap[hidden] { display: none; }
@media (max-width: 720px) {
  .new-list-form {
    grid-template-columns: 1fr;
  }
}

/* 校準參數頁：分組卡片 + 兩欄排版（窄螢幕自動單欄） */
.tuning-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 20px;
  margin-bottom: 24px;
}
.tuning-group {
  background: var(--bg-surface);
  padding: 20px;
  border-radius: 12px;
}
.tuning-group h3 { margin: 0 0 4px; }
.tuning-group .hint { margin: 0 0 12px; }
.tuning-fields { display: flex; flex-direction: column; gap: 10px; }

.tuning-row {
  display: grid;
  grid-template-columns: 1fr 140px;
  gap: 12px;
  align-items: center;
  padding: 10px 14px;
  background: var(--bg-base);
  border-radius: 8px;
  border: 1px solid var(--border-subtle);
}
.tuning-label { font-size: var(--text-sm); color: var(--text-primary); }
.tuning-row input {
  padding: 8px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-base);
  font-size: var(--text-base);
  text-align: right;
  font-weight: 600;
}
.tuning-row-readonly { background: var(--bg-overlay); }
.tuning-readonly-value {
  padding: 8px 12px;
  font-size: var(--text-base);
  font-weight: 600;
  text-align: right;
  color: var(--text-secondary);
}

/* 儲存按鈕全寬 sticky */
.tuning-save {
  width: 100%;
  padding: 14px;
  font-size: var(--text-base);
  position: sticky;
  bottom: 16px;
  box-shadow: 0 -2px 12px oklch(0.20 0.01 250 / 0.1);
}

/* 相似度測試器 / 備份列 — 一行排得開 */
.similarity-tester {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
  padding: 16px;
  background: var(--bg-surface);
  border-radius: 8px;
}
.similarity-tester select {
  flex: 1;
  min-width: 160px;
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-base);
  font-size: var(--text-base);
}
#sim-result { width: 100%; font-size: var(--text-lg); font-weight: 700; color: var(--color-pass); }

.backup-row {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}
.backup-row input[type=password],
.backup-row input[type=file] {
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-base);
  font-size: var(--text-sm);
}

/* 系統工具：兩欄排版 */
.system-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
}
.system-col {
  background: var(--bg-surface);
  padding: 24px;
  border-radius: 12px;
}
.system-col h2:first-child { margin-top: 0; }
.storage-actions { display: flex; gap: 12px; align-items: center; margin: 12px 0 16px; }

/* 相似度測試器：兩人並列 + 照片 */
.sim-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-top: 12px;
}
.sim-side { display: flex; flex-direction: column; gap: 10px; }
.sim-side select {
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-base);
  font-size: var(--text-base);
}
.sim-photo {
  aspect-ratio: 1 / 1;
  background: var(--bg-overlay);
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.sim-photo img { width: 100%; height: 100%; object-fit: cover; }
.sim-placeholder { color: var(--text-muted); font-size: var(--text-sm); }
.sim-caption { padding: 8px; text-align: center; background: var(--bg-base); width: 100%; }
.sim-caption strong { display: block; }
.sim-caption small { color: var(--text-muted); }
.sim-result {
  margin-top: 16px;
  padding: 16px;
  background: var(--bg-base);
  border-radius: 8px;
  text-align: center;
  font-size: var(--text-lg);
  color: var(--text-secondary);
}
.sim-score { font-size: var(--text-2xl); font-weight: 700; color: var(--color-pass); }
.sim-judge { font-size: var(--text-base); color: var(--text-secondary); margin-top: 6px; }

/* 警示名單卡片 — 按 tone 上色區分類型 */
.watchlist-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
  gap: 20px;
}
.watchlist-card {
  background: var(--bg-base);
  padding: 20px 24px;
  border-radius: 12px;
  border-left: 6px solid var(--tone-color, var(--text-muted));
  box-shadow: 0 2px 8px oklch(0.20 0.01 250 / 0.06);
}
.watchlist-header {
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 2px;
  align-items: center;
  margin-bottom: 12px;
}
.watchlist-header .watchlist-badge { grid-column: 1; grid-row: 1 / 3; }
.watchlist-header h3 { grid-column: 2; grid-row: 1; margin: 0; }
.watchlist-header small { grid-column: 2; grid-row: 2; font-size: var(--text-xs); }
.watchlist-header .watchlist-del { grid-column: 3; grid-row: 1 / 3; align-self: center; }

.watchlist-badge {
  display: inline-block;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: var(--text-sm);
  font-weight: 700;
  color: var(--tone-color, var(--text-primary));
  background: var(--tone-bg, var(--bg-overlay));
  white-space: nowrap;
}
.watchlist-count { font-size: var(--text-base); margin: 8px 0 12px; color: var(--text-secondary); }
.watchlist-count strong { color: var(--tone-color); font-size: var(--text-lg); }

/* tone 對應 design-tokens 色 */
.tone-critical { --tone-color: var(--color-critical); --tone-bg: oklch(0.92 0.06 25); }
.tone-warn     { --tone-color: var(--color-warn);     --tone-bg: var(--badge-bg-warn); }
.tone-info     { --tone-color: var(--color-info);     --tone-bg: var(--badge-bg-info); }
.tone-pass     { --tone-color: var(--color-pass);     --tone-bg: var(--badge-bg-pass); }
.tone-purple   { --tone-color: oklch(0.50 0.17 300);  --tone-bg: oklch(0.92 0.05 300); }
.tone-pink     { --tone-color: oklch(0.52 0.17 340);  --tone-bg: oklch(0.92 0.05 340); }
.tone-neutral  { --tone-color: var(--text-secondary); --tone-bg: var(--bg-overlay); }

/* 警示名單：成員列表與加入列 */
.member-list { list-style: none; padding: 0; margin: 12px 0; }
.member-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-bottom: 1px solid var(--border-subtle);
  font-size: var(--text-base);
}
.member-list li:last-child { border-bottom: none; }
.add-member-row {
  display: flex;
  gap: 12px;
  margin-top: 12px;
}
.add-member-row select {
  flex: 1;
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-base);
  font-size: var(--text-base);
}

@media (max-width: 900px) {
  .system-grid { grid-template-columns: 1fr; }
  .sim-grid { grid-template-columns: 1fr 1fr; }
}

.filter-row {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
  align-items: center;
  flex-wrap: wrap;
}
.filter-row input, .filter-row select {
  padding: 10px 12px;
  border: 1px solid var(--border-subtle);
  border-radius: 6px;
  background: var(--bg-surface);
  color: var(--text-primary);
}

.modal-overlay {
  position: fixed;
  inset: 0;
  background: oklch(0.20 0.01 250 / 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}
.modal {
  background: var(--bg-base);
  padding: 24px;
  border-radius: 12px;
  max-width: 720px;
  max-height: 90vh;
  overflow: auto;
}

/* Toast — 點儲存後的視覺確認 */
.toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  padding: 14px 28px;
  border-radius: 24px;
  font-size: var(--text-base);
  font-weight: 600;
  color: white;
  box-shadow: 0 8px 24px oklch(0.20 0.01 250 / 0.25);
  z-index: 2000;
  animation: toast-in 0.25s ease-out;
}
.toast-success { background: var(--color-pass); }
.toast-error { background: var(--color-critical); }
.toast-info { background: var(--color-info); }
@keyframes toast-in {
  from { transform: translate(-50%, 40px); opacity: 0; }
}

/* ============ 情境設定排程編輯器 ============ */
.sched-day { padding: 10px 0; border-top: 1px solid var(--border-subtle); }
.sched-day-label { font-weight: 700; color: var(--text-primary); margin-bottom: 6px; }
.sched-day-label strong { color: var(--color-pass); margin-left: 6px; }
.sched-rule {
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  padding: 12px 14px;
  margin: 8px 0;
  background: var(--bg-base);
}
.sched-rule .r-start, .sched-rule .r-end { flex: 0 0 auto; }
.sched-rule input[type=time], .sched-rule input[type=date] {
  padding: 10px 14px;
  border: 1px solid var(--border-subtle);
  border-radius: 8px;
  background: var(--bg-surface);
  font-size: var(--text-base);
}
.sched-star { font-weight: 700; color: var(--color-warn); margin: 4px 0; }
.sched-future .sched-rule { background: var(--badge-bg-warn); }

/* 報表已登錄列變灰 */
.report-row-done td { color: var(--text-muted); background: var(--bg-overlay); }
.report-row-warn td { background: var(--badge-bg-warn); }
