src/iohmm_evac/report/constants.py

# SPDX-License-Identifier: AGPL-3.0-only
# Copyright (C) 2026 SWGY, Inc.
"""Shared plotting constants (state ordering, color map, default fig sizes)."""

from __future__ import annotations

__all__ = [
    "DEFAULT_DPI",
    "SCENARIO_COLORS",
    "SCENARIO_ORDER",
    "STATE_COLORS",
    "STATE_ORDER",
]


STATE_ORDER: tuple[str, ...] = ("UA", "AW", "PR", "ER", "SH")
"""Canonical left-to-right ordering of latent states for stacked plots."""


STATE_COLORS: dict[str, str] = {
    "UA": "#cccccc",  # neutral grey: unaware
    "AW": "#fdae61",  # warm amber: aware
    "PR": "#f46d43",  # orange-red: preparing
    "ER": "#d73027",  # deep red: en-route
    "SH": "#1a9850",  # green: sheltered
}
"""Stable color mapping used by all reporting plots."""


SCENARIO_ORDER: tuple[str, ...] = (
    "baseline",
    "early-warning",
    "targeted-messaging",
    "contraflow",
)
"""Canonical ordering of the four predefined scenarios in cross-scenario plots."""


SCENARIO_COLORS: dict[str, str] = {
    "baseline": "#4C72B0",
    "early-warning": "#55A868",
    "targeted-messaging": "#C44E52",
    "contraflow": "#8172B3",
}
"""Colorblind-friendly palette (seaborn ``deep``) keyed by scenario."""


DEFAULT_DPI: int = 150
"""Output PNG DPI used by every CLI command."""