/* ============================================================
   ProjectTelemetry — Timecards module styles
   assets/timecards.css
   ============================================================ */
.tc-load{ padding:60px 0; text-align:center; color:var(--ink-soft); font-size:14px; }
.tc-load .ti{ animation:spin 1s linear infinite; margin-right:6px; }

/* ── Header + week nav ─────────────────────────────────────── */
.tc-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.tc-title{ font-size:19px; font-weight:700; color:var(--ink); letter-spacing:-.01em; }
.tc-sub{ font-size:12.5px; color:var(--ink-soft); margin-top:2px; }
.tc-weeknav{ display:flex; align-items:center; gap:8px; }
.tc-week{ font-size:13.5px; color:var(--ink); min-width:168px; text-align:center; }
.tc-week .ti{ color:var(--ink-faint); margin-right:4px; }
.tc-week b{ font-weight:650; }

/* ── Approval banner ───────────────────────────────────────── */
.tc-banner{ background:#FFF7ED; border:1px solid #FED7AA; color:#9A3412; border-radius:var(--radius);
  padding:11px 14px; font-size:13px; margin-bottom:14px; display:flex; align-items:center; gap:8px; }
.tc-banner b{ font-weight:700; }
.tc-banner .ti{ font-size:16px; }

/* ── Roster ────────────────────────────────────────────────── */
.tc-roster{ border:1px solid var(--bd); border-radius:var(--radius); overflow:hidden; background:var(--white); box-shadow:var(--shadow); }
.tc-row{ display:grid; grid-template-columns:38px 1fr auto 116px 104px; align-items:center; gap:14px;
  padding:11px 16px; border-bottom:1px solid var(--bd); transition:background .12s; }
.tc-row:last-child{ border-bottom:none; }
.tc-row:hover{ background:var(--bg2); }
.tc-av{ width:34px; height:34px; border-radius:50%; background:var(--accent-bg); color:var(--accent);
  font-size:12px; font-weight:700; display:flex; align-items:center; justify-content:center; letter-spacing:.02em; }
.tc-name{ font-size:14px; font-weight:600; color:var(--ink); }
.tc-hours{ font-size:13px; color:var(--ink); font-variant-numeric:tabular-nums; text-align:right; }
.tc-soft{ color:var(--ink-faint); }

