/*
 * 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
 */

/*must add font type if class is being used as a link as well as no-link*/

a {	
	color: #336699;
}

a.toprightnav:active {
	color: #99CCCC;
}

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


a.toprightnavgrey:hover {
	color: #CC0000;
} 
a.toprightnav:hover {
	color: #99CCCC;
} /* font for action on content page usually located on top of page ;ie., select all*/
a.action {  
	color: #333333;
	font-size: 11px;	
} 

a.actionselector {
   
	color: #000000;
	font-size: 11px;
}

 /* because of an intervening link tag, text options were attached to this element instead of the outermost cell */
a.activetab { 
 	color: #000000;
 	font-size: 12px;
  	text-decoration: none;
}

 /* because of an intervening link tag, text options were attached to this element instead of the outermost cell */
a.activetabselected { 
 	color: #2c2c2c;
 	font-size: 12px;
  	text-decoration: none;
}

a.basic { 	
    color: #000000;
}

/* for non-image buttons, for internationalization */
a.button {
	color: #333333;
	text-decoration: none;
}

a.button:active {
	color: 333333;
	text-decoration: none;
}

/* for non-image buttons, for internationalization */
a.button:hover {
	color: 333333;
}

/* for non-image buttons in Multisite, for internationalization */
a.button2 {
	color: #000000;
	font-size : 11px;
	text-decoration: none;	
}

/*main container  actions/links for editing*/
a.conlinkedit {
	text-decoration : none;
	font-size : 11px;
}

a.copyright { 	
	color : #999999;
	font-size : 10px;
} 

a.formtblhead {
   background-color: #cccccc;
	color: #000000;
	font-size: 11px;
	font-weight : 600;
}

/* light coloured heading link for discussion and similar uses - was header_discussion_link in previous versions */
 a.headerlinklight {
	color: 	ffffff;
	font-size: 0.9em;
	text-decoration: none;
}	

/*bold link, ie, advanced search link in pe*/
a.linkfuncoption {  	
	font-size: 11px;
	font-weight: 600;
}

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

/*navtree item or doc, nodes that don't expand*/
a.navtreeitem { 	
    color: #000000;
	font-size : 11px;
	text-decoration: none;
} 
 
 /* simple mechanism to turn text decoration off */  
a.noline {
 	text-decoration: none;
 }

a.popuptext {	
   color: #333333;
	font-size: 11px;	
	text-decoration: none;
}

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

a.popuptext: active {
	color: #cc0000;
}


a.small {	
	font-size: 11px;	
}

a.smallb {	
   color: #000000;
	font-size: 11px;	
}

a.topbar {
  color: #666666;
  font-size: 11px;
  text-decoration: none;
}

/*used as highlighted description above tables*/
.accentcolor {
	color : #cc3300;
	font-weight : 600;
}

 /* bgcolor  for action text usually located on top of page;ie., select all*/
.actionbg { 
	background-color: #efefef;
}

.actionselector {
   background-color: #e9e9e9;
	color: #000000;
	font-size: 11px;
}

.actionselectordis {
background-color: #e9e9e9;
	color: #cccccc;
	font-size: 11px;
	text-decoration: none;
}

b { 
   font-weight : bold;
 }
  
.baselineitalics {
	color: #666666;
	font-size: 11px;
	text-decoration: none;
}

.bgblack { 
	background-color: #000000;
 }
 
 /* basic column background colour for discussions, files, other such tabulated data */
.bgcolumnbasic { 
	background-color: #efefef;
 }
 
.bgwhite { 
	background-color: #ffffff;
 } 
 
/* size input for basic tags such as p and li that do not inherit from td */ 
body {
	background-color : #ffffff;   
	font-family: arial, helvetica, sans-serif;
	font-size: 12px;
	text-decoration : none;		
	margin-left: 0px;
	margin-right: 0px;
	margin-top: 0px;	
}

.bold { 
   font-weight : 600;
 }

.bordergray { 
	background-color: #e9e9e9;
 }

.bottombardark { 
	background-color: #003366;
 }
  
