/*
 * Default CSS style sheet for the ICU4C Open Source readme
 * Copyright (C) 2005-2009, International Business Machines
 * Corporation and others.  All Rights Reserved.
 */

/* Global styles */

body,p,li,ol,ul,th,td {
	font-size: 10pt;
	font-family: "Arial", "Helvetica", sans-serif;
}

body {
	margin: 1em;
}

body.draft {
	background-image: url(images/draftbg.png);
}

.mainbody {
	padding: 1em;
}

/*
 * Customize the headers to have less space around them than usual
 */

h1 {
	margin-bottom: .5em;
	margin-top: .5em;
	padding-bottom: .5em;
	padding-top: .5em;
	font-weight: 700;
	font-size: 20pt;
	font-family: Georgia, "Times New Roman", Times, serif;
	border-width: 2px;
	border-style: solid;
	text-align: center;
	width: 100%;
	font-size: 200%;
	font-weight: bold;
}

h2 {
	border-top: 2px solid #22d;
	border-left: 2px solid #22d;
	margin-bottom: 0.5em;
	padding-left: 4px;
	margin-top: 12pt;
	font-weight: 700;
	font-size: 2em;
	font-family: Georgia, "Times New Roman", Times, serif;
	background-color: #eee;
	page-break-before: always;
}

h2 a {
	text-decoration: none;
	color: black;
}

h2 a:hover {
	color: blue;
	text-decoration: underline;
}

h3 {
	border-top: 1px solid gray;
	color: #1e1c46;
	margin-bottom: 0pt;
	margin-top: 12pt;
	padding-left: 0;
	margin-left: 1em;
	margin-top: 0.2em;
	padding-bottom: 0.4em;
	font-size: 1.5em;
	font-family: Georgia, "Times New Roman", Times, serif;
}

h3 a {
	text-decoration: none;
	color: black;
}

h3 a:hover {
	color: blue;
	text-decoration: underline;
}

h4 {
	margin-left: 1.5em;
	margin-bottom: 0pt;
	margin-top: 12pt;
	font-size: 1.0em;
	font-weight: bolder;
	font-family: Georgia, "Times New Roman", Times, serif;
}

h4 a {
	text-decoration: none;
	color: black;
}

h4 a:hover {
	color: blue;
	text-decoration: underline;
}

h5, h6 {
	margin-left: 1.8em;
	margin-bottom: 0pt;
	margin-top: 12pt;
	padding-left: 0.75em;
	font-size: x-small;
	font-family: Georgia, "Times New Roman", Times, serif;
}

p,pre,table,ul,ol,dl {
	margin-left: 2em;
}

/*
 * Navigation sidebar on the left hand of most pages
 */

td.sidebar1 {
	background-color: #99CCFF;
	font-weight: 700;
	margin-top: 0px;
	margin-bottom: 0px;
	padding-top: 1em;
	padding-left: 0.2em;
	white-space: nowrap;
}

td.sidebar2 {
	background-color: #99CCFF;
	margin-top: 0px;
	margin-bottom: 0px;
	margin-left: 0px;
	padding-top: 1px;
	padding-bottom: 1px;
	padding-left: 1px;
	padding-right: 0.5em;
	white-space: nowrap;
	text-decoration: none;
	display: block;
}

td.sidebar2:hover {
	background-color: #EEEEFF;
	padding-top: 1px;
	padding-bottom: 1px;
	padding-left: 1px;
	padding-right: 0.5em;
}

a.sidebar2 {
	text-decoration: none;
	display: block;
	width: 100%;
}

a.sidebar2:link {
	color: #000099;
	display: block;
}

a.sidebar2:hover {
	background-color: #EEEEFF;
	display: block;
}

.underlinehover:hover {
	background-color: #EEEEFF;
	text-decoration: underline;
}

/* This is the faded header at the top */

