pifi 0.2.0 → 0.3.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -47
  3. data/config.ru +1 -0
  4. data/lib/pifi.rb +1 -0
  5. data/lib/pifi/controllers/application_controller.rb +5 -3
  6. data/lib/pifi/controllers/index_controller.rb +1 -16
  7. data/lib/pifi/controllers/player_controller.rb +1 -1
  8. data/lib/pifi/controllers/streams_controller.rb +20 -0
  9. data/lib/pifi/lib/{streams_getter.rb → streams.rb} +8 -9
  10. data/lib/pifi/public/android-chrome-192x192.png +0 -0
  11. data/lib/pifi/public/android-chrome-512x512.png +0 -0
  12. data/lib/pifi/public/apple-touch-icon.png +0 -0
  13. data/lib/pifi/public/asset-manifest.json +26 -0
  14. data/lib/pifi/public/browserconfig.xml +1 -1
  15. data/lib/pifi/public/favicon-16x16.png +0 -0
  16. data/lib/pifi/public/favicon-32x32.png +0 -0
  17. data/lib/pifi/public/index.html +1 -0
  18. data/lib/pifi/public/locales/en/translation.json +19 -0
  19. data/lib/pifi/public/locales/fr-FR/translation.json +7 -0
  20. data/lib/pifi/public/locales/nl-NL/translation.json +7 -0
  21. data/lib/pifi/public/locales/pt-BR/translation.json +19 -0
  22. data/lib/pifi/public/manifest.json +19 -0
  23. data/lib/pifi/public/mstile-144x144.png +0 -0
  24. data/lib/pifi/public/mstile-150x150.png +0 -0
  25. data/lib/pifi/public/mstile-310x150.png +0 -0
  26. data/lib/pifi/public/mstile-310x310.png +0 -0
  27. data/lib/pifi/public/mstile-70x70.png +0 -0
  28. data/lib/pifi/public/precache-manifest.c6c8e4145c1ed2fcfcefd9d025331f85.js +34 -0
  29. data/lib/pifi/public/robots.txt +2 -0
  30. data/lib/pifi/public/service-worker.js +39 -0
  31. data/lib/pifi/public/static/css/2.5dbdccff.chunk.css +2 -0
  32. data/lib/pifi/public/static/css/2.5dbdccff.chunk.css.map +1 -0
  33. data/lib/pifi/public/static/css/main.a50e54d2.chunk.css +2 -0
  34. data/lib/pifi/public/static/css/main.a50e54d2.chunk.css.map +1 -0
  35. data/lib/pifi/public/static/js/2.2b057ab5.chunk.js +3 -0
  36. data/lib/pifi/public/static/js/2.2b057ab5.chunk.js.LICENSE +103 -0
  37. data/lib/pifi/public/static/js/2.2b057ab5.chunk.js.map +1 -0
  38. data/lib/pifi/public/static/js/main.54482466.chunk.js +2 -0
  39. data/lib/pifi/public/static/js/main.54482466.chunk.js.map +1 -0
  40. data/lib/pifi/public/static/js/runtime-main.f04a0f25.js +2 -0
  41. data/lib/pifi/public/static/js/runtime-main.f04a0f25.js.map +1 -0
  42. data/lib/pifi/public/static/media/logo.91554ce9.svg +1 -0
  43. data/lib/pifi/version.rb +3 -0
  44. metadata +28 -29
  45. data/lib/pifi/lib/lang_chooser.rb +0 -27
  46. data/lib/pifi/public/android-chrome-384x384.png +0 -0
  47. data/lib/pifi/public/css/app.css +0 -143
  48. data/lib/pifi/public/js/app.js +0 -298
  49. data/lib/pifi/public/js/lang/en-us.js +0 -19
  50. data/lib/pifi/public/js/lang/fr-fr.js +0 -19
  51. data/lib/pifi/public/js/lang/nl-nl.js +0 -19
  52. data/lib/pifi/public/js/lang/pt-br.js +0 -19
  53. data/lib/pifi/public/site.webmanifest +0 -19
  54. data/lib/pifi/public/vendor/css/bootstrap-theme.css +0 -587
  55. data/lib/pifi/public/vendor/css/bootstrap-theme.css.map +0 -1
  56. data/lib/pifi/public/vendor/css/bootstrap-theme.min.css +0 -6
  57. data/lib/pifi/public/vendor/css/bootstrap-theme.min.css.map +0 -1
  58. data/lib/pifi/public/vendor/css/bootstrap.css +0 -6757
  59. data/lib/pifi/public/vendor/css/bootstrap.css.map +0 -1
  60. data/lib/pifi/public/vendor/css/bootstrap.min.css +0 -6
  61. data/lib/pifi/public/vendor/css/bootstrap.min.css.map +0 -1
  62. data/lib/pifi/public/vendor/fonts/glyphicons-halflings-regular.eot +0 -0
  63. data/lib/pifi/public/vendor/fonts/glyphicons-halflings-regular.svg +0 -288
  64. data/lib/pifi/public/vendor/fonts/glyphicons-halflings-regular.ttf +0 -0
  65. data/lib/pifi/public/vendor/fonts/glyphicons-halflings-regular.woff +0 -0
  66. data/lib/pifi/public/vendor/fonts/glyphicons-halflings-regular.woff2 +0 -0
  67. data/lib/pifi/public/vendor/js/bootstrap.js +0 -2377
  68. data/lib/pifi/public/vendor/js/bootstrap.min.js +0 -7
  69. data/lib/pifi/public/vendor/js/jquery.min.js +0 -4
  70. data/lib/pifi/public/vendor/js/npm.js +0 -13