.bottombarlight { 
	background-color: #3399cc;
 }

.bottombarshadow { 
	background-color: #000000;
 }

.breadcrumbs{ 
color: #336699;
font-weight: 600;
 }

.breadcrumbs2{ 
color: #ffffff;
font-size: 11px;
 } 

/*navigation buttons, not form buttons*/ 
.buttons {
    background-color: #efefef;
    color: #000000;
	font-family: Verdana, Arial, Helvetica, sans-serif;	
	font-size: 10px;
	text-decoration: none;	
}

/*active navigation button, not form buttons*/ 
.buttonon {
    background-color: #dedede;
    color: #000000;
	font-family: Verdana, Arial, Helvetica, sans-serif;	
	font-size: 10px;
	text-decoration: none;	
} 

/* these button styles are for the textual buttons intended to replace image constructs for internationalization */ 
.buttontxt {
	color: #333333;
	font-family: verdana, helvetica, arial, sans-serif;
	font-size: 10px;
	font-weight: 600;
	text-decoration: none;
}

.code { 
   font-family: Courier New, Courier, mono;   
   font-size: 12px;
 }
 
  /* font for regular content text */
.comments { 	
	font-size: 11px;	
	background-color: #efefef;
}

/*main container header*/
.conhead { 
color: #cc3300;
font-weight: 600;
text-decoration : none;
 }
 
 /*main container data labels*/
.conlabel { 
background-color: #efefef;
 } 
 
/*main container data labels in bold*/
.conlabelbold { 
background-color: #e1e1e1;
font-weight: bold;
 }  
 
/*replacing sidemenu_boldright moving forward*/
.conrbold {
	color: #000000;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight : 600;
	text-decoration : none;
}

/*header for right hand container*/
.conrhead {
	color: 000000;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-weight: 800;
}

/*main container table header*/
.contblhead {  
   background-color: #cccccc;
	color: #333333;	
	font-size: 11px;	
    font-weight: 600;
}

.content{ 
font-family: arial, helvetica, sans-serif;
	font-size: 12px;	
 }

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

/* added for text representing disabled functions. */
.contentdisabled {
	color: #cccccc;
}

/* font for bold text */
.contentemphasis {
	color: #000000;
	font-weight : 600;
}

/* used text reminding user that there is required content */
.contentrequired {
	color: #b4b4b4;
	font-weight: 500;
}

.copyright { 
color : #999999;
	font-size : 10px;
}

/*black copyright*/
.copyrightb { 
color : #000000;
	font-size : 10px;
}

dd { 
font-family: arial, helvetica, sans-serif;
	font-size: 12px;	
margin-left: -1px;
 }
 
.dialgbxshadow2 {  
	background-color: #848484;
}

.dialogueboxbg {  
	background-color: #d2d2d2;
}

/*background for login pages*/
.dialogueboxbg2 {  
	background-color: #999999;
}

.dialogueboxborder { 
	background-color: #333333;
 }
 
.dialogueboxhighlight {
	background-color: #efefef;
}

 .dialogueboxmedium { 
	background-color: #8b8b8b;
 }
 
 .dialogueboxtitle {	   
	font-size: 14px;
	font-size: 11px;	
	font-weight : bold;
}

/*text for disabled buttons*/
.disable{ 
color: #999999;
font-family: verdana, helvetica, arial, sans-serif;
font-size: 11px;  
	font-weight: 600;
	text-decoration: none;
 }
 
div{ 
font-family: arial, helvetica, sans-serif;
 } 
 
/*used to affect right margin*/ 
div.marginrt{ 
	clear: right;
	float: right;
	width: 7px;
 }  
 
div.margins { 
float: left;
margin-left: 7px;
margin-top: 25px;	
margin-right: 7px;
 }   

/*for pages with button navigation on top*/ 
div.margins20 { 
float: left;
margin-left: 7px;
margin-top: 20px;	
margin-right: 7px;
 }    
 
 /*adds 10 px padding*/
 div.pad10{ 
 padding: 10px; 
  }

