Making buttons dynamically responsive on a passage

Twine Version: 2.3.13 offline installed
Story Format: Sugarcube 2.34.1

I’m trying to build a character creation “page”. Currently it’s split into two passages, as some choices are dependent on previous choices. I’d like to amalgamate it into one passage, but I’m not sure how to make it work. Can it be done without reloading the passage?. I’m hoping to see if two things can be done:

  1. Make the options reflect automatically based on choices? I imagine a refresh of some kind should make it work. Ideally only specific options that are dependencies on further down choices would trigger an update.
  2. Is it possible to not hide the incompatible options, like with how I did the ‘if’ statements below? Just make them “greyed out” and unselectable? I want all options to be visible as they will have hover text explaining what needs to be done in order to make it selectable. This is not yet implemented as I wanted to get this basic framework working first.

For example:

  • if you select ‘Toned’ Bodytype, then ‘Round’ physique isn’t selectable, but ‘Muscular’ would be.
  • if you select ‘Thick’ Bodytype, then ‘Muscular’ physique isn’t selectable, but ‘Round’ would be.
  • etc.

Here is my current, very basic, test code showing an excerpt of one dependency pair:

/* STORYINIT: */
<<set $mc to {
	...
	bodytype: 'average', /* default choice */
	physique: '',
	...
}>>

/* CHARACTER CREATION PASSAGE: */

/* Snipped - including Gender, Hair color, Eye color, etc.. */

Body Type:
<label><<radiobutton "$mc.bodytype" "slim" autocheck>> Slim</label>
<label><<radiobutton "$mc.bodytype" "average" autocheck>> Average</label>
<label><<radiobutton "$mc.bodytype" "toned" autocheck>> Toned</label>
<label><<radiobutton "$mc.bodytype" "thick" autocheck>> Thick</label>
<label><<radiobutton "$mc.bodytype" "overweight" autocheck>> Overweight</label>

/* Snipped - additional choices */

Physique:
<label><<radiobutton "$mc.physique" "hourglass" autocheck>> Hourglass</label>
<<if $mc.bodytype == "thick" or $mc.bodytype == "overweight">>
	<label><<radiobutton "$mc.physique" "round" autocheck>> Round</label>
<</if>>
<label><<radiobutton "$mc.physique" "athletic" autocheck>> Athletic</label>
<<if $mc.bodytype == "toned">>
	<label><<radiobutton "$mc.physique" "muscular" autocheck>> Muscular</label>	<</if>>

/* Additional choices snipped */
	

Hopefully that all made sense? Thanks!

This is sort of what I’m looking to do. It’s from another game, and is similar enough to what I’m and is a decent reference of the mechanic I’m trying to replicate.

This is the base with nothing selected, so all options can be picked:
base

When an option is checked that excludes another it makes it unselectable and can’t be chosen it would be more like this, than my sample code that just hides the option. In this menus case choosing Outgoing personality makes it so you can’t select Shy personality, and the opposite would be true:
modified