/* Copyright (C) 2010-2013 International Business Machines Corporation and Others. All Rights Reserved. */

/* @override http://unicode.org/cldr/trac/chrome/icucodetools/css/icuxtn.css */

table.icureview tr:hover,
table.icureview tr:hover td,
table.icureview tr:hover th {
    background-color: yellow !important;
}

table.icureview {
	border-collapse: collapse;
	border:  1px solid gray;
}

table.icureview th, table.icureview td {
	text-align: left;
	border:  1px solid gray;
	padding:  2px;
}

table.icureview thead th {
	font-weight: bold;
}

table.icureview td.changes {
	text-align: right;
}

table.icureview td.overall  {
	background-color: silver;
	font-style: italic;
	text-align: right;
}

.branch-unknown {
	font-weight: normal;
	font-style:  italic;
}
.branch-tags {
	font-weight: bold;
	font-family: Georgia, "Times New Roman", Times, serif;
	color:  white;
	background-color: navy;
	padding:  1px;
}
.branch-branches {
	font-weight: normal;
	color:  #353;
}

.branch-trunk {
	font-weight: bold;
}


