/**********************************
 The Apache Software Foundation

Derived from: Open for Business Project Website

 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you 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.
*********************************/

/********************************
 Global Reset
********************************/
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
    border:0;
    margin:0;
    outline:0;
    padding:0;
    background:transparent;
    vertical-align: baseline;
}

blockquote, q {
    quotes: none;
}

blockquote:before,
blockquote:after,
q:before,
q:after {
    content:'';
    content: none;
}

a, address, body, caption, cite, code, dfn, em, strong, th, var {
    font-style: normal;
    font-weight: normal;
    text-decoration: none;
}

strong {
    font-weight: bold;
}

em {
    font-style: italic;
}

a img {
    border: none;
}

ol, ul {
    list-style: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/********************************
 General Layout
********************************/
* {margin:0;padding:0;}

html, body, #wrap {height: 100%;}

body > #wrap {height: auto; min-height: 100%;}

body {
    font: 13px/ 165% "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
	color: black;
	margin: 0;
	padding: 0;
	background: url(/theme/images/lucene/bg.png) top left repeat-x #A6A6A6;
	text-align: center;
}

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}

.clearfix {
    display: block;
}

.clearLeft {
    clear:left;
}

/********************************
 Typography
********************************/
a,a:active,a:link {
	text-decoration: none;
	color: #29456b;
}

a:visited {
	text-decoration: none;
}

a:hover {
	color: #030d1c;
}

h1,h2,h3 {
	font-family: "Trebuchet MS", Tahoma, Arial, Sans-serif;
	color: #555;
}

h1 {
  	font-size: 150%;
	color: #895F30;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

h2 {
	font-size: 170%;
	font-weight: normal;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

h3 {
	font-size: 130%;
	font-weight: normal;
	padding: 20px 10px 5px 10px;
	margin: 0;
}

p,dl {
	padding: 10px;
	margin: 0;
}

ul{
	margin: 10px 10px;
	padding: 0 0 0 10px;
}

ul {
	list-style: none;
}

ol {
	margin: 10px 30px;
	padding: 0;
}

dt {
	font-weight: bold;
	color: #b13f1a;
}

dd {
	padding-left: 25px;
}

/********************************
 /theme/images/lucene
********************************/
img {
    border: none;
}

p img {
    background: #fafafa;
       border: 1px solid #dcdcdc;
    padding: 5px;
    margin:0 10px 0 0;
}

img.float-right {
    margin: 5px 0px 10px 10px;
}

img.float-left {
    margin: 5px 10px 10px 0px;
}

/********************************
 Code Snippets and Quotes
********************************/
code {
    margin: 5px 0;
    padding: 15px;
    text-align: left;
    display: block;
    overflow: auto;
    font: 500 1em/ 1.5em 'Lucida Console', 'courier new', monospace;
    /* white-space: pre; */
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
}

acronym {
    cursor: help;
    border-bottom: 1px dotted #895F30;
}

blockquote {
    margin: 15px 10px;
    padding: 10px 10px 10px 35px;
    border: 1px solid #ECF8FE;
    background: #ECF8FE url(/theme/images/lucene/quote.jpg) no-repeat 10px 10px;
    font-weight: normal;
    font-size: 1.5em;
    line-height: 1.5em;
    font-style: italic;
    font-family: "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: #976957;
}

/********************************
 Tables
********************************/
table {
	border-collapse: collapse;
	margin: 15px 10px;
}

th {
	background: #d14b1f url(/theme/images/lucene/header-bg.jpg) repeat-x 0 -100px;
	height: 38px;
	padding-left: 12px;
	padding-right: 12px;
	color: #fff;
	text-align: left;
	border-left: 1px solid #d14b1f;
	border-bottom: solid 2px #fff;
}

tr {
	height: 34px;
}

td {
	padding-left: 11px;
	padding-right: 11px;
}

/********************************
 Forms
********************************/
input,select {
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    color: #666666;
    background: #fff;
}

textarea {
    width: 400px;
    padding: 4px;
    font: normal 1em Verdana, sans-serif;
    height: 100px;
    display: block;
    color: #666666;
}

input,textarea,select {
    background: #fff;
    border-width: 1px;
    border-style: solid;
    border-color: #D4D4D4 #ebebeb #ebebeb #d4d4d4;
}

input.button {
    font: bold 12px Arial, Sans-serif;
    height: 30px;
    margin: 0;
    padding: 2px 3px;
    color: black;
    background: #E6E6E6;
    border-width: 1px;
    border-style: solid;
    border-color: #ebebeb #d4d4d4 #d4d4d4 #ebebeb;
}

/********************************
 Generic Classes
********************************/
.float-left {
    float: left;
}

.float-right {
    float: right;
}

.align-left {
    text-align: left;
}

.align-right {
    text-align: right;
}

.clearer {
    clear: both;
}

/********************************
 Page Layout
********************************/
#wrap{
    background: #fff url(/theme/images/lucene/wrapper.jpg) top center no-repeat;
    width: 945px;
	margin: 0 auto;
    text-align:left;
}

#content-wrap  {
    width:945px;
	margin:0 auto;
    padding-bottom: 42px;
}

