/*
  $Revision: 1.14 $ $Date: 2008/03/25 23:06:39 $
  CSS for openoffice.org homepage
	Basicly you can find standard tags first, followed by classed, and then more specific
*/

/*-------------------- Exceptions on standard css -----------------------*/
#navcol {
	display: none;
	}
#bodytd {
	padding: 0px; /* no content padding for homepage */
	width: 100%;
	margin: 0px;
}
#bodycol {
  padding: 0px;
	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 a:hover {
  text-decoration: none;
}

.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;
}
