html{
    height:100%;
}

body{
    background:#787878 url('background.gif');
    margin:0px;
    padding:0px;
    font-family: "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
    font-size: 76%;
    color:#4a4a4a;
    height:100%;
}   

a, a:visited {
    text-decoration : none;
    color : #eb5a0a;
}
a:hover {
    text-decoration : underline;
}

/* Containers */
#container{
    background:url('bg_container.png');
    /* De aloude <ie7 fix */    
    /* filter:progid:DXimageTransform.Microsoft.AlphaimageLoader(src='bg_container.png', sizingMethod='scale'); */
    width:927px;
    min-height:100%;
    margin-left:auto;
    margin-right:auto;
    padding-left:28px;
}

#header{
    background:#e8590a url('logo.png');
    width:899px;
    height:108px;
}

#content{
    width:899px;
    height:auto;
    overflow: auto; /* keeps footer inside */
}

p, table, h1, h2, h3, h4, h5, h6, h7, div.code {
    padding-left:25px;
    padding-right : 1em;
}

#navigation {
    background:#ffffff url('bg_menu.png') no-repeat 0px -2px;
    width:172px;
    min-height:200px;
    height:auto;
    float:left;
    padding-right:50px;
    padding-top:20px;
    padding-left : 0px;
    overflow : hidden;
    text-align:right;
}

#navigation h5{
    color:#eb5a0a;
    font-weight:bold;
    display:block;
    background:transparent url('menuknop.png') no-repeat left top;
    overflow : hidden;
    vertical-align:baseline;
    white-space : nowrap;
    width:120px;
    height:26px;
    padding-right:24px;
    padding-left : 0px;
    font-size:1.2em;
    margin-top:1em;
    margin-bottom:0px;
    float:right;
}

#navigation ul{
    text-align:right;
    display:block;
    float:right;
    margin:0px;
    padding-right:24px;
    list-style:none;
    line-height:1.5em;
    font-weight:bold;
}

#navigation a{
    text-decoration:none;
    color:#4a4a4a;
}


#contentbody{
    background:#ffffff;
    width:668px;
    padding-top:20px;
    height:auto;
    float:left
}

h1, h2, .blogHeading {
    color:#eb5a0a;
    font-weight:bold;
    font-size:1.2em;
    background:#ffffff;
    height:1.5em;
    display:block;
    text-decoration : none;
}

h1 {
    background:#ffffff url('wicket.png') no-repeat left bottom;
    min-height : 20px;
    height : 20px;
}

.blogSurtitle, a.blogDate {
    color:#4a4a4a;
    font-size : 90%;
}
a.blogDate {
    padding-left:25px;
}
.endsection {
    display : none;
}

#logo span, #incubator span {
    display : none;
}

#logo {
    background: #ffffff url('logo.png') no-repeat left bottom;
    height : 108px;
    width : 300px;
    position : absolute;
    /*top : -9px;*/
    margin-top : 0px;
}

#incubator {
    display : none;
    background: #ffffff url('nowincubating.png') no-repeat left bottom;
    height : 97px;
    width : 139px;
    padding-top : 4em;
}

#footer{
    background:#ffffff url('footer.png') no-repeat bottom left;
    width:699px;
    margin: 20px 0;
	padding-left : 200px;
}

#clearer{
    clear:both;
    height:1px;
}

#footer span{
    font-size:90%;
}

.blogSurtitle img, .rendericon {
    display : none;
}

div.code {
    margin-right : 25px;
    margin-left : 25px;
    padding-left : 25px;
    padding-right : 25px;
    border : thin solid black;
}
.confluenceTable {
    width : 100%;
}

.confluenceTable div.code {
    margin-right : 0;
    margin-left : 0;
    padding-left : 0;
    padding-right : 0;
    border : thin solid black;
}
.confluenceTd {
    vertical-align : top;
}

pre, code {
    font-family: "Lucida Sans", "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
}

span.code-keyword {
    font-weight : bold;
}
span.code-tag {
    font-weight : bold;
}

span sup {
    display : none;
}

/* Windows Lucida font fix */
#navigation ul, strong, em, h1, h2, h3, h4, h5, h6 {
    font-family: "Lucida Sans", "Lucida Sans Unicode", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
}

div.highlight {
	border : 1px solid #DDD;
	margin-left : 25px;
	padding : 0 10px;
}
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #999988; font-style: italic } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { font-weight: bold } /* Keyword */
.highlight .o { font-weight: bold } /* Operator */
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #999999 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { font-weight: bold } /* Keyword.Constant */
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
.highlight .kn { font-weight: bold } /* Keyword.Namespace */
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #009999 } /* Literal.Number */
.highlight .s { color: #bb8844 } /* Literal.String */
.highlight .na { color: #008080 } /* Name.Attribute */
.highlight .nb { color: #999999 } /* Name.Builtin */
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
.highlight .no { color: #008080 } /* Name.Constant */
.highlight .ni { color: #800080 } /* Name.Entity */
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
.highlight .nn { color: #555555 } /* Name.Namespace */
.highlight .nt { color: #000080 } /* Name.Tag */
.highlight .nv { color: #008080 } /* Name.Variable */
.highlight .ow { font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #009999 } /* Literal.Number.Float */
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
.highlight .sb { color: #bb8844 } /* Literal.String.Backtick */
.highlight .sc { color: #bb8844 } /* Literal.String.Char */
.highlight .sd { color: #bb8844 } /* Literal.String.Doc */
.highlight .s2 { color: #bb8844 } /* Literal.String.Double */
.highlight .se { color: #bb8844 } /* Literal.String.Escape */
.highlight .sh { color: #bb8844 } /* Literal.String.Heredoc */
.highlight .si { color: #bb8844 } /* Literal.String.Interpol */
.highlight .sx { color: #bb8844 } /* Literal.String.Other */
.highlight .sr { color: #808000 } /* Literal.String.Regex */
.highlight .s1 { color: #bb8844 } /* Literal.String.Single */
.highlight .ss { color: #bb8844 } /* Literal.String.Symbol */
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #008080 } /* Name.Variable.Class */
.highlight .vg { color: #008080 } /* Name.Variable.Global */
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
