Index: resources/data/validator/combinations.mapcss
===================================================================
--- resources/data/validator/combinations.mapcss	(revision 18674)
+++ resources/data/validator/combinations.mapcss	(working copy)
@@ -47,6 +47,8 @@
 way[length_unit                ][!waterway],
 way[canal                      ][!waterway],
 way[have_riverbank             ][!waterway],
+area[min_height                ][!height][/^(building|building:part)$/], /* #21286 */
+area[building:min_level        ][!building:levels][/^(building|building:part)$/], /* #21286 */
 *[border_type                  ][!boundary],
 *[piste:difficulty             ][!piste:type],
 *[place                        ][!name][place!=islet][place!=plot][noname!=yes],
@@ -1076,3 +1078,12 @@
   throwWarning: tr("{0} is lower than {1} on {2}.", "{1.key}", "{0.key}", "{2.tag}");
   group: tr("suspicious tag combination");
 }
\ No newline at end of file
+
+/* #21286 */
+area[/^(building|building:part)$/][height =~ /^[0-9]+(\.[0-9]+)?( m)?$/][min_height =~ /^[0-9]+(\.[0-9]+)?( m)?$/][get(split(" ", tag(height)), 0) <= get(split(" ", tag(min_height)), 0)],
+area[/^(building|building:part)$/][height =~ /^[0-9]+(\.[0-9]+)?( ft)$/][min_height =~ /^[0-9]+(\.[0-9]+)?( ft)$/][get(split(" ", tag(height)), 0) <= get(split(" ", tag(min_height)), 0)],
+area[/^(building|building:part)$/][building:levels][building:min_level][tag("building:levels") <= tag("building:min_level")] {
+  throwWarning: tr("{0} is lower or equal to {1} on {2}", "{1.key}", "{2.key}", "{0.key}");
+  group: tr("suspicious tag combination");
+}
+