.divider {
	background-color: #f6f9f0;
}

dl{  
font-family: arial, helvetica, sans-serif;
font-size: 12px;   
	}

/*removes default bottom margin, doesn't work in NS4.7x */ 
dl.data { 
margin-bottom: -1px;
 }  

.docbold {
	color: #000000;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 11px;       
	font-weight : 600;
}

/*for applet download splash page*/
.download{ 
background-color: #efeeee;
 }

.errormsg {
	color : #cc0000;	
} 
 
/*
colored font
description about the user status. eq. "subscriptions are updated"
it's usually on the upper part of the pages
*/
.footerbold {
	color : #a4a4a4;
	font-size: 90%;
	font-weight: 600;
}

/*the * symbol indicate the required field */
.footerboldcolored {
	color : #ff6500;
	font-size: 90%;
	font-weight: 600;
}

.footindicator {
	color: #999999;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 11px;       
	text-decoration: none;
}

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

/*move to design_pe*/
.formlabel {
	color: #000000;
	font-size: 11px;
	font-weight : 600;
	text-decoration : none;
}

.formtblhead {
   background-color: #cccccc;
	color: #000000;
	font-size: 11px;
	font-weight : 600;
}

.greymedium {
	background-color: #dedede;
}

.grayfold {
	color: #cccccc;	
	text-decoration: none;
	font-size: 15px;
}

/*Note: remove this note if using this style or will be deleted*/
	/* Currently used in cq_deflect_login_err.html - should be renamed to something that has less descriptive name */
.headerblue {
	color: #006699;	
	font-weight : 600;
	text-decoration: none;
}

/*used in cc for frameset display*/ 
.headerinframes {  
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 10px;	
	font-weight: 600;
	margin-bottom: 2px;
	margin-top: 0px;
}

 /*font for page header except for article pages, (see header_of_article)*/
.headerlarge {
	color: #333333;
	font-size: 160%;
	font-weight : 400;
	text-decoration: none;
}

/*main header for frame navigation, ie, clearcase merge files*/
.headermain {  
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 17px;	
	font-weight: 600;
}

/* header element for form tables containing mid-size fixed height text */
.headermedlist {
	font-size: 11px;
}

/*fornt for steps title in forms*/
.headerofsteps { 
	color: #666666;
	font-size: 17px;
	font-weight: bold;
}

.headerofstepsnon { 
	color: #666666;
	font-size: 17px;
	font-weight: bold;
	text-decoration: none;
}

/*use header1 instead*/
.h1 {  
	font-family: arial, helvetica, sans-serif;
	font-size: 22px;	
	font-weight: 800;
}

/*to replace h1 and contentheader large*/
.header1 {  
	font-family: arial, helvetica, sans-serif;
	font-size: 22px;	
	font-weight: 800;
}

/*document root folder*/
.h1root{  
	color: #999999;
	font-family: arial, helvetica, sans-serif;
	font-size: 22px;	
	font-weight: 400;
}


/*used in cc, cq, sl*/ 
h1 {  
	color: #333333;
	font-family: arial, helvetica, sans-serif;
	font-size: 17px;	
	font-weight: 600;
}

//*use header2 instead*/
.h2 { 
	font-family: arial, helvetica, sans-serif;
	font-size: 19px;
	font-weight: 400;	 	
}

/*headers within page*/
.header2 { 
	font-family: arial, helvetica, sans-serif;
	font-size: 19px;
	font-weight: 400;	 	
}

i {
	font-style : italic;
}

.iconborder { 
	background-color: #dedede;
}

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

input.input135 {
	width: 135px
} 

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

input.px25 {
    width: 25px;
}

input.px45 {
    width: 45px;
}

/*
1,business standard multiline input box 
2,this style only activate in IE
*/
input.px85 {
    width: 85px;
}

input.px135 {
    width: 135px;
}

input.px155 {
    width: 155px;
}

input.px230 {
    width: 230px;
}

input.px305 {
    width: 305px;
}

.leftmenu {
	background-color: #999999;
}

