diff --git a/CHANGELOG.md b/CHANGELOG.md index eb83e9c9e..963af2e24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,26 @@ # Change Log -## [3.0.0](https://github.com/TheHive-Project/Cortex/tree/HEAD) (2019-09-05) +## [3.0.1](https://github.com/TheHive-Project/Cortex/tree/3.0.1) (2020-01-20) + +[Full Changelog](https://github.com/TheHive-Project/Cortex/compare/3.0.0...HEAD) + +**Implemented enhancements:** + +- Cortex logs the Play secret key at startup. [\#244](https://github.com/TheHive-Project/Cortex/issues/244) +- Analyzer reports "no output" when it fails [\#241](https://github.com/TheHive-Project/Cortex/issues/241) +- Docker image has many CVE's open against it [\#238](https://github.com/TheHive-Project/Cortex/issues/238) +- Remove Elasticsearch cluster configuration option [\#230](https://github.com/TheHive-Project/Cortex/pull/230) ([adl1995](https://github.com/adl1995)) +- Handle second/minute-rates limits on Flavors and Analyzers [\#164](https://github.com/TheHive-Project/Cortex/issues/164) + +**Fixed bugs:** + +- Fix error message display for failed analyzers/responders [\#243](https://github.com/TheHive-Project/Cortex/issues/243) +- Remove reference to google fonts [\#242](https://github.com/TheHive-Project/Cortex/issues/242) +- Encoding issue causes invalid format for catalog file [\#240](https://github.com/TheHive-Project/Cortex/issues/240) +- Missing dependency for cluster [\#239](https://github.com/TheHive-Project/Cortex/issues/239) +- Old non-existent analysers showing in Cortex after an upgrade [\#234](https://github.com/TheHive-Project/Cortex/issues/234) + +## [3.0.0](https://github.com/TheHive-Project/Cortex/tree/3.0.0) (2019-09-05) [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/3.0.0-RC4...3.0.0) @@ -9,6 +29,7 @@ - cortex 3.0.0-RC4 container : StreamSrv error popup spamming the setup page [\#210](https://github.com/TheHive-Project/Cortex/issues/210) ## [3.0.0-RC4](https://github.com/TheHive-Project/Cortex/tree/3.0.0-RC4) (2019-07-10) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/3.0.0-RC3...3.0.0-RC4) **Fixed bugs:** @@ -41,6 +62,7 @@ - Get user detials via API is available to non-admin users [\#194](https://github.com/TheHive-Project/Cortex/issues/194) ## [3.0.0-RC2](https://github.com/TheHive-Project/Cortex/tree/3.0.0-RC2) (2019-05-03) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/3.0.0-RC1...3.0.0-RC2) **Fixed bugs:** @@ -50,6 +72,7 @@ - Docker container exposes tcp/9000 instead of tcp/9001 [\#166](https://github.com/TheHive-Project/Cortex/issues/166) ## [3.0.0-RC1](https://github.com/TheHive-Project/Cortex/tree/3.0.0-RC1) (2019-04-05) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.1.3...3.0.0-RC1) **Implemented enhancements:** @@ -60,7 +83,7 @@ **Fixed bugs:** -- SSO: Authentication module not found [\#181](https://github.com/TheHive-Project/Cortex/issues/181) +- SSO: Authentication module not found [\#181](https://github.com/TheHive-Project/Cortex/issues/181) - Akka Dispatcher Blocked [\#170](https://github.com/TheHive-Project/Cortex/issues/170) **Closed issues:** @@ -71,6 +94,7 @@ - File extraction [\#120](https://github.com/TheHive-Project/Cortex/issues/120) ## [2.1.3](https://github.com/TheHive-Project/Cortex/tree/2.1.3) (2018-12-20) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.1.2...2.1.3) **Implemented enhancements:** @@ -88,10 +112,11 @@ **Closed issues:** -- Systemd: cortex.service: Failed with result 'exit-code'. [\#155](https://github.com/TheHive-Project/Cortex/issues/155) +- Systemd: cortex.service: Failed with result 'exit-code'. [\#155](https://github.com/TheHive-Project/Cortex/issues/155) - conf/logback.xml: Rotate logs [\#62](https://github.com/TheHive-Project/Cortex/issues/62) ## [2.1.2](https://github.com/TheHive-Project/Cortex/tree/2.1.2) (2018-10-12) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.1.1...2.1.2) **Fixed bugs:** @@ -99,6 +124,7 @@ - findSimilarJob function broken [\#144](https://github.com/TheHive-Project/Cortex/issues/144) ## [2.1.1](https://github.com/TheHive-Project/Cortex/tree/2.1.1) (2018-10-09) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.1.0...2.1.1) **Implemented enhancements:** @@ -114,6 +140,7 @@ - Console output should not be logged in syslog [\#136](https://github.com/TheHive-Project/Cortex/issues/136) ## [2.1.0](https://github.com/TheHive-Project/Cortex/tree/2.1.0) (2018-09-25) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.1.0-RC1...2.1.0) **Implemented enhancements:** @@ -124,7 +151,7 @@ **Fixed bugs:** - MISP API fails [\#109](https://github.com/TheHive-Project/Cortex/issues/109) -- File\_Info issue [\#53](https://github.com/TheHive-Project/Cortex/issues/53) +- File_Info issue [\#53](https://github.com/TheHive-Project/Cortex/issues/53) - Temporary files are not removed at the end of job [\#129](https://github.com/TheHive-Project/Cortex/issues/129) - MISP fails to run analyzers [\#128](https://github.com/TheHive-Project/Cortex/issues/128) @@ -133,6 +160,7 @@ - Update resolvers in build.sbt to contain Maven as a dependency [\#130](https://github.com/TheHive-Project/Cortex/pull/130) ([adl1995](https://github.com/adl1995)) ## [2.1.0-RC1](https://github.com/TheHive-Project/Cortex/tree/2.1.0-RC1) (2018-07-31) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.0.4...2.1.0-RC1) **Implemented enhancements:** @@ -163,6 +191,7 @@ - Update GitHub path [\#100](https://github.com/TheHive-Project/Cortex/pull/100) ([saadkadhi](https://github.com/saadkadhi)) ## [2.0.4](https://github.com/TheHive-Project/Cortex/tree/2.0.4) (2018-04-13) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.0.3...2.0.4) **Implemented enhancements:** @@ -184,6 +213,7 @@ - Insufficient Rights To Perform This Action [\#87](https://github.com/TheHive-Project/Cortex/issues/87) ## [2.0.3](https://github.com/TheHive-Project/Cortex/tree/2.0.3) (2018-04-09) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.0.2...2.0.3) **Implemented enhancements:** @@ -203,6 +233,7 @@ - Allow configuring auto artifacts extraction per analyzer [\#80](https://github.com/TheHive-Project/Cortex/issues/80) ## [2.0.2](https://github.com/TheHive-Project/Cortex/tree/2.0.2) (2018-04-04) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.0.1...2.0.2) **Fixed bugs:** @@ -214,6 +245,7 @@ - Session collision when TheHive & Cortex 2 share the same URL [\#70](https://github.com/TheHive-Project/Cortex/issues/70) ## [2.0.1](https://github.com/TheHive-Project/Cortex/tree/2.0.1) (2018-03-30) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/2.0.0...2.0.1) **Fixed bugs:** @@ -223,6 +255,7 @@ - User can't change his password [\#67](https://github.com/TheHive-Project/Cortex/issues/67) ## [2.0.0](https://github.com/TheHive-Project/Cortex/tree/2.0.0) (2018-03-30) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.1.4...2.0.0) **Implemented enhancements:** @@ -245,7 +278,7 @@ - Local, LDAP, AD and API Key Authentication [\#7](https://github.com/TheHive-Project/Cortex/issues/7) - Limit Rates and Respect Quotas [\#6](https://github.com/TheHive-Project/Cortex/issues/6) - Persistence and Report Caching [\#5](https://github.com/TheHive-Project/Cortex/issues/5) -- Provide alternative paths for analyzers in addition to standard path. [\#4](https://github.com/TheHive-Project/Cortex/issues/4) +- Provide alternative paths for analyzers in addition to standard path. [\#4](https://github.com/TheHive-Project/Cortex/issues/4) - Provide way to reload conf file for new API keys without shutdown. [\#3](https://github.com/TheHive-Project/Cortex/issues/3) - Provide Secret Key auth to upstream service [\#2](https://github.com/TheHive-Project/Cortex/issues/2) @@ -256,6 +289,7 @@ - Adding WOT config sample [\#43](https://github.com/TheHive-Project/Cortex/pull/43) ([mthlvt](https://github.com/mthlvt)) ## [1.1.4](https://github.com/TheHive-Project/Cortex/tree/1.1.4) (2017-09-15) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.1.3...1.1.4) **Fixed bugs:** @@ -269,6 +303,7 @@ - Disable analyzer in configuration file [\#32](https://github.com/TheHive-Project/Cortex/issues/32) ## [1.1.3](https://github.com/TheHive-Project/Cortex/tree/1.1.3) (2017-06-14) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/debian/1.1.2-2...1.1.3) **Fixed bugs:** @@ -277,9 +312,11 @@ - Error when parsing analyzer failure report [\#33](https://github.com/TheHive-Project/Cortex/issues/33) ## [debian/1.1.2-2](https://github.com/TheHive-Project/Cortex/tree/debian/1.1.2-2) (2017-05-24) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.1.2...debian/1.1.2-2) ## [1.1.2](https://github.com/TheHive-Project/Cortex/tree/1.1.2) (2017-05-24) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/debian/1.1.1-2...1.1.2) **Implemented enhancements:** @@ -294,9 +331,11 @@ - Error 500 in TheHive when a job is submited to Cortex [\#27](https://github.com/TheHive-Project/Cortex/issues/27) ## [debian/1.1.1-2](https://github.com/TheHive-Project/Cortex/tree/debian/1.1.1-2) (2017-05-19) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/rpm/1.1.1-2...debian/1.1.1-2) ## [rpm/1.1.1-2](https://github.com/TheHive-Project/Cortex/tree/rpm/1.1.1-2) (2017-05-19) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.1.1...rpm/1.1.1-2) **Fixed bugs:** @@ -304,6 +343,7 @@ - After Upgrade from Cortex 1.0.2 to 1.1.1 system does not come up [\#26](https://github.com/TheHive-Project/Cortex/issues/26) ## [1.1.1](https://github.com/TheHive-Project/Cortex/tree/1.1.1) (2017-05-17) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.1.0...1.1.1) **Fixed bugs:** @@ -316,6 +356,7 @@ - MISP integration [\#21](https://github.com/TheHive-Project/Cortex/issues/21) ## [1.1.0](https://github.com/TheHive-Project/Cortex/tree/1.1.0) (2017-05-12) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.0.2...1.1.0) **Implemented enhancements:** @@ -330,6 +371,7 @@ - Use new logo and favicon [\#22](https://github.com/TheHive-Project/Cortex/issues/22) ## [1.0.2](https://github.com/TheHive-Project/Cortex/tree/1.0.2) (2017-04-19) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.0.1...1.0.2) **Fixed bugs:** @@ -345,6 +387,7 @@ - Documentation on 'How to create an analyzer' [\#10](https://github.com/TheHive-Project/Cortex/issues/10) ## [1.0.1](https://github.com/TheHive-Project/Cortex/tree/1.0.1) (2017-03-08) + [Full Changelog](https://github.com/TheHive-Project/Cortex/compare/1.0.0...1.0.1) **Fixed bugs:** @@ -357,5 +400,4 @@ ## [1.0.0](https://github.com/TheHive-Project/Cortex/tree/1.0.0) (2017-02-01) - -\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* \ No newline at end of file +\* _This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)_ diff --git a/app/org/thp/cortex/models/Worker.scala b/app/org/thp/cortex/models/Worker.scala index 567087ab4..e5085c59f 100644 --- a/app/org/thp/cortex/models/Worker.scala +++ b/app/org/thp/cortex/models/Worker.scala @@ -1,22 +1,22 @@ package org.thp.cortex.models import javax.inject.{Inject, Singleton} - -import scala.concurrent.Future -import scala.util.Try - -import play.api.libs.json.{JsObject, JsString, Json} - import org.elastic4play.models.JsonFormat.enumFormat import org.elastic4play.models.{AttributeDef, BaseEntity, ChildModelDef, EntityDef, HiveEnumeration, AttributeFormat ⇒ F, AttributeOption ⇒ O} import org.elastic4play.utils.Hasher - import org.thp.cortex.models.JsonFormat.workerTypeFormat +import play.api.libs.json.{JsObject, JsString, Json} + +import scala.concurrent.Future +import scala.util.Try object RateUnit extends Enumeration with HiveEnumeration { type Type = Value - val Day = Value(1) - val Month = Value(30) + val Second = Value(1) + val Minute = Value(60) + val Hour = Value(60 * 60) + val Day = Value(60 * 60 * 24) + val Month = Value(60 * 60 * 24 * 30) implicit val reads = enumFormat(this) } diff --git a/app/org/thp/cortex/services/DockerJobRunnerSrv.scala b/app/org/thp/cortex/services/DockerJobRunnerSrv.scala index ee1916531..6e75449a7 100644 --- a/app/org/thp/cortex/services/DockerJobRunnerSrv.scala +++ b/app/org/thp/cortex/services/DockerJobRunnerSrv.scala @@ -92,10 +92,12 @@ class DockerJobRunnerSrv(client: DockerClient, autoUpdate: Boolean, implicit val () }.andThen { case r ⇒ - if (!Files.exists(jobDirectory.resolve("output").resolve("output.json"))) { - val message = r.fold(e ⇒ s"Docker creation error: ${e.getMessage}\n", _ ⇒ "") + - Try(client.logs(containerCreation.id(), LogsParam.stdout(), LogsParam.stderr()).readFully()) - .recover { case e ⇒ s"Container logs can't be read (${e.getMessage}" } + val outputFile = jobDirectory.resolve("output").resolve("output.json") + if (!Files.exists(outputFile) || Files.size(outputFile) == 0) { + val output = Try(client.logs(containerCreation.id(), LogsParam.stdout(), LogsParam.stderr()).readFully()) + .fold(e ⇒ s"Container logs can't be read (${e.getMessage})", identity) + val message = r.fold(e ⇒ s"Docker creation error: ${e.getMessage}\n$output", _ ⇒ output) + val report = Json.obj("success" → false, "errorMessage" → message) Files.write(jobDirectory.resolve("output").resolve("output.json"), report.toString.getBytes(StandardCharsets.UTF_8)) } diff --git a/app/org/thp/cortex/services/JobSrv.scala b/app/org/thp/cortex/services/JobSrv.scala index 49ca1a275..1b2b6944b 100644 --- a/app/org/thp/cortex/services/JobSrv.scala +++ b/app/org/thp/cortex/services/JobSrv.scala @@ -327,7 +327,7 @@ class JobSrv( import org.elastic4play.services.QueryDSL._ val now = new Date().getTime logger.info(s"Checking rate limit on worker ${worker.name()} from ${new Date(now - rateUnit.id.toLong * 24 * 60 * 60 * 1000)}") - stats(and("createdAt" ~>= (now - rateUnit.id.toLong * 24 * 60 * 60 * 1000), "workerId" ~= worker.id), Seq(selectCount)).map { s ⇒ + stats(and("createdAt" ~>= (now - rateUnit.id.toLong * 1000), "workerId" ~= worker.id), Seq(selectCount)).map { s ⇒ val count = (s \ "count").as[Long] logger.info(s"$count analysis found (limit is $rate)") count < rate diff --git a/app/org/thp/cortex/services/ProcessJobRunnerSrv.scala b/app/org/thp/cortex/services/ProcessJobRunnerSrv.scala index 976e5abce..444ea1b01 100644 --- a/app/org/thp/cortex/services/ProcessJobRunnerSrv.scala +++ b/app/org/thp/cortex/services/ProcessJobRunnerSrv.scala @@ -3,22 +3,18 @@ package org.thp.cortex.services import java.nio.charset.StandardCharsets import java.nio.file.{Files, Path, Paths} -import scala.concurrent.duration.FiniteDuration -import scala.concurrent.{ExecutionContext, Future} -import scala.sys.process.{Process, ProcessLogger} - -import play.api.Logger - import akka.actor.ActorSystem import javax.inject.{Inject, Singleton} +import org.elastic4play.utils.RichFuture import org.thp.cortex.models._ +import play.api.Logger +import play.api.libs.json.Json -import org.elastic4play.utils.RichFuture -import scala.sys.process._ +import scala.concurrent.duration.FiniteDuration +import scala.concurrent.{ExecutionContext, Future} +import scala.sys.process.{Process, ProcessLogger, _} import scala.util.Try -import play.api.libs.json.Json - @Singleton class ProcessJobRunnerSrv @Inject()(implicit val system: ActorSystem) { @@ -37,19 +33,31 @@ class ProcessJobRunnerSrv @Inject()(implicit val system: ActorSystem) { def run(jobDirectory: Path, command: String, job: Job, timeout: Option[FiniteDuration])(implicit ec: ExecutionContext): Future[Unit] = { val baseDirectory = Paths.get(command).getParent.getParent + val output = StringBuilder.newBuilder logger.info(s"Execute $command in $baseDirectory, timeout is ${timeout.fold("none")(_.toString)}") val process = Process(Seq(command, jobDirectory.toString), baseDirectory.toFile) - .run(ProcessLogger(s ⇒ logger.info(s" Job ${job.id}: $s"))) + .run(ProcessLogger { s ⇒ + logger.info(s" Job ${job.id}: $s") + output ++= s + }) val execution = Future .apply { process.exitValue() () } + .map { _ ⇒ + val outputFile = jobDirectory.resolve("output").resolve("output.json") + if (!Files.exists(outputFile) || Files.size(outputFile) == 0) { + val report = Json.obj("success" → false, "errorMessage" → output.toString) + Files.write(outputFile, report.toString.getBytes(StandardCharsets.UTF_8)) + } + () + } .recoverWith { case error ⇒ logger.error(s"Execution of command $command failed", error) Future.apply { - val report = Json.obj("success" → false, "errorMessage" → error.getMessage) + val report = Json.obj("success" → false, "errorMessage" → s"${error.getMessage}\n$output") Files.write(jobDirectory.resolve("output").resolve("output.json"), report.toString.getBytes(StandardCharsets.UTF_8)) () } diff --git a/app/org/thp/cortex/services/WorkerSrv.scala b/app/org/thp/cortex/services/WorkerSrv.scala index cb8203a18..719d22375 100644 --- a/app/org/thp/cortex/services/WorkerSrv.scala +++ b/app/org/thp/cortex/services/WorkerSrv.scala @@ -3,27 +3,27 @@ package org.thp.cortex.services import java.net.URL import java.nio.file.{Files, Path, Paths} -import javax.inject.{Inject, Provider, Singleton} import scala.collection.JavaConverters._ import scala.concurrent.{ExecutionContext, Future} +import scala.io.Codec import scala.util.{Failure, Success, Try} -import play.api.libs.json.{JsObject, JsString, Json} +import play.api.libs.json.{JsArray, JsObject, JsString, Json} import play.api.libs.ws.WSClient import play.api.{Configuration, Logger} import akka.NotUsed import akka.stream.Materializer import akka.stream.scaladsl.{Sink, Source} +import javax.inject.{Inject, Provider, Singleton} +import org.scalactic.Accumulation._ +import org.scalactic._ import org.thp.cortex.models._ import org.elastic4play._ import org.elastic4play.controllers.{Fields, StringInputValue} -import org.elastic4play.services._ -import org.scalactic._ -import org.scalactic.Accumulation._ - import org.elastic4play.database.ModifyConfig +import org.elastic4play.services._ @Singleton class WorkerSrv @Inject()( @@ -128,13 +128,24 @@ class WorkerSrv @Inject()( private def find(queryDef: QueryDef, range: Option[String], sortBy: Seq[String]): (Source[Worker, NotUsed], Future[Long]) = findSrv[WorkerModel, Worker](workerModel, queryDef, range, sortBy) - def rescan(): Unit = + def rescan(): Unit = { + import org.elastic4play.services.QueryDSL._ scan( analyzersURLs.map(_ → WorkerType.analyzer) ++ respondersURLs.map(_ → WorkerType.responder) - ) + ).onComplete { _ ⇒ + userSrv.inInitAuthContext { implicit authContext ⇒ + find(any, Some("all"), Nil)._1.runForeach { worker ⇒ + workerMap.get(worker.workerDefinitionId()) match { + case Some(wd) ⇒ update(worker, Fields.empty.set("dataTypeList", Json.toJson(wd.dataTypeList))) + case None ⇒ update(worker, Fields.empty.set("dataTypeList", JsArray.empty)) + } + } + } + } + } - def scan(workerUrls: Seq[(String, WorkerType.Type)]): Unit = { + def scan(workerUrls: Seq[(String, WorkerType.Type)]): Future[Unit] = { def readUrl(url: URL, workerType: WorkerType.Type): Future[Seq[WorkerDefinition]] = url.getProtocol match { case "file" ⇒ Future.successful(readFile(Paths.get(url.toURI), workerType)) @@ -148,7 +159,7 @@ class WorkerSrv @Inject()( def readFile(path: Path, workerType: WorkerType.Type): Seq[WorkerDefinition] = { val reads = WorkerDefinition.reads(workerType) - val source = scala.io.Source.fromFile(path.toFile) + val source = scala.io.Source.fromFile(path.toFile)(Codec.UTF8) lazy val basePath = path.getParent.getParent val workerDefinitions = for { @@ -198,7 +209,7 @@ class WorkerSrv @Inject()( } } } - .foreach { worker ⇒ + .map { worker ⇒ val wmap = worker.flatten.map(w ⇒ w.id → w).toMap workerMapLock.synchronized(workerMap = wmap) logger.info(s"New worker list:\n\n\t${workerMap.values.map(a ⇒ s"${a.name} ${a.version}").mkString("\n\t")}\n") diff --git a/build.sbt b/build.sbt index 00fae0098..bd6fc016e 100644 --- a/build.sbt +++ b/build.sbt @@ -15,7 +15,8 @@ libraryDependencies ++= Seq( Dependencies.elastic4play, Dependencies.reflections, Dependencies.zip4j, - Dependencies.dockerClient + Dependencies.dockerClient, + Dependencies.akkaCluster ) resolvers += Resolver.sbtPluginRepo("releases") diff --git a/conf/application.sample b/conf/application.sample index b74a3fda1..407ab6387 100644 --- a/conf/application.sample +++ b/conf/application.sample @@ -13,7 +13,8 @@ search { # Name of the index index = cortex # ElasticSearch instance address. - uri = "http://127.0.0.1:9200/" + # For cluster, join address:port with ',': "http://ip1:9200,ip2:9200,ip3:9200" + uri = "http://127.0.0.1:9200" ## Advanced configuration # Scroll keepalive. @@ -111,18 +112,41 @@ auth { ## ANALYZERS # analyzer { - # Absolute path where you have pulled the Cortex-Analyzers repository. - path = ["path/to/Cortex-Analyzers/analyzers"] + # analyzer location + # url can be point to: + # - directory where analyzers are installed + # - json file containing the list of analyzer descriptions + urls = [ + "https://dl.bintray.com/thehive-project/cortexneurons/analyzers.json" + #"/absolute/path/of/analyzers" + ] # Sane defaults. Do not change unless you know what you are doing. fork-join-executor { - # Min number of threads available for analysis. parallelism-min = 2 - # Parallelism (threads) ... ceil(available processors * factor). parallelism-factor = 2.0 + # Max number of threads available for analysis. + parallelism-max = 4 + } +} + +# RESPONDERS +# +responder { + # responder location (same format as analyzer.urls) + urls = [ + "https://dl.bintray.com/thehive-project/cortexneurons/reponders.json" + #"/absolute/path/of/responders" + ] + # Sane defaults. Do not change unless you know what you are doing. + fork-join-executor { + # Min number of threads available for analysis. + parallelism-min = 2 + # Parallelism (threads) ... ceil(available processors * factor). + parallelism-factor = 2.0 # Max number of threads available for analysis. parallelism-max = 4 } diff --git a/conf/reference.conf b/conf/reference.conf index ba7bb932f..bd04bfaf1 100644 --- a/conf/reference.conf +++ b/conf/reference.conf @@ -34,10 +34,8 @@ play.http.session.cookieName = CORTEX_SESSION search { # Name of the index index = cortex - # Name of the ElasticSearch cluster - cluster = hive # Address of the ElasticSearch instance - host = ["127.0.0.1:9300"] + uri = "http://127.0.0.1:9200/" # Scroll keepalive keepalive = 1m # Size of the page for scroll diff --git a/docker.sbt b/docker.sbt index a5451aa5d..fbb12a50c 100644 --- a/docker.sbt +++ b/docker.sbt @@ -42,6 +42,7 @@ dockerCommands ~= { dc => "echo 'dockremap:165536:65536' >> /etc/subuid && " + "echo 'dockremap:165536:65536' >> /etc/subgid && " + "apt-get update && " + + "apt-get upgrade -y && " + "apt-get install -y --no-install-recommends python-pip python2.7-dev python3-pip python3-dev ssdeep libfuzzy-dev libfuzzy2 libimage-exiftool-perl libmagic1 build-essential git libssl-dev dnsutils iptables && " + "pip2 install -U pip setuptools && " + "pip3 install -U pip setuptools && " + diff --git a/docker/cortex/docker-compose.yml b/docker/cortex/docker-compose.yml index 9aed5af1f..d1f79fa40 100644 --- a/docker/cortex/docker-compose.yml +++ b/docker/cortex/docker-compose.yml @@ -4,7 +4,6 @@ services: image: elasticsearch:6.8.0 environment: - http.host=0.0.0.0 - - cluster.name=hive - thread_pool.index.queue_size=100000 - thread_pool.search.queue_size=100000 - thread_pool.bulk.queue_size=100000 diff --git a/package/docker/entrypoint b/package/docker/entrypoint index 0737fed1c..38e9d836f 100755 --- a/package/docker/entrypoint +++ b/package/docker/entrypoint @@ -10,6 +10,7 @@ ANALYZER_URLS=() RESPONDER_PATH=/opt/Cortex-Analyzers/responders RESPONDER_URLS=() START_DOCKER=0 +SHOW_SECRET=0 function usage { cat <<- _EOF_ @@ -20,6 +21,7 @@ function usage { --es-uri | use this string to configure elasticsearch hosts (format: http(s)://host:port,host:port(/prefix)?querystring) --es-hostname | resolve this hostname to find elasticseach instances --secret | secret to secure sessions + --show-secret | show the generated secret --analyzer-url | where analyzers are located (url or path) --responder-url | where responders are located (url or path) --start-docker | start a internal docker (inside container) to run analyzers/responders @@ -39,6 +41,7 @@ do "--es-uri") shift; ES_URI=$1;; "--es-hostname") shift; ES_HOSTNAME=$1;; "--secret") shift; SECRET=$1;; + "--show-secret") SHOW_SECRET=1;; "--analyzer-path") shift; ANALYZER_PATH=$1;; "--responder-path") shift; RESPONDER_PATH=$1;; "--analyzer-url") shift; ANALYZER_URLS+=$1;; @@ -58,8 +61,8 @@ then if test -z "$SECRET" then SECRET=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1) + test $SHOW_SECRET = 1 && echo Using secret: $SECRET fi - echo Using secret: $SECRET echo play.http.secret.key=\"$SECRET\" >> $CONFIG_FILE fi diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 7e7ace2f0..92a9f4ad3 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -20,5 +20,6 @@ object Dependencies { val zip4j = "net.lingala.zip4j" % "zip4j" % "1.3.2" val elastic4play = "org.thehive-project" %% "elastic4play" % "1.11.5" val dockerClient = "com.spotify" % "docker-client" % "8.14.4" + val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % "2.5.21" } diff --git a/version.sbt b/version.sbt index 8ba1f6fcb..4cdd74dab 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version in ThisBuild := "3.0.0-1" +version in ThisBuild := "3.0.1-1" diff --git a/www/config/webpack/global.js b/www/config/webpack/global.js index f3bf302e8..0fb83b7e2 100644 --- a/www/config/webpack/global.js +++ b/www/config/webpack/global.js @@ -15,7 +15,7 @@ let stylesLoader = rootPublic + '&sourceMap!postcss-loader!sass-loader?outputStyle=expanded&sourceMap=true&sourceMapContents=true'; -module.exports = function(_path) { +module.exports = function (_path) { let rootAssetPath = _path + 'src'; let webpackConfig = { @@ -45,11 +45,9 @@ module.exports = function(_path) { // modules resolvers module: { - rules: [ - { + rules: [{ test: /\.html$/, - use: [ - { + use: [{ loader: 'ngtemplate-loader', options: { relativeTo: path.join(_path, '/src') @@ -76,8 +74,7 @@ module.exports = function(_path) { { test: /\.js$/, exclude: [path.resolve(_path, 'node_modules')], - use: [ - { + use: [{ loader: 'babel-loader', options: { cacheDirectory: false @@ -90,8 +87,7 @@ module.exports = function(_path) { }, { test: /\.css$/, - use: [ - { + use: [{ loader: 'style-loader' }, { @@ -104,35 +100,31 @@ module.exports = function(_path) { }, { test: /\.(scss|sass)$/, - loader: DEVELOPMENT - ? 'style-loader!' + stylesLoader - : ExtractTextPlugin.extract({ - fallbackLoader: 'style-loader', - loader: stylesLoader - }) + loader: DEVELOPMENT ? + 'style-loader!' + stylesLoader : + ExtractTextPlugin.extract({ + fallbackLoader: 'style-loader', + loader: stylesLoader + }) }, { - test: /\.(woff2|woff|ttf|eot|svg)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, - use: [ - { - loader: 'url-loader', - options: { - name: 'assets/fonts/[name]_[hash].[ext]' - } + test: /\.(woff2|woff|ttf|eot|otf|svg)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, + use: [{ + loader: 'url-loader', + options: { + name: 'assets/fonts/[name]_[hash].[ext]' } - ] + }] }, { test: /\.(jpe?g|png|gif)$/i, - use: [ - { - loader: 'url-loader', - options: { - name: 'assets/images/[name]_[hash].[ext]', - limit: 10000 - } + use: [{ + loader: 'url-loader', + options: { + name: 'assets/images/[name]_[hash].[ext]', + limit: 10000 } - ] + }] } ] }, @@ -142,7 +134,9 @@ module.exports = function(_path) { new webpack.LoaderOptionsPlugin({ options: { // PostCSS - postcss: [autoprefixer({ browsers: ['last 5 versions'] })], + postcss: [autoprefixer({ + browsers: ['last 5 versions'] + })], debug: true } }), @@ -177,8 +171,7 @@ module.exports = function(_path) { ignorePaths: ['.DS_Store'] }), new ExtractTextPlugin({ - filename: - 'assets/styles/css/[name]' + + filename: 'assets/styles/css/[name]' + (NODE_ENV === 'development' ? '' : '.[chunkhash]') + '.css', allChunks: true @@ -191,4 +184,4 @@ module.exports = function(_path) { }; return webpackConfig; -}; +}; \ No newline at end of file diff --git a/www/package.json b/www/package.json index 56138bc12..117b1ebbe 100755 --- a/www/package.json +++ b/www/package.json @@ -1,6 +1,6 @@ { "name": "cortex", - "version": "3.0.0-RC4", + "version": "3.0.1", "description": "A powerfull observable analysis engine", "license": "AGPL-3.0-or-later", "homepage": "https://github.com/TheHive-Project/Cortex", @@ -75,4 +75,4 @@ "webpack": "^3.5.0", "webpack-dev-server": "^2.2.0" } -} +} \ No newline at end of file diff --git a/www/src/app/pages/admin/organizations/components/analyzers/analyzer-config-form.controller.js b/www/src/app/pages/admin/organizations/components/analyzers/analyzer-config-form.controller.js index 13a49584f..336dc401d 100644 --- a/www/src/app/pages/admin/organizations/components/analyzers/analyzer-config-form.controller.js +++ b/www/src/app/pages/admin/organizations/components/analyzers/analyzer-config-form.controller.js @@ -9,7 +9,7 @@ export default class AnalyzerConfigFormController { this.AnalyzerService = AnalyzerService; this.Tlps = Tlps; - this.rateUnits = ['Day', 'Month']; + this.rateUnits = ['Second', 'Minute', 'Hour', 'Day', 'Month']; } $onInit() { diff --git a/www/src/app/pages/admin/organizations/components/responders/responder-config-form.controller.js b/www/src/app/pages/admin/organizations/components/responders/responder-config-form.controller.js index a73d7a691..a96e2bb64 100644 --- a/www/src/app/pages/admin/organizations/components/responders/responder-config-form.controller.js +++ b/www/src/app/pages/admin/organizations/components/responders/responder-config-form.controller.js @@ -9,7 +9,7 @@ export default class ResponderConfigFormController { this.ResponderService = ResponderService; this.Tlps = Tlps; - this.rateUnits = ['Day', 'Month']; + this.rateUnits = ['Second', 'Minute', 'Hour', 'Day', 'Month']; } applyConfig(config) { diff --git a/www/src/app/pages/analyzers/analyzers.service.js b/www/src/app/pages/analyzers/analyzers.service.js index 25b091647..64a3f2631 100644 --- a/www/src/app/pages/analyzers/analyzers.service.js +++ b/www/src/app/pages/analyzers/analyzers.service.js @@ -83,9 +83,9 @@ export default class AnalyzerService { .then( response => { this.analyzers = response.data; - this.dataTypes = _.sortBy( + this.dataTypes = _.without(_.sortBy( _.uniq(_.flatten(_.map(response.data, 'dataTypeList'))) - ); + ), undefined); defered.resolve(response.data); }, diff --git a/www/src/app/pages/jobs/components/jobs.list.html b/www/src/app/pages/jobs/components/jobs.list.html index 19d296d7a..f8fdb7968 100644 --- a/www/src/app/pages/jobs/components/jobs.list.html +++ b/www/src/app/pages/jobs/components/jobs.list.html @@ -54,7 +54,7 @@

