/* 
 * 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;
}

#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 { 
	min-height : 475px;
	background-image : url(graphics/contentpage/background.jpg);
	background-repeat : repeat-x;
	background-position : top left;
}

#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 : 60px;
	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;
}

