Vielleicht müssen derart inklusive Platzbedarf ausblendbare Zellen per tbody organisiert sein.
Nein, müssen sie nicht. Ich hatte das mit collapse offenbar falsch verstanden. Zumindest bei mir funktioniert es mit collapse in Chrome und FF auch ohne tbody.
Da hatte ich mich blöd ausgedrückt. Mit collapse funktioniert es. Die Aussage mit dem tbody hatte nichts damit zu tun, sondern war nur ein vorschneller (und falscher) Erklärungsversuch, dass hidden und collapse im Kontext von Tabellen (und vielleicht nur im Rahmen weiterer Bedingungen - tbody) das gleiche machen könnten. Was sie ja nicht tun.
Was aber auch funktioniert, und was ich mit der "Negativ-Formulierung" meinte, ist:
details:not([open]) ~ table tr.switch { display:none; }
Oder visibility:collapse, geht auch. Das ist dann nur eine Regel.
Interessanterweise funktioniert von beiden Varianten
details:not([open]) ~ table tr.switch { visibility:collapse; }
details[closed] ~ table tr.switch { visibility:collapse; }
nur die erste. Ich hätte beides für äquvalent gehalten.
Wie kommt das denn zustande?