/* ── Status badges ─────────────────────────────────────────── */
.tc-badge{ font-size:11px; font-weight:650; padding:3px 9px; border-radius:100px; text-align:center; white-space:nowrap; letter-spacing:.01em; }
.tc-badge.muted{ background:var(--bg2); color:var(--ink-soft); border:1px solid var(--bd); }
.tc-badge.warn{ background:#FFF7ED; color:#B45309; border:1px solid #FED7AA; }
.tc-badge.ok{ background:#ECFDF5; color:#047857; border:1px solid #A7F3D0; }
.tc-badge.neg{ background:#FEF2F2; color:#B91C1C; border:1px solid #FECACA; }

/* ── Empty states ──────────────────────────────────────────── */
.tc-empty{ text-align:center; padding:56px 20px; color:var(--ink-soft); }
.tc-empty .ti{ font-size:34px; color:var(--ink-faint); }
.tc-empty h3{ margin:12px 0 4px; font-size:15px; color:var(--ink); font-weight:650; }
.tc-empty p{ font-size:13px; max-width:380px; margin:0 auto; }

/* ── Editor modal ──────────────────────────────────────────── */
.tc-modal{ width:min(1180px, 97vw); max-height:92vh; display:flex; flex-direction:column; }
.tc-modal .cp-body{ overflow:auto; }
.tc-modal-wk{ font-size:12.5px; color:var(--ink-soft); margin-left:2px; }
.tc-reject{ background:#FEF2F2; border:1px solid #FECACA; color:#B91C1C; border-radius:var(--radius);
  padding:9px 12px; font-size:12.5px; margin-bottom:14px; display:flex; align-items:center; gap:7px; }

/* ── Grid ──────────────────────────────────────────────────── */
.tc-gridwrap{ overflow-x:auto; border:1px solid var(--bd); border-radius:var(--radius); }
/* Sized so all 7 days fit an 11" tablet in landscape (~1194px) without scroll;
   fixed layout splits the remaining width equally across the 7 day columns. */
.tc-grid{ width:100%; border-collapse:collapse; font-size:13px; min-width:720px; table-layout:fixed; }
.tc-grid col.tc-col-code{ width:128px; }
.tc-grid col.tc-col-tot{ width:54px; }
.tc-grid col.tc-col-rm{ width:30px; }
.tc-hint{ font-size:12px; color:var(--ink-soft); background:var(--bg2); border:1px solid var(--bd);
  border-radius:var(--radius); padding:8px 11px; margin-bottom:12px; line-height:1.5; }
.tc-hint b{ color:var(--ink); font-weight:650; }
.tc-grid th{ background:var(--bg2); color:var(--ink-soft); font-weight:600; font-size:11px; text-transform:uppercase;
  letter-spacing:.03em; padding:8px 6px; text-align:center; border-bottom:1px solid var(--bd); white-space:nowrap; }
.tc-grid th.tc-th-code, .tc-grid th.tc-th-type{ text-align:left; padding-left:10px; }
.tc-th-day span{ display:block; font-size:10px; font-weight:500; color:var(--ink-faint); text-transform:none; letter-spacing:0; margin-top:1px; }
.tc-th-day.we, .tc-cell.we{ background:rgba(0,0,0,.018); }
.tc-th-tot{ text-align:right !important; padding-right:12px; }
.tc-grid td{ padding:5px 6px; border-bottom:1px solid var(--bd); text-align:center; vertical-align:middle; }
.tc-grid tbody tr:last-child td{ border-bottom:none; }
.tc-grid select{ width:100%; border:1px solid var(--bd); border-radius:6px; padding:6px 7px; font-size:12.5px;
  background:var(--white); color:var(--ink); }
.tc-grid select.tc-code{ min-width:104px; }
.tc-grid select.tc-type{ min-width:64px; }
.tc-in{ width:52px; border:1px solid transparent; border-radius:6px; padding:6px 4px; font-size:13px; text-align:center;
  background:var(--bg2); color:var(--ink); font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.tc-in::-webkit-outer-spin-button, .tc-in::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tc-in:focus{ outline:none; border-color:var(--accent); background:var(--white); box-shadow:0 0 0 2px var(--accent-bg); }
.tc-in:not(:placeholder-shown){ font-weight:600; }
.tc-mono{ font-variant-numeric:tabular-nums; font-weight:600; color:var(--ink); }
.tc-cell span{ color:var(--ink); font-variant-numeric:tabular-nums; }
.tc-rowtot{ font-weight:700; font-variant-numeric:tabular-nums; text-align:right !important; padding-right:12px !important; color:var(--ink); }
.tc-grid .tc-rm{ color:var(--ink-faint); }
.tc-grid .tc-rm:hover{ color:#DC2626; }
.tc-rowcode{ text-align:left !important; padding-left:8px !important; }
.tc-grid select.tc-code{ width:100%; min-width:0; }

/* ── Day cell: Hours worked over ST/OT/DT ──────────────────── */
.tc-grid td.tc-cell{ padding:5px 4px; }
.tc-worked{ width:100%; box-sizing:border-box; border:1px solid var(--bd); border-radius:6px; padding:6px 4px;
  font-size:14px; font-weight:650; text-align:center; background:var(--white); color:var(--ink);
  font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.tc-worked::-webkit-outer-spin-button, .tc-worked::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tc-worked::placeholder{ color:var(--ink-faint); font-weight:400; }
.tc-worked:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-bg); }
.tc-splits{ display:flex; gap:3px; margin-top:3px; }
.tc-sp{ width:100%; min-width:0; box-sizing:border-box; border:1px solid transparent; border-radius:5px; padding:4px 2px;
  font-size:11px; text-align:center; background:var(--bg2); color:var(--ink-soft); font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.tc-sp::-webkit-outer-spin-button, .tc-sp::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tc-sp::placeholder{ color:var(--ink-faint); font-size:9px; letter-spacing:.04em; }
.tc-sp:not(:placeholder-shown){ font-weight:700; color:var(--ink); background:var(--accent-bg); }
.tc-sp:focus{ outline:none; border-color:var(--accent); background:var(--white); box-shadow:0 0 0 2px var(--accent-bg); }
.tc-ro-worked{ font-size:14px; font-weight:650; color:var(--ink); font-variant-numeric:tabular-nums; }
.tc-splits.ro{ justify-content:center; gap:6px; margin-top:2px; }
.tc-splits.ro span{ font-size:10.5px; color:var(--ink-faint); font-variant-numeric:tabular-nums; }
.tc-splits.ro span.on{ color:var(--ink-soft); font-weight:650; }

/* ── Weekly summary chips ──────────────────────────────────── */
.tc-summary{ display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.tc-sumchip{ font-size:12px; color:var(--ink-soft); background:var(--bg2); border:1px solid var(--bd);
  border-radius:100px; padding:5px 12px; }
.tc-sumchip b{ color:var(--ink); font-weight:700; font-variant-numeric:tabular-nums; margin-right:2px; }
.tc-sumchip.tot{ background:var(--accent-bg); border-color:transparent; color:var(--accent-ink,var(--accent)); }
.tc-sumchip.tot b{ color:var(--accent); }
.tc-sumchip.ot b{ color:#B45309; }
.tc-sumchip.dt b{ color:#B91C1C; }

/* ── Editor toolbar ────────────────────────────────────────── */
.tc-toolbar{ display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }

/* ── Rules panel (day-type matrix) ─────────────────────────── */
.tc-rules-note{ font-size:12.5px; color:var(--ink-soft); line-height:1.5; margin:0 0 14px; }
.tc-rules-note b{ color:var(--ink); font-weight:650; }
.tcr-matrix{ width:100%; border-collapse:collapse; }
.tcr-matrix th{ font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-soft);
  font-weight:600; text-align:center; padding:6px 4px; border-bottom:1px solid var(--bd); }
.tcr-matrix th:first-child{ text-align:left; }
.tcr-matrix td{ padding:6px 4px; border-bottom:1px solid var(--bd); text-align:center; }
.tcr-matrix tr:last-child td{ border-bottom:none; }
.tcr-lbl{ text-align:left !important; font-size:13px; font-weight:600; color:var(--ink); white-space:nowrap; }
.tcr-in{ width:74px; border:1px solid var(--bd); border-radius:6px; padding:6px 8px; font-size:13px; text-align:center;
  background:var(--white); color:var(--ink); font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.tcr-in::-webkit-outer-spin-button, .tcr-in::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tcr-in:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-bg); }
.tc-rules-eg{ margin-top:14px; font-size:12px; color:var(--ink-soft); background:var(--bg2);
  border:1px solid var(--bd); border-radius:var(--radius); padding:9px 11px; line-height:1.6; }
.tc-rules-eg b{ color:var(--ink); font-weight:700; }

/* ── Quick fill modal ──────────────────────────────────────── */
.tc-qf-sec{ padding:14px 0; border-bottom:1px solid var(--bd); }
.tc-qf-sec:first-child{ padding-top:2px; }
.tc-qf-sec:last-of-type{ border-bottom:none; }
.tc-qf-h{ font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); font-weight:650; margin-bottom:9px; }
.tc-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.tc-chip{ font-size:12.5px; padding:5px 11px; border:1px solid var(--bd); border-radius:100px; cursor:pointer;
  color:var(--ink-soft); background:var(--white); user-select:none; transition:.12s; }
.tc-chip.on{ background:var(--accent-bg); border-color:transparent; color:var(--accent); font-weight:650; }
.tc-chip input{ display:none; }
.tc-chip-quick{ display:flex; gap:6px; margin-top:9px; }
.tc-qf-row{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.tc-qf-sel, .tc-qf-name{ border:1px solid var(--bd); border-radius:6px; padding:7px 9px; font-size:13px;
  background:var(--white); color:var(--ink); }
.tc-qf-sel{ min-width:130px; }
.tc-qf-name{ flex:1; min-width:120px; }
.tc-qf-note{ font-size:11.5px; color:var(--ink-faint); margin-top:7px; line-height:1.5; }
.tc-favlist{ display:flex; flex-direction:column; gap:6px; }
.tc-favrow{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 11px;
  border:1px solid var(--bd); border-radius:var(--radius); background:var(--bg2); }
.tc-favname{ font-size:13px; font-weight:600; color:var(--ink); display:flex; align-items:center; gap:6px; }
.tc-favname .ti{ color:var(--accent); }
.tc-favmeta{ font-size:11.5px; color:var(--ink-soft); font-weight:400; margin-left:6px; }
.tc-fav-del{ color:var(--ink-faint); }
.tc-fav-del:hover{ color:#DC2626; }
.tc-favempty{ font-size:12.5px; color:var(--ink-faint); padding:6px 2px; }

/* ── Per-day meta rows (per-diem, note) ────────────────────── */
.tc-metarow td{ border-top:1px solid var(--bd); background:rgba(0,0,0,.012); }
.tc-metarow.tc-noterow td{ border-top:none; }
.tc-metalbl{ text-align:right !important; padding-right:10px !important; color:var(--ink-soft); font-size:11px;
  text-transform:uppercase; letter-spacing:.02em; font-weight:650; white-space:nowrap; }
.tc-metalbl .ti{ color:var(--ink-faint); margin-right:3px; font-size:13px; vertical-align:-1px; }
.tc-pd{ width:52px; border:1px solid transparent; border-radius:6px; padding:6px 4px; font-size:12.5px; text-align:center;
  background:var(--bg2); color:var(--ink); font-variant-numeric:tabular-nums; -moz-appearance:textfield; }
.tc-pd::-webkit-outer-spin-button, .tc-pd::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.tc-pd:focus{ outline:none; border-color:var(--accent); background:var(--white); box-shadow:0 0 0 2px var(--accent-bg); }
.tc-noteb{ width:28px; height:26px; border:1px solid var(--bd); border-radius:6px; background:var(--white);
  color:var(--ink-faint); cursor:pointer; display:inline-flex; align-items:center; justify-content:center; transition:.12s; }
.tc-noteb:hover:not(:disabled){ border-color:var(--accent); color:var(--accent); }
.tc-noteb.has{ background:var(--accent-bg); border-color:var(--accent); color:var(--accent); }
.tc-noteb:disabled{ cursor:default; opacity:.55; }

.tc-grid tfoot td{ border-top:2px solid var(--bd); background:var(--bg2); font-weight:650; padding:9px 6px; }
.tc-foot-lbl{ text-align:right !important; padding-right:10px; color:var(--ink-soft); font-size:11px;
  text-transform:uppercase; letter-spacing:.03em; }
.tc-coltot{ font-variant-numeric:tabular-nums; color:var(--ink); }
.tc-grand{ text-align:right !important; padding-right:12px !important; font-size:15px; font-weight:800;
  color:var(--accent); font-variant-numeric:tabular-nums; }

/* ── Editor actions ────────────────────────────────────────── */
.tc-actions{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:18px;
  padding-top:14px; border-top:1px solid var(--bd); }

/* ── Blueprint theme tweaks ────────────────────────────────── */
body[data-theme="blueprint"] .tc-th-day.we, body[data-theme="blueprint"] .tc-cell.we{ background:rgba(255,255,255,.03); }
