/* reset styles 
html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%}legend{color:#000}
*/
/* nb style */
body {
    background-color: #e4eefa;
    background-image: url('./bg.jpg');
    background-repeat: repeat-x;
}
#wrapper {
    width:910px;
    margin:15px auto 10px auto;
    text-align: center;
}
header, footer, #top, #middle, #news {
    text-align: left;
}
header {
    height:42px;
    background-color: #021a72;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;    
    color: white;
    padding:0px;
    margin:0px;
    font-size: 1.1em;
}
header li.first {
    border-left: 1px solid #2a72ba;
}
header li {
    list-style: none;
    float: left;
    margin:0px ;    
    border-right: 1px solid #2a72ba;
    padding:13px 15px 13px 15px;
}
footer {
    border: 1px solid #a7b0b7;
    border-bottom-right-radius: 5px;
    border-bottom-left-radius: 5px;
    height:30px;
    font-size: 1.1em;
    background: #ffffff; /* Old browsers */
    background: -moz-linear-gradient(top,  #ffffff 20%, #eaf1f9 72%, #eaf1f9 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(20%,#ffffff), color-stop(72%,#eaf1f9), color-stop(100%,#eaf1f9)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #ffffff 20%,#eaf1f9 72%,#eaf1f9 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #ffffff 20%,#eaf1f9 72%,#eaf1f9 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #ffffff 20%,#eaf1f9 72%,#eaf1f9 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #ffffff 20%,#eaf1f9 72%,#eaf1f9 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#eaf1f9',GradientType=0 ); /* IE6-9 */


}
footer ul {
    margin:0px 0px 0px 20px;
    padding: 0px;
}
footer li {
    list-style: none;
    float: left;
    margin:0px;
    padding:7px 20px 0px 0px;
}
#middle,#news {
    border-left: 1px solid #a7b0b7;
    border-top: 1px solid #a7b0b7;
    border-right: 1px solid #a7b0b7;
    clear: both;
}
#top {
    margin-top:10px;
    height:265px;
    clear: both;
}
#news {
    background: #ffffff; /* Old browsers */
    background: -moz-linear-gradient(top,  #ffffff 0%, #dceefa 69%, #dceefa 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(69%,#dceefa), color-stop(100%,#dceefa)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #ffffff 0%,#dceefa 69%,#dceefa 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #ffffff 0%,#dceefa 69%,#dceefa 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #ffffff 0%,#dceefa 69%,#dceefa 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #ffffff 0%,#dceefa 69%,#dceefa 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#dceefa',GradientType=0 ); /* IE6-9 */
    height:20px;
    padding:5px 5px 5px 20px;
}
#news span {
    font-weight: bold;
    font-size: 1.3em;
    color: #234d75;
}
#middle {
    background: #ffffff; /* Old browsers */
    background: -moz-linear-gradient(top,  #ffffff 33%, #edf6fb 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(33%,#ffffff), color-stop(100%,#edf6fb)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #ffffff 33%,#edf6fb 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #ffffff 33%,#edf6fb 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #ffffff 33%,#edf6fb 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #ffffff 33%,#edf6fb 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#edf6fb',GradientType=0 ); /* IE6-9 */
    padding:20px;
}   
#nblogo {
    float:left;
}
#search-div {
    float:right;
    margin:8px 10px 0px;
}
#search-input {
    width:100px;
    margin:0px;
}
#magnifier {
    display: inline-block;
    margin-bottom: -5px;
}
.slider {
    height: 200px;
}
.slider h1 {
   color:dimgray;
   text-align: center;
}
