Welcome to SFSE, Wade.
The best solution I've seen for separating/protecting email code and CSS leverages Content Areas that contain AMPScript variables.
Workflow
- Create a new email based on the template
- Retrieve a Content Content Area, modify the AMPScript parameters to suit
- Send Preview
Here are the simplified components:
Template (contains base header, content areas and footer)
<html>
<head>
<style>
body {margin:0; padding:0;}
</style>
</head>
<body style="font-family:sans-serif">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="640" align="center">
<table cellspacing="0" cellpadding="0">
<tr>
<td>
<img src="http://placehold.it/640x75/&text=Banner" width="640" alt="Banner"/>
</td>
</tr>
<tr>
<td>
<custom type="content" name="contentarea1">
</td>
</tr>
<tr>
<td>
<custom type="content" name="contentarea2">
</td>
</tr>
</table>
</td>
</tr>
</table>
<p>This email was sent by:
<b>%%Member_Busname%%</b>
<br>%%Member_Addr%%
<br>%%Member_City%%, %%Member_State%%, %%Member_PostalCode%%, %%Member_Country%%</p>
<custom name="opencounter" type="tracking">
</body>
</html>
Content Content Areas (edited in workflow)
%%[
var @ca1_image, @ca1_alt, @ca1_copyColor, @ca1_copy, @ca1_copySize, @ca1_url
/* edit these values */
set @ca1_background = "#d72a47"
set @ca1_image = "http://placehold.it/200x200/&text=Placeholder"
set @ca1_alt = "ALT TEXT"
set @ca1_copyColor = "#ffffff;"
set @ca1_copy = "COPY GOES HERE"
set @ca1_copySize = "18px"
set @ca1_url = "#"
/* do not edit anything below here */
]%%
%%=ContentAreaByName("Shared Items\Shared Contents\Template\Designs\ca1")=%%
Design Content Areas (hidden from normal workflow)
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="640" align="center" style="background: %%=redirectto(@ca1_background)=%%;">
<a href="%%=redirectto(@ca1_url)=%%" alias="ca1">
<img src="%%=v(@ca1_image)=%%" width="210" alt="%%=v(@ca1_alt)=%%" />
</a>
<table cellspacing="0" cellpadding="0">
<tr>
<td style="color:%%=v(@ca1_copyColor)=%%; font-size:%%=v(@ca1_copySize)=%%;">
%%=v(@ca1_copy)=%%
</td>
</tr>
</table>
</td>
</tr>
</table>
While this will protect the code, I wouldn't shy away from taking the opportunity to invest in some HTML & CSS education with your marketing folks. There's not a simple, out-of-the-box way to lock down an email like you're describing. Even some basic HTML/CSS knowledge goes along way.
And, stay away from the WYSIWYG editor completely. Repeated updates to code with the WYSYWYG editor eventually result in Microsoft Word-like HTML, which is never good -- especially in an email.
If you need a good starter template, I'd recommend the Responsive Email Patterns by Brian Graves.