/* ═══════════════════════════════════════════════════════════════════════════
   SBR Air — modules/administration/timesheets.review.css (Assignment 008I, Phase 3)
   Layout only for the Review queue, the review drawer and Attendance history. Colours, type, controls, badges,
   tables, drawers and modals come from the SBR Air design system (shared/ui/sbr-air.*.css, .sa-scope).
   ═══════════════════════════════════════════════════════════════════════════ */
.sa-scope.ts-rv { color: var(--sa-text); font-family: var(--sa-font, inherit); }
.ts-rv .ts-rv__bar { display: flex; align-items: center; gap: var(--sa-space-2); flex-wrap: wrap; }
.ts-rv .ts-rv__bar .sa-input { width: auto; min-width: 0; max-width: 220px; height: 32px; flex: none; }
.ts-rv .ts-rv__note { margin: var(--sa-space-3) 0 0; font-size: var(--sa-text-sm); color: var(--sa-text-2); }
.ts-rv .ts-rv__empty { padding: var(--sa-space-6); text-align: center; color: var(--sa-text-2); }
.ts-rv .sa-table td, .ts-rv .sa-table th { padding-left: 10px; padding-right: 10px; }
.ts-rv .sa-table tbody tr { cursor: pointer; }
.ts-rv .ts-rv__reason { white-space: normal; max-width: 300px; }

/* review drawer */
.ts-rd .ts-rd__facts { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 0 0 var(--sa-space-5); font-size: var(--sa-text-md); }
.ts-rd .ts-rd__facts dt { color: var(--sa-text-2); }
.ts-rd .ts-rd__facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.ts-rd .ts-rd__choice { display: flex; flex-direction: column; gap: 4px; margin-bottom: var(--sa-space-4); }
.ts-rd .ts-rd__times { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sa-space-3); }
.ts-rd .ts-rd__section { margin-top: var(--sa-space-5); padding-top: var(--sa-space-4); border-top: 1px solid var(--sa-border); }
.ts-rd .ts-rd__section h3 { margin: 0 0 var(--sa-space-2); font-size: var(--sa-text-md); font-weight: var(--sa-weight-semibold); }
.ts-rd .ts-rd__hist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--sa-space-3); }
.ts-rd .ts-rd__hist li { font-size: var(--sa-text-sm); line-height: var(--sa-lh-sm); }
.ts-rd .ts-rd__hist .ts-rd__when { color: var(--sa-text-2); }
.ts-rd .ts-rd__hist .ts-rd__chg { color: var(--sa-text-2); }
.ts-rd [hidden] { display: none !important; }

/* attendance history */
.ts-ah .ts-ah__counts { width: 100%; border-collapse: collapse; font-size: var(--sa-text-sm); margin-bottom: var(--sa-space-4); }
.ts-ah .ts-ah__counts th, .ts-ah .ts-ah__counts td { padding: 6px 10px; border-bottom: 1px solid var(--sa-border); text-align: right; font-variant-numeric: tabular-nums; }
.ts-ah .ts-ah__counts th:first-child, .ts-ah .ts-ah__counts td:first-child { text-align: left; }
.ts-ah .ts-ah__detail td { background: var(--sa-surface-subtle); cursor: default; }
.ts-ah .ts-ah__chain { list-style: none; margin: 6px 0; padding: 0; font-size: var(--sa-text-sm); white-space: normal; }
.ts-ah .ts-ah__chain li { padding: 3px 0; }
.ts-ah .ts-ah__notes { list-style: none; margin: 0; padding: 0; font-size: var(--sa-text-sm); }
.ts-ah .ts-ah__notes li { padding: 6px 0; border-bottom: 1px solid var(--sa-border); }
.ts-ah .ts-ah__h { margin: var(--sa-space-5) 0 var(--sa-space-2); font-size: var(--sa-text-md); font-weight: var(--sa-weight-semibold); }

/* Field Services pay-status chip in the weekly grid */
.fs-ps-chip { display: inline-block; margin-top: 2px; padding: 0 5px; border-radius: 4px; font-size: 8px; font-weight: 700; border: 1px solid currentColor; background: transparent; font-family: inherit; }
button.fs-ps-chip { cursor: pointer; }

