/* Monthly roster workspace */
#rosterPanel{max-width:1500px;margin-inline:auto}
.roster-toolbar{display:flex;flex-wrap:wrap;align-items:end;gap:12px;padding:16px;background:#f7f9fc;border:1px solid #e4eaf1;border-radius:11px;margin:16px 0}
.roster-toolbar .field{margin:0;min-width:190px;flex:1}
.roster-toolbar label{font-size:12px;color:#40546a}
.roster-toolbar input{min-height:43px;background:#fff}
.roster-toolbar button{width:auto;min-width:120px;margin:0;padding:11px 15px;font-size:13px}
.roster-secondary{background:#eaf1f9;color:#294d73;border:1px solid #dce6f1}
.roster-status{min-height:22px;margin:10px 0;color:#65768b;font-size:13px;line-height:1.7}
.roster-status.error{color:#a33d35}
.roster-status.success{color:#247342}
.roster-table-wrap{overflow:auto;border:1px solid #e2e8f0;border-radius:10px;margin-top:14px}
.roster-table{width:100%;min-width:1120px;border-collapse:separate;border-spacing:0;font-size:12px}
.roster-table th,.roster-table td{padding:9px 8px;border-bottom:1px solid #e8edf3;text-align:center;white-space:nowrap}
.roster-table th{position:sticky;top:0;z-index:2;background:#edf2f8;color:#344c67;font-weight:700}
.roster-table td:first-child,.roster-table td:nth-child(2){font-weight:700;color:#344c67}
.roster-table input,.roster-table select{width:100%;min-width:130px;min-height:38px;padding:7px 9px;border:1px solid #dce4ed;border-radius:7px;background:#fff;font-size:12px;text-align:right;color:#263445}
.roster-table input:focus,.roster-table select:focus{outline:2px solid #b7cce3;border-color:#7898bb}
.roster-table select{cursor:pointer}
.roster-status.warning{color:#946200;background:#fff7df;border:1px solid #f0d58b;border-radius:8px;padding:9px 12px}
.roster-table tr.roster-friday td{background:#fff1d6!important}
.roster-table tr.roster-friday td:first-child,.roster-table tr.roster-friday td:nth-child(2){color:#805400}
.roster-table tr:last-child td{border-bottom:0}
.roster-table .roster-invalid{border-color:#c33!important;background:#fff3f2!important}
.roster-stats{margin-top:24px}
.roster-stats h3{margin:0 0 10px;color:#203a59;font-size:16px}
.roster-stats-wrap{overflow:auto;border:1px solid #e2e8f0;border-radius:10px}
.roster-stats-table{width:100%;min-width:780px;border-collapse:collapse;font-size:12px}
.roster-stats-table th,.roster-stats-table td{padding:11px 9px;border-bottom:1px solid #e8edf3;text-align:center;white-space:nowrap}
.roster-stats-table th{background:#edf2f8;color:#344c67}
.roster-stats-table td:first-child{text-align:right;font-weight:700}
.roster-empty{padding:25px;text-align:center;color:#7b8797}
.roster-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:12px}
.roster-actions button{width:auto;min-width:130px;margin:0;padding:11px 15px;font-size:13px}
.roster-actions button:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:650px){.roster-toolbar{display:grid;grid-template-columns:1fr 1fr}.roster-toolbar .field{grid-column:1/-1}.roster-toolbar button{width:100%;min-width:0}.roster-actions{display:grid;grid-template-columns:1fr 1fr}.roster-actions button{width:100%;min-width:0}}
@media print{
  @page{size:landscape;margin:10mm}
  body.roster-print-mode{display:block!important;background:#fff!important;padding:0!important}
  body.roster-print-mode *{visibility:hidden!important}
  body.roster-print-mode #rosterPanel,
  body.roster-print-mode #rosterPanel *{visibility:visible!important}
  body.roster-print-mode #rosterPanel{display:block!important;position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;box-shadow:none!important}
  body.roster-print-mode #rosterPanel .roster-toolbar,
  body.roster-print-mode #rosterPanel .roster-actions,
  body.roster-print-mode #rosterPanel .roster-status{display:none!important}
  body.roster-print-mode #rosterPanel .roster-table-wrap,
  body.roster-print-mode #rosterPanel .roster-stats-wrap{display:block!important;overflow:visible!important;border:0!important}
  body.roster-print-mode #rosterPanel .roster-table,
  body.roster-print-mode #rosterPanel .roster-stats-table{width:100%!important;min-width:0!important;font-size:9px!important}
  body.roster-print-mode #rosterPanel .roster-table th,
  body.roster-print-mode #rosterPanel .roster-table td,
  body.roster-print-mode #rosterPanel .roster-stats-table th,
  body.roster-print-mode #rosterPanel .roster-stats-table td{padding:4px 3px!important}
  body.roster-print-mode #rosterPanel .roster-table select,
  body.roster-print-mode #rosterPanel .roster-table input{appearance:none!important;min-width:0!important;border:0!important;padding:0!important;background:transparent!important;font-size:9px!important;color:#000!important}
  body.roster-print-mode #rosterPanel .roster-friday td{background:#fff1d6!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}
}