@@ -1,298 +0,0 @@
1
- "use strict";
2
-
3
- var state = null;
4
-
5
- var view = {
6
- init: function() {
7
- this.volTimeout = null;
8
-
9
- // Set initial "loading" screen
10
- this.hide(lang.loading);
11
-
12
- this.setStaticStr();
13
- this.addListeners();
14
- },
15
-
16
- render: function() {
17
- this.renderPlaying();
18
- this.renderTitle();
19
- this.renderProgress();
20
- this.renderProgressBar();
21
- this.renderVolButtons();
22
- this.setView();
23
- },
24
-
25
- renderPlaying: function() {
26
- if (state.playing) {
27
- $("#playing").text(lang.playing);
28
- $("#span-ps")
29
- .addClass("glyphicon-stop")
30
- .removeClass("glyphicon-play");
31
- $("#btn-ps")
32
- .addClass("btn-danger")
33
- .removeClass("btn-default");
34
- } else {
35
- $("#playing").text(lang.notPlaying);
36
- $("#span-ps")
37
- .addClass("glyphicon-play")
38
- .removeClass("glyphicon-stop");
39
- $("#btn-ps")
40
- .addClass("btn-default")
41
- .removeClass("btn-danger");
42
- }
43
- },
44
-
45
- renderTitle: function() {
46
- $("#title").text(state.title);
47
- $("#artist").text(state.artist);
48
- if (state.local) {
49
- $("#title").addClass("text-uppercase");
50
- } else {
51
- $("#title").removeClass("text-uppercase");
52
- }
53
- },
54
-
55
- renderProgress: function() {
56
- if (state.local && state.playing) {
57
- $("#elapsed").text(this.toMinSec(state.elapsed));
58
- $("#length").text(this.toMinSec(state.length));
59
- $("#progress").show();
60
- } else {
61
- $("#progress").hide();
62
- }
63
- },
64
-
65
- renderProgressBar: function() {
66
- if (state.local && state.playing) {
67
- var progress = state.elapsed / state.length;
68
- $("#progress-bar").css("width", progress * 100 + "%");
69
- } else {
70
- $("#progress-bar").css("width", "0%");
71
- }
72
- },
73
-
74
- renderVolButtons: function() {
75
- // Only show buttons if volume is available
76
- if (state.vol < 0) {
77
- $("#btn-vdown, #btn-vup").attr("disabled", true);
78
- } else {
79
- $("#btn-vdown, #btn-vup").attr("disabled", false);
80
- }
81
- },
82
-
83
- setView() {
84
- if (state.con_mpd && this.hidden) {
85
- this.unhide(state.playing);
86
- } else if (!state.con_mpd) {
87
- this.hide(lang.disconnectedMpd);
88
- }
89
- },
90
-
91
- setStaticStr: function() {
92
- $("#lbl-random").text(lang.sBtnRandom);
93
- $("#lbl-radios").text(lang.sBtnRadios);
94
- $("#lbl-player").text(lang.sBtnPlayer);
95
- $("#radios-welcome").text(lang.sRadiosWelcome);
96
- $("#insert").text(lang.sInsert);
97
- },
98
-
99
- showPlayer: function() {
100
- $(".view").hide();
101
- $("#player").show();
102
- },
103
-
104
- showRadios: function() {
105
- $(".view").hide();
106
- $("#radios").show();
107
- },
108
-
109
- showAlert: function(text, textMore) {
110
- if (textMore === undefined) {
111
- textMore = "";
112
- }
113
-
114
- $("#alert-text-main").text(text);
115
- $("#alert-text-more").text(textMore);
116
-
117
- $(".view").hide();
118
- $("#alert").show();
119
- },
120
-
121
- hide: function(text) {
122
- this.showAlert(text);
123
- this.hidden = true;
124
- },
125
-
126
- unhide: function(playing) {
127
- if (playing) {
128
- view.showPlayer();
129
- } else {
130
- view.showRadios();
131
- }
132
- this.hidden = false;
133
- },
134
-
135
- osdVol: function(vol) {
136
- $("#osd-text").text(vol);
137
- $("#player-bottom").hide();
138
- $("#osd").show();
139
-
140
- clearTimeout(this.volTimeout);
141
- this.volTimeout = setTimeout(function() {
142
- $("#osd").hide();
143
- $("#player-bottom").show();
144
- }, timeConst.volOsd);
145
- },
146
-
147
- addListeners: function() {
148
- // Prevent href="#" to be executed
149
- $('a[href="#"]').click(function(event) {
150
- return false;
151
- });
152
-
153
- $("#btn-vup").click(function(event) {
154
- controller.clickVol("+5");
155
- });
156
-
157
- $("#btn-vdown").click(function(event) {
158
- controller.clickVol("-5");
159
- });
160
-
161
- $("#btn-ps").click(function(event) {
162
- controller.clickPs();
163
- });
164
-
165
- $("#btn-random").click(function(event) {
166
- controller.clickRandom();
167
- });
168
-
169
- $("#btn-radios").click(function(event) {
170
- view.showRadios();
171
- });
172
-
173
- $("#btn-player").click(function(event) {
174
- view.showPlayer();
175
- });
176
-
177
- $(".radio-name").click(function(event) {
178
- var name = $(this).text();
179
- controller.clickRadio(name);
180
- });
181
-
182
- $("#insert").click(function(event) {
183
- var url = prompt(lang.urlInsert);
184
- controller.clickInsert(url);
185
- });
186
- },
187
-
188
- toMinSec: function(sec) {
189
- return new Date(sec * 1000).toISOString().substr(14, 5);
190
- }
191
- };
192
-
193
- var controller = {
194
- PLAYER_API: "/api/player",
195
-
196
- init: function() {
197
- view.init();
198
- this.updateState(true);
199
- },
200
-
201
- updateState: function(repeat) {
202
- var self = controller;
203
- var fetchState = $.get(self.PLAYER_API)
204
- .done(function(response) {
205
- state = response;
206
- view.render();
207
- })
208
- .fail(function() {
209
- view.hide(lang.disconnectedNet);
210
- });
211
-
212
- if (repeat) {
213
- fetchState.always(function() {
214
- setTimeout(controller.updateState, timeConst.update, true);
215
- });
216
- }
217
- },
218
-
219
- clickRandom: function() {
220
- var text;
221
- var waitTime;
222
-
223
- // Define which alert to show based on player state
224
- if (state.playing && state.local) {
225
- text = lang.randomNext;
226
- waitTime = timeConst.randomNext;
227
- } else {
228
- text = lang.randomFirst;
229
- waitTime = timeConst.randomFirst;
230
- }
231
- view.showAlert(text);
232
-
233
- $.post(this.PLAYER_API, { method: "play_random" }).always(function() {
234
- setTimeout(view.showPlayer, waitTime);
235
- });
236
- },
237
-
238
- clickVol: function(delta) {
239
- $.post(this.PLAYER_API, { method: "change_vol", params: delta }).done(
240
- function(response) {
241
- view.osdVol(response + "%");
242
- }
243
- );
244
- },
245
-
246
- clickPs: function() {
247
- var method = state.playing ? "stop" : "play";
248
- $.post(this.PLAYER_API, { method: method }).done(function() {
249
- controller.updateState(false);
250
- });
251
- },
252
-
253
- clickRadio: function(name) {
254
- if (name === state.title && !state.local && state.playing) {
255
- view.showPlayer();
256
- } else {
257
- this.playStream(true, name);
258
- }
259
- },
260
-
261
- clickInsert: function(url) {
262
- if (url !== null && url !== "") {
263
- this.playStream(false, url.trim());
264
- }
265
- },
266
-
267
- playStream: function(isName, value) {
268
- view.showAlert(lang.streamTrying, value);
269
-
270
- if (isName) {
271
- var data = { method: "play_radios", params: value };
272
- } else {
273
- var data = { method: "play_urls", params: value };
274
- }
275
-
276
- $.post(this.PLAYER_API, data)
277
- .done(function() {
278
- setTimeout(view.showPlayer, timeConst.playStream);
279
- })
280
- .fail(function(response) {
281
- view.showAlert(lang.streamError, response.responseText);
282
- setTimeout(view.showRadios, timeConst.error);
283
- });
284
- }
285
- };
286
-
287
- var timeConst = {
288
- playStream: 2000,
289
- error: 3000,
290
- randomNext: 1500,
291
- randomFirst: 5000,
292
- volOsd: 1300,
293
- update: 1000
294
- };
295
-
296
- $(document).ready(function() {
297
- controller.init();
298
- });
@@ -1,19 +0,0 @@
1
- var lang = {
2
- playing: "Playing",
3
- notPlaying: "Stopped",
4
- streamError: "Failed to play this stream",
5
- streamTrying: "Tunning...",
6
- urlInsert: "Type the URL",
7
- randomNext: "Next song",
8
- randomFirst: "Starting library playback...",
9
- disconnectedMpd: "Disconnected from MPD",
10
- disconnectedNet: "No connection",
11
- loading: "Loading...",
12
-
13
- // Static
14
- sBtnRandom: "Random",
15
- sBtnRadios: "Radios",
16
- sBtnPlayer: "Player",
17
- sRadiosWelcome: "Choose a radio station",
18
- sInsert: "Type a URL..."
19
- };
@@ -1,19 +0,0 @@
1
- var lang = {
2
- playing: "Lecture",
3
- notPlaying: "Arrêté",
4
- streamError: "Échec à l'ajout du flux",
5
- streamTrying: "Mise en tampon…",
6
- urlInsert: "Entrez l'URL",
7
- randomNext: "Titre suivant",
8
- randomFirst: "Ajout des titres…",
9
- disconnectedMpd: "Déconnecté de MPD",
10
- disconnectedNet: "Pas de connexion",
11
- loading: "Chargement",
12
-
13
- // Static
14
- sBtnRandom: "Aléatoire",
15
- sBtnRadios: "Radios",
16
- sBtnPlayer: "Lecteur",
17
- sRadiosWelcome: "Choisir une station de radio",
18
- sInsert: "Entrez l'URL…"
19
- };
@@ -1,19 +0,0 @@
1
- var lang = {
2
- playing: "Aan het afspelen",
3
- notPlaying: "Gestopt",
4
- streamError: "Kan deze stream niet afspelen",
5
- streamTrying: "Bezig met verbinden...",
6
- urlInsert: "Voer een url in",
7
- randomNext: "Volgend nummer",
8
- randomFirst: "Bezig met voorbereiden van verzameling...",
9
- disconnectedMpd: "Niet verbonden met MPD",
10
- disconnectedNet: "Geen verbinding",
11
- loading: "Bezig met laden...",
12
-
13
- // Static
14
- sBtnRandom: "Willekeurig",
15
- sBtnRadios: "Radio's",
16
- sBtnPlayer: "Speler",
17
- sRadiosWelcome: "Kies een radiostation",
18
- sInsert: "Voer een url in..."
19
- };
@@ -1,19 +0,0 @@
1
- var lang = {
2
- playing: "Tocando",
3
- notPlaying: "Parado",
4
- streamError: "Não foi possível tocar essa rádio",
5
- streamTrying: "Sintonizando...",
6
- urlInsert: "Insira a URL",
7
- randomNext: "Próxima música",
8
- randomFirst: "Iniciando reprodução da biblioteca...",
9
- disconnectedMpd: "Desconectado do MPD",
10
- disconnectedNet: "Sem conexão",
11
- loading: "Carregando...",
12
-
13
- // Static
14
- sBtnRandom: "Aleatório",
15
- sBtnRadios: "Rádios",
16
- sBtnPlayer: "Controles",
17
- sRadiosWelcome: "Escolha uma emissora",
18
- sInsert: "Tocar URL..."
19
- };
@@ -1,19 +0,0 @@
1
- {
2
- "name": "PiFi Radio",
3
- "short_name": "PiFi Radio",
4
- "icons": [
5
- {
6
- "src": "/android-chrome-192x192.png",
7
- "sizes": "192x192",
8
- "type": "image/png"
9
- },
10
- {
11
- "src": "/android-chrome-384x384.png",
12
- "sizes": "384x384",
13
- "type": "image/png"
14
- }
15
- ],
16
- "theme_color": "#ffffff",
17
- "background_color": "#ffffff",
18
- "display": "standalone"
19
- }
@@ -1,587 +0,0 @@
1
- /*!
2
- * Bootstrap v3.3.7 (http://getbootstrap.com)
3
- * Copyright 2011-2016 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 */