/* */

* {
    margin:		0px;
    padding:		0px;
}

body {
    background:		white;
}

#announces {
/*  border-top:		2px solid black; */
    border-bottom:	2px solid black;
    padding:		2.0em auto;
    font-size:		1.5em; 
}

#announces>div {
    margin:		0.7em auto;
}

#bigcontainer {
    padding-right:	4em;
}

div#pageheadline {
/*  position:		absolute;	*/
    top:		0px;
    left:		0px;
    height:		105px;
    padding:		2px;
/*  border:		1px solid red;	*/
/*  width:		805px;		*/
}

#pageheadline a:link {
    margin:	0;
    padding:	2px;
}


div.headline {
    moz-box-shadow:	10px 10px 5px #888;
    font-size:			22pt;
    text-align:		left;
    margin-left:		170px;
    padding:			0.5em;
    margin-top:		20px;
    margin-bottom:	20px;
    position:   		relative;
/*  width:		20em;		*/
    border:				1px solid blue; 
}

div.decoration {
    float:				left;
/*  
    width:	     	100px;
    background-color: 	lightblue; 
*/
}

div#pagecontents {
/*    position:	    	absolute;	*/
    margin-top:		1em;
    top:	    			105px;
    left:	    		0px;
/*  border:	    	1px solid green; */
/*  width:	    	804px;		 */
}

#pagecontents img {
     border:			1px solid black;
     padding:			1px;
}

div.navbar {
/*  width:	    	10em;		*/
    width:				160px;
    position:	    	relative;
    padding:	    	2px;
    font-family:		Arial,sans-serif;
    font-size:			0.8em;
/*  border:	    	1px dashed Navy; */
}

div.navleft {
    float:	    	left;
}

div.navright {
    float:	    	right;
}

div.staticmenu {
    margin-top:	   2px;
    margin-bottom:	1em;
/*  border:	    	1px solid blue; */
}

div.menuheader {
    border-top:		1px solid black;
    padding-top:	4px;
    padding-bottom:	4px;
    background-color: 	#eee;
}

span.navitem {
/*  font-size:	    	70%;		*/
    display:	    	block;
    margin:		0.5em;
}

span.navitem a {
    text-decoration:	none;
    padding:		2px;
}

span.navitem a:hover {
    background-color:	#eee;
    border:		1px solid #808080;
}

div#content {
    margin-top:	    	2px;
    font-size:		10pt;
    position:	    	relative;
    margin-left:    	162px;		
/*  margin-right:   	162px;		*/
/*  border:	    	1px solid red;  */
    text-align:	    	justify;
    padding:	    	0.5em;
/*  width:		60em;		*/
    font-family:	Arial,sans-serif;
/*  background-color:	#ffff99;	*/
}

#content p {
    margin:		0.8em auto;
}

#last_modified {
    border-top:		1px solid #ccc;
    font-size:		80%;
    padding:		5px;
    text-align:		right;
    margin-top:		2em;
}

.example-contents p {
    width:		90%;
}

.example-contents pre {
    margin:		auto 5% auto 5%;
}

.foto {
    float:  		left;
    margin-right:   	0.5em;
}

#intestazione {
    top:		0px;
    left:		103px;
/*  width:		604px;		*/
}

#intestazione img {
    top:	    	0px;
}

#footer .rightaligned {
    margin-right:	1em;
    text-align:		right;
    width:		50%;
    float:		right;
}

#footer .leftaligned {
    margin-left:	0.5em;
    text-align:		left;
    width:		40%;
    float:		left;
}

div#footer {
    margin-top:	    	0.3em;
    border:	    	1px dotted red;
    background-color: 	#cf9;
    height:	    	1.5em;
}

.contentheadline {
    text-align:	 	center;
    font-size:		150%;
    font-weight:	bold;
    border-bottom:	1px solid #ccc;
    margin-bottom:	1em;
}

ul {
    margin-top:	    	0.8em;
    margin-left:    	2em;
}

.clearfloats {
    clear:		both;
}

code {
    border-bottom:	1px dashed black;
    background-color:	#f0f0f0;
    padding:		2px;
    font-style:		fixed;
}

pre.code {
    padding:		1ex;
}

blockquote {
    font-size:		smaller;
    font-style:		italic;
}

span.type {
    color:		#4682B4;
}

td {
    padding:		0.5em;
}

td.code {
    font-size: 		smaller;
    background-color:	black;
    border:		1em solid white;
    color:		white;
}

.programlisting {
    background:	    #ddd; 
    margin:	    2ex; 
    margin-right:   10%;       
    padding:	    1ex; 
    border:	    dashed black 1px ; 
    white-space:    pre;      
    font-family:    monospace; 
    font-size:	    90%;
}

span.variable-name {
	 color: #228b22;
} /* font-lock-variable-name-face */

span.comment {
	color: #ff7f24;
} /* font-lock-comment-face */

span.keyword {
	color: #00ffff;
} /* font-lock-keyword-face */

span.function-name {
	color: #87cefa;
} /* font-lock-function-name-face */

li {
    margin:	1em;
}

#maincontent div.sez:first-child {
    border-top:	    none;
    margin-top:	    2em auto;
}

div.sez {
    margin:	    2em auto;
    border-top:	    1px solid #ccc;
}

div.sez h4 {
    margin-top:	    0.5em;
}

span.timestamp {
	font-size:	80%;	
}
