/* The standard CSS for doxygen */

body, table, div, p, dl {
  font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
  font-size: 12px;
}

/* @group Heading Levels */

h1 {
  font-size: 150%;
}

h2 {
  font-size: 120%;
}

h3 {
  font-size: 100%;
}

dt {
  font-weight: bold;
}

div.multicol {
  -moz-column-gap: 1em;
  -webkit-column-gap: 1em;
  -moz-column-count: 3;
  -webkit-column-count: 3;
}

p.startli, p.startdd, p.starttd {
  margin-top: 2px;
}

p.endli {
  margin-bottom: 0px;
}

p.enddd {
  margin-bottom: 4px;
}

p.endtd {
  margin-bottom: 2px;
}

/* @end */

caption {
  font-weight: bold;
}

span.legend {
        font-size: 70%;
        text-align: center;
}

h3.version {
        font-size: 90%;
        text-align: center;
}

div.qindex, div.navtab{
  background-color: #EBEFF6;
  border: 1px solid #A3B4D7;
  text-align: center;
  margin: 2px;
  padding: 2px;
}

div.qindex, div.navpath {
  width: 100%;
  line-height: 140%;
}

div.navtab {
  margin-right: 15px;
}

/* @group Link Styling */

a {
  color: #3D578C;
  font-weight: normal;
  text-decoration: none;
}

.contents a:visited {
  color: #4665A2;
}

a:hover {
  text-decoration: underline;
}

a.qindex {
  font-weight: bold;
}

a.qindexHL {
  font-weight: bold;
  background-color: #9CAFD4;
  color: #ffffff;
  border: 1px double #869DCA;
}

.contents a.qindexHL:visited {
        color: #ffffff;
}

a.el {
  font-weight: bold;
}

a.elRef {
}

a.code {
  color: #4665A2;
}

a.codeRef {
  color: #4665A2;
}

/* @end */

dl.el {
  margin-left: -1cm;
}

.fragment {
  font-family: monospace, fixed;
  font-size: 105%;
}

pre.fragment {
  border: 1px solid #C4CFE5;
  background-color: #FBFCFD;
  padding: 4px 6px;
  margin: 4px 8px 4px 2px;
  overflow: auto;
  /*word-wrap: break-word;*/
  font-size:  9pt;
  line-height: 125%;
}

div.ah {
  background-color: black;
  font-weight: bold;
  color: #ffffff;
  margin-bottom: 3px;
  margin-top: 3px;
  padding: 0.2em;
  border: solid thin #333;
  border-radius: 0.5em;
  -webkit-border-radius: .5em;
  -moz-border-radius: .5em;
  box-shadow: 2px 2px 3px #999;
  -webkit-box-shadow: 2px 2px 3px #999;
  -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
  background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
  background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
}

div.groupHeader {
  margin-left: 16px;
  margin-top: 12px;
  font-weight: bold;
}

div.groupText {
  margin-left: 16px;
  font-style: italic;
}

body {
  background: white;
  color: black;
        margin: 0;
}

div.contents {
  margin-top: 10px;
  margin-left: 10px;
  margin-right: 10px;
}

td.indexkey {
  background-color: #EBEFF6;
  font-weight: bold;
  border: 1px solid #C4CFE5;
  margin: 2px 0px 2px 0;
  padding: 2px 10px;
}

td.indexvalue {
  background-color: #EBEFF6;
  border: 1px solid #C4CFE5;
  padding: 2px 10px;
  margin: 2px 0px;
}

tr.memlist {
  background-color: #EEF1F7;
}

p.formulaDsp {
  text-align: center;
}

img.formulaDsp {
  
}

img.formulaInl {
  vertical-align: middle;
}

div.center {
  text-align: center;
        margin-top: 0px;
        margin-bottom: 0px;
        padding: 0px;
}

div.center img {
  border: 0px;
}

address.footer {
  text-align: right;
  padding-right: 12px;
}

img.footer {
  border: 0px;
  vertical-align: middle;
}

/* @group Code Colorization */

span.keyword {
  color: #008000
}

span.keywordtype {
  color: #604020
}

span.keywordflow {
  color: #e08000
}

