/* Journal and entry dialogs share a compact workspace, independent of other cards. */
.hours-modal { position:relative; display:flex; flex-direction:column; width:100%; max-height:92dvh; overflow:hidden; border:1px solid #dce3ed; border-radius:18px; background:#fff; box-shadow:0 24px 90px #172b4d26; color:#26364d; text-align:left; }
.hours-modal--wide { max-width:1440px; height:min(820px,90dvh); }
.hours-modal--entry { max-width:800px; height:min(860px,92dvh); }
.hours-workspace,.hours-entry,.hours-batch { display:flex; flex:1; flex-direction:column; min-height:0; margin:0; }
.hours-heading { display:flex; flex-shrink:0; align-items:center; gap:14px; padding:24px 58px 20px 26px; border-bottom:1px solid #e9edf4; }
.hours-heading__icon { display:grid; flex-shrink:0; place-items:center; width:46px; height:46px; border-radius:13px; background:#eaf1ff; color:#2863dc; font-size:28px; font-weight:400; }
.hours-heading__icon svg { width:25px; height:25px; }
.hours-heading__text { min-width:0; }
.hours-heading h2 { margin:2px 0 4px; font-size:21px; font-weight:650; line-height:1.3; letter-spacing:-.4px; color:#152b48; }
.hours-heading p { margin:0; font-size:13px; color:#7a879b; overflow-wrap:anywhere; }
.hours-heading p strong { color:#4b5e79; font-weight:550; }
.hours-heading .hours-eyebrow { font-size:10px; letter-spacing:1px; text-transform:uppercase; color:#8190a6; }
.hours-heading__separator { padding:0 8px; color:#b8c3d2; }
.hours-toolbar { display:flex; flex-shrink:0; align-items:center; flex-wrap:wrap; gap:10px; padding:14px 26px; }
.hours-record-count { font-size:12px; color:#8491a5; }
.hours-toolbar__actions { display:flex; gap:8px; margin-left:auto; }
.hours-button { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:38px; padding:9px 14px; border:1px solid transparent; border-radius:9px; font-size:13px; line-height:1.2; font-weight:550; text-decoration:none; cursor:pointer; white-space:nowrap; transition:background .15s,border-color .15s; }
.hours-button--primary { color:white; background:#2863e9; border-color:#2863e9; box-shadow:0 2px 3px #245cde14; }
.hours-button--primary:hover { background:#1d52ce; border-color:#1d52ce; }
.hours-button--secondary { background:#fff; color:#4e607a; border-color:#dce3ed; }
.hours-button--secondary:hover,.hours-button--quiet:hover { background:#f3f6fc; color:#245ed3; }
.hours-button--quiet { padding-left:0; color:#617796; background:transparent; }
.hours-button:focus-visible { outline:3px solid #b4ceff; outline-offset:2px; }
.hours-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); flex-shrink:0; gap:12px; margin:0; padding:0 26px 20px; }
.hours-metric { padding:13px 16px; border:1px solid #e4eaf3; border-radius:11px; background:#f8fafc; }
.hours-metric dt { margin-bottom:6px; font-size:12px; color:#7a8ba2; }
.hours-metric dd { font-size:23px; font-weight:650; line-height:1.2; letter-spacing:-.5px; color:#243c5c; font-variant-numeric:tabular-nums; }
.hours-metric small { margin-left:6px; font-size:12px; font-weight:450; color:#8b9ab0; }
.hours-metric--accent { background:#eef4ff; border-color:#d6e4ff; }
.hours-metric--accent dt,.hours-metric--accent dd { color:#245ed3; }
.hours-sheet-scroll { position:relative; flex:1; min-height:100px; margin:0 26px; overflow:auto; overscroll-behavior:contain; border:1px solid #dce5f0; border-radius:11px; scrollbar-width:thin; scrollbar-color:#cbd6e6 transparent; }
.hours-mobile-hint { display:none; }
.hours-sheet { width:100%; min-width:1370px; border-collapse:separate; border-spacing:0; font-size:12px; line-height:1.5; }
.hours-sheet__request-act { min-width:155px; max-width:185px; }
.hours-request-act { margin-top:12px; padding:12px 15px; border:1px solid #dce5f0; border-radius:9px; background:#f8fafd; }
.hours-request-act > span,.hours-request-act small { display:block; font-size:11px; color:#627794; }
.hours-request-act output { display:block; margin:4px 0; font-size:22px; font-weight:650; color:#27456d; }
.hours-request-act small { line-height:1.5; }
.hours-batch-table th.hours-sheet__request-act { min-width:180px; max-width:200px; }
.hours-sheet th,.hours-sheet td { padding:12px 10px; border-right:1px solid #e4eaf2; border-bottom:1px solid #e7edf5; vertical-align:middle; }
.hours-sheet th:last-child,.hours-sheet td:last-child { border-right:0; }
.hours-sheet thead { position:sticky; top:0; z-index:4; }
.hours-sheet thead th { background:#edf3fb; color:#506582; text-align:center; font-size:11px; font-weight:600; padding:9px 10px; }
.hours-sheet thead tr:first-child th { border-bottom-color:#d9e3f1; }
.hours-sheet tbody td,.hours-sheet tbody th { background:#fff; color:#41536c; }
.hours-sheet tbody tr:nth-child(even) td,.hours-sheet tbody tr:nth-child(even) th { background:#f8fafd; }
.hours-sheet tbody tr:hover td,.hours-sheet tbody tr:hover th { background:#eef5ff; }
.hours-sheet tbody th { font-weight:500; }
.hours-sheet .hours-sheet__number { position:sticky; left:0; width:40px; min-width:40px; max-width:40px; text-align:center; color:#9ba8ba; z-index:2; padding-left:6px; padding-right:6px; }
.hours-sheet .hours-sheet__date { position:sticky; left:40px; min-width:110px; width:110px; max-width:140px; z-index:2; text-align:left; font-variant-numeric:tabular-nums; box-shadow:2px 0 0 #e0e7f0; }
.hours-sheet thead .hours-sheet__number,.hours-sheet thead .hours-sheet__date { z-index:5; }
.hours-sheet__numeric { text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.hours-sheet__field { min-width:145px; max-width:180px; overflow-wrap:anywhere; }
.hours-sheet__operator { min-width:145px; max-width:200px; overflow-wrap:anywhere; }
.hours-sheet tbody .hours-sheet__total { color:#215cc7; background:#f1f6ff; font-weight:650; }
.hours-sheet tfoot { position:sticky; bottom:0; z-index:3; }
.hours-sheet tfoot th,.hours-sheet tfoot td { background:#eaf1fc; border-top:1px solid #cddbf0; border-bottom:0; color:#27456d; font-weight:650; }
.hours-sheet tfoot th { text-align:left; }
.hours-journal-footer { display:flex; align-items:center; justify-content:space-between; flex-shrink:0; gap:16px; padding:14px 26px 18px; font-size:11px; color:#91a0b3; }
.hours-journal-footer span { white-space:nowrap; }
.hours-empty { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:40px 24px; text-align:center; color:#8a98ac; }
.hours-empty > span { display:grid; place-items:center; width:54px; height:54px; margin-bottom:5px; background:#f0f5fd; color:#7497d5; border-radius:16px; font-size:26px; }
.hours-empty h3 { font-size:17px; font-weight:600; color:#4b607e; }
.hours-empty p { max-width:330px; font-size:13px; }
.hours-entry__body,.hours-batch__body { flex:1; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:22px 26px; scrollbar-width:thin; }
.hours-fieldset { min-width:0; margin:0 0 24px; padding:0 0 24px; border:0; border-bottom:1px solid #eaf0f6; }
.hours-fieldset legend { display:flex; align-items:center; gap:9px; width:100%; margin-bottom:16px; padding:0; font-size:14px; font-weight:600; color:#344d70; }
.hours-fieldset legend span { font-size:10px; font-weight:600; color:#91a8ca; letter-spacing:.6px; }
.hours-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 18px; }
.hours-form-grid--four { grid-template-columns:repeat(4,minmax(0,1fr)); }
.hours-field { min-width:0; }
.hours-field--full { grid-column:1/-1; }
.hours-field label { display:block; margin-bottom:6px; font-size:12px; font-weight:500; color:#627591; }
.hours-field input,.hours-field textarea,.hours-batch-table input { display:block; width:100%; min-width:0; min-height:42px; padding:10px 12px; background:#fff; border:1px solid #d9e2ee; border-radius:8px; color:#273e5e; font-family:inherit; font-size:14px; line-height:1.4; box-shadow:0 1px 2px #19314e03; }
.hours-field input::placeholder,.hours-field textarea::placeholder,.hours-batch-table input::placeholder { color:#a5b0c1; }
.hours-field input:focus,.hours-field textarea:focus,.hours-batch-table input:focus { border-color:#739ff3; outline:3px solid #2863e912; }
.hours-field input[type=number],.hours-batch-table input[type=number] { font-variant-numeric:tabular-nums; }
.hours-field textarea { resize:vertical; min-height:70px; }
.hours-field small { display:block; margin-top:5px; font-size:10px; color:#99a5b5; }
.hours-time-grid { display:grid; grid-template-columns:1fr 1fr 1.15fr; gap:16px; align-items:start; }
.hours-live-total { padding:11px 15px; background:#eef4ff; border:1px solid #dce7fc; border-radius:9px; color:#416395; }
.hours-live-total > span { display:block; font-size:11px; }
.hours-live-total output { display:block; font-size:25px; line-height:1.5; font-weight:650; font-variant-numeric:tabular-nums; color:#245ed3; }
.hours-live-total small { display:block; font-size:10px; color:#8298ba; }
.hours-help { margin-top:12px; font-size:11px; color:#8595aa; line-height:1.6; }
.hours-entry__footer { display:flex; align-items:center; justify-content:space-between; flex-shrink:0; gap:16px; padding:16px 26px; border-top:1px solid #e5ebf4; background:#fbfcfe; }
.hours-entry__footer > span { font-size:11px; color:#92a0b4; }
.hours-entry__footer > div { display:flex; gap:8px; }
.hours-batch__body .hours-form-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.hours-batch__intro { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:22px 0 12px; }
.hours-batch__intro h3 { font-size:14px; font-weight:600; color:#344d70; }
.hours-batch__table-scroll { overflow:auto; border:1px solid #dce5f0; border-radius:10px; }
.hours-batch-table { border-collapse:separate; border-spacing:0; width:100%; min-width:1480px; font-size:12px; }
.hours-batch-table th { padding:10px; background:#edf3fb; color:#5c7393; font-size:11px; font-weight:600; text-align:left; }
.hours-batch-table td { padding:10px 6px; border-top:1px solid #e6edf5; vertical-align:top; }
.hours-batch-table input { min-height:36px; padding:8px; font-size:12px; border-radius:6px; }
.hours-batch-table .hours-batch__equipment { min-width:240px; }
.hours-batch-table .hours-batch__date { min-width:145px; }
.hours-batch-table .hours-batch__interval { min-width:160px; }
.hours-batch-table .hours-batch__interval > div { display:flex; align-items:center; gap:5px; }
.hours-batch-table .hours-batch__small { min-width:95px; }
.hours-batch-table .hours-batch__text { min-width:125px; }
.hours-batch__delete { display:grid; place-items:center; width:32px; height:36px; border:0; border-radius:6px; background:transparent; color:#9ba9bd; font-size:20px; cursor:pointer; }
.hours-batch__delete:hover { color:#c35454; background:#fff0f0; }
.hours-batch__accounted { font-weight:650; color:#2863d2; font-variant-numeric:tabular-nums; padding-top:17px!important; }
.hours-batch__totals { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:24px; margin-top:16px; padding:14px; border-radius:9px; background:#f4f7fc; font-size:12px; color:#8293ab; }
.hours-batch__totals strong { margin-left:6px; font-size:14px; font-weight:600; color:#3d587d; font-variant-numeric:tabular-nums; }
@media (max-width:767px) {
  .hours-modal { border-radius:14px; max-height:94dvh; }
  .hours-modal--wide,.hours-modal--entry { height:92dvh; }
  .hours-heading { padding:18px 42px 16px 16px; gap:10px; }
  .hours-heading__icon { width:38px; height:38px; border-radius:11px; font-size:23px; }
  .hours-heading h2 { font-size:18px; }
  .hours-heading p { font-size:11px; }
  .hours-heading .hours-eyebrow { font-size:9px; }
  .hours-toolbar { padding:12px 14px; gap:7px; }
  .hours-toolbar__actions { gap:6px; }
  .hours-button { font-size:12px; padding:10px; min-height:40px; }
  .hours-toolbar .hours-button { font-size:11px; padding:9px 8px; }
  .hours-toolbar .hours-button--quiet { padding-left:0; padding-right:0; }
  .hours-record-count { display:none; }
  .hours-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:0 14px 14px; }
  .hours-metric { padding:10px 12px; border-radius:9px; }
  .hours-metric dt { font-size:10px; margin-bottom:5px; }
  .hours-metric dd { font-size:20px; }
  .hours-sheet-scroll { margin:0 14px; }
  .hours-mobile-hint { display:block; flex-shrink:0; margin:0; padding:0 14px 8px; font-size:10px; color:#91a0b3; }
  .hours-sheet { font-size:12px; }
  .hours-sheet th,.hours-sheet td { padding:10px 8px; }
  .hours-journal-footer { padding:12px 14px; font-size:10px; }
  .hours-journal-footer span { display:none; }
  .hours-entry__body,.hours-batch__body { padding:18px 16px; scroll-padding-bottom:20px; }
  .hours-form-grid,.hours-batch__body .hours-form-grid { gap:14px 12px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .hours-form-grid--four { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .hours-fieldset { padding-bottom:20px; margin-bottom:20px; }
  .hours-field input,.hours-field textarea,.hours-batch-table input { font-size:16px; min-height:44px; padding:10px; }
  .hours-field input[type=date] { min-width:0; width:100%; }
  .hours-field small { line-height:1.4; }
  .hours-time-grid { grid-template-columns:1fr 1fr; gap:12px; }
  .hours-live-total { grid-column:1/-1; display:grid; grid-template-columns:1fr auto; align-items:center; padding:10px 14px; }
  .hours-live-total output { grid-row:1/3; grid-column:2; font-size:25px; }
  .hours-entry__footer { padding:12px 16px max(12px,env(safe-area-inset-bottom)); }
  .hours-entry__footer > span { display:none; }
  .hours-entry__footer > div { flex:1; justify-content:flex-end; }
  .hours-batch__table-scroll { border:0; overflow:visible; }
  .hours-batch-table,.hours-batch-table tbody { display:block; min-width:0; }
  .hours-batch-table thead { display:none; }
  .hours-batch-table tr { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px 12px; padding:18px 14px; margin-bottom:14px; border:1px solid #dce5f0; border-radius:12px; background:#fbfcff; }
  .hours-batch-table td { display:block; padding:0; min-width:0!important; border:0; }
  .hours-batch-table td[data-label]::before { display:block; content:attr(data-label); margin-bottom:6px; font-size:11px; color:#7386a2; }
  .hours-batch-table .hours-batch__equipment { grid-column:1/-1; padding-right:28px; }
  .hours-batch-table .hours-batch__row-number { display:none; }
  .hours-batch-table .hours-batch__remove { position:absolute; top:15px; right:9px; }
  .hours-batch-table .hours-batch__interval { grid-column:1/-1; }
  .hours-batch__accounted { padding-top:0!important; }
  .hours-batch__totals { gap:12px 18px; justify-content:space-between; }
}
@media (prefers-reduced-motion:reduce) { .hours-button { transition:none; } }
