/* The app's operator: one small animation, next to the work it represents. */
tube-mascot {
  display: block;
  position: relative;
  width: var(--mascot-width, 128px);
  aspect-ratio: 8 / 9;
  flex: 0 0 auto;
  contain: layout paint;
}
tube-mascot img, tube-mascot canvas { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
tube-mascot [hidden], .operator-work[hidden], .operator-work [hidden], .pull-companion[hidden] { display: none !important; }
#video-head:empty { display: none; }
.mascot-greeting {
  --mascot-width: 152px;
  display: block;
  position: relative;
  margin: -30px auto 8px;
  border: 0;
  background: transparent;
  padding: 0;
  cursor: pointer;
  border-radius: 50%;
}
.mascot-greeting::after {
  content: '';
  position: absolute;
  width: 64px;
  height: 7px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--ink) 10%, transparent);
  bottom: 9px;
  left: calc(50% - 32px);
  z-index: -1;
}
.mascot-greeting:hover { transform: translateY(-3px); }
.mascot-greeting:focus-visible, .operator-toggle:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }
.operator-work {
  display: grid;
  grid-template-columns: 124px minmax(0, 1fr);
  align-items: center;
  gap: 22px;
  margin: 0 0 24px;
  padding: 16px 22px 16px 12px;
  background: var(--secondary-light);
  border-radius: 5px;
  position: relative;
}
.operator-stage { position: relative; isolation: isolate; --mascot-width: 124px; }
.operator-stage::before {
  content: '';
  position: absolute;
  inset: 16% 4% 8%;
  background: color-mix(in srgb, var(--secondary) 70%, transparent);
  border-radius: 50%;
  z-index: -1;
}
.operator-track { position: absolute; inset: auto 12% 5%; height: 12px; overflow: hidden; opacity: 0; }
.operator-track::before {
  content: '';
  display: block;
  width: 200%;
  height: 2px;
  background: repeating-linear-gradient(90deg, var(--ink) 0 14px, transparent 14px 31px);
  opacity: .18;
  animation: operator-road 700ms linear infinite;
  animation-play-state: paused;
}
.operator-work[data-state="run"] .operator-track { opacity: 1; }
.operator-stage[data-moving="true"] .operator-track::before { animation-play-state: running; }
.operator-work[data-state="run"] .operator-stage::before { background: color-mix(in srgb, var(--accent) 5%, var(--secondary-light)); }
.operator-kicker { display: block; font-size: 10px; line-height: 1.5; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
#work-companion .status-line { margin: 0; padding: 0; font-size: 17px; line-height: 1.4; color: var(--ink); font-weight: 700; overflow-wrap: anywhere; }
.operator-caption { font-size: 12px; line-height: 1.6; color: var(--muted); margin-top: 7px; }
.operator-toggle { border: 0; border-bottom: 1px solid transparent; background: none; color: var(--muted); font-size: 10px; line-height: 1.5; padding: 8px 0 0; cursor: pointer; min-height: 30px; }
.operator-toggle:hover { color: var(--ink); border-bottom-color: currentColor; }
.operator-toggle:disabled { cursor: default; opacity: .75; }
.operator-work:not([data-state="run"]) .operator-toggle,
.pull-companion:not([data-state="run"]) .operator-toggle { display: none; }
.operator-work[data-state="wave"] { background: color-mix(in srgb, #5c8b6a 9%, var(--white)); }
.operator-work[data-state="wave"] .operator-kicker { color: #376147; }
.operator-work[data-state="rest"] .operator-stage { opacity: .8; }
.operator-work[data-error="true"] { background: color-mix(in srgb, var(--danger) 5%, var(--white)); }
.operator-work[data-error="true"] .status-line { color: var(--danger) !important; font-size: 14px !important; }
.pull-companion { display: flex; flex-direction: column; align-items: center; padding-top: 10px; }
.pull-companion .operator-stage { --mascot-width: 112px; }
.pull-companion[data-state="run"] .operator-track { opacity: 1; }
.pull-companion + #pull-list .pull-progress { padding-top: 6px; }
.operator-work[data-state="wave"] .operator-stage { animation: operator-arrive 260ms var(--ease-out-quart); }
html[data-mascot-motion="off"] .operator-track::before { animation: none; }
html[data-mascot-motion="off"] .mascot-greeting:hover { transform: none; }
@keyframes operator-road { to { transform: translateX(-62px); } }
@keyframes operator-arrive { from { transform: translateY(4px); opacity: .4; } to { transform: none; opacity: 1; } }
@media (max-width: 600px) {
  .operator-work { grid-template-columns: 88px minmax(0, 1fr); gap: 12px; padding: 12px 12px 12px 4px; margin-bottom: 18px; }
  .operator-stage { --mascot-width: 88px; }
  #work-companion .status-line { font-size: 14px; }
  .operator-kicker { font-size: 9px; letter-spacing: .08em; }
  .operator-caption { font-size: 11px; }
  .operator-toggle { font-size: 10px; min-height: 36px; }
  .mascot-greeting { --mascot-width: 124px; margin-top: -42px; }
}
@media (prefers-reduced-motion: reduce) {
  .operator-track::before, .operator-stage { animation: none !important; }
  .mascot-greeting:hover { transform: none; }
}
