From bb740579c7cea110fb8c57e7b0cb9c48759f281a Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 9 Jul 2014 13:50:34 +0200
Subject: [PATCH] OO-1068:  bootstrapify translation tool

---
 .../flexible/elements/SelectionElement.java   |   3 +
 .../impl/elements/MultiSelectionTree.java     |   6 -
 .../MultipleSelectionElementImpl.java         |  15 +-
 .../elements/MultipleSelectionRenderer.java   |  22 +-
 .../impl/elements/SelectboxSelectionImpl.java |   6 +-
 .../impl/elements/SingleSelectionImpl.java    |   7 +-
 .../elements/TextAreaElementRenderer.java     |  43 ++--
 .../progressbar/ProgressBarRenderer.java      |  17 +-
 ...lationToolI18nItemEditCrumbController.java |  60 +++---
 .../TranslationToolStartCrumbController.java  |  35 ++--
 .../_content/translationToolI18nItemEdit.html |  68 +++----
 .../_content/translationToolI18nItemList.html |  16 +-
 .../ui/_content/translationToolLauncher.html  |  68 +++----
 .../_content/translationToolStartCrumb.html   | 191 ++++++------------
 .../i18n/ui/_i18n/LocalStrings_de.properties  |   2 +-
 .../static/themes/light/modules/_icons.scss   |   4 +
 src/main/webapp/static/themes/light/theme.css |   2 +-
 17 files changed, 250 insertions(+), 315 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/SelectionElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/SelectionElement.java
index bc9551cde60..048a1d26934 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/SelectionElement.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/SelectionElement.java
@@ -70,4 +70,7 @@ public interface SelectionElement extends FormItem, FormBaseComponentIdProvider{
 	 */
 	public boolean isMultiselect();
 	
+	
+	public void setDomReplacementWrapperRequired(boolean required);
+	
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultiSelectionTree.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultiSelectionTree.java
index 6bec055dbef..75f3124a741 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultiSelectionTree.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultiSelectionTree.java
@@ -31,7 +31,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.tree.TreeModel;
 import org.olat.core.gui.components.tree.TreeNode;
 import org.olat.core.util.tree.INodeFilter;
@@ -96,11 +95,6 @@ public class MultiSelectionTree extends MultipleSelectionElementImpl {
 		((SelectionTreeComponent)component).setComponents(checkboxitems);
 	}
 
-	@Override
-	protected Component getFormItemComponent() {
-		return component;
-	}
-
 	/*
 	 * Methods below are needed to set the correct component dirty because this
 	 * weired construct in this class otherwhise sets an invisible component
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
index 7b196ec77c1..18b96086e56 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionElementImpl.java
@@ -33,7 +33,6 @@ import java.util.Set;
 
 import org.olat.core.gui.GUIInterna;
 import org.olat.core.gui.UserRequest;
-import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
 import org.olat.core.gui.components.form.flexible.impl.FormItemImpl;
 import org.olat.core.logging.OLog;
@@ -63,6 +62,7 @@ public class MultipleSelectionElementImpl extends FormItemImpl implements Multip
 	private String[] original = null;
 	private boolean originalIsDefined = false;
 	private boolean escapeHtml = true;
+	private boolean domReplacementWrapperRequired = true;
 
 	public MultipleSelectionElementImpl(String name) {
 		this(name, Layout.horizontal, 1);
@@ -79,6 +79,16 @@ public class MultipleSelectionElementImpl extends FormItemImpl implements Multip
 		this.columns = columns;
 	}
 	
+	
+	
+	@Override
+	public void setDomReplacementWrapperRequired(boolean required) {
+		domReplacementWrapperRequired = required;
+		if(component != null) {
+			component.setDomReplacementWrapperRequired(required);
+		}
+	}
+
 	public Layout getLayout() {
 		return layout;
 	}
@@ -340,6 +350,7 @@ public class MultipleSelectionElementImpl extends FormItemImpl implements Multip
 		// create and add selectbox element
 		String ssscId = getFormItemId() == null ? null : getFormItemId() + "_SELBOX";
 		component = new MultipleSelectionComponent(ssscId, this);
+		component.setDomReplacementWrapperRequired(domReplacementWrapperRequired);
 		component.setCheckComponents(ssecs);
 	}
 
@@ -356,7 +367,7 @@ public class MultipleSelectionElementImpl extends FormItemImpl implements Multip
 	}
 
 	@Override
-	protected Component getFormItemComponent() {
+	protected MultipleSelectionComponent getFormItemComponent() {
 		return component;
 	}
 
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionRenderer.java
index 7bb83ff2e0c..fee056d3bf7 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/MultipleSelectionRenderer.java
@@ -57,13 +57,21 @@ public class MultipleSelectionRenderer extends DefaultComponentRenderer {
 		}
 	}
 	
+	private StringOutput appendIdIfRequired(StringOutput sb, MultipleSelectionComponent stC) {
+		if(!stC.isDomReplacementWrapperRequired()) {
+			sb.append(" id='").append(stC.getDispatchID()).append("'");
+		}
+		return sb;
+	}
+	
 	private void renderVertical(StringOutput sb, MultipleSelectionComponent stC) {
 		for(CheckboxElement check:stC.getCheckComponents()) {
-			sb.append("<div class='checkbox'>");
+			sb.append("<div ");
+			appendIdIfRequired(sb, stC).append(" class='checkbox'>");
 			renderCheckbox(sb, check, stC, false);
 			sb.append("</div>");
 		}
-	} 	
+	}
 
 	private void renderMultiColumnsVertical(StringOutput sb, MultipleSelectionComponent stC, int columns) {
 		String columnCss;
@@ -76,7 +84,8 @@ public class MultipleSelectionRenderer extends DefaultComponentRenderer {
 			columnCss = "col-sm-3";
 		}
 
-		sb.append("<div class='container-fluid'>");
+		sb.append("<div ");
+		appendIdIfRequired(sb, stC).append(" class='container-fluid'>");
 		CheckboxElement[] checks = stC.getCheckComponents();
 		for(int i=0; i<checks.length; ) {
 			sb.append("<div class='row'>");
@@ -96,7 +105,8 @@ public class MultipleSelectionRenderer extends DefaultComponentRenderer {
 	}
 	
 	private void renderHorizontal(StringOutput sb, MultipleSelectionComponent stC) {
-		sb.append("<div class='form-inline'>");
+		sb.append("<div ");
+		appendIdIfRequired(sb, stC).append(" class='form-inline'>");
 		for(CheckboxElement check:stC.getCheckComponents()) {
 			renderCheckbox(sb, check, stC, true);
 		}
@@ -141,12 +151,12 @@ public class MultipleSelectionRenderer extends DefaultComponentRenderer {
 		}
 		sb.append(" />");
 		if (StringHelper.containsNonWhitespace(value)) {
-			sb.append(value);		
+			sb.append(" ").append(value);		
 		}
 		sb.append("</label>");
 			
 		if(stC.isEnabled()){
-				//add set dirty form only if enabled
+			//add set dirty form only if enabled
 			sb.append(FormJSHelper.getJSStartWithVarDeclaration(stF.getFormDispatchId()))
 			  .append(FormJSHelper.getSetFlexiFormDirtyForCheckbox(stF.getRootForm(), stF.getFormDispatchId()))
 			  .append(FormJSHelper.getJSEnd());
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SelectboxSelectionImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SelectboxSelectionImpl.java
index 5b71e802b2b..ee6cb270b1a 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SelectboxSelectionImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SelectboxSelectionImpl.java
@@ -71,7 +71,11 @@ public class SelectboxSelectionImpl extends FormItemImpl implements SingleSelect
 		
 		String ssscId = getFormItemId() == null ? null : getFormItemId() + "_SELBOX";
 		component = new SelectboxComponent(ssscId , getName() + "_SELBOX", translator, this);
-		
+	}
+
+	@Override
+	public void setDomReplacementWrapperRequired(boolean required) {
+		component.setDomReplacementWrapperRequired(required);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SingleSelectionImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SingleSelectionImpl.java
index 22d5b2e8aa0..d955eb6b2bb 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SingleSelectionImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/SingleSelectionImpl.java
@@ -53,7 +53,7 @@ public class SingleSelectionImpl extends FormItemImpl implements SingleSelection
 	private int selectedIndex = -1;
 
 	private final Layout layout;
-	private SingleSelectionComponent component;
+	private final SingleSelectionComponent component;
 	
 	/**
 	 * @param name
@@ -74,6 +74,11 @@ public class SingleSelectionImpl extends FormItemImpl implements SingleSelection
 		component = new SingleSelectionComponent(id, this);
 	}
 
+	@Override
+	public void setDomReplacementWrapperRequired(boolean required) {
+		component.setDomReplacementWrapperRequired(required);
+	}
+
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.elements.SingleSelectionContainer#getSelected()
 	 */
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java
index 8fe70b3895b..189154872de 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java
@@ -82,31 +82,20 @@ class TextAreaElementRenderer extends DefaultComponentRenderer {
 		//
 		if (!source.isEnabled()) {
 			//read only view
-			sb.append("<span id=\"");
-			sb.append(id);
-			sb.append("\" ");
-			sb.append(FormJSHelper.getRawJSFor(te.getRootForm(), id, te.getAction()));
-			sb.append("title=\"");
-			sb.append(value); //the uncutted value in tooltip
-			sb.append("\" "); 
-			sb.append(" >");
-			sb.append("<textarea id=\"");
-			sb.append(id);
-			sb.append("_disabled\" readonly class=\"b_form_element_disabled\"");
+			sb.append("<span id=\"").append(id).append("\" ")
+			  .append(FormJSHelper.getRawJSFor(te.getRootForm(), id, te.getAction()))
+			  .append(" ><textarea id=\"")
+			  .append(id)
+			  .append("_disabled\" readonly='readonly' class='form-control o_form_element_disabled'");
 			if (teC.getCols() != -1) {
-				sb.append(" cols=\"");
-				sb.append(teC.getCols());
-				sb.append("\"");
+				sb.append(" cols='").append(teC.getCols()).append("'");
 			}
 			if (rows != -1) {
-				sb.append(" rows=\"");		
-				sb.append(rows);
-				sb.append("\"");
+				sb.append(" rows='").append(rows).append("'");
 			}
-			sb.append(">");
-			sb.append(value);
-			sb.append("</textarea>");
-			sb.append("</span>");
+			sb.append(">")
+			  .append(value)
+			  .append("</textarea></span>");
 	
 		} else {
 			//read write view
@@ -142,17 +131,11 @@ class TextAreaElementRenderer extends DefaultComponentRenderer {
 			sb.append("');while (obj.scrollHeight>obj.offsetHeight && iter < 99){ iter++; obj.rows = obj.rows + 1}} catch(e){}});</script>");
 		}
 		
-
 		if(source.isEnabled()){
 			//add set dirty form only if enabled
-			sb.append(FormJSHelper.getJSStartWithVarDeclaration(teC.getFormDispatchId()));
-			/* deactivated due OLAT-3094 and OLAT-3040
-			if(te.hasFocus()){
-				sb.append(FormJSHelper.getFocusFor(teC.getFormDispatchId()));
-			}
-			*/
-			sb.append(FormJSHelper.getSetFlexiFormDirty(te.getRootForm(), teC.getFormDispatchId()));
-			sb.append(FormJSHelper.getJSEnd());
+			sb.append(FormJSHelper.getJSStartWithVarDeclaration(teC.getFormDispatchId()))
+			  .append(FormJSHelper.getSetFlexiFormDirty(te.getRootForm(), teC.getFormDispatchId()))
+			  .append(FormJSHelper.getJSEnd());
 		}
 	}
 }
diff --git a/src/main/java/org/olat/core/gui/components/progressbar/ProgressBarRenderer.java b/src/main/java/org/olat/core/gui/components/progressbar/ProgressBarRenderer.java
index 6fe73d2bba5..e00c313524d 100644
--- a/src/main/java/org/olat/core/gui/components/progressbar/ProgressBarRenderer.java
+++ b/src/main/java/org/olat/core/gui/components/progressbar/ProgressBarRenderer.java
@@ -48,9 +48,10 @@ public class ProgressBarRenderer extends DefaultComponentRenderer {
 	 *      org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator,
 	 *      org.olat.core.gui.render.RenderResult, java.lang.String[])
 	 */
+	@Override
 	public void render(Renderer renderer, StringOutput target, Component source, URLBuilder urlBuilder, Translator translator,
 			RenderResult renderResult, String[] args) {
-		// Get the model object
+
 		ProgressBar ubar = (ProgressBar) source;
 		boolean renderLabels = (args == null) ? true : false;
 		float percent = 100;
@@ -62,10 +63,9 @@ public class ProgressBarRenderer extends DefaultComponentRenderer {
 			.append("px;\"><div class='progress-bar' style=\"width:")
 			.append(Math.round(percent * ubar.getWidth() / 100))
 			.append("px\" title=\"")
-			.append(Math.round(percent * ubar.getWidth() / 100))
-			.append("%\"></div>");
+			.append(Math.round(percent))
+			.append("%\">");
 		if (renderLabels) {
-			target.append("<div class=\"b_progress_label\">");
 			if (ubar.isPercentagesEnabled()) {
 				target.append(Math.round(percent));
 				target.append("% (");
@@ -78,15 +78,12 @@ public class ProgressBarRenderer extends DefaultComponentRenderer {
 			target.append(ubar.getUnitLabel());
 			if (ubar.isPercentagesEnabled()) {
 				target.append(")");				
-			}
-			target.append("</div>");				
+			}				
 		}
 		String info = ubar.getInfo();
 		if(StringHelper.containsNonWhitespace(info)) {
-			target.append("<div class=\"b_progress_label\">")
-				.append(info)
-				.append("</div>");
+			target.append(info);
 		}
-		target.append("</div>");
+		target.append("</div></div>");
 	}
 }
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java
index f956f1cc162..623041283b7 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java
+++ b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolI18nItemEditCrumbController.java
@@ -29,7 +29,6 @@ import org.apache.commons.lang.StringUtils;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
-import org.olat.core.gui.components.form.flexible.FormUIFactory;
 import org.olat.core.gui.components.form.flexible.elements.FormLink;
 import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement;
 import org.olat.core.gui.components.form.flexible.elements.SingleSelection;
@@ -80,8 +79,7 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo
 	private FormLink previousLink, saveLink, saveNextLink, nextLink, annotationAddLink;
 	private ProgressBar progressBarBundle, progressBarKey;
 
-	private static final String KEYS_ENABLED = "enabled";
-	private static final String KEYS_EMPTY = "";
+	private static final String[] KEYS_ENABLED = new String[]{ "enabled" };
 	// true when the overlay files are edited and not the language files itself
 	private boolean customizingMode = false;
 	
@@ -160,7 +158,6 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo
 	 */
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-		FormUIFactory formFactory = FormUIFactory.getInstance();
 		I18nManager i18nMgr = I18nManager.getInstance();
 		Preferences guiPrefs = ureq.getUserSession().getGuiPreferences();
 		flc.contextPut("referenceLanguageKey", referenceLocale.toString());
@@ -178,26 +175,31 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo
 		}
 		String[] bundlesListArray = ArrayHelper.toArray(bundlesList);
 		String[] keysListArray = ArrayHelper.toArray(keysList);
-		bundlesSelection = formFactory.addDropdownSingleselect("bundlesSelection", this.flc, bundlesListArray, bundlesListArray, null);
+		bundlesSelection = uifactory.addDropdownSingleselect("bundlesSelection", this.flc, bundlesListArray, bundlesListArray, null);
+		bundlesSelection.setDomReplacementWrapperRequired(false);
 		bundlesSelection.addActionListener(FormEvent.ONCHANGE);
 		bundlesSelection.select(currentItem.getBundleName(), true);
-		keysSelection = formFactory.addDropdownSingleselect("keysSelection", this.flc, keysListArray, keysListArray, null);
+		keysSelection = uifactory.addDropdownSingleselect("keysSelection", this.flc, keysListArray, keysListArray, null);
+		keysSelection.setDomReplacementWrapperRequired(false);
 		keysSelection.addActionListener(FormEvent.ONCHANGE);
 		keysSelection.select(currentItem.getKey(), true);
 		// Add reference box
-		referenceArea = formFactory.addTextAreaElement("referenceArea", "edit.referenceArea", -1, 1, -1, true, null, this.flc);
+		referenceArea = uifactory.addTextAreaElement("referenceArea", "edit.referenceArea", -1, 1, -1, true, null, this.flc);
 		referenceArea.setEnabled(false); // read only
 		// Add compare box
 		Boolean compareEnabledPrefs = (Boolean) guiPrefs.get(I18nModule.class, I18nModule.GUI_PREFS_COMPARE_LANG_ENABLED, Boolean.FALSE);
-		compareArea = formFactory.addTextAreaElement("compareArea", "edit.compareArea", -1, 1, -1, true, null, this.flc);
+		compareArea = uifactory.addTextAreaElement("compareArea", "edit.compareArea", -1, 1, -1, true, null, this.flc);
 		compareArea.setEnabled(false); // read only
 		compareArea.setVisible(compareEnabledPrefs.booleanValue());
-		compareSwitch = formFactory.addCheckboxesHorizontal("compareSwitch", null, this.flc, new String[] { KEYS_ENABLED },
-				new String[] { KEYS_EMPTY });//i18nLabel set to null -> disabled label
-		compareSwitch.select(KEYS_ENABLED, compareEnabledPrefs.booleanValue());
+		
+		String[] compareSwitchValues = new String[]{ translate("generic.enable") };
+		compareSwitch = uifactory.addCheckboxesVertical("compareSwitch", null, flc, KEYS_ENABLED, compareSwitchValues, 1);
+		compareSwitch.setDomReplacementWrapperRequired(false);
+		compareSwitch.select(KEYS_ENABLED[0], compareEnabledPrefs.booleanValue());
 		compareSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(compareSwitch);
-		this.flc.contextPut("compareSwitchEnabled", compareEnabledPrefs);
+		flc.contextPut("compareSwitchEnabled", compareEnabledPrefs);
+		
 		// Add compare language selection
 		Set<String> availableLangKeys = I18nModule.getAvailableLanguageKeys();
 		String[] comparelangKeys = ArrayHelper.toArray(availableLangKeys);
@@ -216,34 +218,36 @@ public class TranslationToolI18nItemEditCrumbController extends CrumbFormBasicCo
 				.getDefaultLocale().toString());
 		compareLocale = i18nMgr.getLocaleOrNull(comparePrefs);
 		if (compareLocale == null) compareLocale = I18nModule.getDefaultLocale();
