ah! sorry, the content of the carac section threw me because it looked placed correctly, missed that it was stretched out. The issue is that your tab control display has a higher specificity than the pc-principal styling, so it is forcing it to be display: block. To fix the issue, I'd change this section of your css: /*PJ (PC) sheet*/ .charsheet .pc-principal, .charsheet .pc-equipment, .charsheet .pc-grimoire, .charsheet .pc-necromancy, .charsheet .pc-notes { display: none; } .charsheet .tabstoggle[value="PC_principal"] ~ div.pc-principal, .charsheet .tabstoggle[value="PC_equipment"] ~ div.pc-equipment, .charsheet .tabstoggle[value="PC_grimoire"] ~ div.pc-grimoire, .charsheet .tabstoggle[value="PC_necromancy"] ~ div.pc-necromancy, .charsheet .tabstoggle[value="PC_notes"] ~ div.pc-notes { display: block; } to be this: .charsheet .tabstoggle:not([value="PC_principal"]) ~ div.pc-principal,
.charsheet .tabstoggle:not([value="PC_equipment"]) ~ div.pc-equipment,
.charsheet .tabstoggle:not([value="PC_grimoire"]) ~ div.pc-grimoire,
.charsheet .tabstoggle:not([value="PC_necromancy"]) ~ div.pc-necromancy,
.charsheet .tabstoggle:not([value="PC_notes"]) ~ div.pc-notes {
display: none;
} And apply the same logic to all your other display controls. This will ensure that your tab display logic will only override the display setting of that tab's content when it needs to be hidden. Also, for your grid setup, I'd recommend using 1fr instead of 50% for your column widths. This will function nearly identically, but will take the size of your gap into account as well.