.leftmenubullet { 
background-color: #999999;
 }

.leftmenubulletactive { 
background-color: #cd3301;
 }
	

.leftnavhead {
	color: #000000;
	font-size: 13px;	
	font-weight: bold;	
} 

.leftnavlabel {
color: #000000;
font-weight : 600;
font-size: 11px;
 }

.lightgray { 
background-color: #e4e4e4;
 }
 
.menubar {
  color: #ffffff;
  font-family: arial, helvetica, sans-serif;
  font-size: 11px;
  font-weight: 400;
  text-decoration: none
}

/*menubar within top of content page  */
.menubarmid{ 
font-size: 11px;
  font-weight: 600;
  text-decoration: none
 }

/*
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
*/
.menubaremphasis {
  color: #ffffff;
  font-family: arial, helvetica, sans-serif;
  font-size: 11px;
  font-weight: 600;
  text-decoration: none
}

.menubar:hover {
  color: #ffffff
} 
 
.midbarbg { 
	background-color: #ffffff;
 } 
 
/*topnav*/ 
.midbarlight { 
	background-color: #3399cc;
 }
 
/*dark color between tabs*/
 .midbardark { 
	background: #003366;
 }
 
 /*topnav*/ 
 .midbarmed { 
	background-color: #006699;
 }
 
 /*background  of  tabs*/ 
 .midbarmedium { 
	background: #006699;
 }
 
 .midbarshadow { 
	background-color: #666666;
 } 
  
/*replacing sidemenu_boldleft moving forward*/
.navleftbold {
	color: #000000;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight : 600;
	text-decoration : none;
}

/*left nav submenu*/
.navleftsub {
	color: #676767;
	font-family: arial, helvetica, sans-serif;
	font-size: 11px;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}
 
/* because of an intervening link tag, text options were attached to this element instead of the outermost cell */
.nonactivetab {
	color: #b4b4b4;
	font-size: 12px;
	text-decoration: none;
}

/*notes/ description of icon */
.notes{  
 font-size: 11px;
 font-weight : 400;	
}

p {
	font-family: arial, helvetica, sans-serif;
	font-size: 12px;	
}

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

 /*font for previous & next in pagination*/
.pagesteps { 
	color: #676767;	
	font-size: 11px;
	text-decoration: none;
 }

.pop {
	font-family: arial, helvetica, sans-serif; 
	font-size : 12px;
	font-weight : 200;
	text-decoration: none;
}

.popbackground {

	background: #d6d3ce;
}

.poph1 {
	font-size: 16px;
	font-weight : bold;
}

.popleftmenu {
	background: #f0f0f0;
	border: thin solid cccccc; 
	left: 210px; 
	padding: 2px;
	position:absolute; 
	top: 25px;
	visibility: hidden; 
	width:75px;
	z-index:10;	
 }

 /* use popleftmenu instead of this one*/
.popupborder {
	background: #f0f0f0;
	border : thin solid cccccc;
	padding : 2px;
}

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

.projectatt { 
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 12px; 
	font-weight: 600;
	text-decoration: none; 
	color: #cd3301;
}

/*date associated with article ratings*/
.ratingsdate
{
	color: #336699;
	font-size : 11px;
	text-decoration : none;
	text-align: right;
}

select {
    font-family: arial, helvetica, sans-serif;	
	font-size: 11px;
}

select.selpx144 {
    width: 144px;
}

/* .sidemenu_boldleft replace with .leftmenubold*/ 

/* .sidemenu_boldleft_selected replace with .leftmenuactive*/

/* .sidemenu_bullet_colored replace with .leftmenubulletactive*/
 
/*.sidemenu_bullet_grey replace with leftmenubullet*/

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

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

.sidemenustandard {
	color: #676767;
	font-size: 11px;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}

.sidemenustandardselected {
	color: #cc0000;
	font-size: 11px;
	font-weight : 400;
	line-height : 135%;
	text-decoration : none;
}

.smalltext {
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
	color: #000000;
}

