Sorry, ik heb me verschreven, ik bedoelde juist wat er gebeurt als je de border-collapse op separate zet in jouw uitwerking, dan verdwijnen de randen ook bij sommige cellen die NIET aan de rand zitten, omdat jouw kiezers ook op die cellen slaan.
In mijn uitwerking met 4 extra klassen voor de randen, gebeurt dat niet. Met die extra klassen is het in de HTML ook meteen duidelijk waar die worden toegepast, terwijl dat in jouw geval echt puzzelen is om te zien wat voor effect ze hebben. Daarom had ik die border-collapse ook even op separate gezet.
Maar het is wel leerzaam om te zien hoe je m.b.v. samengestelde complexe kiezers allerlei eiegenschappen voor specifieke elementen erin kunt krijgen, en hoe een kiezer voor een element met meerdere klassen eruit ziet, want dat was ik nog niet eerder tegengekomen.
Wat ik echter niet snap is hoe het nu met die overerving precies zit. In jouw uitwerking heb je voor het wegpoetsen van de bovenrand de kiezer ".hoogtedubbel td" gebruikt met als eigenschap "border-top-style: none;". Maar de klasse hoogtedubbel is al gekoppeld aan de bovenste rij (de <tr>), dus alle elementen die daaronder vallen in de hiërarchie zouden deze eigenschap toch moeten overerven. De <tr> is toch immers de parent van de <td> ? Waarom moet er dan toch nog "td" in de kiezer worden opgenomen? Is dat soms omdat dit iets met de border te maken heeft, die op tr-niveau nog niet is gedefinieerd, maar pas op td niveau? (Hoewel de border-collapse wel al op een nog hoger niveau (nl. op table-niveau) wordt gedefinieerd.)
En omgekeerd, als je bv. kijkt naar de rode cel rechtsonder, die wordt geraakt door de kiezer ".hoogtemiddel .rood" met als eigenschap "border-right-style: none;", dan mag je daar juist geen td aan toevoegen, anders werkt het niet en komt de rand weer terug.
Ik heb ook zitten experimenteren met mixen van separate en collapsed borders voor verschillende rijen of cellen, maar ook dat krijg ik niet voor elkaar. Blijkbaar is dit een property die alleen voor een hele tabel geldt, en niet op micro-niveau.