From 6267cf658a6e814b02dc98b46b83d9c7372ff9ab Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 8 Jul 2014 13:08:00 +0200 Subject: [PATCH] OO-1068: update CP offline mode to be lighter, move icons to _icons.scss --- .../java/org/olat/core/util/FileUtils.java | 2 +- .../java/org/olat/core/util/Formatter.java | 4 - .../olat/modules/cp/CPManifestTreeModel.java | 29 ++++ .../modules/cp/CPOfflineReadableManager.java | 56 +++++++ .../cp/_content/cpofflinereadable.html | 30 ++-- .../ui/QuestionPoolMainEditorController.java | 10 +- .../qpool/ui/admin/PoolsAdminController.java | 4 +- .../olat/modules/wiki/WikiMainController.java | 10 +- .../org/olat/modules/wiki/WikiToCPExport.java | 153 ++++-------------- .../olat/modules/wiki/WikiToCPResource.java | 151 +++++++++++++++++ .../wiki/_i18n/LocalStrings_de.properties | 3 +- .../wiki/_i18n/LocalStrings_en.properties | 3 +- .../wiki/_i18n/LocalStrings_fr.properties | 3 +- .../wiki/_i18n/LocalStrings_it.properties | 2 +- .../wiki/_i18n/LocalStrings_nl_NL.properties | 2 +- .../wiki/_i18n/LocalStrings_pl.properties | 1 - .../wiki/_i18n/LocalStrings_pt_BR.properties | 3 +- .../wiki/_i18n/LocalStrings_pt_PT.properties | 2 +- .../wiki/restapi/WikiWebServiceHelper.java | 31 +--- .../static/cp_offline_menu_mat/mktree.css | 106 ++++++------ .../static/cp_offline_menu_mat/olat_icon.gif | Bin 799 -> 0 bytes .../openolat_powerd_by_120x30.png | Bin 5560 -> 0 bytes .../webapp/static/cp_offline_menu_mat/sky.png | Bin 4836 -> 0 bytes .../static/themes/light/modules/_icons.scss | 9 ++ .../static/themes/light/modules/_qpool.scss | 10 +- src/main/webapp/static/themes/light/theme.css | 4 +- 26 files changed, 359 insertions(+), 269 deletions(-) create mode 100644 src/main/java/org/olat/modules/wiki/WikiToCPResource.java delete mode 100644 src/main/webapp/static/cp_offline_menu_mat/olat_icon.gif delete mode 100644 src/main/webapp/static/cp_offline_menu_mat/openolat_powerd_by_120x30.png delete mode 100644 src/main/webapp/static/cp_offline_menu_mat/sky.png diff --git a/src/main/java/org/olat/core/util/FileUtils.java b/src/main/java/org/olat/core/util/FileUtils.java index 84b7fda0e86..8bac1f10a9d 100644 --- a/src/main/java/org/olat/core/util/FileUtils.java +++ b/src/main/java/org/olat/core/util/FileUtils.java @@ -903,7 +903,7 @@ public class FileUtils { * @param out BufferedOutputStream * @param wt What this I/O is about */ - public static long cpio (BufferedInputStream in, BufferedOutputStream out, String wt) throws IOException { + public static long cpio (InputStream in, OutputStream out, String wt) throws IOException { byte[] buffer = new byte[BSIZE]; diff --git a/src/main/java/org/olat/core/util/Formatter.java b/src/main/java/org/olat/core/util/Formatter.java index 98e65688823..5dcb0a81e8b 100644 --- a/src/main/java/org/olat/core/util/Formatter.java +++ b/src/main/java/org/olat/core/util/Formatter.java @@ -30,7 +30,6 @@ import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.DateFormat; -import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -57,10 +56,7 @@ public class Formatter { private static final DateFormat formatterDatetimeFilesystem = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss_SSS"); private static final DateFormat formatDateTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); - private static final DecimalFormat dataSizeFormat = new DecimalFormat("#,##0.#"); - private static final String[] dataUnits = new String[] { "B", "KB", "MB", "GB", "TB" }; - private static final Map<Locale,Formatter> localToFormatterMap = new HashMap<Locale,Formatter>(); private final Locale locale; diff --git a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java index 95cfb7c1ffc..a6ccb8fdb42 100644 --- a/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java +++ b/src/main/java/org/olat/modules/cp/CPManifestTreeModel.java @@ -25,6 +25,7 @@ package org.olat.modules.cp; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; @@ -66,6 +67,15 @@ public class CPManifestTreeModel extends GenericTreeModel { */ CPManifestTreeModel(VFSLeaf manifest) throws IOException { Document doc = loadDocument(manifest); + initDocument(doc); + } + + CPManifestTreeModel(String manifest) throws IOException { + Document doc = loadDocument(manifest); + initDocument(doc); + } + + private void initDocument(Document doc) { // get all organization elements. need to set namespace rootElement = doc.getRootElement(); String nsuri = rootElement.getNamespace().getURI(); @@ -229,4 +239,23 @@ public class CPManifestTreeModel extends GenericTreeModel { } return doc; } + + private Document loadDocument(String documentStr) throws IOException { + InputStream in = null; + Document doc = null; + try { + in = new ByteArrayInputStream(documentStr.getBytes()); + XMLParser xmlParser = new XMLParser(new IMSEntityResolver()); + doc = xmlParser.parse(in, false); + in.close(); + } catch (IOException e) { + throw e; + } catch(Exception e) { + throw new IOException("could not read and parse from string " + documentStr, e); + } + finally { + IOUtils.closeQuietly(in); + } + return doc; + } } diff --git a/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java b/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java index 864cd53aa78..f856186efa9 100644 --- a/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java +++ b/src/main/java/org/olat/modules/cp/CPOfflineReadableManager.java @@ -26,12 +26,17 @@ package org.olat.modules.cp; import java.io.File; +import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.io.StringWriter; import java.util.HashSet; import java.util.Properties; import java.util.Set; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringEscapeUtils; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; @@ -123,6 +128,27 @@ public class CPOfflineReadableManager { log.error("", e); } } + + public void makeCPOfflineReadable(String manifest, String indexSrc, ZipOutputStream exportStream) { + try { + //start page + String startPage = getOfflineCPStartHTMLFile(manifest, indexSrc); + exportStream.putNextEntry(new ZipEntry("_START_.html")); + IOUtils.write(startPage, exportStream); + exportStream.closeEntry(); + + File cpOfflineMat = new File(WebappHelper.getContextRealPath("/static/"), DIRNAME_CPOFFLINEMENUMAT); + for(File content:cpOfflineMat.listFiles()) { + exportStream.putNextEntry(new ZipEntry(DIRNAME_CPOFFLINEMENUMAT + "/" + content.getName())); + InputStream in = new FileInputStream(content); + FileUtils.cpio(in, exportStream, ""); + exportStream.closeEntry(); + in.close(); + } + } catch (IOException e) { + log.error("", e); + } + } /** * "exports" the the given CP (specified by its OLATResourceable) to a @@ -197,6 +223,36 @@ public class CPOfflineReadableManager { } ExportUtil.writeContentToFile(FILENAME_START, sw.toString(), unzippedDir, "utf-8"); } + + public String getOfflineCPStartHTMLFile(String manifest, String indexSrc) + throws IOException { + + CPManifestTreeModel ctm = new CPManifestTreeModel(manifest); + TreeNode root = ctm.getRootNode(); + // let's take the rootnode title as page title + String rootTitle = root.getTitle(); + + StringBuilder menuTreeSB = new StringBuilder(); + renderMenuTreeNodeRecursively(root, menuTreeSB, 0); + + // now put values to velocityContext + VelocityContext ctx = new VelocityContext(); + ctx.put("menutree", menuTreeSB.toString()); + ctx.put("rootTitle", rootTitle); + ctx.put("cpoff",DIRNAME_CPOFFLINEMENUMAT); + ctx.put("index", indexSrc); + + StringWriter sw = new StringWriter(); + try { + String template = FileUtils.load(CPOfflineReadableManager.class.getResourceAsStream("_content/cpofflinereadable.html"), "utf-8"); + boolean evalResult = velocityEngine.evaluate(ctx, sw, "cpexport", template); + if (!evalResult) + log.error("Could not evaluate velocity template for CP Export"); + } catch (Exception e) { + log.error("Error while evaluating velovity template for CP Export",e); + } + return sw.toString(); + } /** diff --git a/src/main/java/org/olat/modules/cp/_content/cpofflinereadable.html b/src/main/java/org/olat/modules/cp/_content/cpofflinereadable.html index 6b475de41b2..f106fbdca3e 100644 --- a/src/main/java/org/olat/modules/cp/_content/cpofflinereadable.html +++ b/src/main/java/org/olat/modules/cp/_content/cpofflinereadable.html @@ -2,35 +2,23 @@ <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> - <link rel="icon" href="$cpoff /favicon.ico" type="image/x-icon" / > + <link rel="icon" href="${cpoff}/favicon.ico" type="image/x-icon" / > <!-- http://mattkruse.com/ --> - <link rel="stylesheet" href="$cpoff/mktree.css" /> - <script src="$cpoff/mktree.js" type="text/javascript"></script> - + <link rel="stylesheet" href="${cpoff}/mktree.css" /> + <script src="${cpoff}/mktree.js" type="text/javascript"></script> <title>$rootTitle</title> </head> - <body> - <div id="page_margins"> - <div id="main"> + <div id="page_margins"><div id="main"> <div id="menu"> <!-- here goes the menu --> - - <a href="#" onclick="expandTree('tree1'); return false;">Expand All</a> - <a href="#" onclick="collapseTree('tree1'); return false;">Collapse All</a> - - - <ul class="mktree" id="tree1"> - $menutree - </ul> + <a href="#" onclick="expandTree('tree1'); return false;">Expand All</a> + <a href="#" onclick="collapseTree('tree1'); return false;">Collapse All</a> + <ul class="mktree" id="tree1">$menutree</ul> </div> <div id="content"> - <iframe src="" name="content" ></iframe> + <iframe #if($index) src="$index" #else src="" #end name="content" ></iframe> </div> - </div> - <div id="footer"><a href="http://www.openolat.org"><img src="$cpoff/openolat_powerd_by_120x30.png" alt="openolat.org" /> </a></div> - </div> + </div></div> </body> - - </html> \ No newline at end of file diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java index 1574136ccd4..140cb79f944 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java @@ -518,14 +518,14 @@ public class QuestionPoolMainEditorController extends BasicController implements List<Pool> pools = qpoolService.getPools(getIdentity(), roles); for(Pool pool:pools) { GenericTreeNode node = new ControlledTreeNode(pool.getName(), pool); - node.setIconCssClass("o_sel_qpool_pool"); + node.setIconCssClass("o_icon_pool_pool o_sel_qpool_pool"); parentNode.addChild(node); } List<BusinessGroup> groups = qpoolService.getResourcesWithSharedItems(getIdentity()); for(BusinessGroup group:groups) { GenericTreeNode node = new ControlledTreeNode(group.getName(), group); - node.setIconCssClass("o_sel_qpool_share"); + node.setIconCssClass("o_icon_pool_share o_sel_qpool_share"); parentNode.addChild(node); } } @@ -560,17 +560,17 @@ public class QuestionPoolMainEditorController extends BasicController implements parentNode.removeAllChildren(); myOwnNode = new GenericTreeNode(translate("menu.database.my"), "My"); - myOwnNode.setIconCssClass("o_sel_qpool_my_items"); + myOwnNode.setIconCssClass("o_icon_pool_my_items o_sel_qpool_my_items"); parentNode.addChild(myOwnNode); GenericTreeNode node = new GenericTreeNode(translate("menu.database.favorit"), "Marked"); - node.setIconCssClass("o_sel_qpool_favorits"); + node.setIconCssClass("o_icon_pool_favorits o_sel_qpool_favorits"); parentNode.addChild(node); List<QuestionItemCollection> collections = qpoolService.getCollections(getIdentity()); for(QuestionItemCollection coll: collections) { node = new ControlledTreeNode(coll.getName(), coll); - node.setIconCssClass("o_sel_qpool_collection"); + node.setIconCssClass("o_icon_pool_collection o_sel_qpool_collection"); parentNode.addChild(node); } } diff --git a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java index 835f835e45d..17eb31f157b 100644 --- a/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java +++ b/src/main/java/org/olat/modules/qpool/ui/admin/PoolsAdminController.java @@ -104,8 +104,8 @@ public class PoolsAdminController extends FormBasicController { columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(true, Cols.publicPool.i18nKey(), Cols.publicPool.ordinal(), true, "publicPool", FlexiColumnModel.ALIGNMENT_LEFT, new BooleanCellRenderer( - new CSSIconFlexiCellRenderer("o_icon_public_pool"), - new CSSIconFlexiCellRenderer("o_icon_private_pool")) + new CSSIconFlexiCellRenderer("o_icon_pool_public"), + new CSSIconFlexiCellRenderer("o_icon_pool_private")) )); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(Cols.name.i18nKey(), Cols.name.ordinal(), true, "name")); columnsModel.addFlexiColumnModel(new StaticFlexiColumnModel("edit", translate("edit"), "edit-pool")); diff --git a/src/main/java/org/olat/modules/wiki/WikiMainController.java b/src/main/java/org/olat/modules/wiki/WikiMainController.java index 986ef0ee863..230529fa0c9 100644 --- a/src/main/java/org/olat/modules/wiki/WikiMainController.java +++ b/src/main/java/org/olat/modules/wiki/WikiMainController.java @@ -910,14 +910,10 @@ public class WikiMainController extends BasicController implements CloneableCont } } else if (source == archiveWikiDialogCtr) { if (DialogBoxUIFactory.isOkEvent(event)) { - //convert wiki into IMS content package and copy to users home folder - WikiToCPExport utils = new WikiToCPExport(ores, getIdentity(), getTranslator()); - utils.archiveWikiToCP(); - showInfo("wiki.exported.done.infomessage"); + WikiToCPResource rsrc = new WikiToCPResource(ores, getIdentity(), getTranslator()); + ureq.getDispatchResult().setResultingMediaResource(rsrc); } - } - - else if (source == createArticleForm) { + } else if (source == createArticleForm) { calloutCtrl.deactivate(); String query = createArticleForm.getQuery(); diff --git a/src/main/java/org/olat/modules/wiki/WikiToCPExport.java b/src/main/java/org/olat/modules/wiki/WikiToCPExport.java index 9eee36b4f10..fa7f64e07a1 100644 --- a/src/main/java/org/olat/modules/wiki/WikiToCPExport.java +++ b/src/main/java/org/olat/modules/wiki/WikiToCPExport.java @@ -36,27 +36,15 @@ import org.jamwiki.parser.ParserDocument; import org.jamwiki.parser.ParserInput; import org.jamwiki.parser.jflex.JFlexParser; import org.olat.core.CoreSpringFactory; -import org.olat.core.commons.modules.bc.FolderConfig; -import org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl; -import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.id.UserConstants; import org.olat.core.logging.OLATRuntimeException; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; -import org.olat.core.util.FileUtils; import org.olat.core.util.Formatter; -import org.olat.core.util.vfs.LocalFileImpl; -import org.olat.core.util.vfs.LocalFolderImpl; -import org.olat.core.util.vfs.VFSContainer; -import org.olat.core.util.vfs.VFSItem; -import org.olat.core.util.vfs.VFSLeaf; import org.olat.group.BusinessGroup; import org.olat.group.BusinessGroupService; import org.olat.ims.cp.CPCore; -import org.olat.modules.cp.CPOfflineReadableManager; import org.olat.modules.wiki.gui.components.wikiToHtml.StaticExportWikiDataHandler; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; @@ -75,12 +63,9 @@ import org.olat.repository.RepositoryManager; public class WikiToCPExport { public static final String WIKI_MANIFEST_IDENTIFIER = "wiki_cp_export_v1"; - private OLATResourceable ores; - private Identity ident; - private Translator trans; - private JFlexParser parser; - - private static OLog logger = Tracing.createLoggerFor(WikiToCPExport.class); + private final OLATResourceable ores; + private final Translator trans; + private final JFlexParser parser; /** * @@ -88,9 +73,8 @@ public class WikiToCPExport { * @param ident * @param trans */ - public WikiToCPExport(OLATResourceable ores, Identity ident, Translator trans) { + public WikiToCPExport(OLATResourceable ores, Translator trans) { this.ores = ores; - this.ident = ident; this.trans = trans; StaticExportWikiDataHandler datahandler = new StaticExportWikiDataHandler(); @@ -111,54 +95,7 @@ public class WikiToCPExport { parser = new JFlexParser(parserInput); } - /** - * archives the wiki to a CP and moves it to the users private-home - * directory. The name of the exported wiki-file is auto-generated - * (i.e. "wiki-export-datestamp.zip") - * - */ - public void archiveWikiToCP() { - String dateStamp = Formatter.formatDatetimeFilesystemSave(new Date(System.currentTimeMillis())); - LocalFileImpl exportPath = new OlatRootFileImpl(FolderConfig.getUserHomes() + "/" + ident.getName() + "/private/archive/wiki-export-" - + dateStamp + ".zip", null); - archiveWikiToCP(exportPath); - } - - /** - * OO-112 - * - * archives the wiki to a cp and saves it to the given File.<br /> - * in a first step, the wiki is saved to /tmp/xx/ as html-files.<br /> - * in a second step the html-files are packed in a cp and saved to exportPath<br /> - * in a last step, the tmp-dir is deleted - * - * @param exportDir - */ - public void archiveWikiToCP(LocalFileImpl exportPath){ - LocalFolderImpl tempFolder = new OlatRootFolderImpl("/tmp/" + ident.getKey() + "-" + ores.getResourceableId(), null); - if (tempFolder.resolve("imsmanifest.xml") != null) { - tempFolder.delete(); // delete all content if already exists... - tempFolder = new OlatRootFolderImpl("/tmp/" + ident.getKey() + "-" + ores.getResourceableId(), null); - } - Wiki wiki = WikiManager.getInstance().getOrLoadWiki(ores); - - // create the ims manifest - StringBuilder sb = createIMSManifest(wiki, ident); - VFSLeaf manifest = tempFolder.createChildLeaf("imsmanifest.xml"); - copyMediaFiles(WikiManager.getInstance().getMediaFolder(ores), tempFolder); - FileUtils.save(manifest.getOutputStream(false), sb.toString(), "utf-8"); - - // create the javascript mapping file - StringBuilder jsContent = createJsMappingContent(wiki); - VFSLeaf jsFile = tempFolder.createChildLeaf("mapping.js"); - FileUtils.save(jsFile.getOutputStream(false), jsContent.toString(), "utf-8"); - - renderWikiToHtmlFiles(ores, tempFolder); - CPOfflineReadableManager.getInstance().makeCPOfflineReadable(tempFolder.getBasefile(), exportPath.getBasefile()); - tempFolder.delete(); - } - - private StringBuilder createJsMappingContent(Wiki wiki) { + protected String createJsMappingContent(Wiki wiki) { StringBuilder sb = new StringBuilder(); List<WikiPage> pages = wiki.getPagesByDate(); @@ -184,17 +121,10 @@ public class WikiToCPExport { sb.append("}"); sb.append("window.onload = mapLinks;"); - return sb; - } - - private void copyMediaFiles(OlatRootFolderImpl mediaFolder, VFSContainer tempFolder) { - List<VFSItem> images = mediaFolder.getItems(); - for (Iterator<VFSItem> iter = images.iterator(); iter.hasNext();) { - tempFolder.copyFrom( iter.next()); - } + return sb.toString(); } - private StringBuilder createIMSManifest(Wiki wiki, Identity ident) { + protected String createIMSManifest(Wiki wiki, Identity ident) { StringBuilder sb = new StringBuilder(); sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); sb.append("<manifest xmlns=\"http://www.imsglobal.org/xsd/imscp_v1p1\" " + "xmlns:imsmd=\"http://www.imsglobal.org/xsd/imsmd_v1p2\" " @@ -269,7 +199,7 @@ public class WikiToCPExport { sb.append("</resources>"); sb.append("</manifest>"); // close manifest - return sb; + return sb.toString(); } private void createItems(StringBuilder sb, Wiki wiki) { @@ -344,56 +274,37 @@ public class WikiToCPExport { // <file href="einleitung.html" /> // </resource> List<WikiPage> pageNames = wiki.getPagesByDate(); - for (Iterator<WikiPage> iter = pageNames.iterator(); iter.hasNext();) { - WikiPage page = iter.next(); + for (WikiPage page :pageNames) { sb.append("<resource identifier=\"res_").append(page.getPageId()).append("\" type=\"text/html\" ").append("href=\""); sb.append(page.getPageId()).append(".html\">"); sb.append("<file href=\"").append(page.getPageId()).append(".html\" />"); sb.append("</resource>"); } } - - /** - * renders the given wiki (specified by its ores) as HTML files to the given VFSContainer (tempFolder). - * - * @param wikiOres - * @param tempFolder - */ - private void renderWikiToHtmlFiles(OLATResourceable wikiOres, VFSContainer tempFolder) { - WikiManager wikiManager = WikiManager.getInstance(); - Wiki wiki = wikiManager.getOrLoadWiki(wikiOres); - List<WikiPage> pages = wiki.getAllPagesWithContent(true); - if (logger.isDebug()) { - logger.debug("rendering wiki from ores " + wikiOres.getResourceableId() + " to tempFolder '" + tempFolder.getName() - + "'. we have a total of " + pages.size() + " pages..."); - } - for (Iterator<WikiPage> iter = pages.iterator(); iter.hasNext();) { - WikiPage page = iter.next(); - StringBuilder sb = new StringBuilder(); - sb.append("<html>"); - sb.append("<head>\n"); - sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"); - sb.append("<style type=\"text/css\">img {float:right;padding:10px;}</style>\n"); - sb.append("<script type=\"text/javascript\" src=\"cp_offline_menu_mat/jsMath/easy/load.js\"></script>\n"); - sb.append("<script type=\"text/javascript\" src=\"cp_offline_menu_mat/wiki.js\"></script>\n"); - sb.append("<script type=\"text/javascript\" src=\"mapping.js\"></script>\n"); - sb.append("<link rel=\"StyleSheet\" href=\"cp_offline_menu_mat/wiki.css\" type=\"text/css\" media=\"screen, print\">\n"); - - sb.append("</head>\n"); - sb.append("<body>\n"); - sb.append("<h3>").append(getTranslatedWikiPageName(page)).append("</h3>"); - sb.append("<hr><div id=\"olat-wiki\">"); - VFSLeaf file = tempFolder.createChildLeaf(page.getPageId() + ".html"); - try { - ParserDocument doc = parser.parseHTML(page.getContent()); - sb.append(doc.getContent()); - } catch (Exception e) { - throw new OLATRuntimeException("error while parsing from wiki to CP. ores:" + wikiOres.getResourceableId(), e); - } - sb.append("</div></body></html>"); - FileUtils.save(file.getOutputStream(false), sb.toString(), "utf-8"); + + protected String wikiPageToHtml(WikiPage page) { + StringBuilder sb = new StringBuilder(); + sb.append("<html>"); + sb.append("<head>\n"); + sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n"); + sb.append("<style type=\"text/css\">img {float:right;padding:10px;}</style>\n"); + //sb.append("<script type=\"text/javascript\" src=\"cp_offline_menu_mat/jsMath/easy/load.js\"></script>\n"); + sb.append("<script type=\"text/javascript\" src=\"cp_offline_menu_mat/wiki.js\"></script>\n"); + sb.append("<script type=\"text/javascript\" src=\"mapping.js\"></script>\n"); + sb.append("<link rel=\"StyleSheet\" href=\"cp_offline_menu_mat/wiki.css\" type=\"text/css\" media=\"screen, print\">\n"); + + sb.append("</head>\n"); + sb.append("<body>\n"); + sb.append("<h3>").append(getTranslatedWikiPageName(page)).append("</h3>"); + sb.append("<hr><div id=\"olat-wiki\">"); + try { + ParserDocument doc = parser.parseHTML(page.getContent()); + sb.append(doc.getContent()); + } catch (Exception e) { + throw new OLATRuntimeException("error while parsing from wiki to CP. ores:" + ores.getResourceableId(), e); } - + sb.append("</div></body></html>"); + return sb.toString(); } /** diff --git a/src/main/java/org/olat/modules/wiki/WikiToCPResource.java b/src/main/java/org/olat/modules/wiki/WikiToCPResource.java new file mode 100644 index 00000000000..f832bf7652d --- /dev/null +++ b/src/main/java/org/olat/modules/wiki/WikiToCPResource.java @@ -0,0 +1,151 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.wiki; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.io.IOUtils; +import org.olat.core.gui.media.MediaResource; +import org.olat.core.gui.translator.Translator; +import org.olat.core.id.Identity; +import org.olat.core.id.OLATResourceable; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; +import org.olat.core.util.StringHelper; +import org.olat.core.util.ZipUtil; +import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSItem; +import org.olat.modules.cp.CPOfflineReadableManager; + +/** + * + * Initial date: 08.07.2014<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class WikiToCPResource implements MediaResource { + + private static final OLog log = Tracing.createLoggerFor(WikiToCPResource.class); + + private final String encoding = "UTF-8"; + + private final Identity identity; + private final Translator translator; + private final OLATResourceable ores; + + public WikiToCPResource(OLATResourceable ores, Identity identity, Translator translator) { + this.identity = identity; + this.translator = translator; + this.ores = ores; + } + + @Override + public String getContentType() { + return "application/zip"; + } + + @Override + public Long getSize() { + return null; + } + + @Override + public InputStream getInputStream() { + return null; + } + + @Override + public Long getLastModified() { + return null; + } + + @Override + public void prepare(HttpServletResponse hres) { + try { + hres.setCharacterEncoding(encoding); + } catch (Exception e) { + log.error("", e); + } + + Wiki wiki = WikiManager.getInstance().getOrLoadWiki(ores); + String label = "Wiki"; + String urlEncodedLabel = StringHelper.urlEncodeUTF8(label); + hres.setHeader("Content-Disposition","attachment; filename*=UTF-8''" + urlEncodedLabel); + hres.setHeader("Content-Description", urlEncodedLabel); + + ZipOutputStream zout = null; + try { + zout = new ZipOutputStream(hres.getOutputStream()); + zout.setLevel(9); + wikiToCP(wiki, zout); + } catch (Exception e) { + log.error("", e); + } finally { + IOUtils.closeQuietly(zout); + } + } + + @Override + public void release() { + // + } + + private void wikiToCP(Wiki wiki, ZipOutputStream zout) + throws IOException { + WikiToCPExport export = new WikiToCPExport(ores, translator); + + // create the ims manifest + String manifest = export.createIMSManifest(wiki, identity); + zout.putNextEntry(new ZipEntry("imsmanifest.xml")); + IOUtils.write(manifest, zout); + zout.closeEntry(); + + VFSContainer mediaContainer = WikiManager.getInstance().getMediaFolder(ores); + List<VFSItem> images = mediaContainer.getItems(); + for (VFSItem image:images) { + ZipUtil.addToZip(image, "", zout); + } + + // create the javascript mapping file + String jsContent = export.createJsMappingContent(wiki); + zout.putNextEntry(new ZipEntry("mapping.js")); + IOUtils.write(jsContent, zout); + zout.closeEntry(); + + + List<WikiPage> pages = wiki.getAllPagesWithContent(true); + for (WikiPage page: pages) { + String htmlPage = export.wikiPageToHtml(page); + zout.putNextEntry(new ZipEntry(page.getPageId() + ".html")); + IOUtils.write(htmlPage, zout); + zout.closeEntry(); + } + + WikiPage index = wiki.getPage(WikiPage.WIKI_INDEX_PAGE, true); + String indexSrc = index.getPageId() + ".html"; + CPOfflineReadableManager.getInstance().makeCPOfflineReadable(manifest, indexSrc, zout); + } +} diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties index 9360dc4445c..9e505a7c3bd 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties @@ -5,7 +5,7 @@ INSERT={0} neue Linie(n) eingef\u00FCgt MOVE={0} Linie(n) verschoben O_error=Fehlermeldung WikiPage=Wiki-Seite -archive.question=M\u00F6chten Sie das gesamte Wiki in Ihren pers\u00F6nlichen Ordner (Home) exportieren? Das Wiki wird als IMS-Content-Package exportiert. Es kann nur als CP-Lernressource importiert (Autoren) oder offline angeschaut werden. Ein Import als Wiki ist nicht möglich. Wenn die Datei als Wiki importiert werden soll, müssen Sie sie aus den Lernressourcen (Detailansicht) exportieren. +archive.question=M\u00F6chten Sie das gesamte Wiki exportieren? Das Wiki wird als IMS-Content-Package exportiert. Es kann nur als CP-Lernressource importiert (Autoren) oder offline angeschaut werden. Ein Import als Wiki ist nicht möglich. Wenn die Datei als Wiki importiert werden soll, müssen Sie sie aus den Lernressourcen (Detailansicht) exportieren. archive.wiki=Als CP exportieren archive.wiki.title=Momentaufnahme des gesamten Wiki als CP im pers\u00F6nlichen Ordner archivieren. bad.wikiword=Dieser Artikel kann nicht erstellt werden\! Wiki-W\u00F6rter d\u00FCrfen keine "/" enthalten. @@ -106,7 +106,6 @@ wiki.error.page.not.found=<br>Der Artikel wurde von einer anderen Person gel\u00 wiki.error.too.long=Das Wiki-Wort kann nicht erstellt werden, weil es zu lang ist. Maximale L\u00E4nge ist 175 Zeichen\! wiki.exported.from.group={0} Wiki wiki.exported.from.repository={0} -wiki.exported.done.infomessage=Das Wiki wurde erfolgreich in Ihren pers\u00F6nlichen Ordner (Home) exportiert. wiki.index=Startseite wiki.deleted=Das Wiki wurde gelöscht. wikiContentElement={0} diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties index 06df092d136..4ce5c0caed6 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties @@ -5,7 +5,7 @@ INSERT={0} new line(s) inserted MOVE={0} line(s) moved O_error=Error message WikiPage=Wiki page -archive.question=Do you really want to export the entire Wiki to your personal folder (Home)? It will be exported as IMS Content Package and can only be imported as CP learning resource (authors) or used offline. It is not possible to import it as Wiki. If you want to import your file as Wiki you have to export it first from learning resources (detailed view). +archive.question=Do you really want to export the entire Wiki? It will be exported as IMS Content Package and can only be imported as CP learning resource (authors) or used offline. It is not possible to import it as Wiki. If you want to import your file as Wiki you have to export it first from learning resources (detailed view). archive.wiki=Export as CP archive.wiki.title=Archive snap-shot of entire Wiki as CP in your personal folder. bad.wikiword=This article cannot be created\! Wiki words must not contain "/" @@ -104,7 +104,6 @@ wiki.error.contains.bad.chars=This Wiki word contains special characters that ar wiki.error.file.not.found=File not found; either it has been deleted or the file name contains invalid characters. Please modify your link as well as your file name\! wiki.error.page.not.found=<br>This article has been deleted and cannot be displayed anymore. Please modify your link\! wiki.error.too.long=This Wiki word cannot be created; it is too long. Only up to 175 characters are allowed\! -wiki.exported.done.infomessage=The wiki has been exported to your home folder successfully wiki.exported.from.group={0} Wiki wiki.exported.from.repository={0} wiki.index=Home page diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties index eed1121b239..a6debd54426 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties @@ -5,7 +5,7 @@ INSERT={0} nouvelles lignes ins\u00E9r\u00E9es MOVE={0} lignes d\u00E9plac\u00E9es O_error=Message d'erreur WikiPage=Page wiki -archive.question=Voulez-vous exporter l'ensemble du wiki dans votre dossier personnel (Accueil)? Le wiki est export\u00E9 dans le IMS Content Package et peut \u00EAtre import\u00E9 comme ressource didactique CP (auteurs) ou regard\u00E9 offline. Une importation comme wiki n'est pas possible. Si le fichier doit \u00EAtre import\u00E9 comme wiki, vous devez l'exporter \u00E0 partir des ressources didactiques (aper\u00E7u d\u00E9taill\u00E9). +archive.question=Voulez-vous exporter l'ensemble du wiki? Le wiki est export\u00E9 sous le format IMS Content Package et peut \u00EAtre import\u00E9 comme ressource didactique CP (auteurs) ou regard\u00E9 offline. Une importation comme wiki n'est pas possible. Si le fichier doit \u00EAtre import\u00E9 comme wiki, vous devez l'exporter \u00E0 partir des ressources didactiques (aper\u00E7u d\u00E9taill\u00E9). archive.wiki=Exporter archive.wiki.title=Archiver dans le dossier personnel un \u00E9tat des lieux de l'ensemble du wiki. bad.wikiword=Cet article ne peut pas \u00EAtre cr\u00E9e. Les mots wiki ne peuvent pas contenir de "/" . @@ -105,7 +105,6 @@ wiki.error.contains.bad.chars=Le mot wiki contient des caract\u00E8res sp\u00E9c wiki.error.file.not.found=Ce fichier n'a pas pu \u00EAtre trouv\u00E9, \u00E9v. elle a \u00E9t\u00E9 effac\u00E9 par une autre personne ou le nom du fichier contient des caract\u00E8res sp\u00E9ciaux non autoris\u00E9s. Veuillez adapter le lien et le nom du fichier\! wiki.error.page.not.found=<br>Cet article a \u00E9t\u00E9 effac\u00E9 par une autre personne et ne peut donc pas \u00EAtre montr\u00E9. Veuillez adapter le lien\! wiki.error.too.long=Le mot wiki ne peut pas \u00EAtre cr\u00E9\u00E9, car il est trop long. Longueur maximale\: 175 caract\u00E8res\! -wiki.exported.done.infomessage=Le wiki a \u00E9t\u00E9 export\u00E9e avec succ\u00E8s dans votre dossier personnel (Accueil). wiki.exported.from.group=Export Wiki du groupe\: wiki.exported.from.repository=Export Wiki de la ressource didactique\: {0} wiki.index=Page d'accueil diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties index 8226e43bbd5..d6bf30750a3 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties @@ -5,7 +5,7 @@ INSERT={0} nuove linee aggiunte MOVE={0} linee spostate O_error=Messaggio d'errore WikiPage=Pagina wiki -archive.question=Desidera esportare l'intero wiki nella Sua cartella personale (pagina iniziale)? Il wiki viene esportato come IMS Content Package e pu\u00F2 essere importato come risorsa didattica CP (autori) o visionato offline. L'importazione in forma di wiki non \u00E8 possibile. Se si desidera importare il file in forma di wiki, allora deve esportarlo a partire dalle risorse didattiche (visione dettagliata) +archive.question=Desidera esportare l'intero wiki nella Sua? Il wiki viene esportato come IMS Content Package e pu\u00F2 essere importato come risorsa didattica CP (autori) o visionato offline. L'importazione in forma di wiki non \u00E8 possibile. Se si desidera importare il file in forma di wiki, allora deve esportarlo a partire dalle risorse didattiche (visione dettagliata) archive.wiki=Esportare come CP archive.wiki.title=Archiviare un'istantanea dell'intero wiki come CP nella cartella personale. bad.wikiword=Questo articolo non pu\u00F2 essere creato\! Le parole wiki non possono contenere "/". diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties index c9fe70c30e6..474ed879e8e 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties @@ -5,7 +5,7 @@ INSERT={0} nieuwe lijn(en) ingevoegd MOVE={0} lijn(en) verplaatst O_error=Foutmelding WikiPage=Wiki pagina -archive.question=Weet u zeker dat u de hele Wiki wilt exporteren naar uw persoonlijke map (Home)? Het zal ge\u00EBxporteerd worden als IMS Content Package en kan enkel ge\u00EFmporteerd worden als CP leerinhoud (auteurs) of gebruikt offline. Het is niet mogelijk om het te importeren als Wiki. Als u uw bestand wilt importeren als Wiki, moet u het eerst exporteren uit leermiddelen (gedetailleerd overzicht). +archive.question=Weet u zeker dat u de hele Wiki wilt exporteren naar uw? Het zal ge\u00EBxporteerd worden als IMS Content Package en kan enkel ge\u00EFmporteerd worden als CP leerinhoud (auteurs) of gebruikt offline. Het is niet mogelijk om het te importeren als Wiki. Als u uw bestand wilt importeren als Wiki, moet u het eerst exporteren uit leermiddelen (gedetailleerd overzicht). archive.wiki=Exporteren als CP? archive.wiki.title=Archief snap-shot van gehele Wiki als CP in uw persoonlijke map. bad.wikiword=Dit artikel kan niet aangemaakt worden. Wiki woorden mogen geen "/" bevatten. diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties index 263e567e6b9..104a8747659 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties @@ -104,7 +104,6 @@ wiki.error.contains.bad.chars=Ten artyku\u0142 Wiki zawiera niedozwolone znaki\! wiki.error.file.not.found=Nie odnaleziono pliku; zosta\u0142 usuni\u0119ty lub jego nazw zawiera niedozwolone znaki. Zmie\u0144 sw\u00F3j link lub nazw\u0119 pliku\! wiki.error.page.not.found=<br>Ten artyku\u0142 zosta\u0142 usuni\u0119ty i nie mo\u017Ce by\u0107 wy\u015Bwietlony. Zmie\u0144 sw\u00F3j link\! wiki.error.too.long=Ten artyku\u0142 Wiki nie mo\u017Ce zosta\u0107 utworzony; jego tytu\u0142 jest zbyt d\u0142ugi. Dozwolone jest tylko 175 znak\u00F3w\! -wiki.exported.done.infomessage=Wiki zosta\u0142a pomy\u015Blnie wyeksportowana do twojego katalogu domowego. wiki.exported.from.group=Eksport Wiki z grupy\: wiki.exported.from.repository=Eksport Wiki z zasobu edukacyjnego\: {0} wiki.index=Strona g\u0142\u00F3wna diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties index 4487f6e4bc6..3a716186b61 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties @@ -5,7 +5,7 @@ INSERT={0} nova(s) linha(s) inseridas MOVE={0} linha(s) movidas O_error=Mensagem de erro WikiPage=P\u00E1gina Wiki -archive.question=Voc\u00EA realmente quer exportar o wiki inteiro para sua pasta pessoal (Home)? Ser\u00E1 exportado como Pacote de Conte\u00FAdo IMS e pode ser usado offline. Autores podem importar como Recurso de Aprendizado CP. +archive.question=Voc\u00EA realmente quer exportar o wiki inteiro para sua? Ser\u00E1 exportado como Pacote de Conte\u00FAdo IMS e pode ser usado offline. Autores podem importar como Recurso de Aprendizado CP. archive.wiki=Baixar archive.wiki.title=Arquivar uma imagem do wiki inteiro na sua pasta pessoal. bad.wikiword=Este artigo n\u00E3o pode ser criado\! Palavras wiki n\u00E3o devem conter "/" @@ -105,7 +105,6 @@ wiki.error.contains.bad.chars=Esta palavra wiki cont\u00E9m caracteres especiais wiki.error.file.not.found=Arquivo n\u00E3o encontrado; ou foi deletado ou o nome do arquivo cont\u00E9m caracteres inv\u00E1lidos. Favor modificar seu link ou o nome do arquivo\! wiki.error.page.not.found=<br>Este artigo foi deletado e n\u00E3o pode mais ser exibido. Favor modificar seu link\! wiki.error.too.long=Esta palavra wiki n\u00E3o pode ser criada; \u00E9 muito longa. S\u00E3o permitidos somente at\u00E9 175 caracteres\! -wiki.exported.done.infomessage=O wiki foi exportada para a sua pasta "Home" com sucesso wiki.exported.from.group=Exporta\u00E7\u00E3o de Wiki do grupo\: wiki.exported.from.repository=Exporta\u00E7\u00E3o de Wiki do recurso de aprendizado\: {0} wiki.index=P\u00E1gina inicial diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties index 8d21dceabc2..03438c268d9 100644 --- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties +++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties @@ -5,7 +5,7 @@ INSERT={0} nova(s) linha(s) inseridas MOVE={0} linha(s) movidas O_error=Mensagem de erro WikiPage=P\u00E1gina Wiki -archive.question=Voc\u00EA realmente quer exportar o wiki inteiro para sua pasta pessoal (Home)? Ser\u00E1 exportado como Pacote de Conte\u00FAdo IMS e pode ser usado offline. Autores podem importar como Recurso de Aprendizado CP. +archive.question=Voc\u00EA realmente quer exportar o wiki inteiro para sua? Ser\u00E1 exportado como Pacote de Conte\u00FAdo IMS e pode ser usado offline. Autores podem importar como Recurso de Aprendizado CP. archive.wiki=Exportar archive.wiki.title=Arquivar uma imagem do wiki inteiro na sua pasta pessoal. bad.wikiword=Este artigo n\u00E3o pode ser criado\! Palavras wiki n\u00E3o devem conter "/" diff --git a/src/main/java/org/olat/modules/wiki/restapi/WikiWebServiceHelper.java b/src/main/java/org/olat/modules/wiki/restapi/WikiWebServiceHelper.java index d110058f0aa..7016c67d106 100644 --- a/src/main/java/org/olat/modules/wiki/restapi/WikiWebServiceHelper.java +++ b/src/main/java/org/olat/modules/wiki/restapi/WikiWebServiceHelper.java @@ -19,28 +19,20 @@ */ package org.olat.modules.wiki.restapi; -import java.io.File; import java.util.Locale; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import org.olat.core.commons.modules.bc.vfs.OlatRootFileImpl; -import org.olat.core.gui.media.CleanupAfterDeliveryFileMediaResource; import org.olat.core.gui.media.MediaResource; import org.olat.core.gui.media.ServletUtil; import org.olat.core.gui.translator.Translator; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; import org.olat.core.util.Util; -import org.olat.core.util.vfs.LocalFileImpl; -import org.olat.modules.fo.restapi.ForumWebService; import org.olat.modules.wiki.WikiMainController; -import org.olat.modules.wiki.WikiToCPExport; +import org.olat.modules.wiki.WikiToCPResource; import org.olat.restapi.security.RestSecurityHelper; /** @@ -52,7 +44,6 @@ import org.olat.restapi.security.RestSecurityHelper; * */ public class WikiWebServiceHelper { - private static final OLog log = Tracing.createLoggerFor(ForumWebService.class); /** * exports the wiki-Resource and serves the zip file. The given @@ -67,21 +58,11 @@ public class WikiWebServiceHelper { public static Response serve(OLATResourceable wikiResource, HttpServletRequest request, HttpServletResponse response) { Identity ident = RestSecurityHelper.getIdentity(request); Translator translator = Util.createPackageTranslator(WikiMainController.class, new Locale(ident.getUser().getPreferences().getLanguage())); - WikiToCPExport exportUtil = new WikiToCPExport(wikiResource, ident, translator); - LocalFileImpl tmpExport = new OlatRootFileImpl("/tmp/" + ident.getKey() + "-" + wikiResource.getResourceableId() + "-restexport.zip", null); - exportUtil.archiveWikiToCP(tmpExport); - // export is done, serve the file - File baseFile = tmpExport.getBasefile(); - if (baseFile.exists() && baseFile.canRead()) { - // make mediaResource - MediaResource cpMediaResource = new CleanupAfterDeliveryFileMediaResource(baseFile); - // use servletUtil, so file gets deleted afterwards - ServletUtil.serveResource(request, response, cpMediaResource); - return Response.ok().build(); - } else { - log.error("Exported wiki to " + baseFile.getAbsolutePath() + " but now it's not readable for serving to client..."); - return Response.serverError().status(Status.NOT_FOUND).build(); - } + // make mediaResource + MediaResource cpMediaResource = new WikiToCPResource(wikiResource, ident, translator); + // use servletUtil, so file gets deleted afterwards + ServletUtil.serveResource(request, response, cpMediaResource); + return Response.ok().build(); } } diff --git a/src/main/webapp/static/cp_offline_menu_mat/mktree.css b/src/main/webapp/static/cp_offline_menu_mat/mktree.css index 47c61005ad1..d961bc0af44 100644 --- a/src/main/webapp/static/cp_offline_menu_mat/mktree.css +++ b/src/main/webapp/static/cp_offline_menu_mat/mktree.css @@ -1,66 +1,52 @@ @charset "UTF-8"; /* base layout rules */ - html {height:100%;} - html * { font-size: 100.01%; margin:0; padding:0; } - /* (en) reset monospaced elements to font size 16px in Gecko browsers */ - textarea, pre, tt, code { font-family:"Courier New", Courier, monospace; } - /* Base layout gets standard font size 12px */ - body { - font-family: Verdana, Tahoma, Arial, Geneva, Helvetica, sans-serif; font-size: 75.00%; color: #444; - background: #ECECEC url('sky.png') repeat-x 0 88px; - height:100%; - } + html {height:100%;} +html * { font-size: 100.01%; margin:0; padding:0; } +/* (en) reset monospaced elements to font size 16px in Gecko browsers */ + textarea, pre, tt, code { font-family:"Courier New", Courier, monospace; } +/* Base layout gets standard font size 12px */ +body { + font-family: Verdana, Tahoma, Arial, Geneva, Helvetica, sans-serif; font-size: 75.00%; color: #444; + height:100%; +} - #page_margins { - width:1200px; - margin:0 auto; - height:100%; - box-sizing:border-box; - } - #main { - background:#fff; - /* some css3 juice */ - moz-box-shadow: 0 0 14px #d3d3d3; - -ms-box-shadow: 0 0 14px #d3d3d3; - -o-box-shadow: 0 0 14px #d3d3d3; - -webkit-box-shadow: 0 0 14px #d3d3d3; - box-shadow: 0 0 14px #d3d3d3; - min-height:500px; - height:90%; - border-left:1px solid #ccc; - border-right:1px solid #ccc; - padding:20px; - } - #menu { - width:250px; float:left; - } - #content {margin-left:250px; position:relative;} - #content iframe {width:100%; height:100%; border:none; border: 1px solid #ccc;} +#page_margins { + width:1200px; + margin:0 auto; + height:100%; + box-sizing:border-box; +} +#main { + background:#fff; + min-height:500px; + height:90%; + padding:20px; +} +#menu { width:250px; float:left; } +#content {margin-left:250px; position:relative;} +#content iframe { width:100%; min-height:100%; border:none; } - #footer { padding:20px; text-align:center; } +/* Turn off list bullets */ +ul.mktree li { list-style: none; padding-left: 0px; } +/* Control how "spaced out" the tree is */ +ul.mktree { margin-top: 12px;} +ul.mktree ul , ul.mktree li { margin-left:4px; padding-left: 0px; } +/* Provide space for our own "bullet" inside the LI */ +ul.mktree li .bullet { padding-left: 15px; } +/* Show "bullets" in the links, depending on the class of the LI that the link's in */ +ul.mktree li.liOpen .bullet { cursor: pointer; background: url(minus.gif) center left no-repeat; } +ul.mktree li.liClosed .bullet { cursor: pointer; background: url(plus.gif) center left no-repeat; } +ul.mktree li.liBullet .bullet { cursor: default; background: url(bullet.gif) center left no-repeat; } +/* Sublists are visible or not based on class of parent LI */ +ul.mktree li.liOpen ul { display: block; } +ul.mktree li.liClosed ul { display: none; } - /* Turn off list bullets */ - ul.mktree li { list-style: none; padding-left: 0px; } - /* Control how "spaced out" the tree is */ - ul.mktree { margin-top: 12px;} - ul.mktree ul , ul.mktree li { margin-left:4px; padding-left: 0px; } - /* Provide space for our own "bullet" inside the LI */ - ul.mktree li .bullet { padding-left: 15px; } - /* Show "bullets" in the links, depending on the class of the LI that the link's in */ - ul.mktree li.liOpen .bullet { cursor: pointer; background: url(minus.gif) center left no-repeat; } - ul.mktree li.liClosed .bullet { cursor: pointer; background: url(plus.gif) center left no-repeat; } - ul.mktree li.liBullet .bullet { cursor: default; background: url(bullet.gif) center left no-repeat; } - /* Sublists are visible or not based on class of parent LI */ - ul.mktree li.liOpen ul { display: block; } - ul.mktree li.liClosed ul { display: none; } - - - a:link,a:visited { - color: #025D8C; - text-decoration: none; - font-family: Verdana, Tahoma, Arial, Geneva, Helvetica, sans-serif; - } - a:hover, a:active, a:focus { - text-decoration: underline; - } \ No newline at end of file +a:link,a:visited { + color: #025D8C; + text-decoration: none; + font-family: Verdana, Tahoma, Arial, Geneva, Helvetica, sans-serif; +} +a:hover, a:active, a:focus { + text-decoration: underline; +} \ No newline at end of file diff --git a/src/main/webapp/static/cp_offline_menu_mat/olat_icon.gif b/src/main/webapp/static/cp_offline_menu_mat/olat_icon.gif deleted file mode 100644 index d7fb915692fa3cc8a9c61edac3f029720f18d1fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmZ?wbh9u|RA5kGc*ekBlGX!7S(8m5s9>&1!Cb471wiClItPM+Yi7ArErFoG`o&@G zYv3rhXH#PH{Is5x5R^M@3mlb9T?0b1cfwKi!o9VN4m8Z$(y?R*1Wj465{M?R+6_S+ ztB%0Y^z{d)Z9M})b9Y@>vFpUby_YucJHGbFH3-^z@H7x@KXC;O?YVG&-^B;VPo6q{ z{_5#VH-PBI&07$3;>Hsox^x$Wu04DOK`&w8`J0bG^ybsI-@pIB5d%J8kki1&2vjh^ z-jo|eqXU82Z`iSkAILWZt5^KV0+dc<&;e-##R&uZ|AxfG*pSw?_Kwbu*rr4a4zY=o zCQq3<g~K#4hA$>|-uwj%7cC4Ij0zE2ylV9VY4@O&Yc?&CcHFRe$Na6^ckbA|aqpV& z{RcPs9yz)y{P?y5Ev9M)9&6kU)J#KSV|>r-iBV&F_)y4wk-N~NhpOIpPDsCeX|TZH z!$St~w`XH*9;w+_yg1bQA;f78i;RsIL&S|mvstvn4!vaf>Y-r4%%PT*?UbC@EW5u% z!QjCeVG;J1G7cZN^h7teYSdj7u;@DF(WAY7%ad=358LBK&3l>*7rbZ?_ASxc+r;=x zU*&~B%I7U>H5(Rj8>)n^N?~ANwX7>#=>F-dkQ7(XKaQjjNA5Dm8YK~1#nu^OQ(So^ zWE&o|pHs-}eWklfLDNX1@w->VrVy^Sy)DfzT#mJRb#riuBs^Hy+Wq`|R8!6g8Ai6L z=M}%y#+}`@HT(R^{Jryht;<fPEX;Wvx3v2EihKKt*>~R7w9w!T+BK&kW#!IdZa%w; VOOsMszrMb)Is5#(?cNFu)&RCRdlCQu diff --git a/src/main/webapp/static/cp_offline_menu_mat/openolat_powerd_by_120x30.png b/src/main/webapp/static/cp_offline_menu_mat/openolat_powerd_by_120x30.png deleted file mode 100644 index dcec8ee103a1a1c07dc670cab6a895243e2efbfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5560 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 diff --git a/src/main/webapp/static/cp_offline_menu_mat/sky.png b/src/main/webapp/static/cp_offline_menu_mat/sky.png deleted file mode 100644 index 69439610b27fedc53896de48a87d3bdc5c5b4fda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4836 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 KMNUMnLSTZt-nQ%j diff --git a/src/main/webapp/static/themes/light/modules/_icons.scss b/src/main/webapp/static/themes/light/modules/_icons.scss index d98e54ebebc..25fb0f3bf1b 100644 --- a/src/main/webapp/static/themes/light/modules/_icons.scss +++ b/src/main/webapp/static/themes/light/modules/_icons.scss @@ -231,6 +231,15 @@ $fa-css-prefix: "o_icon" !default; .o_portlet_links_icon:before {content: $fa-var-link; } .o_portlet_shibboleth_icon:before {content: $fa-var-sign-in; } +/* question pool */ +.o_icon_qpool:before { content: $fa-var-bank; } +.o_icon_pool_private:before { content: $fa-var-times; } +.o_icon_pool_public:before { content: $fa-var-check; } +.o_icon_pool_my_items:before { content: $fa-var-user; } +.o_icon_pool_favorits:before { content: $fa-var-bookmark; } +.o_icon_pool_collection:before { content: $fa-var-list; } +.o_icon_pool_pool:before { content: $fa-var-share-alt-square;} +.o_icon_pool_share:before { content: $fa-var-group; } /* notification icons */ .o_forum_message_icon:before { content: $fa-var-comment-o; } diff --git a/src/main/webapp/static/themes/light/modules/_qpool.scss b/src/main/webapp/static/themes/light/modules/_qpool.scss index fd1041cedde..d53318942bb 100644 --- a/src/main/webapp/static/themes/light/modules/_qpool.scss +++ b/src/main/webapp/static/themes/light/modules/_qpool.scss @@ -1,9 +1 @@ -.o_icon_qpool:before { content: $fa-var-bank; } -.o_sel_qpool_my_items:before { content: $fa-var-user; } -.o_sel_qpool_favorits:before { content: $fa-var-bookmark; } -.o_sel_qpool_collection:before { content: $fa-var-list; } -.o_sel_qpool_pool:before { content: $fa-var-share-alt-square;} -.o_sel_qpool_share:before { content: $fa-var-group; } -.o_icon_private_pool:before { content: $fa-var-times; } -.o_icon_public_pool:before { content: $fa-var-check; } - +/* question pool */ \ No newline at end of file diff --git a/src/main/webapp/static/themes/light/theme.css b/src/main/webapp/static/themes/light/theme.css index 18fb3a4fd8e..e058ba259e0 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_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_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}} #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}} @@ -70,4 +70,4 @@ body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px .typeahead,.tt-query,.tt-hint{width:396px;height:30px;padding:8px 12px;font-size:24px;line-height:30px;border:2px solid #ccc;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;outline:none}.typeahead{background-color:#fff}.typeahead:focus{border:2px solid #0097cf}.tt-query{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.tt-hint{color:#999}.tt-dropdown-menu{width:422px;margin-top:12px;padding:8px 0;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.tt-suggestion{padding:3px 20px;font-size:18px;line-height:24px}.tt-suggestion.tt-cursor{color:#fff;background-color:#0097cf}.tt-suggestion p{margin:0}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}} .o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5d5d5d !important}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#fff !important}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#fff !important}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5d5d5d !important}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#fff !important}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#fff !important}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#fff !important}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_colorchooser_selected:before{content:"\f00c"}#o_cal_colorchooser div{border:1px solid #428bca;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #428bca;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{border-right:1px solid #428bca}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #428bca;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#428bca;border-color:#357ebd}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#3071a9;border-color:#285e8e}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#428bca;border-color:#357ebd}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#428bca;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#428bca}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#3071a9}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:1em;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;line-height:50px;background-color:#dff0d8}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #428bca;border-bottom:1px solid #428bca}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#428bca}.o_catalog .o_level .o_meta .o_title a:hover{color:#3071a9}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #428bca;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #428bca;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#428bca}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#3071a9}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}} .o_repo_details{position:relative}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start,.o_repo_details .o_book{margin:2em 0}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-top:0}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}} -.o_sp_icon:before{content:"\f0f6"}.o_st_icon:before{content:"\f1b3"}.o_tu_icon:before{content:"\f08e"}.o_bc_icon:before{content:"\f115"}.o_lti_icon:before{content:"\f08e"}.o_cp_icon:before{content:"\f187"}.o_cp_item:before{content:"\f0f6"}.o_scorm_icon:before{content:"\f187"}.o_en_icon:before{content:"\f090"}.o_fo_icon:before{content:"\f0e6"}.o_co_icon:before{content:"\f003"}.o_infomsg_icon:before{content:"\f05a"}.o_cal_icon:before{content:"\f073"}.o_wiki_icon:before{content:"\f0ac"}.o_podcast_icon:before{content:"\f03d"}.o_blog_icon:before{content:"\f0a1"}.o_ep_icon:before{content:"\f12e"}.o_iqtest_icon:before{content:"\f044"}.o_iqself_icon:before{content:"\f044"}.o_iqsurv_icon:before{content:"\f11a"}.o_ta_icon:before{content:"\f0ae"}.o_ms_icon:before{content:"\f087"}.o_dialog_icon:before{content:"\f0c5"}.o_projectbroker_icon:before{content:"\f10c"}.o_ll_icon:before{content:"\f0c1"}.o_den_icon:before{content:"\f133"}.o_cmembers_icon:before{content:"\f0c0"}.o_cl_icon:before{content:"\f046"}.o_vc_icon:before{content:"\f108"}.o_vitero_icon:before{content:"\f108"}.o_openmeetings_icon:before{content:"\f108"}.o_midpub:before{content:"\f058";color:green}.o_midwarn:before{content:"\f071";color:orange}.o_midlock:before{content:"\f023"}.o_miderr:before{content:"\f071";color:red}.o_middel:before{content:"\f12d"}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#843534}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:6px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:30px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_scorm_org:before{content:"\f187"}.o_scorm_item:before{content:"\f016"}.o_scorm_completed:before,.o_scorm_passed:before{content:"\f058";color:green}.o_scorm_failed:before{content:"\f071";color:red}.o_scorm_incomplete:before{content:"\f071";color:orange}.o_scorm_not_attempted:before{background:none}.o_course_editor .o_node_config{margin-bottom:20px}#o_course_editor_errorbox ul,#o_course_editor_warningbox ul{list-style-type:none}div.b_selectiontree{font-size:95%}div.b_selectiontree div.b_selectiontree_item{clear:both;position:relative;top:0;left:0;vertical-align:middle;height:16px;width:auto}div.b_selectiontree div.b_selectiontree_item div{width:16px;height:16px;float:left;display:inline;background-repeat:no-repeat}div.b_selectiontree div.b_selectiontree_item div.b_selectiontree_content{float:left;display:inline;margin-left:0.5em;width:auto;white-space:nowrap}div.b_selectiontree div.b_selectiontree_content{width:auto}div.b_selectiontree div.b_selectiontree_content div{width:auto}div.b_selectiontree div.b_selectiontree_content input{width:1em;height:1em;padding:0;margin:0 0.5em;vertical-align:middle}div.b_selectiontree div.b_selectiontree_content input.b_radio{margin:0}div.b_selectiontree .b_selectiontree_line{background-image:url(../openolat/images/tree/dots.gif)}div.b_selectiontree .b_selectiontree_space{background-image:url(../openolat/images/tree/dots_spacer.gif)}div.b_selectiontree .b_selectiontree_junction{background-image:url(../openolat/images/tree/dots_nt.gif)}div.b_selectiontree .b_selectiontree_end{background-image:url(../openolat/images/tree/dots_nl.gif)}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}.o_qti_item_mattext{line-height:2.5em}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}.o_ep_icon_map:before{content:"\f0b1"}.o_ep_icon_page:before{content:"\f016"}.o_ep_icon_struct:before{content:"\f1b3"}.o_ep_icon_liveblog:before{content:"\f0a1"}.o_artefact_closed:before{content:"\f023"}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.b_eportfolio_map a.b_eportfolio_add_link,.b_eportfolio_map a.b_eportfolio_del_link{float:right;display:inline}.b_eportfolio_page .b_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.navbar-form .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ecf69a;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99e44d;background:#99e44d -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99e44d), to(#cbf1a5));background:#99e44d -moz-linear-gradient(43% 71% 101deg, #cbf1a5, #99e44d);background:#99e44d -o-linear-gradient(#99e44d, #cbf1a5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99e44d', EndColorStr='#cbf1a5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#dff0c1;background:#dff0c1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#dff0c1), to(#a0d346));background:#dff0c1 -moz-linear-gradient(43% 71% 101deg, #a0d346, #dff0c1);background:#dff0c1 -o-linear-gradient(#dff0c1, #a0d346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#dff0c1', EndColorStr='#a0d346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#d7dbb5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#ffba71;background:#ffba71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ffba71), to(#ffba99));background:#ffba71 -moz-linear-gradient(43% 71% 101deg, #ffba99, #ffba71);background:#ffba71 -o-linear-gradient(#ffba71, #ffba99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffba71', EndColorStr='#ffba99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#ff9772;background:#ff9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ff9772), to(#ff9780));background:#ff9772 -moz-linear-gradient(43% 71% 101deg, #ff9780, #ff9772);background:#ff9772 -o-linear-gradient(#ff9772, #ff9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ff9772', EndColorStr='#ff9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#e8afbb;background:#e8afbb -webkit-gradient(linear, 37% 20%, 53% 100%, from(#e8afbb), to(#e8afa0));background:#e8afbb -moz-linear-gradient(43% 71% 101deg, #e8afa0, #e8afbb);background:#e8afbb -o-linear-gradient(#e8afbb, #e8afa0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#e8afbb', EndColorStr='#e8afa0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#ffa800;background:#ffa800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ffa800), to(#ffaf00));background:#ffa800 -moz-linear-gradient(43% 71% 101deg, #ffaf00, #ffa800);background:#ffa800 -o-linear-gradient(#ffa800, #ffaf00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffa800', EndColorStr='#ffaf00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00d2f8;background:#00d2f8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00d2f8), to(#4a9ead));background:#00d2f8 -moz-linear-gradient(43% 71% 101deg, #4a9ead, #00d2f8);background:#00d2f8 -o-linear-gradient(#00d2f8, #4a9ead);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00d2f8', EndColorStr='#4a9ead');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#c4f6ff;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#b3e2f7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#dee7f7;background:#dee7f7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#dee7f7), to(#c1e9fd));background:#dee7f7 -moz-linear-gradient(43% 71% 101deg, #c1e9fd, #dee7f7);background:#dee7f7 -o-linear-gradient(#dee7f7, #c1e9fd);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#dee7f7', EndColorStr='#c1e9fd');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_userbulk_changedcell{font-style:italic;font-weight:bold}.o_icon_qpool:before{content:"\f19c"}.o_sel_qpool_my_items:before{content:"\f007"}.o_sel_qpool_favorits:before{content:"\f02e"}.o_sel_qpool_collection:before{content:"\f03a"}.o_sel_qpool_pool:before{content:"\f1e1"}.o_sel_qpool_share:before{content:"\f0c0"}.o_icon_private_pool:before{content:"\f00d"}.o_icon_public_pool:before{content:"\f00c"}body.o_dmz{background:linear-gradient(to right, rgba(255,255,255,0) 0.2%, rgba(255,255,255,0.95) 60%, #fff 100%),url("../light/images/learn-bg.jpg");background-size:cover, cover}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-left:50%;padding-right:5%;padding-bottom:20px}.o_login h1{margin-bottom:40px}.o_login .o_infomessage_wrapper{background-color:#fff;border:1px solid #e3e3e3;border-radius:4px;padding:6px 12px}.o_login .o_infomessage_wrapper div.o_info,.o_login .o_infomessage_wrapper div.o_warning,.o_login .o_infomessage_wrapper div.o_note{margin:0}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 20px rgba(0,0,0,0.25);box-shadow:0px 1px 20px rgba(0,0,0,0.25)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 20px rgba(0,0,0,0.25);box-shadow:0px 1px 20px rgba(0,0,0,0.25)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}@media (max-width: 991px){body.o_dmz{background:none}.o_login{padding-left:0;padding-right:0}.o_login .o_login_providers,.o_login .o_login_provider{-webkit-box-shadow:none;box-shadow:none}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.25);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.25);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"\f00d" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:120%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px}.ui-dialog .ui-dialog-titlebar{padding:4px 30px 4px 7px;margin:-2px -2px 0 -2px;background-color:#eee}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"\f061";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"\f060";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #357ebd;background:#428bca;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal} +.o_sp_icon:before{content:"\f0f6"}.o_st_icon:before{content:"\f1b3"}.o_tu_icon:before{content:"\f08e"}.o_bc_icon:before{content:"\f115"}.o_lti_icon:before{content:"\f08e"}.o_cp_icon:before{content:"\f187"}.o_cp_item:before{content:"\f0f6"}.o_scorm_icon:before{content:"\f187"}.o_en_icon:before{content:"\f090"}.o_fo_icon:before{content:"\f0e6"}.o_co_icon:before{content:"\f003"}.o_infomsg_icon:before{content:"\f05a"}.o_cal_icon:before{content:"\f073"}.o_wiki_icon:before{content:"\f0ac"}.o_podcast_icon:before{content:"\f03d"}.o_blog_icon:before{content:"\f0a1"}.o_ep_icon:before{content:"\f12e"}.o_iqtest_icon:before{content:"\f044"}.o_iqself_icon:before{content:"\f044"}.o_iqsurv_icon:before{content:"\f11a"}.o_ta_icon:before{content:"\f0ae"}.o_ms_icon:before{content:"\f087"}.o_dialog_icon:before{content:"\f0c5"}.o_projectbroker_icon:before{content:"\f10c"}.o_ll_icon:before{content:"\f0c1"}.o_den_icon:before{content:"\f133"}.o_cmembers_icon:before{content:"\f0c0"}.o_cl_icon:before{content:"\f046"}.o_vc_icon:before{content:"\f108"}.o_vitero_icon:before{content:"\f108"}.o_openmeetings_icon:before{content:"\f108"}.o_midpub:before{content:"\f058";color:green}.o_midwarn:before{content:"\f071";color:orange}.o_midlock:before{content:"\f023"}.o_miderr:before{content:"\f071";color:red}.o_middel:before{content:"\f12d"}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#843534}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:6px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:30px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_scorm_org:before{content:"\f187"}.o_scorm_item:before{content:"\f016"}.o_scorm_completed:before,.o_scorm_passed:before{content:"\f058";color:green}.o_scorm_failed:before{content:"\f071";color:red}.o_scorm_incomplete:before{content:"\f071";color:orange}.o_scorm_not_attempted:before{background:none}.o_course_editor .o_node_config{margin-bottom:20px}#o_course_editor_errorbox ul,#o_course_editor_warningbox ul{list-style-type:none}div.b_selectiontree{font-size:95%}div.b_selectiontree div.b_selectiontree_item{clear:both;position:relative;top:0;left:0;vertical-align:middle;height:16px;width:auto}div.b_selectiontree div.b_selectiontree_item div{width:16px;height:16px;float:left;display:inline;background-repeat:no-repeat}div.b_selectiontree div.b_selectiontree_item div.b_selectiontree_content{float:left;display:inline;margin-left:0.5em;width:auto;white-space:nowrap}div.b_selectiontree div.b_selectiontree_content{width:auto}div.b_selectiontree div.b_selectiontree_content div{width:auto}div.b_selectiontree div.b_selectiontree_content input{width:1em;height:1em;padding:0;margin:0 0.5em;vertical-align:middle}div.b_selectiontree div.b_selectiontree_content input.b_radio{margin:0}div.b_selectiontree .b_selectiontree_line{background-image:url(../openolat/images/tree/dots.gif)}div.b_selectiontree .b_selectiontree_space{background-image:url(../openolat/images/tree/dots_spacer.gif)}div.b_selectiontree .b_selectiontree_junction{background-image:url(../openolat/images/tree/dots_nt.gif)}div.b_selectiontree .b_selectiontree_end{background-image:url(../openolat/images/tree/dots_nl.gif)}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}.o_qti_item_mattext{line-height:2.5em}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}.o_ep_icon_map:before{content:"\f0b1"}.o_ep_icon_page:before{content:"\f016"}.o_ep_icon_struct:before{content:"\f1b3"}.o_ep_icon_liveblog:before{content:"\f0a1"}.o_artefact_closed:before{content:"\f023"}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.b_eportfolio_map a.b_eportfolio_add_link,.b_eportfolio_map a.b_eportfolio_del_link{float:right;display:inline}.b_eportfolio_page .b_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.navbar-form .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ecf69a;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99e44d;background:#99e44d -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99e44d), to(#cbf1a5));background:#99e44d -moz-linear-gradient(43% 71% 101deg, #cbf1a5, #99e44d);background:#99e44d -o-linear-gradient(#99e44d, #cbf1a5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99e44d', EndColorStr='#cbf1a5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#dff0c1;background:#dff0c1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#dff0c1), to(#a0d346));background:#dff0c1 -moz-linear-gradient(43% 71% 101deg, #a0d346, #dff0c1);background:#dff0c1 -o-linear-gradient(#dff0c1, #a0d346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#dff0c1', EndColorStr='#a0d346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#d7dbb5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#ffba71;background:#ffba71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ffba71), to(#ffba99));background:#ffba71 -moz-linear-gradient(43% 71% 101deg, #ffba99, #ffba71);background:#ffba71 -o-linear-gradient(#ffba71, #ffba99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffba71', EndColorStr='#ffba99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#ff9772;background:#ff9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ff9772), to(#ff9780));background:#ff9772 -moz-linear-gradient(43% 71% 101deg, #ff9780, #ff9772);background:#ff9772 -o-linear-gradient(#ff9772, #ff9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ff9772', EndColorStr='#ff9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#e8afbb;background:#e8afbb -webkit-gradient(linear, 37% 20%, 53% 100%, from(#e8afbb), to(#e8afa0));background:#e8afbb -moz-linear-gradient(43% 71% 101deg, #e8afa0, #e8afbb);background:#e8afbb -o-linear-gradient(#e8afbb, #e8afa0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#e8afbb', EndColorStr='#e8afa0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#ffa800;background:#ffa800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#ffa800), to(#ffaf00));background:#ffa800 -moz-linear-gradient(43% 71% 101deg, #ffaf00, #ffa800);background:#ffa800 -o-linear-gradient(#ffa800, #ffaf00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffa800', EndColorStr='#ffaf00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00d2f8;background:#00d2f8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00d2f8), to(#4a9ead));background:#00d2f8 -moz-linear-gradient(43% 71% 101deg, #4a9ead, #00d2f8);background:#00d2f8 -o-linear-gradient(#00d2f8, #4a9ead);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00d2f8', EndColorStr='#4a9ead');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#c4f6ff;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#b3e2f7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#dee7f7;background:#dee7f7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#dee7f7), to(#c1e9fd));background:#dee7f7 -moz-linear-gradient(43% 71% 101deg, #c1e9fd, #dee7f7);background:#dee7f7 -o-linear-gradient(#dee7f7, #c1e9fd);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#dee7f7', EndColorStr='#c1e9fd');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:linear-gradient(to right, rgba(255,255,255,0) 0.2%, rgba(255,255,255,0.95) 60%, #fff 100%),url("../light/images/learn-bg.jpg");background-size:cover, cover}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-left:50%;padding-right:5%;padding-bottom:20px}.o_login h1{margin-bottom:40px}.o_login .o_infomessage_wrapper{background-color:#fff;border:1px solid #e3e3e3;border-radius:4px;padding:6px 12px}.o_login .o_infomessage_wrapper div.o_info,.o_login .o_infomessage_wrapper div.o_warning,.o_login .o_infomessage_wrapper div.o_note{margin:0}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 20px rgba(0,0,0,0.25);box-shadow:0px 1px 20px rgba(0,0,0,0.25)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 20px rgba(0,0,0,0.25);box-shadow:0px 1px 20px rgba(0,0,0,0.25)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}@media (max-width: 991px){body.o_dmz{background:none}.o_login{padding-left:0;padding-right:0}.o_login .o_login_providers,.o_login .o_login_provider{-webkit-box-shadow:none;box-shadow:none}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.25);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.25);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"\f00d" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:120%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px}.ui-dialog .ui-dialog-titlebar{padding:4px 30px 4px 7px;margin:-2px -2px 0 -2px;background-color:#eee}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"\f061";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"\f060";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #357ebd;background:#428bca;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal} -- GitLab