/* The W3C Core Styles Copyright (c) 1998 W3C (MIT, INRIA, Keio), All Rights
Reserved. W3C liability, trademark, document use and software licensing rules
apply. See http://www.w3.org/Consortium/Legal/ipr-notice.html

This stylesheet has been served in a form to avoid known bugs in your user
agent's CSS implementation. Copying and serving this stylesheet to other
agents may lead to unexpected results. Please refer to its address rather than
copy it. */





	/* begin body type */	/* 1 - humanist sans a */

BODY	{	
	font-size:	1em;
	font-weight:	normal;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	font-family:	Verdana, Myriad Web, Syntax, sans-serif;
	font-size-adjust:	.58;
	}	

P, BLOCKQUOTE, UL, OL, DL, DD, LI, DIR, MENU	{	
	/* inherit from body */	
	}	

SMALL	{	
	font-size:	.92em;
	}	

BIG	{	
	font-size:	1.17em;
	}	

PRE	{	
	font-family:	'Monotype.com', Courier New, monospace;
	}	

OL LI	{	
	list-style-type:	decimal;
	}	

OL OL LI	{	
	list-style-type:	lower-alpha;
	}	

OL OL OL LI	{	
	list-style-type:	lower-roman;
	}	

TABLE, TBODY, TR, TD	{	
	font-size:	1em;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	font-family:	Verdana, Myriad Web, Syntax, sans-serif;
	font-size-adjust:	.58;
	}	

	/* end body type */	




	/* begin header type */	/* 2 - serif a */
		
H1	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	2.0em;
	font-weight:	600;
	font-style:	normal;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	}	
		
H2	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	1.75em;
	font-weight:	500;
	font-style:	normal;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	}	
		
H3	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	1.58em;
	font-weight:	600;
	font-style:	italic;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	}	
		
H4	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	1.33em;
	font-weight:	600;
	font-style:	normal;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	}	
		
H5, DT	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	1.17em;
	font-weight:	600;
	font-style:	italic;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	}	
		
H6	{	
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	font-size:	1em;
	font-weight:	700;
	font-style:	normal;
	text-decoration:	none;
	word-spacing:	normal;
	letter-spacing:	.1em;
	text-transform:	small-caps
	}	
		
TFOOT, THEAD	{	
	font-size:	1em;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	}	
		
TH	{	
	vertical-align:	baseline;
	font-size:	1em;
	font-weight:	bold;
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	font-family:	Georgia, Minion Web, Palatino, Book Antiqua, Utopia, Times New Roman, serif;
	font-size-adjust:	.4;
	}	
		
HR	{	
	visibility:	visible;
	}	
		
	/* end header type */	




	/* begin affordances */	/* 7 - rubric */
		
A, ADDRESS, BLOCKQUOTE, BODY, CITE, CODE, DD, DEL, DFN,		
DIV, DL, DT, EM, FORM, H1, H2, H3, H4, H5, H6, IFRAME, IMG, KBD,		
LI, OBJECT, OL, P, Q, SAMP, SMALL, SPAN, STRONG, SUB, SUP, UL, VAR, 		
APPLET, BIG, CENTER, DIR, FONT, HR, MENU, PRE,		
ABBR, ACRONYM, BDO, BUTTON, FIELDSET, INS, LABEL	{	
	word-spacing:	normal;
	letter-spacing:	normal;
	text-transform:	none;
	text-decoration:	none;
	border-color:	#999;
	border-style:	none;
	}	
		
BODY	{	
	color:	black;
	background:	#FFFFF5;
	}	
		
EM	{	
	font-style:	normal;
	font-weight:	bold;
	color:	black;
	background:	#FFFFF5;
	}	
		
STRONG	{	
	font-style:	italic;
	background:	#FFFFF5;
	font-weight:	bold;
	color:	black;
	}	
		
EM STRONG, STRONG EM	{	
	text-transform:	uppercase;
	font-style:	normal;
	font-weight:	bolder;
	background:	#FFFFF5;
	color:	black;
	}	
		
B	{
	font-weight:	bold;
	}
	
I	{
	font-style:	italic;
	}
		
