squad_goals 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +11 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +4 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +74 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/bower.json +15 -0
  13. data/config.ru +2 -0
  14. data/lib/squad_goals.rb +41 -0
  15. data/lib/squad_goals/app.rb +39 -0
  16. data/lib/squad_goals/helpers.rb +33 -0
  17. data/lib/squad_goals/public/vendor/bootstrap/.bower.json +44 -0
  18. data/lib/squad_goals/public/vendor/bootstrap/LICENSE +21 -0
  19. data/lib/squad_goals/public/vendor/bootstrap/bower.json +34 -0
  20. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap-theme.css +587 -0
  21. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap-theme.css.map +1 -0
  22. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap-theme.min.css +6 -0
  23. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap-theme.min.css.map +1 -0
  24. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap.css +6760 -0
  25. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap.css.map +1 -0
  26. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap.min.css +6 -0
  27. data/lib/squad_goals/public/vendor/bootstrap/dist/css/bootstrap.min.css.map +1 -0
  28. data/lib/squad_goals/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.eot +0 -0
  29. data/lib/squad_goals/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.svg +288 -0
  30. data/lib/squad_goals/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf +0 -0
  31. data/lib/squad_goals/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff +0 -0
  32. data/lib/squad_goals/public/vendor/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 +0 -0
  33. data/lib/squad_goals/public/vendor/bootstrap/dist/js/bootstrap.js +2363 -0
  34. data/lib/squad_goals/public/vendor/bootstrap/dist/js/bootstrap.min.js +7 -0
  35. data/lib/squad_goals/public/vendor/bootstrap/dist/js/npm.js +13 -0
  36. data/lib/squad_goals/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot +0 -0
  37. data/lib/squad_goals/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg +288 -0
  38. data/lib/squad_goals/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf +0 -0
  39. data/lib/squad_goals/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff +0 -0
  40. data/lib/squad_goals/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 +0 -0
  41. data/lib/squad_goals/public/vendor/bootstrap/package.json +87 -0
  42. data/lib/squad_goals/version.rb +3 -0
  43. data/lib/squad_goals/views/error.erb +5 -0
  44. data/lib/squad_goals/views/index.erb +8 -0
  45. data/lib/squad_goals/views/layout.erb +27 -0
  46. data/lib/squad_goals/views/success.erb +9 -0
  47. data/script/bootstrap +5 -0
  48. data/script/cibuild +5 -0
  49. data/script/server +5 -0
  50. data/squad_goals.gemspec +33 -0
  51. metadata +261 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: badf3262d4bdba40aa294a1ae0cda649102b0fe6
