.sortListBody { margin:0; padding:0; background:#fff; }
.soria .sortListBody li,
.tundra .sortListBody li {
	border-bottom:1px solid #b7b7b7;
	padding:2px 2px 2px 5px;	
}
.sortListTitle {
	cursor:pointer; 
	padding:4px 4px 3px 4px;
}
.sortList { height:100%; width:100%; }
.dijitBorderContainer .dojoxSortList { width: auto; height: auto;}
.sortListBodyWrapper { 
	border:1px solid #b7b7b7; 
	overflow:auto; 
	height:100%; 
	cursor:pointer;
} 
.soria .sortListBodyWrapper {
	border:1px solid #333; 
}
.soria .sortListItemOdd,
.tundra .sortListItemOdd { background:#f2f5f9; }
.tundra .sortListTitle {
	background:#fafafa url('../../../dijit/themes/tundra/images/titleBarBg.gif') repeat-x top left; 
	border:1px solid #bfbfbf;
	border-bottom:0;
}
.soria .sortListTitle {
	background:#4f8ce5 url('../../../dijit/themes/soria/images/titleBar.png') repeat-x top left;
	background-position:0px -1px; 
	border:1px solid #333; 
	border-bottom:0;
	font-weight:bold;
	color:#fff; 
}
.sortListItemSelected { background:#b7cdee !important; }
.sortListItemHover { background:#ff6 !important; }
.soria .sortListIcon,
.tundra .sortListIcon { 
	float:right;
	background:url('../../../dijit/themes/tundra/images/spriteArrows.png') no-repeat;
	width: 7px;
}
.tundra .sortListDesc .sortListIcon {
	background-position: 0px center;
}
.tundra .sortListAsc .sortListIcon {
	background-position: -21px center;
}
.soria .sortListDesc .sortListIcon,
.soria .sortListAsc .sortListIcon {
	background:url('../../../dijit/themes/soria/images/spriteRoundedIconsSmall.png') no-repeat -15px top;
}
.soria .sortListDesc .sortListIcon {
	background-position:-45px 0px; 
}