#content {
    width:500px;
	float:left;
	padding:30px 0 25px 0;
}

/********************************
 Footer
********************************/
#footer {
    position: relative;
	margin: -50px auto 0px auto;
	clear:both;
	font-size:11px;
	font-family:Verdana, Arial, sans-serif;
    width:945px;
    border-top: 1px solid #eee;
    background: white;
}

#foot {
    text-align:left;
    position:relative;
    top:5px;
    left:30px;
}

/********************************
 Header
********************************/
#header {
    position: relative;
    width: 945px;
    height: 100px;
    padding: 0;
    margin: 0 auto;
    background: transparent;
}

#header #logo {
    position: absolute;
    top: 15px;
    left: 20px;
    height: 42px;
    width: 405px;
}

#header #logo a,img {
    background: none;
    border: none;
}

#header #controls {
    position: absolute;
    top: 60px;
    right: 32px;
    height: 42px;
    color: #1b78d7;
    font-size: 12px;
    background: url(/theme/images/lucene/house.gif) top right no-repeat;
    padding-right: 20px;
    text-align: right;
}

#header #controls a {
    position: relative;
    top: -2px;
}

#header #language {
    position: absolute;
    top: 10px;
    right: 32px;
    height: 42px;
    color: #797c7e;
    text-align: right;
}

/********************************
 Search
********************************/
#search {
    position:absolute;
    top:0px;
    right:0px;
    background:url(/theme/images/lucene/search.gif) center left no-repeat;
	padding:5px;
	padding-top:4px;
    padding-left:33px;
	border-radius:3px;
	background-color:#444;
}

.hintText {
      display: none;
}

.fieldWithHint {
      color: #001f2f;
}

/********************************
 Top Navigation
********************************/
#nav {
    position: absolute;
    clear: both;
    margin: 0;
    padding: 0;
	padding-right:5px;
	padding-left:5px;
	right:0px;
    height: 34px;
    top: 114px;
	border-radius:3px;
    z-index: 99999;
	background-color:#444;
}

#nav ul {
    float: left;
    list-style: none;
    height: 34px;
    margin: 0;
    padding: 0;
    display: inline;
}

#nav ul li {
    display: inline;
    margin: 0;
    padding: 0;
}

#nav ul li a {
    float: left;
    margin: 0 0 0 0;
    padding: 0px 15px 0px 15px;
    font: normal 14px/ 34px "Trebuchet MS", Helvetica, Arial, Geneva, sans-serif;
    font-variant: small-caps;
    text-decoration: none;
    letter-spacing: 0.0px;
    color: #fff;
	border-right:1px inset #888;
}

#nav ul li a.last {
	border:none;
}

#nav ul li a:hover,#nav ul li a:active {
    color: #111;
    background-image: url(/theme/images/lucene/header_hot.jpg);
}

#nav ul li#current a {
    color: #333333;
    background-image: url(/theme/images/lucene/header_hot.jpg);
}

/********************************
 Content Sections
********************************/
#main {
    float: left;
    width: 700px;
    padding: 0;
    margin: 0 0 0 20px;
    display: inline;
}