4
+ data.tar.gz: 7e2cfbed9d2db0c1219ddb3de19af209c73a551b
5
+ SHA512:
6
+ metadata.gz: f62dda1d8c8ef67640109fc358f4aa5d2b0924b1f59b7fef3e572412999224546f1a2b08ca3cfa1eef590747df241fad2239d1fb83d797f00cb1e949d9f8f80f
7
+ data.tar.gz: e756632cbc6fd58e1cc78cafca106a1180a674e398919ed90b6a0f921fe2cb0ca874e1b7e8bb37e3f780456d2f2270ee5001d3a5ee51976e1d23b3d4f1469878
@@ -0,0 +1,3 @@
1
+ {
2
+ "directory": "lib/squad_goals/public/vendor"
3
+ }
@@ -0,0 +1,11 @@
1
+ .env
2
+ .bundle
3
+ *.gem
4
+ Gemfile.lock
5
+ /lib/squad_goals/public/vendor/jquery
6
+ /lib/squad_goals/public/vendor/bootstrap/grunt
7
+ /lib/squad_goals/public/vendor/bootstrap/js
8
+ /lib/squad_goals/public/vendor/bootstrap/less
9
+ /lib/squad_goals/public/vendor/bootstrap/nuget
10
+ /lib/squad_goals/public/vendor/bootstrap/*.md
11
+ /lib/squad_goals/public/vendor/bootstrap/*.js
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.3.0
4
+ before_install: gem install bundler -v 1.11.2
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in squad_goals.gemspec
4
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Ben Balter
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,74 @@
1
+ # SquadGoals
2
+
3
+ A tiny app to allow open-source contributors to opt-in to GitHub teams.
4
+
5
+ ## What it does
6
+
7
+ The #SquadGoals app provides an interface whereby community members can see a list of open GitHub teams, and provide them with the ability to freely join any team at the click of a button.
8
+
9
+ ![screenshot](https://cloud.githubusercontent.com/assets/282759/13612933/e7271ece-e537-11e5-987a-057799f96e7c.png)
10
+
11
+ ## Setup
12
+
13
+ ### Credentials
14
+
15
+ You'll need a few different credentials for things to work:
16
+
17
+ #### A bot account
18
+
19
+ You'll need a dedicated "bot" account to add users to the organization:
20
+
21
+ 1. [Create a bot account](https://github.com/signup) (a standard GitHub account not used by a human) that has *admin* rights to your organization.
22
+ 2. [Create a personal access token](https://github.com/settings/tokens/new) for that user, with `admin:org` scope.
23
+
24
+ #### An OAuth application
25
+
26
+ You'll also need to create an OAuth application to validate users:
27
+
28
+ 1. Create an OAuth application *within your organization* via `https://github.com/organizations/[YOUR-ORGANIZATION-NAME]/settings/applications/new`
29
+ 2. The homepage URL should be the URL to your production instance.
30
+ 3. You can leave the callback URL blank. The default is fine.
31
+
32
+ ## Developing locally and deploying
33
+
34
+ 1. Create [an OAuth app](github.com/settings/applications/new) (see above)
35
+ 2. Create a personal access token for a user with admin rights to the organization (see above)
36
+ 3. Add `gem 'squad_gaols' to your project's Gemfile`
37
+ 4. Add the following to your project's `config.ru` file:
38
+
39
+ ```ruby
40
+ require 'squad_goals'
41
+ run SquadGoals::App
42
+ ```
43
+
44
+ ## Configuration
45
+
46
+ The following environmental values should be set:
47
+
48
+ * `GITHUB_ORG_ID` - The name of the org to add users to
49
+ * `GITHUB_CLIENT_ID` - Your OAuth app's client ID
50
+ * `GITHUB_CLIENT_SECRET` - Your OAuth app's client secret
51
+ * `GITHUB_TOKEN` - A personal access token for a user with admin rights to the organization
52
+ * `GITHUB_TEAMS` - Comma-separated list of team names you'd like to allow access to, e.g, `red-team,blue-team`
53
+
54
+ ### Customizing Views
55
+
56
+ There are three views, `success`, `forbidden`, and `error`. They're pretty boring by default, so you may want to swap them out for something a bit my snazzy. If you had a views directory along side your `config.ru`, you can do so like this in your `config.ru` file:
57
+
58
+ ```ruby
59
+ require 'squad_goals'
60
+ SquadGoals.views_dir = File.expand_path("./views", File.dirname(__FILE__))
61
+ run SquadGoals::App
62
+ ```
63
+
64
+ These are just sinatra `.erb` views. Take a look at [the default views](https://github.com/benbalter/squad_goals/tree/master/lib/squad_goals/views) for an example.
65
+
66
+ ### Customizing static assets
67
+
68
+ You can also do the same with `SquadGoals.public_dir` for serving static assets (AddToOrg comes bundled with Bootstrap by default).
69
+
70
+ ```ruby
71
+ require 'squad_goals'
72
+ SquadGoals.public_dir = File.expand_path("./public", File.dirname(__FILE__))
73
+ run SquadGoals::App
74
+ ```
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'squad_goals'
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'irb'
14
+ IRB.start
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "squad_goals",
3
+ "homepage": "https://github.com/benbalter/squad_goals",
4
+ "authors": [
5
+ "Ben Balter <ben.balter@github.com>"
6
+ ],
7
+ "description": "A simple Oauth App to automatically add users to an organization",
8
+ "main": "script/server",
9
+ "moduleType": [],
10
+ "license": "MIT",
11
+ "private": true,
12
+ "dependencies": {
13
+ "bootstrap": "~3.3.6"
14
+ }
15
+ }
@@ -0,0 +1,2 @@
1
+ require 'squad_goals'
2
+ run SquadGoals::App
@@ -0,0 +1,41 @@
1
+ require 'sinatra_auth_github'
2
+ require 'octokit'
3
+ require 'dotenv'
4
+ require 'yaml'
5
+ require 'tilt/erb'
6
+
7
+ require 'squad_goals/version'
8
+ require 'squad_goals/helpers'
9
+ require 'squad_goals/app'
10
+
11
+ module SquadGoals
12
+ def self.root
13
+ File.expand_path './squad_goals', File.dirname(__FILE__)
14
+ end
15
+
16
+ def self.views_dir
17
+ @views_dir ||= File.expand_path 'views', SquadGoals.root
18
+ end
19
+
20
+ def self.views_dir=(dir)
21
+ @views_dir = dir
22
+ end
23
+
24
+ def self.public_dir
25
+ @public_dir ||= File.expand_path 'public', SquadGoals.root
26
+ end
27
+
28
+ def self.public_dir=(dir)
29
+ @public_dir = dir
30
+ end
31
+ end
32
+
33
+ unless SquadGoals::App.production?
34
+ Dotenv.load
35
+ stack = Faraday::RackBuilder.new do |builder|
36
+ builder.response :logger
37
+ builder.use Octokit::Response::RaiseError
38
+ builder.adapter Faraday.default_adapter
39
+ end
40
+ Octokit.middleware = stack
41
+ end
@@ -0,0 +1,39 @@
1
+ module SquadGoals
2
+ class App < Sinatra::Base
3
+ include SquadGoals::Helpers
4
+
5
+ set :github_options, scopes: ''
6
+
7
+ use Rack::Session::Cookie, http_only: true,
8
+ secret: ENV['SESSION_SECRET'] || SecureRandom.hex
9
+
10
+ ENV['WARDEN_GITHUB_VERIFIER_SECRET'] ||= SecureRandom.hex
11
+ register Sinatra::Auth::Github
12
+
13
+ set :views, proc { SquadGoals.views_dir }
14
+ set :root, proc { SquadGoals.root }
15
+ set :public_folder, proc { SquadGoals.public_dir }
16
+
17
+ # require ssl
18
+ configure :production do
19
+ require 'rack-ssl-enforcer'
20
+ use Rack::SslEnforcer
21
+ end
22
+
23
+ get '/' do
24
+ erb :index, locals: { teams: teams, org_id: org_id }
25
+ end
26
+
27
+ get '/join/:team' do
28
+ if team.nil? # invalid team
29
+ status 409
30
+ halt erb :error
31
+ end
32
+
33
+ authenticate!
34
+ add!
35
+
36
+ erb :success, locals: { team: team, org_id: org_id }
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,33 @@
1
+ module SquadGoals
2
+ module Helpers
3
+
4
+ def teams
5
+ @teams ||= begin
6
+ teams = client.organization_teams(org_id)
7
+ teams.select { |team| team_whitelist.include? team.slug }
8
+ end
9
+ end
10
+
11
+ private
12
+
13
+ def team_whitelist
14
+ ENV['GITHUB_TEAMS'].split(",")
15
+ end
16
+
17
+ def client
18
+ @client ||= Octokit::Client.new access_token: ENV['GITHUB_TOKEN']
19
+ end
20
+
21
+ def org_id
22
+ ENV['GITHUB_ORG_ID']
23
+ end
24
+
25
+ def team
26
+ teams.find { |team| team.slug == params["team"] }
27
+ end
28
+
29
+ def add!
30
+ client.add_team_membership team.id, github_user.login
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "bootstrap",
3
+ "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
4
+ "keywords": [
5
+ "css",
6
+ "js",
7
+ "less",
8
+ "mobile-first",
9
+ "responsive",
10
+ "front-end",
11
+ "framework",
12
+ "web"
13
+ ],
14
+ "homepage": "http://getbootstrap.com",
15
+ "license": "MIT",
16
+ "moduleType": "globals",
17
+ "main": [
18
+ "less/bootstrap.less",
19
+ "dist/js/bootstrap.js"
20
+ ],
21
+ "ignore": [
22
+ "/.*",
23
+ "_config.yml",
24
+ "CNAME",
25
+ "composer.json",
26
+ "CONTRIBUTING.md",
27
+ "docs",
28
+ "js/tests",
29
+ "test-infra"
30
+ ],
31
+ "dependencies": {
32
+ "jquery": "1.9.1 - 2"
33
+ },
34
+ "version": "3.3.6",
35
+ "_release": "3.3.6",
36
+ "_resolution": {
37
+ "type": "version",
38
+ "tag": "v3.3.6",
39
+ "commit": "81df608a40bf0629a1dc08e584849bb1e43e0b7a"
40
+ },
41
+ "_source": "git://github.com/twbs/bootstrap.git",
42
+ "_target": "~3.3.6",
43
+ "_originalSource": "bootstrap"
44
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2011-2015 Twitter, Inc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "bootstrap",
3
+ "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
4
+ "keywords": [
5
+ "css",
6
+ "js",
7
+ "less",
8
+ "mobile-first",
9
+ "responsive",
10
+ "front-end",
11
+ "framework",
12
+ "web"
13
+ ],
14
+ "homepage": "http://getbootstrap.com",
15
+ "license": "MIT",
16
+ "moduleType": "globals",
17
+ "main": [
18
+ "less/bootstrap.less",
19
+ "dist/js/bootstrap.js"
20
+ ],
21
+ "ignore": [
22
+ "/.*",
23
+ "_config.yml",
24
+ "CNAME",
25
+ "composer.json",
26
+ "CONTRIBUTING.md",
27
+ "docs",
28
+ "js/tests",
29
+ "test-infra"
30
+ ],
31
+ "dependencies": {
32
+ "jquery": "1.9.1 - 2"
33
+ }
34
+ }
@@ -0,0 +1,587 @@
1
+ /*!
2
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
3
+ * Copyright 2011-2015 Twitter, Inc.
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+ .btn-default,
7
+ .btn-primary,
8
+ .btn-success,
9
+ .btn-info,
10
+ .btn-warning,
11
+ .btn-danger {
12
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
13
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
14
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15
+ }
16
+ .btn-default:active,
17
+ .btn-primary:active,
18
+ .btn-success:active,
19
+ .btn-info:active,
20
+ .btn-warning:active,
21
+ .btn-danger:active,
22
+ .btn-default.active,
23
+ .btn-primary.active,
24
+ .btn-success.active,
25
+ .btn-info.active,
26
+ .btn-warning.active,
27
+ .btn-danger.active {
28
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
29
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30
+ }
31
+ .btn-default.disabled,
32
+ .btn-primary.disabled,
33
+ .btn-success.disabled,
34
+ .btn-info.disabled,
35
+ .btn-warning.disabled,
36
+ .btn-danger.disabled,
37
+ .btn-default[disabled],
38
+ .btn-primary[disabled],
39
+ .btn-success[disabled],
40
+ .btn-info[disabled],
41
+ .btn-warning[disabled],
42
+ .btn-danger[disabled],
43
+ fieldset[disabled] .btn-default,
44
+ fieldset[disabled] .btn-primary,
45
+ fieldset[disabled] .btn-success,
46
+ fieldset[disabled] .btn-info,
47
+ fieldset[disabled] .btn-warning,
48
+ fieldset[disabled] .btn-danger {
49
+ -webkit-box-shadow: none;
50
+ box-shadow: none;
51
+ }
52
+ .btn-default .badge,
53
+ .btn-primary .badge,
54
+ .btn-success .badge,
55
+ .btn-info .badge,
56
+ .btn-warning .badge,
57
+ .btn-danger .badge {
58
+ text-shadow: none;
59
+ }
60
+ .btn:active,
61
+ .btn.active {
62
+ background-image: none;
63
+ }
64
+ .btn-default {
65
+ text-shadow: 0 1px 0 #fff;
66
+ background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67
+ background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
68
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
69
+ background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
70
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
71
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
72
+ background-repeat: repeat-x;
73
+ border-color: #dbdbdb;
74
+ border-color: #ccc;
75
+ }
76
+ .btn-default:hover,
77
+ .btn-default:focus {
78
+ background-color: #e0e0e0;
79
+ background-position: 0 -15px;
80
+ }
81
+ .btn-default:active,
82
+ .btn-default.active {
83
+ background-color: #e0e0e0;
84
+ border-color: #dbdbdb;
85
+ }
86
+ .btn-default.disabled,
87
+ .btn-default[disabled],
88
+ fieldset[disabled] .btn-default,
89
+ .btn-default.disabled:hover,
90
+ .btn-default[disabled]:hover,
91
+ fieldset[disabled] .btn-default:hover,
92
+ .btn-default.disabled:focus,
93
+ .btn-default[disabled]:focus,
94
+ fieldset[disabled] .btn-default:focus,
95
+ .btn-default.disabled.focus,
96
+ .btn-default[disabled].focus,
97
+ fieldset[disabled] .btn-default.focus,
98
+ .btn-default.disabled:active,
99
+ .btn-default[disabled]:active,
100
+ fieldset[disabled] .btn-default:active,
101
+ .btn-default.disabled.active,
102
+ .btn-default[disabled].active,
103
+ fieldset[disabled] .btn-default.active {
104
+ background-color: #e0e0e0;
105
+ background-image: none;
106
+ }
107
+ .btn-primary {
108
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109
+ background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111
+ background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114
+ background-repeat: repeat-x;
115
+ border-color: #245580;
116
+ }
117
+ .btn-primary:hover,
118
+ .btn-primary:focus {
119
+ background-color: #265a88;
120
+ background-position: 0 -15px;
121
+ }
122
+ .btn-primary:active,
123
+ .btn-primary.active {
124
+ background-color: #265a88;
125
+ border-color: #245580;
126
+ }
127
+ .btn-primary.disabled,
128
+ .btn-primary[disabled],
129
+ fieldset[disabled] .btn-primary,
130
+ .btn-primary.disabled:hover,
131
+ .btn-primary[disabled]:hover,
132
+ fieldset[disabled] .btn-primary:hover,
133
+ .btn-primary.disabled:focus,
134
+ .btn-primary[disabled]:focus,
135
+ fieldset[disabled] .btn-primary:focus,
136
+ .btn-primary.disabled.focus,
137
+ .btn-primary[disabled].focus,
138
+ fieldset[disabled] .btn-primary.focus,
139
+ .btn-primary.disabled:active,
140
+ .btn-primary[disabled]:active,
141
+ fieldset[disabled] .btn-primary:active,
142
+ .btn-primary.disabled.active,
143
+ .btn-primary[disabled].active,
144
+ fieldset[disabled] .btn-primary.active {
145
+ background-color: #265a88;
146
+ background-image: none;
147
+ }
148
+ .btn-success {
149
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155
+ background-repeat: repeat-x;
156
+ border-color: #3e8f3e;
157
+ }
158
+ .btn-success:hover,
159
+ .btn-success:focus {
160
+ background-color: #419641;
161
+ background-position: 0 -15px;
162
+ }
163
+ .btn-success:active,
164
+ .btn-success.active {
165
+ background-color: #419641;
166
+ border-color: #3e8f3e;
167
+ }
168
+ .btn-success.disabled,
169
+ .btn-success[disabled],
170
+ fieldset[disabled] .btn-success,
171
+ .btn-success.disabled:hover,
172
+ .btn-success[disabled]:hover,
173
+ fieldset[disabled] .btn-success:hover,
174
+ .btn-success.disabled:focus,
175
+ .btn-success[disabled]:focus,
176
+ fieldset[disabled] .btn-success:focus,
177
+ .btn-success.disabled.focus,
178
+ .btn-success[disabled].focus,
179
+ fieldset[disabled] .btn-success.focus,
180
+ .btn-success.disabled:active,
181
+ .btn-success[disabled]:active,
182
+ fieldset[disabled] .btn-success:active,
183
+ .btn-success.disabled.active,
184
+ .btn-success[disabled].active,
185
+ fieldset[disabled] .btn-success.active {
186
+ background-color: #419641;
187
+ background-image: none;
188
+ }
189
+ .btn-info {
190
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196
+ background-repeat: repeat-x;
197
+ border-color: #28a4c9;
198
+ }
199
+ .btn-info:hover,
200
+ .btn-info:focus {
201
+ background-color: #2aabd2;
202
+ background-position: 0 -15px;
203
+ }
204
+ .btn-info:active,
205
+ .btn-info.active {
206
+ background-color: #2aabd2;
207
+ border-color: #28a4c9;
208
+ }
209
+ .btn-info.disabled,
210
+ .btn-info[disabled],
211
+ fieldset[disabled] .btn-info,
212
+ .btn-info.disabled:hover,
213
+ .btn-info[disabled]:hover,
214
+ fieldset[disabled] .btn-info:hover,
215
+ .btn-info.disabled:focus,
216
+ .btn-info[disabled]:focus,
217
+ fieldset[disabled] .btn-info:focus,
218
+ .btn-info.disabled.focus,
219
+ .btn-info[disabled].focus,
220
+ fieldset[disabled] .btn-info.focus,
221
+ .btn-info.disabled:active,
222
+ .btn-info[disabled]:active,
223
+ fieldset[disabled] .btn-info:active,
224
+ .btn-info.disabled.active,
225
+ .btn-info[disabled].active,
226
+ fieldset[disabled] .btn-info.active {
227
+ background-color: #2aabd2;
228
+ background-image: none;
229
+ }
230
+ .btn-warning {
231
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237
+ background-repeat: repeat-x;
238
+ border-color: #e38d13;
239
+ }
240
+ .btn-warning:hover,
241
+ .btn-warning:focus {
242
+ background-color: #eb9316;
243
+ background-position: 0 -15px;
244
+ }
245
+ .btn-warning:active,
246
+ .btn-warning.active {
247
+ background-color: #eb9316;
248
+ border-color: #e38d13;
249
+ }
250
+ .btn-warning.disabled,
251
+ .btn-warning[disabled],
252
+ fieldset[disabled] .btn-warning,
253
+ .btn-warning.disabled:hover,
254
+ .btn-warning[disabled]:hover,
255
+ fieldset[disabled] .btn-warning:hover,
256
+ .btn-warning.disabled:focus,
257
+ .btn-warning[disabled]:focus,
258
+ fieldset[disabled] .btn-warning:focus,
259
+ .btn-warning.disabled.focus,
260
+ .btn-warning[disabled].focus,
261
+ fieldset[disabled] .btn-warning.focus,
262
+ .btn-warning.disabled:active,
263
+ .btn-warning[disabled]:active,
264
+ fieldset[disabled] .btn-warning:active,
265
+ .btn-warning.disabled.active,
266
+ .btn-warning[disabled].active,
267
+ fieldset[disabled] .btn-warning.active {
268
+ background-color: #eb9316;
269
+ background-image: none;
270
+ }
271
+ .btn-danger {
272
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278
+ background-repeat: repeat-x;
279
+ border-color: #b92c28;
280
+ }
281
+ .btn-danger:hover,
282
+ .btn-danger:focus {
283
+ background-color: #c12e2a;
284
+ background-position: 0 -15px;
285
+ }
286
+ .btn-danger:active,
287
+ .btn-danger.active {
288
+ background-color: #c12e2a;
289
+ border-color: #b92c28;
290
+ }
291
+ .btn-danger.disabled,
292
+ .btn-danger[disabled],
293
+ fieldset[disabled] .btn-danger,
294
+ .btn-danger.disabled:hover,
295
+ .btn-danger[disabled]:hover,
296
+ fieldset[disabled] .btn-danger:hover,
297
+ .btn-danger.disabled:focus,
298
+ .btn-danger[disabled]:focus,
299
+ fieldset[disabled] .btn-danger:focus,
300
+ .btn-danger.disabled.focus,
301
+ .btn-danger[disabled].focus,
302
+ fieldset[disabled] .btn-danger.focus,
303
+ .btn-danger.disabled:active,
304
+ .btn-danger[disabled]:active,
305
+ fieldset[disabled] .btn-danger:active,
306
+ .btn-danger.disabled.active,
307
+ .btn-danger[disabled].active,
308
+ fieldset[disabled] .btn-danger.active {
309
+ background-color: #c12e2a;
310
+ background-image: none;
311
+ }
312
+ .thumbnail,
313
+ .img-thumbnail {
314
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
315
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
316
+ }
317
+ .dropdown-menu > li > a:hover,
318
+ .dropdown-menu > li > a:focus {
319
+ background-color: #e8e8e8;
320
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
322
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
323
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
324
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
325
+ background-repeat: repeat-x;
326
+ }
327
+ .dropdown-menu > .active > a,
328
+ .dropdown-menu > .active > a:hover,
329
+ .dropdown-menu > .active > a:focus {
330
+ background-color: #2e6da4;
331
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
333
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
334
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
335
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
336
+ background-repeat: repeat-x;
337
+ }
338
+ .navbar-default {
339
+ background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
340
+ background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
341
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
342
+ background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
343
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
345
+ background-repeat: repeat-x;
346
+ border-radius: 4px;
347
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
348
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
349
+ }
350
+ .navbar-default .navbar-nav > .open > a,
351
+ .navbar-default .navbar-nav > .active > a {
352
+ background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353
+ background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355
+ background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357
+ background-repeat: repeat-x;
358
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
359
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
360
+ }
361
+ .navbar-brand,
362
+ .navbar-nav > li > a {
363
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
364
+ }
365
+ .navbar-inverse {
366
+ background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367
+ background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369
+ background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
372
+ background-repeat: repeat-x;
373
+ border-radius: 4px;
374
+ }
375
+ .navbar-inverse .navbar-nav > .open > a,
376
+ .navbar-inverse .navbar-nav > .active > a {
377
+ background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378
+ background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380
+ background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382
+ background-repeat: repeat-x;
383
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
384
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
385
+ }
386
+ .navbar-inverse .navbar-brand,
387
+ .navbar-inverse .navbar-nav > li > a {
388
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
389
+ }
390
+ .navbar-static-top,
391
+ .navbar-fixed-top,
392
+ .navbar-fixed-bottom {
393
+ border-radius: 0;
394
+ }
395
+ @media (max-width: 767px) {
396
+ .navbar .navbar-nav .open .dropdown-menu > .active > a,
397
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399
+ color: #fff;
400
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405
+ background-repeat: repeat-x;
406
+ }
407
+ }
408
+ .alert {
409
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
410
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
411
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
412
+ }
413
+ .alert-success {
414
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419
+ background-repeat: repeat-x;
420
+ border-color: #b2dba1;
421
+ }
422
+ .alert-info {
423
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428
+ background-repeat: repeat-x;
429
+ border-color: #9acfea;
430
+ }
431
+ .alert-warning {
432
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437
+ background-repeat: repeat-x;
438
+ border-color: #f5e79e;
439
+ }
440
+ .alert-danger {
441
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442
+ background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444
+ background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446
+ background-repeat: repeat-x;
447
+ border-color: #dca7a7;
448
+ }
449
+ .progress {
450
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451
+ background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455
+ background-repeat: repeat-x;
456
+ }
457
+ .progress-bar {
458
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459
+ background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461
+ background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463
+ background-repeat: repeat-x;
464
+ }
465
+ .progress-bar-success {
466
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471
+ background-repeat: repeat-x;
472
+ }
473
+ .progress-bar-info {
474
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479
+ background-repeat: repeat-x;
480
+ }
481
+ .progress-bar-warning {
482
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487
+ background-repeat: repeat-x;
488
+ }
489
+ .progress-bar-danger {
490
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495
+ background-repeat: repeat-x;
496
+ }
497
+ .progress-bar-striped {
498
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
499
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
500
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
501
+ }
502
+ .list-group {
503
+ border-radius: 4px;
504
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
505
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
506
+ }
507
+ .list-group-item.active,
508
+ .list-group-item.active:hover,
509
+ .list-group-item.active:focus {
510
+ text-shadow: 0 -1px 0 #286090;
511
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516
+ background-repeat: repeat-x;
517
+ border-color: #2b669a;
518
+ }
519
+ .list-group-item.active .badge,
520
+ .list-group-item.active:hover .badge,
521
+ .list-group-item.active:focus .badge {
522
+ text-shadow: none;
523
+ }
524
+ .panel {
525
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
526
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
527
+ }
528
+ .panel-default > .panel-heading {
529
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534
+ background-repeat: repeat-x;
535
+ }
536
+ .panel-primary > .panel-heading {
537
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542
+ background-repeat: repeat-x;
543
+ }
544
+ .panel-success > .panel-heading {
545
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550
+ background-repeat: repeat-x;
551
+ }
552
+ .panel-info > .panel-heading {
553
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558
+ background-repeat: repeat-x;
559
+ }
560
+ .panel-warning > .panel-heading {
561
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566
+ background-repeat: repeat-x;
567
+ }
568
+ .panel-danger > .panel-heading {
569
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570
+ background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572
+ background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574
+ background-repeat: repeat-x;
575
+ }
576
+ .well {
577
+ background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578
+ background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580
+ background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582
+ background-repeat: repeat-x;
583
+ border-color: #dcdcdc;
584
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
585
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
586
+ }
587
+ /*# sourceMappingURL=bootstrap-theme.css.map */