/*
 * 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: 11px;
	text-decoration : none;		
	margin-left: 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 { 	
	background-color: #efefef;
	font-size: 11px;	
}

/*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, use for links and non-links*/
.conrbold
{
	color: #000000;	
	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: 70%;	
    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-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;
}

.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-size: 90%;
	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-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: 16px;
	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;
} 

/* 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.input135 {
	width: 135px
}

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-weight: bold;	
	font-size: 13px;	
} 

.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:hover {
  color: #ffffff
} 

/*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-size: 11px;
	font-weight : 600;
	text-decoration : none;
}

/*left nav submenu*/
.navleftsub
{
	color: #676767;
	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-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-size: 10px;
	text-decoration: none;
	color: #000000;
}

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

/* font for regular content text */
/* 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 {	
    font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	text-decoration: none;
	color: #000000;
}

.topleftnavbold { 
	font-family: verdana, arial, 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 
{
	color: #000000;
	font-family: verdana, arial, helvetica, sans-serif;
	font-size: 10px;
	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.sidemenu_bullet_grey {
	background-color: #999999;
}


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

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

.vob
{
	font-size: 150%;
	color: #006699;
	text-decoration: none;
	font-weight: 400;
}

.vobbottom
{
	font-size: 14px;
	text-decoration: none;
}