#main h1 {
	padding-bottom: 3px;
	margin-top: 15px;
	font: normal 3.5em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
	color: #333;
	letter-spacing: -2px;
	text-transform: none;
	border-bottom: 1px solid #ebebeb;
}

#main h1 a {
	color: #333;
	text-decoration: none;
	background: none;
	border: none;
}

#main ul li {
    list-style-image: url(/theme/images/lucene/bullet.gif);
}

#col1 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 20px 0 0 20px;
    display: inline;
}

#col2 {
    float: left;
    width: 260px;
    padding: 0;
    margin: 20px 0 0 20px;
    display: inline;
}

#col1 h1, #col2 h1 {
    padding-bottom: 3px;
    margin-top: 15px;
    font: normal 3.5em "Lucida Grande", Geneva, Verdana, Arial, Helvetica, sans-serif;
    color: black;
    letter-spacing: -2px;
    text-transform: none;
    border-bottom: 1px solid #ebebeb;
}

#main #col1 h1, #main #col2 h1 {
	border-bottom: 1px solid #ebebeb;
	color:#304C70;
	padding-bottom: 3px;
	letter-spacing: -3px;
	text-transform: none;
	font-size:30px;
}

.feature {
	margin:0px;
	padding:0px;
	height:435px;
}

.screen {
	margin:10px 0 5px 0;
	padding:0px;
	background:#fff;
	border:1px solid #eee;
	width:255px;
	height:200px;
	overflow:hidden;
}

#main .hero {
	margin:10px 0 5px 0;
	padding:0px;
	background:#fff;
	border:1px solid #eee;
	width:555px;
}

#main .highlights {
	float:right;
	width:240px;
	background:#dfe9ef;
	border:1px solid #eee;
	margin:0px 10px 0px 5px;
	display:inline;
}

#main .highlights ul li {
    list-style-image: url(/theme/images/lucene/highlight-bullet.gif);
}

#main .highlights h4 {
	padding:5px 5px 0 5px;
}

#sidebar {
    float: right;
    width: 200px;
    padding: 0;
    margin: 15px 20px 0 0;
    display: inline;
}

#sidebar h2 {
    margin-top: 10px;
    padding: 15px 5px 3px 5px;
    font: normal 2em 'trebuchet MS', Tahoma, Helvetica, Arial, sans-serif;
    color: black;
    letter-spacing: -.5px;
}

#sidebar ul.sidemenu {
    text-align: left;
    margin: 0px 5px 8px 0px;
    padding: 5px 0 0 0;
    text-decoration: none;
    background: url(/theme/images/lucene/dots.gif) repeat-x left top;
}

#sidebar ul.sidemenu li {
    list-style: none;
    background: url(dots.gif) repeat-x left bottom;
    padding: 4px 10px;
    margin: 0;
}

* html body #sidebar ul.sidemenu li {
    height: 1%;
}

#sidebar ul.sidemenu li a {
    text-decoration: none;
    background-image: none;
    background-color: transparent;
    border: none;
    color: #304c70;
    font-weight: bold;
    font-family: "Trebuchet MS", Tahoma, Helvetica, Arial, Sans-serif;
    font-size: 14px;
    /* letter-spacing: .5px;  */
}

#sidebar ul.sidemenu li a span {
    color: black;
    font-family: Georgia, "Times New Roman", Times, serif;
    font-style: italic;
    font-weight: normal;
    font-size: .8em;
}

#sidebar ul.sidemenu li a:hover {
    color: #555;
}

#sidebar ul.sidemenu ul {
    margin: 0 0 0 5px;
    padding: 0;
}

#sidebar ul.sidemenu ul li {
    background: none;
}

#sidebar .indentfirst {
    margin-left:0px;
}

#sidebar .indentsecond {
    margin-left:20px;
}

/********************************
 Content Styles
********************************/
.postmeta {
    padding: 5px;
    margin: 20px 10px 15px 10px;
    font-size: 1em;
    color: #777;
    border: 1px solid #ECF8FE;
    background: #ECF8FE;
}

