//! Terminal-aware presentation for `haz run`.
//!
//! The module groups four concerns:
//!
//! - [`color_choice`] detects whether the live process should
//! emit ANSI colour sequences (both streams must be terminals
//! AND `NO_COLOR` must be unset / empty).
//! - [`palette`] derives a deterministic 24-bit RGB colour for
//! each [`haz_domain::task_id::TaskId`] and supplies the small
//! ANSI-escape helpers.
//! - [`duration`] formats a [`std::time::Duration`] in the
//! `176ms` / `7s 856ms` / `1m 23s` / `1h 23m` grammar both the
//! per-task summary lines and the run-level epilogue use.
//! - [`presenter`] implements [`haz_exec::presenter::TaskPresenter`]
//! against those primitives.
//!
//! The `haz-exec` crate stays terminal- / colour-agnostic. Pulling
//! this presenter through the existing `TaskPresenter` port is the
//! single integration point: the binary picks the presenter at
//! startup and feeds it into the observer it hands the scheduler.