/*
 * Copyright (c) 2005, 2006 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 *
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * IBM Corporation - initial implementation
 */

a
{
    color: #336699;
}
.accentcolor
/*used as highlighted description above tables*/
{
	color : #cc3300;
	font-size : 1em;
	font-weight : 600;
	text-decoration: none;
}
a.toprightnav:active {
	color: #99CCCC;
}

a.toprightnavgrey:active {
	color: #CC0000;
}

a.toprightnavgrey:hover {
	color: #CC0000;
} 
a.toprightnav:hover {
	color: #99CCCC;
} a.breadcrumbs
/*linked breadcrumbs*/
{
	color: #ffffff;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight: 400;
	text-decoration: underline

a.breadcrumbs:hover
{
  color: #ffffff
}


a.link_container_editor
/*EDIT link under container banner*/
{
	font-size: 11px;
	text-decoration : none;
}


a.link_byline
/*written by XX author in content*/
{
	font-size: .9em;
	color: #336699;
}


a.link_func_option
/*Advanced link in search container*/
{
	font-weight: bold;
}


a.linktyped
/*view all link under container*/
{
	font-size: 11px;
}


a.menubar_link
/*
white font for the text in the table header, usually in the 1nd level of the table header if there are 2
1st level: regular 
2nd level: bold
*/
{
	color: #ffffff;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight: 400;
	text-decoration: underline
}


a.menubar_link:hover
{
	color: #ffffff;
}

a.navtree
{ 	
    color: #000000;
	font-size : 11px;
	font-weight: 600;
	text-decoration: none;
} 

a.project_nav
/*project explorer menubar option links in left nav*/
{
	color: #006699;
	font-family : arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight : 600;
	text-decoration: underline;
}
a.project_navtree
/*topNav tree submenu*/
{
  color: #000000;
  font-family: arial, helvetica, sans-serif;
  font-size: .9em;
  text-decoration: none;
}
a.topbar
/*topNav*/
{
  color: #666666;
  font-family: arial, helvetica, sans-serif;
  font-size: .9em;
  text-decoration: none;
}


body
/*original body background setup*/
{
	font-family: arial, helvetica, sans-serif;
	font-size: 9px;
	background-color : ffffff;
}


.border_decoration
/*dotted line border of tables in content*/
{
	border : thin dotted #666666;
	float : right;
	margin-bottom : 15px;
	margin-left : 15px;
	padding: 5px;
}


.bottombar_dark
/*background color behind breadcrumbs*/
{
	background: #003366;
}


.bottombar_light
/*thin line between dropdown menu & breadcrumb bar*/ 
{
	background: #3399cc;
 }


 .bottombar_medium
 /*thin line between dropdown menu & shadow color */
{ 
	background: #006699;
 }


 .bottombar_shadow
  /*dark lines under breadcrumbbar &  dropdownmenu bar */
{
	background: #000000;
}


code
/*code asset in content*/
{
	color: #676767;
}

.code2
/*indent code asset in content*/
{
   	margin-left : 15px;
	margin-right : 15px;
}

.copyright
/*copyright line at the bottom of the page*/
{ 
	color : #999999;
	font-family : arial, helvetica, sans-serif;
	font-size : 86%;
 }
 
.content_basic
/*
font for regular content texts
font for regular container texts
font for regular form texts
*/
{
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 1em;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}


.content_basic_emphasis
/*
bold font for regular content texts
bold font for regular container texts
bold font for regular form texts
*/
{ 
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	line-height : 135%;
	text-decoration : none;
 }


 .content_colored
 /*content*/
{
	color: #336699;
	font-family : arial, helvetica, sans-serif;
	font-size : 1em;
}


 .content_container
 /*bottom margin yield the space between byline & paragraph*/
 {
	margin-bottom : 15px;
}

 .content_diagram
 /*diagram description, eg." figure 1..."*/
 {
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: 90%;
	font-style : italic;	
	}

.header_of_article_table
/*colored table header in content*/
{
	color: #336699;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-style : italic;
}

 .content_emphasis
 /*bold font in content*/
 {
	color: #000000;
	font-weight : 600;
}


.content_grey_mid
/*welcome container*/
{
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: 1em;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}

.content_grey_mid2
/*font in floating box*/
{
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 100%;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}

 .content_header
 /*header of content paragraph*/
 {
	color: #006699;
	font-family : arial, helvetica, sans-serif;
	font-weight : 600;
	text-decoration: none;
}

 .content_header_large
 /*font for page header except for article pages, (see header_of_article)*/
 {
	color: #333333;
	font-family : arial, helvetica, sans-serif;
	font-size: 1.8em;
	font-weight : 400;
	text-decoration: none;
}


 .content_header_colored
  /*colored title of the page used with content_header_large*/
 {
	color: #676767;z
	text-decoration: none;
}


.content_reference
/*fornt for reference, eg. "see ...."*/ 
{
	font-style : italic;
	font-size: 1em;
}

 .content_right
  /*floating table on the right of the content*/
{
	float : right;
	margin-left : 5px;
	margin-right : 10px;
	margin-top : 10px;
	width: 172;
}

 .content_right_table
 /*inner table of content_right*/
{
	width: 100%;
}


 .content_small
 /*smaller font than content_basic*/
{
	font-family : arial, helvetica, sans-serif;
	font-size : .9em;
	text-decoration : none;
}


 .content_small_colored
 /*small blue font*/
{
	color : #999999;
	font-family : arial, helvetica, sans-serif;
	font-size : .9em;
}


 .content_small_colored_2
 /*date in rating bar*/
{
	color: #336699;
	font-family : arial, helvetica, sans-serif;
	font-size : .9em;
	font-weight: 400;
	text-decoration : none;
}


.content_small_colored_3
/*average in rating bar*/
{
	color: #336699;
	font-family : arial, helvetica, sans-serif;
	font-size : .9em;
}


.content_emphasis
/*bold font*/
 {
	font-weight : 600;
	font-size : .9em;
}


.content_subheader
/*bold font bigger than content_basic*/
{
	font-family: arial, helvetica, sans-serif;
	font-weight: bold;
	font-size : 1em;
}


.content_subheader_2
/*black content title in containers*/
{
	color: #000000;
	font-size: 1em;
	font-weight: 500;
}


.discussion_content
/*black texts in tables*/
{
	color: 000000;
	font-size: .9em;
	margin-left: 5px;
}



.discussion_content_emphasis
/*bold texts in tables*/
{
	color: 000000;
	font-size: .9em;
	margin-left: 5px;
	font-weight : 600;
}


 .discussion_description
 /*black texts in tables for descriptions*/
 { 
	color: 666666;
	font-size: .9em;
	margin-left: 5px;
  }


.editornote
/*not used*/
 { 
  font-style: italic
 }
 
 /*the following two classes are used expressly in the knowledge_announcements_view*/
 
 .floatclear
{
	padding: 5px;
	padding-bottom: 0px;
	padding-right: 0 px;
	width: 100%;
}

.floatgrey
{
	background-color: #efefef;
	padding: 5px;
	width: 65px;
}


.footnote
/*foot note at the bottom of content */
{ 
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
 }


.foot_starindex
/*the * symbol indicate the required field */
{
	color : cc0000;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 8pt;
	font-weight: bold;
}


.foot_description
/*
colored font
description about the user status. eq. "subscriptions are updated"
it's usually on the upper part of the pages
*/
{
	color : #ff6500;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 8pt;
	font-weight: bold;
}


.foot_text
/*the descriptions for * symbol , eg. required field*/
{
	color: #b4b4b4;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 8pt;
	font-weight: bold;
}


.foot_title
/*foot index aside the page header, eg. * symbol */
{
	color : #ff6500;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 8pt;
}
.formfield_desc 
/*form object description or instruction*/
{
color: #333333; 
font-family: arial, helvetica, sans-serif; 
font-size: 1em; 
font-weight : 400; 
 font-style: italic
}
.formfield_title
/*form object title*/
{
	font-family: arial, helvetica, sans-serif;
	font-weight: bold;
	font-size : 1em;
}
.flowchart
/*not used*/
{  
	font-size: 8pt; color: #666666
}

.grey_dark
/*dark grey cell background*/
 {
	background-color: #cccccc;
}

.grey_medium
/*medium grey cell background*/
 {
	background-color: #dedede;
}

.header_discussion_link
/*
same as menubar_link
white font for the text in the table header, usually in the 1nd level of the table header if there are 2
1st level: regular 
2nd level: bold
*/
 {
	color: 	ffffff;
	font-size: 0.9em;
}

.header_discussion_linkdk
{
	color: 	000000;
	font-size: 0.9em;
}

.header_discussion_title
/*
table titles
white bold font for the text in the table header, usually in the 2nd level of the table header if there are 2
1st level: regular 
2nd level: bold
*/
 {
	color: ffffff;
	font-size: .9em;
	font-weight: 600;
	margin-left : 5px;
}


.headerb
/*not used*/
{
    color: #ff6600;
    font-family: arial,verdana,helvetica,sans-serif;
    font-size: 12pt;
    font-weight: bold;
}


.header_of_container
/*colored font for the title of the container eg. Feature*/
{
	color: #cd3301;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 1em;
	font-weight: bold;
	text-decoration : none;
}


.header_colored
/*colored header in login page*/
{
	color: #cc3300;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 1em;
	font-weight: bold;
}


.header_of_article
/*colored article header*/
{
	color: #cd3301;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 1.23em;
	font-weight: bold;
}

.header_of_article2
/*article header*/
{
	color: #333333;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 18px;
	font-weight: 500;
}

.subhead1_of_article2
/*article second level head*/
{
	color: #333333;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13px;
	font-weight: bold;
}

.subhead2_of_article2
/*article third level head*/
{
	color: #336699;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 13 px;
	font-weight: bold;
	margin-bottom: 5px;
}

.subhead3_of_article2
/*article 4th level head*/
 {
	font-weight : 600;
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
}

.header_of_steps
/*fornt for steps title in forms*/
{ 
	color: #a4a4a4;
	font-family: arial, helvetica, sans-serif;
	font-size: 12pt;
	font-weight: 600;
}


.header_of_sitemap
/*header of sitemap page*/
{
	color: #6699cc;
	font-family: arial, helvetica, sans-serif;
	font-size: 12pt;
	font-weight: 600;
	text-decoration : none;
}


.header_of_sitemap:hover
{
	color: #cc0000;
	font-family: arial, helvetica, sans-serif;
	font-size: 12pt;
	font-weight: 600;
	text-decoration : none;
}


.header_of_table
/*header of tables in content usually has a background color assigned to the cell*/
{
	color: #ffffff;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 14px;
	font-weight: bold;
}

.header_right
{
	color: 000000;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: 800;
}

.imagecaption
/*image caption in content page*/
{ 
 font-size: 9pt; color: #003366
 }


.sidebar 
/*not used*/
{  
	background-color: #f4f4f4;
}


input
/*font size setup shown in the input box which is inherited by inputXX*/
{
	font-size: 11px;
	font-family : Arial, Helvetica, sans-serif;
}


input.input25
{
    width: 25px
}


input.input45
{
    width: 45px
}


input.inputmax50
/*
1,business standard multiline input box 
2,this style only activate in IE, but NS
*/
{
	width: 360px;
}


input.input85
{
    width: 85px
}


input.input135
{
    width: 135px
}


input.input155
{
    width: 155px
}


input.input230
{
    width: 230px
}


input.input305
{
    width: 305px;
}


.menubar
/*
white font for the text in the table header, usually in the 1nd level of the table header if htere are 2
1st level: regular 
2nd level: bold
*/
{
	color: #ffffff;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight: 400;
	text-decoration: none;
}


.menubar:hover
{
  color: #ffffff
}


.menubar_bg
/*background of table header*/
{   
background-color:#003366; 
}


.menubar_emphasis
/*
1,bold font for the last item of the breadcrumbs
2,bold font of table header with menubar_bg(blue) as background color 
3,bold text on colored background eg. Logged In
*/
{
  color: #ffffff;
  font-family: arial, helvetica, sans-serif;
  font-size: 11px;
  font-weight: 600;
  text-decoration: none
}

.menubar_emphasisdk

{
  color: #000000;
  font-family: arial, helvetica, sans-serif;
  font-size: 11px;
  font-weight: 600;
  text-decoration: none
}


.midbar_bg
/*the light point above the tabs */
{
	background: #ffffff;
}


.midbar_dark
/*dark color between tabs*/
{ 
	background: #003366;
 }


.midbar_light
/*
1,light color on the left hand side of the tabs
2,light color above tabs
*/
{ 
	background: #3399cc;
 }

 
 .midbar_medium
 /*background  of  tabs*/
{ 
	background: #006699;
 }

/*shadow color between tabs*/
 .midbar_shadow
{
	background: #666666;
}


.page_number
/*font for the numbers in pagination library*/
{
	color: #676767;
	font-weight : 400;
}


.page_steps
/*font for previous & next in pagination*/
{ 
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 400;
	line-height : 135%;
	text-decoration: none;
 }


 .pageheader
 /*same as content_header_large*/
{
	color: #006699;
	font-family : arial, helvetica, sans-serif;
	font-size: 115%;
	font-weight : 600;
	text-decoration: none;
}


 .pageheader_colored
 /*colored title of the page used with content_header_large*/
{
    color: #999999;
	font-family: arial, helvetica, sans-serif;
    font-size: 16pt;
    font-weight: 400;
}

.popup_border
{
	background: #f0f0f0;
	border : thin solid cccccc;
	padding : 2px;
}

.popup_text
{
	color: #333333;
	font : 11px;
	text-decoration : none;
}

.popup_text : active
{
	color: #cc0000;
}

.popup_text : hover
{
	color: #cc0000;
}

.project_menu_border1
/*project explorer menu options background style in left nav*/
 {
	border-top : 1px solid #cccccc;
	border-right : 1px solid #cccccc;
	background : #efefef;
}
.project_menu_topborder
/*project explorer menu options background style in left nav*/
 {
	border-top : 1px solid #cccccc;	
	background : #efefef;
}
.project_nav
/*field titles for project explorer menu located in left nav*/
{
	color: #006699;
	font-family : arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight : 600;
}

select
/*font size setup shown in the select box which is inherited by inputXX*/
{
	font-size: 11px;
	font-family : Arial, Helvetica, sans-serif;
}


select.input25
{
    width: 25px
}


select.input45
{
    width: 45px
}


select.input85
{
    width: 85px
}


select.input155
{
    width: 155px
}


select.input230
{
    width: 230px
}


select.input305
{
    width: 305px;
}

/* All shim classes are for spacing elements used to control layout, especially in older browsers that don't understand margins and padding */

.shim3x1px
{
	font-size: 1px;
	height : 1px;
}

a.sidemenu_header
/*not used?*/
{
    color: #666666;
    font-family: arial, helvetica, sans-serif;
    text-decoration: none;
    font-weight: bold;
}


a.sidemenu_header:hover
/*not used?*/
{
  color: #cc0000
}


.sidemenu_boldleft
/*
1,bold font for the items in search container
2,bold lefNav unselected
*/
{
	color: #000000;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	text-decoration : none;
}


.sidemenu_boldleft_selected
/*bold font lefNav selected*/
{
	color: #CC0000;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	text-decoration : none;
}


.sidemenu_boldright
/*
1,bold font for the items in right hand side
2,same as sidemenu_boldright
*/
{
	color: #000000;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	text-decoration : none;
}


.sidemenu_boldright:hover
{
	color: #cc0000;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	text-decoration : none;
}


.sidemenu_boldright_coursecatalog
/*not used*/
{
	color: #639602;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 600;
	text-align: right;
}


.sidemenu_standard
/*leftNav stadard*/
{
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}


.sidemenu_standard_selected
/*leftNav selected*/
{
	color: #CC0000;
	font-family: arial, helvetica, sans-serif;
	font-size: .9em;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}



td
{
	font-family: arial, helvetica, sans-serif;
	font-size: 75%;
}



 td.bg_discussion_1
 /*same as grey_medium*/
{
	background-color: #dedede;
}


td.bg_discussion_2
 /*same as grey_light*/
{ 
	background-color: #efefef;
 }
 
td.content_cell
/*for eliminate table structure & keep the cellpadding in content*/
 {
	padding: 5px;
}


td.divider
/*thin line divide the page columns*/
 {
	background-color: #f6f9f0;
}

td.divider2
/*thin line divide the page columns - used in the viewframe frame page*/
 {
	background-color: #cccccc;
}


.grey_dark
/*dark grey cell background*/
 {
	background-color: #cccccc;
}

td.grey_medium2
/*medium grey cell background w/ cell padding*/
 {
	background-color: #dedede;
	padding: 5 px;
}

td.grey_light2
/*light grey cell background w/ cell padding*/
 {
	background-color: #efefef;
	padding: 5px;
}

.grey_light
/*light grey cell background*/
 {
	background-color: #efefef;
}


td.cellcolor_light
/*light cell background color for specific color scheme*/
 {
	background-color: #99cc00;
}


td.cellcolor_dark
/*dark cell background color for specific color scheme*/
{
	background-color: #639c00;
}


td.cellcolor_white
/*white cell background color*/
 {
	background-color: #ffffff;
}


td.sidemenu_bullet_colored
/*bullet color for the leftNav*/
 {
	background-color: #cd3301;
}


td.sidemenu_bullet_grey
/*grey bullet color for the leftNav*/
 {
	background-color: #999999;
}


textarea
/*font size setup shown in the multiline textarea which is inherited by inputXX*/
{
	font-size: 11px;
	font-family : Arial, Helvetica, sans-serif;
}


textarea.textarea45
{
    width: 45px
}


textarea.inputmax50
/*
1,business standard multiline input box 
2,this style only activate in IE, but NS
*/
{
	width: 360px
}


textarea.input190
{
    width: 190px
}


textarea.input230
{
    width: 230px
}


textarea.input350
{
    width: 350px
}


.topbar_separator
/*separator of the topNav*/
{
  color: #cc3300;
  font-family: arial, helvetica, sans-serif;
  font-size: .9em;
  text-decoration: none;
}


.topline_color
/*the thin color line on the top of the browser window*/
{ 
	background: #006699;
 }
 
 /* borrowed styles from common.css to be trimmed later */
 
 .topframebg 
{  background-color: #d2d2d2
}

.topframebglight 
{  
background-color: #b6b5b5
}

.topframebgdark 
{  
background-color: #848484
}

.topframebglight2 
{ 
 background-color: #efefef
 }
   
 .topframelogobg 
{  
background-color: #006699
}

.topleftnav
{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
}

.topleftnavbold 
{ 
font-family: Verdana, Arial, Helvetica, sans-serif; 
font-size: 10px; 
text-decoration: none; 
font-weight: bold;
}

.toprightnav
{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #ffffff;
	text-decoration: none;
}

.toprightnavgrey
{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
	text-decoration: none;
}

.verticalblue
 { 
 background: #3399cc 
 }

 .whitebg
{ 
 background-color: #ffffff;
 }
