I see the issue. While I exploring it by the way I noticed a problem in your sdot buttons. input.sheet-sdot[value="31"] ~ button.sheet-st-31 > span.sheet-checked, input.sheet-sdot[value="32"] ~ button.sheet-st-32 > span.sheet-checked, input.sheet-sdot[value="34"] ~ button.sheet-st-34 > span.sheet-checked, input.sheet-sdot[value="35"] ~ button.sheet-st-35 > span.sheet-checked, Notice there's no 33 value. The same is true in the fatigue list, so you'll need to fix that. Okay how to fix your problem. First add this sheet worker: on("change:bod sheet:opened", function() { getAttrs(['bod'], function(v) { setAttrs({ bodyx2: (parseInt(v.bod) || 0) *2 }); }); }); Then add a hidden input along with your stdam input, like so: <input type="hidden" name="attr_stdam" class="sdot" value="1" /> <input type="hidden" name="attr_bodyx2" class="sbody" value="1" /> <button type="action" name="act_stdam_1" class="sdot"> <span class="checked"></span> </button> Now on to the CSS. Before telling you the fix, here's a bit of streamlining: you have entries like this input.sheet-sdot[value="0"] ~ button.sheet-st-0 > span.sheet-checked { display: none; } input.sheet-sdot[value="1"] ~ button.sheet-st-1 > span.sheet-checked { display: none; } Whenever you have multiple css rules that have the same value, you can do this: input.sheet-sdot[value="0"] ~ button.sheet-st-0 > span.sheet-checked, input.sheet-sdot[value="1"] ~ button.sheet-st-1 > span.sheet-checked,
/* many more entries here, each ending with a comma */
input.sheet-sdot[value="40"] ~ button.sheet-st-40 { display: none; } So, what you need to add to the CSS is this: input.sheet-sbody[value="0"] ~ button.sheet-st-0, input.sheet-sbody[value="1"] ~ button.sheet-st-1, input.sheet-sbody[value="2"] ~ button.sheet-st-2, input.sheet-sbody[value="3"] ~ button.sheet-st-3, input.sheet-sbody[value="4"] ~ button.sheet-st-4, input.sheet-sbody[value="5"] ~ button.sheet-st-5, input.sheet-sbody[value="6"] ~ button.sheet-st-6, input.sheet-sbody[value="7"] ~ button.sheet-st-7, input.sheet-sbody[value="8"] ~ button.sheet-st-8, input.sheet-sbody[value="9"] ~ button.sheet-st-9, input.sheet-sbody[value="10"] ~ button.sheet-st-10, input.sheet-sbody[value="11"] ~ button.sheet-st-11, input.sheet-sbody[value="12"] ~ button.sheet-st-12, input.sheet-sbody[value="13"] ~ button.sheet-st-13, input.sheet-sbody[value="14"] ~ button.sheet-st-14, input.sheet-sbody[value="15"] ~ button.sheet-st-15, input.sheet-sbody[value="16"] ~ button.sheet-st-16, input.sheet-sbody[value="17"] ~ button.sheet-st-17, input.sheet-sbody[value="18"] ~ button.sheet-st-18, input.sheet-sbody[value="19"] ~ button.sheet-st-19, input.sheet-sbody[value="20"] ~ button.sheet-st-20, input.sheet-sbody[value="21"] ~ button.sheet-st-21, input.sheet-sbody[value="22"] ~ button.sheet-st-22, input.sheet-sbody[value="23"] ~ button.sheet-st-23, input.sheet-sbody[value="24"] ~ button.sheet-st-24, input.sheet-sbody[value="25"] ~ button.sheet-st-25, input.sheet-sbody[value="26"] ~ button.sheet-st-26, input.sheet-sbody[value="27"] ~ button.sheet-st-27, input.sheet-sbody[value="28"] ~ button.sheet-st-28, input.sheet-sbody[value="29"] ~ button.sheet-st-29, input.sheet-sbody[value="30"] ~ button.sheet-st-30, input.sheet-sbody[value="31"] ~ button.sheet-st-31, input.sheet-sbody[value="32"] ~ button.sheet-st-32, input.sheet-sbody[value="33"] ~ button.sheet-st-33, input.sheet-sbody[value="34"] ~ button.sheet-st-34, input.sheet-sbody[value="35"] ~ button.sheet-st-35, input.sheet-sbody[value="36"] ~ button.sheet-st-36, input.sheet-sbody[value="37"] ~ button.sheet-st-37, input.sheet-sbody[value="38"] ~ button.sheet-st-38, input.sheet-sbody[value="39"] ~ button.sheet-st-39, input.sheet-sbody[value="40"] ~ button.sheet-st-40 { display: none; } You could delete all the odd numbers, since bodyx2 cant ever be odd. This is tested, so I know it works. You need to do the same for the fatigue section, but you can use the same bodyx2 attribute if their are both based on body.