Amendment to @Chapel's answer.
Harlowe 2.x (and 1.x) includes a number of different techniques you can use to create a link and each technique creates slightly different HTML. Three of the techniques are:
[[Markup Based Link]]
(link: "Link Macro Based Link")[]
[Click Macro Based Link]<link|
(click: ?link)[]
... and the HTML created for each of the above techniques looks something like the following:
<tw-expression type="macro" name="link-goto">
<tw-link tabindex="0" passage-name="Markup Based Link" data-raw="">Markup Based Link</tw-link>
</tw-expression>
<tw-hook>
<tw-link tabindex="0" data-raw="">Link Macro Based Link</tw-link>
</tw-hook>
<tw-enchantment class="link enchantment-link" tabindex="0">
<tw-hook name="link">Click Macro Based Link</tw-hook>
</tw-enchantment>
<tw-expression type="macro" name="click" class="false"></tw-expression>
... you may notice that only the first two of the above techniques actually create a tw-link element which means that the solution supplied by Chapel wont work (as is) for all types of links.
A more correct version of the CSS supplied in Chapel's solution would be:
.red tw-link, .red .enchantment-link {
color: red;
}
... which would now support enchantment based links like the ones the (click:) macro creates.