Try being explicit about the dependencies and order, both within the tabs (which are stepped sections) and within the tab content (the current portion of the total forms).
If I understand you correctly, this is a multistep process. There's several aspects here:
- Communicating the entirety of what's needed for completion
- Clarity about order and dependencies (both between and within sections)
- Empathy for users who have a lot of work to do to successfully comply with your requirements
1. Break up the tabs into ordered sections. You can use a numbered list with subtext for clarity about what they will encounter.
Tabs are often used for grouping related data, but not used as much to divide and group ordered or dependent data.
By using the vertical sections implying descending order (bottom is last), and further encoding using a numbered list you explain:
- The total number of steps
- The order
- A description to prime the user what each section might require
2. Within each section, use a vertical path to completion so users know the order, and you have flexibility to change sections below depending on what a user has selected in a section above.
Since you have dependencies (i.e. conditional dropdowns that alter or expose information in a subsequent section), using the vertical format will emphasize the order in which things need to be completed.
It's also easier for customers to scan and scroll vertically so the see the labels for all inputs.
Tradeoffs: compact data vs. clarity of order
There are going to be tradeoffs between keeping the information 'above the fold', but chances are you don't have control over the users viewport. They could be using a 30 inch monitor, or an 11 inch Macbook Air.
3. Allow save and exit, as they may not have all the form data to complete, but don't want to start over.
Don't punish users by having to conform to your implementation model.
Since you have a complex, multistep form, assume customers have ALOT of data to input, some of which they may depend on coworkers (or outside systems) to gather from.
Allow them to save and exit, so they don't have to start from scratch.
Update: a note on tabs and steppers
As @plainclothes pointed out, this solution could also work with a horizontal stepper. I've seen examples of both that are effective:
If you're using Material as a framework, they offer use of horizontal or vertical.