Very informative. Thank you.
In trying to follow using Vers. 12.3 on a Windows 10, 64 bit machine the following code for the legend variable, as given, does not produce the frame seen on the posted page. It is not visible on my machine. However, looking up the LegendFunction and applying Framed to the rule as follows:
legend = SwatchLegend[ Values[colors], {"D0 Abnormally Dry", "D1 Moderate Drought",
"D2 Severe Drought", "D3 Exterem Drought",
"D4 Exceptional Drought"}, LabelStyle -> {FontSize -> 9},
LegendFunction -> Framed, LegendLayout -> "Column"]
Does give a frame, albeit without rounded corners. Changing this to:
legend = SwatchLegend[
Values[colors], {"D0 Abnormally Dry", "D1 Moderate Drought",
"D2 Severe Drought", "D3 Extreme Drought",
"D4 Exceptional Drought"}, LabelStyle -> {FontSize -> 9},
LegendFunction -> (Framed[#, RoundingRadius -> 6] &),
LegendLayout -> "Column"]
does give a close approximation to the frame that appears on this webpage, except for the spelling of "Extreme", a minor correction to a very informative post.
It's worth noting that with new data (last on Tuesday 21 Sep 2021) the geomap shown is almost the same as it was last month, vividly demonstrating that these droughts are persistent, even a month later into the fall.