Typing 35 percent into forty rows is not a workflow. Markup belongs on the section, where every item inside it can inherit it.
Section default, item override
Set a markup percentage on the section from the section row. Every item in that section uses it unless the item sets its own.
The rule is simple: the item's markup wins if it has one, otherwise the section's applies. That covers the normal case, where a whole trade carries one markup, and the exception, where one line does not.
Set prices from cost plus markup
Once a section has a markup and its items have unit costs, one action sets the prices for the whole section from cost plus markup.
It is an explicit, one shot write into the price field, not a live formula. Your price stays a real number you can override, so a supplier quote that comes in at an odd figure does not get recomputed out from under you the next time somebody changes the markup.
Where cost comes from
Unit cost can be typed in the item drawer, carried in from a library product, or written by confirming a line on an ingested supplier quote. The last one is the good path, because it puts real supplier numbers under your margin instead of estimates.
This is internal
Cost and markup never appear on any client facing surface. Not the share portal, not the client PDF, not the print route, not a trade package, not the home manual. The fence is enforced on the server, so it is not a matter of remembering to hide a column.
The cost and profit lens article covers what that fence covers and what it means.