diff --git a/.gitignore b/.gitignore index 292729b..672f0a3 100644 --- a/.gitignore +++ b/.gitignore @@ -28,11 +28,3 @@ cabal.project.local~ result result-* -# ---> Yesod -*.sqlite3 -*.sqlite3-shm -*.sqlite3-wal -static/tmp/ - -# ---> Editor -tags diff --git a/OwOpointTracker.cabal b/OwOpointTracker.cabal deleted file mode 100644 index 6c7ac59..0000000 --- a/OwOpointTracker.cabal +++ /dev/null @@ -1,210 +0,0 @@ -cabal-version: 1.12 - --- This file has been generated from package.yaml by hpack version 0.35.2. --- --- see: https://github.com/sol/hpack - -name: OwOpointTracker -version: 0.0.0 -build-type: Simple -data-files: config/models.persistentmodels - , config/favicon.ico - , config/settings.yml - , config/test-settings.yml - , config/robots.txt - , config/routes.yesodroutes - , static/css/bootstrap.css - , static/fonts/glyphicons-halflings-regular.eot - , static/fonts/glyphicons-halflings-regular.svg - , static/fonts/glyphicons-halflings-regular.ttf - , static/fonts/glyphicons-halflings-regular.woff - , templates/*.hamlet --- , templates/*.julius - , templates/*.lucius - -flag dev - description: Turn on development settings, like auto-reload templates. - manual: False - default: False - -flag library-only - description: Build for use with "yesod devel" - manual: False - default: False - -library - exposed-modules: - Application - Foundation - Handler.Common - Handler.Home - Handler.Station - Handler.Ad - Import - Import.NoFoundation - Model - Settings - Settings.StaticFiles - Json - other-modules: - Paths_OwOpointTracker - hs-source-dirs: - src - build-depends: - aeson >=1.4 && <2.2 - , base >=4.9.1.0 && <5 - , bytestring >=0.10 && <0.12 - , case-insensitive - , classy-prelude ==1.5.* - , classy-prelude-conduit ==1.5.* - , classy-prelude-yesod ==1.5.* - , conduit >=1.0 && <2.0 - , containers - , data-default - , directory >=1.1 && <1.4 - , fast-logger >=2.2 && <3.3 - , file-embed - , foreign-store - , hjsmin >=0.1 && <0.3 - , http-client-tls ==0.3.* - , http-conduit ==2.3.* - , monad-control >=0.3 && <1.1 - , monad-logger ==0.3.* - , persistent >=2.9 && <2.15 - , persistent-sqlite >=2.9 && <2.14 - , persistent-template >=2.5 && <2.14 - , random - , safe - , shakespeare >=2.0 && <2.2 - , template-haskell - , text >=0.11 && <2.1 - , time - , tomland - , unordered-containers - , vector - , wai - , wai-extra >=3.0 && <3.2 - , wai-logger >=2.2 && <2.5 - , warp >=3.0 && <3.4 - , yaml ==0.11.* - , yesod ==1.6.* - , yesod-auth ==1.6.* - , yesod-core ==1.6.* - , yesod-form >=1.6 && <1.8 - , yesod-static ==1.6.* - default-language: Haskell2010 - if (flag(dev)) || (flag(library-only)) - ghc-options: -Wall -fwarn-tabs -O0 - cpp-options: -DDEVELOPMENT - else - ghc-options: -Wall -fwarn-tabs -O1 - -executable OwOpointTracker - main-is: main.hs - other-modules: - DevelMain - Paths_OwOpointTracker - hs-source-dirs: - app - ghc-options: -threaded -rtsopts -with-rtsopts=-N - build-depends: - OwOpointTracker - , aeson >=1.4 && <2.2 - , base >=4.9.1.0 && <5 - , bytestring >=0.10 && <0.12 - , case-insensitive - , classy-prelude ==1.5.* - , classy-prelude-conduit ==1.5.* - , classy-prelude-yesod ==1.5.* - , conduit >=1.0 && <2.0 - , containers - , data-default - , directory >=1.1 && <1.4 - , fast-logger >=2.2 && <3.3 - , file-embed - , foreign-store - , hjsmin >=0.1 && <0.3 - , http-client-tls ==0.3.* - , http-conduit ==2.3.* - , monad-control >=0.3 && <1.1 - , monad-logger ==0.3.* - , persistent >=2.9 && <2.15 - , persistent-sqlite >=2.9 && <2.14 - , persistent-template >=2.5 && <2.14 - , safe - , shakespeare >=2.0 && <2.2 - , template-haskell - , text >=0.11 && <2.1 - , time - , unordered-containers - , vector - , wai - , wai-extra >=3.0 && <3.2 - , wai-logger >=2.2 && <2.5 - , warp >=3.0 && <3.4 - , yaml ==0.11.* - , yesod ==1.6.* - , yesod-auth ==1.6.* - , yesod-core ==1.6.* - , yesod-form >=1.6 && <1.8 - , yesod-static ==1.6.* - default-language: Haskell2010 - if flag(library-only) - buildable: False - -test-suite OwOpointTracker-test - type: exitcode-stdio-1.0 - main-is: Spec.hs - other-modules: - Handler.CommonSpec - Handler.HomeSpec - TestImport - Paths_OwOpointTracker - hs-source-dirs: - test - ghc-options: -Wall - build-depends: - OwOpointTracker - , aeson >=1.4 && <2.2 - , base >=4.9.1.0 && <5 - , bytestring >=0.10 && <0.12 - , case-insensitive - , classy-prelude ==1.5.* - , classy-prelude-conduit ==1.5.* - , classy-prelude-yesod ==1.5.* - , conduit >=1.0 && <2.0 - , containers - , data-default - , directory >=1.1 && <1.4 - , fast-logger >=2.2 && <3.3 - , file-embed - , foreign-store - , hjsmin >=0.1 && <0.3 - , hspec >=2.0.0 - , http-client-tls ==0.3.* - , http-conduit ==2.3.* - , microlens - , monad-control >=0.3 && <1.1 - , monad-logger ==0.3.* - , persistent >=2.9 && <2.15 - , persistent-sqlite >=2.9 && <2.14 - , persistent-template >=2.5 && <2.14 - , safe - , shakespeare >=2.0 && <2.2 - , template-haskell - , text >=0.11 && <2.1 - , time - , unordered-containers - , vector - , wai - , wai-extra >=3.0 && <3.2 - , wai-logger >=2.2 && <2.5 - , warp >=3.0 && <3.4 - , yaml ==0.11.* - , yesod ==1.6.* - , yesod-auth ==1.6.* - , yesod-core ==1.6.* - , yesod-form >=1.6 && <1.8 - , yesod-static ==1.6.* - , yesod-test - default-language: Haskell2010 diff --git a/README.md b/README.md index ba3f01e..03487e0 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,2 @@ -## Haskell Setup +# haskellTemplate -1. If you haven't already, [install Stack](https://haskell-lang.org/get-started) - * On POSIX systems, this is usually `curl -sSL https://get.haskellstack.org/ | sh` -2. Install the `yesod` command line tool: `stack install yesod-bin --install-ghc` -3. Build libraries: `stack build` - -If you have trouble, refer to the [Yesod Quickstart guide](https://www.yesodweb.com/page/quickstart) for additional detail. - -## Development - -Start a development server with: - -``` -stack exec -- yesod devel -``` - -As your code changes, your site will be automatically recompiled and redeployed to localhost. - -## Tests - -``` -stack test --flag OwOpointTracker:library-only --flag OwOpointTracker:dev -``` - -(Because `yesod devel` passes the `library-only` and `dev` flags, matching those flags means you don't need to recompile between tests and development, and it disables optimization to speed up your test compile times). - -## Documentation - -* Read the [Yesod Book](https://www.yesodweb.com/book) online for free -* Check [Stackage](http://stackage.org/) for documentation on the packages in your LTS Haskell version, or [search it using Hoogle](https://www.stackage.org/lts/hoogle?q=). Tip: Your LTS version is in your `stack.yaml` file. -* For local documentation, use: - * `stack haddock --open` to generate Haddock documentation for your dependencies, and open that documentation in a browser - * `stack hoogle ` to generate a Hoogle database and search for your query -* The [Yesod cookbook](https://github.com/yesodweb/yesod-cookbook) has sample code for various needs - -## Getting Help - -* Ask questions on [Stack Overflow, using the Yesod or Haskell tags](https://stackoverflow.com/questions/tagged/yesod+haskell) -* Ask the [Yesod Google Group](https://groups.google.com/forum/#!forum/yesodweb) -* There are several chatrooms you can ask for help: - * For IRC, try Freenode#yesod and Freenode#haskell - * [Functional Programming Slack](https://fpchat-invite.herokuapp.com/), in the #haskell, #haskell-beginners, or #yesod channels. diff --git a/ads/image0.png b/ads/image0.png deleted file mode 100644 index c39dd73..0000000 Binary files a/ads/image0.png and /dev/null differ diff --git a/ads/image1.png b/ads/image1.png deleted file mode 100644 index 456cc8d..0000000 Binary files a/ads/image1.png and /dev/null differ diff --git a/ads/image2.png b/ads/image2.png deleted file mode 100644 index 8df5cc1..0000000 Binary files a/ads/image2.png and /dev/null differ diff --git a/ads/image3.png b/ads/image3.png deleted file mode 100644 index d716045..0000000 Binary files a/ads/image3.png and /dev/null differ diff --git a/ads/image4.png b/ads/image4.png deleted file mode 100644 index 97b1be1..0000000 Binary files a/ads/image4.png and /dev/null differ diff --git a/app/DevelMain.hs b/app/DevelMain.hs deleted file mode 100644 index 7e17092..0000000 --- a/app/DevelMain.hs +++ /dev/null @@ -1,105 +0,0 @@ --- | Running your app inside GHCi. --- --- This option provides significantly faster code reload compared to --- @yesod devel@. However, you do not get automatic code reload --- (which may be a benefit, depending on your perspective). To use this: --- --- 1. Start up GHCi --- --- $ stack ghci OwOpointTracker:lib --no-load --work-dir .stack-work-devel --- --- 2. Load this module --- --- > :l app/DevelMain.hs --- --- 3. Run @update@ --- --- > DevelMain.update --- --- 4. Your app should now be running, you can connect at http://localhost:3000 --- --- 5. Make changes to your code --- --- 6. After saving your changes, reload by running: --- --- > :r --- > DevelMain.update --- --- You can also call @DevelMain.shutdown@ to stop the app --- --- There is more information about this approach, --- on the wiki: https://github.com/yesodweb/yesod/wiki/ghci --- --- WARNING: GHCi does not notice changes made to your template files. --- If you change a template, you'll need to either exit GHCi and reload, --- or manually @touch@ another Haskell module. - -module DevelMain where - -import Prelude -import Application (getApplicationRepl, shutdownApp) - -import Control.Monad ((>=>)) -import Control.Concurrent -import Data.IORef -import Foreign.Store -import Network.Wai.Handler.Warp -import GHC.Word - --- | Start or restart the server. --- newStore is from foreign-store. --- A Store holds onto some data across ghci reloads -update :: IO () -update = do - mtidStore <- lookupStore tidStoreNum - case mtidStore of - -- no server running - Nothing -> do - done <- storeAction doneStore newEmptyMVar - tid <- start done - _ <- storeAction (Store tidStoreNum) (newIORef tid) - return () - -- server is already running - Just tidStore -> restartAppInNewThread tidStore - where - doneStore :: Store (MVar ()) - doneStore = Store 0 - - -- shut the server down with killThread and wait for the done signal - restartAppInNewThread :: Store (IORef ThreadId) -> IO () - restartAppInNewThread tidStore = modifyStoredIORef tidStore $ \tid -> do - killThread tid - withStore doneStore takeMVar - readStore doneStore >>= start - - - -- | Start the server in a separate thread. - start :: MVar () -- ^ Written to when the thread is killed. - -> IO ThreadId - start done = do - (port, site, app) <- getApplicationRepl - forkFinally - (runSettings (setPort port defaultSettings) app) - -- Note that this implies concurrency - -- between shutdownApp and the next app that is starting. - -- Normally this should be fine - (\_ -> putMVar done () >> shutdownApp site) - --- | kill the server -shutdown :: IO () -shutdown = do - mtidStore <- lookupStore tidStoreNum - case mtidStore of - -- no server running - Nothing -> putStrLn "no Yesod app running" - Just tidStore -> do - withStore tidStore $ readIORef >=> killThread - putStrLn "Yesod app is shutdown" - -tidStoreNum :: Word32 -tidStoreNum = 1 - -modifyStoredIORef :: Store (IORef a) -> (a -> IO a) -> IO () -modifyStoredIORef store f = withStore store $ \ref -> do - v <- readIORef ref - f v >>= writeIORef ref diff --git a/app/devel.hs b/app/devel.hs deleted file mode 100644 index 5f2b7b7..0000000 --- a/app/devel.hs +++ /dev/null @@ -1,6 +0,0 @@ -{-# LANGUAGE PackageImports #-} -import "OwOpointTracker" Application (develMain) -import Prelude (IO) - -main :: IO () -main = develMain diff --git a/app/main.hs b/app/main.hs deleted file mode 100644 index 4ffa93d..0000000 --- a/app/main.hs +++ /dev/null @@ -1,5 +0,0 @@ -import Prelude (IO) -import Application (appMain) - -main :: IO () -main = appMain diff --git a/config/client_session_key.aes b/config/client_session_key.aes deleted file mode 100644 index e9a012e..0000000 --- a/config/client_session_key.aes +++ /dev/null @@ -1,3 +0,0 @@ -Ú~¹l -=;uïU¥‡voïÔmýn*‘šâ6‚ø}Ã(΋¤±WÕåî¥$H?¦—u(²Òiʶ\œ›‚Ô¿|&öï£h{}$ô¿E‚{¦½úx - 547:°5ì‘]Û°wIw \ No newline at end of file diff --git a/config/favicon.ico b/config/favicon.ico deleted file mode 100644 index 2f5158d..0000000 Binary files a/config/favicon.ico and /dev/null differ diff --git a/config/keter.yml b/config/keter.yml deleted file mode 100644 index 9b7ff60..0000000 --- a/config/keter.yml +++ /dev/null @@ -1,73 +0,0 @@ -# After you've edited this file, remove the following line to allow -# `yesod keter` to build your bundle. -# -# Also, please make sure that `port` value on `config/settings.yaml` is set to -# use `PORT` env variable. -user-edited: false - -# A Keter app is composed of 1 or more stanzas. The main stanza will define our -# web application. See the Keter documentation for more information on -# available stanzas. -stanzas: - - # Your Yesod application. - - type: webapp - - # Name of your executable. You are unlikely to need to change this. - # Note that all file paths are relative to the keter.yml file. - # - # The path given is for Stack projects. If you're still using cabal, change - # to - # exec: ../dist/build/OwOpointTracker/OwOpointTracker - exec: ../dist/bin/OwOpointTracker - - # Command line options passed to your application. - args: [] - - hosts: - # You can specify one or more hostnames for your application to respond - # to. The primary hostname will be used for generating your application - # root. - - www.OwOpointTracker.com - - # Enable to force Keter to redirect to https - # Can be added to any stanza - requires-secure: false - - # Static files. - - type: static-files - hosts: - - static.OwOpointTracker.com - root: ../static - - # Uncomment to turn on directory listings. - # directory-listing: true - - # Redirect plain domain name to www. - - type: redirect - - hosts: - - OwOpointTracker.com - actions: - - host: www.OwOpointTracker.com - # secure: false - # port: 80 - - # Uncomment to switch to a non-permanent redirect. - # status: 303 - -# Use the following to automatically copy your bundle upon creation via `yesod -# keter`. Uses `scp` internally, so you can set it to a remote destination -# copy-to: user@host:/opt/keter/incoming/ - -# You can pass arguments to `scp` used above. This example limits bandwidth to -# 1024 Kbit/s and uses port 2222 instead of the default 22 -# copy-to-args: -# - "-l 1024" -# - "-P 2222" - -# If you would like to have Keter automatically create a PostgreSQL database -# and set appropriate environment variables for it to be discovered, uncomment -# the following line. -# plugins: -# postgres: true diff --git a/config/models.persistentmodels b/config/models.persistentmodels deleted file mode 100644 index 1552258..0000000 --- a/config/models.persistentmodels +++ /dev/null @@ -1,25 +0,0 @@ --- By default this file is used by `persistFileWith` in Model.hs (which is imported by Foundation.hs) --- Syntax for this file here: https://github.com/yesodweb/persistent/blob/master/docs/Persistent-entity-syntax.md - -Round - stationId Text - tutorPoints Int - erstiePoints Int - number Int - UniqueRoundStation number stationId - ---User --- ident Text --- password Text Maybe --- UniqueUser ident --- deriving Typeable ---Email --- email Text --- userId UserId Maybe --- verkey Text Maybe --- UniqueEmail email ---Comment json -- Adding "json" causes ToJSON and FromJSON instances to be derived. --- message Text --- userId UserId Maybe --- deriving Eq --- deriving Show diff --git a/config/robots.txt b/config/robots.txt deleted file mode 100644 index 7d329b1..0000000 --- a/config/robots.txt +++ /dev/null @@ -1 +0,0 @@ -User-agent: * diff --git a/config/routes.yesodroutes b/config/routes.yesodroutes deleted file mode 100644 index 0607e98..0000000 --- a/config/routes.yesodroutes +++ /dev/null @@ -1,23 +0,0 @@ --- By default this file is used by `parseRoutesFile` in Foundation.hs --- Syntax for this file here: https://www.yesodweb.com/book/routing-and-handlers - -/static StaticR Static appStatic --- /auth AuthR Auth getAuth - -/favicon.ico FaviconR GET -/robots.txt RobotsR GET - -/ HomeR GET - --- stationName -/station/#Text StationR GET - --- stationName/roundNumber -/station/#Text/#Int StationRoundR GET POST - -/ad/ AdR GET - - --- /comments CommentR POST - --- /profile ProfileR GET diff --git a/config/settings.yml b/config/settings.yml deleted file mode 100644 index eb9bea6..0000000 --- a/config/settings.yml +++ /dev/null @@ -1,45 +0,0 @@ -# Values formatted like "_env:YESOD_ENV_VAR_NAME:default_value" can be overridden by the specified environment variable. -# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables - -static-dir: "_env:YESOD_STATIC_DIR:static" -host: "_env:YESOD_HOST:*4" # any IPv4 host -port: "_env:YESOD_PORT:3000" # NB: The port `yesod devel` uses is distinct from this value. Set the `yesod devel` port from the command line. -# For `keter` user, enable the follwing line, and comment out previous one. -#port: "_env:PORT:3000" # `keter` uses `PORT` env var name - -ip-from-header: "_env:YESOD_IP_FROM_HEADER:false" - -# Default behavior: determine the application root from the request headers. -# Uncomment to set an explicit approot -#approot: "_env:YESOD_APPROOT:http://localhost:3000" - -# By default, `yesod devel` runs in development, and built executables use -# production settings (see below). To override this, use the following: -# -# development: false - -# Optional values with the following production defaults. -# In development, they default to the inverse. -# -# detailed-logging: false -# should-log-all: false -# reload-templates: false -# mutable-static: false -# skip-combining: false -# auth-dummy-login : false - -# NB: If you need a numeric value (e.g. 123) to parse as a String, wrap it in single quotes (e.g. "_env:YESOD_PGPASS:'123'") -# See https://github.com/yesodweb/yesod/wiki/Configuration#parsing-numeric-values-as-strings - -database: - # See config/test-settings.yml for an override during tests - database: "_env:YESOD_SQLITE_DATABASE:OwOpointTracker.sqlite3" - poolsize: "_env:YESOD_SQLITE_POOLSIZE:10" - -copyright: Insert copyright statement here - -stations: - - station-id: "test" - station-name: "Test" - -ad-files: "ads/" diff --git a/config/test-settings.yml b/config/test-settings.yml deleted file mode 100644 index 3b57a53..0000000 --- a/config/test-settings.yml +++ /dev/null @@ -1,11 +0,0 @@ -database: - # NOTE: By design, this setting prevents the SQLITE_DATABASE environment variable - # from affecting test runs, so that we don't accidentally affect the - # production database during testing. If you're not concerned about that and - # would like to have environment variable overrides, you could instead use - # something like: - # - # database: "_env:SQLITE_DATABASE:OwOpointTracker_test.sqlite3" - database: OwOpointTracker_test.sqlite3 - -auth-dummy-login: true diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 275f934..0000000 --- a/flake.lock +++ /dev/null @@ -1,74 +0,0 @@ -{ - "nodes": { - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1728227251, - "narHash": "sha256-JLDhMFyGyFe0QJAbCuSxB7/kjUCA7uUAMa6BFRORwXk=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "9cbfbfc38f1fbf9a0f471795c84780211875fd45", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1728279793, - "narHash": "sha256-W3D5YpNrUVTFPVU4jiEiboaaUDShaiH5fRl9aJLqUnU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f85a2d005e83542784a755ca8da112f4f65c4aa4", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1727825735, - "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" - } - }, - "root": { - "inputs": { - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index 1406055..0000000 --- a/flake.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; - haskell-flake.url = "github:srid/haskell-flake"; - }; - outputs = inputs@{ self, nixpkgs, flake-parts, ... }: - flake-parts.lib.mkFlake { inherit inputs; } { - flake = { - nixosModules.OwOpointTracker = import ./module.nix self; - }; - systems = nixpkgs.lib.systems.flakeExposed; - imports = [ inputs.haskell-flake.flakeModule ]; - - perSystem = { self', pkgs, ... }: { - - # Typically, you just want a single project named "default". But - # multiple projects are also possible, each using different GHC version. - haskellProjects.default = { - # The base package set representing a specific GHC version. - # By default, this is pkgs.haskellPackages. - # You may also create your own. See https://community.flake.parts/haskell-flake/package-set - # basePackages = pkgs.haskellPackages; - - # Extra package information. See https://community.flake.parts/haskell-flake/dependency - # - # Note that local packages are automatically included in `packages` - # (defined by `defaults.packages` option). - # - packages = { - # aeson.source = "1.5.0.0"; # Override aeson to a custom version from Hackage - # shower.source = inputs.shower; # Override shower to a custom source path - }; - settings = { - # aeson = { - # check = false; - # }; - # relude = { - # haddock = false; - # broken = false; - # }; - }; - - devShell = { - # Enabled by default - enable = false; - - # Programs you want to make available in the shell. - # Default programs can be disabled by setting to 'null' - tools = hp: { ghcid = null; yesod-bin = hp.yesod-bin; stack = pkgs.stack;}; - - hlsCheck.enable = pkgs.stdenv.isDarwin; # On darwin, sandbox is disabled, so HLS can use the network. - }; - }; - - # haskell-flake doesn't set the default package, but you can do it here. - packages.default = self'.packages.OwOpointTracker; - }; - }; -} diff --git a/module.nix b/module.nix deleted file mode 100644 index db53a1e..0000000 --- a/module.nix +++ /dev/null @@ -1,89 +0,0 @@ -self: {config, pkgs, lib ...}: -with lib; - -let - cfg = config.services.owOPointTracker; - format = pkgs.formats.yaml {}; - configFile = format.generate "settings.yml" cfg.config - databaseOptionType = types.submodule { - options = { - database = mkOption { - default = "_env:YESOD_SQLITE_DATABASE:OwOpointTracker.sqlite3"; - type = types.str; - }; - poolsize = mkOption { - default = "_env:YESOD_SQLITE_POOLSIZE:10"; - type = types.str; - }; - }; - }; - stationType = types.submodule { - options = { - station-id = mkOption { - default = "Station"; - type = types.str; - }; - station-name = mkOption { - types = types.str; - }; - }; - }; -{ - imports = []; - options.services.owOPointTracker = { - enable = mkEnableOption "OwOPointTracker"; - config = { - static-dir = mkOption { - type = types.path; - }; - host = mkOption { - type = types.str; - default = "_env:YESOD_HOST:*4"; - ad-files = mkOption { - type = types.path; - }; - port = mkOption { - default = "_env:YESOD_PORT:3000"; - type = types.str; - }; - ip-from-header = mkOption { - default = "_env:YESOD_IP_FROM_HEADER:false"; - type = types.str; - }; - database = { - type = databaseOptionType; - }; - copyright = mkOption { - default = "copyright for this mess?"; - type = types.str; - }; - station = mkOption { - type = types.listOf stationType; - }; - - }; - - }; - config = mkIf cfg.enable { - users.users.owopoint = { - isSystemUser = true; - group = "owopoint"; - createHome = true; - home = "/var/owopoint"; - }; - users.groups = { - owopoint = {}; - }; - systemd.services.owOPointTracker = { - wantedBy = ["multi-user.target"]; - after = ["network.target"]; - serviceConfig = { - ExecStart = "${self.packages.${pkgs.system}.default} ${configFile}"; - Restart = always; - User = "owopoint"; - Group = "owopoint"; - }; - }; - - }; -} diff --git a/package.yaml b/package.yaml deleted file mode 100644 index a4617eb..0000000 --- a/package.yaml +++ /dev/null @@ -1,100 +0,0 @@ -name: OwOpointTracker -version: "0.0.0" - -dependencies: - -- base >=4.9.1.0 && <5 -- yesod >=1.6 && <1.7 -- yesod-core >=1.6 && <1.7 -- yesod-auth >=1.6 && <1.7 -- yesod-static >=1.6 && <1.7 -- yesod-form >=1.6 && <1.8 -- classy-prelude >=1.5 && <1.6 -- classy-prelude-conduit >=1.5 && <1.6 -- classy-prelude-yesod >=1.5 && <1.6 -- bytestring >=0.10 && <0.12 -- text >=0.11 && <2.0 -- persistent >=2.9 && <2.14 -- persistent-sqlite >=2.9 && <2.14 -- persistent-template >=2.5 && <2.14 -- template-haskell -- shakespeare >=2.0 && <2.1 -- hjsmin >=0.1 && <0.3 -- monad-control >=0.3 && <1.1 -- wai-extra >=3.0 && <3.2 -- yaml >=0.11 && <0.12 -- http-client-tls >=0.3 && <0.4 -- http-conduit >=2.3 && <2.4 -- directory >=1.1 && <1.4 -- warp >=3.0 && <3.4 -- data-default -- aeson >=1.4 && <2.1 -- conduit >=1.0 && <2.0 -- monad-logger >=0.3 && <0.4 -- fast-logger >=2.2 && <3.2 -- wai-logger >=2.2 && <2.5 -- file-embed -- safe -- unordered-containers -- containers -- vector -- time -- case-insensitive -- wai -- foreign-store - -# The library contains all of our application code. The executable -# defined below is just a thin wrapper. -library: - source-dirs: src - when: - - condition: (flag(dev)) || (flag(library-only)) - then: - ghc-options: - - -Wall - - -fwarn-tabs - - -O0 - cpp-options: -DDEVELOPMENT - else: - ghc-options: - - -Wall - - -fwarn-tabs - - -O2 - -# Runnable executable for our application -executables: - OwOpointTracker: - main: main.hs - source-dirs: app - ghc-options: - - -threaded - - -rtsopts - - -with-rtsopts=-N - dependencies: - - OwOpointTracker - when: - - condition: flag(library-only) - buildable: false - -# Test suite -tests: - OwOpointTracker-test: - main: Spec.hs - source-dirs: test - ghc-options: -Wall - dependencies: - - OwOpointTracker - - hspec >=2.0.0 - - yesod-test - - microlens - -# Define flags used by "yesod devel" to make compilation faster -flags: - library-only: - description: Build for use with "yesod devel" - manual: false - default: false - dev: - description: Turn on development settings, like auto-reload templates. - manual: false - default: false diff --git a/settings.yml b/settings.yml deleted file mode 100644 index e42aafd..0000000 --- a/settings.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Values formatted like "_env:YESOD_ENV_VAR_NAME:default_value" can be overridden by the specified environment variable. -# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables - -static-dir: "_env:YESOD_STATIC_DIR:static" -host: "_env:YESOD_HOST:*4" # any IPv4 host -port: "_env:YESOD_PORT:3000" # NB: The port `yesod devel` uses is distinct from this value. Set the `yesod devel` port from the command line. -# For `keter` user, enable the follwing line, and comment out previous one. -#port: "_env:PORT:3000" # `keter` uses `PORT` env var name - -ip-from-header: "_env:YESOD_IP_FROM_HEADER:false" - -# Default behavior: determine the application root from the request headers. -# Uncomment to set an explicit approot -#approot: "_env:YESOD_APPROOT:http://localhost:3000" - -# By default, `yesod devel` runs in development, and built executables use -# production settings (see below). To override this, use the following: -# -# development: false - -# Optional values with the following production defaults. -# In development, they default to the inverse. -# -# detailed-logging: false -# should-log-all: false -# reload-templates: false -# mutable-static: false -# skip-combining: false -# auth-dummy-login : false - -# NB: If you need a numeric value (e.g. 123) to parse as a String, wrap it in single quotes (e.g. "_env:YESOD_PGPASS:'123'") -# See https://github.com/yesodweb/yesod/wiki/Configuration#parsing-numeric-values-as-strings - -database: - # See config/test-settings.yml for an override during tests - database: "_env:YESOD_SQLITE_DATABASE:OwOpointTracker.sqlite3" - poolsize: "_env:YESOD_SQLITE_POOLSIZE:10" - -copyright: Insert copyright statement here - -stations: - - station-id: "testi" - station-name: "Test" diff --git a/src/Application.hs b/src/Application.hs deleted file mode 100644 index 3f8b7f1..0000000 --- a/src/Application.hs +++ /dev/null @@ -1,190 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE RecordWildCards #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} -module Application - ( getApplicationDev - , appMain - , develMain - , makeFoundation - , makeLogWare - -- * for DevelMain - , getApplicationRepl - , shutdownApp - -- * for GHCI - , handler - , db - ) where - -import Control.Monad.Logger (liftLoc, runLoggingT) -import Database.Persist.Sqlite (createSqlitePool, runSqlPool, - sqlDatabase, sqlPoolSize) -import Import -import Language.Haskell.TH.Syntax (qLocation) -import Network.HTTP.Client.TLS (getGlobalManager) -import Network.Wai (Middleware) -import Network.Wai.Handler.Warp (Settings, defaultSettings, - defaultShouldDisplayException, - runSettings, setHost, - setOnException, setPort, getPort) -import Network.Wai.Middleware.RequestLogger (Destination (Logger), - IPAddrSource (..), - OutputFormat (..), destination, - mkRequestLogger, outputFormat) -import System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, - toLogStr) - --- Import all relevant handler modules here. --- Don't forget to add new modules to your cabal file! -import Handler.Common -import Handler.Home -import Handler.Station -import Handler.Ad - --- This line actually creates our YesodDispatch instance. It is the second half --- of the call to mkYesodData which occurs in Foundation.hs. Please see the --- comments there for more details. -mkYesodDispatch "App" resourcesApp - --- | This function allocates resources (such as a database connection pool), --- performs initialization and returns a foundation datatype value. This is also --- the place to put your migrate statements to have automatic database --- migrations handled by Yesod. -makeFoundation :: AppSettings -> IO App -makeFoundation appSettings = do - -- Some basic initializations: HTTP connection manager, logger, and static - -- subsite. - appHttpManager <- getGlobalManager - appLogger <- newStdoutLoggerSet defaultBufSize >>= makeYesodLogger - appStatic <- - (if appMutableStatic appSettings then staticDevel else static) - (appStaticDir appSettings) - - -- We need a log function to create a connection pool. We need a connection - -- pool to create our foundation. And we need our foundation to get a - -- logging function. To get out of this loop, we initially create a - -- temporary foundation without a real connection pool, get a log function - -- from there, and then create the real foundation. - let mkFoundation appConnPool = App {..} - -- The App {..} syntax is an example of record wild cards. For more - -- information, see: - -- https://ocharles.org.uk/blog/posts/2014-12-04-record-wildcards.html - tempFoundation = mkFoundation $ error "connPool forced in tempFoundation" - logFunc = messageLoggerSource tempFoundation appLogger - - -- Create the database connection pool - pool <- flip runLoggingT logFunc $ createSqlitePool - (sqlDatabase $ appDatabaseConf appSettings) - (sqlPoolSize $ appDatabaseConf appSettings) - - -- Perform database migration using our application's logging settings. - runLoggingT (runSqlPool (runMigration migrateAll) pool) logFunc - - -- Return the foundation - return $ mkFoundation pool - --- | Convert our foundation to a WAI Application by calling @toWaiAppPlain@ and --- applying some additional middlewares. -makeApplication :: App -> IO Application -makeApplication foundation = do - logWare <- makeLogWare foundation - -- Create the WAI application and apply middlewares - appPlain <- toWaiAppPlain foundation - return $ logWare $ defaultMiddlewaresNoLogging appPlain - -makeLogWare :: App -> IO Middleware -makeLogWare foundation = - mkRequestLogger def - { outputFormat = - if appDetailedRequestLogging $ appSettings foundation - then Detailed True - else Apache - (if appIpFromHeader $ appSettings foundation - then FromFallback - else FromSocket) - , destination = Logger $ loggerSet $ appLogger foundation - } - - --- | Warp settings for the given foundation value. -warpSettings :: App -> Settings -warpSettings foundation = - setPort (appPort $ appSettings foundation) - $ setHost (appHost $ appSettings foundation) - $ setOnException (\_req e -> - when (defaultShouldDisplayException e) $ messageLoggerSource - foundation - (appLogger foundation) - $(qLocation >>= liftLoc) - "yesod" - LevelError - (toLogStr $ "Exception from Warp: " ++ show e)) - defaultSettings - --- | For yesod devel, return the Warp settings and WAI Application. -getApplicationDev :: IO (Settings, Application) -getApplicationDev = do - settings <- getAppSettings - foundation <- makeFoundation settings - wsettings <- getDevSettings $ warpSettings foundation - app <- makeApplication foundation - return (wsettings, app) - -getAppSettings :: IO AppSettings -getAppSettings = loadYamlSettings [configSettingsYml] [] useEnv - --- | main function for use by yesod devel -develMain :: IO () -develMain = develMainHelper getApplicationDev - --- | The @main@ function for an executable running this site. -appMain :: IO () -appMain = do - -- Get the settings from all relevant sources - settings <- loadYamlSettingsArgs - -- fall back to compile-time values, set to [] to require values at runtime - [configSettingsYmlValue] - - -- allow environment variables to override - useEnv - - -- Generate the foundation from the settings - foundation <- makeFoundation settings - - -- Generate a WAI Application from the foundation - app <- makeApplication foundation - - -- Run the application with Warp - runSettings (warpSettings foundation) app - - --------------------------------------------------------------- --- Functions for DevelMain.hs (a way to run the app from GHCi) --------------------------------------------------------------- -getApplicationRepl :: IO (Int, App, Application) -getApplicationRepl = do - settings <- getAppSettings - foundation <- makeFoundation settings - wsettings <- getDevSettings $ warpSettings foundation - app1 <- makeApplication foundation - return (getPort wsettings, foundation, app1) - -shutdownApp :: App -> IO () -shutdownApp _ = return () - - ---------------------------------------------- --- Functions for use in development with GHCi ---------------------------------------------- - --- | Run a handler -handler :: Handler a -> IO a -handler h = getAppSettings >>= makeFoundation >>= flip unsafeHandler h - --- | Run DB queries -db :: ReaderT SqlBackend Handler a -> IO a -db = handler . runDB diff --git a/src/Foundation.hs b/src/Foundation.hs deleted file mode 100644 index ff6cf9e..0000000 --- a/src/Foundation.hs +++ /dev/null @@ -1,302 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE ExplicitForAll #-} -{-# LANGUAGE RankNTypes #-} -{-# LANGUAGE InstanceSigs #-} - -module Foundation where - -import Import.NoFoundation -import Data.Kind (Type) -import Database.Persist.Sql (ConnectionPool, runSqlPool) -import Text.Hamlet (hamletFile) -import Text.Jasmine (minifym) -import Control.Monad.Logger (LogSource) - --- Used only when in "auth-dummy-login" setting is enabled. --- import Yesod.Auth.Dummy - --- import Yesod.Auth.OpenId (authOpenId, IdentifierType (Claimed)) -import Yesod.Default.Util (addStaticContentExternal) -import Yesod.Core.Types (Logger) -import qualified Yesod.Core.Unsafe as Unsafe -import qualified Data.CaseInsensitive as CI -import qualified Data.Text.Encoding as TE - --- | The foundation datatype for your application. This can be a good place to --- keep settings and values requiring initialization before your application --- starts running, such as database connections. Every handler will have --- access to the data present here. -data App = App - { appSettings :: AppSettings - , appStatic :: Static -- ^ Settings for static file serving. - , appConnPool :: ConnectionPool -- ^ Database connection pool. - , appHttpManager :: Manager - , appLogger :: Logger - } - ---data MenuItem = MenuItem --- { menuItemLabel :: Text --- , menuItemRoute :: Route App --- , menuItemAccessCallback :: Bool --- } --- ---data MenuTypes --- = NavbarLeft MenuItem --- | NavbarRight MenuItem - --- This is where we define all of the routes in our application. For a full --- explanation of the syntax, please see: --- http://www.yesodweb.com/book/routing-and-handlers --- --- Note that this is really half the story; in Application.hs, mkYesodDispatch --- generates the rest of the code. Please see the following documentation --- for an explanation for this split: --- http://www.yesodweb.com/book/scaffolding-and-the-site-template#scaffolding-and-the-site-template_foundation_and_application_modules --- --- This function also generates the following type synonyms: --- type Handler = HandlerFor App --- type Widget = WidgetFor App () -mkYesodData "App" $(parseRoutesFile "config/routes.yesodroutes") - --- | A convenient synonym for creating forms. -type Form x = Html -> MForm (HandlerFor App) (FormResult x, Widget) - --- | A convenient synonym for database access functions. -type DB a = forall (m :: Type -> Type). - (MonadUnliftIO m) => ReaderT SqlBackend m a - --- Please see the documentation for the Yesod typeclass. There are a number --- of settings which can be configured by overriding methods here. -instance Yesod App where - -- Controls the base of generated URLs. For more information on modifying, - -- see: https://github.com/yesodweb/yesod/wiki/Overriding-approot - approot :: Approot App - approot = ApprootRequest $ \app req -> - case appRoot $ appSettings app of - Nothing -> getApprootText guessApproot app req - Just root -> root - - -- Store session data on the client in encrypted cookies, - -- default session idle timeout is 120 minutes - makeSessionBackend :: App -> IO (Maybe SessionBackend) - makeSessionBackend _ = Just <$> defaultClientSessionBackend - 120 -- timeout in minutes - "config/client_session_key.aes" - - -- Yesod Middleware allows you to run code before and after each handler function. - -- The defaultYesodMiddleware adds the response header "Vary: Accept, Accept-Language" and performs authorization checks. - -- Some users may also want to add the defaultCsrfMiddleware, which: - -- a) Sets a cookie with a CSRF token in it. - -- b) Validates that incoming write requests include that token in either a header or POST parameter. - -- To add it, chain it together with the defaultMiddleware: yesodMiddleware = defaultYesodMiddleware . defaultCsrfMiddleware - -- For details, see the CSRF documentation in the Yesod.Core.Handler module of the yesod-core package. - yesodMiddleware :: ToTypedContent res => Handler res -> Handler res - yesodMiddleware = defaultYesodMiddleware - - defaultLayout :: Widget -> Handler Html - defaultLayout widget = do - master <- getYesod - mmsg <- getMessage - - -- muser <- maybeAuthPair - mcurrentRoute <- getCurrentRoute - - -- Get the breadcrumbs, as defined in the YesodBreadcrumbs instance. - -- (title, parents) <- breadcrumbs - let title = "Geländespiel Punktetracker" - - -- Define the menu items of the header. --- let menuItems = --- [ NavbarLeft $ MenuItem --- { menuItemLabel = "Home" --- , menuItemRoute = HomeR --- , menuItemAccessCallback = True --- } --- , NavbarLeft $ MenuItem --- { menuItemLabel = "Profile" --- , menuItemRoute = ProfileR --- , menuItemAccessCallback = isJust muser --- } --- , NavbarRight $ MenuItem --- { menuItemLabel = "Login" --- , menuItemRoute = AuthR LoginR --- , menuItemAccessCallback = isNothing muser --- } --- , NavbarRight $ MenuItem --- { menuItemLabel = "Logout" --- , menuItemRoute = AuthR LogoutR --- , menuItemAccessCallback = isJust muser --- } --- ] --- --- let navbarLeftMenuItems = [x | NavbarLeft x <- menuItems] --- let navbarRightMenuItems = [x | NavbarRight x <- menuItems] --- --- let navbarLeftFilteredMenuItems = [x | x <- navbarLeftMenuItems, menuItemAccessCallback x] --- let navbarRightFilteredMenuItems = [x | x <- navbarRightMenuItems, menuItemAccessCallback x] - - -- We break up the default layout into two components: - -- default-layout is the contents of the body tag, and - -- default-layout-wrapper is the entire page. Since the final - -- value passed to hamletToRepHtml cannot be a widget, this allows - -- you to use normal widget features in default-layout. - - -- randomAddNumber <- liftIO $ getStdRandom (randomR (0,4)) - - pc <- widgetToPageContent $ do - -- addStylesheet $ StaticR css_bootstrap_css - -- ^ generated from @Settings/StaticFiles.hs@ - $(widgetFile "default-layout") - withUrlRenderer $(hamletFile "templates/default-layout-wrapper.hamlet") - - -- The page to be redirected to when authentication is required. --- authRoute --- :: App --- -> Maybe (Route App) --- authRoute _ = Just $ AuthR LoginR - --- isAuthorized --- :: Route App -- ^ The route the user is visiting. --- -> Bool -- ^ Whether or not this is a "write" request. --- -> Handler AuthResult --- -- Routes not requiring authentication. --- isAuthorized (AuthR _) _ = return Authorized --- isAuthorized CommentR _ = return Authorized --- isAuthorized HomeR _ = return Authorized --- isAuthorized FaviconR _ = return Authorized --- isAuthorized RobotsR _ = return Authorized --- isAuthorized (StaticR _) _ = return Authorized --- --- -- the profile route requires that the user is authenticated, so we --- -- delegate to that function --- isAuthorized ProfileR _ = isAuthenticated - - -- This function creates static content files in the static folder - -- and names them based on a hash of their content. This allows - -- expiration dates to be set far in the future without worry of - -- users receiving stale content. - addStaticContent - :: Text -- ^ The file extension - -> Text -- ^ The MIME content type - -> LByteString -- ^ The contents of the file - -> Handler (Maybe (Either Text (Route App, [(Text, Text)]))) - addStaticContent ext mime content = do - master <- getYesod - let staticDir = appStaticDir $ appSettings master - addStaticContentExternal - minifym - genFileName - staticDir - (StaticR . flip StaticRoute []) - ext - mime - content - where - -- Generate a unique filename based on the content itself - genFileName lbs = "autogen-" ++ base64md5 lbs - - -- What messages should be logged. The following includes all messages when - -- in development, and warnings and errors in production. - shouldLogIO :: App -> LogSource -> LogLevel -> IO Bool - shouldLogIO app _source level = - return $ - appShouldLogAll (appSettings app) - || level == LevelWarn - || level == LevelError - - makeLogger :: App -> IO Logger - makeLogger = return . appLogger - --- Define breadcrumbs. ---instance YesodBreadcrumbs App where --- -- Takes the route that the user is currently on, and returns a tuple --- -- of the 'Text' that you want the label to display, and a previous --- -- breadcrumb route. --- breadcrumb --- :: Route App -- ^ The route the user is visiting currently. --- -> Handler (Text, Maybe (Route App)) --- breadcrumb HomeR = return ("Home", Nothing) --- breadcrumb (AuthR _) = return ("Login", Just HomeR) --- breadcrumb ProfileR = return ("Profile", Just HomeR) --- breadcrumb _ = return ("home", Nothing) - --- How to run database actions. -instance YesodPersist App where - type YesodPersistBackend App = SqlBackend - runDB :: SqlPersistT Handler a -> Handler a - runDB action = do - master <- getYesod - runSqlPool action $ appConnPool master - -instance YesodPersistRunner App where - getDBRunner :: Handler (DBRunner App, Handler ()) - getDBRunner = defaultGetDBRunner appConnPool - ---instance YesodAuth App where --- type AuthId App = UserId --- --- -- Where to send a user after successful login --- loginDest :: App -> Route App --- loginDest _ = HomeR --- -- Where to send a user after logout --- logoutDest :: App -> Route App --- logoutDest _ = HomeR --- -- Override the above two destinations when a Referer: header is present --- redirectToReferer :: App -> Bool --- redirectToReferer _ = True --- --- authenticate :: (MonadHandler m, HandlerSite m ~ App) --- => Creds App -> m (AuthenticationResult App) --- authenticate creds = liftHandler $ runDB $ do --- x <- getBy $ UniqueUser $ credsIdent creds --- case x of --- Just (Entity uid _) -> return $ Authenticated uid --- Nothing -> Authenticated <$> insert User --- { userIdent = credsIdent creds --- , userPassword = Nothing --- } --- --- -- You can add other plugins like Google Email, email or OAuth here --- authPlugins :: App -> [AuthPlugin App] --- authPlugins app = [authOpenId Claimed []] ++ extraAuthPlugins --- -- Enable authDummy login if enabled. --- where extraAuthPlugins = [authDummy | appAuthDummyLogin $ appSettings app] - --- | Access function to determine if a user is logged in. ---isAuthenticated :: Handler AuthResult ---isAuthenticated = do --- muid <- maybeAuthId --- return $ case muid of --- Nothing -> Unauthorized "You must login to access this page" --- Just _ -> Authorized - ---instance YesodAuthPersist App - --- This instance is required to use forms. You can modify renderMessage to --- achieve customized and internationalized form validation messages. -instance RenderMessage App FormMessage where - renderMessage :: App -> [Lang] -> FormMessage -> Text - renderMessage _ _ = defaultFormMessage - --- Useful when writing code that is re-usable outside of the Handler context. --- An example is background jobs that send email. --- This can also be useful for writing code that works across multiple Yesod applications. -instance HasHttpManager App where - getHttpManager :: App -> Manager - getHttpManager = appHttpManager - -unsafeHandler :: App -> Handler a -> IO a -unsafeHandler = Unsafe.fakeHandlerGetLogger appLogger - --- Note: Some functionality previously present in the scaffolding has been --- moved to documentation in the Wiki. Following are some hopefully helpful --- links: --- --- https://github.com/yesodweb/yesod/wiki/Sending-email --- https://github.com/yesodweb/yesod/wiki/Serve-static-files-from-a-separate-domain --- https://github.com/yesodweb/yesod/wiki/i18n-messages-in-the-scaffolding diff --git a/src/Handler/Ad.hs b/src/Handler/Ad.hs deleted file mode 100644 index d209c72..0000000 --- a/src/Handler/Ad.hs +++ /dev/null @@ -1,15 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeApplications #-} -module Handler.Ad where - -import Import - -getAdR :: Handler Html -getAdR = do - basePath <- getsYesod (appAdFilePath . appSettings) - number <- applyAtomicGen (randomR (0 :: Int ,4)) globalStdGen - sendFile typePng $ basePath <> "image" <> show number <> ".png" diff --git a/src/Handler/Common.hs b/src/Handler/Common.hs deleted file mode 100644 index 6783f8a..0000000 --- a/src/Handler/Common.hs +++ /dev/null @@ -1,22 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} --- | Common handler functions. -module Handler.Common where - -import Data.FileEmbed (embedFile) -import Import - --- These handlers embed files in the executable at compile time to avoid a --- runtime dependency, and for efficiency. - -getFaviconR :: Handler TypedContent -getFaviconR = do cacheSeconds $ 60 * 60 * 24 * 30 -- cache for a month - return $ TypedContent "image/x-icon" - $ toContent $(embedFile "config/favicon.ico") - -getRobotsR :: Handler TypedContent -getRobotsR = return $ TypedContent typePlain - $ toContent $(embedFile "config/robots.txt") diff --git a/src/Handler/Home.hs b/src/Handler/Home.hs deleted file mode 100644 index b14fdb2..0000000 --- a/src/Handler/Home.hs +++ /dev/null @@ -1,76 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeApplications #-} -module Handler.Home where - -import Import ---import Yesod.Form.Bootstrap3 (BootstrapFormLayout (..), renderBootstrap3) ---import Text.Julius (RawJS (..)) - --- Define our data that will be used for creating the form. ---data FileForm = FileForm --- { fileInfo :: FileInfo --- , fileDescription :: Text --- } - --- This is a handler function for the GET request method on the HomeR --- resource pattern. All of your resource patterns are defined in --- config/routes.yesodroutes --- --- The majority of the code you will write in Yesod lives in these handler --- functions. You can spread them across multiple files if you are so --- inclined, or create a single monolithic file. -getHomeR :: Handler Html -getHomeR = do --- (formWidget, formEnctype) <- generateFormPost sampleForm --- let submission = Nothing :: Maybe FileForm --- handlerName = "getHomeR" :: Text --- allComments <- runDB $ getAllComments - rou <- runDB $ selectList [] [] - let rounds = fmap entityVal rou - defaultLayout $ do --- let (commentFormId, commentTextareaId, commentListId) = commentIds - setTitle "OwO Geländespielpunkte" - let tutorP = sum (fmap roundTutorPoints rounds) - let erstieP = sum (fmap roundErstiePoints rounds) - $(widgetFile "homepage") - ---postHomeR :: Handler Html ---postHomeR = do --- ((result, formWidget), formEnctype) <- runFormPost sampleForm --- let handlerName = "postHomeR" :: Text --- submission = case result of --- FormSuccess res -> Just res --- _ -> Nothing --- allComments <- runDB $ getAllComments --- --- defaultLayout $ do --- let (commentFormId, commentTextareaId, commentListId) = commentIds --- aDomId <- newIdent --- setTitle "Welcome To Yesod!" --- $(widgetFile "homepage") --- ---sampleForm :: Form FileForm ---sampleForm = renderBootstrap3 BootstrapBasicForm $ FileForm --- <$> fileAFormReq "Choose a file" --- <*> areq textField textSettings Nothing --- -- Add attributes like the placeholder and CSS classes. --- where textSettings = FieldSettings --- { fsLabel = "What's on the file?" --- , fsTooltip = Nothing --- , fsId = Nothing --- , fsName = Nothing --- , fsAttrs = --- [ ("class", "form-control") --- , ("placeholder", "File description") --- ] --- } --- ---commentIds :: (Text, Text, Text) ---commentIds = ("js-commentForm", "js-createCommentTextarea", "js-commentList") --- ---getAllComments :: DB [Entity Comment] ---getAllComments = selectList [] [Asc CommentId] diff --git a/src/Handler/Station.hs b/src/Handler/Station.hs deleted file mode 100644 index f4600d5..0000000 --- a/src/Handler/Station.hs +++ /dev/null @@ -1,156 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE TypeFamilies #-} -module Handler.Station where - -import Import -import Json -import qualified Data.Map as M ---import Yesod.Form.Bootstrap3 (BootstrapFormLayout (..), renderBootstrap3) ---import Text.Julius (RawJS (..)) - -checkStation :: Text -> Handler Text -checkStation stationIdentifier = do - stationMap <- getsYesod (appStations . appSettings) - let stat = stationMap M.!? stationIdentifier :: Maybe Text - case stat of - Nothing -> notFound - Just m -> return m - --- TODO works without the type annotation, but I don't know why this one is wrong. No time to find out now --- repsertBy :: (MonadIO m, PersistUniqueRead backend, PersistRecordBackend record backend, AtLeastOneUniqueKey record, SafeToInsert record) => record -> ReaderT backend m () -repsertBy val = do - valM <- getByValue val - case valM of - Nothing -> insert_ val - Just (Entity key _) -> replace key val - -getStationR :: Text -> Handler Html -getStationR stationIdentifier = do - station <- checkStation stationIdentifier - rounds <- runDB $ do - rou <- selectList [RoundStationId ==. stationIdentifier] [] - return (fmap entityVal rou :: [Round]) - defaultLayout $ do - setTitle $ "OwO Station" - $(widgetFile "station") - --- postStationR :: Text -> Handler Html --- postStationR stationIdentifier = do --- station <- checkStation stationIdentifier --- ((result,widget),enctype) <- runFormPost (roundForm Nothing Nothing Nothing) --- case result of --- FormSuccess roundFormD -> do --- runDB $ upsertBy (UniqueRoundStation (roundNumberForm roundFormD) stationIdentifier) ( Round (stationIdentifier)(tutorPointsForm roundFormD)(erstiePointsForm roundFormD)(roundNumberForm roundFormD)) --- redirect $ StationRoundR stationIdentifier (roundNumberForm roundFormD) --- FormFailure errors -> error "Form Failure" --- FormMissing -> error "Form Missing" - - -data RoundForm = RoundForm - { tutorPointsForm :: Int - , erstiePointsForm :: Int - } - deriving Show - -roundForm :: Maybe Int -> Maybe Int -> Form RoundForm -roundForm v w = renderDivs $ RoundForm - <$> areq intField "Tutor Points" v - <*> areq intField "Erstie Points" w - -getStationRoundR :: Text -> Int -> Handler Html -getStationRoundR stationIdentifier roundNumber = do - station <- checkStation stationIdentifier - mRoundEntity <- runDB $ getBy $ UniqueRoundStation roundNumber stationIdentifier - case mRoundEntity of - Nothing -> do - (roundFormWidget,roundFormEnctype) <- generateFormPost (roundForm Nothing Nothing) - defaultLayout $ do - setTitle $ "OwO Round" - $(widgetFile "round") - Just roundEntity -> do - let round = entityVal roundEntity - (roundFormWidget,roundFormEnctype) <- generateFormPost (roundForm (Just $ roundTutorPoints round) (Just $ roundErstiePoints round)) - defaultLayout $ do - setTitle $ "OwO Round" - $(widgetFile "round") - -postStationRoundR :: Text -> Int -> Handler Html -postStationRoundR stationIdentifier roundNumber = do - station <- checkStation stationIdentifier - ((result,widget),enctype) <- runFormPost (roundForm Nothing Nothing) - case result of - FormSuccess roundFormD -> do - runDB $ repsertBy $ Round (stationIdentifier)(tutorPointsForm roundFormD)(erstiePointsForm roundFormD) roundNumber - redirect $ StationRoundR stationIdentifier (roundNumber + 1) - FormFailure errors -> error "Form Failure" - FormMissing -> error "Form Missing" - - - --- Define our data that will be used for creating the form. ---data FileForm = FileForm --- { fileInfo :: FileInfo --- , fileDescription :: Text --- } - --- This is a handler function for the GET request method on the HomeR --- resource pattern. All of your resource patterns are defined in --- config/routes.yesodroutes --- --- The majority of the code you will write in Yesod lives in these handler --- functions. You can spread them across multiple files if you are so --- inclined, or create a single monolithic file. ---getHomeR :: Handler Html ---getHomeR = do --- (formWidget, formEnctype) <- generateFormPost sampleForm --- let submission = Nothing :: Maybe FileForm --- handlerName = "getHomeR" :: Text --- allComments <- runDB $ getAllComments - --- defaultLayout $ do --- let (commentFormId, commentTextareaId, commentListId) = commentIds --- aDomId <- newIdent --- setTitle "OwO Geländespielpunkte" --- let tutorPoints = 5 :: Int --- let erstiePoints = 3 :: Int --- $(widgetFile "homepage") - ---postHomeR :: Handler Html ---postHomeR = do --- ((result, formWidget), formEnctype) <- runFormPost sampleForm --- let handlerName = "postHomeR" :: Text --- submission = case result of --- FormSuccess res -> Just res --- _ -> Nothing --- allComments <- runDB $ getAllComments --- --- defaultLayout $ do --- let (commentFormId, commentTextareaId, commentListId) = commentIds --- aDomId <- newIdent --- setTitle "Welcome To Yesod!" --- $(widgetFile "homepage") --- ---sampleForm :: Form FileForm ---sampleForm = renderBootstrap3 BootstrapBasicForm $ FileForm --- <$> fileAFormReq "Choose a file" --- <*> areq textField textSettings Nothing --- -- Add attributes like the placeholder and CSS classes. --- where textSettings = FieldSettings --- { fsLabel = "What's on the file?" --- , fsTooltip = Nothing --- , fsId = Nothing --- , fsName = Nothing --- , fsAttrs = --- [ ("class", "form-control") --- , ("placeholder", "File description") --- ] --- } --- ---commentIds :: (Text, Text, Text) ---commentIds = ("js-commentForm", "js-createCommentTextarea", "js-commentList") --- ---getAllComments :: DB [Entity Comment] ---getAllComments = selectList [] [Asc CommentId] diff --git a/src/Import.hs b/src/Import.hs deleted file mode 100644 index a102001..0000000 --- a/src/Import.hs +++ /dev/null @@ -1,6 +0,0 @@ -module Import - ( module Import - ) where - -import Foundation as Import -import Import.NoFoundation as Import diff --git a/src/Import/NoFoundation.hs b/src/Import/NoFoundation.hs deleted file mode 100644 index 9419d1a..0000000 --- a/src/Import/NoFoundation.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE CPP #-} -module Import.NoFoundation - ( module Import - ) where - -import ClassyPrelude.Yesod as Import -import Model as Import -import Settings as Import -import Settings.StaticFiles as Import -import Yesod.Auth as Import -import Yesod.Core.Types as Import (loggerSet) -import Yesod.Default.Config2 as Import -import System.Random as Import -import System.Random.Stateful as Import diff --git a/src/Json.hs b/src/Json.hs deleted file mode 100644 index e9f0b19..0000000 --- a/src/Json.hs +++ /dev/null @@ -1,38 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TemplateHaskell #-} - -module Json where - -import ClassyPrelude.Yesod -import Data.Aeson.TH - -data ResRound = ResRound - { resRoundNumber :: Int - , resRoundErstiePoints :: Int - , resRoundTutorPoints :: Int - } - deriving Show -$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''ResRound) - -data ResStation = ResStation - { resStationName :: Text - } - deriving Show -$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''ResStation) - -data ResScore = ResScore - { resScoreErsties :: Int - , resScoreTutors :: Int - } - deriving Show -$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''ResScore) - -data ReqRoundPoints = ReqRoundPoints - { reqRoundPointsErsties :: Int - , reqRoundPointTutors :: Int - } - deriving Show -$(deriveJSON defaultOptions{fieldLabelModifier = drop 3} ''ReqRoundPoints) - diff --git a/src/Model.hs b/src/Model.hs deleted file mode 100644 index b8b07b9..0000000 --- a/src/Model.hs +++ /dev/null @@ -1,24 +0,0 @@ -{-# LANGUAGE EmptyDataDecls #-} -{-# LANGUAGE FlexibleInstances #-} -{-# LANGUAGE GADTs #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE MultiParamTypeClasses #-} -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE DerivingStrategies #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE UndecidableInstances #-} -{-# LANGUAGE DataKinds #-} -module Model where - -import ClassyPrelude.Yesod -import Database.Persist.Quasi - --- You can define all of your database entities in the entities file. --- You can find more information on persistent and how to declare entities --- at: --- http://www.yesodweb.com/book/persistent/ -share [mkPersist sqlSettings, mkMigrate "migrateAll"] - $(persistFileWith lowerCaseSettings "config/models.persistentmodels") diff --git a/src/Settings.hs b/src/Settings.hs deleted file mode 100644 index 3908ea4..0000000 --- a/src/Settings.hs +++ /dev/null @@ -1,158 +0,0 @@ -{-# LANGUAGE CPP #-} -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE TemplateHaskell #-} --- | Settings are centralized, as much as possible, into this file. This --- includes database connection settings, static file locations, etc. --- In addition, you can configure a number of different aspects of Yesod --- by overriding methods in the Yesod typeclass. That instance is --- declared in the Foundation.hs file. -module Settings where - -import ClassyPrelude.Yesod -import qualified Control.Exception as Exception -import Data.Aeson (Result (..), fromJSON, withObject, (.!=), - (.:?)) -import Data.FileEmbed (embedFile) -import Data.Yaml (decodeEither') -import qualified Data.Map as M -import Database.Persist.Sqlite (SqliteConf) -import Language.Haskell.TH.Syntax (Exp, Name, Q) -import Network.Wai.Handler.Warp (HostPreference) -import Yesod.Default.Config2 (applyEnvValue, configSettingsYml) -import Yesod.Default.Util (WidgetFileSettings, widgetFileNoReload, - widgetFileReload) - - -data Station = Station - { stationId :: Text - , stationName :: Text - } - -instance FromJSON Station where - parseJSON = withObject "Station" $ \o -> do - stationId <- o .: "station-id" - stationName <- o .:? "station-name" .!= "Station" - return Station {..} - --- | Runtime settings to configure this application. These settings can be --- loaded from various sources: defaults, environment variables, config files, --- theoretically even a database. -data AppSettings = AppSettings - { appStaticDir :: String - -- ^ Directory from which to serve static files. - , appDatabaseConf :: SqliteConf - -- ^ Configuration settings for accessing the database. - , appRoot :: Maybe Text - -- ^ Base for all generated URLs. If @Nothing@, determined - -- from the request headers. - , appHost :: HostPreference - -- ^ Host/interface the server should bind to. - , appPort :: Int - -- ^ Port to listen on - , appIpFromHeader :: Bool - -- ^ Get the IP address from the header when logging. Useful when sitting - -- behind a reverse proxy. - - , appDetailedRequestLogging :: Bool - -- ^ Use detailed request logging system - , appShouldLogAll :: Bool - -- ^ Should all log messages be displayed? - , appReloadTemplates :: Bool - -- ^ Use the reload version of templates - , appMutableStatic :: Bool - -- ^ Assume that files in the static dir may change after compilation - , appSkipCombining :: Bool - -- ^ Perform no stylesheet/script combining - - -- Example app-specific configuration values. - , appCopyright :: Text - -- ^ Copyright text to appear in the footer of the page - - , appStations :: Map Text Text - , appAdFilePath :: String - } - -instance FromJSON AppSettings where - parseJSON = withObject "AppSettings" $ \o -> do - let defaultDev = -#ifdef DEVELOPMENT - True -#else - False -#endif - appStaticDir <- o .: "static-dir" - appDatabaseConf <- o .: "database" - appRoot <- o .:? "approot" - appHost <- fromString <$> o .: "host" - appPort <- o .: "port" - appIpFromHeader <- o .: "ip-from-header" - - dev <- o .:? "development" .!= defaultDev - - appDetailedRequestLogging <- o .:? "detailed-logging" .!= dev - appShouldLogAll <- o .:? "should-log-all" .!= dev - appReloadTemplates <- o .:? "reload-templates" .!= dev - appMutableStatic <- o .:? "mutable-static" .!= dev - appSkipCombining <- o .:? "skip-combining" .!= dev - - appCopyright <- o .: "copyright" - appStations <- M.fromList . map (\x -> (stationId x, stationName x)) <$> o .: "stations" - appAdFilePath <- o .: "ad-files" - - return AppSettings {..} - --- | Settings for 'widgetFile', such as which template languages to support and --- default Hamlet settings. --- --- For more information on modifying behavior, see: --- --- https://github.com/yesodweb/yesod/wiki/Overriding-widgetFile -widgetFileSettings :: WidgetFileSettings -widgetFileSettings = def - --- | How static files should be combined. -combineSettings :: CombineSettings -combineSettings = def - --- The rest of this file contains settings which rarely need changing by a --- user. - -widgetFile :: String -> Q Exp -widgetFile = (if appReloadTemplates compileTimeAppSettings - then widgetFileReload - else widgetFileNoReload) - widgetFileSettings - --- | Raw bytes at compile time of @config/settings.yml@ -configSettingsYmlBS :: ByteString -configSettingsYmlBS = $(embedFile configSettingsYml) - --- | @config/settings.yml@, parsed to a @Value@. -configSettingsYmlValue :: Value -configSettingsYmlValue = either Exception.throw id - $ decodeEither' configSettingsYmlBS - --- | A version of @AppSettings@ parsed at compile time from @config/settings.yml@. -compileTimeAppSettings :: AppSettings -compileTimeAppSettings = - case fromJSON $ applyEnvValue False mempty configSettingsYmlValue of - Error e -> error e - Success settings -> settings - --- The following two functions can be used to combine multiple CSS or JS files --- at compile time to decrease the number of http requests. --- Sample usage (inside a Widget): --- --- > $(combineStylesheets 'StaticR [style1_css, style2_css]) - -combineStylesheets :: Name -> [Route Static] -> Q Exp -combineStylesheets = combineStylesheets' - (appSkipCombining compileTimeAppSettings) - combineSettings - -combineScripts :: Name -> [Route Static] -> Q Exp -combineScripts = combineScripts' - (appSkipCombining compileTimeAppSettings) - combineSettings diff --git a/src/Settings/StaticFiles.hs b/src/Settings/StaticFiles.hs deleted file mode 100644 index f0a55fe..0000000 --- a/src/Settings/StaticFiles.hs +++ /dev/null @@ -1,39 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE TemplateHaskell #-} -module Settings.StaticFiles where - -import Settings (appStaticDir, compileTimeAppSettings) -import Yesod.Static (staticFiles) - --- This generates easy references to files in the static directory at compile time, --- giving you compile-time verification that referenced files exist. --- Warning: any files added to your static directory during run-time can't be --- accessed this way. You'll have to use their FilePath or URL to access them. --- --- For example, to refer to @static/js/script.js@ via an identifier, you'd use: --- --- js_script_js --- --- If the identifier is not available, you may use: --- --- StaticFile ["js", "script.js"] [] -staticFiles (appStaticDir compileTimeAppSettings) - --- If you prefer to updating the references by force --- -- especially when you are devloping like `stack exec -- yesod devel` -- --- you can update references by chaning file stamp. --- --- On linux or Unix-like system, you can use --- shell> touch /Path/To/Settings/StaticFiles.hs --- --- or save without changes on your favorite editor. --- so yesod devel will re-compile automatically and generate the refereces --- including new one. --- --- In this way you can use on your shakespearean template(s) --- Let's say you have image on "yourStaticDir/img/background-1.jpg" --- you can use the reference of the file on shakespearean templates like bellow --- --- /* note: `-' becomes '_' as well */ --- @{StaticR img_background_1_jpg} diff --git a/static/css/bootstrap.css b/static/css/bootstrap.css deleted file mode 100644 index d919b97..0000000 --- a/static/css/bootstrap.css +++ /dev/null @@ -1,7022 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic"); -/*! - * bootswatch v3.3.7 - * Homepage: http://bootswatch.com - * Copyright 2012-2016 Thomas Park - * Licensed under MIT - * Based on Bootstrap -*/ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ -html { - font-family: sans-serif; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; -} -body { - margin: 0; -} -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; -} -audio:not([controls]) { - display: none; - height: 0; -} -[hidden], -template { - display: none; -} -a { - background-color: transparent; -} -a:active, -a:hover { - outline: 0; -} -abbr[title] { - border-bottom: 1px dotted; -} -b, -strong { - font-weight: bold; -} -dfn { - font-style: italic; -} -h1 { - font-size: 2em; - margin: 0.67em 0; -} -mark { - background: #ff0; - color: #000; -} -small { - font-size: 80%; -} -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} -sup { - top: -0.5em; -} -sub { - bottom: -0.25em; -} -img { - border: 0; -} -svg:not(:root) { - overflow: hidden; -} -figure { - margin: 1em 40px; -} -hr { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} -pre { - overflow: auto; -} -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; -} -button { - overflow: visible; -} -button, -select { - text-transform: none; -} -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; -} -button[disabled], -html input[disabled] { - cursor: default; -} -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} -input { - line-height: normal; -} -input[type="checkbox"], -input[type="radio"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - padding: 0; -} -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} -input[type="search"] { - -webkit-appearance: textfield; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} -legend { - border: 0; - padding: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -table { - border-collapse: collapse; - border-spacing: 0; -} -td, -th { - padding: 0; -} -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ -@media print { - *, - *:before, - *:after { - background: transparent !important; - color: #000 !important; - -webkit-box-shadow: none !important; - box-shadow: none !important; - text-shadow: none !important; - } - a, - a:visited { - text-decoration: underline; - } - a[href]:after { - content: " (" attr(href) ")"; - } - abbr[title]:after { - content: " (" attr(title) ")"; - } - a[href^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - .navbar { - display: none; - } - .btn > .caret, - .dropup > .btn > .caret { - border-top-color: #000 !important; - } - .label { - border: 1px solid #000; - } - .table { - border-collapse: collapse !important; - } - .table td, - .table th { - background-color: #fff !important; - } - .table-bordered th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - src: url('../fonts/glyphicons-halflings-regular.eot'); - src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); -} -.glyphicon { - position: relative; - top: 1px; - display: inline-block; - font-family: 'Glyphicons Halflings'; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\002a"; -} -.glyphicon-plus:before { - content: "\002b"; -} -.glyphicon-euro:before, -.glyphicon-eur:before { - content: "\20ac"; -} -.glyphicon-minus:before { - content: "\2212"; -} -.glyphicon-cloud:before { - content: "\2601"; -} -.glyphicon-envelope:before { - content: "\2709"; -} -.glyphicon-pencil:before { - content: "\270f"; -} -.glyphicon-glass:before { - content: "\e001"; -} -.glyphicon-music:before { - content: "\e002"; -} -.glyphicon-search:before { - content: "\e003"; -} -.glyphicon-heart:before { - content: "\e005"; -} -.glyphicon-star:before { - content: "\e006"; -} -.glyphicon-star-empty:before { - content: "\e007"; -} -.glyphicon-user:before { - content: "\e008"; -} -.glyphicon-film:before { - content: "\e009"; -} -.glyphicon-th-large:before { - content: "\e010"; -} -.glyphicon-th:before { - content: "\e011"; -} -.glyphicon-th-list:before { - content: "\e012"; -} -.glyphicon-ok:before { - content: "\e013"; -} -.glyphicon-remove:before { - content: "\e014"; -} -.glyphicon-zoom-in:before { - content: "\e015"; -} -.glyphicon-zoom-out:before { - content: "\e016"; -} -.glyphicon-off:before { - content: "\e017"; -} -.glyphicon-signal:before { - content: "\e018"; -} -.glyphicon-cog:before { - content: "\e019"; -} -.glyphicon-trash:before { - content: "\e020"; -} -.glyphicon-home:before { - content: "\e021"; -} -.glyphicon-file:before { - content: "\e022"; -} -.glyphicon-time:before { - content: "\e023"; -} -.glyphicon-road:before { - content: "\e024"; -} -.glyphicon-download-alt:before { - content: "\e025"; -} -.glyphicon-download:before { - content: "\e026"; -} -.glyphicon-upload:before { - content: "\e027"; -} -.glyphicon-inbox:before { - content: "\e028"; -} -.glyphicon-play-circle:before { - content: "\e029"; -} -.glyphicon-repeat:before { - content: "\e030"; -} -.glyphicon-refresh:before { - content: "\e031"; -} -.glyphicon-list-alt:before { - content: "\e032"; -} -.glyphicon-lock:before { - content: "\e033"; -} -.glyphicon-flag:before { - content: "\e034"; -} -.glyphicon-headphones:before { - content: "\e035"; -} -.glyphicon-volume-off:before { - content: "\e036"; -} -.glyphicon-volume-down:before { - content: "\e037"; -} -.glyphicon-volume-up:before { - content: "\e038"; -} -.glyphicon-qrcode:before { - content: "\e039"; -} -.glyphicon-barcode:before { - content: "\e040"; -} -.glyphicon-tag:before { - content: "\e041"; -} -.glyphicon-tags:before { - content: "\e042"; -} -.glyphicon-book:before { - content: "\e043"; -} -.glyphicon-bookmark:before { - content: "\e044"; -} -.glyphicon-print:before { - content: "\e045"; -} -.glyphicon-camera:before { - content: "\e046"; -} -.glyphicon-font:before { - content: "\e047"; -} -.glyphicon-bold:before { - content: "\e048"; -} -.glyphicon-italic:before { - content: "\e049"; -} -.glyphicon-text-height:before { - content: "\e050"; -} -.glyphicon-text-width:before { - content: "\e051"; -} -.glyphicon-align-left:before { - content: "\e052"; -} -.glyphicon-align-center:before { - content: "\e053"; -} -.glyphicon-align-right:before { - content: "\e054"; -} -.glyphicon-align-justify:before { - content: "\e055"; -} -.glyphicon-list:before { - content: "\e056"; -} -.glyphicon-indent-left:before { - content: "\e057"; -} -.glyphicon-indent-right:before { - content: "\e058"; -} -.glyphicon-facetime-video:before { - content: "\e059"; -} -.glyphicon-picture:before { - content: "\e060"; -} -.glyphicon-map-marker:before { - content: "\e062"; -} -.glyphicon-adjust:before { - content: "\e063"; -} -.glyphicon-tint:before { - content: "\e064"; -} -.glyphicon-edit:before { - content: "\e065"; -} -.glyphicon-share:before { - content: "\e066"; -} -.glyphicon-check:before { - content: "\e067"; -} -.glyphicon-move:before { - content: "\e068"; -} -.glyphicon-step-backward:before { - content: "\e069"; -} -.glyphicon-fast-backward:before { - content: "\e070"; -} -.glyphicon-backward:before { - content: "\e071"; -} -.glyphicon-play:before { - content: "\e072"; -} -.glyphicon-pause:before { - content: "\e073"; -} -.glyphicon-stop:before { - content: "\e074"; -} -.glyphicon-forward:before { - content: "\e075"; -} -.glyphicon-fast-forward:before { - content: "\e076"; -} -.glyphicon-step-forward:before { - content: "\e077"; -} -.glyphicon-eject:before { - content: "\e078"; -} -.glyphicon-chevron-left:before { - content: "\e079"; -} -.glyphicon-chevron-right:before { - content: "\e080"; -} -.glyphicon-plus-sign:before { - content: "\e081"; -} -.glyphicon-minus-sign:before { - content: "\e082"; -} -.glyphicon-remove-sign:before { - content: "\e083"; -} -.glyphicon-ok-sign:before { - content: "\e084"; -} -.glyphicon-question-sign:before { - content: "\e085"; -} -.glyphicon-info-sign:before { - content: "\e086"; -} -.glyphicon-screenshot:before { - content: "\e087"; -} -.glyphicon-remove-circle:before { - content: "\e088"; -} -.glyphicon-ok-circle:before { - content: "\e089"; -} -.glyphicon-ban-circle:before { - content: "\e090"; -} -.glyphicon-arrow-left:before { - content: "\e091"; -} -.glyphicon-arrow-right:before { - content: "\e092"; -} -.glyphicon-arrow-up:before { - content: "\e093"; -} -.glyphicon-arrow-down:before { - content: "\e094"; -} -.glyphicon-share-alt:before { - content: "\e095"; -} -.glyphicon-resize-full:before { - content: "\e096"; -} -.glyphicon-resize-small:before { - content: "\e097"; -} -.glyphicon-exclamation-sign:before { - content: "\e101"; -} -.glyphicon-gift:before { - content: "\e102"; -} -.glyphicon-leaf:before { - content: "\e103"; -} -.glyphicon-fire:before { - content: "\e104"; -} -.glyphicon-eye-open:before { - content: "\e105"; -} -.glyphicon-eye-close:before { - content: "\e106"; -} -.glyphicon-warning-sign:before { - content: "\e107"; -} -.glyphicon-plane:before { - content: "\e108"; -} -.glyphicon-calendar:before { - content: "\e109"; -} -.glyphicon-random:before { - content: "\e110"; -} -.glyphicon-comment:before { - content: "\e111"; -} -.glyphicon-magnet:before { - content: "\e112"; -} -.glyphicon-chevron-up:before { - content: "\e113"; -} -.glyphicon-chevron-down:before { - content: "\e114"; -} -.glyphicon-retweet:before { - content: "\e115"; -} -.glyphicon-shopping-cart:before { - content: "\e116"; -} -.glyphicon-folder-close:before { - content: "\e117"; -} -.glyphicon-folder-open:before { - content: "\e118"; -} -.glyphicon-resize-vertical:before { - content: "\e119"; -} -.glyphicon-resize-horizontal:before { - content: "\e120"; -} -.glyphicon-hdd:before { - content: "\e121"; -} -.glyphicon-bullhorn:before { - content: "\e122"; -} -.glyphicon-bell:before { - content: "\e123"; -} -.glyphicon-certificate:before { - content: "\e124"; -} -.glyphicon-thumbs-up:before { - content: "\e125"; -} -.glyphicon-thumbs-down:before { - content: "\e126"; -} -.glyphicon-hand-right:before { - content: "\e127"; -} -.glyphicon-hand-left:before { - content: "\e128"; -} -.glyphicon-hand-up:before { - content: "\e129"; -} -.glyphicon-hand-down:before { - content: "\e130"; -} -.glyphicon-circle-arrow-right:before { - content: "\e131"; -} -.glyphicon-circle-arrow-left:before { - content: "\e132"; -} -.glyphicon-circle-arrow-up:before { - content: "\e133"; -} -.glyphicon-circle-arrow-down:before { - content: "\e134"; -} -.glyphicon-globe:before { - content: "\e135"; -} -.glyphicon-wrench:before { - content: "\e136"; -} -.glyphicon-tasks:before { - content: "\e137"; -} -.glyphicon-filter:before { - content: "\e138"; -} -.glyphicon-briefcase:before { - content: "\e139"; -} -.glyphicon-fullscreen:before { - content: "\e140"; -} -.glyphicon-dashboard:before { - content: "\e141"; -} -.glyphicon-paperclip:before { - content: "\e142"; -} -.glyphicon-heart-empty:before { - content: "\e143"; -} -.glyphicon-link:before { - content: "\e144"; -} -.glyphicon-phone:before { - content: "\e145"; -} -.glyphicon-pushpin:before { - content: "\e146"; -} -.glyphicon-usd:before { - content: "\e148"; -} -.glyphicon-gbp:before { - content: "\e149"; -} -.glyphicon-sort:before { - content: "\e150"; -} -.glyphicon-sort-by-alphabet:before { - content: "\e151"; -} -.glyphicon-sort-by-alphabet-alt:before { - content: "\e152"; -} -.glyphicon-sort-by-order:before { - content: "\e153"; -} -.glyphicon-sort-by-order-alt:before { - content: "\e154"; -} -.glyphicon-sort-by-attributes:before { - content: "\e155"; -} -.glyphicon-sort-by-attributes-alt:before { - content: "\e156"; -} -.glyphicon-unchecked:before { - content: "\e157"; -} -.glyphicon-expand:before { - content: "\e158"; -} -.glyphicon-collapse-down:before { - content: "\e159"; -} -.glyphicon-collapse-up:before { - content: "\e160"; -} -.glyphicon-log-in:before { - content: "\e161"; -} -.glyphicon-flash:before { - content: "\e162"; -} -.glyphicon-log-out:before { - content: "\e163"; -} -.glyphicon-new-window:before { - content: "\e164"; -} -.glyphicon-record:before { - content: "\e165"; -} -.glyphicon-save:before { - content: "\e166"; -} -.glyphicon-open:before { - content: "\e167"; -} -.glyphicon-saved:before { - content: "\e168"; -} -.glyphicon-import:before { - content: "\e169"; -} -.glyphicon-export:before { - content: "\e170"; -} -.glyphicon-send:before { - content: "\e171"; -} -.glyphicon-floppy-disk:before { - content: "\e172"; -} -.glyphicon-floppy-saved:before { - content: "\e173"; -} -.glyphicon-floppy-remove:before { - content: "\e174"; -} -.glyphicon-floppy-save:before { - content: "\e175"; -} -.glyphicon-floppy-open:before { - content: "\e176"; -} -.glyphicon-credit-card:before { - content: "\e177"; -} -.glyphicon-transfer:before { - content: "\e178"; -} -.glyphicon-cutlery:before { - content: "\e179"; -} -.glyphicon-header:before { - content: "\e180"; -} -.glyphicon-compressed:before { - content: "\e181"; -} -.glyphicon-earphone:before { - content: "\e182"; -} -.glyphicon-phone-alt:before { - content: "\e183"; -} -.glyphicon-tower:before { - content: "\e184"; -} -.glyphicon-stats:before { - content: "\e185"; -} -.glyphicon-sd-video:before { - content: "\e186"; -} -.glyphicon-hd-video:before { - content: "\e187"; -} -.glyphicon-subtitles:before { - content: "\e188"; -} -.glyphicon-sound-stereo:before { - content: "\e189"; -} -.glyphicon-sound-dolby:before { - content: "\e190"; -} -.glyphicon-sound-5-1:before { - content: "\e191"; -} -.glyphicon-sound-6-1:before { - content: "\e192"; -} -.glyphicon-sound-7-1:before { - content: "\e193"; -} -.glyphicon-copyright-mark:before { - content: "\e194"; -} -.glyphicon-registration-mark:before { - content: "\e195"; -} -.glyphicon-cloud-download:before { - content: "\e197"; -} -.glyphicon-cloud-upload:before { - content: "\e198"; -} -.glyphicon-tree-conifer:before { - content: "\e199"; -} -.glyphicon-tree-deciduous:before { - content: "\e200"; -} -.glyphicon-cd:before { - content: "\e201"; -} -.glyphicon-save-file:before { - content: "\e202"; -} -.glyphicon-open-file:before { - content: "\e203"; -} -.glyphicon-level-up:before { - content: "\e204"; -} -.glyphicon-copy:before { - content: "\e205"; -} -.glyphicon-paste:before { - content: "\e206"; -} -.glyphicon-alert:before { - content: "\e209"; -} -.glyphicon-equalizer:before { - content: "\e210"; -} -.glyphicon-king:before { - content: "\e211"; -} -.glyphicon-queen:before { - content: "\e212"; -} -.glyphicon-pawn:before { - content: "\e213"; -} -.glyphicon-bishop:before { - content: "\e214"; -} -.glyphicon-knight:before { - content: "\e215"; -} -.glyphicon-baby-formula:before { - content: "\e216"; -} -.glyphicon-tent:before { - content: "\26fa"; -} -.glyphicon-blackboard:before { - content: "\e218"; -} -.glyphicon-bed:before { - content: "\e219"; -} -.glyphicon-apple:before { - content: "\f8ff"; -} -.glyphicon-erase:before { - content: "\e221"; -} -.glyphicon-hourglass:before { - content: "\231b"; -} -.glyphicon-lamp:before { - content: "\e223"; -} -.glyphicon-duplicate:before { - content: "\e224"; -} -.glyphicon-piggy-bank:before { - content: "\e225"; -} -.glyphicon-scissors:before { - content: "\e226"; -} -.glyphicon-bitcoin:before { - content: "\e227"; -} -.glyphicon-btc:before { - content: "\e227"; -} -.glyphicon-xbt:before { - content: "\e227"; -} -.glyphicon-yen:before { - content: "\00a5"; -} -.glyphicon-jpy:before { - content: "\00a5"; -} -.glyphicon-ruble:before { - content: "\20bd"; -} -.glyphicon-rub:before { - content: "\20bd"; -} -.glyphicon-scale:before { - content: "\e230"; -} -.glyphicon-ice-lolly:before { - content: "\e231"; -} -.glyphicon-ice-lolly-tasted:before { - content: "\e232"; -} -.glyphicon-education:before { - content: "\e233"; -} -.glyphicon-option-horizontal:before { - content: "\e234"; -} -.glyphicon-option-vertical:before { - content: "\e235"; -} -.glyphicon-menu-hamburger:before { - content: "\e236"; -} -.glyphicon-modal-window:before { - content: "\e237"; -} -.glyphicon-oil:before { - content: "\e238"; -} -.glyphicon-grain:before { - content: "\e239"; -} -.glyphicon-sunglasses:before { - content: "\e240"; -} -.glyphicon-text-size:before { - content: "\e241"; -} -.glyphicon-text-color:before { - content: "\e242"; -} -.glyphicon-text-background:before { - content: "\e243"; -} -.glyphicon-object-align-top:before { - content: "\e244"; -} -.glyphicon-object-align-bottom:before { - content: "\e245"; -} -.glyphicon-object-align-horizontal:before { - content: "\e246"; -} -.glyphicon-object-align-left:before { - content: "\e247"; -} -.glyphicon-object-align-vertical:before { - content: "\e248"; -} -.glyphicon-object-align-right:before { - content: "\e249"; -} -.glyphicon-triangle-right:before { - content: "\e250"; -} -.glyphicon-triangle-left:before { - content: "\e251"; -} -.glyphicon-triangle-bottom:before { - content: "\e252"; -} -.glyphicon-triangle-top:before { - content: "\e253"; -} -.glyphicon-console:before { - content: "\e254"; -} -.glyphicon-superscript:before { - content: "\e255"; -} -.glyphicon-subscript:before { - content: "\e256"; -} -.glyphicon-menu-left:before { - content: "\e257"; -} -.glyphicon-menu-right:before { - content: "\e258"; -} -.glyphicon-menu-down:before { - content: "\e259"; -} -.glyphicon-menu-up:before { - content: "\e260"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 15px; - line-height: 1.42857143; - color: #2c3e50; - background-color: #ffffff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #18bc9c; - text-decoration: none; -} -a:hover, -a:focus { - color: #18bc9c; - text-decoration: underline; -} -a:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - display: block; - max-width: 100%; - height: auto; -} -.img-rounded { - border-radius: 6px; -} -.img-thumbnail { - padding: 4px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #ecf0f1; - border-radius: 4px; - -webkit-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - display: inline-block; - max-width: 100%; - height: auto; -} -.img-circle { - border-radius: 50%; -} -hr { - margin-top: 21px; - margin-bottom: 21px; - border: 0; - border-top: 1px solid #ecf0f1; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} -[role="button"] { - cursor: pointer; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-weight: 400; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #b4bcc2; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 21px; - margin-bottom: 10.5px; -} -h1 small, -.h1 small, -h2 small, -.h2 small, -h3 small, -.h3 small, -h1 .small, -.h1 .small, -h2 .small, -.h2 .small, -h3 .small, -.h3 .small { - font-size: 65%; -} -h4, -.h4, -h5, -.h5, -h6, -.h6 { - margin-top: 10.5px; - margin-bottom: 10.5px; -} -h4 small, -.h4 small, -h5 small, -.h5 small, -h6 small, -.h6 small, -h4 .small, -.h4 .small, -h5 .small, -.h5 .small, -h6 .small, -.h6 .small { - font-size: 75%; -} -h1, -.h1 { - font-size: 39px; -} -h2, -.h2 { - font-size: 32px; -} -h3, -.h3 { - font-size: 26px; -} -h4, -.h4 { - font-size: 19px; -} -h5, -.h5 { - font-size: 15px; -} -h6, -.h6 { - font-size: 13px; -} -p { - margin: 0 0 10.5px; -} -.lead { - margin-bottom: 21px; - font-size: 17px; - font-weight: 300; - line-height: 1.4; -} -@media (min-width: 768px) { - .lead { - font-size: 22.5px; - } -} -small, -.small { - font-size: 86%; -} -mark, -.mark { - background-color: #f39c12; - padding: .2em; -} -.text-left { - text-align: left; -} -.text-right { - text-align: right; -} -.text-center { - text-align: center; -} -.text-justify { - text-align: justify; -} -.text-nowrap { - white-space: nowrap; -} -.text-lowercase { - text-transform: lowercase; -} -.text-uppercase { - text-transform: uppercase; -} -.text-capitalize { - text-transform: capitalize; -} -.text-muted { - color: #b4bcc2; -} -.text-primary { - color: #2c3e50; -} -a.text-primary:hover, -a.text-primary:focus { - color: #1a242f; -} -.text-success { - color: #ffffff; -} -a.text-success:hover, -a.text-success:focus { - color: #e6e6e6; -} -.text-info { - color: #ffffff; -} -a.text-info:hover, -a.text-info:focus { - color: #e6e6e6; -} -.text-warning { - color: #ffffff; -} -a.text-warning:hover, -a.text-warning:focus { - color: #e6e6e6; -} -.text-danger { - color: #ffffff; -} -a.text-danger:hover, -a.text-danger:focus { - color: #e6e6e6; -} -.bg-primary { - color: #fff; - background-color: #2c3e50; -} -a.bg-primary:hover, -a.bg-primary:focus { - background-color: #1a242f; -} -.bg-success { - background-color: #18bc9c; -} -a.bg-success:hover, -a.bg-success:focus { - background-color: #128f76; -} -.bg-info { - background-color: #3498db; -} -a.bg-info:hover, -a.bg-info:focus { - background-color: #217dbb; -} -.bg-warning { - background-color: #f39c12; -} -a.bg-warning:hover, -a.bg-warning:focus { - background-color: #c87f0a; -} -.bg-danger { - background-color: #e74c3c; -} -a.bg-danger:hover, -a.bg-danger:focus { - background-color: #d62c1a; -} -.page-header { - padding-bottom: 9.5px; - margin: 42px 0 21px; - border-bottom: 1px solid transparent; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10.5px; -} -ul ul, -ol ul, -ul ol, -ol ol { - margin-bottom: 0; -} -.list-unstyled { - padding-left: 0; - list-style: none; -} -.list-inline { - padding-left: 0; - list-style: none; - margin-left: -5px; -} -.list-inline > li { - display: inline-block; - padding-left: 5px; - padding-right: 5px; -} -dl { - margin-top: 0; - margin-bottom: 21px; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 768px) { - .dl-horizontal dt { - float: left; - width: 160px; - clear: left; - text-align: right; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - .dl-horizontal dd { - margin-left: 180px; - } -} -abbr[title], -abbr[data-original-title] { - cursor: help; - border-bottom: 1px dotted #b4bcc2; -} -.initialism { - font-size: 90%; - text-transform: uppercase; -} -blockquote { - padding: 10.5px 21px; - margin: 0 0 21px; - font-size: 18.75px; - border-left: 5px solid #ecf0f1; -} -blockquote p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #b4bcc2; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - border-right: 5px solid #ecf0f1; - border-left: 0; - text-align: right; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 21px; - font-style: normal; - line-height: 1.42857143; -} -code, -kbd, -pre, -samp { - font-family: Menlo, Monaco, Consolas, "Courier New", monospace; -} -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} -kbd { - padding: 2px 4px; - font-size: 90%; - color: #ffffff; - background-color: #333333; - border-radius: 3px; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); -} -kbd kbd { - padding: 0; - font-size: 100%; - font-weight: bold; - -webkit-box-shadow: none; - box-shadow: none; -} -pre { - display: block; - padding: 10px; - margin: 0 0 10.5px; - font-size: 14px; - line-height: 1.42857143; - word-break: break-all; - word-wrap: break-word; - color: #7b8a8b; - background-color: #ecf0f1; - border: 1px solid #cccccc; - border-radius: 4px; -} -pre code { - padding: 0; - font-size: inherit; - color: inherit; - white-space: pre-wrap; - background-color: transparent; - border-radius: 0; -} -.pre-scrollable { - max-height: 340px; - overflow-y: scroll; -} -.container { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -@media (min-width: 768px) { - .container { - width: 750px; - } -} -@media (min-width: 992px) { - .container { - width: 970px; - } -} -@media (min-width: 1200px) { - .container { - width: 1170px; - } -} -.container-fluid { - margin-right: auto; - margin-left: auto; - padding-left: 15px; - padding-right: 15px; -} -.row { - margin-left: -15px; - margin-right: -15px; -} -.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-left: 15px; - padding-right: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0%; -} -@media (min-width: 768px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 992px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0%; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0%; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #b4bcc2; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 21px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.42857143; - vertical-align: top; - border-top: 1px solid #ecf0f1; -} -.table > thead > tr > th { - vertical-align: bottom; - border-bottom: 2px solid #ecf0f1; -} -.table > caption + thead > tr:first-child > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ecf0f1; -} -.table .table { - background-color: #ffffff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ecf0f1; -} -.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 #ecf0f1; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-of-type(odd) { - background-color: #f9f9f9; -} -.table-hover > tbody > tr:hover { - background-color: #ecf0f1; -} -table col[class*="col-"] { - position: static; - float: none; - display: table-column; -} -table td[class*="col-"], -table th[class*="col-"] { - position: static; - float: none; - display: table-cell; -} -.table > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #ecf0f1; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #dde4e6; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #18bc9c; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #15a589; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #3498db; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #258cd1; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #f39c12; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #e08e0b; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #e74c3c; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #e43725; -} -.table-responsive { - overflow-x: auto; - min-height: 0.01%; -} -@media screen and (max-width: 767px) { - .table-responsive { - width: 100%; - margin-bottom: 15.75px; - overflow-y: hidden; - -ms-overflow-style: -ms-autohiding-scrollbar; - border: 1px solid #ecf0f1; - } - .table-responsive > .table { - margin-bottom: 0; - } - .table-responsive > .table > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - padding: 0; - margin: 0; - border: 0; - min-width: 0; -} -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 21px; - font-size: 22.5px; - line-height: inherit; - color: #2c3e50; - border: 0; - border-bottom: 1px solid transparent; -} -label { - display: inline-block; - max-width: 100%; - margin-bottom: 5px; - font-weight: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -output { - display: block; - padding-top: 11px; - font-size: 15px; - line-height: 1.42857143; - color: #2c3e50; -} -.form-control { - display: block; - width: 100%; - height: 45px; - padding: 10px 15px; - font-size: 15px; - line-height: 1.42857143; - color: #2c3e50; - background-color: #ffffff; - background-image: none; - border: 1px solid #dce4ec; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; - -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; -} -.form-control:focus { - border-color: #2c3e50; - outline: 0; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(44, 62, 80, 0.6); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(44, 62, 80, 0.6); -} -.form-control::-moz-placeholder { - color: #acb6c0; - opacity: 1; -} -.form-control:-ms-input-placeholder { - color: #acb6c0; -} -.form-control::-webkit-input-placeholder { - color: #acb6c0; -} -.form-control::-ms-expand { - border: 0; - background-color: transparent; -} -.form-control[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - background-color: #ecf0f1; - opacity: 1; -} -.form-control[disabled], -fieldset[disabled] .form-control { - cursor: not-allowed; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"].form-control, - input[type="time"].form-control, - input[type="datetime-local"].form-control, - input[type="month"].form-control { - line-height: 45px; - } - input[type="date"].input-sm, - input[type="time"].input-sm, - input[type="datetime-local"].input-sm, - input[type="month"].input-sm, - .input-group-sm input[type="date"], - .input-group-sm input[type="time"], - .input-group-sm input[type="datetime-local"], - .input-group-sm input[type="month"] { - line-height: 35px; - } - input[type="date"].input-lg, - input[type="time"].input-lg, - input[type="datetime-local"].input-lg, - input[type="month"].input-lg, - .input-group-lg input[type="date"], - .input-group-lg input[type="time"], - .input-group-lg input[type="datetime-local"], - .input-group-lg input[type="month"] { - line-height: 66px; - } -} -.form-group { - margin-bottom: 15px; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 21px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-left: -20px; - margin-top: 4px \9; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - vertical-align: middle; - font-weight: normal; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 11px; - padding-bottom: 11px; - margin-bottom: 0; - min-height: 36px; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-left: 0; - padding-right: 0; -} -.input-sm { - height: 35px; - padding: 6px 9px; - font-size: 13px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm { - height: 35px; - line-height: 35px; -} -textarea.input-sm, -select[multiple].input-sm { - height: auto; -} -.form-group-sm .form-control { - height: 35px; - padding: 6px 9px; - font-size: 13px; - line-height: 1.5; - border-radius: 3px; -} -.form-group-sm select.form-control { - height: 35px; - line-height: 35px; -} -.form-group-sm textarea.form-control, -.form-group-sm select[multiple].form-control { - height: auto; -} -.form-group-sm .form-control-static { - height: 35px; - min-height: 34px; - padding: 7px 9px; - font-size: 13px; - line-height: 1.5; -} -.input-lg { - height: 66px; - padding: 18px 27px; - font-size: 19px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-lg { - height: 66px; - line-height: 66px; -} -textarea.input-lg, -select[multiple].input-lg { - height: auto; -} -.form-group-lg .form-control { - height: 66px; - padding: 18px 27px; - font-size: 19px; - line-height: 1.3333333; - border-radius: 6px; -} -.form-group-lg select.form-control { - height: 66px; - line-height: 66px; -} -.form-group-lg textarea.form-control, -.form-group-lg select[multiple].form-control { - height: auto; -} -.form-group-lg .form-control-static { - height: 66px; - min-height: 40px; - padding: 19px 27px; - font-size: 19px; - line-height: 1.3333333; -} -.has-feedback { - position: relative; -} -.has-feedback .form-control { - padding-right: 56.25px; -} -.form-control-feedback { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 45px; - height: 45px; - line-height: 45px; - text-align: center; - pointer-events: none; -} -.input-lg + .form-control-feedback, -.input-group-lg + .form-control-feedback, -.form-group-lg .form-control + .form-control-feedback { - width: 66px; - height: 66px; - line-height: 66px; -} -.input-sm + .form-control-feedback, -.input-group-sm + .form-control-feedback, -.form-group-sm .form-control + .form-control-feedback { - width: 35px; - height: 35px; - line-height: 35px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #ffffff; -} -.has-success .form-control { - border-color: #ffffff; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-success .form-control:focus { - border-color: #e6e6e6; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; -} -.has-success .input-group-addon { - color: #ffffff; - border-color: #ffffff; - background-color: #18bc9c; -} -.has-success .form-control-feedback { - color: #ffffff; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #ffffff; -} -.has-warning .form-control { - border-color: #ffffff; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-warning .form-control:focus { - border-color: #e6e6e6; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; -} -.has-warning .input-group-addon { - color: #ffffff; - border-color: #ffffff; - background-color: #f39c12; -} -.has-warning .form-control-feedback { - color: #ffffff; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #ffffff; -} -.has-error .form-control { - border-color: #ffffff; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -} -.has-error .form-control:focus { - border-color: #e6e6e6; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ffffff; -} -.has-error .input-group-addon { - color: #ffffff; - border-color: #ffffff; - background-color: #e74c3c; -} -.has-error .form-control-feedback { - color: #ffffff; -} -.has-feedback label ~ .form-control-feedback { - top: 26px; -} -.has-feedback label.sr-only ~ .form-control-feedback { - top: 0; -} -.help-block { - display: block; - margin-top: 5px; - margin-bottom: 10px; - color: #597ea2; -} -@media (min-width: 768px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - margin-top: 0; - margin-bottom: 0; - padding-top: 11px; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 32px; -} -.form-horizontal .form-group { - margin-left: -15px; - margin-right: -15px; -} -@media (min-width: 768px) { - .form-horizontal .control-label { - text-align: right; - margin-bottom: 0; - padding-top: 11px; - } -} -.form-horizontal .has-feedback .form-control-feedback { - right: 15px; -} -@media (min-width: 768px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 19px; - font-size: 19px; - } -} -@media (min-width: 768px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 7px; - font-size: 13px; - } -} -.btn { - display: inline-block; - margin-bottom: 0; - font-weight: normal; - text-align: center; - vertical-align: middle; - -ms-touch-action: manipulation; - touch-action: manipulation; - cursor: pointer; - background-image: none; - border: 1px solid transparent; - white-space: nowrap; - padding: 10px 15px; - font-size: 15px; - line-height: 1.42857143; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #ffffff; - text-decoration: none; -} -.btn:active, -.btn.active { - outline: 0; - background-image: none; - -webkit-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.disabled, -.btn[disabled], -fieldset[disabled] .btn { - cursor: not-allowed; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; -} -a.btn.disabled, -fieldset[disabled] a.btn { - pointer-events: none; -} -.btn-default { - color: #ffffff; - background-color: #95a5a6; - border-color: #95a5a6; -} -.btn-default:focus, -.btn-default.focus { - color: #ffffff; - background-color: #798d8f; - border-color: #566566; -} -.btn-default:hover { - color: #ffffff; - background-color: #798d8f; - border-color: #74898a; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #ffffff; - background-color: #798d8f; - border-color: #74898a; -} -.btn-default:active:hover, -.btn-default.active:hover, -.open > .dropdown-toggle.btn-default:hover, -.btn-default:active:focus, -.btn-default.active:focus, -.open > .dropdown-toggle.btn-default:focus, -.btn-default:active.focus, -.btn-default.active.focus, -.open > .dropdown-toggle.btn-default.focus { - color: #ffffff; - background-color: #687b7c; - border-color: #566566; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus { - background-color: #95a5a6; - border-color: #95a5a6; -} -.btn-default .badge { - color: #95a5a6; - background-color: #ffffff; -} -.btn-primary { - color: #ffffff; - background-color: #2c3e50; - border-color: #2c3e50; -} -.btn-primary:focus, -.btn-primary.focus { - color: #ffffff; - background-color: #1a242f; - border-color: #000000; -} -.btn-primary:hover { - color: #ffffff; - background-color: #1a242f; - border-color: #161f29; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #ffffff; - background-color: #1a242f; - border-color: #161f29; -} -.btn-primary:active:hover, -.btn-primary.active:hover, -.open > .dropdown-toggle.btn-primary:hover, -.btn-primary:active:focus, -.btn-primary.active:focus, -.open > .dropdown-toggle.btn-primary:focus, -.btn-primary:active.focus, -.btn-primary.active.focus, -.open > .dropdown-toggle.btn-primary.focus { - color: #ffffff; - background-color: #0d1318; - border-color: #000000; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus { - background-color: #2c3e50; - border-color: #2c3e50; -} -.btn-primary .badge { - color: #2c3e50; - background-color: #ffffff; -} -.btn-success { - color: #ffffff; - background-color: #18bc9c; - border-color: #18bc9c; -} -.btn-success:focus, -.btn-success.focus { - color: #ffffff; - background-color: #128f76; - border-color: #0a4b3e; -} -.btn-success:hover { - color: #ffffff; - background-color: #128f76; - border-color: #11866f; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #ffffff; - background-color: #128f76; - border-color: #11866f; -} -.btn-success:active:hover, -.btn-success.active:hover, -.open > .dropdown-toggle.btn-success:hover, -.btn-success:active:focus, -.btn-success.active:focus, -.open > .dropdown-toggle.btn-success:focus, -.btn-success:active.focus, -.btn-success.active.focus, -.open > .dropdown-toggle.btn-success.focus { - color: #ffffff; - background-color: #0e6f5c; - border-color: #0a4b3e; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus { - background-color: #18bc9c; - border-color: #18bc9c; -} -.btn-success .badge { - color: #18bc9c; - background-color: #ffffff; -} -.btn-info { - color: #ffffff; - background-color: #3498db; - border-color: #3498db; -} -.btn-info:focus, -.btn-info.focus { - color: #ffffff; - background-color: #217dbb; - border-color: #16527a; -} -.btn-info:hover { - color: #ffffff; - background-color: #217dbb; - border-color: #2077b2; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #ffffff; - background-color: #217dbb; - border-color: #2077b2; -} -.btn-info:active:hover, -.btn-info.active:hover, -.open > .dropdown-toggle.btn-info:hover, -.btn-info:active:focus, -.btn-info.active:focus, -.open > .dropdown-toggle.btn-info:focus, -.btn-info:active.focus, -.btn-info.active.focus, -.open > .dropdown-toggle.btn-info.focus { - color: #ffffff; - background-color: #1c699d; - border-color: #16527a; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus { - background-color: #3498db; - border-color: #3498db; -} -.btn-info .badge { - color: #3498db; - background-color: #ffffff; -} -.btn-warning { - color: #ffffff; - background-color: #f39c12; - border-color: #f39c12; -} -.btn-warning:focus, -.btn-warning.focus { - color: #ffffff; - background-color: #c87f0a; - border-color: #7f5006; -} -.btn-warning:hover { - color: #ffffff; - background-color: #c87f0a; - border-color: #be780a; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #ffffff; - background-color: #c87f0a; - border-color: #be780a; -} -.btn-warning:active:hover, -.btn-warning.active:hover, -.open > .dropdown-toggle.btn-warning:hover, -.btn-warning:active:focus, -.btn-warning.active:focus, -.open > .dropdown-toggle.btn-warning:focus, -.btn-warning:active.focus, -.btn-warning.active.focus, -.open > .dropdown-toggle.btn-warning.focus { - color: #ffffff; - background-color: #a66908; - border-color: #7f5006; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus { - background-color: #f39c12; - border-color: #f39c12; -} -.btn-warning .badge { - color: #f39c12; - background-color: #ffffff; -} -.btn-danger { - color: #ffffff; - background-color: #e74c3c; - border-color: #e74c3c; -} -.btn-danger:focus, -.btn-danger.focus { - color: #ffffff; - background-color: #d62c1a; - border-color: #921e12; -} -.btn-danger:hover { - color: #ffffff; - background-color: #d62c1a; - border-color: #cd2a19; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #ffffff; - background-color: #d62c1a; - border-color: #cd2a19; -} -.btn-danger:active:hover, -.btn-danger.active:hover, -.open > .dropdown-toggle.btn-danger:hover, -.btn-danger:active:focus, -.btn-danger.active:focus, -.open > .dropdown-toggle.btn-danger:focus, -.btn-danger:active.focus, -.btn-danger.active.focus, -.open > .dropdown-toggle.btn-danger.focus { - color: #ffffff; - background-color: #b62516; - border-color: #921e12; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus { - background-color: #e74c3c; - border-color: #e74c3c; -} -.btn-danger .badge { - color: #e74c3c; - background-color: #ffffff; -} -.btn-link { - color: #18bc9c; - font-weight: normal; - border-radius: 0; -} -.btn-link, -.btn-link:active, -.btn-link.active, -.btn-link[disabled], -fieldset[disabled] .btn-link { - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-link, -.btn-link:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #18bc9c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #b4bcc2; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 18px 27px; - font-size: 19px; - line-height: 1.3333333; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 6px 9px; - font-size: 13px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - padding: 1px 5px; - font-size: 13px; - line-height: 1.5; - border-radius: 3px; -} -.btn-block { - display: block; - width: 100%; -} -.btn-block + .btn-block { - margin-top: 5px; -} -input[type="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity 0.15s linear; - -o-transition: opacity 0.15s linear; - transition: opacity 0.15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; -} -.collapse.in { - display: block; -} -tr.collapse.in { - display: table-row; -} -tbody.collapse.in { - display: table-row-group; -} -.collapsing { - position: relative; - height: 0; - overflow: hidden; - -webkit-transition-property: height, visibility; - -o-transition-property: height, visibility; - transition-property: height, visibility; - -webkit-transition-duration: 0.35s; - -o-transition-duration: 0.35s; - transition-duration: 0.35s; - -webkit-transition-timing-function: ease; - -o-transition-timing-function: ease; - transition-timing-function: ease; -} -.caret { - display: inline-block; - width: 0; - height: 0; - margin-left: 2px; - vertical-align: middle; - border-top: 4px dashed; - border-top: 4px solid \9; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropup, -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - list-style: none; - font-size: 15px; - text-align: left; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - -webkit-background-clip: padding-box; - background-clip: padding-box; -} -.dropdown-menu.pull-right { - right: 0; - left: auto; -} -.dropdown-menu .divider { - height: 1px; - margin: 9.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.dropdown-menu > li > a { - display: block; - padding: 3px 20px; - clear: both; - font-weight: normal; - line-height: 1.42857143; - color: #7b8a8b; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - text-decoration: none; - color: #ffffff; - background-color: #2c3e50; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #ffffff; - text-decoration: none; - outline: 0; - background-color: #2c3e50; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #b4bcc2; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); - cursor: not-allowed; -} -.open > .dropdown-menu { - display: block; -} -.open > a { - outline: 0; -} -.dropdown-menu-right { - left: auto; - right: 0; -} -.dropdown-menu-left { - left: 0; - right: auto; -} -.dropdown-header { - display: block; - padding: 3px 20px; - font-size: 13px; - line-height: 1.42857143; - color: #b4bcc2; - white-space: nowrap; -} -.dropdown-backdrop { - position: fixed; - left: 0; - right: 0; - bottom: 0; - top: 0; - z-index: 990; -} -.pull-right > .dropdown-menu { - right: 0; - left: auto; -} -.dropup .caret, -.navbar-fixed-bottom .dropdown .caret { - border-top: 0; - border-bottom: 4px dashed; - border-bottom: 4px solid \9; - content: ""; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 2px; -} -@media (min-width: 768px) { - .navbar-right .dropdown-menu { - left: auto; - right: 0; - } - .navbar-right .dropdown-menu-left { - left: 0; - right: auto; - } -} -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-block; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - z-index: 2; -} -.btn-group .btn + .btn, -.btn-group .btn + .btn-group, -.btn-group .btn-group + .btn, -.btn-group .btn-group + .btn-group { - margin-left: -1px; -} -.btn-toolbar { - margin-left: -5px; -} -.btn-toolbar .btn, -.btn-toolbar .btn-group, -.btn-toolbar .input-group { - float: left; -} -.btn-toolbar > .btn, -.btn-toolbar > .btn-group, -.btn-toolbar > .input-group { - margin-left: 5px; -} -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { - border-radius: 0; -} -.btn-group > .btn:first-child { - margin-left: 0; -} -.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn:last-child:not(:first-child), -.btn-group > .dropdown-toggle:not(:first-child) { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group > .btn-group { - float: left; -} -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.btn-group .dropdown-toggle:active, -.btn-group.open .dropdown-toggle { - outline: 0; -} -.btn-group > .btn + .dropdown-toggle { - padding-left: 8px; - padding-right: 8px; -} -.btn-group > .btn-lg + .dropdown-toggle { - padding-left: 12px; - padding-right: 12px; -} -.btn-group.open .dropdown-toggle { - -webkit-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-group.open .dropdown-toggle.btn-link { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn .caret { - margin-left: 0; -} -.btn-lg .caret { - border-width: 5px 5px 0; - border-bottom-width: 0; -} -.dropup .btn-lg .caret { - border-width: 0 5px 5px; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group, -.btn-group-vertical > .btn-group > .btn { - display: block; - float: none; - width: 100%; - max-width: 100%; -} -.btn-group-vertical > .btn-group > .btn { - float: none; -} -.btn-group-vertical > .btn + .btn, -.btn-group-vertical > .btn + .btn-group, -.btn-group-vertical > .btn-group + .btn, -.btn-group-vertical > .btn-group + .btn-group { - margin-top: -1px; - margin-left: 0; -} -.btn-group-vertical > .btn:not(:first-child):not(:last-child) { - border-radius: 0; -} -.btn-group-vertical > .btn:first-child:not(:last-child) { - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn:last-child:not(:first-child) { - border-top-right-radius: 0; - border-top-left-radius: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { - border-radius: 0; -} -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, -.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.btn-group-justified { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: separate; -} -.btn-group-justified > .btn, -.btn-group-justified > .btn-group { - float: none; - display: table-cell; - width: 1%; -} -.btn-group-justified > .btn-group .btn { - width: 100%; -} -.btn-group-justified > .btn-group .dropdown-menu { - left: auto; -} -[data-toggle="buttons"] > .btn input[type="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.input-group { - position: relative; - display: table; - border-collapse: separate; -} -.input-group[class*="col-"] { - float: none; - padding-left: 0; - padding-right: 0; -} -.input-group .form-control { - position: relative; - z-index: 2; - float: left; - width: 100%; - margin-bottom: 0; -} -.input-group .form-control:focus { - z-index: 3; -} -.input-group-lg > .form-control, -.input-group-lg > .input-group-addon, -.input-group-lg > .input-group-btn > .btn { - height: 66px; - padding: 18px 27px; - font-size: 19px; - line-height: 1.3333333; - border-radius: 6px; -} -select.input-group-lg > .form-control, -select.input-group-lg > .input-group-addon, -select.input-group-lg > .input-group-btn > .btn { - height: 66px; - line-height: 66px; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].input-group-lg > .input-group-btn > .btn { - height: auto; -} -.input-group-sm > .form-control, -.input-group-sm > .input-group-addon, -.input-group-sm > .input-group-btn > .btn { - height: 35px; - padding: 6px 9px; - font-size: 13px; - line-height: 1.5; - border-radius: 3px; -} -select.input-group-sm > .form-control, -select.input-group-sm > .input-group-addon, -select.input-group-sm > .input-group-btn > .btn { - height: 35px; - line-height: 35px; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control:not(:first-child):not(:last-child) { - border-radius: 0; -} -.input-group-addon, -.input-group-btn { - width: 1%; - white-space: nowrap; - vertical-align: middle; -} -.input-group-addon { - padding: 10px 15px; - font-size: 15px; - font-weight: normal; - line-height: 1; - color: #2c3e50; - text-align: center; - background-color: #ecf0f1; - border: 1px solid #dce4ec; - border-radius: 4px; -} -.input-group-addon.input-sm { - padding: 6px 9px; - font-size: 13px; - border-radius: 3px; -} -.input-group-addon.input-lg { - padding: 18px 27px; - font-size: 19px; - border-radius: 6px; -} -.input-group-addon input[type="radio"], -.input-group-addon input[type="checkbox"] { - margin-top: 0; -} -.input-group .form-control:first-child, -.input-group-addon:first-child, -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group > .btn, -.input-group-btn:first-child > .dropdown-toggle, -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-top-right-radius: 0; -} -.input-group-addon:first-child { - border-right: 0; -} -.input-group .form-control:last-child, -.input-group-addon:last-child, -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - border-bottom-left-radius: 0; - border-top-left-radius: 0; -} -.input-group-addon:last-child { - border-left: 0; -} -.input-group-btn { - position: relative; - font-size: 0; - white-space: nowrap; -} -.input-group-btn > .btn { - position: relative; -} -.input-group-btn > .btn + .btn { - margin-left: -1px; -} -.input-group-btn > .btn:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - z-index: 2; -} -.input-group-btn:first-child > .btn, -.input-group-btn:first-child > .btn-group { - margin-right: -1px; -} -.input-group-btn:last-child > .btn, -.input-group-btn:last-child > .btn-group { - z-index: 2; - margin-left: -1px; -} -.nav { - margin-bottom: 0; - padding-left: 0; - list-style: none; -} -.nav > li { - position: relative; - display: block; -} -.nav > li > a { - position: relative; - display: block; - padding: 10px 15px; -} -.nav > li > a:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #ecf0f1; -} -.nav > li.disabled > a { - color: #b4bcc2; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #b4bcc2; - text-decoration: none; - background-color: transparent; - cursor: not-allowed; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - background-color: #ecf0f1; - border-color: #18bc9c; -} -.nav .nav-divider { - height: 1px; - margin: 9.5px 0; - overflow: hidden; - background-color: #e5e5e5; -} -.nav > li > a > img { - max-width: none; -} -.nav-tabs { - border-bottom: 1px solid #ecf0f1; -} -.nav-tabs > li { - float: left; - margin-bottom: -1px; -} -.nav-tabs > li > a { - margin-right: 2px; - line-height: 1.42857143; - border: 1px solid transparent; - border-radius: 4px 4px 0 0; -} -.nav-tabs > li > a:hover { - border-color: #ecf0f1 #ecf0f1 #ecf0f1; -} -.nav-tabs > li.active > a, -.nav-tabs > li.active > a:hover, -.nav-tabs > li.active > a:focus { - color: #2c3e50; - background-color: #ffffff; - border: 1px solid #ecf0f1; - border-bottom-color: transparent; - cursor: default; -} -.nav-tabs.nav-justified { - width: 100%; - border-bottom: 0; -} -.nav-tabs.nav-justified > li { - float: none; -} -.nav-tabs.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-tabs.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-tabs.nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs.nav-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs.nav-justified > .active > a, -.nav-tabs.nav-justified > .active > a:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ecf0f1; -} -@media (min-width: 768px) { - .nav-tabs.nav-justified > li > a { - border-bottom: 1px solid #ecf0f1; - border-radius: 4px 4px 0 0; - } - .nav-tabs.nav-justified > .active > a, - .nav-tabs.nav-justified > .active > a:hover, - .nav-tabs.nav-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.nav-pills > li { - float: left; -} -.nav-pills > li > a { - border-radius: 4px; -} -.nav-pills > li + li { - margin-left: 2px; -} -.nav-pills > li.active > a, -.nav-pills > li.active > a:hover, -.nav-pills > li.active > a:focus { - color: #ffffff; - background-color: #2c3e50; -} -.nav-stacked > li { - float: none; -} -.nav-stacked > li + li { - margin-top: 2px; - margin-left: 0; -} -.nav-justified { - width: 100%; -} -.nav-justified > li { - float: none; -} -.nav-justified > li > a { - text-align: center; - margin-bottom: 5px; -} -.nav-justified > .dropdown .dropdown-menu { - top: auto; - left: auto; -} -@media (min-width: 768px) { - .nav-justified > li { - display: table-cell; - width: 1%; - } - .nav-justified > li > a { - margin-bottom: 0; - } -} -.nav-tabs-justified { - border-bottom: 0; -} -.nav-tabs-justified > li > a { - margin-right: 0; - border-radius: 4px; -} -.nav-tabs-justified > .active > a, -.nav-tabs-justified > .active > a:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ecf0f1; -} -@media (min-width: 768px) { - .nav-tabs-justified > li > a { - border-bottom: 1px solid #ecf0f1; - border-radius: 4px 4px 0 0; - } - .nav-tabs-justified > .active > a, - .nav-tabs-justified > .active > a:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #ffffff; - } -} -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar { - position: relative; - min-height: 60px; - margin-bottom: 21px; - border: 1px solid transparent; -} -@media (min-width: 768px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 768px) { - .navbar-header { - float: left; - } -} -.navbar-collapse { - overflow-x: visible; - padding-right: 15px; - padding-left: 15px; - border-top: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1); - -webkit-overflow-scrolling: touch; -} -.navbar-collapse.in { - overflow-y: auto; -} -@media (min-width: 768px) { - .navbar-collapse { - width: auto; - border-top: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-collapse.collapse { - display: block !important; - height: auto !important; - padding-bottom: 0; - overflow: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-left: 0; - padding-right: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 768px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 768px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 768px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - border-radius: 0; - } -} -.navbar-fixed-top { - top: 0; - border-width: 0 0 1px; -} -.navbar-fixed-bottom { - bottom: 0; - margin-bottom: 0; - border-width: 1px 0 0; -} -.navbar-brand { - float: left; - padding: 19.5px 15px; - font-size: 19px; - line-height: 21px; - height: 60px; -} -.navbar-brand:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 768px) { - .navbar > .container .navbar-brand, - .navbar > .container-fluid .navbar-brand { - margin-left: -15px; - } -} -.navbar-toggle { - position: relative; - float: right; - margin-right: 15px; - padding: 9px 10px; - margin-top: 13px; - margin-bottom: 13px; - background-color: transparent; - background-image: none; - border: 1px solid transparent; - border-radius: 4px; -} -.navbar-toggle:focus { - outline: 0; -} -.navbar-toggle .icon-bar { - display: block; - width: 22px; - height: 2px; - border-radius: 1px; -} -.navbar-toggle .icon-bar + .icon-bar { - margin-top: 4px; -} -@media (min-width: 768px) { - .navbar-toggle { - display: none; - } -} -.navbar-nav { - margin: 9.75px -15px; -} -.navbar-nav > li > a { - padding-top: 10px; - padding-bottom: 10px; - line-height: 21px; -} -@media (max-width: 767px) { - .navbar-nav .open .dropdown-menu { - position: static; - float: none; - width: auto; - margin-top: 0; - background-color: transparent; - border: 0; - -webkit-box-shadow: none; - box-shadow: none; - } - .navbar-nav .open .dropdown-menu > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 21px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 768px) { - .navbar-nav { - float: left; - margin: 0; - } - .navbar-nav > li { - float: left; - } - .navbar-nav > li > a { - padding-top: 19.5px; - padding-bottom: 19.5px; - } -} -.navbar-form { - margin-left: -15px; - margin-right: -15px; - padding: 10px 15px; - border-top: 1px solid transparent; - border-bottom: 1px solid transparent; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); - margin-top: 7.5px; - margin-bottom: 7.5px; -} -@media (min-width: 768px) { - .navbar-form .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .navbar-form .form-control-static { - display: inline-block; - } - .navbar-form .input-group { - display: inline-table; - vertical-align: middle; - } - .navbar-form .input-group .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .navbar-form .has-feedback .form-control-feedback { - top: 0; - } -} -@media (max-width: 767px) { - .navbar-form .form-group { - margin-bottom: 5px; - } - .navbar-form .form-group:last-child { - margin-bottom: 0; - } -} -@media (min-width: 768px) { - .navbar-form { - width: auto; - border: 0; - margin-left: 0; - margin-right: 0; - padding-top: 0; - padding-bottom: 0; - -webkit-box-shadow: none; - box-shadow: none; - } -} -.navbar-nav > li > .dropdown-menu { - margin-top: 0; - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { - margin-bottom: 0; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.navbar-btn { - margin-top: 7.5px; - margin-bottom: 7.5px; -} -.navbar-btn.btn-sm { - margin-top: 12.5px; - margin-bottom: 12.5px; -} -.navbar-btn.btn-xs { - margin-top: 19px; - margin-bottom: 19px; -} -.navbar-text { - margin-top: 19.5px; - margin-bottom: 19.5px; -} -@media (min-width: 768px) { - .navbar-text { - float: left; - margin-left: 15px; - margin-right: 15px; - } -} -@media (min-width: 768px) { - .navbar-left { - float: left !important; - } - .navbar-right { - float: right !important; - margin-right: -15px; - } - .navbar-right ~ .navbar-right { - margin-right: 0; - } -} -.navbar-default { - background-color: #2c3e50; - border-color: transparent; -} -.navbar-default .navbar-brand { - color: #ffffff; -} -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #18bc9c; - background-color: transparent; -} -.navbar-default .navbar-text { - color: #ffffff; -} -.navbar-default .navbar-nav > li > a { - color: #ffffff; -} -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #18bc9c; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #1a242f; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #1a242f; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #1a242f; -} -.navbar-default .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: transparent; -} -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #1a242f; - color: #ffffff; -} -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #ffffff; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #18bc9c; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #1a242f; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-default .navbar-link { - color: #ffffff; -} -.navbar-default .navbar-link:hover { - color: #18bc9c; -} -.navbar-default .btn-link { - color: #ffffff; -} -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #18bc9c; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} -.navbar-inverse { - background-color: #18bc9c; - border-color: transparent; -} -.navbar-inverse .navbar-brand { - color: #ffffff; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - color: #2c3e50; - background-color: transparent; -} -.navbar-inverse .navbar-text { - color: #ffffff; -} -.navbar-inverse .navbar-nav > li > a { - color: #ffffff; -} -.navbar-inverse .navbar-nav > li > a:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #2c3e50; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #15a589; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #128f76; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - background-color: #128f76; -} -.navbar-inverse .navbar-toggle .icon-bar { - background-color: #ffffff; -} -.navbar-inverse .navbar-collapse, -.navbar-inverse .navbar-form { - border-color: #149c82; -} -.navbar-inverse .navbar-nav > .open > a, -.navbar-inverse .navbar-nav > .open > a:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - background-color: #15a589; - color: #ffffff; -} -@media (max-width: 767px) { - .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { - border-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu .divider { - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { - color: #ffffff; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #2c3e50; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #15a589; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} -.navbar-inverse .navbar-link { - color: #ffffff; -} -.navbar-inverse .navbar-link:hover { - color: #2c3e50; -} -.navbar-inverse .btn-link { - color: #ffffff; -} -.navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link:focus { - color: #2c3e50; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - color: #cccccc; -} -.breadcrumb { - padding: 8px 15px; - margin-bottom: 21px; - list-style: none; - background-color: #ecf0f1; - border-radius: 4px; -} -.breadcrumb > li { - display: inline-block; -} -.breadcrumb > li + li:before { - content: "/\00a0"; - padding: 0 5px; - color: #cccccc; -} -.breadcrumb > .active { - color: #95a5a6; -} -.pagination { - display: inline-block; - padding-left: 0; - margin: 21px 0; - border-radius: 4px; -} -.pagination > li { - display: inline; -} -.pagination > li > a, -.pagination > li > span { - position: relative; - float: left; - padding: 10px 15px; - line-height: 1.42857143; - text-decoration: none; - color: #ffffff; - background-color: #18bc9c; - border: 1px solid transparent; - margin-left: -1px; -} -.pagination > li:first-child > a, -.pagination > li:first-child > span { - margin-left: 0; - border-bottom-left-radius: 4px; - border-top-left-radius: 4px; -} -.pagination > li:last-child > a, -.pagination > li:last-child > span { - border-bottom-right-radius: 4px; - border-top-right-radius: 4px; -} -.pagination > li > a:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - z-index: 2; - color: #ffffff; - background-color: #0f7864; - border-color: transparent; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 3; - color: #ffffff; - background-color: #0f7864; - border-color: transparent; - cursor: default; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - color: #ecf0f1; - background-color: #3be6c4; - border-color: transparent; - cursor: not-allowed; -} -.pagination-lg > li > a, -.pagination-lg > li > span { - padding: 18px 27px; - font-size: 19px; - line-height: 1.3333333; -} -.pagination-lg > li:first-child > a, -.pagination-lg > li:first-child > span { - border-bottom-left-radius: 6px; - border-top-left-radius: 6px; -} -.pagination-lg > li:last-child > a, -.pagination-lg > li:last-child > span { - border-bottom-right-radius: 6px; - border-top-right-radius: 6px; -} -.pagination-sm > li > a, -.pagination-sm > li > span { - padding: 6px 9px; - font-size: 13px; - line-height: 1.5; -} -.pagination-sm > li:first-child > a, -.pagination-sm > li:first-child > span { - border-bottom-left-radius: 3px; - border-top-left-radius: 3px; -} -.pagination-sm > li:last-child > a, -.pagination-sm > li:last-child > span { - border-bottom-right-radius: 3px; - border-top-right-radius: 3px; -} -.pager { - padding-left: 0; - margin: 21px 0; - list-style: none; - text-align: center; -} -.pager li { - display: inline; -} -.pager li > a, -.pager li > span { - display: inline-block; - padding: 5px 14px; - background-color: #18bc9c; - border: 1px solid transparent; - border-radius: 15px; -} -.pager li > a:hover, -.pager li > a:focus { - text-decoration: none; - background-color: #0f7864; -} -.pager .next > a, -.pager .next > span { - float: right; -} -.pager .previous > a, -.pager .previous > span { - float: left; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #ffffff; - background-color: #18bc9c; - cursor: not-allowed; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #ffffff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #95a5a6; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #798d8f; -} -.label-primary { - background-color: #2c3e50; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #1a242f; -} -.label-success { - background-color: #18bc9c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #128f76; -} -.label-info { - background-color: #3498db; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #217dbb; -} -.label-warning { - background-color: #f39c12; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #c87f0a; -} -.label-danger { - background-color: #e74c3c; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #d62c1a; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 13px; - font-weight: bold; - color: #ffffff; - line-height: 1; - vertical-align: middle; - white-space: nowrap; - text-align: center; - background-color: #2c3e50; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge, -.btn-group-xs > .btn .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - color: #ffffff; - text-decoration: none; - cursor: pointer; -} -.list-group-item.active > .badge, -.nav-pills > .active > a > .badge { - color: #2c3e50; - background-color: #ffffff; -} -.list-group-item > .badge { - float: right; -} -.list-group-item > .badge + .badge { - margin-right: 5px; -} -.nav-pills > li > a > .badge { - margin-left: 3px; -} -.jumbotron { - padding-top: 30px; - padding-bottom: 30px; - margin-bottom: 30px; - color: inherit; - background-color: #ecf0f1; -} -.jumbotron h1, -.jumbotron .h1 { - color: inherit; -} -.jumbotron p { - margin-bottom: 15px; - font-size: 23px; - font-weight: 200; -} -.jumbotron > hr { - border-top-color: #cfd9db; -} -.container .jumbotron, -.container-fluid .jumbotron { - border-radius: 6px; - padding-left: 15px; - padding-right: 15px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding-top: 48px; - padding-bottom: 48px; - } - .container .jumbotron, - .container-fluid .jumbotron { - padding-left: 60px; - padding-right: 60px; - } - .jumbotron h1, - .jumbotron .h1 { - font-size: 68px; - } -} -.thumbnail { - display: block; - padding: 4px; - margin-bottom: 21px; - line-height: 1.42857143; - background-color: #ffffff; - border: 1px solid #ecf0f1; - border-radius: 4px; - -webkit-transition: border 0.2s ease-in-out; - -o-transition: border 0.2s ease-in-out; - transition: border 0.2s ease-in-out; -} -.thumbnail > img, -.thumbnail a > img { - margin-left: auto; - margin-right: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - border-color: #18bc9c; -} -.thumbnail .caption { - padding: 9px; - color: #2c3e50; -} -.alert { - padding: 15px; - margin-bottom: 21px; - border: 1px solid transparent; - border-radius: 4px; -} -.alert h4 { - margin-top: 0; - color: inherit; -} -.alert .alert-link { - font-weight: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - background-color: #18bc9c; - border-color: #18bc9c; - color: #ffffff; -} -.alert-success hr { - border-top-color: #15a589; -} -.alert-success .alert-link { - color: #e6e6e6; -} -.alert-info { - background-color: #3498db; - border-color: #3498db; - color: #ffffff; -} -.alert-info hr { - border-top-color: #258cd1; -} -.alert-info .alert-link { - color: #e6e6e6; -} -.alert-warning { - background-color: #f39c12; - border-color: #f39c12; - color: #ffffff; -} -.alert-warning hr { - border-top-color: #e08e0b; -} -.alert-warning .alert-link { - color: #e6e6e6; -} -.alert-danger { - background-color: #e74c3c; - border-color: #e74c3c; - color: #ffffff; -} -.alert-danger hr { - border-top-color: #e43725; -} -.alert-danger .alert-link { - color: #e6e6e6; -} -@-webkit-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@-o-keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -@keyframes progress-bar-stripes { - from { - background-position: 40px 0; - } - to { - background-position: 0 0; - } -} -.progress { - overflow: hidden; - height: 21px; - margin-bottom: 21px; - background-color: #ecf0f1; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -} -.progress-bar { - float: left; - width: 0%; - height: 100%; - font-size: 13px; - line-height: 21px; - color: #ffffff; - text-align: center; - background-color: #2c3e50; - -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); - -webkit-transition: width 0.6s ease; - -o-transition: width 0.6s ease; - transition: width 0.6s ease; -} -.progress-striped .progress-bar, -.progress-bar-striped { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -webkit-animation: progress-bar-stripes 2s linear infinite; - -o-animation: progress-bar-stripes 2s linear infinite; - animation: progress-bar-stripes 2s linear infinite; -} -.progress-bar-success { - background-color: #18bc9c; -} -.progress-striped .progress-bar-success { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-info { - background-color: #3498db; -} -.progress-striped .progress-bar-info { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-warning { - background-color: #f39c12; -} -.progress-striped .progress-bar-warning { - background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -} -.progress-bar-danger { - background-color: #e74c3c; -} -.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); -} -.media { - margin-top: 15px; -} -.media:first-child { - margin-top: 0; -} -.media, -.media-body { - zoom: 1; - overflow: hidden; -} -.media-body { - width: 10000px; -} -.media-object { - display: block; -} -.media-object.img-thumbnail { - max-width: none; -} -.media-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - display: table-cell; - vertical-align: top; -} -.media-middle { - vertical-align: middle; -} -.media-bottom { - vertical-align: bottom; -} -.media-heading { - margin-top: 0; - margin-bottom: 5px; -} -.media-list { - padding-left: 0; - list-style: none; -} -.list-group { - margin-bottom: 20px; - padding-left: 0; -} -.list-group-item { - position: relative; - display: block; - padding: 10px 15px; - margin-bottom: -1px; - background-color: #ffffff; - border: 1px solid #ecf0f1; -} -.list-group-item:first-child { - border-top-right-radius: 4px; - border-top-left-radius: 4px; -} -.list-group-item:last-child { - margin-bottom: 0; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -a.list-group-item, -button.list-group-item { - color: #555555; -} -a.list-group-item .list-group-item-heading, -button.list-group-item .list-group-item-heading { - color: #333333; -} -a.list-group-item:hover, -button.list-group-item:hover, -a.list-group-item:focus, -button.list-group-item:focus { - text-decoration: none; - color: #555555; - background-color: #ecf0f1; -} -button.list-group-item { - width: 100%; - text-align: left; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - background-color: #ecf0f1; - color: #b4bcc2; - cursor: not-allowed; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #b4bcc2; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #ffffff; - background-color: #2c3e50; - border-color: #2c3e50; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #8aa4be; -} -.list-group-item-success { - color: #ffffff; - background-color: #18bc9c; -} -a.list-group-item-success, -button.list-group-item-success { - color: #ffffff; -} -a.list-group-item-success .list-group-item-heading, -button.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -button.list-group-item-success:hover, -a.list-group-item-success:focus, -button.list-group-item-success:focus { - color: #ffffff; - background-color: #15a589; -} -a.list-group-item-success.active, -button.list-group-item-success.active, -a.list-group-item-success.active:hover, -button.list-group-item-success.active:hover, -a.list-group-item-success.active:focus, -button.list-group-item-success.active:focus { - color: #fff; - background-color: #ffffff; - border-color: #ffffff; -} -.list-group-item-info { - color: #ffffff; - background-color: #3498db; -} -a.list-group-item-info, -button.list-group-item-info { - color: #ffffff; -} -a.list-group-item-info .list-group-item-heading, -button.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -button.list-group-item-info:hover, -a.list-group-item-info:focus, -button.list-group-item-info:focus { - color: #ffffff; - background-color: #258cd1; -} -a.list-group-item-info.active, -button.list-group-item-info.active, -a.list-group-item-info.active:hover, -button.list-group-item-info.active:hover, -a.list-group-item-info.active:focus, -button.list-group-item-info.active:focus { - color: #fff; - background-color: #ffffff; - border-color: #ffffff; -} -.list-group-item-warning { - color: #ffffff; - background-color: #f39c12; -} -a.list-group-item-warning, -button.list-group-item-warning { - color: #ffffff; -} -a.list-group-item-warning .list-group-item-heading, -button.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -button.list-group-item-warning:hover, -a.list-group-item-warning:focus, -button.list-group-item-warning:focus { - color: #ffffff; - background-color: #e08e0b; -} -a.list-group-item-warning.active, -button.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -button.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus, -button.list-group-item-warning.active:focus { - color: #fff; - background-color: #ffffff; - border-color: #ffffff; -} -.list-group-item-danger { - color: #ffffff; - background-color: #e74c3c; -} -a.list-group-item-danger, -button.list-group-item-danger { - color: #ffffff; -} -a.list-group-item-danger .list-group-item-heading, -button.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -button.list-group-item-danger:hover, -a.list-group-item-danger:focus, -button.list-group-item-danger:focus { - color: #ffffff; - background-color: #e43725; -} -a.list-group-item-danger.active, -button.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -button.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus, -button.list-group-item-danger.active:focus { - color: #fff; - background-color: #ffffff; - border-color: #ffffff; -} -.list-group-item-heading { - margin-top: 0; - margin-bottom: 5px; -} -.list-group-item-text { - margin-bottom: 0; - line-height: 1.3; -} -.panel { - margin-bottom: 21px; - background-color: #ffffff; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); -} -.panel-body { - padding: 15px; -} -.panel-heading { - padding: 10px 15px; - border-bottom: 1px solid transparent; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel-heading > .dropdown .dropdown-toggle { - color: inherit; -} -.panel-title { - margin-top: 0; - margin-bottom: 0; - font-size: 17px; - color: inherit; -} -.panel-title > a, -.panel-title > small, -.panel-title > .small, -.panel-title > small > a, -.panel-title > .small > a { - color: inherit; -} -.panel-footer { - padding: 10px 15px; - background-color: #ecf0f1; - border-top: 1px solid #ecf0f1; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .list-group, -.panel > .panel-collapse > .list-group { - margin-bottom: 0; -} -.panel > .list-group .list-group-item, -.panel > .panel-collapse > .list-group .list-group-item { - border-width: 1px 0; - border-radius: 0; -} -.panel > .list-group:first-child .list-group-item:first-child, -.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { - border-top: 0; - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel > .list-group:last-child .list-group-item:last-child, -.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { - border-bottom: 0; - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { - border-top-right-radius: 0; - border-top-left-radius: 0; -} -.panel-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-left: 15px; - padding-right: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-right-radius: 3px; - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, -.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { - border-bottom-right-radius: 3px; -} -.panel > .panel-body + .table, -.panel > .panel-body + .table-responsive, -.panel > .table + .panel-body, -.panel > .table-responsive + .panel-body { - border-top: 1px solid #ecf0f1; -} -.panel > .table > tbody:first-child > tr:first-child th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { - border-bottom: 0; -} -.panel > .table-responsive { - border: 0; - margin-bottom: 0; -} -.panel-group { - margin-bottom: 21px; -} -.panel-group .panel { - margin-bottom: 0; - border-radius: 4px; -} -.panel-group .panel + .panel { - margin-top: 5px; -} -.panel-group .panel-heading { - border-bottom: 0; -} -.panel-group .panel-heading + .panel-collapse > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - border-top: 1px solid #ecf0f1; -} -.panel-group .panel-footer { - border-top: 0; -} -.panel-group .panel-footer + .panel-collapse .panel-body { - border-bottom: 1px solid #ecf0f1; -} -.panel-default { - border-color: #ecf0f1; -} -.panel-default > .panel-heading { - color: #2c3e50; - background-color: #ecf0f1; - border-color: #ecf0f1; -} -.panel-default > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #ecf0f1; -} -.panel-default > .panel-heading .badge { - color: #ecf0f1; - background-color: #2c3e50; -} -.panel-default > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #ecf0f1; -} -.panel-primary { - border-color: #2c3e50; -} -.panel-primary > .panel-heading { - color: #ffffff; - background-color: #2c3e50; - border-color: #2c3e50; -} -.panel-primary > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #2c3e50; -} -.panel-primary > .panel-heading .badge { - color: #2c3e50; - background-color: #ffffff; -} -.panel-primary > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #2c3e50; -} -.panel-success { - border-color: #18bc9c; -} -.panel-success > .panel-heading { - color: #ffffff; - background-color: #18bc9c; - border-color: #18bc9c; -} -.panel-success > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #18bc9c; -} -.panel-success > .panel-heading .badge { - color: #18bc9c; - background-color: #ffffff; -} -.panel-success > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #18bc9c; -} -.panel-info { - border-color: #3498db; -} -.panel-info > .panel-heading { - color: #ffffff; - background-color: #3498db; - border-color: #3498db; -} -.panel-info > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #3498db; -} -.panel-info > .panel-heading .badge { - color: #3498db; - background-color: #ffffff; -} -.panel-info > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #3498db; -} -.panel-warning { - border-color: #f39c12; -} -.panel-warning > .panel-heading { - color: #ffffff; - background-color: #f39c12; - border-color: #f39c12; -} -.panel-warning > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #f39c12; -} -.panel-warning > .panel-heading .badge { - color: #f39c12; - background-color: #ffffff; -} -.panel-warning > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #f39c12; -} -.panel-danger { - border-color: #e74c3c; -} -.panel-danger > .panel-heading { - color: #ffffff; - background-color: #e74c3c; - border-color: #e74c3c; -} -.panel-danger > .panel-heading + .panel-collapse > .panel-body { - border-top-color: #e74c3c; -} -.panel-danger > .panel-heading .badge { - color: #e74c3c; - background-color: #ffffff; -} -.panel-danger > .panel-footer + .panel-collapse > .panel-body { - border-bottom-color: #e74c3c; -} -.embed-responsive { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; -} -.embed-responsive .embed-responsive-item, -.embed-responsive iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - left: 0; - bottom: 0; - height: 100%; - width: 100%; - border: 0; -} -.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive-4by3 { - padding-bottom: 75%; -} -.well { - min-height: 20px; - padding: 19px; - margin-bottom: 20px; - background-color: #ecf0f1; - border: 1px solid transparent; - border-radius: 4px; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -} -.well blockquote { - border-color: #ddd; - border-color: rgba(0, 0, 0, 0.15); -} -.well-lg { - padding: 24px; - border-radius: 6px; -} -.well-sm { - padding: 9px; - border-radius: 3px; -} -.close { - float: right; - font-size: 22.5px; - font-weight: bold; - line-height: 1; - color: #000000; - text-shadow: none; - opacity: 0.2; - filter: alpha(opacity=20); -} -.close:hover, -.close:focus { - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.5; - filter: alpha(opacity=50); -} -button.close { - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - -webkit-appearance: none; -} -.modal-open { - overflow: hidden; -} -.modal { - display: none; - overflow: hidden; - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1050; - -webkit-overflow-scrolling: touch; - outline: 0; -} -.modal.fade .modal-dialog { - -webkit-transform: translate(0, -25%); - -ms-transform: translate(0, -25%); - -o-transform: translate(0, -25%); - transform: translate(0, -25%); - -webkit-transition: -webkit-transform 0.3s ease-out; - -o-transition: -o-transform 0.3s ease-out; - transition: transform 0.3s ease-out; -} -.modal.in .modal-dialog { - -webkit-transform: translate(0, 0); - -ms-transform: translate(0, 0); - -o-transform: translate(0, 0); - transform: translate(0, 0); -} -.modal-open .modal { - overflow-x: hidden; - overflow-y: auto; -} -.modal-dialog { - position: relative; - width: auto; - margin: 10px; -} -.modal-content { - position: relative; - background-color: #ffffff; - border: 1px solid #999999; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5); - -webkit-background-clip: padding-box; - background-clip: padding-box; - outline: 0; -} -.modal-backdrop { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - background-color: #000000; -} -.modal-backdrop.fade { - opacity: 0; - filter: alpha(opacity=0); -} -.modal-backdrop.in { - opacity: 0.5; - filter: alpha(opacity=50); -} -.modal-header { - padding: 15px; - border-bottom: 1px solid #e5e5e5; -} -.modal-header .close { - margin-top: -2px; -} -.modal-title { - margin: 0; - line-height: 1.42857143; -} -.modal-body { - position: relative; - padding: 20px; -} -.modal-footer { - padding: 20px; - text-align: right; - border-top: 1px solid #e5e5e5; -} -.modal-footer .btn + .btn { - margin-left: 5px; - margin-bottom: 0; -} -.modal-footer .btn-group .btn + .btn { - margin-left: -1px; -} -.modal-footer .btn-block + .btn-block { - margin-left: 0; -} -.modal-scrollbar-measure { - position: absolute; - top: -9999px; - width: 50px; - height: 50px; - overflow: scroll; -} -@media (min-width: 768px) { - .modal-dialog { - width: 600px; - margin: 30px auto; - } - .modal-content { - -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); - } - .modal-sm { - width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 13px; - opacity: 0; - filter: alpha(opacity=0); -} -.tooltip.in { - opacity: 0.9; - filter: alpha(opacity=90); -} -.tooltip.top { - margin-top: -3px; - padding: 5px 0; -} -.tooltip.right { - margin-left: 3px; - padding: 0 5px; -} -.tooltip.bottom { - margin-top: 3px; - padding: 5px 0; -} -.tooltip.left { - margin-left: -3px; - padding: 0 5px; -} -.tooltip-inner { - max-width: 200px; - padding: 3px 8px; - color: #ffffff; - text-align: center; - background-color: #000000; - border-radius: 4px; -} -.tooltip-arrow { - position: absolute; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.tooltip.top .tooltip-arrow { - bottom: 0; - left: 50%; - margin-left: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-left .tooltip-arrow { - bottom: 0; - right: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.top-right .tooltip-arrow { - bottom: 0; - left: 5px; - margin-bottom: -5px; - border-width: 5px 5px 0; - border-top-color: #000000; -} -.tooltip.right .tooltip-arrow { - top: 50%; - left: 0; - margin-top: -5px; - border-width: 5px 5px 5px 0; - border-right-color: #000000; -} -.tooltip.left .tooltip-arrow { - top: 50%; - right: 0; - margin-top: -5px; - border-width: 5px 0 5px 5px; - border-left-color: #000000; -} -.tooltip.bottom .tooltip-arrow { - top: 0; - left: 50%; - margin-left: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-left .tooltip-arrow { - top: 0; - right: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.tooltip.bottom-right .tooltip-arrow { - top: 0; - left: 5px; - margin-top: -5px; - border-width: 0 5px 5px; - border-bottom-color: #000000; -} -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1060; - display: none; - max-width: 276px; - padding: 1px; - font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif; - font-style: normal; - font-weight: normal; - letter-spacing: normal; - line-break: auto; - line-height: 1.42857143; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - white-space: normal; - word-break: normal; - word-spacing: normal; - word-wrap: normal; - font-size: 15px; - background-color: #ffffff; - -webkit-background-clip: padding-box; - background-clip: padding-box; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - margin: 0; - padding: 8px 14px; - font-size: 15px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - border-width: 10px; - content: ""; -} -.popover.top > .arrow { - left: 50%; - margin-left: -11px; - border-bottom-width: 0; - border-top-color: #999999; - border-top-color: rgba(0, 0, 0, 0.25); - bottom: -11px; -} -.popover.top > .arrow:after { - content: " "; - bottom: 1px; - margin-left: -10px; - border-bottom-width: 0; - border-top-color: #ffffff; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-left-width: 0; - border-right-color: #999999; - border-right-color: rgba(0, 0, 0, 0.25); -} -.popover.right > .arrow:after { - content: " "; - left: 1px; - bottom: -10px; - border-left-width: 0; - border-right-color: #ffffff; -} -.popover.bottom > .arrow { - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999999; - border-bottom-color: rgba(0, 0, 0, 0.25); - top: -11px; -} -.popover.bottom > .arrow:after { - content: " "; - top: 1px; - margin-left: -10px; - border-top-width: 0; - border-bottom-color: #ffffff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - content: " "; - right: 1px; - border-right-width: 0; - border-left-color: #ffffff; - bottom: -10px; -} -.carousel { - position: relative; -} -.carousel-inner { - position: relative; - overflow: hidden; - width: 100%; -} -.carousel-inner > .item { - display: none; - position: relative; - -webkit-transition: 0.6s ease-in-out left; - -o-transition: 0.6s ease-in-out left; - transition: 0.6s ease-in-out left; -} -.carousel-inner > .item > img, -.carousel-inner > .item > a > img { - line-height: 1; -} -@media all and (transform-3d), (-webkit-transform-3d) { - .carousel-inner > .item { - -webkit-transition: -webkit-transform 0.6s ease-in-out; - -o-transition: -o-transform 0.6s ease-in-out; - transition: transform 0.6s ease-in-out; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - -webkit-perspective: 1000px; - perspective: 1000px; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - left: 0; - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - left: 0; - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - -webkit-transform: translate3d(0, 0, 0); - transform: translate3d(0, 0, 0); - left: 0; - } -} -.carousel-inner > .active, -.carousel-inner > .next, -.carousel-inner > .prev { - display: block; -} -.carousel-inner > .active { - left: 0; -} -.carousel-inner > .next, -.carousel-inner > .prev { - position: absolute; - top: 0; - width: 100%; -} -.carousel-inner > .next { - left: 100%; -} -.carousel-inner > .prev { - left: -100%; -} -.carousel-inner > .next.left, -.carousel-inner > .prev.right { - left: 0; -} -.carousel-inner > .active.left { - left: -100%; -} -.carousel-inner > .active.right { - left: 100%; -} -.carousel-control { - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 15%; - opacity: 0.5; - filter: alpha(opacity=50); - font-size: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); - background-color: rgba(0, 0, 0, 0); -} -.carousel-control.left { - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001))); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); -} -.carousel-control.right { - left: auto; - right: 0; - background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5))); - background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); -} -.carousel-control:hover, -.carousel-control:focus { - outline: 0; - color: #ffffff; - text-decoration: none; - opacity: 0.9; - filter: alpha(opacity=90); -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - margin-top: -10px; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - line-height: 1; - font-family: serif; -} -.carousel-control .icon-prev:before { - content: '\2039'; -} -.carousel-control .icon-next:before { - content: '\203a'; -} -.carousel-indicators { - position: absolute; - bottom: 10px; - left: 50%; - z-index: 15; - width: 60%; - margin-left: -30%; - padding-left: 0; - list-style: none; - text-align: center; -} -.carousel-indicators li { - display: inline-block; - width: 10px; - height: 10px; - margin: 1px; - text-indent: -999px; - border: 1px solid #ffffff; - border-radius: 10px; - cursor: pointer; - background-color: #000 \9; - background-color: rgba(0, 0, 0, 0); -} -.carousel-indicators .active { - margin: 0; - width: 12px; - height: 12px; - background-color: #ffffff; -} -.carousel-caption { - position: absolute; - left: 15%; - right: 15%; - bottom: 20px; - z-index: 10; - padding-top: 20px; - padding-bottom: 20px; - color: #ffffff; - text-align: center; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6); -} -.carousel-caption .btn { - text-shadow: none; -} -@media screen and (min-width: 768px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -10px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -10px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -10px; - } - .carousel-caption { - left: 20%; - right: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-header:before, -.modal-header:after, -.modal-footer:before, -.modal-footer:after { - content: " "; - display: table; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-header:after, -.modal-footer:after { - clear: both; -} -.center-block { - display: block; - margin-left: auto; - margin-right: auto; -} -.pull-right { - float: right !important; -} -.pull-left { - float: left !important; -} -.hide { - display: none !important; -} -.show { - display: block !important; -} -.invisible { - visibility: hidden; -} -.text-hide { - font: 0/0 a; - color: transparent; - text-shadow: none; - background-color: transparent; - border: 0; -} -.hidden { - display: none !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table !important; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.visible-xs { - display: table-cell !important; - } -} -@media (max-width: 767px) { - .visible-xs-block { - display: block !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline { - display: inline !important; - } -} -@media (max-width: 767px) { - .visible-xs-inline-block { - display: inline-block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table !important; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table !important; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .visible-md-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1200px) { - .visible-lg { - display: block !important; - } - table.visible-lg { - display: table !important; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.visible-lg { - display: table-cell !important; - } -} -@media (min-width: 1200px) { - .visible-lg-block { - display: block !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline { - display: inline !important; - } -} -@media (min-width: 1200px) { - .visible-lg-inline-block { - display: inline-block !important; - } -} -@media (max-width: 767px) { - .hidden-xs { - display: none !important; - } -} -@media (min-width: 768px) and (max-width: 991px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 992px) and (max-width: 1199px) { - .hidden-md { - display: none !important; - } -} -@media (min-width: 1200px) { - .hidden-lg { - display: none !important; - } -} -.visible-print { - display: none !important; -} -@media print { - .visible-print { - display: block !important; - } - table.visible-print { - display: table !important; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.visible-print { - display: table-cell !important; - } -} -.visible-print-block { - display: none !important; -} -@media print { - .visible-print-block { - display: block !important; - } -} -.visible-print-inline { - display: none !important; -} -@media print { - .visible-print-inline { - display: inline !important; - } -} -.visible-print-inline-block { - display: none !important; -} -@media print { - .visible-print-inline-block { - display: inline-block !important; - } -} -@media print { - .hidden-print { - display: none !important; - } -} -.navbar { - border-width: 0; -} -.navbar-default .badge { - background-color: #fff; - color: #2c3e50; -} -.navbar-inverse .badge { - background-color: #fff; - color: #18bc9c; -} -.navbar-brand { - line-height: 1; -} -.btn { - border-width: 2px; -} -.btn:active { - -webkit-box-shadow: none; - box-shadow: none; -} -.btn-group.open .dropdown-toggle { - -webkit-box-shadow: none; - box-shadow: none; -} -.text-primary, -.text-primary:hover { - color: #2c3e50; -} -.text-success, -.text-success:hover { - color: #18bc9c; -} -.text-danger, -.text-danger:hover { - color: #e74c3c; -} -.text-warning, -.text-warning:hover { - color: #f39c12; -} -.text-info, -.text-info:hover { - color: #3498db; -} -table a:not(.btn), -.table a:not(.btn) { - text-decoration: underline; -} -table .dropdown-menu a, -.table .dropdown-menu a { - text-decoration: none; -} -table .success, -.table .success, -table .warning, -.table .warning, -table .danger, -.table .danger, -table .info, -.table .info { - color: #fff; -} -table .success > th > a, -.table .success > th > a, -table .warning > th > a, -.table .warning > th > a, -table .danger > th > a, -.table .danger > th > a, -table .info > th > a, -.table .info > th > a, -table .success > td > a, -.table .success > td > a, -table .warning > td > a, -.table .warning > td > a, -table .danger > td > a, -.table .danger > td > a, -table .info > td > a, -.table .info > td > a, -table .success > a, -.table .success > a, -table .warning > a, -.table .warning > a, -table .danger > a, -.table .danger > a, -table .info > a, -.table .info > a { - color: #fff; -} -table > thead > tr > th, -.table > thead > tr > th, -table > tbody > tr > th, -.table > tbody > tr > th, -table > tfoot > tr > th, -.table > tfoot > tr > th, -table > thead > tr > td, -.table > thead > tr > td, -table > tbody > tr > td, -.table > tbody > tr > td, -table > tfoot > tr > td, -.table > tfoot > tr > td { - border: none; -} -table-bordered > thead > tr > th, -.table-bordered > thead > tr > th, -table-bordered > tbody > tr > th, -.table-bordered > tbody > tr > th, -table-bordered > tfoot > tr > th, -.table-bordered > tfoot > tr > th, -table-bordered > thead > tr > td, -.table-bordered > thead > tr > td, -table-bordered > tbody > tr > td, -.table-bordered > tbody > tr > td, -table-bordered > tfoot > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ecf0f1; -} -.form-control, -input { - border-width: 2px; - -webkit-box-shadow: none; - box-shadow: none; -} -.form-control:focus, -input:focus { - -webkit-box-shadow: none; - box-shadow: none; -} -.has-warning .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label, -.has-warning .form-control-feedback { - color: #f39c12; -} -.has-warning .form-control, -.has-warning .form-control:focus { - border: 2px solid #f39c12; -} -.has-warning .input-group-addon { - border-color: #f39c12; -} -.has-error .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label, -.has-error .form-control-feedback { - color: #e74c3c; -} -.has-error .form-control, -.has-error .form-control:focus { - border: 2px solid #e74c3c; -} -.has-error .input-group-addon { - border-color: #e74c3c; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label, -.has-success .form-control-feedback { - color: #18bc9c; -} -.has-success .form-control, -.has-success .form-control:focus { - border: 2px solid #18bc9c; -} -.has-success .input-group-addon { - border-color: #18bc9c; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - border-color: transparent; -} -.pager a, -.pager a:hover { - color: #fff; -} -.pager .disabled > a, -.pager .disabled > a:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - background-color: #3be6c4; -} -.close { - color: #fff; - text-decoration: none; - opacity: 0.4; -} -.close:hover, -.close:focus { - color: #fff; - opacity: 1; -} -.alert .alert-link { - color: #fff; - text-decoration: underline; -} -.progress { - height: 10px; - -webkit-box-shadow: none; - box-shadow: none; -} -.progress .progress-bar { - font-size: 10px; - line-height: 10px; -} -.well { - -webkit-box-shadow: none; - box-shadow: none; -} -a.list-group-item.active, -a.list-group-item.active:hover, -a.list-group-item.active:focus { - border-color: #ecf0f1; -} -a.list-group-item-success.active { - background-color: #18bc9c; -} -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - background-color: #15a589; -} -a.list-group-item-warning.active { - background-color: #f39c12; -} -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - background-color: #e08e0b; -} -a.list-group-item-danger.active { - background-color: #e74c3c; -} -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - background-color: #e43725; -} -.panel-default .close { - color: #2c3e50; -} -.modal .close { - color: #2c3e50; -} -.popover { - color: #2c3e50; -} diff --git a/static/css/test.css b/static/css/test.css deleted file mode 100644 index 589b626..0000000 --- a/static/css/test.css +++ /dev/null @@ -1,3 +0,0 @@ -.blubb { - border-width: 300px -} diff --git a/static/fonts/glyphicons-halflings-regular.eot b/static/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 4a4ca86..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.svg b/static/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index e3e2dc7..0000000 --- a/static/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/static/fonts/glyphicons-halflings-regular.ttf b/static/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index 67fa00b..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/static/fonts/glyphicons-halflings-regular.woff b/static/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index 8c54182..0000000 Binary files a/static/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/static/grauenhafte_werbung.gif b/static/grauenhafte_werbung.gif deleted file mode 100644 index 4df0eba..0000000 Binary files a/static/grauenhafte_werbung.gif and /dev/null differ diff --git a/static/tmp/autogen-PE46a7-4.css b/static/tmp/autogen-PE46a7-4.css deleted file mode 100644 index e4d6961..0000000 --- a/static/tmp/autogen-PE46a7-4.css +++ /dev/null @@ -1,3 +0,0 @@ -h2#hident4{color:#990 -}li{line-height:2em;font-size:16px -}#js-createCommentTextarea{width:400px;height:100px}.masthead,.navbar{background-color:rgb(27, 28, 29)}.navbar-default .navbar-nav > .active > a{background-color:transparent;border-bottom:2px solid white}.navbar-nav{padding-bottom:1em}.masthead{margin-top:-21px;color:white;text-align:center;min-height:500px}.masthead .header{max-width:700px;margin:0 auto;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif}.masthead h1.header{margin-top:1em;margin-bottom:0em;font-size:4.5em;line-height:1.2em;font-weight:normal}.masthead h2{font-size:1.7em;font-weight:normal}.masthead .btn{margin:1em 0}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px}.bs-callout p:last-child{margin-bottom:0}.bs-callout-info{border-left-color:#1b809e}.bs-docs-section{margin-bottom:60px}.bs-docs-section:last-child{margin-bottom:0}#message{margin-bottom:40px} \ No newline at end of file diff --git a/static/tmp/autogen-r3XaZuvR.js b/static/tmp/autogen-r3XaZuvR.js deleted file mode 100644 index 2c141f2..0000000 --- a/static/tmp/autogen-r3XaZuvR.js +++ /dev/null @@ -1 +0,0 @@ -document.getElementById("hident4").innerHTML="This text was added by the Javascript part of the homepage widget.";$(function(){$("#js-commentForm").submit(function(event){event.preventDefault();var message=$("#js-createCommentTextarea").val();if(!message){alert("Please fill out the comment form first.");return};$.ajax({url:'http://localhost:3000/comments',type:'POST',contentType:"application/json",data:JSON.stringify({message:message}),success:function(data){var newNode=$("
  • ");newNode.text(data.message);console.log(data);$("#js-commentList").append(newNode)},error:function(data){console.log("Error creating comment: "+data)}})})}) \ No newline at end of file diff --git a/templates/default-layout-wrapper.hamlet b/templates/default-layout-wrapper.hamlet deleted file mode 100644 index c58c944..0000000 --- a/templates/default-layout-wrapper.hamlet +++ /dev/null @@ -1,41 +0,0 @@ -$newline never -\ -\ -\ -\ -\ - - - - - #{pageTitle pc} - <meta name="description" content=""> - <meta name="author" content=""> - - <meta name="viewport" content="width=device-width,initial-scale=1"> - - ^{pageHead pc} - - <script> - /* The `defaultCsrfMiddleware` Middleware added in Foundation.hs adds a CSRF token to the request cookies. */ - /* AJAX requests should add that token to a header to be validated by the server. */ - /* See the CSRF documentation in the Yesod.Core.Handler module of the yesod-core package for details. */ - var csrfHeaderName = "#{TE.decodeUtf8 $ CI.foldedCase defaultCsrfHeaderName}"; - - var csrfCookieName = "#{TE.decodeUtf8 defaultCsrfCookieName}"; - var csrfToken = Cookies.get(csrfCookieName); - - - if (csrfToken) { - \ $.ajaxPrefilter(function( options, originalOptions, jqXHR ) { - \ if (!options.crossDomain) { - \ jqXHR.setRequestHeader(csrfHeaderName, csrfToken); - \ } - \ }); - } - - <script> - document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/,'js'); - <body> - ^{pageBody pc} - diff --git a/templates/default-layout.hamlet b/templates/default-layout.hamlet deleted file mode 100644 index 5dc8a02..0000000 --- a/templates/default-layout.hamlet +++ /dev/null @@ -1,6 +0,0 @@ -<!-- Page Contents --> - -<div .container> - <div .ad> - <img src=@{AdR}> - ^{widget} diff --git a/templates/default-layout.lucius b/templates/default-layout.lucius deleted file mode 100644 index 0216c1e..0000000 --- a/templates/default-layout.lucius +++ /dev/null @@ -1,35 +0,0 @@ -body { - font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif; -} - - -.masthead .header { - max-width: 700px; - margin: 0 auto; -} - -.masthead h1.header { - margin-top: 1em; - margin-bottom: 0em; - font-size: 4.5em; - line-height: 1.2em; - font-weight: normal; - } - -.masthead h2 { - font-size: 1.7em; - font-weight: normal; -} - -aside, -.ad { - width: 25%; - padding-left: 15px; - margin-left: 15px; - float: right; -} - -img { - max-width: 100%; - max-height: 100%; -} diff --git a/templates/homepage.hamlet b/templates/homepage.hamlet deleted file mode 100644 index 29a4793..0000000 --- a/templates/homepage.hamlet +++ /dev/null @@ -1,10 +0,0 @@ -<div .masthead> - <h1 .header> - OWO Geländespiel - -<div .points .tutor> - <h1 #Tutors>Tutoren: #{tutorP} - -<div .points .erstie> - <h1 #Ersties>Ersties: #{erstieP} - diff --git a/templates/homepage.lucius b/templates/homepage.lucius deleted file mode 100644 index c6b7d9c..0000000 --- a/templates/homepage.lucius +++ /dev/null @@ -1,20 +0,0 @@ -li { - line-height: 2em; - font-size: 16px -} -.points { - border-radius: 25px; - font-weight: bold; - margin: auto; - max-width: 50%; - display: flex; - justify-content: center; - align-items: center; - margin-top: 30px; -} -.tutor { - background-color: #f68afc; -} -.erstie { - background-color: #00FF00; -} diff --git a/templates/profile.hamlet b/templates/profile.hamlet deleted file mode 100644 index 2420de6..0000000 --- a/templates/profile.hamlet +++ /dev/null @@ -1,10 +0,0 @@ -<div .ui.container> - - <h1> - Access granted! - - <p> - This page is protected and access is allowed only for authenticated users. - - <p> - Your data is protected with us <strong><span class="username">#{userIdent user}</span></strong>! diff --git a/templates/round.hamlet b/templates/round.hamlet deleted file mode 100644 index ee5ed1a..0000000 --- a/templates/round.hamlet +++ /dev/null @@ -1,9 +0,0 @@ -<div .masthead> - <h1 .header> - OwO Geländespiel Station #{station} Round #{roundNumber} - -<div .container> - <div .form> - <form method=post action=@{StationRoundR stationIdentifier roundNumber} enctype=#{roundFormEnctype}> - ^{roundFormWidget} - <button> Submit diff --git a/templates/round.lucious b/templates/round.lucious deleted file mode 100644 index 5cb9d44..0000000 --- a/templates/round.lucious +++ /dev/null @@ -1,5 +0,0 @@ -.form { - display: flex; - justify-content: center; - align-items: center; -} diff --git a/templates/station.hamlet b/templates/station.hamlet deleted file mode 100644 index 41807ae..0000000 --- a/templates/station.hamlet +++ /dev/null @@ -1,9 +0,0 @@ -<div .masthead> - <h1 .header> - OwO Geländespiel Station #{station} - -<div .container .form> - <ul> - $forall round <- rounds - <li> - <a href=@{StationRoundR stationIdentifier (roundNumber round)}> #{roundNumber round} diff --git a/templates/station.lucious b/templates/station.lucious deleted file mode 100644 index 5cb9d44..0000000 --- a/templates/station.lucious +++ /dev/null @@ -1,5 +0,0 @@ -.form { - display: flex; - justify-content: center; - align-items: center; -} diff --git a/test/Handler/CommonSpec.hs b/test/Handler/CommonSpec.hs deleted file mode 100644 index e1920fb..0000000 --- a/test/Handler/CommonSpec.hs +++ /dev/null @@ -1,17 +0,0 @@ -module Handler.CommonSpec (spec) where - -import TestImport - -spec :: Spec -spec = withApp $ do - describe "robots.txt" $ do - it "gives a 200" $ do - get RobotsR - statusIs 200 - it "has correct User-agent" $ do - get RobotsR - bodyContains "User-agent: *" - describe "favicon.ico" $ do - it "gives a 200" $ do - get FaviconR - statusIs 200 diff --git a/test/Handler/HomeSpec.hs b/test/Handler/HomeSpec.hs deleted file mode 100644 index 86e1de8..0000000 --- a/test/Handler/HomeSpec.hs +++ /dev/null @@ -1,37 +0,0 @@ -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -module Handler.HomeSpec (spec) where - -import TestImport - -spec :: Spec -spec = it "useless test, so it doesn't annoy me for now" True ---spec :: Spec ---spec = withApp $ do --- --- describe "Homepage" $ do --- it "loads the index and checks it looks right" $ do --- get HomeR --- statusIs 200 --- htmlAnyContain "h1" "a modern framework for blazing fast websites" --- --- request $ do --- setMethod "POST" --- setUrl HomeR --- addToken --- fileByLabelExact "Choose a file" "test/Spec.hs" "text/plain" -- talk about self-reference --- byLabelExact "What's on the file?" "Some Content" --- --- statusIs 200 --- -- more debugging printBody --- htmlAllContain ".upload-response" "text/plain" --- htmlAllContain ".upload-response" "Some Content" --- --- -- This is a simple example of using a database access in a test. The --- -- test will succeed for a fresh scaffolded site with an empty database, --- -- but will fail on an existing database with a non-empty user table. --- it "leaves the user table empty" $ do --- get HomeR --- statusIs 200 --- users <- runDB $ selectList ([] :: [Filter User]) [] --- assertEq "user table empty" 0 $ length users diff --git a/test/Spec.hs b/test/Spec.hs deleted file mode 100644 index a824f8c..0000000 --- a/test/Spec.hs +++ /dev/null @@ -1 +0,0 @@ -{-# OPTIONS_GHC -F -pgmF hspec-discover #-} diff --git a/test/TestImport.hs b/test/TestImport.hs deleted file mode 100644 index aae7fab..0000000 --- a/test/TestImport.hs +++ /dev/null @@ -1,104 +0,0 @@ -{-# LANGUAGE QuasiQuotes #-} -{-# LANGUAGE NoImplicitPrelude #-} -{-# LANGUAGE OverloadedStrings #-} -module TestImport - ( module TestImport - , module X - ) where - -import Application (makeFoundation, makeLogWare) -import ClassyPrelude as X hiding (delete, deleteBy, Handler) -import Database.Persist as X hiding (get) -import Database.Persist.Sql (SqlPersistM, runSqlPersistMPool, rawExecute, rawSql, unSingle) -import Database.Persist.SqlBackend (getEscapedRawName) -import Foundation as X -import Model as X -import Test.Hspec as X -import Yesod.Default.Config2 (useEnv, loadYamlSettings) -import Yesod.Auth as X -import Yesod.Test as X -import Yesod.Core.Unsafe (fakeHandlerGetLogger) - --- Wiping the database -import Database.Persist.Sqlite (sqlDatabase, mkSqliteConnectionInfo, fkEnabled, createSqlitePoolFromInfo) -import Control.Monad.Logger (runLoggingT) -import Lens.Micro (set) -import Settings (appDatabaseConf) -import Yesod.Core (messageLoggerSource) - -runDB :: SqlPersistM a -> YesodExample App a -runDB query = do - pool <- fmap appConnPool getTestYesod - liftIO $ runSqlPersistMPool query pool - -runHandler :: Handler a -> YesodExample App a -runHandler handler = do - app <- getTestYesod - fakeHandlerGetLogger appLogger app handler - -withApp :: SpecWith (TestApp App) -> Spec -withApp = before $ do - settings <- loadYamlSettings - ["config/test-settings.yml", "config/settings.yml"] - [] - useEnv - foundation <- makeFoundation settings - wipeDB foundation - logWare <- liftIO $ makeLogWare foundation - return (foundation, logWare) - --- This function will truncate all of the tables in your database. --- 'withApp' calls it before each test, creating a clean environment for each --- spec to run in. -wipeDB :: App -> IO () -wipeDB app = do - -- In order to wipe the database, we need to use a connection which has - -- foreign key checks disabled. Foreign key checks are enabled or disabled - -- per connection, so this won't effect queries outside this function. - -- - -- Aside: foreign key checks are enabled by persistent-sqlite, as of - -- version 2.6.2, unless they are explicitly disabled in the - -- SqliteConnectionInfo. - - let logFunc = messageLoggerSource app (appLogger app) - - let dbName = sqlDatabase $ appDatabaseConf $ appSettings app - connInfo = set fkEnabled False $ mkSqliteConnectionInfo dbName - - pool <- runLoggingT (createSqlitePoolFromInfo connInfo 1) logFunc - - flip runSqlPersistMPool pool $ do - tables <- getTables - sqlBackend <- ask - let queries = map (\t -> "DELETE FROM " ++ (getEscapedRawName t sqlBackend)) tables - forM_ queries (\q -> rawExecute q []) - -getTables :: DB [Text] -getTables = do - tables <- rawSql "SELECT name FROM sqlite_master WHERE type = 'table';" [] - return (fmap unSingle tables) - --- | Authenticate as a user. This relies on the `auth-dummy-login: true` flag --- being set in test-settings.yaml, which enables dummy authentication in --- Foundation.hs --- authenticateAs :: Entity User -> YesodExample App () --- authenticateAs (Entity _ u) = do --- request $ do --- setMethod "POST" --- addPostParam "ident" $ userIdent u --- setUrl $ AuthR $ PluginR "dummy" [] --- --- -- | Create a user. The dummy email entry helps to confirm that foreign-key --- -- checking is switched off in wipeDB for those database backends which need it. --- createUser :: Text -> YesodExample App (Entity User) --- createUser ident = runDB $ do --- user <- insertEntity User --- { userIdent = ident --- , userPassword = Nothing --- } --- _ <- insert Email --- { emailEmail = ident --- , emailUserId = Just $ entityKey user --- , emailVerkey = Nothing --- } --- return user