/*
* Copyright 2005-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
body, th, td {
  background-color: #FFFFFF;
  font-family: Arial, Helvetica, Sans-serif;
  font-size: 95%;
}

/** 'portal' block **/

#portal {

}

/** 'header' block **/

#header {
  background: #8DB7DF url('images/banner.png') no-repeat top left;;
  border-bottom: 1px solid #2E6794;
  width: auto;
  height: 50px;
  margin: 0px;
  vertical-align: top;
}

#header h1 {
  display: none;
  margin: 5px 10px 5px 10px;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: 200%;
}

#header p {
  display: none;
  margin: 0px 10px 0px 10px;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: smaller;
}

#logout {
  float:right;
  font-size:smaller;
}

/** 'navigation' block **/

#navigation {
  clear: both;
}

#navigation h2 {
  padding: 5px 10px 5px 10px;
  margin: 0px;
  color: #6D97BF;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: 100%;
}

#navigation ul {
  margin: 0px;
  padding: 5px 10px 5px 10px;
  list-style: none;
  position: absolute;
  background-color: #F0F0F0;
  border-width: 0px 1px 1px 1px;
  border-style: solid;
  border-color: #000000;
}

#navigation ul li {
  color: #888888;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: smaller;
}

#navigation ul li a {
  color: #888888;
  text-decoration: none;
}

#navigation ul li a:hover {
  color: #6D97BF;
  text-decoration: underline;
}

#navigation .selected, #navigation .selected a {
  color: #6D97BF;
  font-weight: bold;
}


/** 'content' block **/

#content {

}

/** 'portlet' block **/

#portlets-left-column {
  margin: 0;
  padding: 0;
  width: 49%;
  float: left;
}

#portlets-right-column {
  margin: 0;
  padding: 0;
  width: 49%;
  float: right;
}

.portlet {
  margin: 10px 0px 10px 0px;
  padding: 0px;
  border: 1px solid #2E6794;
}

.portlet .header {
  white-space: nowrap;
  padding-left: 0.25em;
  background-color: #8DB7DF;
  color: #FFFFFF;
  font-weight: bold;
  border-width: 0px 0px 1px 0px;
  border-style: solid;
  border-color: #2E6794;
}

.portlet .header h2 {
  margin: 0px;
  padding: 0px;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: 100%;
  float: none;
}

.portlet .header span {
  width: 16px;
  height: 16px;
  float: right;
}


/** 'portlet' block: portlet mode and window state controls **/

.portlet .header span.min {
  background: url(images/controls/min.png) no-repeat;
}

.portlet .header span.max {
  background: url(images/controls/max.png) no-repeat;
}

.portlet .header span.norm {
  background: url(images/controls/norm.png) no-repeat;
}

.portlet .header span.view {
  background: url(images/controls/view.png) no-repeat;
}

.portlet .header span.edit {
  background: url(images/controls/edit.png) no-repeat;
}

.portlet .header span.help {
  background: url(images/controls/help.png) no-repeat;
}

.portlet .body {
  padding: 10px;
}


/** 'footer' block **/

#footer {
  clear: both;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-size: smaller;
  color: #808080;
  text-align: center;
  margin: 0px;
  padding: 4px 20px 4px 20px;
  border-top-width: 1px;
  border-top-color: #888888;
  border-top-style: dotted;
}


/** Login page styles **/

fieldset {
  margin: 0.5em;
  border-width: 1px;
  border-style: solid;
  border-color: #2E6794;
}

legend {
  color: #2E6794;
  font-family: "Trebuchet MS", Trebuchet, Arial, Helvetica, Sans-serif;
  font-weight: bold;
}

label {
  clear: both;
  width: 40%;
  float: left;
  text-align: right;
  margin: 0px 5px 10px 0px;
}

input {
  color: #2E6794;
  background-color: #8DB7DF;
  margin: 0px 0px 10px 5px;
  border-width: 1px;
  border-style: solid;
  border-color: #2E6794;
}