span.comment {
  color: #800000
}

span.preprocessor {
  color: #806020
}

span.stringliteral {
  color: #002080
}

span.charliteral {
  color: #008080
}

span.vhdldigit { 
  color: #ff00ff 
}

span.vhdlchar { 
  color: #000000 
}

span.vhdlkeyword { 
  color: #700070 
}

span.vhdllogic { 
  color: #ff0000 
}

/* @end */

/*
.search {
  color: #003399;
  font-weight: bold;
}

form.search {
  margin-bottom: 0px;
  margin-top: 0px;
}

input.search {
  font-size: 75%;
  color: #000080;
  font-weight: normal;
  background-color: #e8eef2;
}
*/

td.tiny {
  font-size: 75%;
}

.dirtab {
  padding: 4px;
  border-collapse: collapse;
  border: 1px solid #A3B4D7;
}

th.dirtab {
  background: #EBEFF6;
  font-weight: bold;
}

hr {
  height: 0px;
  border: none;
  border-top: 1px solid #4A6AAA;
}

hr.footer {
  height: 1px;
}

/* @group Member Descriptions */

table.memberdecls {
  border-spacing: 0px;
  padding: 0px;
}

.mdescLeft, .mdescRight,
.memItemLeft, .memItemRight,
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
  background-color: #F9FAFC;
  border: none;
  margin: 4px;
  padding: 1px 0 0 8px;
}

.mdescLeft, .mdescRight {
  padding: 0px 8px 4px 8px;
  color: #555;
}

.memItemLeft, .memItemRight, .memTemplParams {
  border-top: 1px solid #C4CFE5;
}

.memItemLeft, .memTemplItemLeft {
        white-space: nowrap;
}

.memTemplParams {
  color: #4665A2;
        white-space: nowrap;
}

/* @end */

/* @group Member Details */

/* Styles for detailed member documentation */

.memtemplate {
  font-size: 80%;
  color: #4665A2;
  font-weight: normal;
  margin-left: 9px;
}

.memnav {
  background-color: #EBEFF6;
  border: 1px solid #A3B4D7;
  text-align: center;
  margin: 2px;
  margin-right: 15px;
  padding: 2px;
}

.memitem {
  padding: 0;
  margin-bottom: 10px;
}

.memname {
        white-space: nowrap;
        font-weight: bold;
        margin-left: 6px;
}

.memproto {
        border-top: 1px solid #A8B8D9;
        border-left: 1px solid #A8B8D9;
        border-right: 1px solid #A8B8D9;
        padding: 6px 0px 6px 0px;
        color: #253555;
        font-weight: bold;
        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
        /* opera specific markup */
        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
        border-top-right-radius: 8px;
        border-top-left-radius: 8px;
        /* firefox specific markup */
        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
        -moz-border-radius-topright: 8px;
        -moz-border-radius-topleft: 8px;
        /* webkit specific markup */
        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
        -webkit-border-top-right-radius: 8px;
        -webkit-border-top-left-radius: 8px;
        background-image:url('nav_f.png');
        background-repeat:repeat-x;
        background-color: #E2E8F2;

}

.memdoc {
        border-bottom: 1px solid #A8B8D9;      
        border-left: 1px solid #A8B8D9;      
        border-right: 1px solid #A8B8D9; 
        padding: 2px 5px;
        background-color: #FBFCFD;
        border-top-width: 0;
        /* opera specific markup */
        border-bottom-left-radius: 8px;
        border-bottom-right-radius: 8px;
        box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
        /* firefox specific markup */
        -moz-border-radius-bottomleft: 8px;
        -moz-border-radius-bottomright: 8px;
        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7);
        /* webkit specific markup */
        -webkit-border-bottom-left-radius: 8px;
        -webkit-border-bottom-right-radius: 8px;
        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7));
}

.paramkey {
  text-align: right;
}

.paramtype {
  white-space: nowrap;
}

.paramname {
  color: #602020;
  white-space: nowrap;
}
.paramname em {
  font-style: normal;
}

.params, .retval, .exception, .tparams {
        border-spacing: 6px 2px;
}       

