"""Alloy densities (g/mm^3) — NOMINAL figures; confirm with your caster
(14k white especially varies 12.6-14.5 by master alloy)."""

DENSITY = {
    "silver_925": 0.01036,
    "14k_yellow": 0.0130,
    "14k_white": 0.0127,
    "14k_rose": 0.0130,
    "18k_yellow": 0.0155,
    "18k_white": 0.0157,
    "18k_rose": 0.0150,
    "platinum_950": 0.0214,
}


def alloy_from_metal(metal: str, casting: dict | None = None) -> str:
    if casting and casting.get("alloy"):
        return casting["alloy"]
    m = (metal or "white").lower()
    if "plat" in m:
        return "platinum_950"
    if "silver" in m:
        return "silver_925"
    karat = "14k" if "14" in m else "18k"
    color = "rose" if "rose" in m else ("yellow" if "yellow" in m else "white")
    return f"{karat}_{color}"
