#gameScreen .lane-slot.available {
  border: 1px solid rgba(255,255,255,.18);
  padding: 0;
  background: transparent;
  box-shadow: none;
  animation: crewCallPreviewBreathe 1.7s ease-in-out infinite both;
  animation-delay: var(--crew-idle-delay, 0ms);
}
#gameScreen .lane-slot[data-crew-index="0"] { --crew-idle-delay: 0ms; }
#gameScreen .lane-slot[data-crew-index="1"] { --crew-idle-delay: 180ms; }
#gameScreen .lane-slot[data-crew-index="2"] { --crew-idle-delay: 360ms; }
#gameScreen .lane-slot[data-crew-index="3"] { --crew-idle-delay: 540ms; }
#gameScreen .lane-card.crew-call-preview {
  appearance: none;
  border: 0;
  border-radius: 4px;
  box-shadow: none;
  animation: none;
  background: #080c12;
}
#gameScreen .crew-offer-silhouette {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: .85;
  mix-blend-mode: screen;
  mix-blend-mode: plus-lighter;
  pointer-events: none;
}
#gameScreen .crew-offer-question {
  position: absolute;
  left: 0;
  right: 0;
  top: 44%;
  transform: translateY(-50%);
  color: #fff;
  font: 1000 54px/1 var(--mono);
  text-align: center;
  opacity: .22;
  mix-blend-mode: screen;
  mix-blend-mode: plus-lighter;
  pointer-events: none;
  z-index: 2;
  animation: crewCallLabelWobble 1.7s ease-in-out infinite both;
  animation-delay: var(--crew-idle-delay, 0ms);
}
#gameScreen .crew-offer-obscuration {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0,0,0,.2);
  pointer-events: none;
}
#gameScreen .crew-call-preview,
#gameScreen .lane-card.crew-state-ready { isolation: isolate; }
#gameScreen .crew-call-preview .crew-state-banner,
#gameScreen .lane-card.crew-state-ready .crew-state-banner:not(.crew-denied-banner) {
  top: auto;
  bottom: 0;
  transform: none;
  opacity: 1;
  background: transparent;
  border: 0;
  box-shadow: none;
  color: #fff;
  font-weight: 1000;
  text-shadow: 0 1px 3px #000, 0 0 3px #000;
}
#gameScreen .crew-call-preview .crew-state-banner::before,
#gameScreen .lane-card.crew-state-ready .crew-state-banner:not(.crew-denied-banner)::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: var(--crew-call-solid, #49ff79);
  opacity: .6;
  mix-blend-mode: hard-light;
}
#gameScreen .lane-card.crew-state-ready .crew-state-banner:not(.crew-denied-banner) {
  font-size: 9px;
}
#gameScreen .crew-call-preview .crew-state-banner {
  --crew-call-solid: #49ff79;
  min-height: 29px;
  font-size: 14px;
  color: #49ff79;
  text-shadow: none;
}
#gameScreen .crew-call-preview .crew-state-banner::before {
  opacity: .3;
  mix-blend-mode: screen;
  mix-blend-mode: plus-lighter;
}
#gameScreen .crew-call-label {
  display: inline-block;
  opacity: .7;
  mix-blend-mode: screen;
  mix-blend-mode: plus-lighter;
  animation: crewCallLabelWobble 1.7s ease-in-out infinite both;
  animation-delay: var(--crew-idle-delay, 0ms);
}
#gameScreen .crew-call-preview:disabled { cursor: default; }
#gameScreen .crew-call-button:not(.refreshing) {
  background: #49ff79;
  box-shadow: inset 0 1px rgba(255,255,255,.72), 0 0 18px #49ff7990, 4px 4px 0 #06080a;
}
#gameScreen .crew-call-button-icon { font-size: 42px; }
#gameScreen .crew-call-button b { font-size: 15px; }
#gameScreen .crew-call-button.refreshing b,
#gameScreen .crew-call-button.updated b { font-size: 10px; }
#gameScreen .crew-call-button.refreshing {
  background: #123c3c;
  border-color: #315459;
  color: #8caaa8;
  box-shadow: inset 0 0 18px #071b1b90;
  cursor: wait;
}
#gameScreen .crew-call-button.refreshing .crew-call-button-icon { opacity: .55; }
#gameScreen .crew-call-button.refreshing::after { display: none; }
#gameScreen .crew-call-button.unavailable:not(.refreshing) {
  background: #a71f39;
  border-color: #f04d67;
  color: #fff;
  box-shadow: inset 0 0 24px #35061090, 0 0 12px #f04d6740, 4px 4px 0 #06080a;
}
#gameScreen .crew-call-button.unavailable:not(.refreshing) .crew-call-button-icon,
#gameScreen .crew-call-button.unavailable:not(.refreshing) b { opacity: .6; }
#gameScreen .crew-call-button.unavailable::after { display: none; }
#gameScreen .crew-lane.slot-previews .lane-slot.empty {
  animation: none;
  border-color: rgba(255, 215, 102, .32);
  background: rgba(25, 19, 7, .4);
  box-shadow: none;
}
#gameScreen .crew-lane.slot-previews .lane-slot.empty::after { content: none; }
#gameScreen .lane-slot.offer-disconnecting .crew-call-preview {
  animation: crewOfferDisconnect 240ms ease-in both;
}
#gameScreen .lane-slot.offer-connecting .crew-call-preview {
  animation: crewOfferConnect 420ms cubic-bezier(.18,.85,.25,1) both;
}
#gameScreen .lane-slot.offer-connecting::before {
  content: '';
  position: absolute;
  inset: 2px;
  z-index: 20;
  border-radius: 4px;
  background: #fff;
  opacity: 0;
  pointer-events: none;
  animation: crewOfferInnerFlash 420ms ease-out both;
}
.crew-available-banner {
  inset: auto 0 100%;
  background: #ffdd4a;
  border-color: #ffdd4a;
  color: #080b07;
  box-shadow: 0 0 18px #ffdd4a80;
}
.crew-roster-warning {
  flex-shrink: 0;
  margin: 8px 0 0;
  padding: 10px 12px;
  border: 3px solid #ff3159;
  border-radius: 6px;
  color: #fff;
  background: #7f0d28;
  box-shadow: 0 0 16px #ff315940;
  font: 900 16px/1.25 var(--font);
  text-align: center;
}
.crew-roster-warning[hidden] { display: none; }
@keyframes crewCallPreviewBreathe {
  0%, 100% { transform: scale(.99); filter: brightness(.94); }
  50% { transform: scale(1); filter: brightness(1.05); }
}
@keyframes crewCallLabelWobble {
  0%, 100% { translate: 0 2px; }
  50% { translate: 0 -2px; }
}
@keyframes crewOfferInnerFlash {
  0% { opacity: .85; }
  35% { opacity: .5; }
  100% { opacity: 0; }
}
@keyframes crewOfferDisconnect {
  0% { opacity: 1; transform: translateY(0) scale(1); }
  45% { filter: brightness(1.6) saturate(.4); }
  100% { opacity: 0; transform: translateY(12px) scale(.93); filter: brightness(.3); }
}
@keyframes crewOfferConnect {
  0% { opacity: 0; transform: translateY(-12px) scale(.93); filter: brightness(1.8); }
  65% { opacity: 1; transform: translateY(1px) scale(1.02); filter: brightness(1.25); }
  100% { opacity: 1; transform: translateY(0) scale(1); filter: brightness(1); }
}
@media (prefers-reduced-motion: reduce) {
  #gameScreen .lane-slot.available { animation: none; }
  #gameScreen .crew-call-label { animation: none; }
  #gameScreen .crew-offer-question { animation: none; }
  #gameScreen .lane-slot.offer-connecting::before { animation: none; }
  #gameScreen .lane-slot.offer-disconnecting .crew-call-preview,
  #gameScreen .lane-slot.offer-connecting .crew-call-preview { animation: none; }
}
