diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..94810d0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +* +!target/*-runner +!target/*-runner.jar +!target/lib/* +!target/quarkus-app/* \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bb71a0b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.sh -crlf +* text=auto \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2de536d --- /dev/null +++ b/.gitignore @@ -0,0 +1,191 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/intellij,eclipse,maven +# Edit at https://www.toptal.com/developers/gitignore?templates=intellij,eclipse,maven + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +.idea/artifacts +.idea/compiler.xml +.idea/jarRepositories.xml +.idea/modules.xml +.idea/*.iml +.idea/modules +*.iml +*.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +# https://plugins.jetbrains.com/plugin/7973-sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator-enh.xml +.idea/**/markdown-navigator/ + +# Cache file creation bug +# See https://youtrack.jetbrains.com/issue/JBR-2257 +.idea/$CACHE_FILE$ + +# CodeStream plugin +# https://plugins.jetbrains.com/plugin/12206-codestream +.idea/codestream.xml + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# End of https://www.toptal.com/developers/gitignore/api/intellij,eclipse,maven + +agent/ +!agent/.gitkeep \ No newline at end of file diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..ffdc10e --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar diff --git a/README.md b/README.md new file mode 100644 index 0000000..00727d6 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Insecure Bank +![Insecure-Bank](https://hdivsecurity.com/img/bank.png) +## Running the application locally + +1. Clone the repository: + + $ git clone https://github.com/hdiv/insecure-bank-vertx.git + +2. Run the application using an embedded Tomcat: + + $ mvnw clean package + $ mvnw cargo:run + +3. You can then access the bank application here: http://localhost:8080 + +## Running with Docker + +Run the insecure-bank application with Docker. + +Place Hdiv agent and license in the ``agent`` root folder. + + $ docker-compose build insecure-bank + $ docker-compose up insecure-bank + +Open the application in > http://localhost:8080 + +## Login credentials +- Username: john +- Password: test \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..9bbf121 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +version: "3.4" + +services: + + insecure-bank: + build: + context: . + dockerfile: src/main/docker/Dockerfile.hdiv + ports: + - 8080:8080 + volumes: + - ./agent:/agent + environment: + QUARKUS_LAUNCH_DEVMODE: "true" + JAVA_OPTIONS: -Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -javaagent:/agent/hdiv-ee-agent.jar -Dhdiv.config.dir=/agent -Dhdiv.toolbar.enabled=true \ No newline at end of file diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..a16b543 --- /dev/null +++ b/mvnw @@ -0,0 +1,310 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..4781719 --- /dev/null +++ b/pom.xml @@ -0,0 +1,160 @@ + + + 4.0.0 + org.hdiv + insecure-bank + 1.0.0-SNAPSHOT + + 3.8.1 + true + 11 + 11 + UTF-8 + UTF-8 + 1.13.7.Final + quarkus-universe-bom + io.quarkus + 1.13.7.Final + 3.0.0-M5 + 3.20.1 + + + + + ${quarkus.platform.group-id} + ${quarkus.platform.artifact-id} + ${quarkus.platform.version} + pom + import + + + org.jdbi + jdbi3-bom + pom + ${jdbi.version} + import + + + + + + io.quarkus + quarkus-flyway + + + io.quarkus + quarkus-vertx + + + io.quarkus + quarkus-jdbc-h2 + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-resteasy-reactive + + + io.quarkus + quarkus-resteasy-reactive-qute + + + io.quarkus + quarkus-elytron-security-jdbc + + + io.vertx + vertx-jdbc-client + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + + io.quarkus + quarkus-maven-plugin + ${quarkus-plugin.version} + true + + + + build + generate-code + generate-code-tests + + + + + + maven-compiler-plugin + ${compiler-plugin.version} + + ${maven.compiler.parameters} + + + + maven-surefire-plugin + ${surefire-plugin.version} + + + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + native + + + native + + + + + + maven-failsafe-plugin + ${surefire-plugin.version} + + + + integration-test + verify + + + + ${project.build.directory}/${project.build.finalName}-runner + org.jboss.logmanager.LogManager + ${maven.home} + + + + + + + + + native + + + + diff --git a/src/main/docker/Dockerfile.hdiv b/src/main/docker/Dockerfile.hdiv new file mode 100644 index 0000000..7f47cca --- /dev/null +++ b/src/main/docker/Dockerfile.hdiv @@ -0,0 +1,31 @@ +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 + +ARG JAVA_PACKAGE=java-11-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/conf/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +# We make four distinct layers so if there are application changes the library layers can be re-used +COPY --chown=1001 target/quarkus-app/lib/ /deployments/lib/ +COPY --chown=1001 target/quarkus-app/*.jar /deployments/ +COPY --chown=1001 target/quarkus-app/app/ /deployments/app/ +COPY --chown=1001 target/quarkus-app/quarkus/ /deployments/quarkus/ + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] diff --git a/src/main/docker/Dockerfile.jvm b/src/main/docker/Dockerfile.jvm new file mode 100644 index 0000000..346bb75 --- /dev/null +++ b/src/main/docker/Dockerfile.jvm @@ -0,0 +1,54 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/insecure-bank-jvm . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/insecure-bank-jvm +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/insecure-bank-jvm +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 + +ARG JAVA_PACKAGE=java-11-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/conf/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +# We make four distinct layers so if there are application changes the library layers can be re-used +COPY --chown=1001 target/quarkus-app/lib/ /deployments/lib/ +COPY --chown=1001 target/quarkus-app/*.jar /deployments/ +COPY --chown=1001 target/quarkus-app/app/ /deployments/app/ +COPY --chown=1001 target/quarkus-app/quarkus/ /deployments/quarkus/ + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] diff --git a/src/main/docker/Dockerfile.legacy-jar b/src/main/docker/Dockerfile.legacy-jar new file mode 100644 index 0000000..455b3a5 --- /dev/null +++ b/src/main/docker/Dockerfile.legacy-jar @@ -0,0 +1,51 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode +# +# Before building the container image run: +# +# ./mvnw package -Dquarkus.package.type=legacy-jar +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.legacy-jar -t quarkus/insecure-bank-legacy-jar . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/insecure-bank-legacy-jar +# +# If you want to include the debug port into your docker image +# you will have to expose the debug port (default 5005) like this : EXPOSE 8080 5005 +# +# Then run the container using : +# +# docker run -i --rm -p 8080:8080 -p 5005:5005 -e JAVA_ENABLE_DEBUG="true" quarkus/insecure-bank-legacy-jar +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 + +ARG JAVA_PACKAGE=java-11-openjdk-headless +ARG RUN_JAVA_VERSION=1.3.8 +ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' +# Install java and the run-java script +# Also set up permissions for user `1001` +RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ + && microdnf update \ + && microdnf clean all \ + && mkdir /deployments \ + && chown 1001 /deployments \ + && chmod "g+rwX" /deployments \ + && chown 1001:root /deployments \ + && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ + && chown 1001 /deployments/run-java.sh \ + && chmod 540 /deployments/run-java.sh \ + && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/conf/security/java.security + +# Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. +ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager" +COPY target/lib/* /deployments/lib/ +COPY target/*-runner.jar /deployments/app.jar + +EXPOSE 8080 +USER 1001 + +ENTRYPOINT [ "/deployments/run-java.sh" ] diff --git a/src/main/docker/Dockerfile.native b/src/main/docker/Dockerfile.native new file mode 100644 index 0000000..25ad8d0 --- /dev/null +++ b/src/main/docker/Dockerfile.native @@ -0,0 +1,27 @@ +#### +# This Dockerfile is used in order to build a container that runs the Quarkus application in native (no JVM) mode +# +# Before building the container image run: +# +# ./mvnw package -Pnative +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native -t quarkus/insecure-bank . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/insecure-bank +# +### +FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3 +WORKDIR /work/ +RUN chown 1001 /work \ + && chmod "g+rwX" /work \ + && chown 1001:root /work +COPY --chown=1001:root target/*-runner /work/application + +EXPOSE 8080 +USER 1001 + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/src/main/docker/Dockerfile.native-distroless b/src/main/docker/Dockerfile.native-distroless new file mode 100644 index 0000000..b7c2f22 --- /dev/null +++ b/src/main/docker/Dockerfile.native-distroless @@ -0,0 +1,23 @@ +#### +# This Dockerfile is used in order to build a distroless container that runs the Quarkus application in native (no JVM) mode +# +# Before building the container image run: +# +# ./mvnw package -Pnative +# +# Then, build the image with: +# +# docker build -f src/main/docker/Dockerfile.native-distroless -t quarkus/insecure-bank . +# +# Then run the container using: +# +# docker run -i --rm -p 8080:8080 quarkus/insecure-bank +# +### +FROM quay.io/quarkus/quarkus-distroless-image:1.0 +COPY target/*-runner /application + +EXPOSE 8080 +USER nonroot + +CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] diff --git a/src/main/java/org/hdivsamples/bean/Account.java b/src/main/java/org/hdivsamples/bean/Account.java new file mode 100644 index 0000000..a158cec --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/Account.java @@ -0,0 +1,47 @@ +package org.hdivsamples.bean; + +import java.security.Principal; + +public class Account implements Principal { + + private String username; + + private String name; + + private String surname; + + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(final String username) { + this.username = username; + } + + @Override + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getSurname() { + return surname; + } + + public void setSurname(final String surname) { + this.surname = surname; + } + + public String getPassword() { + return password; + } + + public void setPassword(final String password) { + this.password = password; + } +} diff --git a/src/main/java/org/hdivsamples/bean/CashAccount.java b/src/main/java/org/hdivsamples/bean/CashAccount.java new file mode 100644 index 0000000..82e84e6 --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/CashAccount.java @@ -0,0 +1,53 @@ +package org.hdivsamples.bean; + +public class CashAccount { + private int id; + + private String number; + + private String username; + + private double availableBalance; + + private String description; + + public int getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public String getNumber() { + return number; + } + + public void setNumber(final String number) { + this.number = number; + } + + public double getAvailableBalance() { + return availableBalance; + } + + public void setAvailableBalance(final double availableBalance) { + this.availableBalance = availableBalance; + } + + public String getDescription() { + return description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public String getUsername() { + return username; + } + + public void setUsername(final String username) { + this.username = username; + } +} diff --git a/src/main/java/org/hdivsamples/bean/CreditAccount.java b/src/main/java/org/hdivsamples/bean/CreditAccount.java new file mode 100644 index 0000000..5c43c24 --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/CreditAccount.java @@ -0,0 +1,53 @@ +package org.hdivsamples.bean; + +public class CreditAccount { + private int id; + + private String number; + + private String username; + + private String description; + + private double availableBalance; + + public int getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public String getNumber() { + return number; + } + + public void setNumber(final String number) { + this.number = number; + } + + public String getUsername() { + return username; + } + + public void setUsername(final String username) { + this.username = username; + } + + public String getDescription() { + return description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public double getAvailableBalance() { + return availableBalance; + } + + public void setAvailableBalance(final double availableBalance) { + this.availableBalance = availableBalance; + } +} diff --git a/src/main/java/org/hdivsamples/bean/FileUntrusted.java b/src/main/java/org/hdivsamples/bean/FileUntrusted.java new file mode 100644 index 0000000..e9b178d --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/FileUntrusted.java @@ -0,0 +1,17 @@ +package org.hdivsamples.bean; + +import java.io.Serializable; + +public class FileUntrusted extends FileUntrustedParent implements Serializable { + + private static final long serialVersionUID = 1L; + + public FileUntrusted() { + + } + + public FileUntrusted(final String username) { + + super(username); + } +} diff --git a/src/main/java/org/hdivsamples/bean/FileUntrustedParent.java b/src/main/java/org/hdivsamples/bean/FileUntrustedParent.java new file mode 100644 index 0000000..d267265 --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/FileUntrustedParent.java @@ -0,0 +1,70 @@ +package org.hdivsamples.bean; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Calendar; +import java.util.Date; + +public class FileUntrustedParent { + + String username; + + public FileUntrustedParent() { + System.out.println("ConstructorParent"); + + // Add 10 minutes to date + Calendar now = Calendar.getInstance(); + now.add(Calendar.MINUTE, 10); + Date teenMinutesFromNow = now.getTime(); + + try { + Runtime rt = Runtime.getRuntime(); + + String[] command = new String[] { "sudo", "date", "-s", teenMinutesFromNow.toString() }; + + // Not working: String command = "sudo date -s \'" + teenMinutesFromNow.toString() + "\""; + System.out.println(command); + Process proc = rt.exec(command); + + BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream())); + + BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream())); + + // read the output from the command + System.out.println("Here is the standard output of the command:\n"); + String s = null; + while ((s = stdInput.readLine()) != null) { + System.out.println(s); + } + + // read any errors from the attempted command + System.out.println("Here is the standard error of the command (if any):\n"); + while ((s = stdError.readLine()) != null) { + System.out.println(s); + } + int exitVal = proc.waitFor(); + + System.out.println("Process exitValue: " + exitVal); + + } + catch (IOException e) { + e.printStackTrace(); + } + catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public FileUntrustedParent(final String username) { + this.username = username; + } + + @Override + public String toString() { + + return "This is: " + username; + + } +} diff --git a/src/main/java/org/hdivsamples/bean/FileUntrustedValid.java b/src/main/java/org/hdivsamples/bean/FileUntrustedValid.java new file mode 100644 index 0000000..93bc271 --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/FileUntrustedValid.java @@ -0,0 +1,19 @@ +package org.hdivsamples.bean; + +import java.io.Serializable; + +public class FileUntrustedValid implements Serializable { + + private static final long serialVersionUID = 1L; + + private String username; + + public FileUntrustedValid() { + + } + + public FileUntrustedValid(final String username) { + + this.username = username; + } +} \ No newline at end of file diff --git a/src/main/java/org/hdivsamples/bean/OperationConfirm.java b/src/main/java/org/hdivsamples/bean/OperationConfirm.java new file mode 100644 index 0000000..cd2ac3c --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/OperationConfirm.java @@ -0,0 +1,28 @@ +package org.hdivsamples.bean; + +import javax.ws.rs.FormParam; + +public class OperationConfirm { + + @FormParam("code") + public String code; + + @FormParam("action") + public String action; + + public String getCode() { + return code; + } + + public void setCode(final String code) { + this.code = code; + } + + public String getAction() { + return action; + } + + public void setAction(final String action) { + this.action = action; + } +} diff --git a/src/main/java/org/hdivsamples/bean/Transaction.java b/src/main/java/org/hdivsamples/bean/Transaction.java new file mode 100644 index 0000000..79b603e --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/Transaction.java @@ -0,0 +1,66 @@ +package org.hdivsamples.bean; + +import java.util.Date; + +public class Transaction { + + private int id; + + private Date date; + + private String description; + + private String number; + + private double amount; + + private double availablebalance; + + public int getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public Date getDate() { + return date; + } + + public void setDate(final Date date) { + this.date = date; + } + + public String getDescription() { + return description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public String getNumber() { + return number; + } + + public void setNumber(final String number) { + this.number = number; + } + + public double getAmount() { + return amount; + } + + public void setAmount(final double amount) { + this.amount = amount; + } + + public double getAvailablebalance() { + return availablebalance; + } + + public void setAvailablebalance(final double availablebalance) { + this.availablebalance = availablebalance; + } +} diff --git a/src/main/java/org/hdivsamples/bean/Transfer.java b/src/main/java/org/hdivsamples/bean/Transfer.java new file mode 100644 index 0000000..5a9e581 --- /dev/null +++ b/src/main/java/org/hdivsamples/bean/Transfer.java @@ -0,0 +1,107 @@ +package org.hdivsamples.bean; + +import io.vertx.core.buffer.Buffer; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonObject; + +import javax.ws.rs.FormParam; +import java.util.Base64; +import java.util.Date; + +public class Transfer { + + private int id; + + @FormParam("fromAccount") + private String fromAccount; + + @FormParam("toAccount") + private String toAccount; + + @FormParam("description") + private String description; + + @FormParam("amount") + private double amount; + + private double fee = 20.0; + + private String username; + + private Date date; + + public static Transfer valueOf(final String cookie) { + if (cookie == null || cookie.isEmpty()) { + return null; + } + return Json.decodeValue(Buffer.buffer(Base64.getDecoder().decode(cookie)), Transfer.class); + } + + public String asString() { + return Base64.getEncoder().encodeToString(Json.encodeToBuffer(this).getBytes()); + } + + public int getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public String getFromAccount() { + return fromAccount; + } + + public void setFromAccount(final String fromAccount) { + this.fromAccount = fromAccount; + } + + public String getToAccount() { + return toAccount; + } + + public void setToAccount(final String toAccount) { + this.toAccount = toAccount; + } + + public String getDescription() { + return description; + } + + public void setDescription(final String description) { + this.description = description; + } + + public double getAmount() { + return amount; + } + + public void setAmount(final double amount) { + this.amount = amount; + } + + public double getFee() { + return fee; + } + + public void setFee(final double fee) { + this.fee = fee; + } + + public String getUsername() { + return username; + } + + public void setUsername(final String username) { + this.username = username; + } + + public Date getDate() { + return date; + } + + public void setDate(final Date date) { + this.date = date; + } +} diff --git a/src/main/java/org/hdivsamples/provider/AbstractExceptionProvider.java b/src/main/java/org/hdivsamples/provider/AbstractExceptionProvider.java new file mode 100644 index 0000000..2b02110 --- /dev/null +++ b/src/main/java/org/hdivsamples/provider/AbstractExceptionProvider.java @@ -0,0 +1,33 @@ +package org.hdivsamples.provider; + +import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR; +import static javax.ws.rs.core.Response.Status.NOT_FOUND; + +import javax.ws.rs.NotFoundException; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.ExceptionMapper; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; + +public class AbstractExceptionProvider implements ExceptionMapper { + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance error(String message, int statusCode, Throwable error); + } + + @Override + public Response toResponse(final E exception) { + String message = "Internal server error"; + int statusCode = INTERNAL_SERVER_ERROR.getStatusCode(); + if (exception instanceof NotFoundException) { + message = "The resource you have requested has not been found"; + statusCode = NOT_FOUND.getStatusCode(); + } + return Response.status(statusCode).entity(Templates.error(message, statusCode, exception).render()).type(MediaType.TEXT_HTML) + .build(); + } + +} diff --git a/src/main/java/org/hdivsamples/provider/InternalServerErrorExceptionProvider.java b/src/main/java/org/hdivsamples/provider/InternalServerErrorExceptionProvider.java new file mode 100644 index 0000000..adac07d --- /dev/null +++ b/src/main/java/org/hdivsamples/provider/InternalServerErrorExceptionProvider.java @@ -0,0 +1,8 @@ +package org.hdivsamples.provider; + +import javax.ws.rs.InternalServerErrorException; +import javax.ws.rs.ext.Provider; + +@Provider +public class InternalServerErrorExceptionProvider extends AbstractExceptionProvider { +} diff --git a/src/main/java/org/hdivsamples/provider/NotAllowedExceptionProvider.java b/src/main/java/org/hdivsamples/provider/NotAllowedExceptionProvider.java new file mode 100644 index 0000000..dacdfda --- /dev/null +++ b/src/main/java/org/hdivsamples/provider/NotAllowedExceptionProvider.java @@ -0,0 +1,8 @@ +package org.hdivsamples.provider; + +import javax.ws.rs.NotAllowedException; +import javax.ws.rs.ext.Provider; + +@Provider +public class NotAllowedExceptionProvider extends AbstractExceptionProvider { +} diff --git a/src/main/java/org/hdivsamples/provider/NotAuthorizedExceptionProvider.java b/src/main/java/org/hdivsamples/provider/NotAuthorizedExceptionProvider.java new file mode 100644 index 0000000..89062de --- /dev/null +++ b/src/main/java/org/hdivsamples/provider/NotAuthorizedExceptionProvider.java @@ -0,0 +1,8 @@ +package org.hdivsamples.provider; + +import javax.ws.rs.NotAuthorizedException; +import javax.ws.rs.ext.Provider; + +@Provider +public class NotAuthorizedExceptionProvider extends AbstractExceptionProvider{ +} diff --git a/src/main/java/org/hdivsamples/provider/NotFoundExceptionProvider.java b/src/main/java/org/hdivsamples/provider/NotFoundExceptionProvider.java new file mode 100644 index 0000000..3e236d7 --- /dev/null +++ b/src/main/java/org/hdivsamples/provider/NotFoundExceptionProvider.java @@ -0,0 +1,8 @@ +package org.hdivsamples.provider; + +import javax.ws.rs.NotFoundException; +import javax.ws.rs.ext.Provider; + +@Provider +public class NotFoundExceptionProvider extends AbstractExceptionProvider { +} diff --git a/src/main/java/org/hdivsamples/resource/ActivityResource.java b/src/main/java/org/hdivsamples/resource/ActivityResource.java new file mode 100644 index 0000000..2b10304 --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/ActivityResource.java @@ -0,0 +1,127 @@ +package org.hdivsamples.resource; + +import static org.hdivsamples.util.JsonUtils.mapToList; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_CASH_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.SecurityContext; + +import org.hdivsamples.bean.Account; +import org.hdivsamples.bean.CashAccount; +import org.hdivsamples.bean.Transaction; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; +import io.smallrye.mutiny.Uni; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.mutiny.core.Vertx; + +@Path("/activity") +public class ActivityResource { + + @Inject + Vertx vertx; + + @Inject + SecurityContext security; + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance accountActivity(Account account, List cashAccounts, CashAccount cashAccount, + List firstCashAccountTransfers, String actualCashAccountNumber); + + public static native TemplateInstance creditActivity(Account account, String actualCreditCardNumber); + } + + @GET + @Produces(MediaType.TEXT_HTML) + public Uni activity() { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), accountsRequest)) + .asTuple().flatMap(tuple -> { + CashAccount cashAccount = new CashAccount(); + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + String number = cashAccounts.get(0).getNumber(); + + JsonObject transactionsRequest = new JsonObject(); + transactionsRequest.put("number", number); + return vertx.eventBus(). request(FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER.name(), transactionsRequest) + .map(message -> { + List firstCashAccountTransfers = mapToList(message, Transaction.class); + List reverseFirstCashAccountTransfers = new ArrayList<>(firstCashAccountTransfers); + Collections.reverse(reverseFirstCashAccountTransfers); + + return Templates.accountActivity(account, cashAccounts, cashAccount, reverseFirstCashAccountTransfers, + number); + }); + }); + } + + @Path("/detail") + @POST + @Produces(MediaType.TEXT_HTML) + public Uni changeAccount(@FormParam("account") final String number) { + return showDetail(number); + } + + @Path("/credit.html") + @GET + @Produces(MediaType.TEXT_HTML) + public Uni viewActivityByCreditNumber(@QueryParam("number") final String number) { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + return vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest).map(message -> { + Account account = mapToList(message, Account.class).get(0); + return Templates.creditActivity(account, number); + }); + } + + @Path("/{account}/detail") + @GET + @Produces(MediaType.TEXT_HTML) + public Uni viewActivityByNumber(@PathParam("account") final String number) { + return showDetail(number); + } + + private Uni showDetail(final String number) { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + JsonObject transactionsRequest = new JsonObject(); + transactionsRequest.put("number", number); + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), accountsRequest), + vertx.eventBus(). request(FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER.name(), transactionsRequest)) + .asTuple().map(tuple -> { + CashAccount cashAccount = new CashAccount(); + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + + List firstCashAccountTransfers = mapToList(tuple.getItem3(), Transaction.class); + List reverseFirstCashAccountTransfers = new ArrayList<>(firstCashAccountTransfers); + Collections.reverse(reverseFirstCashAccountTransfers); + + return Templates.accountActivity(account, cashAccounts, cashAccount, reverseFirstCashAccountTransfers, number); + }); + } +} diff --git a/src/main/java/org/hdivsamples/resource/AdminResource.java b/src/main/java/org/hdivsamples/resource/AdminResource.java new file mode 100644 index 0000000..9a645ce --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/AdminResource.java @@ -0,0 +1,55 @@ +package org.hdivsamples.resource; + +import static org.hdivsamples.util.JsonUtils.mapToList; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME; + +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.SecurityContext; + +import org.hdivsamples.bean.Account; +import org.hdivsamples.bean.CashAccount; +import org.hdivsamples.bean.CreditAccount; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; +import io.smallrye.mutiny.Uni; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.mutiny.core.Vertx; + +@Path("/admin") +public class AdminResource { + + @Inject + Vertx vertx; + + @Inject + SecurityContext security; + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance admin(Account account, List accounts); + } + + @GET + @Produces(MediaType.TEXT_HTML) + public Uni index() { + JsonObject request = new JsonObject(); + request.put("username", security.getUserPrincipal().getName()); + return Uni.combine().all().unis( + vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), request), + vertx.eventBus(). request(FIND_ACCOUNTS.name(), request)) + .asTuple().map(tuple -> { + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List accounts = mapToList(tuple.getItem2(), Account.class); + return Templates.admin(account, accounts); + }); + } +} diff --git a/src/main/java/org/hdivsamples/resource/DashboardResource.java b/src/main/java/org/hdivsamples/resource/DashboardResource.java new file mode 100644 index 0000000..2c294e6 --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/DashboardResource.java @@ -0,0 +1,223 @@ +package org.hdivsamples.resource; + +import static javax.ws.rs.core.Response.Status.FOUND; +import static org.hdivsamples.util.JsonUtils.mapToList; +import static org.hdivsamples.verticle.Functions.EXISTS_STORAGE; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_CASH_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_CREDIT_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.LOAD_STORAGE; +import static org.hdivsamples.verticle.Functions.SAVE_STORAGE; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.URI; +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.Consumes; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.SecurityContext; + +import org.hdivsamples.bean.Account; +import org.hdivsamples.bean.CashAccount; +import org.hdivsamples.bean.CreditAccount; +import org.hdivsamples.bean.FileUntrusted; +import org.hdivsamples.bean.FileUntrustedValid; +import org.hdivsamples.util.InsecureBankUtils; +import org.jboss.resteasy.reactive.MultipartForm; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; +import io.smallrye.mutiny.Uni; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.mutiny.core.Vertx; + +@Path("/dashboard") +public class DashboardResource { + + private static final Logger LOGGER = LoggerFactory.getLogger(DashboardResource.class); + + @Inject + Vertx vertx; + + @Inject + SecurityContext security; + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance dashboard(Account account, List cashAccounts, + List creditAccounts); + + public static native TemplateInstance userDetail(Account account, List cashAccounts, + List creditAccounts); + } + + @GET + @Produces(MediaType.TEXT_HTML) + public Uni index() { + JsonObject request = new JsonObject(); + request.put("username", security.getUserPrincipal().getName()); + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), request), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), request), + vertx.eventBus(). request(FIND_CREDIT_ACCOUNTS_BY_USERNAME.name(), request)) + .asTuple().map(tuple -> { + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + List creditAccounts = mapToList(tuple.getItem3(), CreditAccount.class); + return Templates.dashboard(account, cashAccounts, creditAccounts); + }); + } + + @Path("/userDetail") + @GET + @Produces(MediaType.TEXT_HTML) + public Uni index(@QueryParam("username") final String username) { + JsonObject request = new JsonObject(); + request.put("username", username); + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), request), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), request), + vertx.eventBus(). request(FIND_CREDIT_ACCOUNTS_BY_USERNAME.name(), request)) + .asTuple().map(tuple -> { + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + List creditAccounts = mapToList(tuple.getItem3(), CreditAccount.class); + return Templates.userDetail(account, cashAccounts, creditAccounts); + }); + } + + @Path("/userDetail/avatar") + @GET + @Consumes("*/*") + @Produces("image/*") + public Uni getImage(@QueryParam(value = "image") final String image) { + JsonObject request = new JsonObject(); + request.put("fileName", image); + return vertx.eventBus(). request(EXISTS_STORAGE.name(), request).flatMap(exists -> { + request.put("fileName", exists.body().getBoolean("exists") ? image : "avatar.png"); + return vertx.eventBus(). request(LOAD_STORAGE.name(), request).map(load -> { + File file = new File(load.body().getString("file")); + return Response.ok(file, "image/*").header("Content-Disposition", "attachment; fileName=\"" + file.getName() + "\"") + .build(); + }); + }); + } + + @Path("/userDetail/creditCardImage") + @GET + @Consumes("*/*") + @Produces("image/*") + public Response getCreditCardImage(@QueryParam(value = "url") final String url) { + String downLoadImgFileName = InsecureBankUtils.getNameWithoutExtension(url) + "." + InsecureBankUtils.getFileExtension(url); + InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(url); + return Response.ok(stream, "image/*").header("Content-Disposition", "attachment; fileName=\"" + downLoadImgFileName + "\"").build(); + } + + @Path("/userDetail/avatar/update") + @POST + @Consumes(MediaType.MULTIPART_FORM_DATA) + @Produces(MediaType.TEXT_HTML) + public Uni updateAvatar(@MultipartForm final AvatarUpdateForm form) { + if (form != null && form.imageFile != null) { + JsonObject request = new JsonObject(); + request.put("fileName", form.imageFile.toString()); + request.put("target", security.getUserPrincipal().getName() + ".png"); + String uri = "/dashboard/userDetail?username=" + security.getUserPrincipal().getName(); + return vertx.eventBus(). request(SAVE_STORAGE.name(), request) + .map(result -> Response.status(FOUND).location(URI.create(uri)).build()); + } + else { + return Uni.createFrom().item(Response.status(400).build()); + } + } + + @Path("/userDetail/certificate") + @POST + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Uni getCertificate(@FormParam(value = "username") final String username) { + JsonObject request = new JsonObject(); + request.put("username", username); + return vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), request).map(message -> { + Account account = mapToList(message, Account.class).get(0); + try { + File tmpFile = File.createTempFile("serial", ".ser"); + FileOutputStream fos = new FileOutputStream(tmpFile); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(new FileUntrustedValid(account.getName())); + oos.close(); + fos.close(); + return Response.ok(new FileInputStream(tmpFile), MediaType.APPLICATION_OCTET_STREAM) + .header("Content-Disposition", "attachment; fileName=\"" + account.getName() + ".jks\"").build(); + } + catch (Exception e) { + LOGGER.error("Error downloading certificate", e); + return Response.serverError().build(); + } + }); + } + + @Path("/userDetail/maliciouscertificate") + @POST + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Uni getMaliciousCertificate(@FormParam(value = "username") final String username) { + JsonObject request = new JsonObject(); + request.put("username", username); + return vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), request).map(message -> { + Account account = mapToList(message, Account.class).get(0); + try { + File tmpFile = File.createTempFile("serial", ".ser"); + FileOutputStream fos = new FileOutputStream(tmpFile); + ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(new FileUntrusted(account.getName())); + oos.close(); + fos.close(); + return Response.ok(new FileInputStream(tmpFile), MediaType.APPLICATION_OCTET_STREAM) + .header("Content-Disposition", "attachment; fileName=\"MaliciousCertificate" + account.getName() + ".jks\"").build(); + } + catch (Exception e) { + LOGGER.error("Error downloading certificate", e); + return Response.serverError().build(); + } + }); + } + + @Path("/userDetail/newcertificate") + @POST + @Consumes(MediaType.MULTIPART_FORM_DATA) + @Produces(MediaType.TEXT_PLAIN) + public String processSimple(@MultipartForm final NewCertificateForm form) throws IOException, ClassNotFoundException { + ObjectInputStream ois = new ObjectInputStream(new FileInputStream(form.file)); + ois.readObject(); + ois.close(); + return "

File '" + form.file.getName() + "' uploaded successfully

"; + } + + public static class AvatarUpdateForm { + @FormParam("imageFile") + public File imageFile; + } + + public static class NewCertificateForm { + @FormParam("file") + public File file; + } + +} diff --git a/src/main/java/org/hdivsamples/resource/IndexResource.java b/src/main/java/org/hdivsamples/resource/IndexResource.java new file mode 100644 index 0000000..b76f00b --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/IndexResource.java @@ -0,0 +1,21 @@ +package org.hdivsamples.resource; + +import java.net.URI; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import static javax.ws.rs.core.Response.Status.FOUND; + +@Path("/") +public class IndexResource { + + @GET + @Produces(MediaType.TEXT_HTML) + public Response index() { + return Response.status(FOUND).location(URI.create("/dashboard/")).build(); + } +} diff --git a/src/main/java/org/hdivsamples/resource/LoginResource.java b/src/main/java/org/hdivsamples/resource/LoginResource.java new file mode 100644 index 0000000..8bd0095 --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/LoginResource.java @@ -0,0 +1,46 @@ +package org.hdivsamples.resource; + +import static javax.ws.rs.core.Response.Status.FOUND; + +import java.net.URI; + +import javax.ws.rs.DefaultValue; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.NewCookie; +import javax.ws.rs.core.Response; + +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; + +@Path("/") +public class LoginResource { + + @ConfigProperty(name = "quarkus.http.auth.form.cookie-name") + String cookieName; + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance login(final boolean failed, final boolean logout); + } + + @Path("login.html") + @GET + @Produces(MediaType.TEXT_HTML) + public TemplateInstance login(@QueryParam("failed") @DefaultValue("false") final boolean failed, + @QueryParam("logout") @DefaultValue("false") final boolean logout) { + return Templates.login(failed, logout); + } + + @Path("logout") + @GET + @Produces(MediaType.TEXT_HTML) + public Response logout() { + return Response.status(FOUND).cookie(new NewCookie(cookieName, "")).location(URI.create("/login.html?logout=true")).build(); + } +} \ No newline at end of file diff --git a/src/main/java/org/hdivsamples/resource/TransferResource.java b/src/main/java/org/hdivsamples/resource/TransferResource.java new file mode 100644 index 0000000..739a199 --- /dev/null +++ b/src/main/java/org/hdivsamples/resource/TransferResource.java @@ -0,0 +1,169 @@ +package org.hdivsamples.resource; + +import static javax.ws.rs.core.Response.Status.FOUND; +import static org.hdivsamples.util.JsonUtils.mapToList; +import static org.hdivsamples.verticle.Functions.CREATE_NEW_TRANSFER; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_CASH_ACCOUNTS_BY_USERNAME; + +import java.net.URI; +import java.util.Date; +import java.util.List; + +import javax.inject.Inject; +import javax.ws.rs.BeanParam; +import javax.ws.rs.Consumes; +import javax.ws.rs.CookieParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.NewCookie; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.SecurityContext; + +import org.hdivsamples.bean.Account; +import org.hdivsamples.bean.CashAccount; +import org.hdivsamples.bean.OperationConfirm; +import org.hdivsamples.bean.Transfer; +import org.hdivsamples.util.InsecureBankUtils; + +import io.quarkus.qute.CheckedTemplate; +import io.quarkus.qute.TemplateInstance; +import io.smallrye.mutiny.Uni; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.mutiny.core.Vertx; + +@Path("/transfer") +public class TransferResource { + + private static final String PENDING_TRANSFER = "PENDING_TRANSFER"; + + @CheckedTemplate + public static class Templates { + public static native TemplateInstance newTransfer(Account account, List cashAccounts, Transfer transfer, + boolean error); + + public static native TemplateInstance transferCheck(Account account, Transfer transfer, OperationConfirm operationConfirm); + + public static native TemplateInstance transferConfirmation(Account account, Transfer transfer, String accountType); + } + + static class AccountType { + public static final String PERSONAL = "Personal"; + + public static final String BUSINESS = "Business"; + } + + @Inject + Vertx vertx; + + @Inject + SecurityContext security; + + @GET + @Produces(MediaType.TEXT_HTML) + public Uni newTransferForm() { + return newTransferForm(AccountType.PERSONAL); + } + + @POST + @Produces(MediaType.TEXT_HTML) + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Uni transfer(@BeanParam final Transfer transfer, @CookieParam("accountType") final String accountType) { + if (transfer != null) { + return AccountType.PERSONAL.equals(accountType) ? transferCheck(transfer) : transferConfirmation(transfer, accountType); + } + else { + return newTransferForm(accountType); + } + } + + @Path("/confirm") + @POST + @Produces(MediaType.TEXT_HTML) + @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + public Uni transferCheck(@BeanParam final OperationConfirm confirm, @CookieParam("accountType") final String accountType, + @CookieParam("transfer") final Transfer transfer) { + if ("confirm".equals(confirm.getAction()) && transfer != null) { + return transferConfirmation(transfer, accountType); + } + else { + return Uni.createFrom() + .item(Response.status(FOUND).cookie(new NewCookie("transfer", "")).location(URI.create("/transfer")).build()); + } + } + + private Uni transferCheck(final Transfer transfer) { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + return vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest).map(message -> { + Account account = mapToList(message, Account.class).get(0); + return addTransfer(Response.ok(Templates.transferCheck(account, transfer, new OperationConfirm())), transfer).build(); + }); + } + + private Uni transferConfirmation(final Transfer transfer, final String accountType) { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), accountsRequest)) + .asTuple().flatMap(tuple -> { + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + + double aux = transfer.getAmount(); + if (aux == 0.0) { + return Uni.createFrom() + .item(clearTransfer(Response.ok(Templates.newTransfer(account, cashAccounts, transfer, true))).build()); + } + + transfer.setUsername(security.getUserPrincipal().getName()); + transfer.setDate(new Date()); + + double amount = transfer.getAmount(); + transfer.setAmount(InsecureBankUtils.round(amount, 2)); + + double feeAmount = transfer.getAmount() * transfer.getFee() / 100.0; + transfer.setFee(InsecureBankUtils.round(feeAmount, 2)); + + return vertx.eventBus(). request(CREATE_NEW_TRANSFER.name(), new JsonObject(Json.encodeToBuffer(transfer))) + .map(message -> clearTransfer(Response.ok(Templates.transferConfirmation(account, transfer, accountType))) + .build()); + }); + } + + private Uni newTransferForm(final String accountType) { + JsonObject accountsRequest = new JsonObject(); + accountsRequest.put("username", security.getUserPrincipal().getName()); + + return Uni.combine().all() + .unis(vertx.eventBus(). request(FIND_ACCOUNTS_BY_USERNAME.name(), accountsRequest), + vertx.eventBus(). request(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), accountsRequest)) + .asTuple().map(tuple -> { + Account account = mapToList(tuple.getItem1(), Account.class).get(0); + List cashAccounts = mapToList(tuple.getItem2(), CashAccount.class); + + Transfer newTransfer = new Transfer(); + newTransfer.setFee(5.00); + + return Response.ok(Templates.newTransfer(account, cashAccounts, newTransfer, false).render()) + .cookie(new NewCookie("accountType", accountType)).build(); + }); + } + + // we don't have sessions so we map it as a cookie and forget about trust boundary + + private Response.ResponseBuilder addTransfer(final Response.ResponseBuilder builder, final Transfer transfer) { + return builder.cookie(new NewCookie("transfer", transfer.asString())); + } + + private Response.ResponseBuilder clearTransfer(final Response.ResponseBuilder builder) { + return builder.cookie(new NewCookie("transfer", "")); + } +} diff --git a/src/main/java/org/hdivsamples/security/JdbcIdentityProvider.java b/src/main/java/org/hdivsamples/security/JdbcIdentityProvider.java new file mode 100644 index 0000000..c8f9fd4 --- /dev/null +++ b/src/main/java/org/hdivsamples/security/JdbcIdentityProvider.java @@ -0,0 +1,82 @@ +package org.hdivsamples.security; + +import static org.hdivsamples.util.JsonUtils.mapToList; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME_AND_PASSWORD; + +import java.util.List; + +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Inject; + +import org.hdivsamples.bean.Account; +import org.wildfly.security.auth.server.SecurityDomain; +import org.wildfly.security.evidence.PasswordGuessEvidence; + +import io.quarkus.security.AuthenticationFailedException; +import io.quarkus.security.identity.AuthenticationRequestContext; +import io.quarkus.security.identity.IdentityProvider; +import io.quarkus.security.identity.SecurityIdentity; +import io.quarkus.security.identity.request.UsernamePasswordAuthenticationRequest; +import io.quarkus.security.runtime.QuarkusSecurityIdentity; +import io.smallrye.mutiny.Uni; +import io.smallrye.mutiny.subscription.UniEmitter; +import io.vertx.core.AsyncResult; +import io.vertx.core.Handler; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; + +@ApplicationScoped +public class JdbcIdentityProvider implements IdentityProvider { + + @Inject + Vertx vertx; + + @Inject + SecurityDomain domain; + + @Override + public Class getRequestType() { + return UsernamePasswordAuthenticationRequest.class; + } + + @Override + public Uni authenticate(final UsernamePasswordAuthenticationRequest request, + final AuthenticationRequestContext context) { + return Uni.createFrom().emitter(em -> { + vertx.eventBus().request(FIND_ACCOUNTS_BY_USERNAME_AND_PASSWORD.name(), JsonObject.mapFrom(request), + this.onAccounts(request, em)); + }); + } + + private Handler>> onAccounts(final UsernamePasswordAuthenticationRequest request, + final UniEmitter emitter) { + return message -> { + try { + if (message.failed()) { + emitter.fail(message.cause()); + } + else { + List result = mapToList(message.result(), Account.class); + if (result.isEmpty()) { + throw new AuthenticationFailedException(); + } + Account account = result.get(0); + org.wildfly.security.auth.server.SecurityIdentity identity = domain.authenticate(account.getUsername(), + new PasswordGuessEvidence(request.getPassword().getPassword())); + QuarkusSecurityIdentity.Builder builder = QuarkusSecurityIdentity.builder(); + builder.setPrincipal(identity.getPrincipal()); + builder.addCredential(request.getPassword()); + for (String role : identity.getRoles()) { + builder.addRole(role); + } + emitter.complete(builder.build()); + } + } + catch (Exception e) { + emitter.fail(e); + } + }; + } +} diff --git a/src/main/java/org/hdivsamples/util/ExceptionUtils.java b/src/main/java/org/hdivsamples/util/ExceptionUtils.java new file mode 100644 index 0000000..45b18ba --- /dev/null +++ b/src/main/java/org/hdivsamples/util/ExceptionUtils.java @@ -0,0 +1,18 @@ +package org.hdivsamples.util; + +import java.io.PrintWriter; +import java.io.StringWriter; + +public abstract class ExceptionUtils { + + private ExceptionUtils() { + + } + + public static String getStackTrace(final Throwable throwable) { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw, true); + throwable.printStackTrace(pw); + return sw.getBuffer().toString(); + } +} diff --git a/src/main/java/org/hdivsamples/util/InsecureBankUtils.java b/src/main/java/org/hdivsamples/util/InsecureBankUtils.java new file mode 100644 index 0000000..8d2b202 --- /dev/null +++ b/src/main/java/org/hdivsamples/util/InsecureBankUtils.java @@ -0,0 +1,32 @@ +package org.hdivsamples.util; + +import java.io.File; + +public abstract class InsecureBankUtils { + + private InsecureBankUtils() { + + } + + public static double round(double value, final int places) { + if (places < 0) { + throw new IllegalArgumentException(); + } + long factor = (long) Math.pow(10, places); + value = value * factor; + long tmp = Math.round(value); + return (double) tmp / factor; + } + + public static String getFileExtension(String fullName) { + String fileName = (new File(fullName)).getName(); + int dotIndex = fileName.lastIndexOf('.'); + return dotIndex == -1 ? "" : fileName.substring(dotIndex + 1); + } + + public static String getNameWithoutExtension(String file) { + String fileName = (new File(file)).getName(); + int dotIndex = fileName.lastIndexOf('.'); + return dotIndex == -1 ? fileName : fileName.substring(0, dotIndex); + } +} diff --git a/src/main/java/org/hdivsamples/util/JsonUtils.java b/src/main/java/org/hdivsamples/util/JsonUtils.java new file mode 100644 index 0000000..79b9174 --- /dev/null +++ b/src/main/java/org/hdivsamples/util/JsonUtils.java @@ -0,0 +1,28 @@ +package org.hdivsamples.util; + +import java.util.List; +import java.util.stream.Collectors; + +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; + +; + +public abstract class JsonUtils { + + private JsonUtils() { + + } + + public static List mapToList(final io.vertx.mutiny.core.eventbus.Message message, final Class target) { + return mapToList(message.body(), target); + } + + public static List mapToList(final io.vertx.core.eventbus.Message message, final Class target) { + return mapToList(message.body(), target); + } + + public static List mapToList(final JsonArray array, final Class target) { + return array.stream().map(JsonObject.class::cast).map(it -> it.mapTo(target)).collect(Collectors.toList()); + } +} diff --git a/src/main/java/org/hdivsamples/verticle/AccountVerticle.java b/src/main/java/org/hdivsamples/verticle/AccountVerticle.java new file mode 100644 index 0000000..e7c02d2 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/AccountVerticle.java @@ -0,0 +1,131 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME; +import static org.hdivsamples.verticle.Functions.FIND_ACCOUNTS_BY_USERNAME_AND_PASSWORD; + +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.sql.DataSource; + +import org.hdivsamples.bean.Account; +import org.hdivsamples.util.ExceptionUtils; + +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.jdbc.JDBCClient; +import io.vertx.ext.sql.ResultSet; +import io.vertx.ext.sql.SQLClient; + +@ApplicationScoped +public class AccountVerticle extends AbstractVerticle { + + SQLClient client; + + public void init(final @Observes StartupEvent e, final Vertx vertx, final DataSource dataSource) { + client = JDBCClient.create(vertx, dataSource); + } + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(FIND_ACCOUNTS_BY_USERNAME_AND_PASSWORD.name(), this::findAccountsByUsernameAndPassword); + this.vertx.eventBus().consumer(FIND_ACCOUNTS_BY_USERNAME.name(), this::findAccountsByUsername); + this.vertx.eventBus().consumer(FIND_ACCOUNTS.name(), this::findAccounts); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + @Override + public void stop(final Promise stopPromise) throws Exception { + client.close(); + stopPromise.complete(); + } + + private void findAccountsByUsernameAndPassword(final Message message) { + try { + JsonObject body = message.body(); + String username = body.getString("username"); + String password = body.getJsonObject("password").getString("password"); + String str = "select * from account where username='" + username + "' AND password='" + password + "'"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List accounts = resultSet.getRows().stream().map(new AccountMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(accounts))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private void findAccountsByUsername(final Message message) { + try { + JsonObject body = message.body(); + String username = body.getString("username"); + String str = "select * from account where username='" + username + "'"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List accounts = resultSet.getRows().stream().map(new AccountMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(accounts))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private void findAccounts(final Message message) { + try { + String str = "select * from account"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List accounts = resultSet.getRows().stream().map(new AccountMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(accounts))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private static class AccountMapper implements Function { + @Override + public Account apply(final JsonObject rs) { + Account localAccount = new Account(); + localAccount.setUsername(rs.getString("USERNAME")); + localAccount.setName(rs.getString("NAME")); + localAccount.setSurname(rs.getString("SURNAME")); + localAccount.setPassword(rs.getString("PASSWORD")); + return localAccount; + } + } +} diff --git a/src/main/java/org/hdivsamples/verticle/ActivityVerticle.java b/src/main/java/org/hdivsamples/verticle/ActivityVerticle.java new file mode 100644 index 0000000..6c702cf --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/ActivityVerticle.java @@ -0,0 +1,91 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER; + +import java.time.Instant; +import java.util.Date; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.sql.DataSource; + +import org.hdivsamples.bean.Transaction; +import org.hdivsamples.util.ExceptionUtils; + +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.jdbc.JDBCClient; +import io.vertx.ext.sql.ResultSet; +import io.vertx.ext.sql.SQLClient; + +@ApplicationScoped +public class ActivityVerticle extends AbstractVerticle { + + SQLClient client; + + public void init(final @Observes StartupEvent e, final Vertx vertx, final DataSource dataSource) { + client = JDBCClient.create(vertx, dataSource); + } + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER.name(), this::findTransactionsByCashAccountNumber); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + @Override + public void stop(final Promise stopPromise) throws Exception { + client.close(); + stopPromise.complete(); + } + + private void findTransactionsByCashAccountNumber(final Message message) { + try { + JsonObject body = message.body(); + String number = body.getString("number"); + String str = "SELECT * FROM transaction WHERE number = '" + number + "'"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List transactions = resultSet.getRows().stream().map(new TransactionMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(transactions))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private static class TransactionMapper implements Function { + + @Override + public Transaction apply(final JsonObject rs) { + Transaction transaction = new Transaction(); + transaction.setId(rs.getInteger("ID")); + transaction.setDate(Date.from(Instant.parse(rs.getString("DATE")))); + transaction.setDescription(rs.getString("DESCRIPTION")); + transaction.setNumber(rs.getString("NUMBER")); + transaction.setAmount(rs.getDouble("AMOUNT")); + transaction.setAvailablebalance(rs.getDouble("AVAILABLEBALANCE")); + return transaction; + } + } +} \ No newline at end of file diff --git a/src/main/java/org/hdivsamples/verticle/CashAccountVerticle.java b/src/main/java/org/hdivsamples/verticle/CashAccountVerticle.java new file mode 100644 index 0000000..15b5c89 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/CashAccountVerticle.java @@ -0,0 +1,87 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.FIND_CASH_ACCOUNTS_BY_USERNAME; + +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.sql.DataSource; + +import org.hdivsamples.bean.CashAccount; +import org.hdivsamples.util.ExceptionUtils; + +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.jdbc.JDBCClient; +import io.vertx.ext.sql.ResultSet; +import io.vertx.ext.sql.SQLClient; + +@ApplicationScoped +public class CashAccountVerticle extends AbstractVerticle { + + SQLClient client; + + public void init(final @Observes StartupEvent e, final Vertx vertx, final DataSource dataSource) { + client = JDBCClient.create(vertx, dataSource); + } + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(FIND_CASH_ACCOUNTS_BY_USERNAME.name(), this::findCashAccountsByUsername); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + @Override + public void stop(final Promise stopPromise) throws Exception { + client.close(); + stopPromise.complete(); + } + + private void findCashAccountsByUsername(final Message message) { + try { + JsonObject body = message.body(); + String username = body.getString("username"); + String str = "select * from cashaccount where username='" + username + "'"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List accounts = resultSet.getRows().stream().map(new CashAccountMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(accounts))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private static class CashAccountMapper implements Function { + @Override + public CashAccount apply(final JsonObject rs) { + CashAccount localAccount = new CashAccount(); + localAccount.setId(rs.getInteger("ID")); + localAccount.setNumber(rs.getString("NUMBER")); + localAccount.setUsername(rs.getString("USERNAME")); + localAccount.setAvailableBalance(rs.getDouble("AVAILABLEBALANCE")); + localAccount.setDescription(rs.getString("DESCRIPTION")); + return localAccount; + } + } +} diff --git a/src/main/java/org/hdivsamples/verticle/CreditAccountVerticle.java b/src/main/java/org/hdivsamples/verticle/CreditAccountVerticle.java new file mode 100644 index 0000000..112b173 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/CreditAccountVerticle.java @@ -0,0 +1,87 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.FIND_CREDIT_ACCOUNTS_BY_USERNAME; + +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.sql.DataSource; + +import org.hdivsamples.bean.CreditAccount; +import org.hdivsamples.util.ExceptionUtils; + +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.Json; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.jdbc.JDBCClient; +import io.vertx.ext.sql.ResultSet; +import io.vertx.ext.sql.SQLClient; + +@ApplicationScoped +public class CreditAccountVerticle extends AbstractVerticle { + + SQLClient client; + + public void init(final @Observes StartupEvent e, final Vertx vertx, final DataSource dataSource) { + client = JDBCClient.create(vertx, dataSource); + } + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(FIND_CREDIT_ACCOUNTS_BY_USERNAME.name(), this::findCreditAccountsByUsername); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + @Override + public void stop(final Promise stopPromise) throws Exception { + client.close(); + stopPromise.complete(); + } + + private void findCreditAccountsByUsername(final Message message) { + try { + JsonObject body = message.body(); + String username = body.getString("username"); + String str = "select * from creditaccount where username='" + username + "'"; + client.query(str, result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + ResultSet resultSet = result.result(); + List accounts = resultSet.getRows().stream().map(new CreditAccountMapper()).collect(Collectors.toList()); + message.reply(new JsonArray(Json.encodeToBuffer(accounts))); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private static class CreditAccountMapper implements Function { + @Override + public CreditAccount apply(final JsonObject rs) { + CreditAccount localAccount = new CreditAccount(); + localAccount.setId(rs.getInteger("ID")); + localAccount.setNumber(rs.getString("NUMBER")); + localAccount.setUsername(rs.getString("USERNAME")); + localAccount.setDescription(rs.getString("DESCRIPTION")); + localAccount.setAvailableBalance(rs.getDouble("AVAILABLEBALANCE")); + return localAccount; + } + } +} \ No newline at end of file diff --git a/src/main/java/org/hdivsamples/verticle/Functions.java b/src/main/java/org/hdivsamples/verticle/Functions.java new file mode 100644 index 0000000..0acae15 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/Functions.java @@ -0,0 +1,17 @@ +package org.hdivsamples.verticle; + +public enum Functions { + + // @formatter:off + FIND_ACCOUNTS_BY_USERNAME_AND_PASSWORD, + FIND_ACCOUNTS_BY_USERNAME, + FIND_ACCOUNTS, + FIND_CASH_ACCOUNTS_BY_USERNAME, + FIND_CREDIT_ACCOUNTS_BY_USERNAME, + EXISTS_STORAGE, + LOAD_STORAGE, + SAVE_STORAGE, + FIND_TRANSACTIONS_BY_CASH_ACCOUNT_NUMBER, + CREATE_NEW_TRANSFER + // @formatter:on +} diff --git a/src/main/java/org/hdivsamples/verticle/StorageVerticle.java b/src/main/java/org/hdivsamples/verticle/StorageVerticle.java new file mode 100644 index 0000000..9551653 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/StorageVerticle.java @@ -0,0 +1,80 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.EXISTS_STORAGE; +import static org.hdivsamples.verticle.Functions.LOAD_STORAGE; +import static org.hdivsamples.verticle.Functions.SAVE_STORAGE; + +import java.io.File; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; + +import javax.enterprise.context.ApplicationScoped; + +import org.hdivsamples.util.ExceptionUtils; + +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.JsonObject; + +@ApplicationScoped +public class StorageVerticle extends AbstractVerticle { + + private final String url = this.getClass().getClassLoader().getResource("").getPath() + "/avatars/"; + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(EXISTS_STORAGE.name(), this::exists); + this.vertx.eventBus().consumer(LOAD_STORAGE.name(), this::load); + this.vertx.eventBus().consumer(SAVE_STORAGE.name(), this::save); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + private void exists(final Message message) { + try { + JsonObject body = message.body(); + String fileName = body.getString("fileName"); + File file = new File(url + fileName); + JsonObject response = new JsonObject(); + response.put("exists", file.exists()); + message.reply(response); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private void save(final Message message) { + try { + JsonObject body = message.body(); + File source = new File(body.getString("fileName")); + File target = new File(url + body.getString("target")); + Files.copy(source.toPath(), target.toPath(), StandardCopyOption.REPLACE_EXISTING); + JsonObject response = new JsonObject(); + response.put("saved", true); + message.reply(response); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private void load(final Message message) { + try { + JsonObject body = message.body(); + String fileName = body.getString("fileName"); + JsonObject response = new JsonObject(); + response.put("file", url + fileName); + message.reply(response); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } +} diff --git a/src/main/java/org/hdivsamples/verticle/TransferVerticle.java b/src/main/java/org/hdivsamples/verticle/TransferVerticle.java new file mode 100644 index 0000000..ae1c218 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/TransferVerticle.java @@ -0,0 +1,225 @@ +package org.hdivsamples.verticle; + +import static org.hdivsamples.verticle.Functions.CREATE_NEW_TRANSFER; + +import java.util.Date; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.sql.DataSource; + +import org.hdivsamples.bean.Transfer; +import org.hdivsamples.util.ExceptionUtils; +import org.hdivsamples.util.InsecureBankUtils; + +import io.quarkus.runtime.StartupEvent; +import io.smallrye.mutiny.Uni; +import io.vertx.core.AbstractVerticle; +import io.vertx.core.Promise; +import io.vertx.core.Vertx; +import io.vertx.core.eventbus.Message; +import io.vertx.core.json.JsonArray; +import io.vertx.core.json.JsonObject; +import io.vertx.ext.jdbc.JDBCClient; +import io.vertx.ext.sql.SQLClient; +import io.vertx.ext.sql.SQLConnection; + +@ApplicationScoped +public class TransferVerticle extends AbstractVerticle { + + SQLClient client; + + public void init(final @Observes StartupEvent e, final Vertx vertx, final DataSource dataSource) { + client = JDBCClient.create(vertx, dataSource); + } + + @Override + public void start(final Promise startPromise) throws Exception { + try { + this.vertx.eventBus().consumer(CREATE_NEW_TRANSFER.name(), this::createNewTransfer); + startPromise.complete(); + } + catch (Exception e) { + startPromise.fail(e); + } + } + + @Override + public void stop(final Promise stopPromise) throws Exception { + client.close(); + stopPromise.complete(); + } + + private void createNewTransfer(final Message message) { + try { + client.getConnection(result -> { + if (result.failed()) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(result.cause())); + } + else { + Transfer transfer = message.body().mapTo(Transfer.class); + SQLConnection connection = result.result(); + insertTransfer(connection, transfer).flatMap(r -> debitFromAccount(connection, transfer)) + .flatMap(r -> creditToAccount(connection, transfer)).subscribe().with(r -> { + connection.close(); + JsonObject reply = new JsonObject(); + reply.put("succeeded", true); + message.reply(reply); + }, e -> + connection.rollback(handler -> { + connection.close(); + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + }) + ); + } + }); + } + catch (Exception e) { + message.fail(500, "Internal Server error: " + ExceptionUtils.getStackTrace(e)); + } + } + + private Uni debitFromAccount(final SQLConnection connection, final Transfer transfer) { + return getCashAccountBalance(connection, transfer.getFromAccount()).flatMap(actualAmount -> { + double amountTotal = actualAmount - (transfer.getAmount() + transfer.getFee()); + double amount = actualAmount - transfer.getAmount(); + double amountWithFees = amount - transfer.getFee(); + return updateCashAccount(connection, transfer.getFromAccount(), amountTotal) + .flatMap(r -> getCreditAccountId(connection, transfer.getFromAccount())) + .flatMap(accountId -> updateCreditAccount(connection, accountId, amountTotal)) + .flatMap(r -> insertNewActivity(connection, transfer.getDate(), getTransferDesc(transfer), transfer.getFromAccount(), + -transfer.getAmount(), amount)) + .flatMap(r -> insertNewActivity(connection, transfer.getDate(), "TRANSFER FEE", transfer.getFromAccount(), + -transfer.getFee(), amountWithFees)); + }); + } + + private Uni creditToAccount(final SQLConnection connection, final Transfer transfer) { + return getCreditAccountId(connection, transfer.getToAccount()).flatMap(accountId -> { + if (accountId <= 0) { + return Uni.createFrom().voidItem(); + } + else { + return getCashAccountBalance(connection, transfer.getToAccount()).flatMap(actualAmount -> { + double amountTotal = actualAmount + transfer.getAmount(); + return updateCreditAccount(connection, accountId, amountTotal).flatMap(r -> insertNewActivity(connection, + transfer.getDate(), getTransferDesc(transfer), transfer.getToAccount(), transfer.getAmount(), amountTotal)); + }); + } + }); + } + + private Uni insertTransfer(final SQLConnection connection, final Transfer transfer) { + return Uni.createFrom().emitter(emitter -> { + String sql = "INSERT INTO transfer " + + "(fromAccount, toAccount, description, amount, fee, username, date) VALUES (?, ?, ?, ?, ?, ?, ?)"; + JsonArray params = new JsonArray(); + params.add(transfer.getFromAccount()); + params.add(transfer.getToAccount()); + params.add(transfer.getDescription()); + params.add(transfer.getAmount()); + params.add(transfer.getFee()); + params.add(transfer.getUsername()); + params.add(transfer.getDate().toInstant()); + connection.updateWithParams(sql, params, result -> { + if (result.failed()) { + emitter.fail(result.cause()); + } + else { + emitter.complete(null); + } + }); + }); + } + + private Uni getCashAccountBalance(final SQLConnection connection, final String account) { + return Uni.createFrom().emitter(emitter -> { + String select = "SELECT availablebalance FROM cashaccount WHERE number = ?"; + JsonArray selectParams = new JsonArray(); + selectParams.add(account); + connection.querySingleWithParams(select, selectParams, selectResult -> { + if (selectResult.failed()) { + emitter.fail(selectResult.cause()); + } + else { + double actualAmount = selectResult.result().getDouble(0); + emitter.complete(actualAmount); + } + }); + }); + } + + private Uni updateCashAccount(final SQLConnection connection, final String account, final double actualAmount) { + return Uni.createFrom().emitter(emitter -> { + String update = "UPDATE cashaccount SET availablebalance= ? WHERE number = ?"; + JsonArray updateParams = new JsonArray(); + updateParams.add(actualAmount); + updateParams.add(account); + connection.updateWithParams(update, updateParams, updateResult -> { + if (updateResult.failed()) { + emitter.fail(updateResult.cause()); + } + else { + emitter.complete(null); + } + }); + }); + } + + private Uni updateCreditAccount(final SQLConnection connection, final Long cashAccountId, final double balance) { + return Uni.createFrom().emitter(emitter -> { + String update = "UPDATE creditAccount SET availablebalance='" + balance + "' WHERE cashaccountid ='" + cashAccountId + "'"; + connection.update(update, updateResult -> { + if (updateResult.failed()) { + emitter.fail(updateResult.cause()); + } + else { + emitter.complete(null); + } + }); + }); + } + + private Uni getCreditAccountId(final SQLConnection connection, final String account) { + return Uni.createFrom().emitter(emitter -> { + String select = "SELECT id FROM cashaccount WHERE number = ?"; + JsonArray selectParams = new JsonArray(); + selectParams.add(account); + connection.querySingleWithParams(select, selectParams, selectResult -> { + if (selectResult.failed()) { + emitter.fail(selectResult.cause()); + } + else { + JsonArray result = selectResult.result(); + emitter.complete(result == null || result.isEmpty() ? -1 : result.getLong(0)); + } + }); + }); + } + + private Uni insertNewActivity(final SQLConnection connection, final Date date, final String description, final String account, + final double amount, final double availablebalance) { + return Uni.createFrom().emitter(emitter -> { + String sql = "INSERT INTO transaction (date, description, number, amount, availablebalance) VALUES (?, ?, ?, ?, ?)"; + JsonArray params = new JsonArray(); + params.add(date.toInstant()); + params.add(description); + params.add(account); + params.add(InsecureBankUtils.round(amount, 2)); + params.add(InsecureBankUtils.round(availablebalance, 2)); + connection.updateWithParams(sql, params, result -> { + if (result.failed()) { + emitter.fail(result.cause()); + } + else { + emitter.complete(null); + } + }); + }); + } + + private String getTransferDesc(final Transfer transfer) { + return "TRANSFER: " + + (transfer.getDescription().length() > 12 ? transfer.getDescription().substring(0, 12) : transfer.getDescription()); + } +} diff --git a/src/main/java/org/hdivsamples/verticle/VerticleDeployer.java b/src/main/java/org/hdivsamples/verticle/VerticleDeployer.java new file mode 100644 index 0000000..317b1c7 --- /dev/null +++ b/src/main/java/org/hdivsamples/verticle/VerticleDeployer.java @@ -0,0 +1,17 @@ +package org.hdivsamples.verticle; + +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.event.Observes; +import javax.enterprise.inject.Instance; + +import io.quarkus.runtime.StartupEvent; +import io.vertx.core.Verticle; +import io.vertx.core.Vertx; + +@ApplicationScoped +public class VerticleDeployer { + + public void init(final @Observes StartupEvent e, final Vertx vertx, final Instance verticles) { + verticles.forEach(vertx::deployVerticle); + } +} diff --git a/src/main/resources/META-INF/resources/css/bootstrap.min.css b/src/main/resources/META-INF/resources/css/bootstrap.min.css new file mode 100644 index 0000000..a9f35ce --- /dev/null +++ b/src/main/resources/META-INF/resources/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn>input[type=radio],[data-toggle=buttons]>.btn>input[type=checkbox]{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar[aria-valuenow="1"],.progress-bar[aria-valuenow="2"]{min-width:30px}.progress-bar[aria-valuenow="0"]{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@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}} \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/css/font-awesome.css b/src/main/resources/META-INF/resources/css/font-awesome.css new file mode 100644 index 0000000..c748663 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/font-awesome.css @@ -0,0 +1,1672 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot'); + src: url('../fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff') format('woff'), url('../fonts/fontawesome-webfont.ttf') format('truetype'), url('../fonts/fontawesome-webfont.svg?#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} diff --git a/src/main/resources/META-INF/resources/css/font-awesome.min.css b/src/main/resources/META-INF/resources/css/font-awesome.min.css new file mode 100644 index 0000000..b4a2186 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot');src:url('../fonts/fontawesome-webfont.eot?#iefix') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/css/google-fonts.css b/src/main/resources/META-INF/resources/css/google-fonts.css new file mode 100644 index 0000000..319017c --- /dev/null +++ b/src/main/resources/META-INF/resources/css/google-fonts.css @@ -0,0 +1,274 @@ +/* latin-ext */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 300; + src: local('Oswald Light'), local('Oswald-Light'), url(http://fonts.gstatic.com/s/oswald/v10/l1cOQ90roY9yC7voEhngDIX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 300; + src: local('Oswald Light'), local('Oswald-Light'), url(http://fonts.gstatic.com/s/oswald/v10/HqHm7BVC_nzzTui2lzQTDZBw1xU1rKptJj_0jans920.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* latin-ext */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(http://fonts.gstatic.com/s/oswald/v10/Qw6_9HvXRQGg5mMbFR3Phn-_kf6ByYO6CLYdB4HQE-Y.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 400; + src: local('Oswald Regular'), local('Oswald-Regular'), url(http://fonts.gstatic.com/s/oswald/v10/_P8jt3Y65hJ9c4AzRE0V1OvvDin1pK8aKteLpeZ5c0A.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* latin-ext */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 700; + src: local('Oswald Bold'), local('Oswald-Bold'), url(http://fonts.gstatic.com/s/oswald/v10/dI-qzxlKVQA6TUC5RKSb34X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Oswald'; + font-style: normal; + font-weight: 700; + src: local('Oswald Bold'), local('Oswald-Bold'), url(http://fonts.gstatic.com/s/oswald/v10/bH7276GfdCjMjApa_dkG6ZBw1xU1rKptJj_0jans920.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTQ7aC6SjiAOpAWOKfJDfVRY.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRdwxCXfZpKo5kWAx_74bHs.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTZ6vnaPZw6nYDxM4SVEMFKg.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTfy1_HTwRwgtl1cPga3Fy3Y.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTfgrLsWo7Jk1KvZser0olKY.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTYjoYw3YTyktCCer_ilOlhE.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 300; + src: local('Open Sans Light'), local('OpenSans-Light'), url(http://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRampu5_7CjHW5spxoeN3Vs.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/K88pR3goAWT7BTt32Z01m4X0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/RjgO7rYTmqiVp7vzi-Q5UYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/LWCjsQkB6EMdfHrEVqA1KYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/xozscpT2726on7jbcb_pAoX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/59ZRklaO5bWGqF5A9baEEYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/u-WUoqrET9fUeobQW7jkRYX0hVgzZQUfRDuZrPvH3D8.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans'), local('OpenSans'), url(http://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3ZBw1xU1rKptJj_0jans920.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzA7aC6SjiAOpAWOKfJDfVRY.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzBdwxCXfZpKo5kWAx_74bHs.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzJ6vnaPZw6nYDxM4SVEMFKg.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzPy1_HTwRwgtl1cPga3Fy3Y.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzPgrLsWo7Jk1KvZser0olKY.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzIjoYw3YTyktCCer_ilOlhE.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), url(http://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzBampu5_7CjHW5spxoeN3Vs.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBvZraR2Tg8w2lzm7kLNL0-w.woff2) format('woff2'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} +/* cyrillic */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBl4sYYdJg5dU2qzJEVSuta0.woff2) format('woff2'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBlBW26QxpSj-_ZKm_xT4hWw.woff2) format('woff2'); + unicode-range: U+1F00-1FFF; +} +/* greek */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBgt_Rm691LTebKfY2ZkKSmI.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBtDiNsR5a-9Oe_Ivpu8XWlY.woff2) format('woff2'); + unicode-range: U+0102-0103, U+1EA0-1EF1, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBqE8kM4xWR1_1bYURRojRGc.woff2) format('woff2'); + unicode-range: U+0100-024F, U+1E00-1EFF, U+20A0-20AB, U+20AD-20CF, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Open Sans'; + font-style: italic; + font-weight: 400; + src: local('Open Sans Italic'), local('OpenSans-Italic'), url(http://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBogp9Q8gbYrhqGlRav_IXfk.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} + diff --git a/src/main/resources/META-INF/resources/css/ionicons.min.css b/src/main/resources/META-INF/resources/css/ionicons.min.css new file mode 100644 index 0000000..8358853 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/ionicons.min.css @@ -0,0 +1,6 @@ +/*! + Ionicons, v1.5.2 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons +*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot");src:url("../fonts/ionicons.eot?#iefix") format("embedded-opentype"),url("../fonts/ionicons.ttf") format("truetype"),url("../fonts/ionicons.woff") format("woff"),url("../fonts/ionicons.svg?#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ion-loading-a,.ion-loading-b,.ion-loading-c,.ion-loading-d,.ion-looping,.ion-refreshing,.ion-ios7-reloading,.ionicons,.ion-alert:before,.ion-alert-circled:before,.ion-android-add:before,.ion-android-add-contact:before,.ion-android-alarm:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down-left:before,.ion-android-arrow-down-right:before,.ion-android-arrow-forward:before,.ion-android-arrow-up-left:before,.ion-android-arrow-up-right:before,.ion-android-battery:before,.ion-android-book:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-chat:before,.ion-android-checkmark:before,.ion-android-clock:before,.ion-android-close:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-data:before,.ion-android-developer:before,.ion-android-display:before,.ion-android-download:before,.ion-android-drawer:before,.ion-android-dropdown:before,.ion-android-earth:before,.ion-android-folder:before,.ion-android-forums:before,.ion-android-friends:before,.ion-android-hand:before,.ion-android-image:before,.ion-android-inbox:before,.ion-android-information:before,.ion-android-keypad:before,.ion-android-lightbulb:before,.ion-android-locate:before,.ion-android-location:before,.ion-android-mail:before,.ion-android-microphone:before,.ion-android-mixer:before,.ion-android-more:before,.ion-android-note:before,.ion-android-playstore:before,.ion-android-printer:before,.ion-android-promotion:before,.ion-android-reminder:before,.ion-android-remove:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share:before,.ion-android-social:before,.ion-android-social-user:before,.ion-android-sort:before,.ion-android-stair-drawer:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-storage:before,.ion-android-system-back:before,.ion-android-system-home:before,.ion-android-system-windows:before,.ion-android-timer:before,.ion-android-trash:before,.ion-android-user-menu:before,.ion-android-volume:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox:before,.ion-chatbox-working:before,.ion-chatboxes:before,.ion-chatbubble:before,.ion-chatbubble-working:before,.ion-chatbubbles:before,.ion-checkmark:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close:before,.ion-close-circled:before,.ion-close-round:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code:before,.ion-code-download:before,.ion-code-working:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-cube:before,.ion-disc:before,.ion-document:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email:before,.ion-eye:before,.ion-eye-disabled:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash:before,.ion-flash-off:before,.ion-flask:before,.ion-folder:before,.ion-fork:before,.ion-fork-repo:before,.ion-forward:before,.ion-funnel:before,.ion-game-controller-a:before,.ion-game-controller-b:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy:before,.ion-headphone:before,.ion-heart:before,.ion-heart-broken:before,.ion-help:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-home:before,.ion-icecream:before,.ion-icon-social-google-plus:before,.ion-icon-social-google-plus-outline:before,.ion-image:before,.ion-images:before,.ion-information:before,.ion-information-circled:before,.ion-ionic:before,.ion-ios7-alarm:before,.ion-ios7-alarm-outline:before,.ion-ios7-albums:before,.ion-ios7-albums-outline:before,.ion-ios7-americanfootball:before,.ion-ios7-americanfootball-outline:before,.ion-ios7-analytics:before,.ion-ios7-analytics-outline:before,.ion-ios7-arrow-back:before,.ion-ios7-arrow-down:before,.ion-ios7-arrow-forward:before,.ion-ios7-arrow-left:before,.ion-ios7-arrow-right:before,.ion-ios7-arrow-thin-down:before,.ion-ios7-arrow-thin-left:before,.ion-ios7-arrow-thin-right:before,.ion-ios7-arrow-thin-up:before,.ion-ios7-arrow-up:before,.ion-ios7-at:before,.ion-ios7-at-outline:before,.ion-ios7-barcode:before,.ion-ios7-barcode-outline:before,.ion-ios7-baseball:before,.ion-ios7-baseball-outline:before,.ion-ios7-basketball:before,.ion-ios7-basketball-outline:before,.ion-ios7-bell:before,.ion-ios7-bell-outline:before,.ion-ios7-bolt:before,.ion-ios7-bolt-outline:before,.ion-ios7-bookmarks:before,.ion-ios7-bookmarks-outline:before,.ion-ios7-box:before,.ion-ios7-box-outline:before,.ion-ios7-briefcase:before,.ion-ios7-briefcase-outline:before,.ion-ios7-browsers:before,.ion-ios7-browsers-outline:before,.ion-ios7-calculator:before,.ion-ios7-calculator-outline:before,.ion-ios7-calendar:before,.ion-ios7-calendar-outline:before,.ion-ios7-camera:before,.ion-ios7-camera-outline:before,.ion-ios7-cart:before,.ion-ios7-cart-outline:before,.ion-ios7-chatboxes:before,.ion-ios7-chatboxes-outline:before,.ion-ios7-chatbubble:before,.ion-ios7-chatbubble-outline:before,.ion-ios7-checkmark:before,.ion-ios7-checkmark-empty:before,.ion-ios7-checkmark-outline:before,.ion-ios7-circle-filled:before,.ion-ios7-circle-outline:before,.ion-ios7-clock:before,.ion-ios7-clock-outline:before,.ion-ios7-close:before,.ion-ios7-close-empty:before,.ion-ios7-close-outline:before,.ion-ios7-cloud:before,.ion-ios7-cloud-download:before,.ion-ios7-cloud-download-outline:before,.ion-ios7-cloud-outline:before,.ion-ios7-cloud-upload:before,.ion-ios7-cloud-upload-outline:before,.ion-ios7-cloudy:before,.ion-ios7-cloudy-night:before,.ion-ios7-cloudy-night-outline:before,.ion-ios7-cloudy-outline:before,.ion-ios7-cog:before,.ion-ios7-cog-outline:before,.ion-ios7-compose:before,.ion-ios7-compose-outline:before,.ion-ios7-contact:before,.ion-ios7-contact-outline:before,.ion-ios7-copy:before,.ion-ios7-copy-outline:before,.ion-ios7-download:before,.ion-ios7-download-outline:before,.ion-ios7-drag:before,.ion-ios7-email:before,.ion-ios7-email-outline:before,.ion-ios7-expand:before,.ion-ios7-eye:before,.ion-ios7-eye-outline:before,.ion-ios7-fastforward:before,.ion-ios7-fastforward-outline:before,.ion-ios7-filing:before,.ion-ios7-filing-outline:before,.ion-ios7-film:before,.ion-ios7-film-outline:before,.ion-ios7-flag:before,.ion-ios7-flag-outline:before,.ion-ios7-folder:before,.ion-ios7-folder-outline:before,.ion-ios7-football:before,.ion-ios7-football-outline:before,.ion-ios7-gear:before,.ion-ios7-gear-outline:before,.ion-ios7-glasses:before,.ion-ios7-glasses-outline:before,.ion-ios7-heart:before,.ion-ios7-heart-outline:before,.ion-ios7-help:before,.ion-ios7-help-empty:before,.ion-ios7-help-outline:before,.ion-ios7-home:before,.ion-ios7-home-outline:before,.ion-ios7-infinite:before,.ion-ios7-infinite-outline:before,.ion-ios7-information:before,.ion-ios7-information-empty:before,.ion-ios7-information-outline:before,.ion-ios7-ionic-outline:before,.ion-ios7-keypad:before,.ion-ios7-keypad-outline:before,.ion-ios7-lightbulb:before,.ion-ios7-lightbulb-outline:before,.ion-ios7-location:before,.ion-ios7-location-outline:before,.ion-ios7-locked:before,.ion-ios7-locked-outline:before,.ion-ios7-loop:before,.ion-ios7-loop-strong:before,.ion-ios7-medkit:before,.ion-ios7-medkit-outline:before,.ion-ios7-mic:before,.ion-ios7-mic-off:before,.ion-ios7-mic-outline:before,.ion-ios7-minus:before,.ion-ios7-minus-empty:before,.ion-ios7-minus-outline:before,.ion-ios7-monitor:before,.ion-ios7-monitor-outline:before,.ion-ios7-moon:before,.ion-ios7-moon-outline:before,.ion-ios7-more:before,.ion-ios7-more-outline:before,.ion-ios7-musical-note:before,.ion-ios7-musical-notes:before,.ion-ios7-navigate:before,.ion-ios7-navigate-outline:before,.ion-ios7-paper:before,.ion-ios7-paper-outline:before,.ion-ios7-paperplane:before,.ion-ios7-paperplane-outline:before,.ion-ios7-partlysunny:before,.ion-ios7-partlysunny-outline:before,.ion-ios7-pause:before,.ion-ios7-pause-outline:before,.ion-ios7-paw:before,.ion-ios7-paw-outline:before,.ion-ios7-people:before,.ion-ios7-people-outline:before,.ion-ios7-person:before,.ion-ios7-person-outline:before,.ion-ios7-personadd:before,.ion-ios7-personadd-outline:before,.ion-ios7-photos:before,.ion-ios7-photos-outline:before,.ion-ios7-pie:before,.ion-ios7-pie-outline:before,.ion-ios7-play:before,.ion-ios7-play-outline:before,.ion-ios7-plus:before,.ion-ios7-plus-empty:before,.ion-ios7-plus-outline:before,.ion-ios7-pricetag:before,.ion-ios7-pricetag-outline:before,.ion-ios7-pricetags:before,.ion-ios7-pricetags-outline:before,.ion-ios7-printer:before,.ion-ios7-printer-outline:before,.ion-ios7-pulse:before,.ion-ios7-pulse-strong:before,.ion-ios7-rainy:before,.ion-ios7-rainy-outline:before,.ion-ios7-recording:before,.ion-ios7-recording-outline:before,.ion-ios7-redo:before,.ion-ios7-redo-outline:before,.ion-ios7-refresh:before,.ion-ios7-refresh-empty:before,.ion-ios7-refresh-outline:before,.ion-ios7-reload:before,.ion-ios7-reloading:before,.ion-ios7-reverse-camera:before,.ion-ios7-reverse-camera-outline:before,.ion-ios7-rewind:before,.ion-ios7-rewind-outline:before,.ion-ios7-search:before,.ion-ios7-search-strong:before,.ion-ios7-settings:before,.ion-ios7-settings-strong:before,.ion-ios7-shrink:before,.ion-ios7-skipbackward:before,.ion-ios7-skipbackward-outline:before,.ion-ios7-skipforward:before,.ion-ios7-skipforward-outline:before,.ion-ios7-snowy:before,.ion-ios7-speedometer:before,.ion-ios7-speedometer-outline:before,.ion-ios7-star:before,.ion-ios7-star-half:before,.ion-ios7-star-outline:before,.ion-ios7-stopwatch:before,.ion-ios7-stopwatch-outline:before,.ion-ios7-sunny:before,.ion-ios7-sunny-outline:before,.ion-ios7-telephone:before,.ion-ios7-telephone-outline:before,.ion-ios7-tennisball:before,.ion-ios7-tennisball-outline:before,.ion-ios7-thunderstorm:before,.ion-ios7-thunderstorm-outline:before,.ion-ios7-time:before,.ion-ios7-time-outline:before,.ion-ios7-timer:before,.ion-ios7-timer-outline:before,.ion-ios7-toggle:before,.ion-ios7-toggle-outline:before,.ion-ios7-trash:before,.ion-ios7-trash-outline:before,.ion-ios7-undo:before,.ion-ios7-undo-outline:before,.ion-ios7-unlocked:before,.ion-ios7-unlocked-outline:before,.ion-ios7-upload:before,.ion-ios7-upload-outline:before,.ion-ios7-videocam:before,.ion-ios7-videocam-outline:before,.ion-ios7-volume-high:before,.ion-ios7-volume-low:before,.ion-ios7-wineglass:before,.ion-ios7-wineglass-outline:before,.ion-ios7-world:before,.ion-ios7-world-outline:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-loading-a:before,.ion-load-b:before,.ion-loading-b:before,.ion-load-c:before,.ion-loading-c:before,.ion-load-d:before,.ion-loading-d:before,.ion-location:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-looping:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon:before,.ion-navicon-round:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person:before,.ion-person-add:before,.ion-person-stalker:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-refreshing:before,.ion-reply:before,.ion-reply-all:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android:before,.ion-social-android-outline:before,.ion-social-apple:before,.ion-social-apple-outline:before,.ion-social-bitcoin:before,.ion-social-bitcoin-outline:before,.ion-social-buffer:before,.ion-social-buffer-outline:before,.ion-social-designernews:before,.ion-social-designernews-outline:before,.ion-social-dribbble:before,.ion-social-dribbble-outline:before,.ion-social-dropbox:before,.ion-social-dropbox-outline:before,.ion-social-facebook:before,.ion-social-facebook-outline:before,.ion-social-foursquare:before,.ion-social-foursquare-outline:before,.ion-social-freebsd-devil:before,.ion-social-github:before,.ion-social-github-outline:before,.ion-social-google:before,.ion-social-google-outline:before,.ion-social-googleplus:before,.ion-social-googleplus-outline:before,.ion-social-hackernews:before,.ion-social-hackernews-outline:before,.ion-social-instagram:before,.ion-social-instagram-outline:before,.ion-social-linkedin:before,.ion-social-linkedin-outline:before,.ion-social-pinterest:before,.ion-social-pinterest-outline:before,.ion-social-reddit:before,.ion-social-reddit-outline:before,.ion-social-rss:before,.ion-social-rss-outline:before,.ion-social-skype:before,.ion-social-skype-outline:before,.ion-social-tumblr:before,.ion-social-tumblr-outline:before,.ion-social-tux:before,.ion-social-twitter:before,.ion-social-twitter-outline:before,.ion-social-usd:before,.ion-social-usd-outline:before,.ion-social-vimeo:before,.ion-social-vimeo-outline:before,.ion-social-windows:before,.ion-social-windows-outline:before,.ion-social-wordpress:before,.ion-social-wordpress-outline:before,.ion-social-yahoo:before,.ion-social-yahoo-outline:before,.ion-social-youtube:before,.ion-social-youtube-outline:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle:before,.ion-toggle-filled:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-spin,.ion-loading-a,.ion-loading-b,.ion-loading-c,.ion-loading-d,.ion-looping,.ion-refreshing,.ion-ios7-reloading{-webkit-animation:spin 1s infinite linear;-moz-animation:spin 1s infinite linear;-o-animation:spin 1s infinite linear;animation:spin 1s 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)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.ion-loading-a{-webkit-animation-timing-function:steps(8, start);-moz-animation-timing-function:steps(8, start);animation-timing-function:steps(8, start)}.ion-alert:before{content:"\f101"}.ion-alert-circled:before{content:"\f100"}.ion-android-add:before{content:"\f2c7"}.ion-android-add-contact:before{content:"\f2c6"}.ion-android-alarm:before{content:"\f2c8"}.ion-android-archive:before{content:"\f2c9"}.ion-android-arrow-back:before{content:"\f2ca"}.ion-android-arrow-down-left:before{content:"\f2cb"}.ion-android-arrow-down-right:before{content:"\f2cc"}.ion-android-arrow-forward:before{content:"\f30f"}.ion-android-arrow-up-left:before{content:"\f2cd"}.ion-android-arrow-up-right:before{content:"\f2ce"}.ion-android-battery:before{content:"\f2cf"}.ion-android-book:before{content:"\f2d0"}.ion-android-calendar:before{content:"\f2d1"}.ion-android-call:before{content:"\f2d2"}.ion-android-camera:before{content:"\f2d3"}.ion-android-chat:before{content:"\f2d4"}.ion-android-checkmark:before{content:"\f2d5"}.ion-android-clock:before{content:"\f2d6"}.ion-android-close:before{content:"\f2d7"}.ion-android-contact:before{content:"\f2d8"}.ion-android-contacts:before{content:"\f2d9"}.ion-android-data:before{content:"\f2da"}.ion-android-developer:before{content:"\f2db"}.ion-android-display:before{content:"\f2dc"}.ion-android-download:before{content:"\f2dd"}.ion-android-drawer:before{content:"\f310"}.ion-android-dropdown:before{content:"\f2de"}.ion-android-earth:before{content:"\f2df"}.ion-android-folder:before{content:"\f2e0"}.ion-android-forums:before{content:"\f2e1"}.ion-android-friends:before{content:"\f2e2"}.ion-android-hand:before{content:"\f2e3"}.ion-android-image:before{content:"\f2e4"}.ion-android-inbox:before{content:"\f2e5"}.ion-android-information:before{content:"\f2e6"}.ion-android-keypad:before{content:"\f2e7"}.ion-android-lightbulb:before{content:"\f2e8"}.ion-android-locate:before{content:"\f2e9"}.ion-android-location:before{content:"\f2ea"}.ion-android-mail:before{content:"\f2eb"}.ion-android-microphone:before{content:"\f2ec"}.ion-android-mixer:before{content:"\f2ed"}.ion-android-more:before{content:"\f2ee"}.ion-android-note:before{content:"\f2ef"}.ion-android-playstore:before{content:"\f2f0"}.ion-android-printer:before{content:"\f2f1"}.ion-android-promotion:before{content:"\f2f2"}.ion-android-reminder:before{content:"\f2f3"}.ion-android-remove:before{content:"\f2f4"}.ion-android-search:before{content:"\f2f5"}.ion-android-send:before{content:"\f2f6"}.ion-android-settings:before{content:"\f2f7"}.ion-android-share:before{content:"\f2f8"}.ion-android-social:before{content:"\f2fa"}.ion-android-social-user:before{content:"\f2f9"}.ion-android-sort:before{content:"\f2fb"}.ion-android-stair-drawer:before{content:"\f311"}.ion-android-star:before{content:"\f2fc"}.ion-android-stopwatch:before{content:"\f2fd"}.ion-android-storage:before{content:"\f2fe"}.ion-android-system-back:before{content:"\f2ff"}.ion-android-system-home:before{content:"\f300"}.ion-android-system-windows:before{content:"\f301"}.ion-android-timer:before{content:"\f302"}.ion-android-trash:before{content:"\f303"}.ion-android-user-menu:before{content:"\f312"}.ion-android-volume:before{content:"\f304"}.ion-android-wifi:before{content:"\f305"}.ion-aperture:before{content:"\f313"}.ion-archive:before{content:"\f102"}.ion-arrow-down-a:before{content:"\f103"}.ion-arrow-down-b:before{content:"\f104"}.ion-arrow-down-c:before{content:"\f105"}.ion-arrow-expand:before{content:"\f25e"}.ion-arrow-graph-down-left:before{content:"\f25f"}.ion-arrow-graph-down-right:before{content:"\f260"}.ion-arrow-graph-up-left:before{content:"\f261"}.ion-arrow-graph-up-right:before{content:"\f262"}.ion-arrow-left-a:before{content:"\f106"}.ion-arrow-left-b:before{content:"\f107"}.ion-arrow-left-c:before{content:"\f108"}.ion-arrow-move:before{content:"\f263"}.ion-arrow-resize:before{content:"\f264"}.ion-arrow-return-left:before{content:"\f265"}.ion-arrow-return-right:before{content:"\f266"}.ion-arrow-right-a:before{content:"\f109"}.ion-arrow-right-b:before{content:"\f10a"}.ion-arrow-right-c:before{content:"\f10b"}.ion-arrow-shrink:before{content:"\f267"}.ion-arrow-swap:before{content:"\f268"}.ion-arrow-up-a:before{content:"\f10c"}.ion-arrow-up-b:before{content:"\f10d"}.ion-arrow-up-c:before{content:"\f10e"}.ion-asterisk:before{content:"\f314"}.ion-at:before{content:"\f10f"}.ion-bag:before{content:"\f110"}.ion-battery-charging:before{content:"\f111"}.ion-battery-empty:before{content:"\f112"}.ion-battery-full:before{content:"\f113"}.ion-battery-half:before{content:"\f114"}.ion-battery-low:before{content:"\f115"}.ion-beaker:before{content:"\f269"}.ion-beer:before{content:"\f26a"}.ion-bluetooth:before{content:"\f116"}.ion-bonfire:before{content:"\f315"}.ion-bookmark:before{content:"\f26b"}.ion-briefcase:before{content:"\f26c"}.ion-bug:before{content:"\f2be"}.ion-calculator:before{content:"\f26d"}.ion-calendar:before{content:"\f117"}.ion-camera:before{content:"\f118"}.ion-card:before{content:"\f119"}.ion-cash:before{content:"\f316"}.ion-chatbox:before{content:"\f11b"}.ion-chatbox-working:before{content:"\f11a"}.ion-chatboxes:before{content:"\f11c"}.ion-chatbubble:before{content:"\f11e"}.ion-chatbubble-working:before{content:"\f11d"}.ion-chatbubbles:before{content:"\f11f"}.ion-checkmark:before{content:"\f122"}.ion-checkmark-circled:before{content:"\f120"}.ion-checkmark-round:before{content:"\f121"}.ion-chevron-down:before{content:"\f123"}.ion-chevron-left:before{content:"\f124"}.ion-chevron-right:before{content:"\f125"}.ion-chevron-up:before{content:"\f126"}.ion-clipboard:before{content:"\f127"}.ion-clock:before{content:"\f26e"}.ion-close:before{content:"\f12a"}.ion-close-circled:before{content:"\f128"}.ion-close-round:before{content:"\f129"}.ion-closed-captioning:before{content:"\f317"}.ion-cloud:before{content:"\f12b"}.ion-code:before{content:"\f271"}.ion-code-download:before{content:"\f26f"}.ion-code-working:before{content:"\f270"}.ion-coffee:before{content:"\f272"}.ion-compass:before{content:"\f273"}.ion-compose:before{content:"\f12c"}.ion-connection-bars:before{content:"\f274"}.ion-contrast:before{content:"\f275"}.ion-cube:before{content:"\f318"}.ion-disc:before{content:"\f12d"}.ion-document:before{content:"\f12f"}.ion-document-text:before{content:"\f12e"}.ion-drag:before{content:"\f130"}.ion-earth:before{content:"\f276"}.ion-edit:before{content:"\f2bf"}.ion-egg:before{content:"\f277"}.ion-eject:before{content:"\f131"}.ion-email:before{content:"\f132"}.ion-eye:before{content:"\f133"}.ion-eye-disabled:before{content:"\f306"}.ion-female:before{content:"\f278"}.ion-filing:before{content:"\f134"}.ion-film-marker:before{content:"\f135"}.ion-fireball:before{content:"\f319"}.ion-flag:before{content:"\f279"}.ion-flame:before{content:"\f31a"}.ion-flash:before{content:"\f137"}.ion-flash-off:before{content:"\f136"}.ion-flask:before{content:"\f138"}.ion-folder:before{content:"\f139"}.ion-fork:before{content:"\f27a"}.ion-fork-repo:before{content:"\f2c0"}.ion-forward:before{content:"\f13a"}.ion-funnel:before{content:"\f31b"}.ion-game-controller-a:before{content:"\f13b"}.ion-game-controller-b:before{content:"\f13c"}.ion-gear-a:before{content:"\f13d"}.ion-gear-b:before{content:"\f13e"}.ion-grid:before{content:"\f13f"}.ion-hammer:before{content:"\f27b"}.ion-happy:before{content:"\f31c"}.ion-headphone:before{content:"\f140"}.ion-heart:before{content:"\f141"}.ion-heart-broken:before{content:"\f31d"}.ion-help:before{content:"\f143"}.ion-help-buoy:before{content:"\f27c"}.ion-help-circled:before{content:"\f142"}.ion-home:before{content:"\f144"}.ion-icecream:before{content:"\f27d"}.ion-icon-social-google-plus:before{content:"\f146"}.ion-icon-social-google-plus-outline:before{content:"\f145"}.ion-image:before{content:"\f147"}.ion-images:before{content:"\f148"}.ion-information:before{content:"\f14a"}.ion-information-circled:before{content:"\f149"}.ion-ionic:before{content:"\f14b"}.ion-ios7-alarm:before{content:"\f14d"}.ion-ios7-alarm-outline:before{content:"\f14c"}.ion-ios7-albums:before{content:"\f14f"}.ion-ios7-albums-outline:before{content:"\f14e"}.ion-ios7-americanfootball:before{content:"\f31f"}.ion-ios7-americanfootball-outline:before{content:"\f31e"}.ion-ios7-analytics:before{content:"\f321"}.ion-ios7-analytics-outline:before{content:"\f320"}.ion-ios7-arrow-back:before{content:"\f150"}.ion-ios7-arrow-down:before{content:"\f151"}.ion-ios7-arrow-forward:before{content:"\f152"}.ion-ios7-arrow-left:before{content:"\f153"}.ion-ios7-arrow-right:before{content:"\f154"}.ion-ios7-arrow-thin-down:before{content:"\f27e"}.ion-ios7-arrow-thin-left:before{content:"\f27f"}.ion-ios7-arrow-thin-right:before{content:"\f280"}.ion-ios7-arrow-thin-up:before{content:"\f281"}.ion-ios7-arrow-up:before{content:"\f155"}.ion-ios7-at:before{content:"\f157"}.ion-ios7-at-outline:before{content:"\f156"}.ion-ios7-barcode:before{content:"\f323"}.ion-ios7-barcode-outline:before{content:"\f322"}.ion-ios7-baseball:before{content:"\f325"}.ion-ios7-baseball-outline:before{content:"\f324"}.ion-ios7-basketball:before{content:"\f327"}.ion-ios7-basketball-outline:before{content:"\f326"}.ion-ios7-bell:before{content:"\f159"}.ion-ios7-bell-outline:before{content:"\f158"}.ion-ios7-bolt:before{content:"\f15b"}.ion-ios7-bolt-outline:before{content:"\f15a"}.ion-ios7-bookmarks:before{content:"\f15d"}.ion-ios7-bookmarks-outline:before{content:"\f15c"}.ion-ios7-box:before{content:"\f15f"}.ion-ios7-box-outline:before{content:"\f15e"}.ion-ios7-briefcase:before{content:"\f283"}.ion-ios7-briefcase-outline:before{content:"\f282"}.ion-ios7-browsers:before{content:"\f161"}.ion-ios7-browsers-outline:before{content:"\f160"}.ion-ios7-calculator:before{content:"\f285"}.ion-ios7-calculator-outline:before{content:"\f284"}.ion-ios7-calendar:before{content:"\f163"}.ion-ios7-calendar-outline:before{content:"\f162"}.ion-ios7-camera:before{content:"\f165"}.ion-ios7-camera-outline:before{content:"\f164"}.ion-ios7-cart:before{content:"\f167"}.ion-ios7-cart-outline:before{content:"\f166"}.ion-ios7-chatboxes:before{content:"\f169"}.ion-ios7-chatboxes-outline:before{content:"\f168"}.ion-ios7-chatbubble:before{content:"\f16b"}.ion-ios7-chatbubble-outline:before{content:"\f16a"}.ion-ios7-checkmark:before{content:"\f16e"}.ion-ios7-checkmark-empty:before{content:"\f16c"}.ion-ios7-checkmark-outline:before{content:"\f16d"}.ion-ios7-circle-filled:before{content:"\f16f"}.ion-ios7-circle-outline:before{content:"\f170"}.ion-ios7-clock:before{content:"\f172"}.ion-ios7-clock-outline:before{content:"\f171"}.ion-ios7-close:before{content:"\f2bc"}.ion-ios7-close-empty:before{content:"\f2bd"}.ion-ios7-close-outline:before{content:"\f2bb"}.ion-ios7-cloud:before{content:"\f178"}.ion-ios7-cloud-download:before{content:"\f174"}.ion-ios7-cloud-download-outline:before{content:"\f173"}.ion-ios7-cloud-outline:before{content:"\f175"}.ion-ios7-cloud-upload:before{content:"\f177"}.ion-ios7-cloud-upload-outline:before{content:"\f176"}.ion-ios7-cloudy:before{content:"\f17a"}.ion-ios7-cloudy-night:before{content:"\f308"}.ion-ios7-cloudy-night-outline:before{content:"\f307"}.ion-ios7-cloudy-outline:before{content:"\f179"}.ion-ios7-cog:before{content:"\f17c"}.ion-ios7-cog-outline:before{content:"\f17b"}.ion-ios7-compose:before{content:"\f17e"}.ion-ios7-compose-outline:before{content:"\f17d"}.ion-ios7-contact:before{content:"\f180"}.ion-ios7-contact-outline:before{content:"\f17f"}.ion-ios7-copy:before{content:"\f182"}.ion-ios7-copy-outline:before{content:"\f181"}.ion-ios7-download:before{content:"\f184"}.ion-ios7-download-outline:before{content:"\f183"}.ion-ios7-drag:before{content:"\f185"}.ion-ios7-email:before{content:"\f187"}.ion-ios7-email-outline:before{content:"\f186"}.ion-ios7-expand:before{content:"\f30d"}.ion-ios7-eye:before{content:"\f189"}.ion-ios7-eye-outline:before{content:"\f188"}.ion-ios7-fastforward:before{content:"\f18b"}.ion-ios7-fastforward-outline:before{content:"\f18a"}.ion-ios7-filing:before{content:"\f18d"}.ion-ios7-filing-outline:before{content:"\f18c"}.ion-ios7-film:before{content:"\f18f"}.ion-ios7-film-outline:before{content:"\f18e"}.ion-ios7-flag:before{content:"\f191"}.ion-ios7-flag-outline:before{content:"\f190"}.ion-ios7-folder:before{content:"\f193"}.ion-ios7-folder-outline:before{content:"\f192"}.ion-ios7-football:before{content:"\f329"}.ion-ios7-football-outline:before{content:"\f328"}.ion-ios7-gear:before{content:"\f195"}.ion-ios7-gear-outline:before{content:"\f194"}.ion-ios7-glasses:before{content:"\f197"}.ion-ios7-glasses-outline:before{content:"\f196"}.ion-ios7-heart:before{content:"\f199"}.ion-ios7-heart-outline:before{content:"\f198"}.ion-ios7-help:before{content:"\f19c"}.ion-ios7-help-empty:before{content:"\f19a"}.ion-ios7-help-outline:before{content:"\f19b"}.ion-ios7-home:before{content:"\f32b"}.ion-ios7-home-outline:before{content:"\f32a"}.ion-ios7-infinite:before{content:"\f19e"}.ion-ios7-infinite-outline:before{content:"\f19d"}.ion-ios7-information:before{content:"\f1a1"}.ion-ios7-information-empty:before{content:"\f19f"}.ion-ios7-information-outline:before{content:"\f1a0"}.ion-ios7-ionic-outline:before{content:"\f1a2"}.ion-ios7-keypad:before{content:"\f1a4"}.ion-ios7-keypad-outline:before{content:"\f1a3"}.ion-ios7-lightbulb:before{content:"\f287"}.ion-ios7-lightbulb-outline:before{content:"\f286"}.ion-ios7-location:before{content:"\f1a6"}.ion-ios7-location-outline:before{content:"\f1a5"}.ion-ios7-locked:before{content:"\f1a8"}.ion-ios7-locked-outline:before{content:"\f1a7"}.ion-ios7-loop:before{content:"\f32d"}.ion-ios7-loop-strong:before{content:"\f32c"}.ion-ios7-medkit:before{content:"\f289"}.ion-ios7-medkit-outline:before{content:"\f288"}.ion-ios7-mic:before{content:"\f1ab"}.ion-ios7-mic-off:before{content:"\f1a9"}.ion-ios7-mic-outline:before{content:"\f1aa"}.ion-ios7-minus:before{content:"\f1ae"}.ion-ios7-minus-empty:before{content:"\f1ac"}.ion-ios7-minus-outline:before{content:"\f1ad"}.ion-ios7-monitor:before{content:"\f1b0"}.ion-ios7-monitor-outline:before{content:"\f1af"}.ion-ios7-moon:before{content:"\f1b2"}.ion-ios7-moon-outline:before{content:"\f1b1"}.ion-ios7-more:before{content:"\f1b4"}.ion-ios7-more-outline:before{content:"\f1b3"}.ion-ios7-musical-note:before{content:"\f1b5"}.ion-ios7-musical-notes:before{content:"\f1b6"}.ion-ios7-navigate:before{content:"\f1b8"}.ion-ios7-navigate-outline:before{content:"\f1b7"}.ion-ios7-paper:before{content:"\f32f"}.ion-ios7-paper-outline:before{content:"\f32e"}.ion-ios7-paperplane:before{content:"\f1ba"}.ion-ios7-paperplane-outline:before{content:"\f1b9"}.ion-ios7-partlysunny:before{content:"\f1bc"}.ion-ios7-partlysunny-outline:before{content:"\f1bb"}.ion-ios7-pause:before{content:"\f1be"}.ion-ios7-pause-outline:before{content:"\f1bd"}.ion-ios7-paw:before{content:"\f331"}.ion-ios7-paw-outline:before{content:"\f330"}.ion-ios7-people:before{content:"\f1c0"}.ion-ios7-people-outline:before{content:"\f1bf"}.ion-ios7-person:before{content:"\f1c2"}.ion-ios7-person-outline:before{content:"\f1c1"}.ion-ios7-personadd:before{content:"\f1c4"}.ion-ios7-personadd-outline:before{content:"\f1c3"}.ion-ios7-photos:before{content:"\f1c6"}.ion-ios7-photos-outline:before{content:"\f1c5"}.ion-ios7-pie:before{content:"\f28b"}.ion-ios7-pie-outline:before{content:"\f28a"}.ion-ios7-play:before{content:"\f1c8"}.ion-ios7-play-outline:before{content:"\f1c7"}.ion-ios7-plus:before{content:"\f1cb"}.ion-ios7-plus-empty:before{content:"\f1c9"}.ion-ios7-plus-outline:before{content:"\f1ca"}.ion-ios7-pricetag:before{content:"\f28d"}.ion-ios7-pricetag-outline:before{content:"\f28c"}.ion-ios7-pricetags:before{content:"\f333"}.ion-ios7-pricetags-outline:before{content:"\f332"}.ion-ios7-printer:before{content:"\f1cd"}.ion-ios7-printer-outline:before{content:"\f1cc"}.ion-ios7-pulse:before{content:"\f335"}.ion-ios7-pulse-strong:before{content:"\f334"}.ion-ios7-rainy:before{content:"\f1cf"}.ion-ios7-rainy-outline:before{content:"\f1ce"}.ion-ios7-recording:before{content:"\f1d1"}.ion-ios7-recording-outline:before{content:"\f1d0"}.ion-ios7-redo:before{content:"\f1d3"}.ion-ios7-redo-outline:before{content:"\f1d2"}.ion-ios7-refresh:before{content:"\f1d6"}.ion-ios7-refresh-empty:before{content:"\f1d4"}.ion-ios7-refresh-outline:before{content:"\f1d5"}.ion-ios7-reload:before,.ion-ios7-reloading:before{content:"\f28e"}.ion-ios7-reverse-camera:before{content:"\f337"}.ion-ios7-reverse-camera-outline:before{content:"\f336"}.ion-ios7-rewind:before{content:"\f1d8"}.ion-ios7-rewind-outline:before{content:"\f1d7"}.ion-ios7-search:before{content:"\f1da"}.ion-ios7-search-strong:before{content:"\f1d9"}.ion-ios7-settings:before{content:"\f339"}.ion-ios7-settings-strong:before{content:"\f338"}.ion-ios7-shrink:before{content:"\f30e"}.ion-ios7-skipbackward:before{content:"\f1dc"}.ion-ios7-skipbackward-outline:before{content:"\f1db"}.ion-ios7-skipforward:before{content:"\f1de"}.ion-ios7-skipforward-outline:before{content:"\f1dd"}.ion-ios7-snowy:before{content:"\f309"}.ion-ios7-speedometer:before{content:"\f290"}.ion-ios7-speedometer-outline:before{content:"\f28f"}.ion-ios7-star:before{content:"\f1e0"}.ion-ios7-star-half:before{content:"\f33a"}.ion-ios7-star-outline:before{content:"\f1df"}.ion-ios7-stopwatch:before{content:"\f1e2"}.ion-ios7-stopwatch-outline:before{content:"\f1e1"}.ion-ios7-sunny:before{content:"\f1e4"}.ion-ios7-sunny-outline:before{content:"\f1e3"}.ion-ios7-telephone:before{content:"\f1e6"}.ion-ios7-telephone-outline:before{content:"\f1e5"}.ion-ios7-tennisball:before{content:"\f33c"}.ion-ios7-tennisball-outline:before{content:"\f33b"}.ion-ios7-thunderstorm:before{content:"\f1e8"}.ion-ios7-thunderstorm-outline:before{content:"\f1e7"}.ion-ios7-time:before{content:"\f292"}.ion-ios7-time-outline:before{content:"\f291"}.ion-ios7-timer:before{content:"\f1ea"}.ion-ios7-timer-outline:before{content:"\f1e9"}.ion-ios7-toggle:before{content:"\f33e"}.ion-ios7-toggle-outline:before{content:"\f33d"}.ion-ios7-trash:before{content:"\f1ec"}.ion-ios7-trash-outline:before{content:"\f1eb"}.ion-ios7-undo:before{content:"\f1ee"}.ion-ios7-undo-outline:before{content:"\f1ed"}.ion-ios7-unlocked:before{content:"\f1f0"}.ion-ios7-unlocked-outline:before{content:"\f1ef"}.ion-ios7-upload:before{content:"\f1f2"}.ion-ios7-upload-outline:before{content:"\f1f1"}.ion-ios7-videocam:before{content:"\f1f4"}.ion-ios7-videocam-outline:before{content:"\f1f3"}.ion-ios7-volume-high:before{content:"\f1f5"}.ion-ios7-volume-low:before{content:"\f1f6"}.ion-ios7-wineglass:before{content:"\f294"}.ion-ios7-wineglass-outline:before{content:"\f293"}.ion-ios7-world:before{content:"\f1f8"}.ion-ios7-world-outline:before{content:"\f1f7"}.ion-ipad:before{content:"\f1f9"}.ion-iphone:before{content:"\f1fa"}.ion-ipod:before{content:"\f1fb"}.ion-jet:before{content:"\f295"}.ion-key:before{content:"\f296"}.ion-knife:before{content:"\f297"}.ion-laptop:before{content:"\f1fc"}.ion-leaf:before{content:"\f1fd"}.ion-levels:before{content:"\f298"}.ion-lightbulb:before{content:"\f299"}.ion-link:before{content:"\f1fe"}.ion-load-a:before,.ion-loading-a:before{content:"\f29a"}.ion-load-b:before,.ion-loading-b:before{content:"\f29b"}.ion-load-c:before,.ion-loading-c:before{content:"\f29c"}.ion-load-d:before,.ion-loading-d:before{content:"\f29d"}.ion-location:before{content:"\f1ff"}.ion-locked:before{content:"\f200"}.ion-log-in:before{content:"\f29e"}.ion-log-out:before{content:"\f29f"}.ion-loop:before,.ion-looping:before{content:"\f201"}.ion-magnet:before{content:"\f2a0"}.ion-male:before{content:"\f2a1"}.ion-man:before{content:"\f202"}.ion-map:before{content:"\f203"}.ion-medkit:before{content:"\f2a2"}.ion-merge:before{content:"\f33f"}.ion-mic-a:before{content:"\f204"}.ion-mic-b:before{content:"\f205"}.ion-mic-c:before{content:"\f206"}.ion-minus:before{content:"\f209"}.ion-minus-circled:before{content:"\f207"}.ion-minus-round:before{content:"\f208"}.ion-model-s:before{content:"\f2c1"}.ion-monitor:before{content:"\f20a"}.ion-more:before{content:"\f20b"}.ion-mouse:before{content:"\f340"}.ion-music-note:before{content:"\f20c"}.ion-navicon:before{content:"\f20e"}.ion-navicon-round:before{content:"\f20d"}.ion-navigate:before{content:"\f2a3"}.ion-network:before{content:"\f341"}.ion-no-smoking:before{content:"\f2c2"}.ion-nuclear:before{content:"\f2a4"}.ion-outlet:before{content:"\f342"}.ion-paper-airplane:before{content:"\f2c3"}.ion-paperclip:before{content:"\f20f"}.ion-pause:before{content:"\f210"}.ion-person:before{content:"\f213"}.ion-person-add:before{content:"\f211"}.ion-person-stalker:before{content:"\f212"}.ion-pie-graph:before{content:"\f2a5"}.ion-pin:before{content:"\f2a6"}.ion-pinpoint:before{content:"\f2a7"}.ion-pizza:before{content:"\f2a8"}.ion-plane:before{content:"\f214"}.ion-planet:before{content:"\f343"}.ion-play:before{content:"\f215"}.ion-playstation:before{content:"\f30a"}.ion-plus:before{content:"\f218"}.ion-plus-circled:before{content:"\f216"}.ion-plus-round:before{content:"\f217"}.ion-podium:before{content:"\f344"}.ion-pound:before{content:"\f219"}.ion-power:before{content:"\f2a9"}.ion-pricetag:before{content:"\f2aa"}.ion-pricetags:before{content:"\f2ab"}.ion-printer:before{content:"\f21a"}.ion-pull-request:before{content:"\f345"}.ion-qr-scanner:before{content:"\f346"}.ion-quote:before{content:"\f347"}.ion-radio-waves:before{content:"\f2ac"}.ion-record:before{content:"\f21b"}.ion-refresh:before,.ion-refreshing:before{content:"\f21c"}.ion-reply:before{content:"\f21e"}.ion-reply-all:before{content:"\f21d"}.ion-ribbon-a:before{content:"\f348"}.ion-ribbon-b:before{content:"\f349"}.ion-sad:before{content:"\f34a"}.ion-scissors:before{content:"\f34b"}.ion-search:before{content:"\f21f"}.ion-settings:before{content:"\f2ad"}.ion-share:before{content:"\f220"}.ion-shuffle:before{content:"\f221"}.ion-skip-backward:before{content:"\f222"}.ion-skip-forward:before{content:"\f223"}.ion-social-android:before{content:"\f225"}.ion-social-android-outline:before{content:"\f224"}.ion-social-apple:before{content:"\f227"}.ion-social-apple-outline:before{content:"\f226"}.ion-social-bitcoin:before{content:"\f2af"}.ion-social-bitcoin-outline:before{content:"\f2ae"}.ion-social-buffer:before{content:"\f229"}.ion-social-buffer-outline:before{content:"\f228"}.ion-social-designernews:before{content:"\f22b"}.ion-social-designernews-outline:before{content:"\f22a"}.ion-social-dribbble:before{content:"\f22d"}.ion-social-dribbble-outline:before{content:"\f22c"}.ion-social-dropbox:before{content:"\f22f"}.ion-social-dropbox-outline:before{content:"\f22e"}.ion-social-facebook:before{content:"\f231"}.ion-social-facebook-outline:before{content:"\f230"}.ion-social-foursquare:before{content:"\f34d"}.ion-social-foursquare-outline:before{content:"\f34c"}.ion-social-freebsd-devil:before{content:"\f2c4"}.ion-social-github:before{content:"\f233"}.ion-social-github-outline:before{content:"\f232"}.ion-social-google:before{content:"\f34f"}.ion-social-google-outline:before{content:"\f34e"}.ion-social-googleplus:before{content:"\f235"}.ion-social-googleplus-outline:before{content:"\f234"}.ion-social-hackernews:before{content:"\f237"}.ion-social-hackernews-outline:before{content:"\f236"}.ion-social-instagram:before{content:"\f351"}.ion-social-instagram-outline:before{content:"\f350"}.ion-social-linkedin:before{content:"\f239"}.ion-social-linkedin-outline:before{content:"\f238"}.ion-social-pinterest:before{content:"\f2b1"}.ion-social-pinterest-outline:before{content:"\f2b0"}.ion-social-reddit:before{content:"\f23b"}.ion-social-reddit-outline:before{content:"\f23a"}.ion-social-rss:before{content:"\f23d"}.ion-social-rss-outline:before{content:"\f23c"}.ion-social-skype:before{content:"\f23f"}.ion-social-skype-outline:before{content:"\f23e"}.ion-social-tumblr:before{content:"\f241"}.ion-social-tumblr-outline:before{content:"\f240"}.ion-social-tux:before{content:"\f2c5"}.ion-social-twitter:before{content:"\f243"}.ion-social-twitter-outline:before{content:"\f242"}.ion-social-usd:before{content:"\f353"}.ion-social-usd-outline:before{content:"\f352"}.ion-social-vimeo:before{content:"\f245"}.ion-social-vimeo-outline:before{content:"\f244"}.ion-social-windows:before{content:"\f247"}.ion-social-windows-outline:before{content:"\f246"}.ion-social-wordpress:before{content:"\f249"}.ion-social-wordpress-outline:before{content:"\f248"}.ion-social-yahoo:before{content:"\f24b"}.ion-social-yahoo-outline:before{content:"\f24a"}.ion-social-youtube:before{content:"\f24d"}.ion-social-youtube-outline:before{content:"\f24c"}.ion-speakerphone:before{content:"\f2b2"}.ion-speedometer:before{content:"\f2b3"}.ion-spoon:before{content:"\f2b4"}.ion-star:before{content:"\f24e"}.ion-stats-bars:before{content:"\f2b5"}.ion-steam:before{content:"\f30b"}.ion-stop:before{content:"\f24f"}.ion-thermometer:before{content:"\f2b6"}.ion-thumbsdown:before{content:"\f250"}.ion-thumbsup:before{content:"\f251"}.ion-toggle:before{content:"\f355"}.ion-toggle-filled:before{content:"\f354"}.ion-trash-a:before{content:"\f252"}.ion-trash-b:before{content:"\f253"}.ion-trophy:before{content:"\f356"}.ion-umbrella:before{content:"\f2b7"}.ion-university:before{content:"\f357"}.ion-unlocked:before{content:"\f254"}.ion-upload:before{content:"\f255"}.ion-usb:before{content:"\f2b8"}.ion-videocamera:before{content:"\f256"}.ion-volume-high:before{content:"\f257"}.ion-volume-low:before{content:"\f258"}.ion-volume-medium:before{content:"\f259"}.ion-volume-mute:before{content:"\f25a"}.ion-wand:before{content:"\f358"}.ion-waterdrop:before{content:"\f25b"}.ion-wifi:before{content:"\f25c"}.ion-wineglass:before{content:"\f2b9"}.ion-woman:before{content:"\f25d"}.ion-wrench:before{content:"\f2ba"}.ion-xbox:before{content:"\f30c"} diff --git a/src/main/resources/META-INF/resources/css/main.css b/src/main/resources/META-INF/resources/css/main.css new file mode 100644 index 0000000..f967654 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/main.css @@ -0,0 +1,10008 @@ +@charset "UTF-8"; +/* +* ############################################################################ +* +* QueenAdmin Admin Dashboard Style +* --------------------------------------------------------------------- +* +* Version 1.0 +* Author The Develovers +* Copyright Copyright 2014 The Develovers +* +* ############################################################################ +*/ +/* ======================================================================== + * bootstrap-switch - v3.0.0 + * http://www.bootstrap-switch.org + * ======================================================================== + * Copyright 2012-2013 Mattia Larentis + * + * ======================================================================== + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ======================================================================== + */ +.bootstrap-switch { + display: inline-block; + cursor: pointer; + border-radius: 4px; + border: 1px solid; + border-color: #cccccc; + position: relative; + text-align: left; + overflow: hidden; + line-height: 8px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; + min-width: 100px; + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} + +.bootstrap-switch.bootstrap-switch-mini { + min-width: 71px; +} + +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label { + padding-bottom: 4px; + padding-top: 4px; + font-size: 10px; + line-height: 9px; +} + +.bootstrap-switch.bootstrap-switch-small { + min-width: 79px; +} + +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label { + padding-bottom: 3px; + padding-top: 3px; + font-size: 12px; + line-height: 18px; +} + +.bootstrap-switch.bootstrap-switch-large { + min-width: 120px; +} + +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label { + padding-bottom: 9px; + padding-top: 9px; + font-size: 16px; + line-height: normal; +} + +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { + -webkit-transition: margin-left 0.5s; + transition: margin-left 0.5s; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-container { + margin-left: 0%; +} + +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-container { + margin-left: -50%; +} + +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.bootstrap-switch.bootstrap-switch-disabled, +.bootstrap-switch.bootstrap-switch-readonly { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default !important; +} + +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label { + cursor: default !important; +} + +.bootstrap-switch.bootstrap-switch-focused { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +.bootstrap-switch .bootstrap-switch-container { + display: inline-block; + width: 150%; + top: 0; + border-radius: 4px; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off, +.bootstrap-switch .bootstrap-switch-label { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + cursor: pointer; + display: inline-block !important; + height: 100%; + padding-bottom: 4px; + padding-top: 4px; + font-size: 14px; + line-height: 20px; +} + +.bootstrap-switch .bootstrap-switch-handle-on, +.bootstrap-switch .bootstrap-switch-handle-off { + text-align: center; + z-index: 1; + width: 33.333333333%; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { + color: #fff; + background: #428bca; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { + color: #fff; + background: #5bc0de; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { + color: #fff; + background: #5cb85c; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { + background: #f0ad4e; + color: #fff; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { + color: #fff; + background: #d9534f; +} + +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { + color: #000; + background: #eeeeee; +} + +.bootstrap-switch .bootstrap-switch-handle-on { + border-bottom-left-radius: 3px; + border-top-left-radius: 3px; +} + +.bootstrap-switch .bootstrap-switch-handle-off { + border-bottom-right-radius: 3px; + border-top-right-radius: 3px; +} + +.bootstrap-switch .bootstrap-switch-label { + text-align: center; + margin-top: -1px; + margin-bottom: -1px; + z-index: 100; + width: 33.333333333%; + color: #333333; + background: #ffffff; +} + +.bootstrap-switch input[type='radio'], +.bootstrap-switch input[type='checkbox'] { + position: absolute !important; + top: 0; + left: 0; + opacity: 0; + filter: alpha(opacity=0); + z-index: -1; +} + +.multiselect-container { + position: absolute; + list-style-type: none; + margin: 0; + padding: 0; +} + +.multiselect-container .input-group { + margin: 5px; +} + +.multiselect-container > li { + padding: 0; +} + +.multiselect-container > li > a.multiselect-all label { + font-weight: 700; +} + +.multiselect-container > li > label.multiselect-group { + margin: 0; + padding: 3px 20px; + height: 100%; + font-weight: 700; +} + +.multiselect-container > li > a { + padding: 0; +} + +.multiselect-container > li > a > label { + margin: 0; + height: 100%; + cursor: pointer; + font-weight: 400; + padding: 3px 20px 3px 40px; +} + +.multiselect-container > li > a > label.radio, .multiselect-container > li > a > label.checkbox { + margin: 0; +} + +.multiselect-container > li > a > label > input[type=checkbox] { + margin-bottom: 5px; +} + +.btn-group > .btn-group:nth-child(2) > .multiselect.btn { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} + +/*! + * Bootstrap Colorpicker + * http://mjaalnir.github.io/bootstrap-colorpicker/ + * + * Originally written by (c) 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0.txt + * + */ +.colorpicker-saturation { + float: left; + width: 100px; + height: 100px; + cursor: crosshair; + background-image: url('../img/bootstrap-colorpicker/saturation.png?1385667212'); +} + +.colorpicker-saturation i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 5px; + height: 5px; + margin: -4px 0 0 -4px; + border: 1px solid #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-saturation i b { + display: block; + width: 5px; + height: 5px; + border: 1px solid #fff; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.colorpicker-hue, +.colorpicker-alpha { + float: left; + width: 15px; + height: 100px; + margin-bottom: 4px; + margin-left: 4px; + cursor: row-resize; +} + +.colorpicker-hue i, +.colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 100%; + height: 1px; + margin-top: -1px; + background: #000; + border-top: 1px solid #fff; +} + +.colorpicker-hue { + background-image: url('../img/bootstrap-colorpicker/hue.png?1385667212'); +} + +.colorpicker-alpha { + display: none; + background-image: url('../img/bootstrap-colorpicker/alpha.png?1385667212'); +} + +.colorpicker { + top: 0; + left: 0; + z-index: 2500; + min-width: 130px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; +} + +.colorpicker:before, +.colorpicker:after { + display: table; + line-height: 0; + content: ""; +} + +.colorpicker:after { + clear: both; +} + +.colorpicker:before { + position: absolute; + top: -7px; + left: 6px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.colorpicker:after { + position: absolute; + top: -6px; + left: 7px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.colorpicker div { + position: relative; +} + +.colorpicker.colorpicker-with-alpha { + min-width: 140px; +} + +.colorpicker.colorpicker-with-alpha .colorpicker-alpha { + display: block; +} + +.colorpicker-color { + height: 10px; + margin-top: 5px; + clear: both; + background-image: url('../img/bootstrap-colorpicker/alpha.png?1385667212'); + background-position: 0 100%; +} + +.colorpicker-color div { + height: 10px; +} + +.colorpicker-element .input-group-addon i { + display: block; + width: 16px; + height: 16px; + cursor: pointer; +} + +.colorpicker.colorpicker-inline { + position: relative; + display: inline-block; + float: none; +} + +.colorpicker.colorpicker-horizontal { + width: 110px; + height: auto; + min-width: 110px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-saturation { + margin-bottom: 4px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-color { + width: 100px; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue, +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + float: left; + width: 100px; + height: 15px; + margin-bottom: 4px; + margin-left: 0; + cursor: col-resize; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue i, +.colorpicker.colorpicker-horizontal .colorpicker-alpha i { + position: absolute; + top: 0; + left: 0; + display: block; + width: 1px; + height: 15px; + margin-top: 0; + background: #ffffff; + border: none; +} + +.colorpicker.colorpicker-horizontal .colorpicker-hue { + background-image: url('../img/bootstrap-colorpicker/hue-horizontal.png?1385667212'); +} + +.colorpicker.colorpicker-horizontal .colorpicker-alpha { + background-image: url('../img/bootstrap-colorpicker/alpha-horizontal.png?1385667212'); +} + +.colorpicker.colorpicker-hidden { + display: none; +} + +.colorpicker.colorpicker-visible { + display: block; +} + +.colorpicker-inline.colorpicker-visible { + display: inline-block; +} + +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + top: 0; + left: 0; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} + +.datepicker:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} + +.datepicker:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} + +.datepicker > div { + display: none; +} + +.datepicker table { + width: 100%; + margin: 0; +} + +.datepicker td, +.datepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.datepicker td.day:hover { + background: #eeeeee; + cursor: pointer; +} + +.datepicker td.day.disabled { + color: #eeeeee; +} + +.datepicker td.old, +.datepicker td.new { + color: #999999; +} + +.datepicker td.active, +.datepicker td.active:hover { + color: #ffffff; + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker td.active:hover, +.datepicker td.active:hover:hover, +.datepicker td.active:focus, +.datepicker td.active:hover:focus, +.datepicker td.active:active, +.datepicker td.active:hover:active, +.datepicker td.active.active, +.datepicker td.active:hover.active, +.datepicker td.active.disabled, +.datepicker td.active:hover.disabled, +.datepicker td.active[disabled], +.datepicker td.active:hover[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.datepicker td.active:active, +.datepicker td.active:hover:active, +.datepicker td.active.active, +.datepicker td.active:hover.active { + background-color: #003399 \9; +} + +.datepicker td span { + display: block; + width: 47px; + height: 54px; + line-height: 54px; + float: left; + margin: 2px; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.datepicker td span:hover { + background: #eeeeee; +} + +.datepicker td span.active { + color: #ffffff; + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #0044cc; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker td span.active:hover, +.datepicker td span.active:focus, +.datepicker td span.active:active, +.datepicker td span.active.active, +.datepicker td span.active.disabled, +.datepicker td span.active[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.datepicker td span.active:active, +.datepicker td span.active.active { + background-color: #003399 \9; +} + +.datepicker td span.old { + color: #999999; +} + +.datepicker th.switch { + width: 145px; +} + +.datepicker th.next, +.datepicker th.prev { + font-size: 21px; +} + +.datepicker thead tr:first-child th { + cursor: pointer; +} + +.datepicker thead tr:first-child th:hover { + background: #eeeeee; +} + +.input-append.date .add-on i, +.input-prepend.date .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} + +/*! + * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x + * + * Copyright 2013 Dan Grossman ( http://www.dangrossman.info ) + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Built for http://www.improvely.com + */ +.daterangepicker.dropdown-menu { + max-width: none; + z-index: 3000; +} + +.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { + float: left; + margin: 4px; +} + +.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar { + float: right; + margin: 4px; +} + +.daterangepicker .ranges { + width: 160px; + text-align: left; +} + +.daterangepicker .ranges .range_inputs > div { + float: left; +} + +.daterangepicker .ranges .range_inputs > div:nth-child(2) { + padding-left: 11px; +} + +.daterangepicker .calendar { + display: none; + max-width: 270px; +} + +.daterangepicker .calendar th, .daterangepicker .calendar td { + font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; + white-space: nowrap; + text-align: center; + min-width: 32px; +} + +.daterangepicker .ranges label { + color: #333; + display: block; + font-size: 11px; + font-weight: normal; + height: 20px; + line-height: 20px; + margin-bottom: 2px; + text-shadow: #fff 1px 1px 0px; + text-transform: uppercase; + width: 74px; +} + +.daterangepicker .ranges input { + font-size: 11px; +} + +.daterangepicker .ranges .input-mini { + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; + color: #555; + display: block; + font-size: 11px; + height: 30px; + line-height: 30px; + vertical-align: middle; + margin: 0 0 10px 0; + padding: 0 6px; + width: 74px; +} + +.daterangepicker .ranges ul { + list-style: none; + margin: 0; + padding: 0; +} + +.daterangepicker .ranges li { + font-size: 13px; + background: #f5f5f5; + border: 1px solid #f5f5f5; + color: #08c; + padding: 3px 12px; + margin-bottom: 8px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + cursor: pointer; +} + +.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { + background: #08c; + border: 1px solid #08c; + color: #fff; +} + +.daterangepicker .calendar-date { + border: 1px solid #ddd; + padding: 4px; + border-radius: 4px; + background: #fff; +} + +.daterangepicker .calendar-time { + text-align: center; + margin: 8px auto 0 auto; + line-height: 30px; +} + +.daterangepicker { + position: absolute; + background: #fff; + top: 100px; + left: 20px; + padding: 4px; + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.daterangepicker.opensleft:before { + position: absolute; + top: -7px; + right: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensleft:after { + position: absolute; + top: -6px; + right: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker.opensright:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.daterangepicker.opensright:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + content: ''; +} + +.daterangepicker table { + width: 100%; + margin: 0; +} + +.daterangepicker td, .daterangepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + cursor: pointer; + white-space: nowrap; +} + +.daterangepicker td.off { + color: #999; +} + +.daterangepicker td.disabled { + color: #999; +} + +.daterangepicker td.available:hover, .daterangepicker th.available:hover { + background: #eee; +} + +.daterangepicker td.in-range { + background: #ebf4f8; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.daterangepicker td.active, .daterangepicker td.active:hover { + background-color: #357ebd; + border-color: #3071a9; + color: #fff; +} + +.daterangepicker td.week, .daterangepicker th.week { + font-size: 80%; + color: #ccc; +} + +.daterangepicker select.monthselect, .daterangepicker select.yearselect { + font-size: 12px; + padding: 1px; + height: auto; + margin: 0; + cursor: default; +} + +.daterangepicker select.monthselect { + margin-right: 2%; + width: 56%; +} + +.daterangepicker select.yearselect { + width: 40%; +} + +.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.ampmselect { + width: 50px; + margin-bottom: 0; +} + +/*! + * Slider for Bootstrap + * + * Copyright 2012 Stefan Petre + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.slider { + display: inline-block; + vertical-align: middle; + position: relative; +} + +.slider.slider-horizontal { + width: 210px; + height: 20px; +} + +.slider.slider-horizontal .slider-track { + height: 10px; + width: 100%; + margin-top: -5px; + top: 50%; + left: 0; +} + +.slider.slider-horizontal .slider-selection { + height: 100%; + top: 0; + bottom: 0; +} + +.slider.slider-horizontal .slider-handle { + margin-left: -10px; + margin-top: -5px; +} + +.slider.slider-horizontal .slider-handle.triangle { + border-width: 0 10px 10px 10px; + width: 0; + height: 0; + border-bottom-color: #0480be; + margin-top: 0; +} + +.slider.slider-vertical { + height: 210px; + width: 20px; +} + +.slider.slider-vertical .slider-track { + width: 10px; + height: 100%; + margin-left: -5px; + left: 50%; + top: 0; +} + +.slider.slider-vertical .slider-selection { + width: 100%; + left: 0; + top: 0; + bottom: 0; +} + +.slider.slider-vertical .slider-handle { + margin-left: -5px; + margin-top: -10px; +} + +.slider.slider-vertical .slider-handle.triangle { + border-width: 10px 0 10px 10px; + width: 1px; + height: 1px; + border-left-color: #0480be; + margin-left: 0; +} + +.slider input { + display: none; +} + +.slider .tooltip-inner { + white-space: nowrap; +} + +.slider-track { + position: absolute; + cursor: pointer; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, whitesmoke, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(whitesmoke), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, whitesmoke, #f9f9f9); + background-image: -o-linear-gradient(top, whitesmoke, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.slider-selection { + position: absolute; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f9f9f9, whitesmoke); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f9f9f9), to(whitesmoke)); + background-image: -webkit-linear-gradient(top, #f9f9f9, whitesmoke); + background-image: -o-linear-gradient(top, #f9f9f9, whitesmoke); + background-image: linear-gradient(to bottom, #f9f9f9, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.slider-handle { + position: absolute; + width: 20px; + height: 20px; + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + opacity: 0.8; + border: 0px solid transparent; +} + +.slider-handle.round { + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + border-radius: 20px; +} + +.slider-handle.triangle { + background: transparent none; +} + +/* the norm */ +#gritter-notice-wrapper { + position: fixed; + top: 20px; + right: 20px; + width: 301px; + z-index: 9999; +} + +#gritter-notice-wrapper.top-left { + left: 20px; + right: auto; +} + +#gritter-notice-wrapper.bottom-right { + top: auto; + left: auto; + bottom: 20px; + right: 20px; +} + +#gritter-notice-wrapper.bottom-left { + top: auto; + right: auto; + bottom: 20px; + left: 20px; +} + +.gritter-item-wrapper { + position: relative; + margin: 0 0 10px 0; + background: url("../images/ie-spacer.gif"); + /* ie7/8 fix */ +} + +.gritter-top { + background: url(../images/gritter.png) no-repeat left -30px; + height: 10px; +} + +.hover .gritter-top { + background-position: right -30px; +} + +.gritter-bottom { + background: url(../images/gritter.png) no-repeat left bottom; + height: 8px; + margin: 0; +} + +.hover .gritter-bottom { + background-position: bottom right; +} + +.gritter-item { + display: block; + background: url(../images/gritter.png) no-repeat left -40px; + color: #eee; + padding: 2px 11px 8px 11px; + font-size: 11px; + font-family: verdana; +} + +.hover .gritter-item { + background-position: right -40px; +} + +.gritter-item p { + padding: 0; + margin: 0; + word-wrap: break-word; +} + +.gritter-close { + display: none; + position: absolute; + top: 5px; + left: 3px; + background: url(../images/gritter.png) no-repeat left top; + cursor: pointer; + width: 30px; + height: 30px; + text-indent: -9999em; +} + +.gritter-title { + font-size: 14px; + font-weight: bold; + padding: 0 0 7px 0; + display: block; + text-shadow: 1px 1px 0 #000; + /* Not supported by IE :( */ +} + +.gritter-image { + width: 48px; + height: 48px; + float: left; +} + +.gritter-with-image, +.gritter-without-image { + padding: 0; +} + +.gritter-with-image { + width: 220px; + float: right; +} + +/* for the light (white) version of the gritter notice */ +.gritter-light .gritter-item, +.gritter-light .gritter-bottom, +.gritter-light .gritter-top, +.gritter-light .gritter-close { + background-image: url(../images/gritter-light.png); + color: #222; +} + +.gritter-light .gritter-title { + text-shadow: none; +} + +/*! bootstrap-progressbar v0.8.3 | Copyright (c) 2012-2014 Stephan Groß | MIT license | http://www.minddust.com */ +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + + to { + background-position: 0 0; + } +} + +.progress { + overflow: hidden; + height: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress-bar { + float: left; + width: 0%; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #ffffff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 40px 40px; +} + +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-bar[aria-valuenow="1"], +.progress-bar[aria-valuenow="2"] { + min-width: 30px; +} + +.progress-bar[aria-valuenow="0"] { + color: #777777; + min-width: 30px; + background-color: transparent; + background-image: none; + box-shadow: none; +} + +.progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress { + position: relative; +} + +.progress .progress-bar { + position: absolute; + overflow: hidden; + line-height: 20px; +} + +.progress .progressbar-back-text { + position: absolute; + width: 100%; + height: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} + +.progress .progressbar-front-text { + display: block; + width: 100%; + font-size: 12px; + line-height: 20px; + text-align: center; +} + +.progress.right .progress-bar { + right: 0; +} + +.progress.right .progressbar-front-text { + position: absolute; + right: 0; +} + +.progress.vertical { + width: 20px; + height: 100%; + float: left; + margin-right: 20px; +} + +.progress.vertical.bottom { + position: relative; +} + +.progress.vertical.bottom .progressbar-front-text { + position: absolute; + bottom: 0; +} + +.progress.vertical .progress-bar { + width: 100%; + height: 0; + -webkit-transition: height 0.6s ease; + -o-transition: height 0.6s ease; + transition: height 0.6s ease; +} + +.progress.vertical.bottom .progress-bar { + position: absolute; + bottom: 0; +} + +.progress-bar[aria-valuenow="1"], +.progress-bar[aria-valuenow="2"] { + min-width: 0; +} + +.progress-bar[aria-valuenow="0"] { + color: #ffffff; + min-width: 0; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-bar[aria-valuenow="0"].progress-bar-success { + background-color: #5cb85c; +} + +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar[aria-valuenow="0"].progress-bar-info { + background-color: #5bc0de; +} + +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar[aria-valuenow="0"].progress-bar-warning { + background-color: #f0ad4e; +} + +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-bar[aria-valuenow="0"].progress-bar-danger { + background-color: #d9534f; +} + +.progress-striped .progress-bar[aria-valuenow="0"].progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +/* The MIT License */ +.dropzone, +.dropzone *, +.dropzone-previews, +.dropzone-previews * { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.dropzone { + position: relative; + border: 1px solid rgba(0, 0, 0, 0.08); + background: rgba(0, 0, 0, 0.02); + padding: 1em; +} + +.dropzone.dz-clickable { + cursor: pointer; +} + +.dropzone.dz-clickable .dz-message, +.dropzone.dz-clickable .dz-message span { + cursor: pointer; +} + +.dropzone.dz-clickable * { + cursor: default; +} + +.dropzone .dz-message { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.dropzone.dz-drag-hover { + border-color: rgba(0, 0, 0, 0.15); + background: rgba(0, 0, 0, 0.04); +} + +.dropzone.dz-started .dz-message { + display: none; +} + +.dropzone .dz-preview, +.dropzone-previews .dz-preview { + background: rgba(255, 255, 255, 0.8); + position: relative; + display: inline-block; + margin: 17px; + vertical-align: top; + border: 1px solid #acacac; + padding: 6px 6px 6px 6px; +} + +.dropzone .dz-preview.dz-file-preview [data-dz-thumbnail], +.dropzone-previews .dz-preview.dz-file-preview [data-dz-thumbnail] { + display: none; +} + +.dropzone .dz-preview .dz-details, +.dropzone-previews .dz-preview .dz-details { + width: 100px; + height: 100px; + position: relative; + background: #ebebeb; + padding: 5px; + margin-bottom: 22px; +} + +.dropzone .dz-preview .dz-details .dz-filename, +.dropzone-previews .dz-preview .dz-details .dz-filename { + overflow: hidden; + height: 100%; +} + +.dropzone .dz-preview .dz-details img, +.dropzone-previews .dz-preview .dz-details img { + position: absolute; + top: 0; + left: 0; + width: 100px; + height: 100px; +} + +.dropzone .dz-preview .dz-details .dz-size, +.dropzone-previews .dz-preview .dz-details .dz-size { + position: absolute; + bottom: -28px; + left: 3px; + height: 28px; + line-height: 28px; +} + +.dropzone .dz-preview.dz-error .dz-error-mark, +.dropzone-previews .dz-preview.dz-error .dz-error-mark { + display: block; +} + +.dropzone .dz-preview.dz-success .dz-success-mark, +.dropzone-previews .dz-preview.dz-success .dz-success-mark { + display: block; +} + +.dropzone .dz-preview:hover .dz-details img, +.dropzone-previews .dz-preview:hover .dz-details img { + display: none; +} + +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark, +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + display: none; + position: absolute; + width: 40px; + height: 40px; + font-size: 30px; + text-align: center; + right: -10px; + top: -10px; +} + +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + color: #8cc657; +} + +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + color: #ee162d; +} + +.dropzone .dz-preview .dz-progress, +.dropzone-previews .dz-preview .dz-progress { + position: absolute; + top: 100px; + left: 6px; + right: 6px; + height: 6px; + background: #d7d7d7; + display: none; +} + +.dropzone .dz-preview .dz-progress .dz-upload, +.dropzone-previews .dz-preview .dz-progress .dz-upload { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 0%; + background-color: #8cc657; +} + +.dropzone .dz-preview.dz-processing .dz-progress, +.dropzone-previews .dz-preview.dz-processing .dz-progress { + display: block; +} + +.dropzone .dz-preview .dz-error-message, +.dropzone-previews .dz-preview .dz-error-message { + display: none; + position: absolute; + top: -5px; + left: -20px; + background: rgba(245, 245, 245, 0.8); + padding: 8px 10px; + color: #800; + min-width: 140px; + max-width: 500px; + z-index: 500; +} + +.dropzone .dz-preview:hover.dz-error .dz-error-message, +.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { + display: block; +} + +.dropzone { + border: 1px solid rgba(0, 0, 0, 0.03); + min-height: 360px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: rgba(0, 0, 0, 0.03); + padding: 23px; +} + +.dropzone .dz-default.dz-message { + opacity: 1; + -ms-filter: none; + filter: none; + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + -o-transition: opacity 0.3s ease-in-out; + -ms-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; + background-image: url("../images/spritemap.png"); + background-repeat: no-repeat; + background-position: 0 0; + position: absolute; + width: 428px; + height: 123px; + margin-left: -214px; + margin-top: -61.5px; + top: 50%; + left: 50%; +} + +@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5 / 1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) { + .dropzone .dz-default.dz-message { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-default.dz-message span { + display: none; +} + +.dropzone.dz-square .dz-default.dz-message { + background-position: 0 -123px; + width: 268px; + margin-left: -134px; + height: 174px; + margin-top: -87px; +} + +.dropzone.dz-drag-hover .dz-message { + opacity: 0.15; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=15)"; + filter: alpha(opacity=15); +} + +.dropzone.dz-started .dz-message { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); +} + +.dropzone .dz-preview, +.dropzone-previews .dz-preview { + -webkit-box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.16); + box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.16); + font-size: 14px; +} + +.dropzone .dz-preview.dz-image-preview:hover .dz-details img, +.dropzone-previews .dz-preview.dz-image-preview:hover .dz-details img { + display: block; + opacity: 0.1; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; + filter: alpha(opacity=10); +} + +.dropzone .dz-preview.dz-success .dz-success-mark, +.dropzone-previews .dz-preview.dz-success .dz-success-mark { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.dropzone .dz-preview.dz-error .dz-error-mark, +.dropzone-previews .dz-preview.dz-error .dz-error-mark { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.dropzone .dz-preview.dz-error .dz-progress .dz-upload, +.dropzone-previews .dz-preview.dz-error .dz-progress .dz-upload { + background: #ee1e2d; +} + +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.4s ease-in-out; + -moz-transition: opacity 0.4s ease-in-out; + -o-transition: opacity 0.4s ease-in-out; + -ms-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; + background-image: url("../images/spritemap.png"); + background-repeat: no-repeat; +} + +@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5 / 1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) { + .dropzone .dz-preview .dz-error-mark, + .dropzone-previews .dz-preview .dz-error-mark, + .dropzone .dz-preview .dz-success-mark, + .dropzone-previews .dz-preview .dz-success-mark { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-preview .dz-error-mark span, +.dropzone-previews .dz-preview .dz-error-mark span, +.dropzone .dz-preview .dz-success-mark span, +.dropzone-previews .dz-preview .dz-success-mark span { + display: none; +} + +.dropzone .dz-preview .dz-error-mark, +.dropzone-previews .dz-preview .dz-error-mark { + background-position: -268px -123px; +} + +.dropzone .dz-preview .dz-success-mark, +.dropzone-previews .dz-preview .dz-success-mark { + background-position: -268px -163px; +} + +.dropzone .dz-preview .dz-progress .dz-upload, +.dropzone-previews .dz-preview .dz-progress .dz-upload { + -webkit-animation: loading 0.4s linear infinite; + -moz-animation: loading 0.4s linear infinite; + -o-animation: loading 0.4s linear infinite; + -ms-animation: loading 0.4s linear infinite; + animation: loading 0.4s linear infinite; + -webkit-transition: width 0.3s ease-in-out; + -moz-transition: width 0.3s ease-in-out; + -o-transition: width 0.3s ease-in-out; + -ms-transition: width 0.3s ease-in-out; + transition: width 0.3s ease-in-out; + -webkit-border-radius: 2px; + border-radius: 2px; + position: absolute; + top: 0; + left: 0; + width: 0%; + height: 100%; + background-image: url("../images/spritemap.png"); + background-repeat: repeat-x; + background-position: 0px -400px; +} + +@media all and (-webkit-min-device-pixel-ratio: 1.5), (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 1.5 / 1), (min-device-pixel-ratio: 1.5), (min-resolution: 138dpi), (min-resolution: 1.5dppx) { + .dropzone .dz-preview .dz-progress .dz-upload, + .dropzone-previews .dz-preview .dz-progress .dz-upload { + background-image: url("../images/spritemap@2x.png"); + -webkit-background-size: 428px 406px; + -moz-background-size: 428px 406px; + background-size: 428px 406px; + } +} +.dropzone .dz-preview.dz-success .dz-progress, +.dropzone-previews .dz-preview.dz-success .dz-progress { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.4s ease-in-out; + -moz-transition: opacity 0.4s ease-in-out; + -o-transition: opacity 0.4s ease-in-out; + -ms-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; +} + +.dropzone .dz-preview .dz-error-message, +.dropzone-previews .dz-preview .dz-error-message { + display: block; + opacity: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -webkit-transition: opacity 0.3s ease-in-out; + -moz-transition: opacity 0.3s ease-in-out; + -o-transition: opacity 0.3s ease-in-out; + -ms-transition: opacity 0.3s ease-in-out; + transition: opacity 0.3s ease-in-out; +} + +.dropzone .dz-preview:hover.dz-error .dz-error-message, +.dropzone-previews .dz-preview:hover.dz-error .dz-error-message { + opacity: 1; + -ms-filter: none; + filter: none; +} + +.dropzone a.dz-remove, +.dropzone-previews a.dz-remove { + background-image: -webkit-linear-gradient(top, #fafafa, #eeeeee); + background-image: -moz-linear-gradient(top, #fafafa, #eeeeee); + background-image: -o-linear-gradient(top, #fafafa, #eeeeee); + background-image: -ms-linear-gradient(top, #fafafa, #eeeeee); + background-image: linear-gradient(to bottom, #fafafa, #eeeeee); + -webkit-border-radius: 2px; + border-radius: 2px; + border: 1px solid #eee; + text-decoration: none; + display: block; + padding: 4px 5px; + text-align: center; + color: #aaa; + margin-top: 26px; +} + +.dropzone a.dz-remove:hover, +.dropzone-previews a.dz-remove:hover { + color: #666; +} + +@-moz-keyframes loading { + 0% { + background-position: 0 -400px; + } + + 100% { + background-position: -7px -400px; + } +} + +@-webkit-keyframes loading { + 0% { + background-position: 0 -400px; + } + + 100% { + background-position: -7px -400px; + } +} + +@-o-keyframes loading { + 0% { + background-position: 0 -400px; + } + + 100% { + background-position: -7px -400px; + } +} + +@-ms-keyframes loading { + 0% { + background-position: 0 -400px; + } + + 100% { + background-position: -7px -400px; + } +} + +@keyframes loading { + 0% { + background-position: 0 -400px; + } + + 100% { + background-position: -7px -400px; + } +} + +div.dataTables_length label { + font-weight: normal; + float: left; + text-align: left; +} + +div.dataTables_length select { + width: 75px; +} + +div.dataTables_filter label { + font-weight: normal; + float: right; +} + +div.dataTables_filter input { + width: 16em; +} + +div.dataTables_info { + padding-top: 8px; +} + +div.dataTables_paginate { + float: right; + margin: 0; +} + +div.dataTables_paginate ul.pagination { + margin: 2px 0; + white-space: nowrap; +} + +table.dataTable td, +table.dataTable th { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +table.dataTable { + clear: both; + margin-top: 6px !important; + margin-bottom: 6px !important; + max-width: none !important; +} + +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + cursor: pointer; +} + +table.dataTable thead .sorting { + background: url("../images/sort_both.png") no-repeat center right; +} + +table.dataTable thead .sorting_asc { + background: url("../images/sort_asc.png") no-repeat center right; +} + +table.dataTable thead .sorting_desc { + background: url("../images/sort_desc.png") no-repeat center right; +} + +table.dataTable thead .sorting_asc_disabled { + background: url("../images/sort_asc_disabled.png") no-repeat center right; +} + +table.dataTable thead .sorting_desc_disabled { + background: url("../images/sort_desc_disabled.png") no-repeat center right; +} + +table.dataTable thead > tr > th { + padding-left: 18px; + padding-right: 18px; +} + +table.dataTable th:active { + outline: none; +} + +/* Scrolling */ +div.dataTables_scrollHead table { + margin-bottom: 0 !important; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.dataTables_scrollHead table thead tr:last-child th:first-child, +div.dataTables_scrollHead table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.dataTables_scrollBody table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dataTables_scrollBody tbody tr:first-child th, +div.dataTables_scrollBody tbody tr:first-child td { + border-top: none; +} + +div.dataTables_scrollFoot table { + margin-top: 0 !important; + border-top: none; +} + +/* Frustratingly the border-collapse:collapse used by Bootstrap makes the column + width calculations when using scrolling impossible to align columns. We have + to use separate + */ +table.table-bordered.dataTable { + border-collapse: separate !important; +} + +table.table-bordered thead th, +table.table-bordered thead td { + border-left-width: 0; + border-top-width: 0; +} + +table.table-bordered tbody th, +table.table-bordered tbody td { + border-left-width: 0; + border-bottom-width: 0; +} + +table.table-bordered th:last-child, +table.table-bordered td:last-child { + border-right-width: 0; +} + +div.dataTables_scrollHead table.table-bordered { + border-bottom-width: 0; +} + +/* + * TableTools styles + */ +.table tbody tr.active td, +.table tbody tr.active th { + background-color: #08C; + color: white; +} + +.table tbody tr.active:hover td, +.table tbody tr.active:hover th { + background-color: #0075b0 !important; +} + +.table tbody tr.active a { + color: white; +} + +.table-striped tbody tr.active:nth-child(odd) td, +.table-striped tbody tr.active:nth-child(odd) th { + background-color: #017ebc; +} + +table.DTTT_selectable tbody tr { + cursor: pointer; +} + +div.DTTT .btn { + color: #333 !important; + font-size: 12px; +} + +div.DTTT .btn:hover { + text-decoration: none !important; +} + +ul.DTTT_dropdown.dropdown-menu { + z-index: 2003; +} + +ul.DTTT_dropdown.dropdown-menu a { + color: #333 !important; + /* needed only when demo_page.css is included */ +} + +ul.DTTT_dropdown.dropdown-menu li { + position: relative; +} + +ul.DTTT_dropdown.dropdown-menu li:hover a { + background-color: #0088cc; + color: white !important; +} + +div.DTTT_collection_background { + z-index: 2002; +} + +/* TableTools information display */ +div.DTTT_print_info.modal { + height: 150px; + margin-top: -75px; + text-align: center; +} + +div.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +div.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +/* + * FixedColumns styles + */ +div.DTFC_LeftHeadWrapper table, +div.DTFC_LeftFootWrapper table, +div.DTFC_RightHeadWrapper table, +div.DTFC_RightFootWrapper table, +table.DTFC_Cloned tr.even { + background-color: white; + margin-bottom: 0; +} + +div.DTFC_RightHeadWrapper table, +div.DTFC_LeftHeadWrapper table { + margin-bottom: 0 !important; + border-top-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child, +div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child { + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +div.DTFC_RightBodyWrapper table, +div.DTFC_LeftBodyWrapper table { + border-top: none; + margin: 0 !important; +} + +div.DTFC_RightBodyWrapper tbody tr:first-child th, +div.DTFC_RightBodyWrapper tbody tr:first-child td, +div.DTFC_LeftBodyWrapper tbody tr:first-child th, +div.DTFC_LeftBodyWrapper tbody tr:first-child td { + border-top: none; +} + +div.DTFC_RightFootWrapper table, +div.DTFC_LeftFootWrapper table { + border-top: none; +} + +/* + * FixedHeader styles + */ +div.FixedHeader_Cloned table { + margin: 0 !important; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * ColVis styles + */ +div.ColVis { + float: right; + margin-bottom: 1em; +} + +button.ColVis_Button, +ul.ColVis_collection li { + position: relative; + float: left; + margin-right: 3px; + padding: 5px 8px; + border: 1px solid #999; + cursor: pointer; + *cursor: hand; + font-size: 0.88em; + color: black !important; + white-space: nowrap; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 1px 1px 3px #ccc; + -moz-box-shadow: 1px 1px 3px #ccc; + -ms-box-shadow: 1px 1px 3px #ccc; + -o-box-shadow: 1px 1px 3px #ccc; + box-shadow: 1px 1px 3px #ccc; + /* Generated by http://www.colorzilla.com/gradient-editor/ */ + background: #ffffff; + /* Old browsers */ + background: -webkit-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #ffffff 0%, #f3f3f3 89%, #f9f9f9 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); + /* IE6-9 */ +} + +.ColVis_Button:hover, +ul.ColVis_collection li:hover { + border: 1px solid #666; + text-decoration: none !important; + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; + background: #f3f3f3; + /* Old browsers */ + background: -webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); + /* IE6-9 */ +} + +button.ColVis_Button { + height: 30px; + padding: 3px 8px; +} + +button.ColVis_Button::-moz-focus-inner { + border: none !important; + padding: 0; +} + +button.ColVis_Button:active { + outline: none; +} + +div.ColVis_collectionBackground { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: black; + z-index: 1100; +} + +ul.ColVis_collection { + width: 150px; + padding: 8px 8px 4px 8px; + margin: 0; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: #f3f3f3; + background-color: rgba(255, 255, 255, 0.3); + overflow: hidden; + z-index: 2002; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); +} + +ul.ColVis_collection li { + position: relative; + height: auto; + left: 0; + right: 0; + padding: 0.5em; + display: block; + float: none; + margin-bottom: 4px; + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; +} + +ul.ColVis_collection li { + text-align: left; +} + +ul.ColVis_collection li.ColVis_Button:hover { + border: 1px solid #999; + background-color: #f0f0f0; +} + +ul.ColVis_collection li span { + display: inline-block; + padding-left: 0.5em; + cursor: pointer; +} + +ul.ColVis_collection li.ColVis_Special { + border-color: #555; + background: #ededed; + /* Old browsers */ + background: -webkit-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%); + /* Opera 11.10+ */ + background: linear-gradient(to bottom, #ededed 0%, #d6d6d6 77%, #e8e8e8 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#e8e8e8',GradientType=0 ); + /* IE6-9 */ +} + +ul.ColVis_collection li.ColVis_Special:hover { + background: #e2e2e2; + /* Old browsers */ + background: -webkit-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #d0d0d0 0%, #d5d5d5 89%, #e2e2e2 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#e2e2e2',GradientType=0 ); + /* IE6-9 */ +} + +span.ColVis_radio { + display: inline-block; + width: 20px; +} + +div.ColVis_catcher { + position: absolute; + z-index: 1101; +} + +.disabled { + color: #999; +} + +/* + * File: TableTools.css + * Description: Styles for TableTools 2 + * Author: Allan Jardine (www.sprymedia.co.uk) + * Language: Javascript + * License: GPL v2 / 3 point BSD + * Project: DataTables + * + * Copyright 2009-2012 Allan Jardine, all rights reserved. + * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * + * CSS name space: + * DTTT DataTables TableTools + * + * Style sheet provides: + * CONTAINER TableTools container element and styles applying to all components + * BUTTON_STYLES Action specific button styles + * SELECTING Row selection styles + * COLLECTIONS Drop down list (collection) styles + * PRINTING Print display styles + */ +/* + * CONTAINER + * TableTools container element and styles applying to all components + */ +div.DTTT_container { + position: relative; + float: right; + margin-bottom: 1em; +} + +@media screen and (max-width: 640px) { + div.DTTT_container { + float: none !important; + text-align: center; + } + + div.DTTT_container:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; + } +} +button.DTTT_button, +div.DTTT_button, +a.DTTT_button { + position: relative; + display: inline-block; + margin-right: 3px; + padding: 5px 8px; + border: 1px solid #999; + cursor: pointer; + *cursor: hand; + font-size: 0.88em; + color: black !important; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 1px 1px 3px #ccc; + -moz-box-shadow: 1px 1px 3px #ccc; + -ms-box-shadow: 1px 1px 3px #ccc; + -o-box-shadow: 1px 1px 3px #ccc; + box-shadow: 1px 1px 3px #ccc; + /* Generated by http://www.colorzilla.com/gradient-editor/ */ + background: #ffffff; + /* Old browsers */ + background: -webkit-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #ffffff 0%, #f3f3f3 89%, #f9f9f9 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); + /* IE6-9 */ +} + +/* Buttons are cunning border-box sizing - we can't just use that for A and DIV due to IE6/7 */ +button.DTTT_button { + height: 30px; + padding: 3px 8px; +} + +.DTTT_button embed { + outline: none; +} + +button.DTTT_button:hover, +div.DTTT_button:hover, +a.DTTT_button:hover { + border: 1px solid #666; + text-decoration: none !important; + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; + background: #f3f3f3; + /* Old browsers */ + background: -webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* IE10+ */ + background: -o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #f3f3f3 0%, #e2e2e2 89%, #f4f4f4 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3f3f3', endColorstr='#f4f4f4',GradientType=0 ); + /* IE6-9 */ +} + +button.DTTT_disabled, +div.DTTT_disabled, +a.DTTT_disabled { + color: #999; + border: 1px solid #d0d0d0; + background: #ffffff; + /* Old browsers */ + background: -webkit-linear-gradient(top, white 0%, #f9f9f9 89%, #fafafa 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #f9f9f9 89%, #fafafa 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #f9f9f9 89%, #fafafa 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #f9f9f9 89%, #fafafa 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #ffffff 0%, #f9f9f9 89%, #fafafa 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fafafa',GradientType=0 ); + /* IE6-9 */ +} + +/* + * BUTTON_STYLES + * Action specific button styles + * If you want images - comment this back in + +a.DTTT_button_csv, +a.DTTT_button_xls, +a.DTTT_button_copy, +a.DTTT_button_pdf, +a.DTTT_button_print { + padding-right: 0px; +} + +a.DTTT_button_csv span, +a.DTTT_button_xls span, +a.DTTT_button_copy span, +a.DTTT_button_pdf span, +a.DTTT_button_print span { + display: inline-block; + height: 24px; + line-height: 24px; + padding-right: 30px; +} + + +a.DTTT_button_csv span { background: url(../images/csv.png) no-repeat bottom right; } +a.DTTT_button_csv:hover span { background: url(../images/csv_hover.png) no-repeat center right; } + +a.DTTT_button_xls span { background: url(../images/xls.png) no-repeat center right; } +a.DTTT_button_xls:hover span { background: #f0f0f0 url(../images/xls_hover.png) no-repeat center right; } + +a.DTTT_button_copy span { background: url(../images/copy.png) no-repeat center right; } +a.DTTT_button_copy:hover span { background: #f0f0f0 url(../images/copy_hover.png) no-repeat center right; } + +a.DTTT_button_pdf span { background: url(../images/pdf.png) no-repeat center right; } +a.DTTT_button_pdf:hover span { background: #f0f0f0 url(../images/pdf_hover.png) no-repeat center right; } + +a.DTTT_button_print span { background: url(../images/print.png) no-repeat center right; } +a.DTTT_button_print:hover span { background: #f0f0f0 url(../images/print_hover.png) no-repeat center right; } + + */ +button.DTTT_button_collection span { + padding-right: 17px; + background: url(../images/collection.png) no-repeat center right; +} + +button.DTTT_button_collection:hover span { + padding-right: 17px; + background: #f0f0f0 url(../images/collection_hover.png) no-repeat center right; +} + +/* + * SELECTING + * Row selection styles + */ +table.DTTT_selectable tbody tr { + cursor: pointer; + *cursor: hand; +} + +table.dataTable tr.DTTT_selected.odd { + background-color: #9FAFD1; +} + +table.dataTable tr.DTTT_selected.odd td.sorting_1 { + background-color: #9FAFD1; +} + +table.dataTable tr.DTTT_selected.odd td.sorting_2 { + background-color: #9FAFD1; +} + +table.dataTable tr.DTTT_selected.odd td.sorting_3 { + background-color: #9FAFD1; +} + +table.dataTable tr.DTTT_selected.even { + background-color: #B0BED9; +} + +table.dataTable tr.DTTT_selected.even td.sorting_1 { + background-color: #B0BED9; +} + +table.dataTable tr.DTTT_selected.even td.sorting_2 { + background-color: #B0BED9; +} + +table.dataTable tr.DTTT_selected.even td.sorting_3 { + background-color: #B0BED9; +} + +/* + * COLLECTIONS + * Drop down list (collection) styles + */ +div.DTTT_collection { + width: 150px; + padding: 8px 8px 4px 8px; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: #f3f3f3; + background-color: rgba(255, 255, 255, 0.3); + overflow: hidden; + z-index: 2002; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + -o-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -ms-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + -o-box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); + box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3); +} + +div.DTTT_collection_background { + background: transparent url(../images/background.png) repeat top left; + z-index: 2001; +} + +div.DTTT_collection button.DTTT_button, +div.DTTT_collection div.DTTT_button, +div.DTTT_collection a.DTTT_button { + position: relative; + left: 0; + right: 0; + display: block; + float: none; + margin-bottom: 4px; + -webkit-box-shadow: 1px 1px 3px #999; + -moz-box-shadow: 1px 1px 3px #999; + -ms-box-shadow: 1px 1px 3px #999; + -o-box-shadow: 1px 1px 3px #999; + box-shadow: 1px 1px 3px #999; +} + +/* + * PRINTING + * Print display styles + */ +.DTTT_print_info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + height: 150px; + margin-left: -200px; + margin-top: -75px; + text-align: center; + color: #333; + padding: 10px 30px; + background: #ffffff; + /* Old browsers */ + background: -webkit-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Chrome10+,Safari5.1+ */ + background: -moz-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* FF3.6+ */ + background: -ms-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* IE10+ */ + background: -o-linear-gradient(top, white 0%, #f3f3f3 89%, #f9f9f9 100%); + /* Opera 11.10+ */ + background: linear-gradient(top, #ffffff 0%, #f3f3f3 89%, #f9f9f9 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f9f9f9',GradientType=0 ); + /* IE6-9 */ + opacity: 0.95; + border: 1px solid black; + border: 1px solid rgba(0, 0, 0, 0.5); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + -ms-border-radius: 6px; + -o-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + -ms-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + -o-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.5); +} + +.DTTT_print_info h6 { + font-weight: normal; + font-size: 28px; + line-height: 28px; + margin: 1em; +} + +.DTTT_print_info p { + font-size: 14px; + line-height: 20px; +} + +.note-editor { + border: 1px solid #a9a9a9; +} + +.note-editor .note-dropzone { + position: absolute; + z-index: 1; + display: none; + color: #87cefa; + background-color: white; + border: 2px dashed #87cefa; + opacity: .95; + pointer-event: none; +} + +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + font-size: 28px; + font-weight: bold; + text-align: center; + vertical-align: middle; +} + +.note-editor .note-dropzone.hover { + color: #098ddf; + border: 2px dashed #098ddf; +} + +.note-editor.dragover .note-dropzone { + display: table; +} + +.note-editor.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + width: 100%; +} + +.note-editor.fullscreen .note-editable { + background-color: white; +} + +.note-editor.fullscreen .note-resizebar { + display: none; +} + +.note-editor.codeview .note-editable { + display: none; +} + +.note-editor.codeview .note-codable { + display: block; +} + +.note-editor .note-toolbar { + padding-bottom: 5px; + padding-left: 5px; + margin: 0; + background-color: #f5f5f5; + border-bottom: 1px solid #a9a9a9; +} + +.note-editor .note-toolbar > .btn-group { + margin-top: 5px; + margin-right: 5px; + margin-left: 0; +} + +.note-editor .note-toolbar .note-table .dropdown-menu { + min-width: 0; + padding: 5px; +} + +.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker { + font-size: 18px; +} + +.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute !important; + z-index: 3; + width: 10em; + height: 10em; + cursor: pointer; +} + +.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: 5em; + height: 5em; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIj4+Pjp6ekKlAqjAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKhmnaJzPAAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat; +} + +.note-editor .note-toolbar .note-table .dropdown-menu .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: 1em; + height: 1em; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASAgMAAAAroGbEAAAACVBMVEUAAIjd6vvD2f9LKLW+AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfYAR0BKwNDEVT0AAAAG0lEQVQI12NgAAOtVatWMTCohoaGUY+EmIkEAEruEzK2J7tvAAAAAElFTkSuQmCC") repeat; +} + +.note-editor .note-toolbar .note-style h1, .note-editor .note-toolbar .note-style h2, .note-editor .note-toolbar .note-style h3, .note-editor .note-toolbar .note-style h4, .note-editor .note-toolbar .note-style h5, .note-editor .note-toolbar .note-style h6, .note-editor .note-toolbar .note-style blockquote { + margin: 0; +} + +.note-editor .note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px; +} + +.note-editor .note-toolbar .note-color .dropdown-menu { + min-width: 290px; +} + +.note-editor .note-toolbar .note-color .dropdown-menu .btn-group { + margin: 0; +} + +.note-editor .note-toolbar .note-color .dropdown-menu .btn-group:first-child { + margin: 0 5px; +} + +.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { + margin: 2px 7px; + font-size: 12px; + text-align: center; + border-bottom: 1px solid #eee; +} + +.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { + padding: 0 3px; + margin: 5px; + font-size: 12px; + cursor: pointer; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.note-editor .note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { + background: #eee; +} + +.note-editor .note-toolbar .note-para .dropdown-menu { + min-width: 216px; + padding: 5px; +} + +.note-editor .note-toolbar .note-para .dropdown-menu > div:first-child { + margin-right: 5px; +} + +.note-editor .note-statusbar { + background-color: #f5f5f5; +} + +.note-editor .note-statusbar .note-resizebar { + width: 100%; + height: 8px; + cursor: s-resize; + border-top: 1px solid #a9a9a9; +} + +.note-editor .note-statusbar .note-resizebar .note-icon-bar { + width: 20px; + margin: 1px auto; + border-top: 1px solid #a9a9a9; +} + +.note-editor .note-popover .popover { + max-width: none; +} + +.note-editor .note-popover .popover .popover-content { + padding: 5px; +} + +.note-editor .note-popover .popover .popover-content a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; +} + +.note-editor .note-popover .popover .popover-content .btn-group + .btn-group { + margin-left: 5px; +} + +.note-editor .note-popover .popover .arrow { + left: 20px; +} + +.note-editor .note-handle .note-control-selection { + position: absolute; + display: none; + border: 1px solid black; +} + +.note-editor .note-handle .note-control-selection > div { + position: absolute; +} + +.note-editor .note-handle .note-control-selection .note-control-selection-bg { + width: 100%; + height: 100%; + background-color: black; + -webkit-opacity: .3; + -khtml-opacity: .3; + -moz-opacity: .3; + opacity: .3; + -ms-filter: alpha(opacity=30); + filter: alpha(opacity=30); +} + +.note-editor .note-handle .note-control-selection .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; +} + +.note-editor .note-handle .note-control-selection .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid black; +} + +.note-editor .note-handle .note-control-selection .note-control-sizing { + width: 7px; + height: 7px; + background-color: white; + border: 1px solid black; +} + +.note-editor .note-handle .note-control-selection .note-control-nw { + top: -5px; + left: -5px; + border-right: 0; + border-bottom: 0; +} + +.note-editor .note-handle .note-control-selection .note-control-ne { + top: -5px; + right: -5px; + border-bottom: 0; + border-left: none; +} + +.note-editor .note-handle .note-control-selection .note-control-sw { + bottom: -5px; + left: -5px; + border-top: 0; + border-right: 0; +} + +.note-editor .note-handle .note-control-selection .note-control-se { + right: -5px; + bottom: -5px; + cursor: se-resize; +} + +.note-editor .note-handle .note-control-selection .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 5px; + font-size: 12px; + color: white; + background-color: black; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-opacity: .7; + -khtml-opacity: .7; + -moz-opacity: .7; + opacity: .7; + -ms-filter: alpha(opacity=70); + filter: alpha(opacity=70); +} + +.note-editor .note-dialog > div { + display: none; +} + +.note-editor .note-dialog .note-image-dialog .note-dropzone { + min-height: 100px; + margin-bottom: 10px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray; +} + +.note-editor .note-dialog .note-help-dialog { + font-size: 12px; + color: #ccc; + background: transparent; + background-color: #222222 !important; + border: 0; + -webkit-opacity: .9; + -khtml-opacity: .9; + -moz-opacity: .9; + opacity: .9; + -ms-filter: alpha(opacity=90); + filter: alpha(opacity=90); +} + +.note-editor .note-dialog .note-help-dialog .modal-content { + background: transparent; + border: 1px solid white; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.note-editor .note-dialog .note-help-dialog a { + font-size: 12px; + color: white; +} + +.note-editor .note-dialog .note-help-dialog .title { + padding-bottom: 5px; + font-size: 14px; + font-weight: bold; + color: white; + border-bottom: white 1px solid; +} + +.note-editor .note-dialog .note-help-dialog .modal-close { + font-size: 14px; + color: #dd0; + cursor: pointer; +} + +.note-editor .note-dialog .note-help-dialog .note-shortcut-layout { + width: 100%; +} + +.note-editor .note-dialog .note-help-dialog .note-shortcut-layout td { + vertical-align: top; +} + +.note-editor .note-dialog .note-help-dialog .note-shortcut { + margin-top: 8px; +} + +.note-editor .note-dialog .note-help-dialog .note-shortcut th { + font-size: 13px; + color: #dd0; + text-align: left; +} + +.note-editor .note-dialog .note-help-dialog .note-shortcut td:first-child { + min-width: 110px; + padding-right: 10px; + font-family: "Courier New"; + color: #dd0; + text-align: right; +} + +.note-editor .note-editable { + padding: 10px; + overflow: auto; + outline: 0; +} + +.note-editor .note-editable[contenteditable="false"] { + background-color: #e5e5e5; +} + +.note-editor .note-codable { + display: none; + width: 100%; + padding: 10px; + margin-bottom: 0; + font-family: Menlo,Monaco,monospace,sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + resize: none; +} + +.note-editor .dropdown-menu { + min-width: 90px; +} + +.note-editor .dropdown-menu.right { + right: 0; + left: auto; +} + +.note-editor .dropdown-menu.right::before { + right: 9px; + left: auto !important; +} + +.note-editor .dropdown-menu.right::after { + right: 10px; + left: auto !important; +} + +.note-editor .dropdown-menu li a i { + color: deepskyblue; + visibility: hidden; +} + +.note-editor .dropdown-menu li a.checked i { + visibility: visible; +} + +.note-editor .note-fontsize-10 { + font-size: 10px; +} + +.note-editor .note-color-palette { + line-height: 1; +} + +.note-editor .note-color-palette div .note-color-btn { + width: 17px; + height: 17px; + padding: 0; + margin: 0; + border: 1px solid #fff; +} + +.note-editor .note-color-palette div .note-color-btn:hover { + border: 1px solid #000; +} + +/* +Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014 +*/ +.select2-container { + margin: 0; + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: middle; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input { + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + More Info : http://www.quirksmode.org/css/box.html + */ + -webkit-box-sizing: border-box; + /* webkit */ + -moz-box-sizing: border-box; + /* firefox */ + box-sizing: border-box; + /* css3 */ +} + +.select2-container .select2-choice { + display: block; + height: 26px; + padding: 0 0 0 8px; + overflow: hidden; + position: relative; + border: 1px solid #aaa; + white-space: nowrap; + line-height: 26px; + color: #444; + text-decoration: none; + border-radius: 4px; + background-clip: padding-box; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #fff; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.5, white)); + background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 50%); + background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); + background-image: linear-gradient(to top, #eeeeee 0%, #ffffff 50%); +} + +.select2-container.select2-drop-above .select2-choice { + border-bottom-color: #aaa; + border-radius: 0 0 4px 4px; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white)); + background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%); + background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); + background-image: linear-gradient(to bottom, #eeeeee 0%, #ffffff 90%); +} + +.select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: 42px; +} + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px; + display: block; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + float: none; + width: auto; +} + +.select2-container .select2-choice abbr { + display: none; + width: 12px; + height: 12px; + position: absolute; + right: 24px; + top: 8px; + font-size: 1px; + text-decoration: none; + border: 0; + background: url("select2.png") right top no-repeat; + cursor: pointer; + outline: 0; +} + +.select2-container.select2-allowclear .select2-choice abbr { + display: inline-block; +} + +.select2-container .select2-choice abbr:hover { + background-position: right -11px; + cursor: pointer; +} + +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-drop { + width: 100%; + margin-top: -1px; + position: absolute; + z-index: 9999; + top: 100%; + background: #fff; + color: #000; + border: 1px solid #aaa; + border-top: 0; + border-radius: 0 0 4px 4px; + -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); +} + +.select2-drop.select2-drop-above { + margin-top: 1px; + border-top: 1px solid #aaa; + border-bottom: 0; + border-radius: 4px 4px 0 0; + -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, 0.15); + box-shadow: 0 -4px 5px rgba(0, 0, 0, 0.15); +} + +.select2-drop-active { + border: 1px solid #5897fb; + border-top: none; +} + +.select2-drop.select2-drop-above.select2-drop-active { + border-top: 1px solid #5897fb; +} + +.select2-drop-auto-width { + border-top: 1px solid #aaa; + width: auto; +} + +.select2-drop-auto-width .select2-search { + padding-top: 4px; +} + +.select2-container .select2-choice .select2-arrow { + display: inline-block; + width: 18px; + height: 100%; + position: absolute; + right: 0; + top: 0; + border-left: 1px solid #aaa; + border-radius: 0 4px 4px 0; + background-clip: padding-box; + background: #ccc; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #cccccc), color-stop(0.6, #eeeeee)); + background-image: -webkit-linear-gradient(center bottom, #cccccc 0%, #eeeeee 60%); + background-image: -moz-linear-gradient(center bottom, #cccccc 0%, #eeeeee 60%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + background-image: linear-gradient(to top, #cccccc 0%, #eeeeee 60%); +} + +.select2-container .select2-choice .select2-arrow b { + display: block; + width: 100%; + height: 100%; + background: url("select2.png") no-repeat 0 1px; +} + +.select2-search { + display: inline-block; + width: 100%; + min-height: 26px; + margin: 0; + padding-left: 4px; + padding-right: 4px; + position: relative; + z-index: 10000; + white-space: nowrap; +} + +.select2-search input { + width: 100%; + height: auto !important; + min-height: 26px; + padding: 4px 20px 4px 5px; + margin: 0; + outline: 0; + font-family: sans-serif; + font-size: 1em; + border: 1px solid #aaa; + border-radius: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: white url("select2.png") no-repeat 100% -22px; + background: url("select2.png") no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); + background: url("select2.png") no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url("select2.png") no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url("select2.png") no-repeat 100% -22px, linear-gradient(to bottom, #ffffff 85%, #eeeeee 99%) 0 0; +} + +.select2-drop.select2-drop-above .select2-search input { + margin-top: 4px; +} + +.select2-search input.select2-active { + background: white url("select2-spinner.gif") no-repeat 100%; + background: url("select2-spinner.gif") no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); + background: url("select2-spinner.gif") no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url("select2-spinner.gif") no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url("select2-spinner.gif") no-repeat 100%, linear-gradient(to bottom, #ffffff 85%, #eeeeee 99%) 0 0; +} + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} + +.select2-dropdown-open .select2-choice { + border-bottom-color: transparent; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + background-color: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, white), color-stop(0.5, #eeeeee)); + background-image: -webkit-linear-gradient(center bottom, white 0%, #eeeeee 50%); + background-image: -moz-linear-gradient(center bottom, white 0%, #eeeeee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to top, #ffffff 0%, #eeeeee 50%); +} + +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + border: 1px solid #5897fb; + border-top-color: transparent; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, white), color-stop(0.5, #eeeeee)); + background-image: -webkit-linear-gradient(center top, white 0%, #eeeeee 50%); + background-image: -moz-linear-gradient(center top, white 0%, #eeeeee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%); +} + +.select2-dropdown-open .select2-choice .select2-arrow { + background: transparent; + border-left: none; + filter: none; +} + +.select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -18px 1px; +} + +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* results */ +.select2-results { + max-height: 200px; + padding: 0 0 0 4px; + margin: 4px 4px 4px 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.select2-results ul.select2-result-sub { + margin: 0; + padding-left: 0; +} + +.select2-results li { + list-style: none; + display: list-item; + background-image: none; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; + min-height: 1em; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select2-results-dept-1 .select2-result-label { + padding-left: 20px; +} + +.select2-results-dept-2 .select2-result-label { + padding-left: 40px; +} + +.select2-results-dept-3 .select2-result-label { + padding-left: 60px; +} + +.select2-results-dept-4 .select2-result-label { + padding-left: 80px; +} + +.select2-results-dept-5 .select2-result-label { + padding-left: 100px; +} + +.select2-results-dept-6 .select2-result-label { + padding-left: 110px; +} + +.select2-results-dept-7 .select2-result-label { + padding-left: 120px; +} + +.select2-results .select2-highlighted { + background: #3875d7; + color: #fff; +} + +.select2-results li em { + background: #feffde; + font-style: normal; +} + +.select2-results .select2-highlighted em { + background: transparent; +} + +.select2-results .select2-highlighted ul { + background: #fff; + color: #000; +} + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; + padding-left: 5px; +} + +/* +disabled look for disabled choices in the results dropdown +*/ +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-selected { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url("select2-spinner.gif") no-repeat 100%; +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ +.select2-container.select2-container-disabled .select2-choice { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow { + background-color: #f4f4f4; + background-image: none; + border-left: 0; +} + +.select2-container.select2-container-disabled .select2-choice abbr { + display: none; +} + +/* multiselect */ +.select2-container-multi .select2-choices { + height: auto !important; + height: 1%; + margin: 0; + padding: 0; + position: relative; + border: 1px solid #aaa; + cursor: text; + overflow: hidden; + background-color: #fff; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eeeeee), color-stop(15%, white)); + background-image: -webkit-linear-gradient(top, #eeeeee 1%, white 15%); + background-image: -moz-linear-gradient(top, #eeeeee 1%, white 15%); + background-image: linear-gradient(to bottom, #eeeeee 1%, #ffffff 15%); +} + +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); +} + +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} + +html[dir="rtl"] .select2-container-multi .select2-choices li { + float: right; +} + +.select2-container-multi .select2-choices .select2-search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} + +.select2-container-multi .select2-choices .select2-search-field input { + padding: 5px; + margin: 1px 0; + font-family: sans-serif; + font-size: 100%; + color: #666; + outline: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent !important; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: white url("select2-spinner.gif") no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 3px 5px 3px 18px; + margin: 3px 0 3px 5px; + position: relative; + line-height: 13px; + color: #333; + cursor: default; + border: 1px solid #aaaaaa; + border-radius: 3px; + -webkit-box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05); + background-clip: padding-box; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: #e4e4e4; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); + background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%); +} + +html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice { + margin-left: 0; + margin-right: 5px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { + cursor: default; +} + +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #d4d4d4; +} + +.select2-search-choice-close { + display: block; + width: 12px; + height: 13px; + position: absolute; + right: 3px; + top: 4px; + font-size: 1px; + outline: none; + background: url("select2.png") right top no-repeat; +} + +html[dir="rtl"] .select2-search-choice-close { + right: auto; + left: 3px; +} + +.select2-container-multi .select2-search-choice-close { + left: 3px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-position: right -11px; +} + +.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { + background-position: right -11px; +} + +/* disabled styles */ +.select2-container-multi.select2-container-disabled .select2-choices { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + padding: 3px 5px 3px 5px; + border: 1px solid #ddd; + background-image: none; + background-color: #f4f4f4; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { + display: none; + background: none; +} + +/* end multiselect */ +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-match { + text-decoration: underline; +} + +.select2-offscreen, .select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0px !important; + top: 0px !important; +} + +.select2-display-none { + display: none; +} + +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} + +/* Retina-ize icons */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: url("select2x2.png") !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + + .select2-search input { + background-position: 100% -21px !important; + } +} +.bootstrap-tagsinput { + background-color: #fff; + border: 1px solid #ccc; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + display: inline-block; + padding: 4px 6px; + margin-bottom: 10px; + color: #555; + vertical-align: middle; + border-radius: 4px; + max-width: 100%; + line-height: 22px; +} + +.bootstrap-tagsinput input { + border: none; + box-shadow: none; + outline: none; + background-color: transparent; + padding: 0; + margin: 0; + width: auto !important; + max-width: inherit; +} + +.bootstrap-tagsinput input:focus { + border: none; + box-shadow: none; +} + +.bootstrap-tagsinput .tag { + margin-right: 2px; + color: white; +} + +.bootstrap-tagsinput .tag [data-role="remove"] { + margin-left: 8px; + cursor: pointer; +} + +.bootstrap-tagsinput .tag [data-role="remove"]:after { + content: "x"; + padding: 0px 2px; +} + +.bootstrap-tagsinput .tag [data-role="remove"]:hover { + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.bootstrap-tagsinput .tag [data-role="remove"]:hover:active { + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.md-editor { + display: block; + border: 1px solid #dddddd; +} + +.md-editor > .md-header, .md-editor .md-footer { + display: block; + padding: 6px 4px; + background: white; +} + +.md-editor > .md-header { + margin: 0; +} + +.md-editor > .md-preview { + background: #fff; + border-top: 1px dashed #ddd; + border-bottom: 1px dashed #ddd; + min-height: 10px; + overflow: auto; +} + +.md-editor > textarea { + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 14px; + outline: 0; + outline: thin dotted \9; + margin: 0; + display: block; + padding: 0; + width: 100%; + border: 0; + border-top: 1px dashed #ddd; + border-bottom: 1px dashed #ddd; + border-radius: 0; + box-shadow: none; + background: #eeeeee; +} + +.md-editor > textarea:focus { + box-shadow: none; + background: white; +} + +.md-editor.active { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6); +} + +/*! X-editable - v1.5.1 +* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery +* http://github.com/vitalets/x-editable +* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */ +.editableform { + margin-bottom: 0; + /* overwrites bootstrap margin */ +} + +.editableform .control-group { + margin-bottom: 0; + /* overwrites bootstrap margin */ + white-space: nowrap; + /* prevent wrapping buttons on new line */ + line-height: 20px; + /* overwriting bootstrap line-height. See #133 */ +} + +/* + BS3 width:1005 for inputs breaks editable form in popup + See: https://github.com/vitalets/x-editable/issues/393 +*/ +.editableform .form-control { + width: auto; +} + +.editable-buttons { + display: inline-block; + /* should be inline to take effect of parent's white-space: nowrap */ + vertical-align: top; + margin-left: 7px; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons.editable-buttons-bottom { + display: block; + margin-top: 7px; + margin-left: 0; +} + +.editable-input { + vertical-align: top; + display: inline-block; + /* should be inline to take effect of parent's white-space: nowrap */ + width: auto; + /* bootstrap-responsive has width: 100% that breakes layout */ + white-space: normal; + /* reset white-space decalred in parent*/ + /* display-inline emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-buttons .editable-cancel { + margin-left: 7px; +} + +/*for jquery-ui buttons need set height to look more pretty*/ +.editable-buttons button.ui-button-icon-only { + height: 24px; + width: 30px; +} + +.editableform-loading { + background: url("../img/loading.gif") center center no-repeat; + height: 25px; + width: auto; + min-width: 25px; +} + +.editable-inline .editableform-loading { + background-position: left 5px; +} + +.editable-error-block { + max-width: 300px; + margin: 5px 0 0 0; + width: auto; + white-space: normal; +} + +/*add padding for jquery ui*/ +.editable-error-block.ui-state-error { + padding: 3px; +} + +.editable-error { + color: red; +} + +/* ---- For specific types ---- */ +.editableform .editable-date { + padding: 0; + margin: 0; + float: left; +} + +/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */ +.editable-inline .add-on .icon-th { + margin-top: 3px; + margin-left: 1px; +} + +/* checklist vertical alignment */ +.editable-checklist label input[type="checkbox"], +.editable-checklist label span { + vertical-align: middle; + margin: 0; +} + +.editable-checklist label { + white-space: nowrap; +} + +/* set exact width of textarea to fit buttons toolbar */ +.editable-wysihtml5 { + width: 566px; + height: 250px; +} + +/* clear button shown as link in date inputs */ +.editable-clear { + clear: both; + font-size: 0.9em; + text-decoration: none; + text-align: right; +} + +/* IOS-style clear button for text inputs */ +.editable-clear-x { + background: url("../img/clear.png") center center no-repeat; + display: block; + width: 13px; + height: 13px; + position: absolute; + opacity: 0.6; + z-index: 100; + top: 50%; + right: 6px; + margin-top: -6px; +} + +.editable-clear-x:hover { + opacity: 1; +} + +.editable-pre-wrapped { + white-space: pre-wrap; +} + +.editable-container.editable-popup { + max-width: none !important; + /* without this rule poshytip/tooltip does not stretch */ +} + +.editable-container.popover { + width: auto; + /* without this rule popover does not stretch */ +} + +.editable-container.editable-inline { + display: inline-block; + vertical-align: middle; + width: auto; + /* inline-block emulation for IE7*/ + zoom: 1; + *display: inline; +} + +.editable-container.ui-widget { + font-size: inherit; + /* jqueryui widget font 1.1em too big, overwrite it */ + z-index: 9990; + /* should be less than select2 dropdown z-index to close dropdown first when click */ +} + +.editable-click, +a.editable-click, +a.editable-click:hover { + text-decoration: none; + border-bottom: dashed 1px #0088cc; +} + +.editable-click.editable-disabled, +a.editable-click.editable-disabled, +a.editable-click.editable-disabled:hover { + color: #585858; + cursor: default; + border-bottom: none; +} + +.editable-empty, .editable-empty:hover, .editable-empty:focus { + font-style: italic; + color: #DD1144; + /* border-bottom: none; */ + text-decoration: none; +} + +.editable-unsaved { + font-weight: bold; +} + +.editable-unsaved:after { + /* content: '*'*/ +} + +.editable-bg-transition { + -webkit-transition: background-color 1400ms ease-out; + -moz-transition: background-color 1400ms ease-out; + -o-transition: background-color 1400ms ease-out; + -ms-transition: background-color 1400ms ease-out; + transition: background-color 1400ms ease-out; +} + +/*see https://github.com/vitalets/x-editable/issues/139 */ +.form-horizontal .editable { + padding-top: 5px; + display: inline-block; +} + +/*! + * Datepicker for Bootstrap + * + * Copyright 2012 Stefan Petre + * Improvements by Andrew Rowls + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + */ +.datepicker { + padding: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + direction: ltr; + /*.dow { + border-top: 1px solid #ddd !important; + }*/ +} + +.datepicker-inline { + width: 220px; +} + +.datepicker.datepicker-rtl { + direction: rtl; +} + +.datepicker.datepicker-rtl table tr td span { + float: right; +} + +.datepicker-dropdown { + top: 0; + left: 0; +} + +.datepicker-dropdown:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 6px; +} + +.datepicker-dropdown:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 7px; +} + +.datepicker > div { + display: none; +} + +.datepicker.days div.datepicker-days { + display: block; +} + +.datepicker.months div.datepicker-months { + display: block; +} + +.datepicker.years div.datepicker-years { + display: block; +} + +.datepicker table { + margin: 0; +} + +.datepicker td, +.datepicker th { + text-align: center; + width: 20px; + height: 20px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: none; +} + +.table-striped .datepicker table tr td, +.table-striped .datepicker table tr th { + background-color: transparent; +} + +.datepicker table tr td.day:hover { + background: #eeeeee; + cursor: pointer; +} + +.datepicker table tr td.old, +.datepicker table tr td.new { + color: #999999; +} + +.datepicker table tr td.disabled, +.datepicker table tr td.disabled:hover { + background: none; + color: #999999; + cursor: default; +} + +.datepicker table tr td.today, +.datepicker table tr td.today:hover, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today.disabled:hover { + background-color: #fde19a; + background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a)); + background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a); + background-image: -o-linear-gradient(top, #fdd49a, #fdf59a); + background-image: linear-gradient(top, #fdd49a, #fdf59a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0); + border-color: #fdf59a #fdf59a #fbed50; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #000; +} + +.datepicker table tr td.today:hover, +.datepicker table tr td.today:hover:hover, +.datepicker table tr td.today.disabled:hover, +.datepicker table tr td.today.disabled:hover:hover, +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active, +.datepicker table tr td.today.disabled, +.datepicker table tr td.today:hover.disabled, +.datepicker table tr td.today.disabled.disabled, +.datepicker table tr td.today.disabled:hover.disabled, +.datepicker table tr td.today[disabled], +.datepicker table tr td.today:hover[disabled], +.datepicker table tr td.today.disabled[disabled], +.datepicker table tr td.today.disabled:hover[disabled] { + background-color: #fdf59a; +} + +.datepicker table tr td.today:active, +.datepicker table tr td.today:hover:active, +.datepicker table tr td.today.disabled:active, +.datepicker table tr td.today.disabled:hover:active, +.datepicker table tr td.today.active, +.datepicker table tr td.today:hover.active, +.datepicker table tr td.today.disabled.active, +.datepicker table tr td.today.disabled:hover.active { + background-color: #fbf069 \9; +} + +.datepicker table tr td.today:hover:hover { + color: #000; +} + +.datepicker table tr td.today.active:hover { + color: #fff; +} + +.datepicker table tr td.range, +.datepicker table tr td.range:hover, +.datepicker table tr td.range.disabled, +.datepicker table tr td.range.disabled:hover { + background: #eeeeee; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.datepicker table tr td.range.today, +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today.disabled:hover { + background-color: #f3d17a; + background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a)); + background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a); + background-image: -o-linear-gradient(top, #f3c17a, #f3e97a); + background-image: linear-gradient(top, #f3c17a, #f3e97a); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0); + border-color: #f3e97a #f3e97a #edde34; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.datepicker table tr td.range.today:hover, +.datepicker table tr td.range.today:hover:hover, +.datepicker table tr td.range.today.disabled:hover, +.datepicker table tr td.range.today.disabled:hover:hover, +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active, +.datepicker table tr td.range.today.disabled, +.datepicker table tr td.range.today:hover.disabled, +.datepicker table tr td.range.today.disabled.disabled, +.datepicker table tr td.range.today.disabled:hover.disabled, +.datepicker table tr td.range.today[disabled], +.datepicker table tr td.range.today:hover[disabled], +.datepicker table tr td.range.today.disabled[disabled], +.datepicker table tr td.range.today.disabled:hover[disabled] { + background-color: #f3e97a; +} + +.datepicker table tr td.range.today:active, +.datepicker table tr td.range.today:hover:active, +.datepicker table tr td.range.today.disabled:active, +.datepicker table tr td.range.today.disabled:hover:active, +.datepicker table tr td.range.today.active, +.datepicker table tr td.range.today:hover.active, +.datepicker table tr td.range.today.disabled.active, +.datepicker table tr td.range.today.disabled:hover.active { + background-color: #efe24b \9; +} + +.datepicker table tr td.selected, +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected.disabled:hover { + background-color: #9e9e9e; + background-image: -moz-linear-gradient(top, #b3b3b3, gray); + background-image: -ms-linear-gradient(top, #b3b3b3, gray); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(gray)); + background-image: -webkit-linear-gradient(top, #b3b3b3, gray); + background-image: -o-linear-gradient(top, #b3b3b3, gray); + background-image: linear-gradient(top, #b3b3b3, #808080); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0); + border-color: #808080 #808080 #595959; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td.selected:hover, +.datepicker table tr td.selected:hover:hover, +.datepicker table tr td.selected.disabled:hover, +.datepicker table tr td.selected.disabled:hover:hover, +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active, +.datepicker table tr td.selected.disabled, +.datepicker table tr td.selected:hover.disabled, +.datepicker table tr td.selected.disabled.disabled, +.datepicker table tr td.selected.disabled:hover.disabled, +.datepicker table tr td.selected[disabled], +.datepicker table tr td.selected:hover[disabled], +.datepicker table tr td.selected.disabled[disabled], +.datepicker table tr td.selected.disabled:hover[disabled] { + background-color: #808080; +} + +.datepicker table tr td.selected:active, +.datepicker table tr td.selected:hover:active, +.datepicker table tr td.selected.disabled:active, +.datepicker table tr td.selected.disabled:hover:active, +.datepicker table tr td.selected.active, +.datepicker table tr td.selected:hover.active, +.datepicker table tr td.selected.disabled.active, +.datepicker table tr td.selected.disabled:hover.active { + background-color: #666666 \9; +} + +.datepicker table tr td.active, +.datepicker table tr td.active:hover, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td.active:hover, +.datepicker table tr td.active:hover:hover, +.datepicker table tr td.active.disabled:hover, +.datepicker table tr td.active.disabled:hover:hover, +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active, +.datepicker table tr td.active.disabled, +.datepicker table tr td.active:hover.disabled, +.datepicker table tr td.active.disabled.disabled, +.datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active[disabled], +.datepicker table tr td.active:hover[disabled], +.datepicker table tr td.active.disabled[disabled], +.datepicker table tr td.active.disabled:hover[disabled] { + background-color: #0044cc; +} + +.datepicker table tr td.active:active, +.datepicker table tr td.active:hover:active, +.datepicker table tr td.active.disabled:active, +.datepicker table tr td.active.disabled:hover:active, +.datepicker table tr td.active.active, +.datepicker table tr td.active:hover.active, +.datepicker table tr td.active.disabled.active, +.datepicker table tr td.active.disabled:hover.active { + background-color: #003399 \9; +} + +.datepicker table tr td span { + display: block; + width: 23%; + height: 54px; + line-height: 54px; + float: left; + margin: 1%; + cursor: pointer; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.datepicker table tr td span:hover { + background: #eeeeee; +} + +.datepicker table tr td span.disabled, +.datepicker table tr td span.disabled:hover { + background: none; + color: #999999; + cursor: default; +} + +.datepicker table tr td span.active, +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active.disabled:hover { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + color: #fff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.datepicker table tr td span.active:hover, +.datepicker table tr td span.active:hover:hover, +.datepicker table tr td span.active.disabled:hover, +.datepicker table tr td span.active.disabled:hover:hover, +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active, +.datepicker table tr td span.active.disabled, +.datepicker table tr td span.active:hover.disabled, +.datepicker table tr td span.active.disabled.disabled, +.datepicker table tr td span.active.disabled:hover.disabled, +.datepicker table tr td span.active[disabled], +.datepicker table tr td span.active:hover[disabled], +.datepicker table tr td span.active.disabled[disabled], +.datepicker table tr td span.active.disabled:hover[disabled] { + background-color: #0044cc; +} + +.datepicker table tr td span.active:active, +.datepicker table tr td span.active:hover:active, +.datepicker table tr td span.active.disabled:active, +.datepicker table tr td span.active.disabled:hover:active, +.datepicker table tr td span.active.active, +.datepicker table tr td span.active:hover.active, +.datepicker table tr td span.active.disabled.active, +.datepicker table tr td span.active.disabled:hover.active { + background-color: #003399 \9; +} + +.datepicker table tr td span.old, +.datepicker table tr td span.new { + color: #999999; +} + +.datepicker th.datepicker-switch { + width: 145px; +} + +.datepicker thead tr:first-child th, +.datepicker tfoot tr th { + cursor: pointer; +} + +.datepicker thead tr:first-child th:hover, +.datepicker tfoot tr th:hover { + background: #eeeeee; +} + +.datepicker .cw { + font-size: 10px; + width: 12px; + padding: 0 2px 0 5px; + vertical-align: middle; +} + +.datepicker thead tr:first-child th.cw { + cursor: default; + background-color: transparent; +} + +.input-append.date .add-on i, +.input-prepend.date .add-on i { + display: block; + cursor: pointer; + width: 16px; + height: 16px; +} + +.input-daterange input { + text-align: center; +} + +.input-daterange input:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-daterange input:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-daterange .add-on { + display: inline-block; + width: auto; + min-width: 16px; + height: 18px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + vertical-align: middle; + background-color: #eeeeee; + border: 1px solid #ccc; + margin-left: -5px; + margin-right: -5px; +} + +.twitter-typeahead .tt-query, +.twitter-typeahead .tt-hint { + margin-bottom: 0; +} + +.tt-dropdown-menu { + min-width: 160px; + margin-top: 2px; + padding: 5px 0; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -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); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.tt-suggestion { + display: block; + padding: 3px 20px; +} + +.tt-suggestion.tt-is-under-cursor { + color: #fff; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.tt-suggestion.tt-is-under-cursor a { + color: #fff; +} + +.tt-suggestion p { + margin: 0; +} + +/* =========================================================== +# bootstrap-tour - v0.9.3 +# http://bootstraptour.com +# ============================================================== +# Copyright 2012-2013 Ulrich Sossou +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/ +.tour-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1100; + background-color: #000; + opacity: 0.8; +} + +.tour-step-backdrop { + position: relative; + z-index: 1101; + background: inherit; +} + +.tour-step-background { + position: absolute; + z-index: 1100; + background: inherit; + border-radius: 6px; +} + +.popover[class*="tour-"] { + z-index: 1100; +} + +.popover[class*="tour-"] .popover-navigation { + padding: 9px 14px; +} + +.popover[class*="tour-"] .popover-navigation *[data-role="end"] { + float: right; +} + +.popover[class*="tour-"] .popover-navigation *[data-role="prev"], +.popover[class*="tour-"] .popover-navigation *[data-role="next"], +.popover[class*="tour-"] .popover-navigation *[data-role="end"] { + cursor: pointer; +} + +.popover[class*="tour-"] .popover-navigation *[data-role="prev"].disabled, +.popover[class*="tour-"] .popover-navigation *[data-role="next"].disabled, +.popover[class*="tour-"] .popover-navigation *[data-role="end"].disabled { + cursor: default; +} + +.popover[class*="tour-"].orphan { + position: fixed; + margin-top: 0; +} + +.popover[class*="tour-"].orphan .arrow { + display: none; +} + +/*------------------------------------------------*/ +/* General Styles +/*------------------------------------------------*/ +body { + font-family: "Open Sans", sans-serif; + font-size: 13px; + color: #696565; + line-height: 1.6; + background: #f2f2f2; + background-repeat: repeat; +} + +a { + color: #116c8a; + text-decoration: none; + outline: 0 none; +} +a:hover, a:focus { + color: #199ac5; + text-decoration: none; + outline: 0 none; +} + +hr { + border-color: #ccc; +} + +@font-face { + font-family: "josefinslab-semibold"; + src: url('../fonts/josefinslab-semibold-webfont.eot'); + src: url('../fonts/josefinslab-semibold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/josefinslab-semibold-webfont.woff') format('woff'), url('../fonts/josefinslab-semibold-webfont.ttf') format('truetype'), url('../fonts/josefinslab-semibold-webfont.svg') format('svg'); +} + +@font-face { + font-family: "josefinslab-bold"; + src: url('../fonts/josefinslab-bold-webfont.eot'); + src: url('../fonts/josefinslab-bold-webfont.eot?#iefix') format('embedded-opentype'), url('../fonts/josefinslab-bold-webfont.woff') format('woff'), url('../fonts/josefinslab-bold-webfont.ttf') format('truetype'), url('../fonts/josefinslab-bold-webfont.svg') format('svg'); +} + +.well-lg { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; +} + +.well-sm { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +.bottom-30px { + margin-bottom: 30px; +} + +.col-left { + padding-left: 0; + padding-right: 0; + padding-top: 32px; +} + +.col-right { + padding-top: 47px; +} +.col-right.no-heading { + padding-top: 80px; +} +@media screen and (max-width: 1200px) { + .col-right { + overflow: hidden; + padding-top: 16px; + } +} + +@media screen and (min-width: 768px) { + .container { + max-width: 100%; + width: 100%; + } +} +.control-inline { + display: -moz-inline-stack !important; + display: inline-block !important; + vertical-align: middle !important; + zoom: 1 !important; +} + +.middle-content .container { + position: absolute; + top: 50%; + text-align: center; +} + +.content-box-bordered { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + border: 1px solid #ccc; +} + +.sticky-content .btn-default.btn-favorites { + color: #ff9800; +} +.sticky-content .btn-default.btn-favorites:hover, .sticky-content .btn-default.btn-favorites:focus, .sticky-content .btn-default.btn-favorites:active, .sticky-content .btn-default.btn-favorites.active { + color: #e68900; +} +.sticky-content .btn-default.btn-quick-task { + color: #59b7de; +} +.sticky-content .btn-default.btn-quick-task:hover, .sticky-content .btn-default.btn-quick-task:focus, .sticky-content .btn-default.btn-quick-task:active, .sticky-content .btn-default.btn-quick-task.active { + color: #44aeda; +} +.sticky-content .btn-default:hover, .sticky-content .btn-default:focus, .sticky-content .btn-default:active, .sticky-content .btn-default.active { + background-color: #fff; +} +.sticky-content .dropdown-menu { + min-width: 370px; + padding-top: 15px; +} +.sticky-content .dropdown-menu > li { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + min-width: 120px; + margin-bottom: 15px; +} +.sticky-content .dropdown-menu > li > a { + text-align: center; + color: #696565 !important; +} +.sticky-content .dropdown-menu > li > a:hover, .sticky-content .dropdown-menu > li > a:focus { + top: -2px; + background: transparent; +} +.sticky-content .dropdown-menu > li > a:hover i, .sticky-content .dropdown-menu > li > a:focus i { + top: -2px; +} +.sticky-content .dropdown-menu > li i { + -webkit-transition-property: all; + -moz-transition-property: all; + -o-transition-property: all; + transition-property: all; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: ease-in-out; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + font-size: 3em; + position: relative; + top: 0; +} +.sticky-content .dropdown-menu > li span { + display: block; + font-weight: 700; +} + +/*------------------------------------------------*/ +/* Typography +/*------------------------------------------------*/ +/* contextual colors */ +.text-primary { + color: #1688ae; +} + +.text-success { + color: #7bae16; +} + +.text-info { + color: #59b7de; +} + +.text-warning { + color: #ff9800; +} + +.text-danger { + color: #ef2020; +} + +/* contextual backgrounds */ +.bg-primary, +.bg-success, +.bg-info, +.bg-warning, +.bg-danger { + color: #fff; +} + +.bg-primary { + background: #1688ae; +} + +.bg-success { + background: #7bae16; +} + +.bg-info { + background: #59b7de; +} + +.bg-warning { + background: #ff9800; +} + +.bg-danger { + background: #ef2020; +} + +/* blockquotes */ +blockquote { + border-left: 5px solid #ccc; +} + +.blockquote-reverse, +blockquote.pull-right { + border-right: 5px solid #ccc; +} + +/*------------------------------------------------*/ +/* Bootstrap Elements +/*------------------------------------------------*/ +/* basic input */ +.form-control, +.form-control:focus, +.input-group-btn .btn { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.form-control, +.input-lg, +.input-sm, +.input-xs { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +/* input groups */ +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > +.btn:not(:first-child), +.input-group-btn:first-child > +.btn-group:not(:first-child) > .btn { + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + -webkit-border-bottom-right-radius: 2px; + border-bottom-right-radius: 2px; +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; +} + +.input-group-addon { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.input-group-addon .simple-radio input[type="radio"] + label, +.input-group-addon .simple-checkbox input[type="checkbox"] + label { + padding-left: 0; + margin-right: 0; + margin-bottom: 0; +} +.input-group-addon .simple-radio input[type="radio"] + label:before, +.input-group-addon .simple-checkbox input[type="checkbox"] + label:before { + margin-right: 0; +} +.input-group-addon i { + font-size: 14px; +} +.input-group-addon.input-sm, .input-group-addon.input-lg { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +.input-group-appendable { + margin-bottom: 10px; +} +.input-group-appendable .btn { + min-width: 34px; +} + +/*------------------------------------------------*/ +/* UI Elements +/*------------------------------------------------*/ +/* bootstrap form elements */ +.form-control-feedback.icon { + font-size: 18px; + top: 27px; +} + +select[multiple].form-control { + height: auto; +} + +select.form-control { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + background: url("data:image/svg+xml;utf8,") right no-repeat; + background-size: 0.8em; + background-position: right 5px top 12px; +} + +select[multiple].form-control { + background: none; +} + +select.input-lg, select.input-sm { + line-height: initial; +} +select.input-lg { + background-position: right 5px top 17px; +} +select.input-sm { + background-position: right 5px top 11px; +} + +/* tabbed content */ +.nav-tabs > li > a { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; +} +.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + cursor: pointer; +} + +.nav-pills > li > a { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.nav-pills > li.active > a, .nav-pills > li.active > a:hover, .nav-pills > li.active > a:focus { + background-color: #1688ae; +} + +.nav-tabs.tabs-iconized > li a, +.nav-pills.tabs-iconized > li a { + padding-top: 0; + padding-bottom: 5px; +} +.nav-tabs.tabs-iconized > li i, +.nav-pills.tabs-iconized > li i { + position: relative; + margin-right: 3px; + top: 4px; + font-size: 24px; +} + +.tab-content { + padding: 30px 15px 15px 15px; + background-color: #fff; +} + +.nav.nav-tabs-custom-colored > li > a { + border-color: #ccc; + border-bottom: transparent; +} +.nav.nav-tabs-custom-colored > li > a:hover, .nav.nav-tabs-custom-colored > li > a:focus { + background-color: #1688ae; +} + +.nav-tabs.nav-tabs-custom-colored { + border-bottom-color: #1688ae; +} +.nav-tabs.nav-tabs-custom-colored > li { + z-index: 0; + margin-bottom: 0; + background-color: #fff; +} +.nav-tabs.nav-tabs-custom-colored > li > a { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; + color: #696565; + margin-right: 0; +} +.nav-tabs.nav-tabs-custom-colored > li > a:hover, .nav-tabs.nav-tabs-custom-colored > li > a:focus { + color: #fff; + border-color: #1688ae; +} +.nav-tabs.nav-tabs-custom-colored > li.active > a, .nav-tabs.nav-tabs-custom-colored > li.active > a:hover, .nav-tabs.nav-tabs-custom-colored > li.active > a:focus { + color: #fff; + background-color: #1688ae; + border-color: #1688ae; + border-bottom: transparent; +} +.nav-tabs > li.active { + z-index: 1; +} + +.nav-pills-custom-minimal { + border-bottom: 1px solid #ccc; +} +.nav-pills-custom-minimal > li > a { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + padding: 10px; + border-top: 4px solid transparent; + color: #696565; +} +.nav-pills-custom-minimal > li > a:hover, .nav-pills-custom-minimal > li > a:focus { + background-color: transparent; + color: #4f4c4c; +} +.nav-pills-custom-minimal > li.active > a, .nav-pills-custom-minimal > li.active > a:hover, .nav-pills-custom-minimal > li.active > a:focus { + background-color: transparent; + border-top-color: #94c632; + color: #696565; +} +.nav-pills-custom-minimal > li + li { + margin-left: 30px; +} +@media screen and (max-width: 480px) { + .nav-pills-custom-minimal > li + li { + margin-left: 0; + } +} +.nav-pills-custom-minimal.custom-minimal-bottom > li a { + border-top: none; + border-bottom: 4px solid transparent; +} +.nav-pills-custom-minimal.custom-minimal-bottom > li.active > a, .nav-pills-custom-minimal.custom-minimal-bottom > li.active > a:hover, .nav-pills-custom-minimal.custom-minimal-bottom > li.active > a:focus { + border-bottom-color: #94c632; +} + +.custom-tabs-left { + border-bottom: none; +} +.custom-tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ccc; + border-bottom: none; +} +.custom-tabs-left > .nav-tabs > li { + float: none; +} +.custom-tabs-left > .nav-tabs > li a { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + min-width: 74px; + margin-right: -1px; +} +.custom-tabs-left > .nav-tabs > li a:hover, .custom-tabs-left > .nav-tabs > li a:focus { + background: transparent; + border-color: transparent; +} +.custom-tabs-left > .nav-tabs .active a, .custom-tabs-left > .nav-tabs .active a:hover, .custom-tabs-left > .nav-tabs .active a:focus { + border: 1px solid #ccc; + border-right-color: #fff; +} +.custom-tabs-left .tab-content { + padding-top: 5px; +} + +/* badges */ +.badge.element-bg-color-blue { + background-color: #1d92af; +} +.badge.element-bg-color-green { + background-color: #859419; +} +.badge.element-bg-color-seagreen { + background-color: #3f7577; +} +.badge.element-bg-color-orange { + background-color: #ce7b11; +} + +/* labels */ +.label { + font-weight: normal; +} + +.label-default { + background-color: #919191; +} + +.label-primary { + background-color: #1688ae; +} + +.label-info { + background-color: #59b7de; +} + +.label-success { + background-color: #7bae16; +} + +.label-warning { + background-color: #ff9800; +} + +.label-danger { + background-color: #ef2020; +} + +/* buttons */ +.btn { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.btn:active, .btn.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn:focus, .btn:active:focus, .btn.active:focus { + outline: none; +} +.btn i { + position: relative; + top: 0; + margin-right: 2px; + font-size: 16px; + line-height: 1; +} + +.btn-xs i { + font-size: 12px; +} + +.btn-sm i { + font-size: 14px; +} + +.btn-lg i { + font-size: 20px; +} + +.btn-default { + color: #696565; +} +.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active { + color: #696565; +} + +.btn-primary { + background-color: #1688ae; + border-color: #137697; +} +.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active { + background-color: #147da0; + border-color: #106581; +} +.btn-primary.disabled, .btn-primary[disabled], .btn-primary.disabled:hover, .btn-primary[disabled]:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, .btn-primary.disabled.active, .btn-primary[disabled].active { + background-color: #1cabdb; + color: #fff; +} + +.btn-info { + background-color: #59b7de; + border-color: #44aeda; +} +.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active { + background-color: #44aeda; + border-color: #2ea5d6; +} +.btn-info.disabled, .btn-info[disabled], .btn-info.disabled:hover, .btn-info[disabled]:hover, .btn-info.disabled:focus, .btn-info[disabled]:focus, .btn-info.disabled:active, .btn-info[disabled]:active, .btn-info.disabled.active, .btn-info[disabled].active { + background-color: #84c9e6; + color: #fff; +} + +.btn-success { + background-color: #7bae16; + border-color: #6b9713; +} +.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active { + background-color: #71a014; + border-color: #5b8110; +} +.btn-success.disabled, .btn-success[disabled], .btn-success.disabled:hover, .btn-success[disabled]:hover, .btn-success.disabled:focus, .btn-success[disabled]:focus, .btn-success.disabled:active, .btn-success[disabled]:active, .btn-success.disabled.active, .btn-success[disabled].active { + background-color: #9bdb1c; + color: #fff; +} + +.btn-warning { + background-color: #ff9800; + border-color: #e68900; +} +.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active { + background-color: #f08f00; + border-color: #cc7a00; +} +.btn-warning.disabled, .btn-warning[disabled], .btn-warning.disabled:hover, .btn-warning[disabled]:hover, .btn-warning.disabled:focus, .btn-warning[disabled]:focus, .btn-warning.disabled:active, .btn-warning[disabled]:active, .btn-warning.disabled.active, .btn-warning[disabled].active { + background-color: #ffad33; + color: #fff; +} + +.btn-danger { + background-color: #ef2020; + border-color: #e51010; +} +.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active { + background-color: #e51010; + border-color: #cd0f0f; +} +.btn-danger.disabled, .btn-danger[disabled], .btn-danger.disabled:hover, .btn-danger[disabled]:hover, .btn-danger.disabled:focus, .btn-danger[disabled]:focus, .btn-danger.disabled:active, .btn-danger[disabled]:active, .btn-danger.disabled.active, .btn-danger[disabled].active { + background-color: #f25050; + color: #fff; +} + +.btn-link { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-link:hover, .btn-link:focus, .btn-link:active, .btn-link.active, +.btn-link .open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: none; + text-decoration: none; +} + +.open .dropdown-toggle.btn-primary { + background-color: #126f8e; +} +.open .dropdown-toggle.btn-info { + background-color: #3baad8; + color: #fff; +} +.open .dropdown-toggle.btn-success { + background-color: #658e12; + color: #fff; +} +.open .dropdown-toggle.btn-warning { + background-color: #db8300; + color: #fff; +} +.open .dropdown-toggle.btn-danger { + background-color: #dc1010; + color: #fff; +} + +.btn-group > .btn { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +.btn-toggle-flash { + font-family: "Ionicons"; +} +.btn-toggle-flash:before { + content: '\f259'; + margin-right: 5px; + min-width: 12px; +} +.btn-toggle-flash.active:before { + content: '\f25a'; +} + +/* icon sizing */ +.icon.icon-2x { + font-size: 2em !important; +} +.icon.icon-3x { + font-size: 3em !important; + margin-right: 0.2em; +} +.icon.icon-4x { + font-size: 4em !important; + margin-right: 0.2em; +} + +/* dropdown menu */ +.dropdown-menu { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); +} +.dropdown-menu > li > a { + padding: 3px 15px; + font-size: 0.9em; +} +.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + background: #116c8a; + color: #fff; +} +.dropdown-menu > li.active > a, .dropdown-menu > li.active > a:hover, .dropdown-menu > li.active > a:focus { + background: #116c8a; +} + +/* modal content */ +.modal-content { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -ms-border-radius: 4px; + -o-border-radius: 4px; + border-radius: 4px; +} + +/* progress bar */ +.progress { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background-color: gainsboro; +} +.progress.wide { + width: 60px; +} +.progress .progress-bar { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-transition-property: width; + -moz-transition-property: width; + -o-transition-property: width; + transition-property: width; + -webkit-transition-duration: 3s; + -moz-transition-duration: 3s; + -o-transition-duration: 3s; + transition-duration: 3s; + -webkit-transition-timing-function: ease; + -moz-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; +} +.progress.progress-sm { + height: 12px; +} +.progress.progress-xs { + height: 5px; +} +.progress.progress-sm .progress-bar, .progress.progress-xs .progress-bar { + text-indent: -9999px; +} + +.progress-vertical-wrapper { + height: 200px; +} + +.progress-bar-success { + background-color: #7bae16; +} + +.progress-bar-info { + background-color: #59b7de; +} + +.progress-bar-warning { + background-color: #ff9800; +} + +.progress-bar-danger { + background-color: #ef2020; +} + +/* gritter notification */ +.gritter-item-wrapper { + background: #59b7de; +} +.gritter-item-wrapper.gritter-info { + background: #59b7de; + /* link on notification message */ +} +.gritter-item-wrapper.gritter-info .gritter-close { + background: #2ea5d6; + color: #248cb7; +} +.gritter-item-wrapper.gritter-info .gritter-close:hover, .gritter-item-wrapper.gritter-info .gritter-close:focus { + color: #6ec0e2; +} +.gritter-item-wrapper.gritter-info .gritter-title + p a { + color: #248cb7; +} +.gritter-item-wrapper.gritter-info .gritter-title + p a:hover, .gritter-item-wrapper.gritter-info .gritter-title + p a:focus { + color: #299ccc; +} +.gritter-item-wrapper.gritter-warning { + background: #ff9800; + /* link on notification message */ +} +.gritter-item-wrapper.gritter-warning .gritter-close { + background: #cc7a00; + color: #a36100; +} +.gritter-item-wrapper.gritter-warning .gritter-close:hover, .gritter-item-wrapper.gritter-warning .gritter-close:focus { + color: #ffa21a; +} +.gritter-item-wrapper.gritter-warning .gritter-title + p a { + color: #a36100; +} +.gritter-item-wrapper.gritter-warning .gritter-title + p a:hover, .gritter-item-wrapper.gritter-warning .gritter-title + p a:focus { + color: #bd7000; +} +.gritter-item-wrapper.gritter-danger { + background: #d70f0f; + /* link on notification message */ +} +.gritter-item-wrapper.gritter-danger .gritter-close { + background: #a70c0c; + color: #810909; +} +.gritter-item-wrapper.gritter-danger .gritter-close:hover, .gritter-item-wrapper.gritter-danger .gritter-close:focus { + color: #f35e5e; +} +.gritter-item-wrapper.gritter-danger .gritter-title + p a { + color: #810909; +} +.gritter-item-wrapper.gritter-danger .gritter-title + p a:hover, .gritter-item-wrapper.gritter-danger .gritter-title + p a:focus { + color: #9e0b0b; +} + +.gritter-item { + font-family: inherit; +} + +.gritter-top, +.gritter-bottom, +.gritter-item, +.gritter-close { + background: none; +} + +.gritter-close { + display: block !important; + left: auto; + right: 0; + top: 0px; + background: #2ea5d6; + color: #248cb7; + text-align: center; +} +.gritter-close:hover, .gritter-close:focus { + color: #6ec0e2; + outline: none; +} +.gritter-close:before { + font-family: Ionicons; + content: '\f12a'; + font-size: 18px; + display: block; + text-indent: 0; + line-height: 1.7; +} + +.gritter-title { + text-shadow: none; + font-weight: normal; + font-size: 16px; +} +.gritter-title i { + font-size: 18px; +} + +/* accordion, collapsible content */ +.panel-group .panel .panel-title > a i { + font-size: 18px; +} +.panel-group .panel .panel-title > a > i:first-child, .panel-group .panel .panel-title > a.collapsed > i + i { + display: none; +} +.panel-group .panel .panel-title > a.collapsed > i:first-child { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + vertical-align: baseline; +} + +/* bootstrap tooltip */ +.tooltip .tooltip-inner { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +/* bootstrap popover */ +.popover { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); +} +.popover .popover-title { + -webkit-border-radius: 2px 2px 0 0; + -moz-border-radius: 2px 2px 0 0; + -ms-border-radius: 2px 2px 0 0; + -o-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + font-weight: 700; +} +.popover .popover-title i { + position: relative; + top: 2px; + font-size: 22px; +} +.popover .popover-content { + font-size: 0.9em; +} +.popover.left .arrow:after { + right: 2px; +} +.popover.top .arrow:after { + bottom: 2px; +} +.popover.right .arrow:after { + left: 2px; +} +.popover.bottom .arrow:after { + top: 2px; +} + +/* bootstrap alerts */ +.alert { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 8px; + position: relative; +} +.alert i { + font-size: 16px; +} +.alert .close { + top: 50%; + position: absolute; + right: 0.3em; + margin-top: -11px; +} + +/* pagination */ +.pagination { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.pagination > li > a, .pagination > li > span { + color: #1688ae; +} +.pagination > li > a:hover, .pagination > li > span:hover { + background-color: #696565; + border-color: #696565; + color: #fff; +} +.pagination > li i { + font-size: 16px; + line-height: 1; +} +.pagination.pagination-sm > li i { + font-size: 15px; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + border-bottom-left-radius: 2px; + border-top-left-radius: 2px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-bottom-right-radius: 2px; + border-top-right-radius: 2px; +} +.pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { + background-color: #1688ae; + border-color: #1688ae; +} +.pagination.borderless > li > a, +.pagination.borderless > li > span { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + border: none; + background-color: transparent; +} +.pagination.borderless > li > a:hover, .pagination.borderless > li > a:focus, +.pagination.borderless > li > span:hover, +.pagination.borderless > li > span:focus { + color: #fff; + background-color: #696565; + border-color: #696565; +} +.pagination.borderless > li:first-child > a, +.pagination.borderless > li:first-child > span, .pagination.borderless > li:last-child > a, +.pagination.borderless > li:last-child > span { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; +} +.pagination.borderless > li.active > a, +.pagination.borderless > li.active > span { + color: #fff; + background-color: #1688ae; +} +.pagination.borderless > li.active > a:hover, .pagination.borderless > li.active > a:focus, +.pagination.borderless > li.active > span:hover, +.pagination.borderless > li.active > span:focus { + color: #fff; + background-color: #1688ae; +} +.pagination.borderless > .disabled > span, +.pagination.borderless > .disabled > span, +.pagination.borderless > .disabled > span:hover, +.pagination.borderless > .disabled > span:focus, +.pagination.borderless > .disabled > a, +.pagination.borderless > .disabled > a:hover, +.pagination.borderless > .disabled > a:focus { + background-color: transparent; +} + +.pager li > a, .pager li > span { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + line-height: 2; +} +.pager li > a i, .pager li > span i { + position: relative; + top: 4px; + font-weight: 700; +} +.pager li > a:hover, .pager li > a:focus, .pager li > span:hover, .pager li > span:focus { + color: #fff; + background-color: #696565; +} + +/* bootstrap slider input */ +.slider-track, +.slider-selection { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background-image: none; + filter: none; + /* disable gradient for IE */ +} + +.slider-track { + background-color: #cecece; +} + +.slider-selection { + background-color: #919191; +} + +.slider.slider-horizontal { + width: 100% !important; +} + +.slider.slider-vertical .slider-handle { + position: relative; + left: 2px; + cursor: ns-resize; +} + +.slider-handle { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; + background-image: none; + position: relative; + top: 2px; +} + +/* handle for bootstrap slider and range slider */ +.slider-handle, +.ui-rangeSlider-handle { + width: 16px; + height: 16px; + background: white; + border: 1px solid #919191; + cursor: col-resize; +} +.slider-handle:before, +.ui-rangeSlider-handle:before { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + content: '|||'; + font-size: 5px; + color: #919191; + text-align: center; + line-height: 15px; + position: absolute; + left: 0.6em; +} + +/* range slider input */ +.ui-rangeSlider { + height: 22px; + margin: 30px 0; +} +.ui-rangeSlider .ui-rangeSlider-innerBar { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + height: 10px; + margin: 3px 0; + background: #cecece; +} +.ui-rangeSlider .ui-rangeSlider-bar { + margin: 3px 0; + background: #919191; + height: 10px; + cursor: move; + cursor: grab; + cursor: -moz-grab; +} +.ui-rangeSlider.slider-default .ui-rangeSlider-bar { + background: #919191; +} +.ui-rangeSlider.slider-default .ui-rangeSlider-handle { + background: white; + border-color: #919191; +} +.ui-rangeSlider.slider-default .ui-rangeSlider-handle:before { + color: #919191; +} +.ui-rangeSlider.slider-primary .ui-rangeSlider-bar { + background: #1688ae; +} +.ui-rangeSlider.slider-primary .ui-rangeSlider-handle { + background: #e1f5fb; + border-color: #1688ae; +} +.ui-rangeSlider.slider-primary .ui-rangeSlider-handle:before { + color: #1688ae; +} +.ui-rangeSlider.slider-info .ui-rangeSlider-bar { + background: #59b7de; +} +.ui-rangeSlider.slider-warning .ui-rangeSlider-bar { + background: #ff9800; +} +.ui-rangeSlider.slider-warning .ui-rangeSlider-handle { + background: white; + border-color: #ff9800; +} +.ui-rangeSlider.slider-warning .ui-rangeSlider-handle:before { + color: #ff9800; +} +.ui-rangeSlider.slider-danger .ui-rangeSlider-bar { + background: #ef2020; +} +.ui-rangeSlider.slider-danger .ui-rangeSlider-handle { + background: white; + border-color: #ef2020; +} +.ui-rangeSlider.slider-danger .ui-rangeSlider-handle:before { + color: #ef2020; +} +.ui-rangeSlider.slider-success .ui-rangeSlider-bar { + background: #7bae16; +} +.ui-rangeSlider.slider-success .ui-rangeSlider-handle { + background: #e0f6b4; + border-color: #7bae16; +} +.ui-rangeSlider.slider-success .ui-rangeSlider-handle:before { + color: #7bae16; +} +.ui-rangeSlider .ui-rangeSlider-bar.ui-draggable-dragging { + cursor: -moz-grabbing; + cursor: grabbing; +} + +.ui-rangeSlider-arrow { + height: 16px; + margin: 2px 0; + width: 16px; + background-repeat: no-repeat; +} + +.ui-rangeSlider-arrow-inner { + display: none; +} + +.ui-rangeSlider-container { + height: 22px; +} + +.ui-rangeSlider-noArrow .ui-rangeSlider-container { + margin: 0; +} + +.ui-rangeSlider-label { + margin: 0 2px 2px; + white-space: nowrap; + bottom: 20px; + padding: 3px 6px 7px; + cursor: col-resize; +} +.ui-rangeSlider-label .ui-rangeSlider-label-value { + font-size: 0.9em; +} + +.ui-rangeSlider-label-inner { + display: none; +} + +input.ui-editRangeSlider-inputValue { + width: 3em; + vertical-align: middle; + text-align: center; + border: 1px solid #ccc; +} + +/* switch checkbox and radio */ +.switch-input { + display: block; + position: relative; + line-height: 1; + margin-bottom: 4px; + padding: 10px 60px 0 0; + cursor: pointer; +} +.switch-input input { + position: absolute; + left: -9999px; +} +.switch-input input:checked + i { + border-color: #94c632; +} +.switch-input input:checked + i:before { + right: 33px; +} +.switch-input input:checked + i:after { + content: attr(data-swon-text); + text-align: right; + color: #696565; +} +.switch-input i { + -webkit-border-radius: 20px; + -moz-border-radius: 20px; + -ms-border-radius: 20px; + -o-border-radius: 20px; + border-radius: 20px; + content: ''; + display: block; + position: absolute; + top: 6px; + right: 0; + width: 50px; + height: 20px; + border-width: 1px; + border-style: solid; + border-color: #ccc; + background: #fff; + font-style: normal; +} +.switch-input i:before { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + -webkit-transition-property: right; + -moz-transition-property: right; + -o-transition-property: right; + transition-property: right; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + -o-transition-duration: 0.1s; + transition-duration: 0.1s; + -webkit-transition-timing-function: ease-in; + -moz-transition-timing-function: ease-in; + -o-transition-timing-function: ease-in; + transition-timing-function: ease-in; + content: ''; + display: block; + position: absolute; + top: 4px; + right: 4px; + width: 10px; + height: 10px; + background-color: #94c632; +} +.switch-input i:after { + content: attr(data-swoff-text); + position: absolute; + top: 2px; + right: 8px; + left: 8px; + font-weight: 700; + font-size: 10px; + line-height: 15px; + color: #9c9898; +} + +.form-group .switch-input i { + top: 0; + right: auto; +} + +/* fancy checkbox and radio button */ +.fancy-checkbox { + display: block; +} +.fancy-checkbox input[type="checkbox"] { + display: none; +} +.fancy-checkbox input[type="checkbox"] + span { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + cursor: pointer; + position: relative; + font-size: 13px; + margin-right: 10px; +} +.fancy-checkbox input[type="checkbox"] + span:before { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + bottom: 1px; + width: 18px; + height: 18px; + margin-right: 5px; + content: ""; + border: 1px solid #ccc; +} +.fancy-checkbox input[type="checkbox"]:checked + span:before { + font-family: Ionicons; + content: '\f2d5'; + font-size: 12px; + color: white; + text-align: center; + line-height: 16px; + background: #94c632; + border: 1px solid #94c632; +} + +.fancy-radio { + display: block; +} +.fancy-radio input[type="radio"] { + display: none; +} +.fancy-radio input[type="radio"] + span { + display: block; + cursor: pointer; + position: relative; + margin-right: 15px; + font-size: 13px; +} +.fancy-radio input[type="radio"] + span i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + -ms-border-radius: 8px; + -o-border-radius: 8px; + border-radius: 8px; + position: relative; + bottom: 1px; + content: ""; + border: 1px solid #ccc; + width: 18px; + height: 18px; + margin-right: 10px; +} +.fancy-radio input[type="radio"]:checked + span i:after { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + display: block; + position: relative; + top: 3px; + left: 3px; + content: ''; + width: 10px; + height: 10px; + background-color: #94c632; +} + +/* multiselect checkbox */ +ul.multiselect-container.dropdown-menu > .active > a, +ul.multiselect-container.dropdown-menu > .active > a:hover, +ul.multiselect-container.dropdown-menu > .active > a:focus { + color: inherit; + background: transparent; +} +ul.multiselect-container > li > a { + padding: 3px 10px; +} +ul.multiselect-container > li > a > label { + padding: 3px 0 3px 40px; +} +ul.multiselect-container > li > a label.checkbox { + padding-left: 0; +} +ul.multiselect-container > li > a label.checkbox:before { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + bottom: 1px; + width: 18px; + height: 18px; + margin-right: 10px; + content: ""; + border: 1px solid #ccc; +} +ul.multiselect-container > li > a label.checkbox input[type="checkbox"] { + visibility: hidden; +} +ul.multiselect-container > li.active > a label.checkbox:before { + font-family: Ionicons; + content: '\f2d5'; + font-size: 12px; + color: white; + text-align: center; + line-height: 16px; + background: #94c632; + border: 1px solid #94c632; +} +ul.multiselect-container input.multiselect-search { + width: auto; +} + +/* multiselect radio */ +ul.multiselect-container > li > a label.radio { + padding-left: 0; +} +ul.multiselect-container > li > a label.radio i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + -ms-border-radius: 8px; + -o-border-radius: 8px; + border-radius: 8px; + position: relative; + bottom: 1px; + content: ""; + border: 1px solid #ccc; + width: 18px; + height: 18px; + margin-right: 10px; +} +ul.multiselect-container > li > a label.radio input[type="radio"] { + visibility: hidden; +} +ul.multiselect-container > li.active > a label i:before { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + display: block; + position: relative; + top: 3px; + left: 3px; + content: ''; + width: 10px; + height: 10px; + background-color: #94c632; +} + +.input-group > .input-group-btn > .multiselect + .btn-group > .btn { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.input-group-lg > .input-group-btn > .multiselect + .btn-group > .btn { + height: 46px; +} + +.input-group-btn .btn { + z-index: 2; +} + +/* date picker */ +.datepicker > div { + padding: 5px 20px; +} +.datepicker th, .datepicker td { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.datepicker td.active:active, .datepicker td.active.active { + background-image: none; + background-color: #357EBD; + border-color: #3071A9; + color: #fff; +} +.datepicker td.active:hover { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.datepicker td.active:hover:active, .datepicker td.active:hover.active { + background-image: none; + background-color: #357EBD; + border-color: #3071A9; +} +.datepicker th.next, +.datepicker th.prev { + font-size: 14px; +} +.datepicker .switch { + text-align: center; +} +.datepicker table tr td.active:hover, .datepicker table tr td.active:hover:hover, .datepicker table tr td.active.disabled:hover, .datepicker table tr td.active.disabled:hover:hover, .datepicker table tr td.active:active, .datepicker table tr td.active:hover:active, .datepicker table tr td.active.disabled:active, .datepicker table tr td.active.disabled:hover:active, .datepicker table tr td.active.active, .datepicker table tr td.active:hover.active, .datepicker table tr td.active.disabled.active, .datepicker table tr td.active.disabled:hover.active, .datepicker table tr td.active.disabled, .datepicker table tr td.active:hover.disabled, .datepicker table tr td.active.disabled.disabled, .datepicker table tr td.active.disabled:hover.disabled, +.datepicker table tr td.active [disabled], .datepicker table tr td.active:hover[disabled], .datepicker table tr td.active.disabled[disabled], .datepicker table tr td.active.disabled:hover[disabled] { + background-color: #357EBD; + border-color: #3071A9; +} + +/* date range picker */ +.daterangepicker .calendar-date { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} +.daterangepicker th .input-mini, .daterangepicker th li, .daterangepicker td .input-mini, .daterangepicker td li, +.daterangepicker .ranges .input-mini, +.daterangepicker .ranges li { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} +.daterangepicker td.in-range { + background: #D9ECF5; +} +.daterangepicker .ranges li.active, +.daterangepicker .ranges li:hover { + background: #116C8A; + border-color: #116C8A; +} + +.report-range { + cursor: pointer; + padding: 5px 10px; + border: 1px solid #ccc; +} +.report-range .range-value { + margin-right: 3px; +} +.report-range i { + font-size: 16px; +} + +/* spinner input */ +.bootstrap-touchspin-prefix { + border-right: none; +} + +.bootstrap-touchspin-postfix { + border-left: none; +} + +.bootstrap-touchspin-prefix.btn, +.bootstrap-touchspin-postfix.btn { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.bootstrap-touchspin-prefix.btn:active, .bootstrap-touchspin-prefix.btn.active, +.bootstrap-touchspin-postfix.btn:active, +.bootstrap-touchspin-postfix.btn.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.dropzone { + padding: 20px; + min-height: 0; + background-image: url('../img/diagonal-stripe.png?1369651034'); + background-repeat: repeat; +} +.dropzone .dz-message { + font-size: 4em; + text-align: center; + color: #A4A4A4; +} +.dropzone .dz-message:before { + font-family: Ionicons; + content: '\f177'; + display: block; + font-size: 4em; + line-height: 1; +} +.dropzone.dropzone-mini .dz-message { + font-size: 2em; +} +.dropzone.dz-started .dz-message { + display: none; +} +.dropzone .dz-message { + display: block; +} +.dropzone .dz-default.dz-message { + background: none; + position: initial; + width: 100%; + height: auto; + margin-left: 0; + margin-top: 0; + padding: 2em 0; +} +.dropzone .dz-default.dz-message span { + display: block; +} +.dropzone .dz-fallback { + text-align: center; +} +.dropzone .dz-fallback input[type="file"] { + margin: 0 auto; + margin-bottom: 10px; +} +.dropzone .dz-preview .dz-remove { + background: #ef2020; + color: #fff; + font-size: 0.9em; +} +.dropzone .dz-preview .dz-remove:before { + font-family: FontAwesome; + content: '\f00d'; + margin-right: 3px; +} +.dropzone .dz-preview .dz-remove:hover { + background: #e51010; + color: #fff; + cursor: pointer; +} +.dropzone .dz-preview .dz-error-mark, +.dropzone .dz-preview .dz-success-mark { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + background: #fff; + width: 25px; + height: 25px; +} +.dropzone .dz-preview .dz-error-mark:before, +.dropzone .dz-preview .dz-success-mark:before { + font-family: FontAwesome; + font-size: 15px; + position: absolute; + left: 5px; + top: 2px; +} +.dropzone .dz-preview .dz-error-mark:before { + content: '\f071'; + color: #ef2020; +} +.dropzone .dz-preview .dz-success-mark:before { + content: '\f00c'; + color: #7bae16; +} + +/* todo list */ +.todo-list > li { + border-top: 1px solid #ccc; + position: relative; + background: #fff; +} +.todo-list > li:first-child { + border-top: none; +} +.todo-list > li.ui-state-highlight { + border: 1px solid #ff9800; +} +.todo-list > li .list-control { + position: absolute; + top: 50%; + margin-top: -14px; +} +.todo-list > li .list-control i { + font-size: 20px; + position: relative; + top: 2px; + margin-right: 5px; + cursor: move; +} +.todo-list > li p { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin: 0; + padding: 10px 0; + margin-left: 4em; +} +.todo-list > li.completed p { + text-decoration: line-through; + color: #b5b2b2; +} +.todo-list .fancy-checkbox input[type="checkbox"] + span { + margin-right: 0; +} +.todo-list .short-description { + display: block; + margin-top: 5px; + font-size: 0.9em; +} +.todo-list .date { + font-size: 0.85em; +} +.todo-list .label { + position: absolute; + right: 0; + padding: 6px 10px; + font-weight: normal; +} + +/* task list */ +.task-list { + list-style-type: none; + padding-left: 0; +} +.task-list p { + position: relative; +} +.task-list p .label { + position: absolute; + right: 0; +} + +/* label with button */ +.label-with-btn { + display: inline-table; +} +.label-with-btn .label, +.label-with-btn .btn { + display: table-cell; +} +.label-with-btn .label { + -moz-border-radius-topright: 0; + -webkit-border-top-right-radius: 0; + border-top-right-radius: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + padding: 4px 6px; +} +.label-with-btn .btn { + -moz-border-radius-topleft: 0; + -webkit-border-top-left-radius: 0; + border-top-left-radius: 0; + -moz-border-radius-bottomleft: 0; + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + padding: 6px; + line-height: 10px; + vertical-align: middle; +} + +/* select2 */ +.select2-container { + width: 100%; +} + +.select2-search-choice-close, +.select2-container .select2-choice abbr { + font-family: Ionicons; + background: none; + font-size: 13px; + top: 3px; +} +.select2-search-choice-close:before, +.select2-container .select2-choice abbr:before { + content: '\f128'; + font-size: 85%; +} + +.select2-container .select2-choice, +.select2-container.select2-drop-above .select2-choice { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} + +.select2-container .select2-choice { + height: 30px; + line-height: 30px; + background-image: none; +} +.select2-container .select2-choice abbr { + top: 0px; + right: 35px; +} +.select2-container .select2-choice .select2-arrow { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + width: 30px; + text-align: center; + background: #eee; + line-height: 30px; +} +.select2-container .select2-choice .select2-arrow b { + background: none; +} +.select2-container .select2-choice .select2-arrow:before { + font-family: FontAwesome; + font-size: 15px; + content: '\f107'; +} + +.select2-search { + font-family: FontAwesome; + font-size: 15px; +} +.select2-search:before { + content: '\f002'; + position: absolute; + top: 5px; + right: 12px; +} +.select2-search input { + background: none; +} +.select2-search input.select2-active { + background: none; +} +.select2-search input.select2-active background { + image: url('../img/select2-spinner.gif?1398901838'); + color: #fff; + repeat: no-repeat; +} + +.select2-search input.select2-active, +.select2-more-results.select2-active { + background: none; +} +.select2-search input.select2-active background, +.select2-more-results.select2-active background { + image: url('../img/select2-spinner.gif?1398901838'); + color: #f4f4f4; + repeat: no-repeat; +} + +.select2-container.select2-dropdown-open .select2-choice, +.select2-container.select2-dropdown-open .select2-arrow { + background-color: transparent; +} +.select2-container.select2-dropdown-open .select2-arrow { + background-image: none; +} +.select2-container.select2-dropdown-open .select2-arrow:before { + content: ''; +} + +.select2-drop, +.select2-drop.select2-drop-above { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.select2-drop { + margin-top: -4px; +} + +.select2-container-multi .select2-choices .select2-search-choice { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + padding: 3px 18px 3px 5px; + background-color: #1688ae; + filter: none; + /* disable gradient for IE */ + background-image: none; + color: #fff; + border: 1px solid #147da0; + font-size: 85%; +} +.select2-container-multi .select2-choices .select2-search-choice a { + color: #2cb6e4; +} +.select2-container-multi .select2-choices .select2-search-choice a:hover, .select2-container-multi .select2-choices .select2-search-choice a:focus { + color: #43bee7; + text-decoration: none; +} +.select2-container-multi .select2-choices .select2-search-field input { + padding: 3px; +} +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background-image: url('../img/select2-spinner.gif?1398901838') !important; +} +.select2-container-multi .select2-choices .select2-search-choice-close { + left: auto; + right: 2px; +} +.select2-container-multi.select2-container-active .select2-choices { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.select2-container-multi.select2-dropdown-open .select2-choices { + border-bottom: none; +} + +/* bootstrap markdown */ +.md-editor .btn-default { + background-color: #fff; + color: #333; + border-color: #ccc; +} +.md-editor .btn-default:hover, .md-editor .btn-default:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background-color: #ebebeb; +} + +/* x-editable with select input except combodate */ +.editable[data-type="select"] + .editable-container .editable-input, +.editable[data-type="combodate"] + .editable-container .editable-input { + position: relative; +} +.editable[data-type="select"] + .editable-container .editable-input select, +.editable[data-type="combodate"] + .editable-container .editable-input select { + padding: 5px 20px 5px 10px; + background-position: right 5px top 10px; +} + +.editable[data-type="combodate"] + .editable-container .editable-input { + position: relative; +} +.editable[data-type="combodate"] + .editable-container .editable-input select { + height: 31px; + position: relative; + top: -1px; +} + +/* x-editable buttons */ +.editable-buttons .btn i { + margin-right: 0; + position: relative; + top: 2px; +} + +/* x-editable custom input */ +.editable-address { + display: block; + margin-bottom: 5px; +} + +/* typeaheadjs */ +.twitter-typeahead .tt-query, +.twitter-typeahead .tt-hint { + padding: 5px 22px 5px 10px; + /* redefine padding for Opera */ +} + +.editable-address span { + width: 70px; + display: inline-block; +} + +/* maps by mapael */ +.mapTooltip { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90); + opacity: 0.9; + position: fixed; + padding: 10px; + z-index: 1000; + max-width: 200px; + display: none; + background-color: #343434; + border: 1px solid #fff; + color: #fff; +} +.mapTooltip span { + font-weight: 700; +} + +.data-us-map .plotLegend { + margin-top: 50px; +} + +.zoom-map { + position: relative; +} +.zoom-map .btn-group { + margin-bottom: 20px; +} +@media screen and (max-width: 480px) { + .zoom-map .btn-group .btn { + float: none; + width: 100%; + margin-left: 0; + margin-bottom: 3px; + } +} + +.zoom-map .zoomIn, +.zoom-map .zoomOut { + position: absolute; + left: 10px; + background: #fff; + width: 20px; + cursor: pointer; + border: 1px solid #ccc; + text-align: center; + line-height: 20px; +} +.zoom-map .zoomIn:hover, +.zoom-map .zoomOut:hover { + background: #f7f7f7; +} +.zoom-map .zoomIn { + top: 60px; +} +.zoom-map .zoomOut { + top: 85px; +} + +@media screen and (max-width: 480px) { + .zoom-map .zoomIn { + top: 100px; + } + .zoom-map .zoomOut { + top: 124px; + } +} +.map-custom-width { + width: 75%; +} +.map-custom-width .map { + position: relative; + left: 20%; +} + +/* google map */ +.google-map #map-canvas { + height: 349px; +} + +/* list icons */ +.list-icons-demo li { + margin-bottom: 20px; + text-align: center; +} +.list-icons-demo li i { + font-size: 24px; +} + +/* demo only */ +.demo-hide { + display: none; +} + +/*------------------------------------------------*/ +/* Chart +/*------------------------------------------------*/ +/* flot chart legend */ +td.legendLabel { + padding-right: 5px; +} + +/* headline stat on dashboard page */ +.headline { + margin-left: -15px; + margin-right: -15px; + background: #fff; +} +.headline .headline-report-text { + padding: 0 10px 10px 0; + color: #fff; +} +.headline .headline-report-text h3 { + margin-top: 0; + color: #695B0E; + font-size: 1.4em; +} +.headline .headline-report-text ul { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + background: rgba(60, 112, 19, 0.5); +} +.headline .headline-report-text ul > li { + padding: 5px 10px; + line-height: 2; +} +.headline .headline-report-text ul > li > span:first-child { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + min-width: 140px; +} +.headline .headline-report-text ul > li > span + span { + font-weight: 300; +} +.headline .nav-pills-custom-minimal { + padding-left: 15px; + padding-right: 15px; +} +@media screen and (max-width: 480px) { + .headline .nav-pills-custom-minimal > li > a { + padding: 10px 0; + } +} +.headline .tab-content { + background-image: url('../img/headline-bg.png?1397994704'); +} +.headline .tab-content > .tab-pane { + padding: 30px 15px; + height: 310px; +} +@media screen and (max-width: 992px) { + .headline .tab-content { + background-repeat: repeat-y; + } + .headline .tab-content > .tab-pane { + height: auto; + } +} +.headline .legend table { + background-color: rgba(255, 255, 255, 0.5); +} +.headline .legend table td { + padding: 3px; +} +.headline .legend table td.legendLabel { + padding-right: 5px; +} +.headline .bottom-stat { + margin-left: 0; + margin-right: 0; +} +.headline .bottom-stat .row { + margin-left: 0; + margin-right: 0; +} +.headline .bottom-stat .row > div { + padding-left: 0; + padding-right: 0; + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} +.headline .bottom-stat .row > div:first-child { + border-left: none; +} +.headline .bottom-stat .stat-item { + text-align: center; + padding: 10px 0; +} +.headline .bottom-stat .stat-item .left, +.headline .bottom-stat .stat-item .right { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin: 0 5px; +} +.headline .bottom-stat .stat-item .number { + font-family: "josefinslab-semibold"; + font-size: 2.8em; + line-height: 1.1; +} +.headline .bottom-stat .stat-item .text { + font-weight: 300; + font-size: 1.5em; +} +.headline .bottom-stat .stat-item .icon { + font-size: 48px; + line-height: 1; +} + +.social-stat { + padding: 15px 0; + margin: 0 auto; + width: 325px; +} +@media screen and (max-width: 480px) { + .social-stat { + width: auto; + } +} +.social-stat .number { + height: 103px; + min-width: 116px; + padding-top: 1.5em; + font-weight: 300; + text-align: center; + background: rgba(255, 255, 255, 0.4); +} +@media screen and (max-width: 480px) { + .social-stat .number { + float: none !important; + min-width: auto; + } +} +.social-stat .number > span { + font-size: 2em; + line-height: 1.4; +} +.social-stat .number > span + span { + display: block; + font-size: 0.85em; + font-weight: normal; + line-height: 2; +} +.social-stat .number i { + font-size: 12px; +} +.social-stat .mini-stat { + padding: 20px 0; + text-align: center; + background: rgba(255, 255, 255, 0.4); +} +.social-stat .mini-stat p { + margin-bottom: 0; + margin-top: 5px; +} +.social-stat .mini-stat i { + margin-right: 2px; + font-size: 18px; + position: relative; + top: 2px; +} + +.status-chart { + text-align: center; + margin: 40px 0; +} +.status-chart .chart-title { + display: block; + font-size: 1em; + color: #695B0E; + font-weight: 700; +} + +.pie-chart { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + width: 130px; + margin-bottom: 20px; +} +.pie-chart canvas { + position: absolute; + top: 0; + left: 0; +} +.pie-chart .percent { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + line-height: 130px; + z-index: 2; + font-size: 1.2em; + color: #695B0E; +} +.pie-chart .percent:after { + margin-left: 0.1em; +} + +.flot-chart { + width: 100%; + height: 250px; +} + +.donut-label { + font-size: 12px; + color: #FFF; + background: rgba(0, 0, 0, 0.5); + text-align: center; + padding: 3px; +} + +#flotTip, .jqstooltip { + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + -ms-border-radius: 0 !important; + -o-border-radius: 0 !important; + border-radius: 0 !important; + background-color: rgba(0, 0, 0, 0.8) !important; + color: white !important; + border: none !important; +} + +/* sparkline tooltip fix */ +.jqstooltip { + width: auto !important; + height: auto !important; +} + +.jqsfield { + color: white !important; +} + +/* interactive charts, choices toggle checkbox */ +@media screen and (max-width: 992px) { + .widget-chart-toggle-series #choices { + margin-top: 30px; + } + .widget-chart-toggle-series #choices > div { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + } +} + +/*------------------------------------------------*/ +/* Tables +/*------------------------------------------------*/ +table.colored-header thead > tr > th { + background-color: #ebebeb !important; +} + +.table-hover > tbody > tr:hover > td, +.table-hover > tbody > tr:hover > th { + background-color: #ebebeb; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: #ebebeb; +} + +table.dataTable thead > tr > th { + padding-left: 8px; + padding-right: 15px; +} +table.dataTable thead .sorting { + background: none; + background-image: url('../img/sort_both.png?1401274899'); + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting_asc { + background: none; + background-image: url('../img/sort_asc.png?1401274981'); + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting_desc { + background: none; + background-image: url('../img/sort_desc.png?1401274960'); + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting_asc_disabled { + background: none; + background-image: url('../img/sort_asc_disabled.png?1401274940'); + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .sorting_desc_disabled { + background: none; + background-image: url('../img/sort_desc_disabled.png?1401274920'); + background-repeat: no-repeat; + background-position: center right; +} +table.dataTable thead .row-filter input { + width: 100%; +} + +.dataTables_filter input { + margin-left: 5px; +} + +@media screen and (max-width: 480px) { + .dataTables_filter, + .dataTables_length, + .dataTables_info { + display: none; + } +} +/* datatable extensions */ +ul.ColVis_collection { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2); + width: auto; + background: #fff; +} +ul.ColVis_collection li, ul.ColVis_collection li.ColVis_Special { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background: #f3f3f3; + border: inherit; +} +ul.ColVis_collection li:hover, ul.ColVis_collection li.ColVis_Special:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background: #ebebeb; + border: inherit; +} +ul.ColVis_collection li span { + font-size: 90%; +} + +/* dragged header */ +.DTCR_clonedTable th { + padding: 10px; + vertical-align: middle; + background-color: #ebebeb; +} + +.DTCR_pointer { + border: 1px solid #ff9800; +} + +.DTTT.btn-group { + float: right; + margin-bottom: 1em; +} +.DTTT.btn-group .btn { + position: relative; +} + +/*------------------------------------------------*/ +/* Forms +/*------------------------------------------------*/ +/* form */ +fieldset { + margin-bottom: 40px; +} + +legend { + color: #696565; + font-size: 1.5em; + border-color: #ccc; +} + +.form-horizontal .control-label { + text-align: left; +} + +div[class*="col-"] > .form-group { + margin-left: 0; + margin-right: 0; +} + +/* submit ticket form */ +.form-ticket ul.uploaded-attachment > li i { + color: #696565; + font-size: 16px; + min-width: 14px; +} +.form-ticket ul.uploaded-attachment > li .remove { + font-size: 0.85em; + text-decoration: underline; + color: inherit; +} +.form-ticket ul.uploaded-attachment > li .remove:hover { + text-decoration: none; +} + +/* box with help button */ +.box-with-help { + position: relative; + padding: 50px 30px 0; +} +.box-with-help .btn-login-help { + position: absolute; + right: 0; + top: 0; + color: #7e7979; +} +.box-with-help .btn-login-help:hover, .box-with-help .btn-login-help:focus { + color: #696565; +} + +/* erorr list */ +.parsley-errors-list { + margin: 0; + padding: 0; + border: 0; + overflow: hidden; + *zoom: 1; +} +.parsley-errors-list li { + list-style-image: none; + list-style-type: none; + margin-left: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + white-space: nowrap; +} +.parsley-errors-list li { + color: #ef2020; + font-size: 0.9em; + margin-top: 3px; +} + +/* summernote text editor */ +.note-editor .note-editable { + background: #fff; +} + +/*------------------------------------------------*/ +/* Top +/*------------------------------------------------*/ +.searchbox input[type="search"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + width: 230px; + padding: 3px 6px; + font-size: 0.85em; + -webkit-appearance: none; + border: none; + background-color: #ececec; +} +.searchbox .input-group-addon { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + padding: 3px 3px 0 10px; + background-color: #ececec; + border: none; +} + +.btn-nav-sidebar-minified, +.btn-off-canvas { + padding: 11px 15px; +} +.btn-nav-sidebar-minified i, +.btn-off-canvas i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + color: #a8a5a5; + cursor: pointer; + font-size: 24px; + line-height: 1; +} +.btn-nav-sidebar-minified i:hover, +.btn-off-canvas i:hover { + color: #696565; +} + +.btn-off-canvas { + display: none; +} + +/* off-canvas nav mode, start from: 1199px */ +@media screen and (max-width: 1199px) { + .btn-nav-sidebar-minified { + display: none; + } + + .btn-off-canvas { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + padding-left: 0; + } +} +.logo { + text-align: center; + padding: 12px 0; + margin-left: 10px; +} +.logo img { + width: 105px; +} + +.top-bar { + margin-left: -15px; + margin-right: -15px; + min-height: 47px; + padding: 0 15px; + background-color: white; + border-bottom: 1px solid #ccc; +} +.top-bar .top-bar-right { + text-align: right; + position: relative; + top: 6px; +} +@media screen and (max-width: 1199px) { + .top-bar { + margin-left: 0; + margin-right: 0; + } +} +.top-bar .searchbox { + top: 5px; + padding-left: 10px; +} +@media screen and (max-width: 768px) { + .top-bar .searchbox { + display: none; + } +} +.top-bar .action-group, +.top-bar .logged-user { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + text-align: left; + margin-left: 15px; + margin-right: 15px; +} +.top-bar .action-group .dropdown-menu i, +.top-bar .logged-user .dropdown-menu i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + width: 14px; + position: relative; + top: -2px; + font-size: 14px; +} +.top-bar .action-group .btn-group.open > a, +.top-bar .logged-user .btn-group.open > a { + color: #696565; +} +.top-bar .action-group .btn-group > a, +.top-bar .logged-user .btn-group > a { + color: #a8a5a5; +} +.top-bar .action-group .btn-group > a:hover, +.top-bar .logged-user .btn-group > a:hover { + color: #696565; + text-decoration: none; +} +.top-bar .action-group ul > li li, +.top-bar .logged-user ul > li { + border-top: 1px solid #e4e4e4; +} +.top-bar .action-group ul > li li:first-child, +.top-bar .logged-user ul > li:first-child { + border-top: none; +} +.top-bar .action-group ul > li li a, +.top-bar .logged-user ul > li a { + padding: 8px 10px; +} +.top-bar .action-group ul > li li a:hover, .top-bar .action-group ul > li li a:focus, +.top-bar .logged-user ul > li a:hover, +.top-bar .logged-user ul > li a:focus { + color: #fff; +} +.top-bar .action-group ul > li li a:hover i, .top-bar .action-group ul > li li a:hover .text, .top-bar .action-group ul > li li a:hover .timestamp, .top-bar .action-group ul > li li a:focus i, .top-bar .action-group ul > li li a:focus .text, .top-bar .action-group ul > li li a:focus .timestamp, +.top-bar .logged-user ul > li a:hover i, +.top-bar .logged-user ul > li a:hover .text, +.top-bar .logged-user ul > li a:hover .timestamp, +.top-bar .logged-user ul > li a:focus i, +.top-bar .logged-user ul > li a:focus .text, +.top-bar .logged-user ul > li a:focus .timestamp { + color: #fff; +} +.top-bar .dropdown-menu { + padding: 0; + width: 365px; + top: 38px; +} +.top-bar .dropdown-menu:before, .top-bar .dropdown-menu:after { + position: absolute; + content: " "; + height: 0; + width: 0; + bottom: 100%; + border: solid transparent; + pointer-events: none; +} +.top-bar .dropdown-menu:before { + border-color: transparent; + border-bottom-color: #838383; + border-width: 10px; + left: 50%; + top: -21px; +} +.top-bar .dropdown-menu:after { + border-color: transparent; + border-bottom-color: #FFF; + border-width: 10px; + left: 50%; +} +.top-bar .dropdown-menu ul { + padding: 0 10px; +} +.top-bar .dropdown-menu ul > li > a:hover { + background-color: #fafafa; +} +@media screen and (max-width: 992px) { + .top-bar .action-group { + display: none; + } +} +.top-bar .action-group .action-item { + position: relative; + margin: 0 15px; + top: 2px; +} +.top-bar .action-group .action-item:first-child { + margin-left: 0; +} +.top-bar .action-group .action-item > a { + color: #a8a5a5; +} +.top-bar .action-group .action-item > a:hover, .top-bar .action-group .action-item > a.active { + color: #696565; + text-decoration: none; +} +@media screen and (min-width: 1200px) { + .top-bar .action-group .action-item { + margin: 0 36px; + } +} +@media screen and (min-width: 992px) { + .top-bar .action-group .action-item { + margin: 0 15px; + } +} +.top-bar .action-group .btn-group.open .dropdown-toggle { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.top-bar .action-group i { + font-size: 32px; + width: 26px; + line-height: 1; +} +.top-bar .action-group > ul { + list-style-type: none; +} +.top-bar .action-group > ul, .top-bar .action-group > ul li { + margin: 0px; + padding: 0px; + display: inline; +} +.top-bar .action-group > ul > li li { + display: block; + padding: 0; +} +.top-bar .action-group > ul > li li:first-child { + border-top: none; +} +.top-bar .action-group .count { + position: absolute; + left: 58%; + padding: 0px 5px; + border-radius: 30px; + line-height: 16px; + text-align: center; + font-size: 10px; + border-width: 2px; + border-style: solid; + color: #fff; + background: #ef2020; + border-color: white; +} +.top-bar .action-group .dropdown-menu .menu-item-header { + font-size: 0.85em; + font-weight: 700; + line-height: 2; + padding: 5px 8px; +} +.top-bar .action-group .dropdown-menu .menu-item-footer a { + text-align: center; + color: #696565; +} +.top-bar .action-group .dropdown-menu .menu-item-footer a:hover, .top-bar .action-group .dropdown-menu .menu-item-footer a:focus { + background: none; + text-decoration: underline; + color: #333; +} +.top-bar .action-group .dropdown-menu .timestamp { + font-size: 0.85em; + line-height: 1.8; +} +.top-bar .action-group .skins .dropdown-menu { + width: 174px; + padding: 8px; +} +.top-bar .action-group .skins .dropdown-menu li { + border-top: none; +} +@media screen and (min-width: 992px) { + .top-bar .action-group .skins .dropdown-menu { + left: -85px; + } +} +@media screen and (min-width: 992px) { + .top-bar .action-group .inbox .dropdown-menu { + left: -180px; + } +} +.top-bar .action-group .inbox .inbox-item { + display: block; +} +.top-bar .action-group .inbox .inbox-item.unread { + background-color: #ebebeb; +} +.top-bar .action-group .inbox img { + width: 32px; +} +.top-bar .action-group .inbox .name { + font-family: "Open Sans"; + font-size: 1em; + font-weight: 700; + margin-bottom: 0; +} +.top-bar .action-group .inbox .text { + font-size: 0.9em; + margin-bottom: 0; +} +.top-bar .action-group .general .dropdown-menu li a .timestamp { + position: absolute; + right: 10px; +} +@media screen and (min-width: 992px) { + .top-bar .action-group .general .dropdown-menu { + left: -180px; + } +} +@media screen and (max-width: 1200px) { + .top-bar .action-group .chat { + display: none; + } +} +.top-bar .logged-user { + position: relative; + top: 1px; +} +.top-bar .logged-user .btn { + padding: 0; + border: none; + text-decoration: none; + color: #a8a5a5; +} +.top-bar .logged-user .btn i { + position: relative; + top: 2px; +} +.top-bar .logged-user .btn:hover { + text-decoration: none; +} +.top-bar .logged-user .btn img { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + width: 32px; + border: 2px solid #a8a5a5; + margin-right: 3px; +} +.top-bar .logged-user .dropdown-menu { + width: auto; + left: -20px; + padding: 0; +} + +/* skin switcher buttons */ +.btn-skin { + margin-bottom: 10px; + border: none; + padding: 8px; + font-size: 1.2em; +} +.btn-skin:before { + content: ' '; + display: block; + width: 10px; + height: 10px; + color: #fff; +} +.btn-skin:hover { + position: relative; + top: -2px; +} +.btn-skin.nav-dark { + background-color: #232323; + border: 1px solid #232323; +} +.btn-skin.nav-light { + background-color: #fff; + border: 1px solid #ccc; +} +.btn-skin.full-dark:before { + background-color: #1d1d1d; +} +.btn-skin.full-white:before { + background-color: #fff; +} +.btn-skin.green:before { + background-color: #94c632; +} +.btn-skin.blue:before { + background-color: #1D92AF; +} +.btn-skin.darkorange:before { + background-color: #ff9800; +} +.btn-skin.seagreen:before { + background-color: #3f7577; +} + +/*------------------------------------------------*/ +/* Main Navigation +/*------------------------------------------------*/ +.main-nav { + position: absolute; + top: 0; + left: 0; + margin-bottom: 70px; + z-index: 1; +} +.main-nav h3 { + font-family: "josefinslab-semibold"; + margin: 30px 10px 15px; + padding-bottom: 10px; + font-size: 1.3em; + color: #6a6a6a; + border-bottom: 1px solid #3d3d3d; +} +@media screen and (min-width: 1200px) { + .main-nav { + width: 100%; + } +} + +.main-nav, +.left-content-bg { + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + transition-property: transform; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + -o-transition-timing-function: linear; + transition-timing-function: linear; + -webkit-transform: translate3d(-193px, 0, 0); + -moz-transform: translate3d(-193px, 0, 0); + -ms-transform: translate3d(-193px, 0, 0); + -o-transform: translate3d(-193px, 0, 0); + transform: translate3d(-193px, 0, 0); + /* for browser didn't support translate3d */ + -ms-transform: translate(-193px, 0); + -o-transform: translate(-193px, 0); + background-color: #232323; + /* normal nav mode, start from width: 1200px */ + /* off-canvas nav mode, start from width: 1199px */ +} +@media screen and (min-width: 1200px) { + .main-nav, + .left-content-bg { + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + /* for browser didn't support translate3d */ + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + } +} +@media screen and (max-width: 1199px) { + .main-nav, + .left-content-bg { + width: 193px !important; + /* override slimscroll styles */ + margin-top: 32px; + overflow: visible !important; + /* override slimscroll styles */ + } +} + +.off-canvas-active .main-nav, +.off-canvas-active .left-content-bg { + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + transition-property: transform; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + /* for browser didn't support translate3d */ + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); +} + +.left-content-bg { + display: block; + height: 100%; + position: fixed; + top: 0; + z-index: -1; +} + +ul.main-menu { + padding-left: 0; + list-style-type: none; + margin-bottom: 0; +} +ul.main-menu li a { + display: block; + position: relative; + padding: 12px 0 12px 15px; + font-size: 13px; + color: #8d8d8d; +} +ul.main-menu li a:hover, ul.main-menu li a:focus { + text-decoration: none; + color: #fff; + background-color: #2e2e2e; +} +ul.main-menu li.active > a { + color: #fff; + background-color: #0f0f0f; +} +ul.main-menu li.active > a.submenu-toggle { + background-color: transparent; +} +ul.main-menu li i { + position: absolute; + top: 8px; + font-size: 18px; +} +ul.main-menu li .text { + padding-left: 25px; +} +ul.main-menu li.has-submenu > a:after { + font-family: ionicons; + font-size: 14px; + width: 10px; + position: absolute; + right: 10px; + top: 13px; + text-shadow: none; + content: '\f153'; +} +ul.main-menu li.has-submenu.active > a:after { + content: '\f151'; +} +ul.main-menu .sub-menu { + position: relative; + padding-left: 0; +} +ul.main-menu .sub-menu li a { + background-color: #131313; +} +ul.main-menu .sub-menu li a:hover, ul.main-menu .sub-menu li a:focus { + background-color: #2e2e2e; +} +ul.main-menu .sub-menu li a .badge { + position: absolute; + right: 7px; + background-color: #202020; +} +ul.main-menu .sub-menu li.active a { + background-color: #0f0f0f; +} + +.main-nav-minified { + /* content adjustment when navigation is minified*/ +} +.main-nav-minified .col-left, +.main-nav-minified .left-content-bg { + width: 3em; +} +.main-nav-minified .col-left { + padding: 47px 0; + z-index: 9; +} +.main-nav-minified .left-content-bg { + z-index: 0; +} +.main-nav-minified .col-right { + width: 100%; + padding-left: 4.1em; + margin-left: -3em; +} +.main-nav-minified .left-content { + z-index: 9; + margin-left: 0; +} +.main-nav-minified .left-content .main-nav h3 { + text-indent: -9999px; + margin: 0; + padding: 0; + height: 0; + border-bottom: none; +} +.main-nav-minified .left-content .main-menu > li { + position: relative; + cursor: pointer; +} +.main-nav-minified .left-content .main-menu > li i { + width: 16px; + text-align: center; +} +.main-nav-minified .left-content .main-menu > li .toggle-icon { + display: none; +} +.main-nav-minified .left-content .main-menu > li > a { + padding-left: 12px; +} +.main-nav-minified .left-content .main-menu > li > a > .text { + font-size: 0; +} +.main-nav-minified .left-content .main-menu > li:hover > ul.sub-menu { + display: block !important; + min-width: 200px; + position: absolute; + top: 0; + margin-left: 39px; + z-index: 9999; +} +.main-nav-minified .left-content .main-menu > li:hover > ul.sub-menu > li > a { + padding-left: 10px; +} +.main-nav-minified .left-content .main-menu > li.has-submenu > a:after { + content: ''; +} +.main-nav-minified .left-content .main-menu > li.has-submenu.active .sub-menu { + display: none; +} +.main-nav-minified .left-content .main-menu .sub-menu li .text { + padding-left: 0; +} +.main-nav-minified .left-content .main-nav { + top: 47px; + overflow: visible !important; +} +.main-nav-minified .left-content ul li:hover > a { + background-color: #1e1e1e; +} +.main-nav-minified .left-content .widget { + display: none; +} + +/*------------------------------------------------*/ +/* Main Content +/*------------------------------------------------*/ +/* right content transition due to off-canvas navigation, see Main Navigation */ +.right-content { + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + transition-property: transform; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + -o-transition-duration: 0.2s; + transition-duration: 0.2s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + -o-transition-timing-function: linear; + transition-timing-function: linear; +} + +.off-canvas-active .right-content { + -webkit-transform: translate(193px, 0); + -moz-transform: translate(193px, 0); + -ms-transform: translate(193px, 0); + -o-transform: translate(193px, 0); + transform: translate(193px, 0); +} + +.primary-content { + padding: 30px 0; +} + +.sidebar-wrapper { + padding-left: 0; + padding-right: 0; +} + +.right-sidebar { + -webkit-transition-property: right; + -moz-transition-property: right; + -o-transition-property: right; + transition-property: right; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + -o-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: ease-in-out; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + width: 200px; + position: fixed; + right: -210px; + top: 47px; + z-index: 99; + height: 100%; + background-color: #232323; +} +@media screen and (max-width: 1200px) { + .right-sidebar { + display: none; + } +} +.right-sidebar .widget-chat-contacts { + background: transparent; + border: none; +} +.right-sidebar .widget-chat-contacts .widget-header { + background-color: #232323; + border-bottom: none; + padding: 4px 10px 10px 10px; +} +.right-sidebar .widget-chat-contacts .widget-header .btn-group { + float: none; + margin-left: 0; +} +.right-sidebar.active { + right: 0; +} + +.main-content.sidebar-minified .primary-content-wrapper { + width: 100%; +} +.main-content.sidebar-minified .sidebar-wrapper { + display: none; +} + +.heading { + margin-bottom: 30px; +} +.heading h2 { + font-family: "josefinslab-semibold"; + margin-bottom: 0; +} +@media screen and (max-width: 480px) { + .heading h2 { + font-size: 24px; + } +} + +.breadcrumb { + background-color: inherit; + padding: 0; + margin-bottom: 0; +} +.breadcrumb > li { + line-height: 2.6; +} +.breadcrumb a { + color: #696565; +} +.breadcrumb .icon { + font-size: 1.2em; + margin-right: 5px; +} +.breadcrumb .active { + font-weight: 300; +} + +@media screen and (max-width: 768px) { + .sticky-content { + display: none; + } +} + +ul.widget-inbox-list li { + position: relative; + padding-left: 15px; + padding-bottom: 15px; + margin-bottom: 15px; + border-bottom: 1px dashed #ccc; +} +ul.widget-inbox-list li:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} +ul.widget-inbox-list li:before { + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + content: ' '; + position: absolute; + top: 7px; + left: 0; + width: 8px; + height: 8px; + border: 2px solid #ccc; +} +ul.widget-inbox-list li.unread:before { + background: #696565; + border-color: #696565; +} +ul.widget-inbox-list .title { + font-size: 0.9em; + margin: 0; +} +ul.widget-inbox-list .brief { + font-style: italic; + font-size: 0.9em; +} +ul.widget-inbox-list .timestamp { + font-size: 0.85em; +} + +/* widgets */ +.widget { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -ms-border-radius: 3px; + -o-border-radius: 3px; + border-radius: 3px; + border-width: 1px; + border-style: solid; + margin-bottom: 20px; + background-color: white; + border-color: #d0d0d0; +} +.widget .widget-header h3, .widget.widget-no-header h3 { + margin-top: 0; + font-size: 14px; + color: #6a6a6a; +} +.widget .widget-header { + padding: 0 10px; + border-bottom: 1px solid white; + background-color: #e9e9e9; +} +.widget .widget-header h3 { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin-bottom: 0; + line-height: 40px; + float: left; +} +@media screen and (max-width: 480px) { + .widget .widget-header h3 { + display: block; + float: none; + } +} +.widget .widget-header h3 i { + width: 18px; + padding: 10px 0; + font-size: 16px; + color: #6A6A6A; +} +.widget .widget-header .btn-group > a, +.widget .widget-header .btn-group .dropdown-toggle .icon { + color: #838383; +} +.widget .widget-header .btn-group > a:hover, .widget .widget-header .btn-group > a:focus, +.widget .widget-header .btn-group .dropdown-toggle .icon:hover, +.widget .widget-header .btn-group .dropdown-toggle .icon:focus { + color: #505050; +} +.widget .widget-header .widget-header-toolbar { + float: right; + width: auto; + margin-left: 15px; +} +@media screen and (max-width: 480px) { + .widget .widget-header .widget-header-toolbar { + display: block; + position: initial; + } +} +.widget .widget-header .widget-header-toolbar.btn-group { + top: 5px; +} +@media screen and (max-width: 480px) { + .widget .widget-header .widget-header-toolbar.btn-group > .btn { + top: -5px; + } +} +.widget .widget-header .widget-header-toolbar .label { + position: relative; + top: 11px; + padding: 5px; + font-size: 85%; +} +@media screen and (max-width: 480px) { + .widget .widget-header .widget-header-toolbar .label { + top: 0; + } +} +.widget .widget-header .widget-header-toolbar .label i { + font-size: 14px; +} +.widget .widget-header .widget-header-toolbar .btn-xs { + top: 5px; +} +.widget .widget-header .widget-header-toolbar .btn-link { + padding: 0 0 0 15px; +} +.widget .widget-header .widget-header-toolbar .btn-link i { + font-size: 28px; + line-height: 1; +} +.widget .widget-header .widget-header-toolbar .btn-link:first-child { + padding-left: 0; +} +.widget .widget-header .widget-header-toolbar .progress { + width: 150px; + position: relative; + top: 19px; +} +@media screen and (max-width: 480px) { + .widget .widget-header .widget-header-toolbar .progress { + top: 0; + } +} +.widget .widget-header .widget-header-toolbar .progress .progress-bar { + font-size: 10px; + line-height: 1.5; +} +.widget .widget-header .nav-tabs { + border-bottom: none; +} +.widget .widget-header .nav-tabs > li > a { + height: 41px; +} +.widget .widget-header .nav-tabs > li > a, .widget .widget-header .nav-tabs > li > a:hover, .widget .widget-header .nav-tabs > li > a:focus { + border-top: none; + border-bottom: none; +} +.widget .widget-content { + padding: 20px; +} +.widget .widget-content.no-padding { + padding: 0; +} +.widget .widget-footer { + padding: 7px 10px; + background-color: #e9e9e9; +} +.widget .widget-footer .progress { + margin-bottom: 0; +} + +.widget-header-toolbar .pagination-sm { + margin-bottom: 0; + margin-top: 5px; +} +.widget-header-toolbar .onoffswitch > label:first-child { + margin-bottom: 0; + top: 3px; +} +.widget-header-toolbar .fancy-checkbox { + margin-bottom: 0; + position: relative; + top: 4px; +} +.widget-header-toolbar .fancy-checkbox input[type="checkbox"] + span { + margin-right: 0; +} +.widget-header-toolbar .badge { + margin-top: 10px; +} +@media screen and (max-width: 480px) { + .widget-header-toolbar .badge { + margin-top: 0; + } +} + +/* portlets */ +.portlet { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + padding: 20px; + margin-bottom: 20px; + position: relative; + color: #fff; +} +.portlet a { + color: #fff; + text-decoration: underline; +} +.portlet a:hover, .portlet a:focus { + text-decoration: none; +} +.portlet .dropdown-menu > li > a { + text-decoration: none; +} +.portlet h3 { + margin: 0 0 30px 0; + font-family: "josefinslab-semibold"; + font-size: 27px; + border-bottom: 1px solid #fff; +} +.portlet .portlet-bg-icon { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=10); + opacity: 0.1; + font-size: 14em; + position: absolute; + top: 50%; + right: 20px; + bottom: 0; + margin-top: -70px; + line-height: 1; +} +.portlet.portlet-blue { + background-color: #1d92af; +} +.portlet.portlet-seagreen { + background-color: #3f7577; +} +.portlet.portlet-green { + background-color: #859419; +} +.portlet.portlet-orange { + background-color: #ce7b11; +} + +.portlet-today i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + min-width: 30px; + font-size: 27px; + position: relative; + top: -4px; + line-height: 1; +} + +.portlet-reminder .reminder-time { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + font-size: 3em; + font-weight: 300; + line-height: 1; +} +.portlet-reminder > .reminder-buttons { + position: relative; + top: -5px; + left: 10px; +} +.portlet-reminder .reminder-place { + font-size: 1.5em; +} + +/* left content widget */ +.left-content .widget { + background: transparent; + border: none; +} +@media screen and (max-width: 1199px) { + .left-content .widget { + display: none; + } +} +.left-content .widget .widget-header { + background-color: #161616; + border-top: 1px solid #3d3d3d; + border-bottom: 1px solid #3d3d3d; + padding: 0 10px 0 15px; +} +.left-content .widget .widget-header h3 { + color: #fff; +} +.left-content .widget .widget-content { + padding: 15px; +} +.left-content .widget .widget-footer { + background-color: #1e1e1e; +} + +/* chat status dropdown */ +ul.chat-status > li > a.online { + color: #7bae16; +} +ul.chat-status > li > a.away { + color: #ff9800; +} +ul.chat-status > li > a.busy { + color: #ef2020; +} +ul.chat-status > li > a.offline { + color: #919191; +} +ul.chat-status > li > a:hover, ul.chat-status > li > a:focus { + color: #fff; +} + +/* chat online/offline contacts */ +ul.chat-contacts > li { + padding: 5px; + font-size: 0.9em; +} +ul.chat-contacts > li:hover { + cursor: pointer; +} +ul.chat-contacts > li:hover img { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); + opacity: 1; +} +ul.chat-contacts > li img { + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); + opacity: 0.8; + width: 30px; + margin-right: 10px; + border: 2px solid #7bae16; +} +ul.chat-contacts > li.away img { + border-color: #ff9800; +} +ul.chat-contacts > li.busy img { + border-color: #ef2020; +} +ul.chat-contacts > li a, ul.chat-contacts > li a:hover, ul.chat-contacts > li a:focus { + color: #fff; +} +ul.chat-contacts.contacts-offline > li img { + border-color: #494949; +} +ul.chat-contacts.contacts-offline > li a, ul.chat-contacts.contacts-offline > li a:hover, ul.chat-contacts.contacts-offline > li a:focus { + color: #494949; +} + +/* status bar list */ +.status-bar-list > li { + padding: 15px 0; +} +.status-bar-list .progress { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + margin-bottom: 0; +} +.status-bar-list .progress.progress-xs { + height: 3px; +} +.status-bar-list .progress.progress-success { + background-color: rgba(123, 174, 22, 0.1); +} +.status-bar-list .progress.progress-info { + background-color: rgba(89, 183, 222, 0.1); +} +.status-bar-list .progress.progress-warning { + background-color: rgba(255, 152, 0, 0.1); +} +.status-bar-list .progress.progress-danger { + background-color: rgba(239, 32, 32, 0.1); +} +.status-bar-list .progress .progress-bar { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; +} +.status-bar-list p { + margin-bottom: 0; + font-size: 0.85em; +} + +/* real-time pie chart */ +.left-content .pie-chart .percent, +.left-content .status-chart .chart-title { + color: #696565; +} +.left-content .status-chart { + margin: 0; +} + +/*------------------------------------------------*/ +/* Profile Page +/*------------------------------------------------*/ +.user-profile { + padding-bottom: 30px; +} + +.profile-header-background { + margin-left: -15px; + margin-right: -15px; +} +.profile-header-background img { + width: 100%; + height: 310px; +} + +.profile-info-left { + position: relative; + top: -92px; +} +.profile-info-left img.avatar { + border: 2px solid #fff; +} +.profile-info-left h2 { + font-family: "josefinslab-semibold"; + margin-bottom: 30px; +} +.profile-info-left .section { + margin-top: 50px; +} +.profile-info-left .section h3 { + font-size: 1.1em; + font-weight: 700; + border-bottom: 1px solid #ccc; + padding-bottom: 10px; +} +.profile-info-left ul.list-social > li { + line-height: 2.3; +} +.profile-info-left ul.list-social > li i { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + top: 1px; + font-size: 16px; + min-width: 16px; + line-height: 1; +} +.profile-info-left ul.list-social > li a { + color: #696565; +} + +.profile-info-right .tab-content { + padding: 30px 0; + background-color: transparent; +} +@media screen and (max-width: 768px) { + .profile-info-right { + position: relative; + top: -70px; + } +} + +.activity-item { + overflow: visible; + position: relative; + padding: 20px 0; + margin-top: 0; + border-top: 1px dashed #ccc; +} +.activity-item:first-child { + padding-top: 0; + border-top: none; +} +.activity-item .avatar { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + width: 32px; +} +.activity-item .media-body { + position: relative; + overflow: visible; +} +.activity-item .activity-title { + margin-bottom: 0; + line-height: 1; +} +.activity-item .activity-attachment { + padding-top: 20px; +} +.activity-item .well { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border: none; + border-left: 2px solid #cfcfcf; + background: #fff; + margin-left: 20px; + font-size: 0.85em; +} +.activity-item .thumbnail { + display: inline; + border: none; + padding: 0; +} +.activity-item .thumbnail img { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + width: auto; + margin: 0; +} +.activity-item .activity-actions { + position: absolute; + top: 0; + right: 0; +} +.activity-item .activity-actions .btn i { + margin: 0; +} +.activity-item .activity-actions .dropdown-menu > li > a { + font-size: 0.9em; + padding: 3px 10px; +} + +.user-follower, +.user-following { + position: relative; + margin-bottom: 40px; +} +.user-follower img, +.user-following img { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + width: 40px; +} +.user-follower a, +.user-following a { + font-size: 1.1em; + line-height: 1; +} +.user-follower .username, +.user-following .username { + font-size: 0.9em; + line-height: 1.5; +} +.user-follower .btn, +.user-following .btn { + position: absolute; + top: 0; + right: 0; + min-width: 92px; +} + +.btn-toggle-following { + background-color: #7bae16; + color: #fff; +} +.btn-toggle-following:hover { + background-color: #ef2020; + color: #fff; +} +.btn-toggle-following:hover span { + display: none; +} +.btn-toggle-following:hover:after { + content: 'Unfollow'; + display: inline; +} +.btn-toggle-following:hover i:before { + content: '\f129'; +} + +/*------------------------------------------------*/ +/* Page: Invoice +/*------------------------------------------------*/ +.invoice-header { + border-bottom: 1px solid #ccc; + margin-bottom: 50px; +} +.invoice-header .logo { + width: 150px; +} +.invoice-header ul { + position: relative; + top: 12px; + margin-top: 0; + text-align: right; +} +.invoice-header ul li { + padding: 0 15px; +} +.invoice-header ul li:not(:first-child) { + border-left: 1px solid #ccc; +} +@media screen and (max-width: 768px) { + .invoice-header ul li:not(:first-child) { + border-left: none; + } +} +@media screen and (max-width: 992px) { + .invoice-header ul { + top: 0; + text-align: left; + } +} + +.invoice-from-to { + margin-bottom: 50px; +} +.invoice-from-to .name { + margin-top: 15px; + font-size: 1.5em; + font-weight: 700; +} +.invoice-from-to address .contact { + margin-top: 10px; +} +.invoice-from-to address .contact p { + margin-bottom: 0; +} +.invoice-from-to address .contact p span { + font-weight: 700; +} + +.invoice-table tbody tr td:last-child { + text-align: right; +} + +.invoice-notes strong { + display: block; +} +.invoice-notes p { + font-size: 0.75em; +} + +.invoice-footer .right-col { + position: absolute; + right: 15px; +} +@media screen and (max-width: 768px) { + .invoice-footer .right-col { + position: relative; + right: 0; + } +} +@media screen and (max-width: 768px) { + .invoice-footer .right-col, + .invoice-footer .left-col { + width: 100%; + float: none; + margin-left: 0; + } +} + +.invoice-total { + padding-right: 10px; +} +@media screen and (max-width: 768px) { + .invoice-total { + padding-right: 25px; + } +} +.invoice-total .row > div { + padding: 0; +} +.invoice-total .row > div:first-child p { + padding-left: 10px; +} +.invoice-total p:last-child { + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; + font-weight: 700; + font-size: 1.3em; + padding-top: 10px; + padding-bottom: 10px; +} + +.invoice-buttons { + text-align: right; + margin-top: 50px; +} + +/* printed invoice styles */ +@media print { + .top-bar, + .left-content, + .primary-content .heading, + .main-header, + .footer, + .invoice-buttons, + .right-sidebar, + .del-style-switcher { + display: none !important; + } + + .table-responsive { + overflow-x: auto; + } + + .col-print-1, + .col-print-2, + .col-print-3, + .col-print-4, + .col-print-5, + .col-print-6, + .col-print-7, + .col-print-8, + .col-print-9, + .col-print-10, + .col-print-11 { + float: left; + } + + .col-print-1 { + width: 8.33333%; + } + + .col-print-2 { + width: 16.66667%; + } + + .col-print-3 { + width: 25%; + } + + .col-print-4 { + width: 33.33333%; + } + + .col-print-5 { + width: 41.66667%; + } + + .col-print-6 { + width: 50%; + } + + .col-print-7 { + width: 58.33333%; + } + + .col-print-8 { + width: 66.66667%; + } + + .col-print-9 { + width: 75%; + } + + .col-print-10 { + width: 83.33333%; + } + + .col-print-11 { + width: 91.66667%; + } + + .col-print-12 { + width: 100%; + } + + .col-print-offset-0 { + margin-left: 0; + } + + .col-print-offset-1 { + margin-left: 8.33333%; + } + + .col-print-offset-2 { + margin-left: 16.66667%; + } + + .col-print-offset-3 { + margin-left: 25%; + } + + .col-print-offset-4 { + margin-left: 33.33333%; + } + + .col-print-offset-5 { + margin-left: 41.66667%; + } + + .col-print-offset-6 { + margin-left: 50%; + } + + .col-print-offset-7 { + margin-left: 58.33333%; + } + + .col-print-offset-8 { + margin-left: 66.66667%; + } + + .col-print-offset-9 { + margin-left: 75%; + } + + .col-print-offset-10 { + margin-left: 83.33333%; + } + + .col-print-offset-11 { + margin-left: 91.66667%; + } + + .bottom .container .content-wrapper { + border-left: none !important; + } + + .invoice-header img { + width: auto; + } + .invoice-header ul li { + font-size: 8pt; + } + + .invoice-from-to .name { + font-size: 12pt; + } + .invoice-from-to .row > div { + float: left; + } + + .invoice-notes { + border-top: none; + border-right: none; + border-bottom: none; + } +} +/*------------------------------------------------*/ +/* Page: Knowledge Base +/*------------------------------------------------*/ +.form-knowledge-search { + margin-bottom: 50px; +} +@media screen and (max-width: 480px) { + .form-knowledge-search input[type="search"] { + font-size: 0.9em; + } +} + +.knowledge h3 { + border-bottom: 1px solid #ccc; + line-height: 28px; + font-size: 1.2em; +} +.knowledge h3 span { + font-weight: normal; +} +.knowledge h3 a { + text-decoration: none; +} +.knowledge ul li { + line-height: 30px; +} +.knowledge ul li a { + color: #696565; + display: block; + padding-left: 20px; +} +.knowledge ul li a:hover { + text-decoration: underline; +} +.knowledge ul li i { + font-size: 18px; + line-height: 29px; +} + +.knowledge-recent-popular { + margin-top: 50px; +} +.knowledge-recent-popular ol { + padding-left: 20px; +} +.knowledge-recent-popular ol li { + line-height: 30px; +} + +ul.nav-categories { + margin-bottom: 30px; +} +ul.nav-categories > li { + border: 1px solid #ccc; +} +ul.nav-categories > li:first-child { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; +} +ul.nav-categories > li:last-child { + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + -moz-border-radius-bottomright: 2px; + -webkit-border-bottom-right-radius: 2px; + border-bottom-right-radius: 2px; +} +ul.nav-categories > li:not(:first-child) { + border-top: none; +} +ul.nav-categories > li + li { + margin-top: 0; +} +ul.nav-categories > li > a { + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + color: #696565; +} +ul.nav-categories > li > a:hover { + background-color: #e6e6e6; +} + +.ticket-box { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; + border: 1px solid #ccc; + padding: 15px; +} + +/*------------------------------------------------*/ +/* Page: 404 +/*------------------------------------------------*/ +.page-404, +.page-505 { + background: #C96046; +} +.page-404 .container, +.page-505 .container { + margin-top: -16em; +} +@media screen and (max-width: 480px) { + .page-404 .container, + .page-505 .container { + position: relative; + margin: 15px auto; + } + .page-404.middle-content .container, + .page-505.middle-content .container { + top: 0; + } +} +.page-404 h1, +.page-505 h1 { + font-family: "josefinslab-semibold"; + font-size: 12em; + line-height: 1; +} +.page-404 h1, .page-404 h2, +.page-505 h1, +.page-505 h2 { + margin: 0; +} +.page-404 h1, .page-404 h2, .page-404 .error-description, +.page-505 h1, +.page-505 h2, +.page-505 .error-description { + color: #8b3c28; +} +.page-404 hr, +.page-505 hr { + border-color: #a2462f; + border-width: 4px; + margin-bottom: 0; +} +.page-404 .error-description, +.page-505 .error-description { + border-top: 2px solid #d27b66; + padding-top: 20px; + font-size: 1.3em; +} + +.page-404 input, .page-404 input:focus { + border-color: #b24d34; + background-color: #d5826d; + color: #8b3c28; +} +.page-404 .input-group { + margin: 0 auto; +} +@media screen and (min-width: 768px) { + .page-404 .input-group { + width: 50%; + } +} +.page-404 .btn { + font-weight: 700; + border-color: #b24d34; + color: #8b3c28; + background-color: #cf715a; +} +.page-404 .btn:hover, .page-404 .btn:focus, .page-404 .btn:active { + background-color: #C96046; + color: #8b3c28; +} + +/*------------------------------------------------*/ +/* Page: Login +/*------------------------------------------------*/ +.register-box, +.page-login-social .login-box, +.page-login-social .btn-login-social { + width: 30%; + margin: 0 auto; +} +@media screen and (max-width: 1200px) { + .register-box, + .page-login-social .login-box, + .page-login-social .btn-login-social { + width: 60%; + } +} +@media screen and (max-width: 992px) { + .register-box, + .page-login-social .login-box, + .page-login-social .btn-login-social { + width: 80%; + } +} +@media screen and (max-width: 768px) { + .register-box, + .page-login-social .login-box, + .page-login-social .btn-login-social { + width: 100%; + } +} + +.page-login .top-bar { + margin: 0; + padding: 10px 0; +} +.page-login .top-bar img { + width: 140px; +} +.page-login .container-fluid { + margin-top: 14em; + text-align: left; +} +@media screen and (max-width: 480px) { + .page-login .container-fluid { + margin-top: 6em; + } +} + +.page-login-social .container-fluid { + margin-top: 9em; +} +.page-login-social .container-fluid h1 { + text-align: center; +} +.page-login-social .login-box { + margin-top: 1em; +} +.page-login-social .login-separator { + font-size: 1.2em; + margin: 50px 0; +} +.page-login-social .login-separator span { + border-bottom: 1px solid #ccc; +} + +.btn-login-social { + color: #fff; + position: relative; + width: 100%; + height: 40px; + padding-left: 40px; + margin-bottom: 15px !important; +} +.btn-login-social:before { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + font-family: Ionicons; + font-size: 20px; + display: block; + position: absolute; + top: -1px; + left: -1px; + padding: 7px 0; + width: 40px; + height: 40px; +} +.btn-login-social.btn-login-facebook { + background-color: #3B5998; +} +.btn-login-social.btn-login-facebook:hover, .btn-login-social.btn-login-facebook:focus { + color: #fff; + background-color: #37538d; +} +.btn-login-social.btn-login-facebook:before { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + content: "\f231"; + background-color: #2d4373; +} +.btn-login-social.btn-login-twitter { + background-color: #00C7F7; +} +.btn-login-social.btn-login-twitter:hover, .btn-login-social.btn-login-twitter:focus { + color: #fff; + background-color: #00bbe8; +} +.btn-login-social.btn-login-twitter:before { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + content: "\f243"; + background-color: #009ec4; +} +.btn-login-social.btn-login-googleplus { + background-color: #CA3522; +} +.btn-login-social.btn-login-googleplus:hover, .btn-login-social.btn-login-googleplus:focus { + color: #fff; + background-color: #bd3220; +} +.btn-login-social.btn-login-googleplus:before { + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + -webkit-border-bottom-left-radius: 2px; + border-bottom-left-radius: 2px; + content: "\f235"; + background-color: #9e2a1b; +} + +.login-box { + padding: 30px; + background-color: #fff; +} +.login-box h1 { + font-size: 1.5em; + margin-top: 0; + margin-bottom: 30px; +} +.login-box .text-right { + padding-top: 5px; +} +@media screen and (max-width: 480px) { + .login-box .text-right { + font-size: 10px; + } +} +.login-box a { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + color: #696565; + border-bottom: 1px dashed #ccc; +} +.login-box a:hover, .login-box a:focus { + border-bottom-color: transparent; +} + +.login-copytext { + padding-left: 30px; +} +@media screen and (max-width: 768px) { + .login-copytext { + padding: 30px 0; + } +} +.login-copytext h2 { + font-size: 1.5em; + margin-top: 0; +} +.login-copytext p { + margin-bottom: 30px; + font-size: 1.2em; + line-height: 1.6; + color: #837e7e; + font-weight: 300; +} + +/*------------------------------------------------*/ +/* Page: Register +/*------------------------------------------------*/ +.register-box { + padding: 30px; + margin-top: 15em; + background-color: #fff; +} +.register-box h1 { + font-size: 1.5em; + margin-top: 0; + margin-bottom: 30px; + text-align: center; +} +.register-box a { + color: #696565; + border-bottom: 1px dashed #ccc; +} +.register-box a:hover, .register-box a:focus { + border-bottom-color: transparent; +} +.register-box .fancy-checkbox input[type="checkbox"] + span { + font-size: 11px; +} + +/*------------------------------------------------*/ +/* Page: Inbox +/*------------------------------------------------*/ +.inbox .inbox-searchbox { + margin-bottom: 10px; + width: 45em; + padding-left: 17px; +} +@media screen and (max-width: 1200px) { + .inbox .inbox-searchbox { + width: auto; + padding-left: initial; + } +} +.inbox .top .row > div:first-child { + padding-right: 0; +} +@media screen and (max-width: 1200px) { + .inbox .top .row > div:first-child { + padding-right: 15px; + } +} +.inbox .top-menu { + padding-left: 21px; + border-left: 1px solid #ccc; +} +@media screen and (max-width: 1199px) { + .inbox .top-menu { + padding-left: 0; + border-left: none; + margin-top: 10px; + } + .inbox .top-menu .list-inline { + margin-left: 0; + margin-bottom: 5px; + } +} +.inbox .top-menu .top-menu-label { + margin-right: 5px; +} +.inbox .top-menu > ul, +.inbox .top-menu .select-checkbox-all { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin-right: 15px; +} +.inbox .top-menu > ul { + margin-right: 10px; +} +.inbox .top-menu > ul > li { + padding-left: 0; + padding-right: 0; +} +.inbox .top-menu .btn { + font-size: 0.9em; +} +.inbox .top-menu .btn:hover { + color: #3e3e3e; +} +.inbox .top-menu .btn:active, .inbox .top-menu .btn.active, .inbox .top-menu .btn:focus, .inbox .top-menu .btn.focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: none; +} +.inbox .top-menu .btn i { + font-size: 14px; +} +.inbox .top-menu .btn-group.open .dropdown-toggle { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.inbox .top-menu .navigation { + position: absolute; + top: -6px; + right: 0; +} +@media screen and (max-width: 768px) { + .inbox .top-menu .navigation { + margin-left: -13px; + margin-right: -13px; + } +} +.inbox .top-menu .navigation .inbox-nav-toggle { + position: relative; + top: 5px; + float: left; +} +.inbox .top-menu .navigation .inbox-nav-toggle i { + font-size: 24px; + color: #a8a5a5; + cursor: pointer; +} +.inbox .top-menu .navigation .inbox-nav-toggle i:hover { + color: #696565; +} +@media screen and (max-width: 768px) { + .inbox .top-menu .navigation { + display: block; + position: initial; + } + .inbox .top-menu .navigation .pager-wrapper { + float: right; + } +} +.inbox .top-menu .navigation .info { + position: relative; + top: 4px; + right: 15px; + font-size: 0.9em; +} +.inbox .top-menu .navigation ul.inbox-pager { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin: 0; + position: relative; + right: 8px; +} +@media screen and (max-width: 768px) { + .inbox .top-menu .navigation ul.inbox-pager { + position: initial; + } +} +.inbox .top-menu .navigation ul.inbox-pager li { + font-size: 24px; +} +.inbox .top-menu .navigation ul.inbox-pager li a { + color: #717171; + padding: 5px 7px; +} +.inbox .top-menu .navigation ul.inbox-pager li a:hover { + color: #3e3e3e; +} +.inbox .bottom { + border-top: 1px solid #ccc; +} +.inbox .bottom .row > .inbox-left-menu { + padding-right: 0; + padding-top: 14px; +} +@media screen and (max-width: 767px) { + .inbox .bottom .row > .inbox-left-menu { + -webkit-transition-property: all; + -moz-transition-property: all; + -o-transition-property: all; + transition-property: all; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + -o-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: ease-in; + -moz-transition-timing-function: ease-in; + -o-transition-timing-function: ease-in; + transition-timing-function: ease-in; + max-height: 0; + padding-right: 15px; + overflow-y: hidden; + } + .inbox .bottom .row > .inbox-left-menu.active { + max-height: 330px; + } +} +.inbox .bottom .row .messages { + border-left: 1px solid #ccc; + padding-left: 15px; + padding-top: 10px; +} +@media screen and (max-width: 768px) { + .inbox .bottom .row .messages { + border-left: none; + padding-left: 0; + } +} +.inbox .bottom ul.left-menu { + margin-bottom: 40px; +} +.inbox .bottom ul.left-menu li a { + display: block; + color: #9c9898; + padding: 5px 0px; + font-size: 0.9em; +} +.inbox .bottom ul.left-menu li a:hover, .inbox .bottom ul.left-menu li a:focus, .inbox .bottom ul.left-menu li a.active { + color: #696565; + text-decoration: none; +} +.inbox .bottom ul.left-menu li i { + width: 15px; + margin-right: 5px; + font-size: 16px; +} +.inbox .bottom ul.left-menu li .badge { + background-color: #59b7de; + color: white; +} +.inbox .labels h3 { + font-size: 1em; +} +.inbox .labels li a { + font-size: 0.9em; + color: #9c9898; +} +.inbox .labels li a:hover { + color: #696565; + text-decoration: none; +} +.inbox .labels li span { + width: 14px; + height: 14px; + position: relative; + top: 2px; +} +.inbox .label1 { + background-color: #97DD03; +} +.inbox .label2 { + background-color: #03CCDD; +} +.inbox .label3 { + background-color: #DD4003; +} + +table.message-list-table { + table-layout: fixed; + width: 100%; +} +@media screen and (max-width: 992px) { + table.message-list-table { + display: block; + } +} +table.message-list-table colgroup .col-check { + width: 25px; +} +table.message-list-table colgroup .col-star { + width: 25px; +} +table.message-list-table colgroup .col-from { + width: 140px; +} +table.message-list-table colgroup .col-attachment { + width: 50px; +} +table.message-list-table colgroup .col-timestamp { + width: 70px; +} +@media screen and (max-width: 992px) { + table.message-list-table colgroup .col-from, + table.message-list-table colgroup .col-blank, table.message-list-table colgroup .col-timestamp { + width: auto; + } +} +table.message-list-table tr { + cursor: pointer; + border-bottom: 1px solid white; +} +table.message-list-table tr .fancy-checkbox { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + position: relative; + top: 3px; +} +table.message-list-table tr .fancy-checkbox input[type="checkbox"] + label { + margin-right: 0; + padding-left: 0; +} +table.message-list-table tr .fancy-checkbox input[type="checkbox"] + label:before { + background-color: #fff; +} +table.message-list-table tr .icon-attachment i { + font-size: 22px; +} +@media screen and (max-width: 992px) { + table.message-list-table tr .label { + display: none; + } +} +table.message-list-table tr.unread { + font-weight: 700; + background-color: #fff; +} +table.message-list-table tr.unread .icon-attachment i { + color: initial; +} +table.message-list-table tr.highlighted { + background-color: #FFFCC5; +} +table.message-list-table tr td { + color: #696565; + font-size: 0.9em; + white-space: nowrap; + overflow: hidden; +} +@media screen and (max-width: 992px) { + table.message-list-table tr td:nth-child(3), table.message-list-table tr td:nth-child(4) { + display: block; + white-space: normal; + overflow: visible; + } +} +table.message-list-table tr td:hover { + text-decoration: none; +} +table.message-list-table tr td i { + font-size: 17px; + position: relative; + top: 2px; + color: #696565; +} +table.message-list-table tr td i.ion-ios7-star { + color: #ff9800; +} +table.message-list-table tr td .from { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + margin-right: 20px; +} +table.message-list-table tr td .preview { + font-weight: normal; + color: #aaa; +} +table.message-list-table tr td .timestamp { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + float: right; +} + +/* view single message */ +.single-message-item { + padding: 15px; + border-left: 1px solid #ccc; +} +@media screen and (max-width: 768px) { + .single-message-item { + border-left: none; + } +} +.single-message-item .header-top { + margin-bottom: 20px; +} +.single-message-item .header-top .label-with-btn { + margin-left: 10px; +} +@media screen and (max-width: 768px) { + .single-message-item .header-top .label-with-btn { + margin-left: 0; + } +} +.single-message-item h2 { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; + font-size: 1.5em; + margin: 0; + line-height: 1.6; +} +@media screen and (max-width: 768px) { + .single-message-item h2 { + display: block; + } +} +.single-message-item .media, +.single-message-item .media-body { + overflow: visible; +} +.single-message-item .header-bottom .dropdown-menu i { + width: 20px; + font-size: 18px; +} +.single-message-item .message-body-text { + padding: 20px 0; +} +.single-message-item .attachments { + margin-bottom: 30px; +} +.single-message-item .attachments .download-all { + margin-left: 10px; +} +.single-message-item .attachments li { + line-height: 1.8; +} +.single-message-item .attachments li .text-muted { + font-size: 0.9em; + margin-left: 5px; +} +.single-message-item .reply-box:hover { + cursor: pointer; +} + +/* new/compose message */ +.inbox.new-message .top-menu { + border-left: 0; + padding-left: 0; +} +.inbox.new-message .top-menu .navigation .inbox-nav-toggle { + top: 0; +} + +.new-message-form { + padding: 15px; + border-left: 1px solid #ccc; +} +@media screen and (max-width: 768px) { + .new-message-form { + border-left: none; + padding: 0; + } +} + +/*------------------------------------------------*/ +/* Page: Search Results +/*------------------------------------------------*/ +.search-results h2 { + font-size: 1.8em; + margin-bottom: 30px; +} +.search-results h2 .search-result-info { + font-size: 0.5em; +} +.search-results h3 { + margin-top: 0; + margin-bottom: 30px; +} +.search-results ul.list-results li { + margin: 30px 0; +} +.search-results ul.list-results li h3 { + margin: 0; + font-size: 1.5em; +} +.search-results ul.list-results li h3 a:hover, .search-results ul.list-results li h3 a:focus { + text-decoration: underline; + color: #116c8a; +} +.search-results ul.list-results li .result-url { + color: #008000; +} +.search-results ul.list-results li p { + margin-bottom: 0; +} +.search-results ul.list-results li img { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + -o-border-radius: 2px; + border-radius: 2px; +} +.search-results ul.list-results li.type-document i { + font-size: 6em; + line-height: 1; +} +.search-results ul.list-results li.type-image img { + width: 140px; +} +@media screen and (max-width: 480px) { + .search-results ul.list-results li.type-image img { + width: 110px; + } +} +.search-results ul.list-results li.type-user img { + width: 64px; +} + +.search-history-heading { + margin-bottom: 30px; +} +.search-history-heading h3 { + margin-bottom: 0; +} +@media screen and (max-width: 768px) { + .search-history-heading .input-group { + margin-top: 25px; + } +} + +ul.list-search-history { + margin-left: 15px; + margin-bottom: 30px; +} +ul.list-search-history > li p { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + *vertical-align: auto; + zoom: 1; + *display: inline; +} +@media screen and (max-width: 768px) { + ul.list-search-history > li p { + width: 85%; + } +} +ul.list-search-history > li > .time { + margin-right: 10px; +} +ul.list-search-history > li a:hover, ul.list-search-history > li a:focus { + text-decoration: underline; + color: #116c8a; +} diff --git a/src/main/resources/META-INF/resources/css/skins/blue-light-nav.css b/src/main/resources/META-INF/resources/css/skins/blue-light-nav.css new file mode 100644 index 0000000..841a4ee --- /dev/null +++ b/src/main/resources/META-INF/resources/css/skins/blue-light-nav.css @@ -0,0 +1,95 @@ +/*------------------------------------------------*/ +/* Skin: Blue, Clean Nav +/*------------------------------------------------*/ +/* top bar */ +.top-bar { + background-color: #1d92af; + border-bottom-color: #166d83; +} +.top-bar .action-group .btn-group > a { + color: #198099; +} +.top-bar .action-group .action-item > a { + color: #198099; +} +.top-bar .action-group .action-item > a:hover, .top-bar .action-group .action-item > a:active, .top-bar .action-group .action-item > a.active { + color: #fff; +} +.top-bar .logged-user .btn-group > a { + color: #fff; +} +.top-bar .logged-user .btn img { + border-color: #fff; +} +.top-bar .action-group .btn-group > a:hover, +.top-bar .logged-user .btn-group > a:hover { + color: #fff; +} +.top-bar .action-group .btn-group.open > a, +.top-bar .logged-user .btn-group.open > a { + color: #fff; +} + +/* minified and off-canvas toggle button */ +.btn-nav-sidebar-minified i, +.btn-off-canvas i { + color: #fff; +} +.btn-nav-sidebar-minified i:hover, +.btn-off-canvas i:hover { + color: #fff; +} + +/* custom nav pills */ +.nav-pills-custom-minimal > li.active a { + border-top-color: #1d92af; +} +.nav-pills-custom-minimal > li.active a:hover, .nav-pills-custom-minimal > li.active a:focus { + border-top-color: #1d92af; +} +.nav-pills-custom-minimal.custom-minimal-bottom > li.active a { + border-bottom-color: #1d92af; +} +.nav-pills-custom-minimal.custom-minimal-bottom > li.active a:hover, .nav-pills-custom-minimal.custom-minimal-bottom > li.active a:focus { + border-bottom-color: #1d92af; +} + +/* main navigation */ +.main-nav, +.left-content-bg { + background-color: #fff; + border-right: 1px solid #ccc; +} + +.main-nav h3 { + border-bottom: 1px solid #ccc; +} + +ul.main-menu li.active a { + background-color: #888; +} +ul.main-menu li.active a.submenu-toggle { + color: #8d8d8d; +} +ul.main-menu li a:hover, ul.main-menu li a:focus { + background-color: #888; +} +ul.main-menu .sub-menu li.active a { + background-color: #888; + color: #fff; +} +ul.main-menu .sub-menu li a { + background: #ebebeb; +} +ul.main-menu .sub-menu li a:hover, ul.main-menu .sub-menu li a:focus { + background-color: #b1b1b1; +} + +.main-nav-minified .left-content ul li:hover > a { + background-color: #8d8d8d; + color: #fff; +} + +.status-bar-list .progress { + background-color: #e9e9e9 !important; +} diff --git a/src/main/resources/META-INF/resources/css/skins/darkorange-light-nav.css b/src/main/resources/META-INF/resources/css/skins/darkorange-light-nav.css new file mode 100644 index 0000000..db5b573 --- /dev/null +++ b/src/main/resources/META-INF/resources/css/skins/darkorange-light-nav.css @@ -0,0 +1,94 @@ +/*------------------------------------------------*/ +/* Skin: Dark Orange, Light Nav +/*------------------------------------------------*/ +/* top bar */ +.top-bar { + background-color: #5A5855; + border-bottom-color: #1D1D1C; +} +.top-bar .action-group .btn-group > a { + color: #e68900; +} +.top-bar .action-group .action-item > a { + color: #e68900; +} +.top-bar .action-group .action-item > a:hover, .top-bar .action-group .action-item > a:active, .top-bar .action-group .action-item > a.active { + color: #fff; +} +.top-bar .logged-user .btn-group > a { + color: #fff; +} +.top-bar .logged-user .btn img { + border-color: #fff; +} +.top-bar .action-group .btn-group > a:hover, +.top-bar .logged-user .btn-group > a:hover { + color: #fff; +} +.top-bar .action-group .btn-group.open > a, +.top-bar .logged-user .btn-group.open > a { + color: #fff; +} + +/* minified and off-canvas toggle button */ +.btn-nav-sidebar-minified i, +.btn-off-canvas i { + color: #fff; +} +.btn-nav-sidebar-minified i:hover, +.btn-off-canvas i:hover { + color: #fff; +} + +/* custom nav pills */ +.nav-pills-custom-minimal > li.active a { + border-top-color: #ff9800; +} +.nav-pills-custom-minimal > li.active a:hover, .nav-pills-custom-minimal > li.active a:focus { + border-top-color: #ff9800; +} +.nav-pills-custom-minimal.custom-minimal-bottom > li.active a { + border-bottom-color: #ff9800; +} +.nav-pills-custom-minimal.custom-minimal-bottom > li.active a:hover, .nav-pills-custom-minimal.custom-minimal-bottom > li.active a:focus { + border-bottom-color: #ff9800; +} + +.main-nav, +.left-content-bg { + background-color: #fff; + border-right: 1px solid #ccc; +} + +.main-nav h3 { + border-bottom: 1px solid #ccc; +} + +ul.main-menu li.active a { + background-color: #888; +} +ul.main-menu li.active a.submenu-toggle { + color: #8d8d8d; +} +ul.main-menu li a:hover, ul.main-menu li a:focus { + background-color: #888; +} +ul.main-menu .sub-menu li.active a { + background-color: #888; + color: #fff; +} +ul.main-menu .sub-menu li a { + background: #ebebeb; +} +ul.main-menu .sub-menu li a:hover, ul.main-menu .sub-menu li a:focus { + background-color: #b1b1b1; +} + +.main-nav-minified .left-content ul li:hover > a { + background-color: #8d8d8d; + color: #fff; +} + +.status-bar-list .progress { + background-color: #e9e9e9 !important; +} diff --git a/src/main/resources/META-INF/resources/fonts/FontAwesome.otf b/src/main/resources/META-INF/resources/fonts/FontAwesome.otf new file mode 100644 index 0000000..81c9ad9 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/FontAwesome.otf differ diff --git a/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.eot b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000..84677bc Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.eot differ diff --git a/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.svg b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..d907b25 --- /dev/null +++ b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.svg @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.ttf b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000..96a3639 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.ttf differ diff --git a/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.woff b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000..628b6a5 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/fontawesome-webfont.woff differ diff --git a/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.eot b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..4a4ca86 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.eot differ diff --git a/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.svg b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..e3e2dc7 --- /dev/null +++ b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.ttf b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..67fa00b Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.ttf differ diff --git a/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.woff b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..8c54182 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/glyphicons-halflings-regular.woff differ diff --git a/src/main/resources/META-INF/resources/fonts/ionicons.eot b/src/main/resources/META-INF/resources/fonts/ionicons.eot new file mode 100644 index 0000000..52b1e57 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/ionicons.eot differ diff --git a/src/main/resources/META-INF/resources/fonts/ionicons.svg b/src/main/resources/META-INF/resources/fonts/ionicons.svg new file mode 100644 index 0000000..5c8c909 --- /dev/null +++ b/src/main/resources/META-INF/resources/fonts/ionicons.svg @@ -0,0 +1,1899 @@ + + + + + +Created by FontForge 20120731 at Mon Jun 16 14:44:31 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/META-INF/resources/fonts/ionicons.ttf b/src/main/resources/META-INF/resources/fonts/ionicons.ttf new file mode 100644 index 0000000..cc67b2f Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/ionicons.ttf differ diff --git a/src/main/resources/META-INF/resources/fonts/ionicons.woff b/src/main/resources/META-INF/resources/fonts/ionicons.woff new file mode 100644 index 0000000..1d7b977 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/ionicons.woff differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.eot b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.eot new file mode 100644 index 0000000..680b7a2 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.eot differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.svg b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.svg new file mode 100644 index 0000000..dd70ddb --- /dev/null +++ b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.ttf b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.ttf new file mode 100644 index 0000000..2485ae9 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.ttf differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.woff b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.woff new file mode 100644 index 0000000..11a9aaf Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-bold-webfont.woff differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.eot b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.eot new file mode 100644 index 0000000..cf83055 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.eot differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.svg b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.svg new file mode 100644 index 0000000..79c173f --- /dev/null +++ b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.svg @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.ttf b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.ttf new file mode 100644 index 0000000..61c19f2 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.ttf differ diff --git a/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.woff b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.woff new file mode 100644 index 0000000..6ab5818 Binary files /dev/null and b/src/main/resources/META-INF/resources/fonts/josefinslab-semibold-webfont.woff differ diff --git a/src/main/resources/META-INF/resources/ico/favicon.ico b/src/main/resources/META-INF/resources/ico/favicon.ico new file mode 100644 index 0000000..e4225fe Binary files /dev/null and b/src/main/resources/META-INF/resources/ico/favicon.ico differ diff --git a/src/main/resources/META-INF/resources/ico/queenadmin-favicon114x114.png b/src/main/resources/META-INF/resources/ico/queenadmin-favicon114x114.png new file mode 100644 index 0000000..91faf15 Binary files /dev/null and b/src/main/resources/META-INF/resources/ico/queenadmin-favicon114x114.png differ diff --git a/src/main/resources/META-INF/resources/ico/queenadmin-favicon144x144.png b/src/main/resources/META-INF/resources/ico/queenadmin-favicon144x144.png new file mode 100644 index 0000000..81f3612 Binary files /dev/null and b/src/main/resources/META-INF/resources/ico/queenadmin-favicon144x144.png differ diff --git a/src/main/resources/META-INF/resources/ico/queenadmin-favicon57x57.png b/src/main/resources/META-INF/resources/ico/queenadmin-favicon57x57.png new file mode 100644 index 0000000..277fbaa Binary files /dev/null and b/src/main/resources/META-INF/resources/ico/queenadmin-favicon57x57.png differ diff --git a/src/main/resources/META-INF/resources/ico/queenadmin-favicon72x72.png b/src/main/resources/META-INF/resources/ico/queenadmin-favicon72x72.png new file mode 100644 index 0000000..fcf7df9 Binary files /dev/null and b/src/main/resources/META-INF/resources/ico/queenadmin-favicon72x72.png differ diff --git a/src/main/resources/META-INF/resources/img/activity-photo1.jpg b/src/main/resources/META-INF/resources/img/activity-photo1.jpg new file mode 100644 index 0000000..e1d9a8b Binary files /dev/null and b/src/main/resources/META-INF/resources/img/activity-photo1.jpg differ diff --git a/src/main/resources/META-INF/resources/img/activity-photo2.jpg b/src/main/resources/META-INF/resources/img/activity-photo2.jpg new file mode 100644 index 0000000..096ef44 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/activity-photo2.jpg differ diff --git a/src/main/resources/META-INF/resources/img/avatar.png b/src/main/resources/META-INF/resources/img/avatar.png new file mode 100644 index 0000000..5802485 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/avatar.png differ diff --git a/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha-horizontal.png b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha-horizontal.png new file mode 100644 index 0000000..d0a65c0 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha-horizontal.png differ diff --git a/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha.png b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha.png new file mode 100644 index 0000000..38043f1 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/alpha.png differ diff --git a/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue-horizontal.png b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue-horizontal.png new file mode 100644 index 0000000..a0d9add Binary files /dev/null and b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue-horizontal.png differ diff --git a/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue.png b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue.png new file mode 100644 index 0000000..d89560e Binary files /dev/null and b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/hue.png differ diff --git a/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/saturation.png b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/saturation.png new file mode 100644 index 0000000..594ae50 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/bootstrap-colorpicker/saturation.png differ diff --git a/src/main/resources/META-INF/resources/img/city.jpg b/src/main/resources/META-INF/resources/img/city.jpg new file mode 100644 index 0000000..102ee6d Binary files /dev/null and b/src/main/resources/META-INF/resources/img/city.jpg differ diff --git a/src/main/resources/META-INF/resources/img/clear.png b/src/main/resources/META-INF/resources/img/clear.png new file mode 100644 index 0000000..580b52a Binary files /dev/null and b/src/main/resources/META-INF/resources/img/clear.png differ diff --git a/src/main/resources/META-INF/resources/img/diagonal-stripe.png b/src/main/resources/META-INF/resources/img/diagonal-stripe.png new file mode 100644 index 0000000..8dc95e1 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/diagonal-stripe.png differ diff --git a/src/main/resources/META-INF/resources/img/gray_jean.png b/src/main/resources/META-INF/resources/img/gray_jean.png new file mode 100644 index 0000000..355fba2 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/gray_jean.png differ diff --git a/src/main/resources/META-INF/resources/img/headline-bg.png b/src/main/resources/META-INF/resources/img/headline-bg.png new file mode 100644 index 0000000..e2917e1 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/headline-bg.png differ diff --git a/src/main/resources/META-INF/resources/img/loading.gif b/src/main/resources/META-INF/resources/img/loading.gif new file mode 100644 index 0000000..5b33f7e Binary files /dev/null and b/src/main/resources/META-INF/resources/img/loading.gif differ diff --git a/src/main/resources/META-INF/resources/img/location-pin.png b/src/main/resources/META-INF/resources/img/location-pin.png new file mode 100644 index 0000000..2786824 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/location-pin.png differ diff --git a/src/main/resources/META-INF/resources/img/queenadmin-logo-white.png b/src/main/resources/META-INF/resources/img/queenadmin-logo-white.png new file mode 100644 index 0000000..8bf8240 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/queenadmin-logo-white.png differ diff --git a/src/main/resources/META-INF/resources/img/queenadmin-logo.png b/src/main/resources/META-INF/resources/img/queenadmin-logo.png new file mode 100644 index 0000000..f3c2861 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/queenadmin-logo.png differ diff --git a/src/main/resources/META-INF/resources/img/search-result-img.png b/src/main/resources/META-INF/resources/img/search-result-img.png new file mode 100644 index 0000000..86b49d6 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/search-result-img.png differ diff --git a/src/main/resources/META-INF/resources/img/select2-spinner.gif b/src/main/resources/META-INF/resources/img/select2-spinner.gif new file mode 100644 index 0000000..5b33f7e Binary files /dev/null and b/src/main/resources/META-INF/resources/img/select2-spinner.gif differ diff --git a/src/main/resources/META-INF/resources/img/sort_asc.png b/src/main/resources/META-INF/resources/img/sort_asc.png new file mode 100644 index 0000000..fb42431 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/sort_asc.png differ diff --git a/src/main/resources/META-INF/resources/img/sort_asc_disabled.png b/src/main/resources/META-INF/resources/img/sort_asc_disabled.png new file mode 100644 index 0000000..fde652e Binary files /dev/null and b/src/main/resources/META-INF/resources/img/sort_asc_disabled.png differ diff --git a/src/main/resources/META-INF/resources/img/sort_both.png b/src/main/resources/META-INF/resources/img/sort_both.png new file mode 100644 index 0000000..9e893ab Binary files /dev/null and b/src/main/resources/META-INF/resources/img/sort_both.png differ diff --git a/src/main/resources/META-INF/resources/img/sort_desc.png b/src/main/resources/META-INF/resources/img/sort_desc.png new file mode 100644 index 0000000..65f4bc1 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/sort_desc.png differ diff --git a/src/main/resources/META-INF/resources/img/sort_desc_disabled.png b/src/main/resources/META-INF/resources/img/sort_desc_disabled.png new file mode 100644 index 0000000..101c09c Binary files /dev/null and b/src/main/resources/META-INF/resources/img/sort_desc_disabled.png differ diff --git a/src/main/resources/META-INF/resources/img/user-loggedin.png b/src/main/resources/META-INF/resources/img/user-loggedin.png new file mode 100644 index 0000000..cd81f8f Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user-loggedin.png differ diff --git a/src/main/resources/META-INF/resources/img/user1.png b/src/main/resources/META-INF/resources/img/user1.png new file mode 100644 index 0000000..7e44717 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user1.png differ diff --git a/src/main/resources/META-INF/resources/img/user10.png b/src/main/resources/META-INF/resources/img/user10.png new file mode 100644 index 0000000..464f1d9 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user10.png differ diff --git a/src/main/resources/META-INF/resources/img/user11.png b/src/main/resources/META-INF/resources/img/user11.png new file mode 100644 index 0000000..862fbef Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user11.png differ diff --git a/src/main/resources/META-INF/resources/img/user2.png b/src/main/resources/META-INF/resources/img/user2.png new file mode 100644 index 0000000..db50b8b Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user2.png differ diff --git a/src/main/resources/META-INF/resources/img/user3.png b/src/main/resources/META-INF/resources/img/user3.png new file mode 100644 index 0000000..1839f1e Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user3.png differ diff --git a/src/main/resources/META-INF/resources/img/user4.png b/src/main/resources/META-INF/resources/img/user4.png new file mode 100644 index 0000000..778a8f2 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user4.png differ diff --git a/src/main/resources/META-INF/resources/img/user5.png b/src/main/resources/META-INF/resources/img/user5.png new file mode 100644 index 0000000..e4ba269 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user5.png differ diff --git a/src/main/resources/META-INF/resources/img/user6.png b/src/main/resources/META-INF/resources/img/user6.png new file mode 100644 index 0000000..fa172c6 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user6.png differ diff --git a/src/main/resources/META-INF/resources/img/user7.png b/src/main/resources/META-INF/resources/img/user7.png new file mode 100644 index 0000000..ff08963 Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user7.png differ diff --git a/src/main/resources/META-INF/resources/img/user8.png b/src/main/resources/META-INF/resources/img/user8.png new file mode 100644 index 0000000..c8e9f3c Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user8.png differ diff --git a/src/main/resources/META-INF/resources/img/user9.png b/src/main/resources/META-INF/resources/img/user9.png new file mode 100644 index 0000000..211811f Binary files /dev/null and b/src/main/resources/META-INF/resources/img/user9.png differ diff --git a/src/main/resources/META-INF/resources/js/bootstrap/bootstrap.js b/src/main/resources/META-INF/resources/js/bootstrap/bootstrap.js new file mode 100644 index 0000000..53da1c7 --- /dev/null +++ b/src/main/resources/META-INF/resources/js/bootstrap/bootstrap.js @@ -0,0 +1,2114 @@ +/*! + * Bootstrap v3.2.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') } + +/* ======================================================================== + * Bootstrap: transition.js v3.2.0 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.2.0 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.2.0' + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.hasClass('alert') ? $this : $this.parent() + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(150) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.2.0 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.2.0' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + $el[val](data[state] == null ? this.options[state] : data[state]) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.2.0 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this)) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.pause == 'hover' && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.2.0' + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true + } + + Carousel.prototype.keydown = function (e) { + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || $active[type]() + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + }) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.2.0 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.transitioning = null + + if (this.options.parent) this.$parent = $(this.options.parent) + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.2.0' + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var actives = this.$parent && this.$parent.find('> .panel > .in') + + if (actives && actives.length) { + var hasData = actives.data('bs.collapse') + if (hasData && hasData.transitioning) return + Plugin.call(actives, 'hide') + hasData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(350)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse') + .removeClass('in') + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .trigger('hidden.bs.collapse') + .removeClass('collapsing') + .addClass('collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(350) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') option = !option + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var href + var $this = $(this) + var target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + var $target = $(target) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + var parent = $this.attr('data-parent') + var $parent = parent && $(parent) + + if (!data || !data.transitioning) { + if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed') + $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + } + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.2.0 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.2.0' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('