/* 
 * Set up general fonts, sizes and colors 
 */
body { font-family : Arial, sans-serif; }

H1, H2, H3, H4, p, a { color : #4D4D4D; }

.intro-header H1 {
	font-size : 16pt;
	font-weight : normal;
	color : #E5E5E5;
}

h2 {
	font-size : 13pt;
	font-weight : normal;
	color : #7B8694;
}
/* For regular div labels */
H4 .div-label {
	font-size : 10pt;
	font-weight : bold;
}

/* For the main page content's title */
#content-header H4 .div-label {
	font-size : 14pt;
	font-weight : normal;
	color : #8C96A2;
	float : none;
	clear : both;
}

.page-description { 
	font-size : 10pt;
	float : none;
	clear : both;
}

a {
	font-weight : bold;
	text-decoration : none;
	color : #4D4D4D;
}

a .link-label {
	font-size : 10pt;
	font-weight : normal;
}

#navigation-links a .link-label {
	font-size : 9pt;
	font-weight : normal;
	color : #E5E5E5;
}

a .text {
	font-size : 8pt;
	font-weight : normal;
}

p .group-description {
	font-size : 10pt;
	font-weight : normal;
}


/* 
 * Set up other general properties like padding/margins
 */
html, body { width : 100%; height : 100%; }

html, body, div, h1, h4, p, a { margin : 0px; padding : 0px; }

.intro-header H1 { padding-top : 10px; margin-left : 10px; }

/* For regular div labels */
#page-content div H4 {
	padding : 10px;
	padding-bottom : 0px;
}

/* For the main page content's div label */
#page-content #content-header H4 {
	padding-bottom : 10px;
	padding-top : 0px;
}

/* special case for Mozilla's main content-header label.
   Mozilla 1.4 needs more room at the top */
#page-content > #content-header H4 { padding-top : 10px; }

/* Needed in IE to get shift+tab to show the active image properly */
a:active {
	border : solid 0px;
}

a img {
	border-width : 0;
	background-repeat : no-repeat;
}

/*
 * to get scrollbars working in both IE and Mozilla
 */
html,body { overflow: auto; }
html>body { overflow: visible; }

/*
 * Set up the body, decorative background, and navigation for the content 
 * pages. 
 * Note: the root page handles its own background and navigation; these
 * settings primarily apply to the content pages
 */
body {
	background-color : #FFFFFF;
	background-repeat : no-repeat;
	background-position : bottom right;
}

#background-image {
	width : 100%;
	min-width : 770px;
	height : 164px;
	background-image : url(graphics/contentpage/background.jpg);
	background-repeat : no-repeat;
	background-position : top left;	
	position : absolute;
	top : 0px;
	z-index : -100;
}

#curve-image { 
	width : 100%;
	height : 164px;
	position : absolute;
	top : 0px;
	background-image : url(graphics/contentpage/backgroundcurve.gif);
	background-repeat : no-repeat;
	background-position : top center;
	margin : 0;
	padding : 0;
}

.intro-header {	background-color : transparent; z-index : 100;}

body, .page{
	min-width : 770px;
	/* since IE doesn't support min-width, try expression */
	width:expression(document.body.clientWidth < 770? "770px": "auto" );
	min-height : 425px;
	height : 100%;
	height : expression(document.body.clientHeight < 425? "425px": "100%" );
}

.page { 
	background-image : url(graphics/contentpage/wordmark.gif);
	background-repeat : no-repeat;
	background-position : bottom left;
	min-height : 475px;
}

#page-content {
	background-repeat : no-repeat;
	background-position : bottom right;
	height : 70%;
}

/* 
 * Lay out the navigation links 
 * (Root page does something similar for its navigation)
 */
#navigation-links {
	position : relative;
	left : 10px;
	top : 5px;
	height : 60;
	width : 98%;
}

#navigation-links a {
	padding-left : 5px;
	padding-right : 5px;
	float : left;
	text-align : center;
}

#navigation-links a img {
	height : 52px;
	width : 52px;
	vertical-align : middle;
}

#navigation-links a .link-label { display : block; margin-top : 5px;}

#navigation-links a .text { display : none; }

#navigation-links a:hover, 
#navigation-links a:focus 
#navigation-links a:active { border-right : 0px;}

/* properties for each of the navigation-links  */
#navigation-links a#overview img { background-image : url(graphics/icons/etool/overview48.gif); }
#navigation-links a#overview:hover img,
#navigation-links a#overview:focus img,
#navigation-links a#overview:active img { background-image : url(graphics/icons/ctool/overview48.gif); }
/*#navigation-links a#overview:active img { background-image : url(graphics/icons/ctool/overview48sel.gif); }*/

#navigation-links a#tutorials img { background-image : url(graphics/icons/etool/tutorials48.gif); }
#navigation-links a#tutorials:hover img,
#navigation-links a#tutorials:active img,
#navigation-links a#tutorials:focus img { background-image : url(graphics/icons/ctool/tutorials48.gif); }
/*#navigation-links a#tutorials:active img { background-image : url(graphics/icons/ctool/tutorials48sel.gif); }*/

#navigation-links a#samples img { background-image : url(graphics/icons/etool/samples48.gif); }
#navigation-links a#samples:hover img,
#navigation-links a#samples:active img,
#navigation-links a#samples:focus img { background-image : url(graphics/icons/ctool/samples48.gif); }
/*#navigation-links a#samples:active img { background-image : url(graphics/icons/ctool/samples48sel.gif); }*/

#navigation-links a#news img { background-image : url(graphics/icons/etool/whatsnew48.gif); }
#navigation-links a#news:hover img,
#navigation-links a#news:focus img,
#navigation-links a#news:active img { background-image : url(graphics/icons/ctool/whatsnew48.gif); }
/*#navigation-links a#news:active img { background-image : url(graphics/icons/ctool/whatsnew48sel.gif); }*/

#navigation-links a#workbench { position : absolute;  right : 0px; top : -35px; text-align : right;}
#navigation-links a#workbench .text { display : none; }
#navigation-links a#workbench img { background-image : url(graphics/icons/etool/wb48.gif); width : 53px; height : 53px;}
#navigation-links a#workbench:hover img,
#navigation-links a#workbench:focus img,
#navigation-links a#workbench:active img { background-image : url(graphics/icons/ctool/wb48.gif); }

/* 
 * Lay out the page title and description 
 */
h1, p { margin-left : 10px; } /* required in mozilla so the page description is properly indented */

/* position the page content so that the page title overlays the bottom
 * of the background image, but make sure the content is always on top 
 * (using z-index) */
#page-content {
	float : none;
	clear : both;
	text-align : center;
	margin-top : 35px;
}

.page > #page-content { margin-top : 50px; }

#page-content p { 
	padding-bottom : 15px; 
	text-align : left; 
	float : none;
	clear : both;
}

#page-content #content-header H4, .page-description {
	text-align : left;
	margin-right : 10px;
	float : none;
	clear : both;
}

