squad_goals 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 */