-		compareLangSelection = formFactory.addDropdownSingleselect("compareLangSelection", this.flc, comparelangKeys, compareLangValues,
+		compareLangSelection = uifactory.addDropdownSingleselect("compareLangSelection", this.flc, comparelangKeys, compareLangValues,
 				compareLangCssClasses);
+		compareLangSelection.setDomReplacementWrapperRequired(false);
 		compareLangSelection.select(i18nMgr.getLocaleKey(compareLocale), true);
-		this.flc.contextPut("compareLanguageKey", i18nMgr.getLocaleKey(compareLocale));
+		flc.contextPut("compareLanguageKey", i18nMgr.getLocaleKey(compareLocale));
 		compareLangSelection.addActionListener(FormEvent.ONCHANGE);
 		compareLangSelection.setEnabled(compareEnabledPrefs.booleanValue());
+		
 		// Add target box
-		this.flc.contextPut("targetLanguageKey", i18nMgr.getLocaleKey(currentItem.getLocale()));
-		this.flc.contextPut("targetLanguage", i18nMgr.getLanguageTranslated(i18nMgr.getLocaleKey(currentItem.getLocale()), false));			
-		targetArea = formFactory.addTextAreaElement("targetArea", "edit.targetArea", -1, 1, -1, true, null, this.flc);
+		flc.contextPut("targetLanguageKey", i18nMgr.getLocaleKey(currentItem.getLocale()));
+		flc.contextPut("targetLanguage", i18nMgr.getLanguageTranslated(i18nMgr.getLocaleKey(currentItem.getLocale()), false));			
+		targetArea = uifactory.addTextAreaElement("targetArea", "edit.targetArea", -1, 5, -1, true, null, flc);
 		// Add annotation box
-		annotationArea = formFactory.addTextAreaElement("annotationArea", "edit.annotationArea", -1, 1, -1, true, null, this.flc);
+		annotationArea = uifactory.addTextAreaElement("annotationArea", "edit.annotationArea", -1, 1, -1, true, null, flc);
 		// Add progress bar
 		// init with values
-		progressBarBundle = new ProgressBar("progressBarBundle", 200, 1, bundlesList.size(), translate("generic.bundles"));
+		progressBarBundle = new ProgressBar("progressBarBundle", 300, 1, bundlesList.size(), translate("generic.bundles"));
 		progressBarBundle.setPercentagesEnabled(false);
-		this.flc.put("progressBarBundle", progressBarBundle);
-		progressBarKey = new ProgressBar("progressBarKey", 200, 1, keysList.size(), translate("generic.keys"));
+		flc.put("progressBarBundle", progressBarBundle);
+		progressBarKey = new ProgressBar("progressBarKey", 300, 1, keysList.size(), translate("generic.keys"));
 		progressBarKey.setPercentagesEnabled(false);
-		this.flc.put("progressBarKey", progressBarKey);
+		flc.put("progressBarKey", progressBarKey);
 		// Add navigation buttons
-		previousLink = new FormLinkImpl("previousLink", "previousLink", "edit.button.previous", Link.BUTTON);
-		formLayout.add(previousLink);
-		saveLink = new FormLinkImpl("saveLink", "saveLink", "edit.button.save", Link.BUTTON);
-		formLayout.add(saveLink);
-		saveNextLink = new FormLinkImpl("saveNextLink", "saveNextLink", "edit.button.saveNext", Link.BUTTON);
+		previousLink = uifactory.addFormLink("previousLink", "edit.button.previous", null, formLayout, Link.BUTTON);
+		previousLink.setIconLeftCSS("o_icon o_icon_previous_page");
+		saveLink = uifactory.addFormLink("saveLink", "edit.button.save", null, formLayout, Link.BUTTON);
+		saveNextLink = uifactory.addFormLink("saveNextLink", "edit.button.saveNext", null, formLayout, Link.BUTTON);
 		formLayout.add(saveNextLink);
-		nextLink = new FormLinkImpl("nextLink", "nextLink", "edit.button.next", Link.BUTTON);
+		nextLink = uifactory.addFormLink("nextLink", "edit.button.next", null, formLayout, Link.BUTTON);
+		nextLink.setIconRightCSS("o_icon o_icon_next_page");
 		formLayout.add(nextLink);
 		// init values from item
 		initOrUpdateCurrentItem(ureq);
diff --git a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java
index 68802ad76bd..668165d1469 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java
+++ b/src/main/java/org/olat/core/util/i18n/ui/TranslationToolStartCrumbController.java
@@ -249,7 +249,7 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController {
 		targetLangSelection.addActionListener(FormEvent.ONCHANGE);
 		// Add progress bar as normal component (not a form element)
 		int bundlesCount = i18nMgr.countBundles(null, true);
-		progressBar = new ProgressBar("progressBar", 200, 0, 0, translate("start.progressBar.unitLabel", bundlesCount + ""));
+		progressBar = new ProgressBar("progressBar", 300, 0, 0, translate("start.progressBar.unitLabel", bundlesCount + ""));
 		this.flc.put("progressBar", progressBar);
 	}
 
@@ -260,15 +260,17 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController {
 		missingBundlesSelection.addActionListener(FormEvent.ONCHANGE);
 		missingBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true);
 		// Add missing bundles children switch
+		String[] missingBundles = new String[] { translate("generic.limit.bundles.includeChildren") };
 		missingBundlesIncludeBundlesChildrenSwitch = formFactory.addCheckboxesHorizontal("missingBundlesIncludeBundlesChildrenSwitch", null,
-				this.flc, new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+				flc, new String[] { KEYS_ENABLED }, missingBundles);//disabled label by setting i18nLabel to null
 		missingBundlesIncludeBundlesChildrenSwitch.select(KEYS_ENABLED, true);
 		missingBundlesIncludeBundlesChildrenSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(missingBundlesIncludeBundlesChildrenSwitch);
 		missingBundlesIncludeBundlesChildrenSwitch.setEnabled(false);
 		// Add priority sort switch
+		String[] missingBundlesPrio = new String[] { translate("generic.sort.by.priority") };
 		missingBundlesPrioritySortSwitch = formFactory.addCheckboxesHorizontal("missingBundlesPrioritySortSwitch", null, this.flc,
-				new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+				new String[] { KEYS_ENABLED }, missingBundlesPrio);//disabled label by setting i18nLabel to null
 		missingBundlesPrioritySortSwitch.select(KEYS_ENABLED, true);
 		missingBundlesPrioritySortSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(missingBundlesPrioritySortSwitch);
@@ -286,15 +288,17 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController {
 		existingBundlesSelection.addActionListener(FormEvent.ONCHANGE);
 		existingBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true);
 		// Add existing bundles children switch
+		String[] existingBundlesInclude = new String[]{ translate("generic.limit.bundles.includeChildren") };
 		existingBundlesIncludeBundlesChildrenSwitch = formFactory.addCheckboxesHorizontal("existingBundlesIncludeBundlesChildrenSwitch", null, 
-				this.flc, new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+				flc, new String[] { KEYS_ENABLED }, existingBundlesInclude);//disabled label by setting i18nLabel to null
 		existingBundlesIncludeBundlesChildrenSwitch.select(KEYS_ENABLED, true);
 		existingBundlesIncludeBundlesChildrenSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(existingBundlesIncludeBundlesChildrenSwitch);
 		existingBundlesIncludeBundlesChildrenSwitch.setEnabled(false);
 		// Add priority sort switch
-		existingBundlesPrioritySortSwitch = formFactory.addCheckboxesHorizontal("existingBundlesPrioritySortSwitch", null, this.flc,
-				new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+		String[] existingBundlespPrio = new String[]{ translate("generic.sort.by.priority")};
+		existingBundlesPrioritySortSwitch = formFactory.addCheckboxesHorizontal("existingBundlesPrioritySortSwitch", null,
+				flc, new String[] { KEYS_ENABLED }, existingBundlespPrio);//disabled label by setting i18nLabel to null
 		existingBundlesPrioritySortSwitch.select(KEYS_ENABLED, true);
 		existingBundlesPrioritySortSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(existingBundlesPrioritySortSwitch);
@@ -312,15 +316,17 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController {
 		allBundlesSelection.addActionListener(FormEvent.ONCHANGE);
 		allBundlesSelection.select(ALL_BUNDLES_IDENTIFYER, true);
 		// Add all bundles children switch
-		allBundlesIncludeBundlesChildrenSwitch = formFactory.addCheckboxesHorizontal("allBundlesIncludeBundlesChildrenSwitch", null, this.flc,
-				new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+		String[]  allBundlesIncludeBundles = new String[]{ translate("generic.limit.bundles.includeChildren") };
+		allBundlesIncludeBundlesChildrenSwitch = formFactory.addCheckboxesHorizontal("allBundlesIncludeBundlesChildrenSwitch", null,
+				flc, new String[] { KEYS_ENABLED }, allBundlesIncludeBundles);//disabled label by setting i18nLabel to null
 		allBundlesIncludeBundlesChildrenSwitch.select(KEYS_ENABLED, true);
 		allBundlesIncludeBundlesChildrenSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(allBundlesIncludeBundlesChildrenSwitch);
 		allBundlesIncludeBundlesChildrenSwitch.setEnabled(false);
 		// Add priority sort switch
-		allBundlesPrioritySortSwitch = formFactory.addCheckboxesHorizontal("allBundlesPrioritySortSwitch", null, this.flc,
-				new String[] { KEYS_ENABLED }, new String[] { KEYS_EMPTY });//disabled label by setting i18nLabel to null
+		String[]  allBundlesIncludePrio = new String[]{ translate("generic.sort.by.priority") };
+		allBundlesPrioritySortSwitch = formFactory.addCheckboxesHorizontal("allBundlesPrioritySortSwitch", null,
+				flc, new String[] { KEYS_ENABLED }, allBundlesIncludePrio);//disabled label by setting i18nLabel to null
 		allBundlesPrioritySortSwitch.select(KEYS_ENABLED, true);
 		allBundlesPrioritySortSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(allBundlesPrioritySortSwitch);
@@ -374,13 +380,10 @@ class TranslationToolStartCrumbController extends CrumbFormBasicController {
 		searchBundlesPrioritySortSwitch.addActionListener(FormEvent.ONCLICK);
 		formLayout.add(searchBundlesPrioritySortSwitch);
 		// Add button to trigger search
-		FormItemContainer searchButtonLayoutContainer = FormLayoutContainer.createHorizontalFormLayout(
-				"searchButtonLayoutContainer", getTranslator());
+		FormItemContainer searchButtonLayoutContainer = FormLayoutContainer.createButtonLayout("searchButtonLayoutContainer", getTranslator());
 		searchLayoutContainer.add(searchButtonLayoutContainer);
-		searchListButton = new FormLinkImpl("searchListButton", "searchListButton", "generic.listButton", Link.BUTTON);
-		searchButtonLayoutContainer.add(searchListButton);
-		searchTranslateButton = new FormLinkImpl("searchTranslateButton", "searchTranslateButton", "generic.translateButton", Link.BUTTON);
-		searchButtonLayoutContainer.add(searchTranslateButton);
+		searchListButton = uifactory.addFormLink("searchListButton", "generic.listButton", null, searchButtonLayoutContainer, Link.BUTTON);
+		searchTranslateButton = uifactory.addFormLink("searchTranslateButton", "generic.translateButton", null, searchButtonLayoutContainer, Link.BUTTON);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html
index b3ef702c9ce..784694a30de 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html
+++ b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html
@@ -1,69 +1,65 @@
-<div class="o_translation_edit b_form">
-	<div  class="o_translation_edit_head">
-		<table class="b_table b_table_nohover b_full">
-			<tr><td><span class="b_with_small_icon_left o_translation_package_icon"><b>$r.translate("generic.bundle"): </b></span></td><td id="bundlesSelectionContainer">$r.render("bundlesSelection")</td><td width="50%">$r.render("progressBarBundle")</td></tr>
-			<tr><td><span class="b_with_small_icon_left o_translation_item_icon"><b>$r.translate("generic.key"): </b></span></td><td>$r.render("keysSelection")</td><td>$r.render("progressBarKey")</td></tr>
-		</table>
+<div class="o_translation_edit">
+	<div class="o_form form-horizontal">
+		<div class="form-group clearfix">
+			<div class="col-sm-2"><label class="control-label"><i class="o_icon o_icon_translation_package"> </i> $r.translate("generic.bundle")</label></div>
+			<div class="col-sm-5">$r.render("bundlesSelection")</div>
+			<div class="col-sm-3">$r.render("progressBarBundle")</div>
+		</div>
+		<div class="form-group clearfix">
+			<div class="col-sm-2"><label class="control-label"><i class="o_icon o_icon_translation_item"> </i> $r.translate("generic.key")</label></div>
+			<div class="col-sm-5">$r.render("keysSelection")</div>
+			<div class="col-sm-3">$r.render("progressBarKey")</div>
+		</div>
 	</div>
-	<div  class="o_translation_edit_body">
-		<p class="o_info">
-			$r.translate("edit.${customizingPrefix}intro")
-		</p>	
+	<div class="o_translation_edit_body">
+		<p class="o_info">$r.translate("edit.${customizingPrefix}intro")</p>	
 		
-		<div class="o_translation_edit_reference b_form_element">
-			<div class="o_translation_refKey b_float_right b_with_small_icon_left" style="display: none" onclick="this.style.display='none'">
+		<div class="o_translation_edit_reference">
+			<div class="o_translation_refKey pull-right" style="display: none" onclick="this.style.display='none'">
 				<code></code> = <span></span>
 			</div>
-			<h5>
-				<i class="o_flag o_flag_$referenceLanguageKey"> </i>
-				 $r.translate("generic.${customizingPrefix}lang.reference"): $referenceLanguage
-			</h5>
+			<h5><i class="o_flag o_flag_$referenceLanguageKey"> </i> $r.translate("generic.${customizingPrefix}lang.reference"): $referenceLanguage</h5>
 			$r.render("referenceArea")
 		</div>
 		#if ($r.available("annotationAddLink"))
 			#if (!$customizingMode)
-			<div class="b_button_group">
+			<div class="o_button_group">
 				$r.render("annotationAddLink")
 			</div>
 			#end
 		#else
-		<div class="o_translation_edit_annotation b_form_element" title="$r.translateInAttribute("edit.annotation.hover")" >
-			<h5>
-				<i class="o_icon o_icon_info"> </i>
-				$r.translate("generic.annotation")
-			</h5>
+		<div class="o_translation_edit_annotation" title="$r.translateInAttribute("edit.annotation.hover")" >
+			<h5><i class="o_icon o_icon_info"> </i> $r.translate("generic.annotation")</h5>
 			$r.render("annotationArea")
 		</div>
 		#end
-		<div class="o_translation_edit_compare b_form_element">			
+		<div class="o_translation_edit_compare">			
 			#if ($compareSwitchEnabled)
-			<div class="o_translation_refKey pull-right b_with_small_icon_left" style="display: none" onclick="this.style.display='none'">
+			<div class="o_translation_refKey pull-right o_icon" style="display: none" onclick="this.style.display='none'">
 				<code></code> = <span></span>
 			</div>
 			#end
-			<div class="clearfix">
-				<div class="pull-left #if (!$compareSwitchEnabled) text-muted #end"><h5><i class="o_flag o_flag_$compareLanguageKey">$r.translate("generic.lang.compare"): </h5></div>
-				<div class="pull-left #if (!$compareSwitchEnabled) text-muted #end">$r.render("compareLangSelection") </div>
-				<div class="pull-left" style="margin-right: 0;">$r.render("compareSwitch")</div>
-				$r.translate("generic.enable")
+			<div class="form-inline">
+				<div class="form-group">
+					<label><i class="o_flag o_flag_$compareLanguageKey"> </i> $r.translate("generic.lang.compare"):</label>
+				</div>
+				$r.render("compareLangSelection")
+				$r.render("compareSwitch")
 			</div>
 			$r.render("compareArea")
 		</div>
-		<div class="o_translation_edit_target b_form_element" title="$r.translateInAttribute("edit.${customizingPrefix}target.hover")">
+		<div class="o_translation_edit_target" title="$r.translateInAttribute("edit.${customizingPrefix}target.hover")">
 			<div class="o_translation_refKey b_float_right b_with_small_icon_left" style="display: none" onclick="this.style.display='none'">
 				<code></code> = <span></span>
 			</div>
-			<a href="#top" onclick="copyFromReference();" class="btn btn-small pull-right"><span>$r.translate('copy')</span></a>
-			<h5>
-				<i class="o_flag o_flag_$targetLanguageKey"> </i>
-				 $r.translate("generic.${customizingPrefix}lang.target"): $targetLanguage
-			</h5>
+			<h5><i class="o_flag o_flag_$targetLanguageKey"> </i> $r.translate("generic.${customizingPrefix}lang.target"): $targetLanguage</h5>
 			$r.render("targetArea")
 		</div>		
-		<div class="b_button_group">
+		<div class="o_button_group">
 		#if ($hasPrevious) 
 			$r.render("previousLink") 
 		#end
+			<a href="#top" onclick="copyFromReference();" class="btn btn-default"><i class="o_icon o_icon_copy"> </i> $r.translate('copy')</a>
 			$r.render("saveLink")
 		#if ($hasNext) 
 			$r.render("saveNextLink")
diff --git a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemList.html b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemList.html
index 96bd69aa738..d52af111eb0 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemList.html
+++ b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemList.html
@@ -1,11 +1,7 @@
-<div class="b_translation_list">
+<div class="o_translation_list">
 ##	<h2>$r.translate("list.title")</h2>
-	<p>
-		$r.translate("list.found.entries", ["$keysCount","$bundlesCount"])
-	</p>
-	<p class="o_info">
-		$r.translate("list.${customizingPrefix}intro")
-	</p>
+	<p>$r.translate("list.found.entries", ["$keysCount","$bundlesCount"])</p>
+	<p class="o_info">$r.translate("list.${customizingPrefix}intro")</p>
 #if ($i18nItems.size() > 0)
 	<div class="o_button_group">
 		$r.render("allTranslateButtonTop")
@@ -20,9 +16,7 @@
 			#set ($currentBundle=$item.getBundleName())
 			
 			<div class="clearfix">
-				<div class="pull-right">
-					$r.render("translateBundle_$currentBundle")
-				</div>
+				<div class="pull-right">$r.render("translateBundle_$currentBundle")</div>
 				<div class="o_tooglebox_wrapper">
 					<a href="#" data-toggle="collapse" data-target="#$b_translation_item_$velocityCount"  class="o_opener" onclick="jQuery(this).toggleClass('o_in')">
 						<b class="b_with_small_icon_left b_translation_package_icon">$r.translate("generic.bundle"): $currentBundle </b> 
@@ -31,7 +25,7 @@
 			</div>
 			<div id="$b_translation_item_$velocityCount" class="collapse"><div class="o_togglebox_content">
 		#end
-		<div class="b_translation_list_item b_with_small_icon_left b_translation_item_icon">$item.getKey()</div>
+		<div class="o_icon o_icon_translation_item">$item.getKey()</div>
 	#end
 	</div></div></div>	
 	<div class="o_button_group">
diff --git a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolLauncher.html b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolLauncher.html
index 30f3dd5421c..920f91389e0 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolLauncher.html
+++ b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolLauncher.html
@@ -1,32 +1,28 @@
 #if ($transToolEnabled)
 	<fieldset>
 		<legend>$r.translate("launch.title")</legend>
-		<p>
-			$r.translate("launch.intro")
-		</p>
-		$r.render("start")
+		<p>$r.translate("launch.intro")</p>
+		<div class="o_button_group o_button_group_left">
+			$r.render("start")
+		</div>
 	</fieldset>
 	
 	<fieldset>
 		<legend>$r.translate("inline.title")</legend>
-		<p>
-			$r.translate("inline.intro")
-		</p>
+		<p>$r.translate("inline.intro")</p>
 		#if	($logoutRequired)
-		<p class="o_warning">
-			$r.translate("inline.require.logout")
-		</p>
+		<p class="o_warning">$r.translate("inline.require.logout")</p>
 		#end
 		#if ($r.available("inline.enable"))
-			<p>
-				<i class="b_with_small_icon_right b_status_disabled_icon">$r.translate("inline.state"): $r.translate("inline.state.disabled")</span>
-			</p>
-			$r.render("inline.enable")
+			<p><i class="o_icon o_icon_disabled"> </i> $r.translate("inline.state"): $r.translate("inline.state.disabled")</span></p>
+			<div class="o_button_group o_button_group_left">
+				$r.render("inline.enable")
+			</div>
 		#elseif ($r.available("inline.disable"))
-			<p>
-				<span class="b_with_small_icon_right b_status_enabled_icon">$r.translate("inline.state"): $r.translate("inline.state.enabled")</span>
-			</p>
-			$r.render("inline.disable")
+			<p><i class="o_icon o_icon_enabled"> </i> $r.translate("inline.state"): $r.translate("inline.state.enabled")</p>
+			<div class="o_button_group o_button_group_left">
+				$r.render("inline.disable")
+			</div>
 		#end
 	</fieldset>
 #end
@@ -34,32 +30,26 @@
 #if ($customizingToolEnabled)
 	<fieldset>
 		<legend>$r.translate("launch.customize.title")</legend>
-		<p>
-			$r.translate("launch.customize.intro")
-		</p>
+		<p>$r.translate("launch.customize.intro")</p>
 		$r.render("start")
 	</fieldset>
 	
 	<fieldset>
 		<legend>$r.translate("inline.customize.title")</legend>
-		<p>
-			$r.translate("inline.customize.intro")
-		</p>
+		<p>$r.translate("inline.customize.intro")</p>
 		#if	($logoutRequired)
-		<p class="o_warning">
-			$r.translate("inline.customize.require.logout")
-		</p>
+		<p class="o_warning">$r.translate("inline.customize.require.logout")</p>
 		#end
 		#if ($r.available("inline.enable"))
-			<p>
-				<span class="b_with_small_icon_right b_status_disabled_icon">$r.translate("inline.state"): $r.translate("inline.state.disabled")</span>
-			</p>
-			$r.render("inline.enable")
+			<p><i class="o_icon o_icon_disabled"> </i> $r.translate("inline.state"): $r.translate("inline.state.disabled")</p>
+			<div class="o_button_group o_button_group_left">
+				$r.render("inline.enable")
+			</div>
 		#elseif ($r.available("inline.disable"))
-			<p>
-				<span class="b_with_small_icon_right b_status_enabled_icon">$r.translate("inline.state"): $r.translate("inline.state.enabled")</span>
-			</p>
-			$r.render("inline.disable")
+			<p><i class="o_icon o_icon_enabled"> </i>$r.translate("inline.state"): $r.translate("inline.state.enabled")</p>
+			<div class="o_button_group o_button_group_left">
+				$r.render("inline.disable")
+			</div>
 		#end
 	</fieldset>
 #end
@@ -67,13 +57,9 @@
 <fieldset>
 	<legend>$r.translate("cache.title")</legend>
 #if($r.available("cache.flush"))
-	<p>
-		$r.translate("cache.intro")
-	</p>
+	<p>$r.translate("cache.intro")</p>
 	$r.render("cache.flush")
 #else
-	<p class="o_warning">
-		$r.translate("cache.disabled")
-	</p>
+	<p class="o_warning">$r.translate("cache.disabled")</p>
 #end
 </fieldset>
diff --git a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolStartCrumb.html b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolStartCrumb.html
index 7fbc51cb5f3..36a5436e996 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolStartCrumb.html
+++ b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolStartCrumb.html
@@ -1,141 +1,82 @@
-<div class="b_translation_start">
-	<div  class="b_translation_start_head">
-		<div class="b_subcolumns">
-			<div class="b_c50l">
-				<div class="b_subcl b_form clearfix">
-					<div class="b_form_element_wrapper clearfix">
-						<div class="b_form_element_label">
-							$r.render("start.referenceLangSelection_LABEL", $f.getItemId("start.referenceLangSelection"), "false")
-						</div>
-						<div class="b_form_element">
-							<div class="b_with_small_icon_left b_flag_$referenceLangKey">
-								$r.render("start.referenceLangSelection")
-							</div>
-						</div>
-					</div>
-					<div class="b_form_element_wrapper clearfix">
-						<div class="b_form_element_label">
-							$r.render("start.targetLangSelection_LABEL", $f.getItemId("start.targetLangSelection"), "false")
-						</div>
-						<div class="b_form_element">
-							<div class="b_with_small_icon_left b_flag_$targetLangKey">
-								$r.render("start.targetLangSelection")
-							</div>
-						</div>
-					</div>
+<div class="o_translation_start">
+	<div  class="container-fluid">
+		<div class="row">
+			<div class="col-sm-6">
+				<div class="form-group">
+					$r.render("start.referenceLangSelection_LABEL", $f.getItemId("start.referenceLangSelection"), "false")
+					<i class="o_icon_left o_flag_$referenceLangKey"> </i>
+					$r.render("start.referenceLangSelection")
 				</div>
-			</div>
-			
-			<div class="b_c50r">
-				<div class="b_subcr">
-					$r.translate("start.progressBar"):
-					$r.render("progressBar")
+				<div class="form-group">
+					$r.render("start.targetLangSelection_LABEL", $f.getItemId("start.targetLangSelection"), "false")
+					<i class="b_with_small_icon_left b_flag_$targetLangKey"> </i>
+					$r.render("start.targetLangSelection")
 				</div>
 			</div>
+			<div class="col-sm-6">
+				$r.translate("start.progressBar"):
+				$r.render("progressBar")
+			</div>
 		</div>
 	</div>
 
-	<div  class="b_translation_start_body">	
-		<p class="o_info">
-			$r.translate("start.${customizingPrefix}intro")
-		</p>
+	<div class="container-fluid">	
+		<p class="o_info">$r.translate("start.${customizingPrefix}intro")</p>
 		
-		<div class="b_subcolumns">
-			<div class="b_c50l">
-				<div class="b_subcl b_form clearfix">
-					<fieldset>
-						<legend class="b_with_small_icon_left b_translation_item_icon">$r.translate("start.${customizingPrefix}missing.title")</legend>
-						<p>
-							$r.translate("start.${customizingPrefix}missing.intro")
-						</p>
-						<p>
-							$r.translate("start.${customizingPrefix}missing.count"): $missingCount
-						</p>
-						$r.render("missingBundlesSelection")
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("missingBundlesIncludeBundlesChildrenSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.limit.bundles.includeChildren")</div>
-						</div>
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("missingBundlesPrioritySortSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.sort.by.priority")</div>
-						</div>
-						<div class="b_button_group">
-							$r.render("missingListButton")
-							$r.render("missingTranslateButton")
-						</div>						
-					</fieldset>			
-				</div>
+		<div class="row">
+			<div class="col-sm-6">
+				<fieldset class="form">
+					<legend><i class="o_icon o_icon_translation_item"> </i> $r.translate("start.${customizingPrefix}missing.title")</legend>
+					<p>$r.translate("start.${customizingPrefix}missing.intro")</p>
+					<p>$r.translate("start.${customizingPrefix}missing.count"): $missingCount</p>
+					$r.render("missingBundlesSelection")
+					$r.render("missingBundlesIncludeBundlesChildrenSwitch")
+					$r.render("missingBundlesPrioritySortSwitch")
+					<div class="o_button_group">
+						$r.render("missingListButton")
+						$r.render("missingTranslateButton")
+					</div>		
+				</fieldset>
 			</div>
-			<div class="b_c50r">
-				<div class="b_subcr b_form clearfix">
-					<fieldset>
-						<legend class="b_with_small_icon_left b_translation_item_icon">$r.translate("start.${customizingPrefix}existing.title")</legend>
-						<p>
-							$r.translate("start.${customizingPrefix}existing.intro")
-						</p>
-						<p>
-							$r.translate("start.${customizingPrefix}existing.count"): $existingCount
-						</p>
-						$r.render("existingBundlesSelection")
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("existingBundlesIncludeBundlesChildrenSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.limit.bundles.includeChildren")</div>
-						</div>
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("existingBundlesPrioritySortSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.sort.by.priority")</div>
-						</div>
-						<div class="b_button_group">
-							$r.render("existingListButton")
-							$r.render("existingTranslateButton")
-						</div>						
-					</fieldset>			
-				</div>
+			<div class="col-sm-6">
+				<fieldset class="form">
+					<legend><i class="o_icon o_icon_translation_item"> </i> $r.translate("start.${customizingPrefix}existing.title")</legend>
+					<p>$r.translate("start.${customizingPrefix}existing.intro")</p>
+					<p>$r.translate("start.${customizingPrefix}existing.count"): $existingCount</p>
+					$r.render("existingBundlesSelection")
+					$r.render("existingBundlesIncludeBundlesChildrenSwitch")
+					$r.render("existingBundlesPrioritySortSwitch")
+					<div class="o_button_group">
+						$r.render("existingListButton")
+						$r.render("existingTranslateButton")
+					</div>
+				</fieldset>
 			</div>
 		</div>
-		<div class="b_subcolumns">
-			<div class="b_c50l">
-				<div class="b_subcl b_form clearfix">
-					<fieldset>
-						<legend class="b_with_small_icon_left b_translation_package_icon">$r.translate("start.all.title")</legend>
-						<p>
-							$r.translate("start.all.intro")
-						</p>
-						<p>
-							$r.translate("start.all.count"): $allCount
-						</p>
-						$r.render("allBundlesSelection")
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("allBundlesIncludeBundlesChildrenSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.limit.bundles.includeChildren")</div>
-						</div>
-						<div class="clearfix">
-							<div class="b_float_left">$r.render("allBundlesPrioritySortSwitch") </div>
-							<div class="b_float_left">$r.translate("generic.sort.by.priority")</div>
-						</div>
-						<div class="b_button_group">
-							$r.render("allListButton")
-							$r.render("allTranslateButton")
-						</div>						
-					</fieldset>						
-				</div>
+		<div class="row">
+			<div class="col-sm-6">
+				<fieldset class="form">
+					<legend><i class="o_icon o_icon_translation_package"> </i> $r.translate("start.all.title")</legend>
+					<p>$r.translate("start.all.intro")</p>
+					<p>$r.translate("start.all.count"): $allCount</p>
+					$r.render("allBundlesSelection")
+					$r.render("allBundlesIncludeBundlesChildrenSwitch")
+					$r.render("allBundlesPrioritySortSwitch")
+					<div class="o_button_group">
+						$r.render("allListButton")
+						$r.render("allTranslateButton")
+					</div>
+				</fieldset>	
 			</div>
-			<div class="b_c50r">
-				<div class="b_subcr b_form clearfix">
-					<fieldset>
-						<legend class="b_with_small_icon_left b_translation_search_icon">$r.translate("start.search.title")</legend>
-						<p>
-							$r.translate("start.${customizingPrefix}search.intro")
-						</p>
-						$r.render("searchLayoutContainer")
-					</fieldset>			
-				</div>
+			<div class="col-sm-6">
+				<fieldset>
+					<legend><i class="o_icon o_icon_search"> </i> $r.translate("start.search.title")</legend>
+					<p>$r.translate("start.${customizingPrefix}search.intro")</p>
+					$r.render("searchLayoutContainer")
+				</fieldset>
 			</div>
 		</div>
-	
-	</div>	
-	
+	</div>
 	## set meaningfull page title
 	<script type="text/javascript">
 	/* <![CDATA[ */ 
diff --git a/src/main/java/org/olat/core/util/i18n/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/util/i18n/ui/_i18n/LocalStrings_de.properties
index 6d8291522bc..d75b264a21a 100644
--- a/src/main/java/org/olat/core/util/i18n/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/util/i18n/ui/_i18n/LocalStrings_de.properties
@@ -77,7 +77,7 @@ edit.button.add.annotation=Anmerkung hinzuf\u00FCgen
 edit.button.next=Weiter
 edit.button.previous=Zur\u00FCck
 edit.button.save=Speichern
-edit.button.saveNext=Speichern & weiter
+edit.button.saveNext=Speichern &amp; weiter
 edit.crumb.hoover=Formular zur Anpassung eines \u00DCbersetzungsschl\u00FCssels
 edit.crumb.link=\u00DCbersetzungsschl\u00FCssel
 edit.customize.crumb.hoover=Formular zum \u00DCbersetzen eines \u00DCbersetzungsschl\u00FCssels
diff --git a/src/main/webapp/static/themes/light/modules/_icons.scss b/src/main/webapp/static/themes/light/modules/_icons.scss
index 25fb0f3bf1b..4a55f429903 100644
--- a/src/main/webapp/static/themes/light/modules/_icons.scss
+++ b/src/main/webapp/static/themes/light/modules/_icons.scss
@@ -74,10 +74,12 @@ $fa-css-prefix: "o_icon" !default;
 .o_icon_delete:before { content: $fa-var-minus-circle; color: #A87E7E;}
 .o_icon_details:before { content: $fa-var-lightbulb-o; }
 .o_icon_dev:before { content: $fa-var-bug;}
+.o_icon_disabled:before { content: $fa-var-circle-o;}
 .o_icon_download:before { content: $fa-var-download;}
 .o_icon_edit:before { content: $fa-var-edit;}
 .o_icon_edit_file:before { content: $fa-var-edit;}
 .o_icon_edit_metadata:before { content: $fa-var-gear;}
+.o_icon_enabled:before { content: $fa-var-circle; } 
 .o_icon_enlarge:before { content: $fa-var-search-plus;}
 .o_icon_eportfolio_add:before { content: $fa-var-puzzle-piece;}
 .o_icon_error:before { content: $fa-var-exclamation-circle; color: $brand-danger;}
@@ -180,6 +182,8 @@ $fa-css-prefix: "o_icon" !default;
 .o_icon_tool:before { content: $fa-var-gear; }
 .o_icon_tools:before { content: $fa-var-wrench; }
 .o_icon_top:before { content: $fa-var-chevron-up; }
+.o_icon_translation_item:before { content: $fa-var-file-code-o; }
+.o_icon_translation_package:before { content: $fa-var-folder-open-o; }
 .o_icon_user:before { content: $fa-var-user; }
 .o_icon_user_vip:before { content: $fa-var-graduation-cap; }
 .o_icon_user_anonymous:before { content: $fa-var-question; }
diff --git a/src/main/webapp/static/themes/light/theme.css b/src/main/webapp/static/themes/light/theme.css
index 6fcc1a0bcf0..31876356d54 100644
--- a/src/main/webapp/static/themes/light/theme.css
+++ b/src/main/webapp/static/themes/light/theme.css
@@ -58,7 +58,7 @@ fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%
 @media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}
 .visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}
 .visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}
-@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}@font-face{font-family:'FontAwesome';src:url("../../../font-awesome/fonts/fontawesome-webfont.eot?v=4.1.0");src:url("../../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.1.0") format("embedded-opentype"),url("../../../font-awesome/fonts/fontawesome-webfont.woff?v=4.1.0") format("woff"),url("../../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.1.0") format("truetype"),url("../../../font-awesome/fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accessibility:before{content:"\f193"}.o_icon_actions:before{content:"\f085"}.o_icon_archive_tool:before{content:"\f019"}.o_icon_assessment_tool:before{content:"\f091"}.o_icon_attempt_limit:before{content:"\f021"}.o_icon_add:before{content:"\f055"}.o_icon_add_search:before{content:"\f00e"}.o_icon_audio:before{content:"\f028"}.o_icon_back:before{content:"\f053"}.o_icon_back_history:before{content:"\f1da"}.o_icon_bold:before{content:"\f032"}.o_icon_booking:before{content:"\f07a"}.o_icon_bookmark:before{content:"\f02e";color:#996633}.o_icon_bookmark_add:before{content:"\f097"}.o_icon_bookmark_header:before{content:"\f02e"}.o_icon_browse:before{content:"\f00e"}.o_icon_browsercheck:before{content:"\f164"}.o_icon_busy:before{content:"\f110"}.o_icon_calendar:before{content:"\f073"}.o_icon_calendar_enabled:before{content:"\f05d"}.o_icon_calendar_disabled:before{content:"\f10c"}.o_icon_calendar:before{content:"\f073"}.o_icon_caret:before{content:"\f0d7"}.o_icon_catalog:before{content:"\f0e8"}.o_icon_certificate:before{content:"\f0a3"}.o_icon_chat:before{content:"\f0e5"}.o_icon_check:before{content:"\f00c"}.o_icon_checkbox:before{content:"\f096"}.o_icon_checkbox_checked:before{content:"\f14a"}.o_icon_cleanup:before{content:"\f0f9"}.o_icon_close:before{content:"\f00d"}.o_icon_close_resource:before{content:"\f011"}.o_icon_close_tab:before{content:"\f00d"}.o_icon_close_tool:before{content:"\f00d"}.o_icon_close_tree:before{content:"\f0d7"}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:"\f0d7"}.o_icon_code:before{content:"\f121"}.o_icon_color_picker:before{content:"\f043"}.o_icon_copy:before{content:"\f0c5"}.o_icon_courseareas:before{content:"\f1db"}.o_icon_coursedb:before{content:"\f1c0"}.o_icon_courseeditor:before{content:"\f044"}.o_icon_coursefolder:before{content:"\f114"}.o_icon_courserun:before{content:"\f1b2"}.o_icon_comments:before{content:"\f086"}.o_icon_comments_none:before{content:"\f0e5"}.o_icon_content_popup:before{content:"\f08e"}.o_icon_customize:before{content:"\f013"}.o_icon_delete_item:before{content:"\f014"}.o_icon_delete:before{content:"\f056";color:#A87E7E}.o_icon_details:before{content:"\f0eb"}.o_icon_dev:before{content:"\f188"}.o_icon_download:before{content:"\f019"}.o_icon_edit:before{content:"\f044"}.o_icon_edit_file:before{content:"\f044"}.o_icon_edit_metadata:before{content:"\f013"}.o_icon_enlarge:before{content:"\f00e"}.o_icon_eportfolio_add:before{content:"\f12e"}.o_icon_error:before{content:"\f06a";color:#d9534f}.o_icon_expenditure:before{content:"\f017"}.o_icon_external_link:before{content:"\f08e"}.o_icon_failed:before{content:"\f057"}.o_icon_filter:before{content:"\f0b0"}.o_icon_group:before{content:"\f0c0"}.o_icon_header:before{content:"\f1dc"}.o_icon_help:before{content:"\f059";cursor:help}.o_icon_home:before{content:"\f015"}.o_icon_impress:before{content:"\f05a"}.o_icon_important:before{content:"\f071";color:#f0ad4e}.o_icon_import:before{content:"\f093"}.o_icon_info:before{content:"\f05a";color:#5bc0de}.o_icon_info_msg:before{content:"\f06a";color:#d9534f}.o_icon_inline_editable:before{content:"\f044"}.o_icon_institution:before{content:"\f19c"}.o_icon_italic:before{content:"\f033"}.o_icon_language:before{content:"\f0ac"}.o_icon_link:before{content:"\f0c1"}.o_icon_link_extern:before{content:"\f08e"}.o_icon_list:before{content:"\f03a"}.o_icon_list_num :before{content:"\f0cb"}.o_icon_lifecycle:before{content:"\f073"}.o_icon_locked:before{content:"\f023"}.o_icon_login:before{content:"\f090"}.o_icon_logout:before{content:"\f08b"}.o_icon_mandatory:before{content:"\f069";color:#f0ad4e}.o_icon_managed:before{content:"\f079";color:#777}.o_icon_mail:before{content:"\f003"}.o_icon_math:before{content:"\f198"}.o_icon_membersmanagement:before{content:"\f0c0"}.o_icon_menuhandel:before{content:"\f0c9"}.o_icon_message:before{content:"\f0e0"}.o_icon_move:before{content:"\f047"}.o_icon_move_down:before{content:"\f103"}.o_icon_move_left:before{content:"\f100"}.o_icon_move_right:before{content:"\f101"}.o_icon_move_up:before{content:"\f102"}.o_icon_new:before{content:"\f069";color:#5cb85c}.o_icon_new_document:before{content:"\f15c"}.o_icon_new_folder:before{content:"\f07b"}.o_icon_news:before{content:"\f05a"}.o_icon_next:before{content:"\f0a9"}.o_icon_next_page:before{content:"\f101"}.o_icon_notes:before{content:"\f040"}.o_icon_notification:before{content:"\f09e"}.o_icon_open_tree:before{content:"\f0da"}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:"\f0da"}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold}.o_icon_passed:before{content:"\f058"}.o_icon_password:before{content:"\f023"}.o_icon_post:before{content:"\f0e5"}.o_icon_preview:before{content:"\f06e"}.o_icon_previous:before{content:"\f0a8"}.o_icon_previous_page:before{content:"\f100"}.o_icon_print:before{content:"\f02f"}.o_icon_private:before{content:"\f02f"}.o_icon_provider_guest:before{content:"\f1ae"}.o_icon_provider_ldap:before{content:"\f19c"}.o_icon_provider_shibboleth:before{content:"\f19c"}.o_icon_publish:before{content:"\f064"}.o_icon_qrcode:before{content:"\f029"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:"\f005"}.o_icon_rating_off:before{content:"\f006"}.o_icon_read:before{content:"\f10c"}.o_icon_readonly:before{content:"\f044";color:red}.o_icon_readwrite:before{content:"\f044"}.o_icon_recycle:before{content:"\f1b8"}.o_icon_refresh:before{content:"\f021"}.o_icon_remove:before{content:"\f00d"}.o_icon_reply:before{content:"\f112"}.o_icon_reply_with_quote:before{content:"\f122"}.o_icon_rss:before{content:"\f09e"}.o_icon_rss_unsubscribe:before{content:"\f09e";color:#996633}.o_icon_search:before{content:"\f002"}.o_icon_settings:before{content:"\f085"}.o_icon_share:before{content:"\f064"}.o_icon_show_more:before{content:"\f150"}.o_icon_show_less:before{content:"\f151"}.o_icon_spacer:before{content:"\f07e"}.o_icon_split:before{content:"\f127"}.o_icon_sort:before{content:"\f0dc"}.o_icon_sort_asc:before{content:"\f0de"}.o_icon_sort_desc:before{content:"\f0dd"}.o_icon_sort_menu:before{content:"\f160"}.o_icon_start:before{content:"\f054"}.o_icon_status_available:before{content:"\f111";color:#006633}.o_icon_status_chat:before{content:"\f075"}.o_icon_status_dnd:before{content:"\f192";color:#CCCC33}.o_icon_status_unavailable:before{content:"\f05c";color:#996633}.o_icon_statistics_tool:before{content:"\f080"}.o_icon_table:before{content:"\f0ce"}.o_icon_table_large:before{content:"\f009"}.o_icon_timelimit:before{content:"\f1e2"}.o_icon_toggle:before{content:"\f111"}.o_icon_to_read:before{content:"\f111"}.o_icon_tool:before{content:"\f013"}.o_icon_tools:before{content:"\f0ad"}.o_icon_top:before{content:"\f077"}.o_icon_user:before{content:"\f007"}.o_icon_user_vip:before{content:"\f19d"}.o_icon_user_anonymous:before{content:"\f128"}.o_icon_upload:before{content:"\f093"}.o_icon_version:before{content:"\f1da"}.o_icon_video:before{content:"\f008"}.o_icon_warn:before{content:"\f071";color:#f0ad4e}.o_icon_wizard:before{content:"\f0d0"}.o_CourseModule_icon:before,.o_course_icon:before{content:"\f1b2"}.o_EPStructuredMapTemplate_icon:before{content:"\f12e"}.o_FileResource-BLOG_icon:before{content:"\f0a1"}.o_FileResource-IMSCP_icon:before{content:"\f187"}.o_FileResource-PODCAST_icon:before{content:"\f03d"}.o_FileResource-SHAREDFOLDER:before{content:"\f08e"}.o_FileResource-SCORMCP_icon:before{content:"\f187"}.o_FileResource-SURVEY_icon:before{content:"\f11a"}.o_FileResource-TEST_icon:before{content:"\f044"}.o_FileResource-WIKI_icon:before{content:"\f0ac"}.o_FileResource-SHAREDFOLDER_icon:before{content:"\f115"}.o_FileResource-GLOSSARY_icon:before{content:"\f19d"}.o_FileResource-PDF_icon:before{content:"\f1c1"}.o_FileResource-XLS_icon:before{content:"\f1c3"}.o_FileResource-PPT_icon:before{content:"\f1c4"}.o_FileResource-DOC_icon:before{content:"\f1c2"}.o_FileResource-ANIM_icon:before{content:"\f1c8"}.o_FileResource-IMAGE_icon:before{content:"\f1c5"}.o_FileResource-SOUND_icon:before{content:"\f1c7"}.o_FileResource-MOVIE_icon:before{content:"\f1c8"}.o_FileResource-FILE_icon:before{content:"\f016"}.o_portlet_infomsg_icon:before{content:"\f05a"}.o_portlet_quickstart_icon:before{content:"\f1d9"}.o_portlet_bookmark_icon:before{content:"\f02e"}.o_portlet_groups_icon:before{content:"\f0c0"}.o_portlet_notes_icon:before{content:"\f040"}.o_portlet_noti_icon:before{content:"\f09e"}.o_portlet_eff_icon:before{content:"\f0a3"}.o_portlet_repository_student_icon:before{content:"\f1b3"}.o_portlet_repository_teacher_icon:before{content:"\f19d"}.o_portlet_iframe_icon:before{content:"\f005"}.o_portlet_sysinfo_icon:before{content:"\f0e4"}.o_portlet_dyk_icon:before{content:"\f0eb"}.o_portlet_infomessages_icon:before{content:"\f0e5"}.o_portlet_cal_icon:before{content:"\f073"}.o_portlet_institutions_icon:before{content:"\f19c"}.o_portlet_links_icon:before{content:"\f0c1"}.o_portlet_shibboleth_icon:before{content:"\f090"}.o_icon_qpool:before{content:"\f19c"}.o_icon_pool_private:before{content:"\f00d"}.o_icon_pool_public:before{content:"\f00c"}.o_icon_pool_my_items:before{content:"\f007"}.o_icon_pool_favorits:before{content:"\f02e"}.o_icon_pool_collection:before{content:"\f03a"}.o_icon_pool_pool:before{content:"\f1e1"}.o_icon_pool_share:before{content:"\f0c0"}.o_forum_message_icon:before{content:"\f0e5"}.o_calendar_icon:before{content:"\f073"}.o_forum_status_thread_icon:before{content:"\f0e6"}.o_forum_status_sticky_closed_icon:before{content:"\f05e"}.o_forum_status_sticky_icon:before{content:"\f086"}.o_forum_status_closed_icon:before{content:"\f05e";color:#a94442}.o_forum_status_opened_icon:before{content:"\f05e";color:#3c763d}.o_forum_status_hidden_icon:before{content:"\f070";color:#a94442}.o_forum_status_visible_icon:before{content:"\f06e";color:#3c763d}.o_mi_qtisc:before{content:"\f192"}.o_mi_qtimc:before{content:"\f046"}.o_mi_qtikprim:before{content:"\f14a"}.o_mi_qtifib:before{content:"\f141"}.o_mi_qtiessay:before{content:"\f036"}.o_black_led:before{content:"\f111";color:#428bca}.o_green_led:before{content:"\f111";color:#5cb85c}.o_yellow_led:before{content:"\f111";color:#f0ad4e}.o_red_led:before{content:"\f111";color:#d9534f}.o_ac_token_icon:before{content:"\f084"}.o_ac_free_icon:before{content:"\f06b"}.o_ac_group_icon:before{content:"\f0c0"}.o_ac_membersonly_icon:before{content:"\f023"}.o_ac_paypal_icon:before{content:"\f09d"}.o_ac_status_canceled_icon:before{content:"\f068";color:#f0ad4e}.o_ac_status_error_icon:before{content:"\f00d";color:#d9534f}.o_ac_status_new_icon:before{content:"\f069";color:#428bca}.o_ac_status_succes_icon:before{content:"\f00c";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"\f017";color:#428bca}.o_ac_order_status_new_icon:before{content:"\f069";color:#428bca}.o_ac_order_status_prepayment_icon:before{content:"\f0d6";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"\f00c";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"\f068";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"\f00d";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"\f12a";color:#f0ad4e}.o_filetype_file:before,.o_filetype_ico:before{content:"\f016"}.o_filetype_folder:before{content:"\f114"}.o_filetype_folder_open:before{content:"\f115"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:"\f1c6"}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:"\f1c9"}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:"\f1c9"}.o_filetype_xls:before,.o_filetype_xlsx:before{content:"\f1c3"}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:"\f1c5"}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:"\f1c8"}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:"\f1c7"}.o_filetype_ps:before,.o_filetype_pdf:before{content:"\f1c1"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:"\f1c4"}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:"\f0f6"}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:"\f1c2"}.o_icon_apple:before{content:"\f179"}.o_icon_facebook:before{content:"\f082"}.o_icon_twitter:before{content:"\f081"}.o_icon_google:before{content:"\f0d4"}.o_icon_delicious:before{content:"\f1a5"}.o_icon_digg:before{content:"\f1a6"}.o_icon_mailto:before{content:"\f199"}.o_icon_link:before{content:"\f0c1"}.o_icon_yahoo:before{content:"\f19e"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_portlet{margin-top:2em}.o_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2{display:inline-block}.o_header_with_buttons .o_button_group{margin-top:10px;margin-bottom:0;float:right}.o_xsmall{font-size:12px}.o_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry{font-size:12px}.o_large{font-size:18px}.o_xlarge{font-size:18px}.o_disabled{color:#777 !important;cursor:default}.o_disabled:hover{color:#777 !important}.o_dimmed{opacity:0.4;filter:alpha(opacity=40)}.o_selected{font-weight:bold}.o_deleted{text-decoration:line-through}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.o_withEllipsis .o_morelink:hover,.o_withEllipsis .o_lesslink:hover,#o_main_wrapper #o_toplink:hover,#o_footer_wrapper #o_footer_container #o_footer_powered a:hover,#o_share a:hover,.o_toolbar a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_login .o_login_register:hover,.o_disabled:focus,.o_withEllipsis .o_morelink:focus,.o_withEllipsis .o_lesslink:focus,#o_main_wrapper #o_toplink:focus,#o_footer_wrapper #o_footer_container #o_footer_powered a:focus,#o_share a:focus,.o_toolbar a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}.o_nowrap{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video{display:block;width:100% \9;max-width:100%;height:auto}.o_image{display:block;width:100% \9;max-width:100%;height:auto}.o_withEllipsis .o_ellipsis_links{float:right}.o_withEllipsis .o_morelink,.o_withEllipsis .o_lesslink{display:none}.o_withEllipsis.o_hasOverflow .o_morelink{display:block}.o_withEllipsis.o_hasOverflow .o_lesslink{display:none}.o_withEllipsis.o_hasOverflow.o_showOverflow{height:auto !important}.o_withEllipsis.o_hasOverflow.o_showOverflow .o_morelink{display:none}.o_withEllipsis.o_hasOverflow.o_showOverflow .o_lesslink{display:block}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:70px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#428bca}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}
+@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}@font-face{font-family:'FontAwesome';src:url("../../../font-awesome/fonts/fontawesome-webfont.eot?v=4.1.0");src:url("../../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.1.0") format("embedded-opentype"),url("../../../font-awesome/fonts/fontawesome-webfont.woff?v=4.1.0") format("woff"),url("../../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.1.0") format("truetype"),url("../../../font-awesome/fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accessibility:before{content:"\f193"}.o_icon_actions:before{content:"\f085"}.o_icon_archive_tool:before{content:"\f019"}.o_icon_assessment_tool:before{content:"\f091"}.o_icon_attempt_limit:before{content:"\f021"}.o_icon_add:before{content:"\f055"}.o_icon_add_search:before{content:"\f00e"}.o_icon_audio:before{content:"\f028"}.o_icon_back:before{content:"\f053"}.o_icon_back_history:before{content:"\f1da"}.o_icon_bold:before{content:"\f032"}.o_icon_booking:before{content:"\f07a"}.o_icon_bookmark:before{content:"\f02e";color:#996633}.o_icon_bookmark_add:before{content:"\f097"}.o_icon_bookmark_header:before{content:"\f02e"}.o_icon_browse:before{content:"\f00e"}.o_icon_browsercheck:before{content:"\f164"}.o_icon_busy:before{content:"\f110"}.o_icon_calendar:before{content:"\f073"}.o_icon_calendar_enabled:before{content:"\f05d"}.o_icon_calendar_disabled:before{content:"\f10c"}.o_icon_calendar:before{content:"\f073"}.o_icon_caret:before{content:"\f0d7"}.o_icon_catalog:before{content:"\f0e8"}.o_icon_certificate:before{content:"\f0a3"}.o_icon_chat:before{content:"\f0e5"}.o_icon_check:before{content:"\f00c"}.o_icon_checkbox:before{content:"\f096"}.o_icon_checkbox_checked:before{content:"\f14a"}.o_icon_cleanup:before{content:"\f0f9"}.o_icon_close:before{content:"\f00d"}.o_icon_close_resource:before{content:"\f011"}.o_icon_close_tab:before{content:"\f00d"}.o_icon_close_tool:before{content:"\f00d"}.o_icon_close_tree:before{content:"\f0d7"}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:"\f0d7"}.o_icon_code:before{content:"\f121"}.o_icon_color_picker:before{content:"\f043"}.o_icon_copy:before{content:"\f0c5"}.o_icon_courseareas:before{content:"\f1db"}.o_icon_coursedb:before{content:"\f1c0"}.o_icon_courseeditor:before{content:"\f044"}.o_icon_coursefolder:before{content:"\f114"}.o_icon_courserun:before{content:"\f1b2"}.o_icon_comments:before{content:"\f086"}.o_icon_comments_none:before{content:"\f0e5"}.o_icon_content_popup:before{content:"\f08e"}.o_icon_customize:before{content:"\f013"}.o_icon_delete_item:before{content:"\f014"}.o_icon_delete:before{content:"\f056";color:#A87E7E}.o_icon_details:before{content:"\f0eb"}.o_icon_dev:before{content:"\f188"}.o_icon_disabled:before{content:"\f10c"}.o_icon_download:before{content:"\f019"}.o_icon_edit:before{content:"\f044"}.o_icon_edit_file:before{content:"\f044"}.o_icon_edit_metadata:before{content:"\f013"}.o_icon_enabled:before{content:"\f111"}.o_icon_enlarge:before{content:"\f00e"}.o_icon_eportfolio_add:before{content:"\f12e"}.o_icon_error:before{content:"\f06a";color:#d9534f}.o_icon_expenditure:before{content:"\f017"}.o_icon_external_link:before{content:"\f08e"}.o_icon_failed:before{content:"\f057"}.o_icon_filter:before{content:"\f0b0"}.o_icon_group:before{content:"\f0c0"}.o_icon_header:before{content:"\f1dc"}.o_icon_help:before{content:"\f059";cursor:help}.o_icon_home:before{content:"\f015"}.o_icon_impress:before{content:"\f05a"}.o_icon_important:before{content:"\f071";color:#f0ad4e}.o_icon_import:before{content:"\f093"}.o_icon_info:before{content:"\f05a";color:#5bc0de}.o_icon_info_msg:before{content:"\f06a";color:#d9534f}.o_icon_inline_editable:before{content:"\f044"}.o_icon_institution:before{content:"\f19c"}.o_icon_italic:before{content:"\f033"}.o_icon_language:before{content:"\f0ac"}.o_icon_link:before{content:"\f0c1"}.o_icon_link_extern:before{content:"\f08e"}.o_icon_list:before{content:"\f03a"}.o_icon_list_num :before{content:"\f0cb"}.o_icon_lifecycle:before{content:"\f073"}.o_icon_locked:before{content:"\f023"}.o_icon_login:before{content:"\f090"}.o_icon_logout:before{content:"\f08b"}.o_icon_mandatory:before{content:"\f069";color:#f0ad4e}.o_icon_managed:before{content:"\f079";color:#777}.o_icon_mail:before{content:"\f003"}.o_icon_math:before{content:"\f198"}.o_icon_membersmanagement:before{content:"\f0c0"}.o_icon_menuhandel:before{content:"\f0c9"}.o_icon_message:before{content:"\f0e0"}.o_icon_move:before{content:"\f047"}.o_icon_move_down:before{content:"\f103"}.o_icon_move_left:before{content:"\f100"}.o_icon_move_right:before{content:"\f101"}.o_icon_move_up:before{content:"\f102"}.o_icon_new:before{content:"\f069";color:#5cb85c}.o_icon_new_document:before{content:"\f15c"}.o_icon_new_folder:before{content:"\f07b"}.o_icon_news:before{content:"\f05a"}.o_icon_next:before{content:"\f0a9"}.o_icon_next_page:before{content:"\f101"}.o_icon_notes:before{content:"\f040"}.o_icon_notification:before{content:"\f09e"}.o_icon_open_tree:before{content:"\f0da"}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:"\f0da"}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold}.o_icon_passed:before{content:"\f058"}.o_icon_password:before{content:"\f023"}.o_icon_post:before{content:"\f0e5"}.o_icon_preview:before{content:"\f06e"}.o_icon_previous:before{content:"\f0a8"}.o_icon_previous_page:before{content:"\f100"}.o_icon_print:before{content:"\f02f"}.o_icon_private:before{content:"\f02f"}.o_icon_provider_guest:before{content:"\f1ae"}.o_icon_provider_ldap:before{content:"\f19c"}.o_icon_provider_shibboleth:before{content:"\f19c"}.o_icon_publish:before{content:"\f064"}.o_icon_qrcode:before{content:"\f029"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:"\f005"}.o_icon_rating_off:before{content:"\f006"}.o_icon_read:before{content:"\f10c"}.o_icon_readonly:before{content:"\f044";color:red}.o_icon_readwrite:before{content:"\f044"}.o_icon_recycle:before{content:"\f1b8"}.o_icon_refresh:before{content:"\f021"}.o_icon_remove:before{content:"\f00d"}.o_icon_reply:before{content:"\f112"}.o_icon_reply_with_quote:before{content:"\f122"}.o_icon_rss:before{content:"\f09e"}.o_icon_rss_unsubscribe:before{content:"\f09e";color:#996633}.o_icon_search:before{content:"\f002"}.o_icon_settings:before{content:"\f085"}.o_icon_share:before{content:"\f064"}.o_icon_show_more:before{content:"\f150"}.o_icon_show_less:before{content:"\f151"}.o_icon_spacer:before{content:"\f07e"}.o_icon_split:before{content:"\f127"}.o_icon_sort:before{content:"\f0dc"}.o_icon_sort_asc:before{content:"\f0de"}.o_icon_sort_desc:before{content:"\f0dd"}.o_icon_sort_menu:before{content:"\f160"}.o_icon_start:before{content:"\f054"}.o_icon_status_available:before{content:"\f111";color:#006633}.o_icon_status_chat:before{content:"\f075"}.o_icon_status_dnd:before{content:"\f192";color:#CCCC33}.o_icon_status_unavailable:before{content:"\f05c";color:#996633}.o_icon_statistics_tool:before{content:"\f080"}.o_icon_table:before{content:"\f0ce"}.o_icon_table_large:before{content:"\f009"}.o_icon_timelimit:before{content:"\f1e2"}.o_icon_toggle:before{content:"\f111"}.o_icon_to_read:before{content:"\f111"}.o_icon_tool:before{content:"\f013"}.o_icon_tools:before{content:"\f0ad"}.o_icon_top:before{content:"\f077"}.o_icon_translation_item:before{content:"\f1c9"}.o_icon_translation_package:before{content:"\f115"}.o_icon_user:before{content:"\f007"}.o_icon_user_vip:before{content:"\f19d"}.o_icon_user_anonymous:before{content:"\f128"}.o_icon_upload:before{content:"\f093"}.o_icon_version:before{content:"\f1da"}.o_icon_video:before{content:"\f008"}.o_icon_warn:before{content:"\f071";color:#f0ad4e}.o_icon_wizard:before{content:"\f0d0"}.o_CourseModule_icon:before,.o_course_icon:before{content:"\f1b2"}.o_EPStructuredMapTemplate_icon:before{content:"\f12e"}.o_FileResource-BLOG_icon:before{content:"\f0a1"}.o_FileResource-IMSCP_icon:before{content:"\f187"}.o_FileResource-PODCAST_icon:before{content:"\f03d"}.o_FileResource-SHAREDFOLDER:before{content:"\f08e"}.o_FileResource-SCORMCP_icon:before{content:"\f187"}.o_FileResource-SURVEY_icon:before{content:"\f11a"}.o_FileResource-TEST_icon:before{content:"\f044"}.o_FileResource-WIKI_icon:before{content:"\f0ac"}.o_FileResource-SHAREDFOLDER_icon:before{content:"\f115"}.o_FileResource-GLOSSARY_icon:before{content:"\f19d"}.o_FileResource-PDF_icon:before{content:"\f1c1"}.o_FileResource-XLS_icon:before{content:"\f1c3"}.o_FileResource-PPT_icon:before{content:"\f1c4"}.o_FileResource-DOC_icon:before{content:"\f1c2"}.o_FileResource-ANIM_icon:before{content:"\f1c8"}.o_FileResource-IMAGE_icon:before{content:"\f1c5"}.o_FileResource-SOUND_icon:before{content:"\f1c7"}.o_FileResource-MOVIE_icon:before{content:"\f1c8"}.o_FileResource-FILE_icon:before{content:"\f016"}.o_portlet_infomsg_icon:before{content:"\f05a"}.o_portlet_quickstart_icon:before{content:"\f1d9"}.o_portlet_bookmark_icon:before{content:"\f02e"}.o_portlet_groups_icon:before{content:"\f0c0"}.o_portlet_notes_icon:before{content:"\f040"}.o_portlet_noti_icon:before{content:"\f09e"}.o_portlet_eff_icon:before{content:"\f0a3"}.o_portlet_repository_student_icon:before{content:"\f1b3"}.o_portlet_repository_teacher_icon:before{content:"\f19d"}.o_portlet_iframe_icon:before{content:"\f005"}.o_portlet_sysinfo_icon:before{content:"\f0e4"}.o_portlet_dyk_icon:before{content:"\f0eb"}.o_portlet_infomessages_icon:before{content:"\f0e5"}.o_portlet_cal_icon:before{content:"\f073"}.o_portlet_institutions_icon:before{content:"\f19c"}.o_portlet_links_icon:before{content:"\f0c1"}.o_portlet_shibboleth_icon:before{content:"\f090"}.o_icon_qpool:before{content:"\f19c"}.o_icon_pool_private:before{content:"\f00d"}.o_icon_pool_public:before{content:"\f00c"}.o_icon_pool_my_items:before{content:"\f007"}.o_icon_pool_favorits:before{content:"\f02e"}.o_icon_pool_collection:before{content:"\f03a"}.o_icon_pool_pool:before{content:"\f1e1"}.o_icon_pool_share:before{content:"\f0c0"}.o_forum_message_icon:before{content:"\f0e5"}.o_calendar_icon:before{content:"\f073"}.o_forum_status_thread_icon:before{content:"\f0e6"}.o_forum_status_sticky_closed_icon:before{content:"\f05e"}.o_forum_status_sticky_icon:before{content:"\f086"}.o_forum_status_closed_icon:before{content:"\f05e";color:#a94442}.o_forum_status_opened_icon:before{content:"\f05e";color:#3c763d}.o_forum_status_hidden_icon:before{content:"\f070";color:#a94442}.o_forum_status_visible_icon:before{content:"\f06e";color:#3c763d}.o_mi_qtisc:before{content:"\f192"}.o_mi_qtimc:before{content:"\f046"}.o_mi_qtikprim:before{content:"\f14a"}.o_mi_qtifib:before{content:"\f141"}.o_mi_qtiessay:before{content:"\f036"}.o_black_led:before{content:"\f111";color:#428bca}.o_green_led:before{content:"\f111";color:#5cb85c}.o_yellow_led:before{content:"\f111";color:#f0ad4e}.o_red_led:before{content:"\f111";color:#d9534f}.o_ac_token_icon:before{content:"\f084"}.o_ac_free_icon:before{content:"\f06b"}.o_ac_group_icon:before{content:"\f0c0"}.o_ac_membersonly_icon:before{content:"\f023"}.o_ac_paypal_icon:before{content:"\f09d"}.o_ac_status_canceled_icon:before{content:"\f068";color:#f0ad4e}.o_ac_status_error_icon:before{content:"\f00d";color:#d9534f}.o_ac_status_new_icon:before{content:"\f069";color:#428bca}.o_ac_status_succes_icon:before{content:"\f00c";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"\f017";color:#428bca}.o_ac_order_status_new_icon:before{content:"\f069";color:#428bca}.o_ac_order_status_prepayment_icon:before{content:"\f0d6";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"\f00c";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"\f068";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"\f00d";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"\f12a";color:#f0ad4e}.o_filetype_file:before,.o_filetype_ico:before{content:"\f016"}.o_filetype_folder:before{content:"\f114"}.o_filetype_folder_open:before{content:"\f115"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:"\f1c6"}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:"\f1c9"}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:"\f1c9"}.o_filetype_xls:before,.o_filetype_xlsx:before{content:"\f1c3"}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:"\f1c5"}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:"\f1c8"}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:"\f1c7"}.o_filetype_ps:before,.o_filetype_pdf:before{content:"\f1c1"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:"\f1c4"}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:"\f0f6"}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:"\f1c2"}.o_icon_apple:before{content:"\f179"}.o_icon_facebook:before{content:"\f082"}.o_icon_twitter:before{content:"\f081"}.o_icon_google:before{content:"\f0d4"}.o_icon_delicious:before{content:"\f1a5"}.o_icon_digg:before{content:"\f1a6"}.o_icon_mailto:before{content:"\f199"}.o_icon_link:before{content:"\f0c1"}.o_icon_yahoo:before{content:"\f19e"}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_portlet{margin-top:2em}.o_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2{display:inline-block}.o_header_with_buttons .o_button_group{margin-top:10px;margin-bottom:0;float:right}.o_xsmall{font-size:12px}.o_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry{font-size:12px}.o_large{font-size:18px}.o_xlarge{font-size:18px}.o_disabled{color:#777 !important;cursor:default}.o_disabled:hover{color:#777 !important}.o_dimmed{opacity:0.4;filter:alpha(opacity=40)}.o_selected{font-weight:bold}.o_deleted{text-decoration:line-through}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.o_withEllipsis .o_morelink:hover,.o_withEllipsis .o_lesslink:hover,#o_main_wrapper #o_toplink:hover,#o_footer_wrapper #o_footer_container #o_footer_powered a:hover,#o_share a:hover,.o_toolbar a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_login .o_login_register:hover,.o_disabled:focus,.o_withEllipsis .o_morelink:focus,.o_withEllipsis .o_lesslink:focus,#o_main_wrapper #o_toplink:focus,#o_footer_wrapper #o_footer_container #o_footer_powered a:focus,#o_share a:focus,.o_toolbar a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}.o_nowrap{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video{display:block;width:100% \9;max-width:100%;height:auto}.o_image{display:block;width:100% \9;max-width:100%;height:auto}.o_withEllipsis .o_ellipsis_links{float:right}.o_withEllipsis .o_morelink,.o_withEllipsis .o_lesslink{display:none}.o_withEllipsis.o_hasOverflow .o_morelink{display:block}.o_withEllipsis.o_hasOverflow .o_lesslink{display:none}.o_withEllipsis.o_hasOverflow.o_showOverflow{height:auto !important}.o_withEllipsis.o_hasOverflow.o_showOverflow .o_morelink{display:none}.o_withEllipsis.o_hasOverflow.o_showOverflow .o_lesslink{display:block}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:70px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#428bca}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}
 #o_footer_wrapper{position:absolute;bottom:0;width:100%;z-index:3;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_wrapper #o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5}#o_footer_wrapper #o_footer_container #o_footer_user #o_counter{white-space:nowrap}#o_footer_wrapper #o_footer_container #o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_wrapper #o_footer_container #o_footer_version{position:absolute;right:15px;top:10px;text-align:right}@media (max-width: 767px){#o_footer_wrapper #o_footer_container #o_footer_version{padding-top:10px;text-align:left}}#o_footer_wrapper #o_footer_container #o_footer_powered{position:absolute;top:30px;right:15px}#o_footer_wrapper #o_footer_container #o_footer_powered img{opacity:0.6;filter:alpha(opacity=60)}#o_footer_wrapper #o_footer_container #o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}@media (max-width: 767px){#o_footer_wrapper #o_footer_container #o_counter,#o_footer_wrapper #o_footer_container #o_footer_version{display:none}#o_footer_wrapper #o_footer_container #o_footer_powered{top:10px}#o_footer_wrapper #o_footer_container #o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_wrapper #o_footer_container #o_footer_powered img{display:none}}
 #o_share{margin-top:10px;font-size:14px}#o_share a{margin:0 3px 0 0;opacity:0.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_navbar_wrapper{z-index:4}#o_navbar_wrapper #o_navbar_container{position:relative}#o_navbar_wrapper #o_navbar_container a.o_navbar-brand{font-size:40px;vertical-align:top;font-weight:bold;color:#31729B}#o_navbar_wrapper #o_navbar_container a.o_navbar-brand:after{content:"\221E"}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#A87E7E}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#CC0000}.o_navbar #o_navbar_tools_permanent #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_tools_permanent #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_help a i{margin-right:0.4em}@media (max-width: 767px){.o_navbar #o_navbar_tools_permanent #o_navbar_impress a span{display:none}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-toggle{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px}.o_navbar.o_navbar-offcanvas .o_navbar_tool{display:none}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a{color:#777}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a:hover,.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a.o_logout:hover,.o_navbar.o_navbar-offcanvas #o_navbar_my_menu a.o_logout:focus{color:#d9534f}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#777;font-size:14px}.o_navbar.o_navbar-offcanvas #o_navbar_my_menu .dropdown-menu .divider{background:none}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;border-top:0;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.o_navbar-toggle:focus{outline:none}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}
 .o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.o_navbar-default .o_navbar-brand{color:#777}.o_navbar-default .o_navbar-brand:hover,.o_navbar-default .o_navbar-brand:focus{color:#5e5e5e;background-color:transparent}.o_navbar-default .o_navbar-text{color:#777}.o_navbar-default .o_navbar-nav>li>a{color:#777}.o_navbar-default .o_navbar-nav>li>a:hover,.o_navbar-default .o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-default .o_navbar-nav>.active>a,.o_navbar-default .o_navbar-nav>.active>a:hover,.o_navbar-default .o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-default .o_navbar-nav>.disabled>a,.o_navbar-default .o_navbar-nav>.disabled>a:hover,.o_navbar-default .o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-default .o_navbar-toggle{border-color:#ddd}.o_navbar-default .o_navbar-toggle:hover,.o_navbar-default .o_navbar-toggle:focus{background-color:#ddd}.o_navbar-default .o_navbar-toggle .icon-bar{background-color:#888}.o_navbar-default .o_navbar-collapse,.o_navbar-default .o_navbar-form{border-color:#e7e7e7}.o_navbar-default .o_navbar-nav>.open>a,.o_navbar-default .o_navbar-nav>.open>a:hover,.o_navbar-default .o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_navbar-default .o_navbar-link{color:#777}.o_navbar-default .o_navbar-link:hover{color:#333}.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar-offcanvas.o_navbar-default .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-inverse{background-color:#222;border-color:#090909}.o_navbar-inverse .o_navbar-brand{color:#777}.o_navbar-inverse .o_navbar-brand:hover,.o_navbar-inverse .o_navbar-brand:focus{color:#fff;background-color:transparent}.o_navbar-inverse .o_navbar-text{color:#777}.o_navbar-inverse .o_navbar-nav>li>a{color:#777}.o_navbar-inverse .o_navbar-nav>li>a:hover,.o_navbar-inverse .o_navbar-nav>li>a:focus{color:#fff;background-color:transparent}.o_navbar-inverse .o_navbar-nav>.active>a,.o_navbar-inverse .o_navbar-nav>.active>a:hover,.o_navbar-inverse .o_navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.o_navbar-inverse .o_navbar-nav>.disabled>a,.o_navbar-inverse .o_navbar-nav>.disabled>a:hover,.o_navbar-inverse .o_navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.o_navbar-inverse .o_navbar-toggle{border-color:#333}.o_navbar-inverse .o_navbar-toggle:hover,.o_navbar-inverse .o_navbar-toggle:focus{background-color:#333}.o_navbar-inverse .o_navbar-toggle .icon-bar{background-color:#fff}.o_navbar-inverse .o_navbar-collapse,.o_navbar-inverse .o_navbar-form{border-color:#101010}.o_navbar-inverse .o_navbar-nav>.open>a,.o_navbar-inverse .o_navbar-nav>.open>a:hover,.o_navbar-inverse .o_navbar-nav>.open>a:focus{background-color:#090909;color:#fff}.o_navbar-inverse .o_navbar-nav .o_navbar-link{color:#777}.o_navbar-inverse .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu .divider{background-color:#090909}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar-inverse .o_navbar-offcanvas.o_navbar-inverse .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}.o_toolbar{position:relative;min-height:37px;margin-bottom:20px;border:1px solid transparent;background-color:#f8f8f8;border-color:#e7e7e7;text-align:center;min-height:37px}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-radius:4px}}.o_toolbar a{color:#777;display:inline-block}.o_toolbar a:hover{color:#333}.o_toolbar .o_breadcrumb{float:left;margin-top:4px;margin-bottom:2px;padding-right:5px;padding-left:5px;padding-top:3px;border-right:1px solid #e7e7e7;margin-right:15px;margin-left:-15px}.o_toolbar .o_breadcrumb i{font-size:18px}.o_toolbar .o_breadcrumb .o_history.o_tool_dropdown i{font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_breadcrumb{margin-top:3px;margin-bottom:2px;padding-top:3px}.o_toolbar .o_breadcrumb i{font-size:16px}.o_toolbar .o_breadcrumb .o_history.o_tool_dropdown i{font-size:12px}}@media (max-width: 767px){.o_toolbar .o_breadcrumb{margin-top:6px;margin-bottom:4px;padding-top:0}.o_toolbar .o_breadcrumb i{font-size:20px}.o_toolbar .o_breadcrumb .o_history{display:none}}.o_toolbar .o_tools_close{float:right;position:relative;margin:8px -15px 5px 15px;border-left:1px solid #e7e7e7;padding-right:5px;padding-left:5px;vertical-align:middle}.o_toolbar .o_tools_close a{line-height:37px;color:#d9534f}.o_toolbar .o_tools_close a:hover{color:#b52b27}.o_toolbar .o_tools_close a i{font-size:18px}.o_toolbar .o_tools_close a span{display:none}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tools_close{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools_close a{line-height:35px}.o_toolbar .o_tools_close a i{font-size:16px}}@media (max-width: 767px){.o_toolbar .o_tools_close{min-height:22px;margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools_close a{line-height:22px}.o_toolbar .o_tools_close a i{font-size:20px}}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-24px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-22px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top}.o_toolbar .o_tool_dropdown{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:block;font-size:12px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}@media (max-width: 991px){.o_toolbar{min-height:35px}.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width: 767px){.o_toolbar{min-height:22px;text-align:left}.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools_right,.o_toolbar .o_tools_center{float:left}}
-- 
GitLab