td.fadedtop {
	background-color: #006699;
	background-image: url(http://www.icu-project.org/images/gr100.gif);
}

/* Related site on the left */

p.relatedsite {
	color: White;
	font-weight: 700;
	font-size: 10pt;
	margin-top: 1em;
	margin-bottom: 0;
	padding-left: 0.2em;
	white-space: nowrap;
}

/* Related site on the left */

p.sidebar3 {
	margin-top: 0.75em;
	margin-bottom: 0;
	padding-left: 0.8em;
}

a.sidebar3 {
	font-size: 0.9em;
	text-decoration: none;
}

a.sidebar3:link {
	text-decoration: none;
	color: White;
}

a.sidebar3:hover {
	text-decoration: underline;
}

/* FAQ */

li.faq_contents {
	font-weight: 500;
}

p.faq_q {
	font-weight: 700;
	margin-bottom: 0px;
}

p.faq_a {
	margin-top: 0px;
}

/* News items */

table.newsItem {
	padding-left: 1em;
	padding-right: 1em;
	border-width: medium;
}

th.newsItem {
	background-color: #666666;
	color: White;
}

td.newsItem {
	background-color: #CCCCCC;
}

td.release-line,th.release-line {
	padding-left: 0.5em;
	padding-right: 0.5em;
	white-space: nowrap;
	border: 1px;
}

.note {
	font-style: italic;
	font-size: small;
	margin-left: 1em;
}

samp {
	margin-left: 1em;
	margin-right: 2em;
	border-style: groove;
	padding: 1em;
	display: block;
	background-color: #EEEEEE
}

table.rtable caption {
	margin-left: 2px;
	margin-right: 2px;
	padding: 3px;
	font-weight: bold;
	background-color: #dee2ff;
	text-align: left;
}

table.rtable tr th {
	background-color: #dee2ff;
	text-align: left;
}

table.rtable tr td {
	background-color: #c0c0fd;
	padding: 3px;
}

table.rtable tr.broken td {
	background-color: #fbb;
	border: 1px dashed gray;
	padding: 3px;
	font-weight: bold;
}

table.rtable tr.rarely td {
	background-color: #efe9c2;
	padding: 3px;
	font-style: italic;
}

/*  APIChangeReport specific things */

.row0 {
	background-color: white;
}

.row1 {
	background-color: #dfd;
}

.verchange {
	color: red;
	font-weight: bold;
	font-size: large;
}

.stabchange {
	color: red;
	font-size: large;
}

.bigwarn {
	color: red;
	background-color: white;
	font-size: x-large;
	margin: 0.5 em;
}

table.genTable {
	border-collapse: collapse;
	border: 1px solid black;
}

/* 'everything inc version */

table.gentable td {
	border: 1px solid gray;
	padding: 0.25em;
	font-size: small;
}

/* not version */

table.genTable td.file,
table.genTable td.proto {
	border: none;
	font-size: medium;
}

table.genTable td.file {
	font-family: monospace;
	font-weight: bold;
}

div.other .row0 {
	background-color: white;
}

div.other .row1 {
	background-color: #ddf;
}

table.docTable {
	border-collapse: collapse;
	border: 1px solid black;
}

/* 'everything inc version */

table.docTable td,
table.docTable th {
	border: 1px solid gray;
	padding: 0.25em;
	font-size: small;
}

/* not version */

table.docTable td.file,
table.docTable td.proto {
	border: none;
	font-size: medium;
}

table.docTable td.file {
	font-family: monospace;
	font-weight: bold;
}

abbr {
	border-bottom: 1px dashed #0B0;
}

h2.TOC {
	page-break-before: auto;
}

body.readme {
	
}

caption {
	font-weight: bold;
	text-align: left
}

div.indent {
	margin-left: 2em
}

ul.TOC {
	list-style-type: none;
	padding-left: 1em;
	font-size: larger;
}

ul.TOC li a {
	font-weight: bold;
}

ul.TOC li ul li a {
	font-weight: normal;
	list-style-type: none;
	font-size: small;
}

ul.TOC li ul {
	margin-left: 0;
	padding-left: 2em;
	font-weight: normal;
	list-style-type: none;
}

pre.samp,samp {
	margin-left: 1em;
	border-style: groove;
	padding: 1em;
	display: block;
	background-color: #EEEEEE
}