├── .gitignore
├── .ruby-version
├── .travis.yml
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
└── hyperloop
├── hyperloop.gemspec
├── lib
├── hyperloop.rb
└── hyperloop
│ ├── application.rb
│ ├── cli.rb
│ ├── generators
│ ├── site.rb
│ └── site
│ │ ├── Gemfile
│ │ ├── _partial.html.erb
│ │ ├── about.html.erb
│ │ ├── app.css
│ │ ├── app.js
│ │ ├── application.html.erb
│ │ ├── bootstrap.css
│ │ ├── config.ru
│ │ ├── current-time.coffee
│ │ ├── index.html.erb
│ │ ├── jquery.js
│ │ ├── main.scss
│ │ └── socool.jpg
│ ├── response.rb
│ ├── version.rb
│ ├── view.rb
│ └── view
│ ├── registry.rb
│ └── scope.rb
└── spec
├── application_spec.rb
├── fixtures
├── assets
│ ├── app
│ │ ├── assets
│ │ │ ├── images
│ │ │ │ ├── my-gif.gif
│ │ │ │ ├── my-jpg.jpg
│ │ │ │ └── my-png.png
│ │ │ ├── javascripts
│ │ │ │ ├── app.js
│ │ │ │ └── my-scripts.coffee
│ │ │ ├── shouldfail
│ │ │ │ └── shouldfail.css
│ │ │ └── stylesheets
│ │ │ │ ├── app.css
│ │ │ │ └── my-styles.scss
│ │ └── views
│ │ │ ├── index.html.erb
│ │ │ └── layouts
│ │ │ └── application.html.erb
│ └── vendor
│ │ └── assets
│ │ ├── javascripts
│ │ └── vendored.js
│ │ └── stylesheets
│ │ └── vendored.css
├── erb
│ └── app
│ │ └── views
│ │ ├── about.html.erb
│ │ └── index.html.erb
├── layouts
│ └── app
│ │ └── views
│ │ ├── index.html.erb
│ │ ├── layouts
│ │ └── application.html.erb
│ │ └── subdir
│ │ └── index.html.erb
├── partials
│ └── app
│ │ └── views
│ │ ├── index.html.erb
│ │ ├── layouts
│ │ └── application.html.erb
│ │ └── subdir
│ │ ├── _partial.html.erb
│ │ ├── index.html.erb
│ │ └── nonroot.html.erb
├── simple
│ └── app
│ │ └── views
│ │ ├── about.html
│ │ └── index.html
└── subdirectories
│ └── app
│ └── views
│ ├── about.html
│ ├── index.html
│ └── subdir1
│ ├── index.html
│ └── kanye.html
├── response_spec.rb
├── spec_helper.rb
├── view
├── registry_spec.rb
└── scope_spec.rb
└── view_spec.rb
/.gitignore:
--------------------------------------------------------------------------------
1 | *.gem
2 | *.rbc
3 | .bundle
4 | .config
5 | .yardoc
6 | Gemfile.lock
7 | InstalledFiles
8 | _yardoc
9 | coverage
10 | doc/
11 | lib/bundler/man
12 | pkg
13 | rdoc
14 | spec/reports
15 | test/tmp
16 | test/version_tmp
17 | tmp
18 |
--------------------------------------------------------------------------------
/.ruby-version:
--------------------------------------------------------------------------------
1 | 2.0.0-p247
2 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: ruby
2 | rvm:
3 | - 2.0.0
4 | - 1.9.3
5 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | # Specify your gem's dependencies in hyperloop.gemspec
4 | gemspec
5 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013 Jake Boxer
2 |
3 | MIT License
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hyperloop [](https://travis-ci.org/jakeboxer/hyperloop)
2 |
3 | Hyperloop is a framework that lets you make static websites with a technology stack familiar to Rails programmers.
4 |
5 | Before you keep reading, let's get one thing out of the way:
6 |
7 | ### If you think your website might need a database, do not use Hyperloop.
8 |
9 | I came up with the idea for Hyperloop after hearing one too many experienced web developers say "I don't even know how
10 | to set up a regular website anymore."
11 |
12 | With Hyperloop, you can create a new site just like you would with Rails. You can write ERB and Sass and CoffeeScript
13 | and all that other good stuff. You can use layouts and partials and deploy to Heroku.
14 |
15 | Basically, you can do all the stuff you're used to with Rails. On top of that, you don't have to type any of the magic
16 | incantations that just aren't necessary in a static site. You don't have to set up routes. You don't have to make
17 | controllers with a method for every view. You don't have to think about environments or tests or schemas or helpers or
18 | any of the other boilerplate directories/files that would clutter up a static site being shoehorned into a Rails app.
19 |
20 | ## Getting Started
21 |
22 | 1. Install Hyperloop and Thin at the command prompt if you haven't yet:
23 |
24 | gem install hyperloop
25 | gem install thin
26 |
27 | 2. At the command prompt, create a new Hyperloop site:
28 |
29 | hyperloop new mysite
30 |
31 | where "mysite" is the site name.
32 |
33 | 3. Change directory to `mysite` and start the web server:
34 |
35 | cd mysite
36 | thin start
37 |
38 | 4. Go to [http://localhost:3000/](http://localhost:3000/) and you'll see your brand new website!
39 |
40 | ## Structure
41 |
42 | ### Layout
43 |
44 | Your layout is in `app/views/layouts/application.html.erb`.
45 |
46 | ### Views
47 |
48 | Your site root is in `app/views/index.html.erb`.
49 |
50 | If you create `app/views/hello.html.erb`, you'll be able to get to it by going to
51 | [http://localhost:3000/hello/](http://localhost:3000/hello/).
52 |
53 | ### Subdirectories
54 |
55 | You can nest views in subdirectories. If you create the following files, the following URLs will work:
56 |
57 | - `app/views/people/ted_nyman.html.erb` will make [http://localhost:3000/people/ted_nyman/](http://localhost:3000/people/ted_nyman/) work.
58 | - `app/views/people/index.html.erb` will make [http://localhost:3000/people/](http://localhost:3000/people/) work.
59 | - `app/views/projects/2013/yeezus.html.erb` will make [http://localhost:3000/projects/2013/yeezus/](http://localhost:3000/projects/2013/yeezus/) work.
60 |
61 | ### Partials
62 |
63 | If you create `app/views/_some_section.html.erb`, you'll be able to load it as a partial almost like you would in Rails:
64 |
65 | ``` ruby
66 | <%= render "some_section" %>
67 | ```
68 |
69 | Note: In Rails, it's `<%= render :partial => "some_section" %>`, since there are other things you could want to render
70 | besides a partial. In Hyperloop, there aren't, so the options hash isn't necessary.
71 |
72 | ### CSS, SCSS, Sass, JavaScript, and CoffeeScript
73 |
74 | If you create some files like:
75 |
76 | ```
77 | app/assets/stylesheets/bootstrap.css
78 | app/assets/stylesheets/stylez1.css
79 | app/assets/stylesheets/stylez2.scss
80 | app/assets/javascripts/jquery.js
81 | app/assets/javascripts/scriptz1.js
82 | app/assets/javascripts/scriptz2.coffee
83 | ```
84 |
85 | They'll be included in all your views, so long as you have these two tags:
86 |
87 | ``` html
88 |
89 |
90 |
91 |
92 |
93 | ```
94 |
95 | somewhere in your layout. All your CSS and JS assets belong in these folders, including vendored ones like jQuery and Bootstrap.
96 |
97 | ### Images
98 |
99 | If you create `app/assets/images/photo.jpg`, you'll be able to show it in a view with ` `.
100 |
101 | ## Contributing
102 |
103 | 1. Fork it
104 | 2. Create your feature branch (`git checkout -b my-new-feature`)
105 | 3. Commit your changes (`git commit -am 'Add some feature'`)
106 | 4. Push to the branch (`git push origin my-new-feature`)
107 | 5. Create new Pull Request
108 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | require "bundler/gem_tasks"
2 | require "rspec/core/rake_task"
3 |
4 | RSpec::Core::RakeTask.new(:spec)
5 |
6 | task :default => :spec
7 |
--------------------------------------------------------------------------------
/bin/hyperloop:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
4 | $LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
5 | require "hyperloop/cli"
6 |
7 | Hyperloop::CLI.start
8 |
--------------------------------------------------------------------------------
/hyperloop.gemspec:
--------------------------------------------------------------------------------
1 | # coding: utf-8
2 | lib = File.expand_path("../lib", __FILE__)
3 | $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4 | require "hyperloop/version"
5 |
6 | Gem::Specification.new do |spec|
7 | spec.name = "hyperloop"
8 | spec.version = Hyperloop::VERSION
9 | spec.authors = ["Jake Boxer"]
10 | spec.email = ["jake@github.com"]
11 | spec.description = %q{Hyperloop lets you make simple websites with a technology stack familiar to Rails programmers.}
12 | spec.summary = %q{Make simple websites with Rails conventions and conveniences.}
13 | spec.homepage = ""
14 | spec.license = "MIT"
15 |
16 | spec.files = `git ls-files`.split($/)
17 | spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18 | spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19 | spec.require_paths = ["lib"]
20 |
21 | spec.add_dependency "coffee-script", "~> 2.2.0"
22 | spec.add_dependency "rack", "~> 1.5"
23 | spec.add_dependency "sass", "~> 3.2.12"
24 | spec.add_dependency "sprockets", "~> 2.10.0"
25 | spec.add_dependency "thor", "~> 0.18.1"
26 | spec.add_dependency "tilt", "~> 1.4.1"
27 | spec.add_dependency "yui-compressor", "~> 0.12.0"
28 |
29 | spec.add_development_dependency "bundler", "~> 1.3"
30 | spec.add_development_dependency "nokogiri", "~> 1.6.0"
31 | spec.add_development_dependency "pry"
32 | spec.add_development_dependency "pry-debugger"
33 | spec.add_development_dependency "rake"
34 | spec.add_development_dependency "rspec", "~> 2.14"
35 | end
36 |
--------------------------------------------------------------------------------
/lib/hyperloop.rb:
--------------------------------------------------------------------------------
1 | require "hyperloop/application"
2 | require "hyperloop/response"
3 | require "hyperloop/version"
4 | require "hyperloop/view"
5 | require "hyperloop/view/registry"
6 | require "hyperloop/view/scope"
7 |
8 | module Hyperloop
9 | end
10 |
--------------------------------------------------------------------------------
/lib/hyperloop/application.rb:
--------------------------------------------------------------------------------
1 | require "rack"
2 | require "sprockets"
3 | require "yui/compressor"
4 |
5 | module Hyperloop
6 | class Application
7 | include Rack::Utils
8 |
9 | def initialize(root=nil)
10 | @root = root
11 | end
12 |
13 | # Rack call interface.
14 | def call(env)
15 | request = Rack::Request.new(env)
16 | response = Response.new
17 |
18 | if self.class.asset_path?(request.path) && asset = assets[normalized_asset_path(request.path)]
19 | # If the path is for an asset, find the specified asset and use its data
20 | # as the response body.
21 | response["Content-Type"] = asset.content_type
22 | response.write(asset.source)
23 | elsif view = view_registry.find_template_view(normalized_request_path(request.path))
24 | # If there's a view at the path, use its data as the response body.
25 | data = view.render(request)
26 | response.write(data)
27 | else
28 | # If there's no view at the path, 404.
29 | response.status = 404
30 | end
31 |
32 | response.finish
33 | end
34 |
35 | private
36 |
37 | # Internal: Is the specified path for assets?
38 | #
39 | # path - Path to check.
40 | #
41 | # Returns a boolean.
42 | def self.asset_path?(path)
43 | path =~ /^\/assets\/(images|javascripts|stylesheets)\//
44 | end
45 |
46 | # Internal: The sprockets environment for the app.
47 | #
48 | # Returns a Sprockets::Environment.
49 | def assets
50 | @assets = nil unless production?
51 |
52 | @assets ||= Sprockets::Environment.new(@root) do |env|
53 | env.version = ENV["RACK_ENV"]
54 |
55 | env.append_path(File.join("app", "assets"))
56 | env.append_path(File.join("vendor", "assets"))
57 |
58 | # compress everything in production
59 | if production?
60 | env.js_compressor = YUI::JavaScriptCompressor.new(:munge => true)
61 | env.css_compressor = YUI::CssCompressor.new
62 | end
63 | end
64 | end
65 |
66 | # Internal: Get a normalized version of the specified asset path.
67 | #
68 | # path - Asset path to normalize
69 | #
70 | # Returns a string.
71 | def normalized_asset_path(path)
72 | path.sub(/^\/assets\//, "")
73 | end
74 |
75 | # Internal: Get a normalized version of the specified request path.
76 | #
77 | # path - Request path to normalize
78 | #
79 | # Returns a string.
80 | def normalized_request_path(path)
81 | if path == "/"
82 | path
83 | else
84 | path.chomp("/")
85 | end
86 | end
87 |
88 | # Internal: Are we running in production mode?
89 | #
90 | # Returns a boolean.
91 | def production?
92 | ENV["RACK_ENV"] == "production"
93 | end
94 |
95 | # Internal: The view registry to use for the app.
96 | #
97 | # Returns a Hyperloop::View::Registry
98 | def view_registry
99 | @view_registry = nil unless production?
100 | @view_registry ||= View::Registry.new(@root)
101 | end
102 | end
103 | end
104 |
--------------------------------------------------------------------------------
/lib/hyperloop/cli.rb:
--------------------------------------------------------------------------------
1 | require "hyperloop/generators/site"
2 | require "thor"
3 |
4 | module Hyperloop
5 | class CLI < Thor
6 | desc "new SITENAME", "Create a new Hyperloop site. \"hyperloop new my_site\" creates a new site called MySite in \"./my_site\""
7 | def new(name)
8 | Hyperloop::Generators::Site.start([name])
9 | end
10 | end
11 | end
12 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site.rb:
--------------------------------------------------------------------------------
1 | require "thor/group"
2 | require "hyperloop/version"
3 |
4 | module Hyperloop
5 | module Generators
6 | class Site < Thor::Group
7 | include Thor::Actions
8 |
9 | argument :name, :type => :string
10 |
11 | def self.source_root
12 | File.join(File.dirname(__FILE__), "site")
13 | end
14 |
15 | def create_directories
16 | empty_directory(name)
17 | empty_directory(File.join(name, "app"))
18 | empty_directory(File.join(name, "app", "assets"))
19 | empty_directory(File.join(name, "app", "assets", "images"))
20 | empty_directory(File.join(name, "app", "assets", "javascripts"))
21 | empty_directory(File.join(name, "app", "assets", "stylesheets"))
22 | empty_directory(File.join(name, "app", "views"))
23 | empty_directory(File.join(name, "app", "views", "layouts"))
24 | empty_directory(File.join(name, "vendor"))
25 | empty_directory(File.join(name, "vendor", "assets"))
26 | empty_directory(File.join(name, "vendor", "assets", "javascripts"))
27 | empty_directory(File.join(name, "vendor", "assets", "stylesheets"))
28 | end
29 |
30 | def copy_files
31 | template("config.ru", File.join(name, "config.ru"))
32 | template("Gemfile", File.join(name, "Gemfile"))
33 | copy_file("socool.jpg", File.join(name, "app", "assets", "images", "socool.jpg"))
34 | template("app.js", File.join(name, "app", "assets", "javascripts", "app.js"))
35 | template("current-time.coffee", File.join(name, "app", "assets", "javascripts", "current-time.coffee"))
36 | template("app.css", File.join(name, "app", "assets", "stylesheets", "app.css"))
37 | template("main.scss", File.join(name, "app", "assets", "stylesheets", "main.scss"))
38 | template("application.html.erb", File.join(name, "app", "views", "layouts", "application.html.erb"))
39 | template("index.html.erb", File.join(name, "app", "views", "index.html.erb"))
40 | template("about.html.erb", File.join(name, "app", "views", "about.html.erb"))
41 | template("_partial.html.erb", File.join(name, "app", "views", "_partial.html.erb"))
42 | template("jquery.js", File.join(name, "vendor", "assets", "javascripts", "jquery.js"))
43 | template("bootstrap.css", File.join(name, "vendor", "assets", "stylesheets", "bootstrap.css"))
44 | end
45 | end
46 | end
47 | end
48 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "hyperloop", "<%= Hyperloop::VERSION %>"
4 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/_partial.html.erb:
--------------------------------------------------------------------------------
1 |
Here's a partial! You know it's a partial because the filename starts with an underscore.
2 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/about.html.erb:
--------------------------------------------------------------------------------
1 | About
2 |
3 | This page is accessible by making a request to /about from your browser.
4 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/app.css:
--------------------------------------------------------------------------------
1 | //= require_tree ../../../vendor/assets/stylesheets
2 | //= require_tree .
3 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/app.js:
--------------------------------------------------------------------------------
1 | //= require_tree ../../../vendor/assets/javascripts
2 | //= require_tree .
3 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <%= name.capitalize %>
5 |
6 |
7 |
8 |
9 |
10 | Welcome to <%= name.capitalize %>!
11 |
12 |
13 |
17 |
18 |
19 | <%%= yield %>
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/bootstrap.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap v3.0.0
3 | *
4 | * Copyright 2013 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world by @mdo and @fat.
9 | */
10 |
11 | /*! normalize.css v2.1.0 | MIT License | git.io/normalize */
12 |
13 | article,
14 | aside,
15 | details,
16 | figcaption,
17 | figure,
18 | footer,
19 | header,
20 | hgroup,
21 | main,
22 | nav,
23 | section,
24 | summary {
25 | display: block;
26 | }
27 |
28 | audio,
29 | canvas,
30 | video {
31 | display: inline-block;
32 | }
33 |
34 | audio:not([controls]) {
35 | display: none;
36 | height: 0;
37 | }
38 |
39 | [hidden] {
40 | display: none;
41 | }
42 |
43 | html {
44 | font-family: sans-serif;
45 | -webkit-text-size-adjust: 100%;
46 | -ms-text-size-adjust: 100%;
47 | }
48 |
49 | body {
50 | margin: 0;
51 | }
52 |
53 | a:focus {
54 | outline: thin dotted;
55 | }
56 |
57 | a:active,
58 | a:hover {
59 | outline: 0;
60 | }
61 |
62 | h1 {
63 | margin: 0.67em 0;
64 | font-size: 2em;
65 | }
66 |
67 | abbr[title] {
68 | border-bottom: 1px dotted;
69 | }
70 |
71 | b,
72 | strong {
73 | font-weight: bold;
74 | }
75 |
76 | dfn {
77 | font-style: italic;
78 | }
79 |
80 | hr {
81 | height: 0;
82 | -moz-box-sizing: content-box;
83 | box-sizing: content-box;
84 | }
85 |
86 | mark {
87 | color: #000;
88 | background: #ff0;
89 | }
90 |
91 | code,
92 | kbd,
93 | pre,
94 | samp {
95 | font-family: monospace, serif;
96 | font-size: 1em;
97 | }
98 |
99 | pre {
100 | white-space: pre-wrap;
101 | }
102 |
103 | q {
104 | quotes: "\201C" "\201D" "\2018" "\2019";
105 | }
106 |
107 | small {
108 | font-size: 80%;
109 | }
110 |
111 | sub,
112 | sup {
113 | position: relative;
114 | font-size: 75%;
115 | line-height: 0;
116 | vertical-align: baseline;
117 | }
118 |
119 | sup {
120 | top: -0.5em;
121 | }
122 |
123 | sub {
124 | bottom: -0.25em;
125 | }
126 |
127 | img {
128 | border: 0;
129 | }
130 |
131 | svg:not(:root) {
132 | overflow: hidden;
133 | }
134 |
135 | figure {
136 | margin: 0;
137 | }
138 |
139 | fieldset {
140 | padding: 0.35em 0.625em 0.75em;
141 | margin: 0 2px;
142 | border: 1px solid #c0c0c0;
143 | }
144 |
145 | legend {
146 | padding: 0;
147 | border: 0;
148 | }
149 |
150 | button,
151 | input,
152 | select,
153 | textarea {
154 | margin: 0;
155 | font-family: inherit;
156 | font-size: 100%;
157 | }
158 |
159 | button,
160 | input {
161 | line-height: normal;
162 | }
163 |
164 | button,
165 | select {
166 | text-transform: none;
167 | }
168 |
169 | button,
170 | html input[type="button"],
171 | input[type="reset"],
172 | input[type="submit"] {
173 | cursor: pointer;
174 | -webkit-appearance: button;
175 | }
176 |
177 | button[disabled],
178 | html input[disabled] {
179 | cursor: default;
180 | }
181 |
182 | input[type="checkbox"],
183 | input[type="radio"] {
184 | padding: 0;
185 | box-sizing: border-box;
186 | }
187 |
188 | input[type="search"] {
189 | -webkit-box-sizing: content-box;
190 | -moz-box-sizing: content-box;
191 | box-sizing: content-box;
192 | -webkit-appearance: textfield;
193 | }
194 |
195 | input[type="search"]::-webkit-search-cancel-button,
196 | input[type="search"]::-webkit-search-decoration {
197 | -webkit-appearance: none;
198 | }
199 |
200 | button::-moz-focus-inner,
201 | input::-moz-focus-inner {
202 | padding: 0;
203 | border: 0;
204 | }
205 |
206 | textarea {
207 | overflow: auto;
208 | vertical-align: top;
209 | }
210 |
211 | table {
212 | border-collapse: collapse;
213 | border-spacing: 0;
214 | }
215 |
216 | @media print {
217 | * {
218 | color: #000 !important;
219 | text-shadow: none !important;
220 | background: transparent !important;
221 | box-shadow: none !important;
222 | }
223 | a,
224 | a:visited {
225 | text-decoration: underline;
226 | }
227 | a[href]:after {
228 | content: " (" attr(href) ")";
229 | }
230 | abbr[title]:after {
231 | content: " (" attr(title) ")";
232 | }
233 | .ir a:after,
234 | a[href^="javascript:"]:after,
235 | a[href^="#"]:after {
236 | content: "";
237 | }
238 | pre,
239 | blockquote {
240 | border: 1px solid #999;
241 | page-break-inside: avoid;
242 | }
243 | thead {
244 | display: table-header-group;
245 | }
246 | tr,
247 | img {
248 | page-break-inside: avoid;
249 | }
250 | img {
251 | max-width: 100% !important;
252 | }
253 | @page {
254 | margin: 2cm .5cm;
255 | }
256 | p,
257 | h2,
258 | h3 {
259 | orphans: 3;
260 | widows: 3;
261 | }
262 | h2,
263 | h3 {
264 | page-break-after: avoid;
265 | }
266 | .navbar {
267 | display: none;
268 | }
269 | .table td,
270 | .table th {
271 | background-color: #fff !important;
272 | }
273 | .btn > .caret,
274 | .dropup > .btn > .caret {
275 | border-top-color: #000 !important;
276 | }
277 | .label {
278 | border: 1px solid #000;
279 | }
280 | .table {
281 | border-collapse: collapse !important;
282 | }
283 | .table-bordered th,
284 | .table-bordered td {
285 | border: 1px solid #ddd !important;
286 | }
287 | }
288 |
289 | *,
290 | *:before,
291 | *:after {
292 | -webkit-box-sizing: border-box;
293 | -moz-box-sizing: border-box;
294 | box-sizing: border-box;
295 | }
296 |
297 | html {
298 | font-size: 62.5%;
299 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
300 | }
301 |
302 | body {
303 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
304 | font-size: 14px;
305 | line-height: 1.428571429;
306 | color: #333333;
307 | background-color: #ffffff;
308 | }
309 |
310 | input,
311 | button,
312 | select,
313 | textarea {
314 | font-family: inherit;
315 | font-size: inherit;
316 | line-height: inherit;
317 | }
318 |
319 | button,
320 | input,
321 | select[multiple],
322 | textarea {
323 | background-image: none;
324 | }
325 |
326 | a {
327 | color: #428bca;
328 | text-decoration: none;
329 | }
330 |
331 | a:hover,
332 | a:focus {
333 | color: #2a6496;
334 | text-decoration: underline;
335 | }
336 |
337 | a:focus {
338 | outline: thin dotted #333;
339 | outline: 5px auto -webkit-focus-ring-color;
340 | outline-offset: -2px;
341 | }
342 |
343 | img {
344 | vertical-align: middle;
345 | }
346 |
347 | .img-responsive {
348 | display: block;
349 | height: auto;
350 | max-width: 100%;
351 | }
352 |
353 | .img-rounded {
354 | border-radius: 6px;
355 | }
356 |
357 | .img-thumbnail {
358 | display: inline-block;
359 | height: auto;
360 | max-width: 100%;
361 | padding: 4px;
362 | line-height: 1.428571429;
363 | background-color: #ffffff;
364 | border: 1px solid #dddddd;
365 | border-radius: 4px;
366 | -webkit-transition: all 0.2s ease-in-out;
367 | transition: all 0.2s ease-in-out;
368 | }
369 |
370 | .img-circle {
371 | border-radius: 50%;
372 | }
373 |
374 | hr {
375 | margin-top: 20px;
376 | margin-bottom: 20px;
377 | border: 0;
378 | border-top: 1px solid #eeeeee;
379 | }
380 |
381 | .sr-only {
382 | position: absolute;
383 | width: 1px;
384 | height: 1px;
385 | padding: 0;
386 | margin: -1px;
387 | overflow: hidden;
388 | clip: rect(0 0 0 0);
389 | border: 0;
390 | }
391 |
392 | p {
393 | margin: 0 0 10px;
394 | }
395 |
396 | .lead {
397 | margin-bottom: 20px;
398 | font-size: 16.099999999999998px;
399 | font-weight: 200;
400 | line-height: 1.4;
401 | }
402 |
403 | @media (min-width: 768px) {
404 | .lead {
405 | font-size: 21px;
406 | }
407 | }
408 |
409 | small {
410 | font-size: 85%;
411 | }
412 |
413 | cite {
414 | font-style: normal;
415 | }
416 |
417 | .text-muted {
418 | color: #999999;
419 | }
420 |
421 | .text-primary {
422 | color: #428bca;
423 | }
424 |
425 | .text-warning {
426 | color: #c09853;
427 | }
428 |
429 | .text-danger {
430 | color: #b94a48;
431 | }
432 |
433 | .text-success {
434 | color: #468847;
435 | }
436 |
437 | .text-info {
438 | color: #3a87ad;
439 | }
440 |
441 | .text-left {
442 | text-align: left;
443 | }
444 |
445 | .text-right {
446 | text-align: right;
447 | }
448 |
449 | .text-center {
450 | text-align: center;
451 | }
452 |
453 | h1,
454 | h2,
455 | h3,
456 | h4,
457 | h5,
458 | h6,
459 | .h1,
460 | .h2,
461 | .h3,
462 | .h4,
463 | .h5,
464 | .h6 {
465 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
466 | font-weight: 500;
467 | line-height: 1.1;
468 | }
469 |
470 | h1 small,
471 | h2 small,
472 | h3 small,
473 | h4 small,
474 | h5 small,
475 | h6 small,
476 | .h1 small,
477 | .h2 small,
478 | .h3 small,
479 | .h4 small,
480 | .h5 small,
481 | .h6 small {
482 | font-weight: normal;
483 | line-height: 1;
484 | color: #999999;
485 | }
486 |
487 | h1,
488 | h2,
489 | h3 {
490 | margin-top: 20px;
491 | margin-bottom: 10px;
492 | }
493 |
494 | h4,
495 | h5,
496 | h6 {
497 | margin-top: 10px;
498 | margin-bottom: 10px;
499 | }
500 |
501 | h1,
502 | .h1 {
503 | font-size: 36px;
504 | }
505 |
506 | h2,
507 | .h2 {
508 | font-size: 30px;
509 | }
510 |
511 | h3,
512 | .h3 {
513 | font-size: 24px;
514 | }
515 |
516 | h4,
517 | .h4 {
518 | font-size: 18px;
519 | }
520 |
521 | h5,
522 | .h5 {
523 | font-size: 14px;
524 | }
525 |
526 | h6,
527 | .h6 {
528 | font-size: 12px;
529 | }
530 |
531 | h1 small,
532 | .h1 small {
533 | font-size: 24px;
534 | }
535 |
536 | h2 small,
537 | .h2 small {
538 | font-size: 18px;
539 | }
540 |
541 | h3 small,
542 | .h3 small,
543 | h4 small,
544 | .h4 small {
545 | font-size: 14px;
546 | }
547 |
548 | .page-header {
549 | padding-bottom: 9px;
550 | margin: 40px 0 20px;
551 | border-bottom: 1px solid #eeeeee;
552 | }
553 |
554 | ul,
555 | ol {
556 | margin-top: 0;
557 | margin-bottom: 10px;
558 | }
559 |
560 | ul ul,
561 | ol ul,
562 | ul ol,
563 | ol ol {
564 | margin-bottom: 0;
565 | }
566 |
567 | .list-unstyled {
568 | padding-left: 0;
569 | list-style: none;
570 | }
571 |
572 | .list-inline {
573 | padding-left: 0;
574 | list-style: none;
575 | }
576 |
577 | .list-inline > li {
578 | display: inline-block;
579 | padding-right: 5px;
580 | padding-left: 5px;
581 | }
582 |
583 | dl {
584 | margin-bottom: 20px;
585 | }
586 |
587 | dt,
588 | dd {
589 | line-height: 1.428571429;
590 | }
591 |
592 | dt {
593 | font-weight: bold;
594 | }
595 |
596 | dd {
597 | margin-left: 0;
598 | }
599 |
600 | @media (min-width: 768px) {
601 | .dl-horizontal dt {
602 | float: left;
603 | width: 160px;
604 | overflow: hidden;
605 | clear: left;
606 | text-align: right;
607 | text-overflow: ellipsis;
608 | white-space: nowrap;
609 | }
610 | .dl-horizontal dd {
611 | margin-left: 180px;
612 | }
613 | .dl-horizontal dd:before,
614 | .dl-horizontal dd:after {
615 | display: table;
616 | content: " ";
617 | }
618 | .dl-horizontal dd:after {
619 | clear: both;
620 | }
621 | .dl-horizontal dd:before,
622 | .dl-horizontal dd:after {
623 | display: table;
624 | content: " ";
625 | }
626 | .dl-horizontal dd:after {
627 | clear: both;
628 | }
629 | }
630 |
631 | abbr[title],
632 | abbr[data-original-title] {
633 | cursor: help;
634 | border-bottom: 1px dotted #999999;
635 | }
636 |
637 | abbr.initialism {
638 | font-size: 90%;
639 | text-transform: uppercase;
640 | }
641 |
642 | blockquote {
643 | padding: 10px 20px;
644 | margin: 0 0 20px;
645 | border-left: 5px solid #eeeeee;
646 | }
647 |
648 | blockquote p {
649 | font-size: 17.5px;
650 | font-weight: 300;
651 | line-height: 1.25;
652 | }
653 |
654 | blockquote p:last-child {
655 | margin-bottom: 0;
656 | }
657 |
658 | blockquote small {
659 | display: block;
660 | line-height: 1.428571429;
661 | color: #999999;
662 | }
663 |
664 | blockquote small:before {
665 | content: '\2014 \00A0';
666 | }
667 |
668 | blockquote.pull-right {
669 | padding-right: 15px;
670 | padding-left: 0;
671 | border-right: 5px solid #eeeeee;
672 | border-left: 0;
673 | }
674 |
675 | blockquote.pull-right p,
676 | blockquote.pull-right small {
677 | text-align: right;
678 | }
679 |
680 | blockquote.pull-right small:before {
681 | content: '';
682 | }
683 |
684 | blockquote.pull-right small:after {
685 | content: '\00A0 \2014';
686 | }
687 |
688 | q:before,
689 | q:after,
690 | blockquote:before,
691 | blockquote:after {
692 | content: "";
693 | }
694 |
695 | address {
696 | display: block;
697 | margin-bottom: 20px;
698 | font-style: normal;
699 | line-height: 1.428571429;
700 | }
701 |
702 | code,
703 | pre {
704 | font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
705 | }
706 |
707 | code {
708 | padding: 2px 4px;
709 | font-size: 90%;
710 | color: #c7254e;
711 | white-space: nowrap;
712 | background-color: #f9f2f4;
713 | border-radius: 4px;
714 | }
715 |
716 | pre {
717 | display: block;
718 | padding: 9.5px;
719 | margin: 0 0 10px;
720 | font-size: 13px;
721 | line-height: 1.428571429;
722 | color: #333333;
723 | word-break: break-all;
724 | word-wrap: break-word;
725 | background-color: #f5f5f5;
726 | border: 1px solid #cccccc;
727 | border-radius: 4px;
728 | }
729 |
730 | pre.prettyprint {
731 | margin-bottom: 20px;
732 | }
733 |
734 | pre code {
735 | padding: 0;
736 | font-size: inherit;
737 | color: inherit;
738 | white-space: pre-wrap;
739 | background-color: transparent;
740 | border: 0;
741 | }
742 |
743 | .pre-scrollable {
744 | max-height: 340px;
745 | overflow-y: scroll;
746 | }
747 |
748 | .container {
749 | padding-right: 15px;
750 | padding-left: 15px;
751 | margin-right: auto;
752 | margin-left: auto;
753 | }
754 |
755 | .container:before,
756 | .container:after {
757 | display: table;
758 | content: " ";
759 | }
760 |
761 | .container:after {
762 | clear: both;
763 | }
764 |
765 | .container:before,
766 | .container:after {
767 | display: table;
768 | content: " ";
769 | }
770 |
771 | .container:after {
772 | clear: both;
773 | }
774 |
775 | .row {
776 | margin-right: -15px;
777 | margin-left: -15px;
778 | }
779 |
780 | .row:before,
781 | .row:after {
782 | display: table;
783 | content: " ";
784 | }
785 |
786 | .row:after {
787 | clear: both;
788 | }
789 |
790 | .row:before,
791 | .row:after {
792 | display: table;
793 | content: " ";
794 | }
795 |
796 | .row:after {
797 | clear: both;
798 | }
799 |
800 | .col-xs-1,
801 | .col-xs-2,
802 | .col-xs-3,
803 | .col-xs-4,
804 | .col-xs-5,
805 | .col-xs-6,
806 | .col-xs-7,
807 | .col-xs-8,
808 | .col-xs-9,
809 | .col-xs-10,
810 | .col-xs-11,
811 | .col-xs-12,
812 | .col-sm-1,
813 | .col-sm-2,
814 | .col-sm-3,
815 | .col-sm-4,
816 | .col-sm-5,
817 | .col-sm-6,
818 | .col-sm-7,
819 | .col-sm-8,
820 | .col-sm-9,
821 | .col-sm-10,
822 | .col-sm-11,
823 | .col-sm-12,
824 | .col-md-1,
825 | .col-md-2,
826 | .col-md-3,
827 | .col-md-4,
828 | .col-md-5,
829 | .col-md-6,
830 | .col-md-7,
831 | .col-md-8,
832 | .col-md-9,
833 | .col-md-10,
834 | .col-md-11,
835 | .col-md-12,
836 | .col-lg-1,
837 | .col-lg-2,
838 | .col-lg-3,
839 | .col-lg-4,
840 | .col-lg-5,
841 | .col-lg-6,
842 | .col-lg-7,
843 | .col-lg-8,
844 | .col-lg-9,
845 | .col-lg-10,
846 | .col-lg-11,
847 | .col-lg-12 {
848 | position: relative;
849 | min-height: 1px;
850 | padding-right: 15px;
851 | padding-left: 15px;
852 | }
853 |
854 | .col-xs-1,
855 | .col-xs-2,
856 | .col-xs-3,
857 | .col-xs-4,
858 | .col-xs-5,
859 | .col-xs-6,
860 | .col-xs-7,
861 | .col-xs-8,
862 | .col-xs-9,
863 | .col-xs-10,
864 | .col-xs-11 {
865 | float: left;
866 | }
867 |
868 | .col-xs-1 {
869 | width: 8.333333333333332%;
870 | }
871 |
872 | .col-xs-2 {
873 | width: 16.666666666666664%;
874 | }
875 |
876 | .col-xs-3 {
877 | width: 25%;
878 | }
879 |
880 | .col-xs-4 {
881 | width: 33.33333333333333%;
882 | }
883 |
884 | .col-xs-5 {
885 | width: 41.66666666666667%;
886 | }
887 |
888 | .col-xs-6 {
889 | width: 50%;
890 | }
891 |
892 | .col-xs-7 {
893 | width: 58.333333333333336%;
894 | }
895 |
896 | .col-xs-8 {
897 | width: 66.66666666666666%;
898 | }
899 |
900 | .col-xs-9 {
901 | width: 75%;
902 | }
903 |
904 | .col-xs-10 {
905 | width: 83.33333333333334%;
906 | }
907 |
908 | .col-xs-11 {
909 | width: 91.66666666666666%;
910 | }
911 |
912 | .col-xs-12 {
913 | width: 100%;
914 | }
915 |
916 | @media (min-width: 768px) {
917 | .container {
918 | max-width: 750px;
919 | }
920 | .col-sm-1,
921 | .col-sm-2,
922 | .col-sm-3,
923 | .col-sm-4,
924 | .col-sm-5,
925 | .col-sm-6,
926 | .col-sm-7,
927 | .col-sm-8,
928 | .col-sm-9,
929 | .col-sm-10,
930 | .col-sm-11 {
931 | float: left;
932 | }
933 | .col-sm-1 {
934 | width: 8.333333333333332%;
935 | }
936 | .col-sm-2 {
937 | width: 16.666666666666664%;
938 | }
939 | .col-sm-3 {
940 | width: 25%;
941 | }
942 | .col-sm-4 {
943 | width: 33.33333333333333%;
944 | }
945 | .col-sm-5 {
946 | width: 41.66666666666667%;
947 | }
948 | .col-sm-6 {
949 | width: 50%;
950 | }
951 | .col-sm-7 {
952 | width: 58.333333333333336%;
953 | }
954 | .col-sm-8 {
955 | width: 66.66666666666666%;
956 | }
957 | .col-sm-9 {
958 | width: 75%;
959 | }
960 | .col-sm-10 {
961 | width: 83.33333333333334%;
962 | }
963 | .col-sm-11 {
964 | width: 91.66666666666666%;
965 | }
966 | .col-sm-12 {
967 | width: 100%;
968 | }
969 | .col-sm-push-1 {
970 | left: 8.333333333333332%;
971 | }
972 | .col-sm-push-2 {
973 | left: 16.666666666666664%;
974 | }
975 | .col-sm-push-3 {
976 | left: 25%;
977 | }
978 | .col-sm-push-4 {
979 | left: 33.33333333333333%;
980 | }
981 | .col-sm-push-5 {
982 | left: 41.66666666666667%;
983 | }
984 | .col-sm-push-6 {
985 | left: 50%;
986 | }
987 | .col-sm-push-7 {
988 | left: 58.333333333333336%;
989 | }
990 | .col-sm-push-8 {
991 | left: 66.66666666666666%;
992 | }
993 | .col-sm-push-9 {
994 | left: 75%;
995 | }
996 | .col-sm-push-10 {
997 | left: 83.33333333333334%;
998 | }
999 | .col-sm-push-11 {
1000 | left: 91.66666666666666%;
1001 | }
1002 | .col-sm-pull-1 {
1003 | right: 8.333333333333332%;
1004 | }
1005 | .col-sm-pull-2 {
1006 | right: 16.666666666666664%;
1007 | }
1008 | .col-sm-pull-3 {
1009 | right: 25%;
1010 | }
1011 | .col-sm-pull-4 {
1012 | right: 33.33333333333333%;
1013 | }
1014 | .col-sm-pull-5 {
1015 | right: 41.66666666666667%;
1016 | }
1017 | .col-sm-pull-6 {
1018 | right: 50%;
1019 | }
1020 | .col-sm-pull-7 {
1021 | right: 58.333333333333336%;
1022 | }
1023 | .col-sm-pull-8 {
1024 | right: 66.66666666666666%;
1025 | }
1026 | .col-sm-pull-9 {
1027 | right: 75%;
1028 | }
1029 | .col-sm-pull-10 {
1030 | right: 83.33333333333334%;
1031 | }
1032 | .col-sm-pull-11 {
1033 | right: 91.66666666666666%;
1034 | }
1035 | .col-sm-offset-1 {
1036 | margin-left: 8.333333333333332%;
1037 | }
1038 | .col-sm-offset-2 {
1039 | margin-left: 16.666666666666664%;
1040 | }
1041 | .col-sm-offset-3 {
1042 | margin-left: 25%;
1043 | }
1044 | .col-sm-offset-4 {
1045 | margin-left: 33.33333333333333%;
1046 | }
1047 | .col-sm-offset-5 {
1048 | margin-left: 41.66666666666667%;
1049 | }
1050 | .col-sm-offset-6 {
1051 | margin-left: 50%;
1052 | }
1053 | .col-sm-offset-7 {
1054 | margin-left: 58.333333333333336%;
1055 | }
1056 | .col-sm-offset-8 {
1057 | margin-left: 66.66666666666666%;
1058 | }
1059 | .col-sm-offset-9 {
1060 | margin-left: 75%;
1061 | }
1062 | .col-sm-offset-10 {
1063 | margin-left: 83.33333333333334%;
1064 | }
1065 | .col-sm-offset-11 {
1066 | margin-left: 91.66666666666666%;
1067 | }
1068 | }
1069 |
1070 | @media (min-width: 992px) {
1071 | .container {
1072 | max-width: 970px;
1073 | }
1074 | .col-md-1,
1075 | .col-md-2,
1076 | .col-md-3,
1077 | .col-md-4,
1078 | .col-md-5,
1079 | .col-md-6,
1080 | .col-md-7,
1081 | .col-md-8,
1082 | .col-md-9,
1083 | .col-md-10,
1084 | .col-md-11 {
1085 | float: left;
1086 | }
1087 | .col-md-1 {
1088 | width: 8.333333333333332%;
1089 | }
1090 | .col-md-2 {
1091 | width: 16.666666666666664%;
1092 | }
1093 | .col-md-3 {
1094 | width: 25%;
1095 | }
1096 | .col-md-4 {
1097 | width: 33.33333333333333%;
1098 | }
1099 | .col-md-5 {
1100 | width: 41.66666666666667%;
1101 | }
1102 | .col-md-6 {
1103 | width: 50%;
1104 | }
1105 | .col-md-7 {
1106 | width: 58.333333333333336%;
1107 | }
1108 | .col-md-8 {
1109 | width: 66.66666666666666%;
1110 | }
1111 | .col-md-9 {
1112 | width: 75%;
1113 | }
1114 | .col-md-10 {
1115 | width: 83.33333333333334%;
1116 | }
1117 | .col-md-11 {
1118 | width: 91.66666666666666%;
1119 | }
1120 | .col-md-12 {
1121 | width: 100%;
1122 | }
1123 | .col-md-push-0 {
1124 | left: auto;
1125 | }
1126 | .col-md-push-1 {
1127 | left: 8.333333333333332%;
1128 | }
1129 | .col-md-push-2 {
1130 | left: 16.666666666666664%;
1131 | }
1132 | .col-md-push-3 {
1133 | left: 25%;
1134 | }
1135 | .col-md-push-4 {
1136 | left: 33.33333333333333%;
1137 | }
1138 | .col-md-push-5 {
1139 | left: 41.66666666666667%;
1140 | }
1141 | .col-md-push-6 {
1142 | left: 50%;
1143 | }
1144 | .col-md-push-7 {
1145 | left: 58.333333333333336%;
1146 | }
1147 | .col-md-push-8 {
1148 | left: 66.66666666666666%;
1149 | }
1150 | .col-md-push-9 {
1151 | left: 75%;
1152 | }
1153 | .col-md-push-10 {
1154 | left: 83.33333333333334%;
1155 | }
1156 | .col-md-push-11 {
1157 | left: 91.66666666666666%;
1158 | }
1159 | .col-md-pull-0 {
1160 | right: auto;
1161 | }
1162 | .col-md-pull-1 {
1163 | right: 8.333333333333332%;
1164 | }
1165 | .col-md-pull-2 {
1166 | right: 16.666666666666664%;
1167 | }
1168 | .col-md-pull-3 {
1169 | right: 25%;
1170 | }
1171 | .col-md-pull-4 {
1172 | right: 33.33333333333333%;
1173 | }
1174 | .col-md-pull-5 {
1175 | right: 41.66666666666667%;
1176 | }
1177 | .col-md-pull-6 {
1178 | right: 50%;
1179 | }
1180 | .col-md-pull-7 {
1181 | right: 58.333333333333336%;
1182 | }
1183 | .col-md-pull-8 {
1184 | right: 66.66666666666666%;
1185 | }
1186 | .col-md-pull-9 {
1187 | right: 75%;
1188 | }
1189 | .col-md-pull-10 {
1190 | right: 83.33333333333334%;
1191 | }
1192 | .col-md-pull-11 {
1193 | right: 91.66666666666666%;
1194 | }
1195 | .col-md-offset-0 {
1196 | margin-left: 0;
1197 | }
1198 | .col-md-offset-1 {
1199 | margin-left: 8.333333333333332%;
1200 | }
1201 | .col-md-offset-2 {
1202 | margin-left: 16.666666666666664%;
1203 | }
1204 | .col-md-offset-3 {
1205 | margin-left: 25%;
1206 | }
1207 | .col-md-offset-4 {
1208 | margin-left: 33.33333333333333%;
1209 | }
1210 | .col-md-offset-5 {
1211 | margin-left: 41.66666666666667%;
1212 | }
1213 | .col-md-offset-6 {
1214 | margin-left: 50%;
1215 | }
1216 | .col-md-offset-7 {
1217 | margin-left: 58.333333333333336%;
1218 | }
1219 | .col-md-offset-8 {
1220 | margin-left: 66.66666666666666%;
1221 | }
1222 | .col-md-offset-9 {
1223 | margin-left: 75%;
1224 | }
1225 | .col-md-offset-10 {
1226 | margin-left: 83.33333333333334%;
1227 | }
1228 | .col-md-offset-11 {
1229 | margin-left: 91.66666666666666%;
1230 | }
1231 | }
1232 |
1233 | @media (min-width: 1200px) {
1234 | .container {
1235 | max-width: 1170px;
1236 | }
1237 | .col-lg-1,
1238 | .col-lg-2,
1239 | .col-lg-3,
1240 | .col-lg-4,
1241 | .col-lg-5,
1242 | .col-lg-6,
1243 | .col-lg-7,
1244 | .col-lg-8,
1245 | .col-lg-9,
1246 | .col-lg-10,
1247 | .col-lg-11 {
1248 | float: left;
1249 | }
1250 | .col-lg-1 {
1251 | width: 8.333333333333332%;
1252 | }
1253 | .col-lg-2 {
1254 | width: 16.666666666666664%;
1255 | }
1256 | .col-lg-3 {
1257 | width: 25%;
1258 | }
1259 | .col-lg-4 {
1260 | width: 33.33333333333333%;
1261 | }
1262 | .col-lg-5 {
1263 | width: 41.66666666666667%;
1264 | }
1265 | .col-lg-6 {
1266 | width: 50%;
1267 | }
1268 | .col-lg-7 {
1269 | width: 58.333333333333336%;
1270 | }
1271 | .col-lg-8 {
1272 | width: 66.66666666666666%;
1273 | }
1274 | .col-lg-9 {
1275 | width: 75%;
1276 | }
1277 | .col-lg-10 {
1278 | width: 83.33333333333334%;
1279 | }
1280 | .col-lg-11 {
1281 | width: 91.66666666666666%;
1282 | }
1283 | .col-lg-12 {
1284 | width: 100%;
1285 | }
1286 | .col-lg-push-0 {
1287 | left: auto;
1288 | }
1289 | .col-lg-push-1 {
1290 | left: 8.333333333333332%;
1291 | }
1292 | .col-lg-push-2 {
1293 | left: 16.666666666666664%;
1294 | }
1295 | .col-lg-push-3 {
1296 | left: 25%;
1297 | }
1298 | .col-lg-push-4 {
1299 | left: 33.33333333333333%;
1300 | }
1301 | .col-lg-push-5 {
1302 | left: 41.66666666666667%;
1303 | }
1304 | .col-lg-push-6 {
1305 | left: 50%;
1306 | }
1307 | .col-lg-push-7 {
1308 | left: 58.333333333333336%;
1309 | }
1310 | .col-lg-push-8 {
1311 | left: 66.66666666666666%;
1312 | }
1313 | .col-lg-push-9 {
1314 | left: 75%;
1315 | }
1316 | .col-lg-push-10 {
1317 | left: 83.33333333333334%;
1318 | }
1319 | .col-lg-push-11 {
1320 | left: 91.66666666666666%;
1321 | }
1322 | .col-lg-pull-0 {
1323 | right: auto;
1324 | }
1325 | .col-lg-pull-1 {
1326 | right: 8.333333333333332%;
1327 | }
1328 | .col-lg-pull-2 {
1329 | right: 16.666666666666664%;
1330 | }
1331 | .col-lg-pull-3 {
1332 | right: 25%;
1333 | }
1334 | .col-lg-pull-4 {
1335 | right: 33.33333333333333%;
1336 | }
1337 | .col-lg-pull-5 {
1338 | right: 41.66666666666667%;
1339 | }
1340 | .col-lg-pull-6 {
1341 | right: 50%;
1342 | }
1343 | .col-lg-pull-7 {
1344 | right: 58.333333333333336%;
1345 | }
1346 | .col-lg-pull-8 {
1347 | right: 66.66666666666666%;
1348 | }
1349 | .col-lg-pull-9 {
1350 | right: 75%;
1351 | }
1352 | .col-lg-pull-10 {
1353 | right: 83.33333333333334%;
1354 | }
1355 | .col-lg-pull-11 {
1356 | right: 91.66666666666666%;
1357 | }
1358 | .col-lg-offset-0 {
1359 | margin-left: 0;
1360 | }
1361 | .col-lg-offset-1 {
1362 | margin-left: 8.333333333333332%;
1363 | }
1364 | .col-lg-offset-2 {
1365 | margin-left: 16.666666666666664%;
1366 | }
1367 | .col-lg-offset-3 {
1368 | margin-left: 25%;
1369 | }
1370 | .col-lg-offset-4 {
1371 | margin-left: 33.33333333333333%;
1372 | }
1373 | .col-lg-offset-5 {
1374 | margin-left: 41.66666666666667%;
1375 | }
1376 | .col-lg-offset-6 {
1377 | margin-left: 50%;
1378 | }
1379 | .col-lg-offset-7 {
1380 | margin-left: 58.333333333333336%;
1381 | }
1382 | .col-lg-offset-8 {
1383 | margin-left: 66.66666666666666%;
1384 | }
1385 | .col-lg-offset-9 {
1386 | margin-left: 75%;
1387 | }
1388 | .col-lg-offset-10 {
1389 | margin-left: 83.33333333333334%;
1390 | }
1391 | .col-lg-offset-11 {
1392 | margin-left: 91.66666666666666%;
1393 | }
1394 | }
1395 |
1396 | table {
1397 | max-width: 100%;
1398 | background-color: transparent;
1399 | }
1400 |
1401 | th {
1402 | text-align: left;
1403 | }
1404 |
1405 | .table {
1406 | width: 100%;
1407 | margin-bottom: 20px;
1408 | }
1409 |
1410 | .table thead > tr > th,
1411 | .table tbody > tr > th,
1412 | .table tfoot > tr > th,
1413 | .table thead > tr > td,
1414 | .table tbody > tr > td,
1415 | .table tfoot > tr > td {
1416 | padding: 8px;
1417 | line-height: 1.428571429;
1418 | vertical-align: top;
1419 | border-top: 1px solid #dddddd;
1420 | }
1421 |
1422 | .table thead > tr > th {
1423 | vertical-align: bottom;
1424 | border-bottom: 2px solid #dddddd;
1425 | }
1426 |
1427 | .table caption + thead tr:first-child th,
1428 | .table colgroup + thead tr:first-child th,
1429 | .table thead:first-child tr:first-child th,
1430 | .table caption + thead tr:first-child td,
1431 | .table colgroup + thead tr:first-child td,
1432 | .table thead:first-child tr:first-child td {
1433 | border-top: 0;
1434 | }
1435 |
1436 | .table tbody + tbody {
1437 | border-top: 2px solid #dddddd;
1438 | }
1439 |
1440 | .table .table {
1441 | background-color: #ffffff;
1442 | }
1443 |
1444 | .table-condensed thead > tr > th,
1445 | .table-condensed tbody > tr > th,
1446 | .table-condensed tfoot > tr > th,
1447 | .table-condensed thead > tr > td,
1448 | .table-condensed tbody > tr > td,
1449 | .table-condensed tfoot > tr > td {
1450 | padding: 5px;
1451 | }
1452 |
1453 | .table-bordered {
1454 | border: 1px solid #dddddd;
1455 | }
1456 |
1457 | .table-bordered > thead > tr > th,
1458 | .table-bordered > tbody > tr > th,
1459 | .table-bordered > tfoot > tr > th,
1460 | .table-bordered > thead > tr > td,
1461 | .table-bordered > tbody > tr > td,
1462 | .table-bordered > tfoot > tr > td {
1463 | border: 1px solid #dddddd;
1464 | }
1465 |
1466 | .table-bordered > thead > tr > th,
1467 | .table-bordered > thead > tr > td {
1468 | border-bottom-width: 2px;
1469 | }
1470 |
1471 | .table-striped > tbody > tr:nth-child(odd) > td,
1472 | .table-striped > tbody > tr:nth-child(odd) > th {
1473 | background-color: #f9f9f9;
1474 | }
1475 |
1476 | .table-hover > tbody > tr:hover > td,
1477 | .table-hover > tbody > tr:hover > th {
1478 | background-color: #f5f5f5;
1479 | }
1480 |
1481 | table col[class*="col-"] {
1482 | display: table-column;
1483 | float: none;
1484 | }
1485 |
1486 | table td[class*="col-"],
1487 | table th[class*="col-"] {
1488 | display: table-cell;
1489 | float: none;
1490 | }
1491 |
1492 | .table > thead > tr > td.active,
1493 | .table > tbody > tr > td.active,
1494 | .table > tfoot > tr > td.active,
1495 | .table > thead > tr > th.active,
1496 | .table > tbody > tr > th.active,
1497 | .table > tfoot > tr > th.active,
1498 | .table > thead > tr.active > td,
1499 | .table > tbody > tr.active > td,
1500 | .table > tfoot > tr.active > td,
1501 | .table > thead > tr.active > th,
1502 | .table > tbody > tr.active > th,
1503 | .table > tfoot > tr.active > th {
1504 | background-color: #f5f5f5;
1505 | }
1506 |
1507 | .table > thead > tr > td.success,
1508 | .table > tbody > tr > td.success,
1509 | .table > tfoot > tr > td.success,
1510 | .table > thead > tr > th.success,
1511 | .table > tbody > tr > th.success,
1512 | .table > tfoot > tr > th.success,
1513 | .table > thead > tr.success > td,
1514 | .table > tbody > tr.success > td,
1515 | .table > tfoot > tr.success > td,
1516 | .table > thead > tr.success > th,
1517 | .table > tbody > tr.success > th,
1518 | .table > tfoot > tr.success > th {
1519 | background-color: #dff0d8;
1520 | border-color: #d6e9c6;
1521 | }
1522 |
1523 | .table-hover > tbody > tr > td.success:hover,
1524 | .table-hover > tbody > tr > th.success:hover,
1525 | .table-hover > tbody > tr.success:hover > td {
1526 | background-color: #d0e9c6;
1527 | border-color: #c9e2b3;
1528 | }
1529 |
1530 | .table > thead > tr > td.danger,
1531 | .table > tbody > tr > td.danger,
1532 | .table > tfoot > tr > td.danger,
1533 | .table > thead > tr > th.danger,
1534 | .table > tbody > tr > th.danger,
1535 | .table > tfoot > tr > th.danger,
1536 | .table > thead > tr.danger > td,
1537 | .table > tbody > tr.danger > td,
1538 | .table > tfoot > tr.danger > td,
1539 | .table > thead > tr.danger > th,
1540 | .table > tbody > tr.danger > th,
1541 | .table > tfoot > tr.danger > th {
1542 | background-color: #f2dede;
1543 | border-color: #eed3d7;
1544 | }
1545 |
1546 | .table-hover > tbody > tr > td.danger:hover,
1547 | .table-hover > tbody > tr > th.danger:hover,
1548 | .table-hover > tbody > tr.danger:hover > td {
1549 | background-color: #ebcccc;
1550 | border-color: #e6c1c7;
1551 | }
1552 |
1553 | .table > thead > tr > td.warning,
1554 | .table > tbody > tr > td.warning,
1555 | .table > tfoot > tr > td.warning,
1556 | .table > thead > tr > th.warning,
1557 | .table > tbody > tr > th.warning,
1558 | .table > tfoot > tr > th.warning,
1559 | .table > thead > tr.warning > td,
1560 | .table > tbody > tr.warning > td,
1561 | .table > tfoot > tr.warning > td,
1562 | .table > thead > tr.warning > th,
1563 | .table > tbody > tr.warning > th,
1564 | .table > tfoot > tr.warning > th {
1565 | background-color: #fcf8e3;
1566 | border-color: #fbeed5;
1567 | }
1568 |
1569 | .table-hover > tbody > tr > td.warning:hover,
1570 | .table-hover > tbody > tr > th.warning:hover,
1571 | .table-hover > tbody > tr.warning:hover > td {
1572 | background-color: #faf2cc;
1573 | border-color: #f8e5be;
1574 | }
1575 |
1576 | @media (max-width: 768px) {
1577 | .table-responsive {
1578 | width: 100%;
1579 | margin-bottom: 15px;
1580 | overflow-x: scroll;
1581 | overflow-y: hidden;
1582 | border: 1px solid #dddddd;
1583 | }
1584 | .table-responsive > .table {
1585 | margin-bottom: 0;
1586 | background-color: #fff;
1587 | }
1588 | .table-responsive > .table > thead > tr > th,
1589 | .table-responsive > .table > tbody > tr > th,
1590 | .table-responsive > .table > tfoot > tr > th,
1591 | .table-responsive > .table > thead > tr > td,
1592 | .table-responsive > .table > tbody > tr > td,
1593 | .table-responsive > .table > tfoot > tr > td {
1594 | white-space: nowrap;
1595 | }
1596 | .table-responsive > .table-bordered {
1597 | border: 0;
1598 | }
1599 | .table-responsive > .table-bordered > thead > tr > th:first-child,
1600 | .table-responsive > .table-bordered > tbody > tr > th:first-child,
1601 | .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1602 | .table-responsive > .table-bordered > thead > tr > td:first-child,
1603 | .table-responsive > .table-bordered > tbody > tr > td:first-child,
1604 | .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1605 | border-left: 0;
1606 | }
1607 | .table-responsive > .table-bordered > thead > tr > th:last-child,
1608 | .table-responsive > .table-bordered > tbody > tr > th:last-child,
1609 | .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1610 | .table-responsive > .table-bordered > thead > tr > td:last-child,
1611 | .table-responsive > .table-bordered > tbody > tr > td:last-child,
1612 | .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1613 | border-right: 0;
1614 | }
1615 | .table-responsive > .table-bordered > thead > tr:last-child > th,
1616 | .table-responsive > .table-bordered > tbody > tr:last-child > th,
1617 | .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1618 | .table-responsive > .table-bordered > thead > tr:last-child > td,
1619 | .table-responsive > .table-bordered > tbody > tr:last-child > td,
1620 | .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1621 | border-bottom: 0;
1622 | }
1623 | }
1624 |
1625 | fieldset {
1626 | padding: 0;
1627 | margin: 0;
1628 | border: 0;
1629 | }
1630 |
1631 | legend {
1632 | display: block;
1633 | width: 100%;
1634 | padding: 0;
1635 | margin-bottom: 20px;
1636 | font-size: 21px;
1637 | line-height: inherit;
1638 | color: #333333;
1639 | border: 0;
1640 | border-bottom: 1px solid #e5e5e5;
1641 | }
1642 |
1643 | label {
1644 | display: inline-block;
1645 | margin-bottom: 5px;
1646 | font-weight: bold;
1647 | }
1648 |
1649 | input[type="search"] {
1650 | -webkit-box-sizing: border-box;
1651 | -moz-box-sizing: border-box;
1652 | box-sizing: border-box;
1653 | }
1654 |
1655 | input[type="radio"],
1656 | input[type="checkbox"] {
1657 | margin: 4px 0 0;
1658 | margin-top: 1px \9;
1659 | /* IE8-9 */
1660 |
1661 | line-height: normal;
1662 | }
1663 |
1664 | input[type="file"] {
1665 | display: block;
1666 | }
1667 |
1668 | select[multiple],
1669 | select[size] {
1670 | height: auto;
1671 | }
1672 |
1673 | select optgroup {
1674 | font-family: inherit;
1675 | font-size: inherit;
1676 | font-style: inherit;
1677 | }
1678 |
1679 | input[type="file"]:focus,
1680 | input[type="radio"]:focus,
1681 | input[type="checkbox"]:focus {
1682 | outline: thin dotted #333;
1683 | outline: 5px auto -webkit-focus-ring-color;
1684 | outline-offset: -2px;
1685 | }
1686 |
1687 | input[type="number"]::-webkit-outer-spin-button,
1688 | input[type="number"]::-webkit-inner-spin-button {
1689 | height: auto;
1690 | }
1691 |
1692 | .form-control:-moz-placeholder {
1693 | color: #999999;
1694 | }
1695 |
1696 | .form-control::-moz-placeholder {
1697 | color: #999999;
1698 | }
1699 |
1700 | .form-control:-ms-input-placeholder {
1701 | color: #999999;
1702 | }
1703 |
1704 | .form-control::-webkit-input-placeholder {
1705 | color: #999999;
1706 | }
1707 |
1708 | .form-control {
1709 | display: block;
1710 | width: 100%;
1711 | height: 34px;
1712 | padding: 6px 12px;
1713 | font-size: 14px;
1714 | line-height: 1.428571429;
1715 | color: #555555;
1716 | vertical-align: middle;
1717 | background-color: #ffffff;
1718 | border: 1px solid #cccccc;
1719 | border-radius: 4px;
1720 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1721 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1722 | -webkit-transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
1723 | transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
1724 | }
1725 |
1726 | .form-control:focus {
1727 | border-color: #66afe9;
1728 | outline: 0;
1729 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
1730 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
1731 | }
1732 |
1733 | .form-control[disabled],
1734 | .form-control[readonly],
1735 | fieldset[disabled] .form-control {
1736 | cursor: not-allowed;
1737 | background-color: #eeeeee;
1738 | }
1739 |
1740 | textarea.form-control {
1741 | height: auto;
1742 | }
1743 |
1744 | .form-group {
1745 | margin-bottom: 15px;
1746 | }
1747 |
1748 | .radio,
1749 | .checkbox {
1750 | display: block;
1751 | min-height: 20px;
1752 | padding-left: 20px;
1753 | margin-top: 10px;
1754 | margin-bottom: 10px;
1755 | vertical-align: middle;
1756 | }
1757 |
1758 | .radio label,
1759 | .checkbox label {
1760 | display: inline;
1761 | margin-bottom: 0;
1762 | font-weight: normal;
1763 | cursor: pointer;
1764 | }
1765 |
1766 | .radio input[type="radio"],
1767 | .radio-inline input[type="radio"],
1768 | .checkbox input[type="checkbox"],
1769 | .checkbox-inline input[type="checkbox"] {
1770 | float: left;
1771 | margin-left: -20px;
1772 | }
1773 |
1774 | .radio + .radio,
1775 | .checkbox + .checkbox {
1776 | margin-top: -5px;
1777 | }
1778 |
1779 | .radio-inline,
1780 | .checkbox-inline {
1781 | display: inline-block;
1782 | padding-left: 20px;
1783 | margin-bottom: 0;
1784 | font-weight: normal;
1785 | vertical-align: middle;
1786 | cursor: pointer;
1787 | }
1788 |
1789 | .radio-inline + .radio-inline,
1790 | .checkbox-inline + .checkbox-inline {
1791 | margin-top: 0;
1792 | margin-left: 10px;
1793 | }
1794 |
1795 | input[type="radio"][disabled],
1796 | input[type="checkbox"][disabled],
1797 | .radio[disabled],
1798 | .radio-inline[disabled],
1799 | .checkbox[disabled],
1800 | .checkbox-inline[disabled],
1801 | fieldset[disabled] input[type="radio"],
1802 | fieldset[disabled] input[type="checkbox"],
1803 | fieldset[disabled] .radio,
1804 | fieldset[disabled] .radio-inline,
1805 | fieldset[disabled] .checkbox,
1806 | fieldset[disabled] .checkbox-inline {
1807 | cursor: not-allowed;
1808 | }
1809 |
1810 | .input-sm {
1811 | height: 30px;
1812 | padding: 5px 10px;
1813 | font-size: 12px;
1814 | line-height: 1.5;
1815 | border-radius: 3px;
1816 | }
1817 |
1818 | select.input-sm {
1819 | height: 30px;
1820 | line-height: 30px;
1821 | }
1822 |
1823 | textarea.input-sm {
1824 | height: auto;
1825 | }
1826 |
1827 | .input-lg {
1828 | height: 45px;
1829 | padding: 10px 16px;
1830 | font-size: 18px;
1831 | line-height: 1.33;
1832 | border-radius: 6px;
1833 | }
1834 |
1835 | select.input-lg {
1836 | height: 45px;
1837 | line-height: 45px;
1838 | }
1839 |
1840 | textarea.input-lg {
1841 | height: auto;
1842 | }
1843 |
1844 | .has-warning .help-block,
1845 | .has-warning .control-label {
1846 | color: #c09853;
1847 | }
1848 |
1849 | .has-warning .form-control {
1850 | border-color: #c09853;
1851 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1852 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1853 | }
1854 |
1855 | .has-warning .form-control:focus {
1856 | border-color: #a47e3c;
1857 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1858 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
1859 | }
1860 |
1861 | .has-warning .input-group-addon {
1862 | color: #c09853;
1863 | background-color: #fcf8e3;
1864 | border-color: #c09853;
1865 | }
1866 |
1867 | .has-error .help-block,
1868 | .has-error .control-label {
1869 | color: #b94a48;
1870 | }
1871 |
1872 | .has-error .form-control {
1873 | border-color: #b94a48;
1874 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1875 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1876 | }
1877 |
1878 | .has-error .form-control:focus {
1879 | border-color: #953b39;
1880 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1881 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
1882 | }
1883 |
1884 | .has-error .input-group-addon {
1885 | color: #b94a48;
1886 | background-color: #f2dede;
1887 | border-color: #b94a48;
1888 | }
1889 |
1890 | .has-success .help-block,
1891 | .has-success .control-label {
1892 | color: #468847;
1893 | }
1894 |
1895 | .has-success .form-control {
1896 | border-color: #468847;
1897 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1898 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1899 | }
1900 |
1901 | .has-success .form-control:focus {
1902 | border-color: #356635;
1903 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1904 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
1905 | }
1906 |
1907 | .has-success .input-group-addon {
1908 | color: #468847;
1909 | background-color: #dff0d8;
1910 | border-color: #468847;
1911 | }
1912 |
1913 | .form-control-static {
1914 | padding-top: 7px;
1915 | margin-bottom: 0;
1916 | }
1917 |
1918 | .help-block {
1919 | display: block;
1920 | margin-top: 5px;
1921 | margin-bottom: 10px;
1922 | color: #737373;
1923 | }
1924 |
1925 | @media (min-width: 768px) {
1926 | .form-inline .form-group {
1927 | display: inline-block;
1928 | margin-bottom: 0;
1929 | vertical-align: middle;
1930 | }
1931 | .form-inline .form-control {
1932 | display: inline-block;
1933 | }
1934 | .form-inline .radio,
1935 | .form-inline .checkbox {
1936 | display: inline-block;
1937 | padding-left: 0;
1938 | margin-top: 0;
1939 | margin-bottom: 0;
1940 | }
1941 | .form-inline .radio input[type="radio"],
1942 | .form-inline .checkbox input[type="checkbox"] {
1943 | float: none;
1944 | margin-left: 0;
1945 | }
1946 | }
1947 |
1948 | .form-horizontal .control-label,
1949 | .form-horizontal .radio,
1950 | .form-horizontal .checkbox,
1951 | .form-horizontal .radio-inline,
1952 | .form-horizontal .checkbox-inline {
1953 | padding-top: 7px;
1954 | margin-top: 0;
1955 | margin-bottom: 0;
1956 | }
1957 |
1958 | .form-horizontal .form-group {
1959 | margin-right: -15px;
1960 | margin-left: -15px;
1961 | }
1962 |
1963 | .form-horizontal .form-group:before,
1964 | .form-horizontal .form-group:after {
1965 | display: table;
1966 | content: " ";
1967 | }
1968 |
1969 | .form-horizontal .form-group:after {
1970 | clear: both;
1971 | }
1972 |
1973 | .form-horizontal .form-group:before,
1974 | .form-horizontal .form-group:after {
1975 | display: table;
1976 | content: " ";
1977 | }
1978 |
1979 | .form-horizontal .form-group:after {
1980 | clear: both;
1981 | }
1982 |
1983 | @media (min-width: 768px) {
1984 | .form-horizontal .control-label {
1985 | text-align: right;
1986 | }
1987 | }
1988 |
1989 | .btn {
1990 | display: inline-block;
1991 | padding: 6px 12px;
1992 | margin-bottom: 0;
1993 | font-size: 14px;
1994 | font-weight: normal;
1995 | line-height: 1.428571429;
1996 | text-align: center;
1997 | white-space: nowrap;
1998 | vertical-align: middle;
1999 | cursor: pointer;
2000 | border: 1px solid transparent;
2001 | border-radius: 4px;
2002 | -webkit-user-select: none;
2003 | -moz-user-select: none;
2004 | -ms-user-select: none;
2005 | -o-user-select: none;
2006 | user-select: none;
2007 | }
2008 |
2009 | .btn:focus {
2010 | outline: thin dotted #333;
2011 | outline: 5px auto -webkit-focus-ring-color;
2012 | outline-offset: -2px;
2013 | }
2014 |
2015 | .btn:hover,
2016 | .btn:focus {
2017 | color: #333333;
2018 | text-decoration: none;
2019 | }
2020 |
2021 | .btn:active,
2022 | .btn.active {
2023 | background-image: none;
2024 | outline: 0;
2025 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2026 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2027 | }
2028 |
2029 | .btn.disabled,
2030 | .btn[disabled],
2031 | fieldset[disabled] .btn {
2032 | pointer-events: none;
2033 | cursor: not-allowed;
2034 | opacity: 0.65;
2035 | filter: alpha(opacity=65);
2036 | -webkit-box-shadow: none;
2037 | box-shadow: none;
2038 | }
2039 |
2040 | .btn-default {
2041 | color: #333333;
2042 | background-color: #ffffff;
2043 | border-color: #cccccc;
2044 | }
2045 |
2046 | .btn-default:hover,
2047 | .btn-default:focus,
2048 | .btn-default:active,
2049 | .btn-default.active,
2050 | .open .dropdown-toggle.btn-default {
2051 | color: #333333;
2052 | background-color: #ebebeb;
2053 | border-color: #adadad;
2054 | }
2055 |
2056 | .btn-default:active,
2057 | .btn-default.active,
2058 | .open .dropdown-toggle.btn-default {
2059 | background-image: none;
2060 | }
2061 |
2062 | .btn-default.disabled,
2063 | .btn-default[disabled],
2064 | fieldset[disabled] .btn-default,
2065 | .btn-default.disabled:hover,
2066 | .btn-default[disabled]:hover,
2067 | fieldset[disabled] .btn-default:hover,
2068 | .btn-default.disabled:focus,
2069 | .btn-default[disabled]:focus,
2070 | fieldset[disabled] .btn-default:focus,
2071 | .btn-default.disabled:active,
2072 | .btn-default[disabled]:active,
2073 | fieldset[disabled] .btn-default:active,
2074 | .btn-default.disabled.active,
2075 | .btn-default[disabled].active,
2076 | fieldset[disabled] .btn-default.active {
2077 | background-color: #ffffff;
2078 | border-color: #cccccc;
2079 | }
2080 |
2081 | .btn-primary {
2082 | color: #ffffff;
2083 | background-color: #428bca;
2084 | border-color: #357ebd;
2085 | }
2086 |
2087 | .btn-primary:hover,
2088 | .btn-primary:focus,
2089 | .btn-primary:active,
2090 | .btn-primary.active,
2091 | .open .dropdown-toggle.btn-primary {
2092 | color: #ffffff;
2093 | background-color: #3276b1;
2094 | border-color: #285e8e;
2095 | }
2096 |
2097 | .btn-primary:active,
2098 | .btn-primary.active,
2099 | .open .dropdown-toggle.btn-primary {
2100 | background-image: none;
2101 | }
2102 |
2103 | .btn-primary.disabled,
2104 | .btn-primary[disabled],
2105 | fieldset[disabled] .btn-primary,
2106 | .btn-primary.disabled:hover,
2107 | .btn-primary[disabled]:hover,
2108 | fieldset[disabled] .btn-primary:hover,
2109 | .btn-primary.disabled:focus,
2110 | .btn-primary[disabled]:focus,
2111 | fieldset[disabled] .btn-primary:focus,
2112 | .btn-primary.disabled:active,
2113 | .btn-primary[disabled]:active,
2114 | fieldset[disabled] .btn-primary:active,
2115 | .btn-primary.disabled.active,
2116 | .btn-primary[disabled].active,
2117 | fieldset[disabled] .btn-primary.active {
2118 | background-color: #428bca;
2119 | border-color: #357ebd;
2120 | }
2121 |
2122 | .btn-warning {
2123 | color: #ffffff;
2124 | background-color: #f0ad4e;
2125 | border-color: #eea236;
2126 | }
2127 |
2128 | .btn-warning:hover,
2129 | .btn-warning:focus,
2130 | .btn-warning:active,
2131 | .btn-warning.active,
2132 | .open .dropdown-toggle.btn-warning {
2133 | color: #ffffff;
2134 | background-color: #ed9c28;
2135 | border-color: #d58512;
2136 | }
2137 |
2138 | .btn-warning:active,
2139 | .btn-warning.active,
2140 | .open .dropdown-toggle.btn-warning {
2141 | background-image: none;
2142 | }
2143 |
2144 | .btn-warning.disabled,
2145 | .btn-warning[disabled],
2146 | fieldset[disabled] .btn-warning,
2147 | .btn-warning.disabled:hover,
2148 | .btn-warning[disabled]:hover,
2149 | fieldset[disabled] .btn-warning:hover,
2150 | .btn-warning.disabled:focus,
2151 | .btn-warning[disabled]:focus,
2152 | fieldset[disabled] .btn-warning:focus,
2153 | .btn-warning.disabled:active,
2154 | .btn-warning[disabled]:active,
2155 | fieldset[disabled] .btn-warning:active,
2156 | .btn-warning.disabled.active,
2157 | .btn-warning[disabled].active,
2158 | fieldset[disabled] .btn-warning.active {
2159 | background-color: #f0ad4e;
2160 | border-color: #eea236;
2161 | }
2162 |
2163 | .btn-danger {
2164 | color: #ffffff;
2165 | background-color: #d9534f;
2166 | border-color: #d43f3a;
2167 | }
2168 |
2169 | .btn-danger:hover,
2170 | .btn-danger:focus,
2171 | .btn-danger:active,
2172 | .btn-danger.active,
2173 | .open .dropdown-toggle.btn-danger {
2174 | color: #ffffff;
2175 | background-color: #d2322d;
2176 | border-color: #ac2925;
2177 | }
2178 |
2179 | .btn-danger:active,
2180 | .btn-danger.active,
2181 | .open .dropdown-toggle.btn-danger {
2182 | background-image: none;
2183 | }
2184 |
2185 | .btn-danger.disabled,
2186 | .btn-danger[disabled],
2187 | fieldset[disabled] .btn-danger,
2188 | .btn-danger.disabled:hover,
2189 | .btn-danger[disabled]:hover,
2190 | fieldset[disabled] .btn-danger:hover,
2191 | .btn-danger.disabled:focus,
2192 | .btn-danger[disabled]:focus,
2193 | fieldset[disabled] .btn-danger:focus,
2194 | .btn-danger.disabled:active,
2195 | .btn-danger[disabled]:active,
2196 | fieldset[disabled] .btn-danger:active,
2197 | .btn-danger.disabled.active,
2198 | .btn-danger[disabled].active,
2199 | fieldset[disabled] .btn-danger.active {
2200 | background-color: #d9534f;
2201 | border-color: #d43f3a;
2202 | }
2203 |
2204 | .btn-success {
2205 | color: #ffffff;
2206 | background-color: #5cb85c;
2207 | border-color: #4cae4c;
2208 | }
2209 |
2210 | .btn-success:hover,
2211 | .btn-success:focus,
2212 | .btn-success:active,
2213 | .btn-success.active,
2214 | .open .dropdown-toggle.btn-success {
2215 | color: #ffffff;
2216 | background-color: #47a447;
2217 | border-color: #398439;
2218 | }
2219 |
2220 | .btn-success:active,
2221 | .btn-success.active,
2222 | .open .dropdown-toggle.btn-success {
2223 | background-image: none;
2224 | }
2225 |
2226 | .btn-success.disabled,
2227 | .btn-success[disabled],
2228 | fieldset[disabled] .btn-success,
2229 | .btn-success.disabled:hover,
2230 | .btn-success[disabled]:hover,
2231 | fieldset[disabled] .btn-success:hover,
2232 | .btn-success.disabled:focus,
2233 | .btn-success[disabled]:focus,
2234 | fieldset[disabled] .btn-success:focus,
2235 | .btn-success.disabled:active,
2236 | .btn-success[disabled]:active,
2237 | fieldset[disabled] .btn-success:active,
2238 | .btn-success.disabled.active,
2239 | .btn-success[disabled].active,
2240 | fieldset[disabled] .btn-success.active {
2241 | background-color: #5cb85c;
2242 | border-color: #4cae4c;
2243 | }
2244 |
2245 | .btn-info {
2246 | color: #ffffff;
2247 | background-color: #5bc0de;
2248 | border-color: #46b8da;
2249 | }
2250 |
2251 | .btn-info:hover,
2252 | .btn-info:focus,
2253 | .btn-info:active,
2254 | .btn-info.active,
2255 | .open .dropdown-toggle.btn-info {
2256 | color: #ffffff;
2257 | background-color: #39b3d7;
2258 | border-color: #269abc;
2259 | }
2260 |
2261 | .btn-info:active,
2262 | .btn-info.active,
2263 | .open .dropdown-toggle.btn-info {
2264 | background-image: none;
2265 | }
2266 |
2267 | .btn-info.disabled,
2268 | .btn-info[disabled],
2269 | fieldset[disabled] .btn-info,
2270 | .btn-info.disabled:hover,
2271 | .btn-info[disabled]:hover,
2272 | fieldset[disabled] .btn-info:hover,
2273 | .btn-info.disabled:focus,
2274 | .btn-info[disabled]:focus,
2275 | fieldset[disabled] .btn-info:focus,
2276 | .btn-info.disabled:active,
2277 | .btn-info[disabled]:active,
2278 | fieldset[disabled] .btn-info:active,
2279 | .btn-info.disabled.active,
2280 | .btn-info[disabled].active,
2281 | fieldset[disabled] .btn-info.active {
2282 | background-color: #5bc0de;
2283 | border-color: #46b8da;
2284 | }
2285 |
2286 | .btn-link {
2287 | font-weight: normal;
2288 | color: #428bca;
2289 | cursor: pointer;
2290 | border-radius: 0;
2291 | }
2292 |
2293 | .btn-link,
2294 | .btn-link:active,
2295 | .btn-link[disabled],
2296 | fieldset[disabled] .btn-link {
2297 | background-color: transparent;
2298 | -webkit-box-shadow: none;
2299 | box-shadow: none;
2300 | }
2301 |
2302 | .btn-link,
2303 | .btn-link:hover,
2304 | .btn-link:focus,
2305 | .btn-link:active {
2306 | border-color: transparent;
2307 | }
2308 |
2309 | .btn-link:hover,
2310 | .btn-link:focus {
2311 | color: #2a6496;
2312 | text-decoration: underline;
2313 | background-color: transparent;
2314 | }
2315 |
2316 | .btn-link[disabled]:hover,
2317 | fieldset[disabled] .btn-link:hover,
2318 | .btn-link[disabled]:focus,
2319 | fieldset[disabled] .btn-link:focus {
2320 | color: #999999;
2321 | text-decoration: none;
2322 | }
2323 |
2324 | .btn-lg {
2325 | padding: 10px 16px;
2326 | font-size: 18px;
2327 | line-height: 1.33;
2328 | border-radius: 6px;
2329 | }
2330 |
2331 | .btn-sm,
2332 | .btn-xs {
2333 | padding: 5px 10px;
2334 | font-size: 12px;
2335 | line-height: 1.5;
2336 | border-radius: 3px;
2337 | }
2338 |
2339 | .btn-xs {
2340 | padding: 1px 5px;
2341 | }
2342 |
2343 | .btn-block {
2344 | display: block;
2345 | width: 100%;
2346 | padding-right: 0;
2347 | padding-left: 0;
2348 | }
2349 |
2350 | .btn-block + .btn-block {
2351 | margin-top: 5px;
2352 | }
2353 |
2354 | input[type="submit"].btn-block,
2355 | input[type="reset"].btn-block,
2356 | input[type="button"].btn-block {
2357 | width: 100%;
2358 | }
2359 |
2360 | .fade {
2361 | opacity: 0;
2362 | -webkit-transition: opacity 0.15s linear;
2363 | transition: opacity 0.15s linear;
2364 | }
2365 |
2366 | .fade.in {
2367 | opacity: 1;
2368 | }
2369 |
2370 | .collapse {
2371 | display: none;
2372 | }
2373 |
2374 | .collapse.in {
2375 | display: block;
2376 | }
2377 |
2378 | .collapsing {
2379 | position: relative;
2380 | height: 0;
2381 | overflow: hidden;
2382 | -webkit-transition: height 0.35s ease;
2383 | transition: height 0.35s ease;
2384 | }
2385 |
2386 | @font-face {
2387 | font-family: 'Glyphicons Halflings';
2388 | src: url('../fonts/glyphicons-halflings-regular.eot');
2389 | src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
2390 | }
2391 |
2392 | .glyphicon {
2393 | position: relative;
2394 | top: 1px;
2395 | display: inline-block;
2396 | font-family: 'Glyphicons Halflings';
2397 | -webkit-font-smoothing: antialiased;
2398 | font-style: normal;
2399 | font-weight: normal;
2400 | line-height: 1;
2401 | }
2402 |
2403 | .glyphicon-asterisk:before {
2404 | content: "\2a";
2405 | }
2406 |
2407 | .glyphicon-plus:before {
2408 | content: "\2b";
2409 | }
2410 |
2411 | .glyphicon-euro:before {
2412 | content: "\20ac";
2413 | }
2414 |
2415 | .glyphicon-minus:before {
2416 | content: "\2212";
2417 | }
2418 |
2419 | .glyphicon-cloud:before {
2420 | content: "\2601";
2421 | }
2422 |
2423 | .glyphicon-envelope:before {
2424 | content: "\2709";
2425 | }
2426 |
2427 | .glyphicon-pencil:before {
2428 | content: "\270f";
2429 | }
2430 |
2431 | .glyphicon-glass:before {
2432 | content: "\e001";
2433 | }
2434 |
2435 | .glyphicon-music:before {
2436 | content: "\e002";
2437 | }
2438 |
2439 | .glyphicon-search:before {
2440 | content: "\e003";
2441 | }
2442 |
2443 | .glyphicon-heart:before {
2444 | content: "\e005";
2445 | }
2446 |
2447 | .glyphicon-star:before {
2448 | content: "\e006";
2449 | }
2450 |
2451 | .glyphicon-star-empty:before {
2452 | content: "\e007";
2453 | }
2454 |
2455 | .glyphicon-user:before {
2456 | content: "\e008";
2457 | }
2458 |
2459 | .glyphicon-film:before {
2460 | content: "\e009";
2461 | }
2462 |
2463 | .glyphicon-th-large:before {
2464 | content: "\e010";
2465 | }
2466 |
2467 | .glyphicon-th:before {
2468 | content: "\e011";
2469 | }
2470 |
2471 | .glyphicon-th-list:before {
2472 | content: "\e012";
2473 | }
2474 |
2475 | .glyphicon-ok:before {
2476 | content: "\e013";
2477 | }
2478 |
2479 | .glyphicon-remove:before {
2480 | content: "\e014";
2481 | }
2482 |
2483 | .glyphicon-zoom-in:before {
2484 | content: "\e015";
2485 | }
2486 |
2487 | .glyphicon-zoom-out:before {
2488 | content: "\e016";
2489 | }
2490 |
2491 | .glyphicon-off:before {
2492 | content: "\e017";
2493 | }
2494 |
2495 | .glyphicon-signal:before {
2496 | content: "\e018";
2497 | }
2498 |
2499 | .glyphicon-cog:before {
2500 | content: "\e019";
2501 | }
2502 |
2503 | .glyphicon-trash:before {
2504 | content: "\e020";
2505 | }
2506 |
2507 | .glyphicon-home:before {
2508 | content: "\e021";
2509 | }
2510 |
2511 | .glyphicon-file:before {
2512 | content: "\e022";
2513 | }
2514 |
2515 | .glyphicon-time:before {
2516 | content: "\e023";
2517 | }
2518 |
2519 | .glyphicon-road:before {
2520 | content: "\e024";
2521 | }
2522 |
2523 | .glyphicon-download-alt:before {
2524 | content: "\e025";
2525 | }
2526 |
2527 | .glyphicon-download:before {
2528 | content: "\e026";
2529 | }
2530 |
2531 | .glyphicon-upload:before {
2532 | content: "\e027";
2533 | }
2534 |
2535 | .glyphicon-inbox:before {
2536 | content: "\e028";
2537 | }
2538 |
2539 | .glyphicon-play-circle:before {
2540 | content: "\e029";
2541 | }
2542 |
2543 | .glyphicon-repeat:before {
2544 | content: "\e030";
2545 | }
2546 |
2547 | .glyphicon-refresh:before {
2548 | content: "\e031";
2549 | }
2550 |
2551 | .glyphicon-list-alt:before {
2552 | content: "\e032";
2553 | }
2554 |
2555 | .glyphicon-flag:before {
2556 | content: "\e034";
2557 | }
2558 |
2559 | .glyphicon-headphones:before {
2560 | content: "\e035";
2561 | }
2562 |
2563 | .glyphicon-volume-off:before {
2564 | content: "\e036";
2565 | }
2566 |
2567 | .glyphicon-volume-down:before {
2568 | content: "\e037";
2569 | }
2570 |
2571 | .glyphicon-volume-up:before {
2572 | content: "\e038";
2573 | }
2574 |
2575 | .glyphicon-qrcode:before {
2576 | content: "\e039";
2577 | }
2578 |
2579 | .glyphicon-barcode:before {
2580 | content: "\e040";
2581 | }
2582 |
2583 | .glyphicon-tag:before {
2584 | content: "\e041";
2585 | }
2586 |
2587 | .glyphicon-tags:before {
2588 | content: "\e042";
2589 | }
2590 |
2591 | .glyphicon-book:before {
2592 | content: "\e043";
2593 | }
2594 |
2595 | .glyphicon-print:before {
2596 | content: "\e045";
2597 | }
2598 |
2599 | .glyphicon-font:before {
2600 | content: "\e047";
2601 | }
2602 |
2603 | .glyphicon-bold:before {
2604 | content: "\e048";
2605 | }
2606 |
2607 | .glyphicon-italic:before {
2608 | content: "\e049";
2609 | }
2610 |
2611 | .glyphicon-text-height:before {
2612 | content: "\e050";
2613 | }
2614 |
2615 | .glyphicon-text-width:before {
2616 | content: "\e051";
2617 | }
2618 |
2619 | .glyphicon-align-left:before {
2620 | content: "\e052";
2621 | }
2622 |
2623 | .glyphicon-align-center:before {
2624 | content: "\e053";
2625 | }
2626 |
2627 | .glyphicon-align-right:before {
2628 | content: "\e054";
2629 | }
2630 |
2631 | .glyphicon-align-justify:before {
2632 | content: "\e055";
2633 | }
2634 |
2635 | .glyphicon-list:before {
2636 | content: "\e056";
2637 | }
2638 |
2639 | .glyphicon-indent-left:before {
2640 | content: "\e057";
2641 | }
2642 |
2643 | .glyphicon-indent-right:before {
2644 | content: "\e058";
2645 | }
2646 |
2647 | .glyphicon-facetime-video:before {
2648 | content: "\e059";
2649 | }
2650 |
2651 | .glyphicon-picture:before {
2652 | content: "\e060";
2653 | }
2654 |
2655 | .glyphicon-map-marker:before {
2656 | content: "\e062";
2657 | }
2658 |
2659 | .glyphicon-adjust:before {
2660 | content: "\e063";
2661 | }
2662 |
2663 | .glyphicon-tint:before {
2664 | content: "\e064";
2665 | }
2666 |
2667 | .glyphicon-edit:before {
2668 | content: "\e065";
2669 | }
2670 |
2671 | .glyphicon-share:before {
2672 | content: "\e066";
2673 | }
2674 |
2675 | .glyphicon-check:before {
2676 | content: "\e067";
2677 | }
2678 |
2679 | .glyphicon-move:before {
2680 | content: "\e068";
2681 | }
2682 |
2683 | .glyphicon-step-backward:before {
2684 | content: "\e069";
2685 | }
2686 |
2687 | .glyphicon-fast-backward:before {
2688 | content: "\e070";
2689 | }
2690 |
2691 | .glyphicon-backward:before {
2692 | content: "\e071";
2693 | }
2694 |
2695 | .glyphicon-play:before {
2696 | content: "\e072";
2697 | }
2698 |
2699 | .glyphicon-pause:before {
2700 | content: "\e073";
2701 | }
2702 |
2703 | .glyphicon-stop:before {
2704 | content: "\e074";
2705 | }
2706 |
2707 | .glyphicon-forward:before {
2708 | content: "\e075";
2709 | }
2710 |
2711 | .glyphicon-fast-forward:before {
2712 | content: "\e076";
2713 | }
2714 |
2715 | .glyphicon-step-forward:before {
2716 | content: "\e077";
2717 | }
2718 |
2719 | .glyphicon-eject:before {
2720 | content: "\e078";
2721 | }
2722 |
2723 | .glyphicon-chevron-left:before {
2724 | content: "\e079";
2725 | }
2726 |
2727 | .glyphicon-chevron-right:before {
2728 | content: "\e080";
2729 | }
2730 |
2731 | .glyphicon-plus-sign:before {
2732 | content: "\e081";
2733 | }
2734 |
2735 | .glyphicon-minus-sign:before {
2736 | content: "\e082";
2737 | }
2738 |
2739 | .glyphicon-remove-sign:before {
2740 | content: "\e083";
2741 | }
2742 |
2743 | .glyphicon-ok-sign:before {
2744 | content: "\e084";
2745 | }
2746 |
2747 | .glyphicon-question-sign:before {
2748 | content: "\e085";
2749 | }
2750 |
2751 | .glyphicon-info-sign:before {
2752 | content: "\e086";
2753 | }
2754 |
2755 | .glyphicon-screenshot:before {
2756 | content: "\e087";
2757 | }
2758 |
2759 | .glyphicon-remove-circle:before {
2760 | content: "\e088";
2761 | }
2762 |
2763 | .glyphicon-ok-circle:before {
2764 | content: "\e089";
2765 | }
2766 |
2767 | .glyphicon-ban-circle:before {
2768 | content: "\e090";
2769 | }
2770 |
2771 | .glyphicon-arrow-left:before {
2772 | content: "\e091";
2773 | }
2774 |
2775 | .glyphicon-arrow-right:before {
2776 | content: "\e092";
2777 | }
2778 |
2779 | .glyphicon-arrow-up:before {
2780 | content: "\e093";
2781 | }
2782 |
2783 | .glyphicon-arrow-down:before {
2784 | content: "\e094";
2785 | }
2786 |
2787 | .glyphicon-share-alt:before {
2788 | content: "\e095";
2789 | }
2790 |
2791 | .glyphicon-resize-full:before {
2792 | content: "\e096";
2793 | }
2794 |
2795 | .glyphicon-resize-small:before {
2796 | content: "\e097";
2797 | }
2798 |
2799 | .glyphicon-exclamation-sign:before {
2800 | content: "\e101";
2801 | }
2802 |
2803 | .glyphicon-gift:before {
2804 | content: "\e102";
2805 | }
2806 |
2807 | .glyphicon-leaf:before {
2808 | content: "\e103";
2809 | }
2810 |
2811 | .glyphicon-eye-open:before {
2812 | content: "\e105";
2813 | }
2814 |
2815 | .glyphicon-eye-close:before {
2816 | content: "\e106";
2817 | }
2818 |
2819 | .glyphicon-warning-sign:before {
2820 | content: "\e107";
2821 | }
2822 |
2823 | .glyphicon-plane:before {
2824 | content: "\e108";
2825 | }
2826 |
2827 | .glyphicon-random:before {
2828 | content: "\e110";
2829 | }
2830 |
2831 | .glyphicon-comment:before {
2832 | content: "\e111";
2833 | }
2834 |
2835 | .glyphicon-magnet:before {
2836 | content: "\e112";
2837 | }
2838 |
2839 | .glyphicon-chevron-up:before {
2840 | content: "\e113";
2841 | }
2842 |
2843 | .glyphicon-chevron-down:before {
2844 | content: "\e114";
2845 | }
2846 |
2847 | .glyphicon-retweet:before {
2848 | content: "\e115";
2849 | }
2850 |
2851 | .glyphicon-shopping-cart:before {
2852 | content: "\e116";
2853 | }
2854 |
2855 | .glyphicon-folder-close:before {
2856 | content: "\e117";
2857 | }
2858 |
2859 | .glyphicon-folder-open:before {
2860 | content: "\e118";
2861 | }
2862 |
2863 | .glyphicon-resize-vertical:before {
2864 | content: "\e119";
2865 | }
2866 |
2867 | .glyphicon-resize-horizontal:before {
2868 | content: "\e120";
2869 | }
2870 |
2871 | .glyphicon-hdd:before {
2872 | content: "\e121";
2873 | }
2874 |
2875 | .glyphicon-bullhorn:before {
2876 | content: "\e122";
2877 | }
2878 |
2879 | .glyphicon-certificate:before {
2880 | content: "\e124";
2881 | }
2882 |
2883 | .glyphicon-thumbs-up:before {
2884 | content: "\e125";
2885 | }
2886 |
2887 | .glyphicon-thumbs-down:before {
2888 | content: "\e126";
2889 | }
2890 |
2891 | .glyphicon-hand-right:before {
2892 | content: "\e127";
2893 | }
2894 |
2895 | .glyphicon-hand-left:before {
2896 | content: "\e128";
2897 | }
2898 |
2899 | .glyphicon-hand-up:before {
2900 | content: "\e129";
2901 | }
2902 |
2903 | .glyphicon-hand-down:before {
2904 | content: "\e130";
2905 | }
2906 |
2907 | .glyphicon-circle-arrow-right:before {
2908 | content: "\e131";
2909 | }
2910 |
2911 | .glyphicon-circle-arrow-left:before {
2912 | content: "\e132";
2913 | }
2914 |
2915 | .glyphicon-circle-arrow-up:before {
2916 | content: "\e133";
2917 | }
2918 |
2919 | .glyphicon-circle-arrow-down:before {
2920 | content: "\e134";
2921 | }
2922 |
2923 | .glyphicon-globe:before {
2924 | content: "\e135";
2925 | }
2926 |
2927 | .glyphicon-tasks:before {
2928 | content: "\e137";
2929 | }
2930 |
2931 | .glyphicon-filter:before {
2932 | content: "\e138";
2933 | }
2934 |
2935 | .glyphicon-fullscreen:before {
2936 | content: "\e140";
2937 | }
2938 |
2939 | .glyphicon-dashboard:before {
2940 | content: "\e141";
2941 | }
2942 |
2943 | .glyphicon-heart-empty:before {
2944 | content: "\e143";
2945 | }
2946 |
2947 | .glyphicon-link:before {
2948 | content: "\e144";
2949 | }
2950 |
2951 | .glyphicon-phone:before {
2952 | content: "\e145";
2953 | }
2954 |
2955 | .glyphicon-usd:before {
2956 | content: "\e148";
2957 | }
2958 |
2959 | .glyphicon-gbp:before {
2960 | content: "\e149";
2961 | }
2962 |
2963 | .glyphicon-sort:before {
2964 | content: "\e150";
2965 | }
2966 |
2967 | .glyphicon-sort-by-alphabet:before {
2968 | content: "\e151";
2969 | }
2970 |
2971 | .glyphicon-sort-by-alphabet-alt:before {
2972 | content: "\e152";
2973 | }
2974 |
2975 | .glyphicon-sort-by-order:before {
2976 | content: "\e153";
2977 | }
2978 |
2979 | .glyphicon-sort-by-order-alt:before {
2980 | content: "\e154";
2981 | }
2982 |
2983 | .glyphicon-sort-by-attributes:before {
2984 | content: "\e155";
2985 | }
2986 |
2987 | .glyphicon-sort-by-attributes-alt:before {
2988 | content: "\e156";
2989 | }
2990 |
2991 | .glyphicon-unchecked:before {
2992 | content: "\e157";
2993 | }
2994 |
2995 | .glyphicon-expand:before {
2996 | content: "\e158";
2997 | }
2998 |
2999 | .glyphicon-collapse-down:before {
3000 | content: "\e159";
3001 | }
3002 |
3003 | .glyphicon-collapse-up:before {
3004 | content: "\e160";
3005 | }
3006 |
3007 | .glyphicon-log-in:before {
3008 | content: "\e161";
3009 | }
3010 |
3011 | .glyphicon-flash:before {
3012 | content: "\e162";
3013 | }
3014 |
3015 | .glyphicon-log-out:before {
3016 | content: "\e163";
3017 | }
3018 |
3019 | .glyphicon-new-window:before {
3020 | content: "\e164";
3021 | }
3022 |
3023 | .glyphicon-record:before {
3024 | content: "\e165";
3025 | }
3026 |
3027 | .glyphicon-save:before {
3028 | content: "\e166";
3029 | }
3030 |
3031 | .glyphicon-open:before {
3032 | content: "\e167";
3033 | }
3034 |
3035 | .glyphicon-saved:before {
3036 | content: "\e168";
3037 | }
3038 |
3039 | .glyphicon-import:before {
3040 | content: "\e169";
3041 | }
3042 |
3043 | .glyphicon-export:before {
3044 | content: "\e170";
3045 | }
3046 |
3047 | .glyphicon-send:before {
3048 | content: "\e171";
3049 | }
3050 |
3051 | .glyphicon-floppy-disk:before {
3052 | content: "\e172";
3053 | }
3054 |
3055 | .glyphicon-floppy-saved:before {
3056 | content: "\e173";
3057 | }
3058 |
3059 | .glyphicon-floppy-remove:before {
3060 | content: "\e174";
3061 | }
3062 |
3063 | .glyphicon-floppy-save:before {
3064 | content: "\e175";
3065 | }
3066 |
3067 | .glyphicon-floppy-open:before {
3068 | content: "\e176";
3069 | }
3070 |
3071 | .glyphicon-credit-card:before {
3072 | content: "\e177";
3073 | }
3074 |
3075 | .glyphicon-transfer:before {
3076 | content: "\e178";
3077 | }
3078 |
3079 | .glyphicon-cutlery:before {
3080 | content: "\e179";
3081 | }
3082 |
3083 | .glyphicon-header:before {
3084 | content: "\e180";
3085 | }
3086 |
3087 | .glyphicon-compressed:before {
3088 | content: "\e181";
3089 | }
3090 |
3091 | .glyphicon-earphone:before {
3092 | content: "\e182";
3093 | }
3094 |
3095 | .glyphicon-phone-alt:before {
3096 | content: "\e183";
3097 | }
3098 |
3099 | .glyphicon-tower:before {
3100 | content: "\e184";
3101 | }
3102 |
3103 | .glyphicon-stats:before {
3104 | content: "\e185";
3105 | }
3106 |
3107 | .glyphicon-sd-video:before {
3108 | content: "\e186";
3109 | }
3110 |
3111 | .glyphicon-hd-video:before {
3112 | content: "\e187";
3113 | }
3114 |
3115 | .glyphicon-subtitles:before {
3116 | content: "\e188";
3117 | }
3118 |
3119 | .glyphicon-sound-stereo:before {
3120 | content: "\e189";
3121 | }
3122 |
3123 | .glyphicon-sound-dolby:before {
3124 | content: "\e190";
3125 | }
3126 |
3127 | .glyphicon-sound-5-1:before {
3128 | content: "\e191";
3129 | }
3130 |
3131 | .glyphicon-sound-6-1:before {
3132 | content: "\e192";
3133 | }
3134 |
3135 | .glyphicon-sound-7-1:before {
3136 | content: "\e193";
3137 | }
3138 |
3139 | .glyphicon-copyright-mark:before {
3140 | content: "\e194";
3141 | }
3142 |
3143 | .glyphicon-registration-mark:before {
3144 | content: "\e195";
3145 | }
3146 |
3147 | .glyphicon-cloud-download:before {
3148 | content: "\e197";
3149 | }
3150 |
3151 | .glyphicon-cloud-upload:before {
3152 | content: "\e198";
3153 | }
3154 |
3155 | .glyphicon-tree-conifer:before {
3156 | content: "\e199";
3157 | }
3158 |
3159 | .glyphicon-tree-deciduous:before {
3160 | content: "\e200";
3161 | }
3162 |
3163 | .glyphicon-briefcase:before {
3164 | content: "\1f4bc";
3165 | }
3166 |
3167 | .glyphicon-calendar:before {
3168 | content: "\1f4c5";
3169 | }
3170 |
3171 | .glyphicon-pushpin:before {
3172 | content: "\1f4cc";
3173 | }
3174 |
3175 | .glyphicon-paperclip:before {
3176 | content: "\1f4ce";
3177 | }
3178 |
3179 | .glyphicon-camera:before {
3180 | content: "\1f4f7";
3181 | }
3182 |
3183 | .glyphicon-lock:before {
3184 | content: "\1f512";
3185 | }
3186 |
3187 | .glyphicon-bell:before {
3188 | content: "\1f514";
3189 | }
3190 |
3191 | .glyphicon-bookmark:before {
3192 | content: "\1f516";
3193 | }
3194 |
3195 | .glyphicon-fire:before {
3196 | content: "\1f525";
3197 | }
3198 |
3199 | .glyphicon-wrench:before {
3200 | content: "\1f527";
3201 | }
3202 |
3203 | .caret {
3204 | display: inline-block;
3205 | width: 0;
3206 | height: 0;
3207 | margin-left: 2px;
3208 | vertical-align: middle;
3209 | border-top: 4px solid #000000;
3210 | border-right: 4px solid transparent;
3211 | border-bottom: 0 dotted;
3212 | border-left: 4px solid transparent;
3213 | content: "";
3214 | }
3215 |
3216 | .dropdown {
3217 | position: relative;
3218 | }
3219 |
3220 | .dropdown-toggle:focus {
3221 | outline: 0;
3222 | }
3223 |
3224 | .dropdown-menu {
3225 | position: absolute;
3226 | top: 100%;
3227 | left: 0;
3228 | z-index: 1000;
3229 | display: none;
3230 | float: left;
3231 | min-width: 160px;
3232 | padding: 5px 0;
3233 | margin: 2px 0 0;
3234 | font-size: 14px;
3235 | list-style: none;
3236 | background-color: #ffffff;
3237 | border: 1px solid #cccccc;
3238 | border: 1px solid rgba(0, 0, 0, 0.15);
3239 | border-radius: 4px;
3240 | -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3241 | box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3242 | background-clip: padding-box;
3243 | }
3244 |
3245 | .dropdown-menu.pull-right {
3246 | right: 0;
3247 | left: auto;
3248 | }
3249 |
3250 | .dropdown-menu .divider {
3251 | height: 1px;
3252 | margin: 9px 0;
3253 | overflow: hidden;
3254 | background-color: #e5e5e5;
3255 | }
3256 |
3257 | .dropdown-menu > li > a {
3258 | display: block;
3259 | padding: 3px 20px;
3260 | clear: both;
3261 | font-weight: normal;
3262 | line-height: 1.428571429;
3263 | color: #333333;
3264 | white-space: nowrap;
3265 | }
3266 |
3267 | .dropdown-menu > li > a:hover,
3268 | .dropdown-menu > li > a:focus {
3269 | color: #ffffff;
3270 | text-decoration: none;
3271 | background-color: #428bca;
3272 | }
3273 |
3274 | .dropdown-menu > .active > a,
3275 | .dropdown-menu > .active > a:hover,
3276 | .dropdown-menu > .active > a:focus {
3277 | color: #ffffff;
3278 | text-decoration: none;
3279 | background-color: #428bca;
3280 | outline: 0;
3281 | }
3282 |
3283 | .dropdown-menu > .disabled > a,
3284 | .dropdown-menu > .disabled > a:hover,
3285 | .dropdown-menu > .disabled > a:focus {
3286 | color: #999999;
3287 | }
3288 |
3289 | .dropdown-menu > .disabled > a:hover,
3290 | .dropdown-menu > .disabled > a:focus {
3291 | text-decoration: none;
3292 | cursor: not-allowed;
3293 | background-color: transparent;
3294 | background-image: none;
3295 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
3296 | }
3297 |
3298 | .open > .dropdown-menu {
3299 | display: block;
3300 | }
3301 |
3302 | .open > a {
3303 | outline: 0;
3304 | }
3305 |
3306 | .dropdown-header {
3307 | display: block;
3308 | padding: 3px 20px;
3309 | font-size: 12px;
3310 | line-height: 1.428571429;
3311 | color: #999999;
3312 | }
3313 |
3314 | .dropdown-backdrop {
3315 | position: fixed;
3316 | top: 0;
3317 | right: 0;
3318 | bottom: 0;
3319 | left: 0;
3320 | z-index: 990;
3321 | }
3322 |
3323 | .pull-right > .dropdown-menu {
3324 | right: 0;
3325 | left: auto;
3326 | }
3327 |
3328 | .dropup .caret,
3329 | .navbar-fixed-bottom .dropdown .caret {
3330 | border-top: 0 dotted;
3331 | border-bottom: 4px solid #000000;
3332 | content: "";
3333 | }
3334 |
3335 | .dropup .dropdown-menu,
3336 | .navbar-fixed-bottom .dropdown .dropdown-menu {
3337 | top: auto;
3338 | bottom: 100%;
3339 | margin-bottom: 1px;
3340 | }
3341 |
3342 | @media (min-width: 768px) {
3343 | .navbar-right .dropdown-menu {
3344 | right: 0;
3345 | left: auto;
3346 | }
3347 | }
3348 |
3349 | .btn-default .caret {
3350 | border-top-color: #333333;
3351 | }
3352 |
3353 | .btn-primary .caret,
3354 | .btn-success .caret,
3355 | .btn-warning .caret,
3356 | .btn-danger .caret,
3357 | .btn-info .caret {
3358 | border-top-color: #fff;
3359 | }
3360 |
3361 | .dropup .btn-default .caret {
3362 | border-bottom-color: #333333;
3363 | }
3364 |
3365 | .dropup .btn-primary .caret,
3366 | .dropup .btn-success .caret,
3367 | .dropup .btn-warning .caret,
3368 | .dropup .btn-danger .caret,
3369 | .dropup .btn-info .caret {
3370 | border-bottom-color: #fff;
3371 | }
3372 |
3373 | .btn-group,
3374 | .btn-group-vertical {
3375 | position: relative;
3376 | display: inline-block;
3377 | vertical-align: middle;
3378 | }
3379 |
3380 | .btn-group > .btn,
3381 | .btn-group-vertical > .btn {
3382 | position: relative;
3383 | float: left;
3384 | }
3385 |
3386 | .btn-group > .btn:hover,
3387 | .btn-group-vertical > .btn:hover,
3388 | .btn-group > .btn:focus,
3389 | .btn-group-vertical > .btn:focus,
3390 | .btn-group > .btn:active,
3391 | .btn-group-vertical > .btn:active,
3392 | .btn-group > .btn.active,
3393 | .btn-group-vertical > .btn.active {
3394 | z-index: 2;
3395 | }
3396 |
3397 | .btn-group > .btn:focus,
3398 | .btn-group-vertical > .btn:focus {
3399 | outline: none;
3400 | }
3401 |
3402 | .btn-group .btn + .btn,
3403 | .btn-group .btn + .btn-group,
3404 | .btn-group .btn-group + .btn,
3405 | .btn-group .btn-group + .btn-group {
3406 | margin-left: -1px;
3407 | }
3408 |
3409 | .btn-toolbar:before,
3410 | .btn-toolbar:after {
3411 | display: table;
3412 | content: " ";
3413 | }
3414 |
3415 | .btn-toolbar:after {
3416 | clear: both;
3417 | }
3418 |
3419 | .btn-toolbar:before,
3420 | .btn-toolbar:after {
3421 | display: table;
3422 | content: " ";
3423 | }
3424 |
3425 | .btn-toolbar:after {
3426 | clear: both;
3427 | }
3428 |
3429 | .btn-toolbar .btn-group {
3430 | float: left;
3431 | }
3432 |
3433 | .btn-toolbar > .btn + .btn,
3434 | .btn-toolbar > .btn-group + .btn,
3435 | .btn-toolbar > .btn + .btn-group,
3436 | .btn-toolbar > .btn-group + .btn-group {
3437 | margin-left: 5px;
3438 | }
3439 |
3440 | .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3441 | border-radius: 0;
3442 | }
3443 |
3444 | .btn-group > .btn:first-child {
3445 | margin-left: 0;
3446 | }
3447 |
3448 | .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3449 | border-top-right-radius: 0;
3450 | border-bottom-right-radius: 0;
3451 | }
3452 |
3453 | .btn-group > .btn:last-child:not(:first-child),
3454 | .btn-group > .dropdown-toggle:not(:first-child) {
3455 | border-bottom-left-radius: 0;
3456 | border-top-left-radius: 0;
3457 | }
3458 |
3459 | .btn-group > .btn-group {
3460 | float: left;
3461 | }
3462 |
3463 | .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3464 | border-radius: 0;
3465 | }
3466 |
3467 | .btn-group > .btn-group:first-child > .btn:last-child,
3468 | .btn-group > .btn-group:first-child > .dropdown-toggle {
3469 | border-top-right-radius: 0;
3470 | border-bottom-right-radius: 0;
3471 | }
3472 |
3473 | .btn-group > .btn-group:last-child > .btn:first-child {
3474 | border-bottom-left-radius: 0;
3475 | border-top-left-radius: 0;
3476 | }
3477 |
3478 | .btn-group .dropdown-toggle:active,
3479 | .btn-group.open .dropdown-toggle {
3480 | outline: 0;
3481 | }
3482 |
3483 | .btn-group-xs > .btn {
3484 | padding: 5px 10px;
3485 | padding: 1px 5px;
3486 | font-size: 12px;
3487 | line-height: 1.5;
3488 | border-radius: 3px;
3489 | }
3490 |
3491 | .btn-group-sm > .btn {
3492 | padding: 5px 10px;
3493 | font-size: 12px;
3494 | line-height: 1.5;
3495 | border-radius: 3px;
3496 | }
3497 |
3498 | .btn-group-lg > .btn {
3499 | padding: 10px 16px;
3500 | font-size: 18px;
3501 | line-height: 1.33;
3502 | border-radius: 6px;
3503 | }
3504 |
3505 | .btn-group > .btn + .dropdown-toggle {
3506 | padding-right: 8px;
3507 | padding-left: 8px;
3508 | }
3509 |
3510 | .btn-group > .btn-lg + .dropdown-toggle {
3511 | padding-right: 12px;
3512 | padding-left: 12px;
3513 | }
3514 |
3515 | .btn-group.open .dropdown-toggle {
3516 | -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3517 | box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3518 | }
3519 |
3520 | .btn .caret {
3521 | margin-left: 0;
3522 | }
3523 |
3524 | .btn-lg .caret {
3525 | border-width: 5px 5px 0;
3526 | border-bottom-width: 0;
3527 | }
3528 |
3529 | .dropup .btn-lg .caret {
3530 | border-width: 0 5px 5px;
3531 | }
3532 |
3533 | .btn-group-vertical > .btn,
3534 | .btn-group-vertical > .btn-group {
3535 | display: block;
3536 | float: none;
3537 | width: 100%;
3538 | max-width: 100%;
3539 | }
3540 |
3541 | .btn-group-vertical > .btn-group:before,
3542 | .btn-group-vertical > .btn-group:after {
3543 | display: table;
3544 | content: " ";
3545 | }
3546 |
3547 | .btn-group-vertical > .btn-group:after {
3548 | clear: both;
3549 | }
3550 |
3551 | .btn-group-vertical > .btn-group:before,
3552 | .btn-group-vertical > .btn-group:after {
3553 | display: table;
3554 | content: " ";
3555 | }
3556 |
3557 | .btn-group-vertical > .btn-group:after {
3558 | clear: both;
3559 | }
3560 |
3561 | .btn-group-vertical > .btn-group > .btn {
3562 | float: none;
3563 | }
3564 |
3565 | .btn-group-vertical > .btn + .btn,
3566 | .btn-group-vertical > .btn + .btn-group,
3567 | .btn-group-vertical > .btn-group + .btn,
3568 | .btn-group-vertical > .btn-group + .btn-group {
3569 | margin-top: -1px;
3570 | margin-left: 0;
3571 | }
3572 |
3573 | .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3574 | border-radius: 0;
3575 | }
3576 |
3577 | .btn-group-vertical > .btn:first-child:not(:last-child) {
3578 | border-top-right-radius: 4px;
3579 | border-bottom-right-radius: 0;
3580 | border-bottom-left-radius: 0;
3581 | }
3582 |
3583 | .btn-group-vertical > .btn:last-child:not(:first-child) {
3584 | border-top-right-radius: 0;
3585 | border-bottom-left-radius: 4px;
3586 | border-top-left-radius: 0;
3587 | }
3588 |
3589 | .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3590 | border-radius: 0;
3591 | }
3592 |
3593 | .btn-group-vertical > .btn-group:first-child > .btn:last-child,
3594 | .btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
3595 | border-bottom-right-radius: 0;
3596 | border-bottom-left-radius: 0;
3597 | }
3598 |
3599 | .btn-group-vertical > .btn-group:last-child > .btn:first-child {
3600 | border-top-right-radius: 0;
3601 | border-top-left-radius: 0;
3602 | }
3603 |
3604 | .btn-group-justified {
3605 | display: table;
3606 | width: 100%;
3607 | border-collapse: separate;
3608 | table-layout: fixed;
3609 | }
3610 |
3611 | .btn-group-justified .btn {
3612 | display: table-cell;
3613 | float: none;
3614 | width: 1%;
3615 | }
3616 |
3617 | [data-toggle="buttons"] > .btn > input[type="radio"],
3618 | [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3619 | display: none;
3620 | }
3621 |
3622 | .input-group {
3623 | position: relative;
3624 | display: table;
3625 | border-collapse: separate;
3626 | }
3627 |
3628 | .input-group.col {
3629 | float: none;
3630 | padding-right: 0;
3631 | padding-left: 0;
3632 | }
3633 |
3634 | .input-group .form-control {
3635 | width: 100%;
3636 | margin-bottom: 0;
3637 | }
3638 |
3639 | .input-group-lg > .form-control,
3640 | .input-group-lg > .input-group-addon,
3641 | .input-group-lg > .input-group-btn > .btn {
3642 | height: 45px;
3643 | padding: 10px 16px;
3644 | font-size: 18px;
3645 | line-height: 1.33;
3646 | border-radius: 6px;
3647 | }
3648 |
3649 | select.input-group-lg > .form-control,
3650 | select.input-group-lg > .input-group-addon,
3651 | select.input-group-lg > .input-group-btn > .btn {
3652 | height: 45px;
3653 | line-height: 45px;
3654 | }
3655 |
3656 | textarea.input-group-lg > .form-control,
3657 | textarea.input-group-lg > .input-group-addon,
3658 | textarea.input-group-lg > .input-group-btn > .btn {
3659 | height: auto;
3660 | }
3661 |
3662 | .input-group-sm > .form-control,
3663 | .input-group-sm > .input-group-addon,
3664 | .input-group-sm > .input-group-btn > .btn {
3665 | height: 30px;
3666 | padding: 5px 10px;
3667 | font-size: 12px;
3668 | line-height: 1.5;
3669 | border-radius: 3px;
3670 | }
3671 |
3672 | select.input-group-sm > .form-control,
3673 | select.input-group-sm > .input-group-addon,
3674 | select.input-group-sm > .input-group-btn > .btn {
3675 | height: 30px;
3676 | line-height: 30px;
3677 | }
3678 |
3679 | textarea.input-group-sm > .form-control,
3680 | textarea.input-group-sm > .input-group-addon,
3681 | textarea.input-group-sm > .input-group-btn > .btn {
3682 | height: auto;
3683 | }
3684 |
3685 | .input-group-addon,
3686 | .input-group-btn,
3687 | .input-group .form-control {
3688 | display: table-cell;
3689 | }
3690 |
3691 | .input-group-addon:not(:first-child):not(:last-child),
3692 | .input-group-btn:not(:first-child):not(:last-child),
3693 | .input-group .form-control:not(:first-child):not(:last-child) {
3694 | border-radius: 0;
3695 | }
3696 |
3697 | .input-group-addon,
3698 | .input-group-btn {
3699 | width: 1%;
3700 | white-space: nowrap;
3701 | vertical-align: middle;
3702 | }
3703 |
3704 | .input-group-addon {
3705 | padding: 6px 12px;
3706 | font-size: 14px;
3707 | font-weight: normal;
3708 | line-height: 1;
3709 | text-align: center;
3710 | background-color: #eeeeee;
3711 | border: 1px solid #cccccc;
3712 | border-radius: 4px;
3713 | }
3714 |
3715 | .input-group-addon.input-sm {
3716 | padding: 5px 10px;
3717 | font-size: 12px;
3718 | border-radius: 3px;
3719 | }
3720 |
3721 | .input-group-addon.input-lg {
3722 | padding: 10px 16px;
3723 | font-size: 18px;
3724 | border-radius: 6px;
3725 | }
3726 |
3727 | .input-group-addon input[type="radio"],
3728 | .input-group-addon input[type="checkbox"] {
3729 | margin-top: 0;
3730 | }
3731 |
3732 | .input-group .form-control:first-child,
3733 | .input-group-addon:first-child,
3734 | .input-group-btn:first-child > .btn,
3735 | .input-group-btn:first-child > .dropdown-toggle,
3736 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
3737 | border-top-right-radius: 0;
3738 | border-bottom-right-radius: 0;
3739 | }
3740 |
3741 | .input-group-addon:first-child {
3742 | border-right: 0;
3743 | }
3744 |
3745 | .input-group .form-control:last-child,
3746 | .input-group-addon:last-child,
3747 | .input-group-btn:last-child > .btn,
3748 | .input-group-btn:last-child > .dropdown-toggle,
3749 | .input-group-btn:first-child > .btn:not(:first-child) {
3750 | border-bottom-left-radius: 0;
3751 | border-top-left-radius: 0;
3752 | }
3753 |
3754 | .input-group-addon:last-child {
3755 | border-left: 0;
3756 | }
3757 |
3758 | .input-group-btn {
3759 | position: relative;
3760 | white-space: nowrap;
3761 | }
3762 |
3763 | .input-group-btn > .btn {
3764 | position: relative;
3765 | }
3766 |
3767 | .input-group-btn > .btn + .btn {
3768 | margin-left: -4px;
3769 | }
3770 |
3771 | .input-group-btn > .btn:hover,
3772 | .input-group-btn > .btn:active {
3773 | z-index: 2;
3774 | }
3775 |
3776 | .nav {
3777 | padding-left: 0;
3778 | margin-bottom: 0;
3779 | list-style: none;
3780 | }
3781 |
3782 | .nav:before,
3783 | .nav:after {
3784 | display: table;
3785 | content: " ";
3786 | }
3787 |
3788 | .nav:after {
3789 | clear: both;
3790 | }
3791 |
3792 | .nav:before,
3793 | .nav:after {
3794 | display: table;
3795 | content: " ";
3796 | }
3797 |
3798 | .nav:after {
3799 | clear: both;
3800 | }
3801 |
3802 | .nav > li {
3803 | position: relative;
3804 | display: block;
3805 | }
3806 |
3807 | .nav > li > a {
3808 | position: relative;
3809 | display: block;
3810 | padding: 10px 15px;
3811 | }
3812 |
3813 | .nav > li > a:hover,
3814 | .nav > li > a:focus {
3815 | text-decoration: none;
3816 | background-color: #eeeeee;
3817 | }
3818 |
3819 | .nav > li.disabled > a {
3820 | color: #999999;
3821 | }
3822 |
3823 | .nav > li.disabled > a:hover,
3824 | .nav > li.disabled > a:focus {
3825 | color: #999999;
3826 | text-decoration: none;
3827 | cursor: not-allowed;
3828 | background-color: transparent;
3829 | }
3830 |
3831 | .nav .open > a,
3832 | .nav .open > a:hover,
3833 | .nav .open > a:focus {
3834 | background-color: #eeeeee;
3835 | border-color: #428bca;
3836 | }
3837 |
3838 | .nav .nav-divider {
3839 | height: 1px;
3840 | margin: 9px 0;
3841 | overflow: hidden;
3842 | background-color: #e5e5e5;
3843 | }
3844 |
3845 | .nav > li > a > img {
3846 | max-width: none;
3847 | }
3848 |
3849 | .nav-tabs {
3850 | border-bottom: 1px solid #dddddd;
3851 | }
3852 |
3853 | .nav-tabs > li {
3854 | float: left;
3855 | margin-bottom: -1px;
3856 | }
3857 |
3858 | .nav-tabs > li > a {
3859 | margin-right: 2px;
3860 | line-height: 1.428571429;
3861 | border: 1px solid transparent;
3862 | border-radius: 4px 4px 0 0;
3863 | }
3864 |
3865 | .nav-tabs > li > a:hover {
3866 | border-color: #eeeeee #eeeeee #dddddd;
3867 | }
3868 |
3869 | .nav-tabs > li.active > a,
3870 | .nav-tabs > li.active > a:hover,
3871 | .nav-tabs > li.active > a:focus {
3872 | color: #555555;
3873 | cursor: default;
3874 | background-color: #ffffff;
3875 | border: 1px solid #dddddd;
3876 | border-bottom-color: transparent;
3877 | }
3878 |
3879 | .nav-tabs.nav-justified {
3880 | width: 100%;
3881 | border-bottom: 0;
3882 | }
3883 |
3884 | .nav-tabs.nav-justified > li {
3885 | float: none;
3886 | }
3887 |
3888 | .nav-tabs.nav-justified > li > a {
3889 | text-align: center;
3890 | }
3891 |
3892 | @media (min-width: 768px) {
3893 | .nav-tabs.nav-justified > li {
3894 | display: table-cell;
3895 | width: 1%;
3896 | }
3897 | }
3898 |
3899 | .nav-tabs.nav-justified > li > a {
3900 | margin-right: 0;
3901 | border-bottom: 1px solid #dddddd;
3902 | }
3903 |
3904 | .nav-tabs.nav-justified > .active > a {
3905 | border-bottom-color: #ffffff;
3906 | }
3907 |
3908 | .nav-pills > li {
3909 | float: left;
3910 | }
3911 |
3912 | .nav-pills > li > a {
3913 | border-radius: 5px;
3914 | }
3915 |
3916 | .nav-pills > li + li {
3917 | margin-left: 2px;
3918 | }
3919 |
3920 | .nav-pills > li.active > a,
3921 | .nav-pills > li.active > a:hover,
3922 | .nav-pills > li.active > a:focus {
3923 | color: #ffffff;
3924 | background-color: #428bca;
3925 | }
3926 |
3927 | .nav-stacked > li {
3928 | float: none;
3929 | }
3930 |
3931 | .nav-stacked > li + li {
3932 | margin-top: 2px;
3933 | margin-left: 0;
3934 | }
3935 |
3936 | .nav-justified {
3937 | width: 100%;
3938 | }
3939 |
3940 | .nav-justified > li {
3941 | float: none;
3942 | }
3943 |
3944 | .nav-justified > li > a {
3945 | text-align: center;
3946 | }
3947 |
3948 | @media (min-width: 768px) {
3949 | .nav-justified > li {
3950 | display: table-cell;
3951 | width: 1%;
3952 | }
3953 | }
3954 |
3955 | .nav-tabs-justified {
3956 | border-bottom: 0;
3957 | }
3958 |
3959 | .nav-tabs-justified > li > a {
3960 | margin-right: 0;
3961 | border-bottom: 1px solid #dddddd;
3962 | }
3963 |
3964 | .nav-tabs-justified > .active > a {
3965 | border-bottom-color: #ffffff;
3966 | }
3967 |
3968 | .tabbable:before,
3969 | .tabbable:after {
3970 | display: table;
3971 | content: " ";
3972 | }
3973 |
3974 | .tabbable:after {
3975 | clear: both;
3976 | }
3977 |
3978 | .tabbable:before,
3979 | .tabbable:after {
3980 | display: table;
3981 | content: " ";
3982 | }
3983 |
3984 | .tabbable:after {
3985 | clear: both;
3986 | }
3987 |
3988 | .tab-content > .tab-pane,
3989 | .pill-content > .pill-pane {
3990 | display: none;
3991 | }
3992 |
3993 | .tab-content > .active,
3994 | .pill-content > .active {
3995 | display: block;
3996 | }
3997 |
3998 | .nav .caret {
3999 | border-top-color: #428bca;
4000 | border-bottom-color: #428bca;
4001 | }
4002 |
4003 | .nav a:hover .caret {
4004 | border-top-color: #2a6496;
4005 | border-bottom-color: #2a6496;
4006 | }
4007 |
4008 | .nav-tabs .dropdown-menu {
4009 | margin-top: -1px;
4010 | border-top-right-radius: 0;
4011 | border-top-left-radius: 0;
4012 | }
4013 |
4014 | .navbar {
4015 | position: relative;
4016 | z-index: 1000;
4017 | min-height: 50px;
4018 | margin-bottom: 20px;
4019 | border: 1px solid transparent;
4020 | }
4021 |
4022 | .navbar:before,
4023 | .navbar:after {
4024 | display: table;
4025 | content: " ";
4026 | }
4027 |
4028 | .navbar:after {
4029 | clear: both;
4030 | }
4031 |
4032 | .navbar:before,
4033 | .navbar:after {
4034 | display: table;
4035 | content: " ";
4036 | }
4037 |
4038 | .navbar:after {
4039 | clear: both;
4040 | }
4041 |
4042 | @media (min-width: 768px) {
4043 | .navbar {
4044 | border-radius: 4px;
4045 | }
4046 | }
4047 |
4048 | .navbar-header:before,
4049 | .navbar-header:after {
4050 | display: table;
4051 | content: " ";
4052 | }
4053 |
4054 | .navbar-header:after {
4055 | clear: both;
4056 | }
4057 |
4058 | .navbar-header:before,
4059 | .navbar-header:after {
4060 | display: table;
4061 | content: " ";
4062 | }
4063 |
4064 | .navbar-header:after {
4065 | clear: both;
4066 | }
4067 |
4068 | @media (min-width: 768px) {
4069 | .navbar-header {
4070 | float: left;
4071 | }
4072 | }
4073 |
4074 | .navbar-collapse {
4075 | max-height: 340px;
4076 | padding-right: 15px;
4077 | padding-left: 15px;
4078 | overflow-x: visible;
4079 | border-top: 1px solid transparent;
4080 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4081 | -webkit-overflow-scrolling: touch;
4082 | }
4083 |
4084 | .navbar-collapse:before,
4085 | .navbar-collapse:after {
4086 | display: table;
4087 | content: " ";
4088 | }
4089 |
4090 | .navbar-collapse:after {
4091 | clear: both;
4092 | }
4093 |
4094 | .navbar-collapse:before,
4095 | .navbar-collapse:after {
4096 | display: table;
4097 | content: " ";
4098 | }
4099 |
4100 | .navbar-collapse:after {
4101 | clear: both;
4102 | }
4103 |
4104 | .navbar-collapse.in {
4105 | overflow-y: auto;
4106 | }
4107 |
4108 | @media (min-width: 768px) {
4109 | .navbar-collapse {
4110 | width: auto;
4111 | border-top: 0;
4112 | box-shadow: none;
4113 | }
4114 | .navbar-collapse.collapse {
4115 | display: block !important;
4116 | height: auto !important;
4117 | padding-bottom: 0;
4118 | overflow: visible !important;
4119 | }
4120 | .navbar-collapse.in {
4121 | overflow-y: visible;
4122 | }
4123 | .navbar-collapse .navbar-nav.navbar-left:first-child {
4124 | margin-left: -15px;
4125 | }
4126 | .navbar-collapse .navbar-nav.navbar-right:last-child {
4127 | margin-right: -15px;
4128 | }
4129 | .navbar-collapse .navbar-text:last-child {
4130 | margin-right: 0;
4131 | }
4132 | }
4133 |
4134 | .container > .navbar-header,
4135 | .container > .navbar-collapse {
4136 | margin-right: -15px;
4137 | margin-left: -15px;
4138 | }
4139 |
4140 | @media (min-width: 768px) {
4141 | .container > .navbar-header,
4142 | .container > .navbar-collapse {
4143 | margin-right: 0;
4144 | margin-left: 0;
4145 | }
4146 | }
4147 |
4148 | .navbar-static-top {
4149 | border-width: 0 0 1px;
4150 | }
4151 |
4152 | @media (min-width: 768px) {
4153 | .navbar-static-top {
4154 | border-radius: 0;
4155 | }
4156 | }
4157 |
4158 | .navbar-fixed-top,
4159 | .navbar-fixed-bottom {
4160 | position: fixed;
4161 | right: 0;
4162 | left: 0;
4163 | border-width: 0 0 1px;
4164 | }
4165 |
4166 | @media (min-width: 768px) {
4167 | .navbar-fixed-top,
4168 | .navbar-fixed-bottom {
4169 | border-radius: 0;
4170 | }
4171 | }
4172 |
4173 | .navbar-fixed-top {
4174 | top: 0;
4175 | z-index: 1030;
4176 | }
4177 |
4178 | .navbar-fixed-bottom {
4179 | bottom: 0;
4180 | margin-bottom: 0;
4181 | }
4182 |
4183 | .navbar-brand {
4184 | float: left;
4185 | padding: 15px 15px;
4186 | font-size: 18px;
4187 | line-height: 20px;
4188 | }
4189 |
4190 | .navbar-brand:hover,
4191 | .navbar-brand:focus {
4192 | text-decoration: none;
4193 | }
4194 |
4195 | @media (min-width: 768px) {
4196 | .navbar > .container .navbar-brand {
4197 | margin-left: -15px;
4198 | }
4199 | }
4200 |
4201 | .navbar-toggle {
4202 | position: relative;
4203 | float: right;
4204 | padding: 9px 10px;
4205 | margin-top: 8px;
4206 | margin-right: 15px;
4207 | margin-bottom: 8px;
4208 | background-color: transparent;
4209 | border: 1px solid transparent;
4210 | border-radius: 4px;
4211 | }
4212 |
4213 | .navbar-toggle .icon-bar {
4214 | display: block;
4215 | width: 22px;
4216 | height: 2px;
4217 | border-radius: 1px;
4218 | }
4219 |
4220 | .navbar-toggle .icon-bar + .icon-bar {
4221 | margin-top: 4px;
4222 | }
4223 |
4224 | @media (min-width: 768px) {
4225 | .navbar-toggle {
4226 | display: none;
4227 | }
4228 | }
4229 |
4230 | .navbar-nav {
4231 | margin: 7.5px -15px;
4232 | }
4233 |
4234 | .navbar-nav > li > a {
4235 | padding-top: 10px;
4236 | padding-bottom: 10px;
4237 | line-height: 20px;
4238 | }
4239 |
4240 | @media (max-width: 767px) {
4241 | .navbar-nav .open .dropdown-menu {
4242 | position: static;
4243 | float: none;
4244 | width: auto;
4245 | margin-top: 0;
4246 | background-color: transparent;
4247 | border: 0;
4248 | box-shadow: none;
4249 | }
4250 | .navbar-nav .open .dropdown-menu > li > a,
4251 | .navbar-nav .open .dropdown-menu .dropdown-header {
4252 | padding: 5px 15px 5px 25px;
4253 | }
4254 | .navbar-nav .open .dropdown-menu > li > a {
4255 | line-height: 20px;
4256 | }
4257 | .navbar-nav .open .dropdown-menu > li > a:hover,
4258 | .navbar-nav .open .dropdown-menu > li > a:focus {
4259 | background-image: none;
4260 | }
4261 | }
4262 |
4263 | @media (min-width: 768px) {
4264 | .navbar-nav {
4265 | float: left;
4266 | margin: 0;
4267 | }
4268 | .navbar-nav > li {
4269 | float: left;
4270 | }
4271 | .navbar-nav > li > a {
4272 | padding-top: 15px;
4273 | padding-bottom: 15px;
4274 | }
4275 | }
4276 |
4277 | @media (min-width: 768px) {
4278 | .navbar-left {
4279 | float: left !important;
4280 | }
4281 | .navbar-right {
4282 | float: right !important;
4283 | }
4284 | }
4285 |
4286 | .navbar-form {
4287 | padding: 10px 15px;
4288 | margin-top: 8px;
4289 | margin-right: -15px;
4290 | margin-bottom: 8px;
4291 | margin-left: -15px;
4292 | border-top: 1px solid transparent;
4293 | border-bottom: 1px solid transparent;
4294 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4295 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4296 | }
4297 |
4298 | @media (min-width: 768px) {
4299 | .navbar-form .form-group {
4300 | display: inline-block;
4301 | margin-bottom: 0;
4302 | vertical-align: middle;
4303 | }
4304 | .navbar-form .form-control {
4305 | display: inline-block;
4306 | }
4307 | .navbar-form .radio,
4308 | .navbar-form .checkbox {
4309 | display: inline-block;
4310 | padding-left: 0;
4311 | margin-top: 0;
4312 | margin-bottom: 0;
4313 | }
4314 | .navbar-form .radio input[type="radio"],
4315 | .navbar-form .checkbox input[type="checkbox"] {
4316 | float: none;
4317 | margin-left: 0;
4318 | }
4319 | }
4320 |
4321 | @media (max-width: 767px) {
4322 | .navbar-form .form-group {
4323 | margin-bottom: 5px;
4324 | }
4325 | }
4326 |
4327 | @media (min-width: 768px) {
4328 | .navbar-form {
4329 | width: auto;
4330 | padding-top: 0;
4331 | padding-bottom: 0;
4332 | margin-right: 0;
4333 | margin-left: 0;
4334 | border: 0;
4335 | -webkit-box-shadow: none;
4336 | box-shadow: none;
4337 | }
4338 | }
4339 |
4340 | .navbar-nav > li > .dropdown-menu {
4341 | margin-top: 0;
4342 | border-top-right-radius: 0;
4343 | border-top-left-radius: 0;
4344 | }
4345 |
4346 | .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4347 | border-bottom-right-radius: 0;
4348 | border-bottom-left-radius: 0;
4349 | }
4350 |
4351 | .navbar-nav.pull-right > li > .dropdown-menu,
4352 | .navbar-nav > li > .dropdown-menu.pull-right {
4353 | right: 0;
4354 | left: auto;
4355 | }
4356 |
4357 | .navbar-btn {
4358 | margin-top: 8px;
4359 | margin-bottom: 8px;
4360 | }
4361 |
4362 | .navbar-text {
4363 | float: left;
4364 | margin-top: 15px;
4365 | margin-bottom: 15px;
4366 | }
4367 |
4368 | @media (min-width: 768px) {
4369 | .navbar-text {
4370 | margin-right: 15px;
4371 | margin-left: 15px;
4372 | }
4373 | }
4374 |
4375 | .navbar-default {
4376 | background-color: #f8f8f8;
4377 | border-color: #e7e7e7;
4378 | }
4379 |
4380 | .navbar-default .navbar-brand {
4381 | color: #777777;
4382 | }
4383 |
4384 | .navbar-default .navbar-brand:hover,
4385 | .navbar-default .navbar-brand:focus {
4386 | color: #5e5e5e;
4387 | background-color: transparent;
4388 | }
4389 |
4390 | .navbar-default .navbar-text {
4391 | color: #777777;
4392 | }
4393 |
4394 | .navbar-default .navbar-nav > li > a {
4395 | color: #777777;
4396 | }
4397 |
4398 | .navbar-default .navbar-nav > li > a:hover,
4399 | .navbar-default .navbar-nav > li > a:focus {
4400 | color: #333333;
4401 | background-color: transparent;
4402 | }
4403 |
4404 | .navbar-default .navbar-nav > .active > a,
4405 | .navbar-default .navbar-nav > .active > a:hover,
4406 | .navbar-default .navbar-nav > .active > a:focus {
4407 | color: #555555;
4408 | background-color: #e7e7e7;
4409 | }
4410 |
4411 | .navbar-default .navbar-nav > .disabled > a,
4412 | .navbar-default .navbar-nav > .disabled > a:hover,
4413 | .navbar-default .navbar-nav > .disabled > a:focus {
4414 | color: #cccccc;
4415 | background-color: transparent;
4416 | }
4417 |
4418 | .navbar-default .navbar-toggle {
4419 | border-color: #dddddd;
4420 | }
4421 |
4422 | .navbar-default .navbar-toggle:hover,
4423 | .navbar-default .navbar-toggle:focus {
4424 | background-color: #dddddd;
4425 | }
4426 |
4427 | .navbar-default .navbar-toggle .icon-bar {
4428 | background-color: #cccccc;
4429 | }
4430 |
4431 | .navbar-default .navbar-collapse,
4432 | .navbar-default .navbar-form {
4433 | border-color: #e6e6e6;
4434 | }
4435 |
4436 | .navbar-default .navbar-nav > .dropdown > a:hover .caret,
4437 | .navbar-default .navbar-nav > .dropdown > a:focus .caret {
4438 | border-top-color: #333333;
4439 | border-bottom-color: #333333;
4440 | }
4441 |
4442 | .navbar-default .navbar-nav > .open > a,
4443 | .navbar-default .navbar-nav > .open > a:hover,
4444 | .navbar-default .navbar-nav > .open > a:focus {
4445 | color: #555555;
4446 | background-color: #e7e7e7;
4447 | }
4448 |
4449 | .navbar-default .navbar-nav > .open > a .caret,
4450 | .navbar-default .navbar-nav > .open > a:hover .caret,
4451 | .navbar-default .navbar-nav > .open > a:focus .caret {
4452 | border-top-color: #555555;
4453 | border-bottom-color: #555555;
4454 | }
4455 |
4456 | .navbar-default .navbar-nav > .dropdown > a .caret {
4457 | border-top-color: #777777;
4458 | border-bottom-color: #777777;
4459 | }
4460 |
4461 | @media (max-width: 767px) {
4462 | .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4463 | color: #777777;
4464 | }
4465 | .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4466 | .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4467 | color: #333333;
4468 | background-color: transparent;
4469 | }
4470 | .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4471 | .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4472 | .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4473 | color: #555555;
4474 | background-color: #e7e7e7;
4475 | }
4476 | .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4477 | .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4478 | .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4479 | color: #cccccc;
4480 | background-color: transparent;
4481 | }
4482 | }
4483 |
4484 | .navbar-default .navbar-link {
4485 | color: #777777;
4486 | }
4487 |
4488 | .navbar-default .navbar-link:hover {
4489 | color: #333333;
4490 | }
4491 |
4492 | .navbar-inverse {
4493 | background-color: #222222;
4494 | border-color: #080808;
4495 | }
4496 |
4497 | .navbar-inverse .navbar-brand {
4498 | color: #999999;
4499 | }
4500 |
4501 | .navbar-inverse .navbar-brand:hover,
4502 | .navbar-inverse .navbar-brand:focus {
4503 | color: #ffffff;
4504 | background-color: transparent;
4505 | }
4506 |
4507 | .navbar-inverse .navbar-text {
4508 | color: #999999;
4509 | }
4510 |
4511 | .navbar-inverse .navbar-nav > li > a {
4512 | color: #999999;
4513 | }
4514 |
4515 | .navbar-inverse .navbar-nav > li > a:hover,
4516 | .navbar-inverse .navbar-nav > li > a:focus {
4517 | color: #ffffff;
4518 | background-color: transparent;
4519 | }
4520 |
4521 | .navbar-inverse .navbar-nav > .active > a,
4522 | .navbar-inverse .navbar-nav > .active > a:hover,
4523 | .navbar-inverse .navbar-nav > .active > a:focus {
4524 | color: #ffffff;
4525 | background-color: #080808;
4526 | }
4527 |
4528 | .navbar-inverse .navbar-nav > .disabled > a,
4529 | .navbar-inverse .navbar-nav > .disabled > a:hover,
4530 | .navbar-inverse .navbar-nav > .disabled > a:focus {
4531 | color: #444444;
4532 | background-color: transparent;
4533 | }
4534 |
4535 | .navbar-inverse .navbar-toggle {
4536 | border-color: #333333;
4537 | }
4538 |
4539 | .navbar-inverse .navbar-toggle:hover,
4540 | .navbar-inverse .navbar-toggle:focus {
4541 | background-color: #333333;
4542 | }
4543 |
4544 | .navbar-inverse .navbar-toggle .icon-bar {
4545 | background-color: #ffffff;
4546 | }
4547 |
4548 | .navbar-inverse .navbar-collapse,
4549 | .navbar-inverse .navbar-form {
4550 | border-color: #101010;
4551 | }
4552 |
4553 | .navbar-inverse .navbar-nav > .open > a,
4554 | .navbar-inverse .navbar-nav > .open > a:hover,
4555 | .navbar-inverse .navbar-nav > .open > a:focus {
4556 | color: #ffffff;
4557 | background-color: #080808;
4558 | }
4559 |
4560 | .navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
4561 | border-top-color: #ffffff;
4562 | border-bottom-color: #ffffff;
4563 | }
4564 |
4565 | .navbar-inverse .navbar-nav > .dropdown > a .caret {
4566 | border-top-color: #999999;
4567 | border-bottom-color: #999999;
4568 | }
4569 |
4570 | .navbar-inverse .navbar-nav > .open > a .caret,
4571 | .navbar-inverse .navbar-nav > .open > a:hover .caret,
4572 | .navbar-inverse .navbar-nav > .open > a:focus .caret {
4573 | border-top-color: #ffffff;
4574 | border-bottom-color: #ffffff;
4575 | }
4576 |
4577 | @media (max-width: 767px) {
4578 | .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4579 | border-color: #080808;
4580 | }
4581 | .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4582 | color: #999999;
4583 | }
4584 | .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4585 | .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4586 | color: #ffffff;
4587 | background-color: transparent;
4588 | }
4589 | .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4590 | .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4591 | .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4592 | color: #ffffff;
4593 | background-color: #080808;
4594 | }
4595 | .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4596 | .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4597 | .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4598 | color: #444444;
4599 | background-color: transparent;
4600 | }
4601 | }
4602 |
4603 | .navbar-inverse .navbar-link {
4604 | color: #999999;
4605 | }
4606 |
4607 | .navbar-inverse .navbar-link:hover {
4608 | color: #ffffff;
4609 | }
4610 |
4611 | .breadcrumb {
4612 | padding: 8px 15px;
4613 | margin-bottom: 20px;
4614 | list-style: none;
4615 | background-color: #f5f5f5;
4616 | border-radius: 4px;
4617 | }
4618 |
4619 | .breadcrumb > li {
4620 | display: inline-block;
4621 | }
4622 |
4623 | .breadcrumb > li + li:before {
4624 | padding: 0 5px;
4625 | color: #cccccc;
4626 | content: "/\00a0";
4627 | }
4628 |
4629 | .breadcrumb > .active {
4630 | color: #999999;
4631 | }
4632 |
4633 | .pagination {
4634 | display: inline-block;
4635 | padding-left: 0;
4636 | margin: 20px 0;
4637 | border-radius: 4px;
4638 | }
4639 |
4640 | .pagination > li {
4641 | display: inline;
4642 | }
4643 |
4644 | .pagination > li > a,
4645 | .pagination > li > span {
4646 | position: relative;
4647 | float: left;
4648 | padding: 6px 12px;
4649 | margin-left: -1px;
4650 | line-height: 1.428571429;
4651 | text-decoration: none;
4652 | background-color: #ffffff;
4653 | border: 1px solid #dddddd;
4654 | }
4655 |
4656 | .pagination > li:first-child > a,
4657 | .pagination > li:first-child > span {
4658 | margin-left: 0;
4659 | border-bottom-left-radius: 4px;
4660 | border-top-left-radius: 4px;
4661 | }
4662 |
4663 | .pagination > li:last-child > a,
4664 | .pagination > li:last-child > span {
4665 | border-top-right-radius: 4px;
4666 | border-bottom-right-radius: 4px;
4667 | }
4668 |
4669 | .pagination > li > a:hover,
4670 | .pagination > li > span:hover,
4671 | .pagination > li > a:focus,
4672 | .pagination > li > span:focus {
4673 | background-color: #eeeeee;
4674 | }
4675 |
4676 | .pagination > .active > a,
4677 | .pagination > .active > span,
4678 | .pagination > .active > a:hover,
4679 | .pagination > .active > span:hover,
4680 | .pagination > .active > a:focus,
4681 | .pagination > .active > span:focus {
4682 | z-index: 2;
4683 | color: #ffffff;
4684 | cursor: default;
4685 | background-color: #428bca;
4686 | border-color: #428bca;
4687 | }
4688 |
4689 | .pagination > .disabled > span,
4690 | .pagination > .disabled > a,
4691 | .pagination > .disabled > a:hover,
4692 | .pagination > .disabled > a:focus {
4693 | color: #999999;
4694 | cursor: not-allowed;
4695 | background-color: #ffffff;
4696 | border-color: #dddddd;
4697 | }
4698 |
4699 | .pagination-lg > li > a,
4700 | .pagination-lg > li > span {
4701 | padding: 10px 16px;
4702 | font-size: 18px;
4703 | }
4704 |
4705 | .pagination-lg > li:first-child > a,
4706 | .pagination-lg > li:first-child > span {
4707 | border-bottom-left-radius: 6px;
4708 | border-top-left-radius: 6px;
4709 | }
4710 |
4711 | .pagination-lg > li:last-child > a,
4712 | .pagination-lg > li:last-child > span {
4713 | border-top-right-radius: 6px;
4714 | border-bottom-right-radius: 6px;
4715 | }
4716 |
4717 | .pagination-sm > li > a,
4718 | .pagination-sm > li > span {
4719 | padding: 5px 10px;
4720 | font-size: 12px;
4721 | }
4722 |
4723 | .pagination-sm > li:first-child > a,
4724 | .pagination-sm > li:first-child > span {
4725 | border-bottom-left-radius: 3px;
4726 | border-top-left-radius: 3px;
4727 | }
4728 |
4729 | .pagination-sm > li:last-child > a,
4730 | .pagination-sm > li:last-child > span {
4731 | border-top-right-radius: 3px;
4732 | border-bottom-right-radius: 3px;
4733 | }
4734 |
4735 | .pager {
4736 | padding-left: 0;
4737 | margin: 20px 0;
4738 | text-align: center;
4739 | list-style: none;
4740 | }
4741 |
4742 | .pager:before,
4743 | .pager:after {
4744 | display: table;
4745 | content: " ";
4746 | }
4747 |
4748 | .pager:after {
4749 | clear: both;
4750 | }
4751 |
4752 | .pager:before,
4753 | .pager:after {
4754 | display: table;
4755 | content: " ";
4756 | }
4757 |
4758 | .pager:after {
4759 | clear: both;
4760 | }
4761 |
4762 | .pager li {
4763 | display: inline;
4764 | }
4765 |
4766 | .pager li > a,
4767 | .pager li > span {
4768 | display: inline-block;
4769 | padding: 5px 14px;
4770 | background-color: #ffffff;
4771 | border: 1px solid #dddddd;
4772 | border-radius: 15px;
4773 | }
4774 |
4775 | .pager li > a:hover,
4776 | .pager li > a:focus {
4777 | text-decoration: none;
4778 | background-color: #eeeeee;
4779 | }
4780 |
4781 | .pager .next > a,
4782 | .pager .next > span {
4783 | float: right;
4784 | }
4785 |
4786 | .pager .previous > a,
4787 | .pager .previous > span {
4788 | float: left;
4789 | }
4790 |
4791 | .pager .disabled > a,
4792 | .pager .disabled > a:hover,
4793 | .pager .disabled > a:focus,
4794 | .pager .disabled > span {
4795 | color: #999999;
4796 | cursor: not-allowed;
4797 | background-color: #ffffff;
4798 | }
4799 |
4800 | .label {
4801 | display: inline;
4802 | padding: .2em .6em .3em;
4803 | font-size: 75%;
4804 | font-weight: bold;
4805 | line-height: 1;
4806 | color: #ffffff;
4807 | text-align: center;
4808 | white-space: nowrap;
4809 | vertical-align: baseline;
4810 | border-radius: .25em;
4811 | }
4812 |
4813 | .label[href]:hover,
4814 | .label[href]:focus {
4815 | color: #ffffff;
4816 | text-decoration: none;
4817 | cursor: pointer;
4818 | }
4819 |
4820 | .label:empty {
4821 | display: none;
4822 | }
4823 |
4824 | .label-default {
4825 | background-color: #999999;
4826 | }
4827 |
4828 | .label-default[href]:hover,
4829 | .label-default[href]:focus {
4830 | background-color: #808080;
4831 | }
4832 |
4833 | .label-primary {
4834 | background-color: #428bca;
4835 | }
4836 |
4837 | .label-primary[href]:hover,
4838 | .label-primary[href]:focus {
4839 | background-color: #3071a9;
4840 | }
4841 |
4842 | .label-success {
4843 | background-color: #5cb85c;
4844 | }
4845 |
4846 | .label-success[href]:hover,
4847 | .label-success[href]:focus {
4848 | background-color: #449d44;
4849 | }
4850 |
4851 | .label-info {
4852 | background-color: #5bc0de;
4853 | }
4854 |
4855 | .label-info[href]:hover,
4856 | .label-info[href]:focus {
4857 | background-color: #31b0d5;
4858 | }
4859 |
4860 | .label-warning {
4861 | background-color: #f0ad4e;
4862 | }
4863 |
4864 | .label-warning[href]:hover,
4865 | .label-warning[href]:focus {
4866 | background-color: #ec971f;
4867 | }
4868 |
4869 | .label-danger {
4870 | background-color: #d9534f;
4871 | }
4872 |
4873 | .label-danger[href]:hover,
4874 | .label-danger[href]:focus {
4875 | background-color: #c9302c;
4876 | }
4877 |
4878 | .badge {
4879 | display: inline-block;
4880 | min-width: 10px;
4881 | padding: 3px 7px;
4882 | font-size: 12px;
4883 | font-weight: bold;
4884 | line-height: 1;
4885 | color: #ffffff;
4886 | text-align: center;
4887 | white-space: nowrap;
4888 | vertical-align: baseline;
4889 | background-color: #999999;
4890 | border-radius: 10px;
4891 | }
4892 |
4893 | .badge:empty {
4894 | display: none;
4895 | }
4896 |
4897 | a.badge:hover,
4898 | a.badge:focus {
4899 | color: #ffffff;
4900 | text-decoration: none;
4901 | cursor: pointer;
4902 | }
4903 |
4904 | .btn .badge {
4905 | position: relative;
4906 | top: -1px;
4907 | }
4908 |
4909 | a.list-group-item.active > .badge,
4910 | .nav-pills > .active > a > .badge {
4911 | color: #428bca;
4912 | background-color: #ffffff;
4913 | }
4914 |
4915 | .nav-pills > li > a > .badge {
4916 | margin-left: 3px;
4917 | }
4918 |
4919 | .jumbotron {
4920 | padding: 30px;
4921 | margin-bottom: 30px;
4922 | font-size: 21px;
4923 | font-weight: 200;
4924 | line-height: 2.1428571435;
4925 | color: inherit;
4926 | background-color: #eeeeee;
4927 | }
4928 |
4929 | .jumbotron h1 {
4930 | line-height: 1;
4931 | color: inherit;
4932 | }
4933 |
4934 | .jumbotron p {
4935 | line-height: 1.4;
4936 | }
4937 |
4938 | .container .jumbotron {
4939 | border-radius: 6px;
4940 | }
4941 |
4942 | @media screen and (min-width: 768px) {
4943 | .jumbotron {
4944 | padding-top: 48px;
4945 | padding-bottom: 48px;
4946 | }
4947 | .container .jumbotron {
4948 | padding-right: 60px;
4949 | padding-left: 60px;
4950 | }
4951 | .jumbotron h1 {
4952 | font-size: 63px;
4953 | }
4954 | }
4955 |
4956 | .thumbnail {
4957 | display: inline-block;
4958 | display: block;
4959 | height: auto;
4960 | max-width: 100%;
4961 | padding: 4px;
4962 | line-height: 1.428571429;
4963 | background-color: #ffffff;
4964 | border: 1px solid #dddddd;
4965 | border-radius: 4px;
4966 | -webkit-transition: all 0.2s ease-in-out;
4967 | transition: all 0.2s ease-in-out;
4968 | }
4969 |
4970 | .thumbnail > img {
4971 | display: block;
4972 | height: auto;
4973 | max-width: 100%;
4974 | }
4975 |
4976 | a.thumbnail:hover,
4977 | a.thumbnail:focus {
4978 | border-color: #428bca;
4979 | }
4980 |
4981 | .thumbnail > img {
4982 | margin-right: auto;
4983 | margin-left: auto;
4984 | }
4985 |
4986 | .thumbnail .caption {
4987 | padding: 9px;
4988 | color: #333333;
4989 | }
4990 |
4991 | .alert {
4992 | padding: 15px;
4993 | margin-bottom: 20px;
4994 | border: 1px solid transparent;
4995 | border-radius: 4px;
4996 | }
4997 |
4998 | .alert h4 {
4999 | margin-top: 0;
5000 | color: inherit;
5001 | }
5002 |
5003 | .alert .alert-link {
5004 | font-weight: bold;
5005 | }
5006 |
5007 | .alert > p,
5008 | .alert > ul {
5009 | margin-bottom: 0;
5010 | }
5011 |
5012 | .alert > p + p {
5013 | margin-top: 5px;
5014 | }
5015 |
5016 | .alert-dismissable {
5017 | padding-right: 35px;
5018 | }
5019 |
5020 | .alert-dismissable .close {
5021 | position: relative;
5022 | top: -2px;
5023 | right: -21px;
5024 | color: inherit;
5025 | }
5026 |
5027 | .alert-success {
5028 | color: #468847;
5029 | background-color: #dff0d8;
5030 | border-color: #d6e9c6;
5031 | }
5032 |
5033 | .alert-success hr {
5034 | border-top-color: #c9e2b3;
5035 | }
5036 |
5037 | .alert-success .alert-link {
5038 | color: #356635;
5039 | }
5040 |
5041 | .alert-info {
5042 | color: #3a87ad;
5043 | background-color: #d9edf7;
5044 | border-color: #bce8f1;
5045 | }
5046 |
5047 | .alert-info hr {
5048 | border-top-color: #a6e1ec;
5049 | }
5050 |
5051 | .alert-info .alert-link {
5052 | color: #2d6987;
5053 | }
5054 |
5055 | .alert-warning {
5056 | color: #c09853;
5057 | background-color: #fcf8e3;
5058 | border-color: #fbeed5;
5059 | }
5060 |
5061 | .alert-warning hr {
5062 | border-top-color: #f8e5be;
5063 | }
5064 |
5065 | .alert-warning .alert-link {
5066 | color: #a47e3c;
5067 | }
5068 |
5069 | .alert-danger {
5070 | color: #b94a48;
5071 | background-color: #f2dede;
5072 | border-color: #eed3d7;
5073 | }
5074 |
5075 | .alert-danger hr {
5076 | border-top-color: #e6c1c7;
5077 | }
5078 |
5079 | .alert-danger .alert-link {
5080 | color: #953b39;
5081 | }
5082 |
5083 | @-webkit-keyframes progress-bar-stripes {
5084 | from {
5085 | background-position: 40px 0;
5086 | }
5087 | to {
5088 | background-position: 0 0;
5089 | }
5090 | }
5091 |
5092 | @-moz-keyframes progress-bar-stripes {
5093 | from {
5094 | background-position: 40px 0;
5095 | }
5096 | to {
5097 | background-position: 0 0;
5098 | }
5099 | }
5100 |
5101 | @-o-keyframes progress-bar-stripes {
5102 | from {
5103 | background-position: 0 0;
5104 | }
5105 | to {
5106 | background-position: 40px 0;
5107 | }
5108 | }
5109 |
5110 | @keyframes progress-bar-stripes {
5111 | from {
5112 | background-position: 40px 0;
5113 | }
5114 | to {
5115 | background-position: 0 0;
5116 | }
5117 | }
5118 |
5119 | .progress {
5120 | height: 20px;
5121 | margin-bottom: 20px;
5122 | overflow: hidden;
5123 | background-color: #f5f5f5;
5124 | border-radius: 4px;
5125 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5126 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5127 | }
5128 |
5129 | .progress-bar {
5130 | float: left;
5131 | width: 0;
5132 | height: 100%;
5133 | font-size: 12px;
5134 | color: #ffffff;
5135 | text-align: center;
5136 | background-color: #428bca;
5137 | -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5138 | box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5139 | -webkit-transition: width 0.6s ease;
5140 | transition: width 0.6s ease;
5141 | }
5142 |
5143 | .progress-striped .progress-bar {
5144 | background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5145 | 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);
5146 | background-image: -moz-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);
5147 | 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);
5148 | background-size: 40px 40px;
5149 | }
5150 |
5151 | .progress.active .progress-bar {
5152 | -webkit-animation: progress-bar-stripes 2s linear infinite;
5153 | -moz-animation: progress-bar-stripes 2s linear infinite;
5154 | -ms-animation: progress-bar-stripes 2s linear infinite;
5155 | -o-animation: progress-bar-stripes 2s linear infinite;
5156 | animation: progress-bar-stripes 2s linear infinite;
5157 | }
5158 |
5159 | .progress-bar-success {
5160 | background-color: #5cb85c;
5161 | }
5162 |
5163 | .progress-striped .progress-bar-success {
5164 | background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5165 | 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);
5166 | background-image: -moz-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);
5167 | 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);
5168 | }
5169 |
5170 | .progress-bar-info {
5171 | background-color: #5bc0de;
5172 | }
5173 |
5174 | .progress-striped .progress-bar-info {
5175 | background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5176 | 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);
5177 | background-image: -moz-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);
5178 | 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);
5179 | }
5180 |
5181 | .progress-bar-warning {
5182 | background-color: #f0ad4e;
5183 | }
5184 |
5185 | .progress-striped .progress-bar-warning {
5186 | background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5187 | 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);
5188 | background-image: -moz-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);
5189 | 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);
5190 | }
5191 |
5192 | .progress-bar-danger {
5193 | background-color: #d9534f;
5194 | }
5195 |
5196 | .progress-striped .progress-bar-danger {
5197 | background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
5198 | 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);
5199 | background-image: -moz-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);
5200 | 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);
5201 | }
5202 |
5203 | .media,
5204 | .media-body {
5205 | overflow: hidden;
5206 | zoom: 1;
5207 | }
5208 |
5209 | .media,
5210 | .media .media {
5211 | margin-top: 15px;
5212 | }
5213 |
5214 | .media:first-child {
5215 | margin-top: 0;
5216 | }
5217 |
5218 | .media-object {
5219 | display: block;
5220 | }
5221 |
5222 | .media-heading {
5223 | margin: 0 0 5px;
5224 | }
5225 |
5226 | .media > .pull-left {
5227 | margin-right: 10px;
5228 | }
5229 |
5230 | .media > .pull-right {
5231 | margin-left: 10px;
5232 | }
5233 |
5234 | .media-list {
5235 | padding-left: 0;
5236 | list-style: none;
5237 | }
5238 |
5239 | .list-group {
5240 | padding-left: 0;
5241 | margin-bottom: 20px;
5242 | }
5243 |
5244 | .list-group-item {
5245 | position: relative;
5246 | display: block;
5247 | padding: 10px 15px;
5248 | margin-bottom: -1px;
5249 | background-color: #ffffff;
5250 | border: 1px solid #dddddd;
5251 | }
5252 |
5253 | .list-group-item:first-child {
5254 | border-top-right-radius: 4px;
5255 | border-top-left-radius: 4px;
5256 | }
5257 |
5258 | .list-group-item:last-child {
5259 | margin-bottom: 0;
5260 | border-bottom-right-radius: 4px;
5261 | border-bottom-left-radius: 4px;
5262 | }
5263 |
5264 | .list-group-item > .badge {
5265 | float: right;
5266 | }
5267 |
5268 | .list-group-item > .badge + .badge {
5269 | margin-right: 5px;
5270 | }
5271 |
5272 | a.list-group-item {
5273 | color: #555555;
5274 | }
5275 |
5276 | a.list-group-item .list-group-item-heading {
5277 | color: #333333;
5278 | }
5279 |
5280 | a.list-group-item:hover,
5281 | a.list-group-item:focus {
5282 | text-decoration: none;
5283 | background-color: #f5f5f5;
5284 | }
5285 |
5286 | .list-group-item.active,
5287 | .list-group-item.active:hover,
5288 | .list-group-item.active:focus {
5289 | z-index: 2;
5290 | color: #ffffff;
5291 | background-color: #428bca;
5292 | border-color: #428bca;
5293 | }
5294 |
5295 | .list-group-item.active .list-group-item-heading,
5296 | .list-group-item.active:hover .list-group-item-heading,
5297 | .list-group-item.active:focus .list-group-item-heading {
5298 | color: inherit;
5299 | }
5300 |
5301 | .list-group-item.active .list-group-item-text,
5302 | .list-group-item.active:hover .list-group-item-text,
5303 | .list-group-item.active:focus .list-group-item-text {
5304 | color: #e1edf7;
5305 | }
5306 |
5307 | .list-group-item-heading {
5308 | margin-top: 0;
5309 | margin-bottom: 5px;
5310 | }
5311 |
5312 | .list-group-item-text {
5313 | margin-bottom: 0;
5314 | line-height: 1.3;
5315 | }
5316 |
5317 | .panel {
5318 | margin-bottom: 20px;
5319 | background-color: #ffffff;
5320 | border: 1px solid transparent;
5321 | border-radius: 4px;
5322 | -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5323 | box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5324 | }
5325 |
5326 | .panel-body {
5327 | padding: 15px;
5328 | }
5329 |
5330 | .panel-body:before,
5331 | .panel-body:after {
5332 | display: table;
5333 | content: " ";
5334 | }
5335 |
5336 | .panel-body:after {
5337 | clear: both;
5338 | }
5339 |
5340 | .panel-body:before,
5341 | .panel-body:after {
5342 | display: table;
5343 | content: " ";
5344 | }
5345 |
5346 | .panel-body:after {
5347 | clear: both;
5348 | }
5349 |
5350 | .panel > .list-group {
5351 | margin-bottom: 0;
5352 | }
5353 |
5354 | .panel > .list-group .list-group-item {
5355 | border-width: 1px 0;
5356 | }
5357 |
5358 | .panel > .list-group .list-group-item:first-child {
5359 | border-top-right-radius: 0;
5360 | border-top-left-radius: 0;
5361 | }
5362 |
5363 | .panel > .list-group .list-group-item:last-child {
5364 | border-bottom: 0;
5365 | }
5366 |
5367 | .panel-heading + .list-group .list-group-item:first-child {
5368 | border-top-width: 0;
5369 | }
5370 |
5371 | .panel > .table {
5372 | margin-bottom: 0;
5373 | }
5374 |
5375 | .panel > .panel-body + .table {
5376 | border-top: 1px solid #dddddd;
5377 | }
5378 |
5379 | .panel-heading {
5380 | padding: 10px 15px;
5381 | border-bottom: 1px solid transparent;
5382 | border-top-right-radius: 3px;
5383 | border-top-left-radius: 3px;
5384 | }
5385 |
5386 | .panel-title {
5387 | margin-top: 0;
5388 | margin-bottom: 0;
5389 | font-size: 16px;
5390 | }
5391 |
5392 | .panel-title > a {
5393 | color: inherit;
5394 | }
5395 |
5396 | .panel-footer {
5397 | padding: 10px 15px;
5398 | background-color: #f5f5f5;
5399 | border-top: 1px solid #dddddd;
5400 | border-bottom-right-radius: 3px;
5401 | border-bottom-left-radius: 3px;
5402 | }
5403 |
5404 | .panel-group .panel {
5405 | margin-bottom: 0;
5406 | overflow: hidden;
5407 | border-radius: 4px;
5408 | }
5409 |
5410 | .panel-group .panel + .panel {
5411 | margin-top: 5px;
5412 | }
5413 |
5414 | .panel-group .panel-heading {
5415 | border-bottom: 0;
5416 | }
5417 |
5418 | .panel-group .panel-heading + .panel-collapse .panel-body {
5419 | border-top: 1px solid #dddddd;
5420 | }
5421 |
5422 | .panel-group .panel-footer {
5423 | border-top: 0;
5424 | }
5425 |
5426 | .panel-group .panel-footer + .panel-collapse .panel-body {
5427 | border-bottom: 1px solid #dddddd;
5428 | }
5429 |
5430 | .panel-default {
5431 | border-color: #dddddd;
5432 | }
5433 |
5434 | .panel-default > .panel-heading {
5435 | color: #333333;
5436 | background-color: #f5f5f5;
5437 | border-color: #dddddd;
5438 | }
5439 |
5440 | .panel-default > .panel-heading + .panel-collapse .panel-body {
5441 | border-top-color: #dddddd;
5442 | }
5443 |
5444 | .panel-default > .panel-footer + .panel-collapse .panel-body {
5445 | border-bottom-color: #dddddd;
5446 | }
5447 |
5448 | .panel-primary {
5449 | border-color: #428bca;
5450 | }
5451 |
5452 | .panel-primary > .panel-heading {
5453 | color: #ffffff;
5454 | background-color: #428bca;
5455 | border-color: #428bca;
5456 | }
5457 |
5458 | .panel-primary > .panel-heading + .panel-collapse .panel-body {
5459 | border-top-color: #428bca;
5460 | }
5461 |
5462 | .panel-primary > .panel-footer + .panel-collapse .panel-body {
5463 | border-bottom-color: #428bca;
5464 | }
5465 |
5466 | .panel-success {
5467 | border-color: #d6e9c6;
5468 | }
5469 |
5470 | .panel-success > .panel-heading {
5471 | color: #468847;
5472 | background-color: #dff0d8;
5473 | border-color: #d6e9c6;
5474 | }
5475 |
5476 | .panel-success > .panel-heading + .panel-collapse .panel-body {
5477 | border-top-color: #d6e9c6;
5478 | }
5479 |
5480 | .panel-success > .panel-footer + .panel-collapse .panel-body {
5481 | border-bottom-color: #d6e9c6;
5482 | }
5483 |
5484 | .panel-warning {
5485 | border-color: #fbeed5;
5486 | }
5487 |
5488 | .panel-warning > .panel-heading {
5489 | color: #c09853;
5490 | background-color: #fcf8e3;
5491 | border-color: #fbeed5;
5492 | }
5493 |
5494 | .panel-warning > .panel-heading + .panel-collapse .panel-body {
5495 | border-top-color: #fbeed5;
5496 | }
5497 |
5498 | .panel-warning > .panel-footer + .panel-collapse .panel-body {
5499 | border-bottom-color: #fbeed5;
5500 | }
5501 |
5502 | .panel-danger {
5503 | border-color: #eed3d7;
5504 | }
5505 |
5506 | .panel-danger > .panel-heading {
5507 | color: #b94a48;
5508 | background-color: #f2dede;
5509 | border-color: #eed3d7;
5510 | }
5511 |
5512 | .panel-danger > .panel-heading + .panel-collapse .panel-body {
5513 | border-top-color: #eed3d7;
5514 | }
5515 |
5516 | .panel-danger > .panel-footer + .panel-collapse .panel-body {
5517 | border-bottom-color: #eed3d7;
5518 | }
5519 |
5520 | .panel-info {
5521 | border-color: #bce8f1;
5522 | }
5523 |
5524 | .panel-info > .panel-heading {
5525 | color: #3a87ad;
5526 | background-color: #d9edf7;
5527 | border-color: #bce8f1;
5528 | }
5529 |
5530 | .panel-info > .panel-heading + .panel-collapse .panel-body {
5531 | border-top-color: #bce8f1;
5532 | }
5533 |
5534 | .panel-info > .panel-footer + .panel-collapse .panel-body {
5535 | border-bottom-color: #bce8f1;
5536 | }
5537 |
5538 | .well {
5539 | min-height: 20px;
5540 | padding: 19px;
5541 | margin-bottom: 20px;
5542 | background-color: #f5f5f5;
5543 | border: 1px solid #e3e3e3;
5544 | border-radius: 4px;
5545 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5546 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5547 | }
5548 |
5549 | .well blockquote {
5550 | border-color: #ddd;
5551 | border-color: rgba(0, 0, 0, 0.15);
5552 | }
5553 |
5554 | .well-lg {
5555 | padding: 24px;
5556 | border-radius: 6px;
5557 | }
5558 |
5559 | .well-sm {
5560 | padding: 9px;
5561 | border-radius: 3px;
5562 | }
5563 |
5564 | .close {
5565 | float: right;
5566 | font-size: 21px;
5567 | font-weight: bold;
5568 | line-height: 1;
5569 | color: #000000;
5570 | text-shadow: 0 1px 0 #ffffff;
5571 | opacity: 0.2;
5572 | filter: alpha(opacity=20);
5573 | }
5574 |
5575 | .close:hover,
5576 | .close:focus {
5577 | color: #000000;
5578 | text-decoration: none;
5579 | cursor: pointer;
5580 | opacity: 0.5;
5581 | filter: alpha(opacity=50);
5582 | }
5583 |
5584 | button.close {
5585 | padding: 0;
5586 | cursor: pointer;
5587 | background: transparent;
5588 | border: 0;
5589 | -webkit-appearance: none;
5590 | }
5591 |
5592 | .modal-open {
5593 | overflow: hidden;
5594 | }
5595 |
5596 | body.modal-open,
5597 | .modal-open .navbar-fixed-top,
5598 | .modal-open .navbar-fixed-bottom {
5599 | margin-right: 15px;
5600 | }
5601 |
5602 | .modal {
5603 | position: fixed;
5604 | top: 0;
5605 | right: 0;
5606 | bottom: 0;
5607 | left: 0;
5608 | z-index: 1040;
5609 | display: none;
5610 | overflow: auto;
5611 | overflow-y: scroll;
5612 | }
5613 |
5614 | .modal.fade .modal-dialog {
5615 | -webkit-transform: translate(0, -25%);
5616 | -ms-transform: translate(0, -25%);
5617 | transform: translate(0, -25%);
5618 | -webkit-transition: -webkit-transform 0.3s ease-out;
5619 | -moz-transition: -moz-transform 0.3s ease-out;
5620 | -o-transition: -o-transform 0.3s ease-out;
5621 | transition: transform 0.3s ease-out;
5622 | }
5623 |
5624 | .modal.in .modal-dialog {
5625 | -webkit-transform: translate(0, 0);
5626 | -ms-transform: translate(0, 0);
5627 | transform: translate(0, 0);
5628 | }
5629 |
5630 | .modal-dialog {
5631 | z-index: 1050;
5632 | width: auto;
5633 | padding: 10px;
5634 | margin-right: auto;
5635 | margin-left: auto;
5636 | }
5637 |
5638 | .modal-content {
5639 | position: relative;
5640 | background-color: #ffffff;
5641 | border: 1px solid #999999;
5642 | border: 1px solid rgba(0, 0, 0, 0.2);
5643 | border-radius: 6px;
5644 | outline: none;
5645 | -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5646 | box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5647 | background-clip: padding-box;
5648 | }
5649 |
5650 | .modal-backdrop {
5651 | position: fixed;
5652 | top: 0;
5653 | right: 0;
5654 | bottom: 0;
5655 | left: 0;
5656 | z-index: 1030;
5657 | background-color: #000000;
5658 | }
5659 |
5660 | .modal-backdrop.fade {
5661 | opacity: 0;
5662 | filter: alpha(opacity=0);
5663 | }
5664 |
5665 | .modal-backdrop.in {
5666 | opacity: 0.5;
5667 | filter: alpha(opacity=50);
5668 | }
5669 |
5670 | .modal-header {
5671 | min-height: 16.428571429px;
5672 | padding: 15px;
5673 | border-bottom: 1px solid #e5e5e5;
5674 | }
5675 |
5676 | .modal-header .close {
5677 | margin-top: -2px;
5678 | }
5679 |
5680 | .modal-title {
5681 | margin: 0;
5682 | line-height: 1.428571429;
5683 | }
5684 |
5685 | .modal-body {
5686 | position: relative;
5687 | padding: 20px;
5688 | }
5689 |
5690 | .modal-footer {
5691 | padding: 19px 20px 20px;
5692 | margin-top: 15px;
5693 | text-align: right;
5694 | border-top: 1px solid #e5e5e5;
5695 | }
5696 |
5697 | .modal-footer:before,
5698 | .modal-footer:after {
5699 | display: table;
5700 | content: " ";
5701 | }
5702 |
5703 | .modal-footer:after {
5704 | clear: both;
5705 | }
5706 |
5707 | .modal-footer:before,
5708 | .modal-footer:after {
5709 | display: table;
5710 | content: " ";
5711 | }
5712 |
5713 | .modal-footer:after {
5714 | clear: both;
5715 | }
5716 |
5717 | .modal-footer .btn + .btn {
5718 | margin-bottom: 0;
5719 | margin-left: 5px;
5720 | }
5721 |
5722 | .modal-footer .btn-group .btn + .btn {
5723 | margin-left: -1px;
5724 | }
5725 |
5726 | .modal-footer .btn-block + .btn-block {
5727 | margin-left: 0;
5728 | }
5729 |
5730 | @media screen and (min-width: 768px) {
5731 | .modal-dialog {
5732 | right: auto;
5733 | left: 50%;
5734 | width: 600px;
5735 | padding-top: 30px;
5736 | padding-bottom: 30px;
5737 | }
5738 | .modal-content {
5739 | -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5740 | box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5741 | }
5742 | }
5743 |
5744 | .tooltip {
5745 | position: absolute;
5746 | z-index: 1030;
5747 | display: block;
5748 | font-size: 12px;
5749 | line-height: 1.4;
5750 | opacity: 0;
5751 | filter: alpha(opacity=0);
5752 | visibility: visible;
5753 | }
5754 |
5755 | .tooltip.in {
5756 | opacity: 0.9;
5757 | filter: alpha(opacity=90);
5758 | }
5759 |
5760 | .tooltip.top {
5761 | padding: 5px 0;
5762 | margin-top: -3px;
5763 | }
5764 |
5765 | .tooltip.right {
5766 | padding: 0 5px;
5767 | margin-left: 3px;
5768 | }
5769 |
5770 | .tooltip.bottom {
5771 | padding: 5px 0;
5772 | margin-top: 3px;
5773 | }
5774 |
5775 | .tooltip.left {
5776 | padding: 0 5px;
5777 | margin-left: -3px;
5778 | }
5779 |
5780 | .tooltip-inner {
5781 | max-width: 200px;
5782 | padding: 3px 8px;
5783 | color: #ffffff;
5784 | text-align: center;
5785 | text-decoration: none;
5786 | background-color: #000000;
5787 | border-radius: 4px;
5788 | }
5789 |
5790 | .tooltip-arrow {
5791 | position: absolute;
5792 | width: 0;
5793 | height: 0;
5794 | border-color: transparent;
5795 | border-style: solid;
5796 | }
5797 |
5798 | .tooltip.top .tooltip-arrow {
5799 | bottom: 0;
5800 | left: 50%;
5801 | margin-left: -5px;
5802 | border-top-color: #000000;
5803 | border-width: 5px 5px 0;
5804 | }
5805 |
5806 | .tooltip.top-left .tooltip-arrow {
5807 | bottom: 0;
5808 | left: 5px;
5809 | border-top-color: #000000;
5810 | border-width: 5px 5px 0;
5811 | }
5812 |
5813 | .tooltip.top-right .tooltip-arrow {
5814 | right: 5px;
5815 | bottom: 0;
5816 | border-top-color: #000000;
5817 | border-width: 5px 5px 0;
5818 | }
5819 |
5820 | .tooltip.right .tooltip-arrow {
5821 | top: 50%;
5822 | left: 0;
5823 | margin-top: -5px;
5824 | border-right-color: #000000;
5825 | border-width: 5px 5px 5px 0;
5826 | }
5827 |
5828 | .tooltip.left .tooltip-arrow {
5829 | top: 50%;
5830 | right: 0;
5831 | margin-top: -5px;
5832 | border-left-color: #000000;
5833 | border-width: 5px 0 5px 5px;
5834 | }
5835 |
5836 | .tooltip.bottom .tooltip-arrow {
5837 | top: 0;
5838 | left: 50%;
5839 | margin-left: -5px;
5840 | border-bottom-color: #000000;
5841 | border-width: 0 5px 5px;
5842 | }
5843 |
5844 | .tooltip.bottom-left .tooltip-arrow {
5845 | top: 0;
5846 | left: 5px;
5847 | border-bottom-color: #000000;
5848 | border-width: 0 5px 5px;
5849 | }
5850 |
5851 | .tooltip.bottom-right .tooltip-arrow {
5852 | top: 0;
5853 | right: 5px;
5854 | border-bottom-color: #000000;
5855 | border-width: 0 5px 5px;
5856 | }
5857 |
5858 | .popover {
5859 | position: absolute;
5860 | top: 0;
5861 | left: 0;
5862 | z-index: 1010;
5863 | display: none;
5864 | max-width: 276px;
5865 | padding: 1px;
5866 | text-align: left;
5867 | white-space: normal;
5868 | background-color: #ffffff;
5869 | border: 1px solid #cccccc;
5870 | border: 1px solid rgba(0, 0, 0, 0.2);
5871 | border-radius: 6px;
5872 | -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5873 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5874 | background-clip: padding-box;
5875 | }
5876 |
5877 | .popover.top {
5878 | margin-top: -10px;
5879 | }
5880 |
5881 | .popover.right {
5882 | margin-left: 10px;
5883 | }
5884 |
5885 | .popover.bottom {
5886 | margin-top: 10px;
5887 | }
5888 |
5889 | .popover.left {
5890 | margin-left: -10px;
5891 | }
5892 |
5893 | .popover-title {
5894 | padding: 8px 14px;
5895 | margin: 0;
5896 | font-size: 14px;
5897 | font-weight: normal;
5898 | line-height: 18px;
5899 | background-color: #f7f7f7;
5900 | border-bottom: 1px solid #ebebeb;
5901 | border-radius: 5px 5px 0 0;
5902 | }
5903 |
5904 | .popover-content {
5905 | padding: 9px 14px;
5906 | }
5907 |
5908 | .popover .arrow,
5909 | .popover .arrow:after {
5910 | position: absolute;
5911 | display: block;
5912 | width: 0;
5913 | height: 0;
5914 | border-color: transparent;
5915 | border-style: solid;
5916 | }
5917 |
5918 | .popover .arrow {
5919 | border-width: 11px;
5920 | }
5921 |
5922 | .popover .arrow:after {
5923 | border-width: 10px;
5924 | content: "";
5925 | }
5926 |
5927 | .popover.top .arrow {
5928 | bottom: -11px;
5929 | left: 50%;
5930 | margin-left: -11px;
5931 | border-top-color: #999999;
5932 | border-top-color: rgba(0, 0, 0, 0.25);
5933 | border-bottom-width: 0;
5934 | }
5935 |
5936 | .popover.top .arrow:after {
5937 | bottom: 1px;
5938 | margin-left: -10px;
5939 | border-top-color: #ffffff;
5940 | border-bottom-width: 0;
5941 | content: " ";
5942 | }
5943 |
5944 | .popover.right .arrow {
5945 | top: 50%;
5946 | left: -11px;
5947 | margin-top: -11px;
5948 | border-right-color: #999999;
5949 | border-right-color: rgba(0, 0, 0, 0.25);
5950 | border-left-width: 0;
5951 | }
5952 |
5953 | .popover.right .arrow:after {
5954 | bottom: -10px;
5955 | left: 1px;
5956 | border-right-color: #ffffff;
5957 | border-left-width: 0;
5958 | content: " ";
5959 | }
5960 |
5961 | .popover.bottom .arrow {
5962 | top: -11px;
5963 | left: 50%;
5964 | margin-left: -11px;
5965 | border-bottom-color: #999999;
5966 | border-bottom-color: rgba(0, 0, 0, 0.25);
5967 | border-top-width: 0;
5968 | }
5969 |
5970 | .popover.bottom .arrow:after {
5971 | top: 1px;
5972 | margin-left: -10px;
5973 | border-bottom-color: #ffffff;
5974 | border-top-width: 0;
5975 | content: " ";
5976 | }
5977 |
5978 | .popover.left .arrow {
5979 | top: 50%;
5980 | right: -11px;
5981 | margin-top: -11px;
5982 | border-left-color: #999999;
5983 | border-left-color: rgba(0, 0, 0, 0.25);
5984 | border-right-width: 0;
5985 | }
5986 |
5987 | .popover.left .arrow:after {
5988 | right: 1px;
5989 | bottom: -10px;
5990 | border-left-color: #ffffff;
5991 | border-right-width: 0;
5992 | content: " ";
5993 | }
5994 |
5995 | .carousel {
5996 | position: relative;
5997 | }
5998 |
5999 | .carousel-inner {
6000 | position: relative;
6001 | width: 100%;
6002 | overflow: hidden;
6003 | }
6004 |
6005 | .carousel-inner > .item {
6006 | position: relative;
6007 | display: none;
6008 | -webkit-transition: 0.6s ease-in-out left;
6009 | transition: 0.6s ease-in-out left;
6010 | }
6011 |
6012 | .carousel-inner > .item > img,
6013 | .carousel-inner > .item > a > img {
6014 | display: block;
6015 | height: auto;
6016 | max-width: 100%;
6017 | line-height: 1;
6018 | }
6019 |
6020 | .carousel-inner > .active,
6021 | .carousel-inner > .next,
6022 | .carousel-inner > .prev {
6023 | display: block;
6024 | }
6025 |
6026 | .carousel-inner > .active {
6027 | left: 0;
6028 | }
6029 |
6030 | .carousel-inner > .next,
6031 | .carousel-inner > .prev {
6032 | position: absolute;
6033 | top: 0;
6034 | width: 100%;
6035 | }
6036 |
6037 | .carousel-inner > .next {
6038 | left: 100%;
6039 | }
6040 |
6041 | .carousel-inner > .prev {
6042 | left: -100%;
6043 | }
6044 |
6045 | .carousel-inner > .next.left,
6046 | .carousel-inner > .prev.right {
6047 | left: 0;
6048 | }
6049 |
6050 | .carousel-inner > .active.left {
6051 | left: -100%;
6052 | }
6053 |
6054 | .carousel-inner > .active.right {
6055 | left: 100%;
6056 | }
6057 |
6058 | .carousel-control {
6059 | position: absolute;
6060 | top: 0;
6061 | bottom: 0;
6062 | left: 0;
6063 | width: 15%;
6064 | font-size: 20px;
6065 | color: #ffffff;
6066 | text-align: center;
6067 | text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6068 | opacity: 0.5;
6069 | filter: alpha(opacity=50);
6070 | }
6071 |
6072 | .carousel-control.left {
6073 | background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.5)), to(rgba(0, 0, 0, 0.0001)));
6074 | background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0), color-stop(rgba(0, 0, 0, 0.0001) 100%));
6075 | background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
6076 | background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0, rgba(0, 0, 0, 0.0001) 100%);
6077 | background-repeat: repeat-x;
6078 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6079 | }
6080 |
6081 | .carousel-control.right {
6082 | right: 0;
6083 | left: auto;
6084 | background-image: -webkit-gradient(linear, 0 top, 100% top, from(rgba(0, 0, 0, 0.0001)), to(rgba(0, 0, 0, 0.5)));
6085 | background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0), color-stop(rgba(0, 0, 0, 0.5) 100%));
6086 | background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
6087 | background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0, rgba(0, 0, 0, 0.5) 100%);
6088 | background-repeat: repeat-x;
6089 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6090 | }
6091 |
6092 | .carousel-control:hover,
6093 | .carousel-control:focus {
6094 | color: #ffffff;
6095 | text-decoration: none;
6096 | opacity: 0.9;
6097 | filter: alpha(opacity=90);
6098 | }
6099 |
6100 | .carousel-control .icon-prev,
6101 | .carousel-control .icon-next,
6102 | .carousel-control .glyphicon-chevron-left,
6103 | .carousel-control .glyphicon-chevron-right {
6104 | position: absolute;
6105 | top: 50%;
6106 | left: 50%;
6107 | z-index: 5;
6108 | display: inline-block;
6109 | }
6110 |
6111 | .carousel-control .icon-prev,
6112 | .carousel-control .icon-next {
6113 | width: 20px;
6114 | height: 20px;
6115 | margin-top: -10px;
6116 | margin-left: -10px;
6117 | font-family: serif;
6118 | }
6119 |
6120 | .carousel-control .icon-prev:before {
6121 | content: '\2039';
6122 | }
6123 |
6124 | .carousel-control .icon-next:before {
6125 | content: '\203a';
6126 | }
6127 |
6128 | .carousel-indicators {
6129 | position: absolute;
6130 | bottom: 10px;
6131 | left: 50%;
6132 | z-index: 15;
6133 | width: 60%;
6134 | padding-left: 0;
6135 | margin-left: -30%;
6136 | text-align: center;
6137 | list-style: none;
6138 | }
6139 |
6140 | .carousel-indicators li {
6141 | display: inline-block;
6142 | width: 10px;
6143 | height: 10px;
6144 | margin: 1px;
6145 | text-indent: -999px;
6146 | cursor: pointer;
6147 | border: 1px solid #ffffff;
6148 | border-radius: 10px;
6149 | }
6150 |
6151 | .carousel-indicators .active {
6152 | width: 12px;
6153 | height: 12px;
6154 | margin: 0;
6155 | background-color: #ffffff;
6156 | }
6157 |
6158 | .carousel-caption {
6159 | position: absolute;
6160 | right: 15%;
6161 | bottom: 20px;
6162 | left: 15%;
6163 | z-index: 10;
6164 | padding-top: 20px;
6165 | padding-bottom: 20px;
6166 | color: #ffffff;
6167 | text-align: center;
6168 | text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6169 | }
6170 |
6171 | .carousel-caption .btn {
6172 | text-shadow: none;
6173 | }
6174 |
6175 | @media screen and (min-width: 768px) {
6176 | .carousel-control .icon-prev,
6177 | .carousel-control .icon-next {
6178 | width: 30px;
6179 | height: 30px;
6180 | margin-top: -15px;
6181 | margin-left: -15px;
6182 | font-size: 30px;
6183 | }
6184 | .carousel-caption {
6185 | right: 20%;
6186 | left: 20%;
6187 | padding-bottom: 30px;
6188 | }
6189 | .carousel-indicators {
6190 | bottom: 20px;
6191 | }
6192 | }
6193 |
6194 | .clearfix:before,
6195 | .clearfix:after {
6196 | display: table;
6197 | content: " ";
6198 | }
6199 |
6200 | .clearfix:after {
6201 | clear: both;
6202 | }
6203 |
6204 | .pull-right {
6205 | float: right !important;
6206 | }
6207 |
6208 | .pull-left {
6209 | float: left !important;
6210 | }
6211 |
6212 | .hide {
6213 | display: none !important;
6214 | }
6215 |
6216 | .show {
6217 | display: block !important;
6218 | }
6219 |
6220 | .invisible {
6221 | visibility: hidden;
6222 | }
6223 |
6224 | .text-hide {
6225 | font: 0/0 a;
6226 | color: transparent;
6227 | text-shadow: none;
6228 | background-color: transparent;
6229 | border: 0;
6230 | }
6231 |
6232 | .affix {
6233 | position: fixed;
6234 | }
6235 |
6236 | @-ms-viewport {
6237 | width: device-width;
6238 | }
6239 |
6240 | @media screen and (max-width: 400px) {
6241 | @-ms-viewport {
6242 | width: 320px;
6243 | }
6244 | }
6245 |
6246 | .hidden {
6247 | display: none !important;
6248 | visibility: hidden !important;
6249 | }
6250 |
6251 | .visible-xs {
6252 | display: none !important;
6253 | }
6254 |
6255 | tr.visible-xs {
6256 | display: none !important;
6257 | }
6258 |
6259 | th.visible-xs,
6260 | td.visible-xs {
6261 | display: none !important;
6262 | }
6263 |
6264 | @media (max-width: 767px) {
6265 | .visible-xs {
6266 | display: block !important;
6267 | }
6268 | tr.visible-xs {
6269 | display: table-row !important;
6270 | }
6271 | th.visible-xs,
6272 | td.visible-xs {
6273 | display: table-cell !important;
6274 | }
6275 | }
6276 |
6277 | @media (min-width: 768px) and (max-width: 991px) {
6278 | .visible-xs.visible-sm {
6279 | display: block !important;
6280 | }
6281 | tr.visible-xs.visible-sm {
6282 | display: table-row !important;
6283 | }
6284 | th.visible-xs.visible-sm,
6285 | td.visible-xs.visible-sm {
6286 | display: table-cell !important;
6287 | }
6288 | }
6289 |
6290 | @media (min-width: 992px) and (max-width: 1199px) {
6291 | .visible-xs.visible-md {
6292 | display: block !important;
6293 | }
6294 | tr.visible-xs.visible-md {
6295 | display: table-row !important;
6296 | }
6297 | th.visible-xs.visible-md,
6298 | td.visible-xs.visible-md {
6299 | display: table-cell !important;
6300 | }
6301 | }
6302 |
6303 | @media (min-width: 1200px) {
6304 | .visible-xs.visible-lg {
6305 | display: block !important;
6306 | }
6307 | tr.visible-xs.visible-lg {
6308 | display: table-row !important;
6309 | }
6310 | th.visible-xs.visible-lg,
6311 | td.visible-xs.visible-lg {
6312 | display: table-cell !important;
6313 | }
6314 | }
6315 |
6316 | .visible-sm {
6317 | display: none !important;
6318 | }
6319 |
6320 | tr.visible-sm {
6321 | display: none !important;
6322 | }
6323 |
6324 | th.visible-sm,
6325 | td.visible-sm {
6326 | display: none !important;
6327 | }
6328 |
6329 | @media (max-width: 767px) {
6330 | .visible-sm.visible-xs {
6331 | display: block !important;
6332 | }
6333 | tr.visible-sm.visible-xs {
6334 | display: table-row !important;
6335 | }
6336 | th.visible-sm.visible-xs,
6337 | td.visible-sm.visible-xs {
6338 | display: table-cell !important;
6339 | }
6340 | }
6341 |
6342 | @media (min-width: 768px) and (max-width: 991px) {
6343 | .visible-sm {
6344 | display: block !important;
6345 | }
6346 | tr.visible-sm {
6347 | display: table-row !important;
6348 | }
6349 | th.visible-sm,
6350 | td.visible-sm {
6351 | display: table-cell !important;
6352 | }
6353 | }
6354 |
6355 | @media (min-width: 992px) and (max-width: 1199px) {
6356 | .visible-sm.visible-md {
6357 | display: block !important;
6358 | }
6359 | tr.visible-sm.visible-md {
6360 | display: table-row !important;
6361 | }
6362 | th.visible-sm.visible-md,
6363 | td.visible-sm.visible-md {
6364 | display: table-cell !important;
6365 | }
6366 | }
6367 |
6368 | @media (min-width: 1200px) {
6369 | .visible-sm.visible-lg {
6370 | display: block !important;
6371 | }
6372 | tr.visible-sm.visible-lg {
6373 | display: table-row !important;
6374 | }
6375 | th.visible-sm.visible-lg,
6376 | td.visible-sm.visible-lg {
6377 | display: table-cell !important;
6378 | }
6379 | }
6380 |
6381 | .visible-md {
6382 | display: none !important;
6383 | }
6384 |
6385 | tr.visible-md {
6386 | display: none !important;
6387 | }
6388 |
6389 | th.visible-md,
6390 | td.visible-md {
6391 | display: none !important;
6392 | }
6393 |
6394 | @media (max-width: 767px) {
6395 | .visible-md.visible-xs {
6396 | display: block !important;
6397 | }
6398 | tr.visible-md.visible-xs {
6399 | display: table-row !important;
6400 | }
6401 | th.visible-md.visible-xs,
6402 | td.visible-md.visible-xs {
6403 | display: table-cell !important;
6404 | }
6405 | }
6406 |
6407 | @media (min-width: 768px) and (max-width: 991px) {
6408 | .visible-md.visible-sm {
6409 | display: block !important;
6410 | }
6411 | tr.visible-md.visible-sm {
6412 | display: table-row !important;
6413 | }
6414 | th.visible-md.visible-sm,
6415 | td.visible-md.visible-sm {
6416 | display: table-cell !important;
6417 | }
6418 | }
6419 |
6420 | @media (min-width: 992px) and (max-width: 1199px) {
6421 | .visible-md {
6422 | display: block !important;
6423 | }
6424 | tr.visible-md {
6425 | display: table-row !important;
6426 | }
6427 | th.visible-md,
6428 | td.visible-md {
6429 | display: table-cell !important;
6430 | }
6431 | }
6432 |
6433 | @media (min-width: 1200px) {
6434 | .visible-md.visible-lg {
6435 | display: block !important;
6436 | }
6437 | tr.visible-md.visible-lg {
6438 | display: table-row !important;
6439 | }
6440 | th.visible-md.visible-lg,
6441 | td.visible-md.visible-lg {
6442 | display: table-cell !important;
6443 | }
6444 | }
6445 |
6446 | .visible-lg {
6447 | display: none !important;
6448 | }
6449 |
6450 | tr.visible-lg {
6451 | display: none !important;
6452 | }
6453 |
6454 | th.visible-lg,
6455 | td.visible-lg {
6456 | display: none !important;
6457 | }
6458 |
6459 | @media (max-width: 767px) {
6460 | .visible-lg.visible-xs {
6461 | display: block !important;
6462 | }
6463 | tr.visible-lg.visible-xs {
6464 | display: table-row !important;
6465 | }
6466 | th.visible-lg.visible-xs,
6467 | td.visible-lg.visible-xs {
6468 | display: table-cell !important;
6469 | }
6470 | }
6471 |
6472 | @media (min-width: 768px) and (max-width: 991px) {
6473 | .visible-lg.visible-sm {
6474 | display: block !important;
6475 | }
6476 | tr.visible-lg.visible-sm {
6477 | display: table-row !important;
6478 | }
6479 | th.visible-lg.visible-sm,
6480 | td.visible-lg.visible-sm {
6481 | display: table-cell !important;
6482 | }
6483 | }
6484 |
6485 | @media (min-width: 992px) and (max-width: 1199px) {
6486 | .visible-lg.visible-md {
6487 | display: block !important;
6488 | }
6489 | tr.visible-lg.visible-md {
6490 | display: table-row !important;
6491 | }
6492 | th.visible-lg.visible-md,
6493 | td.visible-lg.visible-md {
6494 | display: table-cell !important;
6495 | }
6496 | }
6497 |
6498 | @media (min-width: 1200px) {
6499 | .visible-lg {
6500 | display: block !important;
6501 | }
6502 | tr.visible-lg {
6503 | display: table-row !important;
6504 | }
6505 | th.visible-lg,
6506 | td.visible-lg {
6507 | display: table-cell !important;
6508 | }
6509 | }
6510 |
6511 | .hidden-xs {
6512 | display: block !important;
6513 | }
6514 |
6515 | tr.hidden-xs {
6516 | display: table-row !important;
6517 | }
6518 |
6519 | th.hidden-xs,
6520 | td.hidden-xs {
6521 | display: table-cell !important;
6522 | }
6523 |
6524 | @media (max-width: 767px) {
6525 | .hidden-xs {
6526 | display: none !important;
6527 | }
6528 | tr.hidden-xs {
6529 | display: none !important;
6530 | }
6531 | th.hidden-xs,
6532 | td.hidden-xs {
6533 | display: none !important;
6534 | }
6535 | }
6536 |
6537 | @media (min-width: 768px) and (max-width: 991px) {
6538 | .hidden-xs.hidden-sm {
6539 | display: none !important;
6540 | }
6541 | tr.hidden-xs.hidden-sm {
6542 | display: none !important;
6543 | }
6544 | th.hidden-xs.hidden-sm,
6545 | td.hidden-xs.hidden-sm {
6546 | display: none !important;
6547 | }
6548 | }
6549 |
6550 | @media (min-width: 992px) and (max-width: 1199px) {
6551 | .hidden-xs.hidden-md {
6552 | display: none !important;
6553 | }
6554 | tr.hidden-xs.hidden-md {
6555 | display: none !important;
6556 | }
6557 | th.hidden-xs.hidden-md,
6558 | td.hidden-xs.hidden-md {
6559 | display: none !important;
6560 | }
6561 | }
6562 |
6563 | @media (min-width: 1200px) {
6564 | .hidden-xs.hidden-lg {
6565 | display: none !important;
6566 | }
6567 | tr.hidden-xs.hidden-lg {
6568 | display: none !important;
6569 | }
6570 | th.hidden-xs.hidden-lg,
6571 | td.hidden-xs.hidden-lg {
6572 | display: none !important;
6573 | }
6574 | }
6575 |
6576 | .hidden-sm {
6577 | display: block !important;
6578 | }
6579 |
6580 | tr.hidden-sm {
6581 | display: table-row !important;
6582 | }
6583 |
6584 | th.hidden-sm,
6585 | td.hidden-sm {
6586 | display: table-cell !important;
6587 | }
6588 |
6589 | @media (max-width: 767px) {
6590 | .hidden-sm.hidden-xs {
6591 | display: none !important;
6592 | }
6593 | tr.hidden-sm.hidden-xs {
6594 | display: none !important;
6595 | }
6596 | th.hidden-sm.hidden-xs,
6597 | td.hidden-sm.hidden-xs {
6598 | display: none !important;
6599 | }
6600 | }
6601 |
6602 | @media (min-width: 768px) and (max-width: 991px) {
6603 | .hidden-sm {
6604 | display: none !important;
6605 | }
6606 | tr.hidden-sm {
6607 | display: none !important;
6608 | }
6609 | th.hidden-sm,
6610 | td.hidden-sm {
6611 | display: none !important;
6612 | }
6613 | }
6614 |
6615 | @media (min-width: 992px) and (max-width: 1199px) {
6616 | .hidden-sm.hidden-md {
6617 | display: none !important;
6618 | }
6619 | tr.hidden-sm.hidden-md {
6620 | display: none !important;
6621 | }
6622 | th.hidden-sm.hidden-md,
6623 | td.hidden-sm.hidden-md {
6624 | display: none !important;
6625 | }
6626 | }
6627 |
6628 | @media (min-width: 1200px) {
6629 | .hidden-sm.hidden-lg {
6630 | display: none !important;
6631 | }
6632 | tr.hidden-sm.hidden-lg {
6633 | display: none !important;
6634 | }
6635 | th.hidden-sm.hidden-lg,
6636 | td.hidden-sm.hidden-lg {
6637 | display: none !important;
6638 | }
6639 | }
6640 |
6641 | .hidden-md {
6642 | display: block !important;
6643 | }
6644 |
6645 | tr.hidden-md {
6646 | display: table-row !important;
6647 | }
6648 |
6649 | th.hidden-md,
6650 | td.hidden-md {
6651 | display: table-cell !important;
6652 | }
6653 |
6654 | @media (max-width: 767px) {
6655 | .hidden-md.hidden-xs {
6656 | display: none !important;
6657 | }
6658 | tr.hidden-md.hidden-xs {
6659 | display: none !important;
6660 | }
6661 | th.hidden-md.hidden-xs,
6662 | td.hidden-md.hidden-xs {
6663 | display: none !important;
6664 | }
6665 | }
6666 |
6667 | @media (min-width: 768px) and (max-width: 991px) {
6668 | .hidden-md.hidden-sm {
6669 | display: none !important;
6670 | }
6671 | tr.hidden-md.hidden-sm {
6672 | display: none !important;
6673 | }
6674 | th.hidden-md.hidden-sm,
6675 | td.hidden-md.hidden-sm {
6676 | display: none !important;
6677 | }
6678 | }
6679 |
6680 | @media (min-width: 992px) and (max-width: 1199px) {
6681 | .hidden-md {
6682 | display: none !important;
6683 | }
6684 | tr.hidden-md {
6685 | display: none !important;
6686 | }
6687 | th.hidden-md,
6688 | td.hidden-md {
6689 | display: none !important;
6690 | }
6691 | }
6692 |
6693 | @media (min-width: 1200px) {
6694 | .hidden-md.hidden-lg {
6695 | display: none !important;
6696 | }
6697 | tr.hidden-md.hidden-lg {
6698 | display: none !important;
6699 | }
6700 | th.hidden-md.hidden-lg,
6701 | td.hidden-md.hidden-lg {
6702 | display: none !important;
6703 | }
6704 | }
6705 |
6706 | .hidden-lg {
6707 | display: block !important;
6708 | }
6709 |
6710 | tr.hidden-lg {
6711 | display: table-row !important;
6712 | }
6713 |
6714 | th.hidden-lg,
6715 | td.hidden-lg {
6716 | display: table-cell !important;
6717 | }
6718 |
6719 | @media (max-width: 767px) {
6720 | .hidden-lg.hidden-xs {
6721 | display: none !important;
6722 | }
6723 | tr.hidden-lg.hidden-xs {
6724 | display: none !important;
6725 | }
6726 | th.hidden-lg.hidden-xs,
6727 | td.hidden-lg.hidden-xs {
6728 | display: none !important;
6729 | }
6730 | }
6731 |
6732 | @media (min-width: 768px) and (max-width: 991px) {
6733 | .hidden-lg.hidden-sm {
6734 | display: none !important;
6735 | }
6736 | tr.hidden-lg.hidden-sm {
6737 | display: none !important;
6738 | }
6739 | th.hidden-lg.hidden-sm,
6740 | td.hidden-lg.hidden-sm {
6741 | display: none !important;
6742 | }
6743 | }
6744 |
6745 | @media (min-width: 992px) and (max-width: 1199px) {
6746 | .hidden-lg.hidden-md {
6747 | display: none !important;
6748 | }
6749 | tr.hidden-lg.hidden-md {
6750 | display: none !important;
6751 | }
6752 | th.hidden-lg.hidden-md,
6753 | td.hidden-lg.hidden-md {
6754 | display: none !important;
6755 | }
6756 | }
6757 |
6758 | @media (min-width: 1200px) {
6759 | .hidden-lg {
6760 | display: none !important;
6761 | }
6762 | tr.hidden-lg {
6763 | display: none !important;
6764 | }
6765 | th.hidden-lg,
6766 | td.hidden-lg {
6767 | display: none !important;
6768 | }
6769 | }
6770 |
6771 | .visible-print {
6772 | display: none !important;
6773 | }
6774 |
6775 | tr.visible-print {
6776 | display: none !important;
6777 | }
6778 |
6779 | th.visible-print,
6780 | td.visible-print {
6781 | display: none !important;
6782 | }
6783 |
6784 | @media print {
6785 | .visible-print {
6786 | display: block !important;
6787 | }
6788 | tr.visible-print {
6789 | display: table-row !important;
6790 | }
6791 | th.visible-print,
6792 | td.visible-print {
6793 | display: table-cell !important;
6794 | }
6795 | .hidden-print {
6796 | display: none !important;
6797 | }
6798 | tr.hidden-print {
6799 | display: none !important;
6800 | }
6801 | th.hidden-print,
6802 | td.hidden-print {
6803 | display: none !important;
6804 | }
6805 | }
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/config.ru:
--------------------------------------------------------------------------------
1 | # This file is used by Rack-based servers to start the application.
2 |
3 | require "hyperloop"
4 | run Hyperloop::Application.new(File.dirname(__FILE__))
5 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/current-time.coffee:
--------------------------------------------------------------------------------
1 | $(document).on "click", ".js-update-current-time", ->
2 | $(".js-current-time").html(new Date().toString())
3 | false
4 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/index.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 | This is your root view!
4 |
5 | It's accessible by making a request to <%= name.capitalize %>'s root path from your browser.
6 |
7 | <%%= render "partial" %>
8 |
9 | Proof that CoffeeScript works:
10 |
11 | The current time is: unknown . Update
12 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/main.scss:
--------------------------------------------------------------------------------
1 | nav {
2 | background-color: #ddd;
3 |
4 | li {
5 | background-color: #bbb;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/lib/hyperloop/generators/site/socool.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jakeboxer/hyperloop/a817238f54b2c2523ec6ab32f3203aa0dc7266c9/lib/hyperloop/generators/site/socool.jpg
--------------------------------------------------------------------------------
/lib/hyperloop/response.rb:
--------------------------------------------------------------------------------
1 | require "rack"
2 |
3 | module Hyperloop
4 | class Response < Rack::Response
5 | def initialize(*)
6 | super
7 | headers["Content-Type"] ||= "text/html"
8 | end
9 | end
10 | end
11 |
--------------------------------------------------------------------------------
/lib/hyperloop/version.rb:
--------------------------------------------------------------------------------
1 | module Hyperloop
2 | VERSION = "0.0.4"
3 | end
4 |
--------------------------------------------------------------------------------
/lib/hyperloop/view.rb:
--------------------------------------------------------------------------------
1 | require "erb"
2 | require "tilt"
3 |
4 | module Hyperloop
5 | class View
6 | def initialize(view_registry, full_path, layout_path=nil)
7 | @view_registry = view_registry
8 | @full_path = full_path
9 | @data = File.read(@full_path)
10 |
11 | # Only load layout data if all of these things are true:
12 | #
13 | # 1. We're not in a partial
14 | # 2. A layout path was provided
15 | # 3. There's a file at the provided layout path
16 | if !partial? && layout_path && File.file?(layout_path)
17 | @layout_data = File.read(layout_path)
18 | end
19 | end
20 |
21 | # Public: The format of the view. Derived from the view's extension.
22 | #
23 | # Returns a string.
24 | def format
25 | @format ||= File.extname(@full_path)[1..-1].intern
26 | end
27 |
28 | # Public: The name of the view. Derived from the view's filename without
29 | # any extensions or leading underscores. Not guaranteed to be unique amongst
30 | # other views in an app.
31 | #
32 | # Returns a string.
33 | def name
34 | @name ||= filename.split(".").first.sub(/^_/, "")
35 | end
36 |
37 | # Public: Is this view a partial?
38 | #
39 | # Returns a boolean.
40 | def partial?
41 | @partial ||= filename.start_with?("_")
42 | end
43 |
44 | # Public: Render the view.
45 | #
46 | # request - Rack request object that the view is being rendered in response
47 | # to.
48 | #
49 | # Returns a string.
50 | def render(request)
51 | case format
52 | when :html
53 | @data
54 | when :erb
55 | scope = Scope.new(request, @view_registry)
56 | view_html = Tilt["erb"].new { @data }.render(scope)
57 |
58 | if @layout_data
59 | layout_template = Tilt["erb"].new { @layout_data }
60 | layout_template.render(scope) { view_html }
61 | else
62 | view_html
63 | end
64 | end
65 | end
66 |
67 | private
68 |
69 | def filename
70 | @filename ||= File.basename(@full_path)
71 | end
72 | end
73 | end
74 |
--------------------------------------------------------------------------------
/lib/hyperloop/view/registry.rb:
--------------------------------------------------------------------------------
1 | module Hyperloop
2 | class View
3 | class Registry
4 | def initialize(root)
5 | views_root = File.join([root, "app/views"].compact)
6 | layout_path = views_root + "/layouts/application.html.erb"
7 |
8 | # Get all the view paths. These look like:
9 | #
10 | # some/path/app/views/whatever.html.erb
11 | # some/path/app/views/subdir/whatever.html.erb
12 | # some/path/app/views/subdir/_partial.html.erb
13 | view_paths = Dir.glob(views_root + "/**/*").reject {|fn| File.directory?(fn)}
14 | view_paths -= [layout_path]
15 |
16 | @template_views = {}
17 | @partial_views = {}
18 |
19 | view_paths.each do |path|
20 | view = View.new(self, path, layout_path)
21 |
22 | # The path under app/views. This will be something like:
23 | #
24 | # /whatever.html.erb
25 | # /subdir/whatever.html.erb
26 | # /subdir/_partial.html.erb
27 | relative_path = path.sub(views_root, "")
28 |
29 | # The path under app/views without a file extension (and without the
30 | # starting _ for partials). This will be something like:
31 | #
32 | # /whatever
33 | # /subdir/whatever
34 | # /subdir/partial
35 | request_dir = File.dirname(relative_path)
36 | request_path = File.join(request_dir, view.name)
37 |
38 | if view.partial?
39 | # Chop off the leading forward slash for partials.
40 | @partial_views[request_path.sub(/^\//, "")] = view
41 | else
42 | @template_views[request_path] = view
43 | @template_views[request_dir] = view if view.name == "index"
44 | end
45 | end
46 | end
47 |
48 | # Public: Get the template view for the specified path.
49 | #
50 | # path - Relative path for the view. Should start under the app/views
51 | # directory and not include file extensions. Should start with a forward
52 | # slash.
53 | #
54 | # Example:
55 | #
56 | # Assuming there's a file at path/to/yoursite/app/views/subdir/whatever.html.erb
57 | #
58 | # bad: registry.find_template_view("/app/views/subdir/whatever.html.erb")
59 | # bad: registry.find_template_view("/subdir/whatever.html.erb")
60 | # bad: registry.find_template_view("subdir/whatever")
61 | # good: registry.find_template_view("/subdir/whatever")
62 | #
63 | # Returns a Hyperloop::View or nil if no view was found.
64 | def find_template_view(path)
65 | @template_views[path]
66 | end
67 |
68 | # Public: Get the partial view for the specified path.
69 | #
70 | # path - Relative path for the view. Should start under the app/views
71 | # directory and not include file extensions, leading underscores, or
72 | # leading forward slashes.
73 | #
74 | # Example:
75 | #
76 | # Assuming there's a file at path/to/yoursite/app/views/subdir/_partial.html.erb
77 | #
78 | # bad: registry.find_partial_view("app/views/subdir/_partial.html.erb")
79 | # bad: registry.find_partial_view("subdir/_partial.html.erb")
80 | # bad: registry.find_partial_view("subdir/_partial")
81 | # bad: registry.find_partial_view("/subdir/partial")
82 | # good: registry.find_partial_view("subdir/partial")
83 | #
84 | # Returns a Hyperloop::View or nil if no view was found.
85 | def find_partial_view(path)
86 | @partial_views[path]
87 | end
88 | end
89 | end
90 | end
91 |
--------------------------------------------------------------------------------
/lib/hyperloop/view/scope.rb:
--------------------------------------------------------------------------------
1 | require "tilt"
2 |
3 | module Hyperloop
4 | class View
5 | class Scope
6 | attr_reader :request
7 |
8 | def initialize(request, view_registry)
9 | @request = request
10 | @view_registry = view_registry
11 | end
12 |
13 | # Public: Render the specified partial.
14 | #
15 | # path - Path to look for the partial at.
16 | #
17 | # Returns a string.
18 | def render(path)
19 | @view_registry.find_partial_view(path).render(request)
20 | end
21 | end
22 | end
23 | end
24 |
--------------------------------------------------------------------------------
/spec/application_spec.rb:
--------------------------------------------------------------------------------
1 | require File.expand_path("../spec_helper", __FILE__)
2 |
3 | describe Hyperloop::Application do
4 | describe "with a flat views directory" do
5 | before :each do
6 | @app = Hyperloop::Application.new(prepare_fixture(:simple))
7 | end
8 |
9 | it "responds successfully to a request for root" do
10 | response = mock_request(@app).get("/")
11 |
12 | expect(response).to be_ok
13 | expect(response.content_type).to eql("text/html")
14 | expect(text_in(response.body, "h1")).to eql("Simple")
15 | end
16 |
17 | it "responds successfully to a request for a different page" do
18 | response = mock_request(@app).get("/about")
19 |
20 | expect(response).to be_ok
21 | expect(text_in(response.body, "h1")).to eql("About")
22 | end
23 |
24 | it "responds successfully to a request with a trailing slash" do
25 | response = mock_request(@app).get("/about/")
26 |
27 | expect(response).to be_ok
28 | expect(text_in(response.body, "h1")).to eql("About")
29 | end
30 |
31 | it "404s on a request for a nonexistent page" do
32 | response = mock_request(@app).get("/nonexistent")
33 |
34 | expect(response).to be_not_found
35 | end
36 | end
37 |
38 | describe "with subdirectories" do
39 | before :each do
40 | @app = Hyperloop::Application.new(prepare_fixture(:subdirectories))
41 | end
42 |
43 | it "responds successfully to a request for the subdirectory root" do
44 | response = mock_request(@app).get("/subdir1")
45 |
46 | expect(response).to be_ok
47 | expect(text_in(response.body, "h1")).to eql("Subdirectory Index")
48 | end
49 |
50 | it "responds successfully to a request for a different page in the subdirectory" do
51 | response = mock_request(@app).get("/subdir1/kanye")
52 |
53 | expect(response).to be_ok
54 | expect(text_in(response.body, "h1")).to eql("Hurry up with my damn croissant")
55 | end
56 | end
57 |
58 | describe "with ERB" do
59 | before :each do
60 | @app = Hyperloop::Application.new(prepare_fixture(:erb))
61 | end
62 |
63 | it "renders embedded Ruby in the root page" do
64 | response = mock_request(@app).get("/")
65 |
66 | expect(response).to be_ok
67 | expect(text_in(response.body, "h1")).to eql("WE ARE USING ERB")
68 | end
69 | end
70 |
71 | describe "with a layout" do
72 | before :each do
73 | @app = Hyperloop::Application.new(prepare_fixture(:layouts))
74 | end
75 |
76 | it "renders the root view within the layout" do
77 | response = mock_request(@app).get("/")
78 |
79 | expect(response).to be_ok
80 | expect(text_in(response.body, "h1")).to eql("Layout Header")
81 | expect(text_in(response.body, "h2")).to eql("This is the root page!")
82 | end
83 |
84 | it "renders subdirectory views within the layout" do
85 | response = mock_request(@app).get("/subdir")
86 |
87 | expect(response).to be_ok
88 | expect(text_in(response.body, "h1")).to eql("Layout Header")
89 | expect(text_in(response.body, "h2")).to eql("This is a page in a subdirectory!")
90 | end
91 | end
92 |
93 | describe "with assets" do
94 | before :each do
95 | @app = Hyperloop::Application.new(prepare_fixture(:assets))
96 | end
97 |
98 | it "responds successfully to a request for root" do
99 | response = mock_request(@app).get("/")
100 |
101 | expect(response).to be_ok
102 | expect(text_in(response.body, "h1")).to eql("This app has so many assets")
103 | end
104 |
105 | it "responds successfully to a request for the css app bundle" do
106 | response = mock_request(@app).get("/assets/stylesheets/app.css")
107 |
108 | expect(response).to be_ok
109 | expect(response.content_type).to eql("text/css")
110 | expect(response.body).to match(/display: ?block/)
111 | end
112 |
113 | it "responds successfully to a request for the javascript app bundle" do
114 | response = mock_request(@app).get("/assets/javascripts/app.js")
115 |
116 | expect(response).to be_ok
117 | expect(response.content_type).to eql("application/javascript")
118 | expect(response.body).to match(/alert\("such javascript wow"\)/)
119 | end
120 |
121 | it "responds successfully to a request for a vendored css file" do
122 | response = mock_request(@app).get("/assets/stylesheets/vendored.css")
123 |
124 | expect(response).to be_ok
125 | expect(response.content_type).to eql("text/css")
126 | expect(response.body).to match(/margin: ?0/)
127 | end
128 |
129 | it "responds successfully to a request for a vendored javascript bundle" do
130 | response = mock_request(@app).get("/assets/javascripts/vendored.js")
131 |
132 | expect(response).to be_ok
133 | expect(response.content_type).to eql("application/javascript")
134 | expect(response.body).to match(/alert\("i am vendored"\)/)
135 | end
136 |
137 | it "responds successfully to a request for a gif" do
138 | response = mock_request(@app).get("/assets/images/my-gif.gif")
139 |
140 | expect(response).to be_ok
141 | expect(response.content_type).to eql("image/gif")
142 | expect(Digest::SHA1.hexdigest(response.body)).to eql("bcbc6e6fc1eb77b2ca676e17425df93a56495bb2")
143 | end
144 |
145 | it "responds successfully to a request for a jpg" do
146 | response = mock_request(@app).get("/assets/images/my-jpg.jpg")
147 |
148 | expect(response).to be_ok
149 | expect(response.content_type).to eql("image/jpeg")
150 | expect(Digest::SHA1.hexdigest(response.body)).to eql("ae6a26b513d6648446da1395ee73e9cf32c8c668")
151 | end
152 |
153 | it "responds successfully to a request for a png" do
154 | response = mock_request(@app).get("/assets/images/my-png.png")
155 |
156 | expect(response).to be_ok
157 | expect(response.content_type).to eql("image/png")
158 | expect(Digest::SHA1.hexdigest(response.body)).to eql("adf65c25a8e3e39c49ecf581433278d7eac4d1a2")
159 | end
160 |
161 | it "404s on a request for an asset without namespacing by type" do
162 | response = mock_request(@app).get("/assets/app.js")
163 | expect(response).to be_not_found
164 | end
165 |
166 | it "404s on a request for an asset namespaced by the wrong type" do
167 | response = mock_request(@app).get("/assets/stylesheets/app.js")
168 | expect(response).to be_not_found
169 | end
170 |
171 | it "404s on a request for an asset namespaced by an unknown type" do
172 | response = mock_request(@app).get("/assets/shouldfail/shouldfail.css")
173 | expect(response).to be_not_found
174 | end
175 |
176 | it "404s on a request for a nonexistent asset" do
177 | response = mock_request(@app).get("/assets/javascripts/nonexistent.js")
178 |
179 | expect(response).to be_not_found
180 | end
181 | end
182 |
183 | describe "live reloading" do
184 | context "with assets" do
185 | before :each do
186 | @root = prepare_fixture(:assets)
187 | @app = Hyperloop::Application.new(@root)
188 | end
189 |
190 | it "reloads changed assets" do
191 | # On the first request, stylesheet should have `display: block` and not
192 | # `display: inline`.
193 | response = mock_request(@app).get("/assets/stylesheets/app.css")
194 | expect(response).to be_ok
195 | expect(response.body).to match(/display: ?block/)
196 | expect(response.body).not_to match(/display: ?inline/)
197 |
198 | change_fixture(@root, "app/assets/stylesheets/my-styles.scss",
199 | :pattern => "display: block",
200 | :replacement => "display: inline"
201 | )
202 |
203 | # On the second request, stylesheet should have `display: inline` and not
204 | # `display: block`.
205 | response = mock_request(@app).get("/assets/stylesheets/app.css")
206 | expect(response).to be_ok
207 | expect(response.body).to match(/display: ?inline/)
208 | expect(response.body).not_to match(/display: ?block/)
209 | end
210 | end
211 |
212 | context "with views" do
213 | before :each do
214 | @root = prepare_fixture(:partials)
215 | @app = Hyperloop::Application.new(@root)
216 | end
217 |
218 | it "reloads changed layouts" do
219 | # On the first request, text should not be "Changed"
220 | response = mock_request(@app).get("/")
221 | expect(response).to be_ok
222 | expect(text_in(response.body, "title")).not_to eql("Changed")
223 |
224 | change_fixture(@root, "app/views/layouts/application.html.erb",
225 | :pattern => /[^<]*<\/title>/,
226 | :replacement => "Changed "
227 | )
228 |
229 | # On the second request, text should be "Changed"
230 | response = mock_request(@app).get("/")
231 | expect(response).to be_ok
232 | expect(text_in(response.body, "title")).to eql("Changed")
233 | end
234 |
235 | it "reloads changed partials" do
236 | # On the first request, text should not be "Changed"
237 | response = mock_request(@app).get("/")
238 | expect(response).to be_ok
239 | expect(text_in(response.body, "p.spec-in-partial")).not_to eql("Changed")
240 |
241 | change_fixture(@root, "app/views/subdir/_partial.html.erb",
242 | :pattern => /
[^<]*<\/p>/,
243 | :replacement => "
Changed
"
244 | )
245 |
246 | # On the second request, text should be "Changed"
247 | response = mock_request(@app).get("/")
248 | expect(response).to be_ok
249 | expect(text_in(response.body, "p.spec-in-partial")).to eql("Changed")
250 | end
251 |
252 | it "reloads changed views" do
253 | # On the first request,
text should not be "Changed"
254 | response = mock_request(@app).get("/")
255 | expect(response).to be_ok
256 | expect(text_in(response.body, "h2")).not_to eql("Changed")
257 |
258 | change_fixture(@root, "app/views/index.html.erb",
259 | :pattern => /[^<]*<\/h2>/,
260 | :replacement => "Changed "
261 | )
262 |
263 | # On the second request, text should be "Changed"
264 | response = mock_request(@app).get("/")
265 | expect(response).to be_ok
266 | expect(text_in(response.body, "h2")).to eql("Changed")
267 | end
268 | end
269 |
270 | context "in production" do
271 | before :each do
272 | set_rack_env :production
273 | end
274 |
275 | after :each do
276 | reset_rack_env
277 | end
278 |
279 | it "doesn't reload changed views" do
280 | root = prepare_fixture(:erb)
281 | app = Hyperloop::Application.new(root)
282 |
283 | # On the first request, text should be "ERB"
284 | response = mock_request(app).get("/")
285 | expect(response).to be_ok
286 | expect(text_in(response.body, "title")).to eql("ERB")
287 |
288 | change_fixture(root, "app/views/index.html.erb",
289 | :pattern => "ERB ",
290 | :replacement => "Changed "
291 | )
292 |
293 | # On the second request, text should still be "ERB"
294 | response = mock_request(app).get("/")
295 | expect(response).to be_ok
296 | expect(text_in(response.body, "title")).to eql("ERB")
297 | end
298 | end
299 | end
300 | end
301 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/images/my-gif.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jakeboxer/hyperloop/a817238f54b2c2523ec6ab32f3203aa0dc7266c9/spec/fixtures/assets/app/assets/images/my-gif.gif
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/images/my-jpg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jakeboxer/hyperloop/a817238f54b2c2523ec6ab32f3203aa0dc7266c9/spec/fixtures/assets/app/assets/images/my-jpg.jpg
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/images/my-png.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jakeboxer/hyperloop/a817238f54b2c2523ec6ab32f3203aa0dc7266c9/spec/fixtures/assets/app/assets/images/my-png.png
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/javascripts/app.js:
--------------------------------------------------------------------------------
1 | //= require_tree
2 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/javascripts/my-scripts.coffee:
--------------------------------------------------------------------------------
1 | alert "such javascript wow"
2 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/shouldfail/shouldfail.css:
--------------------------------------------------------------------------------
1 | div {
2 | display: none;
3 | }
4 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/stylesheets/app.css:
--------------------------------------------------------------------------------
1 | //= require_tree
2 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/assets/stylesheets/my-styles.scss:
--------------------------------------------------------------------------------
1 | div {
2 | display: block;
3 | }
4 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/views/index.html.erb:
--------------------------------------------------------------------------------
1 | This is the root page for the app with assets!
2 |
3 | How u doin. Check out these images in 3 different formats.
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | App With Assets
5 |
6 |
7 |
8 |
9 |
10 |
11 | This app has so many assets
12 |
13 | <%= yield %>
14 |
15 |
16 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/vendor/assets/javascripts/vendored.js:
--------------------------------------------------------------------------------
1 | alert("i am vendored");
2 |
--------------------------------------------------------------------------------
/spec/fixtures/assets/vendor/assets/stylesheets/vendored.css:
--------------------------------------------------------------------------------
1 | div {
2 | margin: 0;
3 | }
4 |
--------------------------------------------------------------------------------
/spec/fixtures/erb/app/views/about.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ERB
5 |
6 |
7 |
8 | I was born on <%= Time.utc(1985, 12, 21).strftime('%B %e') %>
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/erb/app/views/index.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ERB
5 |
6 |
7 |
8 | <%= "we are using erb".upcase %>
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/layouts/app/views/index.html.erb:
--------------------------------------------------------------------------------
1 | This is the root page!
2 |
3 | Sup.
4 |
--------------------------------------------------------------------------------
/spec/fixtures/layouts/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | App With Layouts
5 |
6 |
7 |
8 | Layout Header
9 |
10 | <%= yield %>
11 |
12 |
13 |
--------------------------------------------------------------------------------
/spec/fixtures/layouts/app/views/subdir/index.html.erb:
--------------------------------------------------------------------------------
1 | This is a page in a subdirectory!
2 |
3 | How u doin.
4 |
--------------------------------------------------------------------------------
/spec/fixtures/partials/app/views/index.html.erb:
--------------------------------------------------------------------------------
1 | This part of the root page is not in a partial!
2 |
3 | <%= render "subdir/partial" %>
4 |
--------------------------------------------------------------------------------
/spec/fixtures/partials/app/views/layouts/application.html.erb:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | App With Partials
5 |
6 |
7 |
8 | Partials work in this app
9 |
10 | <%= yield %>
11 |
12 |
13 |
--------------------------------------------------------------------------------
/spec/fixtures/partials/app/views/subdir/_partial.html.erb:
--------------------------------------------------------------------------------
1 | This is coming from a partial.
2 |
--------------------------------------------------------------------------------
/spec/fixtures/partials/app/views/subdir/index.html.erb:
--------------------------------------------------------------------------------
1 | This is a page in a subdirectory!
2 |
3 | How u doin.
4 |
--------------------------------------------------------------------------------
/spec/fixtures/partials/app/views/subdir/nonroot.html.erb:
--------------------------------------------------------------------------------
1 | This is not the root!
2 |
3 | But it's still cool.
4 |
--------------------------------------------------------------------------------
/spec/fixtures/simple/app/views/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | About
5 |
6 |
7 |
8 | About
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/simple/app/views/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Simple
5 |
6 |
7 |
8 | Simple
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/subdirectories/app/views/about.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | About
5 |
6 |
7 |
8 | About
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/subdirectories/app/views/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Simple
5 |
6 |
7 |
8 | Simple
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/subdirectories/app/views/subdir1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Subdirectory Index
5 |
6 |
7 |
8 | Subdirectory Index
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/fixtures/subdirectories/app/views/subdir1/kanye.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Kanye West
5 |
6 |
7 |
8 | Hurry up with my damn croissant
9 |
10 |
11 |
--------------------------------------------------------------------------------
/spec/response_spec.rb:
--------------------------------------------------------------------------------
1 | require File.expand_path("../spec_helper", __FILE__)
2 |
3 | describe Hyperloop::Response do
4 | it "has a body" do
5 | response = Hyperloop::Response.new("irrelevant")
6 | expect(response.body).not_to be_empty
7 | end
8 | end
9 |
--------------------------------------------------------------------------------
/spec/spec_helper.rb:
--------------------------------------------------------------------------------
1 | require "nokogiri"
2 | require "pry"
3 |
4 | require "hyperloop"
5 |
6 | module Helpers
7 | # Public: Clean up all prepared fixtures.
8 | #
9 | # Returns nothing.
10 | def cleanup_fixtures
11 | tmp_fixtures_dir = File.join("tmp", "spec", "fixtures")
12 | FileUtils.rm_rf(tmp_fixtures_dir)
13 | end
14 |
15 | # Public: Change the contents of a file in a fixture.
16 | #
17 | # fixture_path - Path to the fixture containing the file we want to change.
18 | # file_path - Path (relative to fixture_path) of the file we want to
19 | # change.
20 | # options - Hash containing the following keys:
21 | # :pattern - (Required) Regexp or String to find in the
22 | # file. Only the first occurrence will be
23 | # matched.
24 | # :replacement - (Required) String to replace the found pattern
25 | # with.
26 | #
27 | # Examples:
28 | #
29 | # change_fixture("tmp/spec/fixtures/erb", "app/views/index.html.erb",
30 | # :pattern => "ERB ",
31 | # :replacement => "Changed "
32 | # )
33 | #
34 | # change_fixture("tmp/spec/fixtures/erb", "app/views/index.html.erb",
35 | # :pattern => /[^<]*<\/title>/,
36 | # :replacement => "Changed "
37 | # )
38 | #
39 | # Returns nothing.
40 | def change_fixture(fixture_path, file_path, options = {})
41 | pattern = options[:pattern]
42 | replacement = options[:replacement]
43 |
44 | raise ArgumentError, "change_fixture must include a :pattern option" unless pattern
45 | raise ArgumentError, "change_fixture must include a :replacement option" unless replacement
46 |
47 | File.open(File.join(fixture_path, file_path), "r+") do |f|
48 | data = f.read.sub(pattern, replacement)
49 | f.rewind
50 | f.write(data)
51 | end
52 | end
53 |
54 | def html(str)
55 | Nokogiri::HTML(str)
56 | end
57 |
58 | def mock_view_registry
59 | @mock_view_registry ||= double("Hyperloop::View::Registry",
60 | :find_partial_view => nil,
61 | :find_template_view => nil
62 | )
63 | end
64 |
65 | # Public: Prepare a fixture with the specified name.
66 | #
67 | # name - Symbol name of the fixture to prepare. The name passed here will be
68 | # looked up in the spec/fixtures directory.
69 | #
70 | # Note:
71 | #
72 | # This method exists along with change_fixture and cleanup_fixtures. If
73 | # these get used a lot more or more fixture-related functionality is added,
74 | # it may make sense to extract a Fixture class and move these methods into
75 | # it.
76 | #
77 | # Returns a string filepath representing the new location of the prepared
78 | # fixture.
79 | def prepare_fixture(name)
80 | root = File.join("spec", "fixtures", name.to_s)
81 | contents = File.join(root, ".")
82 | tmp_root = File.join("tmp", root)
83 |
84 | # Delete and recreate the tmp/spec/fixtures/:name directory, then copy the
85 | # fixture into it.
86 | FileUtils.rm_rf(tmp_root)
87 | FileUtils.mkdir_p(tmp_root)
88 | FileUtils.cp_r(contents, tmp_root)
89 |
90 | tmp_root
91 | end
92 |
93 | # Public: Set the RACK_ENV environment variable back to whatever it was when
94 | # the spec started running. If RACK_ENV wasn't set before the spec started
95 | # running, it will be deleted.
96 | #
97 | # Returns nothing.
98 | def reset_rack_env
99 | if defined?(@old_rack_env)
100 | ENV["RACK_ENV"] = @old_rack_env
101 | else
102 | ENV.delete("RACK_ENV")
103 | end
104 | end
105 |
106 | # Public: Set the RACK_ENV environment variable to the specified value.
107 | #
108 | # name - Symbol environment name to set RACK_ENV to. Should be :development,
109 | # :test, or :production.
110 | #
111 | # Returns nothing.
112 | def set_rack_env(name)
113 | @old_rack_env = ENV["RACK_ENV"] if ENV.key?("RACK_ENV")
114 | ENV["RACK_ENV"] = name.to_s
115 | end
116 |
117 | def text_in(html_str, selector)
118 | node = html(html_str).at_css(selector)
119 | node && node.text
120 | end
121 |
122 | def mock_app
123 | @mock_app ||= double("rack app", :call => Hyperloop::Response.new.finish )
124 | end
125 |
126 | def mock_request(app = nil)
127 | Rack::MockRequest.new(app || mock_app)
128 | end
129 | end
130 |
131 | ENV["RACK_ENV"] ||= "test"
132 |
133 | RSpec.configure do |c|
134 | c.include(Helpers)
135 |
136 | c.after :all do
137 | cleanup_fixtures
138 | end
139 | end
140 |
--------------------------------------------------------------------------------
/spec/view/registry_spec.rb:
--------------------------------------------------------------------------------
1 | describe Hyperloop::View::Registry do
2 | before :each do
3 | @registry = Hyperloop::View::Registry.new("spec/fixtures/partials/")
4 | end
5 |
6 | describe "#find_template_view" do
7 | it "finds the root view" do
8 | expect(@registry.find_template_view("/").name).to eql("index")
9 | end
10 |
11 | it "finds a root view in a subdirectory" do
12 | expect(@registry.find_template_view("/subdir").name).to eql("index")
13 | end
14 |
15 | it "finds a non-root view in a subdirectory" do
16 | expect(@registry.find_template_view("/subdir/nonroot").name).to eql("nonroot")
17 | end
18 |
19 | it "doesn't find partials" do
20 | expect(@registry.find_template_view("/subdir/partial")).to be_nil
21 | expect(@registry.find_template_view("/subdir/_partial")).to be_nil
22 | expect(@registry.find_template_view("subdir/partial")).to be_nil
23 | expect(@registry.find_template_view("subdir/_partial")).to be_nil
24 | end
25 |
26 | it "doesn't find layouts" do
27 | expect(@registry.find_template_view("/layouts/application")).to be_nil
28 | end
29 | end
30 |
31 | describe "#find_partial_view" do
32 | it "finds partials" do
33 | expect(@registry.find_partial_view("subdir/partial").name).to eql("partial")
34 | end
35 |
36 | it "doesn't find partials if the filename in the path is prefixed with an underscore" do
37 | expect(@registry.find_partial_view("subdir/_partial")).to be_nil
38 | end
39 |
40 | it "doesn't find partials if the path is prefixed with a forward slash" do
41 | expect(@registry.find_partial_view("/subdir/partial")).to be_nil
42 | end
43 |
44 | it "doesn't find template views" do
45 | expect(@registry.find_partial_view("/")).to be_nil
46 | expect(@registry.find_partial_view("/subdir")).to be_nil
47 | expect(@registry.find_partial_view("/subdir/nonroot")).to be_nil
48 | expect(@registry.find_partial_view("subdir/nonroot")).to be_nil
49 | end
50 |
51 | it "doesn't find layouts" do
52 | expect(@registry.find_partial_view("/subdir/layouts/application")).to be_nil
53 | expect(@registry.find_partial_view("subdir/layouts/application")).to be_nil
54 | end
55 | end
56 | end
57 |
--------------------------------------------------------------------------------
/spec/view/scope_spec.rb:
--------------------------------------------------------------------------------
1 | describe Hyperloop::View::Scope do
2 | before :each do
3 | view_registry = Hyperloop::View::Registry.new("spec/fixtures/partials/")
4 | @request = mock_request
5 | @scope = Hyperloop::View::Scope.new(@request, view_registry)
6 | end
7 |
8 | describe "#request" do
9 | it "is the request that the scope will be used in response to" do
10 | expect(@scope.request).to eql(@request)
11 | end
12 | end
13 |
14 | describe "#render" do
15 | it "renders the specified partial" do
16 | html = @scope.render("subdir/partial")
17 |
18 | expect(text_in(html, "p")).to eql("This is coming from a partial.")
19 | end
20 | end
21 | end
22 |
--------------------------------------------------------------------------------
/spec/view_spec.rb:
--------------------------------------------------------------------------------
1 | require File.expand_path("../spec_helper", __FILE__)
2 |
3 | describe Hyperloop::View do
4 | before :each do
5 | @html_view = Hyperloop::View.new(mock_view_registry,
6 | "spec/fixtures/simple/app/views/about.html"
7 | )
8 |
9 | @erb_view = Hyperloop::View.new(mock_view_registry,
10 | "spec/fixtures/erb/app/views/about.html.erb"
11 | )
12 |
13 | @layout_view = Hyperloop::View.new(mock_view_registry,
14 | "spec/fixtures/layouts/app/views/index.html.erb",
15 | "spec/fixtures/layouts/app/views/layouts/application.html.erb"
16 | )
17 |
18 | partials_view_registry = Hyperloop::View::Registry.new("spec/fixtures/partials/")
19 | @partial_container = partials_view_registry.find_template_view("/")
20 | @partial_view = partials_view_registry.find_partial_view("subdir/partial")
21 | end
22 |
23 | describe "#format" do
24 | it "is :html for HTML files" do
25 | expect(@html_view.format).to eql(:html)
26 | end
27 |
28 | it "is :erb for ERB files" do
29 | expect(@erb_view.format).to eql(:erb)
30 | end
31 | end
32 |
33 | describe "#name" do
34 | it "strips the extension from plain HTML files" do
35 | expect(@html_view.name).to eql("about")
36 | end
37 |
38 | it "strips the extension from ERB files" do
39 | expect(@erb_view.name).to eql("about")
40 | end
41 |
42 | it "strips the leading underscore for partials" do
43 | expect(@partial_view.name).to eql("partial")
44 | end
45 | end
46 |
47 | describe "#partial?" do
48 | it "is false for a template view" do
49 | expect(@partial_container).not_to be_partial
50 | end
51 |
52 | it "is true for a partial view" do
53 | expect(@partial_view).to be_partial
54 | end
55 | end
56 |
57 | describe "#render" do
58 | it "renders plain HTML files" do
59 | html = @html_view.render(mock_request)
60 |
61 | expect(text_in(html, "h1")).to eql("About")
62 | end
63 |
64 | it "renders ERB files" do
65 | html = @erb_view.render(mock_request)
66 |
67 | expect(text_in(html, "h1")).to eql("I was born on December 21")
68 | end
69 |
70 | it "renders ERB files in layouts" do
71 | html = @layout_view.render(mock_request)
72 |
73 | expect(text_in(html, "h1")).to eql("Layout Header")
74 | expect(text_in(html, "h2")).to eql("This is the root page!")
75 | end
76 |
77 | it "renders ERB files containing partials" do
78 | html = @partial_container.render(mock_request)
79 |
80 | expect(text_in(html, "h1")).to eql("Partials work in this app")
81 | expect(text_in(html, "h2")).to eql("This part of the root page is not in a partial!")
82 | expect(text_in(html, "p")).to eql("This is coming from a partial.")
83 | end
84 |
85 | it "renders ERB partials" do
86 | html = @partial_view.render(mock_request)
87 |
88 | expect(text_in(html, "h1")).not_to eql("Partials work in this app")
89 | expect(text_in(html, "h2")).not_to eql("This part of the root page is not in a partial!")
90 | expect(text_in(html, "p")).to eql("This is coming from a partial.")
91 | end
92 | end
93 | end
94 |
--------------------------------------------------------------------------------