.tableheader { 

	color: #000000;	
	font-size: 13px;	
    font-weight: bold
}


/* font for regular content text */
td {
	font-family: arial, helvetica, sans-serif;
	font-size: 12px;	
}

/* because of an intervening link tag, text options were attached to a similar element for links */
td.activetab { 
 	background-color: #c4c4c4;
  }
 
/* because of an intervening link tag, text options were attached to a similar element for links */
td.activetabselected { 
 	background-color: #dddddd;
  }
  
 /* these button styles are for the textual buttons intended to replace image constructs for internationalization */ 
td.buttonbody {
	background-color: #d4d4d4;
}

td.buttonhighlight {
	background-color: #ffffff;
}

td.buttonshadow {
	background-color: #6d6d6d;
}
 
/* design element rarely used for line colour in certain decorative tables */
td.design1 {
	background-color: #d4d4d4;
}
 
/*design element simulating a dimensional boundary to a table */
td.dividerdimens {
	background-color: #bdbdbd;
}
 
 /* because of an intervening link tag, text options were attached to a similar element for links */
td.nonactivetab {
	background-color: #efefef;
}

/* data within a table highlighted in gray*/
td.tblhighlt { 
   background-color: #dedede;
   padding: 2px;
 }
 
 td.tblhighlt1 { 
   background-color: #dedede;
 }
 
/* data within a table highlighted in light gray*/
td.tblhighlt2 { 
   background-color: #efefef;
 } 

/*dark grey cell background and bold text */
.tddarkbold {
	background-color: #cccccc;	
	font-weight : 600;
}

.tdlight {
	background-color: #efefef;
	padding: 2px;
}

.tdlight1 {
	background-color: #efefef;
}
 
 
textarea {
    font-family: arial, helvetica, sans-serif;	
	font-size: 11px;
}

textarea.px380{
 width: 380px; 
 }

.texterrormsg {
	color : cc0000;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 110%;
	font-weight: bold;
}

.textgray {  
	color: #999999;	
}

.topbardivider { 
	background: #3399cc 
}

.topbardividergreyed { 
	background: #add6eb
 }  

.topbarseparator {
  color: #cc3300;  
  font-size: 11px;
  text-decoration: none;
} 
 
.topframebg {
	background-color: #d2d2d2;
}

.topframebggreyed {
	background-color: #ededed;
}

.topframehighlight {  
	background-color: #b6b5b5;
}

.topframehighlightgreyed {  
	background-color: #e1e1e1;
}

.topframehighlight2 { 
	background-color: #efefef;
}

.topframehighlight2greyed { 
	background-color: #f9f9f9;
 } 
 
.topframelogobg {  
	background-color: #006699;
}

.topframelogobggreyed {  
	background-color: #99c2d6;
}

.topframeshadow {  
	background-color: #848484;
}

.topframeshadowgreyed {  
background-color: #cecece;
}

.topleftnav {	
    color: #000000;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
}

.topleftnavbold { 
	font-family: verdana, brial, helvetica, sans-serif;
	font-size: 10px; 
	font-weight: 600;
	text-decoration: none; 
}

.topleftnavboldgreyed { 
	color: #999999;
	font-family: verdana, arial, helvetica, sans-serif; 
	font-size: 10px; 
	font-weight: bold;
	text-decoration: none; 
}

.topleftnavgreyed {	
	color: #999999;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
	}

.toplinecolor { 
	background-color: #006699;
 }	
	
.toprightnav {
	color: #ffffff;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
}


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

 /* this was initially declared the same colour as the class topframe bg but because it lies in a different functional area, has been recreated here  */
tr.bgmidframe {
	background-color: #d2d2d2;
}

td.sidemenubulletgrey {
	background-color: #999999;
}


td.sidemenubulletcolored {
	background-color: #cd3301;
}

/*list-style-image: url(images/downbutton.gif);*/
ul {	
	list-style-type: square;
}
 

.vob {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 150%;
	color: #006699;
	text-decoration: none;
	font-weight: 400;
}

.vobbottom {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	text-decoration: none;
}