.params .paramname, .retval .paramname {
        font-weight: bold;
        vertical-align: top;
}
        
.params .paramtype {
        font-style: italic;
        vertical-align: top;
}       
        
.params .paramdir {
        font-family: "courier new",courier,monospace;
        vertical-align: top;
}




/* @end */

/* @group Directory (tree) */

/* for the tree view */

.ftvtree {
  font-family: sans-serif;
  margin: 0px;
}

/* these are for tree view when used as main index */

.directory {
  font-size: 9pt;
  font-weight: bold;
  margin: 5px;
}

.directory h3 {
  margin: 0px;
  margin-top: 1em;
  font-size: 11pt;
}

/*
The following two styles can be used to replace the root node title
with an image of your choice.  Simply uncomment the next two styles,
specify the name of your image and be sure to set 'height' to the
proper pixel height of your image.
*/

/*
.directory h3.swap {
  height: 61px;
  background-repeat: no-repeat;
  background-image: url("yourimage.gif");
}
.directory h3.swap span {
  display: none;
}
*/

.directory > h3 {
  margin-top: 0;
}

.directory p {
  margin: 0px;
  white-space: nowrap;
}

.directory div {
  display: none;
  margin: 0px;
}

.directory img {
  vertical-align: -30%;
}

/* these are for tree view when not used as main index */

.directory-alt {
  font-size: 100%;
  font-weight: bold;
}

.directory-alt h3 {
  margin: 0px;
  margin-top: 1em;
  font-size: 11pt;
}

.directory-alt > h3 {
  margin-top: 0;
}

.directory-alt p {
  margin: 0px;
  white-space: nowrap;
}

.directory-alt div {
  display: none;
  margin: 0px;
}

.directory-alt img {
  vertical-align: -30%;
}

/* @end */

div.dynheader {
        margin-top: 8px;
}

address {
  font-style: normal;
  color: #2A3D61;
}

table.doxtable {
  border-collapse:collapse;
}

table.doxtable td, table.doxtable th {
  border: 1px solid #2D4068;
  padding: 3px 7px 2px;
}

table.doxtable th {
  background-color: #374F7F;
  color: #FFFFFF;
  font-size: 110%;
  padding-bottom: 4px;
  padding-top: 5px;
  text-align:left;
}

.tabsearch {
  top: 0px;
  left: 10px;
  height: 36px;
  background-image: url('tab_b.png');
  z-index: 101;
  overflow: hidden;
  font-size: 13px;
}

.navpath ul
{
  font-size: 11px;
  background-image:url('tab_b.png');
  background-repeat:repeat-x;
  height:30px;
  line-height:30px;
  color:#8AA0CC;
  border:solid 1px #C2CDE4;
  overflow:hidden;
  margin:0px;
  padding:0px;
}

.navpath li
{
  list-style-type:none;
  float:left;
  padding-left:10px;
  padding-right: 15px;
  background-image:url('bc_s.png');
  background-repeat:no-repeat;
  background-position:right;
  color:#364D7C;
}

.navpath a
{
  height:32px;
  display:block;
  text-decoration: none;
  outline: none;
}

.navpath a:hover
{
  color:#6884BD;
}

div.summary
{
  float: right;
  font-size: 8pt;
  padding-right: 5px;
  width: 50%;
  text-align: right;
}       

div.summary a
{
  white-space: nowrap;
}

div.header
{
        background-image:url('nav_h.png');
        background-repeat:repeat-x;
  background-color: #F9FAFC;
  margin:  0px;
  border-bottom: 1px solid #C4CFE5;
}

div.headertitle
{
  padding: 5px 5px 5px 10px;
}



/******** Eigen specific CSS code ************/


body {
  max-width:60em;
  margin-left:5%;
  margin-top:2%;
  font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
}

img {
    border: 0;
}

a.logo {
  float:right;
  margin:10px;
}

div.fragment {
  display:table; /* this allows the element to be larger than its parent */
  padding: 0pt;
}
pre.fragment {
  border: 1px solid #cccccc;

  margin: 2px 0px 2px 0px ;
  padding: 3px 5px 3px 5px;
}

/* Common style for all Eigen's tables */