/* export check list */
.ts-ex .ts-ex__list { margin: 4px 0 12px; padding-left: 18px; font-size: var(--sa-text-sm); }
.ts-ex .ts-ex__list li { padding: 2px 0; }

/* ═══ 008K K2: schedule flags, review popup additions, week status bar ═══════════════════════════════════════════ */
.ts-rd .ts-rd__banner { margin-bottom: var(--sa-space-3); }
.ts-rd .ts-rd__unpaid { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.ts-rd .ts-rd__unpaid li { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: var(--sa-text-sm); }
.ts-rd .ts-rd__unpaid li.is-void { color: var(--sa-text-2); text-decoration: line-through; }
.ts-rd .ts-rd__unpaid li.is-void .sa-badge { text-decoration: none; }
.ts-rd .ts-rd__preview { margin: 0 0 var(--sa-space-4); }
.ts-rd .ts-rd__pv { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 12px; border: 1px solid var(--sa-border); border-radius: 8px;
  background: var(--sa-surface-subtle); font-size: var(--sa-text-md); font-variant-numeric: tabular-nums; }
.ts-rd .ts-rd__diff { margin-left: auto; font-weight: var(--sa-weight-semibold); }
.ts-rd .ts-rd__diff.is-neg { color: #b42318; }
.ts-rd .ts-rd__diff.is-pos { color: #067647; }
.ts-rd .ts-k2-br { margin-bottom: 6px; }
.ts-k2-choose { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }

/* Weekly View flags (flags only — never pay). Colour is backed by text and a symbol for colour-blind users. */
td.ts-k2 { border-left: 3px solid transparent; }
td.ts-k2--click { cursor: pointer; }
td.ts-k2--click:hover, td.ts-k2--click:focus-visible { background: rgba(96,165,250,0.08); outline: none; }
td.ts-k2--click:focus-visible { box-shadow: inset 0 0 0 2px #60a5fa; }
td.ts-k2--green { border-left-color: #22c55e; }
td.ts-k2--yellow { border-left-color: #eab308; background: rgba(234,179,8,0.06); }
td.ts-k2--red, td.ts-k2--missing { border-left-color: #ef4444; background: rgba(239,68,68,0.07); }
td.ts-k2--verified { border-left-color: #60a5fa; }
.ts-k2-flag { margin-top: 2px; font-size: 8px; font-weight: 700; letter-spacing: .02em; white-space: nowrap; }
.ts-k2-flag--green { color: #22c55e; }
.ts-k2-flag--yellow { color: #eab308; }
.ts-k2-flag--red, .ts-k2-flag--missing { color: #f87171; }
.ts-k2-flag--verified { color: #60a5fa; }
.ts-k2-flag--noschedule, .ts-k2-flag--open { color: var(--text-muted, #7a90a8); font-weight: 600; }
.ts-k2-tag { display: inline-block; margin: 2px 1px 0; padding: 0 4px; border-radius: 4px; font-size: 7.5px; font-weight: 700; color: #b0c4d8; border: 1px solid rgba(176,196,216,0.35); }
.ts-k2-tag--warn { color: #f59e0b; border-color: rgba(245,158,11,0.5); }
.ts-k2-tag--pm { color: #38bdf8; border-color: rgba(56,189,248,0.5); }

/* Payroll week status bar */
.sa-scope.ts-k2-week { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; padding: 8px 12px; border-radius: 10px;
  border: 1px solid var(--border-md, rgba(255,255,255,0.12)); background: var(--navy-card, #152030); color: var(--text, #e8f0f8); font-size: 12px; }
.ts-k2-week .ts-k2-week__t { font-weight: 700; }
.ts-k2-week .ts-k2-week__m { color: var(--text-muted, #7a90a8); font-size: 11px; }
.ts-k2-week .sa-btn { margin-left: auto; }
.ts-k2-week.is-closed { border-color: rgba(148,163,184,0.45); }
