/*
  $Revision: 1.1 $ $Date: 2005/12/22 18:30:51 $
  CSS for openoffice.org homepage
	Basicly you can find standard tags first, followed by classed, and then more specific
*/

/*-------------------- Exceptions on standard css -----------------------*/
#leftcol {
	display: none;
	}
#bodytd {
	padding: 0px; /* no content padding for homepage */
	width: 100%;
	margin: 0px;
}
#bodycol {
  padding: 0px!important;
	margin: 0px;
	width: 100%;
}
/*-------------------- Standard Button Design ---------------------------*/
.button {
  display: block;
	width: 193px;
  margin: 0px;
  margin-bottom: .5em;
  padding: 0px;
  color: #505256;
	background: #C4DAE9 no-repeat;   
  font-size: 1.3em; 
	font-weight: bold;
	text-align: left;
	text-decoration: none;
	text-transform: lowercase;
}
.button:hover {
  color: #395073;
	background-color: #E1ECF4;
	cursor: pointer; 
}
.button span {
  display: block;
	width: 163px;
	margin: 0px;	
	padding-left: 30px;
	padding-top: 1em;	
	height: auto!important; /* IE 'hack' for min-height */
	height: 70px;
	min-height: 70px;
  background: url("/branding/images/buttonsmall_bottom.gif") no-repeat bottom right;
}
.button span small {
  font-weight: normal;
}
/*-------------------- Standard Content area design ---------------------------*/
.content {
	float: left;
	width: 100%;
  margin: 0px;
	padding: 0px;
}
.contentpart {
	float: left;
  width: 100%;
	padding: 1em;
	border: none 0px;
}
.contentpart img {
  float: right;
	margin: 0px;
	clear: none;
}
.contentpart .contentsubpart {
  float: right;
  display: block;
  clear: none;
  width: 30%;
}
/*----------------Standard table design------------------------------------*/
/* might move this to global styles? */
table {
  border-collapse: collapse;
	border-bottom: #f6f8fb;
	width: 98%;
}
td {
	background: #f6f8fb url("/branding/images/lightbluefadeout.gif") repeat-y top right;
  margin: 0px;
	clear: none;
	padding: 4px;	
	width: 74%;
	border-top: 3px #fff solid;
}
thead td {
  width: 100%;
	font-size: 1.2em;
	color: #06348C;
	margin-top: 0px;
	background: #DEE4EE url("/branding/images/lesslightbluefadeout.gif") repeat-y top right;
	border-bottom: solid 1px #e9edf4;
	font-weight: bold; 
}
td.headcol { 
	background: #ecf1f5;
	color: #698ed1;
	text-align: right;
	width: 24%;
	padding: 4px;
	font-weight: bold;
	border-bottom: #f6f8fb;
	margin-bottom: .4em;	
}

/*-------------------- Spotlight (for product highligh)------------------------*/
.contentpart#spotlight {
	float: left;
	width: 100%;
	margin: 0px;
	margin-top: 1em;
	padding: 0px;
	background: url("spotlight_background.gif");
}
.contentpart#spotlight #spotlightgull {
  float: left;
  width: 100%;
  margin: 0px;
	padding: 0px;
	background: url("background_OOogulls.gif") no-repeat top right;
}
.contentpart#spotlight p {
  padding: 0px;
  border: 0px;
}
.contentpart#spotlight h1 {
	margin: 0px;
	margin-top: .5em;
	padding: 0px;
  font-size: 1.8em;
}
.contentpart#spotlight .buttongroup {
	margin: 0px;
	margin-top: 1em;
	margin-right: 1em;
	padding: 0px;
  float: left;
	clear: none;
}
.contentpart#spotlight .buttongroup ul {
	float: left;
  list-style: none;
	display: block;
	margin: 0px;
	margin-bottom: .5em;
	padding: 0px;
}
.contentpart#spotlight .buttongroup #buttonnativelang {
  background-image: url("buttonsmallnativelang_top.gif");
}
.contentpart#spotlight .buttongroup #buttonnew {
  background-image: url("buttonsmallnew_top.gif");
}
.contentpart#spotlight #buttondownload {
	float:left;
	width: 250px;
	margin-top: 0.5em;
  margin-left: 4%;
	font-size: 1.4em;
	color: #464D31;
  background: #B9E06C url("buttondownload_top.gif") no-repeat;
}
.contentpart#spotlight #buttondownload:hover {
  background-color: #c7e094;
}
.contentpart#spotlight #buttondownload span {
  display: block;
	width: 215px;
	min-height: 85px;
	height: auto!important; /*ie hack for minheight*/
	height: 85px;
	padding-top: 15px;
	padding-left: 35px;
 	vertical-align: bottom;
  background: url("buttondownload_bottom.gif") no-repeat bottom right;