table.example, table.manual, table.manual-vl {
    max-width:100%;
    border-collapse: collapse;
    border-style: solid;
    border-width: 1px;
    border-color: #cccccc;
    font-size: 1em;
    
    box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
    -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}

table.example th, table.manual th, table.manual-vl th {
  padding: 0.5em 0.5em 0.5em 0.5em;
  text-align: left;
  padding-right: 1em;
  color: #555555;
  background-color: #F4F4E5;
  
  background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.3,#FFFFFF), color-stop(0.30,#FFFFFF), color-stop(0.98,#F4F4E5), to(#ECECDE));
  background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 30%, #F4F4E5 98%, #ECECDE);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#F4F4E5');
}

table.example td, table.manual td, table.manual-vl td {
  vertical-align:top;
  border-width: 1px;
  border-color: #cccccc;
}

/* header of headers */
table th.meta {
  text-align:center;
  font-size: 1.2em;
  background-color:#FFFFFF;
}

/* intermediate header */
table th.inter {
  text-align:left;
  background-color:#FFFFFF;
  background-image:none;
  border-style:solid solid solid solid;
  border-width: 1px;
	border-color: #cccccc;
}

/** class for exemple / output tables **/

table.example {
}

table.example th {
}

table.example td {
  padding: 0.5em 0.5em 0.5em 0.5em;
  vertical-align:top;
}

/* standard class for the manual */

table.manual, table.manual-vl {
    padding: 0.2em 0em 0.5em 0em;
}

table.manual th, table.manual-vl th {
  margin: 0em 0em 0.3em 0em;
}

table.manual td, table.manual-vl td {
  padding: 0.3em 0.5em 0.3em 0.5em;
  vertical-align:top;
  border-width: 1px;
}

table.manual td.alt, table.manual tr.alt, table.manual-vl td.alt, table.manual-vl tr.alt {
  background-color: #F4F4E5;
}

table.manual-vl th, table.manual-vl td, table.manual-vl td.alt {
  border-color: #cccccc;
  border-width: 1px;
  border-style: none solid none solid;
}

table.manual-vl th.inter {
  border-style: solid solid solid solid;
}

h2 {
  margin-top:2em;
  border-style: none none solid none;
  border-width: 1px;
  border-color: #cccccc;
}


/**** old Eigen's styles ****/

th {
    /*text-align: left;
    padding-right: 1em;*/
    /* border: #cccccc dashed; */
    /* border-style: dashed; */
    /* border-width: 0 0 3px 0; */
}
/*
table.noborder {
  border-collapse: separate;
  border-bottom-style : none;
  border-left-style   : none;
  border-right-style  : none;
  border-top-style : none ;
  border-spacing : 0px 0px;
  margin: 4pt 0 0 0;
  padding: 0 0 0 0;
  
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
    -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
}

table.noborder td {
  border-bottom-style : none;
  border-left-style   : none;
  border-right-style  : none;
  border-top-style : none;
  border-spacing : 0px 0px;
  margin: 0 0 0 0;
  vertical-align: top;
}

table.tutorial_code {
  width: 90%;
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
    -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
}

table.tutorial_code tr {
  border: 1px dashed #888888;
}
*/

table.tutorial_code td {
  border-color: transparent; /* required for Firefox */
  padding: 3pt 5pt 3pt 5pt;
  vertical-align: top;
}


/* Whenever doxygen meets a '\n' or a '<BR/>', it will put 
 * the text containing the characted into a <p class="starttd">.
 * This little hack togehter with table.tutorial_code td.note
 * aims at fixing this issue. */
table.tutorial_code td.note p.starttd {
  margin: 0px;
  border: none;
  padding: 0px;
}
/*
div.fragment {
  font-family: monospace, fixed;
  font-size: 95%;
  
  border: none;
  padding: 0pt;
}

pre.fragment {
  margin: 0pt;
  border: 1px solid #cccccc;
  padding: 2px 5px 2px 5px;
  
  background-color: #f5f5f5;
}
*/

div.eimainmenu {
  text-align:     center;
}

/* center version number on main page */
h3.version { 
  text-align:     center;
}