.warning	{	
	text-transform:	none;
	font-style:	normal;
	font-weight:	bolder;
	background:	#FF0;
	color:	red;
	}	
		
DEL	{	
	text-decoration:	line-through;
	background:	#FC6;
	}	
		
INS	{	
	text-decoration:	none;
	background:	9F3;
	}	
		
VAR, CITE, DFN, .note	{	
	font-style:	italic;
	}	
		
ADDRESS	{	
	font-style:	normal;
	letter-spacing:	.1em;
	}	
		
ACRONYM	{	
	font-variant:	small-caps;
	letter-spacing:	0.1em;
	}	
		
H1, H2, H3, H4, H5, H6, DT, TH, THEAD, TFOOT	{	
	color:	#C00;
	background:	#FFFFF5;
	}	
		
HR	{	
	color:	black;
	}	
		
#colophon	{	
	display:	none;
	}	
		
COL, COLGROUP, TABLE, TBODY, TD, TR	{	
	color:	black;
	text-decoration:	none;
	border-color:	black;
	border-style:	none;
	background:	#FFFFF5;
	}	
		
A:link	{	
	text-decoration:	none;
	font-weight:	bold; 
	color:	#33F;
	background:	#FFFFF5;
	}	
		
A:visited	{	
	text-decoration:	none;
	font-weight:	bold;
	color:	#93C;
	background:	#FFFFF5;
	}	
		
A:active	{	
	text-decoration:	none;
	font-weight:	bold;
	color:	black;
	background:	#CCF;
	}	
		
A:hover	{	
	text-decoration:	none;
	color:	#FFFFF5;
	background:	#33F;
	}	
		
A.offsite	{	
	text-decoration:	none;
	font-weight:	normal;
	color:	#33F;
	background:	#FFFFF5;
	}	
		
	/* end affordances */	




	/* begin vertical */	/* 1 - pentatonic a */
		
A, ADDRESS, BLOCKQUOTE, CITE, CODE, DD, DEL, DFN,		
DIV, DL, DT, EM, FORM, H1, H2, H3, H4, H5, H6, IFRAME, IMG, KBD,		
LI, OBJECT, OL, P, Q, SAMP, SMALL, SPAN, STRONG, SUB, SUP, UL, VAR, 		
APPLET, B, BIG, CENTER, DIR, FONT, HR, I, MENU, PRE, S, STRIKE, TT,		
U, ABBR, ACRONYM, BDO, BUTTON, FIELDSET, INS, LABEL	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	vertical-align:	baseline;
	}	
		
BODY	{	
	line-height:	1.58em;
	}	
		
DIV > P:first-child, BODY > P:first-child, TD > P:first-child	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H1 + P, H2 + P, H3 + P, H4 + P, H5 + P, H6 + P, DIV + P, P.initial	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H1, H2, H3, H4, H5, H6	{	
	line-height:	1.33em;
	}	
		