{{job.showError ? 'Hide' : 'Show'}} error -
{{job.message}}
+
{{job.errorMessage}}
diff --git a/www/src/app/pages/jobs/job.controller.js b/www/src/app/pages/jobs/job.controller.js index 2b50356d2..4482b7967 100644 --- a/www/src/app/pages/jobs/job.controller.js +++ b/www/src/app/pages/jobs/job.controller.js @@ -9,6 +9,6 @@ export default class JobController { $onInit() { this.protectDownloadsWith = this.main.config.config.protectDownloadsWith; - this.hasFileArtifact = this.job.report.artifacts.find(item => item.dataType === 'file'); + this.hasFileArtifact = (this.job.report.artifacts || []).find(item => item.dataType === 'file'); } } \ No newline at end of file diff --git a/www/src/assets/fonts/SIL Open Font License.txt b/www/src/assets/fonts/SIL Open Font License.txt new file mode 100755 index 000000000..295975a5d --- /dev/null +++ b/www/src/assets/fonts/SIL Open Font License.txt @@ -0,0 +1,43 @@ +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/www/src/assets/fonts/SourceSansPro-Black.otf b/www/src/assets/fonts/SourceSansPro-Black.otf new file mode 100755 index 000000000..0c25f3d9b Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-Black.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-BlackIt.otf b/www/src/assets/fonts/SourceSansPro-BlackIt.otf new file mode 100755 index 000000000..da3504c68 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-BlackIt.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-Bold.otf b/www/src/assets/fonts/SourceSansPro-Bold.otf new file mode 100755 index 000000000..98dbee74d Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-Bold.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-BoldIt.otf b/www/src/assets/fonts/SourceSansPro-BoldIt.otf new file mode 100755 index 000000000..6600c8631 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-BoldIt.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-ExtraLight.otf b/www/src/assets/fonts/SourceSansPro-ExtraLight.otf new file mode 100755 index 000000000..f885ce7f6 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-ExtraLight.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-ExtraLightIt.otf b/www/src/assets/fonts/SourceSansPro-ExtraLightIt.otf new file mode 100755 index 000000000..f93202427 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-ExtraLightIt.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-It.otf b/www/src/assets/fonts/SourceSansPro-It.otf new file mode 100755 index 000000000..2d627d9cf Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-It.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-Light.otf b/www/src/assets/fonts/SourceSansPro-Light.otf new file mode 100755 index 000000000..159979f60 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-Light.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-LightIt.otf b/www/src/assets/fonts/SourceSansPro-LightIt.otf new file mode 100755 index 000000000..e3d49b5fd Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-LightIt.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-Regular.otf b/www/src/assets/fonts/SourceSansPro-Regular.otf new file mode 100755 index 000000000..bdcfb27a4 Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-Regular.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-Semibold.otf b/www/src/assets/fonts/SourceSansPro-Semibold.otf new file mode 100755 index 000000000..fffdbafeb Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-Semibold.otf differ diff --git a/www/src/assets/fonts/SourceSansPro-SemiboldIt.otf b/www/src/assets/fonts/SourceSansPro-SemiboldIt.otf new file mode 100755 index 000000000..e90515b3e Binary files /dev/null and b/www/src/assets/fonts/SourceSansPro-SemiboldIt.otf differ diff --git a/www/src/assets/styles/sass/vendors/AdminLTE-fonts.scss b/www/src/assets/styles/sass/vendors/AdminLTE-fonts.scss new file mode 100644 index 000000000..f5bdca615 --- /dev/null +++ b/www/src/assets/styles/sass/vendors/AdminLTE-fonts.scss @@ -0,0 +1,440 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: normal; + font-weight: 300; + src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../../../fonts/SourceSansPro-Light.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro Regular'), local('SourceSansPro-Regular'), url('../../../fonts/SourceSansPro-Regular.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: normal; + font-weight: 600; + src: local('Source Sans Pro SemiBold'), local('SourceSansPro-SemiBold'), url('../../../fonts/SourceSansPro-Semibold.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: normal; + font-weight: 700; + src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../../../fonts/SourceSansPro-Bold.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: italic; + font-weight: 300; + src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightItalic'), url('../../../fonts/SourceSansPro-LightIt.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: italic; + font-weight: 400; + src: local('Source Sans Pro Italic'), local('SourceSansPro-Italic'), url('../../../fonts/SourceSansPro-It.otf') format('truetype'); + 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; +} + +/* cyrillic-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + unicode-range: U+0460-052F, U+20B4, U+2DE0-2DFF, U+A640-A69F; +} + +/* cyrillic */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} + +/* greek-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + unicode-range: U+1F00-1FFF; +} + +/* greek */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + unicode-range: U+0370-03FF; +} + +/* vietnamese */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + unicode-range: U+0102-0103, U+1EA0-1EF9, U+20AB; +} + +/* latin-ext */ +@font-face { + font-family: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + 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: 'Source Sans Pro'; + font-style: italic; + font-weight: 600; + src: local('Source Sans Pro SemiBold Italic'), local('SourceSansPro-SemiBoldItalic'), url('../../../fonts/SourceSansPro-SemiboldIt.otf') format('truetype'); + 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; +} \ No newline at end of file diff --git a/www/src/assets/styles/sass/vendors/AdminLTE.scss b/www/src/assets/styles/sass/vendors/AdminLTE.scss index 16c007dba..fd6574dee 100755 --- a/www/src/assets/styles/sass/vendors/AdminLTE.scss +++ b/www/src/assets/styles/sass/vendors/AdminLTE.scss @@ -1,4 +1,5 @@ -@import url(https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic); +@import url(vendors/AdminLTE-fonts.scss); + /*! * AdminLTE v2.3.7 * Author: Almsaeed Studio @@ -14,10 +15,12 @@ html, body { min-height: 100%; } + .layout-boxed html, .layout-boxed body { height: 100%; } + body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -26,20 +29,24 @@ body { overflow-x: hidden; overflow-y: auto; } + /* Layout */ .wrapper { min-height: 100%; position: relative; overflow: hidden; } + .wrapper:before, .wrapper:after { content: " "; display: table; } + .wrapper:after { clear: both; } + .layout-boxed .wrapper { max-width: 1250px; margin: 0 auto; @@ -47,9 +54,11 @@ body { box-shadow: 0 0 8px rgba(0, 0, 0, 0.5); position: relative; } + .layout-boxed { // background: url('../img/boxed-bg.jpg') repeat fixed; } + /* * Content Wrapper - contains the main content * ```.right-side has been deprecated as of v2.0.0 in favor of .content-wrapper ``` @@ -64,26 +73,33 @@ body { margin-left: 230px; z-index: 820; } + .layout-top-nav .content-wrapper, .layout-top-nav .right-side, .layout-top-nav .main-footer { margin-left: 0; } + @media (max-width: 767px) { + .content-wrapper, .right-side, .main-footer { margin-left: 0; } } + @media (min-width: 768px) { + .sidebar-collapse .content-wrapper, .sidebar-collapse .right-side, .sidebar-collapse .main-footer { margin-left: 0; } } + @media (max-width: 767px) { + .sidebar-open .content-wrapper, .sidebar-open .right-side, .sidebar-open .main-footer { @@ -93,42 +109,51 @@ body { transform: translate(230px, 0); } } + .content-wrapper, .right-side { min-height: 100%; background-color: #ecf0f5; z-index: 800; } + .main-footer { background: #fff; padding: 15px; color: #444; border-top: 1px solid #d2d6de; } + /* Fixed layout */ .fixed .main-header, .fixed .main-sidebar, .fixed .left-side { position: fixed; } + .fixed .main-header { top: 0; right: 0; left: 0; } + .fixed .content-wrapper, .fixed .right-side { padding-top: 50px; } + @media (max-width: 767px) { + .fixed .content-wrapper, .fixed .right-side { padding-top: 100px; } } + .fixed.layout-boxed .wrapper { max-width: 100%; } + body.hold-transition .content-wrapper, body.hold-transition .right-side, body.hold-transition .main-footer, @@ -141,6 +166,7 @@ body.hold-transition .main-header .logo { -o-transition: none; transition: none; } + /* Content */ .content { min-height: 250px; @@ -150,6 +176,7 @@ body.hold-transition .main-header .logo { padding-left: 15px; padding-right: 15px; } + /* H1 - H6 font */ h1, h2, @@ -165,10 +192,12 @@ h6, .h6 { font-family: 'Source Sans Pro', sans-serif; } + /* General Links */ a { color: #3c8dbc; } + a:hover, a:active, a:focus { @@ -176,16 +205,19 @@ a:focus { text-decoration: none; color: #72afd2; } + /* Page Header */ .page-header { margin: 10px 0 20px 0; font-size: 22px; } -.page-header > small { + +.page-header>small { color: #666; display: block; margin-top: 5px; } + /* * Component: Main Header * ---------------------- @@ -195,6 +227,7 @@ a:focus { max-height: 100px; z-index: 1030; } + .main-header .navbar { -webkit-transition: margin-left 0.3s ease-in-out; -o-transition: margin-left 0.3s ease-in-out; @@ -205,51 +238,64 @@ a:focus { min-height: 50px; border-radius: 0; } + .layout-top-nav .main-header .navbar { margin-left: 0; } + .main-header #navbar-search-input.form-control { background: rgba(255, 255, 255, 0.2); border-color: transparent; } + .main-header #navbar-search-input.form-control:focus, .main-header #navbar-search-input.form-control:active { border-color: rgba(0, 0, 0, 0.1); background: rgba(255, 255, 255, 0.9); } + .main-header #navbar-search-input.form-control::-moz-placeholder { color: #ccc; opacity: 1; } + .main-header #navbar-search-input.form-control:-ms-input-placeholder { color: #ccc; } + .main-header #navbar-search-input.form-control::-webkit-input-placeholder { color: #ccc; } + .main-header .navbar-custom-menu, .main-header .navbar-right { float: right; } + @media (max-width: 991px) { + .main-header .navbar-custom-menu a, .main-header .navbar-right a { color: inherit; background: transparent; } } + @media (max-width: 767px) { .main-header .navbar-right { float: none; } + .navbar-collapse .main-header .navbar-right { margin: 7.5px -15px; } - .main-header .navbar-right > li { + + .main-header .navbar-right>li { color: inherit; border: 0; } } + .main-header .sidebar-toggle { float: left; background-color: transparent; @@ -257,25 +303,31 @@ a:focus { padding: 15px 15px; font-family: fontAwesome; } + .main-header .sidebar-toggle:before { content: "\f0c9"; } + .main-header .sidebar-toggle:hover { color: #fff; } + .main-header .sidebar-toggle:focus, .main-header .sidebar-toggle:active { background: transparent; } + .main-header .sidebar-toggle .icon-bar { display: none; } -.main-header .navbar .nav > li.user > a > .fa, -.main-header .navbar .nav > li.user > a > .glyphicon, -.main-header .navbar .nav > li.user > a > .ion { + +.main-header .navbar .nav>li.user>a>.fa, +.main-header .navbar .nav>li.user>a>.glyphicon, +.main-header .navbar .nav>li.user>a>.ion { margin-right: 5px; } -.main-header .navbar .nav > li > a > .label { + +.main-header .navbar .nav>li>a>.label { position: absolute; top: 9px; right: 7px; @@ -284,6 +336,7 @@ a:focus { padding: 2px 3px; line-height: .9; } + .main-header .logo { -webkit-transition: width 0.3s ease-in-out; -o-transition: width 0.3s ease-in-out; @@ -300,30 +353,37 @@ a:focus { font-weight: 300; overflow: hidden; } + .main-header .logo .logo-lg { display: block; } + .main-header .logo .logo-mini { display: none; } + .main-header .navbar-brand { color: #fff; } + .content-header { position: relative; padding: 15px 15px 0 15px; } -.content-header > h1 { + +.content-header>h1 { margin: 0; font-size: 24px; } -.content-header > h1 > small { + +.content-header>h1>small { font-size: 15px; display: inline-block; padding-left: 4px; font-weight: 300; } -.content-header > .breadcrumb { + +.content-header>.breadcrumb { float: right; background: transparent; margin-top: 0; @@ -335,21 +395,25 @@ a:focus { right: 10px; border-radius: 2px; } -.content-header > .breadcrumb > li > a { + +.content-header>.breadcrumb>li>a { color: #444; text-decoration: none; display: inline-block; } -.content-header > .breadcrumb > li > a > .fa, -.content-header > .breadcrumb > li > a > .glyphicon, -.content-header > .breadcrumb > li > a > .ion { + +.content-header>.breadcrumb>li>a>.fa, +.content-header>.breadcrumb>li>a>.glyphicon, +.content-header>.breadcrumb>li>a>.ion { margin-right: 5px; } -.content-header > .breadcrumb > li + li:before { + +.content-header>.breadcrumb>li+li:before { content: '>\00a0'; } + @media (max-width: 991px) { - .content-header > .breadcrumb { + .content-header>.breadcrumb { position: relative; margin-top: 5px; top: 0; @@ -358,57 +422,69 @@ a:focus { background: #d2d6de; padding-left: 10px; } - .content-header > .breadcrumb li:before { + + .content-header>.breadcrumb li:before { color: #97a0b3; } } + .navbar-toggle { color: #fff; border: 0; margin: 0; padding: 15px 15px; } + @media (max-width: 991px) { - .navbar-custom-menu .navbar-nav > li { + .navbar-custom-menu .navbar-nav>li { float: left; } + .navbar-custom-menu .navbar-nav { margin: 0; float: left; } - .navbar-custom-menu .navbar-nav > li > a { + + .navbar-custom-menu .navbar-nav>li>a { padding-top: 15px; padding-bottom: 15px; line-height: 20px; } } + @media (max-width: 767px) { .main-header { position: relative; } + .main-header .logo, .main-header .navbar { width: 100%; float: none; } + .main-header .navbar { margin: 0; } + .main-header .navbar-custom-menu { float: right; } } + @media (max-width: 991px) { .navbar-collapse.pull-left { float: none !important; } - .navbar-collapse.pull-left + .navbar-custom-menu { + + .navbar-collapse.pull-left+.navbar-custom-menu { display: block; position: absolute; top: 0; right: 40px; } } + /* * Component: Sidebar * ------------------ @@ -427,13 +503,17 @@ a:focus { -o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out; transition: transform 0.3s ease-in-out, width 0.3s ease-in-out; } + @media (max-width: 767px) { + .main-sidebar, .left-side { padding-top: 100px; } } + @media (max-width: 767px) { + .main-sidebar, .left-side { -webkit-transform: translate(-230px, 0); @@ -442,7 +522,9 @@ a:focus { transform: translate(-230px, 0); } } + @media (min-width: 768px) { + .sidebar-collapse .main-sidebar, .sidebar-collapse .left-side { -webkit-transform: translate(-230px, 0); @@ -451,7 +533,9 @@ a:focus { transform: translate(-230px, 0); } } + @media (max-width: 767px) { + .sidebar-open .main-sidebar, .sidebar-open .left-side { -webkit-transform: translate(0, 0); @@ -460,99 +544,120 @@ a:focus { transform: translate(0, 0); } } + .sidebar { padding-bottom: 10px; } + .sidebar-form input:focus { border-color: transparent; } + .user-panel { position: relative; width: 100%; padding: 10px; overflow: hidden; } + .user-panel:before, .user-panel:after { content: " "; display: table; } + .user-panel:after { clear: both; } -.user-panel > .image > img { + +.user-panel>.image>img { width: 100%; max-width: 45px; height: auto; } -.user-panel > .info { + +.user-panel>.info { padding: 5px 5px 5px 15px; line-height: 1; position: absolute; left: 55px; } -.user-panel > .info > p { + +.user-panel>.info>p { font-weight: 600; margin-bottom: 9px; } -.user-panel > .info > a { + +.user-panel>.info>a { text-decoration: none; padding-right: 5px; margin-top: 3px; font-size: 11px; } -.user-panel > .info > a > .fa, -.user-panel > .info > a > .ion, -.user-panel > .info > a > .glyphicon { + +.user-panel>.info>a>.fa, +.user-panel>.info>a>.ion, +.user-panel>.info>a>.glyphicon { margin-right: 3px; } + .sidebar-menu { list-style: none; margin: 0; padding: 0; } -.sidebar-menu > li { + +.sidebar-menu>li { position: relative; margin: 0; padding: 0; } -.sidebar-menu > li > a { + +.sidebar-menu>li>a { padding: 12px 5px 12px 15px; display: block; } -.sidebar-menu > li > a > .fa, -.sidebar-menu > li > a > .glyphicon, -.sidebar-menu > li > a > .ion { + +.sidebar-menu>li>a>.fa, +.sidebar-menu>li>a>.glyphicon, +.sidebar-menu>li>a>.ion { width: 20px; } -.sidebar-menu > li .label, -.sidebar-menu > li .badge { + +.sidebar-menu>li .label, +.sidebar-menu>li .badge { margin-right: 5px; } -.sidebar-menu > li .badge { + +.sidebar-menu>li .badge { margin-top: 3px; } + .sidebar-menu li.header { padding: 10px 25px 10px 15px; font-size: 12px; } -.sidebar-menu li > a > .fa-angle-left, -.sidebar-menu li > a > .pull-right-container > .fa-angle-left { + +.sidebar-menu li>a>.fa-angle-left, +.sidebar-menu li>a>.pull-right-container>.fa-angle-left { width: auto; height: auto; padding: 0; margin-right: 10px; } -.sidebar-menu li.active > a > .fa-angle-left, -.sidebar-menu li.active > a > .pull-right-container > .fa-angle-left { + +.sidebar-menu li.active>a>.fa-angle-left, +.sidebar-menu li.active>a>.pull-right-container>.fa-angle-left { -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); -o-transform: rotate(-90deg); transform: rotate(-90deg); } -.sidebar-menu li.active > .treeview-menu { + +.sidebar-menu li.active>.treeview-menu { display: block; } + .sidebar-menu .treeview-menu { display: none; list-style: none; @@ -560,38 +665,46 @@ a:focus { margin: 0; padding-left: 5px; } + .sidebar-menu .treeview-menu .treeview-menu { padding-left: 20px; } -.sidebar-menu .treeview-menu > li { + +.sidebar-menu .treeview-menu>li { margin: 0; } -.sidebar-menu .treeview-menu > li > a { + +.sidebar-menu .treeview-menu>li>a { padding: 5px 5px 5px 15px; display: block; font-size: 14px; } -.sidebar-menu .treeview-menu > li > a > .fa, -.sidebar-menu .treeview-menu > li > a > .glyphicon, -.sidebar-menu .treeview-menu > li > a > .ion { + +.sidebar-menu .treeview-menu>li>a>.fa, +.sidebar-menu .treeview-menu>li>a>.glyphicon, +.sidebar-menu .treeview-menu>li>a>.ion { width: 20px; } -.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-left, -.sidebar-menu .treeview-menu > li > a > .pull-right-container > .fa-angle-down, -.sidebar-menu .treeview-menu > li > a > .fa-angle-left, -.sidebar-menu .treeview-menu > li > a > .fa-angle-down { + +.sidebar-menu .treeview-menu>li>a>.pull-right-container>.fa-angle-left, +.sidebar-menu .treeview-menu>li>a>.pull-right-container>.fa-angle-down, +.sidebar-menu .treeview-menu>li>a>.fa-angle-left, +.sidebar-menu .treeview-menu>li>a>.fa-angle-down { width: auto; } + /* * Component: Sidebar Mini */ @media (min-width: 768px) { + .sidebar-mini.sidebar-collapse .content-wrapper, .sidebar-mini.sidebar-collapse .right-side, .sidebar-mini.sidebar-collapse .main-footer { margin-left: 50px !important; z-index: 840; } + .sidebar-mini.sidebar-collapse .main-sidebar { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); @@ -600,97 +713,118 @@ a:focus { width: 50px !important; z-index: 850; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li { position: relative; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li>a { margin-right: 0; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span { border-top-right-radius: 4px; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:not(.treeview) > a > span { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:not(.treeview)>a>span { border-bottom-right-radius: 4px; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu { padding-top: 5px; padding-bottom: 5px; border-bottom-right-radius: 4px; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span:not(.pull-right), - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span:not(.pull-right), + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu { display: block !important; position: absolute; width: 180px; left: 50px; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > span { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>span { top: 0; margin-left: -3px; padding: 12px 5px 12px 20px; background-color: inherit; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container { float: right; - width: auto!important; - left: 200px!important; - top: 10px!important; + width: auto !important; + left: 200px !important; + top: 10px !important; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > a > .pull-right-container > .label:not(:first-of-type) { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>a>.pull-right-container>.label:not(:first-of-type) { display: none; } - .sidebar-mini.sidebar-collapse .sidebar-menu > li:hover > .treeview-menu { + + .sidebar-mini.sidebar-collapse .sidebar-menu>li:hover>.treeview-menu { top: 44px; margin-left: 0; } - .sidebar-mini.sidebar-collapse .main-sidebar .user-panel > .info, + + .sidebar-mini.sidebar-collapse .main-sidebar .user-panel>.info, .sidebar-mini.sidebar-collapse .sidebar-form, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > span, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu, - .sidebar-mini.sidebar-collapse .sidebar-menu > li > a > .pull-right, + .sidebar-mini.sidebar-collapse .sidebar-menu>li>a>span, + .sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu, + .sidebar-mini.sidebar-collapse .sidebar-menu>li>a>.pull-right, .sidebar-mini.sidebar-collapse .sidebar-menu li.header { display: none !important; -webkit-transform: translateZ(0); } + .sidebar-mini.sidebar-collapse .main-header .logo { width: 50px; } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini { + + .sidebar-mini.sidebar-collapse .main-header .logo>.logo-mini { display: block; margin-left: -15px; margin-right: -15px; font-size: 18px; } - .sidebar-mini.sidebar-collapse .main-header .logo > .logo-lg { + + .sidebar-mini.sidebar-collapse .main-header .logo>.logo-lg { display: none; } + .sidebar-mini.sidebar-collapse .main-header .navbar { margin-left: 50px; } } + .sidebar-menu, .main-sidebar .user-panel, -.sidebar-menu > li.header { +.sidebar-menu>li.header { white-space: nowrap; overflow: hidden; } + .sidebar-menu:hover { overflow: visible; } + .sidebar-form, -.sidebar-menu > li.header { +.sidebar-menu>li.header { overflow: hidden; text-overflow: clip; } -.sidebar-menu li > a { + +.sidebar-menu li>a { position: relative; } -.sidebar-menu li > a > .pull-right-container { + +.sidebar-menu li>a>.pull-right-container { position: absolute; right: 10px; top: 50%; margin-top: -7px; } + /* * Component: Control sidebar. By default, this is the right sidebar. */ @@ -699,6 +833,7 @@ a:focus { z-index: 1000; bottom: 0; } + .control-sidebar-bg, .control-sidebar { top: 0; @@ -708,99 +843,121 @@ a:focus { -o-transition: right 0.3s ease-in-out; transition: right 0.3s ease-in-out; } + .control-sidebar { position: absolute; padding-top: 50px; z-index: 1010; } + @media (max-width: 768px) { .control-sidebar { padding-top: 100px; } } -.control-sidebar > .tab-content { + +.control-sidebar>.tab-content { padding: 10px 15px; } + .control-sidebar.control-sidebar-open, -.control-sidebar.control-sidebar-open + .control-sidebar-bg { +.control-sidebar.control-sidebar-open+.control-sidebar-bg { right: 0; } + .control-sidebar-open .control-sidebar-bg, .control-sidebar-open .control-sidebar { right: 0; } + @media (min-width: 768px) { + .control-sidebar-open .content-wrapper, .control-sidebar-open .right-side, .control-sidebar-open .main-footer { margin-right: 230px; } } -.nav-tabs.control-sidebar-tabs > li:first-of-type > a, -.nav-tabs.control-sidebar-tabs > li:first-of-type > a:hover, -.nav-tabs.control-sidebar-tabs > li:first-of-type > a:focus { + +.nav-tabs.control-sidebar-tabs>li:first-of-type>a, +.nav-tabs.control-sidebar-tabs>li:first-of-type>a:hover, +.nav-tabs.control-sidebar-tabs>li:first-of-type>a:focus { border-left-width: 0; } -.nav-tabs.control-sidebar-tabs > li > a { + +.nav-tabs.control-sidebar-tabs>li>a { border-radius: 0; } -.nav-tabs.control-sidebar-tabs > li > a, -.nav-tabs.control-sidebar-tabs > li > a:hover { + +.nav-tabs.control-sidebar-tabs>li>a, +.nav-tabs.control-sidebar-tabs>li>a:hover { border-top: none; border-right: none; border-left: 1px solid transparent; border-bottom: 1px solid transparent; } -.nav-tabs.control-sidebar-tabs > li > a .icon { + +.nav-tabs.control-sidebar-tabs>li>a .icon { font-size: 16px; } -.nav-tabs.control-sidebar-tabs > li.active > a, -.nav-tabs.control-sidebar-tabs > li.active > a:hover, -.nav-tabs.control-sidebar-tabs > li.active > a:focus, -.nav-tabs.control-sidebar-tabs > li.active > a:active { + +.nav-tabs.control-sidebar-tabs>li.active>a, +.nav-tabs.control-sidebar-tabs>li.active>a:hover, +.nav-tabs.control-sidebar-tabs>li.active>a:focus, +.nav-tabs.control-sidebar-tabs>li.active>a:active { border-top: none; border-right: none; border-bottom: none; } + @media (max-width: 768px) { .nav-tabs.control-sidebar-tabs { display: table; } - .nav-tabs.control-sidebar-tabs > li { + + .nav-tabs.control-sidebar-tabs>li { display: table-cell; } } + .control-sidebar-heading { font-weight: 400; font-size: 16px; padding: 10px 0; margin-bottom: 10px; } + .control-sidebar-subheading { display: block; font-weight: 400; font-size: 14px; } + .control-sidebar-menu { list-style: none; padding: 0; margin: 0 -15px; } -.control-sidebar-menu > li > a { + +.control-sidebar-menu>li>a { display: block; padding: 10px 15px; } -.control-sidebar-menu > li > a:before, -.control-sidebar-menu > li > a:after { + +.control-sidebar-menu>li>a:before, +.control-sidebar-menu>li>a:after { content: " "; display: table; } -.control-sidebar-menu > li > a:after { + +.control-sidebar-menu>li>a:after { clear: both; } -.control-sidebar-menu > li > a > .control-sidebar-subheading { + +.control-sidebar-menu>li>a>.control-sidebar-subheading { margin-top: 0; } + .control-sidebar-menu .menu-icon { float: left; width: 35px; @@ -809,111 +966,138 @@ a:focus { text-align: center; line-height: 35px; } + .control-sidebar-menu .menu-info { margin-left: 45px; margin-top: 3px; } -.control-sidebar-menu .menu-info > .control-sidebar-subheading { + +.control-sidebar-menu .menu-info>.control-sidebar-subheading { margin: 0; } -.control-sidebar-menu .menu-info > p { + +.control-sidebar-menu .menu-info>p { margin: 0; font-size: 11px; } + .control-sidebar-menu .progress { margin: 0; } + .control-sidebar-dark { color: #b8c7ce; } + .control-sidebar-dark, -.control-sidebar-dark + .control-sidebar-bg { +.control-sidebar-dark+.control-sidebar-bg { background: #222d32; } + .control-sidebar-dark .nav-tabs.control-sidebar-tabs { border-bottom: #1c2529; } -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a { + +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a { background: #181f23; color: #b8c7ce; } -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus { + +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus { border-left-color: #141a1d; border-bottom-color: #141a1d; } -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:focus, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:active { + +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:focus, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:active { background: #1c2529; } -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li > a:hover { + +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li>a:hover { color: #fff; } -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:hover, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:focus, -.control-sidebar-dark .nav-tabs.control-sidebar-tabs > li.active > a:active { + +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:hover, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:focus, +.control-sidebar-dark .nav-tabs.control-sidebar-tabs>li.active>a:active { background: #222d32; color: #fff; } + .control-sidebar-dark .control-sidebar-heading, .control-sidebar-dark .control-sidebar-subheading { color: #fff; } -.control-sidebar-dark .control-sidebar-menu > li > a:hover { + +.control-sidebar-dark .control-sidebar-menu>li>a:hover { background: #1e282c; } -.control-sidebar-dark .control-sidebar-menu > li > a .menu-info > p { + +.control-sidebar-dark .control-sidebar-menu>li>a .menu-info>p { color: #b8c7ce; } + .control-sidebar-light { color: #5e5e5e; } + .control-sidebar-light, -.control-sidebar-light + .control-sidebar-bg { +.control-sidebar-light+.control-sidebar-bg { background: #f9fafc; border-left: 1px solid #d2d6de; } + .control-sidebar-light .nav-tabs.control-sidebar-tabs { border-bottom: #d2d6de; } -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a { + +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a { background: #e8ecf4; color: #444444; } -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus { + +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus { border-left-color: #d2d6de; border-bottom-color: #d2d6de; } -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:focus, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li > a:active { + +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:hover, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:focus, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li>a:active { background: #eff1f7; } -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:hover, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:focus, -.control-sidebar-light .nav-tabs.control-sidebar-tabs > li.active > a:active { + +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:hover, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:focus, +.control-sidebar-light .nav-tabs.control-sidebar-tabs>li.active>a:active { background: #f9fafc; color: #111; } + .control-sidebar-light .control-sidebar-heading, .control-sidebar-light .control-sidebar-subheading { color: #111; } + .control-sidebar-light .control-sidebar-menu { margin-left: -14px; } -.control-sidebar-light .control-sidebar-menu > li > a:hover { + +.control-sidebar-light .control-sidebar-menu>li>a:hover { background: #f4f4f5; } -.control-sidebar-light .control-sidebar-menu > li > a .menu-info > p { + +.control-sidebar-light .control-sidebar-menu>li>a .menu-info>p { color: #5e5e5e; } + /* * Component: Dropdown menus * ------------------------- @@ -923,37 +1107,44 @@ a:focus { box-shadow: none; border-color: #eee; } -.dropdown-menu > li > a { + +.dropdown-menu>li>a { color: #777; } -.dropdown-menu > li > a > .glyphicon, -.dropdown-menu > li > a > .fa, -.dropdown-menu > li > a > .ion { + +.dropdown-menu>li>a>.glyphicon, +.dropdown-menu>li>a>.fa, +.dropdown-menu>li>a>.ion { margin-right: 10px; } -.dropdown-menu > li > a:hover { + +.dropdown-menu>li>a:hover { background-color: #e1e3e9; color: #333; } -.dropdown-menu > .divider { + +.dropdown-menu>.divider { background-color: #eee; } -.navbar-nav > .notifications-menu > .dropdown-menu, -.navbar-nav > .messages-menu > .dropdown-menu, -.navbar-nav > .tasks-menu > .dropdown-menu { + +.navbar-nav>.notifications-menu>.dropdown-menu, +.navbar-nav>.messages-menu>.dropdown-menu, +.navbar-nav>.tasks-menu>.dropdown-menu { width: 280px; padding: 0 0 0 0; margin: 0; top: 100%; } -.navbar-nav > .notifications-menu > .dropdown-menu > li, -.navbar-nav > .messages-menu > .dropdown-menu > li, -.navbar-nav > .tasks-menu > .dropdown-menu > li { + +.navbar-nav>.notifications-menu>.dropdown-menu>li, +.navbar-nav>.messages-menu>.dropdown-menu>li, +.navbar-nav>.tasks-menu>.dropdown-menu>li { position: relative; } -.navbar-nav > .notifications-menu > .dropdown-menu > li.header, -.navbar-nav > .messages-menu > .dropdown-menu > li.header, -.navbar-nav > .tasks-menu > .dropdown-menu > li.header { + +.navbar-nav>.notifications-menu>.dropdown-menu>li.header, +.navbar-nav>.messages-menu>.dropdown-menu>li.header, +.navbar-nav>.tasks-menu>.dropdown-menu>li.header { border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 0; @@ -964,9 +1155,10 @@ a:focus { color: #444444; font-size: 14px; } -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { + +.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a, +.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a, +.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 4px; @@ -978,121 +1170,143 @@ a:focus { color: #444 !important; text-align: center; } + @media (max-width: 991px) { - .navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .messages-menu > .dropdown-menu > li.footer > a, - .navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a { + + .navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a, + .navbar-nav>.messages-menu>.dropdown-menu>li.footer>a, + .navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a { background: #fff !important; color: #444 !important; } } -.navbar-nav > .notifications-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li.footer > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li.footer > a:hover { + +.navbar-nav>.notifications-menu>.dropdown-menu>li.footer>a:hover, +.navbar-nav>.messages-menu>.dropdown-menu>li.footer>a:hover, +.navbar-nav>.tasks-menu>.dropdown-menu>li.footer>a:hover { text-decoration: none; font-weight: normal; } -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu { + +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu, +.navbar-nav>.messages-menu>.dropdown-menu>li .menu, +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu { max-height: 200px; margin: 0; padding: 0; list-style: none; overflow-x: hidden; } -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a, +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a, +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a { display: block; white-space: nowrap; /* Prevent text from breaking */ border-bottom: 1px solid #f4f4f4; } -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:hover, -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a:hover { + +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a:hover, +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:hover, +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a:hover { background: #f4f4f4; text-decoration: none; } -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a { + +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a { color: #444444; overflow: hidden; text-overflow: ellipsis; padding: 10px; } -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .glyphicon, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .fa, -.navbar-nav > .notifications-menu > .dropdown-menu > li .menu > li > a > .ion { + +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.glyphicon, +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.fa, +.navbar-nav>.notifications-menu>.dropdown-menu>li .menu>li>a>.ion { width: 20px; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a { margin: 0; padding: 10px 10px; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > div > img { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>div>img { margin: auto 10px auto auto; width: 40px; height: 40px; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4 { padding: 0; margin: 0 0 0 45px; color: #444444; font-size: 15px; position: relative; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > h4 > small { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>h4>small { color: #999999; font-size: 10px; position: absolute; top: 0; right: 0; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a > p { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a>p { margin: 0 0 0 45px; font-size: 12px; color: #888888; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:before, -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:before, +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after { content: " "; display: table; } -.navbar-nav > .messages-menu > .dropdown-menu > li .menu > li > a:after { + +.navbar-nav>.messages-menu>.dropdown-menu>li .menu>li>a:after { clear: both; } -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a { + +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a { padding: 10px; } -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > h3 { + +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>h3 { font-size: 14px; padding: 0; margin: 0 0 10px 0; color: #666666; } -.navbar-nav > .tasks-menu > .dropdown-menu > li .menu > li > a > .progress { + +.navbar-nav>.tasks-menu>.dropdown-menu>li .menu>li>a>.progress { padding: 0; margin: 0; } -.navbar-nav > .user-menu > .dropdown-menu { + +.navbar-nav>.user-menu>.dropdown-menu { border-top-right-radius: 0; border-top-left-radius: 0; padding: 1px 0 0 0; border-top-width: 0; width: 280px; } -.navbar-nav > .user-menu > .dropdown-menu, -.navbar-nav > .user-menu > .dropdown-menu > .user-body { + +.navbar-nav>.user-menu>.dropdown-menu, +.navbar-nav>.user-menu>.dropdown-menu>.user-body { border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; } -.navbar-nav > .user-menu > .dropdown-menu > li.user-header { + +.navbar-nav>.user-menu>.dropdown-menu>li.user-header { height: 175px; padding: 10px; text-align: center; } -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > img { + +.navbar-nav>.user-menu>.dropdown-menu>li.user-header>img { z-index: 5; height: 90px; width: 90px; @@ -1100,60 +1314,73 @@ a:focus { border-color: transparent; border-color: rgba(255, 255, 255, 0.2); } -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p { + +.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p { z-index: 5; color: #fff; color: rgba(255, 255, 255, 0.8); font-size: 17px; margin-top: 10px; } -.navbar-nav > .user-menu > .dropdown-menu > li.user-header > p > small { + +.navbar-nav>.user-menu>.dropdown-menu>li.user-header>p>small { display: block; font-size: 12px; } -.navbar-nav > .user-menu > .dropdown-menu > .user-body { + +.navbar-nav>.user-menu>.dropdown-menu>.user-body { padding: 15px; border-bottom: 1px solid #f4f4f4; border-top: 1px solid #dddddd; } -.navbar-nav > .user-menu > .dropdown-menu > .user-body:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { + +.navbar-nav>.user-menu>.dropdown-menu>.user-body:before, +.navbar-nav>.user-menu>.dropdown-menu>.user-body:after { content: " "; display: table; } -.navbar-nav > .user-menu > .dropdown-menu > .user-body:after { + +.navbar-nav>.user-menu>.dropdown-menu>.user-body:after { clear: both; } -.navbar-nav > .user-menu > .dropdown-menu > .user-body a { + +.navbar-nav>.user-menu>.dropdown-menu>.user-body a { color: #444 !important; } + @media (max-width: 991px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-body a { + .navbar-nav>.user-menu>.dropdown-menu>.user-body a { background: #fff !important; color: #444 !important; } } -.navbar-nav > .user-menu > .dropdown-menu > .user-footer { + +.navbar-nav>.user-menu>.dropdown-menu>.user-footer { background-color: #f9f9f9; padding: 10px; } -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:before, -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { + +.navbar-nav>.user-menu>.dropdown-menu>.user-footer:before, +.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after { content: " "; display: table; } -.navbar-nav > .user-menu > .dropdown-menu > .user-footer:after { + +.navbar-nav>.user-menu>.dropdown-menu>.user-footer:after { clear: both; } -.navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default { + +.navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default { color: #666666; } + @media (max-width: 991px) { - .navbar-nav > .user-menu > .dropdown-menu > .user-footer .btn-default:hover { + .navbar-nav>.user-menu>.dropdown-menu>.user-footer .btn-default:hover { background-color: #f9f9f9; } } -.navbar-nav > .user-menu .user-image { + +.navbar-nav>.user-menu .user-image { float: left; width: 25px; height: 25px; @@ -1161,81 +1388,98 @@ a:focus { margin-right: 10px; margin-top: -2px; } + @media (max-width: 767px) { - .navbar-nav > .user-menu .user-image { + .navbar-nav>.user-menu .user-image { float: none; margin-right: 0; margin-top: -8px; line-height: 10px; } } + /* Add fade animation to dropdown menus by appending the class .animated-dropdown-menu to the .dropdown-menu ul (or ol)*/ -.open:not(.dropup) > .animated-dropdown-menu { +.open:not(.dropup)>.animated-dropdown-menu { backface-visibility: visible !important; -webkit-animation: flipInX 0.7s both; -o-animation: flipInX 0.7s both; animation: flipInX 0.7s both; } + @keyframes flipInX { 0% { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transition-timing-function: ease-in; opacity: 0; } + 40% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transition-timing-function: ease-in; } + 60% { transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } + 80% { transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } + 100% { transform: perspective(400px); } } + @-webkit-keyframes flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; opacity: 0; } + 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; } + 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } + 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } + 100% { -webkit-transform: perspective(400px); } } + /* Fix dropdown menu in navbars */ -.navbar-custom-menu > .navbar-nav > li { +.navbar-custom-menu>.navbar-nav>li { position: relative; } -.navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + +.navbar-custom-menu>.navbar-nav>li>.dropdown-menu { position: absolute; right: 0; left: auto; } + @media (max-width: 991px) { - .navbar-custom-menu > .navbar-nav { + .navbar-custom-menu>.navbar-nav { float: right; } - .navbar-custom-menu > .navbar-nav > li { + + .navbar-custom-menu>.navbar-nav>li { position: static; } - .navbar-custom-menu > .navbar-nav > li > .dropdown-menu { + + .navbar-custom-menu>.navbar-nav>li>.dropdown-menu { position: absolute; right: 5%; left: auto; @@ -1243,6 +1487,7 @@ a:focus { background: #fff; } } + /* * Component: Form * --------------- @@ -1252,128 +1497,155 @@ a:focus { box-shadow: none; border-color: #d2d6de; } + .form-control:focus { border-color: #3c8dbc; box-shadow: none; } + .form-control::-moz-placeholder, .form-control:-ms-input-placeholder, .form-control::-webkit-input-placeholder { color: #bbb; opacity: 1; } + .form-control:not(select) { -webkit-appearance: none; -moz-appearance: none; appearance: none; } + .form-group.has-success label { color: #00a65a; } + .form-group.has-success .form-control, .form-group.has-success .input-group-addon { border-color: #00a65a; box-shadow: none; } + .form-group.has-success .help-block { color: #00a65a; } + .form-group.has-warning label { color: #f39c12; } + .form-group.has-warning .form-control, .form-group.has-warning .input-group-addon { border-color: #f39c12; box-shadow: none; } + .form-group.has-warning .help-block { color: #f39c12; } + .form-group.has-error label { color: #dd4b39; } + .form-group.has-error .form-control, .form-group.has-error .input-group-addon { border-color: #dd4b39; box-shadow: none; } + .form-group.has-error .help-block { color: #dd4b39; } + /* Input group */ .input-group .input-group-addon { border-radius: 0; border-color: #d2d6de; background-color: #fff; } + /* button groups */ .btn-group-vertical .btn.btn-flat:first-of-type, .btn-group-vertical .btn.btn-flat:last-of-type { border-radius: 0; } -.icheck > label { + +.icheck>label { padding-left: 0; } + /* support Font Awesome icons in form-control */ .form-control-feedback.fa { line-height: 34px; } -.input-lg + .form-control-feedback.fa, -.input-group-lg + .form-control-feedback.fa, -.form-group-lg .form-control + .form-control-feedback.fa { + +.input-lg+.form-control-feedback.fa, +.input-group-lg+.form-control-feedback.fa, +.form-group-lg .form-control+.form-control-feedback.fa { line-height: 46px; } -.input-sm + .form-control-feedback.fa, -.input-group-sm + .form-control-feedback.fa, -.form-group-sm .form-control + .form-control-feedback.fa { + +.input-sm+.form-control-feedback.fa, +.input-group-sm+.form-control-feedback.fa, +.form-group-sm .form-control+.form-control-feedback.fa { line-height: 30px; } + /* * Component: Progress Bar * ----------------------- */ .progress, -.progress > .progress-bar { +.progress>.progress-bar { -webkit-box-shadow: none; box-shadow: none; } + .progress, -.progress > .progress-bar, +.progress>.progress-bar, .progress .progress-bar, -.progress > .progress-bar .progress-bar { +.progress>.progress-bar .progress-bar { border-radius: 1px; } + /* size variation */ .progress.sm, .progress-sm { height: 10px; } + .progress.sm, .progress-sm, .progress.sm .progress-bar, .progress-sm .progress-bar { border-radius: 1px; } + .progress.xs, .progress-xs { height: 7px; } + .progress.xs, .progress-xs, .progress.xs .progress-bar, .progress-xs .progress-bar { border-radius: 1px; } + .progress.xxs, .progress-xxs { height: 3px; } + .progress.xxs, .progress-xxs, .progress.xxs .progress-bar, .progress-xxs .progress-bar { border-radius: 1px; } + /* Vertical bars */ .progress.vertical { position: relative; @@ -1382,83 +1654,101 @@ a:focus { display: inline-block; margin-right: 10px; } -.progress.vertical > .progress-bar { + +.progress.vertical>.progress-bar { width: 100%; position: absolute; bottom: 0; } + .progress.vertical.sm, .progress.vertical.progress-sm { width: 20px; } + .progress.vertical.xs, .progress.vertical.progress-xs { width: 10px; } + .progress.vertical.xxs, .progress.vertical.progress-xxs { width: 3px; } + .progress-group .progress-text { font-weight: 600; } + .progress-group .progress-number { float: right; } + /* Remove margins from progress bars when put in a table */ -.table tr > td .progress { +.table tr>td .progress { margin: 0; } + .progress-bar-light-blue, .progress-bar-primary { background-color: #3c8dbc; } + .progress-striped .progress-bar-light-blue, .progress-striped .progress-bar-primary { 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-green, .progress-bar-success { background-color: #00a65a; } + .progress-striped .progress-bar-green, .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-aqua, .progress-bar-info { background-color: #00c0ef; } + .progress-striped .progress-bar-aqua, .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-yellow, .progress-bar-warning { background-color: #f39c12; } + .progress-striped .progress-bar-yellow, .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-red, .progress-bar-danger { background-color: #dd4b39; } + .progress-striped .progress-bar-red, .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); } + /* * Component: Small Box * -------------------- @@ -1470,10 +1760,12 @@ a:focus { margin-bottom: 20px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } -.small-box > .inner { + +.small-box>.inner { padding: 10px; } -.small-box > .small-box-footer { + +.small-box>.small-box-footer { position: relative; text-align: center; padding: 3px 0; @@ -1484,10 +1776,12 @@ a:focus { background: rgba(0, 0, 0, 0.1); text-decoration: none; } -.small-box > .small-box-footer:hover { + +.small-box>.small-box-footer:hover { color: #fff; background: rgba(0, 0, 0, 0.15); } + .small-box h3 { font-size: 38px; font-weight: bold; @@ -1495,19 +1789,23 @@ a:focus { white-space: nowrap; padding: 0; } + .small-box p { font-size: 15px; } -.small-box p > small { + +.small-box p>small { display: block; color: #f9f9f9; font-size: 13px; margin-top: 5px; } + .small-box h3, .small-box p { z-index: 5; } + .small-box .icon { -webkit-transition: all 0.3s linear; -o-transition: all 0.3s linear; @@ -1519,24 +1817,30 @@ a:focus { font-size: 90px; color: rgba(0, 0, 0, 0.15); } + .small-box:hover { text-decoration: none; color: #f9f9f9; } + .small-box:hover .icon { font-size: 95px; } + @media (max-width: 767px) { .small-box { text-align: center; } + .small-box .icon { display: none; } + .small-box p { font-size: 12px; } } + /* * Component: Box * -------------- @@ -1550,137 +1854,174 @@ a:focus { width: 100%; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); } + .box.box-primary { border-top-color: #3c8dbc; } + .box.box-info { border-top-color: #00c0ef; } + .box.box-danger { border-top-color: #dd4b39; } + .box.box-warning { border-top-color: #f39c12; } + .box.box-success { border-top-color: #00a65a; } + .box.box-default { border-top-color: #d2d6de; } + .box.collapsed-box .box-body, .box.collapsed-box .box-footer { display: none; } -.box .nav-stacked > li { + +.box .nav-stacked>li { border-bottom: 1px solid #f4f4f4; margin: 0; } -.box .nav-stacked > li:last-of-type { + +.box .nav-stacked>li:last-of-type { border-bottom: none; } + .box.height-control .box-body { max-height: 300px; overflow: auto; } + .box .border-right { border-right: 1px solid #f4f4f4; } + .box .border-left { border-left: 1px solid #f4f4f4; } + .box.box-solid { border-top: 0; } -.box.box-solid > .box-header .btn.btn-default { + +.box.box-solid>.box-header .btn.btn-default { background: transparent; } -.box.box-solid > .box-header .btn:hover, -.box.box-solid > .box-header a:hover { + +.box.box-solid>.box-header .btn:hover, +.box.box-solid>.box-header a:hover { background: rgba(0, 0, 0, 0.1); } + .box.box-solid.box-default { border: 1px solid #d2d6de; } -.box.box-solid.box-default > .box-header { + +.box.box-solid.box-default>.box-header { color: #444444; background: #d2d6de; background-color: #d2d6de; } -.box.box-solid.box-default > .box-header a, -.box.box-solid.box-default > .box-header .btn { + +.box.box-solid.box-default>.box-header a, +.box.box-solid.box-default>.box-header .btn { color: #444444; } + .box.box-solid.box-primary { border: 1px solid #3c8dbc; } -.box.box-solid.box-primary > .box-header { + +.box.box-solid.box-primary>.box-header { color: #ffffff; background: #3c8dbc; background-color: #3c8dbc; } -.box.box-solid.box-primary > .box-header a, -.box.box-solid.box-primary > .box-header .btn { + +.box.box-solid.box-primary>.box-header a, +.box.box-solid.box-primary>.box-header .btn { color: #ffffff; } + .box.box-solid.box-info { border: 1px solid #00c0ef; } -.box.box-solid.box-info > .box-header { + +.box.box-solid.box-info>.box-header { color: #ffffff; background: #00c0ef; background-color: #00c0ef; } -.box.box-solid.box-info > .box-header a, -.box.box-solid.box-info > .box-header .btn { + +.box.box-solid.box-info>.box-header a, +.box.box-solid.box-info>.box-header .btn { color: #ffffff; } + .box.box-solid.box-danger { border: 1px solid #dd4b39; } -.box.box-solid.box-danger > .box-header { + +.box.box-solid.box-danger>.box-header { color: #ffffff; background: #dd4b39; background-color: #dd4b39; } -.box.box-solid.box-danger > .box-header a, -.box.box-solid.box-danger > .box-header .btn { + +.box.box-solid.box-danger>.box-header a, +.box.box-solid.box-danger>.box-header .btn { color: #ffffff; } + .box.box-solid.box-warning { border: 1px solid #f39c12; } -.box.box-solid.box-warning > .box-header { + +.box.box-solid.box-warning>.box-header { color: #ffffff; background: #f39c12; background-color: #f39c12; } -.box.box-solid.box-warning > .box-header a, -.box.box-solid.box-warning > .box-header .btn { + +.box.box-solid.box-warning>.box-header a, +.box.box-solid.box-warning>.box-header .btn { color: #ffffff; } + .box.box-solid.box-success { border: 1px solid #00a65a; } -.box.box-solid.box-success > .box-header { + +.box.box-solid.box-success>.box-header { color: #ffffff; background: #00a65a; background-color: #00a65a; } -.box.box-solid.box-success > .box-header a, -.box.box-solid.box-success > .box-header .btn { + +.box.box-solid.box-success>.box-header a, +.box.box-solid.box-success>.box-header .btn { color: #ffffff; } -.box.box-solid > .box-header > .box-tools .btn { + +.box.box-solid>.box-header>.box-tools .btn { border: 0; box-shadow: none; } -.box.box-solid[class*='bg'] > .box-header { + +.box.box-solid[class*='bg']>.box-header { color: #fff; } -.box .box-group > .box { + +.box .box-group>.box { margin-bottom: 5px; } + .box .knob-label { text-align: center; color: #333; @@ -1688,24 +2029,27 @@ a:focus { font-size: 12px; margin-bottom: 0.3em; } -.box > .overlay, -.overlay-wrapper > .overlay, -.box > .loading-img, -.overlay-wrapper > .loading-img { + +.box>.overlay, +.overlay-wrapper>.overlay, +.box>.loading-img, +.overlay-wrapper>.loading-img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + .box .overlay, .overlay-wrapper .overlay { z-index: 50; background: rgba(255, 255, 255, 0.7); border-radius: 3px; } -.box .overlay > .fa, -.overlay-wrapper .overlay > .fa { + +.box .overlay>.fa, +.overlay-wrapper .overlay>.fa { position: absolute; top: 50%; left: 50%; @@ -1714,10 +2058,12 @@ a:focus { color: #000; font-size: 30px; } + .box .overlay.dark, .overlay-wrapper .overlay.dark { background: rgba(0, 0, 0, 0.5); } + .box-header:before, .box-body:before, .box-footer:before, @@ -1727,62 +2073,75 @@ a:focus { content: " "; display: table; } + .box-header:after, .box-body:after, .box-footer:after { clear: both; } + .box-header { color: #444; display: block; padding: 10px; position: relative; } + .box-header.with-border { border-bottom: 1px solid #f4f4f4; } + .collapsed-box .box-header.with-border { border-bottom: none; } -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion, + +.box-header>.fa, +.box-header>.glyphicon, +.box-header>.ion, .box-header .box-title { display: inline-block; font-size: 18px; margin: 0; line-height: 1; } -.box-header > .fa, -.box-header > .glyphicon, -.box-header > .ion { + +.box-header>.fa, +.box-header>.glyphicon, +.box-header>.ion { margin-right: 5px; } -.box-header > .box-tools { + +.box-header>.box-tools { position: absolute; right: 10px; top: 5px; } -.box-header > .box-tools [data-toggle="tooltip"] { + +.box-header>.box-tools [data-toggle="tooltip"] { position: relative; } -.box-header > .box-tools.pull-right .dropdown-menu { + +.box-header>.box-tools.pull-right .dropdown-menu { right: 0; left: auto; } + .btn-box-tool { padding: 5px; font-size: 12px; background: transparent; color: #97a0b3; } + .open .btn-box-tool, .btn-box-tool:hover { color: #606c84; } + .btn-box-tool.btn:active { box-shadow: none; } + .box-body { border-top-left-radius: 0; border-top-right-radius: 0; @@ -1790,34 +2149,42 @@ a:focus { border-bottom-left-radius: 3px; padding: 10px; } + .no-header .box-body { border-top-right-radius: 3px; border-top-left-radius: 3px; } -.box-body > .table { + +.box-body>.table { margin-bottom: 0; } + .box-body .fc { margin-top: 5px; } + .box-body .full-width-chart { margin: -19px; } + .box-body.no-padding .full-width-chart { margin: -9px; } + .box-body .box-pane { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 3px; } + .box-body .box-pane-right { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 0; } + .box-footer { border-top-left-radius: 0; border-top-right-radius: 0; @@ -1827,52 +2194,65 @@ a:focus { padding: 10px; background-color: #ffffff; } + .chart-legend { margin: 10px 0; } + @media (max-width: 991px) { - .chart-legend > li { + .chart-legend>li { float: left; margin-right: 10px; } } + .box-comments { background: #f7f7f7; } + .box-comments .box-comment { padding: 8px 0; border-bottom: 1px solid #eee; } + .box-comments .box-comment:before, .box-comments .box-comment:after { content: " "; display: table; } + .box-comments .box-comment:after { clear: both; } + .box-comments .box-comment:last-of-type { border-bottom: 0; } + .box-comments .box-comment:first-of-type { padding-top: 0; } + .box-comments .box-comment img { float: left; } + .box-comments .comment-text { margin-left: 40px; color: #555; } + .box-comments .username { color: #444; display: block; font-weight: 600; } + .box-comments .text-muted { font-weight: 400; font-size: 12px; } + /* Widget: TODO LIST */ .todo-list { margin: 0; @@ -1880,7 +2260,8 @@ a:focus { list-style: none; overflow: auto; } -.todo-list > li { + +.todo-list>li { border-radius: 2px; padding: 10px; background: #f4f4f4; @@ -1888,133 +2269,166 @@ a:focus { border-left: 2px solid #e6e7e8; color: #444; } -.todo-list > li:last-of-type { + +.todo-list>li:last-of-type { margin-bottom: 0; } -.todo-list > li > input[type='checkbox'] { + +.todo-list>li>input[type='checkbox'] { margin: 0 10px 0 5px; } -.todo-list > li .text { + +.todo-list>li .text { display: inline-block; margin-left: 5px; font-weight: 600; } -.todo-list > li .label { + +.todo-list>li .label { margin-left: 10px; font-size: 9px; } -.todo-list > li .tools { + +.todo-list>li .tools { display: none; float: right; color: #dd4b39; } -.todo-list > li .tools > .fa, -.todo-list > li .tools > .glyphicon, -.todo-list > li .tools > .ion { + +.todo-list>li .tools>.fa, +.todo-list>li .tools>.glyphicon, +.todo-list>li .tools>.ion { margin-right: 5px; cursor: pointer; } -.todo-list > li:hover .tools { + +.todo-list>li:hover .tools { display: inline-block; } -.todo-list > li.done { + +.todo-list>li.done { color: #999; } -.todo-list > li.done .text { + +.todo-list>li.done .text { text-decoration: line-through; font-weight: 500; } -.todo-list > li.done .label { + +.todo-list>li.done .label { background: #d2d6de !important; } + .todo-list .danger { border-left-color: #dd4b39; } + .todo-list .warning { border-left-color: #f39c12; } + .todo-list .info { border-left-color: #00c0ef; } + .todo-list .success { border-left-color: #00a65a; } + .todo-list .primary { border-left-color: #3c8dbc; } + .todo-list .handle { display: inline-block; cursor: move; margin: 0 5px; } + /* Chat widget (DEPRECATED - this will be removed in the next major release. Use Direct Chat instead)*/ .chat { padding: 5px 20px 5px 10px; } + .chat .item { margin-bottom: 10px; } + .chat .item:before, .chat .item:after { content: " "; display: table; } + .chat .item:after { clear: both; } -.chat .item > img { + +.chat .item>img { width: 40px; height: 40px; border: 2px solid transparent; border-radius: 50%; } -.chat .item > .online { + +.chat .item>.online { border: 2px solid #00a65a; } -.chat .item > .offline { + +.chat .item>.offline { border: 2px solid #dd4b39; } -.chat .item > .message { + +.chat .item>.message { margin-left: 55px; margin-top: -40px; } -.chat .item > .message > .name { + +.chat .item>.message>.name { display: block; font-weight: 600; } -.chat .item > .attachment { + +.chat .item>.attachment { border-radius: 3px; background: #f4f4f4; margin-left: 65px; margin-right: 15px; padding: 10px; } -.chat .item > .attachment > h4 { + +.chat .item>.attachment>h4 { margin: 0 0 5px 0; font-weight: 600; font-size: 14px; } -.chat .item > .attachment > p, -.chat .item > .attachment > .filename { + +.chat .item>.attachment>p, +.chat .item>.attachment>.filename { font-weight: 600; font-size: 13px; font-style: italic; margin: 0; } -.chat .item > .attachment:before, -.chat .item > .attachment:after { + +.chat .item>.attachment:before, +.chat .item>.attachment:after { content: " "; display: table; } -.chat .item > .attachment:after { + +.chat .item>.attachment:after { clear: both; } + .box-input { max-width: 200px; } + .modal .panel-body { color: #444; } + /* * Component: Info Box * ------------------- @@ -2028,21 +2442,26 @@ a:focus { border-radius: 2px; margin-bottom: 15px; } + .info-box small { font-size: 14px; } + .info-box .progress { background: rgba(0, 0, 0, 0.2); margin: 5px -10px 5px -10px; height: 2px; } + .info-box .progress, .info-box .progress .progress-bar { border-radius: 0; } + .info-box .progress .progress-bar { background: #fff; } + .info-box-icon { border-top-left-radius: 2px; border-top-right-radius: 0; @@ -2057,18 +2476,22 @@ a:focus { line-height: 90px; background: rgba(0, 0, 0, 0.2); } -.info-box-icon > img { + +.info-box-icon>img { max-width: 100%; } + .info-box-content { padding: 5px 10px; margin-left: 90px; } + .info-box-number { display: block; font-weight: bold; font-size: 18px; } + .progress-description, .info-box-text { display: block; @@ -2077,15 +2500,19 @@ a:focus { overflow: hidden; text-overflow: ellipsis; } + .info-box-text { text-transform: uppercase; } + .info-box-more { display: block; } + .progress-description { margin: 0; } + /* * Component: Timeline * ------------------- @@ -2096,6 +2523,7 @@ a:focus { padding: 0; list-style: none; } + .timeline:before { content: ''; position: absolute; @@ -2107,20 +2535,24 @@ a:focus { margin: 0; border-radius: 2px; } -.timeline > li { + +.timeline>li { position: relative; margin-right: 10px; margin-bottom: 15px; } -.timeline > li:before, -.timeline > li:after { + +.timeline>li:before, +.timeline>li:after { content: " "; display: table; } -.timeline > li:after { + +.timeline>li:after { clear: both; } -.timeline > li > .timeline-item { + +.timeline>li>.timeline-item { -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; @@ -2132,13 +2564,15 @@ a:focus { padding: 0; position: relative; } -.timeline > li > .timeline-item > .time { + +.timeline>li>.timeline-item>.time { color: #999; float: right; padding: 10px; font-size: 12px; } -.timeline > li > .timeline-item > .timeline-header { + +.timeline>li>.timeline-item>.timeline-header { margin: 0; color: #555; border-bottom: 1px solid #f4f4f4; @@ -2146,16 +2580,19 @@ a:focus { font-size: 16px; line-height: 1.1; } -.timeline > li > .timeline-item > .timeline-header > a { + +.timeline>li>.timeline-item>.timeline-header>a { font-weight: 600; } -.timeline > li > .timeline-item > .timeline-body, -.timeline > li > .timeline-item > .timeline-footer { + +.timeline>li>.timeline-item>.timeline-body, +.timeline>li>.timeline-item>.timeline-footer { padding: 10px; } -.timeline > li > .fa, -.timeline > li > .glyphicon, -.timeline > li > .ion { + +.timeline>li>.fa, +.timeline>li>.glyphicon, +.timeline>li>.ion { width: 30px; height: 30px; font-size: 15px; @@ -2168,22 +2605,26 @@ a:focus { left: 18px; top: 0; } -.timeline > .time-label > span { + +.timeline>.time-label>span { font-weight: 600; padding: 5px; display: inline-block; background-color: #fff; border-radius: 4px; } -.timeline-inverse > li > .timeline-item { + +.timeline-inverse>li>.timeline-item { background: #f0f0f0; border: 1px solid #ddd; -webkit-box-shadow: none; box-shadow: none; } -.timeline-inverse > li > .timeline-item > .timeline-header { + +.timeline-inverse>li>.timeline-item>.timeline-header { border-bottom-color: #ddd; } + /* * Component: Button * ----------------- @@ -2194,9 +2635,11 @@ a:focus { box-shadow: none; border: 1px solid transparent; } + .btn.uppercase { text-transform: uppercase; } + .btn.btn-flat { border-radius: 0; -webkit-box-shadow: none; @@ -2204,19 +2647,23 @@ a:focus { box-shadow: none; border-width: 1px; } + .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 { outline: none; } + .btn.btn-file { position: relative; overflow: hidden; } -.btn.btn-file > input[type='file'] { + +.btn.btn-file>input[type='file'] { position: absolute; top: 0; right: 0; @@ -2231,80 +2678,97 @@ a:focus { cursor: inherit; display: block; } + .btn-default { background-color: #f4f4f4; color: #444; border-color: #ddd; } + .btn-default:hover, .btn-default:active, .btn-default.hover { background-color: #e7e7e7; } + .btn-primary { background-color: #3c8dbc; border-color: #367fa9; } + .btn-primary:hover, .btn-primary:active, .btn-primary.hover { background-color: #367fa9; } + .btn-success { background-color: #00a65a; border-color: #008d4c; } + .btn-success:hover, .btn-success:active, .btn-success.hover { background-color: #008d4c; } + .btn-info { background-color: #00c0ef; border-color: #00acd6; } + .btn-info:hover, .btn-info:active, .btn-info.hover { background-color: #00acd6; } + .btn-danger { background-color: #dd4b39; border-color: #d73925; } + .btn-danger:hover, .btn-danger:active, .btn-danger.hover { background-color: #d73925; } + .btn-warning { background-color: #f39c12; border-color: #e08e0b; } + .btn-warning:hover, .btn-warning:active, .btn-warning.hover { background-color: #e08e0b; } + .btn-outline { border: 1px solid #fff; background: transparent; color: #fff; } + .btn-outline:hover, .btn-outline:focus, .btn-outline:active { color: rgba(255, 255, 255, 0.7); border-color: rgba(255, 255, 255, 0.7); } + .btn-link { -webkit-box-shadow: none; box-shadow: none; } + .btn[class*='bg-']:hover { -webkit-box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); box-shadow: inset 0 0 100px rgba(0, 0, 0, 0.2); } + .btn-app { border-radius: 3px; position: relative; @@ -2318,30 +2782,35 @@ a:focus { background-color: #f4f4f4; font-size: 12px; } -.btn-app > .fa, -.btn-app > .glyphicon, -.btn-app > .ion { + +.btn-app>.fa, +.btn-app>.glyphicon, +.btn-app>.ion { font-size: 20px; display: block; } + .btn-app:hover { background: #f4f4f4; color: #444; border-color: #aaa; } + .btn-app:active, .btn-app:focus { -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-app > .badge { + +.btn-app>.badge { position: absolute; top: -3px; right: -10px; font-size: 10px; font-weight: 400; } + /* * Component: Callout * ------------------ @@ -2352,36 +2821,46 @@ a:focus { padding: 15px 30px 15px 15px; border-left: 5px solid #eee; } + .callout a { color: #fff; text-decoration: underline; } + .callout a:hover { color: #eee; } + .callout h4 { margin-top: 0; font-weight: 600; } + .callout p:last-child { margin-bottom: 0; } + .callout code, .callout .highlight { background-color: #fff; } + .callout.callout-danger { border-color: #c23321; } + .callout.callout-warning { border-color: #c87f0a; } + .callout.callout-info { border-color: #0097bc; } + .callout.callout-success { border-color: #00733e; } + /* * Component: alert * ---------------- @@ -2389,88 +2868,106 @@ a:focus { .alert { border-radius: 3px; } + .alert h4 { font-weight: 600; } + .alert .icon { margin-right: 10px; } + .alert .close { color: #000; opacity: 0.2; filter: alpha(opacity=20); } + .alert .close:hover { opacity: 0.5; filter: alpha(opacity=50); } + .alert a { color: #fff; text-decoration: underline; } + .alert-success { border-color: #008d4c; } + .alert-danger, .alert-error { border-color: #d73925; } + .alert-warning { border-color: #e08e0b; } + .alert-info { border-color: #00acd6; } + /* * Component: Nav * -------------- */ -.nav > li > a:hover, -.nav > li > a:active, -.nav > li > a:focus { +.nav>li>a:hover, +.nav>li>a:active, +.nav>li>a:focus { color: #444; background: #f7f7f7; } + /* NAV PILLS */ -.nav-pills > li > a { +.nav-pills>li>a { border-radius: 0; border-top: 3px solid transparent; color: #444; } -.nav-pills > li > a > .fa, -.nav-pills > li > a > .glyphicon, -.nav-pills > li > a > .ion { + +.nav-pills>li>a>.fa, +.nav-pills>li>a>.glyphicon, +.nav-pills>li>a>.ion { margin-right: 5px; } -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { + +.nav-pills>li.active>a, +.nav-pills>li.active>a:hover, +.nav-pills>li.active>a:focus { border-top-color: #3c8dbc; } -.nav-pills > li.active > a { + +.nav-pills>li.active>a { font-weight: 600; } + /* NAV STACKED */ -.nav-stacked > li > a { +.nav-stacked>li>a { border-radius: 0; border-top: 0; border-left: 3px solid transparent; color: #444; } -.nav-stacked > li.active > a, -.nav-stacked > li.active > a:hover { + +.nav-stacked>li.active>a, +.nav-stacked>li.active>a:hover { background: transparent; color: #444; border-top: 0; border-left-color: #3c8dbc; } -.nav-stacked > li.header { + +.nav-stacked>li.header { border-bottom: 1px solid #ddd; color: #777; margin-bottom: 10px; padding: 5px 10px; text-transform: uppercase; } + /* NAV TABS */ .nav-tabs-custom { margin-bottom: 20px; @@ -2478,120 +2975,150 @@ a:focus { box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); border-radius: 3px; } -.nav-tabs-custom > .nav-tabs { + +.nav-tabs-custom>.nav-tabs { margin: 0; border-bottom-color: #f4f4f4; border-top-right-radius: 3px; border-top-left-radius: 3px; } -.nav-tabs-custom > .nav-tabs > li { + +.nav-tabs-custom>.nav-tabs>li { border-top: 3px solid transparent; margin-bottom: -2px; margin-right: 5px; } -.nav-tabs-custom > .nav-tabs > li > a { + +.nav-tabs-custom>.nav-tabs>li>a { color: #444; border-radius: 0; } -.nav-tabs-custom > .nav-tabs > li > a.text-muted { + +.nav-tabs-custom>.nav-tabs>li>a.text-muted { color: #999; } -.nav-tabs-custom > .nav-tabs > li > a, -.nav-tabs-custom > .nav-tabs > li > a:hover { + +.nav-tabs-custom>.nav-tabs>li>a, +.nav-tabs-custom>.nav-tabs>li>a:hover { background: transparent; margin: 0; } -.nav-tabs-custom > .nav-tabs > li > a:hover { + +.nav-tabs-custom>.nav-tabs>li>a:hover { color: #999; } -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:hover, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:focus, -.nav-tabs-custom > .nav-tabs > li:not(.active) > a:active { + +.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover, +.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus, +.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active { border-color: transparent; } -.nav-tabs-custom > .nav-tabs > li.active { + +.nav-tabs-custom>.nav-tabs>li.active { border-top-color: #3c8dbc; } -.nav-tabs-custom > .nav-tabs > li.active > a, -.nav-tabs-custom > .nav-tabs > li.active:hover > a { + +.nav-tabs-custom>.nav-tabs>li.active>a, +.nav-tabs-custom>.nav-tabs>li.active:hover>a { background-color: #fff; color: #444; } -.nav-tabs-custom > .nav-tabs > li.active > a { + +.nav-tabs-custom>.nav-tabs>li.active>a { border-top-color: transparent; border-left-color: #f4f4f4; border-right-color: #f4f4f4; } -.nav-tabs-custom > .nav-tabs > li:first-of-type { + +.nav-tabs-custom>.nav-tabs>li:first-of-type { margin-left: 0; } -.nav-tabs-custom > .nav-tabs > li:first-of-type.active > a { + +.nav-tabs-custom>.nav-tabs>li:first-of-type.active>a { border-left-color: transparent; } -.nav-tabs-custom > .nav-tabs.pull-right { + +.nav-tabs-custom>.nav-tabs.pull-right { float: none !important; } -.nav-tabs-custom > .nav-tabs.pull-right > li { + +.nav-tabs-custom>.nav-tabs.pull-right>li { float: right; } -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type { + +.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type { margin-right: 0; } -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type > a { + +.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type>a { border-left-width: 1px; } -.nav-tabs-custom > .nav-tabs.pull-right > li:first-of-type.active > a { + +.nav-tabs-custom>.nav-tabs.pull-right>li:first-of-type.active>a { border-left-color: #f4f4f4; border-right-color: transparent; } -.nav-tabs-custom > .nav-tabs > li.header { + +.nav-tabs-custom>.nav-tabs>li.header { line-height: 35px; padding: 0 10px; font-size: 20px; color: #444; } -.nav-tabs-custom > .nav-tabs > li.header > .fa, -.nav-tabs-custom > .nav-tabs > li.header > .glyphicon, -.nav-tabs-custom > .nav-tabs > li.header > .ion { + +.nav-tabs-custom>.nav-tabs>li.header>.fa, +.nav-tabs-custom>.nav-tabs>li.header>.glyphicon, +.nav-tabs-custom>.nav-tabs>li.header>.ion { margin-right: 5px; } -.nav-tabs-custom > .tab-content { + +.nav-tabs-custom>.tab-content { background: #fff; padding: 10px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; } -.nav-tabs-custom .dropdown.open > a:active, -.nav-tabs-custom .dropdown.open > a:focus { + +.nav-tabs-custom .dropdown.open>a:active, +.nav-tabs-custom .dropdown.open>a:focus { background: transparent; color: #999; } -.nav-tabs-custom.tab-primary > .nav-tabs > li.active { + +.nav-tabs-custom.tab-primary>.nav-tabs>li.active { border-top-color: #3c8dbc; } -.nav-tabs-custom.tab-info > .nav-tabs > li.active { + +.nav-tabs-custom.tab-info>.nav-tabs>li.active { border-top-color: #00c0ef; } -.nav-tabs-custom.tab-danger > .nav-tabs > li.active { + +.nav-tabs-custom.tab-danger>.nav-tabs>li.active { border-top-color: #dd4b39; } -.nav-tabs-custom.tab-warning > .nav-tabs > li.active { + +.nav-tabs-custom.tab-warning>.nav-tabs>li.active { border-top-color: #f39c12; } -.nav-tabs-custom.tab-success > .nav-tabs > li.active { + +.nav-tabs-custom.tab-success>.nav-tabs>li.active { border-top-color: #00a65a; } -.nav-tabs-custom.tab-default > .nav-tabs > li.active { + +.nav-tabs-custom.tab-default>.nav-tabs>li.active { border-top-color: #d2d6de; } + /* PAGINATION */ -.pagination > li > a { +.pagination>li>a { background: #fafafa; color: #666; } -.pagination.pagination-flat > li > a { + +.pagination.pagination-flat>li>a { border-radius: 0 !important; } + /* * Component: Products List * ------------------------ @@ -2601,34 +3128,42 @@ a:focus { margin: 0; padding: 0; } -.products-list > .item { + +.products-list>.item { border-radius: 3px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); padding: 10px 0; background: #fff; } -.products-list > .item:before, -.products-list > .item:after { + +.products-list>.item:before, +.products-list>.item:after { content: " "; display: table; } -.products-list > .item:after { + +.products-list>.item:after { clear: both; } + .products-list .product-img { float: left; } + .products-list .product-img img { width: 50px; height: 50px; } + .products-list .product-info { margin-left: 60px; } + .products-list .product-title { font-weight: 600; } + .products-list .product-description { display: block; color: #999; @@ -2636,65 +3171,78 @@ a:focus { white-space: nowrap; text-overflow: ellipsis; } -.product-list-in-box > .item { + +.product-list-in-box>.item { -webkit-box-shadow: none; box-shadow: none; border-radius: 0; border-bottom: 1px solid #f4f4f4; } -.product-list-in-box > .item:last-of-type { + +.product-list-in-box>.item:last-of-type { border-bottom-width: 0; } + /* * Component: Table * ---------------- */ -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { +.table>thead>tr>th, +.table>tbody>tr>th, +.table>tfoot>tr>th, +.table>thead>tr>td, +.table>tbody>tr>td, +.table>tfoot>tr>td { border-top: 1px solid #f4f4f4; } -.table > thead > tr > th { + +.table>thead>tr>th { border-bottom: 2px solid #f4f4f4; } + .table tr td .progress { margin-top: 5px; } + .table-bordered { border: 1px solid #f4f4f4; } -.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 { + +.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 #f4f4f4; } -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { + +.table-bordered>thead>tr>th, +.table-bordered>thead>tr>td { border-bottom-width: 2px; } + .table.no-border, .table.no-border td, .table.no-border th { border: 0; } + /* .text-center in tables */ table.text-center, table.text-center td, table.text-center th { text-align: center; } + .table.align th { text-align: left; } + .table.align td { text-align: right; } + /* * Component: Label * ---------------- @@ -2703,6 +3251,7 @@ table.text-center th { background-color: #d2d6de; color: #444; } + /* * Component: Direct Chat * ---------------------- @@ -2714,12 +3263,14 @@ table.text-center th { overflow-x: hidden; padding: 0; } + .direct-chat.chat-pane-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } + .direct-chat-messages { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); @@ -2729,21 +3280,26 @@ table.text-center th { height: 250px; overflow: auto; } + .direct-chat-msg, .direct-chat-text { display: block; } + .direct-chat-msg { margin-bottom: 10px; } + .direct-chat-msg:before, .direct-chat-msg:after { content: " "; display: table; } + .direct-chat-msg:after { clear: both; } + .direct-chat-messages, .direct-chat-contacts { -webkit-transition: -webkit-transform 0.5s ease-in-out; @@ -2751,6 +3307,7 @@ table.text-center th { -o-transition: -o-transform 0.5s ease-in-out; transition: transform 0.5s ease-in-out; } + .direct-chat-text { border-radius: 5px; position: relative; @@ -2760,6 +3317,7 @@ table.text-center th { margin: 5px 0 0 50px; color: #444444; } + .direct-chat-text:after, .direct-chat-text:before { position: absolute; @@ -2772,18 +3330,22 @@ table.text-center th { width: 0; pointer-events: none; } + .direct-chat-text:after { border-width: 5px; margin-top: -5px; } + .direct-chat-text:before { border-width: 6px; margin-top: -6px; } + .right .direct-chat-text { margin-right: 50px; margin-left: 0; } + .right .direct-chat-text:after, .right .direct-chat-text:before { right: auto; @@ -2791,32 +3353,39 @@ table.text-center th { border-right-color: transparent; border-left-color: #d2d6de; } + .direct-chat-img { border-radius: 50%; float: left; width: 40px; height: 40px; } + .right .direct-chat-img { float: right; } + .direct-chat-info { display: block; margin-bottom: 2px; font-size: 12px; } + .direct-chat-name { font-weight: 600; } + .direct-chat-timestamp { color: #999; } + .direct-chat-contacts-open .direct-chat-contacts { -webkit-transform: translate(0, 0); -ms-transform: translate(0, 0); -o-transform: translate(0, 0); transform: translate(0, 0); } + .direct-chat-contacts { -webkit-transform: translate(101%, 0); -ms-transform: translate(101%, 0); @@ -2831,116 +3400,142 @@ table.text-center th { color: #fff; overflow: auto; } -.contacts-list > li { + +.contacts-list>li { border-bottom: 1px solid rgba(0, 0, 0, 0.2); padding: 10px; margin: 0; } -.contacts-list > li:before, -.contacts-list > li:after { + +.contacts-list>li:before, +.contacts-list>li:after { content: " "; display: table; } -.contacts-list > li:after { + +.contacts-list>li:after { clear: both; } -.contacts-list > li:last-of-type { + +.contacts-list>li:last-of-type { border-bottom: none; } + .contacts-list-img { border-radius: 50%; width: 40px; float: left; } + .contacts-list-info { margin-left: 45px; color: #fff; } + .contacts-list-name, .contacts-list-status { display: block; } + .contacts-list-name { font-weight: 600; } + .contacts-list-status { font-size: 12px; } + .contacts-list-date { color: #aaa; font-weight: normal; } + .contacts-list-msg { color: #999; } -.direct-chat-danger .right > .direct-chat-text { + +.direct-chat-danger .right>.direct-chat-text { background: #dd4b39; border-color: #dd4b39; color: #ffffff; } -.direct-chat-danger .right > .direct-chat-text:after, -.direct-chat-danger .right > .direct-chat-text:before { + +.direct-chat-danger .right>.direct-chat-text:after, +.direct-chat-danger .right>.direct-chat-text:before { border-left-color: #dd4b39; } -.direct-chat-primary .right > .direct-chat-text { + +.direct-chat-primary .right>.direct-chat-text { background: #3c8dbc; border-color: #3c8dbc; color: #ffffff; } -.direct-chat-primary .right > .direct-chat-text:after, -.direct-chat-primary .right > .direct-chat-text:before { + +.direct-chat-primary .right>.direct-chat-text:after, +.direct-chat-primary .right>.direct-chat-text:before { border-left-color: #3c8dbc; } -.direct-chat-warning .right > .direct-chat-text { + +.direct-chat-warning .right>.direct-chat-text { background: #f39c12; border-color: #f39c12; color: #ffffff; } -.direct-chat-warning .right > .direct-chat-text:after, -.direct-chat-warning .right > .direct-chat-text:before { + +.direct-chat-warning .right>.direct-chat-text:after, +.direct-chat-warning .right>.direct-chat-text:before { border-left-color: #f39c12; } -.direct-chat-info .right > .direct-chat-text { + +.direct-chat-info .right>.direct-chat-text { background: #00c0ef; border-color: #00c0ef; color: #ffffff; } -.direct-chat-info .right > .direct-chat-text:after, -.direct-chat-info .right > .direct-chat-text:before { + +.direct-chat-info .right>.direct-chat-text:after, +.direct-chat-info .right>.direct-chat-text:before { border-left-color: #00c0ef; } -.direct-chat-success .right > .direct-chat-text { + +.direct-chat-success .right>.direct-chat-text { background: #00a65a; border-color: #00a65a; color: #ffffff; } -.direct-chat-success .right > .direct-chat-text:after, -.direct-chat-success .right > .direct-chat-text:before { + +.direct-chat-success .right>.direct-chat-text:after, +.direct-chat-success .right>.direct-chat-text:before { border-left-color: #00a65a; } + /* * Component: Users List * --------------------- */ -.users-list > li { +.users-list>li { width: 25%; float: left; padding: 10px; text-align: center; } -.users-list > li img { + +.users-list>li img { border-radius: 50%; max-width: 100%; height: auto; } -.users-list > li > a:hover, -.users-list > li > a:hover .users-list-name { + +.users-list>li>a:hover, +.users-list>li>a:hover .users-list-name { color: #999; } + .users-list-name, .users-list-date { display: block; } + .users-list-name { font-weight: 600; color: #444; @@ -2948,10 +3543,12 @@ table.text-center th { white-space: nowrap; text-overflow: ellipsis; } + .users-list-date { color: #999; font-size: 12px; } + /* * Component: Carousel * ------------------- @@ -2960,7 +3557,8 @@ table.text-center th { .carousel-control.right { background-image: none; } -.carousel-control > .fa { + +.carousel-control>.fa { font-size: 40px; position: absolute; top: 50%; @@ -2968,6 +3566,7 @@ table.text-center th { display: inline-block; margin-top: -20px; } + /* * Component: modal * ---------------- @@ -2975,44 +3574,54 @@ table.text-center th { .modal { background: rgba(0, 0, 0, 0.3); } + .modal-content { border-radius: 0; -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); border: 0; } + @media (min-width: 768px) { .modal-content { -webkit-box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); box-shadow: 0 2px 3px rgba(0, 0, 0, 0.125); } } + .modal-header { border-bottom-color: #f4f4f4; } + .modal-footer { border-top-color: #f4f4f4; } + .modal-primary .modal-header, .modal-primary .modal-footer { border-color: #307095; } + .modal-warning .modal-header, .modal-warning .modal-footer { border-color: #c87f0a; } + .modal-info .modal-header, .modal-info .modal-footer { border-color: #0097bc; } + .modal-success .modal-header, .modal-success .modal-footer { border-color: #00733e; } + .modal-danger .modal-header, .modal-danger .modal-footer { border-color: #c23321; } + /* * Component: Social Widgets * ------------------------- @@ -3021,12 +3630,14 @@ table.text-center th { border: none; position: relative; } + .widget-user .widget-user-header { padding: 20px; height: 120px; border-top-right-radius: 3px; border-top-left-radius: 3px; } + .widget-user .widget-user-username { margin-top: 0; margin-bottom: 5px; @@ -3034,78 +3645,96 @@ table.text-center th { font-weight: 300; text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); } + .widget-user .widget-user-desc { margin-top: 0; } + .widget-user .widget-user-image { position: absolute; top: 65px; left: 50%; margin-left: -45px; } -.widget-user .widget-user-image > img { + +.widget-user .widget-user-image>img { width: 90px; height: auto; border: 3px solid #fff; } + .widget-user .box-footer { padding-top: 30px; } + .widget-user-2 .widget-user-header { padding: 20px; border-top-right-radius: 3px; border-top-left-radius: 3px; } + .widget-user-2 .widget-user-username { margin-top: 5px; margin-bottom: 5px; font-size: 25px; font-weight: 300; } + .widget-user-2 .widget-user-desc { margin-top: 0; } + .widget-user-2 .widget-user-username, .widget-user-2 .widget-user-desc { margin-left: 75px; } -.widget-user-2 .widget-user-image > img { + +.widget-user-2 .widget-user-image>img { width: 65px; height: auto; float: left; } + /* * Page: Mailbox * ------------- */ -.mailbox-messages > .table { +.mailbox-messages>.table { margin: 0; } + .mailbox-controls { padding: 5px; } + .mailbox-controls.with-border { border-bottom: 1px solid #f4f4f4; } + .mailbox-read-info { border-bottom: 1px solid #f4f4f4; padding: 10px; } + .mailbox-read-info h3 { font-size: 20px; margin: 0; } + .mailbox-read-info h5 { margin: 0; padding: 5px 0 0 0; } + .mailbox-read-time { color: #999; font-size: 13px; } + .mailbox-read-message { padding: 10px; } + .mailbox-attachments li { float: left; width: 200px; @@ -3113,36 +3742,44 @@ table.text-center th { margin-bottom: 10px; margin-right: 10px; } + .mailbox-attachment-name { font-weight: bold; color: #666; } + .mailbox-attachment-icon, .mailbox-attachment-info, .mailbox-attachment-size { display: block; } + .mailbox-attachment-info { padding: 10px; background: #f4f4f4; } + .mailbox-attachment-size { color: #999; font-size: 12px; } + .mailbox-attachment-icon { text-align: center; font-size: 65px; color: #666; padding: 20px 10px; } + .mailbox-attachment-icon.has-img { padding: 0; } -.mailbox-attachment-icon.has-img > img { + +.mailbox-attachment-icon.has-img>img { max-width: 100%; height: auto; } + /* * Page: Lock Screen * ----------------- @@ -3151,25 +3788,30 @@ table.text-center th { .lockscreen { background: #d2d6de; } + .lockscreen-logo { font-size: 35px; text-align: center; margin-bottom: 25px; font-weight: 300; } + .lockscreen-logo a { color: #444; } + .lockscreen-wrapper { max-width: 400px; margin: 0 auto; margin-top: 10%; } + /* User name [optional] */ .lockscreen .lockscreen-name { text-align: center; font-weight: 600; } + /* Will contain the image and the sign in form */ .lockscreen-item { border-radius: 4px; @@ -3179,6 +3821,7 @@ table.text-center th { margin: 10px auto 30px auto; width: 290px; } + /* User image */ .lockscreen-image { border-radius: 50%; @@ -3189,26 +3832,32 @@ table.text-center th { padding: 5px; z-index: 10; } -.lockscreen-image > img { + +.lockscreen-image>img { border-radius: 50%; width: 70px; height: 70px; } + /* Contains the password input and the login button */ .lockscreen-credentials { margin-left: 70px; } + .lockscreen-credentials .form-control { border: 0; } + .lockscreen-credentials .btn { background-color: #fff; border: 0; padding: 0 10px; } + .lockscreen-footer { margin-top: 10px; } + /* * Page: Login & Register * ---------------------- @@ -3220,26 +3869,32 @@ table.text-center th { margin-bottom: 25px; font-weight: 300; } + .login-logo a, .register-logo a { color: #444; } + .login-page, .register-page { background: #d2d6de; } + .login-box, .register-box { width: 360px; margin: 7% auto; } + @media (max-width: 768px) { + .login-box, .register-box { width: 90%; margin-top: 20px; } } + .login-box-body, .register-box-body { background: #fff; @@ -3247,19 +3902,23 @@ table.text-center th { border-top: 0; color: #666; } + .login-box-body .form-control-feedback, .register-box-body .form-control-feedback { color: #777; } + .login-box-msg, .register-box-msg { margin: 0; text-align: center; padding: 0 20px 20px 20px; } + .social-auth-links { margin: 10px 0; } + /* * Page: 400 and 500 error pages * ------------------------------ @@ -3268,40 +3927,48 @@ table.text-center th { width: 600px; margin: 20px auto 0 auto; } + @media (max-width: 991px) { .error-page { width: 100%; } } -.error-page > .headline { + +.error-page>.headline { float: left; font-size: 100px; font-weight: 300; } + @media (max-width: 991px) { - .error-page > .headline { + .error-page>.headline { float: none; text-align: center; } } -.error-page > .error-content { + +.error-page>.error-content { margin-left: 190px; display: block; } + @media (max-width: 991px) { - .error-page > .error-content { + .error-page>.error-content { margin-left: 0; } } -.error-page > .error-content > h3 { + +.error-page>.error-content>h3 { font-weight: 300; font-size: 25px; } + @media (max-width: 991px) { - .error-page > .error-content > h3 { + .error-page>.error-content>h3 { text-align: center; } } + /* * Page: Invoice * ------------- @@ -3313,9 +3980,11 @@ table.text-center th { padding: 20px; margin: 10px 25px; } + .invoice-title { margin-top: 0; } + /* * Page: Profile * ------------- @@ -3326,24 +3995,29 @@ table.text-center th { padding: 3px; border: 3px solid #d2d6de; } + .profile-username { font-size: 21px; margin-top: 5px; } + .post { border-bottom: 1px solid #d2d6de; margin-bottom: 15px; padding-bottom: 15px; color: #666; } + .post:last-of-type { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; } + .post .user-block { margin-bottom: 15px; } + /* * Social Buttons for Bootstrap * @@ -3360,7 +4034,8 @@ table.text-center th { overflow: hidden; text-overflow: ellipsis; } -.btn-social > :first-child { + +.btn-social> :first-child { position: absolute; left: 0; top: 0; @@ -3371,30 +4046,37 @@ table.text-center th { text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } + .btn-social.btn-lg { padding-left: 61px; } -.btn-social.btn-lg > :first-child { + +.btn-social.btn-lg> :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } + .btn-social.btn-sm { padding-left: 38px; } -.btn-social.btn-sm > :first-child { + +.btn-social.btn-sm> :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } + .btn-social.btn-xs { padding-left: 30px; } -.btn-social.btn-xs > :first-child { + +.btn-social.btn-xs> :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } + .btn-social-icon { position: relative; padding-left: 44px; @@ -3406,7 +4088,8 @@ table.text-center th { width: 34px; padding: 0; } -.btn-social-icon > :first-child { + +.btn-social-icon> :first-child { position: absolute; left: 0; top: 0; @@ -3417,693 +4100,824 @@ table.text-center th { text-align: center; border-right: 1px solid rgba(0, 0, 0, 0.2); } + .btn-social-icon.btn-lg { padding-left: 61px; } -.btn-social-icon.btn-lg > :first-child { + +.btn-social-icon.btn-lg> :first-child { line-height: 45px; width: 45px; font-size: 1.8em; } + .btn-social-icon.btn-sm { padding-left: 38px; } -.btn-social-icon.btn-sm > :first-child { + +.btn-social-icon.btn-sm> :first-child { line-height: 28px; width: 28px; font-size: 1.4em; } + .btn-social-icon.btn-xs { padding-left: 30px; } -.btn-social-icon.btn-xs > :first-child { + +.btn-social-icon.btn-xs> :first-child { line-height: 20px; width: 20px; font-size: 1.2em; } -.btn-social-icon > :first-child { + +.btn-social-icon> :first-child { border: none; text-align: center; width: 100%; } + .btn-social-icon.btn-lg { height: 45px; width: 45px; padding-left: 0; padding-right: 0; } + .btn-social-icon.btn-sm { height: 30px; width: 30px; padding-left: 0; padding-right: 0; } + .btn-social-icon.btn-xs { height: 22px; width: 22px; padding-left: 0; padding-right: 0; } + .btn-adn { color: #ffffff; background-color: #d87a68; border-color: rgba(0, 0, 0, 0.2); } + .btn-adn:focus, .btn-adn.focus { color: #ffffff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } + .btn-adn:hover { color: #ffffff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } + .btn-adn:active, .btn-adn.active, -.open > .dropdown-toggle.btn-adn { +.open>.dropdown-toggle.btn-adn { color: #ffffff; background-color: #ce563f; border-color: rgba(0, 0, 0, 0.2); } + .btn-adn:active, .btn-adn.active, -.open > .dropdown-toggle.btn-adn { +.open>.dropdown-toggle.btn-adn { background-image: none; } + .btn-adn .badge { color: #d87a68; background-color: #ffffff; } + .btn-bitbucket { color: #ffffff; background-color: #205081; border-color: rgba(0, 0, 0, 0.2); } + .btn-bitbucket:focus, .btn-bitbucket.focus { color: #ffffff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } + .btn-bitbucket:hover { color: #ffffff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } + .btn-bitbucket:active, .btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { +.open>.dropdown-toggle.btn-bitbucket { color: #ffffff; background-color: #163758; border-color: rgba(0, 0, 0, 0.2); } + .btn-bitbucket:active, .btn-bitbucket.active, -.open > .dropdown-toggle.btn-bitbucket { +.open>.dropdown-toggle.btn-bitbucket { background-image: none; } + .btn-bitbucket .badge { color: #205081; background-color: #ffffff; } + .btn-dropbox { color: #ffffff; background-color: #1087dd; border-color: rgba(0, 0, 0, 0.2); } + .btn-dropbox:focus, .btn-dropbox.focus { color: #ffffff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } + .btn-dropbox:hover { color: #ffffff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } + .btn-dropbox:active, .btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { +.open>.dropdown-toggle.btn-dropbox { color: #ffffff; background-color: #0d6aad; border-color: rgba(0, 0, 0, 0.2); } + .btn-dropbox:active, .btn-dropbox.active, -.open > .dropdown-toggle.btn-dropbox { +.open>.dropdown-toggle.btn-dropbox { background-image: none; } + .btn-dropbox .badge { color: #1087dd; background-color: #ffffff; } + .btn-facebook { color: #ffffff; background-color: #3b5998; border-color: rgba(0, 0, 0, 0.2); } + .btn-facebook:focus, .btn-facebook.focus { color: #ffffff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } + .btn-facebook:hover { color: #ffffff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } + .btn-facebook:active, .btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { +.open>.dropdown-toggle.btn-facebook { color: #ffffff; background-color: #2d4373; border-color: rgba(0, 0, 0, 0.2); } + .btn-facebook:active, .btn-facebook.active, -.open > .dropdown-toggle.btn-facebook { +.open>.dropdown-toggle.btn-facebook { background-image: none; } + .btn-facebook .badge { color: #3b5998; background-color: #ffffff; } + .btn-flickr { color: #ffffff; background-color: #ff0084; border-color: rgba(0, 0, 0, 0.2); } + .btn-flickr:focus, .btn-flickr.focus { color: #ffffff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } + .btn-flickr:hover { color: #ffffff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } + .btn-flickr:active, .btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { +.open>.dropdown-toggle.btn-flickr { color: #ffffff; background-color: #cc006a; border-color: rgba(0, 0, 0, 0.2); } + .btn-flickr:active, .btn-flickr.active, -.open > .dropdown-toggle.btn-flickr { +.open>.dropdown-toggle.btn-flickr { background-image: none; } + .btn-flickr .badge { color: #ff0084; background-color: #ffffff; } + .btn-foursquare { color: #ffffff; background-color: #f94877; border-color: rgba(0, 0, 0, 0.2); } + .btn-foursquare:focus, .btn-foursquare.focus { color: #ffffff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } + .btn-foursquare:hover { color: #ffffff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } + .btn-foursquare:active, .btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { +.open>.dropdown-toggle.btn-foursquare { color: #ffffff; background-color: #f71752; border-color: rgba(0, 0, 0, 0.2); } + .btn-foursquare:active, .btn-foursquare.active, -.open > .dropdown-toggle.btn-foursquare { +.open>.dropdown-toggle.btn-foursquare { background-image: none; } + .btn-foursquare .badge { color: #f94877; background-color: #ffffff; } + .btn-github { color: #ffffff; background-color: #444444; border-color: rgba(0, 0, 0, 0.2); } + .btn-github:focus, .btn-github.focus { color: #ffffff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } + .btn-github:hover { color: #ffffff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } + .btn-github:active, .btn-github.active, -.open > .dropdown-toggle.btn-github { +.open>.dropdown-toggle.btn-github { color: #ffffff; background-color: #2b2b2b; border-color: rgba(0, 0, 0, 0.2); } + .btn-github:active, .btn-github.active, -.open > .dropdown-toggle.btn-github { +.open>.dropdown-toggle.btn-github { background-image: none; } + .btn-github .badge { color: #444444; background-color: #ffffff; } + .btn-google { color: #ffffff; background-color: #dd4b39; border-color: rgba(0, 0, 0, 0.2); } + .btn-google:focus, .btn-google.focus { color: #ffffff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } + .btn-google:hover { color: #ffffff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } + .btn-google:active, .btn-google.active, -.open > .dropdown-toggle.btn-google { +.open>.dropdown-toggle.btn-google { color: #ffffff; background-color: #c23321; border-color: rgba(0, 0, 0, 0.2); } + .btn-google:active, .btn-google.active, -.open > .dropdown-toggle.btn-google { +.open>.dropdown-toggle.btn-google { background-image: none; } + .btn-google .badge { color: #dd4b39; background-color: #ffffff; } + .btn-instagram { color: #ffffff; background-color: #3f729b; border-color: rgba(0, 0, 0, 0.2); } + .btn-instagram:focus, .btn-instagram.focus { color: #ffffff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } + .btn-instagram:hover { color: #ffffff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } + .btn-instagram:active, .btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { +.open>.dropdown-toggle.btn-instagram { color: #ffffff; background-color: #305777; border-color: rgba(0, 0, 0, 0.2); } + .btn-instagram:active, .btn-instagram.active, -.open > .dropdown-toggle.btn-instagram { +.open>.dropdown-toggle.btn-instagram { background-image: none; } + .btn-instagram .badge { color: #3f729b; background-color: #ffffff; } + .btn-linkedin { color: #ffffff; background-color: #007bb6; border-color: rgba(0, 0, 0, 0.2); } + .btn-linkedin:focus, .btn-linkedin.focus { color: #ffffff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } + .btn-linkedin:hover { color: #ffffff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } + .btn-linkedin:active, .btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { +.open>.dropdown-toggle.btn-linkedin { color: #ffffff; background-color: #005983; border-color: rgba(0, 0, 0, 0.2); } + .btn-linkedin:active, .btn-linkedin.active, -.open > .dropdown-toggle.btn-linkedin { +.open>.dropdown-toggle.btn-linkedin { background-image: none; } + .btn-linkedin .badge { color: #007bb6; background-color: #ffffff; } + .btn-microsoft { color: #ffffff; background-color: #2672ec; border-color: rgba(0, 0, 0, 0.2); } + .btn-microsoft:focus, .btn-microsoft.focus { color: #ffffff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } + .btn-microsoft:hover { color: #ffffff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } + .btn-microsoft:active, .btn-microsoft.active, -.open > .dropdown-toggle.btn-microsoft { +.open>.dropdown-toggle.btn-microsoft { color: #ffffff; background-color: #125acd; border-color: rgba(0, 0, 0, 0.2); } + .btn-microsoft:active, .btn-microsoft.active, -.open > .dropdown-toggle.btn-microsoft { +.open>.dropdown-toggle.btn-microsoft { background-image: none; } + .btn-microsoft .badge { color: #2672ec; background-color: #ffffff; } + .btn-openid { color: #ffffff; background-color: #f7931e; border-color: rgba(0, 0, 0, 0.2); } + .btn-openid:focus, .btn-openid.focus { color: #ffffff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } + .btn-openid:hover { color: #ffffff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } + .btn-openid:active, .btn-openid.active, -.open > .dropdown-toggle.btn-openid { +.open>.dropdown-toggle.btn-openid { color: #ffffff; background-color: #da7908; border-color: rgba(0, 0, 0, 0.2); } + .btn-openid:active, .btn-openid.active, -.open > .dropdown-toggle.btn-openid { +.open>.dropdown-toggle.btn-openid { background-image: none; } + .btn-openid .badge { color: #f7931e; background-color: #ffffff; } + .btn-pinterest { color: #ffffff; background-color: #cb2027; border-color: rgba(0, 0, 0, 0.2); } + .btn-pinterest:focus, .btn-pinterest.focus { color: #ffffff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } + .btn-pinterest:hover { color: #ffffff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } + .btn-pinterest:active, .btn-pinterest.active, -.open > .dropdown-toggle.btn-pinterest { +.open>.dropdown-toggle.btn-pinterest { color: #ffffff; background-color: #9f191f; border-color: rgba(0, 0, 0, 0.2); } + .btn-pinterest:active, .btn-pinterest.active, -.open > .dropdown-toggle.btn-pinterest { +.open>.dropdown-toggle.btn-pinterest { background-image: none; } + .btn-pinterest .badge { color: #cb2027; background-color: #ffffff; } + .btn-reddit { color: #000000; background-color: #eff7ff; border-color: rgba(0, 0, 0, 0.2); } + .btn-reddit:focus, .btn-reddit.focus { color: #000000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } + .btn-reddit:hover { color: #000000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } + .btn-reddit:active, .btn-reddit.active, -.open > .dropdown-toggle.btn-reddit { +.open>.dropdown-toggle.btn-reddit { color: #000000; background-color: #bcddff; border-color: rgba(0, 0, 0, 0.2); } + .btn-reddit:active, .btn-reddit.active, -.open > .dropdown-toggle.btn-reddit { +.open>.dropdown-toggle.btn-reddit { background-image: none; } + .btn-reddit .badge { color: #eff7ff; background-color: #000000; } + .btn-soundcloud { color: #ffffff; background-color: #ff5500; border-color: rgba(0, 0, 0, 0.2); } + .btn-soundcloud:focus, .btn-soundcloud.focus { color: #ffffff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } + .btn-soundcloud:hover { color: #ffffff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } + .btn-soundcloud:active, .btn-soundcloud.active, -.open > .dropdown-toggle.btn-soundcloud { +.open>.dropdown-toggle.btn-soundcloud { color: #ffffff; background-color: #cc4400; border-color: rgba(0, 0, 0, 0.2); } + .btn-soundcloud:active, .btn-soundcloud.active, -.open > .dropdown-toggle.btn-soundcloud { +.open>.dropdown-toggle.btn-soundcloud { background-image: none; } + .btn-soundcloud .badge { color: #ff5500; background-color: #ffffff; } + .btn-tumblr { color: #ffffff; background-color: #2c4762; border-color: rgba(0, 0, 0, 0.2); } + .btn-tumblr:focus, .btn-tumblr.focus { color: #ffffff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } + .btn-tumblr:hover { color: #ffffff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } + .btn-tumblr:active, .btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { +.open>.dropdown-toggle.btn-tumblr { color: #ffffff; background-color: #1c2d3f; border-color: rgba(0, 0, 0, 0.2); } + .btn-tumblr:active, .btn-tumblr.active, -.open > .dropdown-toggle.btn-tumblr { +.open>.dropdown-toggle.btn-tumblr { background-image: none; } + .btn-tumblr .badge { color: #2c4762; background-color: #ffffff; } + .btn-twitter { color: #ffffff; background-color: #55acee; border-color: rgba(0, 0, 0, 0.2); } + .btn-twitter:focus, .btn-twitter.focus { color: #ffffff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } + .btn-twitter:hover { color: #ffffff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } + .btn-twitter:active, .btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { +.open>.dropdown-toggle.btn-twitter { color: #ffffff; background-color: #2795e9; border-color: rgba(0, 0, 0, 0.2); } + .btn-twitter:active, .btn-twitter.active, -.open > .dropdown-toggle.btn-twitter { +.open>.dropdown-toggle.btn-twitter { background-image: none; } + .btn-twitter .badge { color: #55acee; background-color: #ffffff; } + .btn-vimeo { color: #ffffff; background-color: #1ab7ea; border-color: rgba(0, 0, 0, 0.2); } + .btn-vimeo:focus, .btn-vimeo.focus { color: #ffffff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } + .btn-vimeo:hover { color: #ffffff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } + .btn-vimeo:active, .btn-vimeo.active, -.open > .dropdown-toggle.btn-vimeo { +.open>.dropdown-toggle.btn-vimeo { color: #ffffff; background-color: #1295bf; border-color: rgba(0, 0, 0, 0.2); } + .btn-vimeo:active, .btn-vimeo.active, -.open > .dropdown-toggle.btn-vimeo { +.open>.dropdown-toggle.btn-vimeo { background-image: none; } + .btn-vimeo .badge { color: #1ab7ea; background-color: #ffffff; } + .btn-vk { color: #ffffff; background-color: #587ea3; border-color: rgba(0, 0, 0, 0.2); } + .btn-vk:focus, .btn-vk.focus { color: #ffffff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } + .btn-vk:hover { color: #ffffff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } + .btn-vk:active, .btn-vk.active, -.open > .dropdown-toggle.btn-vk { +.open>.dropdown-toggle.btn-vk { color: #ffffff; background-color: #466482; border-color: rgba(0, 0, 0, 0.2); } + .btn-vk:active, .btn-vk.active, -.open > .dropdown-toggle.btn-vk { +.open>.dropdown-toggle.btn-vk { background-image: none; } + .btn-vk .badge { color: #587ea3; background-color: #ffffff; } + .btn-yahoo { color: #ffffff; background-color: #720e9e; border-color: rgba(0, 0, 0, 0.2); } + .btn-yahoo:focus, .btn-yahoo.focus { color: #ffffff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } + .btn-yahoo:hover { color: #ffffff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } + .btn-yahoo:active, .btn-yahoo.active, -.open > .dropdown-toggle.btn-yahoo { +.open>.dropdown-toggle.btn-yahoo { color: #ffffff; background-color: #500a6f; border-color: rgba(0, 0, 0, 0.2); } + .btn-yahoo:active, .btn-yahoo.active, -.open > .dropdown-toggle.btn-yahoo { +.open>.dropdown-toggle.btn-yahoo { background-image: none; } + .btn-yahoo .badge { color: #720e9e; background-color: #ffffff; } + /* * Plugin: Full Calendar * --------------------- @@ -4115,76 +4929,92 @@ table.text-center th { border-color: #ddd; border-bottom-color: #ddd; } + .fc-button:hover, .fc-button:active, .fc-button.hover { background-color: #e9e9e9; } + .fc-header-title h2 { font-size: 15px; line-height: 1.6em; color: #666; margin-left: 10px; } + .fc-header-right { padding-right: 10px; } + .fc-header-left { padding-left: 10px; } + .fc-widget-header { background: #fafafa; } + .fc-grid { width: 100%; border: 0; } + .fc-widget-header:first-of-type, .fc-widget-content:first-of-type { border-left: 0; border-right: 0; } + .fc-widget-header:last-of-type, .fc-widget-content:last-of-type { border-right: 0; } + .fc-toolbar { padding: 10px; margin: 0; } + .fc-day-number { font-size: 20px; font-weight: 300; padding-right: 10px; } + .fc-color-picker { list-style: none; margin: 0; padding: 0; } -.fc-color-picker > li { + +.fc-color-picker>li { float: left; font-size: 30px; margin-right: 5px; line-height: 30px; } -.fc-color-picker > li .fa { + +.fc-color-picker>li .fa { -webkit-transition: -webkit-transform linear 0.3s; -moz-transition: -moz-transform linear 0.3s; -o-transition: -o-transform linear 0.3s; transition: transform linear 0.3s; } -.fc-color-picker > li .fa:hover { + +.fc-color-picker>li .fa:hover { -webkit-transform: rotate(30deg); -ms-transform: rotate(30deg); -o-transform: rotate(30deg); transform: rotate(30deg); } + #add-new-event { -webkit-transition: all linear 0.3s; -o-transition: all linear 0.3s; transition: all linear 0.3s; } + .external-event { padding: 5px 10px; font-weight: bold; @@ -4194,9 +5024,11 @@ table.text-center th { border-radius: 3px; cursor: move; } + .external-event:hover { box-shadow: inset 0 0 90px rgba(0, 0, 0, 0.2); } + /* * Plugin: Select2 * --------------- @@ -4209,6 +5041,7 @@ table.text-center th { .select2-selection:active { outline: none; } + .select2-container--default .select2-selection--single, .select2-selection .select2-selection--single { border: 1px solid #d2d6de; @@ -4216,84 +5049,105 @@ table.text-center th { padding: 6px 12px; height: 34px; } + .select2-container--default.select2-container--open { border-color: #3c8dbc; } + .select2-dropdown { border: 1px solid #d2d6de; border-radius: 0; } + .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #3c8dbc; color: white; } + .select2-results__option { padding: 6px 12px; user-select: none; -webkit-user-select: none; } + .select2-container .select2-selection--single .select2-selection__rendered { padding-left: 0; padding-right: 0; height: auto; margin-top: -4px; } + .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { padding-right: 6px; padding-left: 20px; } + .select2-container--default .select2-selection--single .select2-selection__arrow { height: 28px; right: 3px; } + .select2-container--default .select2-selection--single .select2-selection__arrow b { margin-top: 0; } + .select2-dropdown .select2-search__field, .select2-search--inline .select2-search__field { border: 1px solid #d2d6de; } + .select2-dropdown .select2-search__field:focus, .select2-search--inline .select2-search__field:focus { outline: none; border: 1px solid #3c8dbc; } + .select2-container--default .select2-results__option[aria-disabled=true] { color: #999; } + .select2-container--default .select2-results__option[aria-selected=true] { background-color: #ddd; } + .select2-container--default .select2-results__option[aria-selected=true], .select2-container--default .select2-results__option[aria-selected=true]:hover { color: #444; } + .select2-container--default .select2-selection--multiple { border: 1px solid #d2d6de; border-radius: 0; } + .select2-container--default .select2-selection--multiple:focus { border-color: #3c8dbc; } + .select2-container--default.select2-container--focus .select2-selection--multiple { border-color: #d2d6de; } + .select2-container--default .select2-selection--multiple .select2-selection__choice { background-color: #3c8dbc; border-color: #367fa9; padding: 1px 10px; color: #fff; } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { margin-right: 5px; color: rgba(255, 255, 255, 0.7); } + .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { color: #fff; } + .select2-container .select2-selection--single .select2-selection__rendered { padding-right: 10px; } + /* * General: Miscellaneous * ---------------------- @@ -4301,38 +5155,48 @@ table.text-center th { .pad { padding: 10px; } + .margin { margin: 10px; } + .margin-bottom { margin-bottom: 20px; } + .margin-bottom-none { margin-bottom: 0; } + .margin-r-5 { margin-right: 5px; } + .inline { display: inline; } + .description-block { display: block; margin: 10px 0; text-align: center; } + .description-block.margin-bottom { margin-bottom: 25px; } -.description-block > .description-header { + +.description-block>.description-header { margin: 0; padding: 0; font-weight: 600; font-size: 16px; } -.description-block > .description-text { + +.description-block>.description-text { text-transform: uppercase; } + .bg-red, .bg-yellow, .bg-aqua, @@ -4394,16 +5258,20 @@ table.text-center th { .modal-danger .modal-footer { color: #fff !important; } + .bg-gray { color: #000; background-color: #d2d6de !important; } + .bg-gray-light { background-color: #f7f7f7; } + .bg-black { background-color: #111111 !important; } + .bg-red, .callout.callout-danger, .alert-danger, @@ -4412,6 +5280,7 @@ table.text-center th { .modal-danger .modal-body { background-color: #dd4b39 !important; } + .bg-yellow, .callout.callout-warning, .alert-warning, @@ -4419,6 +5288,7 @@ table.text-center th { .modal-warning .modal-body { background-color: #f39c12 !important; } + .bg-aqua, .callout.callout-info, .alert-info, @@ -4426,14 +5296,17 @@ table.text-center th { .modal-info .modal-body { background-color: #00c0ef !important; } + .bg-blue { background-color: #0073b7 !important; } + .bg-light-blue, .label-primary, .modal-primary .modal-body { background-color: #3c8dbc !important; } + .bg-green, .callout.callout-success, .alert-success, @@ -4441,170 +5314,221 @@ table.text-center th { .modal-success .modal-body { background-color: #00a65a !important; } + .bg-navy { background-color: #001f3f !important; } + .bg-teal { background-color: #39cccc !important; } + .bg-olive { background-color: #3d9970 !important; } + .bg-lime { background-color: #01ff70 !important; } + .bg-orange { background-color: #ff851b !important; } + .bg-fuchsia { background-color: #f012be !important; } + .bg-purple { background-color: #605ca8 !important; } + .bg-maroon { background-color: #d81b60 !important; } + .bg-gray-active { color: #000; background-color: #b5bbc8 !important; } + .bg-black-active { background-color: #000000 !important; } + .bg-red-active, .modal-danger .modal-header, .modal-danger .modal-footer { background-color: #d33724 !important; } + .bg-yellow-active, .modal-warning .modal-header, .modal-warning .modal-footer { background-color: #db8b0b !important; } + .bg-aqua-active, .modal-info .modal-header, .modal-info .modal-footer { background-color: #00a7d0 !important; } + .bg-blue-active { background-color: #005384 !important; } + .bg-light-blue-active, .modal-primary .modal-header, .modal-primary .modal-footer { background-color: #357ca5 !important; } + .bg-green-active, .modal-success .modal-header, .modal-success .modal-footer { background-color: #008d4c !important; } + .bg-navy-active { background-color: #001a35 !important; } + .bg-teal-active { background-color: #30bbbb !important; } + .bg-olive-active { background-color: #368763 !important; } + .bg-lime-active { background-color: #00e765 !important; } + .bg-orange-active { background-color: #ff7701 !important; } + .bg-fuchsia-active { background-color: #db0ead !important; } + .bg-purple-active { background-color: #555299 !important; } + .bg-maroon-active { background-color: #ca195a !important; } + [class^="bg-"].disabled { opacity: 0.65; filter: alpha(opacity=65); } + .text-red { color: #dd4b39 !important; } + .text-yellow { color: #f39c12 !important; } + .text-aqua { color: #00c0ef !important; } + .text-blue { color: #0073b7 !important; } + .text-black { color: #111111 !important; } + .text-light-blue { color: #3c8dbc !important; } + .text-green { color: #00a65a !important; } + .text-gray { color: #d2d6de !important; } + .text-navy { color: #001f3f !important; } + .text-teal { color: #39cccc !important; } + .text-olive { color: #3d9970 !important; } + .text-lime { color: #01ff70 !important; } + .text-orange { color: #ff851b !important; } + .text-fuchsia { color: #f012be !important; } + .text-purple { color: #605ca8 !important; } + .text-maroon { color: #d81b60 !important; } + .link-muted { color: #7a869d; } + .link-muted:hover, .link-muted:focus { color: #606c84; } + .link-black { color: #666; } + .link-black:hover, .link-black:focus { color: #999; } + .hide { display: none !important; } + .no-border { border: 0 !important; } + .no-padding { padding: 0 !important; } + .no-margin { margin: 0 !important; } + .no-shadow { box-shadow: none !important; } + .list-unstyled, .chart-legend, .contacts-list, @@ -4614,29 +5538,35 @@ table.text-center th { margin: 0; padding: 0; } -.list-group-unbordered > .list-group-item { + +.list-group-unbordered>.list-group-item { border-left: 0; border-right: 0; border-radius: 0; padding-left: 0; padding-right: 0; } + .flat { border-radius: 0 !important; } + .text-bold, .text-bold.table td, .text-bold.table th { font-weight: 700; } + .text-sm { font-size: 12px; } + .jqstooltip { padding: 5px !important; width: auto !important; height: auto !important; } + .bg-teal-gradient { background: #39cccc !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #39cccc), color-stop(1, #7adddd)) !important; @@ -4646,6 +5576,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7adddd', endColorstr='#39cccc', GradientType=0) !important; color: #fff; } + .bg-light-blue-gradient { background: #3c8dbc !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #3c8dbc), color-stop(1, #67a8ce)) !important; @@ -4655,6 +5586,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#67a8ce', endColorstr='#3c8dbc', GradientType=0) !important; color: #fff; } + .bg-blue-gradient { background: #0073b7 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0073b7), color-stop(1, #0089db)) !important; @@ -4664,6 +5596,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0089db', endColorstr='#0073b7', GradientType=0) !important; color: #fff; } + .bg-aqua-gradient { background: #00c0ef !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00c0ef), color-stop(1, #14d1ff)) !important; @@ -4673,6 +5606,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#14d1ff', endColorstr='#00c0ef', GradientType=0) !important; color: #fff; } + .bg-yellow-gradient { background: #f39c12 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #f39c12), color-stop(1, #f7bc60)) !important; @@ -4682,6 +5616,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f7bc60', endColorstr='#f39c12', GradientType=0) !important; color: #fff; } + .bg-purple-gradient { background: #605ca8 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #605ca8), color-stop(1, #9491c4)) !important; @@ -4691,6 +5626,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9491c4', endColorstr='#605ca8', GradientType=0) !important; color: #fff; } + .bg-green-gradient { background: #00a65a !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #00a65a), color-stop(1, #00ca6d)) !important; @@ -4700,6 +5636,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ca6d', endColorstr='#00a65a', GradientType=0) !important; color: #fff; } + .bg-red-gradient { background: #dd4b39 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #dd4b39), color-stop(1, #e47365)) !important; @@ -4709,6 +5646,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e47365', endColorstr='#dd4b39', GradientType=0) !important; color: #fff; } + .bg-black-gradient { background: #111111 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #111111), color-stop(1, #2b2b2b)) !important; @@ -4718,6 +5656,7 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#2b2b2b', endColorstr='#111111', GradientType=0) !important; color: #fff; } + .bg-maroon-gradient { background: #d81b60 !important; background: -webkit-gradient(linear, left bottom, left top, color-stop(0, #d81b60), color-stop(1, #e73f7c)) !important; @@ -4727,71 +5666,88 @@ table.text-center th { filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#e73f7c', endColorstr='#d81b60', GradientType=0) !important; color: #fff; } + .description-block .description-icon { font-size: 16px; } + .no-pad-top { padding-top: 0; } + .position-static { position: static !important; } + .list-header { font-size: 15px; padding: 10px 4px; font-weight: bold; color: #666; } + .list-seperator { height: 1px; background: #f4f4f4; margin: 15px 0 9px 0; } -.list-link > a { + +.list-link>a { padding: 4px; color: #777; } -.list-link > a:hover { + +.list-link>a:hover { color: #222; } + .font-light { font-weight: 300; } + .user-block:before, .user-block:after { content: " "; display: table; } + .user-block:after { clear: both; } + .user-block img { width: 40px; height: 40px; float: left; } + .user-block .username, .user-block .description, .user-block .comment { display: block; margin-left: 50px; } + .user-block .username { font-size: 16px; font-weight: 600; } + .user-block .description { color: #999; font-size: 13px; } + .user-block.user-block-sm .username, .user-block.user-block-sm .description, .user-block.user-block-sm .comment { margin-left: 40px; } + .user-block.user-block-sm .username { font-size: 14px; } + .img-sm, .img-md, .img-lg, @@ -4799,61 +5755,76 @@ table.text-center th { .user-block.user-block-sm img { float: left; } + .img-sm, .box-comments .box-comment img, .user-block.user-block-sm img { width: 30px !important; height: 30px !important; } -.img-sm + .img-push { + +.img-sm+.img-push { margin-left: 40px; } + .img-md { width: 60px; height: 60px; } -.img-md + .img-push { + +.img-md+.img-push { margin-left: 70px; } + .img-lg { width: 100px; height: 100px; } -.img-lg + .img-push { + +.img-lg+.img-push { margin-left: 110px; } + .img-bordered { border: 3px solid #d2d6de; padding: 3px; } + .img-bordered-sm { border: 2px solid #d2d6de; padding: 2px; } + .attachment-block { border: 1px solid #f4f4f4; padding: 5px; margin-bottom: 10px; background: #f7f7f7; } + .attachment-block .attachment-img { max-width: 100px; max-height: 100px; height: auto; float: left; } + .attachment-block .attachment-pushed { margin-left: 110px; } + .attachment-block .attachment-heading { margin: 0; } + .attachment-block .attachment-text { color: #555; } + .connectedSortable { min-height: 100px; } + .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); @@ -4864,33 +5835,40 @@ table.text-center th { position: absolute; width: 1px; } + .sort-highlight { background: #f4f4f4; border: 1px dashed #ddd; margin-bottom: 10px; } + .full-opacity-hover { opacity: 0.65; filter: alpha(opacity=65); } + .full-opacity-hover:hover { opacity: 1; filter: alpha(opacity=100); } + .chart { position: relative; overflow: hidden; width: 100%; } + .chart svg, .chart canvas { width: 100% !important; } + /* * Misc: print * ----------- */ @media print { + .no-print, .main-sidebar, .left-side, @@ -4898,6 +5876,7 @@ table.text-center th { .content-header { display: none !important; } + .content-wrapper, .right-side, .main-footer { @@ -4908,25 +5887,30 @@ table.text-center th { -o-transform: translate(0, 0) !important; transform: translate(0, 0) !important; } + .fixed .content-wrapper, .fixed .right-side { padding-top: 0 !important; } + .invoice { width: 100%; border: 0; margin: 0; padding: 0; } + .invoice-col { float: left; width: 33.3333333%; } + .table-responsive { overflow: auto; } - .table-responsive > .table tr th, - .table-responsive > .table tr td { + + .table-responsive>.table tr th, + .table-responsive>.table tr td { white-space: normal !important; } -} +} \ No newline at end of file