/* Crew Management tab. Uses the dashboard's own colour variables (styles.css). */
.crew-head{display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; justify-content:space-between; margin-bottom:14px;}
.crew-head .action-tabs{margin:0; flex-wrap:wrap;}
.crew-head-right{display:flex; flex-wrap:wrap; gap:12px; align-items:center;}
.crew-meta{font-family:var(--mono); font-size:11px; color:var(--muted-2);}
.crew-upload-btn{padding:8px 16px; font-size:12px;}
#tab-crew.crew-drop{outline:2px dashed var(--accent); outline-offset:6px; border-radius:8px;}

.crew-notice{background:var(--panel-2); border:1px solid var(--border); border-radius:8px; padding:9px 12px; margin:-4px 0 14px;
  font-family:var(--mono); font-size:12px; display:flex; gap:12px; align-items:flex-start;}
.crew-notice .ok{color:var(--green);} .crew-notice .bad{color:var(--red);}
.crew-notice .crew-notice-body{flex:1;}

.crew-toolbar{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:12px;}
.crew-toolbar input[type=text]{width:260px; max-width:100%;}
.crew-toolbar select{width:auto; min-width:170px;}
.crew-toolbar select.crew-stn{font-weight:600;}
.crew-count{font-family:var(--mono); font-size:11px; color:var(--muted-2);}
.crew-check{display:flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); cursor:pointer;}
.crew-check input{accent-color:var(--accent);}
.crew-view .pill-row{margin-bottom:12px;}
.pill.crew-pill-warn{border-color:var(--red); color:var(--red);}
.pill.crew-pill-warn.active{background:var(--red); color:#fff; border-color:var(--red);}
.pill.crew-pill-amber{border-color:var(--amber); color:var(--amber);}
.pill.crew-pill-amber.active{background:var(--amber); color:var(--bg); border-color:var(--amber);}
.crew-alert.crew-amber{color:var(--amber);}
.crew-dep-warn{background:var(--amber-dim); color:var(--amber); border:1px solid var(--amber); border-radius:7px; padding:9px 11px; font-size:12px; margin:4px 0 0; line-height:1.5;}

.crew-table-wrap{max-height:68vh; overflow:auto; -webkit-overflow-scrolling:touch;}
.crew-table-wrap th{position:sticky; top:0; background:var(--panel); z-index:1;}
.crew-table td{vertical-align:top; white-space:nowrap;}
.crew-table td.wrap{white-space:normal; min-width:140px; max-width:280px;}
/* td.wrap also matches the page container's .wrap rule (large padding); reset it for table cells */
.crew-table td.wrap{padding:6px 8px; margin:0;}
@media(max-width:700px){ .crew-table td.wrap{padding:6px 5px;} }
.crew-table th.sortable{cursor:pointer;}
.crew-table tr.crew-click{cursor:pointer;}
.crew-table tr.crew-click:hover td{background:var(--panel-2);}
.crew-table tr.crew-changed td{background:var(--amber-row);}
.crew-table tr.crew-flag td{background:var(--red-dim);}
.crew-table tr.crew-flag td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.crew-table tr.crew-day td{background:var(--panel-2); font-family:var(--mono); font-size:10.5px; color:var(--muted);
  text-transform:uppercase; letter-spacing:.07em; padding:5px 8px; position:sticky; top:27px;}
.crew-table td.crew-num{color:var(--muted-2); font-family:var(--mono); font-size:11px; text-align:right;}
.crew-table .crew-id{font-family:var(--mono); font-size:12.5px;}
.crew-table td.crew-avail-earlier{background:var(--green-dim); color:var(--green);}
.crew-table td.crew-avail-later{background:var(--red-dim); color:var(--red);}
.crew-table td.crew-asg-flag{background:var(--red-dim); box-shadow:inset 0 0 0 1px var(--red);}
.crew-time{font-family:var(--mono); font-size:12.5px;}
.crew-sub{font-family:var(--mono); font-size:10.5px; color:var(--muted-2); margin-top:2px;}
.crew-rel{font-family:var(--mono); font-size:10.5px; color:var(--muted-2); margin-top:2px;}
.crew-rel.now{color:var(--green); font-weight:600;}
.crew-mut{color:var(--muted-2);}
.crew-alert{color:var(--red); font-size:11.5px; font-weight:600; margin-top:4px; white-space:normal;}
.crew-asg b{font-size:13px;}
.crew-asg .ln{font-size:11.5px; color:var(--muted); margin-top:2px;}
.crew-asg .rm{font-size:11.5px; color:var(--muted-2); margin-top:2px; white-space:normal; max-width:300px;}
.crew-last{font-size:10.5px; color:var(--muted-2); margin-top:2px; font-family:var(--mono);}
.mini-btn.crew-primary{border-color:var(--accent); color:var(--accent);}
.mini-btn.crew-primary:hover{background:var(--accent); color:#fff;}

/* status badges */
.crew-st{font-family:var(--mono); font-size:10.5px; padding:2px 8px; border-radius:10px; letter-spacing:.04em;
  white-space:nowrap; background:var(--gray-dim); color:var(--gray);}
.crew-st.st-SIGNON{background:var(--green-dim); color:var(--green);}
.crew-st.st-BOOKED, .crew-st.st-CALLED{background:var(--amber-dim); color:var(--amber);}
.crew-st.st-REST{background:var(--accent-dim); color:var(--accent-strong);}
.crew-st.st-SGNOFF{background:#262a3d; color:#aab6f0;}
.crew-st.st-LEAVE, .crew-st.st-SICKLEAVE, .crew-st.st-ABSEN, .crew-st.st-NONRUN, .crew-st.st-OFFSHEET{background:var(--red-dim); color:var(--red);}

/* assignment editor (inside the dashboard's modal) */
.crew-form{grid-template-columns:1fr 1fr; margin-top:14px;}
.crew-form input{text-transform:none;}
.crew-form input.crew-upper{text-transform:uppercase;}
.crew-warn{background:var(--red-dim); color:var(--red); border-radius:7px; padding:8px 11px; font-size:12px; margin:12px 0 0;}
.crew-hint{background:var(--amber-dim); color:var(--amber); border-radius:7px; padding:8px 11px; font-size:12px; margin:4px 0 0;}
.crew-danger{color:var(--red); border-color:var(--red);}
.crew-danger:hover{color:#fff; background:var(--red); border-color:var(--red);}
.crew-prev{border-top:1px solid var(--border-soft); margin-top:16px; padding-top:10px; font-size:12px; max-height:190px; overflow:auto;}
.crew-prev div{padding:3px 0;}
.modal .modal-actions .crew-spacer{flex:1;}

/* crew unavailability / putback */
.crew-pb-form{display:grid; grid-template-columns:1.8fr 1.3fr 1fr .7fr 1fr 1fr 1.5fr; gap:10px;}
.crew-pb-loconos{display:flex; gap:6px; align-items:center;}
.crew-pb-loconos input{min-width:0; flex:1;}
.crew-pb-loconos span{color:var(--muted); font-weight:700;}
.crew-pb-form label{font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted-2); display:block; margin-bottom:4px;}
.crew-pb-form input.crew-upper{text-transform:uppercase;}
.crew-pb-table td.crew-pb-cell{min-width:230px; white-space:normal;}
.crew-pb-cell select{width:100%;}
.crew-pb-cell select:disabled{opacity:.7; cursor:not-allowed;}
.crew-pb-detail{font-size:12px; margin-top:5px; color:var(--text); display:flex; gap:8px; align-items:baseline; justify-content:space-between;}
.crew-table tr.pb-none td:first-child{box-shadow:inset 3px 0 0 var(--amber);}
.crew-table tr.pb-refused td{background:var(--red-dim);}
.crew-table tr.pb-refused td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.crew-table tr.pb-higher_grade td:first-child, .crew-table tr.pb-goods td:first-child, .crew-table tr.pb-shunting td:first-child{box-shadow:inset 3px 0 0 var(--muted-2);}
.crew-pb-msg-head{display:flex; justify-content:space-between; align-items:baseline; gap:10px;}
.crew-pb-msg-head .panel-title{margin-bottom:8px;}
#pbWarn .crew-hint{margin:0 0 8px;}
#pbPills .pill{cursor:default;}
textarea.crew-pb-msg{font-family:var(--mono); font-size:12.5px; line-height:1.55; min-height:170px; padding:10px 12px; border-radius:6px;}
.crew-pb-actions{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:10px;}
.crew-pb-actions .crew-spacer{flex:1;}
.crew-pb-logmsg summary{cursor:pointer; color:var(--muted); font-size:12px;}
.crew-pb-logmsg pre{white-space:pre-wrap; font-family:var(--mono); font-size:11.5px; margin:8px 0 0; color:var(--text); max-width:520px;}

/* an assignment that was set from the Crew Unavailability view */
.crew-via{font-size:10.5px; font-weight:600; color:var(--accent-strong); border:1px solid var(--accent); border-radius:4px; padding:0 6px; margin-left:4px; white-space:nowrap;}

/* status recorded against a crew member, shown wherever the crew is listed */
.crew-mark{display:block; width:fit-content; margin-top:4px; font-size:10.5px; font-weight:600; padding:1px 7px; border-radius:4px;
  border:1px solid var(--border); color:var(--muted); white-space:normal; max-width:220px;}
.crew-mark.mk-refused{border-color:var(--red); color:var(--red);}
.crew-mark.mk-higher_grade, .crew-mark.mk-goods, .crew-mark.mk-shunting{border-color:var(--accent); color:var(--accent-strong);}

/* removing Refused to book */
.crew-mark-x{background:transparent; border:none; color:inherit; cursor:pointer; font-size:13px; line-height:1; padding:0 0 0 6px; margin:0; opacity:.75;}
.crew-mark-x:hover, .crew-mark-x:focus-visible{opacity:1; outline:none; text-decoration:underline;}
.crew-pb-selrow{display:flex; gap:6px; align-items:center;}
.crew-pb-selrow select{flex:1; min-width:0;}
.mini-btn.crew-pb-x{white-space:nowrap; color:var(--red); border-color:var(--red); padding:5px 8px;}
.mini-btn.crew-pb-x:hover{background:var(--red); color:#fff;}
.ghost-btn.crew-pb-clearall{padding:5px 11px; font-size:11px; color:var(--red); border-color:var(--red);}
.ghost-btn.crew-pb-clearall:hover{background:var(--red); color:#fff;}

/* exception reports */
.crew-exc-block{padding-top:11px;}
.crew-exc-head{display:flex; flex-wrap:wrap; gap:6px 12px; align-items:baseline; margin-bottom:8px; font-size:13px;}
.crew-exc-head .crew-mut{font-family:var(--mono); font-size:11.5px;}
.crew-exc-pend{color:var(--red); font-weight:600;}
.crew-exc-tag{display:block; width:fit-content; font-size:10.5px; font-weight:600; padding:1px 7px; border-radius:4px; margin:1px 0; white-space:nowrap;}
.crew-exc-tag.t-avail{color:var(--amber); border:1px solid var(--amber); background:var(--amber-dim);}
.crew-exc-tag.t-status{color:var(--accent-strong); border:1px solid var(--accent); background:var(--accent-dim);}
.crew-exc-earlier{color:var(--green);} .crew-exc-later{color:var(--red);}
.crew-table tr.crew-exc-row-pend td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.crew-table td.crew-exc-cell{white-space:normal; min-width:260px;}
.crew-exc-inp{display:flex; gap:6px; align-items:center;}
.crew-exc-inp input{flex:1; min-width:0;}
.crew-exc-done{font-size:12.5px; white-space:pre-wrap;}
.crew-exc-table input[type=checkbox]{accent-color:var(--accent); width:15px; height:15px;}
.crew-exc-bulk{position:sticky; top:0; z-index:3; display:flex; gap:12px; align-items:center; justify-content:flex-end;
  background:var(--panel-2); border:1px solid var(--accent); border-radius:9px; padding:8px 12px; margin-bottom:12px; font-size:13px;}
#crewNotice .bad{color:var(--red);}

/* away from HQ */
.crew-away{display:block; width:fit-content; margin-top:4px; font-size:10.5px; font-weight:600; padding:1px 7px; border-radius:4px;
  background:var(--red-dim); color:var(--red); border:1px solid var(--red); white-space:nowrap;}
.crew-table tr.crew-away-row td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.crew-tab-flag{display:inline-block; min-width:18px; padding:0 5px; margin-left:4px; border-radius:9px; background:var(--red); color:#fff;
  font-family:var(--mono); font-size:10.5px; line-height:17px; text-align:center;}
.crew-toolbar .crew-inline{font-size:12px; color:var(--muted);}
.crew-toolbar input.crew-thr{width:76px;}

/* lobby clusters */
.crew-cl-form{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px;}
.crew-cl-form label, .crew-cl-sub{font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted-2); display:block; margin-bottom:4px;}
.crew-cl-form input.crew-upper{text-transform:uppercase;}
.crew-cl-picks{display:flex; flex-wrap:wrap; gap:6px 8px;}
.crew-cl-pick{border:1px solid var(--border); border-radius:6px; padding:5px 9px; font-family:var(--mono); color:var(--text);}
.crew-cl-pick:has(input:checked){border-color:var(--accent); background:var(--accent-dim);}
.crew-cl-chip{display:inline-block; font-family:var(--mono); font-size:11.5px; padding:1px 7px; border:1px solid var(--border); border-radius:4px; margin:1px 0;}
.crew-cl-chip.unseen{color:var(--muted-2); border-style:dashed;}

@media(max-width:1200px){ .crew-pb-form{grid-template-columns:1fr 1fr 1fr;} }
@media(max-width:900px){ .crew-cl-form{grid-template-columns:1fr;} .crew-pb-form{grid-template-columns:1fr 1fr;} .crew-pb-form .crew-pb-train{grid-column:1 / -1;} }
@media(max-width:700px){
  .crew-form{grid-template-columns:1fr;}
  .crew-toolbar input[type=text], .crew-toolbar select{width:100%;}
}
.crew-toolbar .crew-spacer{flex:1;}
.ghost-btn.crew-exc-rebuild{padding:6px 12px; font-size:11px;}
/* crew ID / name cells that open the crew's status log */
.crew-table td.crew-link{cursor:pointer;}
.crew-table td.crew-link:hover, .crew-table td.crew-link:focus-visible{color:var(--accent-strong); text-decoration:underline; text-underline-offset:3px; outline:none;}
.crew-rel.crew-away-idle{color:var(--red); font-weight:600;}
/* exception review verdicts */
.crew-exc-cell select{width:100%;}
.crew-exc-cell .crew-exc-inp{margin-top:6px;}
.crew-verdict{display:inline-block; font-size:10.5px; font-weight:700; padding:1px 8px; border-radius:4px; border:1px solid var(--border); color:var(--muted);}
.crew-verdict.v-satisfactory{color:var(--green); border-color:var(--green); background:var(--green-dim);}
.crew-verdict.v-unsatisfactory{color:var(--red); border-color:var(--red); background:var(--red-dim);}
.crew-table tr.crew-exc-row-bad td:first-child{box-shadow:inset 3px 0 0 var(--red);}
.crew-table td.crew-pb-logbtns{white-space:nowrap;}
/* Lack of LR: a justified reason, shown like the duties (not as a warning) */
.crew-mark.mk-lack_lr{border-color:var(--accent); color:var(--accent-strong);}
.crew-table tr.pb-lack_lr td:first-child{box-shadow:inset 3px 0 0 var(--muted-2);}