.postmeta .date {
    margin: 0 10px 0 5px;
}

.postmeta a.comments {
    margin: 0 10px 0 5px;
}

.postmeta a.readmore {
    margin: 0 10px 0 5px;
}

.post-info {
    font-size: .95em;
    padding-top: 3px;
    margin-left: 5px;
    color: #bababa;
}

.post-info a {
    color: #C5935C;
}

p.thumbs {
    padding: 12px 0 0 10px;
}

.thumbs img {
    position: relative;
    border: 1px solid #ebebeb;
    background: none;
    padding: 4px;
    margin: 5px;
    /* margin: 4px 7px 4px 4px; */
}

.thumbs img:hover {
    border: 1px solid #c5c5c5;
    background: none;
}

.thumbs a:hover {
    background-color: transparent;
    border: none
}

/********************************
 Page Specific Styles
********************************/
/*HOME*/
body#home #wrap {
	position: relative;
	background: #fff url(/theme/images/lucene/home-wrapper.png) top center no-repeat;
	width: 945px;
	margin: 0 auto;
	text-align: left;
}

body#home #header {
	position: relative;
	width: 945px;
	height: 130px;
	padding: 0;
	margin: 0 auto;
	background: transparent;
}

body#home #header #slides {
	position: absolute;
	top: 148px;
	left: 0px;
	width: 945px;
    background-color: #C4E0BA;
}

body#home #header #slides .slideshow {
	width:945px;
	margin:0px;
	padding:0px;
}

body#home #header #slides .callout {
	position: absolute;
	top: 35px;
	left: 30px;
	font-size: 30px;
	line-height: 30px;
	color: #2b1f48;
}

body#home #header #slides .descwrapper {
	position: absolute;
	top: 175px;
	font-size: 14px;
	line-height: 15px;
    background-color: #2B2A38;
	width: 945px;
    height: 85px;
}

body#home #header #slides .description {
	position: absolute;
	top: 175px;
	left: 30px;
	font-size: 14px;
	line-height: 15px;
	color: #e0e0e0;
	width: 350px;
}

body#home #header #slides .descwrapper .description {
	position: relative;
	top: 15px;
	left: 10px;
	font-size: 14px;
	line-height: 15px;
	color: #e0e0e0;
	width: 350px;
}

body#home #header #slides .controls {
	width: 100px;
	position: absolute;
	top: 15px;
	left: 750px;
	height:30px;
}

body#home #header #slides .controls a {
	border: none;
	position:absolute;
	height:30px;
	line-height:24px;
	padding:5px;
	text-indent:-9999px;
	outline:none;
}

body#home #header #slides .controls a.previous {
	background: url(/theme/images/lucene/backward.gif) top center no-repeat;
	left:0px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.next {
	background: url(/theme/images/lucene/forward.gif) top center no-repeat;
	left:60px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.stop {
	background: url(/theme/images/lucene/pause.gif) top center no-repeat;
	left:30px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a.start {
	background: url(/theme/images/lucene/start.gif) top center no-repeat;
	left:30px;
	height:30px;
	width:16px;
}

body#home #header #slides .controls a img {
	background: none;
	border: none;
	cursor: pointer;
}

body#home #header #slides .mantle{
	position:absolute;
	top:58px;
	left:385px;
}

body#home #col1 {
	float: left;
	width: 260px;
	padding: 0;
	margin: 5px 0 0 0px;
	display: inline;
}

body#home #col2 {
	float: left;
	width: 260px;
	padding: 0;
	margin: 5px 0 0 20px;
	display: inline;
}

.downloadNow {
	margin:30px 0 10px 0;
}

.downloadLinks span.docs {
	float:left;
	margin:0px 0px 0 0;
	display:inline;
}

.downloadLinks span.previousVersions {
	float:right;
	margin:0px 20px 0 0;
	display:inline;
}

/*SUBPAGE - NO SIDEBAR*/
body#full #wrap {
	position: relative;
	background: #fff url(/theme/images/lucene/full-wrapper.jpg) top center no-repeat;
	width: 945px;
	margin: 0 auto;
	text-align: left;
}