H1	{	
	margin-top:	1.33em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H2	{	
	margin-top:	1.75em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H3	{	
	margin-top:	1.58em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H4	{	
	margin-top:	1.33em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H5	{	
	margin-top:	1.17em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
H6	{	
	margin-top:	1em;
	margin-bottom:	.33em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
P	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
BLOCKQUOTE, FIELDSET, FORM, UL, OL, DL, DIR, MENU	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
DT	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
DD	{	
	margin-top:	0;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
UL UL, OL OL, LI ADDRESS, LI DL, LI OL, LI P, LI UL, LI DIR, LI HR, LI MENU, LI PRE, LI H1, LI H2, LI H3, LI H4, LI H5, LI H6, DD ADDRESS, DD DL, DD OL, DD P, DD UL, DD DIR, DD HR, DD MENU, DD PRE, DD H1, DD H2, DD H3, DD H4, DD H5, DD H6	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
LI	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
ADDRESS	{	
	margin-top:	1.58em;
	margin-bottom:	1.58em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
PRE	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	line-height:	1.25em;
	}	
		
HR	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	height:	1px;
	}	
		
DIV, CENTER	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
.subhead	{	
	margin-top:	.75em;
	margin-bottom:	.75em;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
.stb	{	
	margin-top:	2.17em;
	margin-bottom:	.75em;
	padding-top:	2.17em;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	border-style:	solid
	}	
		
.mtb	{	
	margin-top:	3.08em;
	margin-bottom:	.75em;
	padding-top:	3.08em;
	padding-bottom:	0;
	border-top:	.1em;
	border-bottom:	0;
	border-style:	solid
	}	
		
.ltb	{	
	margin-top:	4.34em;
	margin-bottom:	.75em;
	padding-top:	4.34em;
	padding-bottom:	0;
	border-top:	.25em;
	border-bottom:	0;
	border-style:	solid
	}	
		
COL, COLGROUP, TABLE, TBODY, TD, TFOOT, TH, THEAD, TR	{	
	margin-top:	0;
	margin-bottom:	0;
	padding-top:	0;
	padding-bottom:	0;
	border-top:	0;
	border-bottom:	0;
	}	
		
TD, TH	{	
	line-height:	1.33em;
	}	
		
	/* end vertical */	




	/* begin horizontal */	/* 1 - compact */
		
A, ADDRESS, BLOCKQUOTE, CITE, CODE, DD, DEL, DFN,		
DIV, DL, DT, EM, FORM, H1, H2, H3, H4, H5, H6, IFRAME, IMG, KBD,		
LI, OBJECT, OL, P, Q, SAMP, SMALL, SPAN, STRONG, SUB, SUP, UL, VAR, 		
APPLET, B, BIG, CENTER, DIR, FONT, HR, I, MENU, PRE, S, STRIKE, TT,		
U, ABBR, ACRONYM, BDO, BUTTON, FIELDSET, INS, LABEL	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	float:	none;
	clear:	none;
	list-style-position:	outside;
	}	
		
ADDRESS, BLOCKQUOTE, DL, FIELDSET, FORM, OL, 		
P, UL,  DIR, HR, MENU, PRE	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
DIV > P:first-child, BODY > P:first-child, TD > P:first-child	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	text-indent:	0;
	}	
		
H1 + P, H2 + P, H3 + P, H4 + P, H5 + P, H6 + P, DIV + P, P.initial	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	text-indent:	0;
	}	
		
H1	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
H2	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
H3	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
H4	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
H5	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
H6	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
P	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-indent:	0;
	}	
		
BLOCKQUOTE	{	
	margin-left:	1.58em;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
ADDRESS	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
PRE	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
LI	{	
	margin-left:	3.16em;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
DT	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
DD	{	
	margin-left:	1.58em;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}	
		
UL UL, OL OL, LI ADDRESS, LI DL, LI OL, LI P, LI UL, LI DIR, LI HR, LI MENU, LI PRE, LI H1, LI H2, LI H3, LI H4, LI H5, LI H6, DD ADDRESS, DD DL, DD OL, DD P, DD UL, DD DIR, DD HR, DD MENU, DD PRE, DD H1, DD H2, DD H3, DD H4, DD H5, DD H6	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	}
			
HR	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	width:	100%;
	}	
		
CENTER	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	text-align:	left;
	}	
		
COL, COLGROUP, TABLE, TBODY, TD, TFOOT, TH, THEAD, TR	{	
	margin-left:	0;
	margin-right:	0;
	padding-left:	0;
	padding-right:	0;
	border-left:	0;
	border-right:	0;
	float:	none;
	clear:	none;
	}	
		
TABLE	{	
	text-align:	left;
	}	
		
TD	{	
	text-align:	left;
	}	
		
TH	{	
	text-align:	left;
	}	
		
CAPTION	{	
	text-align:	left;
	}	
		
	/* end horizontal */	




	/* begin body box */	/* 5 - 'ninths symmetric' */

BODY	{
	margin-top:	1.58em;
	margin-left:	11%;
	margin-right:	8%;
	margin-bottom:	1.58em;
	padding-top:	0;
	padding-left:	0;
	padding-right:	0;
	padding-bottom:	0;
	border-top:	0;
	border-left:	0;
	border-bottom:	0;
	border-right:	0;
	width:	auto;
	}
	/* end body box */