/*	background: none; temporary*/
}
.contentpart#spotlight #buttondownload sub {
  font-size: .6em;
	font-weight: normal;
	margin-top: .2em;
}
.contentpart#spotlight .graphicalpresentation {
  float: right;
	clear: none;
	overflow: hidden;
	display: block;
	margin: 0px;
  padding: 0px;
	width: 30%;
	font-size: .8em;
	text-align: right;
}
.contentpart#spotlight .graphicalpresentation h2 {
  font-size: 1.2em;
}
.contentpart#spotlight .graphicalpresentation img {
	float: left;
  padding:0px;
	margin: 0px;
	margin-left: auto;
}
.contentpart#spotlight .ooocomponents {
	float: right;
	width: 100%;
  margin: 0px;
	margin-bottom: 1px;
	padding :0px;
	background: #F6F8FB url("/branding/images/fadelightbluetowhitevertica.gif") repeat-x top right;
  border: none 0px;
	border-top: 1px solid #5684af;
}
.contentpart#spotlight .ooocomponentslist {
	float: right;
	display: block;
  list-style: none;
	margin: 0px;
	padding: 0px;
	text-align: right;
}
.contentpart#spotlight .ooocomponentslist li {
	float: right;
	clear: none;
	width: 3.8em;
	margin: 0px;
	margin-left: 2px;
	margin-right: 1px;
	padding: 0px;
}
.contentpart#spotlight .ooocomponentslist a {
	width: 3.7em;
  margin: 0px;
  padding: 1px;
	padding-top: 20px;
	display: block;
	color: #06348C;
	background: no-repeat top center;
	text-decoration: none;
	text-align: center;
  vertical-align: middle;
	float: right;
	clear: none;
}
.contentpart#spotlight .ooocomponentslist a:hover {
	background-color: #fff;
  color: #698ed1;
}
.contentpart#spotlight .ooocomponentslist .ooobase a {
  background-image: url("/branding/images/iconooobase.gif");
}
.contentpart#spotlight .ooocomponentslist .ooocalc a {
  background-image: url("/branding/images/iconooocalc.gif");
}
.contentpart#spotlight .ooocomponentslist .ooodraw a {
  background-image: url("/branding/images/iconooodraw.gif");
}
.contentpart#spotlight .ooocomponentslist .ooomath a {
  background-image: url("/branding/images/iconooomath.gif");
}
.contentpart#spotlight .ooocomponentslist .oooimpress a {
  background-image: url("/branding/images/iconooopres.gif");
}
.contentpart#spotlight .ooocomponentslist .ooowriter a {
  background-image: url("/branding/images/iconooowrit.gif");
}
/*-------------------- Styling the news excerpts --------------------------*/
.contentpart#news {
  float: left;
	width: 100%;
	padding: 0px;
	padding-top: 2em;
	margin: 0px;
	margin-top: -1px;
	color: #444;
	background: #fff url("/branding/images/shadow.gif") repeat-x;
}
.contentpart#news .item {
	width: 60%;
	padding: 1%;
	padding-top: 0.5%;
	padding-bottom: 0.5%;
}
.contentpart#news .item h1 {
	margin: 0px;
	padding: 0px;
	color: #06348C;
  font-size: 1.2em;
}
.contentpart#news img {
  float: right;
}
.contentpart#news #newsprimaryarticle {
	background: #f6f8fb url("/branding/images/lightbluefadeout.gif") repeat-y top right;
}
