##// END OF EJS Templates
Merge pull request #7454 from minrk/project_name...
Thomas Kluyver -
r20216:618e347d merge
parent child Browse files
Show More
@@ -1,146 +1,153 b''
1 /**
1 /**
2 * Primary styles
2 * Primary styles
3 *
3 *
4 * Author: IPython Development Team
4 * Author: IPython Development Team
5 */
5 */
6
6
7
7
8 body {
8 body {
9 background-color: @body-bg;
9 background-color: @body-bg;
10 /* This makes sure that the body covers the entire window and needs to
10 /* This makes sure that the body covers the entire window and needs to
11 be in a different element than the display: box in wrapper below */
11 be in a different element than the display: box in wrapper below */
12 position: absolute;
12 position: absolute;
13 left: 0px;
13 left: 0px;
14 right: 0px;
14 right: 0px;
15 top: 0px;
15 top: 0px;
16 bottom: 0px;
16 bottom: 0px;
17 overflow: visible;
17 overflow: visible;
18 }
18 }
19
19
20 #header {
20 #header {
21 /* Initially hidden to prevent FLOUC */
21 /* Initially hidden to prevent FLOUC */
22 display: none;
22 display: none;
23 background-color: @body-bg;
23 background-color: @body-bg;
24
24
25 /* Display over codemirror */
25 /* Display over codemirror */
26 position: relative;
26 position: relative;
27 z-index: 100;
27 z-index: 100;
28
28
29 #header-container {
29 #header-container {
30 padding-bottom: 5px;
30 padding-bottom: 5px;
31 padding-top: 5px;
31 padding-top: 5px;
32 .border-box-sizing();
32 .border-box-sizing();
33 }
33 }
34
34
35 .header-bar {
35 .header-bar {
36 width: 100%;
36 width: 100%;
37 height: 1px;
37 height: 1px;
38 background: @navbar-default-border;
38 background: @navbar-default-border;
39 margin-bottom: -1px;
39 margin-bottom: -1px;
40 }
40 }
41
41
42 @media print {
42 @media print {
43 display: none !important;
43 display: none !important;
44 }
44 }
45 }
45 }
46
46
47 #header-spacer {
47 #header-spacer {
48 width: 100%;
48 width: 100%;
49 visibility: hidden;
49 visibility: hidden;
50
50
51 @media print {
51 @media print {
52 display: none;
52 display: none;
53 }
53 }
54 }
54 }
55
55
56 #ipython_notebook {
56 #ipython_notebook {
57 padding-left: 0px;
57 padding-left: 0px;
58 padding-top: (@navbar-height - @logo_height) / 2;
58 padding-top: (@navbar-height - @logo_height) / 2;
59 padding-bottom: (@navbar-height - @logo_height) / 2;
59 padding-bottom: (@navbar-height - @logo_height) / 2;
60 @media (max-width: @screen-sm-max){
60 @media (max-width: @screen-sm-max){
61 margin-left: 10px;
61 margin-left: 10px;
62 }
62 }
63 }
63 }
64
64
65
65
66
66
67 #noscript {
67 #noscript {
68 width: auto;
68 width: auto;
69 padding-top: 16px;
69 padding-top: 16px;
70 padding-bottom: 16px;
70 padding-bottom: 16px;
71 text-align: center;
71 text-align: center;
72 font-size: 22px;
72 font-size: 22px;
73 color: red;
73 color: red;
74 font-weight: bold;
74 font-weight: bold;
75 }
75 }
76
76
77 #ipython_notebook img {
77 #ipython_notebook img {
78 height: @logo_height;
78 height: @logo_height;
79 }
79 }
80
80
81 #site {
81 #site {
82 // avoid repaints on size with translateZ(0)
82 // avoid repaints on size with translateZ(0)
83 -webkit-transform: translateZ(0);
83 -webkit-transform: translateZ(0);
84 -moz-transform: translateZ(0);
84 -moz-transform: translateZ(0);
85 -ms-transform: translateZ(0);
85 -ms-transform: translateZ(0);
86 -o-transform: translateZ(0);
86 -o-transform: translateZ(0);
87 transform: translateZ(0);
87 transform: translateZ(0);
88 width: 100%;
88 width: 100%;
89 display: none;
89 display: none;
90 .border-box-sizing();
90 .border-box-sizing();
91 overflow: auto;
91 overflow: auto;
92 @media print {
92 @media print {
93 // force auto-height on print (overrides manual resizing in live view)
93 // force auto-height on print (overrides manual resizing in live view)
94 height: auto !important;
94 height: auto !important;
95 }
95 }
96 }
96 }
97
97
98 /* Smaller buttons */
98 /* Smaller buttons */
99 .ui-button .ui-button-text {
99 .ui-button .ui-button-text {
100 padding: 0.2em 0.8em;
100 padding: 0.2em 0.8em;
101 font-size: 77%;
101 font-size: 77%;
102 }
102 }
103
103
104 input.ui-button {
104 input.ui-button {
105 padding: 0.3em 0.9em;
105 padding: 0.3em 0.9em;
106 }
106 }
107
107
108 span#login_widget {
108 span#login_widget {
109 float: right;
109 float: right;
110 }
110 }
111
111
112 span#login_widget > .button,
112 span#login_widget > .button,
113 #logout
113 #logout
114 {
114 {
115 .btn-default();
115 .btn-default();
116 }
116 }
117
117
118 .nav-header {
118 .nav-header {
119 text-transform: none;
119 text-transform: none;
120 }
120 }
121
121
122 #header > span {
122 #header > span {
123 margin-top: 10px;
123 margin-top: 10px;
124 }
124 }
125
125
126 // class for stretching dialogs to fill the screen
126 // class for stretching dialogs to fill the screen
127 .modal_stretch .modal-dialog {
127 .modal_stretch .modal-dialog {
128 .vbox();
128 .vbox();
129 min-height: 80%;
129 min-height: 80%;
130 .modal-body {
130 .modal-body {
131 max-height: none;
131 max-height: none;
132 flex: 1;
132 flex: 1;
133 }
133 }
134 }
134 }
135
135
136 @media (min-width: @screen-sm-min) {
136 @media (min-width: @screen-sm-min) {
137 .modal .modal-dialog {
137 .modal .modal-dialog {
138 width: 700px;
138 width: 700px;
139 }
139 }
140 }
140 }
141
141
142 // less mixin to be sure to add the right class to get icons with font awesome.
142 // less mixin to be sure to add the right class to get icons with font awesome.
143 .icon(@ico){
143 .icon(@ico){
144 .fa();
144 .fa();
145 content: @ico;
145 content: @ico;
146 }
146 }
147
148 @media (min-width: @screen-sm-min) {
149 select.form-control {
150 margin-left: @padding-base-horizontal;
151 margin-right: @padding-base-horizontal;
152 }
153 }
@@ -1,231 +1,324 b''
1 // Copyright (c) IPython Development Team.
1 // Copyright (c) IPython Development Team.
2 // Distributed under the terms of the Modified BSD License.
2 // Distributed under the terms of the Modified BSD License.
3
3
4 define([
4 define([
5 'jquery',
5 'jquery',
6 'base/js/namespace',
6 'base/js/namespace',
7 'base/js/dialog',
7 'base/js/dialog',
8 'base/js/utils',
8 'base/js/utils',
9 ], function($, IPython, dialog, utils) {
9 ], function($, IPython, dialog, utils) {
10 "use strict";
10 "use strict";
11
11
12 var KernelSelector = function(selector, notebook) {
12 var KernelSelector = function(selector, notebook) {
13 var that = this;
13 var that = this;
14 this.selector = selector;
14 this.selector = selector;
15 this.notebook = notebook;
15 this.notebook = notebook;
16 this.notebook.set_kernelselector(this);
16 this.notebook.set_kernelselector(this);
17 this.events = notebook.events;
17 this.events = notebook.events;
18 this.current_selection = null;
18 this.current_selection = null;
19 this.kernelspecs = {};
19 this.kernelspecs = {};
20 if (this.selector !== undefined) {
20 if (this.selector !== undefined) {
21 this.element = $(selector);
21 this.element = $(selector);
22 this.request_kernelspecs();
22 this.request_kernelspecs();
23 }
23 }
24 this.bind_events();
24 this.bind_events();
25 // Make the object globally available for user convenience & inspection
25 // Make the object globally available for user convenience & inspection
26 IPython.kernelselector = this;
26 IPython.kernelselector = this;
27 this._finish_load = null;
27 this._finish_load = null;
28 this.loaded = new Promise(function(resolve, reject) {
28 this._loaded = false;
29 this.loaded = new Promise(function(resolve) {
29 that._finish_load = resolve;
30 that._finish_load = resolve;
30 });
31 });
31
32
32 Object.seal(this);
33 Object.seal(this);
33 };
34 };
34
35
35 KernelSelector.prototype.request_kernelspecs = function() {
36 KernelSelector.prototype.request_kernelspecs = function() {
36 var url = utils.url_join_encode(this.notebook.base_url, 'api/kernelspecs');
37 var url = utils.url_join_encode(this.notebook.base_url, 'api/kernelspecs');
37 utils.promising_ajax(url).then($.proxy(this._got_kernelspecs, this));
38 utils.promising_ajax(url).then($.proxy(this._got_kernelspecs, this));
38 };
39 };
39
40
40 KernelSelector.prototype._got_kernelspecs = function(data) {
41 var _sorted_names = function(kernelspecs) {
41 var that = this;
42 // sort kernel names
42 this.kernelspecs = data.kernelspecs;
43 return Object.keys(kernelspecs).sort(function (a, b) {
43 var change_kernel_submenu = $("#menu-change-kernel-submenu");
44 var new_notebook_submenu = $("#menu-new-notebook-submenu");
45
46 var keys = Object.keys(data.kernelspecs).sort(function (a, b) {
47 // sort by display_name
44 // sort by display_name
48 var da = data.kernelspecs[a].spec.display_name;
45 var da = kernelspecs[a].spec.display_name;
49 var db = data.kernelspecs[b].spec.display_name;
46 var db = kernelspecs[b].spec.display_name;
50 if (da === db) {
47 if (da === db) {
51 return 0;
48 return 0;
52 } else if (da > db) {
49 } else if (da > db) {
53 return 1;
50 return 1;
54 } else {
51 } else {
55 return -1;
52 return -1;
56 }
53 }
57 });
54 });
55 };
56
57 KernelSelector.prototype._got_kernelspecs = function(data) {
58 var that = this;
59 this.kernelspecs = data.kernelspecs;
60 var change_kernel_submenu = $("#menu-change-kernel-submenu");
61 var new_notebook_submenu = $("#menu-new-notebook-submenu");
62 var keys = _sorted_names(data.kernelspecs);
58
63
59 keys.map(function (key) {
64 keys.map(function (key) {
60 // Create the Kernel > Change kernel submenu
65 // Create the Kernel > Change kernel submenu
61 var ks = data.kernelspecs[key];
66 var ks = data.kernelspecs[key];
62 change_kernel_submenu.append(
67 change_kernel_submenu.append(
63 $("<li>").attr("id", "kernel-submenu-"+ks.name).append(
68 $("<li>").attr("id", "kernel-submenu-"+ks.name).append(
64 $('<a>')
69 $('<a>')
65 .attr('href', '#')
70 .attr('href', '#')
66 .click( function () {
71 .click( function () {
67 that.set_kernel(ks.name);
72 that.set_kernel(ks.name);
68 })
73 })
69 .text(ks.spec.display_name)
74 .text(ks.spec.display_name)
70 )
75 )
71 );
76 );
72 // Create the File > New Notebook submenu
77 // Create the File > New Notebook submenu
73 new_notebook_submenu.append(
78 new_notebook_submenu.append(
74 $("<li>").attr("id", "new-notebook-submenu-"+ks.name).append(
79 $("<li>").attr("id", "new-notebook-submenu-"+ks.name).append(
75 $('<a>')
80 $('<a>')
76 .attr('href', '#')
81 .attr('href', '#')
77 .click( function () {
82 .click( function () {
78 that.new_notebook(ks.name);
83 that.new_notebook(ks.name);
79 })
84 })
80 .text(ks.spec.display_name)
85 .text(ks.spec.display_name)
81 )
86 )
82 );
87 );
83
88
84 });
89 });
85 // trigger loaded promise
90 // trigger loaded promise
91 this._loaded = true;
86 this._finish_load();
92 this._finish_load();
87 };
93 };
88
94
89 KernelSelector.prototype._spec_changed = function (event, ks) {
95 KernelSelector.prototype._spec_changed = function (event, ks) {
90 /** event handler for spec_changed */
96 /** event handler for spec_changed */
91
97
92 // update selection
98 // update selection
93 this.current_selection = ks.name;
99 this.current_selection = ks.name;
94
100
95 // put the current kernel at the top of File > New Notebook
101 // put the current kernel at the top of File > New Notebook
96 var cur_kernel_entry = $("#new-notebook-submenu-" + ks.name);
102 var cur_kernel_entry = $("#new-notebook-submenu-" + ks.name);
97 var parent = cur_kernel_entry.parent();
103 var parent = cur_kernel_entry.parent();
98 // do something only if there is more than one kernel
104 // do something only if there is more than one kernel
99 if (parent.children().length > 1) {
105 if (parent.children().length > 1) {
100 // first, sort back the submenu
106 // first, sort back the submenu
101 parent.append(
107 parent.append(
102 parent.children("li[class!='divider']").sort(
108 parent.children("li[class!='divider']").sort(
103 function (a,b) {
109 function (a,b) {
104 var da = $("a",a).text();
110 var da = $("a",a).text();
105 var db = $("a",b).text();
111 var db = $("a",b).text();
106 if (da === db) {
112 if (da === db) {
107 return 0;
113 return 0;
108 } else if (da > db) {
114 } else if (da > db) {
109 return 1;
115 return 1;
110 } else {
116 } else {
111 return -1;
117 return -1;
112 }}));
118 }}));
113 // then, if there is no divider yet, add one
119 // then, if there is no divider yet, add one
114 if (!parent.children("li[class='divider']").length) {
120 if (!parent.children("li[class='divider']").length) {
115 parent.prepend($("<li>").attr("class","divider"));
121 parent.prepend($("<li>").attr("class","divider"));
116 }
122 }
117 // finally, put the current kernel at the top
123 // finally, put the current kernel at the top
118 parent.prepend(cur_kernel_entry);
124 parent.prepend(cur_kernel_entry);
119 }
125 }
120
126
121 // load logo
127 // load logo
122 var logo_img = this.element.find("img.current_kernel_logo");
128 var logo_img = this.element.find("img.current_kernel_logo");
123 $("#kernel_indicator").find('.kernel_indicator_name').text(ks.spec.display_name);
129 $("#kernel_indicator").find('.kernel_indicator_name').text(ks.spec.display_name);
124 if (ks.resources['logo-64x64']) {
130 if (ks.resources['logo-64x64']) {
125 logo_img.attr("src", ks.resources['logo-64x64']);
131 logo_img.attr("src", ks.resources['logo-64x64']);
126 logo_img.show();
132 logo_img.show();
127 } else {
133 } else {
128 logo_img.hide();
134 logo_img.hide();
129 }
135 }
130
136
131 // load kernel css
137 // load kernel css
132 var css_url = ks.resources['kernel.css'];
138 var css_url = ks.resources['kernel.css'];
133 if (css_url) {
139 if (css_url) {
134 $('#kernel-css').attr('href', css_url);
140 $('#kernel-css').attr('href', css_url);
135 } else {
141 } else {
136 $('#kernel-css').attr('href', '');
142 $('#kernel-css').attr('href', '');
137 }
143 }
138
144
139 // load kernel js
145 // load kernel js
140 if (ks.resources['kernel.js']) {
146 if (ks.resources['kernel.js']) {
141 require([ks.resources['kernel.js']],
147 require([ks.resources['kernel.js']],
142 function (kernel_mod) {
148 function (kernel_mod) {
143 if (kernel_mod && kernel_mod.onload) {
149 if (kernel_mod && kernel_mod.onload) {
144 kernel_mod.onload();
150 kernel_mod.onload();
145 } else {
151 } else {
146 console.warn("Kernel " + ks.name + " has a kernel.js file that does not contain "+
152 console.warn("Kernel " + ks.name + " has a kernel.js file that does not contain "+
147 "any asynchronous module definition. This is undefined behavior "+
153 "any asynchronous module definition. This is undefined behavior "+
148 "and not recommended.");
154 "and not recommended.");
149 }
155 }
150 }, function (err) {
156 }, function (err) {
151 console.warn("Failed to load kernel.js from ", ks.resources['kernel.js'], err);
157 console.warn("Failed to load kernel.js from ", ks.resources['kernel.js'], err);
152 }
158 }
153 );
159 );
154 }
160 }
155 };
161 };
156
162
157 KernelSelector.prototype.set_kernel = function (kernel_name) {
163 KernelSelector.prototype.set_kernel = function (selected) {
158 /** set the kernel by name, ensuring kernelspecs have been loaded, first */
164 /** set the kernel by name, ensuring kernelspecs have been loaded, first
165
166 kernel can be just a kernel name, or a notebook kernelspec metadata
167 (name, language, display_name).
168 */
159 var that = this;
169 var that = this;
160 return this.loaded.then(function () {
170 if (typeof selected === 'string') {
161 that._set_kernel(kernel_name);
171 selected = {
162 });
172 name: selected
173 };
174 }
175 if (this._loaded) {
176 this._set_kernel(selected);
177 } else {
178 return this.loaded.then(function () {
179 that._set_kernel(selected);
180 });
181 }
163 };
182 };
164
183
165 KernelSelector.prototype._set_kernel = function (kernel_name) {
184 KernelSelector.prototype._set_kernel = function (selected) {
166 /** Actually set the kernel (kernelspecs have been loaded) */
185 /** Actually set the kernel (kernelspecs have been loaded) */
167 if (kernel_name === this.current_selection) {
186 if (selected.name === this.current_selection) {
168 // only trigger event if value changed
187 // only trigger event if value changed
169 return;
188 return;
170 }
189 }
171 var ks = this.kernelspecs[kernel_name];
190 var kernelspecs = this.kernelspecs;
191 var ks = kernelspecs[selected.name];
192 if (ks === undefined) {
193 var available = _sorted_names(kernelspecs);
194 var matches = [];
195 if (selected.language && selected.language.length > 0) {
196 available.map(function (name) {
197 if (kernelspecs[name].spec.language.toLowerCase() === selected.language.toLowerCase()) {
198 matches.push(name);
199 }
200 });
201 }
202 if (matches.length === 1) {
203 ks = kernelspecs[matches[0]];
204 console.log("No exact match found for " + selected.name +
205 ", using only kernel that matches language=" + selected.language, ks);
206 this.events.trigger("spec_match_found.Kernel", {
207 selected: selected,
208 found: ks,
209 });
210 }
211 // if still undefined, trigger failure event
212 if (ks === undefined) {
213 this.events.trigger("spec_not_found.Kernel", {
214 selected: selected,
215 matches: matches,
216 available: available,
217 });
218 return;
219 }
220 }
172 if (this.notebook._session_starting) {
221 if (this.notebook._session_starting) {
173 console.error("Cannot change kernel while waiting for pending session start.");
222 console.error("Cannot change kernel while waiting for pending session start.");
174 return;
223 return;
175 }
224 }
176 this.current_selection = kernel_name;
225 this.current_selection = ks.name;
177 this.events.trigger('spec_changed.Kernel', ks);
226 this.events.trigger('spec_changed.Kernel', ks);
178 };
227 };
228
229 KernelSelector.prototype._spec_not_found = function (event, data) {
230 var that = this;
231 var select = $("<select>").addClass('form-control');
232 console.warn("Kernelspec not found:", data);
233 var names;
234 if (data.matches.length > 1) {
235 names = data.matches;
236 } else {
237 names = data.available;
238 }
239 names.map(function (name) {
240 var ks = that.kernelspecs[name];
241 select.append(
242 $('<option/>').attr('value', ks.name).text(ks.spec.display_name || ks.name)
243 );
244 });
245
246 var body = $("<form>").addClass("form-inline").append(
247 $("<span>").text(
248 "I couldn't find a kernel matching " + (data.selected.display_name || data.name) + "." +
249 " Please select a kernel:"
250 )
251 ).append(select);
252
253 dialog.modal({
254 title : 'Kernel not found',
255 body : body,
256 buttons : {
257 'Continue without kernel' : {
258 class : 'btn-danger',
259 click : function () {
260 that.events.trigger('no_kernel.Kernel');
261 }
262 },
263 OK : {
264 class : 'btn-primary',
265 click : function () {
266 that.set_kernel(select.val());
267 }
268 }
269 }
270 });
271 };
179
272
180 KernelSelector.prototype.new_notebook = function (kernel_name) {
273 KernelSelector.prototype.new_notebook = function (kernel_name) {
181
274
182 var w = window.open();
275 var w = window.open();
183 // Create a new notebook in the same path as the current
276 // Create a new notebook in the same path as the current
184 // notebook's path.
277 // notebook's path.
185 var that = this;
278 var that = this;
186 var parent = utils.url_path_split(that.notebook.notebook_path)[0];
279 var parent = utils.url_path_split(that.notebook.notebook_path)[0];
187 that.notebook.contents.new_untitled(parent, {type: "notebook"}).then(
280 that.notebook.contents.new_untitled(parent, {type: "notebook"}).then(
188 function (data) {
281 function (data) {
189 var url = utils.url_join_encode(
282 var url = utils.url_join_encode(
190 that.notebook.base_url, 'notebooks', data.path
283 that.notebook.base_url, 'notebooks', data.path
191 );
284 );
192 url += "?kernel_name=" + kernel_name;
285 url += "?kernel_name=" + kernel_name;
193 w.location = url;
286 w.location = url;
194 },
287 },
195 function(error) {
288 function(error) {
196 w.close();
289 w.close();
197 dialog.modal({
290 dialog.modal({
198 title : 'Creating Notebook Failed',
291 title : 'Creating Notebook Failed',
199 body : "The error was: " + error.message,
292 body : "The error was: " + error.message,
200 buttons : {'OK' : {'class' : 'btn-primary'}}
293 buttons : {'OK' : {'class' : 'btn-primary'}}
201 });
294 });
202 }
295 }
203 );
296 );
204 };
297 };
205
298
206 KernelSelector.prototype.lock_switch = function() {
299 KernelSelector.prototype.lock_switch = function() {
207 // should set a flag and display warning+reload if user want to
300 // should set a flag and display warning+reload if user want to
208 // re-change kernel. As UI discussion never finish
301 // re-change kernel. As UI discussion never finish
209 // making that a separate PR.
302 // making that a separate PR.
210 console.warn('switching kernel is not guaranteed to work !');
303 console.warn('switching kernel is not guaranteed to work !');
211 };
304 };
212
305
213 KernelSelector.prototype.bind_events = function() {
306 KernelSelector.prototype.bind_events = function() {
214 var that = this;
307 var that = this;
215 this.events.on('spec_changed.Kernel', $.proxy(this._spec_changed, this));
308 this.events.on('spec_changed.Kernel', $.proxy(this._spec_changed, this));
216
309 this.events.on('spec_not_found.Kernel', $.proxy(this._spec_not_found, this));
217 this.events.on('kernel_created.Session', function (event, data) {
310 this.events.on('kernel_created.Session', function (event, data) {
218 that.set_kernel(data.kernel.name);
311 that.set_kernel(data.kernel.name);
219 });
312 });
220
313
221 var logo_img = this.element.find("img.current_kernel_logo");
314 var logo_img = this.element.find("img.current_kernel_logo");
222 logo_img.on("load", function() {
315 logo_img.on("load", function() {
223 logo_img.show();
316 logo_img.show();
224 });
317 });
225 logo_img.on("error", function() {
318 logo_img.on("error", function() {
226 logo_img.hide();
319 logo_img.hide();
227 });
320 });
228 };
321 };
229
322
230 return {'KernelSelector': KernelSelector};
323 return {'KernelSelector': KernelSelector};
231 });
324 });
@@ -1,2460 +1,2459 b''
1 // Copyright (c) IPython Development Team.
1 // Copyright (c) IPython Development Team.
2 // Distributed under the terms of the Modified BSD License.
2 // Distributed under the terms of the Modified BSD License.
3
3
4 /**
4 /**
5 * @module notebook
5 * @module notebook
6 */
6 */
7 define(function (require) {
7 define(function (require) {
8 "use strict";
8 "use strict";
9 var IPython = require('base/js/namespace');
9 var IPython = require('base/js/namespace');
10 var $ = require('jquery');
10 var $ = require('jquery');
11 var utils = require('base/js/utils');
11 var utils = require('base/js/utils');
12 var dialog = require('base/js/dialog');
12 var dialog = require('base/js/dialog');
13 var cellmod = require('notebook/js/cell');
13 var cellmod = require('notebook/js/cell');
14 var textcell = require('notebook/js/textcell');
14 var textcell = require('notebook/js/textcell');
15 var codecell = require('notebook/js/codecell');
15 var codecell = require('notebook/js/codecell');
16 var moment = require('moment');
16 var moment = require('moment');
17 var configmod = require('services/config');
17 var configmod = require('services/config');
18 var session = require('services/sessions/session');
18 var session = require('services/sessions/session');
19 var celltoolbar = require('notebook/js/celltoolbar');
19 var celltoolbar = require('notebook/js/celltoolbar');
20 var marked = require('components/marked/lib/marked');
20 var marked = require('components/marked/lib/marked');
21 var CodeMirror = require('codemirror/lib/codemirror');
21 var CodeMirror = require('codemirror/lib/codemirror');
22 var runMode = require('codemirror/addon/runmode/runmode');
22 var runMode = require('codemirror/addon/runmode/runmode');
23 var mathjaxutils = require('notebook/js/mathjaxutils');
23 var mathjaxutils = require('notebook/js/mathjaxutils');
24 var keyboard = require('base/js/keyboard');
24 var keyboard = require('base/js/keyboard');
25 var tooltip = require('notebook/js/tooltip');
25 var tooltip = require('notebook/js/tooltip');
26 var default_celltoolbar = require('notebook/js/celltoolbarpresets/default');
26 var default_celltoolbar = require('notebook/js/celltoolbarpresets/default');
27 var rawcell_celltoolbar = require('notebook/js/celltoolbarpresets/rawcell');
27 var rawcell_celltoolbar = require('notebook/js/celltoolbarpresets/rawcell');
28 var slideshow_celltoolbar = require('notebook/js/celltoolbarpresets/slideshow');
28 var slideshow_celltoolbar = require('notebook/js/celltoolbarpresets/slideshow');
29 var scrollmanager = require('notebook/js/scrollmanager');
29 var scrollmanager = require('notebook/js/scrollmanager');
30
30
31 /**
31 /**
32 * Contains and manages cells.
32 * Contains and manages cells.
33 *
33 *
34 * @class Notebook
34 * @class Notebook
35 * @param {string} selector
35 * @param {string} selector
36 * @param {object} options - Dictionary of keyword arguments.
36 * @param {object} options - Dictionary of keyword arguments.
37 * @param {jQuery} options.events - selector of Events
37 * @param {jQuery} options.events - selector of Events
38 * @param {KeyboardManager} options.keyboard_manager
38 * @param {KeyboardManager} options.keyboard_manager
39 * @param {Contents} options.contents
39 * @param {Contents} options.contents
40 * @param {SaveWidget} options.save_widget
40 * @param {SaveWidget} options.save_widget
41 * @param {object} options.config
41 * @param {object} options.config
42 * @param {string} options.base_url
42 * @param {string} options.base_url
43 * @param {string} options.notebook_path
43 * @param {string} options.notebook_path
44 * @param {string} options.notebook_name
44 * @param {string} options.notebook_name
45 */
45 */
46 var Notebook = function (selector, options) {
46 var Notebook = function (selector, options) {
47 this.config = options.config;
47 this.config = options.config;
48 this.class_config = new configmod.ConfigWithDefaults(this.config,
48 this.class_config = new configmod.ConfigWithDefaults(this.config,
49 Notebook.options_default, 'Notebook');
49 Notebook.options_default, 'Notebook');
50 this.base_url = options.base_url;
50 this.base_url = options.base_url;
51 this.notebook_path = options.notebook_path;
51 this.notebook_path = options.notebook_path;
52 this.notebook_name = options.notebook_name;
52 this.notebook_name = options.notebook_name;
53 this.events = options.events;
53 this.events = options.events;
54 this.keyboard_manager = options.keyboard_manager;
54 this.keyboard_manager = options.keyboard_manager;
55 this.contents = options.contents;
55 this.contents = options.contents;
56 this.save_widget = options.save_widget;
56 this.save_widget = options.save_widget;
57 this.tooltip = new tooltip.Tooltip(this.events);
57 this.tooltip = new tooltip.Tooltip(this.events);
58 this.ws_url = options.ws_url;
58 this.ws_url = options.ws_url;
59 this._session_starting = false;
59 this._session_starting = false;
60 this.last_modified = null;
60 this.last_modified = null;
61
61
62 // Create default scroll manager.
62 // Create default scroll manager.
63 this.scroll_manager = new scrollmanager.ScrollManager(this);
63 this.scroll_manager = new scrollmanager.ScrollManager(this);
64
64
65 // TODO: This code smells (and the other `= this` line a couple lines down)
65 // TODO: This code smells (and the other `= this` line a couple lines down)
66 // We need a better way to deal with circular instance references.
66 // We need a better way to deal with circular instance references.
67 this.keyboard_manager.notebook = this;
67 this.keyboard_manager.notebook = this;
68 this.save_widget.notebook = this;
68 this.save_widget.notebook = this;
69
69
70 mathjaxutils.init();
70 mathjaxutils.init();
71
71
72 if (marked) {
72 if (marked) {
73 marked.setOptions({
73 marked.setOptions({
74 gfm : true,
74 gfm : true,
75 tables: true,
75 tables: true,
76 // FIXME: probably want central config for CodeMirror theme when we have js config
76 // FIXME: probably want central config for CodeMirror theme when we have js config
77 langPrefix: "cm-s-ipython language-",
77 langPrefix: "cm-s-ipython language-",
78 highlight: function(code, lang, callback) {
78 highlight: function(code, lang, callback) {
79 if (!lang) {
79 if (!lang) {
80 // no language, no highlight
80 // no language, no highlight
81 if (callback) {
81 if (callback) {
82 callback(null, code);
82 callback(null, code);
83 return;
83 return;
84 } else {
84 } else {
85 return code;
85 return code;
86 }
86 }
87 }
87 }
88 utils.requireCodeMirrorMode(lang, function (spec) {
88 utils.requireCodeMirrorMode(lang, function (spec) {
89 var el = document.createElement("div");
89 var el = document.createElement("div");
90 var mode = CodeMirror.getMode({}, spec);
90 var mode = CodeMirror.getMode({}, spec);
91 if (!mode) {
91 if (!mode) {
92 console.log("No CodeMirror mode: " + lang);
92 console.log("No CodeMirror mode: " + lang);
93 callback(null, code);
93 callback(null, code);
94 return;
94 return;
95 }
95 }
96 try {
96 try {
97 CodeMirror.runMode(code, spec, el);
97 CodeMirror.runMode(code, spec, el);
98 callback(null, el.innerHTML);
98 callback(null, el.innerHTML);
99 } catch (err) {
99 } catch (err) {
100 console.log("Failed to highlight " + lang + " code", err);
100 console.log("Failed to highlight " + lang + " code", err);
101 callback(err, code);
101 callback(err, code);
102 }
102 }
103 }, function (err) {
103 }, function (err) {
104 console.log("No CodeMirror mode: " + lang);
104 console.log("No CodeMirror mode: " + lang);
105 callback(err, code);
105 callback(err, code);
106 });
106 });
107 }
107 }
108 });
108 });
109 }
109 }
110
110
111 this.element = $(selector);
111 this.element = $(selector);
112 this.element.scroll();
112 this.element.scroll();
113 this.element.data("notebook", this);
113 this.element.data("notebook", this);
114 this.next_prompt_number = 1;
114 this.next_prompt_number = 1;
115 this.session = null;
115 this.session = null;
116 this.kernel = null;
116 this.kernel = null;
117 this.clipboard = null;
117 this.clipboard = null;
118 this.undelete_backup = null;
118 this.undelete_backup = null;
119 this.undelete_index = null;
119 this.undelete_index = null;
120 this.undelete_below = false;
120 this.undelete_below = false;
121 this.paste_enabled = false;
121 this.paste_enabled = false;
122 this.writable = false;
122 this.writable = false;
123 // It is important to start out in command mode to match the intial mode
123 // It is important to start out in command mode to match the intial mode
124 // of the KeyboardManager.
124 // of the KeyboardManager.
125 this.mode = 'command';
125 this.mode = 'command';
126 this.set_dirty(false);
126 this.set_dirty(false);
127 this.metadata = {};
127 this.metadata = {};
128 this._checkpoint_after_save = false;
128 this._checkpoint_after_save = false;
129 this.last_checkpoint = null;
129 this.last_checkpoint = null;
130 this.checkpoints = [];
130 this.checkpoints = [];
131 this.autosave_interval = 0;
131 this.autosave_interval = 0;
132 this.autosave_timer = null;
132 this.autosave_timer = null;
133 // autosave *at most* every two minutes
133 // autosave *at most* every two minutes
134 this.minimum_autosave_interval = 120000;
134 this.minimum_autosave_interval = 120000;
135 this.notebook_name_blacklist_re = /[\/\\:]/;
135 this.notebook_name_blacklist_re = /[\/\\:]/;
136 this.nbformat = 4; // Increment this when changing the nbformat
136 this.nbformat = 4; // Increment this when changing the nbformat
137 this.nbformat_minor = this.current_nbformat_minor = 0; // Increment this when changing the nbformat
137 this.nbformat_minor = this.current_nbformat_minor = 0; // Increment this when changing the nbformat
138 this.codemirror_mode = 'ipython';
138 this.codemirror_mode = 'ipython';
139 this.create_elements();
139 this.create_elements();
140 this.bind_events();
140 this.bind_events();
141 this.kernel_selector = null;
141 this.kernel_selector = null;
142 this.dirty = null;
142 this.dirty = null;
143 this.trusted = null;
143 this.trusted = null;
144 this._fully_loaded = false;
144 this._fully_loaded = false;
145
145
146 // Trigger cell toolbar registration.
146 // Trigger cell toolbar registration.
147 default_celltoolbar.register(this);
147 default_celltoolbar.register(this);
148 rawcell_celltoolbar.register(this);
148 rawcell_celltoolbar.register(this);
149 slideshow_celltoolbar.register(this);
149 slideshow_celltoolbar.register(this);
150
150
151 // prevent assign to miss-typed properties.
151 // prevent assign to miss-typed properties.
152 Object.seal(this);
152 Object.seal(this);
153 };
153 };
154
154
155 Notebook.options_default = {
155 Notebook.options_default = {
156 // can be any cell type, or the special values of
156 // can be any cell type, or the special values of
157 // 'above', 'below', or 'selected' to get the value from another cell.
157 // 'above', 'below', or 'selected' to get the value from another cell.
158 default_cell_type: 'code'
158 default_cell_type: 'code'
159 };
159 };
160
160
161 /**
161 /**
162 * Create an HTML and CSS representation of the notebook.
162 * Create an HTML and CSS representation of the notebook.
163 */
163 */
164 Notebook.prototype.create_elements = function () {
164 Notebook.prototype.create_elements = function () {
165 var that = this;
165 var that = this;
166 this.element.attr('tabindex','-1');
166 this.element.attr('tabindex','-1');
167 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
167 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
168 // We add this end_space div to the end of the notebook div to:
168 // We add this end_space div to the end of the notebook div to:
169 // i) provide a margin between the last cell and the end of the notebook
169 // i) provide a margin between the last cell and the end of the notebook
170 // ii) to prevent the div from scrolling up when the last cell is being
170 // ii) to prevent the div from scrolling up when the last cell is being
171 // edited, but is too low on the page, which browsers will do automatically.
171 // edited, but is too low on the page, which browsers will do automatically.
172 var end_space = $('<div/>').addClass('end_space');
172 var end_space = $('<div/>').addClass('end_space');
173 end_space.dblclick(function (e) {
173 end_space.dblclick(function (e) {
174 var ncells = that.ncells();
174 var ncells = that.ncells();
175 that.insert_cell_below('code',ncells-1);
175 that.insert_cell_below('code',ncells-1);
176 });
176 });
177 this.element.append(this.container);
177 this.element.append(this.container);
178 this.container.after(end_space);
178 this.container.after(end_space);
179 };
179 };
180
180
181 /**
181 /**
182 * Bind JavaScript events: key presses and custom IPython events.
182 * Bind JavaScript events: key presses and custom IPython events.
183 */
183 */
184 Notebook.prototype.bind_events = function () {
184 Notebook.prototype.bind_events = function () {
185 var that = this;
185 var that = this;
186
186
187 this.events.on('set_next_input.Notebook', function (event, data) {
187 this.events.on('set_next_input.Notebook', function (event, data) {
188 if (data.replace) {
188 if (data.replace) {
189 data.cell.set_text(data.text);
189 data.cell.set_text(data.text);
190 data.cell.clear_output();
190 data.cell.clear_output();
191 } else {
191 } else {
192 var index = that.find_cell_index(data.cell);
192 var index = that.find_cell_index(data.cell);
193 var new_cell = that.insert_cell_below('code',index);
193 var new_cell = that.insert_cell_below('code',index);
194 new_cell.set_text(data.text);
194 new_cell.set_text(data.text);
195 }
195 }
196 that.dirty = true;
196 that.dirty = true;
197 });
197 });
198
198
199 this.events.on('unrecognized_cell.Cell', function () {
199 this.events.on('unrecognized_cell.Cell', function () {
200 that.warn_nbformat_minor();
200 that.warn_nbformat_minor();
201 });
201 });
202
202
203 this.events.on('unrecognized_output.OutputArea', function () {
203 this.events.on('unrecognized_output.OutputArea', function () {
204 that.warn_nbformat_minor();
204 that.warn_nbformat_minor();
205 });
205 });
206
206
207 this.events.on('set_dirty.Notebook', function (event, data) {
207 this.events.on('set_dirty.Notebook', function (event, data) {
208 that.dirty = data.value;
208 that.dirty = data.value;
209 });
209 });
210
210
211 this.events.on('trust_changed.Notebook', function (event, trusted) {
211 this.events.on('trust_changed.Notebook', function (event, trusted) {
212 that.trusted = trusted;
212 that.trusted = trusted;
213 });
213 });
214
214
215 this.events.on('select.Cell', function (event, data) {
215 this.events.on('select.Cell', function (event, data) {
216 var index = that.find_cell_index(data.cell);
216 var index = that.find_cell_index(data.cell);
217 that.select(index);
217 that.select(index);
218 });
218 });
219
219
220 this.events.on('edit_mode.Cell', function (event, data) {
220 this.events.on('edit_mode.Cell', function (event, data) {
221 that.handle_edit_mode(data.cell);
221 that.handle_edit_mode(data.cell);
222 });
222 });
223
223
224 this.events.on('command_mode.Cell', function (event, data) {
224 this.events.on('command_mode.Cell', function (event, data) {
225 that.handle_command_mode(data.cell);
225 that.handle_command_mode(data.cell);
226 });
226 });
227
227
228 this.events.on('spec_changed.Kernel', function(event, data) {
228 this.events.on('spec_changed.Kernel', function(event, data) {
229 that.metadata.kernelspec =
229 that.metadata.kernelspec = {
230 {name: data.name, display_name: data.spec.display_name};
230 name: data.name,
231 display_name: data.spec.display_name,
232 language: data.spec.language,
233 };
231 // start session if the current session isn't already correct
234 // start session if the current session isn't already correct
232 if (!(this.session && this.session.kernel && this.session.kernel.name === data.name)) {
235 if (!(this.session && this.session.kernel && this.session.kernel.name === data.name)) {
233 that.start_session(data.name);
236 that.start_session(data.name);
234 }
237 }
235 });
238 });
236
239
237 this.events.on('kernel_ready.Kernel', function(event, data) {
240 this.events.on('kernel_ready.Kernel', function(event, data) {
238 var kinfo = data.kernel.info_reply;
241 var kinfo = data.kernel.info_reply;
239 if (!kinfo.language_info) {
242 if (!kinfo.language_info) {
240 delete that.metadata.language_info;
243 delete that.metadata.language_info;
241 return;
244 return;
242 }
245 }
243 var langinfo = kinfo.language_info;
246 var langinfo = kinfo.language_info;
244 that.metadata.language_info = langinfo;
247 that.metadata.language_info = langinfo;
245 // Mode 'null' should be plain, unhighlighted text.
248 // Mode 'null' should be plain, unhighlighted text.
246 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
249 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
247 that.set_codemirror_mode(cm_mode);
250 that.set_codemirror_mode(cm_mode);
248 });
251 });
249
252
250 var collapse_time = function (time) {
253 var collapse_time = function (time) {
251 var app_height = $('#ipython-main-app').height(); // content height
254 var app_height = $('#ipython-main-app').height(); // content height
252 var splitter_height = $('div#pager_splitter').outerHeight(true);
255 var splitter_height = $('div#pager_splitter').outerHeight(true);
253 var new_height = app_height - splitter_height;
256 var new_height = app_height - splitter_height;
254 that.element.animate({height : new_height + 'px'}, time);
257 that.element.animate({height : new_height + 'px'}, time);
255 };
258 };
256
259
257 this.element.bind('collapse_pager', function (event, extrap) {
260 this.element.bind('collapse_pager', function (event, extrap) {
258 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
261 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
259 collapse_time(time);
262 collapse_time(time);
260 });
263 });
261
264
262 var expand_time = function (time) {
265 var expand_time = function (time) {
263 var app_height = $('#ipython-main-app').height(); // content height
266 var app_height = $('#ipython-main-app').height(); // content height
264 var splitter_height = $('div#pager_splitter').outerHeight(true);
267 var splitter_height = $('div#pager_splitter').outerHeight(true);
265 var pager_height = $('div#pager').outerHeight(true);
268 var pager_height = $('div#pager').outerHeight(true);
266 var new_height = app_height - pager_height - splitter_height;
269 var new_height = app_height - pager_height - splitter_height;
267 that.element.animate({height : new_height + 'px'}, time);
270 that.element.animate({height : new_height + 'px'}, time);
268 };
271 };
269
272
270 this.element.bind('expand_pager', function (event, extrap) {
273 this.element.bind('expand_pager', function (event, extrap) {
271 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
274 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
272 expand_time(time);
275 expand_time(time);
273 });
276 });
274
277
275 // Firefox 22 broke $(window).on("beforeunload")
278 // Firefox 22 broke $(window).on("beforeunload")
276 // I'm not sure why or how.
279 // I'm not sure why or how.
277 window.onbeforeunload = function (e) {
280 window.onbeforeunload = function (e) {
278 // TODO: Make killing the kernel configurable.
281 // TODO: Make killing the kernel configurable.
279 var kill_kernel = false;
282 var kill_kernel = false;
280 if (kill_kernel) {
283 if (kill_kernel) {
281 that.session.delete();
284 that.session.delete();
282 }
285 }
283 // if we are autosaving, trigger an autosave on nav-away.
286 // if we are autosaving, trigger an autosave on nav-away.
284 // still warn, because if we don't the autosave may fail.
287 // still warn, because if we don't the autosave may fail.
285 if (that.dirty) {
288 if (that.dirty) {
286 if ( that.autosave_interval ) {
289 if ( that.autosave_interval ) {
287 // schedule autosave in a timeout
290 // schedule autosave in a timeout
288 // this gives you a chance to forcefully discard changes
291 // this gives you a chance to forcefully discard changes
289 // by reloading the page if you *really* want to.
292 // by reloading the page if you *really* want to.
290 // the timer doesn't start until you *dismiss* the dialog.
293 // the timer doesn't start until you *dismiss* the dialog.
291 setTimeout(function () {
294 setTimeout(function () {
292 if (that.dirty) {
295 if (that.dirty) {
293 that.save_notebook();
296 that.save_notebook();
294 }
297 }
295 }, 1000);
298 }, 1000);
296 return "Autosave in progress, latest changes may be lost.";
299 return "Autosave in progress, latest changes may be lost.";
297 } else {
300 } else {
298 return "Unsaved changes will be lost.";
301 return "Unsaved changes will be lost.";
299 }
302 }
300 }
303 }
301 // Null is the *only* return value that will make the browser not
304 // Null is the *only* return value that will make the browser not
302 // pop up the "don't leave" dialog.
305 // pop up the "don't leave" dialog.
303 return null;
306 return null;
304 };
307 };
305 };
308 };
306
309
307 /**
310 /**
308 * Trigger a warning dialog about missing functionality from newer minor versions
311 * Trigger a warning dialog about missing functionality from newer minor versions
309 */
312 */
310 Notebook.prototype.warn_nbformat_minor = function (event) {
313 Notebook.prototype.warn_nbformat_minor = function (event) {
311 var v = 'v' + this.nbformat + '.';
314 var v = 'v' + this.nbformat + '.';
312 var orig_vs = v + this.nbformat_minor;
315 var orig_vs = v + this.nbformat_minor;
313 var this_vs = v + this.current_nbformat_minor;
316 var this_vs = v + this.current_nbformat_minor;
314 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
317 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
315 this_vs + ". You can still work with this notebook, but cell and output types " +
318 this_vs + ". You can still work with this notebook, but cell and output types " +
316 "introduced in later notebook versions will not be available.";
319 "introduced in later notebook versions will not be available.";
317
320
318 dialog.modal({
321 dialog.modal({
319 notebook: this,
322 notebook: this,
320 keyboard_manager: this.keyboard_manager,
323 keyboard_manager: this.keyboard_manager,
321 title : "Newer Notebook",
324 title : "Newer Notebook",
322 body : msg,
325 body : msg,
323 buttons : {
326 buttons : {
324 OK : {
327 OK : {
325 "class" : "btn-danger"
328 "class" : "btn-danger"
326 }
329 }
327 }
330 }
328 });
331 });
329 };
332 };
330
333
331 /**
334 /**
332 * Set the dirty flag, and trigger the set_dirty.Notebook event
335 * Set the dirty flag, and trigger the set_dirty.Notebook event
333 */
336 */
334 Notebook.prototype.set_dirty = function (value) {
337 Notebook.prototype.set_dirty = function (value) {
335 if (value === undefined) {
338 if (value === undefined) {
336 value = true;
339 value = true;
337 }
340 }
338 if (this.dirty === value) {
341 if (this.dirty === value) {
339 return;
342 return;
340 }
343 }
341 this.events.trigger('set_dirty.Notebook', {value: value});
344 this.events.trigger('set_dirty.Notebook', {value: value});
342 };
345 };
343
346
344 /**
347 /**
345 * Scroll the top of the page to a given cell.
348 * Scroll the top of the page to a given cell.
346 *
349 *
347 * @param {integer} index - An index of the cell to view
350 * @param {integer} index - An index of the cell to view
348 * @param {integer} time - Animation time in milliseconds
351 * @param {integer} time - Animation time in milliseconds
349 * @return {integer} Pixel offset from the top of the container
352 * @return {integer} Pixel offset from the top of the container
350 */
353 */
351 Notebook.prototype.scroll_to_cell = function (index, time) {
354 Notebook.prototype.scroll_to_cell = function (index, time) {
352 var cells = this.get_cells();
355 var cells = this.get_cells();
353 time = time || 0;
356 time = time || 0;
354 index = Math.min(cells.length-1,index);
357 index = Math.min(cells.length-1,index);
355 index = Math.max(0 ,index);
358 index = Math.max(0 ,index);
356 var scroll_value = cells[index].element.position().top-cells[0].element.position().top ;
359 var scroll_value = cells[index].element.position().top-cells[0].element.position().top ;
357 this.scroll_manager.element.animate({scrollTop:scroll_value}, time);
360 this.scroll_manager.element.animate({scrollTop:scroll_value}, time);
358 return scroll_value;
361 return scroll_value;
359 };
362 };
360
363
361 /**
364 /**
362 * Scroll to the bottom of the page.
365 * Scroll to the bottom of the page.
363 */
366 */
364 Notebook.prototype.scroll_to_bottom = function () {
367 Notebook.prototype.scroll_to_bottom = function () {
365 this.scroll_manager.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
368 this.scroll_manager.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
366 };
369 };
367
370
368 /**
371 /**
369 * Scroll to the top of the page.
372 * Scroll to the top of the page.
370 */
373 */
371 Notebook.prototype.scroll_to_top = function () {
374 Notebook.prototype.scroll_to_top = function () {
372 this.scroll_manager.element.animate({scrollTop:0}, 0);
375 this.scroll_manager.element.animate({scrollTop:0}, 0);
373 };
376 };
374
377
375 // Edit Notebook metadata
378 // Edit Notebook metadata
376
379
377 /**
380 /**
378 * Display a dialog that allows the user to edit the Notebook's metadata.
381 * Display a dialog that allows the user to edit the Notebook's metadata.
379 */
382 */
380 Notebook.prototype.edit_metadata = function () {
383 Notebook.prototype.edit_metadata = function () {
381 var that = this;
384 var that = this;
382 dialog.edit_metadata({
385 dialog.edit_metadata({
383 md: this.metadata,
386 md: this.metadata,
384 callback: function (md) {
387 callback: function (md) {
385 that.metadata = md;
388 that.metadata = md;
386 },
389 },
387 name: 'Notebook',
390 name: 'Notebook',
388 notebook: this,
391 notebook: this,
389 keyboard_manager: this.keyboard_manager});
392 keyboard_manager: this.keyboard_manager});
390 };
393 };
391
394
392 // Cell indexing, retrieval, etc.
395 // Cell indexing, retrieval, etc.
393
396
394 /**
397 /**
395 * Get all cell elements in the notebook.
398 * Get all cell elements in the notebook.
396 *
399 *
397 * @return {jQuery} A selector of all cell elements
400 * @return {jQuery} A selector of all cell elements
398 */
401 */
399 Notebook.prototype.get_cell_elements = function () {
402 Notebook.prototype.get_cell_elements = function () {
400 return this.container.find(".cell").not('.cell .cell');
403 return this.container.find(".cell").not('.cell .cell');
401 };
404 };
402
405
403 /**
406 /**
404 * Get a particular cell element.
407 * Get a particular cell element.
405 *
408 *
406 * @param {integer} index An index of a cell to select
409 * @param {integer} index An index of a cell to select
407 * @return {jQuery} A selector of the given cell.
410 * @return {jQuery} A selector of the given cell.
408 */
411 */
409 Notebook.prototype.get_cell_element = function (index) {
412 Notebook.prototype.get_cell_element = function (index) {
410 var result = null;
413 var result = null;
411 var e = this.get_cell_elements().eq(index);
414 var e = this.get_cell_elements().eq(index);
412 if (e.length !== 0) {
415 if (e.length !== 0) {
413 result = e;
416 result = e;
414 }
417 }
415 return result;
418 return result;
416 };
419 };
417
420
418 /**
421 /**
419 * Try to get a particular cell by msg_id.
422 * Try to get a particular cell by msg_id.
420 *
423 *
421 * @param {string} msg_id A message UUID
424 * @param {string} msg_id A message UUID
422 * @return {Cell} Cell or null if no cell was found.
425 * @return {Cell} Cell or null if no cell was found.
423 */
426 */
424 Notebook.prototype.get_msg_cell = function (msg_id) {
427 Notebook.prototype.get_msg_cell = function (msg_id) {
425 return codecell.CodeCell.msg_cells[msg_id] || null;
428 return codecell.CodeCell.msg_cells[msg_id] || null;
426 };
429 };
427
430
428 /**
431 /**
429 * Count the cells in this notebook.
432 * Count the cells in this notebook.
430 *
433 *
431 * @return {integer} The number of cells in this notebook
434 * @return {integer} The number of cells in this notebook
432 */
435 */
433 Notebook.prototype.ncells = function () {
436 Notebook.prototype.ncells = function () {
434 return this.get_cell_elements().length;
437 return this.get_cell_elements().length;
435 };
438 };
436
439
437 /**
440 /**
438 * Get all Cell objects in this notebook.
441 * Get all Cell objects in this notebook.
439 *
442 *
440 * @return {Array} This notebook's Cell objects
443 * @return {Array} This notebook's Cell objects
441 */
444 */
442 Notebook.prototype.get_cells = function () {
445 Notebook.prototype.get_cells = function () {
443 // TODO: we are often calling cells as cells()[i], which we should optimize
446 // TODO: we are often calling cells as cells()[i], which we should optimize
444 // to cells(i) or a new method.
447 // to cells(i) or a new method.
445 return this.get_cell_elements().toArray().map(function (e) {
448 return this.get_cell_elements().toArray().map(function (e) {
446 return $(e).data("cell");
449 return $(e).data("cell");
447 });
450 });
448 };
451 };
449
452
450 /**
453 /**
451 * Get a Cell objects from this notebook.
454 * Get a Cell objects from this notebook.
452 *
455 *
453 * @param {integer} index - An index of a cell to retrieve
456 * @param {integer} index - An index of a cell to retrieve
454 * @return {Cell} Cell or null if no cell was found.
457 * @return {Cell} Cell or null if no cell was found.
455 */
458 */
456 Notebook.prototype.get_cell = function (index) {
459 Notebook.prototype.get_cell = function (index) {
457 var result = null;
460 var result = null;
458 var ce = this.get_cell_element(index);
461 var ce = this.get_cell_element(index);
459 if (ce !== null) {
462 if (ce !== null) {
460 result = ce.data('cell');
463 result = ce.data('cell');
461 }
464 }
462 return result;
465 return result;
463 };
466 };
464
467
465 /**
468 /**
466 * Get the cell below a given cell.
469 * Get the cell below a given cell.
467 *
470 *
468 * @param {Cell} cell
471 * @param {Cell} cell
469 * @return {Cell} the next cell or null if no cell was found.
472 * @return {Cell} the next cell or null if no cell was found.
470 */
473 */
471 Notebook.prototype.get_next_cell = function (cell) {
474 Notebook.prototype.get_next_cell = function (cell) {
472 var result = null;
475 var result = null;
473 var index = this.find_cell_index(cell);
476 var index = this.find_cell_index(cell);
474 if (this.is_valid_cell_index(index+1)) {
477 if (this.is_valid_cell_index(index+1)) {
475 result = this.get_cell(index+1);
478 result = this.get_cell(index+1);
476 }
479 }
477 return result;
480 return result;
478 };
481 };
479
482
480 /**
483 /**
481 * Get the cell above a given cell.
484 * Get the cell above a given cell.
482 *
485 *
483 * @param {Cell} cell
486 * @param {Cell} cell
484 * @return {Cell} The previous cell or null if no cell was found.
487 * @return {Cell} The previous cell or null if no cell was found.
485 */
488 */
486 Notebook.prototype.get_prev_cell = function (cell) {
489 Notebook.prototype.get_prev_cell = function (cell) {
487 var result = null;
490 var result = null;
488 var index = this.find_cell_index(cell);
491 var index = this.find_cell_index(cell);
489 if (index !== null && index > 0) {
492 if (index !== null && index > 0) {
490 result = this.get_cell(index-1);
493 result = this.get_cell(index-1);
491 }
494 }
492 return result;
495 return result;
493 };
496 };
494
497
495 /**
498 /**
496 * Get the numeric index of a given cell.
499 * Get the numeric index of a given cell.
497 *
500 *
498 * @param {Cell} cell
501 * @param {Cell} cell
499 * @return {integer} The cell's numeric index or null if no cell was found.
502 * @return {integer} The cell's numeric index or null if no cell was found.
500 */
503 */
501 Notebook.prototype.find_cell_index = function (cell) {
504 Notebook.prototype.find_cell_index = function (cell) {
502 var result = null;
505 var result = null;
503 this.get_cell_elements().filter(function (index) {
506 this.get_cell_elements().filter(function (index) {
504 if ($(this).data("cell") === cell) {
507 if ($(this).data("cell") === cell) {
505 result = index;
508 result = index;
506 }
509 }
507 });
510 });
508 return result;
511 return result;
509 };
512 };
510
513
511 /**
514 /**
512 * Return given index if defined, or the selected index if not.
515 * Return given index if defined, or the selected index if not.
513 *
516 *
514 * @param {integer} [index] - A cell's index
517 * @param {integer} [index] - A cell's index
515 * @return {integer} cell index
518 * @return {integer} cell index
516 */
519 */
517 Notebook.prototype.index_or_selected = function (index) {
520 Notebook.prototype.index_or_selected = function (index) {
518 var i;
521 var i;
519 if (index === undefined || index === null) {
522 if (index === undefined || index === null) {
520 i = this.get_selected_index();
523 i = this.get_selected_index();
521 if (i === null) {
524 if (i === null) {
522 i = 0;
525 i = 0;
523 }
526 }
524 } else {
527 } else {
525 i = index;
528 i = index;
526 }
529 }
527 return i;
530 return i;
528 };
531 };
529
532
530 /**
533 /**
531 * Get the currently selected cell.
534 * Get the currently selected cell.
532 *
535 *
533 * @return {Cell} The selected cell
536 * @return {Cell} The selected cell
534 */
537 */
535 Notebook.prototype.get_selected_cell = function () {
538 Notebook.prototype.get_selected_cell = function () {
536 var index = this.get_selected_index();
539 var index = this.get_selected_index();
537 return this.get_cell(index);
540 return this.get_cell(index);
538 };
541 };
539
542
540 /**
543 /**
541 * Check whether a cell index is valid.
544 * Check whether a cell index is valid.
542 *
545 *
543 * @param {integer} index - A cell index
546 * @param {integer} index - A cell index
544 * @return True if the index is valid, false otherwise
547 * @return True if the index is valid, false otherwise
545 */
548 */
546 Notebook.prototype.is_valid_cell_index = function (index) {
549 Notebook.prototype.is_valid_cell_index = function (index) {
547 if (index !== null && index >= 0 && index < this.ncells()) {
550 if (index !== null && index >= 0 && index < this.ncells()) {
548 return true;
551 return true;
549 } else {
552 } else {
550 return false;
553 return false;
551 }
554 }
552 };
555 };
553
556
554 /**
557 /**
555 * Get the index of the currently selected cell.
558 * Get the index of the currently selected cell.
556 *
559 *
557 * @return {integer} The selected cell's numeric index
560 * @return {integer} The selected cell's numeric index
558 */
561 */
559 Notebook.prototype.get_selected_index = function () {
562 Notebook.prototype.get_selected_index = function () {
560 var result = null;
563 var result = null;
561 this.get_cell_elements().filter(function (index) {
564 this.get_cell_elements().filter(function (index) {
562 if ($(this).data("cell").selected === true) {
565 if ($(this).data("cell").selected === true) {
563 result = index;
566 result = index;
564 }
567 }
565 });
568 });
566 return result;
569 return result;
567 };
570 };
568
571
569
572
570 // Cell selection.
573 // Cell selection.
571
574
572 /**
575 /**
573 * Programmatically select a cell.
576 * Programmatically select a cell.
574 *
577 *
575 * @param {integer} index - A cell's index
578 * @param {integer} index - A cell's index
576 * @return {Notebook} This notebook
579 * @return {Notebook} This notebook
577 */
580 */
578 Notebook.prototype.select = function (index) {
581 Notebook.prototype.select = function (index) {
579 if (this.is_valid_cell_index(index)) {
582 if (this.is_valid_cell_index(index)) {
580 var sindex = this.get_selected_index();
583 var sindex = this.get_selected_index();
581 if (sindex !== null && index !== sindex) {
584 if (sindex !== null && index !== sindex) {
582 // If we are about to select a different cell, make sure we are
585 // If we are about to select a different cell, make sure we are
583 // first in command mode.
586 // first in command mode.
584 if (this.mode !== 'command') {
587 if (this.mode !== 'command') {
585 this.command_mode();
588 this.command_mode();
586 }
589 }
587 this.get_cell(sindex).unselect();
590 this.get_cell(sindex).unselect();
588 }
591 }
589 var cell = this.get_cell(index);
592 var cell = this.get_cell(index);
590 cell.select();
593 cell.select();
591 if (cell.cell_type === 'heading') {
594 if (cell.cell_type === 'heading') {
592 this.events.trigger('selected_cell_type_changed.Notebook',
595 this.events.trigger('selected_cell_type_changed.Notebook',
593 {'cell_type':cell.cell_type,level:cell.level}
596 {'cell_type':cell.cell_type,level:cell.level}
594 );
597 );
595 } else {
598 } else {
596 this.events.trigger('selected_cell_type_changed.Notebook',
599 this.events.trigger('selected_cell_type_changed.Notebook',
597 {'cell_type':cell.cell_type}
600 {'cell_type':cell.cell_type}
598 );
601 );
599 }
602 }
600 }
603 }
601 return this;
604 return this;
602 };
605 };
603
606
604 /**
607 /**
605 * Programmatically select the next cell.
608 * Programmatically select the next cell.
606 *
609 *
607 * @return {Notebook} This notebook
610 * @return {Notebook} This notebook
608 */
611 */
609 Notebook.prototype.select_next = function () {
612 Notebook.prototype.select_next = function () {
610 var index = this.get_selected_index();
613 var index = this.get_selected_index();
611 this.select(index+1);
614 this.select(index+1);
612 return this;
615 return this;
613 };
616 };
614
617
615 /**
618 /**
616 * Programmatically select the previous cell.
619 * Programmatically select the previous cell.
617 *
620 *
618 * @return {Notebook} This notebook
621 * @return {Notebook} This notebook
619 */
622 */
620 Notebook.prototype.select_prev = function () {
623 Notebook.prototype.select_prev = function () {
621 var index = this.get_selected_index();
624 var index = this.get_selected_index();
622 this.select(index-1);
625 this.select(index-1);
623 return this;
626 return this;
624 };
627 };
625
628
626
629
627 // Edit/Command mode
630 // Edit/Command mode
628
631
629 /**
632 /**
630 * Gets the index of the cell that is in edit mode.
633 * Gets the index of the cell that is in edit mode.
631 *
634 *
632 * @return {integer} index
635 * @return {integer} index
633 */
636 */
634 Notebook.prototype.get_edit_index = function () {
637 Notebook.prototype.get_edit_index = function () {
635 var result = null;
638 var result = null;
636 this.get_cell_elements().filter(function (index) {
639 this.get_cell_elements().filter(function (index) {
637 if ($(this).data("cell").mode === 'edit') {
640 if ($(this).data("cell").mode === 'edit') {
638 result = index;
641 result = index;
639 }
642 }
640 });
643 });
641 return result;
644 return result;
642 };
645 };
643
646
644 /**
647 /**
645 * Handle when a a cell blurs and the notebook should enter command mode.
648 * Handle when a a cell blurs and the notebook should enter command mode.
646 *
649 *
647 * @param {Cell} [cell] - Cell to enter command mode on.
650 * @param {Cell} [cell] - Cell to enter command mode on.
648 */
651 */
649 Notebook.prototype.handle_command_mode = function (cell) {
652 Notebook.prototype.handle_command_mode = function (cell) {
650 if (this.mode !== 'command') {
653 if (this.mode !== 'command') {
651 cell.command_mode();
654 cell.command_mode();
652 this.mode = 'command';
655 this.mode = 'command';
653 this.events.trigger('command_mode.Notebook');
656 this.events.trigger('command_mode.Notebook');
654 this.keyboard_manager.command_mode();
657 this.keyboard_manager.command_mode();
655 }
658 }
656 };
659 };
657
660
658 /**
661 /**
659 * Make the notebook enter command mode.
662 * Make the notebook enter command mode.
660 */
663 */
661 Notebook.prototype.command_mode = function () {
664 Notebook.prototype.command_mode = function () {
662 var cell = this.get_cell(this.get_edit_index());
665 var cell = this.get_cell(this.get_edit_index());
663 if (cell && this.mode !== 'command') {
666 if (cell && this.mode !== 'command') {
664 // We don't call cell.command_mode, but rather call cell.focus_cell()
667 // We don't call cell.command_mode, but rather call cell.focus_cell()
665 // which will blur and CM editor and trigger the call to
668 // which will blur and CM editor and trigger the call to
666 // handle_command_mode.
669 // handle_command_mode.
667 cell.focus_cell();
670 cell.focus_cell();
668 }
671 }
669 };
672 };
670
673
671 /**
674 /**
672 * Handle when a cell fires it's edit_mode event.
675 * Handle when a cell fires it's edit_mode event.
673 *
676 *
674 * @param {Cell} [cell] Cell to enter edit mode on.
677 * @param {Cell} [cell] Cell to enter edit mode on.
675 */
678 */
676 Notebook.prototype.handle_edit_mode = function (cell) {
679 Notebook.prototype.handle_edit_mode = function (cell) {
677 if (cell && this.mode !== 'edit') {
680 if (cell && this.mode !== 'edit') {
678 cell.edit_mode();
681 cell.edit_mode();
679 this.mode = 'edit';
682 this.mode = 'edit';
680 this.events.trigger('edit_mode.Notebook');
683 this.events.trigger('edit_mode.Notebook');
681 this.keyboard_manager.edit_mode();
684 this.keyboard_manager.edit_mode();
682 }
685 }
683 };
686 };
684
687
685 /**
688 /**
686 * Make a cell enter edit mode.
689 * Make a cell enter edit mode.
687 */
690 */
688 Notebook.prototype.edit_mode = function () {
691 Notebook.prototype.edit_mode = function () {
689 var cell = this.get_selected_cell();
692 var cell = this.get_selected_cell();
690 if (cell && this.mode !== 'edit') {
693 if (cell && this.mode !== 'edit') {
691 cell.unrender();
694 cell.unrender();
692 cell.focus_editor();
695 cell.focus_editor();
693 }
696 }
694 };
697 };
695
698
696 /**
699 /**
697 * Focus the currently selected cell.
700 * Focus the currently selected cell.
698 */
701 */
699 Notebook.prototype.focus_cell = function () {
702 Notebook.prototype.focus_cell = function () {
700 var cell = this.get_selected_cell();
703 var cell = this.get_selected_cell();
701 if (cell === null) {return;} // No cell is selected
704 if (cell === null) {return;} // No cell is selected
702 cell.focus_cell();
705 cell.focus_cell();
703 };
706 };
704
707
705 // Cell movement
708 // Cell movement
706
709
707 /**
710 /**
708 * Move given (or selected) cell up and select it.
711 * Move given (or selected) cell up and select it.
709 *
712 *
710 * @param {integer} [index] - cell index
713 * @param {integer} [index] - cell index
711 * @return {Notebook} This notebook
714 * @return {Notebook} This notebook
712 */
715 */
713 Notebook.prototype.move_cell_up = function (index) {
716 Notebook.prototype.move_cell_up = function (index) {
714 var i = this.index_or_selected(index);
717 var i = this.index_or_selected(index);
715 if (this.is_valid_cell_index(i) && i > 0) {
718 if (this.is_valid_cell_index(i) && i > 0) {
716 var pivot = this.get_cell_element(i-1);
719 var pivot = this.get_cell_element(i-1);
717 var tomove = this.get_cell_element(i);
720 var tomove = this.get_cell_element(i);
718 if (pivot !== null && tomove !== null) {
721 if (pivot !== null && tomove !== null) {
719 tomove.detach();
722 tomove.detach();
720 pivot.before(tomove);
723 pivot.before(tomove);
721 this.select(i-1);
724 this.select(i-1);
722 var cell = this.get_selected_cell();
725 var cell = this.get_selected_cell();
723 cell.focus_cell();
726 cell.focus_cell();
724 }
727 }
725 this.set_dirty(true);
728 this.set_dirty(true);
726 }
729 }
727 return this;
730 return this;
728 };
731 };
729
732
730
733
731 /**
734 /**
732 * Move given (or selected) cell down and select it.
735 * Move given (or selected) cell down and select it.
733 *
736 *
734 * @param {integer} [index] - cell index
737 * @param {integer} [index] - cell index
735 * @return {Notebook} This notebook
738 * @return {Notebook} This notebook
736 */
739 */
737 Notebook.prototype.move_cell_down = function (index) {
740 Notebook.prototype.move_cell_down = function (index) {
738 var i = this.index_or_selected(index);
741 var i = this.index_or_selected(index);
739 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
742 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
740 var pivot = this.get_cell_element(i+1);
743 var pivot = this.get_cell_element(i+1);
741 var tomove = this.get_cell_element(i);
744 var tomove = this.get_cell_element(i);
742 if (pivot !== null && tomove !== null) {
745 if (pivot !== null && tomove !== null) {
743 tomove.detach();
746 tomove.detach();
744 pivot.after(tomove);
747 pivot.after(tomove);
745 this.select(i+1);
748 this.select(i+1);
746 var cell = this.get_selected_cell();
749 var cell = this.get_selected_cell();
747 cell.focus_cell();
750 cell.focus_cell();
748 }
751 }
749 }
752 }
750 this.set_dirty();
753 this.set_dirty();
751 return this;
754 return this;
752 };
755 };
753
756
754
757
755 // Insertion, deletion.
758 // Insertion, deletion.
756
759
757 /**
760 /**
758 * Delete a cell from the notebook without any precautions
761 * Delete a cell from the notebook without any precautions
759 * Needed to reload checkpoints and other things like that.
762 * Needed to reload checkpoints and other things like that.
760 *
763 *
761 * @param {integer} [index] - cell's numeric index
764 * @param {integer} [index] - cell's numeric index
762 * @return {Notebook} This notebook
765 * @return {Notebook} This notebook
763 */
766 */
764 Notebook.prototype._unsafe_delete_cell = function (index) {
767 Notebook.prototype._unsafe_delete_cell = function (index) {
765 var i = this.index_or_selected(index);
768 var i = this.index_or_selected(index);
766 var cell = this.get_cell(i);
769 var cell = this.get_cell(i);
767
770
768 $('#undelete_cell').addClass('disabled');
771 $('#undelete_cell').addClass('disabled');
769 if (this.is_valid_cell_index(i)) {
772 if (this.is_valid_cell_index(i)) {
770 var old_ncells = this.ncells();
773 var old_ncells = this.ncells();
771 var ce = this.get_cell_element(i);
774 var ce = this.get_cell_element(i);
772 ce.remove();
775 ce.remove();
773 this.set_dirty(true);
776 this.set_dirty(true);
774 }
777 }
775 return this;
778 return this;
776 };
779 };
777
780
778 /**
781 /**
779 * Delete a cell from the notebook.
782 * Delete a cell from the notebook.
780 *
783 *
781 * @param {integer} [index] - cell's numeric index
784 * @param {integer} [index] - cell's numeric index
782 * @return {Notebook} This notebook
785 * @return {Notebook} This notebook
783 */
786 */
784 Notebook.prototype.delete_cell = function (index) {
787 Notebook.prototype.delete_cell = function (index) {
785 var i = this.index_or_selected(index);
788 var i = this.index_or_selected(index);
786 var cell = this.get_cell(i);
789 var cell = this.get_cell(i);
787 if (!cell.is_deletable()) {
790 if (!cell.is_deletable()) {
788 return this;
791 return this;
789 }
792 }
790
793
791 this.undelete_backup = cell.toJSON();
794 this.undelete_backup = cell.toJSON();
792 $('#undelete_cell').removeClass('disabled');
795 $('#undelete_cell').removeClass('disabled');
793 if (this.is_valid_cell_index(i)) {
796 if (this.is_valid_cell_index(i)) {
794 var old_ncells = this.ncells();
797 var old_ncells = this.ncells();
795 var ce = this.get_cell_element(i);
798 var ce = this.get_cell_element(i);
796 ce.remove();
799 ce.remove();
797 if (i === 0) {
800 if (i === 0) {
798 // Always make sure we have at least one cell.
801 // Always make sure we have at least one cell.
799 if (old_ncells === 1) {
802 if (old_ncells === 1) {
800 this.insert_cell_below('code');
803 this.insert_cell_below('code');
801 }
804 }
802 this.select(0);
805 this.select(0);
803 this.undelete_index = 0;
806 this.undelete_index = 0;
804 this.undelete_below = false;
807 this.undelete_below = false;
805 } else if (i === old_ncells-1 && i !== 0) {
808 } else if (i === old_ncells-1 && i !== 0) {
806 this.select(i-1);
809 this.select(i-1);
807 this.undelete_index = i - 1;
810 this.undelete_index = i - 1;
808 this.undelete_below = true;
811 this.undelete_below = true;
809 } else {
812 } else {
810 this.select(i);
813 this.select(i);
811 this.undelete_index = i;
814 this.undelete_index = i;
812 this.undelete_below = false;
815 this.undelete_below = false;
813 }
816 }
814 this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
817 this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
815 this.set_dirty(true);
818 this.set_dirty(true);
816 }
819 }
817 return this;
820 return this;
818 };
821 };
819
822
820 /**
823 /**
821 * Restore the most recently deleted cell.
824 * Restore the most recently deleted cell.
822 */
825 */
823 Notebook.prototype.undelete_cell = function() {
826 Notebook.prototype.undelete_cell = function() {
824 if (this.undelete_backup !== null && this.undelete_index !== null) {
827 if (this.undelete_backup !== null && this.undelete_index !== null) {
825 var current_index = this.get_selected_index();
828 var current_index = this.get_selected_index();
826 if (this.undelete_index < current_index) {
829 if (this.undelete_index < current_index) {
827 current_index = current_index + 1;
830 current_index = current_index + 1;
828 }
831 }
829 if (this.undelete_index >= this.ncells()) {
832 if (this.undelete_index >= this.ncells()) {
830 this.select(this.ncells() - 1);
833 this.select(this.ncells() - 1);
831 }
834 }
832 else {
835 else {
833 this.select(this.undelete_index);
836 this.select(this.undelete_index);
834 }
837 }
835 var cell_data = this.undelete_backup;
838 var cell_data = this.undelete_backup;
836 var new_cell = null;
839 var new_cell = null;
837 if (this.undelete_below) {
840 if (this.undelete_below) {
838 new_cell = this.insert_cell_below(cell_data.cell_type);
841 new_cell = this.insert_cell_below(cell_data.cell_type);
839 } else {
842 } else {
840 new_cell = this.insert_cell_above(cell_data.cell_type);
843 new_cell = this.insert_cell_above(cell_data.cell_type);
841 }
844 }
842 new_cell.fromJSON(cell_data);
845 new_cell.fromJSON(cell_data);
843 if (this.undelete_below) {
846 if (this.undelete_below) {
844 this.select(current_index+1);
847 this.select(current_index+1);
845 } else {
848 } else {
846 this.select(current_index);
849 this.select(current_index);
847 }
850 }
848 this.undelete_backup = null;
851 this.undelete_backup = null;
849 this.undelete_index = null;
852 this.undelete_index = null;
850 }
853 }
851 $('#undelete_cell').addClass('disabled');
854 $('#undelete_cell').addClass('disabled');
852 };
855 };
853
856
854 /**
857 /**
855 * Insert a cell so that after insertion the cell is at given index.
858 * Insert a cell so that after insertion the cell is at given index.
856 *
859 *
857 * If cell type is not provided, it will default to the type of the
860 * If cell type is not provided, it will default to the type of the
858 * currently active cell.
861 * currently active cell.
859 *
862 *
860 * Similar to insert_above, but index parameter is mandatory.
863 * Similar to insert_above, but index parameter is mandatory.
861 *
864 *
862 * Index will be brought back into the accessible range [0,n].
865 * Index will be brought back into the accessible range [0,n].
863 *
866 *
864 * @param {string} [type] - in ['code','markdown', 'raw'], defaults to 'code'
867 * @param {string} [type] - in ['code','markdown', 'raw'], defaults to 'code'
865 * @param {integer} [index] - a valid index where to insert cell
868 * @param {integer} [index] - a valid index where to insert cell
866 * @return {Cell|null} created cell or null
869 * @return {Cell|null} created cell or null
867 */
870 */
868 Notebook.prototype.insert_cell_at_index = function(type, index){
871 Notebook.prototype.insert_cell_at_index = function(type, index){
869
872
870 var ncells = this.ncells();
873 var ncells = this.ncells();
871 index = Math.min(index, ncells);
874 index = Math.min(index, ncells);
872 index = Math.max(index, 0);
875 index = Math.max(index, 0);
873 var cell = null;
876 var cell = null;
874 type = type || this.class_config.get_sync('default_cell_type');
877 type = type || this.class_config.get_sync('default_cell_type');
875 if (type === 'above') {
878 if (type === 'above') {
876 if (index > 0) {
879 if (index > 0) {
877 type = this.get_cell(index-1).cell_type;
880 type = this.get_cell(index-1).cell_type;
878 } else {
881 } else {
879 type = 'code';
882 type = 'code';
880 }
883 }
881 } else if (type === 'below') {
884 } else if (type === 'below') {
882 if (index < ncells) {
885 if (index < ncells) {
883 type = this.get_cell(index).cell_type;
886 type = this.get_cell(index).cell_type;
884 } else {
887 } else {
885 type = 'code';
888 type = 'code';
886 }
889 }
887 } else if (type === 'selected') {
890 } else if (type === 'selected') {
888 type = this.get_selected_cell().cell_type;
891 type = this.get_selected_cell().cell_type;
889 }
892 }
890
893
891 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
894 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
892 var cell_options = {
895 var cell_options = {
893 events: this.events,
896 events: this.events,
894 config: this.config,
897 config: this.config,
895 keyboard_manager: this.keyboard_manager,
898 keyboard_manager: this.keyboard_manager,
896 notebook: this,
899 notebook: this,
897 tooltip: this.tooltip
900 tooltip: this.tooltip
898 };
901 };
899 switch(type) {
902 switch(type) {
900 case 'code':
903 case 'code':
901 cell = new codecell.CodeCell(this.kernel, cell_options);
904 cell = new codecell.CodeCell(this.kernel, cell_options);
902 cell.set_input_prompt();
905 cell.set_input_prompt();
903 break;
906 break;
904 case 'markdown':
907 case 'markdown':
905 cell = new textcell.MarkdownCell(cell_options);
908 cell = new textcell.MarkdownCell(cell_options);
906 break;
909 break;
907 case 'raw':
910 case 'raw':
908 cell = new textcell.RawCell(cell_options);
911 cell = new textcell.RawCell(cell_options);
909 break;
912 break;
910 default:
913 default:
911 console.log("Unrecognized cell type: ", type, cellmod);
914 console.log("Unrecognized cell type: ", type, cellmod);
912 cell = new cellmod.UnrecognizedCell(cell_options);
915 cell = new cellmod.UnrecognizedCell(cell_options);
913 }
916 }
914
917
915 if(this._insert_element_at_index(cell.element,index)) {
918 if(this._insert_element_at_index(cell.element,index)) {
916 cell.render();
919 cell.render();
917 this.events.trigger('create.Cell', {'cell': cell, 'index': index});
920 this.events.trigger('create.Cell', {'cell': cell, 'index': index});
918 cell.refresh();
921 cell.refresh();
919 // We used to select the cell after we refresh it, but there
922 // We used to select the cell after we refresh it, but there
920 // are now cases were this method is called where select is
923 // are now cases were this method is called where select is
921 // not appropriate. The selection logic should be handled by the
924 // not appropriate. The selection logic should be handled by the
922 // caller of the the top level insert_cell methods.
925 // caller of the the top level insert_cell methods.
923 this.set_dirty(true);
926 this.set_dirty(true);
924 }
927 }
925 }
928 }
926 return cell;
929 return cell;
927
930
928 };
931 };
929
932
930 /**
933 /**
931 * Insert an element at given cell index.
934 * Insert an element at given cell index.
932 *
935 *
933 * @param {HTMLElement} element - a cell element
936 * @param {HTMLElement} element - a cell element
934 * @param {integer} [index] - a valid index where to inser cell
937 * @param {integer} [index] - a valid index where to inser cell
935 * @returns {boolean} success
938 * @returns {boolean} success
936 */
939 */
937 Notebook.prototype._insert_element_at_index = function(element, index){
940 Notebook.prototype._insert_element_at_index = function(element, index){
938 if (element === undefined){
941 if (element === undefined){
939 return false;
942 return false;
940 }
943 }
941
944
942 var ncells = this.ncells();
945 var ncells = this.ncells();
943
946
944 if (ncells === 0) {
947 if (ncells === 0) {
945 // special case append if empty
948 // special case append if empty
946 this.container.append(element);
949 this.container.append(element);
947 } else if ( ncells === index ) {
950 } else if ( ncells === index ) {
948 // special case append it the end, but not empty
951 // special case append it the end, but not empty
949 this.get_cell_element(index-1).after(element);
952 this.get_cell_element(index-1).after(element);
950 } else if (this.is_valid_cell_index(index)) {
953 } else if (this.is_valid_cell_index(index)) {
951 // otherwise always somewhere to append to
954 // otherwise always somewhere to append to
952 this.get_cell_element(index).before(element);
955 this.get_cell_element(index).before(element);
953 } else {
956 } else {
954 return false;
957 return false;
955 }
958 }
956
959
957 if (this.undelete_index !== null && index <= this.undelete_index) {
960 if (this.undelete_index !== null && index <= this.undelete_index) {
958 this.undelete_index = this.undelete_index + 1;
961 this.undelete_index = this.undelete_index + 1;
959 this.set_dirty(true);
962 this.set_dirty(true);
960 }
963 }
961 return true;
964 return true;
962 };
965 };
963
966
964 /**
967 /**
965 * Insert a cell of given type above given index, or at top
968 * Insert a cell of given type above given index, or at top
966 * of notebook if index smaller than 0.
969 * of notebook if index smaller than 0.
967 *
970 *
968 * @param {string} [type] - cell type
971 * @param {string} [type] - cell type
969 * @param {integer} [index] - defaults to the currently selected cell
972 * @param {integer} [index] - defaults to the currently selected cell
970 * @return {Cell|null} handle to created cell or null
973 * @return {Cell|null} handle to created cell or null
971 */
974 */
972 Notebook.prototype.insert_cell_above = function (type, index) {
975 Notebook.prototype.insert_cell_above = function (type, index) {
973 index = this.index_or_selected(index);
976 index = this.index_or_selected(index);
974 return this.insert_cell_at_index(type, index);
977 return this.insert_cell_at_index(type, index);
975 };
978 };
976
979
977 /**
980 /**
978 * Insert a cell of given type below given index, or at bottom
981 * Insert a cell of given type below given index, or at bottom
979 * of notebook if index greater than number of cells
982 * of notebook if index greater than number of cells
980 *
983 *
981 * @param {string} [type] - cell type
984 * @param {string} [type] - cell type
982 * @param {integer} [index] - defaults to the currently selected cell
985 * @param {integer} [index] - defaults to the currently selected cell
983 * @return {Cell|null} handle to created cell or null
986 * @return {Cell|null} handle to created cell or null
984 */
987 */
985 Notebook.prototype.insert_cell_below = function (type, index) {
988 Notebook.prototype.insert_cell_below = function (type, index) {
986 index = this.index_or_selected(index);
989 index = this.index_or_selected(index);
987 return this.insert_cell_at_index(type, index+1);
990 return this.insert_cell_at_index(type, index+1);
988 };
991 };
989
992
990
993
991 /**
994 /**
992 * Insert cell at end of notebook
995 * Insert cell at end of notebook
993 *
996 *
994 * @param {string} type - cell type
997 * @param {string} type - cell type
995 * @return {Cell|null} handle to created cell or null
998 * @return {Cell|null} handle to created cell or null
996 */
999 */
997 Notebook.prototype.insert_cell_at_bottom = function (type){
1000 Notebook.prototype.insert_cell_at_bottom = function (type){
998 var len = this.ncells();
1001 var len = this.ncells();
999 return this.insert_cell_below(type,len-1);
1002 return this.insert_cell_below(type,len-1);
1000 };
1003 };
1001
1004
1002 /**
1005 /**
1003 * Turn a cell into a code cell.
1006 * Turn a cell into a code cell.
1004 *
1007 *
1005 * @param {integer} [index] - cell index
1008 * @param {integer} [index] - cell index
1006 */
1009 */
1007 Notebook.prototype.to_code = function (index) {
1010 Notebook.prototype.to_code = function (index) {
1008 var i = this.index_or_selected(index);
1011 var i = this.index_or_selected(index);
1009 if (this.is_valid_cell_index(i)) {
1012 if (this.is_valid_cell_index(i)) {
1010 var source_cell = this.get_cell(i);
1013 var source_cell = this.get_cell(i);
1011 if (!(source_cell instanceof codecell.CodeCell)) {
1014 if (!(source_cell instanceof codecell.CodeCell)) {
1012 var target_cell = this.insert_cell_below('code',i);
1015 var target_cell = this.insert_cell_below('code',i);
1013 var text = source_cell.get_text();
1016 var text = source_cell.get_text();
1014 if (text === source_cell.placeholder) {
1017 if (text === source_cell.placeholder) {
1015 text = '';
1018 text = '';
1016 }
1019 }
1017 //metadata
1020 //metadata
1018 target_cell.metadata = source_cell.metadata;
1021 target_cell.metadata = source_cell.metadata;
1019
1022
1020 target_cell.set_text(text);
1023 target_cell.set_text(text);
1021 // make this value the starting point, so that we can only undo
1024 // make this value the starting point, so that we can only undo
1022 // to this state, instead of a blank cell
1025 // to this state, instead of a blank cell
1023 target_cell.code_mirror.clearHistory();
1026 target_cell.code_mirror.clearHistory();
1024 source_cell.element.remove();
1027 source_cell.element.remove();
1025 this.select(i);
1028 this.select(i);
1026 var cursor = source_cell.code_mirror.getCursor();
1029 var cursor = source_cell.code_mirror.getCursor();
1027 target_cell.code_mirror.setCursor(cursor);
1030 target_cell.code_mirror.setCursor(cursor);
1028 this.set_dirty(true);
1031 this.set_dirty(true);
1029 }
1032 }
1030 }
1033 }
1031 };
1034 };
1032
1035
1033 /**
1036 /**
1034 * Turn a cell into a Markdown cell.
1037 * Turn a cell into a Markdown cell.
1035 *
1038 *
1036 * @param {integer} [index] - cell index
1039 * @param {integer} [index] - cell index
1037 */
1040 */
1038 Notebook.prototype.to_markdown = function (index) {
1041 Notebook.prototype.to_markdown = function (index) {
1039 var i = this.index_or_selected(index);
1042 var i = this.index_or_selected(index);
1040 if (this.is_valid_cell_index(i)) {
1043 if (this.is_valid_cell_index(i)) {
1041 var source_cell = this.get_cell(i);
1044 var source_cell = this.get_cell(i);
1042
1045
1043 if (!(source_cell instanceof textcell.MarkdownCell)) {
1046 if (!(source_cell instanceof textcell.MarkdownCell)) {
1044 var target_cell = this.insert_cell_below('markdown',i);
1047 var target_cell = this.insert_cell_below('markdown',i);
1045 var text = source_cell.get_text();
1048 var text = source_cell.get_text();
1046
1049
1047 if (text === source_cell.placeholder) {
1050 if (text === source_cell.placeholder) {
1048 text = '';
1051 text = '';
1049 }
1052 }
1050 // metadata
1053 // metadata
1051 target_cell.metadata = source_cell.metadata;
1054 target_cell.metadata = source_cell.metadata;
1052 // We must show the editor before setting its contents
1055 // We must show the editor before setting its contents
1053 target_cell.unrender();
1056 target_cell.unrender();
1054 target_cell.set_text(text);
1057 target_cell.set_text(text);
1055 // make this value the starting point, so that we can only undo
1058 // make this value the starting point, so that we can only undo
1056 // to this state, instead of a blank cell
1059 // to this state, instead of a blank cell
1057 target_cell.code_mirror.clearHistory();
1060 target_cell.code_mirror.clearHistory();
1058 source_cell.element.remove();
1061 source_cell.element.remove();
1059 this.select(i);
1062 this.select(i);
1060 if ((source_cell instanceof textcell.TextCell) && source_cell.rendered) {
1063 if ((source_cell instanceof textcell.TextCell) && source_cell.rendered) {
1061 target_cell.render();
1064 target_cell.render();
1062 }
1065 }
1063 var cursor = source_cell.code_mirror.getCursor();
1066 var cursor = source_cell.code_mirror.getCursor();
1064 target_cell.code_mirror.setCursor(cursor);
1067 target_cell.code_mirror.setCursor(cursor);
1065 this.set_dirty(true);
1068 this.set_dirty(true);
1066 }
1069 }
1067 }
1070 }
1068 };
1071 };
1069
1072
1070 /**
1073 /**
1071 * Turn a cell into a raw text cell.
1074 * Turn a cell into a raw text cell.
1072 *
1075 *
1073 * @param {integer} [index] - cell index
1076 * @param {integer} [index] - cell index
1074 */
1077 */
1075 Notebook.prototype.to_raw = function (index) {
1078 Notebook.prototype.to_raw = function (index) {
1076 var i = this.index_or_selected(index);
1079 var i = this.index_or_selected(index);
1077 if (this.is_valid_cell_index(i)) {
1080 if (this.is_valid_cell_index(i)) {
1078 var target_cell = null;
1081 var target_cell = null;
1079 var source_cell = this.get_cell(i);
1082 var source_cell = this.get_cell(i);
1080
1083
1081 if (!(source_cell instanceof textcell.RawCell)) {
1084 if (!(source_cell instanceof textcell.RawCell)) {
1082 target_cell = this.insert_cell_below('raw',i);
1085 target_cell = this.insert_cell_below('raw',i);
1083 var text = source_cell.get_text();
1086 var text = source_cell.get_text();
1084 if (text === source_cell.placeholder) {
1087 if (text === source_cell.placeholder) {
1085 text = '';
1088 text = '';
1086 }
1089 }
1087 //metadata
1090 //metadata
1088 target_cell.metadata = source_cell.metadata;
1091 target_cell.metadata = source_cell.metadata;
1089 // We must show the editor before setting its contents
1092 // We must show the editor before setting its contents
1090 target_cell.unrender();
1093 target_cell.unrender();
1091 target_cell.set_text(text);
1094 target_cell.set_text(text);
1092 // make this value the starting point, so that we can only undo
1095 // make this value the starting point, so that we can only undo
1093 // to this state, instead of a blank cell
1096 // to this state, instead of a blank cell
1094 target_cell.code_mirror.clearHistory();
1097 target_cell.code_mirror.clearHistory();
1095 source_cell.element.remove();
1098 source_cell.element.remove();
1096 this.select(i);
1099 this.select(i);
1097 var cursor = source_cell.code_mirror.getCursor();
1100 var cursor = source_cell.code_mirror.getCursor();
1098 target_cell.code_mirror.setCursor(cursor);
1101 target_cell.code_mirror.setCursor(cursor);
1099 this.set_dirty(true);
1102 this.set_dirty(true);
1100 }
1103 }
1101 }
1104 }
1102 };
1105 };
1103
1106
1104 /**
1107 /**
1105 * Warn about heading cell support removal.
1108 * Warn about heading cell support removal.
1106 */
1109 */
1107 Notebook.prototype._warn_heading = function () {
1110 Notebook.prototype._warn_heading = function () {
1108 dialog.modal({
1111 dialog.modal({
1109 notebook: this,
1112 notebook: this,
1110 keyboard_manager: this.keyboard_manager,
1113 keyboard_manager: this.keyboard_manager,
1111 title : "Use markdown headings",
1114 title : "Use markdown headings",
1112 body : $("<p/>").text(
1115 body : $("<p/>").text(
1113 'IPython no longer uses special heading cells. ' +
1116 'IPython no longer uses special heading cells. ' +
1114 'Instead, write your headings in Markdown cells using # characters:'
1117 'Instead, write your headings in Markdown cells using # characters:'
1115 ).append($('<pre/>').text(
1118 ).append($('<pre/>').text(
1116 '## This is a level 2 heading'
1119 '## This is a level 2 heading'
1117 )),
1120 )),
1118 buttons : {
1121 buttons : {
1119 "OK" : {}
1122 "OK" : {}
1120 }
1123 }
1121 });
1124 });
1122 };
1125 };
1123
1126
1124 /**
1127 /**
1125 * Turn a cell into a heading containing markdown cell.
1128 * Turn a cell into a heading containing markdown cell.
1126 *
1129 *
1127 * @param {integer} [index] - cell index
1130 * @param {integer} [index] - cell index
1128 * @param {integer} [level] - heading level (e.g., 1 for h1)
1131 * @param {integer} [level] - heading level (e.g., 1 for h1)
1129 */
1132 */
1130 Notebook.prototype.to_heading = function (index, level) {
1133 Notebook.prototype.to_heading = function (index, level) {
1131 this.to_markdown(index);
1134 this.to_markdown(index);
1132 level = level || 1;
1135 level = level || 1;
1133 var i = this.index_or_selected(index);
1136 var i = this.index_or_selected(index);
1134 if (this.is_valid_cell_index(i)) {
1137 if (this.is_valid_cell_index(i)) {
1135 var cell = this.get_cell(i);
1138 var cell = this.get_cell(i);
1136 cell.set_heading_level(level);
1139 cell.set_heading_level(level);
1137 this.set_dirty(true);
1140 this.set_dirty(true);
1138 }
1141 }
1139 };
1142 };
1140
1143
1141
1144
1142 // Cut/Copy/Paste
1145 // Cut/Copy/Paste
1143
1146
1144 /**
1147 /**
1145 * Enable the UI elements for pasting cells.
1148 * Enable the UI elements for pasting cells.
1146 */
1149 */
1147 Notebook.prototype.enable_paste = function () {
1150 Notebook.prototype.enable_paste = function () {
1148 var that = this;
1151 var that = this;
1149 if (!this.paste_enabled) {
1152 if (!this.paste_enabled) {
1150 $('#paste_cell_replace').removeClass('disabled')
1153 $('#paste_cell_replace').removeClass('disabled')
1151 .on('click', function () {that.paste_cell_replace();});
1154 .on('click', function () {that.paste_cell_replace();});
1152 $('#paste_cell_above').removeClass('disabled')
1155 $('#paste_cell_above').removeClass('disabled')
1153 .on('click', function () {that.paste_cell_above();});
1156 .on('click', function () {that.paste_cell_above();});
1154 $('#paste_cell_below').removeClass('disabled')
1157 $('#paste_cell_below').removeClass('disabled')
1155 .on('click', function () {that.paste_cell_below();});
1158 .on('click', function () {that.paste_cell_below();});
1156 this.paste_enabled = true;
1159 this.paste_enabled = true;
1157 }
1160 }
1158 };
1161 };
1159
1162
1160 /**
1163 /**
1161 * Disable the UI elements for pasting cells.
1164 * Disable the UI elements for pasting cells.
1162 */
1165 */
1163 Notebook.prototype.disable_paste = function () {
1166 Notebook.prototype.disable_paste = function () {
1164 if (this.paste_enabled) {
1167 if (this.paste_enabled) {
1165 $('#paste_cell_replace').addClass('disabled').off('click');
1168 $('#paste_cell_replace').addClass('disabled').off('click');
1166 $('#paste_cell_above').addClass('disabled').off('click');
1169 $('#paste_cell_above').addClass('disabled').off('click');
1167 $('#paste_cell_below').addClass('disabled').off('click');
1170 $('#paste_cell_below').addClass('disabled').off('click');
1168 this.paste_enabled = false;
1171 this.paste_enabled = false;
1169 }
1172 }
1170 };
1173 };
1171
1174
1172 /**
1175 /**
1173 * Cut a cell.
1176 * Cut a cell.
1174 */
1177 */
1175 Notebook.prototype.cut_cell = function () {
1178 Notebook.prototype.cut_cell = function () {
1176 this.copy_cell();
1179 this.copy_cell();
1177 this.delete_cell();
1180 this.delete_cell();
1178 };
1181 };
1179
1182
1180 /**
1183 /**
1181 * Copy a cell.
1184 * Copy a cell.
1182 */
1185 */
1183 Notebook.prototype.copy_cell = function () {
1186 Notebook.prototype.copy_cell = function () {
1184 var cell = this.get_selected_cell();
1187 var cell = this.get_selected_cell();
1185 this.clipboard = cell.toJSON();
1188 this.clipboard = cell.toJSON();
1186 // remove undeletable status from the copied cell
1189 // remove undeletable status from the copied cell
1187 if (this.clipboard.metadata.deletable !== undefined) {
1190 if (this.clipboard.metadata.deletable !== undefined) {
1188 delete this.clipboard.metadata.deletable;
1191 delete this.clipboard.metadata.deletable;
1189 }
1192 }
1190 this.enable_paste();
1193 this.enable_paste();
1191 };
1194 };
1192
1195
1193 /**
1196 /**
1194 * Replace the selected cell with the cell in the clipboard.
1197 * Replace the selected cell with the cell in the clipboard.
1195 */
1198 */
1196 Notebook.prototype.paste_cell_replace = function () {
1199 Notebook.prototype.paste_cell_replace = function () {
1197 if (this.clipboard !== null && this.paste_enabled) {
1200 if (this.clipboard !== null && this.paste_enabled) {
1198 var cell_data = this.clipboard;
1201 var cell_data = this.clipboard;
1199 var new_cell = this.insert_cell_above(cell_data.cell_type);
1202 var new_cell = this.insert_cell_above(cell_data.cell_type);
1200 new_cell.fromJSON(cell_data);
1203 new_cell.fromJSON(cell_data);
1201 var old_cell = this.get_next_cell(new_cell);
1204 var old_cell = this.get_next_cell(new_cell);
1202 this.delete_cell(this.find_cell_index(old_cell));
1205 this.delete_cell(this.find_cell_index(old_cell));
1203 this.select(this.find_cell_index(new_cell));
1206 this.select(this.find_cell_index(new_cell));
1204 }
1207 }
1205 };
1208 };
1206
1209
1207 /**
1210 /**
1208 * Paste a cell from the clipboard above the selected cell.
1211 * Paste a cell from the clipboard above the selected cell.
1209 */
1212 */
1210 Notebook.prototype.paste_cell_above = function () {
1213 Notebook.prototype.paste_cell_above = function () {
1211 if (this.clipboard !== null && this.paste_enabled) {
1214 if (this.clipboard !== null && this.paste_enabled) {
1212 var cell_data = this.clipboard;
1215 var cell_data = this.clipboard;
1213 var new_cell = this.insert_cell_above(cell_data.cell_type);
1216 var new_cell = this.insert_cell_above(cell_data.cell_type);
1214 new_cell.fromJSON(cell_data);
1217 new_cell.fromJSON(cell_data);
1215 new_cell.focus_cell();
1218 new_cell.focus_cell();
1216 }
1219 }
1217 };
1220 };
1218
1221
1219 /**
1222 /**
1220 * Paste a cell from the clipboard below the selected cell.
1223 * Paste a cell from the clipboard below the selected cell.
1221 */
1224 */
1222 Notebook.prototype.paste_cell_below = function () {
1225 Notebook.prototype.paste_cell_below = function () {
1223 if (this.clipboard !== null && this.paste_enabled) {
1226 if (this.clipboard !== null && this.paste_enabled) {
1224 var cell_data = this.clipboard;
1227 var cell_data = this.clipboard;
1225 var new_cell = this.insert_cell_below(cell_data.cell_type);
1228 var new_cell = this.insert_cell_below(cell_data.cell_type);
1226 new_cell.fromJSON(cell_data);
1229 new_cell.fromJSON(cell_data);
1227 new_cell.focus_cell();
1230 new_cell.focus_cell();
1228 }
1231 }
1229 };
1232 };
1230
1233
1231 // Split/merge
1234 // Split/merge
1232
1235
1233 /**
1236 /**
1234 * Split the selected cell into two cells.
1237 * Split the selected cell into two cells.
1235 */
1238 */
1236 Notebook.prototype.split_cell = function () {
1239 Notebook.prototype.split_cell = function () {
1237 var cell = this.get_selected_cell();
1240 var cell = this.get_selected_cell();
1238 if (cell.is_splittable()) {
1241 if (cell.is_splittable()) {
1239 var texta = cell.get_pre_cursor();
1242 var texta = cell.get_pre_cursor();
1240 var textb = cell.get_post_cursor();
1243 var textb = cell.get_post_cursor();
1241 cell.set_text(textb);
1244 cell.set_text(textb);
1242 var new_cell = this.insert_cell_above(cell.cell_type);
1245 var new_cell = this.insert_cell_above(cell.cell_type);
1243 // Unrender the new cell so we can call set_text.
1246 // Unrender the new cell so we can call set_text.
1244 new_cell.unrender();
1247 new_cell.unrender();
1245 new_cell.set_text(texta);
1248 new_cell.set_text(texta);
1246 }
1249 }
1247 };
1250 };
1248
1251
1249 /**
1252 /**
1250 * Merge the selected cell into the cell above it.
1253 * Merge the selected cell into the cell above it.
1251 */
1254 */
1252 Notebook.prototype.merge_cell_above = function () {
1255 Notebook.prototype.merge_cell_above = function () {
1253 var index = this.get_selected_index();
1256 var index = this.get_selected_index();
1254 var cell = this.get_cell(index);
1257 var cell = this.get_cell(index);
1255 var render = cell.rendered;
1258 var render = cell.rendered;
1256 if (!cell.is_mergeable()) {
1259 if (!cell.is_mergeable()) {
1257 return;
1260 return;
1258 }
1261 }
1259 if (index > 0) {
1262 if (index > 0) {
1260 var upper_cell = this.get_cell(index-1);
1263 var upper_cell = this.get_cell(index-1);
1261 if (!upper_cell.is_mergeable()) {
1264 if (!upper_cell.is_mergeable()) {
1262 return;
1265 return;
1263 }
1266 }
1264 var upper_text = upper_cell.get_text();
1267 var upper_text = upper_cell.get_text();
1265 var text = cell.get_text();
1268 var text = cell.get_text();
1266 if (cell instanceof codecell.CodeCell) {
1269 if (cell instanceof codecell.CodeCell) {
1267 cell.set_text(upper_text+'\n'+text);
1270 cell.set_text(upper_text+'\n'+text);
1268 } else {
1271 } else {
1269 cell.unrender(); // Must unrender before we set_text.
1272 cell.unrender(); // Must unrender before we set_text.
1270 cell.set_text(upper_text+'\n\n'+text);
1273 cell.set_text(upper_text+'\n\n'+text);
1271 if (render) {
1274 if (render) {
1272 // The rendered state of the final cell should match
1275 // The rendered state of the final cell should match
1273 // that of the original selected cell;
1276 // that of the original selected cell;
1274 cell.render();
1277 cell.render();
1275 }
1278 }
1276 }
1279 }
1277 this.delete_cell(index-1);
1280 this.delete_cell(index-1);
1278 this.select(this.find_cell_index(cell));
1281 this.select(this.find_cell_index(cell));
1279 }
1282 }
1280 };
1283 };
1281
1284
1282 /**
1285 /**
1283 * Merge the selected cell into the cell below it.
1286 * Merge the selected cell into the cell below it.
1284 */
1287 */
1285 Notebook.prototype.merge_cell_below = function () {
1288 Notebook.prototype.merge_cell_below = function () {
1286 var index = this.get_selected_index();
1289 var index = this.get_selected_index();
1287 var cell = this.get_cell(index);
1290 var cell = this.get_cell(index);
1288 var render = cell.rendered;
1291 var render = cell.rendered;
1289 if (!cell.is_mergeable()) {
1292 if (!cell.is_mergeable()) {
1290 return;
1293 return;
1291 }
1294 }
1292 if (index < this.ncells()-1) {
1295 if (index < this.ncells()-1) {
1293 var lower_cell = this.get_cell(index+1);
1296 var lower_cell = this.get_cell(index+1);
1294 if (!lower_cell.is_mergeable()) {
1297 if (!lower_cell.is_mergeable()) {
1295 return;
1298 return;
1296 }
1299 }
1297 var lower_text = lower_cell.get_text();
1300 var lower_text = lower_cell.get_text();
1298 var text = cell.get_text();
1301 var text = cell.get_text();
1299 if (cell instanceof codecell.CodeCell) {
1302 if (cell instanceof codecell.CodeCell) {
1300 cell.set_text(text+'\n'+lower_text);
1303 cell.set_text(text+'\n'+lower_text);
1301 } else {
1304 } else {
1302 cell.unrender(); // Must unrender before we set_text.
1305 cell.unrender(); // Must unrender before we set_text.
1303 cell.set_text(text+'\n\n'+lower_text);
1306 cell.set_text(text+'\n\n'+lower_text);
1304 if (render) {
1307 if (render) {
1305 // The rendered state of the final cell should match
1308 // The rendered state of the final cell should match
1306 // that of the original selected cell;
1309 // that of the original selected cell;
1307 cell.render();
1310 cell.render();
1308 }
1311 }
1309 }
1312 }
1310 this.delete_cell(index+1);
1313 this.delete_cell(index+1);
1311 this.select(this.find_cell_index(cell));
1314 this.select(this.find_cell_index(cell));
1312 }
1315 }
1313 };
1316 };
1314
1317
1315
1318
1316 // Cell collapsing and output clearing
1319 // Cell collapsing and output clearing
1317
1320
1318 /**
1321 /**
1319 * Hide a cell's output.
1322 * Hide a cell's output.
1320 *
1323 *
1321 * @param {integer} index - cell index
1324 * @param {integer} index - cell index
1322 */
1325 */
1323 Notebook.prototype.collapse_output = function (index) {
1326 Notebook.prototype.collapse_output = function (index) {
1324 var i = this.index_or_selected(index);
1327 var i = this.index_or_selected(index);
1325 var cell = this.get_cell(i);
1328 var cell = this.get_cell(i);
1326 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1329 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1327 cell.collapse_output();
1330 cell.collapse_output();
1328 this.set_dirty(true);
1331 this.set_dirty(true);
1329 }
1332 }
1330 };
1333 };
1331
1334
1332 /**
1335 /**
1333 * Hide each code cell's output area.
1336 * Hide each code cell's output area.
1334 */
1337 */
1335 Notebook.prototype.collapse_all_output = function () {
1338 Notebook.prototype.collapse_all_output = function () {
1336 this.get_cells().map(function (cell, i) {
1339 this.get_cells().map(function (cell, i) {
1337 if (cell instanceof codecell.CodeCell) {
1340 if (cell instanceof codecell.CodeCell) {
1338 cell.collapse_output();
1341 cell.collapse_output();
1339 }
1342 }
1340 });
1343 });
1341 // this should not be set if the `collapse` key is removed from nbformat
1344 // this should not be set if the `collapse` key is removed from nbformat
1342 this.set_dirty(true);
1345 this.set_dirty(true);
1343 };
1346 };
1344
1347
1345 /**
1348 /**
1346 * Show a cell's output.
1349 * Show a cell's output.
1347 *
1350 *
1348 * @param {integer} index - cell index
1351 * @param {integer} index - cell index
1349 */
1352 */
1350 Notebook.prototype.expand_output = function (index) {
1353 Notebook.prototype.expand_output = function (index) {
1351 var i = this.index_or_selected(index);
1354 var i = this.index_or_selected(index);
1352 var cell = this.get_cell(i);
1355 var cell = this.get_cell(i);
1353 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1356 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1354 cell.expand_output();
1357 cell.expand_output();
1355 this.set_dirty(true);
1358 this.set_dirty(true);
1356 }
1359 }
1357 };
1360 };
1358
1361
1359 /**
1362 /**
1360 * Expand each code cell's output area, and remove scrollbars.
1363 * Expand each code cell's output area, and remove scrollbars.
1361 */
1364 */
1362 Notebook.prototype.expand_all_output = function () {
1365 Notebook.prototype.expand_all_output = function () {
1363 this.get_cells().map(function (cell, i) {
1366 this.get_cells().map(function (cell, i) {
1364 if (cell instanceof codecell.CodeCell) {
1367 if (cell instanceof codecell.CodeCell) {
1365 cell.expand_output();
1368 cell.expand_output();
1366 }
1369 }
1367 });
1370 });
1368 // this should not be set if the `collapse` key is removed from nbformat
1371 // this should not be set if the `collapse` key is removed from nbformat
1369 this.set_dirty(true);
1372 this.set_dirty(true);
1370 };
1373 };
1371
1374
1372 /**
1375 /**
1373 * Clear the selected CodeCell's output area.
1376 * Clear the selected CodeCell's output area.
1374 *
1377 *
1375 * @param {integer} index - cell index
1378 * @param {integer} index - cell index
1376 */
1379 */
1377 Notebook.prototype.clear_output = function (index) {
1380 Notebook.prototype.clear_output = function (index) {
1378 var i = this.index_or_selected(index);
1381 var i = this.index_or_selected(index);
1379 var cell = this.get_cell(i);
1382 var cell = this.get_cell(i);
1380 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1383 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1381 cell.clear_output();
1384 cell.clear_output();
1382 this.set_dirty(true);
1385 this.set_dirty(true);
1383 }
1386 }
1384 };
1387 };
1385
1388
1386 /**
1389 /**
1387 * Clear each code cell's output area.
1390 * Clear each code cell's output area.
1388 */
1391 */
1389 Notebook.prototype.clear_all_output = function () {
1392 Notebook.prototype.clear_all_output = function () {
1390 this.get_cells().map(function (cell, i) {
1393 this.get_cells().map(function (cell, i) {
1391 if (cell instanceof codecell.CodeCell) {
1394 if (cell instanceof codecell.CodeCell) {
1392 cell.clear_output();
1395 cell.clear_output();
1393 }
1396 }
1394 });
1397 });
1395 this.set_dirty(true);
1398 this.set_dirty(true);
1396 };
1399 };
1397
1400
1398 /**
1401 /**
1399 * Scroll the selected CodeCell's output area.
1402 * Scroll the selected CodeCell's output area.
1400 *
1403 *
1401 * @param {integer} index - cell index
1404 * @param {integer} index - cell index
1402 */
1405 */
1403 Notebook.prototype.scroll_output = function (index) {
1406 Notebook.prototype.scroll_output = function (index) {
1404 var i = this.index_or_selected(index);
1407 var i = this.index_or_selected(index);
1405 var cell = this.get_cell(i);
1408 var cell = this.get_cell(i);
1406 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1409 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1407 cell.scroll_output();
1410 cell.scroll_output();
1408 this.set_dirty(true);
1411 this.set_dirty(true);
1409 }
1412 }
1410 };
1413 };
1411
1414
1412 /**
1415 /**
1413 * Expand each code cell's output area and add a scrollbar for long output.
1416 * Expand each code cell's output area and add a scrollbar for long output.
1414 */
1417 */
1415 Notebook.prototype.scroll_all_output = function () {
1418 Notebook.prototype.scroll_all_output = function () {
1416 this.get_cells().map(function (cell, i) {
1419 this.get_cells().map(function (cell, i) {
1417 if (cell instanceof codecell.CodeCell) {
1420 if (cell instanceof codecell.CodeCell) {
1418 cell.scroll_output();
1421 cell.scroll_output();
1419 }
1422 }
1420 });
1423 });
1421 // this should not be set if the `collapse` key is removed from nbformat
1424 // this should not be set if the `collapse` key is removed from nbformat
1422 this.set_dirty(true);
1425 this.set_dirty(true);
1423 };
1426 };
1424
1427
1425 /**
1428 /**
1426 * Toggle whether a cell's output is collapsed or expanded.
1429 * Toggle whether a cell's output is collapsed or expanded.
1427 *
1430 *
1428 * @param {integer} index - cell index
1431 * @param {integer} index - cell index
1429 */
1432 */
1430 Notebook.prototype.toggle_output = function (index) {
1433 Notebook.prototype.toggle_output = function (index) {
1431 var i = this.index_or_selected(index);
1434 var i = this.index_or_selected(index);
1432 var cell = this.get_cell(i);
1435 var cell = this.get_cell(i);
1433 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1436 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1434 cell.toggle_output();
1437 cell.toggle_output();
1435 this.set_dirty(true);
1438 this.set_dirty(true);
1436 }
1439 }
1437 };
1440 };
1438
1441
1439 /**
1442 /**
1440 * Toggle the output of all cells.
1443 * Toggle the output of all cells.
1441 */
1444 */
1442 Notebook.prototype.toggle_all_output = function () {
1445 Notebook.prototype.toggle_all_output = function () {
1443 this.get_cells().map(function (cell, i) {
1446 this.get_cells().map(function (cell, i) {
1444 if (cell instanceof codecell.CodeCell) {
1447 if (cell instanceof codecell.CodeCell) {
1445 cell.toggle_output();
1448 cell.toggle_output();
1446 }
1449 }
1447 });
1450 });
1448 // this should not be set if the `collapse` key is removed from nbformat
1451 // this should not be set if the `collapse` key is removed from nbformat
1449 this.set_dirty(true);
1452 this.set_dirty(true);
1450 };
1453 };
1451
1454
1452 /**
1455 /**
1453 * Toggle a scrollbar for long cell outputs.
1456 * Toggle a scrollbar for long cell outputs.
1454 *
1457 *
1455 * @param {integer} index - cell index
1458 * @param {integer} index - cell index
1456 */
1459 */
1457 Notebook.prototype.toggle_output_scroll = function (index) {
1460 Notebook.prototype.toggle_output_scroll = function (index) {
1458 var i = this.index_or_selected(index);
1461 var i = this.index_or_selected(index);
1459 var cell = this.get_cell(i);
1462 var cell = this.get_cell(i);
1460 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1463 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1461 cell.toggle_output_scroll();
1464 cell.toggle_output_scroll();
1462 this.set_dirty(true);
1465 this.set_dirty(true);
1463 }
1466 }
1464 };
1467 };
1465
1468
1466 /**
1469 /**
1467 * Toggle the scrolling of long output on all cells.
1470 * Toggle the scrolling of long output on all cells.
1468 */
1471 */
1469 Notebook.prototype.toggle_all_output_scroll = function () {
1472 Notebook.prototype.toggle_all_output_scroll = function () {
1470 this.get_cells().map(function (cell, i) {
1473 this.get_cells().map(function (cell, i) {
1471 if (cell instanceof codecell.CodeCell) {
1474 if (cell instanceof codecell.CodeCell) {
1472 cell.toggle_output_scroll();
1475 cell.toggle_output_scroll();
1473 }
1476 }
1474 });
1477 });
1475 // this should not be set if the `collapse` key is removed from nbformat
1478 // this should not be set if the `collapse` key is removed from nbformat
1476 this.set_dirty(true);
1479 this.set_dirty(true);
1477 };
1480 };
1478
1481
1479 // Other cell functions: line numbers, ...
1482 // Other cell functions: line numbers, ...
1480
1483
1481 /**
1484 /**
1482 * Toggle line numbers in the selected cell's input area.
1485 * Toggle line numbers in the selected cell's input area.
1483 */
1486 */
1484 Notebook.prototype.cell_toggle_line_numbers = function() {
1487 Notebook.prototype.cell_toggle_line_numbers = function() {
1485 this.get_selected_cell().toggle_line_numbers();
1488 this.get_selected_cell().toggle_line_numbers();
1486 };
1489 };
1487
1490
1488 /**
1491 /**
1489 * Set the codemirror mode for all code cells, including the default for
1492 * Set the codemirror mode for all code cells, including the default for
1490 * new code cells.
1493 * new code cells.
1491 */
1494 */
1492 Notebook.prototype.set_codemirror_mode = function(newmode){
1495 Notebook.prototype.set_codemirror_mode = function(newmode){
1493 if (newmode === this.codemirror_mode) {
1496 if (newmode === this.codemirror_mode) {
1494 return;
1497 return;
1495 }
1498 }
1496 this.codemirror_mode = newmode;
1499 this.codemirror_mode = newmode;
1497 codecell.CodeCell.options_default.cm_config.mode = newmode;
1500 codecell.CodeCell.options_default.cm_config.mode = newmode;
1498
1501
1499 var that = this;
1502 var that = this;
1500 utils.requireCodeMirrorMode(newmode, function (spec) {
1503 utils.requireCodeMirrorMode(newmode, function (spec) {
1501 that.get_cells().map(function(cell, i) {
1504 that.get_cells().map(function(cell, i) {
1502 if (cell.cell_type === 'code'){
1505 if (cell.cell_type === 'code'){
1503 cell.code_mirror.setOption('mode', spec);
1506 cell.code_mirror.setOption('mode', spec);
1504 // This is currently redundant, because cm_config ends up as
1507 // This is currently redundant, because cm_config ends up as
1505 // codemirror's own .options object, but I don't want to
1508 // codemirror's own .options object, but I don't want to
1506 // rely on that.
1509 // rely on that.
1507 cell.cm_config.mode = spec;
1510 cell.cm_config.mode = spec;
1508 }
1511 }
1509 });
1512 });
1510 });
1513 });
1511 };
1514 };
1512
1515
1513 // Session related things
1516 // Session related things
1514
1517
1515 /**
1518 /**
1516 * Start a new session and set it on each code cell.
1519 * Start a new session and set it on each code cell.
1517 */
1520 */
1518 Notebook.prototype.start_session = function (kernel_name) {
1521 Notebook.prototype.start_session = function (kernel_name) {
1519 if (this._session_starting) {
1522 if (this._session_starting) {
1520 throw new session.SessionAlreadyStarting();
1523 throw new session.SessionAlreadyStarting();
1521 }
1524 }
1522 this._session_starting = true;
1525 this._session_starting = true;
1523
1526
1524 var options = {
1527 var options = {
1525 base_url: this.base_url,
1528 base_url: this.base_url,
1526 ws_url: this.ws_url,
1529 ws_url: this.ws_url,
1527 notebook_path: this.notebook_path,
1530 notebook_path: this.notebook_path,
1528 notebook_name: this.notebook_name,
1531 notebook_name: this.notebook_name,
1529 kernel_name: kernel_name,
1532 kernel_name: kernel_name,
1530 notebook: this
1533 notebook: this
1531 };
1534 };
1532
1535
1533 var success = $.proxy(this._session_started, this);
1536 var success = $.proxy(this._session_started, this);
1534 var failure = $.proxy(this._session_start_failed, this);
1537 var failure = $.proxy(this._session_start_failed, this);
1535
1538
1536 if (this.session !== null) {
1539 if (this.session !== null) {
1537 this.session.restart(options, success, failure);
1540 this.session.restart(options, success, failure);
1538 } else {
1541 } else {
1539 this.session = new session.Session(options);
1542 this.session = new session.Session(options);
1540 this.session.start(success, failure);
1543 this.session.start(success, failure);
1541 }
1544 }
1542 };
1545 };
1543
1546
1544
1547
1545 /**
1548 /**
1546 * Once a session is started, link the code cells to the kernel and pass the
1549 * Once a session is started, link the code cells to the kernel and pass the
1547 * comm manager to the widget manager.
1550 * comm manager to the widget manager.
1548 */
1551 */
1549 Notebook.prototype._session_started = function (){
1552 Notebook.prototype._session_started = function (){
1550 this._session_starting = false;
1553 this._session_starting = false;
1551 this.kernel = this.session.kernel;
1554 this.kernel = this.session.kernel;
1552 var ncells = this.ncells();
1555 var ncells = this.ncells();
1553 for (var i=0; i<ncells; i++) {
1556 for (var i=0; i<ncells; i++) {
1554 var cell = this.get_cell(i);
1557 var cell = this.get_cell(i);
1555 if (cell instanceof codecell.CodeCell) {
1558 if (cell instanceof codecell.CodeCell) {
1556 cell.set_kernel(this.session.kernel);
1559 cell.set_kernel(this.session.kernel);
1557 }
1560 }
1558 }
1561 }
1559 };
1562 };
1560
1563
1561 /**
1564 /**
1562 * Called when the session fails to start.
1565 * Called when the session fails to start.
1563 */
1566 */
1564 Notebook.prototype._session_start_failed = function(jqxhr, status, error){
1567 Notebook.prototype._session_start_failed = function(jqxhr, status, error){
1565 this._session_starting = false;
1568 this._session_starting = false;
1566 utils.log_ajax_error(jqxhr, status, error);
1569 utils.log_ajax_error(jqxhr, status, error);
1567 };
1570 };
1568
1571
1569 /**
1572 /**
1570 * Prompt the user to restart the IPython kernel.
1573 * Prompt the user to restart the IPython kernel.
1571 */
1574 */
1572 Notebook.prototype.restart_kernel = function () {
1575 Notebook.prototype.restart_kernel = function () {
1573 var that = this;
1576 var that = this;
1574 dialog.modal({
1577 dialog.modal({
1575 notebook: this,
1578 notebook: this,
1576 keyboard_manager: this.keyboard_manager,
1579 keyboard_manager: this.keyboard_manager,
1577 title : "Restart kernel or continue running?",
1580 title : "Restart kernel or continue running?",
1578 body : $("<p/>").text(
1581 body : $("<p/>").text(
1579 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1582 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1580 ),
1583 ),
1581 buttons : {
1584 buttons : {
1582 "Continue running" : {},
1585 "Continue running" : {},
1583 "Restart" : {
1586 "Restart" : {
1584 "class" : "btn-danger",
1587 "class" : "btn-danger",
1585 "click" : function() {
1588 "click" : function() {
1586 that.kernel.restart();
1589 that.kernel.restart();
1587 }
1590 }
1588 }
1591 }
1589 }
1592 }
1590 });
1593 });
1591 };
1594 };
1592
1595
1593 /**
1596 /**
1594 * Execute or render cell outputs and go into command mode.
1597 * Execute or render cell outputs and go into command mode.
1595 */
1598 */
1596 Notebook.prototype.execute_cell = function () {
1599 Notebook.prototype.execute_cell = function () {
1597 // mode = shift, ctrl, alt
1600 // mode = shift, ctrl, alt
1598 var cell = this.get_selected_cell();
1601 var cell = this.get_selected_cell();
1599
1602
1600 cell.execute();
1603 cell.execute();
1601 this.command_mode();
1604 this.command_mode();
1602 this.set_dirty(true);
1605 this.set_dirty(true);
1603 };
1606 };
1604
1607
1605 /**
1608 /**
1606 * Execute or render cell outputs and insert a new cell below.
1609 * Execute or render cell outputs and insert a new cell below.
1607 */
1610 */
1608 Notebook.prototype.execute_cell_and_insert_below = function () {
1611 Notebook.prototype.execute_cell_and_insert_below = function () {
1609 var cell = this.get_selected_cell();
1612 var cell = this.get_selected_cell();
1610 var cell_index = this.find_cell_index(cell);
1613 var cell_index = this.find_cell_index(cell);
1611
1614
1612 cell.execute();
1615 cell.execute();
1613
1616
1614 // If we are at the end always insert a new cell and return
1617 // If we are at the end always insert a new cell and return
1615 if (cell_index === (this.ncells()-1)) {
1618 if (cell_index === (this.ncells()-1)) {
1616 this.command_mode();
1619 this.command_mode();
1617 this.insert_cell_below();
1620 this.insert_cell_below();
1618 this.select(cell_index+1);
1621 this.select(cell_index+1);
1619 this.edit_mode();
1622 this.edit_mode();
1620 this.scroll_to_bottom();
1623 this.scroll_to_bottom();
1621 this.set_dirty(true);
1624 this.set_dirty(true);
1622 return;
1625 return;
1623 }
1626 }
1624
1627
1625 this.command_mode();
1628 this.command_mode();
1626 this.insert_cell_below();
1629 this.insert_cell_below();
1627 this.select(cell_index+1);
1630 this.select(cell_index+1);
1628 this.edit_mode();
1631 this.edit_mode();
1629 this.set_dirty(true);
1632 this.set_dirty(true);
1630 };
1633 };
1631
1634
1632 /**
1635 /**
1633 * Execute or render cell outputs and select the next cell.
1636 * Execute or render cell outputs and select the next cell.
1634 */
1637 */
1635 Notebook.prototype.execute_cell_and_select_below = function () {
1638 Notebook.prototype.execute_cell_and_select_below = function () {
1636
1639
1637 var cell = this.get_selected_cell();
1640 var cell = this.get_selected_cell();
1638 var cell_index = this.find_cell_index(cell);
1641 var cell_index = this.find_cell_index(cell);
1639
1642
1640 cell.execute();
1643 cell.execute();
1641
1644
1642 // If we are at the end always insert a new cell and return
1645 // If we are at the end always insert a new cell and return
1643 if (cell_index === (this.ncells()-1)) {
1646 if (cell_index === (this.ncells()-1)) {
1644 this.command_mode();
1647 this.command_mode();
1645 this.insert_cell_below();
1648 this.insert_cell_below();
1646 this.select(cell_index+1);
1649 this.select(cell_index+1);
1647 this.edit_mode();
1650 this.edit_mode();
1648 this.scroll_to_bottom();
1651 this.scroll_to_bottom();
1649 this.set_dirty(true);
1652 this.set_dirty(true);
1650 return;
1653 return;
1651 }
1654 }
1652
1655
1653 this.command_mode();
1656 this.command_mode();
1654 this.select(cell_index+1);
1657 this.select(cell_index+1);
1655 this.focus_cell();
1658 this.focus_cell();
1656 this.set_dirty(true);
1659 this.set_dirty(true);
1657 };
1660 };
1658
1661
1659 /**
1662 /**
1660 * Execute all cells below the selected cell.
1663 * Execute all cells below the selected cell.
1661 */
1664 */
1662 Notebook.prototype.execute_cells_below = function () {
1665 Notebook.prototype.execute_cells_below = function () {
1663 this.execute_cell_range(this.get_selected_index(), this.ncells());
1666 this.execute_cell_range(this.get_selected_index(), this.ncells());
1664 this.scroll_to_bottom();
1667 this.scroll_to_bottom();
1665 };
1668 };
1666
1669
1667 /**
1670 /**
1668 * Execute all cells above the selected cell.
1671 * Execute all cells above the selected cell.
1669 */
1672 */
1670 Notebook.prototype.execute_cells_above = function () {
1673 Notebook.prototype.execute_cells_above = function () {
1671 this.execute_cell_range(0, this.get_selected_index());
1674 this.execute_cell_range(0, this.get_selected_index());
1672 };
1675 };
1673
1676
1674 /**
1677 /**
1675 * Execute all cells.
1678 * Execute all cells.
1676 */
1679 */
1677 Notebook.prototype.execute_all_cells = function () {
1680 Notebook.prototype.execute_all_cells = function () {
1678 this.execute_cell_range(0, this.ncells());
1681 this.execute_cell_range(0, this.ncells());
1679 this.scroll_to_bottom();
1682 this.scroll_to_bottom();
1680 };
1683 };
1681
1684
1682 /**
1685 /**
1683 * Execute a contiguous range of cells.
1686 * Execute a contiguous range of cells.
1684 *
1687 *
1685 * @param {integer} start - index of the first cell to execute (inclusive)
1688 * @param {integer} start - index of the first cell to execute (inclusive)
1686 * @param {integer} end - index of the last cell to execute (exclusive)
1689 * @param {integer} end - index of the last cell to execute (exclusive)
1687 */
1690 */
1688 Notebook.prototype.execute_cell_range = function (start, end) {
1691 Notebook.prototype.execute_cell_range = function (start, end) {
1689 this.command_mode();
1692 this.command_mode();
1690 for (var i=start; i<end; i++) {
1693 for (var i=start; i<end; i++) {
1691 this.select(i);
1694 this.select(i);
1692 this.execute_cell();
1695 this.execute_cell();
1693 }
1696 }
1694 };
1697 };
1695
1698
1696 // Persistance and loading
1699 // Persistance and loading
1697
1700
1698 /**
1701 /**
1699 * Getter method for this notebook's name.
1702 * Getter method for this notebook's name.
1700 *
1703 *
1701 * @return {string} This notebook's name (excluding file extension)
1704 * @return {string} This notebook's name (excluding file extension)
1702 */
1705 */
1703 Notebook.prototype.get_notebook_name = function () {
1706 Notebook.prototype.get_notebook_name = function () {
1704 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1707 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1705 return nbname;
1708 return nbname;
1706 };
1709 };
1707
1710
1708 /**
1711 /**
1709 * Setter method for this notebook's name.
1712 * Setter method for this notebook's name.
1710 *
1713 *
1711 * @param {string} name
1714 * @param {string} name
1712 */
1715 */
1713 Notebook.prototype.set_notebook_name = function (name) {
1716 Notebook.prototype.set_notebook_name = function (name) {
1714 var parent = utils.url_path_split(this.notebook_path)[0];
1717 var parent = utils.url_path_split(this.notebook_path)[0];
1715 this.notebook_name = name;
1718 this.notebook_name = name;
1716 this.notebook_path = utils.url_path_join(parent, name);
1719 this.notebook_path = utils.url_path_join(parent, name);
1717 };
1720 };
1718
1721
1719 /**
1722 /**
1720 * Check that a notebook's name is valid.
1723 * Check that a notebook's name is valid.
1721 *
1724 *
1722 * @param {string} nbname - A name for this notebook
1725 * @param {string} nbname - A name for this notebook
1723 * @return {boolean} True if the name is valid, false if invalid
1726 * @return {boolean} True if the name is valid, false if invalid
1724 */
1727 */
1725 Notebook.prototype.test_notebook_name = function (nbname) {
1728 Notebook.prototype.test_notebook_name = function (nbname) {
1726 nbname = nbname || '';
1729 nbname = nbname || '';
1727 if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) {
1730 if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) {
1728 return true;
1731 return true;
1729 } else {
1732 } else {
1730 return false;
1733 return false;
1731 }
1734 }
1732 };
1735 };
1733
1736
1734 /**
1737 /**
1735 * Load a notebook from JSON (.ipynb).
1738 * Load a notebook from JSON (.ipynb).
1736 *
1739 *
1737 * @param {object} data - JSON representation of a notebook
1740 * @param {object} data - JSON representation of a notebook
1738 */
1741 */
1739 Notebook.prototype.fromJSON = function (data) {
1742 Notebook.prototype.fromJSON = function (data) {
1740
1743
1741 var content = data.content;
1744 var content = data.content;
1742 var ncells = this.ncells();
1745 var ncells = this.ncells();
1743 var i;
1746 var i;
1744 for (i=0; i<ncells; i++) {
1747 for (i=0; i<ncells; i++) {
1745 // Always delete cell 0 as they get renumbered as they are deleted.
1748 // Always delete cell 0 as they get renumbered as they are deleted.
1746 this._unsafe_delete_cell(0);
1749 this._unsafe_delete_cell(0);
1747 }
1750 }
1748 // Save the metadata and name.
1751 // Save the metadata and name.
1749 this.metadata = content.metadata;
1752 this.metadata = content.metadata;
1750 this.notebook_name = data.name;
1753 this.notebook_name = data.name;
1751 this.notebook_path = data.path;
1754 this.notebook_path = data.path;
1752 var trusted = true;
1755 var trusted = true;
1753
1756
1754 // Set the codemirror mode from language_info metadata
1757 // Set the codemirror mode from language_info metadata
1755 if (this.metadata.language_info !== undefined) {
1758 if (this.metadata.language_info !== undefined) {
1756 var langinfo = this.metadata.language_info;
1759 var langinfo = this.metadata.language_info;
1757 // Mode 'null' should be plain, unhighlighted text.
1760 // Mode 'null' should be plain, unhighlighted text.
1758 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
1761 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
1759 this.set_codemirror_mode(cm_mode);
1762 this.set_codemirror_mode(cm_mode);
1760 }
1763 }
1761
1764
1762 var new_cells = content.cells;
1765 var new_cells = content.cells;
1763 ncells = new_cells.length;
1766 ncells = new_cells.length;
1764 var cell_data = null;
1767 var cell_data = null;
1765 var new_cell = null;
1768 var new_cell = null;
1766 for (i=0; i<ncells; i++) {
1769 for (i=0; i<ncells; i++) {
1767 cell_data = new_cells[i];
1770 cell_data = new_cells[i];
1768 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1771 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1769 new_cell.fromJSON(cell_data);
1772 new_cell.fromJSON(cell_data);
1770 if (new_cell.cell_type === 'code' && !new_cell.output_area.trusted) {
1773 if (new_cell.cell_type === 'code' && !new_cell.output_area.trusted) {
1771 trusted = false;
1774 trusted = false;
1772 }
1775 }
1773 }
1776 }
1774 if (trusted !== this.trusted) {
1777 if (trusted !== this.trusted) {
1775 this.trusted = trusted;
1778 this.trusted = trusted;
1776 this.events.trigger("trust_changed.Notebook", trusted);
1779 this.events.trigger("trust_changed.Notebook", trusted);
1777 }
1780 }
1778 };
1781 };
1779
1782
1780 /**
1783 /**
1781 * Dump this notebook into a JSON-friendly object.
1784 * Dump this notebook into a JSON-friendly object.
1782 *
1785 *
1783 * @return {object} A JSON-friendly representation of this notebook.
1786 * @return {object} A JSON-friendly representation of this notebook.
1784 */
1787 */
1785 Notebook.prototype.toJSON = function () {
1788 Notebook.prototype.toJSON = function () {
1786 // remove the conversion indicator, which only belongs in-memory
1789 // remove the conversion indicator, which only belongs in-memory
1787 delete this.metadata.orig_nbformat;
1790 delete this.metadata.orig_nbformat;
1788 delete this.metadata.orig_nbformat_minor;
1791 delete this.metadata.orig_nbformat_minor;
1789
1792
1790 var cells = this.get_cells();
1793 var cells = this.get_cells();
1791 var ncells = cells.length;
1794 var ncells = cells.length;
1792 var cell_array = new Array(ncells);
1795 var cell_array = new Array(ncells);
1793 var trusted = true;
1796 var trusted = true;
1794 for (var i=0; i<ncells; i++) {
1797 for (var i=0; i<ncells; i++) {
1795 var cell = cells[i];
1798 var cell = cells[i];
1796 if (cell.cell_type === 'code' && !cell.output_area.trusted) {
1799 if (cell.cell_type === 'code' && !cell.output_area.trusted) {
1797 trusted = false;
1800 trusted = false;
1798 }
1801 }
1799 cell_array[i] = cell.toJSON();
1802 cell_array[i] = cell.toJSON();
1800 }
1803 }
1801 var data = {
1804 var data = {
1802 cells: cell_array,
1805 cells: cell_array,
1803 metadata: this.metadata,
1806 metadata: this.metadata,
1804 nbformat: this.nbformat,
1807 nbformat: this.nbformat,
1805 nbformat_minor: this.nbformat_minor
1808 nbformat_minor: this.nbformat_minor
1806 };
1809 };
1807 if (trusted !== this.trusted) {
1810 if (trusted !== this.trusted) {
1808 this.trusted = trusted;
1811 this.trusted = trusted;
1809 this.events.trigger("trust_changed.Notebook", trusted);
1812 this.events.trigger("trust_changed.Notebook", trusted);
1810 }
1813 }
1811 return data;
1814 return data;
1812 };
1815 };
1813
1816
1814 /**
1817 /**
1815 * Start an autosave timer which periodically saves the notebook.
1818 * Start an autosave timer which periodically saves the notebook.
1816 *
1819 *
1817 * @param {integer} interval - the autosave interval in milliseconds
1820 * @param {integer} interval - the autosave interval in milliseconds
1818 */
1821 */
1819 Notebook.prototype.set_autosave_interval = function (interval) {
1822 Notebook.prototype.set_autosave_interval = function (interval) {
1820 var that = this;
1823 var that = this;
1821 // clear previous interval, so we don't get simultaneous timers
1824 // clear previous interval, so we don't get simultaneous timers
1822 if (this.autosave_timer) {
1825 if (this.autosave_timer) {
1823 clearInterval(this.autosave_timer);
1826 clearInterval(this.autosave_timer);
1824 }
1827 }
1825 if (!this.writable) {
1828 if (!this.writable) {
1826 // disable autosave if not writable
1829 // disable autosave if not writable
1827 interval = 0;
1830 interval = 0;
1828 }
1831 }
1829
1832
1830 this.autosave_interval = this.minimum_autosave_interval = interval;
1833 this.autosave_interval = this.minimum_autosave_interval = interval;
1831 if (interval) {
1834 if (interval) {
1832 this.autosave_timer = setInterval(function() {
1835 this.autosave_timer = setInterval(function() {
1833 if (that.dirty) {
1836 if (that.dirty) {
1834 that.save_notebook();
1837 that.save_notebook();
1835 }
1838 }
1836 }, interval);
1839 }, interval);
1837 this.events.trigger("autosave_enabled.Notebook", interval);
1840 this.events.trigger("autosave_enabled.Notebook", interval);
1838 } else {
1841 } else {
1839 this.autosave_timer = null;
1842 this.autosave_timer = null;
1840 this.events.trigger("autosave_disabled.Notebook");
1843 this.events.trigger("autosave_disabled.Notebook");
1841 }
1844 }
1842 };
1845 };
1843
1846
1844 /**
1847 /**
1845 * Save this notebook on the server. This becomes a notebook instance's
1848 * Save this notebook on the server. This becomes a notebook instance's
1846 * .save_notebook method *after* the entire notebook has been loaded.
1849 * .save_notebook method *after* the entire notebook has been loaded.
1847 */
1850 */
1848 Notebook.prototype.save_notebook = function (check_last_modified) {
1851 Notebook.prototype.save_notebook = function (check_last_modified) {
1849 if (check_last_modified === undefined) {
1852 if (check_last_modified === undefined) {
1850 check_last_modified = true;
1853 check_last_modified = true;
1851 }
1854 }
1852 if (!this._fully_loaded) {
1855 if (!this._fully_loaded) {
1853 this.events.trigger('notebook_save_failed.Notebook',
1856 this.events.trigger('notebook_save_failed.Notebook',
1854 new Error("Load failed, save is disabled")
1857 new Error("Load failed, save is disabled")
1855 );
1858 );
1856 return;
1859 return;
1857 } else if (!this.writable) {
1860 } else if (!this.writable) {
1858 this.events.trigger('notebook_save_failed.Notebook',
1861 this.events.trigger('notebook_save_failed.Notebook',
1859 new Error("Notebook is read-only")
1862 new Error("Notebook is read-only")
1860 );
1863 );
1861 return;
1864 return;
1862 }
1865 }
1863
1866
1864 // Trigger an event before save, which allows listeners to modify
1867 // Trigger an event before save, which allows listeners to modify
1865 // the notebook as needed.
1868 // the notebook as needed.
1866 this.events.trigger('before_save.Notebook');
1869 this.events.trigger('before_save.Notebook');
1867
1870
1868 // Create a JSON model to be sent to the server.
1871 // Create a JSON model to be sent to the server.
1869 var model = {
1872 var model = {
1870 type : "notebook",
1873 type : "notebook",
1871 content : this.toJSON()
1874 content : this.toJSON()
1872 };
1875 };
1873 // time the ajax call for autosave tuning purposes.
1876 // time the ajax call for autosave tuning purposes.
1874 var start = new Date().getTime();
1877 var start = new Date().getTime();
1875
1878
1876 var that = this;
1879 var that = this;
1877 var _save = function () {
1880 var _save = function () {
1878 return that.contents.save(that.notebook_path, model).then(
1881 return that.contents.save(that.notebook_path, model).then(
1879 $.proxy(that.save_notebook_success, that, start),
1882 $.proxy(that.save_notebook_success, that, start),
1880 function (error) {
1883 function (error) {
1881 that.events.trigger('notebook_save_failed.Notebook', error);
1884 that.events.trigger('notebook_save_failed.Notebook', error);
1882 }
1885 }
1883 );
1886 );
1884 };
1887 };
1885
1888
1886 if (check_last_modified) {
1889 if (check_last_modified) {
1887 return this.contents.get(this.notebook_path, {content: false}).then(
1890 return this.contents.get(this.notebook_path, {content: false}).then(
1888 function (data) {
1891 function (data) {
1889 var last_modified = new Date(data.last_modified);
1892 var last_modified = new Date(data.last_modified);
1890 if (last_modified > that.last_modified) {
1893 if (last_modified > that.last_modified) {
1891 dialog.modal({
1894 dialog.modal({
1892 notebook: that,
1895 notebook: that,
1893 keyboard_manager: that.keyboard_manager,
1896 keyboard_manager: that.keyboard_manager,
1894 title: "Notebook changed",
1897 title: "Notebook changed",
1895 body: "Notebook has changed since we opened it. Overwrite the changed file?",
1898 body: "Notebook has changed since we opened it. Overwrite the changed file?",
1896 buttons: {
1899 buttons: {
1897 Cancel: {},
1900 Cancel: {},
1898 Overwrite: {
1901 Overwrite: {
1899 class: 'btn-danger',
1902 class: 'btn-danger',
1900 click: function () {
1903 click: function () {
1901 _save();
1904 _save();
1902 }
1905 }
1903 },
1906 },
1904 }
1907 }
1905 });
1908 });
1906 } else {
1909 } else {
1907 return _save();
1910 return _save();
1908 }
1911 }
1909 }, function (error) {
1912 }, function (error) {
1910 // maybe it has been deleted or renamed? Go ahead and save.
1913 // maybe it has been deleted or renamed? Go ahead and save.
1911 return _save();
1914 return _save();
1912 }
1915 }
1913 );
1916 );
1914 } else {
1917 } else {
1915 return _save();
1918 return _save();
1916 }
1919 }
1917 };
1920 };
1918
1921
1919 /**
1922 /**
1920 * Success callback for saving a notebook.
1923 * Success callback for saving a notebook.
1921 *
1924 *
1922 * @param {integer} start - Time when the save request start
1925 * @param {integer} start - Time when the save request start
1923 * @param {object} data - JSON representation of a notebook
1926 * @param {object} data - JSON representation of a notebook
1924 */
1927 */
1925 Notebook.prototype.save_notebook_success = function (start, data) {
1928 Notebook.prototype.save_notebook_success = function (start, data) {
1926 this.set_dirty(false);
1929 this.set_dirty(false);
1927 this.last_modified = new Date(data.last_modified);
1930 this.last_modified = new Date(data.last_modified);
1928 if (data.message) {
1931 if (data.message) {
1929 // save succeeded, but validation failed.
1932 // save succeeded, but validation failed.
1930 var body = $("<div>");
1933 var body = $("<div>");
1931 var title = "Notebook validation failed";
1934 var title = "Notebook validation failed";
1932
1935
1933 body.append($("<p>").text(
1936 body.append($("<p>").text(
1934 "The save operation succeeded," +
1937 "The save operation succeeded," +
1935 " but the notebook does not appear to be valid." +
1938 " but the notebook does not appear to be valid." +
1936 " The validation error was:"
1939 " The validation error was:"
1937 )).append($("<div>").addClass("validation-error").append(
1940 )).append($("<div>").addClass("validation-error").append(
1938 $("<pre>").text(data.message)
1941 $("<pre>").text(data.message)
1939 ));
1942 ));
1940 dialog.modal({
1943 dialog.modal({
1941 notebook: this,
1944 notebook: this,
1942 keyboard_manager: this.keyboard_manager,
1945 keyboard_manager: this.keyboard_manager,
1943 title: title,
1946 title: title,
1944 body: body,
1947 body: body,
1945 buttons : {
1948 buttons : {
1946 OK : {
1949 OK : {
1947 "class" : "btn-primary"
1950 "class" : "btn-primary"
1948 }
1951 }
1949 }
1952 }
1950 });
1953 });
1951 }
1954 }
1952 this.events.trigger('notebook_saved.Notebook');
1955 this.events.trigger('notebook_saved.Notebook');
1953 this._update_autosave_interval(start);
1956 this._update_autosave_interval(start);
1954 if (this._checkpoint_after_save) {
1957 if (this._checkpoint_after_save) {
1955 this.create_checkpoint();
1958 this.create_checkpoint();
1956 this._checkpoint_after_save = false;
1959 this._checkpoint_after_save = false;
1957 }
1960 }
1958 };
1961 };
1959
1962
1960 /**
1963 /**
1961 * Update the autosave interval based on the duration of the last save.
1964 * Update the autosave interval based on the duration of the last save.
1962 *
1965 *
1963 * @param {integer} timestamp - when the save request started
1966 * @param {integer} timestamp - when the save request started
1964 */
1967 */
1965 Notebook.prototype._update_autosave_interval = function (start) {
1968 Notebook.prototype._update_autosave_interval = function (start) {
1966 var duration = (new Date().getTime() - start);
1969 var duration = (new Date().getTime() - start);
1967 if (this.autosave_interval) {
1970 if (this.autosave_interval) {
1968 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1971 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
1969 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1972 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
1970 // round to 10 seconds, otherwise we will be setting a new interval too often
1973 // round to 10 seconds, otherwise we will be setting a new interval too often
1971 interval = 10000 * Math.round(interval / 10000);
1974 interval = 10000 * Math.round(interval / 10000);
1972 // set new interval, if it's changed
1975 // set new interval, if it's changed
1973 if (interval !== this.autosave_interval) {
1976 if (interval !== this.autosave_interval) {
1974 this.set_autosave_interval(interval);
1977 this.set_autosave_interval(interval);
1975 }
1978 }
1976 }
1979 }
1977 };
1980 };
1978
1981
1979 /**
1982 /**
1980 * Explicitly trust the output of this notebook.
1983 * Explicitly trust the output of this notebook.
1981 */
1984 */
1982 Notebook.prototype.trust_notebook = function () {
1985 Notebook.prototype.trust_notebook = function () {
1983 var body = $("<div>").append($("<p>")
1986 var body = $("<div>").append($("<p>")
1984 .text("A trusted IPython notebook may execute hidden malicious code ")
1987 .text("A trusted IPython notebook may execute hidden malicious code ")
1985 .append($("<strong>")
1988 .append($("<strong>")
1986 .append(
1989 .append(
1987 $("<em>").text("when you open it")
1990 $("<em>").text("when you open it")
1988 )
1991 )
1989 ).append(".").append(
1992 ).append(".").append(
1990 " Selecting trust will immediately reload this notebook in a trusted state."
1993 " Selecting trust will immediately reload this notebook in a trusted state."
1991 ).append(
1994 ).append(
1992 " For more information, see the "
1995 " For more information, see the "
1993 ).append($("<a>").attr("href", "http://ipython.org/ipython-doc/2/notebook/security.html")
1996 ).append($("<a>").attr("href", "http://ipython.org/ipython-doc/2/notebook/security.html")
1994 .text("IPython security documentation")
1997 .text("IPython security documentation")
1995 ).append(".")
1998 ).append(".")
1996 );
1999 );
1997
2000
1998 var nb = this;
2001 var nb = this;
1999 dialog.modal({
2002 dialog.modal({
2000 notebook: this,
2003 notebook: this,
2001 keyboard_manager: this.keyboard_manager,
2004 keyboard_manager: this.keyboard_manager,
2002 title: "Trust this notebook?",
2005 title: "Trust this notebook?",
2003 body: body,
2006 body: body,
2004
2007
2005 buttons: {
2008 buttons: {
2006 Cancel : {},
2009 Cancel : {},
2007 Trust : {
2010 Trust : {
2008 class : "btn-danger",
2011 class : "btn-danger",
2009 click : function () {
2012 click : function () {
2010 var cells = nb.get_cells();
2013 var cells = nb.get_cells();
2011 for (var i = 0; i < cells.length; i++) {
2014 for (var i = 0; i < cells.length; i++) {
2012 var cell = cells[i];
2015 var cell = cells[i];
2013 if (cell.cell_type === 'code') {
2016 if (cell.cell_type === 'code') {
2014 cell.output_area.trusted = true;
2017 cell.output_area.trusted = true;
2015 }
2018 }
2016 }
2019 }
2017 nb.events.on('notebook_saved.Notebook', function () {
2020 nb.events.on('notebook_saved.Notebook', function () {
2018 window.location.reload();
2021 window.location.reload();
2019 });
2022 });
2020 nb.save_notebook();
2023 nb.save_notebook();
2021 }
2024 }
2022 }
2025 }
2023 }
2026 }
2024 });
2027 });
2025 };
2028 };
2026
2029
2027 /**
2030 /**
2028 * Make a copy of the current notebook.
2031 * Make a copy of the current notebook.
2029 */
2032 */
2030 Notebook.prototype.copy_notebook = function () {
2033 Notebook.prototype.copy_notebook = function () {
2031 var that = this;
2034 var that = this;
2032 var base_url = this.base_url;
2035 var base_url = this.base_url;
2033 var w = window.open();
2036 var w = window.open();
2034 var parent = utils.url_path_split(this.notebook_path)[0];
2037 var parent = utils.url_path_split(this.notebook_path)[0];
2035 this.contents.copy(this.notebook_path, parent).then(
2038 this.contents.copy(this.notebook_path, parent).then(
2036 function (data) {
2039 function (data) {
2037 w.location = utils.url_join_encode(
2040 w.location = utils.url_join_encode(
2038 base_url, 'notebooks', data.path
2041 base_url, 'notebooks', data.path
2039 );
2042 );
2040 },
2043 },
2041 function(error) {
2044 function(error) {
2042 w.close();
2045 w.close();
2043 that.events.trigger('notebook_copy_failed', error);
2046 that.events.trigger('notebook_copy_failed', error);
2044 }
2047 }
2045 );
2048 );
2046 };
2049 };
2047
2050
2048 /**
2051 /**
2049 * Ensure a filename has the right extension
2052 * Ensure a filename has the right extension
2050 * Returns the filename with the appropriate extension, appending if necessary.
2053 * Returns the filename with the appropriate extension, appending if necessary.
2051 */
2054 */
2052 Notebook.prototype.ensure_extension = function (name) {
2055 Notebook.prototype.ensure_extension = function (name) {
2053 if (!name.match(/\.ipynb$/)) {
2056 if (!name.match(/\.ipynb$/)) {
2054 name = name + ".ipynb";
2057 name = name + ".ipynb";
2055 }
2058 }
2056 return name;
2059 return name;
2057 };
2060 };
2058
2061
2059 /**
2062 /**
2060 * Rename the notebook.
2063 * Rename the notebook.
2061 * @param {string} new_name
2064 * @param {string} new_name
2062 * @return {Promise} promise that resolves when the notebook is renamed.
2065 * @return {Promise} promise that resolves when the notebook is renamed.
2063 */
2066 */
2064 Notebook.prototype.rename = function (new_name) {
2067 Notebook.prototype.rename = function (new_name) {
2065 new_name = this.ensure_extension(new_name);
2068 new_name = this.ensure_extension(new_name);
2066
2069
2067 var that = this;
2070 var that = this;
2068 var parent = utils.url_path_split(this.notebook_path)[0];
2071 var parent = utils.url_path_split(this.notebook_path)[0];
2069 var new_path = utils.url_path_join(parent, new_name);
2072 var new_path = utils.url_path_join(parent, new_name);
2070 return this.contents.rename(this.notebook_path, new_path).then(
2073 return this.contents.rename(this.notebook_path, new_path).then(
2071 function (json) {
2074 function (json) {
2072 that.notebook_name = json.name;
2075 that.notebook_name = json.name;
2073 that.notebook_path = json.path;
2076 that.notebook_path = json.path;
2074 that.session.rename_notebook(json.path);
2077 that.session.rename_notebook(json.path);
2075 that.events.trigger('notebook_renamed.Notebook', json);
2078 that.events.trigger('notebook_renamed.Notebook', json);
2076 }
2079 }
2077 );
2080 );
2078 };
2081 };
2079
2082
2080 /**
2083 /**
2081 * Delete this notebook
2084 * Delete this notebook
2082 */
2085 */
2083 Notebook.prototype.delete = function () {
2086 Notebook.prototype.delete = function () {
2084 this.contents.delete(this.notebook_path);
2087 this.contents.delete(this.notebook_path);
2085 };
2088 };
2086
2089
2087 /**
2090 /**
2088 * Request a notebook's data from the server.
2091 * Request a notebook's data from the server.
2089 *
2092 *
2090 * @param {string} notebook_path - A notebook to load
2093 * @param {string} notebook_path - A notebook to load
2091 */
2094 */
2092 Notebook.prototype.load_notebook = function (notebook_path) {
2095 Notebook.prototype.load_notebook = function (notebook_path) {
2093 var that = this;
2096 var that = this;
2094 this.notebook_path = notebook_path;
2097 this.notebook_path = notebook_path;
2095 this.notebook_name = utils.url_path_split(this.notebook_path)[1];
2098 this.notebook_name = utils.url_path_split(this.notebook_path)[1];
2096 this.events.trigger('notebook_loading.Notebook');
2099 this.events.trigger('notebook_loading.Notebook');
2097 this.contents.get(notebook_path, {type: 'notebook'}).then(
2100 this.contents.get(notebook_path, {type: 'notebook'}).then(
2098 $.proxy(this.load_notebook_success, this),
2101 $.proxy(this.load_notebook_success, this),
2099 $.proxy(this.load_notebook_error, this)
2102 $.proxy(this.load_notebook_error, this)
2100 );
2103 );
2101 };
2104 };
2102
2105
2103 /**
2106 /**
2104 * Success callback for loading a notebook from the server.
2107 * Success callback for loading a notebook from the server.
2105 *
2108 *
2106 * Load notebook data from the JSON response.
2109 * Load notebook data from the JSON response.
2107 *
2110 *
2108 * @param {object} data JSON representation of a notebook
2111 * @param {object} data JSON representation of a notebook
2109 */
2112 */
2110 Notebook.prototype.load_notebook_success = function (data) {
2113 Notebook.prototype.load_notebook_success = function (data) {
2111 var failed, msg;
2114 var failed, msg;
2112 try {
2115 try {
2113 this.fromJSON(data);
2116 this.fromJSON(data);
2114 } catch (e) {
2117 } catch (e) {
2115 failed = e;
2118 failed = e;
2116 console.log("Notebook failed to load from JSON:", e);
2119 console.log("Notebook failed to load from JSON:", e);
2117 }
2120 }
2118 if (failed || data.message) {
2121 if (failed || data.message) {
2119 // *either* fromJSON failed or validation failed
2122 // *either* fromJSON failed or validation failed
2120 var body = $("<div>");
2123 var body = $("<div>");
2121 var title;
2124 var title;
2122 if (failed) {
2125 if (failed) {
2123 title = "Notebook failed to load";
2126 title = "Notebook failed to load";
2124 body.append($("<p>").text(
2127 body.append($("<p>").text(
2125 "The error was: "
2128 "The error was: "
2126 )).append($("<div>").addClass("js-error").text(
2129 )).append($("<div>").addClass("js-error").text(
2127 failed.toString()
2130 failed.toString()
2128 )).append($("<p>").text(
2131 )).append($("<p>").text(
2129 "See the error console for details."
2132 "See the error console for details."
2130 ));
2133 ));
2131 } else {
2134 } else {
2132 title = "Notebook validation failed";
2135 title = "Notebook validation failed";
2133 }
2136 }
2134
2137
2135 if (data.message) {
2138 if (data.message) {
2136 if (failed) {
2139 if (failed) {
2137 msg = "The notebook also failed validation:";
2140 msg = "The notebook also failed validation:";
2138 } else {
2141 } else {
2139 msg = "An invalid notebook may not function properly." +
2142 msg = "An invalid notebook may not function properly." +
2140 " The validation error was:";
2143 " The validation error was:";
2141 }
2144 }
2142 body.append($("<p>").text(
2145 body.append($("<p>").text(
2143 msg
2146 msg
2144 )).append($("<div>").addClass("validation-error").append(
2147 )).append($("<div>").addClass("validation-error").append(
2145 $("<pre>").text(data.message)
2148 $("<pre>").text(data.message)
2146 ));
2149 ));
2147 }
2150 }
2148
2151
2149 dialog.modal({
2152 dialog.modal({
2150 notebook: this,
2153 notebook: this,
2151 keyboard_manager: this.keyboard_manager,
2154 keyboard_manager: this.keyboard_manager,
2152 title: title,
2155 title: title,
2153 body: body,
2156 body: body,
2154 buttons : {
2157 buttons : {
2155 OK : {
2158 OK : {
2156 "class" : "btn-primary"
2159 "class" : "btn-primary"
2157 }
2160 }
2158 }
2161 }
2159 });
2162 });
2160 }
2163 }
2161 if (this.ncells() === 0) {
2164 if (this.ncells() === 0) {
2162 this.insert_cell_below('code');
2165 this.insert_cell_below('code');
2163 this.edit_mode(0);
2166 this.edit_mode(0);
2164 } else {
2167 } else {
2165 this.select(0);
2168 this.select(0);
2166 this.handle_command_mode(this.get_cell(0));
2169 this.handle_command_mode(this.get_cell(0));
2167 }
2170 }
2168 this.set_dirty(false);
2171 this.set_dirty(false);
2169 this.scroll_to_top();
2172 this.scroll_to_top();
2170 this.writable = data.writable || false;
2173 this.writable = data.writable || false;
2171 this.last_modified = new Date(data.last_modified);
2174 this.last_modified = new Date(data.last_modified);
2172 var nbmodel = data.content;
2175 var nbmodel = data.content;
2173 var orig_nbformat = nbmodel.metadata.orig_nbformat;
2176 var orig_nbformat = nbmodel.metadata.orig_nbformat;
2174 var orig_nbformat_minor = nbmodel.metadata.orig_nbformat_minor;
2177 var orig_nbformat_minor = nbmodel.metadata.orig_nbformat_minor;
2175 if (orig_nbformat !== undefined && nbmodel.nbformat !== orig_nbformat) {
2178 if (orig_nbformat !== undefined && nbmodel.nbformat !== orig_nbformat) {
2176 var src;
2179 var src;
2177 if (nbmodel.nbformat > orig_nbformat) {
2180 if (nbmodel.nbformat > orig_nbformat) {
2178 src = " an older notebook format ";
2181 src = " an older notebook format ";
2179 } else {
2182 } else {
2180 src = " a newer notebook format ";
2183 src = " a newer notebook format ";
2181 }
2184 }
2182
2185
2183 msg = "This notebook has been converted from" + src +
2186 msg = "This notebook has been converted from" + src +
2184 "(v"+orig_nbformat+") to the current notebook " +
2187 "(v"+orig_nbformat+") to the current notebook " +
2185 "format (v"+nbmodel.nbformat+"). The next time you save this notebook, the " +
2188 "format (v"+nbmodel.nbformat+"). The next time you save this notebook, the " +
2186 "current notebook format will be used.";
2189 "current notebook format will be used.";
2187
2190
2188 if (nbmodel.nbformat > orig_nbformat) {
2191 if (nbmodel.nbformat > orig_nbformat) {
2189 msg += " Older versions of IPython may not be able to read the new format.";
2192 msg += " Older versions of IPython may not be able to read the new format.";
2190 } else {
2193 } else {
2191 msg += " Some features of the original notebook may not be available.";
2194 msg += " Some features of the original notebook may not be available.";
2192 }
2195 }
2193 msg += " To preserve the original version, close the " +
2196 msg += " To preserve the original version, close the " +
2194 "notebook without saving it.";
2197 "notebook without saving it.";
2195 dialog.modal({
2198 dialog.modal({
2196 notebook: this,
2199 notebook: this,
2197 keyboard_manager: this.keyboard_manager,
2200 keyboard_manager: this.keyboard_manager,
2198 title : "Notebook converted",
2201 title : "Notebook converted",
2199 body : msg,
2202 body : msg,
2200 buttons : {
2203 buttons : {
2201 OK : {
2204 OK : {
2202 class : "btn-primary"
2205 class : "btn-primary"
2203 }
2206 }
2204 }
2207 }
2205 });
2208 });
2206 } else if (this.nbformat_minor < nbmodel.nbformat_minor) {
2209 } else if (this.nbformat_minor < nbmodel.nbformat_minor) {
2207 this.nbformat_minor = nbmodel.nbformat_minor;
2210 this.nbformat_minor = nbmodel.nbformat_minor;
2208 }
2211 }
2209
2212
2210 if (this.session === null) {
2213 if (this.session === null) {
2211 var kernel_name;
2214 var kernel_name = utils.get_url_param('kernel_name');
2212 if (this.metadata.kernelspec) {
2213 var kernelspec = this.metadata.kernelspec || {};
2214 kernel_name = kernelspec.name;
2215 } else {
2216 kernel_name = utils.get_url_param('kernel_name');
2217 }
2218 if (kernel_name) {
2215 if (kernel_name) {
2219 // setting kernel_name here triggers start_session
2220 this.kernel_selector.set_kernel(kernel_name);
2216 this.kernel_selector.set_kernel(kernel_name);
2217 } else if (this.metadata.kernelspec) {
2218 this.kernel_selector.set_kernel(this.metadata.kernelspec);
2221 } else {
2219 } else {
2222 // start a new session with the server's default kernel
2220 // setting kernel via set_kernel above triggers start_session,
2221 // otherwise start a new session with the server's default kernel
2223 // spec_changed events will fire after kernel is loaded
2222 // spec_changed events will fire after kernel is loaded
2224 this.start_session();
2223 this.start_session();
2225 }
2224 }
2226 }
2225 }
2227 // load our checkpoint list
2226 // load our checkpoint list
2228 this.list_checkpoints();
2227 this.list_checkpoints();
2229
2228
2230 // load toolbar state
2229 // load toolbar state
2231 if (this.metadata.celltoolbar) {
2230 if (this.metadata.celltoolbar) {
2232 celltoolbar.CellToolbar.global_show();
2231 celltoolbar.CellToolbar.global_show();
2233 celltoolbar.CellToolbar.activate_preset(this.metadata.celltoolbar);
2232 celltoolbar.CellToolbar.activate_preset(this.metadata.celltoolbar);
2234 } else {
2233 } else {
2235 celltoolbar.CellToolbar.global_hide();
2234 celltoolbar.CellToolbar.global_hide();
2236 }
2235 }
2237
2236
2238 if (!this.writable) {
2237 if (!this.writable) {
2239 this.set_autosave_interval(0);
2238 this.set_autosave_interval(0);
2240 this.events.trigger('notebook_read_only.Notebook');
2239 this.events.trigger('notebook_read_only.Notebook');
2241 }
2240 }
2242
2241
2243 // now that we're fully loaded, it is safe to restore save functionality
2242 // now that we're fully loaded, it is safe to restore save functionality
2244 this._fully_loaded = true;
2243 this._fully_loaded = true;
2245 this.events.trigger('notebook_loaded.Notebook');
2244 this.events.trigger('notebook_loaded.Notebook');
2246 };
2245 };
2247
2246
2248 Notebook.prototype.set_kernelselector = function(k_selector){
2247 Notebook.prototype.set_kernelselector = function(k_selector){
2249 this.kernel_selector = k_selector;
2248 this.kernel_selector = k_selector;
2250 };
2249 };
2251
2250
2252 /**
2251 /**
2253 * Failure callback for loading a notebook from the server.
2252 * Failure callback for loading a notebook from the server.
2254 *
2253 *
2255 * @param {Error} error
2254 * @param {Error} error
2256 */
2255 */
2257 Notebook.prototype.load_notebook_error = function (error) {
2256 Notebook.prototype.load_notebook_error = function (error) {
2258 this.events.trigger('notebook_load_failed.Notebook', error);
2257 this.events.trigger('notebook_load_failed.Notebook', error);
2259 var msg;
2258 var msg;
2260 if (error.name === utils.XHR_ERROR && error.xhr.status === 500) {
2259 if (error.name === utils.XHR_ERROR && error.xhr.status === 500) {
2261 utils.log_ajax_error(error.xhr, error.xhr_status, error.xhr_error);
2260 utils.log_ajax_error(error.xhr, error.xhr_status, error.xhr_error);
2262 msg = "An unknown error occurred while loading this notebook. " +
2261 msg = "An unknown error occurred while loading this notebook. " +
2263 "This version can load notebook formats " +
2262 "This version can load notebook formats " +
2264 "v" + this.nbformat + " or earlier. See the server log for details.";
2263 "v" + this.nbformat + " or earlier. See the server log for details.";
2265 } else {
2264 } else {
2266 msg = error.message;
2265 msg = error.message;
2267 console.warn('Error stack trace while loading notebook was:');
2266 console.warn('Error stack trace while loading notebook was:');
2268 console.warn(error.stack);
2267 console.warn(error.stack);
2269 }
2268 }
2270 dialog.modal({
2269 dialog.modal({
2271 notebook: this,
2270 notebook: this,
2272 keyboard_manager: this.keyboard_manager,
2271 keyboard_manager: this.keyboard_manager,
2273 title: "Error loading notebook",
2272 title: "Error loading notebook",
2274 body : msg,
2273 body : msg,
2275 buttons : {
2274 buttons : {
2276 "OK": {}
2275 "OK": {}
2277 }
2276 }
2278 });
2277 });
2279 };
2278 };
2280
2279
2281 /********************* checkpoint-related ********************/
2280 /********************* checkpoint-related ********************/
2282
2281
2283 /**
2282 /**
2284 * Save the notebook then immediately create a checkpoint.
2283 * Save the notebook then immediately create a checkpoint.
2285 */
2284 */
2286 Notebook.prototype.save_checkpoint = function () {
2285 Notebook.prototype.save_checkpoint = function () {
2287 this._checkpoint_after_save = true;
2286 this._checkpoint_after_save = true;
2288 this.save_notebook();
2287 this.save_notebook();
2289 };
2288 };
2290
2289
2291 /**
2290 /**
2292 * Add a checkpoint for this notebook.
2291 * Add a checkpoint for this notebook.
2293 */
2292 */
2294 Notebook.prototype.add_checkpoint = function (checkpoint) {
2293 Notebook.prototype.add_checkpoint = function (checkpoint) {
2295 var found = false;
2294 var found = false;
2296 for (var i = 0; i < this.checkpoints.length; i++) {
2295 for (var i = 0; i < this.checkpoints.length; i++) {
2297 var existing = this.checkpoints[i];
2296 var existing = this.checkpoints[i];
2298 if (existing.id === checkpoint.id) {
2297 if (existing.id === checkpoint.id) {
2299 found = true;
2298 found = true;
2300 this.checkpoints[i] = checkpoint;
2299 this.checkpoints[i] = checkpoint;
2301 break;
2300 break;
2302 }
2301 }
2303 }
2302 }
2304 if (!found) {
2303 if (!found) {
2305 this.checkpoints.push(checkpoint);
2304 this.checkpoints.push(checkpoint);
2306 }
2305 }
2307 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2306 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2308 };
2307 };
2309
2308
2310 /**
2309 /**
2311 * List checkpoints for this notebook.
2310 * List checkpoints for this notebook.
2312 */
2311 */
2313 Notebook.prototype.list_checkpoints = function () {
2312 Notebook.prototype.list_checkpoints = function () {
2314 var that = this;
2313 var that = this;
2315 this.contents.list_checkpoints(this.notebook_path).then(
2314 this.contents.list_checkpoints(this.notebook_path).then(
2316 $.proxy(this.list_checkpoints_success, this),
2315 $.proxy(this.list_checkpoints_success, this),
2317 function(error) {
2316 function(error) {
2318 that.events.trigger('list_checkpoints_failed.Notebook', error);
2317 that.events.trigger('list_checkpoints_failed.Notebook', error);
2319 }
2318 }
2320 );
2319 );
2321 };
2320 };
2322
2321
2323 /**
2322 /**
2324 * Success callback for listing checkpoints.
2323 * Success callback for listing checkpoints.
2325 *
2324 *
2326 * @param {object} data - JSON representation of a checkpoint
2325 * @param {object} data - JSON representation of a checkpoint
2327 */
2326 */
2328 Notebook.prototype.list_checkpoints_success = function (data) {
2327 Notebook.prototype.list_checkpoints_success = function (data) {
2329 this.checkpoints = data;
2328 this.checkpoints = data;
2330 if (data.length) {
2329 if (data.length) {
2331 this.last_checkpoint = data[data.length - 1];
2330 this.last_checkpoint = data[data.length - 1];
2332 } else {
2331 } else {
2333 this.last_checkpoint = null;
2332 this.last_checkpoint = null;
2334 }
2333 }
2335 this.events.trigger('checkpoints_listed.Notebook', [data]);
2334 this.events.trigger('checkpoints_listed.Notebook', [data]);
2336 };
2335 };
2337
2336
2338 /**
2337 /**
2339 * Create a checkpoint of this notebook on the server from the most recent save.
2338 * Create a checkpoint of this notebook on the server from the most recent save.
2340 */
2339 */
2341 Notebook.prototype.create_checkpoint = function () {
2340 Notebook.prototype.create_checkpoint = function () {
2342 var that = this;
2341 var that = this;
2343 this.contents.create_checkpoint(this.notebook_path).then(
2342 this.contents.create_checkpoint(this.notebook_path).then(
2344 $.proxy(this.create_checkpoint_success, this),
2343 $.proxy(this.create_checkpoint_success, this),
2345 function (error) {
2344 function (error) {
2346 that.events.trigger('checkpoint_failed.Notebook', error);
2345 that.events.trigger('checkpoint_failed.Notebook', error);
2347 }
2346 }
2348 );
2347 );
2349 };
2348 };
2350
2349
2351 /**
2350 /**
2352 * Success callback for creating a checkpoint.
2351 * Success callback for creating a checkpoint.
2353 *
2352 *
2354 * @param {object} data - JSON representation of a checkpoint
2353 * @param {object} data - JSON representation of a checkpoint
2355 */
2354 */
2356 Notebook.prototype.create_checkpoint_success = function (data) {
2355 Notebook.prototype.create_checkpoint_success = function (data) {
2357 this.add_checkpoint(data);
2356 this.add_checkpoint(data);
2358 this.events.trigger('checkpoint_created.Notebook', data);
2357 this.events.trigger('checkpoint_created.Notebook', data);
2359 };
2358 };
2360
2359
2361 /**
2360 /**
2362 * Display the restore checkpoint dialog
2361 * Display the restore checkpoint dialog
2363 * @param {string} checkpoint ID
2362 * @param {string} checkpoint ID
2364 */
2363 */
2365 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2364 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2366 var that = this;
2365 var that = this;
2367 checkpoint = checkpoint || this.last_checkpoint;
2366 checkpoint = checkpoint || this.last_checkpoint;
2368 if ( ! checkpoint ) {
2367 if ( ! checkpoint ) {
2369 console.log("restore dialog, but no checkpoint to restore to!");
2368 console.log("restore dialog, but no checkpoint to restore to!");
2370 return;
2369 return;
2371 }
2370 }
2372 var body = $('<div/>').append(
2371 var body = $('<div/>').append(
2373 $('<p/>').addClass("p-space").text(
2372 $('<p/>').addClass("p-space").text(
2374 "Are you sure you want to revert the notebook to " +
2373 "Are you sure you want to revert the notebook to " +
2375 "the latest checkpoint?"
2374 "the latest checkpoint?"
2376 ).append(
2375 ).append(
2377 $("<strong/>").text(
2376 $("<strong/>").text(
2378 " This cannot be undone."
2377 " This cannot be undone."
2379 )
2378 )
2380 )
2379 )
2381 ).append(
2380 ).append(
2382 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2381 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2383 ).append(
2382 ).append(
2384 $('<p/>').addClass("p-space").text(
2383 $('<p/>').addClass("p-space").text(
2385 moment(checkpoint.last_modified).format('LLLL') +
2384 moment(checkpoint.last_modified).format('LLLL') +
2386 ' ('+moment(checkpoint.last_modified).fromNow()+')'// Long form: Tuesday, January 27, 2015 12:15 PM
2385 ' ('+moment(checkpoint.last_modified).fromNow()+')'// Long form: Tuesday, January 27, 2015 12:15 PM
2387 ).css("text-align", "center")
2386 ).css("text-align", "center")
2388 );
2387 );
2389
2388
2390 dialog.modal({
2389 dialog.modal({
2391 notebook: this,
2390 notebook: this,
2392 keyboard_manager: this.keyboard_manager,
2391 keyboard_manager: this.keyboard_manager,
2393 title : "Revert notebook to checkpoint",
2392 title : "Revert notebook to checkpoint",
2394 body : body,
2393 body : body,
2395 buttons : {
2394 buttons : {
2396 Revert : {
2395 Revert : {
2397 class : "btn-danger",
2396 class : "btn-danger",
2398 click : function () {
2397 click : function () {
2399 that.restore_checkpoint(checkpoint.id);
2398 that.restore_checkpoint(checkpoint.id);
2400 }
2399 }
2401 },
2400 },
2402 Cancel : {}
2401 Cancel : {}
2403 }
2402 }
2404 });
2403 });
2405 };
2404 };
2406
2405
2407 /**
2406 /**
2408 * Restore the notebook to a checkpoint state.
2407 * Restore the notebook to a checkpoint state.
2409 *
2408 *
2410 * @param {string} checkpoint ID
2409 * @param {string} checkpoint ID
2411 */
2410 */
2412 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2411 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2413 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2412 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2414 var that = this;
2413 var that = this;
2415 this.contents.restore_checkpoint(this.notebook_path, checkpoint).then(
2414 this.contents.restore_checkpoint(this.notebook_path, checkpoint).then(
2416 $.proxy(this.restore_checkpoint_success, this),
2415 $.proxy(this.restore_checkpoint_success, this),
2417 function (error) {
2416 function (error) {
2418 that.events.trigger('checkpoint_restore_failed.Notebook', error);
2417 that.events.trigger('checkpoint_restore_failed.Notebook', error);
2419 }
2418 }
2420 );
2419 );
2421 };
2420 };
2422
2421
2423 /**
2422 /**
2424 * Success callback for restoring a notebook to a checkpoint.
2423 * Success callback for restoring a notebook to a checkpoint.
2425 */
2424 */
2426 Notebook.prototype.restore_checkpoint_success = function () {
2425 Notebook.prototype.restore_checkpoint_success = function () {
2427 this.events.trigger('checkpoint_restored.Notebook');
2426 this.events.trigger('checkpoint_restored.Notebook');
2428 this.load_notebook(this.notebook_path);
2427 this.load_notebook(this.notebook_path);
2429 };
2428 };
2430
2429
2431 /**
2430 /**
2432 * Delete a notebook checkpoint.
2431 * Delete a notebook checkpoint.
2433 *
2432 *
2434 * @param {string} checkpoint ID
2433 * @param {string} checkpoint ID
2435 */
2434 */
2436 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2435 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2437 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2436 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2438 var that = this;
2437 var that = this;
2439 this.contents.delete_checkpoint(this.notebook_path, checkpoint).then(
2438 this.contents.delete_checkpoint(this.notebook_path, checkpoint).then(
2440 $.proxy(this.delete_checkpoint_success, this),
2439 $.proxy(this.delete_checkpoint_success, this),
2441 function (error) {
2440 function (error) {
2442 that.events.trigger('checkpoint_delete_failed.Notebook', error);
2441 that.events.trigger('checkpoint_delete_failed.Notebook', error);
2443 }
2442 }
2444 );
2443 );
2445 };
2444 };
2446
2445
2447 /**
2446 /**
2448 * Success callback for deleting a notebook checkpoint.
2447 * Success callback for deleting a notebook checkpoint.
2449 */
2448 */
2450 Notebook.prototype.delete_checkpoint_success = function () {
2449 Notebook.prototype.delete_checkpoint_success = function () {
2451 this.events.trigger('checkpoint_deleted.Notebook');
2450 this.events.trigger('checkpoint_deleted.Notebook');
2452 this.load_notebook(this.notebook_path);
2451 this.load_notebook(this.notebook_path);
2453 };
2452 };
2454
2453
2455
2454
2456 // For backwards compatability.
2455 // For backwards compatability.
2457 IPython.Notebook = Notebook;
2456 IPython.Notebook = Notebook;
2458
2457
2459 return {'Notebook': Notebook};
2458 return {'Notebook': Notebook};
2460 });
2459 });
@@ -1,326 +1,337 b''
1 define([
1 define([
2 'base/js/namespace',
2 'base/js/namespace',
3 'jquery',
3 'jquery',
4 'base/js/utils',
4 'base/js/utils',
5 'base/js/dialog',
5 'base/js/dialog',
6 'base/js/notificationarea',
6 'base/js/notificationarea',
7 'moment'
7 'moment'
8 ], function(IPython, $, utils, dialog, notificationarea, moment) {
8 ], function(IPython, $, utils, dialog, notificationarea, moment) {
9 "use strict";
9 "use strict";
10 var NotificationArea = notificationarea.NotificationArea;
10 var NotificationArea = notificationarea.NotificationArea;
11
11
12 var NotebookNotificationArea = function(selector, options) {
12 var NotebookNotificationArea = function(selector, options) {
13 NotificationArea.apply(this, [selector, options]);
13 NotificationArea.apply(this, [selector, options]);
14 this.save_widget = options.save_widget;
14 this.save_widget = options.save_widget;
15 this.notebook = options.notebook;
15 this.notebook = options.notebook;
16 this.keyboard_manager = options.keyboard_manager;
16 this.keyboard_manager = options.keyboard_manager;
17 }
17 };
18
18
19 NotebookNotificationArea.prototype = Object.create(NotificationArea.prototype);
19 NotebookNotificationArea.prototype = Object.create(NotificationArea.prototype);
20
20
21 /**
21 /**
22 * Initialize the default set of notification widgets.
22 * Initialize the default set of notification widgets.
23 *
23 *
24 * @method init_notification_widgets
24 * @method init_notification_widgets
25 */
25 */
26 NotebookNotificationArea.prototype.init_notification_widgets = function () {
26 NotebookNotificationArea.prototype.init_notification_widgets = function () {
27 this.init_kernel_notification_widget();
27 this.init_kernel_notification_widget();
28 this.init_notebook_notification_widget();
28 this.init_notebook_notification_widget();
29 };
29 };
30
30
31 /**
31 /**
32 * Initialize the notification widget for kernel status messages.
32 * Initialize the notification widget for kernel status messages.
33 *
33 *
34 * @method init_kernel_notification_widget
34 * @method init_kernel_notification_widget
35 */
35 */
36 NotebookNotificationArea.prototype.init_kernel_notification_widget = function () {
36 NotebookNotificationArea.prototype.init_kernel_notification_widget = function () {
37 var that = this;
37 var that = this;
38 var knw = this.new_notification_widget('kernel');
38 var knw = this.new_notification_widget('kernel');
39 var $kernel_ind_icon = $("#kernel_indicator_icon");
39 var $kernel_ind_icon = $("#kernel_indicator_icon");
40 var $modal_ind_icon = $("#modal_indicator");
40 var $modal_ind_icon = $("#modal_indicator");
41 var $body = $('body')
41 var $body = $('body');
42
42
43 // Command/Edit mode
43 // Command/Edit mode
44 this.events.on('edit_mode.Notebook', function () {
44 this.events.on('edit_mode.Notebook', function () {
45 that.save_widget.update_document_title();
45 that.save_widget.update_document_title();
46 $body.addClass('edit_mode');
46 $body.addClass('edit_mode');
47 $body.removeClass('command_mode');
47 $body.removeClass('command_mode');
48 $modal_ind_icon.attr('title','Edit Mode');
48 $modal_ind_icon.attr('title','Edit Mode');
49 });
49 });
50
50
51 this.events.on('command_mode.Notebook', function () {
51 this.events.on('command_mode.Notebook', function () {
52 that.save_widget.update_document_title();
52 that.save_widget.update_document_title();
53 $body.removeClass('edit_mode');
53 $body.removeClass('edit_mode');
54 $body.addClass('command_mode');
54 $body.addClass('command_mode');
55 $modal_ind_icon.attr('title','Command Mode');
55 $modal_ind_icon.attr('title','Command Mode');
56 });
56 });
57
57
58 // Implicitly start off in Command mode, switching to Edit mode will trigger event
58 // Implicitly start off in Command mode, switching to Edit mode will trigger event
59 $modal_ind_icon.addClass('modal_indicator').attr('title','Command Mode');
59 $modal_ind_icon.addClass('modal_indicator').attr('title','Command Mode');
60 $body.addClass('command_mode')
60 $body.addClass('command_mode');
61
61
62 // Kernel events
62 // Kernel events
63
63
64 // this can be either kernel_created.Kernel or kernel_created.Session
64 // this can be either kernel_created.Kernel or kernel_created.Session
65 this.events.on('kernel_created.Kernel kernel_created.Session', function () {
65 this.events.on('kernel_created.Kernel kernel_created.Session', function () {
66 knw.info("Kernel Created", 500);
66 knw.info("Kernel Created", 500);
67 });
67 });
68
68
69 this.events.on('kernel_reconnecting.Kernel', function () {
69 this.events.on('kernel_reconnecting.Kernel', function () {
70 knw.warning("Connecting to kernel");
70 knw.warning("Connecting to kernel");
71 });
71 });
72
72
73 this.events.on('kernel_connection_dead.Kernel', function (evt, info) {
73 this.events.on('kernel_connection_dead.Kernel', function (evt, info) {
74 knw.danger("Not Connected", undefined, function () {
74 knw.danger("Not Connected", undefined, function () {
75 // schedule reconnect a short time in the future, don't reconnect immediately
75 // schedule reconnect a short time in the future, don't reconnect immediately
76 setTimeout($.proxy(info.kernel.reconnect, info.kernel), 500);
76 setTimeout($.proxy(info.kernel.reconnect, info.kernel), 500);
77 }, {title: 'click to reconnect'});
77 }, {title: 'click to reconnect'});
78 });
78 });
79
79
80 this.events.on('kernel_connected.Kernel', function () {
80 this.events.on('kernel_connected.Kernel', function () {
81 knw.info("Connected", 500);
81 knw.info("Connected", 500);
82 });
82 });
83
83
84 this.events.on('kernel_restarting.Kernel', function () {
84 this.events.on('kernel_restarting.Kernel', function () {
85 that.save_widget.update_document_title();
85 that.save_widget.update_document_title();
86 knw.set_message("Restarting kernel", 2000);
86 knw.set_message("Restarting kernel", 2000);
87 });
87 });
88
88
89 this.events.on('kernel_autorestarting.Kernel', function (evt, info) {
89 this.events.on('kernel_autorestarting.Kernel', function (evt, info) {
90 // Only show the dialog on the first restart attempt. This
90 // Only show the dialog on the first restart attempt. This
91 // number gets tracked by the `Kernel` object and passed
91 // number gets tracked by the `Kernel` object and passed
92 // along here, because we don't want to show the user 5
92 // along here, because we don't want to show the user 5
93 // dialogs saying the same thing (which is the number of
93 // dialogs saying the same thing (which is the number of
94 // times it tries restarting).
94 // times it tries restarting).
95 if (info.attempt === 1) {
95 if (info.attempt === 1) {
96
96
97 dialog.kernel_modal({
97 dialog.kernel_modal({
98 notebook: that.notebook,
98 notebook: that.notebook,
99 keyboard_manager: that.keyboard_manager,
99 keyboard_manager: that.keyboard_manager,
100 title: "Kernel Restarting",
100 title: "Kernel Restarting",
101 body: "The kernel appears to have died. It will restart automatically.",
101 body: "The kernel appears to have died. It will restart automatically.",
102 buttons: {
102 buttons: {
103 OK : {
103 OK : {
104 class : "btn-primary"
104 class : "btn-primary"
105 }
105 }
106 }
106 }
107 });
107 });
108 };
108 }
109
109
110 that.save_widget.update_document_title();
110 that.save_widget.update_document_title();
111 knw.danger("Dead kernel");
111 knw.danger("Dead kernel");
112 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
112 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
113 });
113 });
114
114
115 this.events.on('kernel_interrupting.Kernel', function () {
115 this.events.on('kernel_interrupting.Kernel', function () {
116 knw.set_message("Interrupting kernel", 2000);
116 knw.set_message("Interrupting kernel", 2000);
117 });
117 });
118
118
119 this.events.on('kernel_disconnected.Kernel', function () {
119 this.events.on('kernel_disconnected.Kernel', function () {
120 $kernel_ind_icon
120 $kernel_ind_icon
121 .attr('class', 'kernel_disconnected_icon')
121 .attr('class', 'kernel_disconnected_icon')
122 .attr('title', 'No Connection to Kernel');
122 .attr('title', 'No Connection to Kernel');
123 });
123 });
124
124
125 this.events.on('kernel_connection_failed.Kernel', function (evt, info) {
125 this.events.on('kernel_connection_failed.Kernel', function (evt, info) {
126 // only show the dialog if this is the first failed
126 // only show the dialog if this is the first failed
127 // connect attempt, because the kernel will continue
127 // connect attempt, because the kernel will continue
128 // trying to reconnect and we don't want to spam the user
128 // trying to reconnect and we don't want to spam the user
129 // with messages
129 // with messages
130 if (info.attempt === 1) {
130 if (info.attempt === 1) {
131
131
132 var msg = "A connection to the notebook server could not be established." +
132 var msg = "A connection to the notebook server could not be established." +
133 " The notebook will continue trying to reconnect, but" +
133 " The notebook will continue trying to reconnect, but" +
134 " until it does, you will NOT be able to run code. Check your" +
134 " until it does, you will NOT be able to run code. Check your" +
135 " network connection or notebook server configuration.";
135 " network connection or notebook server configuration.";
136
136
137 dialog.kernel_modal({
137 dialog.kernel_modal({
138 title: "Connection failed",
138 title: "Connection failed",
139 body: msg,
139 body: msg,
140 keyboard_manager: that.keyboard_manager,
140 keyboard_manager: that.keyboard_manager,
141 notebook: that.notebook,
141 notebook: that.notebook,
142 buttons : {
142 buttons : {
143 "OK": {}
143 "OK": {}
144 }
144 }
145 });
145 });
146 }
146 }
147 });
147 });
148
148
149 this.events.on('kernel_killed.Kernel kernel_killed.Session', function () {
149 this.events.on('kernel_killed.Kernel kernel_killed.Session', function () {
150 that.save_widget.update_document_title();
150 that.save_widget.update_document_title();
151 knw.warning("No kernel");
151 knw.warning("No kernel");
152 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel is not running');
152 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel is not running');
153 });
153 });
154
154
155 this.events.on('kernel_dead.Kernel', function () {
155 this.events.on('kernel_dead.Kernel', function () {
156
156
157 var showMsg = function () {
157 var showMsg = function () {
158
158
159 var msg = 'The kernel has died, and the automatic restart has failed.' +
159 var msg = 'The kernel has died, and the automatic restart has failed.' +
160 ' It is possible the kernel cannot be restarted.' +
160 ' It is possible the kernel cannot be restarted.' +
161 ' If you are not able to restart the kernel, you will still be able to save' +
161 ' If you are not able to restart the kernel, you will still be able to save' +
162 ' the notebook, but running code will no longer work until the notebook' +
162 ' the notebook, but running code will no longer work until the notebook' +
163 ' is reopened.';
163 ' is reopened.';
164
164
165 dialog.kernel_modal({
165 dialog.kernel_modal({
166 title: "Dead kernel",
166 title: "Dead kernel",
167 body : msg,
167 body : msg,
168 keyboard_manager: that.keyboard_manager,
168 keyboard_manager: that.keyboard_manager,
169 notebook: that.notebook,
169 notebook: that.notebook,
170 buttons : {
170 buttons : {
171 "Manual Restart": {
171 "Manual Restart": {
172 class: "btn-danger",
172 class: "btn-danger",
173 click: function () {
173 click: function () {
174 that.notebook.start_session();
174 that.notebook.start_session();
175 }
175 }
176 },
176 },
177 "Don't restart": {}
177 "Don't restart": {}
178 }
178 }
179 });
179 });
180
180
181 return false;
181 return false;
182 };
182 };
183
183
184 that.save_widget.update_document_title();
184 that.save_widget.update_document_title();
185 knw.danger("Dead kernel", undefined, showMsg);
185 knw.danger("Dead kernel", undefined, showMsg);
186 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
186 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
187
187
188 showMsg();
188 showMsg();
189 });
189 });
190
191 this.events.on("no_kernel.Kernel", function (evt, data) {
192 $("#kernel_indicator").find('.kernel_indicator_name').text("No Kernel");
193 });
190
194
191 this.events.on('kernel_dead.Session', function (evt, info) {
195 this.events.on('kernel_dead.Session', function (evt, info) {
192 var full = info.xhr.responseJSON.message;
196 var full = info.xhr.responseJSON.message;
193 var short = info.xhr.responseJSON.short_message || 'Kernel error';
197 var short = info.xhr.responseJSON.short_message || 'Kernel error';
194 var traceback = info.xhr.responseJSON.traceback;
198 var traceback = info.xhr.responseJSON.traceback;
195
199
196 var showMsg = function () {
200 var showMsg = function () {
197 var msg = $('<div/>').append($('<p/>').text(full));
201 var msg = $('<div/>').append($('<p/>').text(full));
198 var cm, cm_elem, cm_open;
202 var cm, cm_elem, cm_open;
199
203
200 if (traceback) {
204 if (traceback) {
201 cm_elem = $('<div/>')
205 cm_elem = $('<div/>')
202 .css('margin-top', '1em')
206 .css('margin-top', '1em')
203 .css('padding', '1em')
207 .css('padding', '1em')
204 .addClass('output_scroll');
208 .addClass('output_scroll');
205 msg.append(cm_elem);
209 msg.append(cm_elem);
206 cm = CodeMirror(cm_elem.get(0), {
210 cm = CodeMirror(cm_elem.get(0), {
207 mode: "python",
211 mode: "python",
208 readOnly : true
212 readOnly : true
209 });
213 });
210 cm.setValue(traceback);
214 cm.setValue(traceback);
211 cm_open = $.proxy(cm.refresh, cm);
215 cm_open = $.proxy(cm.refresh, cm);
212 }
216 }
213
217
214 dialog.kernel_modal({
218 dialog.kernel_modal({
215 title: "Failed to start the kernel",
219 title: "Failed to start the kernel",
216 body : msg,
220 body : msg,
217 keyboard_manager: that.keyboard_manager,
221 keyboard_manager: that.keyboard_manager,
218 notebook: that.notebook,
222 notebook: that.notebook,
219 open: cm_open,
223 open: cm_open,
220 buttons : {
224 buttons : {
221 "Ok": { class: 'btn-primary' }
225 "Ok": { class: 'btn-primary' }
222 }
226 }
223 });
227 });
224
228
225 return false;
229 return false;
226 };
230 };
227
231
228 that.save_widget.update_document_title();
232 that.save_widget.update_document_title();
229 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
233 $kernel_ind_icon.attr('class','kernel_dead_icon').attr('title','Kernel Dead');
230 knw.danger(short, undefined, showMsg);
234 knw.danger(short, undefined, showMsg);
231 });
235 });
232
236
233 this.events.on('kernel_starting.Kernel kernel_created.Session', function () {
237 this.events.on('kernel_starting.Kernel kernel_created.Session', function () {
234 window.document.title='(Starting) '+window.document.title;
238 window.document.title='(Starting) '+window.document.title;
235 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
239 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
236 knw.set_message("Kernel starting, please wait...");
240 knw.set_message("Kernel starting, please wait...");
237 });
241 });
238
242
239 this.events.on('kernel_ready.Kernel', function () {
243 this.events.on('kernel_ready.Kernel', function () {
240 that.save_widget.update_document_title();
244 that.save_widget.update_document_title();
241 $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle');
245 $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle');
242 knw.info("Kernel ready", 500);
246 knw.info("Kernel ready", 500);
243 });
247 });
244
248
245 this.events.on('kernel_idle.Kernel', function () {
249 this.events.on('kernel_idle.Kernel', function () {
246 that.save_widget.update_document_title();
250 that.save_widget.update_document_title();
247 $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle');
251 $kernel_ind_icon.attr('class','kernel_idle_icon').attr('title','Kernel Idle');
248 });
252 });
249
253
250 this.events.on('kernel_busy.Kernel', function () {
254 this.events.on('kernel_busy.Kernel', function () {
251 window.document.title='(Busy) '+window.document.title;
255 window.document.title='(Busy) '+window.document.title;
252 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
256 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
253 });
257 });
258
259 this.events.on('spec_match_found.Kernel', function (evt, data) {
260 that.widget('kernelspec').info("Using kernel: " + data.found.spec.display_name, 3000, undefined, {
261 title: "Only candidate for language: " + data.selected.language + " was " + data.found.spec.display_name
262 });
263 });
264
254
265
255 // Start the kernel indicator in the busy state, and send a kernel_info request.
266 // Start the kernel indicator in the busy state, and send a kernel_info request.
256 // When the kernel_info reply arrives, the kernel is idle.
267 // When the kernel_info reply arrives, the kernel is idle.
257 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
268 $kernel_ind_icon.attr('class','kernel_busy_icon').attr('title','Kernel Busy');
258 };
269 };
259
270
260 /**
271 /**
261 * Initialize the notification widget for notebook status messages.
272 * Initialize the notification widget for notebook status messages.
262 *
273 *
263 * @method init_notebook_notification_widget
274 * @method init_notebook_notification_widget
264 */
275 */
265 NotebookNotificationArea.prototype.init_notebook_notification_widget = function () {
276 NotebookNotificationArea.prototype.init_notebook_notification_widget = function () {
266 var nnw = this.new_notification_widget('notebook');
277 var nnw = this.new_notification_widget('notebook');
267
278
268 // Notebook events
279 // Notebook events
269 this.events.on('notebook_loading.Notebook', function () {
280 this.events.on('notebook_loading.Notebook', function () {
270 nnw.set_message("Loading notebook",500);
281 nnw.set_message("Loading notebook",500);
271 });
282 });
272 this.events.on('notebook_loaded.Notebook', function () {
283 this.events.on('notebook_loaded.Notebook', function () {
273 nnw.set_message("Notebook loaded",500);
284 nnw.set_message("Notebook loaded",500);
274 });
285 });
275 this.events.on('notebook_saving.Notebook', function () {
286 this.events.on('notebook_saving.Notebook', function () {
276 nnw.set_message("Saving notebook",500);
287 nnw.set_message("Saving notebook",500);
277 });
288 });
278 this.events.on('notebook_saved.Notebook', function () {
289 this.events.on('notebook_saved.Notebook', function () {
279 nnw.set_message("Notebook saved",2000);
290 nnw.set_message("Notebook saved",2000);
280 });
291 });
281 this.events.on('notebook_save_failed.Notebook', function (evt, error) {
292 this.events.on('notebook_save_failed.Notebook', function (evt, error) {
282 nnw.warning(error.message || "Notebook save failed");
293 nnw.warning(error.message || "Notebook save failed");
283 });
294 });
284 this.events.on('notebook_copy_failed.Notebook', function (evt, error) {
295 this.events.on('notebook_copy_failed.Notebook', function (evt, error) {
285 nnw.warning(error.message || "Notebook copy failed");
296 nnw.warning(error.message || "Notebook copy failed");
286 });
297 });
287
298
288 // Checkpoint events
299 // Checkpoint events
289 this.events.on('checkpoint_created.Notebook', function (evt, data) {
300 this.events.on('checkpoint_created.Notebook', function (evt, data) {
290 var msg = "Checkpoint created";
301 var msg = "Checkpoint created";
291 if (data.last_modified) {
302 if (data.last_modified) {
292 var d = new Date(data.last_modified);
303 var d = new Date(data.last_modified);
293 msg = msg + ": " + moment(d).format("HH:mm:ss");
304 msg = msg + ": " + moment(d).format("HH:mm:ss");
294 }
305 }
295 nnw.set_message(msg, 2000);
306 nnw.set_message(msg, 2000);
296 });
307 });
297 this.events.on('checkpoint_failed.Notebook', function () {
308 this.events.on('checkpoint_failed.Notebook', function () {
298 nnw.warning("Checkpoint failed");
309 nnw.warning("Checkpoint failed");
299 });
310 });
300 this.events.on('checkpoint_deleted.Notebook', function () {
311 this.events.on('checkpoint_deleted.Notebook', function () {
301 nnw.set_message("Checkpoint deleted", 500);
312 nnw.set_message("Checkpoint deleted", 500);
302 });
313 });
303 this.events.on('checkpoint_delete_failed.Notebook', function () {
314 this.events.on('checkpoint_delete_failed.Notebook', function () {
304 nnw.warning("Checkpoint delete failed");
315 nnw.warning("Checkpoint delete failed");
305 });
316 });
306 this.events.on('checkpoint_restoring.Notebook', function () {
317 this.events.on('checkpoint_restoring.Notebook', function () {
307 nnw.set_message("Restoring to checkpoint...", 500);
318 nnw.set_message("Restoring to checkpoint...", 500);
308 });
319 });
309 this.events.on('checkpoint_restore_failed.Notebook', function () {
320 this.events.on('checkpoint_restore_failed.Notebook', function () {
310 nnw.warning("Checkpoint restore failed");
321 nnw.warning("Checkpoint restore failed");
311 });
322 });
312
323
313 // Autosave events
324 // Autosave events
314 this.events.on('autosave_disabled.Notebook', function () {
325 this.events.on('autosave_disabled.Notebook', function () {
315 nnw.set_message("Autosave disabled", 2000);
326 nnw.set_message("Autosave disabled", 2000);
316 });
327 });
317 this.events.on('autosave_enabled.Notebook', function (evt, interval) {
328 this.events.on('autosave_enabled.Notebook', function (evt, interval) {
318 nnw.set_message("Saving every " + interval / 1000 + "s", 1000);
329 nnw.set_message("Saving every " + interval / 1000 + "s", 1000);
319 });
330 });
320 };
331 };
321
332
322 // Backwards compatibility.
333 // Backwards compatibility.
323 IPython.NotificationArea = NotebookNotificationArea;
334 IPython.NotificationArea = NotebookNotificationArea;
324
335
325 return {'NotebookNotificationArea': NotebookNotificationArea};
336 return {'NotebookNotificationArea': NotebookNotificationArea};
326 });
337 });
@@ -1,11235 +1,11241 b''
1 /*!
1 /*!
2 *
2 *
3 * Twitter Bootstrap
3 * Twitter Bootstrap
4 *
4 *
5 */
5 */
6 /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
6 /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
7 html {
7 html {
8 font-family: sans-serif;
8 font-family: sans-serif;
9 -ms-text-size-adjust: 100%;
9 -ms-text-size-adjust: 100%;
10 -webkit-text-size-adjust: 100%;
10 -webkit-text-size-adjust: 100%;
11 }
11 }
12 body {
12 body {
13 margin: 0;
13 margin: 0;
14 }
14 }
15 article,
15 article,
16 aside,
16 aside,
17 details,
17 details,
18 figcaption,
18 figcaption,
19 figure,
19 figure,
20 footer,
20 footer,
21 header,
21 header,
22 hgroup,
22 hgroup,
23 main,
23 main,
24 menu,
24 menu,
25 nav,
25 nav,
26 section,
26 section,
27 summary {
27 summary {
28 display: block;
28 display: block;
29 }
29 }
30 audio,
30 audio,
31 canvas,
31 canvas,
32 progress,
32 progress,
33 video {
33 video {
34 display: inline-block;
34 display: inline-block;
35 vertical-align: baseline;
35 vertical-align: baseline;
36 }
36 }
37 audio:not([controls]) {
37 audio:not([controls]) {
38 display: none;
38 display: none;
39 height: 0;
39 height: 0;
40 }
40 }
41 [hidden],
41 [hidden],
42 template {
42 template {
43 display: none;
43 display: none;
44 }
44 }
45 a {
45 a {
46 background-color: transparent;
46 background-color: transparent;
47 }
47 }
48 a:active,
48 a:active,
49 a:hover {
49 a:hover {
50 outline: 0;
50 outline: 0;
51 }
51 }
52 abbr[title] {
52 abbr[title] {
53 border-bottom: 1px dotted;
53 border-bottom: 1px dotted;
54 }
54 }
55 b,
55 b,
56 strong {
56 strong {
57 font-weight: bold;
57 font-weight: bold;
58 }
58 }
59 dfn {
59 dfn {
60 font-style: italic;
60 font-style: italic;
61 }
61 }
62 h1 {
62 h1 {
63 font-size: 2em;
63 font-size: 2em;
64 margin: 0.67em 0;
64 margin: 0.67em 0;
65 }
65 }
66 mark {
66 mark {
67 background: #ff0;
67 background: #ff0;
68 color: #000;
68 color: #000;
69 }
69 }
70 small {
70 small {
71 font-size: 80%;
71 font-size: 80%;
72 }
72 }
73 sub,
73 sub,
74 sup {
74 sup {
75 font-size: 75%;
75 font-size: 75%;
76 line-height: 0;
76 line-height: 0;
77 position: relative;
77 position: relative;
78 vertical-align: baseline;
78 vertical-align: baseline;
79 }
79 }
80 sup {
80 sup {
81 top: -0.5em;
81 top: -0.5em;
82 }
82 }
83 sub {
83 sub {
84 bottom: -0.25em;
84 bottom: -0.25em;
85 }
85 }
86 img {
86 img {
87 border: 0;
87 border: 0;
88 }
88 }
89 svg:not(:root) {
89 svg:not(:root) {
90 overflow: hidden;
90 overflow: hidden;
91 }
91 }
92 figure {
92 figure {
93 margin: 1em 40px;
93 margin: 1em 40px;
94 }
94 }
95 hr {
95 hr {
96 -moz-box-sizing: content-box;
96 -moz-box-sizing: content-box;
97 box-sizing: content-box;
97 box-sizing: content-box;
98 height: 0;
98 height: 0;
99 }
99 }
100 pre {
100 pre {
101 overflow: auto;
101 overflow: auto;
102 }
102 }
103 code,
103 code,
104 kbd,
104 kbd,
105 pre,
105 pre,
106 samp {
106 samp {
107 font-family: monospace, monospace;
107 font-family: monospace, monospace;
108 font-size: 1em;
108 font-size: 1em;
109 }
109 }
110 button,
110 button,
111 input,
111 input,
112 optgroup,
112 optgroup,
113 select,
113 select,
114 textarea {
114 textarea {
115 color: inherit;
115 color: inherit;
116 font: inherit;
116 font: inherit;
117 margin: 0;
117 margin: 0;
118 }
118 }
119 button {
119 button {
120 overflow: visible;
120 overflow: visible;
121 }
121 }
122 button,
122 button,
123 select {
123 select {
124 text-transform: none;
124 text-transform: none;
125 }
125 }
126 button,
126 button,
127 html input[type="button"],
127 html input[type="button"],
128 input[type="reset"],
128 input[type="reset"],
129 input[type="submit"] {
129 input[type="submit"] {
130 -webkit-appearance: button;
130 -webkit-appearance: button;
131 cursor: pointer;
131 cursor: pointer;
132 }
132 }
133 button[disabled],
133 button[disabled],
134 html input[disabled] {
134 html input[disabled] {
135 cursor: default;
135 cursor: default;
136 }
136 }
137 button::-moz-focus-inner,
137 button::-moz-focus-inner,
138 input::-moz-focus-inner {
138 input::-moz-focus-inner {
139 border: 0;
139 border: 0;
140 padding: 0;
140 padding: 0;
141 }
141 }
142 input {
142 input {
143 line-height: normal;
143 line-height: normal;
144 }
144 }
145 input[type="checkbox"],
145 input[type="checkbox"],
146 input[type="radio"] {
146 input[type="radio"] {
147 box-sizing: border-box;
147 box-sizing: border-box;
148 padding: 0;
148 padding: 0;
149 }
149 }
150 input[type="number"]::-webkit-inner-spin-button,
150 input[type="number"]::-webkit-inner-spin-button,
151 input[type="number"]::-webkit-outer-spin-button {
151 input[type="number"]::-webkit-outer-spin-button {
152 height: auto;
152 height: auto;
153 }
153 }
154 input[type="search"] {
154 input[type="search"] {
155 -webkit-appearance: textfield;
155 -webkit-appearance: textfield;
156 -moz-box-sizing: content-box;
156 -moz-box-sizing: content-box;
157 -webkit-box-sizing: content-box;
157 -webkit-box-sizing: content-box;
158 box-sizing: content-box;
158 box-sizing: content-box;
159 }
159 }
160 input[type="search"]::-webkit-search-cancel-button,
160 input[type="search"]::-webkit-search-cancel-button,
161 input[type="search"]::-webkit-search-decoration {
161 input[type="search"]::-webkit-search-decoration {
162 -webkit-appearance: none;
162 -webkit-appearance: none;
163 }
163 }
164 fieldset {
164 fieldset {
165 border: 1px solid #c0c0c0;
165 border: 1px solid #c0c0c0;
166 margin: 0 2px;
166 margin: 0 2px;
167 padding: 0.35em 0.625em 0.75em;
167 padding: 0.35em 0.625em 0.75em;
168 }
168 }
169 legend {
169 legend {
170 border: 0;
170 border: 0;
171 padding: 0;
171 padding: 0;
172 }
172 }
173 textarea {
173 textarea {
174 overflow: auto;
174 overflow: auto;
175 }
175 }
176 optgroup {
176 optgroup {
177 font-weight: bold;
177 font-weight: bold;
178 }
178 }
179 table {
179 table {
180 border-collapse: collapse;
180 border-collapse: collapse;
181 border-spacing: 0;
181 border-spacing: 0;
182 }
182 }
183 td,
183 td,
184 th {
184 th {
185 padding: 0;
185 padding: 0;
186 }
186 }
187 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
187 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
188 @media print {
188 @media print {
189 *,
189 *,
190 *:before,
190 *:before,
191 *:after {
191 *:after {
192 background: transparent !important;
192 background: transparent !important;
193 color: #000 !important;
193 color: #000 !important;
194 box-shadow: none !important;
194 box-shadow: none !important;
195 text-shadow: none !important;
195 text-shadow: none !important;
196 }
196 }
197 a,
197 a,
198 a:visited {
198 a:visited {
199 text-decoration: underline;
199 text-decoration: underline;
200 }
200 }
201 a[href]:after {
201 a[href]:after {
202 content: " (" attr(href) ")";
202 content: " (" attr(href) ")";
203 }
203 }
204 abbr[title]:after {
204 abbr[title]:after {
205 content: " (" attr(title) ")";
205 content: " (" attr(title) ")";
206 }
206 }
207 a[href^="#"]:after,
207 a[href^="#"]:after,
208 a[href^="javascript:"]:after {
208 a[href^="javascript:"]:after {
209 content: "";
209 content: "";
210 }
210 }
211 pre,
211 pre,
212 blockquote {
212 blockquote {
213 border: 1px solid #999;
213 border: 1px solid #999;
214 page-break-inside: avoid;
214 page-break-inside: avoid;
215 }
215 }
216 thead {
216 thead {
217 display: table-header-group;
217 display: table-header-group;
218 }
218 }
219 tr,
219 tr,
220 img {
220 img {
221 page-break-inside: avoid;
221 page-break-inside: avoid;
222 }
222 }
223 img {
223 img {
224 max-width: 100% !important;
224 max-width: 100% !important;
225 }
225 }
226 p,
226 p,
227 h2,
227 h2,
228 h3 {
228 h3 {
229 orphans: 3;
229 orphans: 3;
230 widows: 3;
230 widows: 3;
231 }
231 }
232 h2,
232 h2,
233 h3 {
233 h3 {
234 page-break-after: avoid;
234 page-break-after: avoid;
235 }
235 }
236 select {
236 select {
237 background: #fff !important;
237 background: #fff !important;
238 }
238 }
239 .navbar {
239 .navbar {
240 display: none;
240 display: none;
241 }
241 }
242 .btn > .caret,
242 .btn > .caret,
243 .dropup > .btn > .caret {
243 .dropup > .btn > .caret {
244 border-top-color: #000 !important;
244 border-top-color: #000 !important;
245 }
245 }
246 .label {
246 .label {
247 border: 1px solid #000;
247 border: 1px solid #000;
248 }
248 }
249 .table {
249 .table {
250 border-collapse: collapse !important;
250 border-collapse: collapse !important;
251 }
251 }
252 .table td,
252 .table td,
253 .table th {
253 .table th {
254 background-color: #fff !important;
254 background-color: #fff !important;
255 }
255 }
256 .table-bordered th,
256 .table-bordered th,
257 .table-bordered td {
257 .table-bordered td {
258 border: 1px solid #ddd !important;
258 border: 1px solid #ddd !important;
259 }
259 }
260 }
260 }
261 @font-face {
261 @font-face {
262 font-family: 'Glyphicons Halflings';
262 font-family: 'Glyphicons Halflings';
263 src: url('../fonts/glyphicons-halflings-regular.eot');
263 src: url('../fonts/glyphicons-halflings-regular.eot');
264 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
264 src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
265 }
265 }
266 .glyphicon {
266 .glyphicon {
267 position: relative;
267 position: relative;
268 top: 1px;
268 top: 1px;
269 display: inline-block;
269 display: inline-block;
270 font-family: 'Glyphicons Halflings';
270 font-family: 'Glyphicons Halflings';
271 font-style: normal;
271 font-style: normal;
272 font-weight: normal;
272 font-weight: normal;
273 line-height: 1;
273 line-height: 1;
274 -webkit-font-smoothing: antialiased;
274 -webkit-font-smoothing: antialiased;
275 -moz-osx-font-smoothing: grayscale;
275 -moz-osx-font-smoothing: grayscale;
276 }
276 }
277 .glyphicon-asterisk:before {
277 .glyphicon-asterisk:before {
278 content: "\2a";
278 content: "\2a";
279 }
279 }
280 .glyphicon-plus:before {
280 .glyphicon-plus:before {
281 content: "\2b";
281 content: "\2b";
282 }
282 }
283 .glyphicon-euro:before,
283 .glyphicon-euro:before,
284 .glyphicon-eur:before {
284 .glyphicon-eur:before {
285 content: "\20ac";
285 content: "\20ac";
286 }
286 }
287 .glyphicon-minus:before {
287 .glyphicon-minus:before {
288 content: "\2212";
288 content: "\2212";
289 }
289 }
290 .glyphicon-cloud:before {
290 .glyphicon-cloud:before {
291 content: "\2601";
291 content: "\2601";
292 }
292 }
293 .glyphicon-envelope:before {
293 .glyphicon-envelope:before {
294 content: "\2709";
294 content: "\2709";
295 }
295 }
296 .glyphicon-pencil:before {
296 .glyphicon-pencil:before {
297 content: "\270f";
297 content: "\270f";
298 }
298 }
299 .glyphicon-glass:before {
299 .glyphicon-glass:before {
300 content: "\e001";
300 content: "\e001";
301 }
301 }
302 .glyphicon-music:before {
302 .glyphicon-music:before {
303 content: "\e002";
303 content: "\e002";
304 }
304 }
305 .glyphicon-search:before {
305 .glyphicon-search:before {
306 content: "\e003";
306 content: "\e003";
307 }
307 }
308 .glyphicon-heart:before {
308 .glyphicon-heart:before {
309 content: "\e005";
309 content: "\e005";
310 }
310 }
311 .glyphicon-star:before {
311 .glyphicon-star:before {
312 content: "\e006";
312 content: "\e006";
313 }
313 }
314 .glyphicon-star-empty:before {
314 .glyphicon-star-empty:before {
315 content: "\e007";
315 content: "\e007";
316 }
316 }
317 .glyphicon-user:before {
317 .glyphicon-user:before {
318 content: "\e008";
318 content: "\e008";
319 }
319 }
320 .glyphicon-film:before {
320 .glyphicon-film:before {
321 content: "\e009";
321 content: "\e009";
322 }
322 }
323 .glyphicon-th-large:before {
323 .glyphicon-th-large:before {
324 content: "\e010";
324 content: "\e010";
325 }
325 }
326 .glyphicon-th:before {
326 .glyphicon-th:before {
327 content: "\e011";
327 content: "\e011";
328 }
328 }
329 .glyphicon-th-list:before {
329 .glyphicon-th-list:before {
330 content: "\e012";
330 content: "\e012";
331 }
331 }
332 .glyphicon-ok:before {
332 .glyphicon-ok:before {
333 content: "\e013";
333 content: "\e013";
334 }
334 }
335 .glyphicon-remove:before {
335 .glyphicon-remove:before {
336 content: "\e014";
336 content: "\e014";
337 }
337 }
338 .glyphicon-zoom-in:before {
338 .glyphicon-zoom-in:before {
339 content: "\e015";
339 content: "\e015";
340 }
340 }
341 .glyphicon-zoom-out:before {
341 .glyphicon-zoom-out:before {
342 content: "\e016";
342 content: "\e016";
343 }
343 }
344 .glyphicon-off:before {
344 .glyphicon-off:before {
345 content: "\e017";
345 content: "\e017";
346 }
346 }
347 .glyphicon-signal:before {
347 .glyphicon-signal:before {
348 content: "\e018";
348 content: "\e018";
349 }
349 }
350 .glyphicon-cog:before {
350 .glyphicon-cog:before {
351 content: "\e019";
351 content: "\e019";
352 }
352 }
353 .glyphicon-trash:before {
353 .glyphicon-trash:before {
354 content: "\e020";
354 content: "\e020";
355 }
355 }
356 .glyphicon-home:before {
356 .glyphicon-home:before {
357 content: "\e021";
357 content: "\e021";
358 }
358 }
359 .glyphicon-file:before {
359 .glyphicon-file:before {
360 content: "\e022";
360 content: "\e022";
361 }
361 }
362 .glyphicon-time:before {
362 .glyphicon-time:before {
363 content: "\e023";
363 content: "\e023";
364 }
364 }
365 .glyphicon-road:before {
365 .glyphicon-road:before {
366 content: "\e024";
366 content: "\e024";
367 }
367 }
368 .glyphicon-download-alt:before {
368 .glyphicon-download-alt:before {
369 content: "\e025";
369 content: "\e025";
370 }
370 }
371 .glyphicon-download:before {
371 .glyphicon-download:before {
372 content: "\e026";
372 content: "\e026";
373 }
373 }
374 .glyphicon-upload:before {
374 .glyphicon-upload:before {
375 content: "\e027";
375 content: "\e027";
376 }
376 }
377 .glyphicon-inbox:before {
377 .glyphicon-inbox:before {
378 content: "\e028";
378 content: "\e028";
379 }
379 }
380 .glyphicon-play-circle:before {
380 .glyphicon-play-circle:before {
381 content: "\e029";
381 content: "\e029";
382 }
382 }
383 .glyphicon-repeat:before {
383 .glyphicon-repeat:before {
384 content: "\e030";
384 content: "\e030";
385 }
385 }
386 .glyphicon-refresh:before {
386 .glyphicon-refresh:before {
387 content: "\e031";
387 content: "\e031";
388 }
388 }
389 .glyphicon-list-alt:before {
389 .glyphicon-list-alt:before {
390 content: "\e032";
390 content: "\e032";
391 }
391 }
392 .glyphicon-lock:before {
392 .glyphicon-lock:before {
393 content: "\e033";
393 content: "\e033";
394 }
394 }
395 .glyphicon-flag:before {
395 .glyphicon-flag:before {
396 content: "\e034";
396 content: "\e034";
397 }
397 }
398 .glyphicon-headphones:before {
398 .glyphicon-headphones:before {
399 content: "\e035";
399 content: "\e035";
400 }
400 }
401 .glyphicon-volume-off:before {
401 .glyphicon-volume-off:before {
402 content: "\e036";
402 content: "\e036";
403 }
403 }
404 .glyphicon-volume-down:before {
404 .glyphicon-volume-down:before {
405 content: "\e037";
405 content: "\e037";
406 }
406 }
407 .glyphicon-volume-up:before {
407 .glyphicon-volume-up:before {
408 content: "\e038";
408 content: "\e038";
409 }
409 }
410 .glyphicon-qrcode:before {
410 .glyphicon-qrcode:before {
411 content: "\e039";
411 content: "\e039";
412 }
412 }
413 .glyphicon-barcode:before {
413 .glyphicon-barcode:before {
414 content: "\e040";
414 content: "\e040";
415 }
415 }
416 .glyphicon-tag:before {
416 .glyphicon-tag:before {
417 content: "\e041";
417 content: "\e041";
418 }
418 }
419 .glyphicon-tags:before {
419 .glyphicon-tags:before {
420 content: "\e042";
420 content: "\e042";
421 }
421 }
422 .glyphicon-book:before {
422 .glyphicon-book:before {
423 content: "\e043";
423 content: "\e043";
424 }
424 }
425 .glyphicon-bookmark:before {
425 .glyphicon-bookmark:before {
426 content: "\e044";
426 content: "\e044";
427 }
427 }
428 .glyphicon-print:before {
428 .glyphicon-print:before {
429 content: "\e045";
429 content: "\e045";
430 }
430 }
431 .glyphicon-camera:before {
431 .glyphicon-camera:before {
432 content: "\e046";
432 content: "\e046";
433 }
433 }
434 .glyphicon-font:before {
434 .glyphicon-font:before {
435 content: "\e047";
435 content: "\e047";
436 }
436 }
437 .glyphicon-bold:before {
437 .glyphicon-bold:before {
438 content: "\e048";
438 content: "\e048";
439 }
439 }
440 .glyphicon-italic:before {
440 .glyphicon-italic:before {
441 content: "\e049";
441 content: "\e049";
442 }
442 }
443 .glyphicon-text-height:before {
443 .glyphicon-text-height:before {
444 content: "\e050";
444 content: "\e050";
445 }
445 }
446 .glyphicon-text-width:before {
446 .glyphicon-text-width:before {
447 content: "\e051";
447 content: "\e051";
448 }
448 }
449 .glyphicon-align-left:before {
449 .glyphicon-align-left:before {
450 content: "\e052";
450 content: "\e052";
451 }
451 }
452 .glyphicon-align-center:before {
452 .glyphicon-align-center:before {
453 content: "\e053";
453 content: "\e053";
454 }
454 }
455 .glyphicon-align-right:before {
455 .glyphicon-align-right:before {
456 content: "\e054";
456 content: "\e054";
457 }
457 }
458 .glyphicon-align-justify:before {
458 .glyphicon-align-justify:before {
459 content: "\e055";
459 content: "\e055";
460 }
460 }
461 .glyphicon-list:before {
461 .glyphicon-list:before {
462 content: "\e056";
462 content: "\e056";
463 }
463 }
464 .glyphicon-indent-left:before {
464 .glyphicon-indent-left:before {
465 content: "\e057";
465 content: "\e057";
466 }
466 }
467 .glyphicon-indent-right:before {
467 .glyphicon-indent-right:before {
468 content: "\e058";
468 content: "\e058";
469 }
469 }
470 .glyphicon-facetime-video:before {
470 .glyphicon-facetime-video:before {
471 content: "\e059";
471 content: "\e059";
472 }
472 }
473 .glyphicon-picture:before {
473 .glyphicon-picture:before {
474 content: "\e060";
474 content: "\e060";
475 }
475 }
476 .glyphicon-map-marker:before {
476 .glyphicon-map-marker:before {
477 content: "\e062";
477 content: "\e062";
478 }
478 }
479 .glyphicon-adjust:before {
479 .glyphicon-adjust:before {
480 content: "\e063";
480 content: "\e063";
481 }
481 }
482 .glyphicon-tint:before {
482 .glyphicon-tint:before {
483 content: "\e064";
483 content: "\e064";
484 }
484 }
485 .glyphicon-edit:before {
485 .glyphicon-edit:before {
486 content: "\e065";
486 content: "\e065";
487 }
487 }
488 .glyphicon-share:before {
488 .glyphicon-share:before {
489 content: "\e066";
489 content: "\e066";
490 }
490 }
491 .glyphicon-check:before {
491 .glyphicon-check:before {
492 content: "\e067";
492 content: "\e067";
493 }
493 }
494 .glyphicon-move:before {
494 .glyphicon-move:before {
495 content: "\e068";
495 content: "\e068";
496 }
496 }
497 .glyphicon-step-backward:before {
497 .glyphicon-step-backward:before {
498 content: "\e069";
498 content: "\e069";
499 }
499 }
500 .glyphicon-fast-backward:before {
500 .glyphicon-fast-backward:before {
501 content: "\e070";
501 content: "\e070";
502 }
502 }
503 .glyphicon-backward:before {
503 .glyphicon-backward:before {
504 content: "\e071";
504 content: "\e071";
505 }
505 }
506 .glyphicon-play:before {
506 .glyphicon-play:before {
507 content: "\e072";
507 content: "\e072";
508 }
508 }
509 .glyphicon-pause:before {
509 .glyphicon-pause:before {
510 content: "\e073";
510 content: "\e073";
511 }
511 }
512 .glyphicon-stop:before {
512 .glyphicon-stop:before {
513 content: "\e074";
513 content: "\e074";
514 }
514 }
515 .glyphicon-forward:before {
515 .glyphicon-forward:before {
516 content: "\e075";
516 content: "\e075";
517 }
517 }
518 .glyphicon-fast-forward:before {
518 .glyphicon-fast-forward:before {
519 content: "\e076";
519 content: "\e076";
520 }
520 }
521 .glyphicon-step-forward:before {
521 .glyphicon-step-forward:before {
522 content: "\e077";
522 content: "\e077";
523 }
523 }
524 .glyphicon-eject:before {
524 .glyphicon-eject:before {
525 content: "\e078";
525 content: "\e078";
526 }
526 }
527 .glyphicon-chevron-left:before {
527 .glyphicon-chevron-left:before {
528 content: "\e079";
528 content: "\e079";
529 }
529 }
530 .glyphicon-chevron-right:before {
530 .glyphicon-chevron-right:before {
531 content: "\e080";
531 content: "\e080";
532 }
532 }
533 .glyphicon-plus-sign:before {
533 .glyphicon-plus-sign:before {
534 content: "\e081";
534 content: "\e081";
535 }
535 }
536 .glyphicon-minus-sign:before {
536 .glyphicon-minus-sign:before {
537 content: "\e082";
537 content: "\e082";
538 }
538 }
539 .glyphicon-remove-sign:before {
539 .glyphicon-remove-sign:before {
540 content: "\e083";
540 content: "\e083";
541 }
541 }
542 .glyphicon-ok-sign:before {
542 .glyphicon-ok-sign:before {
543 content: "\e084";
543 content: "\e084";
544 }
544 }
545 .glyphicon-question-sign:before {
545 .glyphicon-question-sign:before {
546 content: "\e085";
546 content: "\e085";
547 }
547 }
548 .glyphicon-info-sign:before {
548 .glyphicon-info-sign:before {
549 content: "\e086";
549 content: "\e086";
550 }
550 }
551 .glyphicon-screenshot:before {
551 .glyphicon-screenshot:before {
552 content: "\e087";
552 content: "\e087";
553 }
553 }
554 .glyphicon-remove-circle:before {
554 .glyphicon-remove-circle:before {
555 content: "\e088";
555 content: "\e088";
556 }
556 }
557 .glyphicon-ok-circle:before {
557 .glyphicon-ok-circle:before {
558 content: "\e089";
558 content: "\e089";
559 }
559 }
560 .glyphicon-ban-circle:before {
560 .glyphicon-ban-circle:before {
561 content: "\e090";
561 content: "\e090";
562 }
562 }
563 .glyphicon-arrow-left:before {
563 .glyphicon-arrow-left:before {
564 content: "\e091";
564 content: "\e091";
565 }
565 }
566 .glyphicon-arrow-right:before {
566 .glyphicon-arrow-right:before {
567 content: "\e092";
567 content: "\e092";
568 }
568 }
569 .glyphicon-arrow-up:before {
569 .glyphicon-arrow-up:before {
570 content: "\e093";
570 content: "\e093";
571 }
571 }
572 .glyphicon-arrow-down:before {
572 .glyphicon-arrow-down:before {
573 content: "\e094";
573 content: "\e094";
574 }
574 }
575 .glyphicon-share-alt:before {
575 .glyphicon-share-alt:before {
576 content: "\e095";
576 content: "\e095";
577 }
577 }
578 .glyphicon-resize-full:before {
578 .glyphicon-resize-full:before {
579 content: "\e096";
579 content: "\e096";
580 }
580 }
581 .glyphicon-resize-small:before {
581 .glyphicon-resize-small:before {
582 content: "\e097";
582 content: "\e097";
583 }
583 }
584 .glyphicon-exclamation-sign:before {
584 .glyphicon-exclamation-sign:before {
585 content: "\e101";
585 content: "\e101";
586 }
586 }
587 .glyphicon-gift:before {
587 .glyphicon-gift:before {
588 content: "\e102";
588 content: "\e102";
589 }
589 }
590 .glyphicon-leaf:before {
590 .glyphicon-leaf:before {
591 content: "\e103";
591 content: "\e103";
592 }
592 }
593 .glyphicon-fire:before {
593 .glyphicon-fire:before {
594 content: "\e104";
594 content: "\e104";
595 }
595 }
596 .glyphicon-eye-open:before {
596 .glyphicon-eye-open:before {
597 content: "\e105";
597 content: "\e105";
598 }
598 }
599 .glyphicon-eye-close:before {
599 .glyphicon-eye-close:before {
600 content: "\e106";
600 content: "\e106";
601 }
601 }
602 .glyphicon-warning-sign:before {
602 .glyphicon-warning-sign:before {
603 content: "\e107";
603 content: "\e107";
604 }
604 }
605 .glyphicon-plane:before {
605 .glyphicon-plane:before {
606 content: "\e108";
606 content: "\e108";
607 }
607 }
608 .glyphicon-calendar:before {
608 .glyphicon-calendar:before {
609 content: "\e109";
609 content: "\e109";
610 }
610 }
611 .glyphicon-random:before {
611 .glyphicon-random:before {
612 content: "\e110";
612 content: "\e110";
613 }
613 }
614 .glyphicon-comment:before {
614 .glyphicon-comment:before {
615 content: "\e111";
615 content: "\e111";
616 }
616 }
617 .glyphicon-magnet:before {
617 .glyphicon-magnet:before {
618 content: "\e112";
618 content: "\e112";
619 }
619 }
620 .glyphicon-chevron-up:before {
620 .glyphicon-chevron-up:before {
621 content: "\e113";
621 content: "\e113";
622 }
622 }
623 .glyphicon-chevron-down:before {
623 .glyphicon-chevron-down:before {
624 content: "\e114";
624 content: "\e114";
625 }
625 }
626 .glyphicon-retweet:before {
626 .glyphicon-retweet:before {
627 content: "\e115";
627 content: "\e115";
628 }
628 }
629 .glyphicon-shopping-cart:before {
629 .glyphicon-shopping-cart:before {
630 content: "\e116";
630 content: "\e116";
631 }
631 }
632 .glyphicon-folder-close:before {
632 .glyphicon-folder-close:before {
633 content: "\e117";
633 content: "\e117";
634 }
634 }
635 .glyphicon-folder-open:before {
635 .glyphicon-folder-open:before {
636 content: "\e118";
636 content: "\e118";
637 }
637 }
638 .glyphicon-resize-vertical:before {
638 .glyphicon-resize-vertical:before {
639 content: "\e119";
639 content: "\e119";
640 }
640 }
641 .glyphicon-resize-horizontal:before {
641 .glyphicon-resize-horizontal:before {
642 content: "\e120";
642 content: "\e120";
643 }
643 }
644 .glyphicon-hdd:before {
644 .glyphicon-hdd:before {
645 content: "\e121";
645 content: "\e121";
646 }
646 }
647 .glyphicon-bullhorn:before {
647 .glyphicon-bullhorn:before {
648 content: "\e122";
648 content: "\e122";
649 }
649 }
650 .glyphicon-bell:before {
650 .glyphicon-bell:before {
651 content: "\e123";
651 content: "\e123";
652 }
652 }
653 .glyphicon-certificate:before {
653 .glyphicon-certificate:before {
654 content: "\e124";
654 content: "\e124";
655 }
655 }
656 .glyphicon-thumbs-up:before {
656 .glyphicon-thumbs-up:before {
657 content: "\e125";
657 content: "\e125";
658 }
658 }
659 .glyphicon-thumbs-down:before {
659 .glyphicon-thumbs-down:before {
660 content: "\e126";
660 content: "\e126";
661 }
661 }
662 .glyphicon-hand-right:before {
662 .glyphicon-hand-right:before {
663 content: "\e127";
663 content: "\e127";
664 }
664 }
665 .glyphicon-hand-left:before {
665 .glyphicon-hand-left:before {
666 content: "\e128";
666 content: "\e128";
667 }
667 }
668 .glyphicon-hand-up:before {
668 .glyphicon-hand-up:before {
669 content: "\e129";
669 content: "\e129";
670 }
670 }
671 .glyphicon-hand-down:before {
671 .glyphicon-hand-down:before {
672 content: "\e130";
672 content: "\e130";
673 }
673 }
674 .glyphicon-circle-arrow-right:before {
674 .glyphicon-circle-arrow-right:before {
675 content: "\e131";
675 content: "\e131";
676 }
676 }
677 .glyphicon-circle-arrow-left:before {
677 .glyphicon-circle-arrow-left:before {
678 content: "\e132";
678 content: "\e132";
679 }
679 }
680 .glyphicon-circle-arrow-up:before {
680 .glyphicon-circle-arrow-up:before {
681 content: "\e133";
681 content: "\e133";
682 }
682 }
683 .glyphicon-circle-arrow-down:before {
683 .glyphicon-circle-arrow-down:before {
684 content: "\e134";
684 content: "\e134";
685 }
685 }
686 .glyphicon-globe:before {
686 .glyphicon-globe:before {
687 content: "\e135";
687 content: "\e135";
688 }
688 }
689 .glyphicon-wrench:before {
689 .glyphicon-wrench:before {
690 content: "\e136";
690 content: "\e136";
691 }
691 }
692 .glyphicon-tasks:before {
692 .glyphicon-tasks:before {
693 content: "\e137";
693 content: "\e137";
694 }
694 }
695 .glyphicon-filter:before {
695 .glyphicon-filter:before {
696 content: "\e138";
696 content: "\e138";
697 }
697 }
698 .glyphicon-briefcase:before {
698 .glyphicon-briefcase:before {
699 content: "\e139";
699 content: "\e139";
700 }
700 }
701 .glyphicon-fullscreen:before {
701 .glyphicon-fullscreen:before {
702 content: "\e140";
702 content: "\e140";
703 }
703 }
704 .glyphicon-dashboard:before {
704 .glyphicon-dashboard:before {
705 content: "\e141";
705 content: "\e141";
706 }
706 }
707 .glyphicon-paperclip:before {
707 .glyphicon-paperclip:before {
708 content: "\e142";
708 content: "\e142";
709 }
709 }
710 .glyphicon-heart-empty:before {
710 .glyphicon-heart-empty:before {
711 content: "\e143";
711 content: "\e143";
712 }
712 }
713 .glyphicon-link:before {
713 .glyphicon-link:before {
714 content: "\e144";
714 content: "\e144";
715 }
715 }
716 .glyphicon-phone:before {
716 .glyphicon-phone:before {
717 content: "\e145";
717 content: "\e145";
718 }
718 }
719 .glyphicon-pushpin:before {
719 .glyphicon-pushpin:before {
720 content: "\e146";
720 content: "\e146";
721 }
721 }
722 .glyphicon-usd:before {
722 .glyphicon-usd:before {
723 content: "\e148";
723 content: "\e148";
724 }
724 }
725 .glyphicon-gbp:before {
725 .glyphicon-gbp:before {
726 content: "\e149";
726 content: "\e149";
727 }
727 }
728 .glyphicon-sort:before {
728 .glyphicon-sort:before {
729 content: "\e150";
729 content: "\e150";
730 }
730 }
731 .glyphicon-sort-by-alphabet:before {
731 .glyphicon-sort-by-alphabet:before {
732 content: "\e151";
732 content: "\e151";
733 }
733 }
734 .glyphicon-sort-by-alphabet-alt:before {
734 .glyphicon-sort-by-alphabet-alt:before {
735 content: "\e152";
735 content: "\e152";
736 }
736 }
737 .glyphicon-sort-by-order:before {
737 .glyphicon-sort-by-order:before {
738 content: "\e153";
738 content: "\e153";
739 }
739 }
740 .glyphicon-sort-by-order-alt:before {
740 .glyphicon-sort-by-order-alt:before {
741 content: "\e154";
741 content: "\e154";
742 }
742 }
743 .glyphicon-sort-by-attributes:before {
743 .glyphicon-sort-by-attributes:before {
744 content: "\e155";
744 content: "\e155";
745 }
745 }
746 .glyphicon-sort-by-attributes-alt:before {
746 .glyphicon-sort-by-attributes-alt:before {
747 content: "\e156";
747 content: "\e156";
748 }
748 }
749 .glyphicon-unchecked:before {
749 .glyphicon-unchecked:before {
750 content: "\e157";
750 content: "\e157";
751 }
751 }
752 .glyphicon-expand:before {
752 .glyphicon-expand:before {
753 content: "\e158";
753 content: "\e158";
754 }
754 }
755 .glyphicon-collapse-down:before {
755 .glyphicon-collapse-down:before {
756 content: "\e159";
756 content: "\e159";
757 }
757 }
758 .glyphicon-collapse-up:before {
758 .glyphicon-collapse-up:before {
759 content: "\e160";
759 content: "\e160";
760 }
760 }
761 .glyphicon-log-in:before {
761 .glyphicon-log-in:before {
762 content: "\e161";
762 content: "\e161";
763 }
763 }
764 .glyphicon-flash:before {
764 .glyphicon-flash:before {
765 content: "\e162";
765 content: "\e162";
766 }
766 }
767 .glyphicon-log-out:before {
767 .glyphicon-log-out:before {
768 content: "\e163";
768 content: "\e163";
769 }
769 }
770 .glyphicon-new-window:before {
770 .glyphicon-new-window:before {
771 content: "\e164";
771 content: "\e164";
772 }
772 }
773 .glyphicon-record:before {
773 .glyphicon-record:before {
774 content: "\e165";
774 content: "\e165";
775 }
775 }
776 .glyphicon-save:before {
776 .glyphicon-save:before {
777 content: "\e166";
777 content: "\e166";
778 }
778 }
779 .glyphicon-open:before {
779 .glyphicon-open:before {
780 content: "\e167";
780 content: "\e167";
781 }
781 }
782 .glyphicon-saved:before {
782 .glyphicon-saved:before {
783 content: "\e168";
783 content: "\e168";
784 }
784 }
785 .glyphicon-import:before {
785 .glyphicon-import:before {
786 content: "\e169";
786 content: "\e169";
787 }
787 }
788 .glyphicon-export:before {
788 .glyphicon-export:before {
789 content: "\e170";
789 content: "\e170";
790 }
790 }
791 .glyphicon-send:before {
791 .glyphicon-send:before {
792 content: "\e171";
792 content: "\e171";
793 }
793 }
794 .glyphicon-floppy-disk:before {
794 .glyphicon-floppy-disk:before {
795 content: "\e172";
795 content: "\e172";
796 }
796 }
797 .glyphicon-floppy-saved:before {
797 .glyphicon-floppy-saved:before {
798 content: "\e173";
798 content: "\e173";
799 }
799 }
800 .glyphicon-floppy-remove:before {
800 .glyphicon-floppy-remove:before {
801 content: "\e174";
801 content: "\e174";
802 }
802 }
803 .glyphicon-floppy-save:before {
803 .glyphicon-floppy-save:before {
804 content: "\e175";
804 content: "\e175";
805 }
805 }
806 .glyphicon-floppy-open:before {
806 .glyphicon-floppy-open:before {
807 content: "\e176";
807 content: "\e176";
808 }
808 }
809 .glyphicon-credit-card:before {
809 .glyphicon-credit-card:before {
810 content: "\e177";
810 content: "\e177";
811 }
811 }
812 .glyphicon-transfer:before {
812 .glyphicon-transfer:before {
813 content: "\e178";
813 content: "\e178";
814 }
814 }
815 .glyphicon-cutlery:before {
815 .glyphicon-cutlery:before {
816 content: "\e179";
816 content: "\e179";
817 }
817 }
818 .glyphicon-header:before {
818 .glyphicon-header:before {
819 content: "\e180";
819 content: "\e180";
820 }
820 }
821 .glyphicon-compressed:before {
821 .glyphicon-compressed:before {
822 content: "\e181";
822 content: "\e181";
823 }
823 }
824 .glyphicon-earphone:before {
824 .glyphicon-earphone:before {
825 content: "\e182";
825 content: "\e182";
826 }
826 }
827 .glyphicon-phone-alt:before {
827 .glyphicon-phone-alt:before {
828 content: "\e183";
828 content: "\e183";
829 }
829 }
830 .glyphicon-tower:before {
830 .glyphicon-tower:before {
831 content: "\e184";
831 content: "\e184";
832 }
832 }
833 .glyphicon-stats:before {
833 .glyphicon-stats:before {
834 content: "\e185";
834 content: "\e185";
835 }
835 }
836 .glyphicon-sd-video:before {
836 .glyphicon-sd-video:before {
837 content: "\e186";
837 content: "\e186";
838 }
838 }
839 .glyphicon-hd-video:before {
839 .glyphicon-hd-video:before {
840 content: "\e187";
840 content: "\e187";
841 }
841 }
842 .glyphicon-subtitles:before {
842 .glyphicon-subtitles:before {
843 content: "\e188";
843 content: "\e188";
844 }
844 }
845 .glyphicon-sound-stereo:before {
845 .glyphicon-sound-stereo:before {
846 content: "\e189";
846 content: "\e189";
847 }
847 }
848 .glyphicon-sound-dolby:before {
848 .glyphicon-sound-dolby:before {
849 content: "\e190";
849 content: "\e190";
850 }
850 }
851 .glyphicon-sound-5-1:before {
851 .glyphicon-sound-5-1:before {
852 content: "\e191";
852 content: "\e191";
853 }
853 }
854 .glyphicon-sound-6-1:before {
854 .glyphicon-sound-6-1:before {
855 content: "\e192";
855 content: "\e192";
856 }
856 }
857 .glyphicon-sound-7-1:before {
857 .glyphicon-sound-7-1:before {
858 content: "\e193";
858 content: "\e193";
859 }
859 }
860 .glyphicon-copyright-mark:before {
860 .glyphicon-copyright-mark:before {
861 content: "\e194";
861 content: "\e194";
862 }
862 }
863 .glyphicon-registration-mark:before {
863 .glyphicon-registration-mark:before {
864 content: "\e195";
864 content: "\e195";
865 }
865 }
866 .glyphicon-cloud-download:before {
866 .glyphicon-cloud-download:before {
867 content: "\e197";
867 content: "\e197";
868 }
868 }
869 .glyphicon-cloud-upload:before {
869 .glyphicon-cloud-upload:before {
870 content: "\e198";
870 content: "\e198";
871 }
871 }
872 .glyphicon-tree-conifer:before {
872 .glyphicon-tree-conifer:before {
873 content: "\e199";
873 content: "\e199";
874 }
874 }
875 .glyphicon-tree-deciduous:before {
875 .glyphicon-tree-deciduous:before {
876 content: "\e200";
876 content: "\e200";
877 }
877 }
878 * {
878 * {
879 -webkit-box-sizing: border-box;
879 -webkit-box-sizing: border-box;
880 -moz-box-sizing: border-box;
880 -moz-box-sizing: border-box;
881 box-sizing: border-box;
881 box-sizing: border-box;
882 }
882 }
883 *:before,
883 *:before,
884 *:after {
884 *:after {
885 -webkit-box-sizing: border-box;
885 -webkit-box-sizing: border-box;
886 -moz-box-sizing: border-box;
886 -moz-box-sizing: border-box;
887 box-sizing: border-box;
887 box-sizing: border-box;
888 }
888 }
889 html {
889 html {
890 font-size: 10px;
890 font-size: 10px;
891 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
891 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
892 }
892 }
893 body {
893 body {
894 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
894 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
895 font-size: 13px;
895 font-size: 13px;
896 line-height: 1.42857143;
896 line-height: 1.42857143;
897 color: #000000;
897 color: #000000;
898 background-color: #ffffff;
898 background-color: #ffffff;
899 }
899 }
900 input,
900 input,
901 button,
901 button,
902 select,
902 select,
903 textarea {
903 textarea {
904 font-family: inherit;
904 font-family: inherit;
905 font-size: inherit;
905 font-size: inherit;
906 line-height: inherit;
906 line-height: inherit;
907 }
907 }
908 a {
908 a {
909 color: #337ab7;
909 color: #337ab7;
910 text-decoration: none;
910 text-decoration: none;
911 }
911 }
912 a:hover,
912 a:hover,
913 a:focus {
913 a:focus {
914 color: #23527c;
914 color: #23527c;
915 text-decoration: underline;
915 text-decoration: underline;
916 }
916 }
917 a:focus {
917 a:focus {
918 outline: thin dotted;
918 outline: thin dotted;
919 outline: 5px auto -webkit-focus-ring-color;
919 outline: 5px auto -webkit-focus-ring-color;
920 outline-offset: -2px;
920 outline-offset: -2px;
921 }
921 }
922 figure {
922 figure {
923 margin: 0;
923 margin: 0;
924 }
924 }
925 img {
925 img {
926 vertical-align: middle;
926 vertical-align: middle;
927 }
927 }
928 .img-responsive,
928 .img-responsive,
929 .thumbnail > img,
929 .thumbnail > img,
930 .thumbnail a > img,
930 .thumbnail a > img,
931 .carousel-inner > .item > img,
931 .carousel-inner > .item > img,
932 .carousel-inner > .item > a > img {
932 .carousel-inner > .item > a > img {
933 display: block;
933 display: block;
934 max-width: 100%;
934 max-width: 100%;
935 height: auto;
935 height: auto;
936 }
936 }
937 .img-rounded {
937 .img-rounded {
938 border-radius: 3px;
938 border-radius: 3px;
939 }
939 }
940 .img-thumbnail {
940 .img-thumbnail {
941 padding: 4px;
941 padding: 4px;
942 line-height: 1.42857143;
942 line-height: 1.42857143;
943 background-color: #ffffff;
943 background-color: #ffffff;
944 border: 1px solid #dddddd;
944 border: 1px solid #dddddd;
945 border-radius: 2px;
945 border-radius: 2px;
946 -webkit-transition: all 0.2s ease-in-out;
946 -webkit-transition: all 0.2s ease-in-out;
947 -o-transition: all 0.2s ease-in-out;
947 -o-transition: all 0.2s ease-in-out;
948 transition: all 0.2s ease-in-out;
948 transition: all 0.2s ease-in-out;
949 display: inline-block;
949 display: inline-block;
950 max-width: 100%;
950 max-width: 100%;
951 height: auto;
951 height: auto;
952 }
952 }
953 .img-circle {
953 .img-circle {
954 border-radius: 50%;
954 border-radius: 50%;
955 }
955 }
956 hr {
956 hr {
957 margin-top: 18px;
957 margin-top: 18px;
958 margin-bottom: 18px;
958 margin-bottom: 18px;
959 border: 0;
959 border: 0;
960 border-top: 1px solid #eeeeee;
960 border-top: 1px solid #eeeeee;
961 }
961 }
962 .sr-only {
962 .sr-only {
963 position: absolute;
963 position: absolute;
964 width: 1px;
964 width: 1px;
965 height: 1px;
965 height: 1px;
966 margin: -1px;
966 margin: -1px;
967 padding: 0;
967 padding: 0;
968 overflow: hidden;
968 overflow: hidden;
969 clip: rect(0, 0, 0, 0);
969 clip: rect(0, 0, 0, 0);
970 border: 0;
970 border: 0;
971 }
971 }
972 .sr-only-focusable:active,
972 .sr-only-focusable:active,
973 .sr-only-focusable:focus {
973 .sr-only-focusable:focus {
974 position: static;
974 position: static;
975 width: auto;
975 width: auto;
976 height: auto;
976 height: auto;
977 margin: 0;
977 margin: 0;
978 overflow: visible;
978 overflow: visible;
979 clip: auto;
979 clip: auto;
980 }
980 }
981 h1,
981 h1,
982 h2,
982 h2,
983 h3,
983 h3,
984 h4,
984 h4,
985 h5,
985 h5,
986 h6,
986 h6,
987 .h1,
987 .h1,
988 .h2,
988 .h2,
989 .h3,
989 .h3,
990 .h4,
990 .h4,
991 .h5,
991 .h5,
992 .h6 {
992 .h6 {
993 font-family: inherit;
993 font-family: inherit;
994 font-weight: 500;
994 font-weight: 500;
995 line-height: 1.1;
995 line-height: 1.1;
996 color: inherit;
996 color: inherit;
997 }
997 }
998 h1 small,
998 h1 small,
999 h2 small,
999 h2 small,
1000 h3 small,
1000 h3 small,
1001 h4 small,
1001 h4 small,
1002 h5 small,
1002 h5 small,
1003 h6 small,
1003 h6 small,
1004 .h1 small,
1004 .h1 small,
1005 .h2 small,
1005 .h2 small,
1006 .h3 small,
1006 .h3 small,
1007 .h4 small,
1007 .h4 small,
1008 .h5 small,
1008 .h5 small,
1009 .h6 small,
1009 .h6 small,
1010 h1 .small,
1010 h1 .small,
1011 h2 .small,
1011 h2 .small,
1012 h3 .small,
1012 h3 .small,
1013 h4 .small,
1013 h4 .small,
1014 h5 .small,
1014 h5 .small,
1015 h6 .small,
1015 h6 .small,
1016 .h1 .small,
1016 .h1 .small,
1017 .h2 .small,
1017 .h2 .small,
1018 .h3 .small,
1018 .h3 .small,
1019 .h4 .small,
1019 .h4 .small,
1020 .h5 .small,
1020 .h5 .small,
1021 .h6 .small {
1021 .h6 .small {
1022 font-weight: normal;
1022 font-weight: normal;
1023 line-height: 1;
1023 line-height: 1;
1024 color: #777777;
1024 color: #777777;
1025 }
1025 }
1026 h1,
1026 h1,
1027 .h1,
1027 .h1,
1028 h2,
1028 h2,
1029 .h2,
1029 .h2,
1030 h3,
1030 h3,
1031 .h3 {
1031 .h3 {
1032 margin-top: 18px;
1032 margin-top: 18px;
1033 margin-bottom: 9px;
1033 margin-bottom: 9px;
1034 }
1034 }
1035 h1 small,
1035 h1 small,
1036 .h1 small,
1036 .h1 small,
1037 h2 small,
1037 h2 small,
1038 .h2 small,
1038 .h2 small,
1039 h3 small,
1039 h3 small,
1040 .h3 small,
1040 .h3 small,
1041 h1 .small,
1041 h1 .small,
1042 .h1 .small,
1042 .h1 .small,
1043 h2 .small,
1043 h2 .small,
1044 .h2 .small,
1044 .h2 .small,
1045 h3 .small,
1045 h3 .small,
1046 .h3 .small {
1046 .h3 .small {
1047 font-size: 65%;
1047 font-size: 65%;
1048 }
1048 }
1049 h4,
1049 h4,
1050 .h4,
1050 .h4,
1051 h5,
1051 h5,
1052 .h5,
1052 .h5,
1053 h6,
1053 h6,
1054 .h6 {
1054 .h6 {
1055 margin-top: 9px;
1055 margin-top: 9px;
1056 margin-bottom: 9px;
1056 margin-bottom: 9px;
1057 }
1057 }
1058 h4 small,
1058 h4 small,
1059 .h4 small,
1059 .h4 small,
1060 h5 small,
1060 h5 small,
1061 .h5 small,
1061 .h5 small,
1062 h6 small,
1062 h6 small,
1063 .h6 small,
1063 .h6 small,
1064 h4 .small,
1064 h4 .small,
1065 .h4 .small,
1065 .h4 .small,
1066 h5 .small,
1066 h5 .small,
1067 .h5 .small,
1067 .h5 .small,
1068 h6 .small,
1068 h6 .small,
1069 .h6 .small {
1069 .h6 .small {
1070 font-size: 75%;
1070 font-size: 75%;
1071 }
1071 }
1072 h1,
1072 h1,
1073 .h1 {
1073 .h1 {
1074 font-size: 33px;
1074 font-size: 33px;
1075 }
1075 }
1076 h2,
1076 h2,
1077 .h2 {
1077 .h2 {
1078 font-size: 27px;
1078 font-size: 27px;
1079 }
1079 }
1080 h3,
1080 h3,
1081 .h3 {
1081 .h3 {
1082 font-size: 23px;
1082 font-size: 23px;
1083 }
1083 }
1084 h4,
1084 h4,
1085 .h4 {
1085 .h4 {
1086 font-size: 17px;
1086 font-size: 17px;
1087 }
1087 }
1088 h5,
1088 h5,
1089 .h5 {
1089 .h5 {
1090 font-size: 13px;
1090 font-size: 13px;
1091 }
1091 }
1092 h6,
1092 h6,
1093 .h6 {
1093 .h6 {
1094 font-size: 12px;
1094 font-size: 12px;
1095 }
1095 }
1096 p {
1096 p {
1097 margin: 0 0 9px;
1097 margin: 0 0 9px;
1098 }
1098 }
1099 .lead {
1099 .lead {
1100 margin-bottom: 18px;
1100 margin-bottom: 18px;
1101 font-size: 14px;
1101 font-size: 14px;
1102 font-weight: 300;
1102 font-weight: 300;
1103 line-height: 1.4;
1103 line-height: 1.4;
1104 }
1104 }
1105 @media (min-width: 768px) {
1105 @media (min-width: 768px) {
1106 .lead {
1106 .lead {
1107 font-size: 19.5px;
1107 font-size: 19.5px;
1108 }
1108 }
1109 }
1109 }
1110 small,
1110 small,
1111 .small {
1111 .small {
1112 font-size: 92%;
1112 font-size: 92%;
1113 }
1113 }
1114 mark,
1114 mark,
1115 .mark {
1115 .mark {
1116 background-color: #fcf8e3;
1116 background-color: #fcf8e3;
1117 padding: .2em;
1117 padding: .2em;
1118 }
1118 }
1119 .text-left {
1119 .text-left {
1120 text-align: left;
1120 text-align: left;
1121 }
1121 }
1122 .text-right {
1122 .text-right {
1123 text-align: right;
1123 text-align: right;
1124 }
1124 }
1125 .text-center {
1125 .text-center {
1126 text-align: center;
1126 text-align: center;
1127 }
1127 }
1128 .text-justify {
1128 .text-justify {
1129 text-align: justify;
1129 text-align: justify;
1130 }
1130 }
1131 .text-nowrap {
1131 .text-nowrap {
1132 white-space: nowrap;
1132 white-space: nowrap;
1133 }
1133 }
1134 .text-lowercase {
1134 .text-lowercase {
1135 text-transform: lowercase;
1135 text-transform: lowercase;
1136 }
1136 }
1137 .text-uppercase {
1137 .text-uppercase {
1138 text-transform: uppercase;
1138 text-transform: uppercase;
1139 }
1139 }
1140 .text-capitalize {
1140 .text-capitalize {
1141 text-transform: capitalize;
1141 text-transform: capitalize;
1142 }
1142 }
1143 .text-muted {
1143 .text-muted {
1144 color: #777777;
1144 color: #777777;
1145 }
1145 }
1146 .text-primary {
1146 .text-primary {
1147 color: #337ab7;
1147 color: #337ab7;
1148 }
1148 }
1149 a.text-primary:hover {
1149 a.text-primary:hover {
1150 color: #286090;
1150 color: #286090;
1151 }
1151 }
1152 .text-success {
1152 .text-success {
1153 color: #3c763d;
1153 color: #3c763d;
1154 }
1154 }
1155 a.text-success:hover {
1155 a.text-success:hover {
1156 color: #2b542c;
1156 color: #2b542c;
1157 }
1157 }
1158 .text-info {
1158 .text-info {
1159 color: #31708f;
1159 color: #31708f;
1160 }
1160 }
1161 a.text-info:hover {
1161 a.text-info:hover {
1162 color: #245269;
1162 color: #245269;
1163 }
1163 }
1164 .text-warning {
1164 .text-warning {
1165 color: #8a6d3b;
1165 color: #8a6d3b;
1166 }
1166 }
1167 a.text-warning:hover {
1167 a.text-warning:hover {
1168 color: #66512c;
1168 color: #66512c;
1169 }
1169 }
1170 .text-danger {
1170 .text-danger {
1171 color: #a94442;
1171 color: #a94442;
1172 }
1172 }
1173 a.text-danger:hover {
1173 a.text-danger:hover {
1174 color: #843534;
1174 color: #843534;
1175 }
1175 }
1176 .bg-primary {
1176 .bg-primary {
1177 color: #fff;
1177 color: #fff;
1178 background-color: #337ab7;
1178 background-color: #337ab7;
1179 }
1179 }
1180 a.bg-primary:hover {
1180 a.bg-primary:hover {
1181 background-color: #286090;
1181 background-color: #286090;
1182 }
1182 }
1183 .bg-success {
1183 .bg-success {
1184 background-color: #dff0d8;
1184 background-color: #dff0d8;
1185 }
1185 }
1186 a.bg-success:hover {
1186 a.bg-success:hover {
1187 background-color: #c1e2b3;
1187 background-color: #c1e2b3;
1188 }
1188 }
1189 .bg-info {
1189 .bg-info {
1190 background-color: #d9edf7;
1190 background-color: #d9edf7;
1191 }
1191 }
1192 a.bg-info:hover {
1192 a.bg-info:hover {
1193 background-color: #afd9ee;
1193 background-color: #afd9ee;
1194 }
1194 }
1195 .bg-warning {
1195 .bg-warning {
1196 background-color: #fcf8e3;
1196 background-color: #fcf8e3;
1197 }
1197 }
1198 a.bg-warning:hover {
1198 a.bg-warning:hover {
1199 background-color: #f7ecb5;
1199 background-color: #f7ecb5;
1200 }
1200 }
1201 .bg-danger {
1201 .bg-danger {
1202 background-color: #f2dede;
1202 background-color: #f2dede;
1203 }
1203 }
1204 a.bg-danger:hover {
1204 a.bg-danger:hover {
1205 background-color: #e4b9b9;
1205 background-color: #e4b9b9;
1206 }
1206 }
1207 .page-header {
1207 .page-header {
1208 padding-bottom: 8px;
1208 padding-bottom: 8px;
1209 margin: 36px 0 18px;
1209 margin: 36px 0 18px;
1210 border-bottom: 1px solid #eeeeee;
1210 border-bottom: 1px solid #eeeeee;
1211 }
1211 }
1212 ul,
1212 ul,
1213 ol {
1213 ol {
1214 margin-top: 0;
1214 margin-top: 0;
1215 margin-bottom: 9px;
1215 margin-bottom: 9px;
1216 }
1216 }
1217 ul ul,
1217 ul ul,
1218 ol ul,
1218 ol ul,
1219 ul ol,
1219 ul ol,
1220 ol ol {
1220 ol ol {
1221 margin-bottom: 0;
1221 margin-bottom: 0;
1222 }
1222 }
1223 .list-unstyled {
1223 .list-unstyled {
1224 padding-left: 0;
1224 padding-left: 0;
1225 list-style: none;
1225 list-style: none;
1226 }
1226 }
1227 .list-inline {
1227 .list-inline {
1228 padding-left: 0;
1228 padding-left: 0;
1229 list-style: none;
1229 list-style: none;
1230 margin-left: -5px;
1230 margin-left: -5px;
1231 }
1231 }
1232 .list-inline > li {
1232 .list-inline > li {
1233 display: inline-block;
1233 display: inline-block;
1234 padding-left: 5px;
1234 padding-left: 5px;
1235 padding-right: 5px;
1235 padding-right: 5px;
1236 }
1236 }
1237 dl {
1237 dl {
1238 margin-top: 0;
1238 margin-top: 0;
1239 margin-bottom: 18px;
1239 margin-bottom: 18px;
1240 }
1240 }
1241 dt,
1241 dt,
1242 dd {
1242 dd {
1243 line-height: 1.42857143;
1243 line-height: 1.42857143;
1244 }
1244 }
1245 dt {
1245 dt {
1246 font-weight: bold;
1246 font-weight: bold;
1247 }
1247 }
1248 dd {
1248 dd {
1249 margin-left: 0;
1249 margin-left: 0;
1250 }
1250 }
1251 @media (min-width: 541px) {
1251 @media (min-width: 541px) {
1252 .dl-horizontal dt {
1252 .dl-horizontal dt {
1253 float: left;
1253 float: left;
1254 width: 160px;
1254 width: 160px;
1255 clear: left;
1255 clear: left;
1256 text-align: right;
1256 text-align: right;
1257 overflow: hidden;
1257 overflow: hidden;
1258 text-overflow: ellipsis;
1258 text-overflow: ellipsis;
1259 white-space: nowrap;
1259 white-space: nowrap;
1260 }
1260 }
1261 .dl-horizontal dd {
1261 .dl-horizontal dd {
1262 margin-left: 180px;
1262 margin-left: 180px;
1263 }
1263 }
1264 }
1264 }
1265 abbr[title],
1265 abbr[title],
1266 abbr[data-original-title] {
1266 abbr[data-original-title] {
1267 cursor: help;
1267 cursor: help;
1268 border-bottom: 1px dotted #777777;
1268 border-bottom: 1px dotted #777777;
1269 }
1269 }
1270 .initialism {
1270 .initialism {
1271 font-size: 90%;
1271 font-size: 90%;
1272 text-transform: uppercase;
1272 text-transform: uppercase;
1273 }
1273 }
1274 blockquote {
1274 blockquote {
1275 padding: 9px 18px;
1275 padding: 9px 18px;
1276 margin: 0 0 18px;
1276 margin: 0 0 18px;
1277 font-size: inherit;
1277 font-size: inherit;
1278 border-left: 5px solid #eeeeee;
1278 border-left: 5px solid #eeeeee;
1279 }
1279 }
1280 blockquote p:last-child,
1280 blockquote p:last-child,
1281 blockquote ul:last-child,
1281 blockquote ul:last-child,
1282 blockquote ol:last-child {
1282 blockquote ol:last-child {
1283 margin-bottom: 0;
1283 margin-bottom: 0;
1284 }
1284 }
1285 blockquote footer,
1285 blockquote footer,
1286 blockquote small,
1286 blockquote small,
1287 blockquote .small {
1287 blockquote .small {
1288 display: block;
1288 display: block;
1289 font-size: 80%;
1289 font-size: 80%;
1290 line-height: 1.42857143;
1290 line-height: 1.42857143;
1291 color: #777777;
1291 color: #777777;
1292 }
1292 }
1293 blockquote footer:before,
1293 blockquote footer:before,
1294 blockquote small:before,
1294 blockquote small:before,
1295 blockquote .small:before {
1295 blockquote .small:before {
1296 content: '\2014 \00A0';
1296 content: '\2014 \00A0';
1297 }
1297 }
1298 .blockquote-reverse,
1298 .blockquote-reverse,
1299 blockquote.pull-right {
1299 blockquote.pull-right {
1300 padding-right: 15px;
1300 padding-right: 15px;
1301 padding-left: 0;
1301 padding-left: 0;
1302 border-right: 5px solid #eeeeee;
1302 border-right: 5px solid #eeeeee;
1303 border-left: 0;
1303 border-left: 0;
1304 text-align: right;
1304 text-align: right;
1305 }
1305 }
1306 .blockquote-reverse footer:before,
1306 .blockquote-reverse footer:before,
1307 blockquote.pull-right footer:before,
1307 blockquote.pull-right footer:before,
1308 .blockquote-reverse small:before,
1308 .blockquote-reverse small:before,
1309 blockquote.pull-right small:before,
1309 blockquote.pull-right small:before,
1310 .blockquote-reverse .small:before,
1310 .blockquote-reverse .small:before,
1311 blockquote.pull-right .small:before {
1311 blockquote.pull-right .small:before {
1312 content: '';
1312 content: '';
1313 }
1313 }
1314 .blockquote-reverse footer:after,
1314 .blockquote-reverse footer:after,
1315 blockquote.pull-right footer:after,
1315 blockquote.pull-right footer:after,
1316 .blockquote-reverse small:after,
1316 .blockquote-reverse small:after,
1317 blockquote.pull-right small:after,
1317 blockquote.pull-right small:after,
1318 .blockquote-reverse .small:after,
1318 .blockquote-reverse .small:after,
1319 blockquote.pull-right .small:after {
1319 blockquote.pull-right .small:after {
1320 content: '\00A0 \2014';
1320 content: '\00A0 \2014';
1321 }
1321 }
1322 address {
1322 address {
1323 margin-bottom: 18px;
1323 margin-bottom: 18px;
1324 font-style: normal;
1324 font-style: normal;
1325 line-height: 1.42857143;
1325 line-height: 1.42857143;
1326 }
1326 }
1327 code,
1327 code,
1328 kbd,
1328 kbd,
1329 pre,
1329 pre,
1330 samp {
1330 samp {
1331 font-family: monospace;
1331 font-family: monospace;
1332 }
1332 }
1333 code {
1333 code {
1334 padding: 2px 4px;
1334 padding: 2px 4px;
1335 font-size: 90%;
1335 font-size: 90%;
1336 color: #c7254e;
1336 color: #c7254e;
1337 background-color: #f9f2f4;
1337 background-color: #f9f2f4;
1338 border-radius: 2px;
1338 border-radius: 2px;
1339 }
1339 }
1340 kbd {
1340 kbd {
1341 padding: 2px 4px;
1341 padding: 2px 4px;
1342 font-size: 90%;
1342 font-size: 90%;
1343 color: #ffffff;
1343 color: #ffffff;
1344 background-color: #333333;
1344 background-color: #333333;
1345 border-radius: 1px;
1345 border-radius: 1px;
1346 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1346 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1347 }
1347 }
1348 kbd kbd {
1348 kbd kbd {
1349 padding: 0;
1349 padding: 0;
1350 font-size: 100%;
1350 font-size: 100%;
1351 font-weight: bold;
1351 font-weight: bold;
1352 box-shadow: none;
1352 box-shadow: none;
1353 }
1353 }
1354 pre {
1354 pre {
1355 display: block;
1355 display: block;
1356 padding: 8.5px;
1356 padding: 8.5px;
1357 margin: 0 0 9px;
1357 margin: 0 0 9px;
1358 font-size: 12px;
1358 font-size: 12px;
1359 line-height: 1.42857143;
1359 line-height: 1.42857143;
1360 word-break: break-all;
1360 word-break: break-all;
1361 word-wrap: break-word;
1361 word-wrap: break-word;
1362 color: #333333;
1362 color: #333333;
1363 background-color: #f5f5f5;
1363 background-color: #f5f5f5;
1364 border: 1px solid #cccccc;
1364 border: 1px solid #cccccc;
1365 border-radius: 2px;
1365 border-radius: 2px;
1366 }
1366 }
1367 pre code {
1367 pre code {
1368 padding: 0;
1368 padding: 0;
1369 font-size: inherit;
1369 font-size: inherit;
1370 color: inherit;
1370 color: inherit;
1371 white-space: pre-wrap;
1371 white-space: pre-wrap;
1372 background-color: transparent;
1372 background-color: transparent;
1373 border-radius: 0;
1373 border-radius: 0;
1374 }
1374 }
1375 .pre-scrollable {
1375 .pre-scrollable {
1376 max-height: 340px;
1376 max-height: 340px;
1377 overflow-y: scroll;
1377 overflow-y: scroll;
1378 }
1378 }
1379 .container {
1379 .container {
1380 margin-right: auto;
1380 margin-right: auto;
1381 margin-left: auto;
1381 margin-left: auto;
1382 padding-left: 0px;
1382 padding-left: 0px;
1383 padding-right: 0px;
1383 padding-right: 0px;
1384 }
1384 }
1385 @media (min-width: 768px) {
1385 @media (min-width: 768px) {
1386 .container {
1386 .container {
1387 width: 768px;
1387 width: 768px;
1388 }
1388 }
1389 }
1389 }
1390 @media (min-width: 992px) {
1390 @media (min-width: 992px) {
1391 .container {
1391 .container {
1392 width: 940px;
1392 width: 940px;
1393 }
1393 }
1394 }
1394 }
1395 @media (min-width: 1200px) {
1395 @media (min-width: 1200px) {
1396 .container {
1396 .container {
1397 width: 1140px;
1397 width: 1140px;
1398 }
1398 }
1399 }
1399 }
1400 .container-fluid {
1400 .container-fluid {
1401 margin-right: auto;
1401 margin-right: auto;
1402 margin-left: auto;
1402 margin-left: auto;
1403 padding-left: 0px;
1403 padding-left: 0px;
1404 padding-right: 0px;
1404 padding-right: 0px;
1405 }
1405 }
1406 .row {
1406 .row {
1407 margin-left: 0px;
1407 margin-left: 0px;
1408 margin-right: 0px;
1408 margin-right: 0px;
1409 }
1409 }
1410 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1410 .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
1411 position: relative;
1411 position: relative;
1412 min-height: 1px;
1412 min-height: 1px;
1413 padding-left: 0px;
1413 padding-left: 0px;
1414 padding-right: 0px;
1414 padding-right: 0px;
1415 }
1415 }
1416 .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
1416 .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
1417 float: left;
1417 float: left;
1418 }
1418 }
1419 .col-xs-12 {
1419 .col-xs-12 {
1420 width: 100%;
1420 width: 100%;
1421 }
1421 }
1422 .col-xs-11 {
1422 .col-xs-11 {
1423 width: 91.66666667%;
1423 width: 91.66666667%;
1424 }
1424 }
1425 .col-xs-10 {
1425 .col-xs-10 {
1426 width: 83.33333333%;
1426 width: 83.33333333%;
1427 }
1427 }
1428 .col-xs-9 {
1428 .col-xs-9 {
1429 width: 75%;
1429 width: 75%;
1430 }
1430 }
1431 .col-xs-8 {
1431 .col-xs-8 {
1432 width: 66.66666667%;
1432 width: 66.66666667%;
1433 }
1433 }
1434 .col-xs-7 {
1434 .col-xs-7 {
1435 width: 58.33333333%;
1435 width: 58.33333333%;
1436 }
1436 }
1437 .col-xs-6 {
1437 .col-xs-6 {
1438 width: 50%;
1438 width: 50%;
1439 }
1439 }
1440 .col-xs-5 {
1440 .col-xs-5 {
1441 width: 41.66666667%;
1441 width: 41.66666667%;
1442 }
1442 }
1443 .col-xs-4 {
1443 .col-xs-4 {
1444 width: 33.33333333%;
1444 width: 33.33333333%;
1445 }
1445 }
1446 .col-xs-3 {
1446 .col-xs-3 {
1447 width: 25%;
1447 width: 25%;
1448 }
1448 }
1449 .col-xs-2 {
1449 .col-xs-2 {
1450 width: 16.66666667%;
1450 width: 16.66666667%;
1451 }
1451 }
1452 .col-xs-1 {
1452 .col-xs-1 {
1453 width: 8.33333333%;
1453 width: 8.33333333%;
1454 }
1454 }
1455 .col-xs-pull-12 {
1455 .col-xs-pull-12 {
1456 right: 100%;
1456 right: 100%;
1457 }
1457 }
1458 .col-xs-pull-11 {
1458 .col-xs-pull-11 {
1459 right: 91.66666667%;
1459 right: 91.66666667%;
1460 }
1460 }
1461 .col-xs-pull-10 {
1461 .col-xs-pull-10 {
1462 right: 83.33333333%;
1462 right: 83.33333333%;
1463 }
1463 }
1464 .col-xs-pull-9 {
1464 .col-xs-pull-9 {
1465 right: 75%;
1465 right: 75%;
1466 }
1466 }
1467 .col-xs-pull-8 {
1467 .col-xs-pull-8 {
1468 right: 66.66666667%;
1468 right: 66.66666667%;
1469 }
1469 }
1470 .col-xs-pull-7 {
1470 .col-xs-pull-7 {
1471 right: 58.33333333%;
1471 right: 58.33333333%;
1472 }
1472 }
1473 .col-xs-pull-6 {
1473 .col-xs-pull-6 {
1474 right: 50%;
1474 right: 50%;
1475 }
1475 }
1476 .col-xs-pull-5 {
1476 .col-xs-pull-5 {
1477 right: 41.66666667%;
1477 right: 41.66666667%;
1478 }
1478 }
1479 .col-xs-pull-4 {
1479 .col-xs-pull-4 {
1480 right: 33.33333333%;
1480 right: 33.33333333%;
1481 }
1481 }
1482 .col-xs-pull-3 {
1482 .col-xs-pull-3 {
1483 right: 25%;
1483 right: 25%;
1484 }
1484 }
1485 .col-xs-pull-2 {
1485 .col-xs-pull-2 {
1486 right: 16.66666667%;
1486 right: 16.66666667%;
1487 }
1487 }
1488 .col-xs-pull-1 {
1488 .col-xs-pull-1 {
1489 right: 8.33333333%;
1489 right: 8.33333333%;
1490 }
1490 }
1491 .col-xs-pull-0 {
1491 .col-xs-pull-0 {
1492 right: auto;
1492 right: auto;
1493 }
1493 }
1494 .col-xs-push-12 {
1494 .col-xs-push-12 {
1495 left: 100%;
1495 left: 100%;
1496 }
1496 }
1497 .col-xs-push-11 {
1497 .col-xs-push-11 {
1498 left: 91.66666667%;
1498 left: 91.66666667%;
1499 }
1499 }
1500 .col-xs-push-10 {
1500 .col-xs-push-10 {
1501 left: 83.33333333%;
1501 left: 83.33333333%;
1502 }
1502 }
1503 .col-xs-push-9 {
1503 .col-xs-push-9 {
1504 left: 75%;
1504 left: 75%;
1505 }
1505 }
1506 .col-xs-push-8 {
1506 .col-xs-push-8 {
1507 left: 66.66666667%;
1507 left: 66.66666667%;
1508 }
1508 }
1509 .col-xs-push-7 {
1509 .col-xs-push-7 {
1510 left: 58.33333333%;
1510 left: 58.33333333%;
1511 }
1511 }
1512 .col-xs-push-6 {
1512 .col-xs-push-6 {
1513 left: 50%;
1513 left: 50%;
1514 }
1514 }
1515 .col-xs-push-5 {
1515 .col-xs-push-5 {
1516 left: 41.66666667%;
1516 left: 41.66666667%;
1517 }
1517 }
1518 .col-xs-push-4 {
1518 .col-xs-push-4 {
1519 left: 33.33333333%;
1519 left: 33.33333333%;
1520 }
1520 }
1521 .col-xs-push-3 {
1521 .col-xs-push-3 {
1522 left: 25%;
1522 left: 25%;
1523 }
1523 }
1524 .col-xs-push-2 {
1524 .col-xs-push-2 {
1525 left: 16.66666667%;
1525 left: 16.66666667%;
1526 }
1526 }
1527 .col-xs-push-1 {
1527 .col-xs-push-1 {
1528 left: 8.33333333%;
1528 left: 8.33333333%;
1529 }
1529 }
1530 .col-xs-push-0 {
1530 .col-xs-push-0 {
1531 left: auto;
1531 left: auto;
1532 }
1532 }
1533 .col-xs-offset-12 {
1533 .col-xs-offset-12 {
1534 margin-left: 100%;
1534 margin-left: 100%;
1535 }
1535 }
1536 .col-xs-offset-11 {
1536 .col-xs-offset-11 {
1537 margin-left: 91.66666667%;
1537 margin-left: 91.66666667%;
1538 }
1538 }
1539 .col-xs-offset-10 {
1539 .col-xs-offset-10 {
1540 margin-left: 83.33333333%;
1540 margin-left: 83.33333333%;
1541 }
1541 }
1542 .col-xs-offset-9 {
1542 .col-xs-offset-9 {
1543 margin-left: 75%;
1543 margin-left: 75%;
1544 }
1544 }
1545 .col-xs-offset-8 {
1545 .col-xs-offset-8 {
1546 margin-left: 66.66666667%;
1546 margin-left: 66.66666667%;
1547 }
1547 }
1548 .col-xs-offset-7 {
1548 .col-xs-offset-7 {
1549 margin-left: 58.33333333%;
1549 margin-left: 58.33333333%;
1550 }
1550 }
1551 .col-xs-offset-6 {
1551 .col-xs-offset-6 {
1552 margin-left: 50%;
1552 margin-left: 50%;
1553 }
1553 }
1554 .col-xs-offset-5 {
1554 .col-xs-offset-5 {
1555 margin-left: 41.66666667%;
1555 margin-left: 41.66666667%;
1556 }
1556 }
1557 .col-xs-offset-4 {
1557 .col-xs-offset-4 {
1558 margin-left: 33.33333333%;
1558 margin-left: 33.33333333%;
1559 }
1559 }
1560 .col-xs-offset-3 {
1560 .col-xs-offset-3 {
1561 margin-left: 25%;
1561 margin-left: 25%;
1562 }
1562 }
1563 .col-xs-offset-2 {
1563 .col-xs-offset-2 {
1564 margin-left: 16.66666667%;
1564 margin-left: 16.66666667%;
1565 }
1565 }
1566 .col-xs-offset-1 {
1566 .col-xs-offset-1 {
1567 margin-left: 8.33333333%;
1567 margin-left: 8.33333333%;
1568 }
1568 }
1569 .col-xs-offset-0 {
1569 .col-xs-offset-0 {
1570 margin-left: 0%;
1570 margin-left: 0%;
1571 }
1571 }
1572 @media (min-width: 768px) {
1572 @media (min-width: 768px) {
1573 .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
1573 .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
1574 float: left;
1574 float: left;
1575 }
1575 }
1576 .col-sm-12 {
1576 .col-sm-12 {
1577 width: 100%;
1577 width: 100%;
1578 }
1578 }
1579 .col-sm-11 {
1579 .col-sm-11 {
1580 width: 91.66666667%;
1580 width: 91.66666667%;
1581 }
1581 }
1582 .col-sm-10 {
1582 .col-sm-10 {
1583 width: 83.33333333%;
1583 width: 83.33333333%;
1584 }
1584 }
1585 .col-sm-9 {
1585 .col-sm-9 {
1586 width: 75%;
1586 width: 75%;
1587 }
1587 }
1588 .col-sm-8 {
1588 .col-sm-8 {
1589 width: 66.66666667%;
1589 width: 66.66666667%;
1590 }
1590 }
1591 .col-sm-7 {
1591 .col-sm-7 {
1592 width: 58.33333333%;
1592 width: 58.33333333%;
1593 }
1593 }
1594 .col-sm-6 {
1594 .col-sm-6 {
1595 width: 50%;
1595 width: 50%;
1596 }
1596 }
1597 .col-sm-5 {
1597 .col-sm-5 {
1598 width: 41.66666667%;
1598 width: 41.66666667%;
1599 }
1599 }
1600 .col-sm-4 {
1600 .col-sm-4 {
1601 width: 33.33333333%;
1601 width: 33.33333333%;
1602 }
1602 }
1603 .col-sm-3 {
1603 .col-sm-3 {
1604 width: 25%;
1604 width: 25%;
1605 }
1605 }
1606 .col-sm-2 {
1606 .col-sm-2 {
1607 width: 16.66666667%;
1607 width: 16.66666667%;
1608 }
1608 }
1609 .col-sm-1 {
1609 .col-sm-1 {
1610 width: 8.33333333%;
1610 width: 8.33333333%;
1611 }
1611 }
1612 .col-sm-pull-12 {
1612 .col-sm-pull-12 {
1613 right: 100%;
1613 right: 100%;
1614 }
1614 }
1615 .col-sm-pull-11 {
1615 .col-sm-pull-11 {
1616 right: 91.66666667%;
1616 right: 91.66666667%;
1617 }
1617 }
1618 .col-sm-pull-10 {
1618 .col-sm-pull-10 {
1619 right: 83.33333333%;
1619 right: 83.33333333%;
1620 }
1620 }
1621 .col-sm-pull-9 {
1621 .col-sm-pull-9 {
1622 right: 75%;
1622 right: 75%;
1623 }
1623 }
1624 .col-sm-pull-8 {
1624 .col-sm-pull-8 {
1625 right: 66.66666667%;
1625 right: 66.66666667%;
1626 }
1626 }
1627 .col-sm-pull-7 {
1627 .col-sm-pull-7 {
1628 right: 58.33333333%;
1628 right: 58.33333333%;
1629 }
1629 }
1630 .col-sm-pull-6 {
1630 .col-sm-pull-6 {
1631 right: 50%;
1631 right: 50%;
1632 }
1632 }
1633 .col-sm-pull-5 {
1633 .col-sm-pull-5 {
1634 right: 41.66666667%;
1634 right: 41.66666667%;
1635 }
1635 }
1636 .col-sm-pull-4 {
1636 .col-sm-pull-4 {
1637 right: 33.33333333%;
1637 right: 33.33333333%;
1638 }
1638 }
1639 .col-sm-pull-3 {
1639 .col-sm-pull-3 {
1640 right: 25%;
1640 right: 25%;
1641 }
1641 }
1642 .col-sm-pull-2 {
1642 .col-sm-pull-2 {
1643 right: 16.66666667%;
1643 right: 16.66666667%;
1644 }
1644 }
1645 .col-sm-pull-1 {
1645 .col-sm-pull-1 {
1646 right: 8.33333333%;
1646 right: 8.33333333%;
1647 }
1647 }
1648 .col-sm-pull-0 {
1648 .col-sm-pull-0 {
1649 right: auto;
1649 right: auto;
1650 }
1650 }
1651 .col-sm-push-12 {
1651 .col-sm-push-12 {
1652 left: 100%;
1652 left: 100%;
1653 }
1653 }
1654 .col-sm-push-11 {
1654 .col-sm-push-11 {
1655 left: 91.66666667%;
1655 left: 91.66666667%;
1656 }
1656 }
1657 .col-sm-push-10 {
1657 .col-sm-push-10 {
1658 left: 83.33333333%;
1658 left: 83.33333333%;
1659 }
1659 }
1660 .col-sm-push-9 {
1660 .col-sm-push-9 {
1661 left: 75%;
1661 left: 75%;
1662 }
1662 }
1663 .col-sm-push-8 {
1663 .col-sm-push-8 {
1664 left: 66.66666667%;
1664 left: 66.66666667%;
1665 }
1665 }
1666 .col-sm-push-7 {
1666 .col-sm-push-7 {
1667 left: 58.33333333%;
1667 left: 58.33333333%;
1668 }
1668 }
1669 .col-sm-push-6 {
1669 .col-sm-push-6 {
1670 left: 50%;
1670 left: 50%;
1671 }
1671 }
1672 .col-sm-push-5 {
1672 .col-sm-push-5 {
1673 left: 41.66666667%;
1673 left: 41.66666667%;
1674 }
1674 }
1675 .col-sm-push-4 {
1675 .col-sm-push-4 {
1676 left: 33.33333333%;
1676 left: 33.33333333%;
1677 }
1677 }
1678 .col-sm-push-3 {
1678 .col-sm-push-3 {
1679 left: 25%;
1679 left: 25%;
1680 }
1680 }
1681 .col-sm-push-2 {
1681 .col-sm-push-2 {
1682 left: 16.66666667%;
1682 left: 16.66666667%;
1683 }
1683 }
1684 .col-sm-push-1 {
1684 .col-sm-push-1 {
1685 left: 8.33333333%;
1685 left: 8.33333333%;
1686 }
1686 }
1687 .col-sm-push-0 {
1687 .col-sm-push-0 {
1688 left: auto;
1688 left: auto;
1689 }
1689 }
1690 .col-sm-offset-12 {
1690 .col-sm-offset-12 {
1691 margin-left: 100%;
1691 margin-left: 100%;
1692 }
1692 }
1693 .col-sm-offset-11 {
1693 .col-sm-offset-11 {
1694 margin-left: 91.66666667%;
1694 margin-left: 91.66666667%;
1695 }
1695 }
1696 .col-sm-offset-10 {
1696 .col-sm-offset-10 {
1697 margin-left: 83.33333333%;
1697 margin-left: 83.33333333%;
1698 }
1698 }
1699 .col-sm-offset-9 {
1699 .col-sm-offset-9 {
1700 margin-left: 75%;
1700 margin-left: 75%;
1701 }
1701 }
1702 .col-sm-offset-8 {
1702 .col-sm-offset-8 {
1703 margin-left: 66.66666667%;
1703 margin-left: 66.66666667%;
1704 }
1704 }
1705 .col-sm-offset-7 {
1705 .col-sm-offset-7 {
1706 margin-left: 58.33333333%;
1706 margin-left: 58.33333333%;
1707 }
1707 }
1708 .col-sm-offset-6 {
1708 .col-sm-offset-6 {
1709 margin-left: 50%;
1709 margin-left: 50%;
1710 }
1710 }
1711 .col-sm-offset-5 {
1711 .col-sm-offset-5 {
1712 margin-left: 41.66666667%;
1712 margin-left: 41.66666667%;
1713 }
1713 }
1714 .col-sm-offset-4 {
1714 .col-sm-offset-4 {
1715 margin-left: 33.33333333%;
1715 margin-left: 33.33333333%;
1716 }
1716 }
1717 .col-sm-offset-3 {
1717 .col-sm-offset-3 {
1718 margin-left: 25%;
1718 margin-left: 25%;
1719 }
1719 }
1720 .col-sm-offset-2 {
1720 .col-sm-offset-2 {
1721 margin-left: 16.66666667%;
1721 margin-left: 16.66666667%;
1722 }
1722 }
1723 .col-sm-offset-1 {
1723 .col-sm-offset-1 {
1724 margin-left: 8.33333333%;
1724 margin-left: 8.33333333%;
1725 }
1725 }
1726 .col-sm-offset-0 {
1726 .col-sm-offset-0 {
1727 margin-left: 0%;
1727 margin-left: 0%;
1728 }
1728 }
1729 }
1729 }
1730 @media (min-width: 992px) {
1730 @media (min-width: 992px) {
1731 .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1731 .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1732 float: left;
1732 float: left;
1733 }
1733 }
1734 .col-md-12 {
1734 .col-md-12 {
1735 width: 100%;
1735 width: 100%;
1736 }
1736 }
1737 .col-md-11 {
1737 .col-md-11 {
1738 width: 91.66666667%;
1738 width: 91.66666667%;
1739 }
1739 }
1740 .col-md-10 {
1740 .col-md-10 {
1741 width: 83.33333333%;
1741 width: 83.33333333%;
1742 }
1742 }
1743 .col-md-9 {
1743 .col-md-9 {
1744 width: 75%;
1744 width: 75%;
1745 }
1745 }
1746 .col-md-8 {
1746 .col-md-8 {
1747 width: 66.66666667%;
1747 width: 66.66666667%;
1748 }
1748 }
1749 .col-md-7 {
1749 .col-md-7 {
1750 width: 58.33333333%;
1750 width: 58.33333333%;
1751 }
1751 }
1752 .col-md-6 {
1752 .col-md-6 {
1753 width: 50%;
1753 width: 50%;
1754 }
1754 }
1755 .col-md-5 {
1755 .col-md-5 {
1756 width: 41.66666667%;
1756 width: 41.66666667%;
1757 }
1757 }
1758 .col-md-4 {
1758 .col-md-4 {
1759 width: 33.33333333%;
1759 width: 33.33333333%;
1760 }
1760 }
1761 .col-md-3 {
1761 .col-md-3 {
1762 width: 25%;
1762 width: 25%;
1763 }
1763 }
1764 .col-md-2 {
1764 .col-md-2 {
1765 width: 16.66666667%;
1765 width: 16.66666667%;
1766 }
1766 }
1767 .col-md-1 {
1767 .col-md-1 {
1768 width: 8.33333333%;
1768 width: 8.33333333%;
1769 }
1769 }
1770 .col-md-pull-12 {
1770 .col-md-pull-12 {
1771 right: 100%;
1771 right: 100%;
1772 }
1772 }
1773 .col-md-pull-11 {
1773 .col-md-pull-11 {
1774 right: 91.66666667%;
1774 right: 91.66666667%;
1775 }
1775 }
1776 .col-md-pull-10 {
1776 .col-md-pull-10 {
1777 right: 83.33333333%;
1777 right: 83.33333333%;
1778 }
1778 }
1779 .col-md-pull-9 {
1779 .col-md-pull-9 {
1780 right: 75%;
1780 right: 75%;
1781 }
1781 }
1782 .col-md-pull-8 {
1782 .col-md-pull-8 {
1783 right: 66.66666667%;
1783 right: 66.66666667%;
1784 }
1784 }
1785 .col-md-pull-7 {
1785 .col-md-pull-7 {
1786 right: 58.33333333%;
1786 right: 58.33333333%;
1787 }
1787 }
1788 .col-md-pull-6 {
1788 .col-md-pull-6 {
1789 right: 50%;
1789 right: 50%;
1790 }
1790 }
1791 .col-md-pull-5 {
1791 .col-md-pull-5 {
1792 right: 41.66666667%;
1792 right: 41.66666667%;
1793 }
1793 }
1794 .col-md-pull-4 {
1794 .col-md-pull-4 {
1795 right: 33.33333333%;
1795 right: 33.33333333%;
1796 }
1796 }
1797 .col-md-pull-3 {
1797 .col-md-pull-3 {
1798 right: 25%;
1798 right: 25%;
1799 }
1799 }
1800 .col-md-pull-2 {
1800 .col-md-pull-2 {
1801 right: 16.66666667%;
1801 right: 16.66666667%;
1802 }
1802 }
1803 .col-md-pull-1 {
1803 .col-md-pull-1 {
1804 right: 8.33333333%;
1804 right: 8.33333333%;
1805 }
1805 }
1806 .col-md-pull-0 {
1806 .col-md-pull-0 {
1807 right: auto;
1807 right: auto;
1808 }
1808 }
1809 .col-md-push-12 {
1809 .col-md-push-12 {
1810 left: 100%;
1810 left: 100%;
1811 }
1811 }
1812 .col-md-push-11 {
1812 .col-md-push-11 {
1813 left: 91.66666667%;
1813 left: 91.66666667%;
1814 }
1814 }
1815 .col-md-push-10 {
1815 .col-md-push-10 {
1816 left: 83.33333333%;
1816 left: 83.33333333%;
1817 }
1817 }
1818 .col-md-push-9 {
1818 .col-md-push-9 {
1819 left: 75%;
1819 left: 75%;
1820 }
1820 }
1821 .col-md-push-8 {
1821 .col-md-push-8 {
1822 left: 66.66666667%;
1822 left: 66.66666667%;
1823 }
1823 }
1824 .col-md-push-7 {
1824 .col-md-push-7 {
1825 left: 58.33333333%;
1825 left: 58.33333333%;
1826 }
1826 }
1827 .col-md-push-6 {
1827 .col-md-push-6 {
1828 left: 50%;
1828 left: 50%;
1829 }
1829 }
1830 .col-md-push-5 {
1830 .col-md-push-5 {
1831 left: 41.66666667%;
1831 left: 41.66666667%;
1832 }
1832 }
1833 .col-md-push-4 {
1833 .col-md-push-4 {
1834 left: 33.33333333%;
1834 left: 33.33333333%;
1835 }
1835 }
1836 .col-md-push-3 {
1836 .col-md-push-3 {
1837 left: 25%;
1837 left: 25%;
1838 }
1838 }
1839 .col-md-push-2 {
1839 .col-md-push-2 {
1840 left: 16.66666667%;
1840 left: 16.66666667%;
1841 }
1841 }
1842 .col-md-push-1 {
1842 .col-md-push-1 {
1843 left: 8.33333333%;
1843 left: 8.33333333%;
1844 }
1844 }
1845 .col-md-push-0 {
1845 .col-md-push-0 {
1846 left: auto;
1846 left: auto;
1847 }
1847 }
1848 .col-md-offset-12 {
1848 .col-md-offset-12 {
1849 margin-left: 100%;
1849 margin-left: 100%;
1850 }
1850 }
1851 .col-md-offset-11 {
1851 .col-md-offset-11 {
1852 margin-left: 91.66666667%;
1852 margin-left: 91.66666667%;
1853 }
1853 }
1854 .col-md-offset-10 {
1854 .col-md-offset-10 {
1855 margin-left: 83.33333333%;
1855 margin-left: 83.33333333%;
1856 }
1856 }
1857 .col-md-offset-9 {
1857 .col-md-offset-9 {
1858 margin-left: 75%;
1858 margin-left: 75%;
1859 }
1859 }
1860 .col-md-offset-8 {
1860 .col-md-offset-8 {
1861 margin-left: 66.66666667%;
1861 margin-left: 66.66666667%;
1862 }
1862 }
1863 .col-md-offset-7 {
1863 .col-md-offset-7 {
1864 margin-left: 58.33333333%;
1864 margin-left: 58.33333333%;
1865 }
1865 }
1866 .col-md-offset-6 {
1866 .col-md-offset-6 {
1867 margin-left: 50%;
1867 margin-left: 50%;
1868 }
1868 }
1869 .col-md-offset-5 {
1869 .col-md-offset-5 {
1870 margin-left: 41.66666667%;
1870 margin-left: 41.66666667%;
1871 }
1871 }
1872 .col-md-offset-4 {
1872 .col-md-offset-4 {
1873 margin-left: 33.33333333%;
1873 margin-left: 33.33333333%;
1874 }
1874 }
1875 .col-md-offset-3 {
1875 .col-md-offset-3 {
1876 margin-left: 25%;
1876 margin-left: 25%;
1877 }
1877 }
1878 .col-md-offset-2 {
1878 .col-md-offset-2 {
1879 margin-left: 16.66666667%;
1879 margin-left: 16.66666667%;
1880 }
1880 }
1881 .col-md-offset-1 {
1881 .col-md-offset-1 {
1882 margin-left: 8.33333333%;
1882 margin-left: 8.33333333%;
1883 }
1883 }
1884 .col-md-offset-0 {
1884 .col-md-offset-0 {
1885 margin-left: 0%;
1885 margin-left: 0%;
1886 }
1886 }
1887 }
1887 }
1888 @media (min-width: 1200px) {
1888 @media (min-width: 1200px) {
1889 .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
1889 .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
1890 float: left;
1890 float: left;
1891 }
1891 }
1892 .col-lg-12 {
1892 .col-lg-12 {
1893 width: 100%;
1893 width: 100%;
1894 }
1894 }
1895 .col-lg-11 {
1895 .col-lg-11 {
1896 width: 91.66666667%;
1896 width: 91.66666667%;
1897 }
1897 }
1898 .col-lg-10 {
1898 .col-lg-10 {
1899 width: 83.33333333%;
1899 width: 83.33333333%;
1900 }
1900 }
1901 .col-lg-9 {
1901 .col-lg-9 {
1902 width: 75%;
1902 width: 75%;
1903 }
1903 }
1904 .col-lg-8 {
1904 .col-lg-8 {
1905 width: 66.66666667%;
1905 width: 66.66666667%;
1906 }
1906 }
1907 .col-lg-7 {
1907 .col-lg-7 {
1908 width: 58.33333333%;
1908 width: 58.33333333%;
1909 }
1909 }
1910 .col-lg-6 {
1910 .col-lg-6 {
1911 width: 50%;
1911 width: 50%;
1912 }
1912 }
1913 .col-lg-5 {
1913 .col-lg-5 {
1914 width: 41.66666667%;
1914 width: 41.66666667%;
1915 }
1915 }
1916 .col-lg-4 {
1916 .col-lg-4 {
1917 width: 33.33333333%;
1917 width: 33.33333333%;
1918 }
1918 }
1919 .col-lg-3 {
1919 .col-lg-3 {
1920 width: 25%;
1920 width: 25%;
1921 }
1921 }
1922 .col-lg-2 {
1922 .col-lg-2 {
1923 width: 16.66666667%;
1923 width: 16.66666667%;
1924 }
1924 }
1925 .col-lg-1 {
1925 .col-lg-1 {
1926 width: 8.33333333%;
1926 width: 8.33333333%;
1927 }
1927 }
1928 .col-lg-pull-12 {
1928 .col-lg-pull-12 {
1929 right: 100%;
1929 right: 100%;
1930 }
1930 }
1931 .col-lg-pull-11 {
1931 .col-lg-pull-11 {
1932 right: 91.66666667%;
1932 right: 91.66666667%;
1933 }
1933 }
1934 .col-lg-pull-10 {
1934 .col-lg-pull-10 {
1935 right: 83.33333333%;
1935 right: 83.33333333%;
1936 }
1936 }
1937 .col-lg-pull-9 {
1937 .col-lg-pull-9 {
1938 right: 75%;
1938 right: 75%;
1939 }
1939 }
1940 .col-lg-pull-8 {
1940 .col-lg-pull-8 {
1941 right: 66.66666667%;
1941 right: 66.66666667%;
1942 }
1942 }
1943 .col-lg-pull-7 {
1943 .col-lg-pull-7 {
1944 right: 58.33333333%;
1944 right: 58.33333333%;
1945 }
1945 }
1946 .col-lg-pull-6 {
1946 .col-lg-pull-6 {
1947 right: 50%;
1947 right: 50%;
1948 }
1948 }
1949 .col-lg-pull-5 {
1949 .col-lg-pull-5 {
1950 right: 41.66666667%;
1950 right: 41.66666667%;
1951 }
1951 }
1952 .col-lg-pull-4 {
1952 .col-lg-pull-4 {
1953 right: 33.33333333%;
1953 right: 33.33333333%;
1954 }
1954 }
1955 .col-lg-pull-3 {
1955 .col-lg-pull-3 {
1956 right: 25%;
1956 right: 25%;
1957 }
1957 }
1958 .col-lg-pull-2 {
1958 .col-lg-pull-2 {
1959 right: 16.66666667%;
1959 right: 16.66666667%;
1960 }
1960 }
1961 .col-lg-pull-1 {
1961 .col-lg-pull-1 {
1962 right: 8.33333333%;
1962 right: 8.33333333%;
1963 }
1963 }
1964 .col-lg-pull-0 {
1964 .col-lg-pull-0 {
1965 right: auto;
1965 right: auto;
1966 }
1966 }
1967 .col-lg-push-12 {
1967 .col-lg-push-12 {
1968 left: 100%;
1968 left: 100%;
1969 }
1969 }
1970 .col-lg-push-11 {
1970 .col-lg-push-11 {
1971 left: 91.66666667%;
1971 left: 91.66666667%;
1972 }
1972 }
1973 .col-lg-push-10 {
1973 .col-lg-push-10 {
1974 left: 83.33333333%;
1974 left: 83.33333333%;
1975 }
1975 }
1976 .col-lg-push-9 {
1976 .col-lg-push-9 {
1977 left: 75%;
1977 left: 75%;
1978 }
1978 }
1979 .col-lg-push-8 {
1979 .col-lg-push-8 {
1980 left: 66.66666667%;
1980 left: 66.66666667%;
1981 }
1981 }
1982 .col-lg-push-7 {
1982 .col-lg-push-7 {
1983 left: 58.33333333%;
1983 left: 58.33333333%;
1984 }
1984 }
1985 .col-lg-push-6 {
1985 .col-lg-push-6 {
1986 left: 50%;
1986 left: 50%;
1987 }
1987 }
1988 .col-lg-push-5 {
1988 .col-lg-push-5 {
1989 left: 41.66666667%;
1989 left: 41.66666667%;
1990 }
1990 }
1991 .col-lg-push-4 {
1991 .col-lg-push-4 {
1992 left: 33.33333333%;
1992 left: 33.33333333%;
1993 }
1993 }
1994 .col-lg-push-3 {
1994 .col-lg-push-3 {
1995 left: 25%;
1995 left: 25%;
1996 }
1996 }
1997 .col-lg-push-2 {
1997 .col-lg-push-2 {
1998 left: 16.66666667%;
1998 left: 16.66666667%;
1999 }
1999 }
2000 .col-lg-push-1 {
2000 .col-lg-push-1 {
2001 left: 8.33333333%;
2001 left: 8.33333333%;
2002 }
2002 }
2003 .col-lg-push-0 {
2003 .col-lg-push-0 {
2004 left: auto;
2004 left: auto;
2005 }
2005 }
2006 .col-lg-offset-12 {
2006 .col-lg-offset-12 {
2007 margin-left: 100%;
2007 margin-left: 100%;
2008 }
2008 }
2009 .col-lg-offset-11 {
2009 .col-lg-offset-11 {
2010 margin-left: 91.66666667%;
2010 margin-left: 91.66666667%;
2011 }
2011 }
2012 .col-lg-offset-10 {
2012 .col-lg-offset-10 {
2013 margin-left: 83.33333333%;
2013 margin-left: 83.33333333%;
2014 }
2014 }
2015 .col-lg-offset-9 {
2015 .col-lg-offset-9 {
2016 margin-left: 75%;
2016 margin-left: 75%;
2017 }
2017 }
2018 .col-lg-offset-8 {
2018 .col-lg-offset-8 {
2019 margin-left: 66.66666667%;
2019 margin-left: 66.66666667%;
2020 }
2020 }
2021 .col-lg-offset-7 {
2021 .col-lg-offset-7 {
2022 margin-left: 58.33333333%;
2022 margin-left: 58.33333333%;
2023 }
2023 }
2024 .col-lg-offset-6 {
2024 .col-lg-offset-6 {
2025 margin-left: 50%;
2025 margin-left: 50%;
2026 }
2026 }
2027 .col-lg-offset-5 {
2027 .col-lg-offset-5 {
2028 margin-left: 41.66666667%;
2028 margin-left: 41.66666667%;
2029 }
2029 }
2030 .col-lg-offset-4 {
2030 .col-lg-offset-4 {
2031 margin-left: 33.33333333%;
2031 margin-left: 33.33333333%;
2032 }
2032 }
2033 .col-lg-offset-3 {
2033 .col-lg-offset-3 {
2034 margin-left: 25%;
2034 margin-left: 25%;
2035 }
2035 }
2036 .col-lg-offset-2 {
2036 .col-lg-offset-2 {
2037 margin-left: 16.66666667%;
2037 margin-left: 16.66666667%;
2038 }
2038 }
2039 .col-lg-offset-1 {
2039 .col-lg-offset-1 {
2040 margin-left: 8.33333333%;
2040 margin-left: 8.33333333%;
2041 }
2041 }
2042 .col-lg-offset-0 {
2042 .col-lg-offset-0 {
2043 margin-left: 0%;
2043 margin-left: 0%;
2044 }
2044 }
2045 }
2045 }
2046 table {
2046 table {
2047 background-color: transparent;
2047 background-color: transparent;
2048 }
2048 }
2049 caption {
2049 caption {
2050 padding-top: 8px;
2050 padding-top: 8px;
2051 padding-bottom: 8px;
2051 padding-bottom: 8px;
2052 color: #777777;
2052 color: #777777;
2053 text-align: left;
2053 text-align: left;
2054 }
2054 }
2055 th {
2055 th {
2056 text-align: left;
2056 text-align: left;
2057 }
2057 }
2058 .table {
2058 .table {
2059 width: 100%;
2059 width: 100%;
2060 max-width: 100%;
2060 max-width: 100%;
2061 margin-bottom: 18px;
2061 margin-bottom: 18px;
2062 }
2062 }
2063 .table > thead > tr > th,
2063 .table > thead > tr > th,
2064 .table > tbody > tr > th,
2064 .table > tbody > tr > th,
2065 .table > tfoot > tr > th,
2065 .table > tfoot > tr > th,
2066 .table > thead > tr > td,
2066 .table > thead > tr > td,
2067 .table > tbody > tr > td,
2067 .table > tbody > tr > td,
2068 .table > tfoot > tr > td {
2068 .table > tfoot > tr > td {
2069 padding: 8px;
2069 padding: 8px;
2070 line-height: 1.42857143;
2070 line-height: 1.42857143;
2071 vertical-align: top;
2071 vertical-align: top;
2072 border-top: 1px solid #dddddd;
2072 border-top: 1px solid #dddddd;
2073 }
2073 }
2074 .table > thead > tr > th {
2074 .table > thead > tr > th {
2075 vertical-align: bottom;
2075 vertical-align: bottom;
2076 border-bottom: 2px solid #dddddd;
2076 border-bottom: 2px solid #dddddd;
2077 }
2077 }
2078 .table > caption + thead > tr:first-child > th,
2078 .table > caption + thead > tr:first-child > th,
2079 .table > colgroup + thead > tr:first-child > th,
2079 .table > colgroup + thead > tr:first-child > th,
2080 .table > thead:first-child > tr:first-child > th,
2080 .table > thead:first-child > tr:first-child > th,
2081 .table > caption + thead > tr:first-child > td,
2081 .table > caption + thead > tr:first-child > td,
2082 .table > colgroup + thead > tr:first-child > td,
2082 .table > colgroup + thead > tr:first-child > td,
2083 .table > thead:first-child > tr:first-child > td {
2083 .table > thead:first-child > tr:first-child > td {
2084 border-top: 0;
2084 border-top: 0;
2085 }
2085 }
2086 .table > tbody + tbody {
2086 .table > tbody + tbody {
2087 border-top: 2px solid #dddddd;
2087 border-top: 2px solid #dddddd;
2088 }
2088 }
2089 .table .table {
2089 .table .table {
2090 background-color: #ffffff;
2090 background-color: #ffffff;
2091 }
2091 }
2092 .table-condensed > thead > tr > th,
2092 .table-condensed > thead > tr > th,
2093 .table-condensed > tbody > tr > th,
2093 .table-condensed > tbody > tr > th,
2094 .table-condensed > tfoot > tr > th,
2094 .table-condensed > tfoot > tr > th,
2095 .table-condensed > thead > tr > td,
2095 .table-condensed > thead > tr > td,
2096 .table-condensed > tbody > tr > td,
2096 .table-condensed > tbody > tr > td,
2097 .table-condensed > tfoot > tr > td {
2097 .table-condensed > tfoot > tr > td {
2098 padding: 5px;
2098 padding: 5px;
2099 }
2099 }
2100 .table-bordered {
2100 .table-bordered {
2101 border: 1px solid #dddddd;
2101 border: 1px solid #dddddd;
2102 }
2102 }
2103 .table-bordered > thead > tr > th,
2103 .table-bordered > thead > tr > th,
2104 .table-bordered > tbody > tr > th,
2104 .table-bordered > tbody > tr > th,
2105 .table-bordered > tfoot > tr > th,
2105 .table-bordered > tfoot > tr > th,
2106 .table-bordered > thead > tr > td,
2106 .table-bordered > thead > tr > td,
2107 .table-bordered > tbody > tr > td,
2107 .table-bordered > tbody > tr > td,
2108 .table-bordered > tfoot > tr > td {
2108 .table-bordered > tfoot > tr > td {
2109 border: 1px solid #dddddd;
2109 border: 1px solid #dddddd;
2110 }
2110 }
2111 .table-bordered > thead > tr > th,
2111 .table-bordered > thead > tr > th,
2112 .table-bordered > thead > tr > td {
2112 .table-bordered > thead > tr > td {
2113 border-bottom-width: 2px;
2113 border-bottom-width: 2px;
2114 }
2114 }
2115 .table-striped > tbody > tr:nth-child(odd) {
2115 .table-striped > tbody > tr:nth-child(odd) {
2116 background-color: #f9f9f9;
2116 background-color: #f9f9f9;
2117 }
2117 }
2118 .table-hover > tbody > tr:hover {
2118 .table-hover > tbody > tr:hover {
2119 background-color: #f5f5f5;
2119 background-color: #f5f5f5;
2120 }
2120 }
2121 table col[class*="col-"] {
2121 table col[class*="col-"] {
2122 position: static;
2122 position: static;
2123 float: none;
2123 float: none;
2124 display: table-column;
2124 display: table-column;
2125 }
2125 }
2126 table td[class*="col-"],
2126 table td[class*="col-"],
2127 table th[class*="col-"] {
2127 table th[class*="col-"] {
2128 position: static;
2128 position: static;
2129 float: none;
2129 float: none;
2130 display: table-cell;
2130 display: table-cell;
2131 }
2131 }
2132 .table > thead > tr > td.active,
2132 .table > thead > tr > td.active,
2133 .table > tbody > tr > td.active,
2133 .table > tbody > tr > td.active,
2134 .table > tfoot > tr > td.active,
2134 .table > tfoot > tr > td.active,
2135 .table > thead > tr > th.active,
2135 .table > thead > tr > th.active,
2136 .table > tbody > tr > th.active,
2136 .table > tbody > tr > th.active,
2137 .table > tfoot > tr > th.active,
2137 .table > tfoot > tr > th.active,
2138 .table > thead > tr.active > td,
2138 .table > thead > tr.active > td,
2139 .table > tbody > tr.active > td,
2139 .table > tbody > tr.active > td,
2140 .table > tfoot > tr.active > td,
2140 .table > tfoot > tr.active > td,
2141 .table > thead > tr.active > th,
2141 .table > thead > tr.active > th,
2142 .table > tbody > tr.active > th,
2142 .table > tbody > tr.active > th,
2143 .table > tfoot > tr.active > th {
2143 .table > tfoot > tr.active > th {
2144 background-color: #f5f5f5;
2144 background-color: #f5f5f5;
2145 }
2145 }
2146 .table-hover > tbody > tr > td.active:hover,
2146 .table-hover > tbody > tr > td.active:hover,
2147 .table-hover > tbody > tr > th.active:hover,
2147 .table-hover > tbody > tr > th.active:hover,
2148 .table-hover > tbody > tr.active:hover > td,
2148 .table-hover > tbody > tr.active:hover > td,
2149 .table-hover > tbody > tr:hover > .active,
2149 .table-hover > tbody > tr:hover > .active,
2150 .table-hover > tbody > tr.active:hover > th {
2150 .table-hover > tbody > tr.active:hover > th {
2151 background-color: #e8e8e8;
2151 background-color: #e8e8e8;
2152 }
2152 }
2153 .table > thead > tr > td.success,
2153 .table > thead > tr > td.success,
2154 .table > tbody > tr > td.success,
2154 .table > tbody > tr > td.success,
2155 .table > tfoot > tr > td.success,
2155 .table > tfoot > tr > td.success,
2156 .table > thead > tr > th.success,
2156 .table > thead > tr > th.success,
2157 .table > tbody > tr > th.success,
2157 .table > tbody > tr > th.success,
2158 .table > tfoot > tr > th.success,
2158 .table > tfoot > tr > th.success,
2159 .table > thead > tr.success > td,
2159 .table > thead > tr.success > td,
2160 .table > tbody > tr.success > td,
2160 .table > tbody > tr.success > td,
2161 .table > tfoot > tr.success > td,
2161 .table > tfoot > tr.success > td,
2162 .table > thead > tr.success > th,
2162 .table > thead > tr.success > th,
2163 .table > tbody > tr.success > th,
2163 .table > tbody > tr.success > th,
2164 .table > tfoot > tr.success > th {
2164 .table > tfoot > tr.success > th {
2165 background-color: #dff0d8;
2165 background-color: #dff0d8;
2166 }
2166 }
2167 .table-hover > tbody > tr > td.success:hover,
2167 .table-hover > tbody > tr > td.success:hover,
2168 .table-hover > tbody > tr > th.success:hover,
2168 .table-hover > tbody > tr > th.success:hover,
2169 .table-hover > tbody > tr.success:hover > td,
2169 .table-hover > tbody > tr.success:hover > td,
2170 .table-hover > tbody > tr:hover > .success,
2170 .table-hover > tbody > tr:hover > .success,
2171 .table-hover > tbody > tr.success:hover > th {
2171 .table-hover > tbody > tr.success:hover > th {
2172 background-color: #d0e9c6;
2172 background-color: #d0e9c6;
2173 }
2173 }
2174 .table > thead > tr > td.info,
2174 .table > thead > tr > td.info,
2175 .table > tbody > tr > td.info,
2175 .table > tbody > tr > td.info,
2176 .table > tfoot > tr > td.info,
2176 .table > tfoot > tr > td.info,
2177 .table > thead > tr > th.info,
2177 .table > thead > tr > th.info,
2178 .table > tbody > tr > th.info,
2178 .table > tbody > tr > th.info,
2179 .table > tfoot > tr > th.info,
2179 .table > tfoot > tr > th.info,
2180 .table > thead > tr.info > td,
2180 .table > thead > tr.info > td,
2181 .table > tbody > tr.info > td,
2181 .table > tbody > tr.info > td,
2182 .table > tfoot > tr.info > td,
2182 .table > tfoot > tr.info > td,
2183 .table > thead > tr.info > th,
2183 .table > thead > tr.info > th,
2184 .table > tbody > tr.info > th,
2184 .table > tbody > tr.info > th,
2185 .table > tfoot > tr.info > th {
2185 .table > tfoot > tr.info > th {
2186 background-color: #d9edf7;
2186 background-color: #d9edf7;
2187 }
2187 }
2188 .table-hover > tbody > tr > td.info:hover,
2188 .table-hover > tbody > tr > td.info:hover,
2189 .table-hover > tbody > tr > th.info:hover,
2189 .table-hover > tbody > tr > th.info:hover,
2190 .table-hover > tbody > tr.info:hover > td,
2190 .table-hover > tbody > tr.info:hover > td,
2191 .table-hover > tbody > tr:hover > .info,
2191 .table-hover > tbody > tr:hover > .info,
2192 .table-hover > tbody > tr.info:hover > th {
2192 .table-hover > tbody > tr.info:hover > th {
2193 background-color: #c4e3f3;
2193 background-color: #c4e3f3;
2194 }
2194 }
2195 .table > thead > tr > td.warning,
2195 .table > thead > tr > td.warning,
2196 .table > tbody > tr > td.warning,
2196 .table > tbody > tr > td.warning,
2197 .table > tfoot > tr > td.warning,
2197 .table > tfoot > tr > td.warning,
2198 .table > thead > tr > th.warning,
2198 .table > thead > tr > th.warning,
2199 .table > tbody > tr > th.warning,
2199 .table > tbody > tr > th.warning,
2200 .table > tfoot > tr > th.warning,
2200 .table > tfoot > tr > th.warning,
2201 .table > thead > tr.warning > td,
2201 .table > thead > tr.warning > td,
2202 .table > tbody > tr.warning > td,
2202 .table > tbody > tr.warning > td,
2203 .table > tfoot > tr.warning > td,
2203 .table > tfoot > tr.warning > td,
2204 .table > thead > tr.warning > th,
2204 .table > thead > tr.warning > th,
2205 .table > tbody > tr.warning > th,
2205 .table > tbody > tr.warning > th,
2206 .table > tfoot > tr.warning > th {
2206 .table > tfoot > tr.warning > th {
2207 background-color: #fcf8e3;
2207 background-color: #fcf8e3;
2208 }
2208 }
2209 .table-hover > tbody > tr > td.warning:hover,
2209 .table-hover > tbody > tr > td.warning:hover,
2210 .table-hover > tbody > tr > th.warning:hover,
2210 .table-hover > tbody > tr > th.warning:hover,
2211 .table-hover > tbody > tr.warning:hover > td,
2211 .table-hover > tbody > tr.warning:hover > td,
2212 .table-hover > tbody > tr:hover > .warning,
2212 .table-hover > tbody > tr:hover > .warning,
2213 .table-hover > tbody > tr.warning:hover > th {
2213 .table-hover > tbody > tr.warning:hover > th {
2214 background-color: #faf2cc;
2214 background-color: #faf2cc;
2215 }
2215 }
2216 .table > thead > tr > td.danger,
2216 .table > thead > tr > td.danger,
2217 .table > tbody > tr > td.danger,
2217 .table > tbody > tr > td.danger,
2218 .table > tfoot > tr > td.danger,
2218 .table > tfoot > tr > td.danger,
2219 .table > thead > tr > th.danger,
2219 .table > thead > tr > th.danger,
2220 .table > tbody > tr > th.danger,
2220 .table > tbody > tr > th.danger,
2221 .table > tfoot > tr > th.danger,
2221 .table > tfoot > tr > th.danger,
2222 .table > thead > tr.danger > td,
2222 .table > thead > tr.danger > td,
2223 .table > tbody > tr.danger > td,
2223 .table > tbody > tr.danger > td,
2224 .table > tfoot > tr.danger > td,
2224 .table > tfoot > tr.danger > td,
2225 .table > thead > tr.danger > th,
2225 .table > thead > tr.danger > th,
2226 .table > tbody > tr.danger > th,
2226 .table > tbody > tr.danger > th,
2227 .table > tfoot > tr.danger > th {
2227 .table > tfoot > tr.danger > th {
2228 background-color: #f2dede;
2228 background-color: #f2dede;
2229 }
2229 }
2230 .table-hover > tbody > tr > td.danger:hover,
2230 .table-hover > tbody > tr > td.danger:hover,
2231 .table-hover > tbody > tr > th.danger:hover,
2231 .table-hover > tbody > tr > th.danger:hover,
2232 .table-hover > tbody > tr.danger:hover > td,
2232 .table-hover > tbody > tr.danger:hover > td,
2233 .table-hover > tbody > tr:hover > .danger,
2233 .table-hover > tbody > tr:hover > .danger,
2234 .table-hover > tbody > tr.danger:hover > th {
2234 .table-hover > tbody > tr.danger:hover > th {
2235 background-color: #ebcccc;
2235 background-color: #ebcccc;
2236 }
2236 }
2237 .table-responsive {
2237 .table-responsive {
2238 overflow-x: auto;
2238 overflow-x: auto;
2239 min-height: 0.01%;
2239 min-height: 0.01%;
2240 }
2240 }
2241 @media screen and (max-width: 767px) {
2241 @media screen and (max-width: 767px) {
2242 .table-responsive {
2242 .table-responsive {
2243 width: 100%;
2243 width: 100%;
2244 margin-bottom: 13.5px;
2244 margin-bottom: 13.5px;
2245 overflow-y: hidden;
2245 overflow-y: hidden;
2246 -ms-overflow-style: -ms-autohiding-scrollbar;
2246 -ms-overflow-style: -ms-autohiding-scrollbar;
2247 border: 1px solid #dddddd;
2247 border: 1px solid #dddddd;
2248 }
2248 }
2249 .table-responsive > .table {
2249 .table-responsive > .table {
2250 margin-bottom: 0;
2250 margin-bottom: 0;
2251 }
2251 }
2252 .table-responsive > .table > thead > tr > th,
2252 .table-responsive > .table > thead > tr > th,
2253 .table-responsive > .table > tbody > tr > th,
2253 .table-responsive > .table > tbody > tr > th,
2254 .table-responsive > .table > tfoot > tr > th,
2254 .table-responsive > .table > tfoot > tr > th,
2255 .table-responsive > .table > thead > tr > td,
2255 .table-responsive > .table > thead > tr > td,
2256 .table-responsive > .table > tbody > tr > td,
2256 .table-responsive > .table > tbody > tr > td,
2257 .table-responsive > .table > tfoot > tr > td {
2257 .table-responsive > .table > tfoot > tr > td {
2258 white-space: nowrap;
2258 white-space: nowrap;
2259 }
2259 }
2260 .table-responsive > .table-bordered {
2260 .table-responsive > .table-bordered {
2261 border: 0;
2261 border: 0;
2262 }
2262 }
2263 .table-responsive > .table-bordered > thead > tr > th:first-child,
2263 .table-responsive > .table-bordered > thead > tr > th:first-child,
2264 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2264 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2265 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2265 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2266 .table-responsive > .table-bordered > thead > tr > td:first-child,
2266 .table-responsive > .table-bordered > thead > tr > td:first-child,
2267 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2267 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2268 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2268 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2269 border-left: 0;
2269 border-left: 0;
2270 }
2270 }
2271 .table-responsive > .table-bordered > thead > tr > th:last-child,
2271 .table-responsive > .table-bordered > thead > tr > th:last-child,
2272 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2272 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2273 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2273 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2274 .table-responsive > .table-bordered > thead > tr > td:last-child,
2274 .table-responsive > .table-bordered > thead > tr > td:last-child,
2275 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2275 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2276 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2276 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2277 border-right: 0;
2277 border-right: 0;
2278 }
2278 }
2279 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2279 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2280 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2280 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2281 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2281 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2282 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2282 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2283 border-bottom: 0;
2283 border-bottom: 0;
2284 }
2284 }
2285 }
2285 }
2286 fieldset {
2286 fieldset {
2287 padding: 0;
2287 padding: 0;
2288 margin: 0;
2288 margin: 0;
2289 border: 0;
2289 border: 0;
2290 min-width: 0;
2290 min-width: 0;
2291 }
2291 }
2292 legend {
2292 legend {
2293 display: block;
2293 display: block;
2294 width: 100%;
2294 width: 100%;
2295 padding: 0;
2295 padding: 0;
2296 margin-bottom: 18px;
2296 margin-bottom: 18px;
2297 font-size: 19.5px;
2297 font-size: 19.5px;
2298 line-height: inherit;
2298 line-height: inherit;
2299 color: #333333;
2299 color: #333333;
2300 border: 0;
2300 border: 0;
2301 border-bottom: 1px solid #e5e5e5;
2301 border-bottom: 1px solid #e5e5e5;
2302 }
2302 }
2303 label {
2303 label {
2304 display: inline-block;
2304 display: inline-block;
2305 max-width: 100%;
2305 max-width: 100%;
2306 margin-bottom: 5px;
2306 margin-bottom: 5px;
2307 font-weight: bold;
2307 font-weight: bold;
2308 }
2308 }
2309 input[type="search"] {
2309 input[type="search"] {
2310 -webkit-box-sizing: border-box;
2310 -webkit-box-sizing: border-box;
2311 -moz-box-sizing: border-box;
2311 -moz-box-sizing: border-box;
2312 box-sizing: border-box;
2312 box-sizing: border-box;
2313 }
2313 }
2314 input[type="radio"],
2314 input[type="radio"],
2315 input[type="checkbox"] {
2315 input[type="checkbox"] {
2316 margin: 4px 0 0;
2316 margin: 4px 0 0;
2317 margin-top: 1px \9;
2317 margin-top: 1px \9;
2318 line-height: normal;
2318 line-height: normal;
2319 }
2319 }
2320 input[type="file"] {
2320 input[type="file"] {
2321 display: block;
2321 display: block;
2322 }
2322 }
2323 input[type="range"] {
2323 input[type="range"] {
2324 display: block;
2324 display: block;
2325 width: 100%;
2325 width: 100%;
2326 }
2326 }
2327 select[multiple],
2327 select[multiple],
2328 select[size] {
2328 select[size] {
2329 height: auto;
2329 height: auto;
2330 }
2330 }
2331 input[type="file"]:focus,
2331 input[type="file"]:focus,
2332 input[type="radio"]:focus,
2332 input[type="radio"]:focus,
2333 input[type="checkbox"]:focus {
2333 input[type="checkbox"]:focus {
2334 outline: thin dotted;
2334 outline: thin dotted;
2335 outline: 5px auto -webkit-focus-ring-color;
2335 outline: 5px auto -webkit-focus-ring-color;
2336 outline-offset: -2px;
2336 outline-offset: -2px;
2337 }
2337 }
2338 output {
2338 output {
2339 display: block;
2339 display: block;
2340 padding-top: 7px;
2340 padding-top: 7px;
2341 font-size: 13px;
2341 font-size: 13px;
2342 line-height: 1.42857143;
2342 line-height: 1.42857143;
2343 color: #555555;
2343 color: #555555;
2344 }
2344 }
2345 .form-control {
2345 .form-control {
2346 display: block;
2346 display: block;
2347 width: 100%;
2347 width: 100%;
2348 height: 32px;
2348 height: 32px;
2349 padding: 6px 12px;
2349 padding: 6px 12px;
2350 font-size: 13px;
2350 font-size: 13px;
2351 line-height: 1.42857143;
2351 line-height: 1.42857143;
2352 color: #555555;
2352 color: #555555;
2353 background-color: #ffffff;
2353 background-color: #ffffff;
2354 background-image: none;
2354 background-image: none;
2355 border: 1px solid #cccccc;
2355 border: 1px solid #cccccc;
2356 border-radius: 2px;
2356 border-radius: 2px;
2357 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2357 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2358 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2358 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2359 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2359 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2360 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2360 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2361 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2361 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2362 }
2362 }
2363 .form-control:focus {
2363 .form-control:focus {
2364 border-color: #66afe9;
2364 border-color: #66afe9;
2365 outline: 0;
2365 outline: 0;
2366 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2366 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2367 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2367 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2368 }
2368 }
2369 .form-control::-moz-placeholder {
2369 .form-control::-moz-placeholder {
2370 color: #999999;
2370 color: #999999;
2371 opacity: 1;
2371 opacity: 1;
2372 }
2372 }
2373 .form-control:-ms-input-placeholder {
2373 .form-control:-ms-input-placeholder {
2374 color: #999999;
2374 color: #999999;
2375 }
2375 }
2376 .form-control::-webkit-input-placeholder {
2376 .form-control::-webkit-input-placeholder {
2377 color: #999999;
2377 color: #999999;
2378 }
2378 }
2379 .form-control[disabled],
2379 .form-control[disabled],
2380 .form-control[readonly],
2380 .form-control[readonly],
2381 fieldset[disabled] .form-control {
2381 fieldset[disabled] .form-control {
2382 cursor: not-allowed;
2382 cursor: not-allowed;
2383 background-color: #eeeeee;
2383 background-color: #eeeeee;
2384 opacity: 1;
2384 opacity: 1;
2385 }
2385 }
2386 textarea.form-control {
2386 textarea.form-control {
2387 height: auto;
2387 height: auto;
2388 }
2388 }
2389 input[type="search"] {
2389 input[type="search"] {
2390 -webkit-appearance: none;
2390 -webkit-appearance: none;
2391 }
2391 }
2392 @media screen and (-webkit-min-device-pixel-ratio: 0) {
2392 @media screen and (-webkit-min-device-pixel-ratio: 0) {
2393 input[type="date"],
2393 input[type="date"],
2394 input[type="time"],
2394 input[type="time"],
2395 input[type="datetime-local"],
2395 input[type="datetime-local"],
2396 input[type="month"] {
2396 input[type="month"] {
2397 line-height: 32px;
2397 line-height: 32px;
2398 }
2398 }
2399 input[type="date"].input-sm,
2399 input[type="date"].input-sm,
2400 input[type="time"].input-sm,
2400 input[type="time"].input-sm,
2401 input[type="datetime-local"].input-sm,
2401 input[type="datetime-local"].input-sm,
2402 input[type="month"].input-sm {
2402 input[type="month"].input-sm {
2403 line-height: 30px;
2403 line-height: 30px;
2404 }
2404 }
2405 input[type="date"].input-lg,
2405 input[type="date"].input-lg,
2406 input[type="time"].input-lg,
2406 input[type="time"].input-lg,
2407 input[type="datetime-local"].input-lg,
2407 input[type="datetime-local"].input-lg,
2408 input[type="month"].input-lg {
2408 input[type="month"].input-lg {
2409 line-height: 45px;
2409 line-height: 45px;
2410 }
2410 }
2411 }
2411 }
2412 .form-group {
2412 .form-group {
2413 margin-bottom: 15px;
2413 margin-bottom: 15px;
2414 }
2414 }
2415 .radio,
2415 .radio,
2416 .checkbox {
2416 .checkbox {
2417 position: relative;
2417 position: relative;
2418 display: block;
2418 display: block;
2419 margin-top: 10px;
2419 margin-top: 10px;
2420 margin-bottom: 10px;
2420 margin-bottom: 10px;
2421 }
2421 }
2422 .radio label,
2422 .radio label,
2423 .checkbox label {
2423 .checkbox label {
2424 min-height: 18px;
2424 min-height: 18px;
2425 padding-left: 20px;
2425 padding-left: 20px;
2426 margin-bottom: 0;
2426 margin-bottom: 0;
2427 font-weight: normal;
2427 font-weight: normal;
2428 cursor: pointer;
2428 cursor: pointer;
2429 }
2429 }
2430 .radio input[type="radio"],
2430 .radio input[type="radio"],
2431 .radio-inline input[type="radio"],
2431 .radio-inline input[type="radio"],
2432 .checkbox input[type="checkbox"],
2432 .checkbox input[type="checkbox"],
2433 .checkbox-inline input[type="checkbox"] {
2433 .checkbox-inline input[type="checkbox"] {
2434 position: absolute;
2434 position: absolute;
2435 margin-left: -20px;
2435 margin-left: -20px;
2436 margin-top: 4px \9;
2436 margin-top: 4px \9;
2437 }
2437 }
2438 .radio + .radio,
2438 .radio + .radio,
2439 .checkbox + .checkbox {
2439 .checkbox + .checkbox {
2440 margin-top: -5px;
2440 margin-top: -5px;
2441 }
2441 }
2442 .radio-inline,
2442 .radio-inline,
2443 .checkbox-inline {
2443 .checkbox-inline {
2444 display: inline-block;
2444 display: inline-block;
2445 padding-left: 20px;
2445 padding-left: 20px;
2446 margin-bottom: 0;
2446 margin-bottom: 0;
2447 vertical-align: middle;
2447 vertical-align: middle;
2448 font-weight: normal;
2448 font-weight: normal;
2449 cursor: pointer;
2449 cursor: pointer;
2450 }
2450 }
2451 .radio-inline + .radio-inline,
2451 .radio-inline + .radio-inline,
2452 .checkbox-inline + .checkbox-inline {
2452 .checkbox-inline + .checkbox-inline {
2453 margin-top: 0;
2453 margin-top: 0;
2454 margin-left: 10px;
2454 margin-left: 10px;
2455 }
2455 }
2456 input[type="radio"][disabled],
2456 input[type="radio"][disabled],
2457 input[type="checkbox"][disabled],
2457 input[type="checkbox"][disabled],
2458 input[type="radio"].disabled,
2458 input[type="radio"].disabled,
2459 input[type="checkbox"].disabled,
2459 input[type="checkbox"].disabled,
2460 fieldset[disabled] input[type="radio"],
2460 fieldset[disabled] input[type="radio"],
2461 fieldset[disabled] input[type="checkbox"] {
2461 fieldset[disabled] input[type="checkbox"] {
2462 cursor: not-allowed;
2462 cursor: not-allowed;
2463 }
2463 }
2464 .radio-inline.disabled,
2464 .radio-inline.disabled,
2465 .checkbox-inline.disabled,
2465 .checkbox-inline.disabled,
2466 fieldset[disabled] .radio-inline,
2466 fieldset[disabled] .radio-inline,
2467 fieldset[disabled] .checkbox-inline {
2467 fieldset[disabled] .checkbox-inline {
2468 cursor: not-allowed;
2468 cursor: not-allowed;
2469 }
2469 }
2470 .radio.disabled label,
2470 .radio.disabled label,
2471 .checkbox.disabled label,
2471 .checkbox.disabled label,
2472 fieldset[disabled] .radio label,
2472 fieldset[disabled] .radio label,
2473 fieldset[disabled] .checkbox label {
2473 fieldset[disabled] .checkbox label {
2474 cursor: not-allowed;
2474 cursor: not-allowed;
2475 }
2475 }
2476 .form-control-static {
2476 .form-control-static {
2477 padding-top: 7px;
2477 padding-top: 7px;
2478 padding-bottom: 7px;
2478 padding-bottom: 7px;
2479 margin-bottom: 0;
2479 margin-bottom: 0;
2480 }
2480 }
2481 .form-control-static.input-lg,
2481 .form-control-static.input-lg,
2482 .form-control-static.input-sm {
2482 .form-control-static.input-sm {
2483 padding-left: 0;
2483 padding-left: 0;
2484 padding-right: 0;
2484 padding-right: 0;
2485 }
2485 }
2486 .input-sm,
2486 .input-sm,
2487 .form-group-sm .form-control {
2487 .form-group-sm .form-control {
2488 height: 30px;
2488 height: 30px;
2489 padding: 5px 10px;
2489 padding: 5px 10px;
2490 font-size: 12px;
2490 font-size: 12px;
2491 line-height: 1.5;
2491 line-height: 1.5;
2492 border-radius: 1px;
2492 border-radius: 1px;
2493 }
2493 }
2494 select.input-sm,
2494 select.input-sm,
2495 select.form-group-sm .form-control {
2495 select.form-group-sm .form-control {
2496 height: 30px;
2496 height: 30px;
2497 line-height: 30px;
2497 line-height: 30px;
2498 }
2498 }
2499 textarea.input-sm,
2499 textarea.input-sm,
2500 textarea.form-group-sm .form-control,
2500 textarea.form-group-sm .form-control,
2501 select[multiple].input-sm,
2501 select[multiple].input-sm,
2502 select[multiple].form-group-sm .form-control {
2502 select[multiple].form-group-sm .form-control {
2503 height: auto;
2503 height: auto;
2504 }
2504 }
2505 .input-lg,
2505 .input-lg,
2506 .form-group-lg .form-control {
2506 .form-group-lg .form-control {
2507 height: 45px;
2507 height: 45px;
2508 padding: 10px 16px;
2508 padding: 10px 16px;
2509 font-size: 17px;
2509 font-size: 17px;
2510 line-height: 1.33;
2510 line-height: 1.33;
2511 border-radius: 3px;
2511 border-radius: 3px;
2512 }
2512 }
2513 select.input-lg,
2513 select.input-lg,
2514 select.form-group-lg .form-control {
2514 select.form-group-lg .form-control {
2515 height: 45px;
2515 height: 45px;
2516 line-height: 45px;
2516 line-height: 45px;
2517 }
2517 }
2518 textarea.input-lg,
2518 textarea.input-lg,
2519 textarea.form-group-lg .form-control,
2519 textarea.form-group-lg .form-control,
2520 select[multiple].input-lg,
2520 select[multiple].input-lg,
2521 select[multiple].form-group-lg .form-control {
2521 select[multiple].form-group-lg .form-control {
2522 height: auto;
2522 height: auto;
2523 }
2523 }
2524 .has-feedback {
2524 .has-feedback {
2525 position: relative;
2525 position: relative;
2526 }
2526 }
2527 .has-feedback .form-control {
2527 .has-feedback .form-control {
2528 padding-right: 40px;
2528 padding-right: 40px;
2529 }
2529 }
2530 .form-control-feedback {
2530 .form-control-feedback {
2531 position: absolute;
2531 position: absolute;
2532 top: 0;
2532 top: 0;
2533 right: 0;
2533 right: 0;
2534 z-index: 2;
2534 z-index: 2;
2535 display: block;
2535 display: block;
2536 width: 32px;
2536 width: 32px;
2537 height: 32px;
2537 height: 32px;
2538 line-height: 32px;
2538 line-height: 32px;
2539 text-align: center;
2539 text-align: center;
2540 pointer-events: none;
2540 pointer-events: none;
2541 }
2541 }
2542 .input-lg + .form-control-feedback {
2542 .input-lg + .form-control-feedback {
2543 width: 45px;
2543 width: 45px;
2544 height: 45px;
2544 height: 45px;
2545 line-height: 45px;
2545 line-height: 45px;
2546 }
2546 }
2547 .input-sm + .form-control-feedback {
2547 .input-sm + .form-control-feedback {
2548 width: 30px;
2548 width: 30px;
2549 height: 30px;
2549 height: 30px;
2550 line-height: 30px;
2550 line-height: 30px;
2551 }
2551 }
2552 .has-success .help-block,
2552 .has-success .help-block,
2553 .has-success .control-label,
2553 .has-success .control-label,
2554 .has-success .radio,
2554 .has-success .radio,
2555 .has-success .checkbox,
2555 .has-success .checkbox,
2556 .has-success .radio-inline,
2556 .has-success .radio-inline,
2557 .has-success .checkbox-inline,
2557 .has-success .checkbox-inline,
2558 .has-success.radio label,
2558 .has-success.radio label,
2559 .has-success.checkbox label,
2559 .has-success.checkbox label,
2560 .has-success.radio-inline label,
2560 .has-success.radio-inline label,
2561 .has-success.checkbox-inline label {
2561 .has-success.checkbox-inline label {
2562 color: #3c763d;
2562 color: #3c763d;
2563 }
2563 }
2564 .has-success .form-control {
2564 .has-success .form-control {
2565 border-color: #3c763d;
2565 border-color: #3c763d;
2566 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2566 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2567 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2567 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2568 }
2568 }
2569 .has-success .form-control:focus {
2569 .has-success .form-control:focus {
2570 border-color: #2b542c;
2570 border-color: #2b542c;
2571 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2571 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2572 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2572 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2573 }
2573 }
2574 .has-success .input-group-addon {
2574 .has-success .input-group-addon {
2575 color: #3c763d;
2575 color: #3c763d;
2576 border-color: #3c763d;
2576 border-color: #3c763d;
2577 background-color: #dff0d8;
2577 background-color: #dff0d8;
2578 }
2578 }
2579 .has-success .form-control-feedback {
2579 .has-success .form-control-feedback {
2580 color: #3c763d;
2580 color: #3c763d;
2581 }
2581 }
2582 .has-warning .help-block,
2582 .has-warning .help-block,
2583 .has-warning .control-label,
2583 .has-warning .control-label,
2584 .has-warning .radio,
2584 .has-warning .radio,
2585 .has-warning .checkbox,
2585 .has-warning .checkbox,
2586 .has-warning .radio-inline,
2586 .has-warning .radio-inline,
2587 .has-warning .checkbox-inline,
2587 .has-warning .checkbox-inline,
2588 .has-warning.radio label,
2588 .has-warning.radio label,
2589 .has-warning.checkbox label,
2589 .has-warning.checkbox label,
2590 .has-warning.radio-inline label,
2590 .has-warning.radio-inline label,
2591 .has-warning.checkbox-inline label {
2591 .has-warning.checkbox-inline label {
2592 color: #8a6d3b;
2592 color: #8a6d3b;
2593 }
2593 }
2594 .has-warning .form-control {
2594 .has-warning .form-control {
2595 border-color: #8a6d3b;
2595 border-color: #8a6d3b;
2596 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2596 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2597 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2597 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2598 }
2598 }
2599 .has-warning .form-control:focus {
2599 .has-warning .form-control:focus {
2600 border-color: #66512c;
2600 border-color: #66512c;
2601 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2601 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2602 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2602 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2603 }
2603 }
2604 .has-warning .input-group-addon {
2604 .has-warning .input-group-addon {
2605 color: #8a6d3b;
2605 color: #8a6d3b;
2606 border-color: #8a6d3b;
2606 border-color: #8a6d3b;
2607 background-color: #fcf8e3;
2607 background-color: #fcf8e3;
2608 }
2608 }
2609 .has-warning .form-control-feedback {
2609 .has-warning .form-control-feedback {
2610 color: #8a6d3b;
2610 color: #8a6d3b;
2611 }
2611 }
2612 .has-error .help-block,
2612 .has-error .help-block,
2613 .has-error .control-label,
2613 .has-error .control-label,
2614 .has-error .radio,
2614 .has-error .radio,
2615 .has-error .checkbox,
2615 .has-error .checkbox,
2616 .has-error .radio-inline,
2616 .has-error .radio-inline,
2617 .has-error .checkbox-inline,
2617 .has-error .checkbox-inline,
2618 .has-error.radio label,
2618 .has-error.radio label,
2619 .has-error.checkbox label,
2619 .has-error.checkbox label,
2620 .has-error.radio-inline label,
2620 .has-error.radio-inline label,
2621 .has-error.checkbox-inline label {
2621 .has-error.checkbox-inline label {
2622 color: #a94442;
2622 color: #a94442;
2623 }
2623 }
2624 .has-error .form-control {
2624 .has-error .form-control {
2625 border-color: #a94442;
2625 border-color: #a94442;
2626 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2626 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2627 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2627 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2628 }
2628 }
2629 .has-error .form-control:focus {
2629 .has-error .form-control:focus {
2630 border-color: #843534;
2630 border-color: #843534;
2631 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2631 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2632 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2632 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2633 }
2633 }
2634 .has-error .input-group-addon {
2634 .has-error .input-group-addon {
2635 color: #a94442;
2635 color: #a94442;
2636 border-color: #a94442;
2636 border-color: #a94442;
2637 background-color: #f2dede;
2637 background-color: #f2dede;
2638 }
2638 }
2639 .has-error .form-control-feedback {
2639 .has-error .form-control-feedback {
2640 color: #a94442;
2640 color: #a94442;
2641 }
2641 }
2642 .has-feedback label ~ .form-control-feedback {
2642 .has-feedback label ~ .form-control-feedback {
2643 top: 23px;
2643 top: 23px;
2644 }
2644 }
2645 .has-feedback label.sr-only ~ .form-control-feedback {
2645 .has-feedback label.sr-only ~ .form-control-feedback {
2646 top: 0;
2646 top: 0;
2647 }
2647 }
2648 .help-block {
2648 .help-block {
2649 display: block;
2649 display: block;
2650 margin-top: 5px;
2650 margin-top: 5px;
2651 margin-bottom: 10px;
2651 margin-bottom: 10px;
2652 color: #404040;
2652 color: #404040;
2653 }
2653 }
2654 @media (min-width: 768px) {
2654 @media (min-width: 768px) {
2655 .form-inline .form-group {
2655 .form-inline .form-group {
2656 display: inline-block;
2656 display: inline-block;
2657 margin-bottom: 0;
2657 margin-bottom: 0;
2658 vertical-align: middle;
2658 vertical-align: middle;
2659 }
2659 }
2660 .form-inline .form-control {
2660 .form-inline .form-control {
2661 display: inline-block;
2661 display: inline-block;
2662 width: auto;
2662 width: auto;
2663 vertical-align: middle;
2663 vertical-align: middle;
2664 }
2664 }
2665 .form-inline .form-control-static {
2665 .form-inline .form-control-static {
2666 display: inline-block;
2666 display: inline-block;
2667 }
2667 }
2668 .form-inline .input-group {
2668 .form-inline .input-group {
2669 display: inline-table;
2669 display: inline-table;
2670 vertical-align: middle;
2670 vertical-align: middle;
2671 }
2671 }
2672 .form-inline .input-group .input-group-addon,
2672 .form-inline .input-group .input-group-addon,
2673 .form-inline .input-group .input-group-btn,
2673 .form-inline .input-group .input-group-btn,
2674 .form-inline .input-group .form-control {
2674 .form-inline .input-group .form-control {
2675 width: auto;
2675 width: auto;
2676 }
2676 }
2677 .form-inline .input-group > .form-control {
2677 .form-inline .input-group > .form-control {
2678 width: 100%;
2678 width: 100%;
2679 }
2679 }
2680 .form-inline .control-label {
2680 .form-inline .control-label {
2681 margin-bottom: 0;
2681 margin-bottom: 0;
2682 vertical-align: middle;
2682 vertical-align: middle;
2683 }
2683 }
2684 .form-inline .radio,
2684 .form-inline .radio,
2685 .form-inline .checkbox {
2685 .form-inline .checkbox {
2686 display: inline-block;
2686 display: inline-block;
2687 margin-top: 0;
2687 margin-top: 0;
2688 margin-bottom: 0;
2688 margin-bottom: 0;
2689 vertical-align: middle;
2689 vertical-align: middle;
2690 }
2690 }
2691 .form-inline .radio label,
2691 .form-inline .radio label,
2692 .form-inline .checkbox label {
2692 .form-inline .checkbox label {
2693 padding-left: 0;
2693 padding-left: 0;
2694 }
2694 }
2695 .form-inline .radio input[type="radio"],
2695 .form-inline .radio input[type="radio"],
2696 .form-inline .checkbox input[type="checkbox"] {
2696 .form-inline .checkbox input[type="checkbox"] {
2697 position: relative;
2697 position: relative;
2698 margin-left: 0;
2698 margin-left: 0;
2699 }
2699 }
2700 .form-inline .has-feedback .form-control-feedback {
2700 .form-inline .has-feedback .form-control-feedback {
2701 top: 0;
2701 top: 0;
2702 }
2702 }
2703 }
2703 }
2704 .form-horizontal .radio,
2704 .form-horizontal .radio,
2705 .form-horizontal .checkbox,
2705 .form-horizontal .checkbox,
2706 .form-horizontal .radio-inline,
2706 .form-horizontal .radio-inline,
2707 .form-horizontal .checkbox-inline {
2707 .form-horizontal .checkbox-inline {
2708 margin-top: 0;
2708 margin-top: 0;
2709 margin-bottom: 0;
2709 margin-bottom: 0;
2710 padding-top: 7px;
2710 padding-top: 7px;
2711 }
2711 }
2712 .form-horizontal .radio,
2712 .form-horizontal .radio,
2713 .form-horizontal .checkbox {
2713 .form-horizontal .checkbox {
2714 min-height: 25px;
2714 min-height: 25px;
2715 }
2715 }
2716 .form-horizontal .form-group {
2716 .form-horizontal .form-group {
2717 margin-left: 0px;
2717 margin-left: 0px;
2718 margin-right: 0px;
2718 margin-right: 0px;
2719 }
2719 }
2720 @media (min-width: 768px) {
2720 @media (min-width: 768px) {
2721 .form-horizontal .control-label {
2721 .form-horizontal .control-label {
2722 text-align: right;
2722 text-align: right;
2723 margin-bottom: 0;
2723 margin-bottom: 0;
2724 padding-top: 7px;
2724 padding-top: 7px;
2725 }
2725 }
2726 }
2726 }
2727 .form-horizontal .has-feedback .form-control-feedback {
2727 .form-horizontal .has-feedback .form-control-feedback {
2728 right: 0px;
2728 right: 0px;
2729 }
2729 }
2730 @media (min-width: 768px) {
2730 @media (min-width: 768px) {
2731 .form-horizontal .form-group-lg .control-label {
2731 .form-horizontal .form-group-lg .control-label {
2732 padding-top: 14.3px;
2732 padding-top: 14.3px;
2733 }
2733 }
2734 }
2734 }
2735 @media (min-width: 768px) {
2735 @media (min-width: 768px) {
2736 .form-horizontal .form-group-sm .control-label {
2736 .form-horizontal .form-group-sm .control-label {
2737 padding-top: 6px;
2737 padding-top: 6px;
2738 }
2738 }
2739 }
2739 }
2740 .btn {
2740 .btn {
2741 display: inline-block;
2741 display: inline-block;
2742 margin-bottom: 0;
2742 margin-bottom: 0;
2743 font-weight: normal;
2743 font-weight: normal;
2744 text-align: center;
2744 text-align: center;
2745 vertical-align: middle;
2745 vertical-align: middle;
2746 touch-action: manipulation;
2746 touch-action: manipulation;
2747 cursor: pointer;
2747 cursor: pointer;
2748 background-image: none;
2748 background-image: none;
2749 border: 1px solid transparent;
2749 border: 1px solid transparent;
2750 white-space: nowrap;
2750 white-space: nowrap;
2751 padding: 6px 12px;
2751 padding: 6px 12px;
2752 font-size: 13px;
2752 font-size: 13px;
2753 line-height: 1.42857143;
2753 line-height: 1.42857143;
2754 border-radius: 2px;
2754 border-radius: 2px;
2755 -webkit-user-select: none;
2755 -webkit-user-select: none;
2756 -moz-user-select: none;
2756 -moz-user-select: none;
2757 -ms-user-select: none;
2757 -ms-user-select: none;
2758 user-select: none;
2758 user-select: none;
2759 }
2759 }
2760 .btn:focus,
2760 .btn:focus,
2761 .btn:active:focus,
2761 .btn:active:focus,
2762 .btn.active:focus,
2762 .btn.active:focus,
2763 .btn.focus,
2763 .btn.focus,
2764 .btn:active.focus,
2764 .btn:active.focus,
2765 .btn.active.focus {
2765 .btn.active.focus {
2766 outline: thin dotted;
2766 outline: thin dotted;
2767 outline: 5px auto -webkit-focus-ring-color;
2767 outline: 5px auto -webkit-focus-ring-color;
2768 outline-offset: -2px;
2768 outline-offset: -2px;
2769 }
2769 }
2770 .btn:hover,
2770 .btn:hover,
2771 .btn:focus,
2771 .btn:focus,
2772 .btn.focus {
2772 .btn.focus {
2773 color: #333333;
2773 color: #333333;
2774 text-decoration: none;
2774 text-decoration: none;
2775 }
2775 }
2776 .btn:active,
2776 .btn:active,
2777 .btn.active {
2777 .btn.active {
2778 outline: 0;
2778 outline: 0;
2779 background-image: none;
2779 background-image: none;
2780 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2780 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2781 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2781 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2782 }
2782 }
2783 .btn.disabled,
2783 .btn.disabled,
2784 .btn[disabled],
2784 .btn[disabled],
2785 fieldset[disabled] .btn {
2785 fieldset[disabled] .btn {
2786 cursor: not-allowed;
2786 cursor: not-allowed;
2787 pointer-events: none;
2787 pointer-events: none;
2788 opacity: 0.65;
2788 opacity: 0.65;
2789 filter: alpha(opacity=65);
2789 filter: alpha(opacity=65);
2790 -webkit-box-shadow: none;
2790 -webkit-box-shadow: none;
2791 box-shadow: none;
2791 box-shadow: none;
2792 }
2792 }
2793 .btn-default {
2793 .btn-default {
2794 color: #333333;
2794 color: #333333;
2795 background-color: #ffffff;
2795 background-color: #ffffff;
2796 border-color: #cccccc;
2796 border-color: #cccccc;
2797 }
2797 }
2798 .btn-default:hover,
2798 .btn-default:hover,
2799 .btn-default:focus,
2799 .btn-default:focus,
2800 .btn-default.focus,
2800 .btn-default.focus,
2801 .btn-default:active,
2801 .btn-default:active,
2802 .btn-default.active,
2802 .btn-default.active,
2803 .open > .dropdown-toggle.btn-default {
2803 .open > .dropdown-toggle.btn-default {
2804 color: #333333;
2804 color: #333333;
2805 background-color: #e6e6e6;
2805 background-color: #e6e6e6;
2806 border-color: #adadad;
2806 border-color: #adadad;
2807 }
2807 }
2808 .btn-default:active,
2808 .btn-default:active,
2809 .btn-default.active,
2809 .btn-default.active,
2810 .open > .dropdown-toggle.btn-default {
2810 .open > .dropdown-toggle.btn-default {
2811 background-image: none;
2811 background-image: none;
2812 }
2812 }
2813 .btn-default.disabled,
2813 .btn-default.disabled,
2814 .btn-default[disabled],
2814 .btn-default[disabled],
2815 fieldset[disabled] .btn-default,
2815 fieldset[disabled] .btn-default,
2816 .btn-default.disabled:hover,
2816 .btn-default.disabled:hover,
2817 .btn-default[disabled]:hover,
2817 .btn-default[disabled]:hover,
2818 fieldset[disabled] .btn-default:hover,
2818 fieldset[disabled] .btn-default:hover,
2819 .btn-default.disabled:focus,
2819 .btn-default.disabled:focus,
2820 .btn-default[disabled]:focus,
2820 .btn-default[disabled]:focus,
2821 fieldset[disabled] .btn-default:focus,
2821 fieldset[disabled] .btn-default:focus,
2822 .btn-default.disabled.focus,
2822 .btn-default.disabled.focus,
2823 .btn-default[disabled].focus,
2823 .btn-default[disabled].focus,
2824 fieldset[disabled] .btn-default.focus,
2824 fieldset[disabled] .btn-default.focus,
2825 .btn-default.disabled:active,
2825 .btn-default.disabled:active,
2826 .btn-default[disabled]:active,
2826 .btn-default[disabled]:active,
2827 fieldset[disabled] .btn-default:active,
2827 fieldset[disabled] .btn-default:active,
2828 .btn-default.disabled.active,
2828 .btn-default.disabled.active,
2829 .btn-default[disabled].active,
2829 .btn-default[disabled].active,
2830 fieldset[disabled] .btn-default.active {
2830 fieldset[disabled] .btn-default.active {
2831 background-color: #ffffff;
2831 background-color: #ffffff;
2832 border-color: #cccccc;
2832 border-color: #cccccc;
2833 }
2833 }
2834 .btn-default .badge {
2834 .btn-default .badge {
2835 color: #ffffff;
2835 color: #ffffff;
2836 background-color: #333333;
2836 background-color: #333333;
2837 }
2837 }
2838 .btn-primary {
2838 .btn-primary {
2839 color: #ffffff;
2839 color: #ffffff;
2840 background-color: #337ab7;
2840 background-color: #337ab7;
2841 border-color: #2e6da4;
2841 border-color: #2e6da4;
2842 }
2842 }
2843 .btn-primary:hover,
2843 .btn-primary:hover,
2844 .btn-primary:focus,
2844 .btn-primary:focus,
2845 .btn-primary.focus,
2845 .btn-primary.focus,
2846 .btn-primary:active,
2846 .btn-primary:active,
2847 .btn-primary.active,
2847 .btn-primary.active,
2848 .open > .dropdown-toggle.btn-primary {
2848 .open > .dropdown-toggle.btn-primary {
2849 color: #ffffff;
2849 color: #ffffff;
2850 background-color: #286090;
2850 background-color: #286090;
2851 border-color: #204d74;
2851 border-color: #204d74;
2852 }
2852 }
2853 .btn-primary:active,
2853 .btn-primary:active,
2854 .btn-primary.active,
2854 .btn-primary.active,
2855 .open > .dropdown-toggle.btn-primary {
2855 .open > .dropdown-toggle.btn-primary {
2856 background-image: none;
2856 background-image: none;
2857 }
2857 }
2858 .btn-primary.disabled,
2858 .btn-primary.disabled,
2859 .btn-primary[disabled],
2859 .btn-primary[disabled],
2860 fieldset[disabled] .btn-primary,
2860 fieldset[disabled] .btn-primary,
2861 .btn-primary.disabled:hover,
2861 .btn-primary.disabled:hover,
2862 .btn-primary[disabled]:hover,
2862 .btn-primary[disabled]:hover,
2863 fieldset[disabled] .btn-primary:hover,
2863 fieldset[disabled] .btn-primary:hover,
2864 .btn-primary.disabled:focus,
2864 .btn-primary.disabled:focus,
2865 .btn-primary[disabled]:focus,
2865 .btn-primary[disabled]:focus,
2866 fieldset[disabled] .btn-primary:focus,
2866 fieldset[disabled] .btn-primary:focus,
2867 .btn-primary.disabled.focus,
2867 .btn-primary.disabled.focus,
2868 .btn-primary[disabled].focus,
2868 .btn-primary[disabled].focus,
2869 fieldset[disabled] .btn-primary.focus,
2869 fieldset[disabled] .btn-primary.focus,
2870 .btn-primary.disabled:active,
2870 .btn-primary.disabled:active,
2871 .btn-primary[disabled]:active,
2871 .btn-primary[disabled]:active,
2872 fieldset[disabled] .btn-primary:active,
2872 fieldset[disabled] .btn-primary:active,
2873 .btn-primary.disabled.active,
2873 .btn-primary.disabled.active,
2874 .btn-primary[disabled].active,
2874 .btn-primary[disabled].active,
2875 fieldset[disabled] .btn-primary.active {
2875 fieldset[disabled] .btn-primary.active {
2876 background-color: #337ab7;
2876 background-color: #337ab7;
2877 border-color: #2e6da4;
2877 border-color: #2e6da4;
2878 }
2878 }
2879 .btn-primary .badge {
2879 .btn-primary .badge {
2880 color: #337ab7;
2880 color: #337ab7;
2881 background-color: #ffffff;
2881 background-color: #ffffff;
2882 }
2882 }
2883 .btn-success {
2883 .btn-success {
2884 color: #ffffff;
2884 color: #ffffff;
2885 background-color: #5cb85c;
2885 background-color: #5cb85c;
2886 border-color: #4cae4c;
2886 border-color: #4cae4c;
2887 }
2887 }
2888 .btn-success:hover,
2888 .btn-success:hover,
2889 .btn-success:focus,
2889 .btn-success:focus,
2890 .btn-success.focus,
2890 .btn-success.focus,
2891 .btn-success:active,
2891 .btn-success:active,
2892 .btn-success.active,
2892 .btn-success.active,
2893 .open > .dropdown-toggle.btn-success {
2893 .open > .dropdown-toggle.btn-success {
2894 color: #ffffff;
2894 color: #ffffff;
2895 background-color: #449d44;
2895 background-color: #449d44;
2896 border-color: #398439;
2896 border-color: #398439;
2897 }
2897 }
2898 .btn-success:active,
2898 .btn-success:active,
2899 .btn-success.active,
2899 .btn-success.active,
2900 .open > .dropdown-toggle.btn-success {
2900 .open > .dropdown-toggle.btn-success {
2901 background-image: none;
2901 background-image: none;
2902 }
2902 }
2903 .btn-success.disabled,
2903 .btn-success.disabled,
2904 .btn-success[disabled],
2904 .btn-success[disabled],
2905 fieldset[disabled] .btn-success,
2905 fieldset[disabled] .btn-success,
2906 .btn-success.disabled:hover,
2906 .btn-success.disabled:hover,
2907 .btn-success[disabled]:hover,
2907 .btn-success[disabled]:hover,
2908 fieldset[disabled] .btn-success:hover,
2908 fieldset[disabled] .btn-success:hover,
2909 .btn-success.disabled:focus,
2909 .btn-success.disabled:focus,
2910 .btn-success[disabled]:focus,
2910 .btn-success[disabled]:focus,
2911 fieldset[disabled] .btn-success:focus,
2911 fieldset[disabled] .btn-success:focus,
2912 .btn-success.disabled.focus,
2912 .btn-success.disabled.focus,
2913 .btn-success[disabled].focus,
2913 .btn-success[disabled].focus,
2914 fieldset[disabled] .btn-success.focus,
2914 fieldset[disabled] .btn-success.focus,
2915 .btn-success.disabled:active,
2915 .btn-success.disabled:active,
2916 .btn-success[disabled]:active,
2916 .btn-success[disabled]:active,
2917 fieldset[disabled] .btn-success:active,
2917 fieldset[disabled] .btn-success:active,
2918 .btn-success.disabled.active,
2918 .btn-success.disabled.active,
2919 .btn-success[disabled].active,
2919 .btn-success[disabled].active,
2920 fieldset[disabled] .btn-success.active {
2920 fieldset[disabled] .btn-success.active {
2921 background-color: #5cb85c;
2921 background-color: #5cb85c;
2922 border-color: #4cae4c;
2922 border-color: #4cae4c;
2923 }
2923 }
2924 .btn-success .badge {
2924 .btn-success .badge {
2925 color: #5cb85c;
2925 color: #5cb85c;
2926 background-color: #ffffff;
2926 background-color: #ffffff;
2927 }
2927 }
2928 .btn-info {
2928 .btn-info {
2929 color: #ffffff;
2929 color: #ffffff;
2930 background-color: #5bc0de;
2930 background-color: #5bc0de;
2931 border-color: #46b8da;
2931 border-color: #46b8da;
2932 }
2932 }
2933 .btn-info:hover,
2933 .btn-info:hover,
2934 .btn-info:focus,
2934 .btn-info:focus,
2935 .btn-info.focus,
2935 .btn-info.focus,
2936 .btn-info:active,
2936 .btn-info:active,
2937 .btn-info.active,
2937 .btn-info.active,
2938 .open > .dropdown-toggle.btn-info {
2938 .open > .dropdown-toggle.btn-info {
2939 color: #ffffff;
2939 color: #ffffff;
2940 background-color: #31b0d5;
2940 background-color: #31b0d5;
2941 border-color: #269abc;
2941 border-color: #269abc;
2942 }
2942 }
2943 .btn-info:active,
2943 .btn-info:active,
2944 .btn-info.active,
2944 .btn-info.active,
2945 .open > .dropdown-toggle.btn-info {
2945 .open > .dropdown-toggle.btn-info {
2946 background-image: none;
2946 background-image: none;
2947 }
2947 }
2948 .btn-info.disabled,
2948 .btn-info.disabled,
2949 .btn-info[disabled],
2949 .btn-info[disabled],
2950 fieldset[disabled] .btn-info,
2950 fieldset[disabled] .btn-info,
2951 .btn-info.disabled:hover,
2951 .btn-info.disabled:hover,
2952 .btn-info[disabled]:hover,
2952 .btn-info[disabled]:hover,
2953 fieldset[disabled] .btn-info:hover,
2953 fieldset[disabled] .btn-info:hover,
2954 .btn-info.disabled:focus,
2954 .btn-info.disabled:focus,
2955 .btn-info[disabled]:focus,
2955 .btn-info[disabled]:focus,
2956 fieldset[disabled] .btn-info:focus,
2956 fieldset[disabled] .btn-info:focus,
2957 .btn-info.disabled.focus,
2957 .btn-info.disabled.focus,
2958 .btn-info[disabled].focus,
2958 .btn-info[disabled].focus,
2959 fieldset[disabled] .btn-info.focus,
2959 fieldset[disabled] .btn-info.focus,
2960 .btn-info.disabled:active,
2960 .btn-info.disabled:active,
2961 .btn-info[disabled]:active,
2961 .btn-info[disabled]:active,
2962 fieldset[disabled] .btn-info:active,
2962 fieldset[disabled] .btn-info:active,
2963 .btn-info.disabled.active,
2963 .btn-info.disabled.active,
2964 .btn-info[disabled].active,
2964 .btn-info[disabled].active,
2965 fieldset[disabled] .btn-info.active {
2965 fieldset[disabled] .btn-info.active {
2966 background-color: #5bc0de;
2966 background-color: #5bc0de;
2967 border-color: #46b8da;
2967 border-color: #46b8da;
2968 }
2968 }
2969 .btn-info .badge {
2969 .btn-info .badge {
2970 color: #5bc0de;
2970 color: #5bc0de;
2971 background-color: #ffffff;
2971 background-color: #ffffff;
2972 }
2972 }
2973 .btn-warning {
2973 .btn-warning {
2974 color: #ffffff;
2974 color: #ffffff;
2975 background-color: #f0ad4e;
2975 background-color: #f0ad4e;
2976 border-color: #eea236;
2976 border-color: #eea236;
2977 }
2977 }
2978 .btn-warning:hover,
2978 .btn-warning:hover,
2979 .btn-warning:focus,
2979 .btn-warning:focus,
2980 .btn-warning.focus,
2980 .btn-warning.focus,
2981 .btn-warning:active,
2981 .btn-warning:active,
2982 .btn-warning.active,
2982 .btn-warning.active,
2983 .open > .dropdown-toggle.btn-warning {
2983 .open > .dropdown-toggle.btn-warning {
2984 color: #ffffff;
2984 color: #ffffff;
2985 background-color: #ec971f;
2985 background-color: #ec971f;
2986 border-color: #d58512;
2986 border-color: #d58512;
2987 }
2987 }
2988 .btn-warning:active,
2988 .btn-warning:active,
2989 .btn-warning.active,
2989 .btn-warning.active,
2990 .open > .dropdown-toggle.btn-warning {
2990 .open > .dropdown-toggle.btn-warning {
2991 background-image: none;
2991 background-image: none;
2992 }
2992 }
2993 .btn-warning.disabled,
2993 .btn-warning.disabled,
2994 .btn-warning[disabled],
2994 .btn-warning[disabled],
2995 fieldset[disabled] .btn-warning,
2995 fieldset[disabled] .btn-warning,
2996 .btn-warning.disabled:hover,
2996 .btn-warning.disabled:hover,
2997 .btn-warning[disabled]:hover,
2997 .btn-warning[disabled]:hover,
2998 fieldset[disabled] .btn-warning:hover,
2998 fieldset[disabled] .btn-warning:hover,
2999 .btn-warning.disabled:focus,
2999 .btn-warning.disabled:focus,
3000 .btn-warning[disabled]:focus,
3000 .btn-warning[disabled]:focus,
3001 fieldset[disabled] .btn-warning:focus,
3001 fieldset[disabled] .btn-warning:focus,
3002 .btn-warning.disabled.focus,
3002 .btn-warning.disabled.focus,
3003 .btn-warning[disabled].focus,
3003 .btn-warning[disabled].focus,
3004 fieldset[disabled] .btn-warning.focus,
3004 fieldset[disabled] .btn-warning.focus,
3005 .btn-warning.disabled:active,
3005 .btn-warning.disabled:active,
3006 .btn-warning[disabled]:active,
3006 .btn-warning[disabled]:active,
3007 fieldset[disabled] .btn-warning:active,
3007 fieldset[disabled] .btn-warning:active,
3008 .btn-warning.disabled.active,
3008 .btn-warning.disabled.active,
3009 .btn-warning[disabled].active,
3009 .btn-warning[disabled].active,
3010 fieldset[disabled] .btn-warning.active {
3010 fieldset[disabled] .btn-warning.active {
3011 background-color: #f0ad4e;
3011 background-color: #f0ad4e;
3012 border-color: #eea236;
3012 border-color: #eea236;
3013 }
3013 }
3014 .btn-warning .badge {
3014 .btn-warning .badge {
3015 color: #f0ad4e;
3015 color: #f0ad4e;
3016 background-color: #ffffff;
3016 background-color: #ffffff;
3017 }
3017 }
3018 .btn-danger {
3018 .btn-danger {
3019 color: #ffffff;
3019 color: #ffffff;
3020 background-color: #d9534f;
3020 background-color: #d9534f;
3021 border-color: #d43f3a;
3021 border-color: #d43f3a;
3022 }
3022 }
3023 .btn-danger:hover,
3023 .btn-danger:hover,
3024 .btn-danger:focus,
3024 .btn-danger:focus,
3025 .btn-danger.focus,
3025 .btn-danger.focus,
3026 .btn-danger:active,
3026 .btn-danger:active,
3027 .btn-danger.active,
3027 .btn-danger.active,
3028 .open > .dropdown-toggle.btn-danger {
3028 .open > .dropdown-toggle.btn-danger {
3029 color: #ffffff;
3029 color: #ffffff;
3030 background-color: #c9302c;
3030 background-color: #c9302c;
3031 border-color: #ac2925;
3031 border-color: #ac2925;
3032 }
3032 }
3033 .btn-danger:active,
3033 .btn-danger:active,
3034 .btn-danger.active,
3034 .btn-danger.active,
3035 .open > .dropdown-toggle.btn-danger {
3035 .open > .dropdown-toggle.btn-danger {
3036 background-image: none;
3036 background-image: none;
3037 }
3037 }
3038 .btn-danger.disabled,
3038 .btn-danger.disabled,
3039 .btn-danger[disabled],
3039 .btn-danger[disabled],
3040 fieldset[disabled] .btn-danger,
3040 fieldset[disabled] .btn-danger,
3041 .btn-danger.disabled:hover,
3041 .btn-danger.disabled:hover,
3042 .btn-danger[disabled]:hover,
3042 .btn-danger[disabled]:hover,
3043 fieldset[disabled] .btn-danger:hover,
3043 fieldset[disabled] .btn-danger:hover,
3044 .btn-danger.disabled:focus,
3044 .btn-danger.disabled:focus,
3045 .btn-danger[disabled]:focus,
3045 .btn-danger[disabled]:focus,
3046 fieldset[disabled] .btn-danger:focus,
3046 fieldset[disabled] .btn-danger:focus,
3047 .btn-danger.disabled.focus,
3047 .btn-danger.disabled.focus,
3048 .btn-danger[disabled].focus,
3048 .btn-danger[disabled].focus,
3049 fieldset[disabled] .btn-danger.focus,
3049 fieldset[disabled] .btn-danger.focus,
3050 .btn-danger.disabled:active,
3050 .btn-danger.disabled:active,
3051 .btn-danger[disabled]:active,
3051 .btn-danger[disabled]:active,
3052 fieldset[disabled] .btn-danger:active,
3052 fieldset[disabled] .btn-danger:active,
3053 .btn-danger.disabled.active,
3053 .btn-danger.disabled.active,
3054 .btn-danger[disabled].active,
3054 .btn-danger[disabled].active,
3055 fieldset[disabled] .btn-danger.active {
3055 fieldset[disabled] .btn-danger.active {
3056 background-color: #d9534f;
3056 background-color: #d9534f;
3057 border-color: #d43f3a;
3057 border-color: #d43f3a;
3058 }
3058 }
3059 .btn-danger .badge {
3059 .btn-danger .badge {
3060 color: #d9534f;
3060 color: #d9534f;
3061 background-color: #ffffff;
3061 background-color: #ffffff;
3062 }
3062 }
3063 .btn-link {
3063 .btn-link {
3064 color: #337ab7;
3064 color: #337ab7;
3065 font-weight: normal;
3065 font-weight: normal;
3066 border-radius: 0;
3066 border-radius: 0;
3067 }
3067 }
3068 .btn-link,
3068 .btn-link,
3069 .btn-link:active,
3069 .btn-link:active,
3070 .btn-link.active,
3070 .btn-link.active,
3071 .btn-link[disabled],
3071 .btn-link[disabled],
3072 fieldset[disabled] .btn-link {
3072 fieldset[disabled] .btn-link {
3073 background-color: transparent;
3073 background-color: transparent;
3074 -webkit-box-shadow: none;
3074 -webkit-box-shadow: none;
3075 box-shadow: none;
3075 box-shadow: none;
3076 }
3076 }
3077 .btn-link,
3077 .btn-link,
3078 .btn-link:hover,
3078 .btn-link:hover,
3079 .btn-link:focus,
3079 .btn-link:focus,
3080 .btn-link:active {
3080 .btn-link:active {
3081 border-color: transparent;
3081 border-color: transparent;
3082 }
3082 }
3083 .btn-link:hover,
3083 .btn-link:hover,
3084 .btn-link:focus {
3084 .btn-link:focus {
3085 color: #23527c;
3085 color: #23527c;
3086 text-decoration: underline;
3086 text-decoration: underline;
3087 background-color: transparent;
3087 background-color: transparent;
3088 }
3088 }
3089 .btn-link[disabled]:hover,
3089 .btn-link[disabled]:hover,
3090 fieldset[disabled] .btn-link:hover,
3090 fieldset[disabled] .btn-link:hover,
3091 .btn-link[disabled]:focus,
3091 .btn-link[disabled]:focus,
3092 fieldset[disabled] .btn-link:focus {
3092 fieldset[disabled] .btn-link:focus {
3093 color: #777777;
3093 color: #777777;
3094 text-decoration: none;
3094 text-decoration: none;
3095 }
3095 }
3096 .btn-lg,
3096 .btn-lg,
3097 .btn-group-lg > .btn {
3097 .btn-group-lg > .btn {
3098 padding: 10px 16px;
3098 padding: 10px 16px;
3099 font-size: 17px;
3099 font-size: 17px;
3100 line-height: 1.33;
3100 line-height: 1.33;
3101 border-radius: 3px;
3101 border-radius: 3px;
3102 }
3102 }
3103 .btn-sm,
3103 .btn-sm,
3104 .btn-group-sm > .btn {
3104 .btn-group-sm > .btn {
3105 padding: 5px 10px;
3105 padding: 5px 10px;
3106 font-size: 12px;
3106 font-size: 12px;
3107 line-height: 1.5;
3107 line-height: 1.5;
3108 border-radius: 1px;
3108 border-radius: 1px;
3109 }
3109 }
3110 .btn-xs,
3110 .btn-xs,
3111 .btn-group-xs > .btn {
3111 .btn-group-xs > .btn {
3112 padding: 1px 5px;
3112 padding: 1px 5px;
3113 font-size: 12px;
3113 font-size: 12px;
3114 line-height: 1.5;
3114 line-height: 1.5;
3115 border-radius: 1px;
3115 border-radius: 1px;
3116 }
3116 }
3117 .btn-block {
3117 .btn-block {
3118 display: block;
3118 display: block;
3119 width: 100%;
3119 width: 100%;
3120 }
3120 }
3121 .btn-block + .btn-block {
3121 .btn-block + .btn-block {
3122 margin-top: 5px;
3122 margin-top: 5px;
3123 }
3123 }
3124 input[type="submit"].btn-block,
3124 input[type="submit"].btn-block,
3125 input[type="reset"].btn-block,
3125 input[type="reset"].btn-block,
3126 input[type="button"].btn-block {
3126 input[type="button"].btn-block {
3127 width: 100%;
3127 width: 100%;
3128 }
3128 }
3129 .fade {
3129 .fade {
3130 opacity: 0;
3130 opacity: 0;
3131 -webkit-transition: opacity 0.15s linear;
3131 -webkit-transition: opacity 0.15s linear;
3132 -o-transition: opacity 0.15s linear;
3132 -o-transition: opacity 0.15s linear;
3133 transition: opacity 0.15s linear;
3133 transition: opacity 0.15s linear;
3134 }
3134 }
3135 .fade.in {
3135 .fade.in {
3136 opacity: 1;
3136 opacity: 1;
3137 }
3137 }
3138 .collapse {
3138 .collapse {
3139 display: none;
3139 display: none;
3140 visibility: hidden;
3140 visibility: hidden;
3141 }
3141 }
3142 .collapse.in {
3142 .collapse.in {
3143 display: block;
3143 display: block;
3144 visibility: visible;
3144 visibility: visible;
3145 }
3145 }
3146 tr.collapse.in {
3146 tr.collapse.in {
3147 display: table-row;
3147 display: table-row;
3148 }
3148 }
3149 tbody.collapse.in {
3149 tbody.collapse.in {
3150 display: table-row-group;
3150 display: table-row-group;
3151 }
3151 }
3152 .collapsing {
3152 .collapsing {
3153 position: relative;
3153 position: relative;
3154 height: 0;
3154 height: 0;
3155 overflow: hidden;
3155 overflow: hidden;
3156 -webkit-transition-property: height, visibility;
3156 -webkit-transition-property: height, visibility;
3157 transition-property: height, visibility;
3157 transition-property: height, visibility;
3158 -webkit-transition-duration: 0.35s;
3158 -webkit-transition-duration: 0.35s;
3159 transition-duration: 0.35s;
3159 transition-duration: 0.35s;
3160 -webkit-transition-timing-function: ease;
3160 -webkit-transition-timing-function: ease;
3161 transition-timing-function: ease;
3161 transition-timing-function: ease;
3162 }
3162 }
3163 .caret {
3163 .caret {
3164 display: inline-block;
3164 display: inline-block;
3165 width: 0;
3165 width: 0;
3166 height: 0;
3166 height: 0;
3167 margin-left: 2px;
3167 margin-left: 2px;
3168 vertical-align: middle;
3168 vertical-align: middle;
3169 border-top: 4px solid;
3169 border-top: 4px solid;
3170 border-right: 4px solid transparent;
3170 border-right: 4px solid transparent;
3171 border-left: 4px solid transparent;
3171 border-left: 4px solid transparent;
3172 }
3172 }
3173 .dropdown {
3173 .dropdown {
3174 position: relative;
3174 position: relative;
3175 }
3175 }
3176 .dropdown-toggle:focus {
3176 .dropdown-toggle:focus {
3177 outline: 0;
3177 outline: 0;
3178 }
3178 }
3179 .dropdown-menu {
3179 .dropdown-menu {
3180 position: absolute;
3180 position: absolute;
3181 top: 100%;
3181 top: 100%;
3182 left: 0;
3182 left: 0;
3183 z-index: 1000;
3183 z-index: 1000;
3184 display: none;
3184 display: none;
3185 float: left;
3185 float: left;
3186 min-width: 160px;
3186 min-width: 160px;
3187 padding: 5px 0;
3187 padding: 5px 0;
3188 margin: 2px 0 0;
3188 margin: 2px 0 0;
3189 list-style: none;
3189 list-style: none;
3190 font-size: 13px;
3190 font-size: 13px;
3191 text-align: left;
3191 text-align: left;
3192 background-color: #ffffff;
3192 background-color: #ffffff;
3193 border: 1px solid #cccccc;
3193 border: 1px solid #cccccc;
3194 border: 1px solid rgba(0, 0, 0, 0.15);
3194 border: 1px solid rgba(0, 0, 0, 0.15);
3195 border-radius: 2px;
3195 border-radius: 2px;
3196 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3196 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3197 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3197 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3198 background-clip: padding-box;
3198 background-clip: padding-box;
3199 }
3199 }
3200 .dropdown-menu.pull-right {
3200 .dropdown-menu.pull-right {
3201 right: 0;
3201 right: 0;
3202 left: auto;
3202 left: auto;
3203 }
3203 }
3204 .dropdown-menu .divider {
3204 .dropdown-menu .divider {
3205 height: 1px;
3205 height: 1px;
3206 margin: 8px 0;
3206 margin: 8px 0;
3207 overflow: hidden;
3207 overflow: hidden;
3208 background-color: #e5e5e5;
3208 background-color: #e5e5e5;
3209 }
3209 }
3210 .dropdown-menu > li > a {
3210 .dropdown-menu > li > a {
3211 display: block;
3211 display: block;
3212 padding: 3px 20px;
3212 padding: 3px 20px;
3213 clear: both;
3213 clear: both;
3214 font-weight: normal;
3214 font-weight: normal;
3215 line-height: 1.42857143;
3215 line-height: 1.42857143;
3216 color: #333333;
3216 color: #333333;
3217 white-space: nowrap;
3217 white-space: nowrap;
3218 }
3218 }
3219 .dropdown-menu > li > a:hover,
3219 .dropdown-menu > li > a:hover,
3220 .dropdown-menu > li > a:focus {
3220 .dropdown-menu > li > a:focus {
3221 text-decoration: none;
3221 text-decoration: none;
3222 color: #262626;
3222 color: #262626;
3223 background-color: #f5f5f5;
3223 background-color: #f5f5f5;
3224 }
3224 }
3225 .dropdown-menu > .active > a,
3225 .dropdown-menu > .active > a,
3226 .dropdown-menu > .active > a:hover,
3226 .dropdown-menu > .active > a:hover,
3227 .dropdown-menu > .active > a:focus {
3227 .dropdown-menu > .active > a:focus {
3228 color: #ffffff;
3228 color: #ffffff;
3229 text-decoration: none;
3229 text-decoration: none;
3230 outline: 0;
3230 outline: 0;
3231 background-color: #337ab7;
3231 background-color: #337ab7;
3232 }
3232 }
3233 .dropdown-menu > .disabled > a,
3233 .dropdown-menu > .disabled > a,
3234 .dropdown-menu > .disabled > a:hover,
3234 .dropdown-menu > .disabled > a:hover,
3235 .dropdown-menu > .disabled > a:focus {
3235 .dropdown-menu > .disabled > a:focus {
3236 color: #777777;
3236 color: #777777;
3237 }
3237 }
3238 .dropdown-menu > .disabled > a:hover,
3238 .dropdown-menu > .disabled > a:hover,
3239 .dropdown-menu > .disabled > a:focus {
3239 .dropdown-menu > .disabled > a:focus {
3240 text-decoration: none;
3240 text-decoration: none;
3241 background-color: transparent;
3241 background-color: transparent;
3242 background-image: none;
3242 background-image: none;
3243 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3243 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3244 cursor: not-allowed;
3244 cursor: not-allowed;
3245 }
3245 }
3246 .open > .dropdown-menu {
3246 .open > .dropdown-menu {
3247 display: block;
3247 display: block;
3248 }
3248 }
3249 .open > a {
3249 .open > a {
3250 outline: 0;
3250 outline: 0;
3251 }
3251 }
3252 .dropdown-menu-right {
3252 .dropdown-menu-right {
3253 left: auto;
3253 left: auto;
3254 right: 0;
3254 right: 0;
3255 }
3255 }
3256 .dropdown-menu-left {
3256 .dropdown-menu-left {
3257 left: 0;
3257 left: 0;
3258 right: auto;
3258 right: auto;
3259 }
3259 }
3260 .dropdown-header {
3260 .dropdown-header {
3261 display: block;
3261 display: block;
3262 padding: 3px 20px;
3262 padding: 3px 20px;
3263 font-size: 12px;
3263 font-size: 12px;
3264 line-height: 1.42857143;
3264 line-height: 1.42857143;
3265 color: #777777;
3265 color: #777777;
3266 white-space: nowrap;
3266 white-space: nowrap;
3267 }
3267 }
3268 .dropdown-backdrop {
3268 .dropdown-backdrop {
3269 position: fixed;
3269 position: fixed;
3270 left: 0;
3270 left: 0;
3271 right: 0;
3271 right: 0;
3272 bottom: 0;
3272 bottom: 0;
3273 top: 0;
3273 top: 0;
3274 z-index: 990;
3274 z-index: 990;
3275 }
3275 }
3276 .pull-right > .dropdown-menu {
3276 .pull-right > .dropdown-menu {
3277 right: 0;
3277 right: 0;
3278 left: auto;
3278 left: auto;
3279 }
3279 }
3280 .dropup .caret,
3280 .dropup .caret,
3281 .navbar-fixed-bottom .dropdown .caret {
3281 .navbar-fixed-bottom .dropdown .caret {
3282 border-top: 0;
3282 border-top: 0;
3283 border-bottom: 4px solid;
3283 border-bottom: 4px solid;
3284 content: "";
3284 content: "";
3285 }
3285 }
3286 .dropup .dropdown-menu,
3286 .dropup .dropdown-menu,
3287 .navbar-fixed-bottom .dropdown .dropdown-menu {
3287 .navbar-fixed-bottom .dropdown .dropdown-menu {
3288 top: auto;
3288 top: auto;
3289 bottom: 100%;
3289 bottom: 100%;
3290 margin-bottom: 1px;
3290 margin-bottom: 1px;
3291 }
3291 }
3292 @media (min-width: 541px) {
3292 @media (min-width: 541px) {
3293 .navbar-right .dropdown-menu {
3293 .navbar-right .dropdown-menu {
3294 left: auto;
3294 left: auto;
3295 right: 0;
3295 right: 0;
3296 }
3296 }
3297 .navbar-right .dropdown-menu-left {
3297 .navbar-right .dropdown-menu-left {
3298 left: 0;
3298 left: 0;
3299 right: auto;
3299 right: auto;
3300 }
3300 }
3301 }
3301 }
3302 .btn-group,
3302 .btn-group,
3303 .btn-group-vertical {
3303 .btn-group-vertical {
3304 position: relative;
3304 position: relative;
3305 display: inline-block;
3305 display: inline-block;
3306 vertical-align: middle;
3306 vertical-align: middle;
3307 }
3307 }
3308 .btn-group > .btn,
3308 .btn-group > .btn,
3309 .btn-group-vertical > .btn {
3309 .btn-group-vertical > .btn {
3310 position: relative;
3310 position: relative;
3311 float: left;
3311 float: left;
3312 }
3312 }
3313 .btn-group > .btn:hover,
3313 .btn-group > .btn:hover,
3314 .btn-group-vertical > .btn:hover,
3314 .btn-group-vertical > .btn:hover,
3315 .btn-group > .btn:focus,
3315 .btn-group > .btn:focus,
3316 .btn-group-vertical > .btn:focus,
3316 .btn-group-vertical > .btn:focus,
3317 .btn-group > .btn:active,
3317 .btn-group > .btn:active,
3318 .btn-group-vertical > .btn:active,
3318 .btn-group-vertical > .btn:active,
3319 .btn-group > .btn.active,
3319 .btn-group > .btn.active,
3320 .btn-group-vertical > .btn.active {
3320 .btn-group-vertical > .btn.active {
3321 z-index: 2;
3321 z-index: 2;
3322 }
3322 }
3323 .btn-group .btn + .btn,
3323 .btn-group .btn + .btn,
3324 .btn-group .btn + .btn-group,
3324 .btn-group .btn + .btn-group,
3325 .btn-group .btn-group + .btn,
3325 .btn-group .btn-group + .btn,
3326 .btn-group .btn-group + .btn-group {
3326 .btn-group .btn-group + .btn-group {
3327 margin-left: -1px;
3327 margin-left: -1px;
3328 }
3328 }
3329 .btn-toolbar {
3329 .btn-toolbar {
3330 margin-left: -5px;
3330 margin-left: -5px;
3331 }
3331 }
3332 .btn-toolbar .btn-group,
3332 .btn-toolbar .btn-group,
3333 .btn-toolbar .input-group {
3333 .btn-toolbar .input-group {
3334 float: left;
3334 float: left;
3335 }
3335 }
3336 .btn-toolbar > .btn,
3336 .btn-toolbar > .btn,
3337 .btn-toolbar > .btn-group,
3337 .btn-toolbar > .btn-group,
3338 .btn-toolbar > .input-group {
3338 .btn-toolbar > .input-group {
3339 margin-left: 5px;
3339 margin-left: 5px;
3340 }
3340 }
3341 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3341 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3342 border-radius: 0;
3342 border-radius: 0;
3343 }
3343 }
3344 .btn-group > .btn:first-child {
3344 .btn-group > .btn:first-child {
3345 margin-left: 0;
3345 margin-left: 0;
3346 }
3346 }
3347 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3347 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3348 border-bottom-right-radius: 0;
3348 border-bottom-right-radius: 0;
3349 border-top-right-radius: 0;
3349 border-top-right-radius: 0;
3350 }
3350 }
3351 .btn-group > .btn:last-child:not(:first-child),
3351 .btn-group > .btn:last-child:not(:first-child),
3352 .btn-group > .dropdown-toggle:not(:first-child) {
3352 .btn-group > .dropdown-toggle:not(:first-child) {
3353 border-bottom-left-radius: 0;
3353 border-bottom-left-radius: 0;
3354 border-top-left-radius: 0;
3354 border-top-left-radius: 0;
3355 }
3355 }
3356 .btn-group > .btn-group {
3356 .btn-group > .btn-group {
3357 float: left;
3357 float: left;
3358 }
3358 }
3359 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3359 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3360 border-radius: 0;
3360 border-radius: 0;
3361 }
3361 }
3362 .btn-group > .btn-group:first-child > .btn:last-child,
3362 .btn-group > .btn-group:first-child > .btn:last-child,
3363 .btn-group > .btn-group:first-child > .dropdown-toggle {
3363 .btn-group > .btn-group:first-child > .dropdown-toggle {
3364 border-bottom-right-radius: 0;
3364 border-bottom-right-radius: 0;
3365 border-top-right-radius: 0;
3365 border-top-right-radius: 0;
3366 }
3366 }
3367 .btn-group > .btn-group:last-child > .btn:first-child {
3367 .btn-group > .btn-group:last-child > .btn:first-child {
3368 border-bottom-left-radius: 0;
3368 border-bottom-left-radius: 0;
3369 border-top-left-radius: 0;
3369 border-top-left-radius: 0;
3370 }
3370 }
3371 .btn-group .dropdown-toggle:active,
3371 .btn-group .dropdown-toggle:active,
3372 .btn-group.open .dropdown-toggle {
3372 .btn-group.open .dropdown-toggle {
3373 outline: 0;
3373 outline: 0;
3374 }
3374 }
3375 .btn-group > .btn + .dropdown-toggle {
3375 .btn-group > .btn + .dropdown-toggle {
3376 padding-left: 8px;
3376 padding-left: 8px;
3377 padding-right: 8px;
3377 padding-right: 8px;
3378 }
3378 }
3379 .btn-group > .btn-lg + .dropdown-toggle {
3379 .btn-group > .btn-lg + .dropdown-toggle {
3380 padding-left: 12px;
3380 padding-left: 12px;
3381 padding-right: 12px;
3381 padding-right: 12px;
3382 }
3382 }
3383 .btn-group.open .dropdown-toggle {
3383 .btn-group.open .dropdown-toggle {
3384 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3384 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3385 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3385 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3386 }
3386 }
3387 .btn-group.open .dropdown-toggle.btn-link {
3387 .btn-group.open .dropdown-toggle.btn-link {
3388 -webkit-box-shadow: none;
3388 -webkit-box-shadow: none;
3389 box-shadow: none;
3389 box-shadow: none;
3390 }
3390 }
3391 .btn .caret {
3391 .btn .caret {
3392 margin-left: 0;
3392 margin-left: 0;
3393 }
3393 }
3394 .btn-lg .caret {
3394 .btn-lg .caret {
3395 border-width: 5px 5px 0;
3395 border-width: 5px 5px 0;
3396 border-bottom-width: 0;
3396 border-bottom-width: 0;
3397 }
3397 }
3398 .dropup .btn-lg .caret {
3398 .dropup .btn-lg .caret {
3399 border-width: 0 5px 5px;
3399 border-width: 0 5px 5px;
3400 }
3400 }
3401 .btn-group-vertical > .btn,
3401 .btn-group-vertical > .btn,
3402 .btn-group-vertical > .btn-group,
3402 .btn-group-vertical > .btn-group,
3403 .btn-group-vertical > .btn-group > .btn {
3403 .btn-group-vertical > .btn-group > .btn {
3404 display: block;
3404 display: block;
3405 float: none;
3405 float: none;
3406 width: 100%;
3406 width: 100%;
3407 max-width: 100%;
3407 max-width: 100%;
3408 }
3408 }
3409 .btn-group-vertical > .btn-group > .btn {
3409 .btn-group-vertical > .btn-group > .btn {
3410 float: none;
3410 float: none;
3411 }
3411 }
3412 .btn-group-vertical > .btn + .btn,
3412 .btn-group-vertical > .btn + .btn,
3413 .btn-group-vertical > .btn + .btn-group,
3413 .btn-group-vertical > .btn + .btn-group,
3414 .btn-group-vertical > .btn-group + .btn,
3414 .btn-group-vertical > .btn-group + .btn,
3415 .btn-group-vertical > .btn-group + .btn-group {
3415 .btn-group-vertical > .btn-group + .btn-group {
3416 margin-top: -1px;
3416 margin-top: -1px;
3417 margin-left: 0;
3417 margin-left: 0;
3418 }
3418 }
3419 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3419 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3420 border-radius: 0;
3420 border-radius: 0;
3421 }
3421 }
3422 .btn-group-vertical > .btn:first-child:not(:last-child) {
3422 .btn-group-vertical > .btn:first-child:not(:last-child) {
3423 border-top-right-radius: 2px;
3423 border-top-right-radius: 2px;
3424 border-bottom-right-radius: 0;
3424 border-bottom-right-radius: 0;
3425 border-bottom-left-radius: 0;
3425 border-bottom-left-radius: 0;
3426 }
3426 }
3427 .btn-group-vertical > .btn:last-child:not(:first-child) {
3427 .btn-group-vertical > .btn:last-child:not(:first-child) {
3428 border-bottom-left-radius: 2px;
3428 border-bottom-left-radius: 2px;
3429 border-top-right-radius: 0;
3429 border-top-right-radius: 0;
3430 border-top-left-radius: 0;
3430 border-top-left-radius: 0;
3431 }
3431 }
3432 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3432 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3433 border-radius: 0;
3433 border-radius: 0;
3434 }
3434 }
3435 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3435 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3436 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3436 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3437 border-bottom-right-radius: 0;
3437 border-bottom-right-radius: 0;
3438 border-bottom-left-radius: 0;
3438 border-bottom-left-radius: 0;
3439 }
3439 }
3440 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3440 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3441 border-top-right-radius: 0;
3441 border-top-right-radius: 0;
3442 border-top-left-radius: 0;
3442 border-top-left-radius: 0;
3443 }
3443 }
3444 .btn-group-justified {
3444 .btn-group-justified {
3445 display: table;
3445 display: table;
3446 width: 100%;
3446 width: 100%;
3447 table-layout: fixed;
3447 table-layout: fixed;
3448 border-collapse: separate;
3448 border-collapse: separate;
3449 }
3449 }
3450 .btn-group-justified > .btn,
3450 .btn-group-justified > .btn,
3451 .btn-group-justified > .btn-group {
3451 .btn-group-justified > .btn-group {
3452 float: none;
3452 float: none;
3453 display: table-cell;
3453 display: table-cell;
3454 width: 1%;
3454 width: 1%;
3455 }
3455 }
3456 .btn-group-justified > .btn-group .btn {
3456 .btn-group-justified > .btn-group .btn {
3457 width: 100%;
3457 width: 100%;
3458 }
3458 }
3459 .btn-group-justified > .btn-group .dropdown-menu {
3459 .btn-group-justified > .btn-group .dropdown-menu {
3460 left: auto;
3460 left: auto;
3461 }
3461 }
3462 [data-toggle="buttons"] > .btn input[type="radio"],
3462 [data-toggle="buttons"] > .btn input[type="radio"],
3463 [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3463 [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3464 [data-toggle="buttons"] > .btn input[type="checkbox"],
3464 [data-toggle="buttons"] > .btn input[type="checkbox"],
3465 [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3465 [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3466 position: absolute;
3466 position: absolute;
3467 clip: rect(0, 0, 0, 0);
3467 clip: rect(0, 0, 0, 0);
3468 pointer-events: none;
3468 pointer-events: none;
3469 }
3469 }
3470 .input-group {
3470 .input-group {
3471 position: relative;
3471 position: relative;
3472 display: table;
3472 display: table;
3473 border-collapse: separate;
3473 border-collapse: separate;
3474 }
3474 }
3475 .input-group[class*="col-"] {
3475 .input-group[class*="col-"] {
3476 float: none;
3476 float: none;
3477 padding-left: 0;
3477 padding-left: 0;
3478 padding-right: 0;
3478 padding-right: 0;
3479 }
3479 }
3480 .input-group .form-control {
3480 .input-group .form-control {
3481 position: relative;
3481 position: relative;
3482 z-index: 2;
3482 z-index: 2;
3483 float: left;
3483 float: left;
3484 width: 100%;
3484 width: 100%;
3485 margin-bottom: 0;
3485 margin-bottom: 0;
3486 }
3486 }
3487 .input-group-lg > .form-control,
3487 .input-group-lg > .form-control,
3488 .input-group-lg > .input-group-addon,
3488 .input-group-lg > .input-group-addon,
3489 .input-group-lg > .input-group-btn > .btn {
3489 .input-group-lg > .input-group-btn > .btn {
3490 height: 45px;
3490 height: 45px;
3491 padding: 10px 16px;
3491 padding: 10px 16px;
3492 font-size: 17px;
3492 font-size: 17px;
3493 line-height: 1.33;
3493 line-height: 1.33;
3494 border-radius: 3px;
3494 border-radius: 3px;
3495 }
3495 }
3496 select.input-group-lg > .form-control,
3496 select.input-group-lg > .form-control,
3497 select.input-group-lg > .input-group-addon,
3497 select.input-group-lg > .input-group-addon,
3498 select.input-group-lg > .input-group-btn > .btn {
3498 select.input-group-lg > .input-group-btn > .btn {
3499 height: 45px;
3499 height: 45px;
3500 line-height: 45px;
3500 line-height: 45px;
3501 }
3501 }
3502 textarea.input-group-lg > .form-control,
3502 textarea.input-group-lg > .form-control,
3503 textarea.input-group-lg > .input-group-addon,
3503 textarea.input-group-lg > .input-group-addon,
3504 textarea.input-group-lg > .input-group-btn > .btn,
3504 textarea.input-group-lg > .input-group-btn > .btn,
3505 select[multiple].input-group-lg > .form-control,
3505 select[multiple].input-group-lg > .form-control,
3506 select[multiple].input-group-lg > .input-group-addon,
3506 select[multiple].input-group-lg > .input-group-addon,
3507 select[multiple].input-group-lg > .input-group-btn > .btn {
3507 select[multiple].input-group-lg > .input-group-btn > .btn {
3508 height: auto;
3508 height: auto;
3509 }
3509 }
3510 .input-group-sm > .form-control,
3510 .input-group-sm > .form-control,
3511 .input-group-sm > .input-group-addon,
3511 .input-group-sm > .input-group-addon,
3512 .input-group-sm > .input-group-btn > .btn {
3512 .input-group-sm > .input-group-btn > .btn {
3513 height: 30px;
3513 height: 30px;
3514 padding: 5px 10px;
3514 padding: 5px 10px;
3515 font-size: 12px;
3515 font-size: 12px;
3516 line-height: 1.5;
3516 line-height: 1.5;
3517 border-radius: 1px;
3517 border-radius: 1px;
3518 }
3518 }
3519 select.input-group-sm > .form-control,
3519 select.input-group-sm > .form-control,
3520 select.input-group-sm > .input-group-addon,
3520 select.input-group-sm > .input-group-addon,
3521 select.input-group-sm > .input-group-btn > .btn {
3521 select.input-group-sm > .input-group-btn > .btn {
3522 height: 30px;
3522 height: 30px;
3523 line-height: 30px;
3523 line-height: 30px;
3524 }
3524 }
3525 textarea.input-group-sm > .form-control,
3525 textarea.input-group-sm > .form-control,
3526 textarea.input-group-sm > .input-group-addon,
3526 textarea.input-group-sm > .input-group-addon,
3527 textarea.input-group-sm > .input-group-btn > .btn,
3527 textarea.input-group-sm > .input-group-btn > .btn,
3528 select[multiple].input-group-sm > .form-control,
3528 select[multiple].input-group-sm > .form-control,
3529 select[multiple].input-group-sm > .input-group-addon,
3529 select[multiple].input-group-sm > .input-group-addon,
3530 select[multiple].input-group-sm > .input-group-btn > .btn {
3530 select[multiple].input-group-sm > .input-group-btn > .btn {
3531 height: auto;
3531 height: auto;
3532 }
3532 }
3533 .input-group-addon,
3533 .input-group-addon,
3534 .input-group-btn,
3534 .input-group-btn,
3535 .input-group .form-control {
3535 .input-group .form-control {
3536 display: table-cell;
3536 display: table-cell;
3537 }
3537 }
3538 .input-group-addon:not(:first-child):not(:last-child),
3538 .input-group-addon:not(:first-child):not(:last-child),
3539 .input-group-btn:not(:first-child):not(:last-child),
3539 .input-group-btn:not(:first-child):not(:last-child),
3540 .input-group .form-control:not(:first-child):not(:last-child) {
3540 .input-group .form-control:not(:first-child):not(:last-child) {
3541 border-radius: 0;
3541 border-radius: 0;
3542 }
3542 }
3543 .input-group-addon,
3543 .input-group-addon,
3544 .input-group-btn {
3544 .input-group-btn {
3545 width: 1%;
3545 width: 1%;
3546 white-space: nowrap;
3546 white-space: nowrap;
3547 vertical-align: middle;
3547 vertical-align: middle;
3548 }
3548 }
3549 .input-group-addon {
3549 .input-group-addon {
3550 padding: 6px 12px;
3550 padding: 6px 12px;
3551 font-size: 13px;
3551 font-size: 13px;
3552 font-weight: normal;
3552 font-weight: normal;
3553 line-height: 1;
3553 line-height: 1;
3554 color: #555555;
3554 color: #555555;
3555 text-align: center;
3555 text-align: center;
3556 background-color: #eeeeee;
3556 background-color: #eeeeee;
3557 border: 1px solid #cccccc;
3557 border: 1px solid #cccccc;
3558 border-radius: 2px;
3558 border-radius: 2px;
3559 }
3559 }
3560 .input-group-addon.input-sm {
3560 .input-group-addon.input-sm {
3561 padding: 5px 10px;
3561 padding: 5px 10px;
3562 font-size: 12px;
3562 font-size: 12px;
3563 border-radius: 1px;
3563 border-radius: 1px;
3564 }
3564 }
3565 .input-group-addon.input-lg {
3565 .input-group-addon.input-lg {
3566 padding: 10px 16px;
3566 padding: 10px 16px;
3567 font-size: 17px;
3567 font-size: 17px;
3568 border-radius: 3px;
3568 border-radius: 3px;
3569 }
3569 }
3570 .input-group-addon input[type="radio"],
3570 .input-group-addon input[type="radio"],
3571 .input-group-addon input[type="checkbox"] {
3571 .input-group-addon input[type="checkbox"] {
3572 margin-top: 0;
3572 margin-top: 0;
3573 }
3573 }
3574 .input-group .form-control:first-child,
3574 .input-group .form-control:first-child,
3575 .input-group-addon:first-child,
3575 .input-group-addon:first-child,
3576 .input-group-btn:first-child > .btn,
3576 .input-group-btn:first-child > .btn,
3577 .input-group-btn:first-child > .btn-group > .btn,
3577 .input-group-btn:first-child > .btn-group > .btn,
3578 .input-group-btn:first-child > .dropdown-toggle,
3578 .input-group-btn:first-child > .dropdown-toggle,
3579 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3579 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3580 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3580 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3581 border-bottom-right-radius: 0;
3581 border-bottom-right-radius: 0;
3582 border-top-right-radius: 0;
3582 border-top-right-radius: 0;
3583 }
3583 }
3584 .input-group-addon:first-child {
3584 .input-group-addon:first-child {
3585 border-right: 0;
3585 border-right: 0;
3586 }
3586 }
3587 .input-group .form-control:last-child,
3587 .input-group .form-control:last-child,
3588 .input-group-addon:last-child,
3588 .input-group-addon:last-child,
3589 .input-group-btn:last-child > .btn,
3589 .input-group-btn:last-child > .btn,
3590 .input-group-btn:last-child > .btn-group > .btn,
3590 .input-group-btn:last-child > .btn-group > .btn,
3591 .input-group-btn:last-child > .dropdown-toggle,
3591 .input-group-btn:last-child > .dropdown-toggle,
3592 .input-group-btn:first-child > .btn:not(:first-child),
3592 .input-group-btn:first-child > .btn:not(:first-child),
3593 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3593 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3594 border-bottom-left-radius: 0;
3594 border-bottom-left-radius: 0;
3595 border-top-left-radius: 0;
3595 border-top-left-radius: 0;
3596 }
3596 }
3597 .input-group-addon:last-child {
3597 .input-group-addon:last-child {
3598 border-left: 0;
3598 border-left: 0;
3599 }
3599 }
3600 .input-group-btn {
3600 .input-group-btn {
3601 position: relative;
3601 position: relative;
3602 font-size: 0;
3602 font-size: 0;
3603 white-space: nowrap;
3603 white-space: nowrap;
3604 }
3604 }
3605 .input-group-btn > .btn {
3605 .input-group-btn > .btn {
3606 position: relative;
3606 position: relative;
3607 }
3607 }
3608 .input-group-btn > .btn + .btn {
3608 .input-group-btn > .btn + .btn {
3609 margin-left: -1px;
3609 margin-left: -1px;
3610 }
3610 }
3611 .input-group-btn > .btn:hover,
3611 .input-group-btn > .btn:hover,
3612 .input-group-btn > .btn:focus,
3612 .input-group-btn > .btn:focus,
3613 .input-group-btn > .btn:active {
3613 .input-group-btn > .btn:active {
3614 z-index: 2;
3614 z-index: 2;
3615 }
3615 }
3616 .input-group-btn:first-child > .btn,
3616 .input-group-btn:first-child > .btn,
3617 .input-group-btn:first-child > .btn-group {
3617 .input-group-btn:first-child > .btn-group {
3618 margin-right: -1px;
3618 margin-right: -1px;
3619 }
3619 }
3620 .input-group-btn:last-child > .btn,
3620 .input-group-btn:last-child > .btn,
3621 .input-group-btn:last-child > .btn-group {
3621 .input-group-btn:last-child > .btn-group {
3622 margin-left: -1px;
3622 margin-left: -1px;
3623 }
3623 }
3624 .nav {
3624 .nav {
3625 margin-bottom: 0;
3625 margin-bottom: 0;
3626 padding-left: 0;
3626 padding-left: 0;
3627 list-style: none;
3627 list-style: none;
3628 }
3628 }
3629 .nav > li {
3629 .nav > li {
3630 position: relative;
3630 position: relative;
3631 display: block;
3631 display: block;
3632 }
3632 }
3633 .nav > li > a {
3633 .nav > li > a {
3634 position: relative;
3634 position: relative;
3635 display: block;
3635 display: block;
3636 padding: 10px 15px;
3636 padding: 10px 15px;
3637 }
3637 }
3638 .nav > li > a:hover,
3638 .nav > li > a:hover,
3639 .nav > li > a:focus {
3639 .nav > li > a:focus {
3640 text-decoration: none;
3640 text-decoration: none;
3641 background-color: #eeeeee;
3641 background-color: #eeeeee;
3642 }
3642 }
3643 .nav > li.disabled > a {
3643 .nav > li.disabled > a {
3644 color: #777777;
3644 color: #777777;
3645 }
3645 }
3646 .nav > li.disabled > a:hover,
3646 .nav > li.disabled > a:hover,
3647 .nav > li.disabled > a:focus {
3647 .nav > li.disabled > a:focus {
3648 color: #777777;
3648 color: #777777;
3649 text-decoration: none;
3649 text-decoration: none;
3650 background-color: transparent;
3650 background-color: transparent;
3651 cursor: not-allowed;
3651 cursor: not-allowed;
3652 }
3652 }
3653 .nav .open > a,
3653 .nav .open > a,
3654 .nav .open > a:hover,
3654 .nav .open > a:hover,
3655 .nav .open > a:focus {
3655 .nav .open > a:focus {
3656 background-color: #eeeeee;
3656 background-color: #eeeeee;
3657 border-color: #337ab7;
3657 border-color: #337ab7;
3658 }
3658 }
3659 .nav .nav-divider {
3659 .nav .nav-divider {
3660 height: 1px;
3660 height: 1px;
3661 margin: 8px 0;
3661 margin: 8px 0;
3662 overflow: hidden;
3662 overflow: hidden;
3663 background-color: #e5e5e5;
3663 background-color: #e5e5e5;
3664 }
3664 }
3665 .nav > li > a > img {
3665 .nav > li > a > img {
3666 max-width: none;
3666 max-width: none;
3667 }
3667 }
3668 .nav-tabs {
3668 .nav-tabs {
3669 border-bottom: 1px solid #dddddd;
3669 border-bottom: 1px solid #dddddd;
3670 }
3670 }
3671 .nav-tabs > li {
3671 .nav-tabs > li {
3672 float: left;
3672 float: left;
3673 margin-bottom: -1px;
3673 margin-bottom: -1px;
3674 }
3674 }
3675 .nav-tabs > li > a {
3675 .nav-tabs > li > a {
3676 margin-right: 2px;
3676 margin-right: 2px;
3677 line-height: 1.42857143;
3677 line-height: 1.42857143;
3678 border: 1px solid transparent;
3678 border: 1px solid transparent;
3679 border-radius: 2px 2px 0 0;
3679 border-radius: 2px 2px 0 0;
3680 }
3680 }
3681 .nav-tabs > li > a:hover {
3681 .nav-tabs > li > a:hover {
3682 border-color: #eeeeee #eeeeee #dddddd;
3682 border-color: #eeeeee #eeeeee #dddddd;
3683 }
3683 }
3684 .nav-tabs > li.active > a,
3684 .nav-tabs > li.active > a,
3685 .nav-tabs > li.active > a:hover,
3685 .nav-tabs > li.active > a:hover,
3686 .nav-tabs > li.active > a:focus {
3686 .nav-tabs > li.active > a:focus {
3687 color: #555555;
3687 color: #555555;
3688 background-color: #ffffff;
3688 background-color: #ffffff;
3689 border: 1px solid #dddddd;
3689 border: 1px solid #dddddd;
3690 border-bottom-color: transparent;
3690 border-bottom-color: transparent;
3691 cursor: default;
3691 cursor: default;
3692 }
3692 }
3693 .nav-tabs.nav-justified {
3693 .nav-tabs.nav-justified {
3694 width: 100%;
3694 width: 100%;
3695 border-bottom: 0;
3695 border-bottom: 0;
3696 }
3696 }
3697 .nav-tabs.nav-justified > li {
3697 .nav-tabs.nav-justified > li {
3698 float: none;
3698 float: none;
3699 }
3699 }
3700 .nav-tabs.nav-justified > li > a {
3700 .nav-tabs.nav-justified > li > a {
3701 text-align: center;
3701 text-align: center;
3702 margin-bottom: 5px;
3702 margin-bottom: 5px;
3703 }
3703 }
3704 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3704 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3705 top: auto;
3705 top: auto;
3706 left: auto;
3706 left: auto;
3707 }
3707 }
3708 @media (min-width: 768px) {
3708 @media (min-width: 768px) {
3709 .nav-tabs.nav-justified > li {
3709 .nav-tabs.nav-justified > li {
3710 display: table-cell;
3710 display: table-cell;
3711 width: 1%;
3711 width: 1%;
3712 }
3712 }
3713 .nav-tabs.nav-justified > li > a {
3713 .nav-tabs.nav-justified > li > a {
3714 margin-bottom: 0;
3714 margin-bottom: 0;
3715 }
3715 }
3716 }
3716 }
3717 .nav-tabs.nav-justified > li > a {
3717 .nav-tabs.nav-justified > li > a {
3718 margin-right: 0;
3718 margin-right: 0;
3719 border-radius: 2px;
3719 border-radius: 2px;
3720 }
3720 }
3721 .nav-tabs.nav-justified > .active > a,
3721 .nav-tabs.nav-justified > .active > a,
3722 .nav-tabs.nav-justified > .active > a:hover,
3722 .nav-tabs.nav-justified > .active > a:hover,
3723 .nav-tabs.nav-justified > .active > a:focus {
3723 .nav-tabs.nav-justified > .active > a:focus {
3724 border: 1px solid #dddddd;
3724 border: 1px solid #dddddd;
3725 }
3725 }
3726 @media (min-width: 768px) {
3726 @media (min-width: 768px) {
3727 .nav-tabs.nav-justified > li > a {
3727 .nav-tabs.nav-justified > li > a {
3728 border-bottom: 1px solid #dddddd;
3728 border-bottom: 1px solid #dddddd;
3729 border-radius: 2px 2px 0 0;
3729 border-radius: 2px 2px 0 0;
3730 }
3730 }
3731 .nav-tabs.nav-justified > .active > a,
3731 .nav-tabs.nav-justified > .active > a,
3732 .nav-tabs.nav-justified > .active > a:hover,
3732 .nav-tabs.nav-justified > .active > a:hover,
3733 .nav-tabs.nav-justified > .active > a:focus {
3733 .nav-tabs.nav-justified > .active > a:focus {
3734 border-bottom-color: #ffffff;
3734 border-bottom-color: #ffffff;
3735 }
3735 }
3736 }
3736 }
3737 .nav-pills > li {
3737 .nav-pills > li {
3738 float: left;
3738 float: left;
3739 }
3739 }
3740 .nav-pills > li > a {
3740 .nav-pills > li > a {
3741 border-radius: 2px;
3741 border-radius: 2px;
3742 }
3742 }
3743 .nav-pills > li + li {
3743 .nav-pills > li + li {
3744 margin-left: 2px;
3744 margin-left: 2px;
3745 }
3745 }
3746 .nav-pills > li.active > a,
3746 .nav-pills > li.active > a,
3747 .nav-pills > li.active > a:hover,
3747 .nav-pills > li.active > a:hover,
3748 .nav-pills > li.active > a:focus {
3748 .nav-pills > li.active > a:focus {
3749 color: #ffffff;
3749 color: #ffffff;
3750 background-color: #337ab7;
3750 background-color: #337ab7;
3751 }
3751 }
3752 .nav-stacked > li {
3752 .nav-stacked > li {
3753 float: none;
3753 float: none;
3754 }
3754 }
3755 .nav-stacked > li + li {
3755 .nav-stacked > li + li {
3756 margin-top: 2px;
3756 margin-top: 2px;
3757 margin-left: 0;
3757 margin-left: 0;
3758 }
3758 }
3759 .nav-justified {
3759 .nav-justified {
3760 width: 100%;
3760 width: 100%;
3761 }
3761 }
3762 .nav-justified > li {
3762 .nav-justified > li {
3763 float: none;
3763 float: none;
3764 }
3764 }
3765 .nav-justified > li > a {
3765 .nav-justified > li > a {
3766 text-align: center;
3766 text-align: center;
3767 margin-bottom: 5px;
3767 margin-bottom: 5px;
3768 }
3768 }
3769 .nav-justified > .dropdown .dropdown-menu {
3769 .nav-justified > .dropdown .dropdown-menu {
3770 top: auto;
3770 top: auto;
3771 left: auto;
3771 left: auto;
3772 }
3772 }
3773 @media (min-width: 768px) {
3773 @media (min-width: 768px) {
3774 .nav-justified > li {
3774 .nav-justified > li {
3775 display: table-cell;
3775 display: table-cell;
3776 width: 1%;
3776 width: 1%;
3777 }
3777 }
3778 .nav-justified > li > a {
3778 .nav-justified > li > a {
3779 margin-bottom: 0;
3779 margin-bottom: 0;
3780 }
3780 }
3781 }
3781 }
3782 .nav-tabs-justified {
3782 .nav-tabs-justified {
3783 border-bottom: 0;
3783 border-bottom: 0;
3784 }
3784 }
3785 .nav-tabs-justified > li > a {
3785 .nav-tabs-justified > li > a {
3786 margin-right: 0;
3786 margin-right: 0;
3787 border-radius: 2px;
3787 border-radius: 2px;
3788 }
3788 }
3789 .nav-tabs-justified > .active > a,
3789 .nav-tabs-justified > .active > a,
3790 .nav-tabs-justified > .active > a:hover,
3790 .nav-tabs-justified > .active > a:hover,
3791 .nav-tabs-justified > .active > a:focus {
3791 .nav-tabs-justified > .active > a:focus {
3792 border: 1px solid #dddddd;
3792 border: 1px solid #dddddd;
3793 }
3793 }
3794 @media (min-width: 768px) {
3794 @media (min-width: 768px) {
3795 .nav-tabs-justified > li > a {
3795 .nav-tabs-justified > li > a {
3796 border-bottom: 1px solid #dddddd;
3796 border-bottom: 1px solid #dddddd;
3797 border-radius: 2px 2px 0 0;
3797 border-radius: 2px 2px 0 0;
3798 }
3798 }
3799 .nav-tabs-justified > .active > a,
3799 .nav-tabs-justified > .active > a,
3800 .nav-tabs-justified > .active > a:hover,
3800 .nav-tabs-justified > .active > a:hover,
3801 .nav-tabs-justified > .active > a:focus {
3801 .nav-tabs-justified > .active > a:focus {
3802 border-bottom-color: #ffffff;
3802 border-bottom-color: #ffffff;
3803 }
3803 }
3804 }
3804 }
3805 .tab-content > .tab-pane {
3805 .tab-content > .tab-pane {
3806 display: none;
3806 display: none;
3807 visibility: hidden;
3807 visibility: hidden;
3808 }
3808 }
3809 .tab-content > .active {
3809 .tab-content > .active {
3810 display: block;
3810 display: block;
3811 visibility: visible;
3811 visibility: visible;
3812 }
3812 }
3813 .nav-tabs .dropdown-menu {
3813 .nav-tabs .dropdown-menu {
3814 margin-top: -1px;
3814 margin-top: -1px;
3815 border-top-right-radius: 0;
3815 border-top-right-radius: 0;
3816 border-top-left-radius: 0;
3816 border-top-left-radius: 0;
3817 }
3817 }
3818 .navbar {
3818 .navbar {
3819 position: relative;
3819 position: relative;
3820 min-height: 30px;
3820 min-height: 30px;
3821 margin-bottom: 18px;
3821 margin-bottom: 18px;
3822 border: 1px solid transparent;
3822 border: 1px solid transparent;
3823 }
3823 }
3824 @media (min-width: 541px) {
3824 @media (min-width: 541px) {
3825 .navbar {
3825 .navbar {
3826 border-radius: 2px;
3826 border-radius: 2px;
3827 }
3827 }
3828 }
3828 }
3829 @media (min-width: 541px) {
3829 @media (min-width: 541px) {
3830 .navbar-header {
3830 .navbar-header {
3831 float: left;
3831 float: left;
3832 }
3832 }
3833 }
3833 }
3834 .navbar-collapse {
3834 .navbar-collapse {
3835 overflow-x: visible;
3835 overflow-x: visible;
3836 padding-right: 0px;
3836 padding-right: 0px;
3837 padding-left: 0px;
3837 padding-left: 0px;
3838 border-top: 1px solid transparent;
3838 border-top: 1px solid transparent;
3839 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3839 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3840 -webkit-overflow-scrolling: touch;
3840 -webkit-overflow-scrolling: touch;
3841 }
3841 }
3842 .navbar-collapse.in {
3842 .navbar-collapse.in {
3843 overflow-y: auto;
3843 overflow-y: auto;
3844 }
3844 }
3845 @media (min-width: 541px) {
3845 @media (min-width: 541px) {
3846 .navbar-collapse {
3846 .navbar-collapse {
3847 width: auto;
3847 width: auto;
3848 border-top: 0;
3848 border-top: 0;
3849 box-shadow: none;
3849 box-shadow: none;
3850 }
3850 }
3851 .navbar-collapse.collapse {
3851 .navbar-collapse.collapse {
3852 display: block !important;
3852 display: block !important;
3853 visibility: visible !important;
3853 visibility: visible !important;
3854 height: auto !important;
3854 height: auto !important;
3855 padding-bottom: 0;
3855 padding-bottom: 0;
3856 overflow: visible !important;
3856 overflow: visible !important;
3857 }
3857 }
3858 .navbar-collapse.in {
3858 .navbar-collapse.in {
3859 overflow-y: visible;
3859 overflow-y: visible;
3860 }
3860 }
3861 .navbar-fixed-top .navbar-collapse,
3861 .navbar-fixed-top .navbar-collapse,
3862 .navbar-static-top .navbar-collapse,
3862 .navbar-static-top .navbar-collapse,
3863 .navbar-fixed-bottom .navbar-collapse {
3863 .navbar-fixed-bottom .navbar-collapse {
3864 padding-left: 0;
3864 padding-left: 0;
3865 padding-right: 0;
3865 padding-right: 0;
3866 }
3866 }
3867 }
3867 }
3868 .navbar-fixed-top .navbar-collapse,
3868 .navbar-fixed-top .navbar-collapse,
3869 .navbar-fixed-bottom .navbar-collapse {
3869 .navbar-fixed-bottom .navbar-collapse {
3870 max-height: 340px;
3870 max-height: 340px;
3871 }
3871 }
3872 @media (max-device-width: 540px) and (orientation: landscape) {
3872 @media (max-device-width: 540px) and (orientation: landscape) {
3873 .navbar-fixed-top .navbar-collapse,
3873 .navbar-fixed-top .navbar-collapse,
3874 .navbar-fixed-bottom .navbar-collapse {
3874 .navbar-fixed-bottom .navbar-collapse {
3875 max-height: 200px;
3875 max-height: 200px;
3876 }
3876 }
3877 }
3877 }
3878 .container > .navbar-header,
3878 .container > .navbar-header,
3879 .container-fluid > .navbar-header,
3879 .container-fluid > .navbar-header,
3880 .container > .navbar-collapse,
3880 .container > .navbar-collapse,
3881 .container-fluid > .navbar-collapse {
3881 .container-fluid > .navbar-collapse {
3882 margin-right: 0px;
3882 margin-right: 0px;
3883 margin-left: 0px;
3883 margin-left: 0px;
3884 }
3884 }
3885 @media (min-width: 541px) {
3885 @media (min-width: 541px) {
3886 .container > .navbar-header,
3886 .container > .navbar-header,
3887 .container-fluid > .navbar-header,
3887 .container-fluid > .navbar-header,
3888 .container > .navbar-collapse,
3888 .container > .navbar-collapse,
3889 .container-fluid > .navbar-collapse {
3889 .container-fluid > .navbar-collapse {
3890 margin-right: 0;
3890 margin-right: 0;
3891 margin-left: 0;
3891 margin-left: 0;
3892 }
3892 }
3893 }
3893 }
3894 .navbar-static-top {
3894 .navbar-static-top {
3895 z-index: 1000;
3895 z-index: 1000;
3896 border-width: 0 0 1px;
3896 border-width: 0 0 1px;
3897 }
3897 }
3898 @media (min-width: 541px) {
3898 @media (min-width: 541px) {
3899 .navbar-static-top {
3899 .navbar-static-top {
3900 border-radius: 0;
3900 border-radius: 0;
3901 }
3901 }
3902 }
3902 }
3903 .navbar-fixed-top,
3903 .navbar-fixed-top,
3904 .navbar-fixed-bottom {
3904 .navbar-fixed-bottom {
3905 position: fixed;
3905 position: fixed;
3906 right: 0;
3906 right: 0;
3907 left: 0;
3907 left: 0;
3908 z-index: 1030;
3908 z-index: 1030;
3909 }
3909 }
3910 @media (min-width: 541px) {
3910 @media (min-width: 541px) {
3911 .navbar-fixed-top,
3911 .navbar-fixed-top,
3912 .navbar-fixed-bottom {
3912 .navbar-fixed-bottom {
3913 border-radius: 0;
3913 border-radius: 0;
3914 }
3914 }
3915 }
3915 }
3916 .navbar-fixed-top {
3916 .navbar-fixed-top {
3917 top: 0;
3917 top: 0;
3918 border-width: 0 0 1px;
3918 border-width: 0 0 1px;
3919 }
3919 }
3920 .navbar-fixed-bottom {
3920 .navbar-fixed-bottom {
3921 bottom: 0;
3921 bottom: 0;
3922 margin-bottom: 0;
3922 margin-bottom: 0;
3923 border-width: 1px 0 0;
3923 border-width: 1px 0 0;
3924 }
3924 }
3925 .navbar-brand {
3925 .navbar-brand {
3926 float: left;
3926 float: left;
3927 padding: 6px 0px;
3927 padding: 6px 0px;
3928 font-size: 17px;
3928 font-size: 17px;
3929 line-height: 18px;
3929 line-height: 18px;
3930 height: 30px;
3930 height: 30px;
3931 }
3931 }
3932 .navbar-brand:hover,
3932 .navbar-brand:hover,
3933 .navbar-brand:focus {
3933 .navbar-brand:focus {
3934 text-decoration: none;
3934 text-decoration: none;
3935 }
3935 }
3936 .navbar-brand > img {
3936 .navbar-brand > img {
3937 display: block;
3937 display: block;
3938 }
3938 }
3939 @media (min-width: 541px) {
3939 @media (min-width: 541px) {
3940 .navbar > .container .navbar-brand,
3940 .navbar > .container .navbar-brand,
3941 .navbar > .container-fluid .navbar-brand {
3941 .navbar > .container-fluid .navbar-brand {
3942 margin-left: 0px;
3942 margin-left: 0px;
3943 }
3943 }
3944 }
3944 }
3945 .navbar-toggle {
3945 .navbar-toggle {
3946 position: relative;
3946 position: relative;
3947 float: right;
3947 float: right;
3948 margin-right: 0px;
3948 margin-right: 0px;
3949 padding: 9px 10px;
3949 padding: 9px 10px;
3950 margin-top: -2px;
3950 margin-top: -2px;
3951 margin-bottom: -2px;
3951 margin-bottom: -2px;
3952 background-color: transparent;
3952 background-color: transparent;
3953 background-image: none;
3953 background-image: none;
3954 border: 1px solid transparent;
3954 border: 1px solid transparent;
3955 border-radius: 2px;
3955 border-radius: 2px;
3956 }
3956 }
3957 .navbar-toggle:focus {
3957 .navbar-toggle:focus {
3958 outline: 0;
3958 outline: 0;
3959 }
3959 }
3960 .navbar-toggle .icon-bar {
3960 .navbar-toggle .icon-bar {
3961 display: block;
3961 display: block;
3962 width: 22px;
3962 width: 22px;
3963 height: 2px;
3963 height: 2px;
3964 border-radius: 1px;
3964 border-radius: 1px;
3965 }
3965 }
3966 .navbar-toggle .icon-bar + .icon-bar {
3966 .navbar-toggle .icon-bar + .icon-bar {
3967 margin-top: 4px;
3967 margin-top: 4px;
3968 }
3968 }
3969 @media (min-width: 541px) {
3969 @media (min-width: 541px) {
3970 .navbar-toggle {
3970 .navbar-toggle {
3971 display: none;
3971 display: none;
3972 }
3972 }
3973 }
3973 }
3974 .navbar-nav {
3974 .navbar-nav {
3975 margin: 3px 0px;
3975 margin: 3px 0px;
3976 }
3976 }
3977 .navbar-nav > li > a {
3977 .navbar-nav > li > a {
3978 padding-top: 10px;
3978 padding-top: 10px;
3979 padding-bottom: 10px;
3979 padding-bottom: 10px;
3980 line-height: 18px;
3980 line-height: 18px;
3981 }
3981 }
3982 @media (max-width: 540px) {
3982 @media (max-width: 540px) {
3983 .navbar-nav .open .dropdown-menu {
3983 .navbar-nav .open .dropdown-menu {
3984 position: static;
3984 position: static;
3985 float: none;
3985 float: none;
3986 width: auto;
3986 width: auto;
3987 margin-top: 0;
3987 margin-top: 0;
3988 background-color: transparent;
3988 background-color: transparent;
3989 border: 0;
3989 border: 0;
3990 box-shadow: none;
3990 box-shadow: none;
3991 }
3991 }
3992 .navbar-nav .open .dropdown-menu > li > a,
3992 .navbar-nav .open .dropdown-menu > li > a,
3993 .navbar-nav .open .dropdown-menu .dropdown-header {
3993 .navbar-nav .open .dropdown-menu .dropdown-header {
3994 padding: 5px 15px 5px 25px;
3994 padding: 5px 15px 5px 25px;
3995 }
3995 }
3996 .navbar-nav .open .dropdown-menu > li > a {
3996 .navbar-nav .open .dropdown-menu > li > a {
3997 line-height: 18px;
3997 line-height: 18px;
3998 }
3998 }
3999 .navbar-nav .open .dropdown-menu > li > a:hover,
3999 .navbar-nav .open .dropdown-menu > li > a:hover,
4000 .navbar-nav .open .dropdown-menu > li > a:focus {
4000 .navbar-nav .open .dropdown-menu > li > a:focus {
4001 background-image: none;
4001 background-image: none;
4002 }
4002 }
4003 }
4003 }
4004 @media (min-width: 541px) {
4004 @media (min-width: 541px) {
4005 .navbar-nav {
4005 .navbar-nav {
4006 float: left;
4006 float: left;
4007 margin: 0;
4007 margin: 0;
4008 }
4008 }
4009 .navbar-nav > li {
4009 .navbar-nav > li {
4010 float: left;
4010 float: left;
4011 }
4011 }
4012 .navbar-nav > li > a {
4012 .navbar-nav > li > a {
4013 padding-top: 6px;
4013 padding-top: 6px;
4014 padding-bottom: 6px;
4014 padding-bottom: 6px;
4015 }
4015 }
4016 }
4016 }
4017 .navbar-form {
4017 .navbar-form {
4018 margin-left: 0px;
4018 margin-left: 0px;
4019 margin-right: 0px;
4019 margin-right: 0px;
4020 padding: 10px 0px;
4020 padding: 10px 0px;
4021 border-top: 1px solid transparent;
4021 border-top: 1px solid transparent;
4022 border-bottom: 1px solid transparent;
4022 border-bottom: 1px solid transparent;
4023 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4023 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4024 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4024 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4025 margin-top: -1px;
4025 margin-top: -1px;
4026 margin-bottom: -1px;
4026 margin-bottom: -1px;
4027 }
4027 }
4028 @media (min-width: 768px) {
4028 @media (min-width: 768px) {
4029 .navbar-form .form-group {
4029 .navbar-form .form-group {
4030 display: inline-block;
4030 display: inline-block;
4031 margin-bottom: 0;
4031 margin-bottom: 0;
4032 vertical-align: middle;
4032 vertical-align: middle;
4033 }
4033 }
4034 .navbar-form .form-control {
4034 .navbar-form .form-control {
4035 display: inline-block;
4035 display: inline-block;
4036 width: auto;
4036 width: auto;
4037 vertical-align: middle;
4037 vertical-align: middle;
4038 }
4038 }
4039 .navbar-form .form-control-static {
4039 .navbar-form .form-control-static {
4040 display: inline-block;
4040 display: inline-block;
4041 }
4041 }
4042 .navbar-form .input-group {
4042 .navbar-form .input-group {
4043 display: inline-table;
4043 display: inline-table;
4044 vertical-align: middle;
4044 vertical-align: middle;
4045 }
4045 }
4046 .navbar-form .input-group .input-group-addon,
4046 .navbar-form .input-group .input-group-addon,
4047 .navbar-form .input-group .input-group-btn,
4047 .navbar-form .input-group .input-group-btn,
4048 .navbar-form .input-group .form-control {
4048 .navbar-form .input-group .form-control {
4049 width: auto;
4049 width: auto;
4050 }
4050 }
4051 .navbar-form .input-group > .form-control {
4051 .navbar-form .input-group > .form-control {
4052 width: 100%;
4052 width: 100%;
4053 }
4053 }
4054 .navbar-form .control-label {
4054 .navbar-form .control-label {
4055 margin-bottom: 0;
4055 margin-bottom: 0;
4056 vertical-align: middle;
4056 vertical-align: middle;
4057 }
4057 }
4058 .navbar-form .radio,
4058 .navbar-form .radio,
4059 .navbar-form .checkbox {
4059 .navbar-form .checkbox {
4060 display: inline-block;
4060 display: inline-block;
4061 margin-top: 0;
4061 margin-top: 0;
4062 margin-bottom: 0;
4062 margin-bottom: 0;
4063 vertical-align: middle;
4063 vertical-align: middle;
4064 }
4064 }
4065 .navbar-form .radio label,
4065 .navbar-form .radio label,
4066 .navbar-form .checkbox label {
4066 .navbar-form .checkbox label {
4067 padding-left: 0;
4067 padding-left: 0;
4068 }
4068 }
4069 .navbar-form .radio input[type="radio"],
4069 .navbar-form .radio input[type="radio"],
4070 .navbar-form .checkbox input[type="checkbox"] {
4070 .navbar-form .checkbox input[type="checkbox"] {
4071 position: relative;
4071 position: relative;
4072 margin-left: 0;
4072 margin-left: 0;
4073 }
4073 }
4074 .navbar-form .has-feedback .form-control-feedback {
4074 .navbar-form .has-feedback .form-control-feedback {
4075 top: 0;
4075 top: 0;
4076 }
4076 }
4077 }
4077 }
4078 @media (max-width: 540px) {
4078 @media (max-width: 540px) {
4079 .navbar-form .form-group {
4079 .navbar-form .form-group {
4080 margin-bottom: 5px;
4080 margin-bottom: 5px;
4081 }
4081 }
4082 .navbar-form .form-group:last-child {
4082 .navbar-form .form-group:last-child {
4083 margin-bottom: 0;
4083 margin-bottom: 0;
4084 }
4084 }
4085 }
4085 }
4086 @media (min-width: 541px) {
4086 @media (min-width: 541px) {
4087 .navbar-form {
4087 .navbar-form {
4088 width: auto;
4088 width: auto;
4089 border: 0;
4089 border: 0;
4090 margin-left: 0;
4090 margin-left: 0;
4091 margin-right: 0;
4091 margin-right: 0;
4092 padding-top: 0;
4092 padding-top: 0;
4093 padding-bottom: 0;
4093 padding-bottom: 0;
4094 -webkit-box-shadow: none;
4094 -webkit-box-shadow: none;
4095 box-shadow: none;
4095 box-shadow: none;
4096 }
4096 }
4097 }
4097 }
4098 .navbar-nav > li > .dropdown-menu {
4098 .navbar-nav > li > .dropdown-menu {
4099 margin-top: 0;
4099 margin-top: 0;
4100 border-top-right-radius: 0;
4100 border-top-right-radius: 0;
4101 border-top-left-radius: 0;
4101 border-top-left-radius: 0;
4102 }
4102 }
4103 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4103 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4104 border-top-right-radius: 2px;
4104 border-top-right-radius: 2px;
4105 border-top-left-radius: 2px;
4105 border-top-left-radius: 2px;
4106 border-bottom-right-radius: 0;
4106 border-bottom-right-radius: 0;
4107 border-bottom-left-radius: 0;
4107 border-bottom-left-radius: 0;
4108 }
4108 }
4109 .navbar-btn {
4109 .navbar-btn {
4110 margin-top: -1px;
4110 margin-top: -1px;
4111 margin-bottom: -1px;
4111 margin-bottom: -1px;
4112 }
4112 }
4113 .navbar-btn.btn-sm {
4113 .navbar-btn.btn-sm {
4114 margin-top: 0px;
4114 margin-top: 0px;
4115 margin-bottom: 0px;
4115 margin-bottom: 0px;
4116 }
4116 }
4117 .navbar-btn.btn-xs {
4117 .navbar-btn.btn-xs {
4118 margin-top: 4px;
4118 margin-top: 4px;
4119 margin-bottom: 4px;
4119 margin-bottom: 4px;
4120 }
4120 }
4121 .navbar-text {
4121 .navbar-text {
4122 margin-top: 6px;
4122 margin-top: 6px;
4123 margin-bottom: 6px;
4123 margin-bottom: 6px;
4124 }
4124 }
4125 @media (min-width: 541px) {
4125 @media (min-width: 541px) {
4126 .navbar-text {
4126 .navbar-text {
4127 float: left;
4127 float: left;
4128 margin-left: 0px;
4128 margin-left: 0px;
4129 margin-right: 0px;
4129 margin-right: 0px;
4130 }
4130 }
4131 }
4131 }
4132 @media (min-width: 541px) {
4132 @media (min-width: 541px) {
4133 .navbar-left {
4133 .navbar-left {
4134 float: left !important;
4134 float: left !important;
4135 float: left;
4135 float: left;
4136 }
4136 }
4137 .navbar-right {
4137 .navbar-right {
4138 float: right !important;
4138 float: right !important;
4139 float: right;
4139 float: right;
4140 margin-right: 0px;
4140 margin-right: 0px;
4141 }
4141 }
4142 .navbar-right ~ .navbar-right {
4142 .navbar-right ~ .navbar-right {
4143 margin-right: 0;
4143 margin-right: 0;
4144 }
4144 }
4145 }
4145 }
4146 .navbar-default {
4146 .navbar-default {
4147 background-color: #f8f8f8;
4147 background-color: #f8f8f8;
4148 border-color: #e7e7e7;
4148 border-color: #e7e7e7;
4149 }
4149 }
4150 .navbar-default .navbar-brand {
4150 .navbar-default .navbar-brand {
4151 color: #777777;
4151 color: #777777;
4152 }
4152 }
4153 .navbar-default .navbar-brand:hover,
4153 .navbar-default .navbar-brand:hover,
4154 .navbar-default .navbar-brand:focus {
4154 .navbar-default .navbar-brand:focus {
4155 color: #5e5e5e;
4155 color: #5e5e5e;
4156 background-color: transparent;
4156 background-color: transparent;
4157 }
4157 }
4158 .navbar-default .navbar-text {
4158 .navbar-default .navbar-text {
4159 color: #777777;
4159 color: #777777;
4160 }
4160 }
4161 .navbar-default .navbar-nav > li > a {
4161 .navbar-default .navbar-nav > li > a {
4162 color: #777777;
4162 color: #777777;
4163 }
4163 }
4164 .navbar-default .navbar-nav > li > a:hover,
4164 .navbar-default .navbar-nav > li > a:hover,
4165 .navbar-default .navbar-nav > li > a:focus {
4165 .navbar-default .navbar-nav > li > a:focus {
4166 color: #333333;
4166 color: #333333;
4167 background-color: transparent;
4167 background-color: transparent;
4168 }
4168 }
4169 .navbar-default .navbar-nav > .active > a,
4169 .navbar-default .navbar-nav > .active > a,
4170 .navbar-default .navbar-nav > .active > a:hover,
4170 .navbar-default .navbar-nav > .active > a:hover,
4171 .navbar-default .navbar-nav > .active > a:focus {
4171 .navbar-default .navbar-nav > .active > a:focus {
4172 color: #555555;
4172 color: #555555;
4173 background-color: #e7e7e7;
4173 background-color: #e7e7e7;
4174 }
4174 }
4175 .navbar-default .navbar-nav > .disabled > a,
4175 .navbar-default .navbar-nav > .disabled > a,
4176 .navbar-default .navbar-nav > .disabled > a:hover,
4176 .navbar-default .navbar-nav > .disabled > a:hover,
4177 .navbar-default .navbar-nav > .disabled > a:focus {
4177 .navbar-default .navbar-nav > .disabled > a:focus {
4178 color: #cccccc;
4178 color: #cccccc;
4179 background-color: transparent;
4179 background-color: transparent;
4180 }
4180 }
4181 .navbar-default .navbar-toggle {
4181 .navbar-default .navbar-toggle {
4182 border-color: #dddddd;
4182 border-color: #dddddd;
4183 }
4183 }
4184 .navbar-default .navbar-toggle:hover,
4184 .navbar-default .navbar-toggle:hover,
4185 .navbar-default .navbar-toggle:focus {
4185 .navbar-default .navbar-toggle:focus {
4186 background-color: #dddddd;
4186 background-color: #dddddd;
4187 }
4187 }
4188 .navbar-default .navbar-toggle .icon-bar {
4188 .navbar-default .navbar-toggle .icon-bar {
4189 background-color: #888888;
4189 background-color: #888888;
4190 }
4190 }
4191 .navbar-default .navbar-collapse,
4191 .navbar-default .navbar-collapse,
4192 .navbar-default .navbar-form {
4192 .navbar-default .navbar-form {
4193 border-color: #e7e7e7;
4193 border-color: #e7e7e7;
4194 }
4194 }
4195 .navbar-default .navbar-nav > .open > a,
4195 .navbar-default .navbar-nav > .open > a,
4196 .navbar-default .navbar-nav > .open > a:hover,
4196 .navbar-default .navbar-nav > .open > a:hover,
4197 .navbar-default .navbar-nav > .open > a:focus {
4197 .navbar-default .navbar-nav > .open > a:focus {
4198 background-color: #e7e7e7;
4198 background-color: #e7e7e7;
4199 color: #555555;
4199 color: #555555;
4200 }
4200 }
4201 @media (max-width: 540px) {
4201 @media (max-width: 540px) {
4202 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4202 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4203 color: #777777;
4203 color: #777777;
4204 }
4204 }
4205 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4205 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4206 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4206 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4207 color: #333333;
4207 color: #333333;
4208 background-color: transparent;
4208 background-color: transparent;
4209 }
4209 }
4210 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4210 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4211 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4211 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4212 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4212 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4213 color: #555555;
4213 color: #555555;
4214 background-color: #e7e7e7;
4214 background-color: #e7e7e7;
4215 }
4215 }
4216 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4216 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4217 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4217 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4218 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4218 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4219 color: #cccccc;
4219 color: #cccccc;
4220 background-color: transparent;
4220 background-color: transparent;
4221 }
4221 }
4222 }
4222 }
4223 .navbar-default .navbar-link {
4223 .navbar-default .navbar-link {
4224 color: #777777;
4224 color: #777777;
4225 }
4225 }
4226 .navbar-default .navbar-link:hover {
4226 .navbar-default .navbar-link:hover {
4227 color: #333333;
4227 color: #333333;
4228 }
4228 }
4229 .navbar-default .btn-link {
4229 .navbar-default .btn-link {
4230 color: #777777;
4230 color: #777777;
4231 }
4231 }
4232 .navbar-default .btn-link:hover,
4232 .navbar-default .btn-link:hover,
4233 .navbar-default .btn-link:focus {
4233 .navbar-default .btn-link:focus {
4234 color: #333333;
4234 color: #333333;
4235 }
4235 }
4236 .navbar-default .btn-link[disabled]:hover,
4236 .navbar-default .btn-link[disabled]:hover,
4237 fieldset[disabled] .navbar-default .btn-link:hover,
4237 fieldset[disabled] .navbar-default .btn-link:hover,
4238 .navbar-default .btn-link[disabled]:focus,
4238 .navbar-default .btn-link[disabled]:focus,
4239 fieldset[disabled] .navbar-default .btn-link:focus {
4239 fieldset[disabled] .navbar-default .btn-link:focus {
4240 color: #cccccc;
4240 color: #cccccc;
4241 }
4241 }
4242 .navbar-inverse {
4242 .navbar-inverse {
4243 background-color: #222222;
4243 background-color: #222222;
4244 border-color: #080808;
4244 border-color: #080808;
4245 }
4245 }
4246 .navbar-inverse .navbar-brand {
4246 .navbar-inverse .navbar-brand {
4247 color: #9d9d9d;
4247 color: #9d9d9d;
4248 }
4248 }
4249 .navbar-inverse .navbar-brand:hover,
4249 .navbar-inverse .navbar-brand:hover,
4250 .navbar-inverse .navbar-brand:focus {
4250 .navbar-inverse .navbar-brand:focus {
4251 color: #ffffff;
4251 color: #ffffff;
4252 background-color: transparent;
4252 background-color: transparent;
4253 }
4253 }
4254 .navbar-inverse .navbar-text {
4254 .navbar-inverse .navbar-text {
4255 color: #9d9d9d;
4255 color: #9d9d9d;
4256 }
4256 }
4257 .navbar-inverse .navbar-nav > li > a {
4257 .navbar-inverse .navbar-nav > li > a {
4258 color: #9d9d9d;
4258 color: #9d9d9d;
4259 }
4259 }
4260 .navbar-inverse .navbar-nav > li > a:hover,
4260 .navbar-inverse .navbar-nav > li > a:hover,
4261 .navbar-inverse .navbar-nav > li > a:focus {
4261 .navbar-inverse .navbar-nav > li > a:focus {
4262 color: #ffffff;
4262 color: #ffffff;
4263 background-color: transparent;
4263 background-color: transparent;
4264 }
4264 }
4265 .navbar-inverse .navbar-nav > .active > a,
4265 .navbar-inverse .navbar-nav > .active > a,
4266 .navbar-inverse .navbar-nav > .active > a:hover,
4266 .navbar-inverse .navbar-nav > .active > a:hover,
4267 .navbar-inverse .navbar-nav > .active > a:focus {
4267 .navbar-inverse .navbar-nav > .active > a:focus {
4268 color: #ffffff;
4268 color: #ffffff;
4269 background-color: #080808;
4269 background-color: #080808;
4270 }
4270 }
4271 .navbar-inverse .navbar-nav > .disabled > a,
4271 .navbar-inverse .navbar-nav > .disabled > a,
4272 .navbar-inverse .navbar-nav > .disabled > a:hover,
4272 .navbar-inverse .navbar-nav > .disabled > a:hover,
4273 .navbar-inverse .navbar-nav > .disabled > a:focus {
4273 .navbar-inverse .navbar-nav > .disabled > a:focus {
4274 color: #444444;
4274 color: #444444;
4275 background-color: transparent;
4275 background-color: transparent;
4276 }
4276 }
4277 .navbar-inverse .navbar-toggle {
4277 .navbar-inverse .navbar-toggle {
4278 border-color: #333333;
4278 border-color: #333333;
4279 }
4279 }
4280 .navbar-inverse .navbar-toggle:hover,
4280 .navbar-inverse .navbar-toggle:hover,
4281 .navbar-inverse .navbar-toggle:focus {
4281 .navbar-inverse .navbar-toggle:focus {
4282 background-color: #333333;
4282 background-color: #333333;
4283 }
4283 }
4284 .navbar-inverse .navbar-toggle .icon-bar {
4284 .navbar-inverse .navbar-toggle .icon-bar {
4285 background-color: #ffffff;
4285 background-color: #ffffff;
4286 }
4286 }
4287 .navbar-inverse .navbar-collapse,
4287 .navbar-inverse .navbar-collapse,
4288 .navbar-inverse .navbar-form {
4288 .navbar-inverse .navbar-form {
4289 border-color: #101010;
4289 border-color: #101010;
4290 }
4290 }
4291 .navbar-inverse .navbar-nav > .open > a,
4291 .navbar-inverse .navbar-nav > .open > a,
4292 .navbar-inverse .navbar-nav > .open > a:hover,
4292 .navbar-inverse .navbar-nav > .open > a:hover,
4293 .navbar-inverse .navbar-nav > .open > a:focus {
4293 .navbar-inverse .navbar-nav > .open > a:focus {
4294 background-color: #080808;
4294 background-color: #080808;
4295 color: #ffffff;
4295 color: #ffffff;
4296 }
4296 }
4297 @media (max-width: 540px) {
4297 @media (max-width: 540px) {
4298 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4298 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4299 border-color: #080808;
4299 border-color: #080808;
4300 }
4300 }
4301 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4301 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4302 background-color: #080808;
4302 background-color: #080808;
4303 }
4303 }
4304 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4304 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4305 color: #9d9d9d;
4305 color: #9d9d9d;
4306 }
4306 }
4307 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4307 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4308 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4308 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4309 color: #ffffff;
4309 color: #ffffff;
4310 background-color: transparent;
4310 background-color: transparent;
4311 }
4311 }
4312 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4312 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4313 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4313 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4314 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4314 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4315 color: #ffffff;
4315 color: #ffffff;
4316 background-color: #080808;
4316 background-color: #080808;
4317 }
4317 }
4318 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4318 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4319 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4319 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4320 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4320 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4321 color: #444444;
4321 color: #444444;
4322 background-color: transparent;
4322 background-color: transparent;
4323 }
4323 }
4324 }
4324 }
4325 .navbar-inverse .navbar-link {
4325 .navbar-inverse .navbar-link {
4326 color: #9d9d9d;
4326 color: #9d9d9d;
4327 }
4327 }
4328 .navbar-inverse .navbar-link:hover {
4328 .navbar-inverse .navbar-link:hover {
4329 color: #ffffff;
4329 color: #ffffff;
4330 }
4330 }
4331 .navbar-inverse .btn-link {
4331 .navbar-inverse .btn-link {
4332 color: #9d9d9d;
4332 color: #9d9d9d;
4333 }
4333 }
4334 .navbar-inverse .btn-link:hover,
4334 .navbar-inverse .btn-link:hover,
4335 .navbar-inverse .btn-link:focus {
4335 .navbar-inverse .btn-link:focus {
4336 color: #ffffff;
4336 color: #ffffff;
4337 }
4337 }
4338 .navbar-inverse .btn-link[disabled]:hover,
4338 .navbar-inverse .btn-link[disabled]:hover,
4339 fieldset[disabled] .navbar-inverse .btn-link:hover,
4339 fieldset[disabled] .navbar-inverse .btn-link:hover,
4340 .navbar-inverse .btn-link[disabled]:focus,
4340 .navbar-inverse .btn-link[disabled]:focus,
4341 fieldset[disabled] .navbar-inverse .btn-link:focus {
4341 fieldset[disabled] .navbar-inverse .btn-link:focus {
4342 color: #444444;
4342 color: #444444;
4343 }
4343 }
4344 .breadcrumb {
4344 .breadcrumb {
4345 padding: 8px 15px;
4345 padding: 8px 15px;
4346 margin-bottom: 18px;
4346 margin-bottom: 18px;
4347 list-style: none;
4347 list-style: none;
4348 background-color: #f5f5f5;
4348 background-color: #f5f5f5;
4349 border-radius: 2px;
4349 border-radius: 2px;
4350 }
4350 }
4351 .breadcrumb > li {
4351 .breadcrumb > li {
4352 display: inline-block;
4352 display: inline-block;
4353 }
4353 }
4354 .breadcrumb > li + li:before {
4354 .breadcrumb > li + li:before {
4355 content: "/\00a0";
4355 content: "/\00a0";
4356 padding: 0 5px;
4356 padding: 0 5px;
4357 color: #5e5e5e;
4357 color: #5e5e5e;
4358 }
4358 }
4359 .breadcrumb > .active {
4359 .breadcrumb > .active {
4360 color: #777777;
4360 color: #777777;
4361 }
4361 }
4362 .pagination {
4362 .pagination {
4363 display: inline-block;
4363 display: inline-block;
4364 padding-left: 0;
4364 padding-left: 0;
4365 margin: 18px 0;
4365 margin: 18px 0;
4366 border-radius: 2px;
4366 border-radius: 2px;
4367 }
4367 }
4368 .pagination > li {
4368 .pagination > li {
4369 display: inline;
4369 display: inline;
4370 }
4370 }
4371 .pagination > li > a,
4371 .pagination > li > a,
4372 .pagination > li > span {
4372 .pagination > li > span {
4373 position: relative;
4373 position: relative;
4374 float: left;
4374 float: left;
4375 padding: 6px 12px;
4375 padding: 6px 12px;
4376 line-height: 1.42857143;
4376 line-height: 1.42857143;
4377 text-decoration: none;
4377 text-decoration: none;
4378 color: #337ab7;
4378 color: #337ab7;
4379 background-color: #ffffff;
4379 background-color: #ffffff;
4380 border: 1px solid #dddddd;
4380 border: 1px solid #dddddd;
4381 margin-left: -1px;
4381 margin-left: -1px;
4382 }
4382 }
4383 .pagination > li:first-child > a,
4383 .pagination > li:first-child > a,
4384 .pagination > li:first-child > span {
4384 .pagination > li:first-child > span {
4385 margin-left: 0;
4385 margin-left: 0;
4386 border-bottom-left-radius: 2px;
4386 border-bottom-left-radius: 2px;
4387 border-top-left-radius: 2px;
4387 border-top-left-radius: 2px;
4388 }
4388 }
4389 .pagination > li:last-child > a,
4389 .pagination > li:last-child > a,
4390 .pagination > li:last-child > span {
4390 .pagination > li:last-child > span {
4391 border-bottom-right-radius: 2px;
4391 border-bottom-right-radius: 2px;
4392 border-top-right-radius: 2px;
4392 border-top-right-radius: 2px;
4393 }
4393 }
4394 .pagination > li > a:hover,
4394 .pagination > li > a:hover,
4395 .pagination > li > span:hover,
4395 .pagination > li > span:hover,
4396 .pagination > li > a:focus,
4396 .pagination > li > a:focus,
4397 .pagination > li > span:focus {
4397 .pagination > li > span:focus {
4398 color: #23527c;
4398 color: #23527c;
4399 background-color: #eeeeee;
4399 background-color: #eeeeee;
4400 border-color: #dddddd;
4400 border-color: #dddddd;
4401 }
4401 }
4402 .pagination > .active > a,
4402 .pagination > .active > a,
4403 .pagination > .active > span,
4403 .pagination > .active > span,
4404 .pagination > .active > a:hover,
4404 .pagination > .active > a:hover,
4405 .pagination > .active > span:hover,
4405 .pagination > .active > span:hover,
4406 .pagination > .active > a:focus,
4406 .pagination > .active > a:focus,
4407 .pagination > .active > span:focus {
4407 .pagination > .active > span:focus {
4408 z-index: 2;
4408 z-index: 2;
4409 color: #ffffff;
4409 color: #ffffff;
4410 background-color: #337ab7;
4410 background-color: #337ab7;
4411 border-color: #337ab7;
4411 border-color: #337ab7;
4412 cursor: default;
4412 cursor: default;
4413 }
4413 }
4414 .pagination > .disabled > span,
4414 .pagination > .disabled > span,
4415 .pagination > .disabled > span:hover,
4415 .pagination > .disabled > span:hover,
4416 .pagination > .disabled > span:focus,
4416 .pagination > .disabled > span:focus,
4417 .pagination > .disabled > a,
4417 .pagination > .disabled > a,
4418 .pagination > .disabled > a:hover,
4418 .pagination > .disabled > a:hover,
4419 .pagination > .disabled > a:focus {
4419 .pagination > .disabled > a:focus {
4420 color: #777777;
4420 color: #777777;
4421 background-color: #ffffff;
4421 background-color: #ffffff;
4422 border-color: #dddddd;
4422 border-color: #dddddd;
4423 cursor: not-allowed;
4423 cursor: not-allowed;
4424 }
4424 }
4425 .pagination-lg > li > a,
4425 .pagination-lg > li > a,
4426 .pagination-lg > li > span {
4426 .pagination-lg > li > span {
4427 padding: 10px 16px;
4427 padding: 10px 16px;
4428 font-size: 17px;
4428 font-size: 17px;
4429 }
4429 }
4430 .pagination-lg > li:first-child > a,
4430 .pagination-lg > li:first-child > a,
4431 .pagination-lg > li:first-child > span {
4431 .pagination-lg > li:first-child > span {
4432 border-bottom-left-radius: 3px;
4432 border-bottom-left-radius: 3px;
4433 border-top-left-radius: 3px;
4433 border-top-left-radius: 3px;
4434 }
4434 }
4435 .pagination-lg > li:last-child > a,
4435 .pagination-lg > li:last-child > a,
4436 .pagination-lg > li:last-child > span {
4436 .pagination-lg > li:last-child > span {
4437 border-bottom-right-radius: 3px;
4437 border-bottom-right-radius: 3px;
4438 border-top-right-radius: 3px;
4438 border-top-right-radius: 3px;
4439 }
4439 }
4440 .pagination-sm > li > a,
4440 .pagination-sm > li > a,
4441 .pagination-sm > li > span {
4441 .pagination-sm > li > span {
4442 padding: 5px 10px;
4442 padding: 5px 10px;
4443 font-size: 12px;
4443 font-size: 12px;
4444 }
4444 }
4445 .pagination-sm > li:first-child > a,
4445 .pagination-sm > li:first-child > a,
4446 .pagination-sm > li:first-child > span {
4446 .pagination-sm > li:first-child > span {
4447 border-bottom-left-radius: 1px;
4447 border-bottom-left-radius: 1px;
4448 border-top-left-radius: 1px;
4448 border-top-left-radius: 1px;
4449 }
4449 }
4450 .pagination-sm > li:last-child > a,
4450 .pagination-sm > li:last-child > a,
4451 .pagination-sm > li:last-child > span {
4451 .pagination-sm > li:last-child > span {
4452 border-bottom-right-radius: 1px;
4452 border-bottom-right-radius: 1px;
4453 border-top-right-radius: 1px;
4453 border-top-right-radius: 1px;
4454 }
4454 }
4455 .pager {
4455 .pager {
4456 padding-left: 0;
4456 padding-left: 0;
4457 margin: 18px 0;
4457 margin: 18px 0;
4458 list-style: none;
4458 list-style: none;
4459 text-align: center;
4459 text-align: center;
4460 }
4460 }
4461 .pager li {
4461 .pager li {
4462 display: inline;
4462 display: inline;
4463 }
4463 }
4464 .pager li > a,
4464 .pager li > a,
4465 .pager li > span {
4465 .pager li > span {
4466 display: inline-block;
4466 display: inline-block;
4467 padding: 5px 14px;
4467 padding: 5px 14px;
4468 background-color: #ffffff;
4468 background-color: #ffffff;
4469 border: 1px solid #dddddd;
4469 border: 1px solid #dddddd;
4470 border-radius: 15px;
4470 border-radius: 15px;
4471 }
4471 }
4472 .pager li > a:hover,
4472 .pager li > a:hover,
4473 .pager li > a:focus {
4473 .pager li > a:focus {
4474 text-decoration: none;
4474 text-decoration: none;
4475 background-color: #eeeeee;
4475 background-color: #eeeeee;
4476 }
4476 }
4477 .pager .next > a,
4477 .pager .next > a,
4478 .pager .next > span {
4478 .pager .next > span {
4479 float: right;
4479 float: right;
4480 }
4480 }
4481 .pager .previous > a,
4481 .pager .previous > a,
4482 .pager .previous > span {
4482 .pager .previous > span {
4483 float: left;
4483 float: left;
4484 }
4484 }
4485 .pager .disabled > a,
4485 .pager .disabled > a,
4486 .pager .disabled > a:hover,
4486 .pager .disabled > a:hover,
4487 .pager .disabled > a:focus,
4487 .pager .disabled > a:focus,
4488 .pager .disabled > span {
4488 .pager .disabled > span {
4489 color: #777777;
4489 color: #777777;
4490 background-color: #ffffff;
4490 background-color: #ffffff;
4491 cursor: not-allowed;
4491 cursor: not-allowed;
4492 }
4492 }
4493 .label {
4493 .label {
4494 display: inline;
4494 display: inline;
4495 padding: .2em .6em .3em;
4495 padding: .2em .6em .3em;
4496 font-size: 75%;
4496 font-size: 75%;
4497 font-weight: bold;
4497 font-weight: bold;
4498 line-height: 1;
4498 line-height: 1;
4499 color: #ffffff;
4499 color: #ffffff;
4500 text-align: center;
4500 text-align: center;
4501 white-space: nowrap;
4501 white-space: nowrap;
4502 vertical-align: baseline;
4502 vertical-align: baseline;
4503 border-radius: .25em;
4503 border-radius: .25em;
4504 }
4504 }
4505 a.label:hover,
4505 a.label:hover,
4506 a.label:focus {
4506 a.label:focus {
4507 color: #ffffff;
4507 color: #ffffff;
4508 text-decoration: none;
4508 text-decoration: none;
4509 cursor: pointer;
4509 cursor: pointer;
4510 }
4510 }
4511 .label:empty {
4511 .label:empty {
4512 display: none;
4512 display: none;
4513 }
4513 }
4514 .btn .label {
4514 .btn .label {
4515 position: relative;
4515 position: relative;
4516 top: -1px;
4516 top: -1px;
4517 }
4517 }
4518 .label-default {
4518 .label-default {
4519 background-color: #777777;
4519 background-color: #777777;
4520 }
4520 }
4521 .label-default[href]:hover,
4521 .label-default[href]:hover,
4522 .label-default[href]:focus {
4522 .label-default[href]:focus {
4523 background-color: #5e5e5e;
4523 background-color: #5e5e5e;
4524 }
4524 }
4525 .label-primary {
4525 .label-primary {
4526 background-color: #337ab7;
4526 background-color: #337ab7;
4527 }
4527 }
4528 .label-primary[href]:hover,
4528 .label-primary[href]:hover,
4529 .label-primary[href]:focus {
4529 .label-primary[href]:focus {
4530 background-color: #286090;
4530 background-color: #286090;
4531 }
4531 }
4532 .label-success {
4532 .label-success {
4533 background-color: #5cb85c;
4533 background-color: #5cb85c;
4534 }
4534 }
4535 .label-success[href]:hover,
4535 .label-success[href]:hover,
4536 .label-success[href]:focus {
4536 .label-success[href]:focus {
4537 background-color: #449d44;
4537 background-color: #449d44;
4538 }
4538 }
4539 .label-info {
4539 .label-info {
4540 background-color: #5bc0de;
4540 background-color: #5bc0de;
4541 }
4541 }
4542 .label-info[href]:hover,
4542 .label-info[href]:hover,
4543 .label-info[href]:focus {
4543 .label-info[href]:focus {
4544 background-color: #31b0d5;
4544 background-color: #31b0d5;
4545 }
4545 }
4546 .label-warning {
4546 .label-warning {
4547 background-color: #f0ad4e;
4547 background-color: #f0ad4e;
4548 }
4548 }
4549 .label-warning[href]:hover,
4549 .label-warning[href]:hover,
4550 .label-warning[href]:focus {
4550 .label-warning[href]:focus {
4551 background-color: #ec971f;
4551 background-color: #ec971f;
4552 }
4552 }
4553 .label-danger {
4553 .label-danger {
4554 background-color: #d9534f;
4554 background-color: #d9534f;
4555 }
4555 }
4556 .label-danger[href]:hover,
4556 .label-danger[href]:hover,
4557 .label-danger[href]:focus {
4557 .label-danger[href]:focus {
4558 background-color: #c9302c;
4558 background-color: #c9302c;
4559 }
4559 }
4560 .badge {
4560 .badge {
4561 display: inline-block;
4561 display: inline-block;
4562 min-width: 10px;
4562 min-width: 10px;
4563 padding: 3px 7px;
4563 padding: 3px 7px;
4564 font-size: 12px;
4564 font-size: 12px;
4565 font-weight: bold;
4565 font-weight: bold;
4566 color: #ffffff;
4566 color: #ffffff;
4567 line-height: 1;
4567 line-height: 1;
4568 vertical-align: baseline;
4568 vertical-align: baseline;
4569 white-space: nowrap;
4569 white-space: nowrap;
4570 text-align: center;
4570 text-align: center;
4571 background-color: #777777;
4571 background-color: #777777;
4572 border-radius: 10px;
4572 border-radius: 10px;
4573 }
4573 }
4574 .badge:empty {
4574 .badge:empty {
4575 display: none;
4575 display: none;
4576 }
4576 }
4577 .btn .badge {
4577 .btn .badge {
4578 position: relative;
4578 position: relative;
4579 top: -1px;
4579 top: -1px;
4580 }
4580 }
4581 .btn-xs .badge {
4581 .btn-xs .badge {
4582 top: 0;
4582 top: 0;
4583 padding: 1px 5px;
4583 padding: 1px 5px;
4584 }
4584 }
4585 a.badge:hover,
4585 a.badge:hover,
4586 a.badge:focus {
4586 a.badge:focus {
4587 color: #ffffff;
4587 color: #ffffff;
4588 text-decoration: none;
4588 text-decoration: none;
4589 cursor: pointer;
4589 cursor: pointer;
4590 }
4590 }
4591 .list-group-item.active > .badge,
4591 .list-group-item.active > .badge,
4592 .nav-pills > .active > a > .badge {
4592 .nav-pills > .active > a > .badge {
4593 color: #337ab7;
4593 color: #337ab7;
4594 background-color: #ffffff;
4594 background-color: #ffffff;
4595 }
4595 }
4596 .list-group-item > .badge {
4596 .list-group-item > .badge {
4597 float: right;
4597 float: right;
4598 }
4598 }
4599 .list-group-item > .badge + .badge {
4599 .list-group-item > .badge + .badge {
4600 margin-right: 5px;
4600 margin-right: 5px;
4601 }
4601 }
4602 .nav-pills > li > a > .badge {
4602 .nav-pills > li > a > .badge {
4603 margin-left: 3px;
4603 margin-left: 3px;
4604 }
4604 }
4605 .jumbotron {
4605 .jumbotron {
4606 padding: 30px 15px;
4606 padding: 30px 15px;
4607 margin-bottom: 30px;
4607 margin-bottom: 30px;
4608 color: inherit;
4608 color: inherit;
4609 background-color: #eeeeee;
4609 background-color: #eeeeee;
4610 }
4610 }
4611 .jumbotron h1,
4611 .jumbotron h1,
4612 .jumbotron .h1 {
4612 .jumbotron .h1 {
4613 color: inherit;
4613 color: inherit;
4614 }
4614 }
4615 .jumbotron p {
4615 .jumbotron p {
4616 margin-bottom: 15px;
4616 margin-bottom: 15px;
4617 font-size: 20px;
4617 font-size: 20px;
4618 font-weight: 200;
4618 font-weight: 200;
4619 }
4619 }
4620 .jumbotron > hr {
4620 .jumbotron > hr {
4621 border-top-color: #d5d5d5;
4621 border-top-color: #d5d5d5;
4622 }
4622 }
4623 .container .jumbotron,
4623 .container .jumbotron,
4624 .container-fluid .jumbotron {
4624 .container-fluid .jumbotron {
4625 border-radius: 3px;
4625 border-radius: 3px;
4626 }
4626 }
4627 .jumbotron .container {
4627 .jumbotron .container {
4628 max-width: 100%;
4628 max-width: 100%;
4629 }
4629 }
4630 @media screen and (min-width: 768px) {
4630 @media screen and (min-width: 768px) {
4631 .jumbotron {
4631 .jumbotron {
4632 padding: 48px 0;
4632 padding: 48px 0;
4633 }
4633 }
4634 .container .jumbotron,
4634 .container .jumbotron,
4635 .container-fluid .jumbotron {
4635 .container-fluid .jumbotron {
4636 padding-left: 60px;
4636 padding-left: 60px;
4637 padding-right: 60px;
4637 padding-right: 60px;
4638 }
4638 }
4639 .jumbotron h1,
4639 .jumbotron h1,
4640 .jumbotron .h1 {
4640 .jumbotron .h1 {
4641 font-size: 58.5px;
4641 font-size: 58.5px;
4642 }
4642 }
4643 }
4643 }
4644 .thumbnail {
4644 .thumbnail {
4645 display: block;
4645 display: block;
4646 padding: 4px;
4646 padding: 4px;
4647 margin-bottom: 18px;
4647 margin-bottom: 18px;
4648 line-height: 1.42857143;
4648 line-height: 1.42857143;
4649 background-color: #ffffff;
4649 background-color: #ffffff;
4650 border: 1px solid #dddddd;
4650 border: 1px solid #dddddd;
4651 border-radius: 2px;
4651 border-radius: 2px;
4652 -webkit-transition: border 0.2s ease-in-out;
4652 -webkit-transition: border 0.2s ease-in-out;
4653 -o-transition: border 0.2s ease-in-out;
4653 -o-transition: border 0.2s ease-in-out;
4654 transition: border 0.2s ease-in-out;
4654 transition: border 0.2s ease-in-out;
4655 }
4655 }
4656 .thumbnail > img,
4656 .thumbnail > img,
4657 .thumbnail a > img {
4657 .thumbnail a > img {
4658 margin-left: auto;
4658 margin-left: auto;
4659 margin-right: auto;
4659 margin-right: auto;
4660 }
4660 }
4661 a.thumbnail:hover,
4661 a.thumbnail:hover,
4662 a.thumbnail:focus,
4662 a.thumbnail:focus,
4663 a.thumbnail.active {
4663 a.thumbnail.active {
4664 border-color: #337ab7;
4664 border-color: #337ab7;
4665 }
4665 }
4666 .thumbnail .caption {
4666 .thumbnail .caption {
4667 padding: 9px;
4667 padding: 9px;
4668 color: #000000;
4668 color: #000000;
4669 }
4669 }
4670 .alert {
4670 .alert {
4671 padding: 15px;
4671 padding: 15px;
4672 margin-bottom: 18px;
4672 margin-bottom: 18px;
4673 border: 1px solid transparent;
4673 border: 1px solid transparent;
4674 border-radius: 2px;
4674 border-radius: 2px;
4675 }
4675 }
4676 .alert h4 {
4676 .alert h4 {
4677 margin-top: 0;
4677 margin-top: 0;
4678 color: inherit;
4678 color: inherit;
4679 }
4679 }
4680 .alert .alert-link {
4680 .alert .alert-link {
4681 font-weight: bold;
4681 font-weight: bold;
4682 }
4682 }
4683 .alert > p,
4683 .alert > p,
4684 .alert > ul {
4684 .alert > ul {
4685 margin-bottom: 0;
4685 margin-bottom: 0;
4686 }
4686 }
4687 .alert > p + p {
4687 .alert > p + p {
4688 margin-top: 5px;
4688 margin-top: 5px;
4689 }
4689 }
4690 .alert-dismissable,
4690 .alert-dismissable,
4691 .alert-dismissible {
4691 .alert-dismissible {
4692 padding-right: 35px;
4692 padding-right: 35px;
4693 }
4693 }
4694 .alert-dismissable .close,
4694 .alert-dismissable .close,
4695 .alert-dismissible .close {
4695 .alert-dismissible .close {
4696 position: relative;
4696 position: relative;
4697 top: -2px;
4697 top: -2px;
4698 right: -21px;
4698 right: -21px;
4699 color: inherit;
4699 color: inherit;
4700 }
4700 }
4701 .alert-success {
4701 .alert-success {
4702 background-color: #dff0d8;
4702 background-color: #dff0d8;
4703 border-color: #d6e9c6;
4703 border-color: #d6e9c6;
4704 color: #3c763d;
4704 color: #3c763d;
4705 }
4705 }
4706 .alert-success hr {
4706 .alert-success hr {
4707 border-top-color: #c9e2b3;
4707 border-top-color: #c9e2b3;
4708 }
4708 }
4709 .alert-success .alert-link {
4709 .alert-success .alert-link {
4710 color: #2b542c;
4710 color: #2b542c;
4711 }
4711 }
4712 .alert-info {
4712 .alert-info {
4713 background-color: #d9edf7;
4713 background-color: #d9edf7;
4714 border-color: #bce8f1;
4714 border-color: #bce8f1;
4715 color: #31708f;
4715 color: #31708f;
4716 }
4716 }
4717 .alert-info hr {
4717 .alert-info hr {
4718 border-top-color: #a6e1ec;
4718 border-top-color: #a6e1ec;
4719 }
4719 }
4720 .alert-info .alert-link {
4720 .alert-info .alert-link {
4721 color: #245269;
4721 color: #245269;
4722 }
4722 }
4723 .alert-warning {
4723 .alert-warning {
4724 background-color: #fcf8e3;
4724 background-color: #fcf8e3;
4725 border-color: #faebcc;
4725 border-color: #faebcc;
4726 color: #8a6d3b;
4726 color: #8a6d3b;
4727 }
4727 }
4728 .alert-warning hr {
4728 .alert-warning hr {
4729 border-top-color: #f7e1b5;
4729 border-top-color: #f7e1b5;
4730 }
4730 }
4731 .alert-warning .alert-link {
4731 .alert-warning .alert-link {
4732 color: #66512c;
4732 color: #66512c;
4733 }
4733 }
4734 .alert-danger {
4734 .alert-danger {
4735 background-color: #f2dede;
4735 background-color: #f2dede;
4736 border-color: #ebccd1;
4736 border-color: #ebccd1;
4737 color: #a94442;
4737 color: #a94442;
4738 }
4738 }
4739 .alert-danger hr {
4739 .alert-danger hr {
4740 border-top-color: #e4b9c0;
4740 border-top-color: #e4b9c0;
4741 }
4741 }
4742 .alert-danger .alert-link {
4742 .alert-danger .alert-link {
4743 color: #843534;
4743 color: #843534;
4744 }
4744 }
4745 @-webkit-keyframes progress-bar-stripes {
4745 @-webkit-keyframes progress-bar-stripes {
4746 from {
4746 from {
4747 background-position: 40px 0;
4747 background-position: 40px 0;
4748 }
4748 }
4749 to {
4749 to {
4750 background-position: 0 0;
4750 background-position: 0 0;
4751 }
4751 }
4752 }
4752 }
4753 @keyframes progress-bar-stripes {
4753 @keyframes progress-bar-stripes {
4754 from {
4754 from {
4755 background-position: 40px 0;
4755 background-position: 40px 0;
4756 }
4756 }
4757 to {
4757 to {
4758 background-position: 0 0;
4758 background-position: 0 0;
4759 }
4759 }
4760 }
4760 }
4761 .progress {
4761 .progress {
4762 overflow: hidden;
4762 overflow: hidden;
4763 height: 18px;
4763 height: 18px;
4764 margin-bottom: 18px;
4764 margin-bottom: 18px;
4765 background-color: #f5f5f5;
4765 background-color: #f5f5f5;
4766 border-radius: 2px;
4766 border-radius: 2px;
4767 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4767 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4768 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4768 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4769 }
4769 }
4770 .progress-bar {
4770 .progress-bar {
4771 float: left;
4771 float: left;
4772 width: 0%;
4772 width: 0%;
4773 height: 100%;
4773 height: 100%;
4774 font-size: 12px;
4774 font-size: 12px;
4775 line-height: 18px;
4775 line-height: 18px;
4776 color: #ffffff;
4776 color: #ffffff;
4777 text-align: center;
4777 text-align: center;
4778 background-color: #337ab7;
4778 background-color: #337ab7;
4779 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4779 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4780 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4780 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4781 -webkit-transition: width 0.6s ease;
4781 -webkit-transition: width 0.6s ease;
4782 -o-transition: width 0.6s ease;
4782 -o-transition: width 0.6s ease;
4783 transition: width 0.6s ease;
4783 transition: width 0.6s ease;
4784 }
4784 }
4785 .progress-striped .progress-bar,
4785 .progress-striped .progress-bar,
4786 .progress-bar-striped {
4786 .progress-bar-striped {
4787 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4787 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4788 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4788 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4789 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4789 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4790 background-size: 40px 40px;
4790 background-size: 40px 40px;
4791 }
4791 }
4792 .progress.active .progress-bar,
4792 .progress.active .progress-bar,
4793 .progress-bar.active {
4793 .progress-bar.active {
4794 -webkit-animation: progress-bar-stripes 2s linear infinite;
4794 -webkit-animation: progress-bar-stripes 2s linear infinite;
4795 -o-animation: progress-bar-stripes 2s linear infinite;
4795 -o-animation: progress-bar-stripes 2s linear infinite;
4796 animation: progress-bar-stripes 2s linear infinite;
4796 animation: progress-bar-stripes 2s linear infinite;
4797 }
4797 }
4798 .progress-bar-success {
4798 .progress-bar-success {
4799 background-color: #5cb85c;
4799 background-color: #5cb85c;
4800 }
4800 }
4801 .progress-striped .progress-bar-success {
4801 .progress-striped .progress-bar-success {
4802 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4802 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4803 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4803 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4804 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4804 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4805 }
4805 }
4806 .progress-bar-info {
4806 .progress-bar-info {
4807 background-color: #5bc0de;
4807 background-color: #5bc0de;
4808 }
4808 }
4809 .progress-striped .progress-bar-info {
4809 .progress-striped .progress-bar-info {
4810 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4810 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4811 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4811 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4812 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4812 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4813 }
4813 }
4814 .progress-bar-warning {
4814 .progress-bar-warning {
4815 background-color: #f0ad4e;
4815 background-color: #f0ad4e;
4816 }
4816 }
4817 .progress-striped .progress-bar-warning {
4817 .progress-striped .progress-bar-warning {
4818 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4818 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4819 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4819 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4820 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4820 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4821 }
4821 }
4822 .progress-bar-danger {
4822 .progress-bar-danger {
4823 background-color: #d9534f;
4823 background-color: #d9534f;
4824 }
4824 }
4825 .progress-striped .progress-bar-danger {
4825 .progress-striped .progress-bar-danger {
4826 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4826 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4827 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4827 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4828 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4828 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4829 }
4829 }
4830 .media {
4830 .media {
4831 margin-top: 15px;
4831 margin-top: 15px;
4832 }
4832 }
4833 .media:first-child {
4833 .media:first-child {
4834 margin-top: 0;
4834 margin-top: 0;
4835 }
4835 }
4836 .media-right,
4836 .media-right,
4837 .media > .pull-right {
4837 .media > .pull-right {
4838 padding-left: 10px;
4838 padding-left: 10px;
4839 }
4839 }
4840 .media-left,
4840 .media-left,
4841 .media > .pull-left {
4841 .media > .pull-left {
4842 padding-right: 10px;
4842 padding-right: 10px;
4843 }
4843 }
4844 .media-left,
4844 .media-left,
4845 .media-right,
4845 .media-right,
4846 .media-body {
4846 .media-body {
4847 display: table-cell;
4847 display: table-cell;
4848 vertical-align: top;
4848 vertical-align: top;
4849 }
4849 }
4850 .media-middle {
4850 .media-middle {
4851 vertical-align: middle;
4851 vertical-align: middle;
4852 }
4852 }
4853 .media-bottom {
4853 .media-bottom {
4854 vertical-align: bottom;
4854 vertical-align: bottom;
4855 }
4855 }
4856 .media-heading {
4856 .media-heading {
4857 margin-top: 0;
4857 margin-top: 0;
4858 margin-bottom: 5px;
4858 margin-bottom: 5px;
4859 }
4859 }
4860 .media-list {
4860 .media-list {
4861 padding-left: 0;
4861 padding-left: 0;
4862 list-style: none;
4862 list-style: none;
4863 }
4863 }
4864 .list-group {
4864 .list-group {
4865 margin-bottom: 20px;
4865 margin-bottom: 20px;
4866 padding-left: 0;
4866 padding-left: 0;
4867 }
4867 }
4868 .list-group-item {
4868 .list-group-item {
4869 position: relative;
4869 position: relative;
4870 display: block;
4870 display: block;
4871 padding: 10px 15px;
4871 padding: 10px 15px;
4872 margin-bottom: -1px;
4872 margin-bottom: -1px;
4873 background-color: #ffffff;
4873 background-color: #ffffff;
4874 border: 1px solid #dddddd;
4874 border: 1px solid #dddddd;
4875 }
4875 }
4876 .list-group-item:first-child {
4876 .list-group-item:first-child {
4877 border-top-right-radius: 2px;
4877 border-top-right-radius: 2px;
4878 border-top-left-radius: 2px;
4878 border-top-left-radius: 2px;
4879 }
4879 }
4880 .list-group-item:last-child {
4880 .list-group-item:last-child {
4881 margin-bottom: 0;
4881 margin-bottom: 0;
4882 border-bottom-right-radius: 2px;
4882 border-bottom-right-radius: 2px;
4883 border-bottom-left-radius: 2px;
4883 border-bottom-left-radius: 2px;
4884 }
4884 }
4885 a.list-group-item {
4885 a.list-group-item {
4886 color: #555555;
4886 color: #555555;
4887 }
4887 }
4888 a.list-group-item .list-group-item-heading {
4888 a.list-group-item .list-group-item-heading {
4889 color: #333333;
4889 color: #333333;
4890 }
4890 }
4891 a.list-group-item:hover,
4891 a.list-group-item:hover,
4892 a.list-group-item:focus {
4892 a.list-group-item:focus {
4893 text-decoration: none;
4893 text-decoration: none;
4894 color: #555555;
4894 color: #555555;
4895 background-color: #f5f5f5;
4895 background-color: #f5f5f5;
4896 }
4896 }
4897 .list-group-item.disabled,
4897 .list-group-item.disabled,
4898 .list-group-item.disabled:hover,
4898 .list-group-item.disabled:hover,
4899 .list-group-item.disabled:focus {
4899 .list-group-item.disabled:focus {
4900 background-color: #eeeeee;
4900 background-color: #eeeeee;
4901 color: #777777;
4901 color: #777777;
4902 cursor: not-allowed;
4902 cursor: not-allowed;
4903 }
4903 }
4904 .list-group-item.disabled .list-group-item-heading,
4904 .list-group-item.disabled .list-group-item-heading,
4905 .list-group-item.disabled:hover .list-group-item-heading,
4905 .list-group-item.disabled:hover .list-group-item-heading,
4906 .list-group-item.disabled:focus .list-group-item-heading {
4906 .list-group-item.disabled:focus .list-group-item-heading {
4907 color: inherit;
4907 color: inherit;
4908 }
4908 }
4909 .list-group-item.disabled .list-group-item-text,
4909 .list-group-item.disabled .list-group-item-text,
4910 .list-group-item.disabled:hover .list-group-item-text,
4910 .list-group-item.disabled:hover .list-group-item-text,
4911 .list-group-item.disabled:focus .list-group-item-text {
4911 .list-group-item.disabled:focus .list-group-item-text {
4912 color: #777777;
4912 color: #777777;
4913 }
4913 }
4914 .list-group-item.active,
4914 .list-group-item.active,
4915 .list-group-item.active:hover,
4915 .list-group-item.active:hover,
4916 .list-group-item.active:focus {
4916 .list-group-item.active:focus {
4917 z-index: 2;
4917 z-index: 2;
4918 color: #ffffff;
4918 color: #ffffff;
4919 background-color: #337ab7;
4919 background-color: #337ab7;
4920 border-color: #337ab7;
4920 border-color: #337ab7;
4921 }
4921 }
4922 .list-group-item.active .list-group-item-heading,
4922 .list-group-item.active .list-group-item-heading,
4923 .list-group-item.active:hover .list-group-item-heading,
4923 .list-group-item.active:hover .list-group-item-heading,
4924 .list-group-item.active:focus .list-group-item-heading,
4924 .list-group-item.active:focus .list-group-item-heading,
4925 .list-group-item.active .list-group-item-heading > small,
4925 .list-group-item.active .list-group-item-heading > small,
4926 .list-group-item.active:hover .list-group-item-heading > small,
4926 .list-group-item.active:hover .list-group-item-heading > small,
4927 .list-group-item.active:focus .list-group-item-heading > small,
4927 .list-group-item.active:focus .list-group-item-heading > small,
4928 .list-group-item.active .list-group-item-heading > .small,
4928 .list-group-item.active .list-group-item-heading > .small,
4929 .list-group-item.active:hover .list-group-item-heading > .small,
4929 .list-group-item.active:hover .list-group-item-heading > .small,
4930 .list-group-item.active:focus .list-group-item-heading > .small {
4930 .list-group-item.active:focus .list-group-item-heading > .small {
4931 color: inherit;
4931 color: inherit;
4932 }
4932 }
4933 .list-group-item.active .list-group-item-text,
4933 .list-group-item.active .list-group-item-text,
4934 .list-group-item.active:hover .list-group-item-text,
4934 .list-group-item.active:hover .list-group-item-text,
4935 .list-group-item.active:focus .list-group-item-text {
4935 .list-group-item.active:focus .list-group-item-text {
4936 color: #c7ddef;
4936 color: #c7ddef;
4937 }
4937 }
4938 .list-group-item-success {
4938 .list-group-item-success {
4939 color: #3c763d;
4939 color: #3c763d;
4940 background-color: #dff0d8;
4940 background-color: #dff0d8;
4941 }
4941 }
4942 a.list-group-item-success {
4942 a.list-group-item-success {
4943 color: #3c763d;
4943 color: #3c763d;
4944 }
4944 }
4945 a.list-group-item-success .list-group-item-heading {
4945 a.list-group-item-success .list-group-item-heading {
4946 color: inherit;
4946 color: inherit;
4947 }
4947 }
4948 a.list-group-item-success:hover,
4948 a.list-group-item-success:hover,
4949 a.list-group-item-success:focus {
4949 a.list-group-item-success:focus {
4950 color: #3c763d;
4950 color: #3c763d;
4951 background-color: #d0e9c6;
4951 background-color: #d0e9c6;
4952 }
4952 }
4953 a.list-group-item-success.active,
4953 a.list-group-item-success.active,
4954 a.list-group-item-success.active:hover,
4954 a.list-group-item-success.active:hover,
4955 a.list-group-item-success.active:focus {
4955 a.list-group-item-success.active:focus {
4956 color: #fff;
4956 color: #fff;
4957 background-color: #3c763d;
4957 background-color: #3c763d;
4958 border-color: #3c763d;
4958 border-color: #3c763d;
4959 }
4959 }
4960 .list-group-item-info {
4960 .list-group-item-info {
4961 color: #31708f;
4961 color: #31708f;
4962 background-color: #d9edf7;
4962 background-color: #d9edf7;
4963 }
4963 }
4964 a.list-group-item-info {
4964 a.list-group-item-info {
4965 color: #31708f;
4965 color: #31708f;
4966 }
4966 }
4967 a.list-group-item-info .list-group-item-heading {
4967 a.list-group-item-info .list-group-item-heading {
4968 color: inherit;
4968 color: inherit;
4969 }
4969 }
4970 a.list-group-item-info:hover,
4970 a.list-group-item-info:hover,
4971 a.list-group-item-info:focus {
4971 a.list-group-item-info:focus {
4972 color: #31708f;
4972 color: #31708f;
4973 background-color: #c4e3f3;
4973 background-color: #c4e3f3;
4974 }
4974 }
4975 a.list-group-item-info.active,
4975 a.list-group-item-info.active,
4976 a.list-group-item-info.active:hover,
4976 a.list-group-item-info.active:hover,
4977 a.list-group-item-info.active:focus {
4977 a.list-group-item-info.active:focus {
4978 color: #fff;
4978 color: #fff;
4979 background-color: #31708f;
4979 background-color: #31708f;
4980 border-color: #31708f;
4980 border-color: #31708f;
4981 }
4981 }
4982 .list-group-item-warning {
4982 .list-group-item-warning {
4983 color: #8a6d3b;
4983 color: #8a6d3b;
4984 background-color: #fcf8e3;
4984 background-color: #fcf8e3;
4985 }
4985 }
4986 a.list-group-item-warning {
4986 a.list-group-item-warning {
4987 color: #8a6d3b;
4987 color: #8a6d3b;
4988 }
4988 }
4989 a.list-group-item-warning .list-group-item-heading {
4989 a.list-group-item-warning .list-group-item-heading {
4990 color: inherit;
4990 color: inherit;
4991 }
4991 }
4992 a.list-group-item-warning:hover,
4992 a.list-group-item-warning:hover,
4993 a.list-group-item-warning:focus {
4993 a.list-group-item-warning:focus {
4994 color: #8a6d3b;
4994 color: #8a6d3b;
4995 background-color: #faf2cc;
4995 background-color: #faf2cc;
4996 }
4996 }
4997 a.list-group-item-warning.active,
4997 a.list-group-item-warning.active,
4998 a.list-group-item-warning.active:hover,
4998 a.list-group-item-warning.active:hover,
4999 a.list-group-item-warning.active:focus {
4999 a.list-group-item-warning.active:focus {
5000 color: #fff;
5000 color: #fff;
5001 background-color: #8a6d3b;
5001 background-color: #8a6d3b;
5002 border-color: #8a6d3b;
5002 border-color: #8a6d3b;
5003 }
5003 }
5004 .list-group-item-danger {
5004 .list-group-item-danger {
5005 color: #a94442;
5005 color: #a94442;
5006 background-color: #f2dede;
5006 background-color: #f2dede;
5007 }
5007 }
5008 a.list-group-item-danger {
5008 a.list-group-item-danger {
5009 color: #a94442;
5009 color: #a94442;
5010 }
5010 }
5011 a.list-group-item-danger .list-group-item-heading {
5011 a.list-group-item-danger .list-group-item-heading {
5012 color: inherit;
5012 color: inherit;
5013 }
5013 }
5014 a.list-group-item-danger:hover,
5014 a.list-group-item-danger:hover,
5015 a.list-group-item-danger:focus {
5015 a.list-group-item-danger:focus {
5016 color: #a94442;
5016 color: #a94442;
5017 background-color: #ebcccc;
5017 background-color: #ebcccc;
5018 }
5018 }
5019 a.list-group-item-danger.active,
5019 a.list-group-item-danger.active,
5020 a.list-group-item-danger.active:hover,
5020 a.list-group-item-danger.active:hover,
5021 a.list-group-item-danger.active:focus {
5021 a.list-group-item-danger.active:focus {
5022 color: #fff;
5022 color: #fff;
5023 background-color: #a94442;
5023 background-color: #a94442;
5024 border-color: #a94442;
5024 border-color: #a94442;
5025 }
5025 }
5026 .list-group-item-heading {
5026 .list-group-item-heading {
5027 margin-top: 0;
5027 margin-top: 0;
5028 margin-bottom: 5px;
5028 margin-bottom: 5px;
5029 }
5029 }
5030 .list-group-item-text {
5030 .list-group-item-text {
5031 margin-bottom: 0;
5031 margin-bottom: 0;
5032 line-height: 1.3;
5032 line-height: 1.3;
5033 }
5033 }
5034 .panel {
5034 .panel {
5035 margin-bottom: 18px;
5035 margin-bottom: 18px;
5036 background-color: #ffffff;
5036 background-color: #ffffff;
5037 border: 1px solid transparent;
5037 border: 1px solid transparent;
5038 border-radius: 2px;
5038 border-radius: 2px;
5039 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5039 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5040 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5040 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5041 }
5041 }
5042 .panel-body {
5042 .panel-body {
5043 padding: 15px;
5043 padding: 15px;
5044 }
5044 }
5045 .panel-heading {
5045 .panel-heading {
5046 padding: 10px 15px;
5046 padding: 10px 15px;
5047 border-bottom: 1px solid transparent;
5047 border-bottom: 1px solid transparent;
5048 border-top-right-radius: 1px;
5048 border-top-right-radius: 1px;
5049 border-top-left-radius: 1px;
5049 border-top-left-radius: 1px;
5050 }
5050 }
5051 .panel-heading > .dropdown .dropdown-toggle {
5051 .panel-heading > .dropdown .dropdown-toggle {
5052 color: inherit;
5052 color: inherit;
5053 }
5053 }
5054 .panel-title {
5054 .panel-title {
5055 margin-top: 0;
5055 margin-top: 0;
5056 margin-bottom: 0;
5056 margin-bottom: 0;
5057 font-size: 15px;
5057 font-size: 15px;
5058 color: inherit;
5058 color: inherit;
5059 }
5059 }
5060 .panel-title > a {
5060 .panel-title > a {
5061 color: inherit;
5061 color: inherit;
5062 }
5062 }
5063 .panel-footer {
5063 .panel-footer {
5064 padding: 10px 15px;
5064 padding: 10px 15px;
5065 background-color: #f5f5f5;
5065 background-color: #f5f5f5;
5066 border-top: 1px solid #dddddd;
5066 border-top: 1px solid #dddddd;
5067 border-bottom-right-radius: 1px;
5067 border-bottom-right-radius: 1px;
5068 border-bottom-left-radius: 1px;
5068 border-bottom-left-radius: 1px;
5069 }
5069 }
5070 .panel > .list-group,
5070 .panel > .list-group,
5071 .panel > .panel-collapse > .list-group {
5071 .panel > .panel-collapse > .list-group {
5072 margin-bottom: 0;
5072 margin-bottom: 0;
5073 }
5073 }
5074 .panel > .list-group .list-group-item,
5074 .panel > .list-group .list-group-item,
5075 .panel > .panel-collapse > .list-group .list-group-item {
5075 .panel > .panel-collapse > .list-group .list-group-item {
5076 border-width: 1px 0;
5076 border-width: 1px 0;
5077 border-radius: 0;
5077 border-radius: 0;
5078 }
5078 }
5079 .panel > .list-group:first-child .list-group-item:first-child,
5079 .panel > .list-group:first-child .list-group-item:first-child,
5080 .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5080 .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5081 border-top: 0;
5081 border-top: 0;
5082 border-top-right-radius: 1px;
5082 border-top-right-radius: 1px;
5083 border-top-left-radius: 1px;
5083 border-top-left-radius: 1px;
5084 }
5084 }
5085 .panel > .list-group:last-child .list-group-item:last-child,
5085 .panel > .list-group:last-child .list-group-item:last-child,
5086 .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5086 .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5087 border-bottom: 0;
5087 border-bottom: 0;
5088 border-bottom-right-radius: 1px;
5088 border-bottom-right-radius: 1px;
5089 border-bottom-left-radius: 1px;
5089 border-bottom-left-radius: 1px;
5090 }
5090 }
5091 .panel-heading + .list-group .list-group-item:first-child {
5091 .panel-heading + .list-group .list-group-item:first-child {
5092 border-top-width: 0;
5092 border-top-width: 0;
5093 }
5093 }
5094 .list-group + .panel-footer {
5094 .list-group + .panel-footer {
5095 border-top-width: 0;
5095 border-top-width: 0;
5096 }
5096 }
5097 .panel > .table,
5097 .panel > .table,
5098 .panel > .table-responsive > .table,
5098 .panel > .table-responsive > .table,
5099 .panel > .panel-collapse > .table {
5099 .panel > .panel-collapse > .table {
5100 margin-bottom: 0;
5100 margin-bottom: 0;
5101 }
5101 }
5102 .panel > .table caption,
5102 .panel > .table caption,
5103 .panel > .table-responsive > .table caption,
5103 .panel > .table-responsive > .table caption,
5104 .panel > .panel-collapse > .table caption {
5104 .panel > .panel-collapse > .table caption {
5105 padding-left: 15px;
5105 padding-left: 15px;
5106 padding-right: 15px;
5106 padding-right: 15px;
5107 }
5107 }
5108 .panel > .table:first-child,
5108 .panel > .table:first-child,
5109 .panel > .table-responsive:first-child > .table:first-child {
5109 .panel > .table-responsive:first-child > .table:first-child {
5110 border-top-right-radius: 1px;
5110 border-top-right-radius: 1px;
5111 border-top-left-radius: 1px;
5111 border-top-left-radius: 1px;
5112 }
5112 }
5113 .panel > .table:first-child > thead:first-child > tr:first-child,
5113 .panel > .table:first-child > thead:first-child > tr:first-child,
5114 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5114 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5115 .panel > .table:first-child > tbody:first-child > tr:first-child,
5115 .panel > .table:first-child > tbody:first-child > tr:first-child,
5116 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5116 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5117 border-top-left-radius: 1px;
5117 border-top-left-radius: 1px;
5118 border-top-right-radius: 1px;
5118 border-top-right-radius: 1px;
5119 }
5119 }
5120 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5120 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5121 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5121 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5122 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5122 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5123 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5123 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5124 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5124 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5125 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5125 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5126 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5126 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5127 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5127 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5128 border-top-left-radius: 1px;
5128 border-top-left-radius: 1px;
5129 }
5129 }
5130 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5130 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5131 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5131 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5132 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5132 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5133 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5133 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5134 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5134 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5135 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5135 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5136 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5136 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5137 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5137 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5138 border-top-right-radius: 1px;
5138 border-top-right-radius: 1px;
5139 }
5139 }
5140 .panel > .table:last-child,
5140 .panel > .table:last-child,
5141 .panel > .table-responsive:last-child > .table:last-child {
5141 .panel > .table-responsive:last-child > .table:last-child {
5142 border-bottom-right-radius: 1px;
5142 border-bottom-right-radius: 1px;
5143 border-bottom-left-radius: 1px;
5143 border-bottom-left-radius: 1px;
5144 }
5144 }
5145 .panel > .table:last-child > tbody:last-child > tr:last-child,
5145 .panel > .table:last-child > tbody:last-child > tr:last-child,
5146 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5146 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5147 .panel > .table:last-child > tfoot:last-child > tr:last-child,
5147 .panel > .table:last-child > tfoot:last-child > tr:last-child,
5148 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5148 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5149 border-bottom-left-radius: 1px;
5149 border-bottom-left-radius: 1px;
5150 border-bottom-right-radius: 1px;
5150 border-bottom-right-radius: 1px;
5151 }
5151 }
5152 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5152 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5153 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5153 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5154 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5154 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5155 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5155 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5156 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5156 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5157 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5157 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5158 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5158 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5159 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5159 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5160 border-bottom-left-radius: 1px;
5160 border-bottom-left-radius: 1px;
5161 }
5161 }
5162 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5162 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5163 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5163 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5164 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5164 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5165 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5165 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5166 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5166 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5167 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5167 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5168 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5168 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5169 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5169 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5170 border-bottom-right-radius: 1px;
5170 border-bottom-right-radius: 1px;
5171 }
5171 }
5172 .panel > .panel-body + .table,
5172 .panel > .panel-body + .table,
5173 .panel > .panel-body + .table-responsive,
5173 .panel > .panel-body + .table-responsive,
5174 .panel > .table + .panel-body,
5174 .panel > .table + .panel-body,
5175 .panel > .table-responsive + .panel-body {
5175 .panel > .table-responsive + .panel-body {
5176 border-top: 1px solid #dddddd;
5176 border-top: 1px solid #dddddd;
5177 }
5177 }
5178 .panel > .table > tbody:first-child > tr:first-child th,
5178 .panel > .table > tbody:first-child > tr:first-child th,
5179 .panel > .table > tbody:first-child > tr:first-child td {
5179 .panel > .table > tbody:first-child > tr:first-child td {
5180 border-top: 0;
5180 border-top: 0;
5181 }
5181 }
5182 .panel > .table-bordered,
5182 .panel > .table-bordered,
5183 .panel > .table-responsive > .table-bordered {
5183 .panel > .table-responsive > .table-bordered {
5184 border: 0;
5184 border: 0;
5185 }
5185 }
5186 .panel > .table-bordered > thead > tr > th:first-child,
5186 .panel > .table-bordered > thead > tr > th:first-child,
5187 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5187 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5188 .panel > .table-bordered > tbody > tr > th:first-child,
5188 .panel > .table-bordered > tbody > tr > th:first-child,
5189 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5189 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5190 .panel > .table-bordered > tfoot > tr > th:first-child,
5190 .panel > .table-bordered > tfoot > tr > th:first-child,
5191 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5191 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5192 .panel > .table-bordered > thead > tr > td:first-child,
5192 .panel > .table-bordered > thead > tr > td:first-child,
5193 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5193 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5194 .panel > .table-bordered > tbody > tr > td:first-child,
5194 .panel > .table-bordered > tbody > tr > td:first-child,
5195 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5195 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5196 .panel > .table-bordered > tfoot > tr > td:first-child,
5196 .panel > .table-bordered > tfoot > tr > td:first-child,
5197 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5197 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5198 border-left: 0;
5198 border-left: 0;
5199 }
5199 }
5200 .panel > .table-bordered > thead > tr > th:last-child,
5200 .panel > .table-bordered > thead > tr > th:last-child,
5201 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5201 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5202 .panel > .table-bordered > tbody > tr > th:last-child,
5202 .panel > .table-bordered > tbody > tr > th:last-child,
5203 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5203 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5204 .panel > .table-bordered > tfoot > tr > th:last-child,
5204 .panel > .table-bordered > tfoot > tr > th:last-child,
5205 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5205 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5206 .panel > .table-bordered > thead > tr > td:last-child,
5206 .panel > .table-bordered > thead > tr > td:last-child,
5207 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5207 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5208 .panel > .table-bordered > tbody > tr > td:last-child,
5208 .panel > .table-bordered > tbody > tr > td:last-child,
5209 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5209 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5210 .panel > .table-bordered > tfoot > tr > td:last-child,
5210 .panel > .table-bordered > tfoot > tr > td:last-child,
5211 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5211 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5212 border-right: 0;
5212 border-right: 0;
5213 }
5213 }
5214 .panel > .table-bordered > thead > tr:first-child > td,
5214 .panel > .table-bordered > thead > tr:first-child > td,
5215 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5215 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5216 .panel > .table-bordered > tbody > tr:first-child > td,
5216 .panel > .table-bordered > tbody > tr:first-child > td,
5217 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5217 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5218 .panel > .table-bordered > thead > tr:first-child > th,
5218 .panel > .table-bordered > thead > tr:first-child > th,
5219 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5219 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5220 .panel > .table-bordered > tbody > tr:first-child > th,
5220 .panel > .table-bordered > tbody > tr:first-child > th,
5221 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5221 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5222 border-bottom: 0;
5222 border-bottom: 0;
5223 }
5223 }
5224 .panel > .table-bordered > tbody > tr:last-child > td,
5224 .panel > .table-bordered > tbody > tr:last-child > td,
5225 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5225 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5226 .panel > .table-bordered > tfoot > tr:last-child > td,
5226 .panel > .table-bordered > tfoot > tr:last-child > td,
5227 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5227 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5228 .panel > .table-bordered > tbody > tr:last-child > th,
5228 .panel > .table-bordered > tbody > tr:last-child > th,
5229 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5229 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5230 .panel > .table-bordered > tfoot > tr:last-child > th,
5230 .panel > .table-bordered > tfoot > tr:last-child > th,
5231 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5231 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5232 border-bottom: 0;
5232 border-bottom: 0;
5233 }
5233 }
5234 .panel > .table-responsive {
5234 .panel > .table-responsive {
5235 border: 0;
5235 border: 0;
5236 margin-bottom: 0;
5236 margin-bottom: 0;
5237 }
5237 }
5238 .panel-group {
5238 .panel-group {
5239 margin-bottom: 18px;
5239 margin-bottom: 18px;
5240 }
5240 }
5241 .panel-group .panel {
5241 .panel-group .panel {
5242 margin-bottom: 0;
5242 margin-bottom: 0;
5243 border-radius: 2px;
5243 border-radius: 2px;
5244 }
5244 }
5245 .panel-group .panel + .panel {
5245 .panel-group .panel + .panel {
5246 margin-top: 5px;
5246 margin-top: 5px;
5247 }
5247 }
5248 .panel-group .panel-heading {
5248 .panel-group .panel-heading {
5249 border-bottom: 0;
5249 border-bottom: 0;
5250 }
5250 }
5251 .panel-group .panel-heading + .panel-collapse > .panel-body,
5251 .panel-group .panel-heading + .panel-collapse > .panel-body,
5252 .panel-group .panel-heading + .panel-collapse > .list-group {
5252 .panel-group .panel-heading + .panel-collapse > .list-group {
5253 border-top: 1px solid #dddddd;
5253 border-top: 1px solid #dddddd;
5254 }
5254 }
5255 .panel-group .panel-footer {
5255 .panel-group .panel-footer {
5256 border-top: 0;
5256 border-top: 0;
5257 }
5257 }
5258 .panel-group .panel-footer + .panel-collapse .panel-body {
5258 .panel-group .panel-footer + .panel-collapse .panel-body {
5259 border-bottom: 1px solid #dddddd;
5259 border-bottom: 1px solid #dddddd;
5260 }
5260 }
5261 .panel-default {
5261 .panel-default {
5262 border-color: #dddddd;
5262 border-color: #dddddd;
5263 }
5263 }
5264 .panel-default > .panel-heading {
5264 .panel-default > .panel-heading {
5265 color: #333333;
5265 color: #333333;
5266 background-color: #f5f5f5;
5266 background-color: #f5f5f5;
5267 border-color: #dddddd;
5267 border-color: #dddddd;
5268 }
5268 }
5269 .panel-default > .panel-heading + .panel-collapse > .panel-body {
5269 .panel-default > .panel-heading + .panel-collapse > .panel-body {
5270 border-top-color: #dddddd;
5270 border-top-color: #dddddd;
5271 }
5271 }
5272 .panel-default > .panel-heading .badge {
5272 .panel-default > .panel-heading .badge {
5273 color: #f5f5f5;
5273 color: #f5f5f5;
5274 background-color: #333333;
5274 background-color: #333333;
5275 }
5275 }
5276 .panel-default > .panel-footer + .panel-collapse > .panel-body {
5276 .panel-default > .panel-footer + .panel-collapse > .panel-body {
5277 border-bottom-color: #dddddd;
5277 border-bottom-color: #dddddd;
5278 }
5278 }
5279 .panel-primary {
5279 .panel-primary {
5280 border-color: #337ab7;
5280 border-color: #337ab7;
5281 }
5281 }
5282 .panel-primary > .panel-heading {
5282 .panel-primary > .panel-heading {
5283 color: #ffffff;
5283 color: #ffffff;
5284 background-color: #337ab7;
5284 background-color: #337ab7;
5285 border-color: #337ab7;
5285 border-color: #337ab7;
5286 }
5286 }
5287 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5287 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5288 border-top-color: #337ab7;
5288 border-top-color: #337ab7;
5289 }
5289 }
5290 .panel-primary > .panel-heading .badge {
5290 .panel-primary > .panel-heading .badge {
5291 color: #337ab7;
5291 color: #337ab7;
5292 background-color: #ffffff;
5292 background-color: #ffffff;
5293 }
5293 }
5294 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5294 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5295 border-bottom-color: #337ab7;
5295 border-bottom-color: #337ab7;
5296 }
5296 }
5297 .panel-success {
5297 .panel-success {
5298 border-color: #d6e9c6;
5298 border-color: #d6e9c6;
5299 }
5299 }
5300 .panel-success > .panel-heading {
5300 .panel-success > .panel-heading {
5301 color: #3c763d;
5301 color: #3c763d;
5302 background-color: #dff0d8;
5302 background-color: #dff0d8;
5303 border-color: #d6e9c6;
5303 border-color: #d6e9c6;
5304 }
5304 }
5305 .panel-success > .panel-heading + .panel-collapse > .panel-body {
5305 .panel-success > .panel-heading + .panel-collapse > .panel-body {
5306 border-top-color: #d6e9c6;
5306 border-top-color: #d6e9c6;
5307 }
5307 }
5308 .panel-success > .panel-heading .badge {
5308 .panel-success > .panel-heading .badge {
5309 color: #dff0d8;
5309 color: #dff0d8;
5310 background-color: #3c763d;
5310 background-color: #3c763d;
5311 }
5311 }
5312 .panel-success > .panel-footer + .panel-collapse > .panel-body {
5312 .panel-success > .panel-footer + .panel-collapse > .panel-body {
5313 border-bottom-color: #d6e9c6;
5313 border-bottom-color: #d6e9c6;
5314 }
5314 }
5315 .panel-info {
5315 .panel-info {
5316 border-color: #bce8f1;
5316 border-color: #bce8f1;
5317 }
5317 }
5318 .panel-info > .panel-heading {
5318 .panel-info > .panel-heading {
5319 color: #31708f;
5319 color: #31708f;
5320 background-color: #d9edf7;
5320 background-color: #d9edf7;
5321 border-color: #bce8f1;
5321 border-color: #bce8f1;
5322 }
5322 }
5323 .panel-info > .panel-heading + .panel-collapse > .panel-body {
5323 .panel-info > .panel-heading + .panel-collapse > .panel-body {
5324 border-top-color: #bce8f1;
5324 border-top-color: #bce8f1;
5325 }
5325 }
5326 .panel-info > .panel-heading .badge {
5326 .panel-info > .panel-heading .badge {
5327 color: #d9edf7;
5327 color: #d9edf7;
5328 background-color: #31708f;
5328 background-color: #31708f;
5329 }
5329 }
5330 .panel-info > .panel-footer + .panel-collapse > .panel-body {
5330 .panel-info > .panel-footer + .panel-collapse > .panel-body {
5331 border-bottom-color: #bce8f1;
5331 border-bottom-color: #bce8f1;
5332 }
5332 }
5333 .panel-warning {
5333 .panel-warning {
5334 border-color: #faebcc;
5334 border-color: #faebcc;
5335 }
5335 }
5336 .panel-warning > .panel-heading {
5336 .panel-warning > .panel-heading {
5337 color: #8a6d3b;
5337 color: #8a6d3b;
5338 background-color: #fcf8e3;
5338 background-color: #fcf8e3;
5339 border-color: #faebcc;
5339 border-color: #faebcc;
5340 }
5340 }
5341 .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5341 .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5342 border-top-color: #faebcc;
5342 border-top-color: #faebcc;
5343 }
5343 }
5344 .panel-warning > .panel-heading .badge {
5344 .panel-warning > .panel-heading .badge {
5345 color: #fcf8e3;
5345 color: #fcf8e3;
5346 background-color: #8a6d3b;
5346 background-color: #8a6d3b;
5347 }
5347 }
5348 .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5348 .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5349 border-bottom-color: #faebcc;
5349 border-bottom-color: #faebcc;
5350 }
5350 }
5351 .panel-danger {
5351 .panel-danger {
5352 border-color: #ebccd1;
5352 border-color: #ebccd1;
5353 }
5353 }
5354 .panel-danger > .panel-heading {
5354 .panel-danger > .panel-heading {
5355 color: #a94442;
5355 color: #a94442;
5356 background-color: #f2dede;
5356 background-color: #f2dede;
5357 border-color: #ebccd1;
5357 border-color: #ebccd1;
5358 }
5358 }
5359 .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5359 .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5360 border-top-color: #ebccd1;
5360 border-top-color: #ebccd1;
5361 }
5361 }
5362 .panel-danger > .panel-heading .badge {
5362 .panel-danger > .panel-heading .badge {
5363 color: #f2dede;
5363 color: #f2dede;
5364 background-color: #a94442;
5364 background-color: #a94442;
5365 }
5365 }
5366 .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5366 .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5367 border-bottom-color: #ebccd1;
5367 border-bottom-color: #ebccd1;
5368 }
5368 }
5369 .embed-responsive {
5369 .embed-responsive {
5370 position: relative;
5370 position: relative;
5371 display: block;
5371 display: block;
5372 height: 0;
5372 height: 0;
5373 padding: 0;
5373 padding: 0;
5374 overflow: hidden;
5374 overflow: hidden;
5375 }
5375 }
5376 .embed-responsive .embed-responsive-item,
5376 .embed-responsive .embed-responsive-item,
5377 .embed-responsive iframe,
5377 .embed-responsive iframe,
5378 .embed-responsive embed,
5378 .embed-responsive embed,
5379 .embed-responsive object,
5379 .embed-responsive object,
5380 .embed-responsive video {
5380 .embed-responsive video {
5381 position: absolute;
5381 position: absolute;
5382 top: 0;
5382 top: 0;
5383 left: 0;
5383 left: 0;
5384 bottom: 0;
5384 bottom: 0;
5385 height: 100%;
5385 height: 100%;
5386 width: 100%;
5386 width: 100%;
5387 border: 0;
5387 border: 0;
5388 }
5388 }
5389 .embed-responsive.embed-responsive-16by9 {
5389 .embed-responsive.embed-responsive-16by9 {
5390 padding-bottom: 56.25%;
5390 padding-bottom: 56.25%;
5391 }
5391 }
5392 .embed-responsive.embed-responsive-4by3 {
5392 .embed-responsive.embed-responsive-4by3 {
5393 padding-bottom: 75%;
5393 padding-bottom: 75%;
5394 }
5394 }
5395 .well {
5395 .well {
5396 min-height: 20px;
5396 min-height: 20px;
5397 padding: 19px;
5397 padding: 19px;
5398 margin-bottom: 20px;
5398 margin-bottom: 20px;
5399 background-color: #f5f5f5;
5399 background-color: #f5f5f5;
5400 border: 1px solid #e3e3e3;
5400 border: 1px solid #e3e3e3;
5401 border-radius: 2px;
5401 border-radius: 2px;
5402 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5402 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5403 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5403 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5404 }
5404 }
5405 .well blockquote {
5405 .well blockquote {
5406 border-color: #ddd;
5406 border-color: #ddd;
5407 border-color: rgba(0, 0, 0, 0.15);
5407 border-color: rgba(0, 0, 0, 0.15);
5408 }
5408 }
5409 .well-lg {
5409 .well-lg {
5410 padding: 24px;
5410 padding: 24px;
5411 border-radius: 3px;
5411 border-radius: 3px;
5412 }
5412 }
5413 .well-sm {
5413 .well-sm {
5414 padding: 9px;
5414 padding: 9px;
5415 border-radius: 1px;
5415 border-radius: 1px;
5416 }
5416 }
5417 .close {
5417 .close {
5418 float: right;
5418 float: right;
5419 font-size: 19.5px;
5419 font-size: 19.5px;
5420 font-weight: bold;
5420 font-weight: bold;
5421 line-height: 1;
5421 line-height: 1;
5422 color: #000000;
5422 color: #000000;
5423 text-shadow: 0 1px 0 #ffffff;
5423 text-shadow: 0 1px 0 #ffffff;
5424 opacity: 0.2;
5424 opacity: 0.2;
5425 filter: alpha(opacity=20);
5425 filter: alpha(opacity=20);
5426 }
5426 }
5427 .close:hover,
5427 .close:hover,
5428 .close:focus {
5428 .close:focus {
5429 color: #000000;
5429 color: #000000;
5430 text-decoration: none;
5430 text-decoration: none;
5431 cursor: pointer;
5431 cursor: pointer;
5432 opacity: 0.5;
5432 opacity: 0.5;
5433 filter: alpha(opacity=50);
5433 filter: alpha(opacity=50);
5434 }
5434 }
5435 button.close {
5435 button.close {
5436 padding: 0;
5436 padding: 0;
5437 cursor: pointer;
5437 cursor: pointer;
5438 background: transparent;
5438 background: transparent;
5439 border: 0;
5439 border: 0;
5440 -webkit-appearance: none;
5440 -webkit-appearance: none;
5441 }
5441 }
5442 .modal-open {
5442 .modal-open {
5443 overflow: hidden;
5443 overflow: hidden;
5444 }
5444 }
5445 .modal {
5445 .modal {
5446 display: none;
5446 display: none;
5447 overflow: hidden;
5447 overflow: hidden;
5448 position: fixed;
5448 position: fixed;
5449 top: 0;
5449 top: 0;
5450 right: 0;
5450 right: 0;
5451 bottom: 0;
5451 bottom: 0;
5452 left: 0;
5452 left: 0;
5453 z-index: 1040;
5453 z-index: 1040;
5454 -webkit-overflow-scrolling: touch;
5454 -webkit-overflow-scrolling: touch;
5455 outline: 0;
5455 outline: 0;
5456 }
5456 }
5457 .modal.fade .modal-dialog {
5457 .modal.fade .modal-dialog {
5458 -webkit-transform: translate(0, -25%);
5458 -webkit-transform: translate(0, -25%);
5459 -ms-transform: translate(0, -25%);
5459 -ms-transform: translate(0, -25%);
5460 -o-transform: translate(0, -25%);
5460 -o-transform: translate(0, -25%);
5461 transform: translate(0, -25%);
5461 transform: translate(0, -25%);
5462 -webkit-transition: -webkit-transform 0.3s ease-out;
5462 -webkit-transition: -webkit-transform 0.3s ease-out;
5463 -moz-transition: -moz-transform 0.3s ease-out;
5463 -moz-transition: -moz-transform 0.3s ease-out;
5464 -o-transition: -o-transform 0.3s ease-out;
5464 -o-transition: -o-transform 0.3s ease-out;
5465 transition: transform 0.3s ease-out;
5465 transition: transform 0.3s ease-out;
5466 }
5466 }
5467 .modal.in .modal-dialog {
5467 .modal.in .modal-dialog {
5468 -webkit-transform: translate(0, 0);
5468 -webkit-transform: translate(0, 0);
5469 -ms-transform: translate(0, 0);
5469 -ms-transform: translate(0, 0);
5470 -o-transform: translate(0, 0);
5470 -o-transform: translate(0, 0);
5471 transform: translate(0, 0);
5471 transform: translate(0, 0);
5472 }
5472 }
5473 .modal-open .modal {
5473 .modal-open .modal {
5474 overflow-x: hidden;
5474 overflow-x: hidden;
5475 overflow-y: auto;
5475 overflow-y: auto;
5476 }
5476 }
5477 .modal-dialog {
5477 .modal-dialog {
5478 position: relative;
5478 position: relative;
5479 width: auto;
5479 width: auto;
5480 margin: 10px;
5480 margin: 10px;
5481 }
5481 }
5482 .modal-content {
5482 .modal-content {
5483 position: relative;
5483 position: relative;
5484 background-color: #ffffff;
5484 background-color: #ffffff;
5485 border: 1px solid #999999;
5485 border: 1px solid #999999;
5486 border: 1px solid rgba(0, 0, 0, 0.2);
5486 border: 1px solid rgba(0, 0, 0, 0.2);
5487 border-radius: 3px;
5487 border-radius: 3px;
5488 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5488 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5489 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5489 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5490 background-clip: padding-box;
5490 background-clip: padding-box;
5491 outline: 0;
5491 outline: 0;
5492 }
5492 }
5493 .modal-backdrop {
5493 .modal-backdrop {
5494 position: absolute;
5494 position: absolute;
5495 top: 0;
5495 top: 0;
5496 right: 0;
5496 right: 0;
5497 left: 0;
5497 left: 0;
5498 background-color: #000000;
5498 background-color: #000000;
5499 }
5499 }
5500 .modal-backdrop.fade {
5500 .modal-backdrop.fade {
5501 opacity: 0;
5501 opacity: 0;
5502 filter: alpha(opacity=0);
5502 filter: alpha(opacity=0);
5503 }
5503 }
5504 .modal-backdrop.in {
5504 .modal-backdrop.in {
5505 opacity: 0.5;
5505 opacity: 0.5;
5506 filter: alpha(opacity=50);
5506 filter: alpha(opacity=50);
5507 }
5507 }
5508 .modal-header {
5508 .modal-header {
5509 padding: 15px;
5509 padding: 15px;
5510 border-bottom: 1px solid #e5e5e5;
5510 border-bottom: 1px solid #e5e5e5;
5511 min-height: 16.42857143px;
5511 min-height: 16.42857143px;
5512 }
5512 }
5513 .modal-header .close {
5513 .modal-header .close {
5514 margin-top: -2px;
5514 margin-top: -2px;
5515 }
5515 }
5516 .modal-title {
5516 .modal-title {
5517 margin: 0;
5517 margin: 0;
5518 line-height: 1.42857143;
5518 line-height: 1.42857143;
5519 }
5519 }
5520 .modal-body {
5520 .modal-body {
5521 position: relative;
5521 position: relative;
5522 padding: 15px;
5522 padding: 15px;
5523 }
5523 }
5524 .modal-footer {
5524 .modal-footer {
5525 padding: 15px;
5525 padding: 15px;
5526 text-align: right;
5526 text-align: right;
5527 border-top: 1px solid #e5e5e5;
5527 border-top: 1px solid #e5e5e5;
5528 }
5528 }
5529 .modal-footer .btn + .btn {
5529 .modal-footer .btn + .btn {
5530 margin-left: 5px;
5530 margin-left: 5px;
5531 margin-bottom: 0;
5531 margin-bottom: 0;
5532 }
5532 }
5533 .modal-footer .btn-group .btn + .btn {
5533 .modal-footer .btn-group .btn + .btn {
5534 margin-left: -1px;
5534 margin-left: -1px;
5535 }
5535 }
5536 .modal-footer .btn-block + .btn-block {
5536 .modal-footer .btn-block + .btn-block {
5537 margin-left: 0;
5537 margin-left: 0;
5538 }
5538 }
5539 .modal-scrollbar-measure {
5539 .modal-scrollbar-measure {
5540 position: absolute;
5540 position: absolute;
5541 top: -9999px;
5541 top: -9999px;
5542 width: 50px;
5542 width: 50px;
5543 height: 50px;
5543 height: 50px;
5544 overflow: scroll;
5544 overflow: scroll;
5545 }
5545 }
5546 @media (min-width: 768px) {
5546 @media (min-width: 768px) {
5547 .modal-dialog {
5547 .modal-dialog {
5548 width: 600px;
5548 width: 600px;
5549 margin: 30px auto;
5549 margin: 30px auto;
5550 }
5550 }
5551 .modal-content {
5551 .modal-content {
5552 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5552 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5553 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5553 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5554 }
5554 }
5555 .modal-sm {
5555 .modal-sm {
5556 width: 300px;
5556 width: 300px;
5557 }
5557 }
5558 }
5558 }
5559 @media (min-width: 992px) {
5559 @media (min-width: 992px) {
5560 .modal-lg {
5560 .modal-lg {
5561 width: 900px;
5561 width: 900px;
5562 }
5562 }
5563 }
5563 }
5564 .tooltip {
5564 .tooltip {
5565 position: absolute;
5565 position: absolute;
5566 z-index: 1070;
5566 z-index: 1070;
5567 display: block;
5567 display: block;
5568 visibility: visible;
5568 visibility: visible;
5569 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5569 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5570 font-size: 12px;
5570 font-size: 12px;
5571 font-weight: normal;
5571 font-weight: normal;
5572 line-height: 1.4;
5572 line-height: 1.4;
5573 opacity: 0;
5573 opacity: 0;
5574 filter: alpha(opacity=0);
5574 filter: alpha(opacity=0);
5575 }
5575 }
5576 .tooltip.in {
5576 .tooltip.in {
5577 opacity: 0.9;
5577 opacity: 0.9;
5578 filter: alpha(opacity=90);
5578 filter: alpha(opacity=90);
5579 }
5579 }
5580 .tooltip.top {
5580 .tooltip.top {
5581 margin-top: -3px;
5581 margin-top: -3px;
5582 padding: 5px 0;
5582 padding: 5px 0;
5583 }
5583 }
5584 .tooltip.right {
5584 .tooltip.right {
5585 margin-left: 3px;
5585 margin-left: 3px;
5586 padding: 0 5px;
5586 padding: 0 5px;
5587 }
5587 }
5588 .tooltip.bottom {
5588 .tooltip.bottom {
5589 margin-top: 3px;
5589 margin-top: 3px;
5590 padding: 5px 0;
5590 padding: 5px 0;
5591 }
5591 }
5592 .tooltip.left {
5592 .tooltip.left {
5593 margin-left: -3px;
5593 margin-left: -3px;
5594 padding: 0 5px;
5594 padding: 0 5px;
5595 }
5595 }
5596 .tooltip-inner {
5596 .tooltip-inner {
5597 max-width: 200px;
5597 max-width: 200px;
5598 padding: 3px 8px;
5598 padding: 3px 8px;
5599 color: #ffffff;
5599 color: #ffffff;
5600 text-align: center;
5600 text-align: center;
5601 text-decoration: none;
5601 text-decoration: none;
5602 background-color: #000000;
5602 background-color: #000000;
5603 border-radius: 2px;
5603 border-radius: 2px;
5604 }
5604 }
5605 .tooltip-arrow {
5605 .tooltip-arrow {
5606 position: absolute;
5606 position: absolute;
5607 width: 0;
5607 width: 0;
5608 height: 0;
5608 height: 0;
5609 border-color: transparent;
5609 border-color: transparent;
5610 border-style: solid;
5610 border-style: solid;
5611 }
5611 }
5612 .tooltip.top .tooltip-arrow {
5612 .tooltip.top .tooltip-arrow {
5613 bottom: 0;
5613 bottom: 0;
5614 left: 50%;
5614 left: 50%;
5615 margin-left: -5px;
5615 margin-left: -5px;
5616 border-width: 5px 5px 0;
5616 border-width: 5px 5px 0;
5617 border-top-color: #000000;
5617 border-top-color: #000000;
5618 }
5618 }
5619 .tooltip.top-left .tooltip-arrow {
5619 .tooltip.top-left .tooltip-arrow {
5620 bottom: 0;
5620 bottom: 0;
5621 right: 5px;
5621 right: 5px;
5622 margin-bottom: -5px;
5622 margin-bottom: -5px;
5623 border-width: 5px 5px 0;
5623 border-width: 5px 5px 0;
5624 border-top-color: #000000;
5624 border-top-color: #000000;
5625 }
5625 }
5626 .tooltip.top-right .tooltip-arrow {
5626 .tooltip.top-right .tooltip-arrow {
5627 bottom: 0;
5627 bottom: 0;
5628 left: 5px;
5628 left: 5px;
5629 margin-bottom: -5px;
5629 margin-bottom: -5px;
5630 border-width: 5px 5px 0;
5630 border-width: 5px 5px 0;
5631 border-top-color: #000000;
5631 border-top-color: #000000;
5632 }
5632 }
5633 .tooltip.right .tooltip-arrow {
5633 .tooltip.right .tooltip-arrow {
5634 top: 50%;
5634 top: 50%;
5635 left: 0;
5635 left: 0;
5636 margin-top: -5px;
5636 margin-top: -5px;
5637 border-width: 5px 5px 5px 0;
5637 border-width: 5px 5px 5px 0;
5638 border-right-color: #000000;
5638 border-right-color: #000000;
5639 }
5639 }
5640 .tooltip.left .tooltip-arrow {
5640 .tooltip.left .tooltip-arrow {
5641 top: 50%;
5641 top: 50%;
5642 right: 0;
5642 right: 0;
5643 margin-top: -5px;
5643 margin-top: -5px;
5644 border-width: 5px 0 5px 5px;
5644 border-width: 5px 0 5px 5px;
5645 border-left-color: #000000;
5645 border-left-color: #000000;
5646 }
5646 }
5647 .tooltip.bottom .tooltip-arrow {
5647 .tooltip.bottom .tooltip-arrow {
5648 top: 0;
5648 top: 0;
5649 left: 50%;
5649 left: 50%;
5650 margin-left: -5px;
5650 margin-left: -5px;
5651 border-width: 0 5px 5px;
5651 border-width: 0 5px 5px;
5652 border-bottom-color: #000000;
5652 border-bottom-color: #000000;
5653 }
5653 }
5654 .tooltip.bottom-left .tooltip-arrow {
5654 .tooltip.bottom-left .tooltip-arrow {
5655 top: 0;
5655 top: 0;
5656 right: 5px;
5656 right: 5px;
5657 margin-top: -5px;
5657 margin-top: -5px;
5658 border-width: 0 5px 5px;
5658 border-width: 0 5px 5px;
5659 border-bottom-color: #000000;
5659 border-bottom-color: #000000;
5660 }
5660 }
5661 .tooltip.bottom-right .tooltip-arrow {
5661 .tooltip.bottom-right .tooltip-arrow {
5662 top: 0;
5662 top: 0;
5663 left: 5px;
5663 left: 5px;
5664 margin-top: -5px;
5664 margin-top: -5px;
5665 border-width: 0 5px 5px;
5665 border-width: 0 5px 5px;
5666 border-bottom-color: #000000;
5666 border-bottom-color: #000000;
5667 }
5667 }
5668 .popover {
5668 .popover {
5669 position: absolute;
5669 position: absolute;
5670 top: 0;
5670 top: 0;
5671 left: 0;
5671 left: 0;
5672 z-index: 1060;
5672 z-index: 1060;
5673 display: none;
5673 display: none;
5674 max-width: 276px;
5674 max-width: 276px;
5675 padding: 1px;
5675 padding: 1px;
5676 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5676 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5677 font-size: 13px;
5677 font-size: 13px;
5678 font-weight: normal;
5678 font-weight: normal;
5679 line-height: 1.42857143;
5679 line-height: 1.42857143;
5680 text-align: left;
5680 text-align: left;
5681 background-color: #ffffff;
5681 background-color: #ffffff;
5682 background-clip: padding-box;
5682 background-clip: padding-box;
5683 border: 1px solid #cccccc;
5683 border: 1px solid #cccccc;
5684 border: 1px solid rgba(0, 0, 0, 0.2);
5684 border: 1px solid rgba(0, 0, 0, 0.2);
5685 border-radius: 3px;
5685 border-radius: 3px;
5686 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5686 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5687 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5687 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5688 white-space: normal;
5688 white-space: normal;
5689 }
5689 }
5690 .popover.top {
5690 .popover.top {
5691 margin-top: -10px;
5691 margin-top: -10px;
5692 }
5692 }
5693 .popover.right {
5693 .popover.right {
5694 margin-left: 10px;
5694 margin-left: 10px;
5695 }
5695 }
5696 .popover.bottom {
5696 .popover.bottom {
5697 margin-top: 10px;
5697 margin-top: 10px;
5698 }
5698 }
5699 .popover.left {
5699 .popover.left {
5700 margin-left: -10px;
5700 margin-left: -10px;
5701 }
5701 }
5702 .popover-title {
5702 .popover-title {
5703 margin: 0;
5703 margin: 0;
5704 padding: 8px 14px;
5704 padding: 8px 14px;
5705 font-size: 13px;
5705 font-size: 13px;
5706 background-color: #f7f7f7;
5706 background-color: #f7f7f7;
5707 border-bottom: 1px solid #ebebeb;
5707 border-bottom: 1px solid #ebebeb;
5708 border-radius: 2px 2px 0 0;
5708 border-radius: 2px 2px 0 0;
5709 }
5709 }
5710 .popover-content {
5710 .popover-content {
5711 padding: 9px 14px;
5711 padding: 9px 14px;
5712 }
5712 }
5713 .popover > .arrow,
5713 .popover > .arrow,
5714 .popover > .arrow:after {
5714 .popover > .arrow:after {
5715 position: absolute;
5715 position: absolute;
5716 display: block;
5716 display: block;
5717 width: 0;
5717 width: 0;
5718 height: 0;
5718 height: 0;
5719 border-color: transparent;
5719 border-color: transparent;
5720 border-style: solid;
5720 border-style: solid;
5721 }
5721 }
5722 .popover > .arrow {
5722 .popover > .arrow {
5723 border-width: 11px;
5723 border-width: 11px;
5724 }
5724 }
5725 .popover > .arrow:after {
5725 .popover > .arrow:after {
5726 border-width: 10px;
5726 border-width: 10px;
5727 content: "";
5727 content: "";
5728 }
5728 }
5729 .popover.top > .arrow {
5729 .popover.top > .arrow {
5730 left: 50%;
5730 left: 50%;
5731 margin-left: -11px;
5731 margin-left: -11px;
5732 border-bottom-width: 0;
5732 border-bottom-width: 0;
5733 border-top-color: #999999;
5733 border-top-color: #999999;
5734 border-top-color: rgba(0, 0, 0, 0.25);
5734 border-top-color: rgba(0, 0, 0, 0.25);
5735 bottom: -11px;
5735 bottom: -11px;
5736 }
5736 }
5737 .popover.top > .arrow:after {
5737 .popover.top > .arrow:after {
5738 content: " ";
5738 content: " ";
5739 bottom: 1px;
5739 bottom: 1px;
5740 margin-left: -10px;
5740 margin-left: -10px;
5741 border-bottom-width: 0;
5741 border-bottom-width: 0;
5742 border-top-color: #ffffff;
5742 border-top-color: #ffffff;
5743 }
5743 }
5744 .popover.right > .arrow {
5744 .popover.right > .arrow {
5745 top: 50%;
5745 top: 50%;
5746 left: -11px;
5746 left: -11px;
5747 margin-top: -11px;
5747 margin-top: -11px;
5748 border-left-width: 0;
5748 border-left-width: 0;
5749 border-right-color: #999999;
5749 border-right-color: #999999;
5750 border-right-color: rgba(0, 0, 0, 0.25);
5750 border-right-color: rgba(0, 0, 0, 0.25);
5751 }
5751 }
5752 .popover.right > .arrow:after {
5752 .popover.right > .arrow:after {
5753 content: " ";
5753 content: " ";
5754 left: 1px;
5754 left: 1px;
5755 bottom: -10px;
5755 bottom: -10px;
5756 border-left-width: 0;
5756 border-left-width: 0;
5757 border-right-color: #ffffff;
5757 border-right-color: #ffffff;
5758 }
5758 }
5759 .popover.bottom > .arrow {
5759 .popover.bottom > .arrow {
5760 left: 50%;
5760 left: 50%;
5761 margin-left: -11px;
5761 margin-left: -11px;
5762 border-top-width: 0;
5762 border-top-width: 0;
5763 border-bottom-color: #999999;
5763 border-bottom-color: #999999;
5764 border-bottom-color: rgba(0, 0, 0, 0.25);
5764 border-bottom-color: rgba(0, 0, 0, 0.25);
5765 top: -11px;
5765 top: -11px;
5766 }
5766 }
5767 .popover.bottom > .arrow:after {
5767 .popover.bottom > .arrow:after {
5768 content: " ";
5768 content: " ";
5769 top: 1px;
5769 top: 1px;
5770 margin-left: -10px;
5770 margin-left: -10px;
5771 border-top-width: 0;
5771 border-top-width: 0;
5772 border-bottom-color: #ffffff;
5772 border-bottom-color: #ffffff;
5773 }
5773 }
5774 .popover.left > .arrow {
5774 .popover.left > .arrow {
5775 top: 50%;
5775 top: 50%;
5776 right: -11px;
5776 right: -11px;
5777 margin-top: -11px;
5777 margin-top: -11px;
5778 border-right-width: 0;
5778 border-right-width: 0;
5779 border-left-color: #999999;
5779 border-left-color: #999999;
5780 border-left-color: rgba(0, 0, 0, 0.25);
5780 border-left-color: rgba(0, 0, 0, 0.25);
5781 }
5781 }
5782 .popover.left > .arrow:after {
5782 .popover.left > .arrow:after {
5783 content: " ";
5783 content: " ";
5784 right: 1px;
5784 right: 1px;
5785 border-right-width: 0;
5785 border-right-width: 0;
5786 border-left-color: #ffffff;
5786 border-left-color: #ffffff;
5787 bottom: -10px;
5787 bottom: -10px;
5788 }
5788 }
5789 .carousel {
5789 .carousel {
5790 position: relative;
5790 position: relative;
5791 }
5791 }
5792 .carousel-inner {
5792 .carousel-inner {
5793 position: relative;
5793 position: relative;
5794 overflow: hidden;
5794 overflow: hidden;
5795 width: 100%;
5795 width: 100%;
5796 }
5796 }
5797 .carousel-inner > .item {
5797 .carousel-inner > .item {
5798 display: none;
5798 display: none;
5799 position: relative;
5799 position: relative;
5800 -webkit-transition: 0.6s ease-in-out left;
5800 -webkit-transition: 0.6s ease-in-out left;
5801 -o-transition: 0.6s ease-in-out left;
5801 -o-transition: 0.6s ease-in-out left;
5802 transition: 0.6s ease-in-out left;
5802 transition: 0.6s ease-in-out left;
5803 }
5803 }
5804 .carousel-inner > .item > img,
5804 .carousel-inner > .item > img,
5805 .carousel-inner > .item > a > img {
5805 .carousel-inner > .item > a > img {
5806 line-height: 1;
5806 line-height: 1;
5807 }
5807 }
5808 @media all and (transform-3d), (-webkit-transform-3d) {
5808 @media all and (transform-3d), (-webkit-transform-3d) {
5809 .carousel-inner > .item {
5809 .carousel-inner > .item {
5810 transition: transform 0.6s ease-in-out;
5810 transition: transform 0.6s ease-in-out;
5811 backface-visibility: hidden;
5811 backface-visibility: hidden;
5812 perspective: 1000;
5812 perspective: 1000;
5813 }
5813 }
5814 .carousel-inner > .item.next,
5814 .carousel-inner > .item.next,
5815 .carousel-inner > .item.active.right {
5815 .carousel-inner > .item.active.right {
5816 transform: translate3d(100%, 0, 0);
5816 transform: translate3d(100%, 0, 0);
5817 left: 0;
5817 left: 0;
5818 }
5818 }
5819 .carousel-inner > .item.prev,
5819 .carousel-inner > .item.prev,
5820 .carousel-inner > .item.active.left {
5820 .carousel-inner > .item.active.left {
5821 transform: translate3d(-100%, 0, 0);
5821 transform: translate3d(-100%, 0, 0);
5822 left: 0;
5822 left: 0;
5823 }
5823 }
5824 .carousel-inner > .item.next.left,
5824 .carousel-inner > .item.next.left,
5825 .carousel-inner > .item.prev.right,
5825 .carousel-inner > .item.prev.right,
5826 .carousel-inner > .item.active {
5826 .carousel-inner > .item.active {
5827 transform: translate3d(0, 0, 0);
5827 transform: translate3d(0, 0, 0);
5828 left: 0;
5828 left: 0;
5829 }
5829 }
5830 }
5830 }
5831 .carousel-inner > .active,
5831 .carousel-inner > .active,
5832 .carousel-inner > .next,
5832 .carousel-inner > .next,
5833 .carousel-inner > .prev {
5833 .carousel-inner > .prev {
5834 display: block;
5834 display: block;
5835 }
5835 }
5836 .carousel-inner > .active {
5836 .carousel-inner > .active {
5837 left: 0;
5837 left: 0;
5838 }
5838 }
5839 .carousel-inner > .next,
5839 .carousel-inner > .next,
5840 .carousel-inner > .prev {
5840 .carousel-inner > .prev {
5841 position: absolute;
5841 position: absolute;
5842 top: 0;
5842 top: 0;
5843 width: 100%;
5843 width: 100%;
5844 }
5844 }
5845 .carousel-inner > .next {
5845 .carousel-inner > .next {
5846 left: 100%;
5846 left: 100%;
5847 }
5847 }
5848 .carousel-inner > .prev {
5848 .carousel-inner > .prev {
5849 left: -100%;
5849 left: -100%;
5850 }
5850 }
5851 .carousel-inner > .next.left,
5851 .carousel-inner > .next.left,
5852 .carousel-inner > .prev.right {
5852 .carousel-inner > .prev.right {
5853 left: 0;
5853 left: 0;
5854 }
5854 }
5855 .carousel-inner > .active.left {
5855 .carousel-inner > .active.left {
5856 left: -100%;
5856 left: -100%;
5857 }
5857 }
5858 .carousel-inner > .active.right {
5858 .carousel-inner > .active.right {
5859 left: 100%;
5859 left: 100%;
5860 }
5860 }
5861 .carousel-control {
5861 .carousel-control {
5862 position: absolute;
5862 position: absolute;
5863 top: 0;
5863 top: 0;
5864 left: 0;
5864 left: 0;
5865 bottom: 0;
5865 bottom: 0;
5866 width: 15%;
5866 width: 15%;
5867 opacity: 0.5;
5867 opacity: 0.5;
5868 filter: alpha(opacity=50);
5868 filter: alpha(opacity=50);
5869 font-size: 20px;
5869 font-size: 20px;
5870 color: #ffffff;
5870 color: #ffffff;
5871 text-align: center;
5871 text-align: center;
5872 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5872 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5873 }
5873 }
5874 .carousel-control.left {
5874 .carousel-control.left {
5875 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5875 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5876 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5876 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5877 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5877 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5878 background-repeat: repeat-x;
5878 background-repeat: repeat-x;
5879 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5879 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5880 }
5880 }
5881 .carousel-control.right {
5881 .carousel-control.right {
5882 left: auto;
5882 left: auto;
5883 right: 0;
5883 right: 0;
5884 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5884 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5885 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5885 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5886 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5886 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5887 background-repeat: repeat-x;
5887 background-repeat: repeat-x;
5888 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5888 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5889 }
5889 }
5890 .carousel-control:hover,
5890 .carousel-control:hover,
5891 .carousel-control:focus {
5891 .carousel-control:focus {
5892 outline: 0;
5892 outline: 0;
5893 color: #ffffff;
5893 color: #ffffff;
5894 text-decoration: none;
5894 text-decoration: none;
5895 opacity: 0.9;
5895 opacity: 0.9;
5896 filter: alpha(opacity=90);
5896 filter: alpha(opacity=90);
5897 }
5897 }
5898 .carousel-control .icon-prev,
5898 .carousel-control .icon-prev,
5899 .carousel-control .icon-next,
5899 .carousel-control .icon-next,
5900 .carousel-control .glyphicon-chevron-left,
5900 .carousel-control .glyphicon-chevron-left,
5901 .carousel-control .glyphicon-chevron-right {
5901 .carousel-control .glyphicon-chevron-right {
5902 position: absolute;
5902 position: absolute;
5903 top: 50%;
5903 top: 50%;
5904 z-index: 5;
5904 z-index: 5;
5905 display: inline-block;
5905 display: inline-block;
5906 }
5906 }
5907 .carousel-control .icon-prev,
5907 .carousel-control .icon-prev,
5908 .carousel-control .glyphicon-chevron-left {
5908 .carousel-control .glyphicon-chevron-left {
5909 left: 50%;
5909 left: 50%;
5910 margin-left: -10px;
5910 margin-left: -10px;
5911 }
5911 }
5912 .carousel-control .icon-next,
5912 .carousel-control .icon-next,
5913 .carousel-control .glyphicon-chevron-right {
5913 .carousel-control .glyphicon-chevron-right {
5914 right: 50%;
5914 right: 50%;
5915 margin-right: -10px;
5915 margin-right: -10px;
5916 }
5916 }
5917 .carousel-control .icon-prev,
5917 .carousel-control .icon-prev,
5918 .carousel-control .icon-next {
5918 .carousel-control .icon-next {
5919 width: 20px;
5919 width: 20px;
5920 height: 20px;
5920 height: 20px;
5921 margin-top: -10px;
5921 margin-top: -10px;
5922 font-family: serif;
5922 font-family: serif;
5923 }
5923 }
5924 .carousel-control .icon-prev:before {
5924 .carousel-control .icon-prev:before {
5925 content: '\2039';
5925 content: '\2039';
5926 }
5926 }
5927 .carousel-control .icon-next:before {
5927 .carousel-control .icon-next:before {
5928 content: '\203a';
5928 content: '\203a';
5929 }
5929 }
5930 .carousel-indicators {
5930 .carousel-indicators {
5931 position: absolute;
5931 position: absolute;
5932 bottom: 10px;
5932 bottom: 10px;
5933 left: 50%;
5933 left: 50%;
5934 z-index: 15;
5934 z-index: 15;
5935 width: 60%;
5935 width: 60%;
5936 margin-left: -30%;
5936 margin-left: -30%;
5937 padding-left: 0;
5937 padding-left: 0;
5938 list-style: none;
5938 list-style: none;
5939 text-align: center;
5939 text-align: center;
5940 }
5940 }
5941 .carousel-indicators li {
5941 .carousel-indicators li {
5942 display: inline-block;
5942 display: inline-block;
5943 width: 10px;
5943 width: 10px;
5944 height: 10px;
5944 height: 10px;
5945 margin: 1px;
5945 margin: 1px;
5946 text-indent: -999px;
5946 text-indent: -999px;
5947 border: 1px solid #ffffff;
5947 border: 1px solid #ffffff;
5948 border-radius: 10px;
5948 border-radius: 10px;
5949 cursor: pointer;
5949 cursor: pointer;
5950 background-color: #000 \9;
5950 background-color: #000 \9;
5951 background-color: rgba(0, 0, 0, 0);
5951 background-color: rgba(0, 0, 0, 0);
5952 }
5952 }
5953 .carousel-indicators .active {
5953 .carousel-indicators .active {
5954 margin: 0;
5954 margin: 0;
5955 width: 12px;
5955 width: 12px;
5956 height: 12px;
5956 height: 12px;
5957 background-color: #ffffff;
5957 background-color: #ffffff;
5958 }
5958 }
5959 .carousel-caption {
5959 .carousel-caption {
5960 position: absolute;
5960 position: absolute;
5961 left: 15%;
5961 left: 15%;
5962 right: 15%;
5962 right: 15%;
5963 bottom: 20px;
5963 bottom: 20px;
5964 z-index: 10;
5964 z-index: 10;
5965 padding-top: 20px;
5965 padding-top: 20px;
5966 padding-bottom: 20px;
5966 padding-bottom: 20px;
5967 color: #ffffff;
5967 color: #ffffff;
5968 text-align: center;
5968 text-align: center;
5969 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5969 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5970 }
5970 }
5971 .carousel-caption .btn {
5971 .carousel-caption .btn {
5972 text-shadow: none;
5972 text-shadow: none;
5973 }
5973 }
5974 @media screen and (min-width: 768px) {
5974 @media screen and (min-width: 768px) {
5975 .carousel-control .glyphicon-chevron-left,
5975 .carousel-control .glyphicon-chevron-left,
5976 .carousel-control .glyphicon-chevron-right,
5976 .carousel-control .glyphicon-chevron-right,
5977 .carousel-control .icon-prev,
5977 .carousel-control .icon-prev,
5978 .carousel-control .icon-next {
5978 .carousel-control .icon-next {
5979 width: 30px;
5979 width: 30px;
5980 height: 30px;
5980 height: 30px;
5981 margin-top: -15px;
5981 margin-top: -15px;
5982 font-size: 30px;
5982 font-size: 30px;
5983 }
5983 }
5984 .carousel-control .glyphicon-chevron-left,
5984 .carousel-control .glyphicon-chevron-left,
5985 .carousel-control .icon-prev {
5985 .carousel-control .icon-prev {
5986 margin-left: -15px;
5986 margin-left: -15px;
5987 }
5987 }
5988 .carousel-control .glyphicon-chevron-right,
5988 .carousel-control .glyphicon-chevron-right,
5989 .carousel-control .icon-next {
5989 .carousel-control .icon-next {
5990 margin-right: -15px;
5990 margin-right: -15px;
5991 }
5991 }
5992 .carousel-caption {
5992 .carousel-caption {
5993 left: 20%;
5993 left: 20%;
5994 right: 20%;
5994 right: 20%;
5995 padding-bottom: 30px;
5995 padding-bottom: 30px;
5996 }
5996 }
5997 .carousel-indicators {
5997 .carousel-indicators {
5998 bottom: 20px;
5998 bottom: 20px;
5999 }
5999 }
6000 }
6000 }
6001 .clearfix:before,
6001 .clearfix:before,
6002 .clearfix:after,
6002 .clearfix:after,
6003 .dl-horizontal dd:before,
6003 .dl-horizontal dd:before,
6004 .dl-horizontal dd:after,
6004 .dl-horizontal dd:after,
6005 .container:before,
6005 .container:before,
6006 .container:after,
6006 .container:after,
6007 .container-fluid:before,
6007 .container-fluid:before,
6008 .container-fluid:after,
6008 .container-fluid:after,
6009 .row:before,
6009 .row:before,
6010 .row:after,
6010 .row:after,
6011 .form-horizontal .form-group:before,
6011 .form-horizontal .form-group:before,
6012 .form-horizontal .form-group:after,
6012 .form-horizontal .form-group:after,
6013 .btn-toolbar:before,
6013 .btn-toolbar:before,
6014 .btn-toolbar:after,
6014 .btn-toolbar:after,
6015 .btn-group-vertical > .btn-group:before,
6015 .btn-group-vertical > .btn-group:before,
6016 .btn-group-vertical > .btn-group:after,
6016 .btn-group-vertical > .btn-group:after,
6017 .nav:before,
6017 .nav:before,
6018 .nav:after,
6018 .nav:after,
6019 .navbar:before,
6019 .navbar:before,
6020 .navbar:after,
6020 .navbar:after,
6021 .navbar-header:before,
6021 .navbar-header:before,
6022 .navbar-header:after,
6022 .navbar-header:after,
6023 .navbar-collapse:before,
6023 .navbar-collapse:before,
6024 .navbar-collapse:after,
6024 .navbar-collapse:after,
6025 .pager:before,
6025 .pager:before,
6026 .pager:after,
6026 .pager:after,
6027 .panel-body:before,
6027 .panel-body:before,
6028 .panel-body:after,
6028 .panel-body:after,
6029 .modal-footer:before,
6029 .modal-footer:before,
6030 .modal-footer:after,
6030 .modal-footer:after,
6031 .item_buttons:before,
6031 .item_buttons:before,
6032 .item_buttons:after {
6032 .item_buttons:after {
6033 content: " ";
6033 content: " ";
6034 display: table;
6034 display: table;
6035 }
6035 }
6036 .clearfix:after,
6036 .clearfix:after,
6037 .dl-horizontal dd:after,
6037 .dl-horizontal dd:after,
6038 .container:after,
6038 .container:after,
6039 .container-fluid:after,
6039 .container-fluid:after,
6040 .row:after,
6040 .row:after,
6041 .form-horizontal .form-group:after,
6041 .form-horizontal .form-group:after,
6042 .btn-toolbar:after,
6042 .btn-toolbar:after,
6043 .btn-group-vertical > .btn-group:after,
6043 .btn-group-vertical > .btn-group:after,
6044 .nav:after,
6044 .nav:after,
6045 .navbar:after,
6045 .navbar:after,
6046 .navbar-header:after,
6046 .navbar-header:after,
6047 .navbar-collapse:after,
6047 .navbar-collapse:after,
6048 .pager:after,
6048 .pager:after,
6049 .panel-body:after,
6049 .panel-body:after,
6050 .modal-footer:after,
6050 .modal-footer:after,
6051 .item_buttons:after {
6051 .item_buttons:after {
6052 clear: both;
6052 clear: both;
6053 }
6053 }
6054 .center-block {
6054 .center-block {
6055 display: block;
6055 display: block;
6056 margin-left: auto;
6056 margin-left: auto;
6057 margin-right: auto;
6057 margin-right: auto;
6058 }
6058 }
6059 .pull-right {
6059 .pull-right {
6060 float: right !important;
6060 float: right !important;
6061 }
6061 }
6062 .pull-left {
6062 .pull-left {
6063 float: left !important;
6063 float: left !important;
6064 }
6064 }
6065 .hide {
6065 .hide {
6066 display: none !important;
6066 display: none !important;
6067 }
6067 }
6068 .show {
6068 .show {
6069 display: block !important;
6069 display: block !important;
6070 }
6070 }
6071 .invisible {
6071 .invisible {
6072 visibility: hidden;
6072 visibility: hidden;
6073 }
6073 }
6074 .text-hide {
6074 .text-hide {
6075 font: 0/0 a;
6075 font: 0/0 a;
6076 color: transparent;
6076 color: transparent;
6077 text-shadow: none;
6077 text-shadow: none;
6078 background-color: transparent;
6078 background-color: transparent;
6079 border: 0;
6079 border: 0;
6080 }
6080 }
6081 .hidden {
6081 .hidden {
6082 display: none !important;
6082 display: none !important;
6083 visibility: hidden !important;
6083 visibility: hidden !important;
6084 }
6084 }
6085 .affix {
6085 .affix {
6086 position: fixed;
6086 position: fixed;
6087 }
6087 }
6088 @-ms-viewport {
6088 @-ms-viewport {
6089 width: device-width;
6089 width: device-width;
6090 }
6090 }
6091 .visible-xs,
6091 .visible-xs,
6092 .visible-sm,
6092 .visible-sm,
6093 .visible-md,
6093 .visible-md,
6094 .visible-lg {
6094 .visible-lg {
6095 display: none !important;
6095 display: none !important;
6096 }
6096 }
6097 .visible-xs-block,
6097 .visible-xs-block,
6098 .visible-xs-inline,
6098 .visible-xs-inline,
6099 .visible-xs-inline-block,
6099 .visible-xs-inline-block,
6100 .visible-sm-block,
6100 .visible-sm-block,
6101 .visible-sm-inline,
6101 .visible-sm-inline,
6102 .visible-sm-inline-block,
6102 .visible-sm-inline-block,
6103 .visible-md-block,
6103 .visible-md-block,
6104 .visible-md-inline,
6104 .visible-md-inline,
6105 .visible-md-inline-block,
6105 .visible-md-inline-block,
6106 .visible-lg-block,
6106 .visible-lg-block,
6107 .visible-lg-inline,
6107 .visible-lg-inline,
6108 .visible-lg-inline-block {
6108 .visible-lg-inline-block {
6109 display: none !important;
6109 display: none !important;
6110 }
6110 }
6111 @media (max-width: 767px) {
6111 @media (max-width: 767px) {
6112 .visible-xs {
6112 .visible-xs {
6113 display: block !important;
6113 display: block !important;
6114 }
6114 }
6115 table.visible-xs {
6115 table.visible-xs {
6116 display: table;
6116 display: table;
6117 }
6117 }
6118 tr.visible-xs {
6118 tr.visible-xs {
6119 display: table-row !important;
6119 display: table-row !important;
6120 }
6120 }
6121 th.visible-xs,
6121 th.visible-xs,
6122 td.visible-xs {
6122 td.visible-xs {
6123 display: table-cell !important;
6123 display: table-cell !important;
6124 }
6124 }
6125 }
6125 }
6126 @media (max-width: 767px) {
6126 @media (max-width: 767px) {
6127 .visible-xs-block {
6127 .visible-xs-block {
6128 display: block !important;
6128 display: block !important;
6129 }
6129 }
6130 }
6130 }
6131 @media (max-width: 767px) {
6131 @media (max-width: 767px) {
6132 .visible-xs-inline {
6132 .visible-xs-inline {
6133 display: inline !important;
6133 display: inline !important;
6134 }
6134 }
6135 }
6135 }
6136 @media (max-width: 767px) {
6136 @media (max-width: 767px) {
6137 .visible-xs-inline-block {
6137 .visible-xs-inline-block {
6138 display: inline-block !important;
6138 display: inline-block !important;
6139 }
6139 }
6140 }
6140 }
6141 @media (min-width: 768px) and (max-width: 991px) {
6141 @media (min-width: 768px) and (max-width: 991px) {
6142 .visible-sm {
6142 .visible-sm {
6143 display: block !important;
6143 display: block !important;
6144 }
6144 }
6145 table.visible-sm {
6145 table.visible-sm {
6146 display: table;
6146 display: table;
6147 }
6147 }
6148 tr.visible-sm {
6148 tr.visible-sm {
6149 display: table-row !important;
6149 display: table-row !important;
6150 }
6150 }
6151 th.visible-sm,
6151 th.visible-sm,
6152 td.visible-sm {
6152 td.visible-sm {
6153 display: table-cell !important;
6153 display: table-cell !important;
6154 }
6154 }
6155 }
6155 }
6156 @media (min-width: 768px) and (max-width: 991px) {
6156 @media (min-width: 768px) and (max-width: 991px) {
6157 .visible-sm-block {
6157 .visible-sm-block {
6158 display: block !important;
6158 display: block !important;
6159 }
6159 }
6160 }
6160 }
6161 @media (min-width: 768px) and (max-width: 991px) {
6161 @media (min-width: 768px) and (max-width: 991px) {
6162 .visible-sm-inline {
6162 .visible-sm-inline {
6163 display: inline !important;
6163 display: inline !important;
6164 }
6164 }
6165 }
6165 }
6166 @media (min-width: 768px) and (max-width: 991px) {
6166 @media (min-width: 768px) and (max-width: 991px) {
6167 .visible-sm-inline-block {
6167 .visible-sm-inline-block {
6168 display: inline-block !important;
6168 display: inline-block !important;
6169 }
6169 }
6170 }
6170 }
6171 @media (min-width: 992px) and (max-width: 1199px) {
6171 @media (min-width: 992px) and (max-width: 1199px) {
6172 .visible-md {
6172 .visible-md {
6173 display: block !important;
6173 display: block !important;
6174 }
6174 }
6175 table.visible-md {
6175 table.visible-md {
6176 display: table;
6176 display: table;
6177 }
6177 }
6178 tr.visible-md {
6178 tr.visible-md {
6179 display: table-row !important;
6179 display: table-row !important;
6180 }
6180 }
6181 th.visible-md,
6181 th.visible-md,
6182 td.visible-md {
6182 td.visible-md {
6183 display: table-cell !important;
6183 display: table-cell !important;
6184 }
6184 }
6185 }
6185 }
6186 @media (min-width: 992px) and (max-width: 1199px) {
6186 @media (min-width: 992px) and (max-width: 1199px) {
6187 .visible-md-block {
6187 .visible-md-block {
6188 display: block !important;
6188 display: block !important;
6189 }
6189 }
6190 }
6190 }
6191 @media (min-width: 992px) and (max-width: 1199px) {
6191 @media (min-width: 992px) and (max-width: 1199px) {
6192 .visible-md-inline {
6192 .visible-md-inline {
6193 display: inline !important;
6193 display: inline !important;
6194 }
6194 }
6195 }
6195 }
6196 @media (min-width: 992px) and (max-width: 1199px) {
6196 @media (min-width: 992px) and (max-width: 1199px) {
6197 .visible-md-inline-block {
6197 .visible-md-inline-block {
6198 display: inline-block !important;
6198 display: inline-block !important;
6199 }
6199 }
6200 }
6200 }
6201 @media (min-width: 1200px) {
6201 @media (min-width: 1200px) {
6202 .visible-lg {
6202 .visible-lg {
6203 display: block !important;
6203 display: block !important;
6204 }
6204 }
6205 table.visible-lg {
6205 table.visible-lg {
6206 display: table;
6206 display: table;
6207 }
6207 }
6208 tr.visible-lg {
6208 tr.visible-lg {
6209 display: table-row !important;
6209 display: table-row !important;
6210 }
6210 }
6211 th.visible-lg,
6211 th.visible-lg,
6212 td.visible-lg {
6212 td.visible-lg {
6213 display: table-cell !important;
6213 display: table-cell !important;
6214 }
6214 }
6215 }
6215 }
6216 @media (min-width: 1200px) {
6216 @media (min-width: 1200px) {
6217 .visible-lg-block {
6217 .visible-lg-block {
6218 display: block !important;
6218 display: block !important;
6219 }
6219 }
6220 }
6220 }
6221 @media (min-width: 1200px) {
6221 @media (min-width: 1200px) {
6222 .visible-lg-inline {
6222 .visible-lg-inline {
6223 display: inline !important;
6223 display: inline !important;
6224 }
6224 }
6225 }
6225 }
6226 @media (min-width: 1200px) {
6226 @media (min-width: 1200px) {
6227 .visible-lg-inline-block {
6227 .visible-lg-inline-block {
6228 display: inline-block !important;
6228 display: inline-block !important;
6229 }
6229 }
6230 }
6230 }
6231 @media (max-width: 767px) {
6231 @media (max-width: 767px) {
6232 .hidden-xs {
6232 .hidden-xs {
6233 display: none !important;
6233 display: none !important;
6234 }
6234 }
6235 }
6235 }
6236 @media (min-width: 768px) and (max-width: 991px) {
6236 @media (min-width: 768px) and (max-width: 991px) {
6237 .hidden-sm {
6237 .hidden-sm {
6238 display: none !important;
6238 display: none !important;
6239 }
6239 }
6240 }
6240 }
6241 @media (min-width: 992px) and (max-width: 1199px) {
6241 @media (min-width: 992px) and (max-width: 1199px) {
6242 .hidden-md {
6242 .hidden-md {
6243 display: none !important;
6243 display: none !important;
6244 }
6244 }
6245 }
6245 }
6246 @media (min-width: 1200px) {
6246 @media (min-width: 1200px) {
6247 .hidden-lg {
6247 .hidden-lg {
6248 display: none !important;
6248 display: none !important;
6249 }
6249 }
6250 }
6250 }
6251 .visible-print {
6251 .visible-print {
6252 display: none !important;
6252 display: none !important;
6253 }
6253 }
6254 @media print {
6254 @media print {
6255 .visible-print {
6255 .visible-print {
6256 display: block !important;
6256 display: block !important;
6257 }
6257 }
6258 table.visible-print {
6258 table.visible-print {
6259 display: table;
6259 display: table;
6260 }
6260 }
6261 tr.visible-print {
6261 tr.visible-print {
6262 display: table-row !important;
6262 display: table-row !important;
6263 }
6263 }
6264 th.visible-print,
6264 th.visible-print,
6265 td.visible-print {
6265 td.visible-print {
6266 display: table-cell !important;
6266 display: table-cell !important;
6267 }
6267 }
6268 }
6268 }
6269 .visible-print-block {
6269 .visible-print-block {
6270 display: none !important;
6270 display: none !important;
6271 }
6271 }
6272 @media print {
6272 @media print {
6273 .visible-print-block {
6273 .visible-print-block {
6274 display: block !important;
6274 display: block !important;
6275 }
6275 }
6276 }
6276 }
6277 .visible-print-inline {
6277 .visible-print-inline {
6278 display: none !important;
6278 display: none !important;
6279 }
6279 }
6280 @media print {
6280 @media print {
6281 .visible-print-inline {
6281 .visible-print-inline {
6282 display: inline !important;
6282 display: inline !important;
6283 }
6283 }
6284 }
6284 }
6285 .visible-print-inline-block {
6285 .visible-print-inline-block {
6286 display: none !important;
6286 display: none !important;
6287 }
6287 }
6288 @media print {
6288 @media print {
6289 .visible-print-inline-block {
6289 .visible-print-inline-block {
6290 display: inline-block !important;
6290 display: inline-block !important;
6291 }
6291 }
6292 }
6292 }
6293 @media print {
6293 @media print {
6294 .hidden-print {
6294 .hidden-print {
6295 display: none !important;
6295 display: none !important;
6296 }
6296 }
6297 }
6297 }
6298 /*!
6298 /*!
6299 *
6299 *
6300 * Font Awesome
6300 * Font Awesome
6301 *
6301 *
6302 */
6302 */
6303 /*!
6303 /*!
6304 * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
6304 * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
6305 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
6305 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
6306 */
6306 */
6307 /* FONT PATH
6307 /* FONT PATH
6308 * -------------------------- */
6308 * -------------------------- */
6309 @font-face {
6309 @font-face {
6310 font-family: 'FontAwesome';
6310 font-family: 'FontAwesome';
6311 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0');
6311 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.3.0');
6312 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');
6312 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');
6313 font-weight: normal;
6313 font-weight: normal;
6314 font-style: normal;
6314 font-style: normal;
6315 }
6315 }
6316 .fa {
6316 .fa {
6317 display: inline-block;
6317 display: inline-block;
6318 font: normal normal normal 14px/1 FontAwesome;
6318 font: normal normal normal 14px/1 FontAwesome;
6319 font-size: inherit;
6319 font-size: inherit;
6320 text-rendering: auto;
6320 text-rendering: auto;
6321 -webkit-font-smoothing: antialiased;
6321 -webkit-font-smoothing: antialiased;
6322 -moz-osx-font-smoothing: grayscale;
6322 -moz-osx-font-smoothing: grayscale;
6323 transform: translate(0, 0);
6323 transform: translate(0, 0);
6324 }
6324 }
6325 /* makes the font 33% larger relative to the icon container */
6325 /* makes the font 33% larger relative to the icon container */
6326 .fa-lg {
6326 .fa-lg {
6327 font-size: 1.33333333em;
6327 font-size: 1.33333333em;
6328 line-height: 0.75em;
6328 line-height: 0.75em;
6329 vertical-align: -15%;
6329 vertical-align: -15%;
6330 }
6330 }
6331 .fa-2x {
6331 .fa-2x {
6332 font-size: 2em;
6332 font-size: 2em;
6333 }
6333 }
6334 .fa-3x {
6334 .fa-3x {
6335 font-size: 3em;
6335 font-size: 3em;
6336 }
6336 }
6337 .fa-4x {
6337 .fa-4x {
6338 font-size: 4em;
6338 font-size: 4em;
6339 }
6339 }
6340 .fa-5x {
6340 .fa-5x {
6341 font-size: 5em;
6341 font-size: 5em;
6342 }
6342 }
6343 .fa-fw {
6343 .fa-fw {
6344 width: 1.28571429em;
6344 width: 1.28571429em;
6345 text-align: center;
6345 text-align: center;
6346 }
6346 }
6347 .fa-ul {
6347 .fa-ul {
6348 padding-left: 0;
6348 padding-left: 0;
6349 margin-left: 2.14285714em;
6349 margin-left: 2.14285714em;
6350 list-style-type: none;
6350 list-style-type: none;
6351 }
6351 }
6352 .fa-ul > li {
6352 .fa-ul > li {
6353 position: relative;
6353 position: relative;
6354 }
6354 }
6355 .fa-li {
6355 .fa-li {
6356 position: absolute;
6356 position: absolute;
6357 left: -2.14285714em;
6357 left: -2.14285714em;
6358 width: 2.14285714em;
6358 width: 2.14285714em;
6359 top: 0.14285714em;
6359 top: 0.14285714em;
6360 text-align: center;
6360 text-align: center;
6361 }
6361 }
6362 .fa-li.fa-lg {
6362 .fa-li.fa-lg {
6363 left: -1.85714286em;
6363 left: -1.85714286em;
6364 }
6364 }
6365 .fa-border {
6365 .fa-border {
6366 padding: .2em .25em .15em;
6366 padding: .2em .25em .15em;
6367 border: solid 0.08em #eeeeee;
6367 border: solid 0.08em #eeeeee;
6368 border-radius: .1em;
6368 border-radius: .1em;
6369 }
6369 }
6370 .pull-right {
6370 .pull-right {
6371 float: right;
6371 float: right;
6372 }
6372 }
6373 .pull-left {
6373 .pull-left {
6374 float: left;
6374 float: left;
6375 }
6375 }
6376 .fa.pull-left {
6376 .fa.pull-left {
6377 margin-right: .3em;
6377 margin-right: .3em;
6378 }
6378 }
6379 .fa.pull-right {
6379 .fa.pull-right {
6380 margin-left: .3em;
6380 margin-left: .3em;
6381 }
6381 }
6382 .fa-spin {
6382 .fa-spin {
6383 -webkit-animation: fa-spin 2s infinite linear;
6383 -webkit-animation: fa-spin 2s infinite linear;
6384 animation: fa-spin 2s infinite linear;
6384 animation: fa-spin 2s infinite linear;
6385 }
6385 }
6386 .fa-pulse {
6386 .fa-pulse {
6387 -webkit-animation: fa-spin 1s infinite steps(8);
6387 -webkit-animation: fa-spin 1s infinite steps(8);
6388 animation: fa-spin 1s infinite steps(8);
6388 animation: fa-spin 1s infinite steps(8);
6389 }
6389 }
6390 @-webkit-keyframes fa-spin {
6390 @-webkit-keyframes fa-spin {
6391 0% {
6391 0% {
6392 -webkit-transform: rotate(0deg);
6392 -webkit-transform: rotate(0deg);
6393 transform: rotate(0deg);
6393 transform: rotate(0deg);
6394 }
6394 }
6395 100% {
6395 100% {
6396 -webkit-transform: rotate(359deg);
6396 -webkit-transform: rotate(359deg);
6397 transform: rotate(359deg);
6397 transform: rotate(359deg);
6398 }
6398 }
6399 }
6399 }
6400 @keyframes fa-spin {
6400 @keyframes fa-spin {
6401 0% {
6401 0% {
6402 -webkit-transform: rotate(0deg);
6402 -webkit-transform: rotate(0deg);
6403 transform: rotate(0deg);
6403 transform: rotate(0deg);
6404 }
6404 }
6405 100% {
6405 100% {
6406 -webkit-transform: rotate(359deg);
6406 -webkit-transform: rotate(359deg);
6407 transform: rotate(359deg);
6407 transform: rotate(359deg);
6408 }
6408 }
6409 }
6409 }
6410 .fa-rotate-90 {
6410 .fa-rotate-90 {
6411 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
6411 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
6412 -webkit-transform: rotate(90deg);
6412 -webkit-transform: rotate(90deg);
6413 -ms-transform: rotate(90deg);
6413 -ms-transform: rotate(90deg);
6414 transform: rotate(90deg);
6414 transform: rotate(90deg);
6415 }
6415 }
6416 .fa-rotate-180 {
6416 .fa-rotate-180 {
6417 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
6417 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
6418 -webkit-transform: rotate(180deg);
6418 -webkit-transform: rotate(180deg);
6419 -ms-transform: rotate(180deg);
6419 -ms-transform: rotate(180deg);
6420 transform: rotate(180deg);
6420 transform: rotate(180deg);
6421 }
6421 }
6422 .fa-rotate-270 {
6422 .fa-rotate-270 {
6423 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
6423 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
6424 -webkit-transform: rotate(270deg);
6424 -webkit-transform: rotate(270deg);
6425 -ms-transform: rotate(270deg);
6425 -ms-transform: rotate(270deg);
6426 transform: rotate(270deg);
6426 transform: rotate(270deg);
6427 }
6427 }
6428 .fa-flip-horizontal {
6428 .fa-flip-horizontal {
6429 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
6429 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
6430 -webkit-transform: scale(-1, 1);
6430 -webkit-transform: scale(-1, 1);
6431 -ms-transform: scale(-1, 1);
6431 -ms-transform: scale(-1, 1);
6432 transform: scale(-1, 1);
6432 transform: scale(-1, 1);
6433 }
6433 }
6434 .fa-flip-vertical {
6434 .fa-flip-vertical {
6435 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
6435 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
6436 -webkit-transform: scale(1, -1);
6436 -webkit-transform: scale(1, -1);
6437 -ms-transform: scale(1, -1);
6437 -ms-transform: scale(1, -1);
6438 transform: scale(1, -1);
6438 transform: scale(1, -1);
6439 }
6439 }
6440 :root .fa-rotate-90,
6440 :root .fa-rotate-90,
6441 :root .fa-rotate-180,
6441 :root .fa-rotate-180,
6442 :root .fa-rotate-270,
6442 :root .fa-rotate-270,
6443 :root .fa-flip-horizontal,
6443 :root .fa-flip-horizontal,
6444 :root .fa-flip-vertical {
6444 :root .fa-flip-vertical {
6445 filter: none;
6445 filter: none;
6446 }
6446 }
6447 .fa-stack {
6447 .fa-stack {
6448 position: relative;
6448 position: relative;
6449 display: inline-block;
6449 display: inline-block;
6450 width: 2em;
6450 width: 2em;
6451 height: 2em;
6451 height: 2em;
6452 line-height: 2em;
6452 line-height: 2em;
6453 vertical-align: middle;
6453 vertical-align: middle;
6454 }
6454 }
6455 .fa-stack-1x,
6455 .fa-stack-1x,
6456 .fa-stack-2x {
6456 .fa-stack-2x {
6457 position: absolute;
6457 position: absolute;
6458 left: 0;
6458 left: 0;
6459 width: 100%;
6459 width: 100%;
6460 text-align: center;
6460 text-align: center;
6461 }
6461 }
6462 .fa-stack-1x {
6462 .fa-stack-1x {
6463 line-height: inherit;
6463 line-height: inherit;
6464 }
6464 }
6465 .fa-stack-2x {
6465 .fa-stack-2x {
6466 font-size: 2em;
6466 font-size: 2em;
6467 }
6467 }
6468 .fa-inverse {
6468 .fa-inverse {
6469 color: #ffffff;
6469 color: #ffffff;
6470 }
6470 }
6471 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
6471 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
6472 readers do not read off random characters that represent icons */
6472 readers do not read off random characters that represent icons */
6473 .fa-glass:before {
6473 .fa-glass:before {
6474 content: "\f000";
6474 content: "\f000";
6475 }
6475 }
6476 .fa-music:before {
6476 .fa-music:before {
6477 content: "\f001";
6477 content: "\f001";
6478 }
6478 }
6479 .fa-search:before {
6479 .fa-search:before {
6480 content: "\f002";
6480 content: "\f002";
6481 }
6481 }
6482 .fa-envelope-o:before {
6482 .fa-envelope-o:before {
6483 content: "\f003";
6483 content: "\f003";
6484 }
6484 }
6485 .fa-heart:before {
6485 .fa-heart:before {
6486 content: "\f004";
6486 content: "\f004";
6487 }
6487 }
6488 .fa-star:before {
6488 .fa-star:before {
6489 content: "\f005";
6489 content: "\f005";
6490 }
6490 }
6491 .fa-star-o:before {
6491 .fa-star-o:before {
6492 content: "\f006";
6492 content: "\f006";
6493 }
6493 }
6494 .fa-user:before {
6494 .fa-user:before {
6495 content: "\f007";
6495 content: "\f007";
6496 }
6496 }
6497 .fa-film:before {
6497 .fa-film:before {
6498 content: "\f008";
6498 content: "\f008";
6499 }
6499 }
6500 .fa-th-large:before {
6500 .fa-th-large:before {
6501 content: "\f009";
6501 content: "\f009";
6502 }
6502 }
6503 .fa-th:before {
6503 .fa-th:before {
6504 content: "\f00a";
6504 content: "\f00a";
6505 }
6505 }
6506 .fa-th-list:before {
6506 .fa-th-list:before {
6507 content: "\f00b";
6507 content: "\f00b";
6508 }
6508 }
6509 .fa-check:before {
6509 .fa-check:before {
6510 content: "\f00c";
6510 content: "\f00c";
6511 }
6511 }
6512 .fa-remove:before,
6512 .fa-remove:before,
6513 .fa-close:before,
6513 .fa-close:before,
6514 .fa-times:before {
6514 .fa-times:before {
6515 content: "\f00d";
6515 content: "\f00d";
6516 }
6516 }
6517 .fa-search-plus:before {
6517 .fa-search-plus:before {
6518 content: "\f00e";
6518 content: "\f00e";
6519 }
6519 }
6520 .fa-search-minus:before {
6520 .fa-search-minus:before {
6521 content: "\f010";
6521 content: "\f010";
6522 }
6522 }
6523 .fa-power-off:before {
6523 .fa-power-off:before {
6524 content: "\f011";
6524 content: "\f011";
6525 }
6525 }
6526 .fa-signal:before {
6526 .fa-signal:before {
6527 content: "\f012";
6527 content: "\f012";
6528 }
6528 }
6529 .fa-gear:before,
6529 .fa-gear:before,
6530 .fa-cog:before {
6530 .fa-cog:before {
6531 content: "\f013";
6531 content: "\f013";
6532 }
6532 }
6533 .fa-trash-o:before {
6533 .fa-trash-o:before {
6534 content: "\f014";
6534 content: "\f014";
6535 }
6535 }
6536 .fa-home:before {
6536 .fa-home:before {
6537 content: "\f015";
6537 content: "\f015";
6538 }
6538 }
6539 .fa-file-o:before {
6539 .fa-file-o:before {
6540 content: "\f016";
6540 content: "\f016";
6541 }
6541 }
6542 .fa-clock-o:before {
6542 .fa-clock-o:before {
6543 content: "\f017";
6543 content: "\f017";
6544 }
6544 }
6545 .fa-road:before {
6545 .fa-road:before {
6546 content: "\f018";
6546 content: "\f018";
6547 }
6547 }
6548 .fa-download:before {
6548 .fa-download:before {
6549 content: "\f019";
6549 content: "\f019";
6550 }
6550 }
6551 .fa-arrow-circle-o-down:before {
6551 .fa-arrow-circle-o-down:before {
6552 content: "\f01a";
6552 content: "\f01a";
6553 }
6553 }
6554 .fa-arrow-circle-o-up:before {
6554 .fa-arrow-circle-o-up:before {
6555 content: "\f01b";
6555 content: "\f01b";
6556 }
6556 }
6557 .fa-inbox:before {
6557 .fa-inbox:before {
6558 content: "\f01c";
6558 content: "\f01c";
6559 }
6559 }
6560 .fa-play-circle-o:before {
6560 .fa-play-circle-o:before {
6561 content: "\f01d";
6561 content: "\f01d";
6562 }
6562 }
6563 .fa-rotate-right:before,
6563 .fa-rotate-right:before,
6564 .fa-repeat:before {
6564 .fa-repeat:before {
6565 content: "\f01e";
6565 content: "\f01e";
6566 }
6566 }
6567 .fa-refresh:before {
6567 .fa-refresh:before {
6568 content: "\f021";
6568 content: "\f021";
6569 }
6569 }
6570 .fa-list-alt:before {
6570 .fa-list-alt:before {
6571 content: "\f022";
6571 content: "\f022";
6572 }
6572 }
6573 .fa-lock:before {
6573 .fa-lock:before {
6574 content: "\f023";
6574 content: "\f023";
6575 }
6575 }
6576 .fa-flag:before {
6576 .fa-flag:before {
6577 content: "\f024";
6577 content: "\f024";
6578 }
6578 }
6579 .fa-headphones:before {
6579 .fa-headphones:before {
6580 content: "\f025";
6580 content: "\f025";
6581 }
6581 }
6582 .fa-volume-off:before {
6582 .fa-volume-off:before {
6583 content: "\f026";
6583 content: "\f026";
6584 }
6584 }
6585 .fa-volume-down:before {
6585 .fa-volume-down:before {
6586 content: "\f027";
6586 content: "\f027";
6587 }
6587 }
6588 .fa-volume-up:before {
6588 .fa-volume-up:before {
6589 content: "\f028";
6589 content: "\f028";
6590 }
6590 }
6591 .fa-qrcode:before {
6591 .fa-qrcode:before {
6592 content: "\f029";
6592 content: "\f029";
6593 }
6593 }
6594 .fa-barcode:before {
6594 .fa-barcode:before {
6595 content: "\f02a";
6595 content: "\f02a";
6596 }
6596 }
6597 .fa-tag:before {
6597 .fa-tag:before {
6598 content: "\f02b";
6598 content: "\f02b";
6599 }
6599 }
6600 .fa-tags:before {
6600 .fa-tags:before {
6601 content: "\f02c";
6601 content: "\f02c";
6602 }
6602 }
6603 .fa-book:before {
6603 .fa-book:before {
6604 content: "\f02d";
6604 content: "\f02d";
6605 }
6605 }
6606 .fa-bookmark:before {
6606 .fa-bookmark:before {
6607 content: "\f02e";
6607 content: "\f02e";
6608 }
6608 }
6609 .fa-print:before {
6609 .fa-print:before {
6610 content: "\f02f";
6610 content: "\f02f";
6611 }
6611 }
6612 .fa-camera:before {
6612 .fa-camera:before {
6613 content: "\f030";
6613 content: "\f030";
6614 }
6614 }
6615 .fa-font:before {
6615 .fa-font:before {
6616 content: "\f031";
6616 content: "\f031";
6617 }
6617 }
6618 .fa-bold:before {
6618 .fa-bold:before {
6619 content: "\f032";
6619 content: "\f032";
6620 }
6620 }
6621 .fa-italic:before {
6621 .fa-italic:before {
6622 content: "\f033";
6622 content: "\f033";
6623 }
6623 }
6624 .fa-text-height:before {
6624 .fa-text-height:before {
6625 content: "\f034";
6625 content: "\f034";
6626 }
6626 }
6627 .fa-text-width:before {
6627 .fa-text-width:before {
6628 content: "\f035";
6628 content: "\f035";
6629 }
6629 }
6630 .fa-align-left:before {
6630 .fa-align-left:before {
6631 content: "\f036";
6631 content: "\f036";
6632 }
6632 }
6633 .fa-align-center:before {
6633 .fa-align-center:before {
6634 content: "\f037";
6634 content: "\f037";
6635 }
6635 }
6636 .fa-align-right:before {
6636 .fa-align-right:before {
6637 content: "\f038";
6637 content: "\f038";
6638 }
6638 }
6639 .fa-align-justify:before {
6639 .fa-align-justify:before {
6640 content: "\f039";
6640 content: "\f039";
6641 }
6641 }
6642 .fa-list:before {
6642 .fa-list:before {
6643 content: "\f03a";
6643 content: "\f03a";
6644 }
6644 }
6645 .fa-dedent:before,
6645 .fa-dedent:before,
6646 .fa-outdent:before {
6646 .fa-outdent:before {
6647 content: "\f03b";
6647 content: "\f03b";
6648 }
6648 }
6649 .fa-indent:before {
6649 .fa-indent:before {
6650 content: "\f03c";
6650 content: "\f03c";
6651 }
6651 }
6652 .fa-video-camera:before {
6652 .fa-video-camera:before {
6653 content: "\f03d";
6653 content: "\f03d";
6654 }
6654 }
6655 .fa-photo:before,
6655 .fa-photo:before,
6656 .fa-image:before,
6656 .fa-image:before,
6657 .fa-picture-o:before {
6657 .fa-picture-o:before {
6658 content: "\f03e";
6658 content: "\f03e";
6659 }
6659 }
6660 .fa-pencil:before {
6660 .fa-pencil:before {
6661 content: "\f040";
6661 content: "\f040";
6662 }
6662 }
6663 .fa-map-marker:before {
6663 .fa-map-marker:before {
6664 content: "\f041";
6664 content: "\f041";
6665 }
6665 }
6666 .fa-adjust:before {
6666 .fa-adjust:before {
6667 content: "\f042";
6667 content: "\f042";
6668 }
6668 }
6669 .fa-tint:before {
6669 .fa-tint:before {
6670 content: "\f043";
6670 content: "\f043";
6671 }
6671 }
6672 .fa-edit:before,
6672 .fa-edit:before,
6673 .fa-pencil-square-o:before {
6673 .fa-pencil-square-o:before {
6674 content: "\f044";
6674 content: "\f044";
6675 }
6675 }
6676 .fa-share-square-o:before {
6676 .fa-share-square-o:before {
6677 content: "\f045";
6677 content: "\f045";
6678 }
6678 }
6679 .fa-check-square-o:before {
6679 .fa-check-square-o:before {
6680 content: "\f046";
6680 content: "\f046";
6681 }
6681 }
6682 .fa-arrows:before {
6682 .fa-arrows:before {
6683 content: "\f047";
6683 content: "\f047";
6684 }
6684 }
6685 .fa-step-backward:before {
6685 .fa-step-backward:before {
6686 content: "\f048";
6686 content: "\f048";
6687 }
6687 }
6688 .fa-fast-backward:before {
6688 .fa-fast-backward:before {
6689 content: "\f049";
6689 content: "\f049";
6690 }
6690 }
6691 .fa-backward:before {
6691 .fa-backward:before {
6692 content: "\f04a";
6692 content: "\f04a";
6693 }
6693 }
6694 .fa-play:before {
6694 .fa-play:before {
6695 content: "\f04b";
6695 content: "\f04b";
6696 }
6696 }
6697 .fa-pause:before {
6697 .fa-pause:before {
6698 content: "\f04c";
6698 content: "\f04c";
6699 }
6699 }
6700 .fa-stop:before {
6700 .fa-stop:before {
6701 content: "\f04d";
6701 content: "\f04d";
6702 }
6702 }
6703 .fa-forward:before {
6703 .fa-forward:before {
6704 content: "\f04e";
6704 content: "\f04e";
6705 }
6705 }
6706 .fa-fast-forward:before {
6706 .fa-fast-forward:before {
6707 content: "\f050";
6707 content: "\f050";
6708 }
6708 }
6709 .fa-step-forward:before {
6709 .fa-step-forward:before {
6710 content: "\f051";
6710 content: "\f051";
6711 }
6711 }
6712 .fa-eject:before {
6712 .fa-eject:before {
6713 content: "\f052";
6713 content: "\f052";
6714 }
6714 }
6715 .fa-chevron-left:before {
6715 .fa-chevron-left:before {
6716 content: "\f053";
6716 content: "\f053";
6717 }
6717 }
6718 .fa-chevron-right:before {
6718 .fa-chevron-right:before {
6719 content: "\f054";
6719 content: "\f054";
6720 }
6720 }
6721 .fa-plus-circle:before {
6721 .fa-plus-circle:before {
6722 content: "\f055";
6722 content: "\f055";
6723 }
6723 }
6724 .fa-minus-circle:before {
6724 .fa-minus-circle:before {
6725 content: "\f056";
6725 content: "\f056";
6726 }
6726 }
6727 .fa-times-circle:before {
6727 .fa-times-circle:before {
6728 content: "\f057";
6728 content: "\f057";
6729 }
6729 }
6730 .fa-check-circle:before {
6730 .fa-check-circle:before {
6731 content: "\f058";
6731 content: "\f058";
6732 }
6732 }
6733 .fa-question-circle:before {
6733 .fa-question-circle:before {
6734 content: "\f059";
6734 content: "\f059";
6735 }
6735 }
6736 .fa-info-circle:before {
6736 .fa-info-circle:before {
6737 content: "\f05a";
6737 content: "\f05a";
6738 }
6738 }
6739 .fa-crosshairs:before {
6739 .fa-crosshairs:before {
6740 content: "\f05b";
6740 content: "\f05b";
6741 }
6741 }
6742 .fa-times-circle-o:before {
6742 .fa-times-circle-o:before {
6743 content: "\f05c";
6743 content: "\f05c";
6744 }
6744 }
6745 .fa-check-circle-o:before {
6745 .fa-check-circle-o:before {
6746 content: "\f05d";
6746 content: "\f05d";
6747 }
6747 }
6748 .fa-ban:before {
6748 .fa-ban:before {
6749 content: "\f05e";
6749 content: "\f05e";
6750 }
6750 }
6751 .fa-arrow-left:before {
6751 .fa-arrow-left:before {
6752 content: "\f060";
6752 content: "\f060";
6753 }
6753 }
6754 .fa-arrow-right:before {
6754 .fa-arrow-right:before {
6755 content: "\f061";
6755 content: "\f061";
6756 }
6756 }
6757 .fa-arrow-up:before {
6757 .fa-arrow-up:before {
6758 content: "\f062";
6758 content: "\f062";
6759 }
6759 }
6760 .fa-arrow-down:before {
6760 .fa-arrow-down:before {
6761 content: "\f063";
6761 content: "\f063";
6762 }
6762 }
6763 .fa-mail-forward:before,
6763 .fa-mail-forward:before,
6764 .fa-share:before {
6764 .fa-share:before {
6765 content: "\f064";
6765 content: "\f064";
6766 }
6766 }
6767 .fa-expand:before {
6767 .fa-expand:before {
6768 content: "\f065";
6768 content: "\f065";
6769 }
6769 }
6770 .fa-compress:before {
6770 .fa-compress:before {
6771 content: "\f066";
6771 content: "\f066";
6772 }
6772 }
6773 .fa-plus:before {
6773 .fa-plus:before {
6774 content: "\f067";
6774 content: "\f067";
6775 }
6775 }
6776 .fa-minus:before {
6776 .fa-minus:before {
6777 content: "\f068";
6777 content: "\f068";
6778 }
6778 }
6779 .fa-asterisk:before {
6779 .fa-asterisk:before {
6780 content: "\f069";
6780 content: "\f069";
6781 }
6781 }
6782 .fa-exclamation-circle:before {
6782 .fa-exclamation-circle:before {
6783 content: "\f06a";
6783 content: "\f06a";
6784 }
6784 }
6785 .fa-gift:before {
6785 .fa-gift:before {
6786 content: "\f06b";
6786 content: "\f06b";
6787 }
6787 }
6788 .fa-leaf:before {
6788 .fa-leaf:before {
6789 content: "\f06c";
6789 content: "\f06c";
6790 }
6790 }
6791 .fa-fire:before {
6791 .fa-fire:before {
6792 content: "\f06d";
6792 content: "\f06d";
6793 }
6793 }
6794 .fa-eye:before {
6794 .fa-eye:before {
6795 content: "\f06e";
6795 content: "\f06e";
6796 }
6796 }
6797 .fa-eye-slash:before {
6797 .fa-eye-slash:before {
6798 content: "\f070";
6798 content: "\f070";
6799 }
6799 }
6800 .fa-warning:before,
6800 .fa-warning:before,
6801 .fa-exclamation-triangle:before {
6801 .fa-exclamation-triangle:before {
6802 content: "\f071";
6802 content: "\f071";
6803 }
6803 }
6804 .fa-plane:before {
6804 .fa-plane:before {
6805 content: "\f072";
6805 content: "\f072";
6806 }
6806 }
6807 .fa-calendar:before {
6807 .fa-calendar:before {
6808 content: "\f073";
6808 content: "\f073";
6809 }
6809 }
6810 .fa-random:before {
6810 .fa-random:before {
6811 content: "\f074";
6811 content: "\f074";
6812 }
6812 }
6813 .fa-comment:before {
6813 .fa-comment:before {
6814 content: "\f075";
6814 content: "\f075";
6815 }
6815 }
6816 .fa-magnet:before {
6816 .fa-magnet:before {
6817 content: "\f076";
6817 content: "\f076";
6818 }
6818 }
6819 .fa-chevron-up:before {
6819 .fa-chevron-up:before {
6820 content: "\f077";
6820 content: "\f077";
6821 }
6821 }
6822 .fa-chevron-down:before {
6822 .fa-chevron-down:before {
6823 content: "\f078";
6823 content: "\f078";
6824 }
6824 }
6825 .fa-retweet:before {
6825 .fa-retweet:before {
6826 content: "\f079";
6826 content: "\f079";
6827 }
6827 }
6828 .fa-shopping-cart:before {
6828 .fa-shopping-cart:before {
6829 content: "\f07a";
6829 content: "\f07a";
6830 }
6830 }
6831 .fa-folder:before {
6831 .fa-folder:before {
6832 content: "\f07b";
6832 content: "\f07b";
6833 }
6833 }
6834 .fa-folder-open:before {
6834 .fa-folder-open:before {
6835 content: "\f07c";
6835 content: "\f07c";
6836 }
6836 }
6837 .fa-arrows-v:before {
6837 .fa-arrows-v:before {
6838 content: "\f07d";
6838 content: "\f07d";
6839 }
6839 }
6840 .fa-arrows-h:before {
6840 .fa-arrows-h:before {
6841 content: "\f07e";
6841 content: "\f07e";
6842 }
6842 }
6843 .fa-bar-chart-o:before,
6843 .fa-bar-chart-o:before,
6844 .fa-bar-chart:before {
6844 .fa-bar-chart:before {
6845 content: "\f080";
6845 content: "\f080";
6846 }
6846 }
6847 .fa-twitter-square:before {
6847 .fa-twitter-square:before {
6848 content: "\f081";
6848 content: "\f081";
6849 }
6849 }
6850 .fa-facebook-square:before {
6850 .fa-facebook-square:before {
6851 content: "\f082";
6851 content: "\f082";
6852 }
6852 }
6853 .fa-camera-retro:before {
6853 .fa-camera-retro:before {
6854 content: "\f083";
6854 content: "\f083";
6855 }
6855 }
6856 .fa-key:before {
6856 .fa-key:before {
6857 content: "\f084";
6857 content: "\f084";
6858 }
6858 }
6859 .fa-gears:before,
6859 .fa-gears:before,
6860 .fa-cogs:before {
6860 .fa-cogs:before {
6861 content: "\f085";
6861 content: "\f085";
6862 }
6862 }
6863 .fa-comments:before {
6863 .fa-comments:before {
6864 content: "\f086";
6864 content: "\f086";
6865 }
6865 }
6866 .fa-thumbs-o-up:before {
6866 .fa-thumbs-o-up:before {
6867 content: "\f087";
6867 content: "\f087";
6868 }
6868 }
6869 .fa-thumbs-o-down:before {
6869 .fa-thumbs-o-down:before {
6870 content: "\f088";
6870 content: "\f088";
6871 }
6871 }
6872 .fa-star-half:before {
6872 .fa-star-half:before {
6873 content: "\f089";
6873 content: "\f089";
6874 }
6874 }
6875 .fa-heart-o:before {
6875 .fa-heart-o:before {
6876 content: "\f08a";
6876 content: "\f08a";
6877 }
6877 }
6878 .fa-sign-out:before {
6878 .fa-sign-out:before {
6879 content: "\f08b";
6879 content: "\f08b";
6880 }
6880 }
6881 .fa-linkedin-square:before {
6881 .fa-linkedin-square:before {
6882 content: "\f08c";
6882 content: "\f08c";
6883 }
6883 }
6884 .fa-thumb-tack:before {
6884 .fa-thumb-tack:before {
6885 content: "\f08d";
6885 content: "\f08d";
6886 }
6886 }
6887 .fa-external-link:before {
6887 .fa-external-link:before {
6888 content: "\f08e";
6888 content: "\f08e";
6889 }
6889 }
6890 .fa-sign-in:before {
6890 .fa-sign-in:before {
6891 content: "\f090";
6891 content: "\f090";
6892 }
6892 }
6893 .fa-trophy:before {
6893 .fa-trophy:before {
6894 content: "\f091";
6894 content: "\f091";
6895 }
6895 }
6896 .fa-github-square:before {
6896 .fa-github-square:before {
6897 content: "\f092";
6897 content: "\f092";
6898 }
6898 }
6899 .fa-upload:before {
6899 .fa-upload:before {
6900 content: "\f093";
6900 content: "\f093";
6901 }
6901 }
6902 .fa-lemon-o:before {
6902 .fa-lemon-o:before {
6903 content: "\f094";
6903 content: "\f094";
6904 }
6904 }
6905 .fa-phone:before {
6905 .fa-phone:before {
6906 content: "\f095";
6906 content: "\f095";
6907 }
6907 }
6908 .fa-square-o:before {
6908 .fa-square-o:before {
6909 content: "\f096";
6909 content: "\f096";
6910 }
6910 }
6911 .fa-bookmark-o:before {
6911 .fa-bookmark-o:before {
6912 content: "\f097";
6912 content: "\f097";
6913 }
6913 }
6914 .fa-phone-square:before {
6914 .fa-phone-square:before {
6915 content: "\f098";
6915 content: "\f098";
6916 }
6916 }
6917 .fa-twitter:before {
6917 .fa-twitter:before {
6918 content: "\f099";
6918 content: "\f099";
6919 }
6919 }
6920 .fa-facebook-f:before,
6920 .fa-facebook-f:before,
6921 .fa-facebook:before {
6921 .fa-facebook:before {
6922 content: "\f09a";
6922 content: "\f09a";
6923 }
6923 }
6924 .fa-github:before {
6924 .fa-github:before {
6925 content: "\f09b";
6925 content: "\f09b";
6926 }
6926 }
6927 .fa-unlock:before {
6927 .fa-unlock:before {
6928 content: "\f09c";
6928 content: "\f09c";
6929 }
6929 }
6930 .fa-credit-card:before {
6930 .fa-credit-card:before {
6931 content: "\f09d";
6931 content: "\f09d";
6932 }
6932 }
6933 .fa-rss:before {
6933 .fa-rss:before {
6934 content: "\f09e";
6934 content: "\f09e";
6935 }
6935 }
6936 .fa-hdd-o:before {
6936 .fa-hdd-o:before {
6937 content: "\f0a0";
6937 content: "\f0a0";
6938 }
6938 }
6939 .fa-bullhorn:before {
6939 .fa-bullhorn:before {
6940 content: "\f0a1";
6940 content: "\f0a1";
6941 }
6941 }
6942 .fa-bell:before {
6942 .fa-bell:before {
6943 content: "\f0f3";
6943 content: "\f0f3";
6944 }
6944 }
6945 .fa-certificate:before {
6945 .fa-certificate:before {
6946 content: "\f0a3";
6946 content: "\f0a3";
6947 }
6947 }
6948 .fa-hand-o-right:before {
6948 .fa-hand-o-right:before {
6949 content: "\f0a4";
6949 content: "\f0a4";
6950 }
6950 }
6951 .fa-hand-o-left:before {
6951 .fa-hand-o-left:before {
6952 content: "\f0a5";
6952 content: "\f0a5";
6953 }
6953 }
6954 .fa-hand-o-up:before {
6954 .fa-hand-o-up:before {
6955 content: "\f0a6";
6955 content: "\f0a6";
6956 }
6956 }
6957 .fa-hand-o-down:before {
6957 .fa-hand-o-down:before {
6958 content: "\f0a7";
6958 content: "\f0a7";
6959 }
6959 }
6960 .fa-arrow-circle-left:before {
6960 .fa-arrow-circle-left:before {
6961 content: "\f0a8";
6961 content: "\f0a8";
6962 }
6962 }
6963 .fa-arrow-circle-right:before {
6963 .fa-arrow-circle-right:before {
6964 content: "\f0a9";
6964 content: "\f0a9";
6965 }
6965 }
6966 .fa-arrow-circle-up:before {
6966 .fa-arrow-circle-up:before {
6967 content: "\f0aa";
6967 content: "\f0aa";
6968 }
6968 }
6969 .fa-arrow-circle-down:before {
6969 .fa-arrow-circle-down:before {
6970 content: "\f0ab";
6970 content: "\f0ab";
6971 }
6971 }
6972 .fa-globe:before {
6972 .fa-globe:before {
6973 content: "\f0ac";
6973 content: "\f0ac";
6974 }
6974 }
6975 .fa-wrench:before {
6975 .fa-wrench:before {
6976 content: "\f0ad";
6976 content: "\f0ad";
6977 }
6977 }
6978 .fa-tasks:before {
6978 .fa-tasks:before {
6979 content: "\f0ae";
6979 content: "\f0ae";
6980 }
6980 }
6981 .fa-filter:before {
6981 .fa-filter:before {
6982 content: "\f0b0";
6982 content: "\f0b0";
6983 }
6983 }
6984 .fa-briefcase:before {
6984 .fa-briefcase:before {
6985 content: "\f0b1";
6985 content: "\f0b1";
6986 }
6986 }
6987 .fa-arrows-alt:before {
6987 .fa-arrows-alt:before {
6988 content: "\f0b2";
6988 content: "\f0b2";
6989 }
6989 }
6990 .fa-group:before,
6990 .fa-group:before,
6991 .fa-users:before {
6991 .fa-users:before {
6992 content: "\f0c0";
6992 content: "\f0c0";
6993 }
6993 }
6994 .fa-chain:before,
6994 .fa-chain:before,
6995 .fa-link:before {
6995 .fa-link:before {
6996 content: "\f0c1";
6996 content: "\f0c1";
6997 }
6997 }
6998 .fa-cloud:before {
6998 .fa-cloud:before {
6999 content: "\f0c2";
6999 content: "\f0c2";
7000 }
7000 }
7001 .fa-flask:before {
7001 .fa-flask:before {
7002 content: "\f0c3";
7002 content: "\f0c3";
7003 }
7003 }
7004 .fa-cut:before,
7004 .fa-cut:before,
7005 .fa-scissors:before {
7005 .fa-scissors:before {
7006 content: "\f0c4";
7006 content: "\f0c4";
7007 }
7007 }
7008 .fa-copy:before,
7008 .fa-copy:before,
7009 .fa-files-o:before {
7009 .fa-files-o:before {
7010 content: "\f0c5";
7010 content: "\f0c5";
7011 }
7011 }
7012 .fa-paperclip:before {
7012 .fa-paperclip:before {
7013 content: "\f0c6";
7013 content: "\f0c6";
7014 }
7014 }
7015 .fa-save:before,
7015 .fa-save:before,
7016 .fa-floppy-o:before {
7016 .fa-floppy-o:before {
7017 content: "\f0c7";
7017 content: "\f0c7";
7018 }
7018 }
7019 .fa-square:before {
7019 .fa-square:before {
7020 content: "\f0c8";
7020 content: "\f0c8";
7021 }
7021 }
7022 .fa-navicon:before,
7022 .fa-navicon:before,
7023 .fa-reorder:before,
7023 .fa-reorder:before,
7024 .fa-bars:before {
7024 .fa-bars:before {
7025 content: "\f0c9";
7025 content: "\f0c9";
7026 }
7026 }
7027 .fa-list-ul:before {
7027 .fa-list-ul:before {
7028 content: "\f0ca";
7028 content: "\f0ca";
7029 }
7029 }
7030 .fa-list-ol:before {
7030 .fa-list-ol:before {
7031 content: "\f0cb";
7031 content: "\f0cb";
7032 }
7032 }
7033 .fa-strikethrough:before {
7033 .fa-strikethrough:before {
7034 content: "\f0cc";
7034 content: "\f0cc";
7035 }
7035 }
7036 .fa-underline:before {
7036 .fa-underline:before {
7037 content: "\f0cd";
7037 content: "\f0cd";
7038 }
7038 }
7039 .fa-table:before {
7039 .fa-table:before {
7040 content: "\f0ce";
7040 content: "\f0ce";
7041 }
7041 }
7042 .fa-magic:before {
7042 .fa-magic:before {
7043 content: "\f0d0";
7043 content: "\f0d0";
7044 }
7044 }
7045 .fa-truck:before {
7045 .fa-truck:before {
7046 content: "\f0d1";
7046 content: "\f0d1";
7047 }
7047 }
7048 .fa-pinterest:before {
7048 .fa-pinterest:before {
7049 content: "\f0d2";
7049 content: "\f0d2";
7050 }
7050 }
7051 .fa-pinterest-square:before {
7051 .fa-pinterest-square:before {
7052 content: "\f0d3";
7052 content: "\f0d3";
7053 }
7053 }
7054 .fa-google-plus-square:before {
7054 .fa-google-plus-square:before {
7055 content: "\f0d4";
7055 content: "\f0d4";
7056 }
7056 }
7057 .fa-google-plus:before {
7057 .fa-google-plus:before {
7058 content: "\f0d5";
7058 content: "\f0d5";
7059 }
7059 }
7060 .fa-money:before {
7060 .fa-money:before {
7061 content: "\f0d6";
7061 content: "\f0d6";
7062 }
7062 }
7063 .fa-caret-down:before {
7063 .fa-caret-down:before {
7064 content: "\f0d7";
7064 content: "\f0d7";
7065 }
7065 }
7066 .fa-caret-up:before {
7066 .fa-caret-up:before {
7067 content: "\f0d8";
7067 content: "\f0d8";
7068 }
7068 }
7069 .fa-caret-left:before {
7069 .fa-caret-left:before {
7070 content: "\f0d9";
7070 content: "\f0d9";
7071 }
7071 }
7072 .fa-caret-right:before {
7072 .fa-caret-right:before {
7073 content: "\f0da";
7073 content: "\f0da";
7074 }
7074 }
7075 .fa-columns:before {
7075 .fa-columns:before {
7076 content: "\f0db";
7076 content: "\f0db";
7077 }
7077 }
7078 .fa-unsorted:before,
7078 .fa-unsorted:before,
7079 .fa-sort:before {
7079 .fa-sort:before {
7080 content: "\f0dc";
7080 content: "\f0dc";
7081 }
7081 }
7082 .fa-sort-down:before,
7082 .fa-sort-down:before,
7083 .fa-sort-desc:before {
7083 .fa-sort-desc:before {
7084 content: "\f0dd";
7084 content: "\f0dd";
7085 }
7085 }
7086 .fa-sort-up:before,
7086 .fa-sort-up:before,
7087 .fa-sort-asc:before {
7087 .fa-sort-asc:before {
7088 content: "\f0de";
7088 content: "\f0de";
7089 }
7089 }
7090 .fa-envelope:before {
7090 .fa-envelope:before {
7091 content: "\f0e0";
7091 content: "\f0e0";
7092 }
7092 }
7093 .fa-linkedin:before {
7093 .fa-linkedin:before {
7094 content: "\f0e1";
7094 content: "\f0e1";
7095 }
7095 }
7096 .fa-rotate-left:before,
7096 .fa-rotate-left:before,
7097 .fa-undo:before {
7097 .fa-undo:before {
7098 content: "\f0e2";
7098 content: "\f0e2";
7099 }
7099 }
7100 .fa-legal:before,
7100 .fa-legal:before,
7101 .fa-gavel:before {
7101 .fa-gavel:before {
7102 content: "\f0e3";
7102 content: "\f0e3";
7103 }
7103 }
7104 .fa-dashboard:before,
7104 .fa-dashboard:before,
7105 .fa-tachometer:before {
7105 .fa-tachometer:before {
7106 content: "\f0e4";
7106 content: "\f0e4";
7107 }
7107 }
7108 .fa-comment-o:before {
7108 .fa-comment-o:before {
7109 content: "\f0e5";
7109 content: "\f0e5";
7110 }
7110 }
7111 .fa-comments-o:before {
7111 .fa-comments-o:before {
7112 content: "\f0e6";
7112 content: "\f0e6";
7113 }
7113 }
7114 .fa-flash:before,
7114 .fa-flash:before,
7115 .fa-bolt:before {
7115 .fa-bolt:before {
7116 content: "\f0e7";
7116 content: "\f0e7";
7117 }
7117 }
7118 .fa-sitemap:before {
7118 .fa-sitemap:before {
7119 content: "\f0e8";
7119 content: "\f0e8";
7120 }
7120 }
7121 .fa-umbrella:before {
7121 .fa-umbrella:before {
7122 content: "\f0e9";
7122 content: "\f0e9";
7123 }
7123 }
7124 .fa-paste:before,
7124 .fa-paste:before,
7125 .fa-clipboard:before {
7125 .fa-clipboard:before {
7126 content: "\f0ea";
7126 content: "\f0ea";
7127 }
7127 }
7128 .fa-lightbulb-o:before {
7128 .fa-lightbulb-o:before {
7129 content: "\f0eb";
7129 content: "\f0eb";
7130 }
7130 }
7131 .fa-exchange:before {
7131 .fa-exchange:before {
7132 content: "\f0ec";
7132 content: "\f0ec";
7133 }
7133 }
7134 .fa-cloud-download:before {
7134 .fa-cloud-download:before {
7135 content: "\f0ed";
7135 content: "\f0ed";
7136 }
7136 }
7137 .fa-cloud-upload:before {
7137 .fa-cloud-upload:before {
7138 content: "\f0ee";
7138 content: "\f0ee";
7139 }
7139 }
7140 .fa-user-md:before {
7140 .fa-user-md:before {
7141 content: "\f0f0";
7141 content: "\f0f0";
7142 }
7142 }
7143 .fa-stethoscope:before {
7143 .fa-stethoscope:before {
7144 content: "\f0f1";
7144 content: "\f0f1";
7145 }
7145 }
7146 .fa-suitcase:before {
7146 .fa-suitcase:before {
7147 content: "\f0f2";
7147 content: "\f0f2";
7148 }
7148 }
7149 .fa-bell-o:before {
7149 .fa-bell-o:before {
7150 content: "\f0a2";
7150 content: "\f0a2";
7151 }
7151 }
7152 .fa-coffee:before {
7152 .fa-coffee:before {
7153 content: "\f0f4";
7153 content: "\f0f4";
7154 }
7154 }
7155 .fa-cutlery:before {
7155 .fa-cutlery:before {
7156 content: "\f0f5";
7156 content: "\f0f5";
7157 }
7157 }
7158 .fa-file-text-o:before {
7158 .fa-file-text-o:before {
7159 content: "\f0f6";
7159 content: "\f0f6";
7160 }
7160 }
7161 .fa-building-o:before {
7161 .fa-building-o:before {
7162 content: "\f0f7";
7162 content: "\f0f7";
7163 }
7163 }
7164 .fa-hospital-o:before {
7164 .fa-hospital-o:before {
7165 content: "\f0f8";
7165 content: "\f0f8";
7166 }
7166 }
7167 .fa-ambulance:before {
7167 .fa-ambulance:before {
7168 content: "\f0f9";
7168 content: "\f0f9";
7169 }
7169 }
7170 .fa-medkit:before {
7170 .fa-medkit:before {
7171 content: "\f0fa";
7171 content: "\f0fa";
7172 }
7172 }
7173 .fa-fighter-jet:before {
7173 .fa-fighter-jet:before {
7174 content: "\f0fb";
7174 content: "\f0fb";
7175 }
7175 }
7176 .fa-beer:before {
7176 .fa-beer:before {
7177 content: "\f0fc";
7177 content: "\f0fc";
7178 }
7178 }
7179 .fa-h-square:before {
7179 .fa-h-square:before {
7180 content: "\f0fd";
7180 content: "\f0fd";
7181 }
7181 }
7182 .fa-plus-square:before {
7182 .fa-plus-square:before {
7183 content: "\f0fe";
7183 content: "\f0fe";
7184 }
7184 }
7185 .fa-angle-double-left:before {
7185 .fa-angle-double-left:before {
7186 content: "\f100";
7186 content: "\f100";
7187 }
7187 }
7188 .fa-angle-double-right:before {
7188 .fa-angle-double-right:before {
7189 content: "\f101";
7189 content: "\f101";
7190 }
7190 }
7191 .fa-angle-double-up:before {
7191 .fa-angle-double-up:before {
7192 content: "\f102";
7192 content: "\f102";
7193 }
7193 }
7194 .fa-angle-double-down:before {
7194 .fa-angle-double-down:before {
7195 content: "\f103";
7195 content: "\f103";
7196 }
7196 }
7197 .fa-angle-left:before {
7197 .fa-angle-left:before {
7198 content: "\f104";
7198 content: "\f104";
7199 }
7199 }
7200 .fa-angle-right:before {
7200 .fa-angle-right:before {
7201 content: "\f105";
7201 content: "\f105";
7202 }
7202 }
7203 .fa-angle-up:before {
7203 .fa-angle-up:before {
7204 content: "\f106";
7204 content: "\f106";
7205 }
7205 }
7206 .fa-angle-down:before {
7206 .fa-angle-down:before {
7207 content: "\f107";
7207 content: "\f107";
7208 }
7208 }
7209 .fa-desktop:before {
7209 .fa-desktop:before {
7210 content: "\f108";
7210 content: "\f108";
7211 }
7211 }
7212 .fa-laptop:before {
7212 .fa-laptop:before {
7213 content: "\f109";
7213 content: "\f109";
7214 }
7214 }
7215 .fa-tablet:before {
7215 .fa-tablet:before {
7216 content: "\f10a";
7216 content: "\f10a";
7217 }
7217 }
7218 .fa-mobile-phone:before,
7218 .fa-mobile-phone:before,
7219 .fa-mobile:before {
7219 .fa-mobile:before {
7220 content: "\f10b";
7220 content: "\f10b";
7221 }
7221 }
7222 .fa-circle-o:before {
7222 .fa-circle-o:before {
7223 content: "\f10c";
7223 content: "\f10c";
7224 }
7224 }
7225 .fa-quote-left:before {
7225 .fa-quote-left:before {
7226 content: "\f10d";
7226 content: "\f10d";
7227 }
7227 }
7228 .fa-quote-right:before {
7228 .fa-quote-right:before {
7229 content: "\f10e";
7229 content: "\f10e";
7230 }
7230 }
7231 .fa-spinner:before {
7231 .fa-spinner:before {
7232 content: "\f110";
7232 content: "\f110";
7233 }
7233 }
7234 .fa-circle:before {
7234 .fa-circle:before {
7235 content: "\f111";
7235 content: "\f111";
7236 }
7236 }
7237 .fa-mail-reply:before,
7237 .fa-mail-reply:before,
7238 .fa-reply:before {
7238 .fa-reply:before {
7239 content: "\f112";
7239 content: "\f112";
7240 }
7240 }
7241 .fa-github-alt:before {
7241 .fa-github-alt:before {
7242 content: "\f113";
7242 content: "\f113";
7243 }
7243 }
7244 .fa-folder-o:before {
7244 .fa-folder-o:before {
7245 content: "\f114";
7245 content: "\f114";
7246 }
7246 }
7247 .fa-folder-open-o:before {
7247 .fa-folder-open-o:before {
7248 content: "\f115";
7248 content: "\f115";
7249 }
7249 }
7250 .fa-smile-o:before {
7250 .fa-smile-o:before {
7251 content: "\f118";
7251 content: "\f118";
7252 }
7252 }
7253 .fa-frown-o:before {
7253 .fa-frown-o:before {
7254 content: "\f119";
7254 content: "\f119";
7255 }
7255 }
7256 .fa-meh-o:before {
7256 .fa-meh-o:before {
7257 content: "\f11a";
7257 content: "\f11a";
7258 }
7258 }
7259 .fa-gamepad:before {
7259 .fa-gamepad:before {
7260 content: "\f11b";
7260 content: "\f11b";
7261 }
7261 }
7262 .fa-keyboard-o:before {
7262 .fa-keyboard-o:before {
7263 content: "\f11c";
7263 content: "\f11c";
7264 }
7264 }
7265 .fa-flag-o:before {
7265 .fa-flag-o:before {
7266 content: "\f11d";
7266 content: "\f11d";
7267 }
7267 }
7268 .fa-flag-checkered:before {
7268 .fa-flag-checkered:before {
7269 content: "\f11e";
7269 content: "\f11e";
7270 }
7270 }
7271 .fa-terminal:before {
7271 .fa-terminal:before {
7272 content: "\f120";
7272 content: "\f120";
7273 }
7273 }
7274 .fa-code:before {
7274 .fa-code:before {
7275 content: "\f121";
7275 content: "\f121";
7276 }
7276 }
7277 .fa-mail-reply-all:before,
7277 .fa-mail-reply-all:before,
7278 .fa-reply-all:before {
7278 .fa-reply-all:before {
7279 content: "\f122";
7279 content: "\f122";
7280 }
7280 }
7281 .fa-star-half-empty:before,
7281 .fa-star-half-empty:before,
7282 .fa-star-half-full:before,
7282 .fa-star-half-full:before,
7283 .fa-star-half-o:before {
7283 .fa-star-half-o:before {
7284 content: "\f123";
7284 content: "\f123";
7285 }
7285 }
7286 .fa-location-arrow:before {
7286 .fa-location-arrow:before {
7287 content: "\f124";
7287 content: "\f124";
7288 }
7288 }
7289 .fa-crop:before {
7289 .fa-crop:before {
7290 content: "\f125";
7290 content: "\f125";
7291 }
7291 }
7292 .fa-code-fork:before {
7292 .fa-code-fork:before {
7293 content: "\f126";
7293 content: "\f126";
7294 }
7294 }
7295 .fa-unlink:before,
7295 .fa-unlink:before,
7296 .fa-chain-broken:before {
7296 .fa-chain-broken:before {
7297 content: "\f127";
7297 content: "\f127";
7298 }
7298 }
7299 .fa-question:before {
7299 .fa-question:before {
7300 content: "\f128";
7300 content: "\f128";
7301 }
7301 }
7302 .fa-info:before {
7302 .fa-info:before {
7303 content: "\f129";
7303 content: "\f129";
7304 }
7304 }
7305 .fa-exclamation:before {
7305 .fa-exclamation:before {
7306 content: "\f12a";
7306 content: "\f12a";
7307 }
7307 }
7308 .fa-superscript:before {
7308 .fa-superscript:before {
7309 content: "\f12b";
7309 content: "\f12b";
7310 }
7310 }
7311 .fa-subscript:before {
7311 .fa-subscript:before {
7312 content: "\f12c";
7312 content: "\f12c";
7313 }
7313 }
7314 .fa-eraser:before {
7314 .fa-eraser:before {
7315 content: "\f12d";
7315 content: "\f12d";
7316 }
7316 }
7317 .fa-puzzle-piece:before {
7317 .fa-puzzle-piece:before {
7318 content: "\f12e";
7318 content: "\f12e";
7319 }
7319 }
7320 .fa-microphone:before {
7320 .fa-microphone:before {
7321 content: "\f130";
7321 content: "\f130";
7322 }
7322 }
7323 .fa-microphone-slash:before {
7323 .fa-microphone-slash:before {
7324 content: "\f131";
7324 content: "\f131";
7325 }
7325 }
7326 .fa-shield:before {
7326 .fa-shield:before {
7327 content: "\f132";
7327 content: "\f132";
7328 }
7328 }
7329 .fa-calendar-o:before {
7329 .fa-calendar-o:before {
7330 content: "\f133";
7330 content: "\f133";
7331 }
7331 }
7332 .fa-fire-extinguisher:before {
7332 .fa-fire-extinguisher:before {
7333 content: "\f134";
7333 content: "\f134";
7334 }
7334 }
7335 .fa-rocket:before {
7335 .fa-rocket:before {
7336 content: "\f135";
7336 content: "\f135";
7337 }
7337 }
7338 .fa-maxcdn:before {
7338 .fa-maxcdn:before {
7339 content: "\f136";
7339 content: "\f136";
7340 }
7340 }
7341 .fa-chevron-circle-left:before {
7341 .fa-chevron-circle-left:before {
7342 content: "\f137";
7342 content: "\f137";
7343 }
7343 }
7344 .fa-chevron-circle-right:before {
7344 .fa-chevron-circle-right:before {
7345 content: "\f138";
7345 content: "\f138";
7346 }
7346 }
7347 .fa-chevron-circle-up:before {
7347 .fa-chevron-circle-up:before {
7348 content: "\f139";
7348 content: "\f139";
7349 }
7349 }
7350 .fa-chevron-circle-down:before {
7350 .fa-chevron-circle-down:before {
7351 content: "\f13a";
7351 content: "\f13a";
7352 }
7352 }
7353 .fa-html5:before {
7353 .fa-html5:before {
7354 content: "\f13b";
7354 content: "\f13b";
7355 }
7355 }
7356 .fa-css3:before {
7356 .fa-css3:before {
7357 content: "\f13c";
7357 content: "\f13c";
7358 }
7358 }
7359 .fa-anchor:before {
7359 .fa-anchor:before {
7360 content: "\f13d";
7360 content: "\f13d";
7361 }
7361 }
7362 .fa-unlock-alt:before {
7362 .fa-unlock-alt:before {
7363 content: "\f13e";
7363 content: "\f13e";
7364 }
7364 }
7365 .fa-bullseye:before {
7365 .fa-bullseye:before {
7366 content: "\f140";
7366 content: "\f140";
7367 }
7367 }
7368 .fa-ellipsis-h:before {
7368 .fa-ellipsis-h:before {
7369 content: "\f141";
7369 content: "\f141";
7370 }
7370 }
7371 .fa-ellipsis-v:before {
7371 .fa-ellipsis-v:before {
7372 content: "\f142";
7372 content: "\f142";
7373 }
7373 }
7374 .fa-rss-square:before {
7374 .fa-rss-square:before {
7375 content: "\f143";
7375 content: "\f143";
7376 }
7376 }
7377 .fa-play-circle:before {
7377 .fa-play-circle:before {
7378 content: "\f144";
7378 content: "\f144";
7379 }
7379 }
7380 .fa-ticket:before {
7380 .fa-ticket:before {
7381 content: "\f145";
7381 content: "\f145";
7382 }
7382 }
7383 .fa-minus-square:before {
7383 .fa-minus-square:before {
7384 content: "\f146";
7384 content: "\f146";
7385 }
7385 }
7386 .fa-minus-square-o:before {
7386 .fa-minus-square-o:before {
7387 content: "\f147";
7387 content: "\f147";
7388 }
7388 }
7389 .fa-level-up:before {
7389 .fa-level-up:before {
7390 content: "\f148";
7390 content: "\f148";
7391 }
7391 }
7392 .fa-level-down:before {
7392 .fa-level-down:before {
7393 content: "\f149";
7393 content: "\f149";
7394 }
7394 }
7395 .fa-check-square:before {
7395 .fa-check-square:before {
7396 content: "\f14a";
7396 content: "\f14a";
7397 }
7397 }
7398 .fa-pencil-square:before {
7398 .fa-pencil-square:before {
7399 content: "\f14b";
7399 content: "\f14b";
7400 }
7400 }
7401 .fa-external-link-square:before {
7401 .fa-external-link-square:before {
7402 content: "\f14c";
7402 content: "\f14c";
7403 }
7403 }
7404 .fa-share-square:before {
7404 .fa-share-square:before {
7405 content: "\f14d";
7405 content: "\f14d";
7406 }
7406 }
7407 .fa-compass:before {
7407 .fa-compass:before {
7408 content: "\f14e";
7408 content: "\f14e";
7409 }
7409 }
7410 .fa-toggle-down:before,
7410 .fa-toggle-down:before,
7411 .fa-caret-square-o-down:before {
7411 .fa-caret-square-o-down:before {
7412 content: "\f150";
7412 content: "\f150";
7413 }
7413 }
7414 .fa-toggle-up:before,
7414 .fa-toggle-up:before,
7415 .fa-caret-square-o-up:before {
7415 .fa-caret-square-o-up:before {
7416 content: "\f151";
7416 content: "\f151";
7417 }
7417 }
7418 .fa-toggle-right:before,
7418 .fa-toggle-right:before,
7419 .fa-caret-square-o-right:before {
7419 .fa-caret-square-o-right:before {
7420 content: "\f152";
7420 content: "\f152";
7421 }
7421 }
7422 .fa-euro:before,
7422 .fa-euro:before,
7423 .fa-eur:before {
7423 .fa-eur:before {
7424 content: "\f153";
7424 content: "\f153";
7425 }
7425 }
7426 .fa-gbp:before {
7426 .fa-gbp:before {
7427 content: "\f154";
7427 content: "\f154";
7428 }
7428 }
7429 .fa-dollar:before,
7429 .fa-dollar:before,
7430 .fa-usd:before {
7430 .fa-usd:before {
7431 content: "\f155";
7431 content: "\f155";
7432 }
7432 }
7433 .fa-rupee:before,
7433 .fa-rupee:before,
7434 .fa-inr:before {
7434 .fa-inr:before {
7435 content: "\f156";
7435 content: "\f156";
7436 }
7436 }
7437 .fa-cny:before,
7437 .fa-cny:before,
7438 .fa-rmb:before,
7438 .fa-rmb:before,
7439 .fa-yen:before,
7439 .fa-yen:before,
7440 .fa-jpy:before {
7440 .fa-jpy:before {
7441 content: "\f157";
7441 content: "\f157";
7442 }
7442 }
7443 .fa-ruble:before,
7443 .fa-ruble:before,
7444 .fa-rouble:before,
7444 .fa-rouble:before,
7445 .fa-rub:before {
7445 .fa-rub:before {
7446 content: "\f158";
7446 content: "\f158";
7447 }
7447 }
7448 .fa-won:before,
7448 .fa-won:before,
7449 .fa-krw:before {
7449 .fa-krw:before {
7450 content: "\f159";
7450 content: "\f159";
7451 }
7451 }
7452 .fa-bitcoin:before,
7452 .fa-bitcoin:before,
7453 .fa-btc:before {
7453 .fa-btc:before {
7454 content: "\f15a";
7454 content: "\f15a";
7455 }
7455 }
7456 .fa-file:before {
7456 .fa-file:before {
7457 content: "\f15b";
7457 content: "\f15b";
7458 }
7458 }
7459 .fa-file-text:before {
7459 .fa-file-text:before {
7460 content: "\f15c";
7460 content: "\f15c";
7461 }
7461 }
7462 .fa-sort-alpha-asc:before {
7462 .fa-sort-alpha-asc:before {
7463 content: "\f15d";
7463 content: "\f15d";
7464 }
7464 }
7465 .fa-sort-alpha-desc:before {
7465 .fa-sort-alpha-desc:before {
7466 content: "\f15e";
7466 content: "\f15e";
7467 }
7467 }
7468 .fa-sort-amount-asc:before {
7468 .fa-sort-amount-asc:before {
7469 content: "\f160";
7469 content: "\f160";
7470 }
7470 }
7471 .fa-sort-amount-desc:before {
7471 .fa-sort-amount-desc:before {
7472 content: "\f161";
7472 content: "\f161";
7473 }
7473 }
7474 .fa-sort-numeric-asc:before {
7474 .fa-sort-numeric-asc:before {
7475 content: "\f162";
7475 content: "\f162";
7476 }
7476 }
7477 .fa-sort-numeric-desc:before {
7477 .fa-sort-numeric-desc:before {
7478 content: "\f163";
7478 content: "\f163";
7479 }
7479 }
7480 .fa-thumbs-up:before {
7480 .fa-thumbs-up:before {
7481 content: "\f164";
7481 content: "\f164";
7482 }
7482 }
7483 .fa-thumbs-down:before {
7483 .fa-thumbs-down:before {
7484 content: "\f165";
7484 content: "\f165";
7485 }
7485 }
7486 .fa-youtube-square:before {
7486 .fa-youtube-square:before {
7487 content: "\f166";
7487 content: "\f166";
7488 }
7488 }
7489 .fa-youtube:before {
7489 .fa-youtube:before {
7490 content: "\f167";
7490 content: "\f167";
7491 }
7491 }
7492 .fa-xing:before {
7492 .fa-xing:before {
7493 content: "\f168";
7493 content: "\f168";
7494 }
7494 }
7495 .fa-xing-square:before {
7495 .fa-xing-square:before {
7496 content: "\f169";
7496 content: "\f169";
7497 }
7497 }
7498 .fa-youtube-play:before {
7498 .fa-youtube-play:before {
7499 content: "\f16a";
7499 content: "\f16a";
7500 }
7500 }
7501 .fa-dropbox:before {
7501 .fa-dropbox:before {
7502 content: "\f16b";
7502 content: "\f16b";
7503 }
7503 }
7504 .fa-stack-overflow:before {
7504 .fa-stack-overflow:before {
7505 content: "\f16c";
7505 content: "\f16c";
7506 }
7506 }
7507 .fa-instagram:before {
7507 .fa-instagram:before {
7508 content: "\f16d";
7508 content: "\f16d";
7509 }
7509 }
7510 .fa-flickr:before {
7510 .fa-flickr:before {
7511 content: "\f16e";
7511 content: "\f16e";
7512 }
7512 }
7513 .fa-adn:before {
7513 .fa-adn:before {
7514 content: "\f170";
7514 content: "\f170";
7515 }
7515 }
7516 .fa-bitbucket:before {
7516 .fa-bitbucket:before {
7517 content: "\f171";
7517 content: "\f171";
7518 }
7518 }
7519 .fa-bitbucket-square:before {
7519 .fa-bitbucket-square:before {
7520 content: "\f172";
7520 content: "\f172";
7521 }
7521 }
7522 .fa-tumblr:before {
7522 .fa-tumblr:before {
7523 content: "\f173";
7523 content: "\f173";
7524 }
7524 }
7525 .fa-tumblr-square:before {
7525 .fa-tumblr-square:before {
7526 content: "\f174";
7526 content: "\f174";
7527 }
7527 }
7528 .fa-long-arrow-down:before {
7528 .fa-long-arrow-down:before {
7529 content: "\f175";
7529 content: "\f175";
7530 }
7530 }
7531 .fa-long-arrow-up:before {
7531 .fa-long-arrow-up:before {
7532 content: "\f176";
7532 content: "\f176";
7533 }
7533 }
7534 .fa-long-arrow-left:before {
7534 .fa-long-arrow-left:before {
7535 content: "\f177";
7535 content: "\f177";
7536 }
7536 }
7537 .fa-long-arrow-right:before {
7537 .fa-long-arrow-right:before {
7538 content: "\f178";
7538 content: "\f178";
7539 }
7539 }
7540 .fa-apple:before {
7540 .fa-apple:before {
7541 content: "\f179";
7541 content: "\f179";
7542 }
7542 }
7543 .fa-windows:before {
7543 .fa-windows:before {
7544 content: "\f17a";
7544 content: "\f17a";
7545 }
7545 }
7546 .fa-android:before {
7546 .fa-android:before {
7547 content: "\f17b";
7547 content: "\f17b";
7548 }
7548 }
7549 .fa-linux:before {
7549 .fa-linux:before {
7550 content: "\f17c";
7550 content: "\f17c";
7551 }
7551 }
7552 .fa-dribbble:before {
7552 .fa-dribbble:before {
7553 content: "\f17d";
7553 content: "\f17d";
7554 }
7554 }
7555 .fa-skype:before {
7555 .fa-skype:before {
7556 content: "\f17e";
7556 content: "\f17e";
7557 }
7557 }
7558 .fa-foursquare:before {
7558 .fa-foursquare:before {
7559 content: "\f180";
7559 content: "\f180";
7560 }
7560 }
7561 .fa-trello:before {
7561 .fa-trello:before {
7562 content: "\f181";
7562 content: "\f181";
7563 }
7563 }
7564 .fa-female:before {
7564 .fa-female:before {
7565 content: "\f182";
7565 content: "\f182";
7566 }
7566 }
7567 .fa-male:before {
7567 .fa-male:before {
7568 content: "\f183";
7568 content: "\f183";
7569 }
7569 }
7570 .fa-gittip:before,
7570 .fa-gittip:before,
7571 .fa-gratipay:before {
7571 .fa-gratipay:before {
7572 content: "\f184";
7572 content: "\f184";
7573 }
7573 }
7574 .fa-sun-o:before {
7574 .fa-sun-o:before {
7575 content: "\f185";
7575 content: "\f185";
7576 }
7576 }
7577 .fa-moon-o:before {
7577 .fa-moon-o:before {
7578 content: "\f186";
7578 content: "\f186";
7579 }
7579 }
7580 .fa-archive:before {
7580 .fa-archive:before {
7581 content: "\f187";
7581 content: "\f187";
7582 }
7582 }
7583 .fa-bug:before {
7583 .fa-bug:before {
7584 content: "\f188";
7584 content: "\f188";
7585 }
7585 }
7586 .fa-vk:before {
7586 .fa-vk:before {
7587 content: "\f189";
7587 content: "\f189";
7588 }
7588 }
7589 .fa-weibo:before {
7589 .fa-weibo:before {
7590 content: "\f18a";
7590 content: "\f18a";
7591 }
7591 }
7592 .fa-renren:before {
7592 .fa-renren:before {
7593 content: "\f18b";
7593 content: "\f18b";
7594 }
7594 }
7595 .fa-pagelines:before {
7595 .fa-pagelines:before {
7596 content: "\f18c";
7596 content: "\f18c";
7597 }
7597 }
7598 .fa-stack-exchange:before {
7598 .fa-stack-exchange:before {
7599 content: "\f18d";
7599 content: "\f18d";
7600 }
7600 }
7601 .fa-arrow-circle-o-right:before {
7601 .fa-arrow-circle-o-right:before {
7602 content: "\f18e";
7602 content: "\f18e";
7603 }
7603 }
7604 .fa-arrow-circle-o-left:before {
7604 .fa-arrow-circle-o-left:before {
7605 content: "\f190";
7605 content: "\f190";
7606 }
7606 }
7607 .fa-toggle-left:before,
7607 .fa-toggle-left:before,
7608 .fa-caret-square-o-left:before {
7608 .fa-caret-square-o-left:before {
7609 content: "\f191";
7609 content: "\f191";
7610 }
7610 }
7611 .fa-dot-circle-o:before {
7611 .fa-dot-circle-o:before {
7612 content: "\f192";
7612 content: "\f192";
7613 }
7613 }
7614 .fa-wheelchair:before {
7614 .fa-wheelchair:before {
7615 content: "\f193";
7615 content: "\f193";
7616 }
7616 }
7617 .fa-vimeo-square:before {
7617 .fa-vimeo-square:before {
7618 content: "\f194";
7618 content: "\f194";
7619 }
7619 }
7620 .fa-turkish-lira:before,
7620 .fa-turkish-lira:before,
7621 .fa-try:before {
7621 .fa-try:before {
7622 content: "\f195";
7622 content: "\f195";
7623 }
7623 }
7624 .fa-plus-square-o:before {
7624 .fa-plus-square-o:before {
7625 content: "\f196";
7625 content: "\f196";
7626 }
7626 }
7627 .fa-space-shuttle:before {
7627 .fa-space-shuttle:before {
7628 content: "\f197";
7628 content: "\f197";
7629 }
7629 }
7630 .fa-slack:before {
7630 .fa-slack:before {
7631 content: "\f198";
7631 content: "\f198";
7632 }
7632 }
7633 .fa-envelope-square:before {
7633 .fa-envelope-square:before {
7634 content: "\f199";
7634 content: "\f199";
7635 }
7635 }
7636 .fa-wordpress:before {
7636 .fa-wordpress:before {
7637 content: "\f19a";
7637 content: "\f19a";
7638 }
7638 }
7639 .fa-openid:before {
7639 .fa-openid:before {
7640 content: "\f19b";
7640 content: "\f19b";
7641 }
7641 }
7642 .fa-institution:before,
7642 .fa-institution:before,
7643 .fa-bank:before,
7643 .fa-bank:before,
7644 .fa-university:before {
7644 .fa-university:before {
7645 content: "\f19c";
7645 content: "\f19c";
7646 }
7646 }
7647 .fa-mortar-board:before,
7647 .fa-mortar-board:before,
7648 .fa-graduation-cap:before {
7648 .fa-graduation-cap:before {
7649 content: "\f19d";
7649 content: "\f19d";
7650 }
7650 }
7651 .fa-yahoo:before {
7651 .fa-yahoo:before {
7652 content: "\f19e";
7652 content: "\f19e";
7653 }
7653 }
7654 .fa-google:before {
7654 .fa-google:before {
7655 content: "\f1a0";
7655 content: "\f1a0";
7656 }
7656 }
7657 .fa-reddit:before {
7657 .fa-reddit:before {
7658 content: "\f1a1";
7658 content: "\f1a1";
7659 }
7659 }
7660 .fa-reddit-square:before {
7660 .fa-reddit-square:before {
7661 content: "\f1a2";
7661 content: "\f1a2";
7662 }
7662 }
7663 .fa-stumbleupon-circle:before {
7663 .fa-stumbleupon-circle:before {
7664 content: "\f1a3";
7664 content: "\f1a3";
7665 }
7665 }
7666 .fa-stumbleupon:before {
7666 .fa-stumbleupon:before {
7667 content: "\f1a4";
7667 content: "\f1a4";
7668 }
7668 }
7669 .fa-delicious:before {
7669 .fa-delicious:before {
7670 content: "\f1a5";
7670 content: "\f1a5";
7671 }
7671 }
7672 .fa-digg:before {
7672 .fa-digg:before {
7673 content: "\f1a6";
7673 content: "\f1a6";
7674 }
7674 }
7675 .fa-pied-piper:before {
7675 .fa-pied-piper:before {
7676 content: "\f1a7";
7676 content: "\f1a7";
7677 }
7677 }
7678 .fa-pied-piper-alt:before {
7678 .fa-pied-piper-alt:before {
7679 content: "\f1a8";
7679 content: "\f1a8";
7680 }
7680 }
7681 .fa-drupal:before {
7681 .fa-drupal:before {
7682 content: "\f1a9";
7682 content: "\f1a9";
7683 }
7683 }
7684 .fa-joomla:before {
7684 .fa-joomla:before {
7685 content: "\f1aa";
7685 content: "\f1aa";
7686 }
7686 }
7687 .fa-language:before {
7687 .fa-language:before {
7688 content: "\f1ab";
7688 content: "\f1ab";
7689 }
7689 }
7690 .fa-fax:before {
7690 .fa-fax:before {
7691 content: "\f1ac";
7691 content: "\f1ac";
7692 }
7692 }
7693 .fa-building:before {
7693 .fa-building:before {
7694 content: "\f1ad";
7694 content: "\f1ad";
7695 }
7695 }
7696 .fa-child:before {
7696 .fa-child:before {
7697 content: "\f1ae";
7697 content: "\f1ae";
7698 }
7698 }
7699 .fa-paw:before {
7699 .fa-paw:before {
7700 content: "\f1b0";
7700 content: "\f1b0";
7701 }
7701 }
7702 .fa-spoon:before {
7702 .fa-spoon:before {
7703 content: "\f1b1";
7703 content: "\f1b1";
7704 }
7704 }
7705 .fa-cube:before {
7705 .fa-cube:before {
7706 content: "\f1b2";
7706 content: "\f1b2";
7707 }
7707 }
7708 .fa-cubes:before {
7708 .fa-cubes:before {
7709 content: "\f1b3";
7709 content: "\f1b3";
7710 }
7710 }
7711 .fa-behance:before {
7711 .fa-behance:before {
7712 content: "\f1b4";
7712 content: "\f1b4";
7713 }
7713 }
7714 .fa-behance-square:before {
7714 .fa-behance-square:before {
7715 content: "\f1b5";
7715 content: "\f1b5";
7716 }
7716 }
7717 .fa-steam:before {
7717 .fa-steam:before {
7718 content: "\f1b6";
7718 content: "\f1b6";
7719 }
7719 }
7720 .fa-steam-square:before {
7720 .fa-steam-square:before {
7721 content: "\f1b7";
7721 content: "\f1b7";
7722 }
7722 }
7723 .fa-recycle:before {
7723 .fa-recycle:before {
7724 content: "\f1b8";
7724 content: "\f1b8";
7725 }
7725 }
7726 .fa-automobile:before,
7726 .fa-automobile:before,
7727 .fa-car:before {
7727 .fa-car:before {
7728 content: "\f1b9";
7728 content: "\f1b9";
7729 }
7729 }
7730 .fa-cab:before,
7730 .fa-cab:before,
7731 .fa-taxi:before {
7731 .fa-taxi:before {
7732 content: "\f1ba";
7732 content: "\f1ba";
7733 }
7733 }
7734 .fa-tree:before {
7734 .fa-tree:before {
7735 content: "\f1bb";
7735 content: "\f1bb";
7736 }
7736 }
7737 .fa-spotify:before {
7737 .fa-spotify:before {
7738 content: "\f1bc";
7738 content: "\f1bc";
7739 }
7739 }
7740 .fa-deviantart:before {
7740 .fa-deviantart:before {
7741 content: "\f1bd";
7741 content: "\f1bd";
7742 }
7742 }
7743 .fa-soundcloud:before {
7743 .fa-soundcloud:before {
7744 content: "\f1be";
7744 content: "\f1be";
7745 }
7745 }
7746 .fa-database:before {
7746 .fa-database:before {
7747 content: "\f1c0";
7747 content: "\f1c0";
7748 }
7748 }
7749 .fa-file-pdf-o:before {
7749 .fa-file-pdf-o:before {
7750 content: "\f1c1";
7750 content: "\f1c1";
7751 }
7751 }
7752 .fa-file-word-o:before {
7752 .fa-file-word-o:before {
7753 content: "\f1c2";
7753 content: "\f1c2";
7754 }
7754 }
7755 .fa-file-excel-o:before {
7755 .fa-file-excel-o:before {
7756 content: "\f1c3";
7756 content: "\f1c3";
7757 }
7757 }
7758 .fa-file-powerpoint-o:before {
7758 .fa-file-powerpoint-o:before {
7759 content: "\f1c4";
7759 content: "\f1c4";
7760 }
7760 }
7761 .fa-file-photo-o:before,
7761 .fa-file-photo-o:before,
7762 .fa-file-picture-o:before,
7762 .fa-file-picture-o:before,
7763 .fa-file-image-o:before {
7763 .fa-file-image-o:before {
7764 content: "\f1c5";
7764 content: "\f1c5";
7765 }
7765 }
7766 .fa-file-zip-o:before,
7766 .fa-file-zip-o:before,
7767 .fa-file-archive-o:before {
7767 .fa-file-archive-o:before {
7768 content: "\f1c6";
7768 content: "\f1c6";
7769 }
7769 }
7770 .fa-file-sound-o:before,
7770 .fa-file-sound-o:before,
7771 .fa-file-audio-o:before {
7771 .fa-file-audio-o:before {
7772 content: "\f1c7";
7772 content: "\f1c7";
7773 }
7773 }
7774 .fa-file-movie-o:before,
7774 .fa-file-movie-o:before,
7775 .fa-file-video-o:before {
7775 .fa-file-video-o:before {
7776 content: "\f1c8";
7776 content: "\f1c8";
7777 }
7777 }
7778 .fa-file-code-o:before {
7778 .fa-file-code-o:before {
7779 content: "\f1c9";
7779 content: "\f1c9";
7780 }
7780 }
7781 .fa-vine:before {
7781 .fa-vine:before {
7782 content: "\f1ca";
7782 content: "\f1ca";
7783 }
7783 }
7784 .fa-codepen:before {
7784 .fa-codepen:before {
7785 content: "\f1cb";
7785 content: "\f1cb";
7786 }
7786 }
7787 .fa-jsfiddle:before {
7787 .fa-jsfiddle:before {
7788 content: "\f1cc";
7788 content: "\f1cc";
7789 }
7789 }
7790 .fa-life-bouy:before,
7790 .fa-life-bouy:before,
7791 .fa-life-buoy:before,
7791 .fa-life-buoy:before,
7792 .fa-life-saver:before,
7792 .fa-life-saver:before,
7793 .fa-support:before,
7793 .fa-support:before,
7794 .fa-life-ring:before {
7794 .fa-life-ring:before {
7795 content: "\f1cd";
7795 content: "\f1cd";
7796 }
7796 }
7797 .fa-circle-o-notch:before {
7797 .fa-circle-o-notch:before {
7798 content: "\f1ce";
7798 content: "\f1ce";
7799 }
7799 }
7800 .fa-ra:before,
7800 .fa-ra:before,
7801 .fa-rebel:before {
7801 .fa-rebel:before {
7802 content: "\f1d0";
7802 content: "\f1d0";
7803 }
7803 }
7804 .fa-ge:before,
7804 .fa-ge:before,
7805 .fa-empire:before {
7805 .fa-empire:before {
7806 content: "\f1d1";
7806 content: "\f1d1";
7807 }
7807 }
7808 .fa-git-square:before {
7808 .fa-git-square:before {
7809 content: "\f1d2";
7809 content: "\f1d2";
7810 }
7810 }
7811 .fa-git:before {
7811 .fa-git:before {
7812 content: "\f1d3";
7812 content: "\f1d3";
7813 }
7813 }
7814 .fa-hacker-news:before {
7814 .fa-hacker-news:before {
7815 content: "\f1d4";
7815 content: "\f1d4";
7816 }
7816 }
7817 .fa-tencent-weibo:before {
7817 .fa-tencent-weibo:before {
7818 content: "\f1d5";
7818 content: "\f1d5";
7819 }
7819 }
7820 .fa-qq:before {
7820 .fa-qq:before {
7821 content: "\f1d6";
7821 content: "\f1d6";
7822 }
7822 }
7823 .fa-wechat:before,
7823 .fa-wechat:before,
7824 .fa-weixin:before {
7824 .fa-weixin:before {
7825 content: "\f1d7";
7825 content: "\f1d7";
7826 }
7826 }
7827 .fa-send:before,
7827 .fa-send:before,
7828 .fa-paper-plane:before {
7828 .fa-paper-plane:before {
7829 content: "\f1d8";
7829 content: "\f1d8";
7830 }
7830 }
7831 .fa-send-o:before,
7831 .fa-send-o:before,
7832 .fa-paper-plane-o:before {
7832 .fa-paper-plane-o:before {
7833 content: "\f1d9";
7833 content: "\f1d9";
7834 }
7834 }
7835 .fa-history:before {
7835 .fa-history:before {
7836 content: "\f1da";
7836 content: "\f1da";
7837 }
7837 }
7838 .fa-genderless:before,
7838 .fa-genderless:before,
7839 .fa-circle-thin:before {
7839 .fa-circle-thin:before {
7840 content: "\f1db";
7840 content: "\f1db";
7841 }
7841 }
7842 .fa-header:before {
7842 .fa-header:before {
7843 content: "\f1dc";
7843 content: "\f1dc";
7844 }
7844 }
7845 .fa-paragraph:before {
7845 .fa-paragraph:before {
7846 content: "\f1dd";
7846 content: "\f1dd";
7847 }
7847 }
7848 .fa-sliders:before {
7848 .fa-sliders:before {
7849 content: "\f1de";
7849 content: "\f1de";
7850 }
7850 }
7851 .fa-share-alt:before {
7851 .fa-share-alt:before {
7852 content: "\f1e0";
7852 content: "\f1e0";
7853 }
7853 }
7854 .fa-share-alt-square:before {
7854 .fa-share-alt-square:before {
7855 content: "\f1e1";
7855 content: "\f1e1";
7856 }
7856 }
7857 .fa-bomb:before {
7857 .fa-bomb:before {
7858 content: "\f1e2";
7858 content: "\f1e2";
7859 }
7859 }
7860 .fa-soccer-ball-o:before,
7860 .fa-soccer-ball-o:before,
7861 .fa-futbol-o:before {
7861 .fa-futbol-o:before {
7862 content: "\f1e3";
7862 content: "\f1e3";
7863 }
7863 }
7864 .fa-tty:before {
7864 .fa-tty:before {
7865 content: "\f1e4";
7865 content: "\f1e4";
7866 }
7866 }
7867 .fa-binoculars:before {
7867 .fa-binoculars:before {
7868 content: "\f1e5";
7868 content: "\f1e5";
7869 }
7869 }
7870 .fa-plug:before {
7870 .fa-plug:before {
7871 content: "\f1e6";
7871 content: "\f1e6";
7872 }
7872 }
7873 .fa-slideshare:before {
7873 .fa-slideshare:before {
7874 content: "\f1e7";
7874 content: "\f1e7";
7875 }
7875 }
7876 .fa-twitch:before {
7876 .fa-twitch:before {
7877 content: "\f1e8";
7877 content: "\f1e8";
7878 }
7878 }
7879 .fa-yelp:before {
7879 .fa-yelp:before {
7880 content: "\f1e9";
7880 content: "\f1e9";
7881 }
7881 }
7882 .fa-newspaper-o:before {
7882 .fa-newspaper-o:before {
7883 content: "\f1ea";
7883 content: "\f1ea";
7884 }
7884 }
7885 .fa-wifi:before {
7885 .fa-wifi:before {
7886 content: "\f1eb";
7886 content: "\f1eb";
7887 }
7887 }
7888 .fa-calculator:before {
7888 .fa-calculator:before {
7889 content: "\f1ec";
7889 content: "\f1ec";
7890 }
7890 }
7891 .fa-paypal:before {
7891 .fa-paypal:before {
7892 content: "\f1ed";
7892 content: "\f1ed";
7893 }
7893 }
7894 .fa-google-wallet:before {
7894 .fa-google-wallet:before {
7895 content: "\f1ee";
7895 content: "\f1ee";
7896 }
7896 }
7897 .fa-cc-visa:before {
7897 .fa-cc-visa:before {
7898 content: "\f1f0";
7898 content: "\f1f0";
7899 }
7899 }
7900 .fa-cc-mastercard:before {
7900 .fa-cc-mastercard:before {
7901 content: "\f1f1";
7901 content: "\f1f1";
7902 }
7902 }
7903 .fa-cc-discover:before {
7903 .fa-cc-discover:before {
7904 content: "\f1f2";
7904 content: "\f1f2";
7905 }
7905 }
7906 .fa-cc-amex:before {
7906 .fa-cc-amex:before {
7907 content: "\f1f3";
7907 content: "\f1f3";
7908 }
7908 }
7909 .fa-cc-paypal:before {
7909 .fa-cc-paypal:before {
7910 content: "\f1f4";
7910 content: "\f1f4";
7911 }
7911 }
7912 .fa-cc-stripe:before {
7912 .fa-cc-stripe:before {
7913 content: "\f1f5";
7913 content: "\f1f5";
7914 }
7914 }
7915 .fa-bell-slash:before {
7915 .fa-bell-slash:before {
7916 content: "\f1f6";
7916 content: "\f1f6";
7917 }
7917 }
7918 .fa-bell-slash-o:before {
7918 .fa-bell-slash-o:before {
7919 content: "\f1f7";
7919 content: "\f1f7";
7920 }
7920 }
7921 .fa-trash:before {
7921 .fa-trash:before {
7922 content: "\f1f8";
7922 content: "\f1f8";
7923 }
7923 }
7924 .fa-copyright:before {
7924 .fa-copyright:before {
7925 content: "\f1f9";
7925 content: "\f1f9";
7926 }
7926 }
7927 .fa-at:before {
7927 .fa-at:before {
7928 content: "\f1fa";
7928 content: "\f1fa";
7929 }
7929 }
7930 .fa-eyedropper:before {
7930 .fa-eyedropper:before {
7931 content: "\f1fb";
7931 content: "\f1fb";
7932 }
7932 }
7933 .fa-paint-brush:before {
7933 .fa-paint-brush:before {
7934 content: "\f1fc";
7934 content: "\f1fc";
7935 }
7935 }
7936 .fa-birthday-cake:before {
7936 .fa-birthday-cake:before {
7937 content: "\f1fd";
7937 content: "\f1fd";
7938 }
7938 }
7939 .fa-area-chart:before {
7939 .fa-area-chart:before {
7940 content: "\f1fe";
7940 content: "\f1fe";
7941 }
7941 }
7942 .fa-pie-chart:before {
7942 .fa-pie-chart:before {
7943 content: "\f200";
7943 content: "\f200";
7944 }
7944 }
7945 .fa-line-chart:before {
7945 .fa-line-chart:before {
7946 content: "\f201";
7946 content: "\f201";
7947 }
7947 }
7948 .fa-lastfm:before {
7948 .fa-lastfm:before {
7949 content: "\f202";
7949 content: "\f202";
7950 }
7950 }
7951 .fa-lastfm-square:before {
7951 .fa-lastfm-square:before {
7952 content: "\f203";
7952 content: "\f203";
7953 }
7953 }
7954 .fa-toggle-off:before {
7954 .fa-toggle-off:before {
7955 content: "\f204";
7955 content: "\f204";
7956 }
7956 }
7957 .fa-toggle-on:before {
7957 .fa-toggle-on:before {
7958 content: "\f205";
7958 content: "\f205";
7959 }
7959 }
7960 .fa-bicycle:before {
7960 .fa-bicycle:before {
7961 content: "\f206";
7961 content: "\f206";
7962 }
7962 }
7963 .fa-bus:before {
7963 .fa-bus:before {
7964 content: "\f207";
7964 content: "\f207";
7965 }
7965 }
7966 .fa-ioxhost:before {
7966 .fa-ioxhost:before {
7967 content: "\f208";
7967 content: "\f208";
7968 }
7968 }
7969 .fa-angellist:before {
7969 .fa-angellist:before {
7970 content: "\f209";
7970 content: "\f209";
7971 }
7971 }
7972 .fa-cc:before {
7972 .fa-cc:before {
7973 content: "\f20a";
7973 content: "\f20a";
7974 }
7974 }
7975 .fa-shekel:before,
7975 .fa-shekel:before,
7976 .fa-sheqel:before,
7976 .fa-sheqel:before,
7977 .fa-ils:before {
7977 .fa-ils:before {
7978 content: "\f20b";
7978 content: "\f20b";
7979 }
7979 }
7980 .fa-meanpath:before {
7980 .fa-meanpath:before {
7981 content: "\f20c";
7981 content: "\f20c";
7982 }
7982 }
7983 .fa-buysellads:before {
7983 .fa-buysellads:before {
7984 content: "\f20d";
7984 content: "\f20d";
7985 }
7985 }
7986 .fa-connectdevelop:before {
7986 .fa-connectdevelop:before {
7987 content: "\f20e";
7987 content: "\f20e";
7988 }
7988 }
7989 .fa-dashcube:before {
7989 .fa-dashcube:before {
7990 content: "\f210";
7990 content: "\f210";
7991 }
7991 }
7992 .fa-forumbee:before {
7992 .fa-forumbee:before {
7993 content: "\f211";
7993 content: "\f211";
7994 }
7994 }
7995 .fa-leanpub:before {
7995 .fa-leanpub:before {
7996 content: "\f212";
7996 content: "\f212";
7997 }
7997 }
7998 .fa-sellsy:before {
7998 .fa-sellsy:before {
7999 content: "\f213";
7999 content: "\f213";
8000 }
8000 }
8001 .fa-shirtsinbulk:before {
8001 .fa-shirtsinbulk:before {
8002 content: "\f214";
8002 content: "\f214";
8003 }
8003 }
8004 .fa-simplybuilt:before {
8004 .fa-simplybuilt:before {
8005 content: "\f215";
8005 content: "\f215";
8006 }
8006 }
8007 .fa-skyatlas:before {
8007 .fa-skyatlas:before {
8008 content: "\f216";
8008 content: "\f216";
8009 }
8009 }
8010 .fa-cart-plus:before {
8010 .fa-cart-plus:before {
8011 content: "\f217";
8011 content: "\f217";
8012 }
8012 }
8013 .fa-cart-arrow-down:before {
8013 .fa-cart-arrow-down:before {
8014 content: "\f218";
8014 content: "\f218";
8015 }
8015 }
8016 .fa-diamond:before {
8016 .fa-diamond:before {
8017 content: "\f219";
8017 content: "\f219";
8018 }
8018 }
8019 .fa-ship:before {
8019 .fa-ship:before {
8020 content: "\f21a";
8020 content: "\f21a";
8021 }
8021 }
8022 .fa-user-secret:before {
8022 .fa-user-secret:before {
8023 content: "\f21b";
8023 content: "\f21b";
8024 }
8024 }
8025 .fa-motorcycle:before {
8025 .fa-motorcycle:before {
8026 content: "\f21c";
8026 content: "\f21c";
8027 }
8027 }
8028 .fa-street-view:before {
8028 .fa-street-view:before {
8029 content: "\f21d";
8029 content: "\f21d";
8030 }
8030 }
8031 .fa-heartbeat:before {
8031 .fa-heartbeat:before {
8032 content: "\f21e";
8032 content: "\f21e";
8033 }
8033 }
8034 .fa-venus:before {
8034 .fa-venus:before {
8035 content: "\f221";
8035 content: "\f221";
8036 }
8036 }
8037 .fa-mars:before {
8037 .fa-mars:before {
8038 content: "\f222";
8038 content: "\f222";
8039 }
8039 }
8040 .fa-mercury:before {
8040 .fa-mercury:before {
8041 content: "\f223";
8041 content: "\f223";
8042 }
8042 }
8043 .fa-transgender:before {
8043 .fa-transgender:before {
8044 content: "\f224";
8044 content: "\f224";
8045 }
8045 }
8046 .fa-transgender-alt:before {
8046 .fa-transgender-alt:before {
8047 content: "\f225";
8047 content: "\f225";
8048 }
8048 }
8049 .fa-venus-double:before {
8049 .fa-venus-double:before {
8050 content: "\f226";
8050 content: "\f226";
8051 }
8051 }
8052 .fa-mars-double:before {
8052 .fa-mars-double:before {
8053 content: "\f227";
8053 content: "\f227";
8054 }
8054 }
8055 .fa-venus-mars:before {
8055 .fa-venus-mars:before {
8056 content: "\f228";
8056 content: "\f228";
8057 }
8057 }
8058 .fa-mars-stroke:before {
8058 .fa-mars-stroke:before {
8059 content: "\f229";
8059 content: "\f229";
8060 }
8060 }
8061 .fa-mars-stroke-v:before {
8061 .fa-mars-stroke-v:before {
8062 content: "\f22a";
8062 content: "\f22a";
8063 }
8063 }
8064 .fa-mars-stroke-h:before {
8064 .fa-mars-stroke-h:before {
8065 content: "\f22b";
8065 content: "\f22b";
8066 }
8066 }
8067 .fa-neuter:before {
8067 .fa-neuter:before {
8068 content: "\f22c";
8068 content: "\f22c";
8069 }
8069 }
8070 .fa-facebook-official:before {
8070 .fa-facebook-official:before {
8071 content: "\f230";
8071 content: "\f230";
8072 }
8072 }
8073 .fa-pinterest-p:before {
8073 .fa-pinterest-p:before {
8074 content: "\f231";
8074 content: "\f231";
8075 }
8075 }
8076 .fa-whatsapp:before {
8076 .fa-whatsapp:before {
8077 content: "\f232";
8077 content: "\f232";
8078 }
8078 }
8079 .fa-server:before {
8079 .fa-server:before {
8080 content: "\f233";
8080 content: "\f233";
8081 }
8081 }
8082 .fa-user-plus:before {
8082 .fa-user-plus:before {
8083 content: "\f234";
8083 content: "\f234";
8084 }
8084 }
8085 .fa-user-times:before {
8085 .fa-user-times:before {
8086 content: "\f235";
8086 content: "\f235";
8087 }
8087 }
8088 .fa-hotel:before,
8088 .fa-hotel:before,
8089 .fa-bed:before {
8089 .fa-bed:before {
8090 content: "\f236";
8090 content: "\f236";
8091 }
8091 }
8092 .fa-viacoin:before {
8092 .fa-viacoin:before {
8093 content: "\f237";
8093 content: "\f237";
8094 }
8094 }
8095 .fa-train:before {
8095 .fa-train:before {
8096 content: "\f238";
8096 content: "\f238";
8097 }
8097 }
8098 .fa-subway:before {
8098 .fa-subway:before {
8099 content: "\f239";
8099 content: "\f239";
8100 }
8100 }
8101 .fa-medium:before {
8101 .fa-medium:before {
8102 content: "\f23a";
8102 content: "\f23a";
8103 }
8103 }
8104 /*!
8104 /*!
8105 *
8105 *
8106 * IPython base
8106 * IPython base
8107 *
8107 *
8108 */
8108 */
8109 .modal.fade .modal-dialog {
8109 .modal.fade .modal-dialog {
8110 -webkit-transform: translate(0, 0);
8110 -webkit-transform: translate(0, 0);
8111 -ms-transform: translate(0, 0);
8111 -ms-transform: translate(0, 0);
8112 -o-transform: translate(0, 0);
8112 -o-transform: translate(0, 0);
8113 transform: translate(0, 0);
8113 transform: translate(0, 0);
8114 }
8114 }
8115 code {
8115 code {
8116 color: #000000;
8116 color: #000000;
8117 }
8117 }
8118 pre {
8118 pre {
8119 font-size: inherit;
8119 font-size: inherit;
8120 line-height: inherit;
8120 line-height: inherit;
8121 }
8121 }
8122 label {
8122 label {
8123 font-weight: normal;
8123 font-weight: normal;
8124 }
8124 }
8125 /* Make the page background atleast 100% the height of the view port */
8125 /* Make the page background atleast 100% the height of the view port */
8126 /* Make the page itself atleast 70% the height of the view port */
8126 /* Make the page itself atleast 70% the height of the view port */
8127 .border-box-sizing {
8127 .border-box-sizing {
8128 box-sizing: border-box;
8128 box-sizing: border-box;
8129 -moz-box-sizing: border-box;
8129 -moz-box-sizing: border-box;
8130 -webkit-box-sizing: border-box;
8130 -webkit-box-sizing: border-box;
8131 }
8131 }
8132 .corner-all {
8132 .corner-all {
8133 border-radius: 2px;
8133 border-radius: 2px;
8134 }
8134 }
8135 .no-padding {
8135 .no-padding {
8136 padding: 0px;
8136 padding: 0px;
8137 }
8137 }
8138 /* Flexible box model classes */
8138 /* Flexible box model classes */
8139 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
8139 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
8140 /* This file is a compatability layer. It allows the usage of flexible box
8140 /* This file is a compatability layer. It allows the usage of flexible box
8141 model layouts accross multiple browsers, including older browsers. The newest,
8141 model layouts accross multiple browsers, including older browsers. The newest,
8142 universal implementation of the flexible box model is used when available (see
8142 universal implementation of the flexible box model is used when available (see
8143 `Modern browsers` comments below). Browsers that are known to implement this
8143 `Modern browsers` comments below). Browsers that are known to implement this
8144 new spec completely include:
8144 new spec completely include:
8145
8145
8146 Firefox 28.0+
8146 Firefox 28.0+
8147 Chrome 29.0+
8147 Chrome 29.0+
8148 Internet Explorer 11+
8148 Internet Explorer 11+
8149 Opera 17.0+
8149 Opera 17.0+
8150
8150
8151 Browsers not listed, including Safari, are supported via the styling under the
8151 Browsers not listed, including Safari, are supported via the styling under the
8152 `Old browsers` comments below.
8152 `Old browsers` comments below.
8153 */
8153 */
8154 .hbox {
8154 .hbox {
8155 /* Old browsers */
8155 /* Old browsers */
8156 display: -webkit-box;
8156 display: -webkit-box;
8157 -webkit-box-orient: horizontal;
8157 -webkit-box-orient: horizontal;
8158 -webkit-box-align: stretch;
8158 -webkit-box-align: stretch;
8159 display: -moz-box;
8159 display: -moz-box;
8160 -moz-box-orient: horizontal;
8160 -moz-box-orient: horizontal;
8161 -moz-box-align: stretch;
8161 -moz-box-align: stretch;
8162 display: box;
8162 display: box;
8163 box-orient: horizontal;
8163 box-orient: horizontal;
8164 box-align: stretch;
8164 box-align: stretch;
8165 /* Modern browsers */
8165 /* Modern browsers */
8166 display: flex;
8166 display: flex;
8167 flex-direction: row;
8167 flex-direction: row;
8168 align-items: stretch;
8168 align-items: stretch;
8169 }
8169 }
8170 .hbox > * {
8170 .hbox > * {
8171 /* Old browsers */
8171 /* Old browsers */
8172 -webkit-box-flex: 0;
8172 -webkit-box-flex: 0;
8173 -moz-box-flex: 0;
8173 -moz-box-flex: 0;
8174 box-flex: 0;
8174 box-flex: 0;
8175 /* Modern browsers */
8175 /* Modern browsers */
8176 flex: none;
8176 flex: none;
8177 }
8177 }
8178 .vbox {
8178 .vbox {
8179 /* Old browsers */
8179 /* Old browsers */
8180 display: -webkit-box;
8180 display: -webkit-box;
8181 -webkit-box-orient: vertical;
8181 -webkit-box-orient: vertical;
8182 -webkit-box-align: stretch;
8182 -webkit-box-align: stretch;
8183 display: -moz-box;
8183 display: -moz-box;
8184 -moz-box-orient: vertical;
8184 -moz-box-orient: vertical;
8185 -moz-box-align: stretch;
8185 -moz-box-align: stretch;
8186 display: box;
8186 display: box;
8187 box-orient: vertical;
8187 box-orient: vertical;
8188 box-align: stretch;
8188 box-align: stretch;
8189 /* Modern browsers */
8189 /* Modern browsers */
8190 display: flex;
8190 display: flex;
8191 flex-direction: column;
8191 flex-direction: column;
8192 align-items: stretch;
8192 align-items: stretch;
8193 }
8193 }
8194 .vbox > * {
8194 .vbox > * {
8195 /* Old browsers */
8195 /* Old browsers */
8196 -webkit-box-flex: 0;
8196 -webkit-box-flex: 0;
8197 -moz-box-flex: 0;
8197 -moz-box-flex: 0;
8198 box-flex: 0;
8198 box-flex: 0;
8199 /* Modern browsers */
8199 /* Modern browsers */
8200 flex: none;
8200 flex: none;
8201 }
8201 }
8202 .hbox.reverse,
8202 .hbox.reverse,
8203 .vbox.reverse,
8203 .vbox.reverse,
8204 .reverse {
8204 .reverse {
8205 /* Old browsers */
8205 /* Old browsers */
8206 -webkit-box-direction: reverse;
8206 -webkit-box-direction: reverse;
8207 -moz-box-direction: reverse;
8207 -moz-box-direction: reverse;
8208 box-direction: reverse;
8208 box-direction: reverse;
8209 /* Modern browsers */
8209 /* Modern browsers */
8210 flex-direction: row-reverse;
8210 flex-direction: row-reverse;
8211 }
8211 }
8212 .hbox.box-flex0,
8212 .hbox.box-flex0,
8213 .vbox.box-flex0,
8213 .vbox.box-flex0,
8214 .box-flex0 {
8214 .box-flex0 {
8215 /* Old browsers */
8215 /* Old browsers */
8216 -webkit-box-flex: 0;
8216 -webkit-box-flex: 0;
8217 -moz-box-flex: 0;
8217 -moz-box-flex: 0;
8218 box-flex: 0;
8218 box-flex: 0;
8219 /* Modern browsers */
8219 /* Modern browsers */
8220 flex: none;
8220 flex: none;
8221 width: auto;
8221 width: auto;
8222 }
8222 }
8223 .hbox.box-flex1,
8223 .hbox.box-flex1,
8224 .vbox.box-flex1,
8224 .vbox.box-flex1,
8225 .box-flex1 {
8225 .box-flex1 {
8226 /* Old browsers */
8226 /* Old browsers */
8227 -webkit-box-flex: 1;
8227 -webkit-box-flex: 1;
8228 -moz-box-flex: 1;
8228 -moz-box-flex: 1;
8229 box-flex: 1;
8229 box-flex: 1;
8230 /* Modern browsers */
8230 /* Modern browsers */
8231 flex: 1;
8231 flex: 1;
8232 }
8232 }
8233 .hbox.box-flex,
8233 .hbox.box-flex,
8234 .vbox.box-flex,
8234 .vbox.box-flex,
8235 .box-flex {
8235 .box-flex {
8236 /* Old browsers */
8236 /* Old browsers */
8237 /* Old browsers */
8237 /* Old browsers */
8238 -webkit-box-flex: 1;
8238 -webkit-box-flex: 1;
8239 -moz-box-flex: 1;
8239 -moz-box-flex: 1;
8240 box-flex: 1;
8240 box-flex: 1;
8241 /* Modern browsers */
8241 /* Modern browsers */
8242 flex: 1;
8242 flex: 1;
8243 }
8243 }
8244 .hbox.box-flex2,
8244 .hbox.box-flex2,
8245 .vbox.box-flex2,
8245 .vbox.box-flex2,
8246 .box-flex2 {
8246 .box-flex2 {
8247 /* Old browsers */
8247 /* Old browsers */
8248 -webkit-box-flex: 2;
8248 -webkit-box-flex: 2;
8249 -moz-box-flex: 2;
8249 -moz-box-flex: 2;
8250 box-flex: 2;
8250 box-flex: 2;
8251 /* Modern browsers */
8251 /* Modern browsers */
8252 flex: 2;
8252 flex: 2;
8253 }
8253 }
8254 .box-group1 {
8254 .box-group1 {
8255 /* Deprecated */
8255 /* Deprecated */
8256 -webkit-box-flex-group: 1;
8256 -webkit-box-flex-group: 1;
8257 -moz-box-flex-group: 1;
8257 -moz-box-flex-group: 1;
8258 box-flex-group: 1;
8258 box-flex-group: 1;
8259 }
8259 }
8260 .box-group2 {
8260 .box-group2 {
8261 /* Deprecated */
8261 /* Deprecated */
8262 -webkit-box-flex-group: 2;
8262 -webkit-box-flex-group: 2;
8263 -moz-box-flex-group: 2;
8263 -moz-box-flex-group: 2;
8264 box-flex-group: 2;
8264 box-flex-group: 2;
8265 }
8265 }
8266 .hbox.start,
8266 .hbox.start,
8267 .vbox.start,
8267 .vbox.start,
8268 .start {
8268 .start {
8269 /* Old browsers */
8269 /* Old browsers */
8270 -webkit-box-pack: start;
8270 -webkit-box-pack: start;
8271 -moz-box-pack: start;
8271 -moz-box-pack: start;
8272 box-pack: start;
8272 box-pack: start;
8273 /* Modern browsers */
8273 /* Modern browsers */
8274 justify-content: flex-start;
8274 justify-content: flex-start;
8275 }
8275 }
8276 .hbox.end,
8276 .hbox.end,
8277 .vbox.end,
8277 .vbox.end,
8278 .end {
8278 .end {
8279 /* Old browsers */
8279 /* Old browsers */
8280 -webkit-box-pack: end;
8280 -webkit-box-pack: end;
8281 -moz-box-pack: end;
8281 -moz-box-pack: end;
8282 box-pack: end;
8282 box-pack: end;
8283 /* Modern browsers */
8283 /* Modern browsers */
8284 justify-content: flex-end;
8284 justify-content: flex-end;
8285 }
8285 }
8286 .hbox.center,
8286 .hbox.center,
8287 .vbox.center,
8287 .vbox.center,
8288 .center {
8288 .center {
8289 /* Old browsers */
8289 /* Old browsers */
8290 -webkit-box-pack: center;
8290 -webkit-box-pack: center;
8291 -moz-box-pack: center;
8291 -moz-box-pack: center;
8292 box-pack: center;
8292 box-pack: center;
8293 /* Modern browsers */
8293 /* Modern browsers */
8294 justify-content: center;
8294 justify-content: center;
8295 }
8295 }
8296 .hbox.baseline,
8296 .hbox.baseline,
8297 .vbox.baseline,
8297 .vbox.baseline,
8298 .baseline {
8298 .baseline {
8299 /* Old browsers */
8299 /* Old browsers */
8300 -webkit-box-pack: baseline;
8300 -webkit-box-pack: baseline;
8301 -moz-box-pack: baseline;
8301 -moz-box-pack: baseline;
8302 box-pack: baseline;
8302 box-pack: baseline;
8303 /* Modern browsers */
8303 /* Modern browsers */
8304 justify-content: baseline;
8304 justify-content: baseline;
8305 }
8305 }
8306 .hbox.stretch,
8306 .hbox.stretch,
8307 .vbox.stretch,
8307 .vbox.stretch,
8308 .stretch {
8308 .stretch {
8309 /* Old browsers */
8309 /* Old browsers */
8310 -webkit-box-pack: stretch;
8310 -webkit-box-pack: stretch;
8311 -moz-box-pack: stretch;
8311 -moz-box-pack: stretch;
8312 box-pack: stretch;
8312 box-pack: stretch;
8313 /* Modern browsers */
8313 /* Modern browsers */
8314 justify-content: stretch;
8314 justify-content: stretch;
8315 }
8315 }
8316 .hbox.align-start,
8316 .hbox.align-start,
8317 .vbox.align-start,
8317 .vbox.align-start,
8318 .align-start {
8318 .align-start {
8319 /* Old browsers */
8319 /* Old browsers */
8320 -webkit-box-align: start;
8320 -webkit-box-align: start;
8321 -moz-box-align: start;
8321 -moz-box-align: start;
8322 box-align: start;
8322 box-align: start;
8323 /* Modern browsers */
8323 /* Modern browsers */
8324 align-items: flex-start;
8324 align-items: flex-start;
8325 }
8325 }
8326 .hbox.align-end,
8326 .hbox.align-end,
8327 .vbox.align-end,
8327 .vbox.align-end,
8328 .align-end {
8328 .align-end {
8329 /* Old browsers */
8329 /* Old browsers */
8330 -webkit-box-align: end;
8330 -webkit-box-align: end;
8331 -moz-box-align: end;
8331 -moz-box-align: end;
8332 box-align: end;
8332 box-align: end;
8333 /* Modern browsers */
8333 /* Modern browsers */
8334 align-items: flex-end;
8334 align-items: flex-end;
8335 }
8335 }
8336 .hbox.align-center,
8336 .hbox.align-center,
8337 .vbox.align-center,
8337 .vbox.align-center,
8338 .align-center {
8338 .align-center {
8339 /* Old browsers */
8339 /* Old browsers */
8340 -webkit-box-align: center;
8340 -webkit-box-align: center;
8341 -moz-box-align: center;
8341 -moz-box-align: center;
8342 box-align: center;
8342 box-align: center;
8343 /* Modern browsers */
8343 /* Modern browsers */
8344 align-items: center;
8344 align-items: center;
8345 }
8345 }
8346 .hbox.align-baseline,
8346 .hbox.align-baseline,
8347 .vbox.align-baseline,
8347 .vbox.align-baseline,
8348 .align-baseline {
8348 .align-baseline {
8349 /* Old browsers */
8349 /* Old browsers */
8350 -webkit-box-align: baseline;
8350 -webkit-box-align: baseline;
8351 -moz-box-align: baseline;
8351 -moz-box-align: baseline;
8352 box-align: baseline;
8352 box-align: baseline;
8353 /* Modern browsers */
8353 /* Modern browsers */
8354 align-items: baseline;
8354 align-items: baseline;
8355 }
8355 }
8356 .hbox.align-stretch,
8356 .hbox.align-stretch,
8357 .vbox.align-stretch,
8357 .vbox.align-stretch,
8358 .align-stretch {
8358 .align-stretch {
8359 /* Old browsers */
8359 /* Old browsers */
8360 -webkit-box-align: stretch;
8360 -webkit-box-align: stretch;
8361 -moz-box-align: stretch;
8361 -moz-box-align: stretch;
8362 box-align: stretch;
8362 box-align: stretch;
8363 /* Modern browsers */
8363 /* Modern browsers */
8364 align-items: stretch;
8364 align-items: stretch;
8365 }
8365 }
8366 div.error {
8366 div.error {
8367 margin: 2em;
8367 margin: 2em;
8368 text-align: center;
8368 text-align: center;
8369 }
8369 }
8370 div.error > h1 {
8370 div.error > h1 {
8371 font-size: 500%;
8371 font-size: 500%;
8372 line-height: normal;
8372 line-height: normal;
8373 }
8373 }
8374 div.error > p {
8374 div.error > p {
8375 font-size: 200%;
8375 font-size: 200%;
8376 line-height: normal;
8376 line-height: normal;
8377 }
8377 }
8378 div.traceback-wrapper {
8378 div.traceback-wrapper {
8379 text-align: left;
8379 text-align: left;
8380 max-width: 800px;
8380 max-width: 800px;
8381 margin: auto;
8381 margin: auto;
8382 }
8382 }
8383 /**
8383 /**
8384 * Primary styles
8384 * Primary styles
8385 *
8385 *
8386 * Author: IPython Development Team
8386 * Author: IPython Development Team
8387 */
8387 */
8388 body {
8388 body {
8389 background-color: #ffffff;
8389 background-color: #ffffff;
8390 /* This makes sure that the body covers the entire window and needs to
8390 /* This makes sure that the body covers the entire window and needs to
8391 be in a different element than the display: box in wrapper below */
8391 be in a different element than the display: box in wrapper below */
8392 position: absolute;
8392 position: absolute;
8393 left: 0px;
8393 left: 0px;
8394 right: 0px;
8394 right: 0px;
8395 top: 0px;
8395 top: 0px;
8396 bottom: 0px;
8396 bottom: 0px;
8397 overflow: visible;
8397 overflow: visible;
8398 }
8398 }
8399 #header {
8399 #header {
8400 /* Initially hidden to prevent FLOUC */
8400 /* Initially hidden to prevent FLOUC */
8401 display: none;
8401 display: none;
8402 background-color: #ffffff;
8402 background-color: #ffffff;
8403 /* Display over codemirror */
8403 /* Display over codemirror */
8404 position: relative;
8404 position: relative;
8405 z-index: 100;
8405 z-index: 100;
8406 }
8406 }
8407 #header #header-container {
8407 #header #header-container {
8408 padding-bottom: 5px;
8408 padding-bottom: 5px;
8409 padding-top: 5px;
8409 padding-top: 5px;
8410 box-sizing: border-box;
8410 box-sizing: border-box;
8411 -moz-box-sizing: border-box;
8411 -moz-box-sizing: border-box;
8412 -webkit-box-sizing: border-box;
8412 -webkit-box-sizing: border-box;
8413 }
8413 }
8414 #header .header-bar {
8414 #header .header-bar {
8415 width: 100%;
8415 width: 100%;
8416 height: 1px;
8416 height: 1px;
8417 background: #e7e7e7;
8417 background: #e7e7e7;
8418 margin-bottom: -1px;
8418 margin-bottom: -1px;
8419 }
8419 }
8420 @media print {
8420 @media print {
8421 #header {
8421 #header {
8422 display: none !important;
8422 display: none !important;
8423 }
8423 }
8424 }
8424 }
8425 #header-spacer {
8425 #header-spacer {
8426 width: 100%;
8426 width: 100%;
8427 visibility: hidden;
8427 visibility: hidden;
8428 }
8428 }
8429 @media print {
8429 @media print {
8430 #header-spacer {
8430 #header-spacer {
8431 display: none;
8431 display: none;
8432 }
8432 }
8433 }
8433 }
8434 #ipython_notebook {
8434 #ipython_notebook {
8435 padding-left: 0px;
8435 padding-left: 0px;
8436 padding-top: 1px;
8436 padding-top: 1px;
8437 padding-bottom: 1px;
8437 padding-bottom: 1px;
8438 }
8438 }
8439 @media (max-width: 991px) {
8439 @media (max-width: 991px) {
8440 #ipython_notebook {
8440 #ipython_notebook {
8441 margin-left: 10px;
8441 margin-left: 10px;
8442 }
8442 }
8443 }
8443 }
8444 #noscript {
8444 #noscript {
8445 width: auto;
8445 width: auto;
8446 padding-top: 16px;
8446 padding-top: 16px;
8447 padding-bottom: 16px;
8447 padding-bottom: 16px;
8448 text-align: center;
8448 text-align: center;
8449 font-size: 22px;
8449 font-size: 22px;
8450 color: red;
8450 color: red;
8451 font-weight: bold;
8451 font-weight: bold;
8452 }
8452 }
8453 #ipython_notebook img {
8453 #ipython_notebook img {
8454 height: 28px;
8454 height: 28px;
8455 }
8455 }
8456 #site {
8456 #site {
8457 -webkit-transform: translateZ(0);
8457 -webkit-transform: translateZ(0);
8458 -moz-transform: translateZ(0);
8458 -moz-transform: translateZ(0);
8459 -ms-transform: translateZ(0);
8459 -ms-transform: translateZ(0);
8460 -o-transform: translateZ(0);
8460 -o-transform: translateZ(0);
8461 transform: translateZ(0);
8461 transform: translateZ(0);
8462 width: 100%;
8462 width: 100%;
8463 display: none;
8463 display: none;
8464 box-sizing: border-box;
8464 box-sizing: border-box;
8465 -moz-box-sizing: border-box;
8465 -moz-box-sizing: border-box;
8466 -webkit-box-sizing: border-box;
8466 -webkit-box-sizing: border-box;
8467 overflow: auto;
8467 overflow: auto;
8468 }
8468 }
8469 @media print {
8469 @media print {
8470 #site {
8470 #site {
8471 height: auto !important;
8471 height: auto !important;
8472 }
8472 }
8473 }
8473 }
8474 /* Smaller buttons */
8474 /* Smaller buttons */
8475 .ui-button .ui-button-text {
8475 .ui-button .ui-button-text {
8476 padding: 0.2em 0.8em;
8476 padding: 0.2em 0.8em;
8477 font-size: 77%;
8477 font-size: 77%;
8478 }
8478 }
8479 input.ui-button {
8479 input.ui-button {
8480 padding: 0.3em 0.9em;
8480 padding: 0.3em 0.9em;
8481 }
8481 }
8482 span#login_widget {
8482 span#login_widget {
8483 float: right;
8483 float: right;
8484 }
8484 }
8485 span#login_widget > .button,
8485 span#login_widget > .button,
8486 #logout {
8486 #logout {
8487 color: #333333;
8487 color: #333333;
8488 background-color: #ffffff;
8488 background-color: #ffffff;
8489 border-color: #cccccc;
8489 border-color: #cccccc;
8490 }
8490 }
8491 span#login_widget > .button:hover,
8491 span#login_widget > .button:hover,
8492 #logout:hover,
8492 #logout:hover,
8493 span#login_widget > .button:focus,
8493 span#login_widget > .button:focus,
8494 #logout:focus,
8494 #logout:focus,
8495 span#login_widget > .button.focus,
8495 span#login_widget > .button.focus,
8496 #logout.focus,
8496 #logout.focus,
8497 span#login_widget > .button:active,
8497 span#login_widget > .button:active,
8498 #logout:active,
8498 #logout:active,
8499 span#login_widget > .button.active,
8499 span#login_widget > .button.active,
8500 #logout.active,
8500 #logout.active,
8501 .open > .dropdown-togglespan#login_widget > .button,
8501 .open > .dropdown-togglespan#login_widget > .button,
8502 .open > .dropdown-toggle#logout {
8502 .open > .dropdown-toggle#logout {
8503 color: #333333;
8503 color: #333333;
8504 background-color: #e6e6e6;
8504 background-color: #e6e6e6;
8505 border-color: #adadad;
8505 border-color: #adadad;
8506 }
8506 }
8507 span#login_widget > .button:active,
8507 span#login_widget > .button:active,
8508 #logout:active,
8508 #logout:active,
8509 span#login_widget > .button.active,
8509 span#login_widget > .button.active,
8510 #logout.active,
8510 #logout.active,
8511 .open > .dropdown-togglespan#login_widget > .button,
8511 .open > .dropdown-togglespan#login_widget > .button,
8512 .open > .dropdown-toggle#logout {
8512 .open > .dropdown-toggle#logout {
8513 background-image: none;
8513 background-image: none;
8514 }
8514 }
8515 span#login_widget > .button.disabled,
8515 span#login_widget > .button.disabled,
8516 #logout.disabled,
8516 #logout.disabled,
8517 span#login_widget > .button[disabled],
8517 span#login_widget > .button[disabled],
8518 #logout[disabled],
8518 #logout[disabled],
8519 fieldset[disabled] span#login_widget > .button,
8519 fieldset[disabled] span#login_widget > .button,
8520 fieldset[disabled] #logout,
8520 fieldset[disabled] #logout,
8521 span#login_widget > .button.disabled:hover,
8521 span#login_widget > .button.disabled:hover,
8522 #logout.disabled:hover,
8522 #logout.disabled:hover,
8523 span#login_widget > .button[disabled]:hover,
8523 span#login_widget > .button[disabled]:hover,
8524 #logout[disabled]:hover,
8524 #logout[disabled]:hover,
8525 fieldset[disabled] span#login_widget > .button:hover,
8525 fieldset[disabled] span#login_widget > .button:hover,
8526 fieldset[disabled] #logout:hover,
8526 fieldset[disabled] #logout:hover,
8527 span#login_widget > .button.disabled:focus,
8527 span#login_widget > .button.disabled:focus,
8528 #logout.disabled:focus,
8528 #logout.disabled:focus,
8529 span#login_widget > .button[disabled]:focus,
8529 span#login_widget > .button[disabled]:focus,
8530 #logout[disabled]:focus,
8530 #logout[disabled]:focus,
8531 fieldset[disabled] span#login_widget > .button:focus,
8531 fieldset[disabled] span#login_widget > .button:focus,
8532 fieldset[disabled] #logout:focus,
8532 fieldset[disabled] #logout:focus,
8533 span#login_widget > .button.disabled.focus,
8533 span#login_widget > .button.disabled.focus,
8534 #logout.disabled.focus,
8534 #logout.disabled.focus,
8535 span#login_widget > .button[disabled].focus,
8535 span#login_widget > .button[disabled].focus,
8536 #logout[disabled].focus,
8536 #logout[disabled].focus,
8537 fieldset[disabled] span#login_widget > .button.focus,
8537 fieldset[disabled] span#login_widget > .button.focus,
8538 fieldset[disabled] #logout.focus,
8538 fieldset[disabled] #logout.focus,
8539 span#login_widget > .button.disabled:active,
8539 span#login_widget > .button.disabled:active,
8540 #logout.disabled:active,
8540 #logout.disabled:active,
8541 span#login_widget > .button[disabled]:active,
8541 span#login_widget > .button[disabled]:active,
8542 #logout[disabled]:active,
8542 #logout[disabled]:active,
8543 fieldset[disabled] span#login_widget > .button:active,
8543 fieldset[disabled] span#login_widget > .button:active,
8544 fieldset[disabled] #logout:active,
8544 fieldset[disabled] #logout:active,
8545 span#login_widget > .button.disabled.active,
8545 span#login_widget > .button.disabled.active,
8546 #logout.disabled.active,
8546 #logout.disabled.active,
8547 span#login_widget > .button[disabled].active,
8547 span#login_widget > .button[disabled].active,
8548 #logout[disabled].active,
8548 #logout[disabled].active,
8549 fieldset[disabled] span#login_widget > .button.active,
8549 fieldset[disabled] span#login_widget > .button.active,
8550 fieldset[disabled] #logout.active {
8550 fieldset[disabled] #logout.active {
8551 background-color: #ffffff;
8551 background-color: #ffffff;
8552 border-color: #cccccc;
8552 border-color: #cccccc;
8553 }
8553 }
8554 span#login_widget > .button .badge,
8554 span#login_widget > .button .badge,
8555 #logout .badge {
8555 #logout .badge {
8556 color: #ffffff;
8556 color: #ffffff;
8557 background-color: #333333;
8557 background-color: #333333;
8558 }
8558 }
8559 .nav-header {
8559 .nav-header {
8560 text-transform: none;
8560 text-transform: none;
8561 }
8561 }
8562 #header > span {
8562 #header > span {
8563 margin-top: 10px;
8563 margin-top: 10px;
8564 }
8564 }
8565 .modal_stretch .modal-dialog {
8565 .modal_stretch .modal-dialog {
8566 /* Old browsers */
8566 /* Old browsers */
8567 display: -webkit-box;
8567 display: -webkit-box;
8568 -webkit-box-orient: vertical;
8568 -webkit-box-orient: vertical;
8569 -webkit-box-align: stretch;
8569 -webkit-box-align: stretch;
8570 display: -moz-box;
8570 display: -moz-box;
8571 -moz-box-orient: vertical;
8571 -moz-box-orient: vertical;
8572 -moz-box-align: stretch;
8572 -moz-box-align: stretch;
8573 display: box;
8573 display: box;
8574 box-orient: vertical;
8574 box-orient: vertical;
8575 box-align: stretch;
8575 box-align: stretch;
8576 /* Modern browsers */
8576 /* Modern browsers */
8577 display: flex;
8577 display: flex;
8578 flex-direction: column;
8578 flex-direction: column;
8579 align-items: stretch;
8579 align-items: stretch;
8580 min-height: 80%;
8580 min-height: 80%;
8581 }
8581 }
8582 .modal_stretch .modal-dialog .modal-body {
8582 .modal_stretch .modal-dialog .modal-body {
8583 max-height: none;
8583 max-height: none;
8584 flex: 1;
8584 flex: 1;
8585 }
8585 }
8586 @media (min-width: 768px) {
8586 @media (min-width: 768px) {
8587 .modal .modal-dialog {
8587 .modal .modal-dialog {
8588 width: 700px;
8588 width: 700px;
8589 }
8589 }
8590 }
8590 }
8591 @media (min-width: 768px) {
8592 select.form-control {
8593 margin-left: 12px;
8594 margin-right: 12px;
8595 }
8596 }
8591 /*!
8597 /*!
8592 *
8598 *
8593 * IPython auth
8599 * IPython auth
8594 *
8600 *
8595 */
8601 */
8596 .center-nav {
8602 .center-nav {
8597 display: inline-block;
8603 display: inline-block;
8598 margin-bottom: -4px;
8604 margin-bottom: -4px;
8599 }
8605 }
8600 /*!
8606 /*!
8601 *
8607 *
8602 * IPython tree view
8608 * IPython tree view
8603 *
8609 *
8604 */
8610 */
8605 /* We need an invisible input field on top of the sentense*/
8611 /* We need an invisible input field on top of the sentense*/
8606 /* "Drag file onto the list ..." */
8612 /* "Drag file onto the list ..." */
8607 .alternate_upload {
8613 .alternate_upload {
8608 background-color: none;
8614 background-color: none;
8609 display: inline;
8615 display: inline;
8610 }
8616 }
8611 .alternate_upload.form {
8617 .alternate_upload.form {
8612 padding: 0;
8618 padding: 0;
8613 margin: 0;
8619 margin: 0;
8614 }
8620 }
8615 .alternate_upload input.fileinput {
8621 .alternate_upload input.fileinput {
8616 display: inline;
8622 display: inline;
8617 opacity: 0;
8623 opacity: 0;
8618 z-index: 2;
8624 z-index: 2;
8619 width: 12ex;
8625 width: 12ex;
8620 margin-right: -12ex;
8626 margin-right: -12ex;
8621 }
8627 }
8622 .alternate_upload .input-overlay {
8628 .alternate_upload .input-overlay {
8623 display: inline-block;
8629 display: inline-block;
8624 font-weight: bold;
8630 font-weight: bold;
8625 line-height: 1em;
8631 line-height: 1em;
8626 }
8632 }
8627 /**
8633 /**
8628 * Primary styles
8634 * Primary styles
8629 *
8635 *
8630 * Author: IPython Development Team
8636 * Author: IPython Development Team
8631 */
8637 */
8632 ul#tabs {
8638 ul#tabs {
8633 margin-bottom: 4px;
8639 margin-bottom: 4px;
8634 }
8640 }
8635 ul#tabs a {
8641 ul#tabs a {
8636 padding-top: 6px;
8642 padding-top: 6px;
8637 padding-bottom: 4px;
8643 padding-bottom: 4px;
8638 }
8644 }
8639 ul.breadcrumb a:focus,
8645 ul.breadcrumb a:focus,
8640 ul.breadcrumb a:hover {
8646 ul.breadcrumb a:hover {
8641 text-decoration: none;
8647 text-decoration: none;
8642 }
8648 }
8643 ul.breadcrumb i.icon-home {
8649 ul.breadcrumb i.icon-home {
8644 font-size: 16px;
8650 font-size: 16px;
8645 margin-right: 4px;
8651 margin-right: 4px;
8646 }
8652 }
8647 ul.breadcrumb span {
8653 ul.breadcrumb span {
8648 color: #5e5e5e;
8654 color: #5e5e5e;
8649 }
8655 }
8650 .list_toolbar {
8656 .list_toolbar {
8651 padding: 4px 0 4px 0;
8657 padding: 4px 0 4px 0;
8652 vertical-align: middle;
8658 vertical-align: middle;
8653 }
8659 }
8654 .list_toolbar .tree-buttons {
8660 .list_toolbar .tree-buttons {
8655 padding-top: 1px;
8661 padding-top: 1px;
8656 }
8662 }
8657 .list_toolbar [class*="span"] {
8663 .list_toolbar [class*="span"] {
8658 min-height: 24px;
8664 min-height: 24px;
8659 }
8665 }
8660 .list_header {
8666 .list_header {
8661 font-weight: bold;
8667 font-weight: bold;
8662 }
8668 }
8663 .list_container {
8669 .list_container {
8664 margin-top: 4px;
8670 margin-top: 4px;
8665 margin-bottom: 20px;
8671 margin-bottom: 20px;
8666 border: 1px solid #dddddd;
8672 border: 1px solid #dddddd;
8667 border-radius: 2px;
8673 border-radius: 2px;
8668 }
8674 }
8669 .list_container > div {
8675 .list_container > div {
8670 border-bottom: 1px solid #dddddd;
8676 border-bottom: 1px solid #dddddd;
8671 }
8677 }
8672 .list_container > div:hover .list-item {
8678 .list_container > div:hover .list-item {
8673 background-color: red;
8679 background-color: red;
8674 }
8680 }
8675 .list_container > div:last-child {
8681 .list_container > div:last-child {
8676 border: none;
8682 border: none;
8677 }
8683 }
8678 .list_item:hover .list_item {
8684 .list_item:hover .list_item {
8679 background-color: #dddddd;
8685 background-color: #dddddd;
8680 }
8686 }
8681 .list_item a {
8687 .list_item a {
8682 text-decoration: none;
8688 text-decoration: none;
8683 }
8689 }
8684 .action_col {
8690 .action_col {
8685 text-align: right;
8691 text-align: right;
8686 }
8692 }
8687 .list_header > div,
8693 .list_header > div,
8688 .list_item > div {
8694 .list_item > div {
8689 padding-top: 4px;
8695 padding-top: 4px;
8690 padding-bottom: 4px;
8696 padding-bottom: 4px;
8691 padding-left: 7px;
8697 padding-left: 7px;
8692 padding-right: 7px;
8698 padding-right: 7px;
8693 line-height: 22px;
8699 line-height: 22px;
8694 }
8700 }
8695 .item_name {
8701 .item_name {
8696 line-height: 22px;
8702 line-height: 22px;
8697 height: 24px;
8703 height: 24px;
8698 }
8704 }
8699 .item_icon {
8705 .item_icon {
8700 font-size: 14px;
8706 font-size: 14px;
8701 color: #5e5e5e;
8707 color: #5e5e5e;
8702 margin-right: 7px;
8708 margin-right: 7px;
8703 }
8709 }
8704 .item_buttons {
8710 .item_buttons {
8705 line-height: 1em;
8711 line-height: 1em;
8706 margin-left: -5px;
8712 margin-left: -5px;
8707 }
8713 }
8708 .item_buttons .btn {
8714 .item_buttons .btn {
8709 min-width: 13ex;
8715 min-width: 13ex;
8710 }
8716 }
8711 .item_buttons .btn-group,
8717 .item_buttons .btn-group,
8712 .item_buttons .input-group {
8718 .item_buttons .input-group {
8713 float: left;
8719 float: left;
8714 }
8720 }
8715 .item_buttons > .btn,
8721 .item_buttons > .btn,
8716 .item_buttons > .btn-group,
8722 .item_buttons > .btn-group,
8717 .item_buttons > .input-group {
8723 .item_buttons > .input-group {
8718 margin-left: 5px;
8724 margin-left: 5px;
8719 }
8725 }
8720 .toolbar_info {
8726 .toolbar_info {
8721 height: 24px;
8727 height: 24px;
8722 line-height: 24px;
8728 line-height: 24px;
8723 }
8729 }
8724 input.nbname_input,
8730 input.nbname_input,
8725 input.engine_num_input {
8731 input.engine_num_input {
8726 padding-top: 3px;
8732 padding-top: 3px;
8727 padding-bottom: 3px;
8733 padding-bottom: 3px;
8728 height: 22px;
8734 height: 22px;
8729 line-height: 14px;
8735 line-height: 14px;
8730 margin: 0px;
8736 margin: 0px;
8731 }
8737 }
8732 input.engine_num_input {
8738 input.engine_num_input {
8733 width: 60px;
8739 width: 60px;
8734 }
8740 }
8735 .highlight_text {
8741 .highlight_text {
8736 color: blue;
8742 color: blue;
8737 }
8743 }
8738 #project_name > .breadcrumb {
8744 #project_name > .breadcrumb {
8739 padding: 0px;
8745 padding: 0px;
8740 margin-bottom: 0px;
8746 margin-bottom: 0px;
8741 background-color: transparent;
8747 background-color: transparent;
8742 font-weight: bold;
8748 font-weight: bold;
8743 }
8749 }
8744 .tab-content .row {
8750 .tab-content .row {
8745 margin-left: 0px;
8751 margin-left: 0px;
8746 margin-right: 0px;
8752 margin-right: 0px;
8747 }
8753 }
8748 .folder_icon:before {
8754 .folder_icon:before {
8749 display: inline-block;
8755 display: inline-block;
8750 font: normal normal normal 14px/1 FontAwesome;
8756 font: normal normal normal 14px/1 FontAwesome;
8751 font-size: inherit;
8757 font-size: inherit;
8752 text-rendering: auto;
8758 text-rendering: auto;
8753 -webkit-font-smoothing: antialiased;
8759 -webkit-font-smoothing: antialiased;
8754 -moz-osx-font-smoothing: grayscale;
8760 -moz-osx-font-smoothing: grayscale;
8755 transform: translate(0, 0);
8761 transform: translate(0, 0);
8756 content: "\f114";
8762 content: "\f114";
8757 }
8763 }
8758 .folder_icon:before.pull-left {
8764 .folder_icon:before.pull-left {
8759 margin-right: .3em;
8765 margin-right: .3em;
8760 }
8766 }
8761 .folder_icon:before.pull-right {
8767 .folder_icon:before.pull-right {
8762 margin-left: .3em;
8768 margin-left: .3em;
8763 }
8769 }
8764 .notebook_icon:before {
8770 .notebook_icon:before {
8765 display: inline-block;
8771 display: inline-block;
8766 font: normal normal normal 14px/1 FontAwesome;
8772 font: normal normal normal 14px/1 FontAwesome;
8767 font-size: inherit;
8773 font-size: inherit;
8768 text-rendering: auto;
8774 text-rendering: auto;
8769 -webkit-font-smoothing: antialiased;
8775 -webkit-font-smoothing: antialiased;
8770 -moz-osx-font-smoothing: grayscale;
8776 -moz-osx-font-smoothing: grayscale;
8771 transform: translate(0, 0);
8777 transform: translate(0, 0);
8772 content: "\f02d";
8778 content: "\f02d";
8773 }
8779 }
8774 .notebook_icon:before.pull-left {
8780 .notebook_icon:before.pull-left {
8775 margin-right: .3em;
8781 margin-right: .3em;
8776 }
8782 }
8777 .notebook_icon:before.pull-right {
8783 .notebook_icon:before.pull-right {
8778 margin-left: .3em;
8784 margin-left: .3em;
8779 }
8785 }
8780 .file_icon:before {
8786 .file_icon:before {
8781 display: inline-block;
8787 display: inline-block;
8782 font: normal normal normal 14px/1 FontAwesome;
8788 font: normal normal normal 14px/1 FontAwesome;
8783 font-size: inherit;
8789 font-size: inherit;
8784 text-rendering: auto;
8790 text-rendering: auto;
8785 -webkit-font-smoothing: antialiased;
8791 -webkit-font-smoothing: antialiased;
8786 -moz-osx-font-smoothing: grayscale;
8792 -moz-osx-font-smoothing: grayscale;
8787 transform: translate(0, 0);
8793 transform: translate(0, 0);
8788 content: "\f016";
8794 content: "\f016";
8789 }
8795 }
8790 .file_icon:before.pull-left {
8796 .file_icon:before.pull-left {
8791 margin-right: .3em;
8797 margin-right: .3em;
8792 }
8798 }
8793 .file_icon:before.pull-right {
8799 .file_icon:before.pull-right {
8794 margin-left: .3em;
8800 margin-left: .3em;
8795 }
8801 }
8796 #notebook_toolbar .pull-right {
8802 #notebook_toolbar .pull-right {
8797 padding-top: 0px;
8803 padding-top: 0px;
8798 margin-right: -1px;
8804 margin-right: -1px;
8799 }
8805 }
8800 ul#new-menu {
8806 ul#new-menu {
8801 left: auto;
8807 left: auto;
8802 right: 0;
8808 right: 0;
8803 }
8809 }
8804 .kernel-menu-icon {
8810 .kernel-menu-icon {
8805 padding-right: 12px;
8811 padding-right: 12px;
8806 width: 24px;
8812 width: 24px;
8807 content: "\f096";
8813 content: "\f096";
8808 }
8814 }
8809 .kernel-menu-icon:before {
8815 .kernel-menu-icon:before {
8810 content: "\f096";
8816 content: "\f096";
8811 }
8817 }
8812 .kernel-menu-icon-current:before {
8818 .kernel-menu-icon-current:before {
8813 content: "\f00c";
8819 content: "\f00c";
8814 }
8820 }
8815 #tab_content {
8821 #tab_content {
8816 padding-top: 20px;
8822 padding-top: 20px;
8817 }
8823 }
8818 #running .panel-group .panel {
8824 #running .panel-group .panel {
8819 margin-top: 3px;
8825 margin-top: 3px;
8820 margin-bottom: 1em;
8826 margin-bottom: 1em;
8821 }
8827 }
8822 #running .panel-group .panel .panel-heading {
8828 #running .panel-group .panel .panel-heading {
8823 background-color: #eeeeee;
8829 background-color: #eeeeee;
8824 padding-top: 4px;
8830 padding-top: 4px;
8825 padding-bottom: 4px;
8831 padding-bottom: 4px;
8826 padding-left: 7px;
8832 padding-left: 7px;
8827 padding-right: 7px;
8833 padding-right: 7px;
8828 line-height: 22px;
8834 line-height: 22px;
8829 }
8835 }
8830 #running .panel-group .panel .panel-heading a:focus,
8836 #running .panel-group .panel .panel-heading a:focus,
8831 #running .panel-group .panel .panel-heading a:hover {
8837 #running .panel-group .panel .panel-heading a:hover {
8832 text-decoration: none;
8838 text-decoration: none;
8833 }
8839 }
8834 #running .panel-group .panel .panel-body {
8840 #running .panel-group .panel .panel-body {
8835 padding: 0px;
8841 padding: 0px;
8836 }
8842 }
8837 #running .panel-group .panel .panel-body .list_container {
8843 #running .panel-group .panel .panel-body .list_container {
8838 margin-top: 0px;
8844 margin-top: 0px;
8839 margin-bottom: 0px;
8845 margin-bottom: 0px;
8840 border: 0px;
8846 border: 0px;
8841 border-radius: 0px;
8847 border-radius: 0px;
8842 }
8848 }
8843 #running .panel-group .panel .panel-body .list_container .list_item {
8849 #running .panel-group .panel .panel-body .list_container .list_item {
8844 border-bottom: 1px solid #dddddd;
8850 border-bottom: 1px solid #dddddd;
8845 }
8851 }
8846 #running .panel-group .panel .panel-body .list_container .list_item:last-child {
8852 #running .panel-group .panel .panel-body .list_container .list_item:last-child {
8847 border-bottom: 0px;
8853 border-bottom: 0px;
8848 }
8854 }
8849 /*!
8855 /*!
8850 *
8856 *
8851 * IPython text editor webapp
8857 * IPython text editor webapp
8852 *
8858 *
8853 */
8859 */
8854 .selected-keymap i.fa {
8860 .selected-keymap i.fa {
8855 padding: 0px 5px;
8861 padding: 0px 5px;
8856 }
8862 }
8857 .selected-keymap i.fa:before {
8863 .selected-keymap i.fa:before {
8858 content: "\f00c";
8864 content: "\f00c";
8859 }
8865 }
8860 #mode-menu {
8866 #mode-menu {
8861 overflow: auto;
8867 overflow: auto;
8862 max-height: 20em;
8868 max-height: 20em;
8863 }
8869 }
8864 .edit_app #header {
8870 .edit_app #header {
8865 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8871 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8866 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8872 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8867 }
8873 }
8868 .edit_app #menubar .navbar {
8874 .edit_app #menubar .navbar {
8869 /* Use a negative 1 bottom margin, so the border overlaps the border of the
8875 /* Use a negative 1 bottom margin, so the border overlaps the border of the
8870 header */
8876 header */
8871 margin-bottom: -1px;
8877 margin-bottom: -1px;
8872 }
8878 }
8873 #filename {
8879 #filename {
8874 font-size: 16pt;
8880 font-size: 16pt;
8875 display: table;
8881 display: table;
8876 padding: 0px 5px;
8882 padding: 0px 5px;
8877 }
8883 }
8878 #current-mode {
8884 #current-mode {
8879 padding-left: 5px;
8885 padding-left: 5px;
8880 padding-right: 5px;
8886 padding-right: 5px;
8881 }
8887 }
8882 #texteditor-backdrop {
8888 #texteditor-backdrop {
8883 padding-top: 20px;
8889 padding-top: 20px;
8884 padding-bottom: 20px;
8890 padding-bottom: 20px;
8885 }
8891 }
8886 @media not print {
8892 @media not print {
8887 #texteditor-backdrop {
8893 #texteditor-backdrop {
8888 background-color: #eeeeee;
8894 background-color: #eeeeee;
8889 }
8895 }
8890 }
8896 }
8891 @media print {
8897 @media print {
8892 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
8898 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
8893 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
8899 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
8894 background-color: #ffffff;
8900 background-color: #ffffff;
8895 }
8901 }
8896 }
8902 }
8897 @media not print {
8903 @media not print {
8898 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
8904 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
8899 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
8905 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
8900 background-color: #ffffff;
8906 background-color: #ffffff;
8901 }
8907 }
8902 }
8908 }
8903 @media not print {
8909 @media not print {
8904 #texteditor-backdrop #texteditor-container {
8910 #texteditor-backdrop #texteditor-container {
8905 padding: 0px;
8911 padding: 0px;
8906 background-color: #ffffff;
8912 background-color: #ffffff;
8907 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8913 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8908 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8914 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
8909 }
8915 }
8910 }
8916 }
8911 /*!
8917 /*!
8912 *
8918 *
8913 * IPython notebook
8919 * IPython notebook
8914 *
8920 *
8915 */
8921 */
8916 /* CSS font colors for translated ANSI colors. */
8922 /* CSS font colors for translated ANSI colors. */
8917 .ansibold {
8923 .ansibold {
8918 font-weight: bold;
8924 font-weight: bold;
8919 }
8925 }
8920 /* use dark versions for foreground, to improve visibility */
8926 /* use dark versions for foreground, to improve visibility */
8921 .ansiblack {
8927 .ansiblack {
8922 color: black;
8928 color: black;
8923 }
8929 }
8924 .ansired {
8930 .ansired {
8925 color: darkred;
8931 color: darkred;
8926 }
8932 }
8927 .ansigreen {
8933 .ansigreen {
8928 color: darkgreen;
8934 color: darkgreen;
8929 }
8935 }
8930 .ansiyellow {
8936 .ansiyellow {
8931 color: #c4a000;
8937 color: #c4a000;
8932 }
8938 }
8933 .ansiblue {
8939 .ansiblue {
8934 color: darkblue;
8940 color: darkblue;
8935 }
8941 }
8936 .ansipurple {
8942 .ansipurple {
8937 color: darkviolet;
8943 color: darkviolet;
8938 }
8944 }
8939 .ansicyan {
8945 .ansicyan {
8940 color: steelblue;
8946 color: steelblue;
8941 }
8947 }
8942 .ansigray {
8948 .ansigray {
8943 color: gray;
8949 color: gray;
8944 }
8950 }
8945 /* and light for background, for the same reason */
8951 /* and light for background, for the same reason */
8946 .ansibgblack {
8952 .ansibgblack {
8947 background-color: black;
8953 background-color: black;
8948 }
8954 }
8949 .ansibgred {
8955 .ansibgred {
8950 background-color: red;
8956 background-color: red;
8951 }
8957 }
8952 .ansibggreen {
8958 .ansibggreen {
8953 background-color: green;
8959 background-color: green;
8954 }
8960 }
8955 .ansibgyellow {
8961 .ansibgyellow {
8956 background-color: yellow;
8962 background-color: yellow;
8957 }
8963 }
8958 .ansibgblue {
8964 .ansibgblue {
8959 background-color: blue;
8965 background-color: blue;
8960 }
8966 }
8961 .ansibgpurple {
8967 .ansibgpurple {
8962 background-color: magenta;
8968 background-color: magenta;
8963 }
8969 }
8964 .ansibgcyan {
8970 .ansibgcyan {
8965 background-color: cyan;
8971 background-color: cyan;
8966 }
8972 }
8967 .ansibggray {
8973 .ansibggray {
8968 background-color: gray;
8974 background-color: gray;
8969 }
8975 }
8970 div.cell {
8976 div.cell {
8971 border: 1px solid transparent;
8977 border: 1px solid transparent;
8972 /* Old browsers */
8978 /* Old browsers */
8973 display: -webkit-box;
8979 display: -webkit-box;
8974 -webkit-box-orient: vertical;
8980 -webkit-box-orient: vertical;
8975 -webkit-box-align: stretch;
8981 -webkit-box-align: stretch;
8976 display: -moz-box;
8982 display: -moz-box;
8977 -moz-box-orient: vertical;
8983 -moz-box-orient: vertical;
8978 -moz-box-align: stretch;
8984 -moz-box-align: stretch;
8979 display: box;
8985 display: box;
8980 box-orient: vertical;
8986 box-orient: vertical;
8981 box-align: stretch;
8987 box-align: stretch;
8982 /* Modern browsers */
8988 /* Modern browsers */
8983 display: flex;
8989 display: flex;
8984 flex-direction: column;
8990 flex-direction: column;
8985 align-items: stretch;
8991 align-items: stretch;
8986 border-radius: 2px;
8992 border-radius: 2px;
8987 box-sizing: border-box;
8993 box-sizing: border-box;
8988 -moz-box-sizing: border-box;
8994 -moz-box-sizing: border-box;
8989 -webkit-box-sizing: border-box;
8995 -webkit-box-sizing: border-box;
8990 border-width: thin;
8996 border-width: thin;
8991 border-style: solid;
8997 border-style: solid;
8992 width: 100%;
8998 width: 100%;
8993 padding: 5px;
8999 padding: 5px;
8994 /* This acts as a spacer between cells, that is outside the border */
9000 /* This acts as a spacer between cells, that is outside the border */
8995 margin: 0px;
9001 margin: 0px;
8996 outline: none;
9002 outline: none;
8997 }
9003 }
8998 div.cell.selected {
9004 div.cell.selected {
8999 border-color: #ababab;
9005 border-color: #ababab;
9000 /* Don't border the cells when printing */
9006 /* Don't border the cells when printing */
9001 }
9007 }
9002 @media print {
9008 @media print {
9003 div.cell.selected {
9009 div.cell.selected {
9004 border-color: transparent;
9010 border-color: transparent;
9005 }
9011 }
9006 }
9012 }
9007 .edit_mode div.cell.selected {
9013 .edit_mode div.cell.selected {
9008 border-color: green;
9014 border-color: green;
9009 /* Don't border the cells when printing */
9015 /* Don't border the cells when printing */
9010 }
9016 }
9011 @media print {
9017 @media print {
9012 .edit_mode div.cell.selected {
9018 .edit_mode div.cell.selected {
9013 border-color: transparent;
9019 border-color: transparent;
9014 }
9020 }
9015 }
9021 }
9016 .prompt {
9022 .prompt {
9017 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
9023 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
9018 min-width: 14ex;
9024 min-width: 14ex;
9019 /* This padding is tuned to match the padding on the CodeMirror editor. */
9025 /* This padding is tuned to match the padding on the CodeMirror editor. */
9020 padding: 0.4em;
9026 padding: 0.4em;
9021 margin: 0px;
9027 margin: 0px;
9022 font-family: monospace;
9028 font-family: monospace;
9023 text-align: right;
9029 text-align: right;
9024 /* This has to match that of the the CodeMirror class line-height below */
9030 /* This has to match that of the the CodeMirror class line-height below */
9025 line-height: 1.21429em;
9031 line-height: 1.21429em;
9026 }
9032 }
9027 @media (max-width: 540px) {
9033 @media (max-width: 540px) {
9028 .prompt {
9034 .prompt {
9029 text-align: left;
9035 text-align: left;
9030 }
9036 }
9031 }
9037 }
9032 div.inner_cell {
9038 div.inner_cell {
9033 /* Old browsers */
9039 /* Old browsers */
9034 display: -webkit-box;
9040 display: -webkit-box;
9035 -webkit-box-orient: vertical;
9041 -webkit-box-orient: vertical;
9036 -webkit-box-align: stretch;
9042 -webkit-box-align: stretch;
9037 display: -moz-box;
9043 display: -moz-box;
9038 -moz-box-orient: vertical;
9044 -moz-box-orient: vertical;
9039 -moz-box-align: stretch;
9045 -moz-box-align: stretch;
9040 display: box;
9046 display: box;
9041 box-orient: vertical;
9047 box-orient: vertical;
9042 box-align: stretch;
9048 box-align: stretch;
9043 /* Modern browsers */
9049 /* Modern browsers */
9044 display: flex;
9050 display: flex;
9045 flex-direction: column;
9051 flex-direction: column;
9046 align-items: stretch;
9052 align-items: stretch;
9047 /* Old browsers */
9053 /* Old browsers */
9048 -webkit-box-flex: 1;
9054 -webkit-box-flex: 1;
9049 -moz-box-flex: 1;
9055 -moz-box-flex: 1;
9050 box-flex: 1;
9056 box-flex: 1;
9051 /* Modern browsers */
9057 /* Modern browsers */
9052 flex: 1;
9058 flex: 1;
9053 }
9059 }
9054 /* input_area and input_prompt must match in top border and margin for alignment */
9060 /* input_area and input_prompt must match in top border and margin for alignment */
9055 div.input_area {
9061 div.input_area {
9056 border: 1px solid #cfcfcf;
9062 border: 1px solid #cfcfcf;
9057 border-radius: 2px;
9063 border-radius: 2px;
9058 background: #f7f7f7;
9064 background: #f7f7f7;
9059 line-height: 1.21429em;
9065 line-height: 1.21429em;
9060 }
9066 }
9061 /* This is needed so that empty prompt areas can collapse to zero height when there
9067 /* This is needed so that empty prompt areas can collapse to zero height when there
9062 is no content in the output_subarea and the prompt. The main purpose of this is
9068 is no content in the output_subarea and the prompt. The main purpose of this is
9063 to make sure that empty JavaScript output_subareas have no height. */
9069 to make sure that empty JavaScript output_subareas have no height. */
9064 div.prompt:empty {
9070 div.prompt:empty {
9065 padding-top: 0;
9071 padding-top: 0;
9066 padding-bottom: 0;
9072 padding-bottom: 0;
9067 }
9073 }
9068 div.unrecognized_cell {
9074 div.unrecognized_cell {
9069 padding: 5px 5px 5px 0px;
9075 padding: 5px 5px 5px 0px;
9070 /* Old browsers */
9076 /* Old browsers */
9071 display: -webkit-box;
9077 display: -webkit-box;
9072 -webkit-box-orient: horizontal;
9078 -webkit-box-orient: horizontal;
9073 -webkit-box-align: stretch;
9079 -webkit-box-align: stretch;
9074 display: -moz-box;
9080 display: -moz-box;
9075 -moz-box-orient: horizontal;
9081 -moz-box-orient: horizontal;
9076 -moz-box-align: stretch;
9082 -moz-box-align: stretch;
9077 display: box;
9083 display: box;
9078 box-orient: horizontal;
9084 box-orient: horizontal;
9079 box-align: stretch;
9085 box-align: stretch;
9080 /* Modern browsers */
9086 /* Modern browsers */
9081 display: flex;
9087 display: flex;
9082 flex-direction: row;
9088 flex-direction: row;
9083 align-items: stretch;
9089 align-items: stretch;
9084 }
9090 }
9085 div.unrecognized_cell .inner_cell {
9091 div.unrecognized_cell .inner_cell {
9086 border-radius: 2px;
9092 border-radius: 2px;
9087 padding: 5px;
9093 padding: 5px;
9088 font-weight: bold;
9094 font-weight: bold;
9089 color: red;
9095 color: red;
9090 border: 1px solid #cfcfcf;
9096 border: 1px solid #cfcfcf;
9091 background: #eaeaea;
9097 background: #eaeaea;
9092 }
9098 }
9093 div.unrecognized_cell .inner_cell a {
9099 div.unrecognized_cell .inner_cell a {
9094 color: inherit;
9100 color: inherit;
9095 text-decoration: none;
9101 text-decoration: none;
9096 }
9102 }
9097 div.unrecognized_cell .inner_cell a:hover {
9103 div.unrecognized_cell .inner_cell a:hover {
9098 color: inherit;
9104 color: inherit;
9099 text-decoration: none;
9105 text-decoration: none;
9100 }
9106 }
9101 @media (max-width: 540px) {
9107 @media (max-width: 540px) {
9102 div.unrecognized_cell > div.prompt {
9108 div.unrecognized_cell > div.prompt {
9103 display: none;
9109 display: none;
9104 }
9110 }
9105 }
9111 }
9106 div.code_cell {
9112 div.code_cell {
9107 /* avoid page breaking on code cells when printing */
9113 /* avoid page breaking on code cells when printing */
9108 }
9114 }
9109 @media print {
9115 @media print {
9110 div.code_cell {
9116 div.code_cell {
9111 page-break-inside: avoid;
9117 page-break-inside: avoid;
9112 }
9118 }
9113 }
9119 }
9114 /* any special styling for code cells that are currently running goes here */
9120 /* any special styling for code cells that are currently running goes here */
9115 div.input {
9121 div.input {
9116 page-break-inside: avoid;
9122 page-break-inside: avoid;
9117 /* Old browsers */
9123 /* Old browsers */
9118 display: -webkit-box;
9124 display: -webkit-box;
9119 -webkit-box-orient: horizontal;
9125 -webkit-box-orient: horizontal;
9120 -webkit-box-align: stretch;
9126 -webkit-box-align: stretch;
9121 display: -moz-box;
9127 display: -moz-box;
9122 -moz-box-orient: horizontal;
9128 -moz-box-orient: horizontal;
9123 -moz-box-align: stretch;
9129 -moz-box-align: stretch;
9124 display: box;
9130 display: box;
9125 box-orient: horizontal;
9131 box-orient: horizontal;
9126 box-align: stretch;
9132 box-align: stretch;
9127 /* Modern browsers */
9133 /* Modern browsers */
9128 display: flex;
9134 display: flex;
9129 flex-direction: row;
9135 flex-direction: row;
9130 align-items: stretch;
9136 align-items: stretch;
9131 }
9137 }
9132 @media (max-width: 540px) {
9138 @media (max-width: 540px) {
9133 div.input {
9139 div.input {
9134 /* Old browsers */
9140 /* Old browsers */
9135 display: -webkit-box;
9141 display: -webkit-box;
9136 -webkit-box-orient: vertical;
9142 -webkit-box-orient: vertical;
9137 -webkit-box-align: stretch;
9143 -webkit-box-align: stretch;
9138 display: -moz-box;
9144 display: -moz-box;
9139 -moz-box-orient: vertical;
9145 -moz-box-orient: vertical;
9140 -moz-box-align: stretch;
9146 -moz-box-align: stretch;
9141 display: box;
9147 display: box;
9142 box-orient: vertical;
9148 box-orient: vertical;
9143 box-align: stretch;
9149 box-align: stretch;
9144 /* Modern browsers */
9150 /* Modern browsers */
9145 display: flex;
9151 display: flex;
9146 flex-direction: column;
9152 flex-direction: column;
9147 align-items: stretch;
9153 align-items: stretch;
9148 }
9154 }
9149 }
9155 }
9150 /* input_area and input_prompt must match in top border and margin for alignment */
9156 /* input_area and input_prompt must match in top border and margin for alignment */
9151 div.input_prompt {
9157 div.input_prompt {
9152 color: navy;
9158 color: navy;
9153 border-top: 1px solid transparent;
9159 border-top: 1px solid transparent;
9154 }
9160 }
9155 div.input_area > div.highlight {
9161 div.input_area > div.highlight {
9156 margin: 0.4em;
9162 margin: 0.4em;
9157 border: none;
9163 border: none;
9158 padding: 0px;
9164 padding: 0px;
9159 background-color: transparent;
9165 background-color: transparent;
9160 }
9166 }
9161 div.input_area > div.highlight > pre {
9167 div.input_area > div.highlight > pre {
9162 margin: 0px;
9168 margin: 0px;
9163 border: none;
9169 border: none;
9164 padding: 0px;
9170 padding: 0px;
9165 background-color: transparent;
9171 background-color: transparent;
9166 }
9172 }
9167 /* The following gets added to the <head> if it is detected that the user has a
9173 /* The following gets added to the <head> if it is detected that the user has a
9168 * monospace font with inconsistent normal/bold/italic height. See
9174 * monospace font with inconsistent normal/bold/italic height. See
9169 * notebookmain.js. Such fonts will have keywords vertically offset with
9175 * notebookmain.js. Such fonts will have keywords vertically offset with
9170 * respect to the rest of the text. The user should select a better font.
9176 * respect to the rest of the text. The user should select a better font.
9171 * See: https://github.com/ipython/ipython/issues/1503
9177 * See: https://github.com/ipython/ipython/issues/1503
9172 *
9178 *
9173 * .CodeMirror span {
9179 * .CodeMirror span {
9174 * vertical-align: bottom;
9180 * vertical-align: bottom;
9175 * }
9181 * }
9176 */
9182 */
9177 .CodeMirror {
9183 .CodeMirror {
9178 line-height: 1.21429em;
9184 line-height: 1.21429em;
9179 /* Changed from 1em to our global default */
9185 /* Changed from 1em to our global default */
9180 font-size: 14px;
9186 font-size: 14px;
9181 height: auto;
9187 height: auto;
9182 /* Changed to auto to autogrow */
9188 /* Changed to auto to autogrow */
9183 background: none;
9189 background: none;
9184 /* Changed from white to allow our bg to show through */
9190 /* Changed from white to allow our bg to show through */
9185 }
9191 }
9186 .CodeMirror-scroll {
9192 .CodeMirror-scroll {
9187 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
9193 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
9188 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
9194 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
9189 overflow-y: hidden;
9195 overflow-y: hidden;
9190 overflow-x: auto;
9196 overflow-x: auto;
9191 }
9197 }
9192 .CodeMirror-lines {
9198 .CodeMirror-lines {
9193 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
9199 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
9194 /* we have set a different line-height and want this to scale with that. */
9200 /* we have set a different line-height and want this to scale with that. */
9195 padding: 0.4em;
9201 padding: 0.4em;
9196 }
9202 }
9197 .CodeMirror-linenumber {
9203 .CodeMirror-linenumber {
9198 padding: 0 8px 0 4px;
9204 padding: 0 8px 0 4px;
9199 }
9205 }
9200 .CodeMirror-gutters {
9206 .CodeMirror-gutters {
9201 border-bottom-left-radius: 2px;
9207 border-bottom-left-radius: 2px;
9202 border-top-left-radius: 2px;
9208 border-top-left-radius: 2px;
9203 }
9209 }
9204 .CodeMirror pre {
9210 .CodeMirror pre {
9205 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
9211 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
9206 /* .CodeMirror-lines */
9212 /* .CodeMirror-lines */
9207 padding: 0;
9213 padding: 0;
9208 border: 0;
9214 border: 0;
9209 border-radius: 0;
9215 border-radius: 0;
9210 }
9216 }
9211 /*
9217 /*
9212
9218
9213 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
9219 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
9214 Adapted from GitHub theme
9220 Adapted from GitHub theme
9215
9221
9216 */
9222 */
9217 .highlight-base {
9223 .highlight-base {
9218 color: #000000;
9224 color: #000000;
9219 }
9225 }
9220 .highlight-variable {
9226 .highlight-variable {
9221 color: #000000;
9227 color: #000000;
9222 }
9228 }
9223 .highlight-variable-2 {
9229 .highlight-variable-2 {
9224 color: #1a1a1a;
9230 color: #1a1a1a;
9225 }
9231 }
9226 .highlight-variable-3 {
9232 .highlight-variable-3 {
9227 color: #333333;
9233 color: #333333;
9228 }
9234 }
9229 .highlight-string {
9235 .highlight-string {
9230 color: #BA2121;
9236 color: #BA2121;
9231 }
9237 }
9232 .highlight-comment {
9238 .highlight-comment {
9233 color: #408080;
9239 color: #408080;
9234 font-style: italic;
9240 font-style: italic;
9235 }
9241 }
9236 .highlight-number {
9242 .highlight-number {
9237 color: #080;
9243 color: #080;
9238 }
9244 }
9239 .highlight-atom {
9245 .highlight-atom {
9240 color: #88F;
9246 color: #88F;
9241 }
9247 }
9242 .highlight-keyword {
9248 .highlight-keyword {
9243 color: #008000;
9249 color: #008000;
9244 font-weight: bold;
9250 font-weight: bold;
9245 }
9251 }
9246 .highlight-builtin {
9252 .highlight-builtin {
9247 color: #008000;
9253 color: #008000;
9248 }
9254 }
9249 .highlight-error {
9255 .highlight-error {
9250 color: #f00;
9256 color: #f00;
9251 }
9257 }
9252 .highlight-operator {
9258 .highlight-operator {
9253 color: #AA22FF;
9259 color: #AA22FF;
9254 font-weight: bold;
9260 font-weight: bold;
9255 }
9261 }
9256 .highlight-meta {
9262 .highlight-meta {
9257 color: #AA22FF;
9263 color: #AA22FF;
9258 }
9264 }
9259 /* previously not defined, copying from default codemirror */
9265 /* previously not defined, copying from default codemirror */
9260 .highlight-def {
9266 .highlight-def {
9261 color: #00f;
9267 color: #00f;
9262 }
9268 }
9263 .highlight-string-2 {
9269 .highlight-string-2 {
9264 color: #f50;
9270 color: #f50;
9265 }
9271 }
9266 .highlight-qualifier {
9272 .highlight-qualifier {
9267 color: #555;
9273 color: #555;
9268 }
9274 }
9269 .highlight-bracket {
9275 .highlight-bracket {
9270 color: #997;
9276 color: #997;
9271 }
9277 }
9272 .highlight-tag {
9278 .highlight-tag {
9273 color: #170;
9279 color: #170;
9274 }
9280 }
9275 .highlight-attribute {
9281 .highlight-attribute {
9276 color: #00c;
9282 color: #00c;
9277 }
9283 }
9278 .highlight-header {
9284 .highlight-header {
9279 color: blue;
9285 color: blue;
9280 }
9286 }
9281 .highlight-quote {
9287 .highlight-quote {
9282 color: #090;
9288 color: #090;
9283 }
9289 }
9284 .highlight-link {
9290 .highlight-link {
9285 color: #00c;
9291 color: #00c;
9286 }
9292 }
9287 /* apply the same style to codemirror */
9293 /* apply the same style to codemirror */
9288 .cm-s-ipython span.cm-keyword {
9294 .cm-s-ipython span.cm-keyword {
9289 color: #008000;
9295 color: #008000;
9290 font-weight: bold;
9296 font-weight: bold;
9291 }
9297 }
9292 .cm-s-ipython span.cm-atom {
9298 .cm-s-ipython span.cm-atom {
9293 color: #88F;
9299 color: #88F;
9294 }
9300 }
9295 .cm-s-ipython span.cm-number {
9301 .cm-s-ipython span.cm-number {
9296 color: #080;
9302 color: #080;
9297 }
9303 }
9298 .cm-s-ipython span.cm-def {
9304 .cm-s-ipython span.cm-def {
9299 color: #00f;
9305 color: #00f;
9300 }
9306 }
9301 .cm-s-ipython span.cm-variable {
9307 .cm-s-ipython span.cm-variable {
9302 color: #000000;
9308 color: #000000;
9303 }
9309 }
9304 .cm-s-ipython span.cm-operator {
9310 .cm-s-ipython span.cm-operator {
9305 color: #AA22FF;
9311 color: #AA22FF;
9306 font-weight: bold;
9312 font-weight: bold;
9307 }
9313 }
9308 .cm-s-ipython span.cm-variable-2 {
9314 .cm-s-ipython span.cm-variable-2 {
9309 color: #1a1a1a;
9315 color: #1a1a1a;
9310 }
9316 }
9311 .cm-s-ipython span.cm-variable-3 {
9317 .cm-s-ipython span.cm-variable-3 {
9312 color: #333333;
9318 color: #333333;
9313 }
9319 }
9314 .cm-s-ipython span.cm-comment {
9320 .cm-s-ipython span.cm-comment {
9315 color: #408080;
9321 color: #408080;
9316 font-style: italic;
9322 font-style: italic;
9317 }
9323 }
9318 .cm-s-ipython span.cm-string {
9324 .cm-s-ipython span.cm-string {
9319 color: #BA2121;
9325 color: #BA2121;
9320 }
9326 }
9321 .cm-s-ipython span.cm-string-2 {
9327 .cm-s-ipython span.cm-string-2 {
9322 color: #f50;
9328 color: #f50;
9323 }
9329 }
9324 .cm-s-ipython span.cm-meta {
9330 .cm-s-ipython span.cm-meta {
9325 color: #AA22FF;
9331 color: #AA22FF;
9326 }
9332 }
9327 .cm-s-ipython span.cm-qualifier {
9333 .cm-s-ipython span.cm-qualifier {
9328 color: #555;
9334 color: #555;
9329 }
9335 }
9330 .cm-s-ipython span.cm-builtin {
9336 .cm-s-ipython span.cm-builtin {
9331 color: #008000;
9337 color: #008000;
9332 }
9338 }
9333 .cm-s-ipython span.cm-bracket {
9339 .cm-s-ipython span.cm-bracket {
9334 color: #997;
9340 color: #997;
9335 }
9341 }
9336 .cm-s-ipython span.cm-tag {
9342 .cm-s-ipython span.cm-tag {
9337 color: #170;
9343 color: #170;
9338 }
9344 }
9339 .cm-s-ipython span.cm-attribute {
9345 .cm-s-ipython span.cm-attribute {
9340 color: #00c;
9346 color: #00c;
9341 }
9347 }
9342 .cm-s-ipython span.cm-header {
9348 .cm-s-ipython span.cm-header {
9343 color: blue;
9349 color: blue;
9344 }
9350 }
9345 .cm-s-ipython span.cm-quote {
9351 .cm-s-ipython span.cm-quote {
9346 color: #090;
9352 color: #090;
9347 }
9353 }
9348 .cm-s-ipython span.cm-link {
9354 .cm-s-ipython span.cm-link {
9349 color: #00c;
9355 color: #00c;
9350 }
9356 }
9351 .cm-s-ipython span.cm-error {
9357 .cm-s-ipython span.cm-error {
9352 color: #f00;
9358 color: #f00;
9353 }
9359 }
9354 .cm-s-ipython span.cm-tab {
9360 .cm-s-ipython span.cm-tab {
9355 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
9361 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
9356 background-position: right;
9362 background-position: right;
9357 background-repeat: no-repeat;
9363 background-repeat: no-repeat;
9358 }
9364 }
9359 div.output_wrapper {
9365 div.output_wrapper {
9360 /* this position must be relative to enable descendents to be absolute within it */
9366 /* this position must be relative to enable descendents to be absolute within it */
9361 position: relative;
9367 position: relative;
9362 /* Old browsers */
9368 /* Old browsers */
9363 display: -webkit-box;
9369 display: -webkit-box;
9364 -webkit-box-orient: vertical;
9370 -webkit-box-orient: vertical;
9365 -webkit-box-align: stretch;
9371 -webkit-box-align: stretch;
9366 display: -moz-box;
9372 display: -moz-box;
9367 -moz-box-orient: vertical;
9373 -moz-box-orient: vertical;
9368 -moz-box-align: stretch;
9374 -moz-box-align: stretch;
9369 display: box;
9375 display: box;
9370 box-orient: vertical;
9376 box-orient: vertical;
9371 box-align: stretch;
9377 box-align: stretch;
9372 /* Modern browsers */
9378 /* Modern browsers */
9373 display: flex;
9379 display: flex;
9374 flex-direction: column;
9380 flex-direction: column;
9375 align-items: stretch;
9381 align-items: stretch;
9376 }
9382 }
9377 /* class for the output area when it should be height-limited */
9383 /* class for the output area when it should be height-limited */
9378 div.output_scroll {
9384 div.output_scroll {
9379 /* ideally, this would be max-height, but FF barfs all over that */
9385 /* ideally, this would be max-height, but FF barfs all over that */
9380 height: 24em;
9386 height: 24em;
9381 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
9387 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
9382 width: 100%;
9388 width: 100%;
9383 overflow: auto;
9389 overflow: auto;
9384 border-radius: 2px;
9390 border-radius: 2px;
9385 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9391 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9386 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9392 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9387 display: block;
9393 display: block;
9388 }
9394 }
9389 /* output div while it is collapsed */
9395 /* output div while it is collapsed */
9390 div.output_collapsed {
9396 div.output_collapsed {
9391 margin: 0px;
9397 margin: 0px;
9392 padding: 0px;
9398 padding: 0px;
9393 /* Old browsers */
9399 /* Old browsers */
9394 display: -webkit-box;
9400 display: -webkit-box;
9395 -webkit-box-orient: vertical;
9401 -webkit-box-orient: vertical;
9396 -webkit-box-align: stretch;
9402 -webkit-box-align: stretch;
9397 display: -moz-box;
9403 display: -moz-box;
9398 -moz-box-orient: vertical;
9404 -moz-box-orient: vertical;
9399 -moz-box-align: stretch;
9405 -moz-box-align: stretch;
9400 display: box;
9406 display: box;
9401 box-orient: vertical;
9407 box-orient: vertical;
9402 box-align: stretch;
9408 box-align: stretch;
9403 /* Modern browsers */
9409 /* Modern browsers */
9404 display: flex;
9410 display: flex;
9405 flex-direction: column;
9411 flex-direction: column;
9406 align-items: stretch;
9412 align-items: stretch;
9407 }
9413 }
9408 div.out_prompt_overlay {
9414 div.out_prompt_overlay {
9409 height: 100%;
9415 height: 100%;
9410 padding: 0px 0.4em;
9416 padding: 0px 0.4em;
9411 position: absolute;
9417 position: absolute;
9412 border-radius: 2px;
9418 border-radius: 2px;
9413 }
9419 }
9414 div.out_prompt_overlay:hover {
9420 div.out_prompt_overlay:hover {
9415 /* use inner shadow to get border that is computed the same on WebKit/FF */
9421 /* use inner shadow to get border that is computed the same on WebKit/FF */
9416 -webkit-box-shadow: inset 0 0 1px #000000;
9422 -webkit-box-shadow: inset 0 0 1px #000000;
9417 box-shadow: inset 0 0 1px #000000;
9423 box-shadow: inset 0 0 1px #000000;
9418 background: rgba(240, 240, 240, 0.5);
9424 background: rgba(240, 240, 240, 0.5);
9419 }
9425 }
9420 div.output_prompt {
9426 div.output_prompt {
9421 color: darkred;
9427 color: darkred;
9422 }
9428 }
9423 /* This class is the outer container of all output sections. */
9429 /* This class is the outer container of all output sections. */
9424 div.output_area {
9430 div.output_area {
9425 padding: 0px;
9431 padding: 0px;
9426 page-break-inside: avoid;
9432 page-break-inside: avoid;
9427 /* Old browsers */
9433 /* Old browsers */
9428 display: -webkit-box;
9434 display: -webkit-box;
9429 -webkit-box-orient: horizontal;
9435 -webkit-box-orient: horizontal;
9430 -webkit-box-align: stretch;
9436 -webkit-box-align: stretch;
9431 display: -moz-box;
9437 display: -moz-box;
9432 -moz-box-orient: horizontal;
9438 -moz-box-orient: horizontal;
9433 -moz-box-align: stretch;
9439 -moz-box-align: stretch;
9434 display: box;
9440 display: box;
9435 box-orient: horizontal;
9441 box-orient: horizontal;
9436 box-align: stretch;
9442 box-align: stretch;
9437 /* Modern browsers */
9443 /* Modern browsers */
9438 display: flex;
9444 display: flex;
9439 flex-direction: row;
9445 flex-direction: row;
9440 align-items: stretch;
9446 align-items: stretch;
9441 }
9447 }
9442 div.output_area .MathJax_Display {
9448 div.output_area .MathJax_Display {
9443 text-align: left !important;
9449 text-align: left !important;
9444 }
9450 }
9445 div.output_area .rendered_html table {
9451 div.output_area .rendered_html table {
9446 margin-left: 0;
9452 margin-left: 0;
9447 margin-right: 0;
9453 margin-right: 0;
9448 }
9454 }
9449 div.output_area .rendered_html img {
9455 div.output_area .rendered_html img {
9450 margin-left: 0;
9456 margin-left: 0;
9451 margin-right: 0;
9457 margin-right: 0;
9452 }
9458 }
9453 /* This is needed to protect the pre formating from global settings such
9459 /* This is needed to protect the pre formating from global settings such
9454 as that of bootstrap */
9460 as that of bootstrap */
9455 .output {
9461 .output {
9456 /* Old browsers */
9462 /* Old browsers */
9457 display: -webkit-box;
9463 display: -webkit-box;
9458 -webkit-box-orient: vertical;
9464 -webkit-box-orient: vertical;
9459 -webkit-box-align: stretch;
9465 -webkit-box-align: stretch;
9460 display: -moz-box;
9466 display: -moz-box;
9461 -moz-box-orient: vertical;
9467 -moz-box-orient: vertical;
9462 -moz-box-align: stretch;
9468 -moz-box-align: stretch;
9463 display: box;
9469 display: box;
9464 box-orient: vertical;
9470 box-orient: vertical;
9465 box-align: stretch;
9471 box-align: stretch;
9466 /* Modern browsers */
9472 /* Modern browsers */
9467 display: flex;
9473 display: flex;
9468 flex-direction: column;
9474 flex-direction: column;
9469 align-items: stretch;
9475 align-items: stretch;
9470 }
9476 }
9471 @media (max-width: 540px) {
9477 @media (max-width: 540px) {
9472 div.output_area {
9478 div.output_area {
9473 /* Old browsers */
9479 /* Old browsers */
9474 display: -webkit-box;
9480 display: -webkit-box;
9475 -webkit-box-orient: vertical;
9481 -webkit-box-orient: vertical;
9476 -webkit-box-align: stretch;
9482 -webkit-box-align: stretch;
9477 display: -moz-box;
9483 display: -moz-box;
9478 -moz-box-orient: vertical;
9484 -moz-box-orient: vertical;
9479 -moz-box-align: stretch;
9485 -moz-box-align: stretch;
9480 display: box;
9486 display: box;
9481 box-orient: vertical;
9487 box-orient: vertical;
9482 box-align: stretch;
9488 box-align: stretch;
9483 /* Modern browsers */
9489 /* Modern browsers */
9484 display: flex;
9490 display: flex;
9485 flex-direction: column;
9491 flex-direction: column;
9486 align-items: stretch;
9492 align-items: stretch;
9487 }
9493 }
9488 }
9494 }
9489 div.output_area pre {
9495 div.output_area pre {
9490 margin: 0;
9496 margin: 0;
9491 padding: 0;
9497 padding: 0;
9492 border: 0;
9498 border: 0;
9493 vertical-align: baseline;
9499 vertical-align: baseline;
9494 color: black;
9500 color: black;
9495 background-color: transparent;
9501 background-color: transparent;
9496 border-radius: 0;
9502 border-radius: 0;
9497 }
9503 }
9498 /* This class is for the output subarea inside the output_area and after
9504 /* This class is for the output subarea inside the output_area and after
9499 the prompt div. */
9505 the prompt div. */
9500 div.output_subarea {
9506 div.output_subarea {
9501 padding: 0.4em;
9507 padding: 0.4em;
9502 /* Old browsers */
9508 /* Old browsers */
9503 -webkit-box-flex: 1;
9509 -webkit-box-flex: 1;
9504 -moz-box-flex: 1;
9510 -moz-box-flex: 1;
9505 box-flex: 1;
9511 box-flex: 1;
9506 /* Modern browsers */
9512 /* Modern browsers */
9507 flex: 1;
9513 flex: 1;
9508 }
9514 }
9509 /* The rest of the output_* classes are for special styling of the different
9515 /* The rest of the output_* classes are for special styling of the different
9510 output types */
9516 output types */
9511 /* all text output has this class: */
9517 /* all text output has this class: */
9512 div.output_text {
9518 div.output_text {
9513 text-align: left;
9519 text-align: left;
9514 color: #000000;
9520 color: #000000;
9515 /* This has to match that of the the CodeMirror class line-height below */
9521 /* This has to match that of the the CodeMirror class line-height below */
9516 line-height: 1.21429em;
9522 line-height: 1.21429em;
9517 }
9523 }
9518 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
9524 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
9519 div.output_stderr {
9525 div.output_stderr {
9520 background: #fdd;
9526 background: #fdd;
9521 /* very light red background for stderr */
9527 /* very light red background for stderr */
9522 }
9528 }
9523 div.output_latex {
9529 div.output_latex {
9524 text-align: left;
9530 text-align: left;
9525 }
9531 }
9526 /* Empty output_javascript divs should have no height */
9532 /* Empty output_javascript divs should have no height */
9527 div.output_javascript:empty {
9533 div.output_javascript:empty {
9528 padding: 0;
9534 padding: 0;
9529 }
9535 }
9530 .js-error {
9536 .js-error {
9531 color: darkred;
9537 color: darkred;
9532 }
9538 }
9533 /* raw_input styles */
9539 /* raw_input styles */
9534 div.raw_input_container {
9540 div.raw_input_container {
9535 font-family: monospace;
9541 font-family: monospace;
9536 padding-top: 5px;
9542 padding-top: 5px;
9537 }
9543 }
9538 span.raw_input_prompt {
9544 span.raw_input_prompt {
9539 /* nothing needed here */
9545 /* nothing needed here */
9540 }
9546 }
9541 input.raw_input {
9547 input.raw_input {
9542 font-family: inherit;
9548 font-family: inherit;
9543 font-size: inherit;
9549 font-size: inherit;
9544 color: inherit;
9550 color: inherit;
9545 width: auto;
9551 width: auto;
9546 /* make sure input baseline aligns with prompt */
9552 /* make sure input baseline aligns with prompt */
9547 vertical-align: baseline;
9553 vertical-align: baseline;
9548 /* padding + margin = 0.5em between prompt and cursor */
9554 /* padding + margin = 0.5em between prompt and cursor */
9549 padding: 0em 0.25em;
9555 padding: 0em 0.25em;
9550 margin: 0em 0.25em;
9556 margin: 0em 0.25em;
9551 }
9557 }
9552 input.raw_input:focus {
9558 input.raw_input:focus {
9553 box-shadow: none;
9559 box-shadow: none;
9554 }
9560 }
9555 p.p-space {
9561 p.p-space {
9556 margin-bottom: 10px;
9562 margin-bottom: 10px;
9557 }
9563 }
9558 div.output_unrecognized {
9564 div.output_unrecognized {
9559 padding: 5px;
9565 padding: 5px;
9560 font-weight: bold;
9566 font-weight: bold;
9561 color: red;
9567 color: red;
9562 }
9568 }
9563 div.output_unrecognized a {
9569 div.output_unrecognized a {
9564 color: inherit;
9570 color: inherit;
9565 text-decoration: none;
9571 text-decoration: none;
9566 }
9572 }
9567 div.output_unrecognized a:hover {
9573 div.output_unrecognized a:hover {
9568 color: inherit;
9574 color: inherit;
9569 text-decoration: none;
9575 text-decoration: none;
9570 }
9576 }
9571 .rendered_html {
9577 .rendered_html {
9572 color: #000000;
9578 color: #000000;
9573 /* any extras will just be numbers: */
9579 /* any extras will just be numbers: */
9574 }
9580 }
9575 .rendered_html em {
9581 .rendered_html em {
9576 font-style: italic;
9582 font-style: italic;
9577 }
9583 }
9578 .rendered_html strong {
9584 .rendered_html strong {
9579 font-weight: bold;
9585 font-weight: bold;
9580 }
9586 }
9581 .rendered_html u {
9587 .rendered_html u {
9582 text-decoration: underline;
9588 text-decoration: underline;
9583 }
9589 }
9584 .rendered_html :link {
9590 .rendered_html :link {
9585 text-decoration: underline;
9591 text-decoration: underline;
9586 }
9592 }
9587 .rendered_html :visited {
9593 .rendered_html :visited {
9588 text-decoration: underline;
9594 text-decoration: underline;
9589 }
9595 }
9590 .rendered_html h1 {
9596 .rendered_html h1 {
9591 font-size: 185.7%;
9597 font-size: 185.7%;
9592 margin: 1.08em 0 0 0;
9598 margin: 1.08em 0 0 0;
9593 font-weight: bold;
9599 font-weight: bold;
9594 line-height: 1.0;
9600 line-height: 1.0;
9595 }
9601 }
9596 .rendered_html h2 {
9602 .rendered_html h2 {
9597 font-size: 157.1%;
9603 font-size: 157.1%;
9598 margin: 1.27em 0 0 0;
9604 margin: 1.27em 0 0 0;
9599 font-weight: bold;
9605 font-weight: bold;
9600 line-height: 1.0;
9606 line-height: 1.0;
9601 }
9607 }
9602 .rendered_html h3 {
9608 .rendered_html h3 {
9603 font-size: 128.6%;
9609 font-size: 128.6%;
9604 margin: 1.55em 0 0 0;
9610 margin: 1.55em 0 0 0;
9605 font-weight: bold;
9611 font-weight: bold;
9606 line-height: 1.0;
9612 line-height: 1.0;
9607 }
9613 }
9608 .rendered_html h4 {
9614 .rendered_html h4 {
9609 font-size: 100%;
9615 font-size: 100%;
9610 margin: 2em 0 0 0;
9616 margin: 2em 0 0 0;
9611 font-weight: bold;
9617 font-weight: bold;
9612 line-height: 1.0;
9618 line-height: 1.0;
9613 }
9619 }
9614 .rendered_html h5 {
9620 .rendered_html h5 {
9615 font-size: 100%;
9621 font-size: 100%;
9616 margin: 2em 0 0 0;
9622 margin: 2em 0 0 0;
9617 font-weight: bold;
9623 font-weight: bold;
9618 line-height: 1.0;
9624 line-height: 1.0;
9619 font-style: italic;
9625 font-style: italic;
9620 }
9626 }
9621 .rendered_html h6 {
9627 .rendered_html h6 {
9622 font-size: 100%;
9628 font-size: 100%;
9623 margin: 2em 0 0 0;
9629 margin: 2em 0 0 0;
9624 font-weight: bold;
9630 font-weight: bold;
9625 line-height: 1.0;
9631 line-height: 1.0;
9626 font-style: italic;
9632 font-style: italic;
9627 }
9633 }
9628 .rendered_html h1:first-child {
9634 .rendered_html h1:first-child {
9629 margin-top: 0.538em;
9635 margin-top: 0.538em;
9630 }
9636 }
9631 .rendered_html h2:first-child {
9637 .rendered_html h2:first-child {
9632 margin-top: 0.636em;
9638 margin-top: 0.636em;
9633 }
9639 }
9634 .rendered_html h3:first-child {
9640 .rendered_html h3:first-child {
9635 margin-top: 0.777em;
9641 margin-top: 0.777em;
9636 }
9642 }
9637 .rendered_html h4:first-child {
9643 .rendered_html h4:first-child {
9638 margin-top: 1em;
9644 margin-top: 1em;
9639 }
9645 }
9640 .rendered_html h5:first-child {
9646 .rendered_html h5:first-child {
9641 margin-top: 1em;
9647 margin-top: 1em;
9642 }
9648 }
9643 .rendered_html h6:first-child {
9649 .rendered_html h6:first-child {
9644 margin-top: 1em;
9650 margin-top: 1em;
9645 }
9651 }
9646 .rendered_html ul {
9652 .rendered_html ul {
9647 list-style: disc;
9653 list-style: disc;
9648 margin: 0em 2em;
9654 margin: 0em 2em;
9649 padding-left: 0px;
9655 padding-left: 0px;
9650 }
9656 }
9651 .rendered_html ul ul {
9657 .rendered_html ul ul {
9652 list-style: square;
9658 list-style: square;
9653 margin: 0em 2em;
9659 margin: 0em 2em;
9654 }
9660 }
9655 .rendered_html ul ul ul {
9661 .rendered_html ul ul ul {
9656 list-style: circle;
9662 list-style: circle;
9657 margin: 0em 2em;
9663 margin: 0em 2em;
9658 }
9664 }
9659 .rendered_html ol {
9665 .rendered_html ol {
9660 list-style: decimal;
9666 list-style: decimal;
9661 margin: 0em 2em;
9667 margin: 0em 2em;
9662 padding-left: 0px;
9668 padding-left: 0px;
9663 }
9669 }
9664 .rendered_html ol ol {
9670 .rendered_html ol ol {
9665 list-style: upper-alpha;
9671 list-style: upper-alpha;
9666 margin: 0em 2em;
9672 margin: 0em 2em;
9667 }
9673 }
9668 .rendered_html ol ol ol {
9674 .rendered_html ol ol ol {
9669 list-style: lower-alpha;
9675 list-style: lower-alpha;
9670 margin: 0em 2em;
9676 margin: 0em 2em;
9671 }
9677 }
9672 .rendered_html ol ol ol ol {
9678 .rendered_html ol ol ol ol {
9673 list-style: lower-roman;
9679 list-style: lower-roman;
9674 margin: 0em 2em;
9680 margin: 0em 2em;
9675 }
9681 }
9676 .rendered_html ol ol ol ol ol {
9682 .rendered_html ol ol ol ol ol {
9677 list-style: decimal;
9683 list-style: decimal;
9678 margin: 0em 2em;
9684 margin: 0em 2em;
9679 }
9685 }
9680 .rendered_html * + ul {
9686 .rendered_html * + ul {
9681 margin-top: 1em;
9687 margin-top: 1em;
9682 }
9688 }
9683 .rendered_html * + ol {
9689 .rendered_html * + ol {
9684 margin-top: 1em;
9690 margin-top: 1em;
9685 }
9691 }
9686 .rendered_html hr {
9692 .rendered_html hr {
9687 color: black;
9693 color: black;
9688 background-color: black;
9694 background-color: black;
9689 }
9695 }
9690 .rendered_html pre {
9696 .rendered_html pre {
9691 margin: 1em 2em;
9697 margin: 1em 2em;
9692 }
9698 }
9693 .rendered_html pre,
9699 .rendered_html pre,
9694 .rendered_html code {
9700 .rendered_html code {
9695 border: 0;
9701 border: 0;
9696 background-color: #ffffff;
9702 background-color: #ffffff;
9697 color: #000000;
9703 color: #000000;
9698 font-size: 100%;
9704 font-size: 100%;
9699 padding: 0px;
9705 padding: 0px;
9700 }
9706 }
9701 .rendered_html blockquote {
9707 .rendered_html blockquote {
9702 margin: 1em 2em;
9708 margin: 1em 2em;
9703 }
9709 }
9704 .rendered_html table {
9710 .rendered_html table {
9705 margin-left: auto;
9711 margin-left: auto;
9706 margin-right: auto;
9712 margin-right: auto;
9707 border: 1px solid black;
9713 border: 1px solid black;
9708 border-collapse: collapse;
9714 border-collapse: collapse;
9709 }
9715 }
9710 .rendered_html tr,
9716 .rendered_html tr,
9711 .rendered_html th,
9717 .rendered_html th,
9712 .rendered_html td {
9718 .rendered_html td {
9713 border: 1px solid black;
9719 border: 1px solid black;
9714 border-collapse: collapse;
9720 border-collapse: collapse;
9715 margin: 1em 2em;
9721 margin: 1em 2em;
9716 }
9722 }
9717 .rendered_html td,
9723 .rendered_html td,
9718 .rendered_html th {
9724 .rendered_html th {
9719 text-align: left;
9725 text-align: left;
9720 vertical-align: middle;
9726 vertical-align: middle;
9721 padding: 4px;
9727 padding: 4px;
9722 }
9728 }
9723 .rendered_html th {
9729 .rendered_html th {
9724 font-weight: bold;
9730 font-weight: bold;
9725 }
9731 }
9726 .rendered_html * + table {
9732 .rendered_html * + table {
9727 margin-top: 1em;
9733 margin-top: 1em;
9728 }
9734 }
9729 .rendered_html p {
9735 .rendered_html p {
9730 text-align: left;
9736 text-align: left;
9731 }
9737 }
9732 .rendered_html * + p {
9738 .rendered_html * + p {
9733 margin-top: 1em;
9739 margin-top: 1em;
9734 }
9740 }
9735 .rendered_html img {
9741 .rendered_html img {
9736 display: block;
9742 display: block;
9737 margin-left: auto;
9743 margin-left: auto;
9738 margin-right: auto;
9744 margin-right: auto;
9739 }
9745 }
9740 .rendered_html * + img {
9746 .rendered_html * + img {
9741 margin-top: 1em;
9747 margin-top: 1em;
9742 }
9748 }
9743 div.text_cell {
9749 div.text_cell {
9744 /* Old browsers */
9750 /* Old browsers */
9745 display: -webkit-box;
9751 display: -webkit-box;
9746 -webkit-box-orient: horizontal;
9752 -webkit-box-orient: horizontal;
9747 -webkit-box-align: stretch;
9753 -webkit-box-align: stretch;
9748 display: -moz-box;
9754 display: -moz-box;
9749 -moz-box-orient: horizontal;
9755 -moz-box-orient: horizontal;
9750 -moz-box-align: stretch;
9756 -moz-box-align: stretch;
9751 display: box;
9757 display: box;
9752 box-orient: horizontal;
9758 box-orient: horizontal;
9753 box-align: stretch;
9759 box-align: stretch;
9754 /* Modern browsers */
9760 /* Modern browsers */
9755 display: flex;
9761 display: flex;
9756 flex-direction: row;
9762 flex-direction: row;
9757 align-items: stretch;
9763 align-items: stretch;
9758 }
9764 }
9759 @media (max-width: 540px) {
9765 @media (max-width: 540px) {
9760 div.text_cell > div.prompt {
9766 div.text_cell > div.prompt {
9761 display: none;
9767 display: none;
9762 }
9768 }
9763 }
9769 }
9764 div.text_cell_render {
9770 div.text_cell_render {
9765 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
9771 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
9766 outline: none;
9772 outline: none;
9767 resize: none;
9773 resize: none;
9768 width: inherit;
9774 width: inherit;
9769 border-style: none;
9775 border-style: none;
9770 padding: 0.5em 0.5em 0.5em 0.4em;
9776 padding: 0.5em 0.5em 0.5em 0.4em;
9771 color: #000000;
9777 color: #000000;
9772 box-sizing: border-box;
9778 box-sizing: border-box;
9773 -moz-box-sizing: border-box;
9779 -moz-box-sizing: border-box;
9774 -webkit-box-sizing: border-box;
9780 -webkit-box-sizing: border-box;
9775 }
9781 }
9776 a.anchor-link:link {
9782 a.anchor-link:link {
9777 text-decoration: none;
9783 text-decoration: none;
9778 padding: 0px 20px;
9784 padding: 0px 20px;
9779 visibility: hidden;
9785 visibility: hidden;
9780 }
9786 }
9781 h1:hover .anchor-link,
9787 h1:hover .anchor-link,
9782 h2:hover .anchor-link,
9788 h2:hover .anchor-link,
9783 h3:hover .anchor-link,
9789 h3:hover .anchor-link,
9784 h4:hover .anchor-link,
9790 h4:hover .anchor-link,
9785 h5:hover .anchor-link,
9791 h5:hover .anchor-link,
9786 h6:hover .anchor-link {
9792 h6:hover .anchor-link {
9787 visibility: visible;
9793 visibility: visible;
9788 }
9794 }
9789 .text_cell.rendered .input_area {
9795 .text_cell.rendered .input_area {
9790 display: none;
9796 display: none;
9791 }
9797 }
9792 .text_cell.unrendered .text_cell_render {
9798 .text_cell.unrendered .text_cell_render {
9793 display: none;
9799 display: none;
9794 }
9800 }
9795 .cm-header-1,
9801 .cm-header-1,
9796 .cm-header-2,
9802 .cm-header-2,
9797 .cm-header-3,
9803 .cm-header-3,
9798 .cm-header-4,
9804 .cm-header-4,
9799 .cm-header-5,
9805 .cm-header-5,
9800 .cm-header-6 {
9806 .cm-header-6 {
9801 font-weight: bold;
9807 font-weight: bold;
9802 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9808 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9803 }
9809 }
9804 .cm-header-1 {
9810 .cm-header-1 {
9805 font-size: 185.7%;
9811 font-size: 185.7%;
9806 }
9812 }
9807 .cm-header-2 {
9813 .cm-header-2 {
9808 font-size: 157.1%;
9814 font-size: 157.1%;
9809 }
9815 }
9810 .cm-header-3 {
9816 .cm-header-3 {
9811 font-size: 128.6%;
9817 font-size: 128.6%;
9812 }
9818 }
9813 .cm-header-4 {
9819 .cm-header-4 {
9814 font-size: 110%;
9820 font-size: 110%;
9815 }
9821 }
9816 .cm-header-5 {
9822 .cm-header-5 {
9817 font-size: 100%;
9823 font-size: 100%;
9818 font-style: italic;
9824 font-style: italic;
9819 }
9825 }
9820 .cm-header-6 {
9826 .cm-header-6 {
9821 font-size: 100%;
9827 font-size: 100%;
9822 font-style: italic;
9828 font-style: italic;
9823 }
9829 }
9824 .widget-area {
9830 .widget-area {
9825 /*
9831 /*
9826 LESS file that styles IPython notebook widgets and the area they sit in.
9832 LESS file that styles IPython notebook widgets and the area they sit in.
9827
9833
9828 The widget area typically looks something like this:
9834 The widget area typically looks something like this:
9829 +------------------------------------------+
9835 +------------------------------------------+
9830 | widget-area |
9836 | widget-area |
9831 | +--------+---------------------------+ |
9837 | +--------+---------------------------+ |
9832 | | prompt | widget-subarea | |
9838 | | prompt | widget-subarea | |
9833 | | | +--------+ +--------+ | |
9839 | | | +--------+ +--------+ | |
9834 | | | | widget | | widget | | |
9840 | | | | widget | | widget | | |
9835 | | | +--------+ +--------+ | |
9841 | | | +--------+ +--------+ | |
9836 | +--------+---------------------------+ |
9842 | +--------+---------------------------+ |
9837 +------------------------------------------+
9843 +------------------------------------------+
9838 */
9844 */
9839 page-break-inside: avoid;
9845 page-break-inside: avoid;
9840 /* Old browsers */
9846 /* Old browsers */
9841 display: -webkit-box;
9847 display: -webkit-box;
9842 -webkit-box-orient: horizontal;
9848 -webkit-box-orient: horizontal;
9843 -webkit-box-align: stretch;
9849 -webkit-box-align: stretch;
9844 display: -moz-box;
9850 display: -moz-box;
9845 -moz-box-orient: horizontal;
9851 -moz-box-orient: horizontal;
9846 -moz-box-align: stretch;
9852 -moz-box-align: stretch;
9847 display: box;
9853 display: box;
9848 box-orient: horizontal;
9854 box-orient: horizontal;
9849 box-align: stretch;
9855 box-align: stretch;
9850 /* Modern browsers */
9856 /* Modern browsers */
9851 display: flex;
9857 display: flex;
9852 flex-direction: row;
9858 flex-direction: row;
9853 align-items: stretch;
9859 align-items: stretch;
9854 }
9860 }
9855 .widget-area .widget-subarea {
9861 .widget-area .widget-subarea {
9856 padding: 0.44em 0.4em 0.4em 1px;
9862 padding: 0.44em 0.4em 0.4em 1px;
9857 margin-left: 6px;
9863 margin-left: 6px;
9858 box-sizing: border-box;
9864 box-sizing: border-box;
9859 -moz-box-sizing: border-box;
9865 -moz-box-sizing: border-box;
9860 -webkit-box-sizing: border-box;
9866 -webkit-box-sizing: border-box;
9861 /* Old browsers */
9867 /* Old browsers */
9862 display: -webkit-box;
9868 display: -webkit-box;
9863 -webkit-box-orient: vertical;
9869 -webkit-box-orient: vertical;
9864 -webkit-box-align: stretch;
9870 -webkit-box-align: stretch;
9865 display: -moz-box;
9871 display: -moz-box;
9866 -moz-box-orient: vertical;
9872 -moz-box-orient: vertical;
9867 -moz-box-align: stretch;
9873 -moz-box-align: stretch;
9868 display: box;
9874 display: box;
9869 box-orient: vertical;
9875 box-orient: vertical;
9870 box-align: stretch;
9876 box-align: stretch;
9871 /* Modern browsers */
9877 /* Modern browsers */
9872 display: flex;
9878 display: flex;
9873 flex-direction: column;
9879 flex-direction: column;
9874 align-items: stretch;
9880 align-items: stretch;
9875 /* Old browsers */
9881 /* Old browsers */
9876 -webkit-box-flex: 2;
9882 -webkit-box-flex: 2;
9877 -moz-box-flex: 2;
9883 -moz-box-flex: 2;
9878 box-flex: 2;
9884 box-flex: 2;
9879 /* Modern browsers */
9885 /* Modern browsers */
9880 flex: 2;
9886 flex: 2;
9881 /* Old browsers */
9887 /* Old browsers */
9882 -webkit-box-align: start;
9888 -webkit-box-align: start;
9883 -moz-box-align: start;
9889 -moz-box-align: start;
9884 box-align: start;
9890 box-align: start;
9885 /* Modern browsers */
9891 /* Modern browsers */
9886 align-items: flex-start;
9892 align-items: flex-start;
9887 }
9893 }
9888 .widget-area.connection-problems .prompt:after {
9894 .widget-area.connection-problems .prompt:after {
9889 content: "\f127";
9895 content: "\f127";
9890 font-family: 'FontAwesome';
9896 font-family: 'FontAwesome';
9891 color: #d9534f;
9897 color: #d9534f;
9892 font-size: 14px;
9898 font-size: 14px;
9893 top: 3px;
9899 top: 3px;
9894 padding: 3px;
9900 padding: 3px;
9895 }
9901 }
9896 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9902 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9897 THE WIDGET AREA). */
9903 THE WIDGET AREA). */
9898 .slide-track {
9904 .slide-track {
9899 /* Slider Track */
9905 /* Slider Track */
9900 border: 1px solid #CCCCCC;
9906 border: 1px solid #CCCCCC;
9901 background: #FFFFFF;
9907 background: #FFFFFF;
9902 border-radius: 2px;
9908 border-radius: 2px;
9903 /* Round the corners of the slide track */
9909 /* Round the corners of the slide track */
9904 }
9910 }
9905 .widget-hslider {
9911 .widget-hslider {
9906 /* Horizontal jQuery Slider
9912 /* Horizontal jQuery Slider
9907
9913
9908 Both the horizontal and vertical versions of the slider are characterized
9914 Both the horizontal and vertical versions of the slider are characterized
9909 by a styled div that contains an invisible jQuery slide div which
9915 by a styled div that contains an invisible jQuery slide div which
9910 contains a visible slider handle div. This is requred so we can control
9916 contains a visible slider handle div. This is requred so we can control
9911 how the slider is drawn and 'fix' the issue where the slide handle
9917 how the slider is drawn and 'fix' the issue where the slide handle
9912 doesn't stop at the end of the slide.
9918 doesn't stop at the end of the slide.
9913
9919
9914 Both horizontal and vertical sliders have this div nesting:
9920 Both horizontal and vertical sliders have this div nesting:
9915 +------------------------------------------+
9921 +------------------------------------------+
9916 | widget-(h/v)slider |
9922 | widget-(h/v)slider |
9917 | +--------+---------------------------+ |
9923 | +--------+---------------------------+ |
9918 | | ui-slider | |
9924 | | ui-slider | |
9919 | | +------------------+ | |
9925 | | +------------------+ | |
9920 | | | ui-slider-handle | | |
9926 | | | ui-slider-handle | | |
9921 | | +------------------+ | |
9927 | | +------------------+ | |
9922 | +--------+---------------------------+ |
9928 | +--------+---------------------------+ |
9923 +------------------------------------------+
9929 +------------------------------------------+
9924 */
9930 */
9925 /* Fix the padding of the slide track so the ui-slider is sized
9931 /* Fix the padding of the slide track so the ui-slider is sized
9926 correctly. */
9932 correctly. */
9927 padding-left: 8px;
9933 padding-left: 8px;
9928 padding-right: 2px;
9934 padding-right: 2px;
9929 overflow: visible;
9935 overflow: visible;
9930 /* Default size of the slider */
9936 /* Default size of the slider */
9931 width: 350px;
9937 width: 350px;
9932 height: 5px;
9938 height: 5px;
9933 max-height: 5px;
9939 max-height: 5px;
9934 margin-top: 13px;
9940 margin-top: 13px;
9935 margin-bottom: 10px;
9941 margin-bottom: 10px;
9936 /* Style the slider track */
9942 /* Style the slider track */
9937 /* Slider Track */
9943 /* Slider Track */
9938 border: 1px solid #CCCCCC;
9944 border: 1px solid #CCCCCC;
9939 background: #FFFFFF;
9945 background: #FFFFFF;
9940 border-radius: 2px;
9946 border-radius: 2px;
9941 /* Round the corners of the slide track */
9947 /* Round the corners of the slide track */
9942 /* Make the div a flex box (makes FF behave correctly). */
9948 /* Make the div a flex box (makes FF behave correctly). */
9943 /* Old browsers */
9949 /* Old browsers */
9944 display: -webkit-box;
9950 display: -webkit-box;
9945 -webkit-box-orient: horizontal;
9951 -webkit-box-orient: horizontal;
9946 -webkit-box-align: stretch;
9952 -webkit-box-align: stretch;
9947 display: -moz-box;
9953 display: -moz-box;
9948 -moz-box-orient: horizontal;
9954 -moz-box-orient: horizontal;
9949 -moz-box-align: stretch;
9955 -moz-box-align: stretch;
9950 display: box;
9956 display: box;
9951 box-orient: horizontal;
9957 box-orient: horizontal;
9952 box-align: stretch;
9958 box-align: stretch;
9953 /* Modern browsers */
9959 /* Modern browsers */
9954 display: flex;
9960 display: flex;
9955 flex-direction: row;
9961 flex-direction: row;
9956 align-items: stretch;
9962 align-items: stretch;
9957 }
9963 }
9958 .widget-hslider .ui-slider {
9964 .widget-hslider .ui-slider {
9959 /* Inner, invisible slide div */
9965 /* Inner, invisible slide div */
9960 border: 0px;
9966 border: 0px;
9961 background: none;
9967 background: none;
9962 /* Old browsers */
9968 /* Old browsers */
9963 display: -webkit-box;
9969 display: -webkit-box;
9964 -webkit-box-orient: horizontal;
9970 -webkit-box-orient: horizontal;
9965 -webkit-box-align: stretch;
9971 -webkit-box-align: stretch;
9966 display: -moz-box;
9972 display: -moz-box;
9967 -moz-box-orient: horizontal;
9973 -moz-box-orient: horizontal;
9968 -moz-box-align: stretch;
9974 -moz-box-align: stretch;
9969 display: box;
9975 display: box;
9970 box-orient: horizontal;
9976 box-orient: horizontal;
9971 box-align: stretch;
9977 box-align: stretch;
9972 /* Modern browsers */
9978 /* Modern browsers */
9973 display: flex;
9979 display: flex;
9974 flex-direction: row;
9980 flex-direction: row;
9975 align-items: stretch;
9981 align-items: stretch;
9976 /* Old browsers */
9982 /* Old browsers */
9977 -webkit-box-flex: 1;
9983 -webkit-box-flex: 1;
9978 -moz-box-flex: 1;
9984 -moz-box-flex: 1;
9979 box-flex: 1;
9985 box-flex: 1;
9980 /* Modern browsers */
9986 /* Modern browsers */
9981 flex: 1;
9987 flex: 1;
9982 }
9988 }
9983 .widget-hslider .ui-slider .ui-slider-handle {
9989 .widget-hslider .ui-slider .ui-slider-handle {
9984 width: 12px;
9990 width: 12px;
9985 height: 28px;
9991 height: 28px;
9986 margin-top: -8px;
9992 margin-top: -8px;
9987 border-radius: 2px;
9993 border-radius: 2px;
9988 }
9994 }
9989 .widget-hslider .ui-slider .ui-slider-range {
9995 .widget-hslider .ui-slider .ui-slider-range {
9990 height: 12px;
9996 height: 12px;
9991 margin-top: -4px;
9997 margin-top: -4px;
9992 background: #eeeeee;
9998 background: #eeeeee;
9993 }
9999 }
9994 .widget-vslider {
10000 .widget-vslider {
9995 /* Vertical jQuery Slider */
10001 /* Vertical jQuery Slider */
9996 /* Fix the padding of the slide track so the ui-slider is sized
10002 /* Fix the padding of the slide track so the ui-slider is sized
9997 correctly. */
10003 correctly. */
9998 padding-bottom: 5px;
10004 padding-bottom: 5px;
9999 overflow: visible;
10005 overflow: visible;
10000 /* Default size of the slider */
10006 /* Default size of the slider */
10001 width: 5px;
10007 width: 5px;
10002 max-width: 5px;
10008 max-width: 5px;
10003 height: 250px;
10009 height: 250px;
10004 margin-left: 12px;
10010 margin-left: 12px;
10005 /* Style the slider track */
10011 /* Style the slider track */
10006 /* Slider Track */
10012 /* Slider Track */
10007 border: 1px solid #CCCCCC;
10013 border: 1px solid #CCCCCC;
10008 background: #FFFFFF;
10014 background: #FFFFFF;
10009 border-radius: 2px;
10015 border-radius: 2px;
10010 /* Round the corners of the slide track */
10016 /* Round the corners of the slide track */
10011 /* Make the div a flex box (makes FF behave correctly). */
10017 /* Make the div a flex box (makes FF behave correctly). */
10012 /* Old browsers */
10018 /* Old browsers */
10013 display: -webkit-box;
10019 display: -webkit-box;
10014 -webkit-box-orient: vertical;
10020 -webkit-box-orient: vertical;
10015 -webkit-box-align: stretch;
10021 -webkit-box-align: stretch;
10016 display: -moz-box;
10022 display: -moz-box;
10017 -moz-box-orient: vertical;
10023 -moz-box-orient: vertical;
10018 -moz-box-align: stretch;
10024 -moz-box-align: stretch;
10019 display: box;
10025 display: box;
10020 box-orient: vertical;
10026 box-orient: vertical;
10021 box-align: stretch;
10027 box-align: stretch;
10022 /* Modern browsers */
10028 /* Modern browsers */
10023 display: flex;
10029 display: flex;
10024 flex-direction: column;
10030 flex-direction: column;
10025 align-items: stretch;
10031 align-items: stretch;
10026 }
10032 }
10027 .widget-vslider .ui-slider {
10033 .widget-vslider .ui-slider {
10028 /* Inner, invisible slide div */
10034 /* Inner, invisible slide div */
10029 border: 0px;
10035 border: 0px;
10030 background: none;
10036 background: none;
10031 margin-left: -4px;
10037 margin-left: -4px;
10032 margin-top: 5px;
10038 margin-top: 5px;
10033 /* Old browsers */
10039 /* Old browsers */
10034 display: -webkit-box;
10040 display: -webkit-box;
10035 -webkit-box-orient: vertical;
10041 -webkit-box-orient: vertical;
10036 -webkit-box-align: stretch;
10042 -webkit-box-align: stretch;
10037 display: -moz-box;
10043 display: -moz-box;
10038 -moz-box-orient: vertical;
10044 -moz-box-orient: vertical;
10039 -moz-box-align: stretch;
10045 -moz-box-align: stretch;
10040 display: box;
10046 display: box;
10041 box-orient: vertical;
10047 box-orient: vertical;
10042 box-align: stretch;
10048 box-align: stretch;
10043 /* Modern browsers */
10049 /* Modern browsers */
10044 display: flex;
10050 display: flex;
10045 flex-direction: column;
10051 flex-direction: column;
10046 align-items: stretch;
10052 align-items: stretch;
10047 /* Old browsers */
10053 /* Old browsers */
10048 -webkit-box-flex: 1;
10054 -webkit-box-flex: 1;
10049 -moz-box-flex: 1;
10055 -moz-box-flex: 1;
10050 box-flex: 1;
10056 box-flex: 1;
10051 /* Modern browsers */
10057 /* Modern browsers */
10052 flex: 1;
10058 flex: 1;
10053 }
10059 }
10054 .widget-vslider .ui-slider .ui-slider-handle {
10060 .widget-vslider .ui-slider .ui-slider-handle {
10055 width: 28px;
10061 width: 28px;
10056 height: 12px;
10062 height: 12px;
10057 margin-left: -9px;
10063 margin-left: -9px;
10058 border-radius: 2px;
10064 border-radius: 2px;
10059 }
10065 }
10060 .widget-vslider .ui-slider .ui-slider-range {
10066 .widget-vslider .ui-slider .ui-slider-range {
10061 width: 12px;
10067 width: 12px;
10062 margin-left: -1px;
10068 margin-left: -1px;
10063 background: #eeeeee;
10069 background: #eeeeee;
10064 }
10070 }
10065 .widget-text {
10071 .widget-text {
10066 /* String Textbox - used for TextBoxView and TextAreaView */
10072 /* String Textbox - used for TextBoxView and TextAreaView */
10067 width: 350px;
10073 width: 350px;
10068 margin: 0px;
10074 margin: 0px;
10069 }
10075 }
10070 .widget-listbox {
10076 .widget-listbox {
10071 /* Listbox */
10077 /* Listbox */
10072 width: 350px;
10078 width: 350px;
10073 margin-bottom: 0px;
10079 margin-bottom: 0px;
10074 }
10080 }
10075 .widget-numeric-text {
10081 .widget-numeric-text {
10076 /* Single Line Textbox - used for IntTextView and FloatTextView */
10082 /* Single Line Textbox - used for IntTextView and FloatTextView */
10077 width: 150px;
10083 width: 150px;
10078 margin: 0px;
10084 margin: 0px;
10079 }
10085 }
10080 .widget-progress {
10086 .widget-progress {
10081 /* Progress Bar */
10087 /* Progress Bar */
10082 margin-top: 6px;
10088 margin-top: 6px;
10083 min-width: 350px;
10089 min-width: 350px;
10084 }
10090 }
10085 .widget-progress .progress-bar {
10091 .widget-progress .progress-bar {
10086 /* Disable progress bar animation */
10092 /* Disable progress bar animation */
10087 -webkit-transition: none;
10093 -webkit-transition: none;
10088 -moz-transition: none;
10094 -moz-transition: none;
10089 -ms-transition: none;
10095 -ms-transition: none;
10090 -o-transition: none;
10096 -o-transition: none;
10091 transition: none;
10097 transition: none;
10092 }
10098 }
10093 .widget-combo-btn {
10099 .widget-combo-btn {
10094 /* ComboBox Main Button */
10100 /* ComboBox Main Button */
10095 /* Subtract 25px to account for the drop arrow button */
10101 /* Subtract 25px to account for the drop arrow button */
10096 min-width: 125px;
10102 min-width: 125px;
10097 }
10103 }
10098 .widget_item .dropdown-menu li a {
10104 .widget_item .dropdown-menu li a {
10099 color: inherit;
10105 color: inherit;
10100 }
10106 }
10101 .widget-hbox {
10107 .widget-hbox {
10102 /* Horizontal widgets */
10108 /* Horizontal widgets */
10103 /* Old browsers */
10109 /* Old browsers */
10104 display: -webkit-box;
10110 display: -webkit-box;
10105 -webkit-box-orient: horizontal;
10111 -webkit-box-orient: horizontal;
10106 -webkit-box-align: stretch;
10112 -webkit-box-align: stretch;
10107 display: -moz-box;
10113 display: -moz-box;
10108 -moz-box-orient: horizontal;
10114 -moz-box-orient: horizontal;
10109 -moz-box-align: stretch;
10115 -moz-box-align: stretch;
10110 display: box;
10116 display: box;
10111 box-orient: horizontal;
10117 box-orient: horizontal;
10112 box-align: stretch;
10118 box-align: stretch;
10113 /* Modern browsers */
10119 /* Modern browsers */
10114 display: flex;
10120 display: flex;
10115 flex-direction: row;
10121 flex-direction: row;
10116 align-items: stretch;
10122 align-items: stretch;
10117 }
10123 }
10118 .widget-hbox input[type="checkbox"] {
10124 .widget-hbox input[type="checkbox"] {
10119 margin-top: 9px;
10125 margin-top: 9px;
10120 margin-bottom: 10px;
10126 margin-bottom: 10px;
10121 }
10127 }
10122 .widget-hbox .widget-label {
10128 .widget-hbox .widget-label {
10123 /* Horizontal Label */
10129 /* Horizontal Label */
10124 min-width: 10ex;
10130 min-width: 10ex;
10125 padding-right: 8px;
10131 padding-right: 8px;
10126 padding-top: 5px;
10132 padding-top: 5px;
10127 text-align: right;
10133 text-align: right;
10128 vertical-align: text-top;
10134 vertical-align: text-top;
10129 }
10135 }
10130 .widget-hbox .widget-readout {
10136 .widget-hbox .widget-readout {
10131 padding-left: 8px;
10137 padding-left: 8px;
10132 padding-top: 5px;
10138 padding-top: 5px;
10133 text-align: left;
10139 text-align: left;
10134 vertical-align: text-top;
10140 vertical-align: text-top;
10135 }
10141 }
10136 .widget-vbox {
10142 .widget-vbox {
10137 /* Vertical widgets */
10143 /* Vertical widgets */
10138 /* Old browsers */
10144 /* Old browsers */
10139 display: -webkit-box;
10145 display: -webkit-box;
10140 -webkit-box-orient: vertical;
10146 -webkit-box-orient: vertical;
10141 -webkit-box-align: stretch;
10147 -webkit-box-align: stretch;
10142 display: -moz-box;
10148 display: -moz-box;
10143 -moz-box-orient: vertical;
10149 -moz-box-orient: vertical;
10144 -moz-box-align: stretch;
10150 -moz-box-align: stretch;
10145 display: box;
10151 display: box;
10146 box-orient: vertical;
10152 box-orient: vertical;
10147 box-align: stretch;
10153 box-align: stretch;
10148 /* Modern browsers */
10154 /* Modern browsers */
10149 display: flex;
10155 display: flex;
10150 flex-direction: column;
10156 flex-direction: column;
10151 align-items: stretch;
10157 align-items: stretch;
10152 }
10158 }
10153 .widget-vbox .widget-label {
10159 .widget-vbox .widget-label {
10154 /* Vertical Label */
10160 /* Vertical Label */
10155 padding-bottom: 5px;
10161 padding-bottom: 5px;
10156 text-align: center;
10162 text-align: center;
10157 vertical-align: text-bottom;
10163 vertical-align: text-bottom;
10158 }
10164 }
10159 .widget-vbox .widget-readout {
10165 .widget-vbox .widget-readout {
10160 /* Vertical Label */
10166 /* Vertical Label */
10161 padding-top: 5px;
10167 padding-top: 5px;
10162 text-align: center;
10168 text-align: center;
10163 vertical-align: text-top;
10169 vertical-align: text-top;
10164 }
10170 }
10165 .widget-box {
10171 .widget-box {
10166 /* Box */
10172 /* Box */
10167 box-sizing: border-box;
10173 box-sizing: border-box;
10168 -moz-box-sizing: border-box;
10174 -moz-box-sizing: border-box;
10169 -webkit-box-sizing: border-box;
10175 -webkit-box-sizing: border-box;
10170 /* Old browsers */
10176 /* Old browsers */
10171 -webkit-box-align: start;
10177 -webkit-box-align: start;
10172 -moz-box-align: start;
10178 -moz-box-align: start;
10173 box-align: start;
10179 box-align: start;
10174 /* Modern browsers */
10180 /* Modern browsers */
10175 align-items: flex-start;
10181 align-items: flex-start;
10176 }
10182 }
10177 .widget-radio-box {
10183 .widget-radio-box {
10178 /* Contains RadioButtonsWidget */
10184 /* Contains RadioButtonsWidget */
10179 /* Old browsers */
10185 /* Old browsers */
10180 display: -webkit-box;
10186 display: -webkit-box;
10181 -webkit-box-orient: vertical;
10187 -webkit-box-orient: vertical;
10182 -webkit-box-align: stretch;
10188 -webkit-box-align: stretch;
10183 display: -moz-box;
10189 display: -moz-box;
10184 -moz-box-orient: vertical;
10190 -moz-box-orient: vertical;
10185 -moz-box-align: stretch;
10191 -moz-box-align: stretch;
10186 display: box;
10192 display: box;
10187 box-orient: vertical;
10193 box-orient: vertical;
10188 box-align: stretch;
10194 box-align: stretch;
10189 /* Modern browsers */
10195 /* Modern browsers */
10190 display: flex;
10196 display: flex;
10191 flex-direction: column;
10197 flex-direction: column;
10192 align-items: stretch;
10198 align-items: stretch;
10193 box-sizing: border-box;
10199 box-sizing: border-box;
10194 -moz-box-sizing: border-box;
10200 -moz-box-sizing: border-box;
10195 -webkit-box-sizing: border-box;
10201 -webkit-box-sizing: border-box;
10196 padding-top: 4px;
10202 padding-top: 4px;
10197 }
10203 }
10198 .widget-radio-box label {
10204 .widget-radio-box label {
10199 margin-top: 0px;
10205 margin-top: 0px;
10200 }
10206 }
10201 /*!
10207 /*!
10202 *
10208 *
10203 * IPython notebook webapp
10209 * IPython notebook webapp
10204 *
10210 *
10205 */
10211 */
10206 @media (max-width: 767px) {
10212 @media (max-width: 767px) {
10207 .notebook_app {
10213 .notebook_app {
10208 padding-left: 0px;
10214 padding-left: 0px;
10209 padding-right: 0px;
10215 padding-right: 0px;
10210 }
10216 }
10211 }
10217 }
10212 #ipython-main-app {
10218 #ipython-main-app {
10213 box-sizing: border-box;
10219 box-sizing: border-box;
10214 -moz-box-sizing: border-box;
10220 -moz-box-sizing: border-box;
10215 -webkit-box-sizing: border-box;
10221 -webkit-box-sizing: border-box;
10216 }
10222 }
10217 div#notebook_panel {
10223 div#notebook_panel {
10218 margin: 0px;
10224 margin: 0px;
10219 padding: 0px;
10225 padding: 0px;
10220 box-sizing: border-box;
10226 box-sizing: border-box;
10221 -moz-box-sizing: border-box;
10227 -moz-box-sizing: border-box;
10222 -webkit-box-sizing: border-box;
10228 -webkit-box-sizing: border-box;
10223 }
10229 }
10224 #notebook {
10230 #notebook {
10225 font-size: 14px;
10231 font-size: 14px;
10226 line-height: 20px;
10232 line-height: 20px;
10227 overflow-y: hidden;
10233 overflow-y: hidden;
10228 overflow-x: auto;
10234 overflow-x: auto;
10229 width: 100%;
10235 width: 100%;
10230 /* This spaces the page away from the edge of the notebook area */
10236 /* This spaces the page away from the edge of the notebook area */
10231 padding-top: 20px;
10237 padding-top: 20px;
10232 margin: 0px;
10238 margin: 0px;
10233 outline: none;
10239 outline: none;
10234 box-sizing: border-box;
10240 box-sizing: border-box;
10235 -moz-box-sizing: border-box;
10241 -moz-box-sizing: border-box;
10236 -webkit-box-sizing: border-box;
10242 -webkit-box-sizing: border-box;
10237 }
10243 }
10238 @media not print {
10244 @media not print {
10239 #notebook-container {
10245 #notebook-container {
10240 padding: 15px;
10246 padding: 15px;
10241 background-color: #ffffff;
10247 background-color: #ffffff;
10242 min-height: 0;
10248 min-height: 0;
10243 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10249 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10244 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10250 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10245 }
10251 }
10246 }
10252 }
10247 div.ui-widget-content {
10253 div.ui-widget-content {
10248 border: 1px solid #ababab;
10254 border: 1px solid #ababab;
10249 outline: none;
10255 outline: none;
10250 }
10256 }
10251 pre.dialog {
10257 pre.dialog {
10252 background-color: #f7f7f7;
10258 background-color: #f7f7f7;
10253 border: 1px solid #ddd;
10259 border: 1px solid #ddd;
10254 border-radius: 2px;
10260 border-radius: 2px;
10255 padding: 0.4em;
10261 padding: 0.4em;
10256 padding-left: 2em;
10262 padding-left: 2em;
10257 }
10263 }
10258 p.dialog {
10264 p.dialog {
10259 padding: 0.2em;
10265 padding: 0.2em;
10260 }
10266 }
10261 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
10267 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
10262 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
10268 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
10263 */
10269 */
10264 pre,
10270 pre,
10265 code,
10271 code,
10266 kbd,
10272 kbd,
10267 samp {
10273 samp {
10268 white-space: pre-wrap;
10274 white-space: pre-wrap;
10269 }
10275 }
10270 #fonttest {
10276 #fonttest {
10271 font-family: monospace;
10277 font-family: monospace;
10272 }
10278 }
10273 p {
10279 p {
10274 margin-bottom: 0;
10280 margin-bottom: 0;
10275 }
10281 }
10276 .end_space {
10282 .end_space {
10277 min-height: 100px;
10283 min-height: 100px;
10278 transition: height .2s ease;
10284 transition: height .2s ease;
10279 }
10285 }
10280 .notebook_app #header {
10286 .notebook_app #header {
10281 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10287 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10282 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10288 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10283 }
10289 }
10284 @media not print {
10290 @media not print {
10285 .notebook_app {
10291 .notebook_app {
10286 background-color: #eeeeee;
10292 background-color: #eeeeee;
10287 }
10293 }
10288 }
10294 }
10289 /* CSS for the cell toolbar */
10295 /* CSS for the cell toolbar */
10290 .celltoolbar {
10296 .celltoolbar {
10291 border: thin solid #CFCFCF;
10297 border: thin solid #CFCFCF;
10292 border-bottom: none;
10298 border-bottom: none;
10293 background: #EEE;
10299 background: #EEE;
10294 border-radius: 2px 2px 0px 0px;
10300 border-radius: 2px 2px 0px 0px;
10295 width: 100%;
10301 width: 100%;
10296 height: 29px;
10302 height: 29px;
10297 padding-right: 4px;
10303 padding-right: 4px;
10298 /* Old browsers */
10304 /* Old browsers */
10299 display: -webkit-box;
10305 display: -webkit-box;
10300 -webkit-box-orient: horizontal;
10306 -webkit-box-orient: horizontal;
10301 -webkit-box-align: stretch;
10307 -webkit-box-align: stretch;
10302 display: -moz-box;
10308 display: -moz-box;
10303 -moz-box-orient: horizontal;
10309 -moz-box-orient: horizontal;
10304 -moz-box-align: stretch;
10310 -moz-box-align: stretch;
10305 display: box;
10311 display: box;
10306 box-orient: horizontal;
10312 box-orient: horizontal;
10307 box-align: stretch;
10313 box-align: stretch;
10308 /* Modern browsers */
10314 /* Modern browsers */
10309 display: flex;
10315 display: flex;
10310 flex-direction: row;
10316 flex-direction: row;
10311 align-items: stretch;
10317 align-items: stretch;
10312 /* Old browsers */
10318 /* Old browsers */
10313 -webkit-box-pack: end;
10319 -webkit-box-pack: end;
10314 -moz-box-pack: end;
10320 -moz-box-pack: end;
10315 box-pack: end;
10321 box-pack: end;
10316 /* Modern browsers */
10322 /* Modern browsers */
10317 justify-content: flex-end;
10323 justify-content: flex-end;
10318 }
10324 }
10319 @media print {
10325 @media print {
10320 .celltoolbar {
10326 .celltoolbar {
10321 display: none;
10327 display: none;
10322 }
10328 }
10323 }
10329 }
10324 .ctb_hideshow {
10330 .ctb_hideshow {
10325 display: none;
10331 display: none;
10326 vertical-align: bottom;
10332 vertical-align: bottom;
10327 }
10333 }
10328 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
10334 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
10329 Cell toolbars are only shown when the ctb_global_show class is also set.
10335 Cell toolbars are only shown when the ctb_global_show class is also set.
10330 */
10336 */
10331 .ctb_global_show .ctb_show.ctb_hideshow {
10337 .ctb_global_show .ctb_show.ctb_hideshow {
10332 display: block;
10338 display: block;
10333 }
10339 }
10334 .ctb_global_show .ctb_show + .input_area,
10340 .ctb_global_show .ctb_show + .input_area,
10335 .ctb_global_show .ctb_show + div.text_cell_input,
10341 .ctb_global_show .ctb_show + div.text_cell_input,
10336 .ctb_global_show .ctb_show ~ div.text_cell_render {
10342 .ctb_global_show .ctb_show ~ div.text_cell_render {
10337 border-top-right-radius: 0px;
10343 border-top-right-radius: 0px;
10338 border-top-left-radius: 0px;
10344 border-top-left-radius: 0px;
10339 }
10345 }
10340 .ctb_global_show .ctb_show ~ div.text_cell_render {
10346 .ctb_global_show .ctb_show ~ div.text_cell_render {
10341 border: 1px solid #cfcfcf;
10347 border: 1px solid #cfcfcf;
10342 }
10348 }
10343 .celltoolbar {
10349 .celltoolbar {
10344 font-size: 87%;
10350 font-size: 87%;
10345 padding-top: 3px;
10351 padding-top: 3px;
10346 }
10352 }
10347 .celltoolbar select {
10353 .celltoolbar select {
10348 display: block;
10354 display: block;
10349 width: 100%;
10355 width: 100%;
10350 height: 32px;
10356 height: 32px;
10351 padding: 6px 12px;
10357 padding: 6px 12px;
10352 font-size: 13px;
10358 font-size: 13px;
10353 line-height: 1.42857143;
10359 line-height: 1.42857143;
10354 color: #555555;
10360 color: #555555;
10355 background-color: #ffffff;
10361 background-color: #ffffff;
10356 background-image: none;
10362 background-image: none;
10357 border: 1px solid #cccccc;
10363 border: 1px solid #cccccc;
10358 border-radius: 2px;
10364 border-radius: 2px;
10359 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10365 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10360 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10366 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10361 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10367 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10362 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10368 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10363 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10369 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10364 height: 30px;
10370 height: 30px;
10365 padding: 5px 10px;
10371 padding: 5px 10px;
10366 font-size: 12px;
10372 font-size: 12px;
10367 line-height: 1.5;
10373 line-height: 1.5;
10368 border-radius: 1px;
10374 border-radius: 1px;
10369 width: inherit;
10375 width: inherit;
10370 font-size: 87%;
10376 font-size: 87%;
10371 height: 22px;
10377 height: 22px;
10372 display: inline-block;
10378 display: inline-block;
10373 }
10379 }
10374 .celltoolbar select:focus {
10380 .celltoolbar select:focus {
10375 border-color: #66afe9;
10381 border-color: #66afe9;
10376 outline: 0;
10382 outline: 0;
10377 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10383 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10378 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10384 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10379 }
10385 }
10380 .celltoolbar select::-moz-placeholder {
10386 .celltoolbar select::-moz-placeholder {
10381 color: #999999;
10387 color: #999999;
10382 opacity: 1;
10388 opacity: 1;
10383 }
10389 }
10384 .celltoolbar select:-ms-input-placeholder {
10390 .celltoolbar select:-ms-input-placeholder {
10385 color: #999999;
10391 color: #999999;
10386 }
10392 }
10387 .celltoolbar select::-webkit-input-placeholder {
10393 .celltoolbar select::-webkit-input-placeholder {
10388 color: #999999;
10394 color: #999999;
10389 }
10395 }
10390 .celltoolbar select[disabled],
10396 .celltoolbar select[disabled],
10391 .celltoolbar select[readonly],
10397 .celltoolbar select[readonly],
10392 fieldset[disabled] .celltoolbar select {
10398 fieldset[disabled] .celltoolbar select {
10393 cursor: not-allowed;
10399 cursor: not-allowed;
10394 background-color: #eeeeee;
10400 background-color: #eeeeee;
10395 opacity: 1;
10401 opacity: 1;
10396 }
10402 }
10397 textarea.celltoolbar select {
10403 textarea.celltoolbar select {
10398 height: auto;
10404 height: auto;
10399 }
10405 }
10400 select.celltoolbar select {
10406 select.celltoolbar select {
10401 height: 30px;
10407 height: 30px;
10402 line-height: 30px;
10408 line-height: 30px;
10403 }
10409 }
10404 textarea.celltoolbar select,
10410 textarea.celltoolbar select,
10405 select[multiple].celltoolbar select {
10411 select[multiple].celltoolbar select {
10406 height: auto;
10412 height: auto;
10407 }
10413 }
10408 .celltoolbar label {
10414 .celltoolbar label {
10409 margin-left: 5px;
10415 margin-left: 5px;
10410 margin-right: 5px;
10416 margin-right: 5px;
10411 }
10417 }
10412 .completions {
10418 .completions {
10413 position: absolute;
10419 position: absolute;
10414 z-index: 10;
10420 z-index: 10;
10415 overflow: hidden;
10421 overflow: hidden;
10416 border: 1px solid #ababab;
10422 border: 1px solid #ababab;
10417 border-radius: 2px;
10423 border-radius: 2px;
10418 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10424 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10419 box-shadow: 0px 6px 10px -1px #adadad;
10425 box-shadow: 0px 6px 10px -1px #adadad;
10420 }
10426 }
10421 .completions select {
10427 .completions select {
10422 background: white;
10428 background: white;
10423 outline: none;
10429 outline: none;
10424 border: none;
10430 border: none;
10425 padding: 0px;
10431 padding: 0px;
10426 margin: 0px;
10432 margin: 0px;
10427 overflow: auto;
10433 overflow: auto;
10428 font-family: monospace;
10434 font-family: monospace;
10429 font-size: 110%;
10435 font-size: 110%;
10430 color: #000000;
10436 color: #000000;
10431 width: auto;
10437 width: auto;
10432 }
10438 }
10433 .completions select option.context {
10439 .completions select option.context {
10434 color: #286090;
10440 color: #286090;
10435 }
10441 }
10436 #kernel_logo_widget {
10442 #kernel_logo_widget {
10437 float: right !important;
10443 float: right !important;
10438 float: right;
10444 float: right;
10439 }
10445 }
10440 #kernel_logo_widget .current_kernel_logo {
10446 #kernel_logo_widget .current_kernel_logo {
10441 display: none;
10447 display: none;
10442 margin-top: -1px;
10448 margin-top: -1px;
10443 margin-bottom: -1px;
10449 margin-bottom: -1px;
10444 width: 32px;
10450 width: 32px;
10445 height: 32px;
10451 height: 32px;
10446 }
10452 }
10447 #menubar {
10453 #menubar {
10448 box-sizing: border-box;
10454 box-sizing: border-box;
10449 -moz-box-sizing: border-box;
10455 -moz-box-sizing: border-box;
10450 -webkit-box-sizing: border-box;
10456 -webkit-box-sizing: border-box;
10451 margin-top: 1px;
10457 margin-top: 1px;
10452 }
10458 }
10453 #menubar .navbar {
10459 #menubar .navbar {
10454 border-top: 1px;
10460 border-top: 1px;
10455 border-radius: 0px 0px 2px 2px;
10461 border-radius: 0px 0px 2px 2px;
10456 margin-bottom: 0px;
10462 margin-bottom: 0px;
10457 }
10463 }
10458 #menubar .navbar-toggle {
10464 #menubar .navbar-toggle {
10459 float: left;
10465 float: left;
10460 padding-top: 7px;
10466 padding-top: 7px;
10461 padding-bottom: 7px;
10467 padding-bottom: 7px;
10462 border: none;
10468 border: none;
10463 }
10469 }
10464 #menubar .navbar-collapse {
10470 #menubar .navbar-collapse {
10465 clear: left;
10471 clear: left;
10466 }
10472 }
10467 .nav-wrapper {
10473 .nav-wrapper {
10468 border-bottom: 1px solid #e7e7e7;
10474 border-bottom: 1px solid #e7e7e7;
10469 }
10475 }
10470 i.menu-icon {
10476 i.menu-icon {
10471 padding-top: 4px;
10477 padding-top: 4px;
10472 }
10478 }
10473 ul#help_menu li a {
10479 ul#help_menu li a {
10474 overflow: hidden;
10480 overflow: hidden;
10475 padding-right: 2.2em;
10481 padding-right: 2.2em;
10476 }
10482 }
10477 ul#help_menu li a i {
10483 ul#help_menu li a i {
10478 margin-right: -1.2em;
10484 margin-right: -1.2em;
10479 }
10485 }
10480 .dropdown-submenu {
10486 .dropdown-submenu {
10481 position: relative;
10487 position: relative;
10482 }
10488 }
10483 .dropdown-submenu > .dropdown-menu {
10489 .dropdown-submenu > .dropdown-menu {
10484 top: 0;
10490 top: 0;
10485 left: 100%;
10491 left: 100%;
10486 margin-top: -6px;
10492 margin-top: -6px;
10487 margin-left: -1px;
10493 margin-left: -1px;
10488 }
10494 }
10489 .dropdown-submenu:hover > .dropdown-menu {
10495 .dropdown-submenu:hover > .dropdown-menu {
10490 display: block;
10496 display: block;
10491 }
10497 }
10492 .dropdown-submenu > a:after {
10498 .dropdown-submenu > a:after {
10493 display: inline-block;
10499 display: inline-block;
10494 font: normal normal normal 14px/1 FontAwesome;
10500 font: normal normal normal 14px/1 FontAwesome;
10495 font-size: inherit;
10501 font-size: inherit;
10496 text-rendering: auto;
10502 text-rendering: auto;
10497 -webkit-font-smoothing: antialiased;
10503 -webkit-font-smoothing: antialiased;
10498 -moz-osx-font-smoothing: grayscale;
10504 -moz-osx-font-smoothing: grayscale;
10499 transform: translate(0, 0);
10505 transform: translate(0, 0);
10500 display: block;
10506 display: block;
10501 content: "\f0da";
10507 content: "\f0da";
10502 float: right;
10508 float: right;
10503 color: #333333;
10509 color: #333333;
10504 margin-top: 2px;
10510 margin-top: 2px;
10505 margin-right: -10px;
10511 margin-right: -10px;
10506 }
10512 }
10507 .dropdown-submenu > a:after.pull-left {
10513 .dropdown-submenu > a:after.pull-left {
10508 margin-right: .3em;
10514 margin-right: .3em;
10509 }
10515 }
10510 .dropdown-submenu > a:after.pull-right {
10516 .dropdown-submenu > a:after.pull-right {
10511 margin-left: .3em;
10517 margin-left: .3em;
10512 }
10518 }
10513 .dropdown-submenu:hover > a:after {
10519 .dropdown-submenu:hover > a:after {
10514 color: #262626;
10520 color: #262626;
10515 }
10521 }
10516 .dropdown-submenu.pull-left {
10522 .dropdown-submenu.pull-left {
10517 float: none;
10523 float: none;
10518 }
10524 }
10519 .dropdown-submenu.pull-left > .dropdown-menu {
10525 .dropdown-submenu.pull-left > .dropdown-menu {
10520 left: -100%;
10526 left: -100%;
10521 margin-left: 10px;
10527 margin-left: 10px;
10522 }
10528 }
10523 #notification_area {
10529 #notification_area {
10524 float: right !important;
10530 float: right !important;
10525 float: right;
10531 float: right;
10526 z-index: 10;
10532 z-index: 10;
10527 }
10533 }
10528 .indicator_area {
10534 .indicator_area {
10529 float: right !important;
10535 float: right !important;
10530 float: right;
10536 float: right;
10531 color: #777777;
10537 color: #777777;
10532 margin-left: 5px;
10538 margin-left: 5px;
10533 margin-right: 5px;
10539 margin-right: 5px;
10534 width: 11px;
10540 width: 11px;
10535 z-index: 10;
10541 z-index: 10;
10536 text-align: center;
10542 text-align: center;
10537 width: auto;
10543 width: auto;
10538 }
10544 }
10539 #kernel_indicator {
10545 #kernel_indicator {
10540 float: right !important;
10546 float: right !important;
10541 float: right;
10547 float: right;
10542 color: #777777;
10548 color: #777777;
10543 margin-left: 5px;
10549 margin-left: 5px;
10544 margin-right: 5px;
10550 margin-right: 5px;
10545 width: 11px;
10551 width: 11px;
10546 z-index: 10;
10552 z-index: 10;
10547 text-align: center;
10553 text-align: center;
10548 width: auto;
10554 width: auto;
10549 border-left: 1px solid;
10555 border-left: 1px solid;
10550 }
10556 }
10551 #kernel_indicator .kernel_indicator_name {
10557 #kernel_indicator .kernel_indicator_name {
10552 padding-left: 5px;
10558 padding-left: 5px;
10553 padding-right: 5px;
10559 padding-right: 5px;
10554 }
10560 }
10555 #modal_indicator {
10561 #modal_indicator {
10556 float: right !important;
10562 float: right !important;
10557 float: right;
10563 float: right;
10558 color: #777777;
10564 color: #777777;
10559 margin-left: 5px;
10565 margin-left: 5px;
10560 margin-right: 5px;
10566 margin-right: 5px;
10561 width: 11px;
10567 width: 11px;
10562 z-index: 10;
10568 z-index: 10;
10563 text-align: center;
10569 text-align: center;
10564 width: auto;
10570 width: auto;
10565 }
10571 }
10566 .edit_mode .modal_indicator:before {
10572 .edit_mode .modal_indicator:before {
10567 display: inline-block;
10573 display: inline-block;
10568 font: normal normal normal 14px/1 FontAwesome;
10574 font: normal normal normal 14px/1 FontAwesome;
10569 font-size: inherit;
10575 font-size: inherit;
10570 text-rendering: auto;
10576 text-rendering: auto;
10571 -webkit-font-smoothing: antialiased;
10577 -webkit-font-smoothing: antialiased;
10572 -moz-osx-font-smoothing: grayscale;
10578 -moz-osx-font-smoothing: grayscale;
10573 transform: translate(0, 0);
10579 transform: translate(0, 0);
10574 content: "\f040";
10580 content: "\f040";
10575 }
10581 }
10576 .edit_mode .modal_indicator:before.pull-left {
10582 .edit_mode .modal_indicator:before.pull-left {
10577 margin-right: .3em;
10583 margin-right: .3em;
10578 }
10584 }
10579 .edit_mode .modal_indicator:before.pull-right {
10585 .edit_mode .modal_indicator:before.pull-right {
10580 margin-left: .3em;
10586 margin-left: .3em;
10581 }
10587 }
10582 .command_mode .modal_indicator:before {
10588 .command_mode .modal_indicator:before {
10583 display: inline-block;
10589 display: inline-block;
10584 font: normal normal normal 14px/1 FontAwesome;
10590 font: normal normal normal 14px/1 FontAwesome;
10585 font-size: inherit;
10591 font-size: inherit;
10586 text-rendering: auto;
10592 text-rendering: auto;
10587 -webkit-font-smoothing: antialiased;
10593 -webkit-font-smoothing: antialiased;
10588 -moz-osx-font-smoothing: grayscale;
10594 -moz-osx-font-smoothing: grayscale;
10589 transform: translate(0, 0);
10595 transform: translate(0, 0);
10590 content: ' ';
10596 content: ' ';
10591 }
10597 }
10592 .command_mode .modal_indicator:before.pull-left {
10598 .command_mode .modal_indicator:before.pull-left {
10593 margin-right: .3em;
10599 margin-right: .3em;
10594 }
10600 }
10595 .command_mode .modal_indicator:before.pull-right {
10601 .command_mode .modal_indicator:before.pull-right {
10596 margin-left: .3em;
10602 margin-left: .3em;
10597 }
10603 }
10598 .kernel_idle_icon:before {
10604 .kernel_idle_icon:before {
10599 display: inline-block;
10605 display: inline-block;
10600 font: normal normal normal 14px/1 FontAwesome;
10606 font: normal normal normal 14px/1 FontAwesome;
10601 font-size: inherit;
10607 font-size: inherit;
10602 text-rendering: auto;
10608 text-rendering: auto;
10603 -webkit-font-smoothing: antialiased;
10609 -webkit-font-smoothing: antialiased;
10604 -moz-osx-font-smoothing: grayscale;
10610 -moz-osx-font-smoothing: grayscale;
10605 transform: translate(0, 0);
10611 transform: translate(0, 0);
10606 content: "\f10c";
10612 content: "\f10c";
10607 }
10613 }
10608 .kernel_idle_icon:before.pull-left {
10614 .kernel_idle_icon:before.pull-left {
10609 margin-right: .3em;
10615 margin-right: .3em;
10610 }
10616 }
10611 .kernel_idle_icon:before.pull-right {
10617 .kernel_idle_icon:before.pull-right {
10612 margin-left: .3em;
10618 margin-left: .3em;
10613 }
10619 }
10614 .kernel_busy_icon:before {
10620 .kernel_busy_icon:before {
10615 display: inline-block;
10621 display: inline-block;
10616 font: normal normal normal 14px/1 FontAwesome;
10622 font: normal normal normal 14px/1 FontAwesome;
10617 font-size: inherit;
10623 font-size: inherit;
10618 text-rendering: auto;
10624 text-rendering: auto;
10619 -webkit-font-smoothing: antialiased;
10625 -webkit-font-smoothing: antialiased;
10620 -moz-osx-font-smoothing: grayscale;
10626 -moz-osx-font-smoothing: grayscale;
10621 transform: translate(0, 0);
10627 transform: translate(0, 0);
10622 content: "\f111";
10628 content: "\f111";
10623 }
10629 }
10624 .kernel_busy_icon:before.pull-left {
10630 .kernel_busy_icon:before.pull-left {
10625 margin-right: .3em;
10631 margin-right: .3em;
10626 }
10632 }
10627 .kernel_busy_icon:before.pull-right {
10633 .kernel_busy_icon:before.pull-right {
10628 margin-left: .3em;
10634 margin-left: .3em;
10629 }
10635 }
10630 .kernel_dead_icon:before {
10636 .kernel_dead_icon:before {
10631 display: inline-block;
10637 display: inline-block;
10632 font: normal normal normal 14px/1 FontAwesome;
10638 font: normal normal normal 14px/1 FontAwesome;
10633 font-size: inherit;
10639 font-size: inherit;
10634 text-rendering: auto;
10640 text-rendering: auto;
10635 -webkit-font-smoothing: antialiased;
10641 -webkit-font-smoothing: antialiased;
10636 -moz-osx-font-smoothing: grayscale;
10642 -moz-osx-font-smoothing: grayscale;
10637 transform: translate(0, 0);
10643 transform: translate(0, 0);
10638 content: "\f1e2";
10644 content: "\f1e2";
10639 }
10645 }
10640 .kernel_dead_icon:before.pull-left {
10646 .kernel_dead_icon:before.pull-left {
10641 margin-right: .3em;
10647 margin-right: .3em;
10642 }
10648 }
10643 .kernel_dead_icon:before.pull-right {
10649 .kernel_dead_icon:before.pull-right {
10644 margin-left: .3em;
10650 margin-left: .3em;
10645 }
10651 }
10646 .kernel_disconnected_icon:before {
10652 .kernel_disconnected_icon:before {
10647 display: inline-block;
10653 display: inline-block;
10648 font: normal normal normal 14px/1 FontAwesome;
10654 font: normal normal normal 14px/1 FontAwesome;
10649 font-size: inherit;
10655 font-size: inherit;
10650 text-rendering: auto;
10656 text-rendering: auto;
10651 -webkit-font-smoothing: antialiased;
10657 -webkit-font-smoothing: antialiased;
10652 -moz-osx-font-smoothing: grayscale;
10658 -moz-osx-font-smoothing: grayscale;
10653 transform: translate(0, 0);
10659 transform: translate(0, 0);
10654 content: "\f127";
10660 content: "\f127";
10655 }
10661 }
10656 .kernel_disconnected_icon:before.pull-left {
10662 .kernel_disconnected_icon:before.pull-left {
10657 margin-right: .3em;
10663 margin-right: .3em;
10658 }
10664 }
10659 .kernel_disconnected_icon:before.pull-right {
10665 .kernel_disconnected_icon:before.pull-right {
10660 margin-left: .3em;
10666 margin-left: .3em;
10661 }
10667 }
10662 .notification_widget {
10668 .notification_widget {
10663 color: #777777;
10669 color: #777777;
10664 z-index: 10;
10670 z-index: 10;
10665 background: rgba(240, 240, 240, 0.5);
10671 background: rgba(240, 240, 240, 0.5);
10666 color: #333333;
10672 color: #333333;
10667 background-color: #ffffff;
10673 background-color: #ffffff;
10668 border-color: #cccccc;
10674 border-color: #cccccc;
10669 }
10675 }
10670 .notification_widget:hover,
10676 .notification_widget:hover,
10671 .notification_widget:focus,
10677 .notification_widget:focus,
10672 .notification_widget.focus,
10678 .notification_widget.focus,
10673 .notification_widget:active,
10679 .notification_widget:active,
10674 .notification_widget.active,
10680 .notification_widget.active,
10675 .open > .dropdown-toggle.notification_widget {
10681 .open > .dropdown-toggle.notification_widget {
10676 color: #333333;
10682 color: #333333;
10677 background-color: #e6e6e6;
10683 background-color: #e6e6e6;
10678 border-color: #adadad;
10684 border-color: #adadad;
10679 }
10685 }
10680 .notification_widget:active,
10686 .notification_widget:active,
10681 .notification_widget.active,
10687 .notification_widget.active,
10682 .open > .dropdown-toggle.notification_widget {
10688 .open > .dropdown-toggle.notification_widget {
10683 background-image: none;
10689 background-image: none;
10684 }
10690 }
10685 .notification_widget.disabled,
10691 .notification_widget.disabled,
10686 .notification_widget[disabled],
10692 .notification_widget[disabled],
10687 fieldset[disabled] .notification_widget,
10693 fieldset[disabled] .notification_widget,
10688 .notification_widget.disabled:hover,
10694 .notification_widget.disabled:hover,
10689 .notification_widget[disabled]:hover,
10695 .notification_widget[disabled]:hover,
10690 fieldset[disabled] .notification_widget:hover,
10696 fieldset[disabled] .notification_widget:hover,
10691 .notification_widget.disabled:focus,
10697 .notification_widget.disabled:focus,
10692 .notification_widget[disabled]:focus,
10698 .notification_widget[disabled]:focus,
10693 fieldset[disabled] .notification_widget:focus,
10699 fieldset[disabled] .notification_widget:focus,
10694 .notification_widget.disabled.focus,
10700 .notification_widget.disabled.focus,
10695 .notification_widget[disabled].focus,
10701 .notification_widget[disabled].focus,
10696 fieldset[disabled] .notification_widget.focus,
10702 fieldset[disabled] .notification_widget.focus,
10697 .notification_widget.disabled:active,
10703 .notification_widget.disabled:active,
10698 .notification_widget[disabled]:active,
10704 .notification_widget[disabled]:active,
10699 fieldset[disabled] .notification_widget:active,
10705 fieldset[disabled] .notification_widget:active,
10700 .notification_widget.disabled.active,
10706 .notification_widget.disabled.active,
10701 .notification_widget[disabled].active,
10707 .notification_widget[disabled].active,
10702 fieldset[disabled] .notification_widget.active {
10708 fieldset[disabled] .notification_widget.active {
10703 background-color: #ffffff;
10709 background-color: #ffffff;
10704 border-color: #cccccc;
10710 border-color: #cccccc;
10705 }
10711 }
10706 .notification_widget .badge {
10712 .notification_widget .badge {
10707 color: #ffffff;
10713 color: #ffffff;
10708 background-color: #333333;
10714 background-color: #333333;
10709 }
10715 }
10710 .notification_widget.warning {
10716 .notification_widget.warning {
10711 color: #ffffff;
10717 color: #ffffff;
10712 background-color: #f0ad4e;
10718 background-color: #f0ad4e;
10713 border-color: #eea236;
10719 border-color: #eea236;
10714 }
10720 }
10715 .notification_widget.warning:hover,
10721 .notification_widget.warning:hover,
10716 .notification_widget.warning:focus,
10722 .notification_widget.warning:focus,
10717 .notification_widget.warning.focus,
10723 .notification_widget.warning.focus,
10718 .notification_widget.warning:active,
10724 .notification_widget.warning:active,
10719 .notification_widget.warning.active,
10725 .notification_widget.warning.active,
10720 .open > .dropdown-toggle.notification_widget.warning {
10726 .open > .dropdown-toggle.notification_widget.warning {
10721 color: #ffffff;
10727 color: #ffffff;
10722 background-color: #ec971f;
10728 background-color: #ec971f;
10723 border-color: #d58512;
10729 border-color: #d58512;
10724 }
10730 }
10725 .notification_widget.warning:active,
10731 .notification_widget.warning:active,
10726 .notification_widget.warning.active,
10732 .notification_widget.warning.active,
10727 .open > .dropdown-toggle.notification_widget.warning {
10733 .open > .dropdown-toggle.notification_widget.warning {
10728 background-image: none;
10734 background-image: none;
10729 }
10735 }
10730 .notification_widget.warning.disabled,
10736 .notification_widget.warning.disabled,
10731 .notification_widget.warning[disabled],
10737 .notification_widget.warning[disabled],
10732 fieldset[disabled] .notification_widget.warning,
10738 fieldset[disabled] .notification_widget.warning,
10733 .notification_widget.warning.disabled:hover,
10739 .notification_widget.warning.disabled:hover,
10734 .notification_widget.warning[disabled]:hover,
10740 .notification_widget.warning[disabled]:hover,
10735 fieldset[disabled] .notification_widget.warning:hover,
10741 fieldset[disabled] .notification_widget.warning:hover,
10736 .notification_widget.warning.disabled:focus,
10742 .notification_widget.warning.disabled:focus,
10737 .notification_widget.warning[disabled]:focus,
10743 .notification_widget.warning[disabled]:focus,
10738 fieldset[disabled] .notification_widget.warning:focus,
10744 fieldset[disabled] .notification_widget.warning:focus,
10739 .notification_widget.warning.disabled.focus,
10745 .notification_widget.warning.disabled.focus,
10740 .notification_widget.warning[disabled].focus,
10746 .notification_widget.warning[disabled].focus,
10741 fieldset[disabled] .notification_widget.warning.focus,
10747 fieldset[disabled] .notification_widget.warning.focus,
10742 .notification_widget.warning.disabled:active,
10748 .notification_widget.warning.disabled:active,
10743 .notification_widget.warning[disabled]:active,
10749 .notification_widget.warning[disabled]:active,
10744 fieldset[disabled] .notification_widget.warning:active,
10750 fieldset[disabled] .notification_widget.warning:active,
10745 .notification_widget.warning.disabled.active,
10751 .notification_widget.warning.disabled.active,
10746 .notification_widget.warning[disabled].active,
10752 .notification_widget.warning[disabled].active,
10747 fieldset[disabled] .notification_widget.warning.active {
10753 fieldset[disabled] .notification_widget.warning.active {
10748 background-color: #f0ad4e;
10754 background-color: #f0ad4e;
10749 border-color: #eea236;
10755 border-color: #eea236;
10750 }
10756 }
10751 .notification_widget.warning .badge {
10757 .notification_widget.warning .badge {
10752 color: #f0ad4e;
10758 color: #f0ad4e;
10753 background-color: #ffffff;
10759 background-color: #ffffff;
10754 }
10760 }
10755 .notification_widget.success {
10761 .notification_widget.success {
10756 color: #ffffff;
10762 color: #ffffff;
10757 background-color: #5cb85c;
10763 background-color: #5cb85c;
10758 border-color: #4cae4c;
10764 border-color: #4cae4c;
10759 }
10765 }
10760 .notification_widget.success:hover,
10766 .notification_widget.success:hover,
10761 .notification_widget.success:focus,
10767 .notification_widget.success:focus,
10762 .notification_widget.success.focus,
10768 .notification_widget.success.focus,
10763 .notification_widget.success:active,
10769 .notification_widget.success:active,
10764 .notification_widget.success.active,
10770 .notification_widget.success.active,
10765 .open > .dropdown-toggle.notification_widget.success {
10771 .open > .dropdown-toggle.notification_widget.success {
10766 color: #ffffff;
10772 color: #ffffff;
10767 background-color: #449d44;
10773 background-color: #449d44;
10768 border-color: #398439;
10774 border-color: #398439;
10769 }
10775 }
10770 .notification_widget.success:active,
10776 .notification_widget.success:active,
10771 .notification_widget.success.active,
10777 .notification_widget.success.active,
10772 .open > .dropdown-toggle.notification_widget.success {
10778 .open > .dropdown-toggle.notification_widget.success {
10773 background-image: none;
10779 background-image: none;
10774 }
10780 }
10775 .notification_widget.success.disabled,
10781 .notification_widget.success.disabled,
10776 .notification_widget.success[disabled],
10782 .notification_widget.success[disabled],
10777 fieldset[disabled] .notification_widget.success,
10783 fieldset[disabled] .notification_widget.success,
10778 .notification_widget.success.disabled:hover,
10784 .notification_widget.success.disabled:hover,
10779 .notification_widget.success[disabled]:hover,
10785 .notification_widget.success[disabled]:hover,
10780 fieldset[disabled] .notification_widget.success:hover,
10786 fieldset[disabled] .notification_widget.success:hover,
10781 .notification_widget.success.disabled:focus,
10787 .notification_widget.success.disabled:focus,
10782 .notification_widget.success[disabled]:focus,
10788 .notification_widget.success[disabled]:focus,
10783 fieldset[disabled] .notification_widget.success:focus,
10789 fieldset[disabled] .notification_widget.success:focus,
10784 .notification_widget.success.disabled.focus,
10790 .notification_widget.success.disabled.focus,
10785 .notification_widget.success[disabled].focus,
10791 .notification_widget.success[disabled].focus,
10786 fieldset[disabled] .notification_widget.success.focus,
10792 fieldset[disabled] .notification_widget.success.focus,
10787 .notification_widget.success.disabled:active,
10793 .notification_widget.success.disabled:active,
10788 .notification_widget.success[disabled]:active,
10794 .notification_widget.success[disabled]:active,
10789 fieldset[disabled] .notification_widget.success:active,
10795 fieldset[disabled] .notification_widget.success:active,
10790 .notification_widget.success.disabled.active,
10796 .notification_widget.success.disabled.active,
10791 .notification_widget.success[disabled].active,
10797 .notification_widget.success[disabled].active,
10792 fieldset[disabled] .notification_widget.success.active {
10798 fieldset[disabled] .notification_widget.success.active {
10793 background-color: #5cb85c;
10799 background-color: #5cb85c;
10794 border-color: #4cae4c;
10800 border-color: #4cae4c;
10795 }
10801 }
10796 .notification_widget.success .badge {
10802 .notification_widget.success .badge {
10797 color: #5cb85c;
10803 color: #5cb85c;
10798 background-color: #ffffff;
10804 background-color: #ffffff;
10799 }
10805 }
10800 .notification_widget.info {
10806 .notification_widget.info {
10801 color: #ffffff;
10807 color: #ffffff;
10802 background-color: #5bc0de;
10808 background-color: #5bc0de;
10803 border-color: #46b8da;
10809 border-color: #46b8da;
10804 }
10810 }
10805 .notification_widget.info:hover,
10811 .notification_widget.info:hover,
10806 .notification_widget.info:focus,
10812 .notification_widget.info:focus,
10807 .notification_widget.info.focus,
10813 .notification_widget.info.focus,
10808 .notification_widget.info:active,
10814 .notification_widget.info:active,
10809 .notification_widget.info.active,
10815 .notification_widget.info.active,
10810 .open > .dropdown-toggle.notification_widget.info {
10816 .open > .dropdown-toggle.notification_widget.info {
10811 color: #ffffff;
10817 color: #ffffff;
10812 background-color: #31b0d5;
10818 background-color: #31b0d5;
10813 border-color: #269abc;
10819 border-color: #269abc;
10814 }
10820 }
10815 .notification_widget.info:active,
10821 .notification_widget.info:active,
10816 .notification_widget.info.active,
10822 .notification_widget.info.active,
10817 .open > .dropdown-toggle.notification_widget.info {
10823 .open > .dropdown-toggle.notification_widget.info {
10818 background-image: none;
10824 background-image: none;
10819 }
10825 }
10820 .notification_widget.info.disabled,
10826 .notification_widget.info.disabled,
10821 .notification_widget.info[disabled],
10827 .notification_widget.info[disabled],
10822 fieldset[disabled] .notification_widget.info,
10828 fieldset[disabled] .notification_widget.info,
10823 .notification_widget.info.disabled:hover,
10829 .notification_widget.info.disabled:hover,
10824 .notification_widget.info[disabled]:hover,
10830 .notification_widget.info[disabled]:hover,
10825 fieldset[disabled] .notification_widget.info:hover,
10831 fieldset[disabled] .notification_widget.info:hover,
10826 .notification_widget.info.disabled:focus,
10832 .notification_widget.info.disabled:focus,
10827 .notification_widget.info[disabled]:focus,
10833 .notification_widget.info[disabled]:focus,
10828 fieldset[disabled] .notification_widget.info:focus,
10834 fieldset[disabled] .notification_widget.info:focus,
10829 .notification_widget.info.disabled.focus,
10835 .notification_widget.info.disabled.focus,
10830 .notification_widget.info[disabled].focus,
10836 .notification_widget.info[disabled].focus,
10831 fieldset[disabled] .notification_widget.info.focus,
10837 fieldset[disabled] .notification_widget.info.focus,
10832 .notification_widget.info.disabled:active,
10838 .notification_widget.info.disabled:active,
10833 .notification_widget.info[disabled]:active,
10839 .notification_widget.info[disabled]:active,
10834 fieldset[disabled] .notification_widget.info:active,
10840 fieldset[disabled] .notification_widget.info:active,
10835 .notification_widget.info.disabled.active,
10841 .notification_widget.info.disabled.active,
10836 .notification_widget.info[disabled].active,
10842 .notification_widget.info[disabled].active,
10837 fieldset[disabled] .notification_widget.info.active {
10843 fieldset[disabled] .notification_widget.info.active {
10838 background-color: #5bc0de;
10844 background-color: #5bc0de;
10839 border-color: #46b8da;
10845 border-color: #46b8da;
10840 }
10846 }
10841 .notification_widget.info .badge {
10847 .notification_widget.info .badge {
10842 color: #5bc0de;
10848 color: #5bc0de;
10843 background-color: #ffffff;
10849 background-color: #ffffff;
10844 }
10850 }
10845 .notification_widget.danger {
10851 .notification_widget.danger {
10846 color: #ffffff;
10852 color: #ffffff;
10847 background-color: #d9534f;
10853 background-color: #d9534f;
10848 border-color: #d43f3a;
10854 border-color: #d43f3a;
10849 }
10855 }
10850 .notification_widget.danger:hover,
10856 .notification_widget.danger:hover,
10851 .notification_widget.danger:focus,
10857 .notification_widget.danger:focus,
10852 .notification_widget.danger.focus,
10858 .notification_widget.danger.focus,
10853 .notification_widget.danger:active,
10859 .notification_widget.danger:active,
10854 .notification_widget.danger.active,
10860 .notification_widget.danger.active,
10855 .open > .dropdown-toggle.notification_widget.danger {
10861 .open > .dropdown-toggle.notification_widget.danger {
10856 color: #ffffff;
10862 color: #ffffff;
10857 background-color: #c9302c;
10863 background-color: #c9302c;
10858 border-color: #ac2925;
10864 border-color: #ac2925;
10859 }
10865 }
10860 .notification_widget.danger:active,
10866 .notification_widget.danger:active,
10861 .notification_widget.danger.active,
10867 .notification_widget.danger.active,
10862 .open > .dropdown-toggle.notification_widget.danger {
10868 .open > .dropdown-toggle.notification_widget.danger {
10863 background-image: none;
10869 background-image: none;
10864 }
10870 }
10865 .notification_widget.danger.disabled,
10871 .notification_widget.danger.disabled,
10866 .notification_widget.danger[disabled],
10872 .notification_widget.danger[disabled],
10867 fieldset[disabled] .notification_widget.danger,
10873 fieldset[disabled] .notification_widget.danger,
10868 .notification_widget.danger.disabled:hover,
10874 .notification_widget.danger.disabled:hover,
10869 .notification_widget.danger[disabled]:hover,
10875 .notification_widget.danger[disabled]:hover,
10870 fieldset[disabled] .notification_widget.danger:hover,
10876 fieldset[disabled] .notification_widget.danger:hover,
10871 .notification_widget.danger.disabled:focus,
10877 .notification_widget.danger.disabled:focus,
10872 .notification_widget.danger[disabled]:focus,
10878 .notification_widget.danger[disabled]:focus,
10873 fieldset[disabled] .notification_widget.danger:focus,
10879 fieldset[disabled] .notification_widget.danger:focus,
10874 .notification_widget.danger.disabled.focus,
10880 .notification_widget.danger.disabled.focus,
10875 .notification_widget.danger[disabled].focus,
10881 .notification_widget.danger[disabled].focus,
10876 fieldset[disabled] .notification_widget.danger.focus,
10882 fieldset[disabled] .notification_widget.danger.focus,
10877 .notification_widget.danger.disabled:active,
10883 .notification_widget.danger.disabled:active,
10878 .notification_widget.danger[disabled]:active,
10884 .notification_widget.danger[disabled]:active,
10879 fieldset[disabled] .notification_widget.danger:active,
10885 fieldset[disabled] .notification_widget.danger:active,
10880 .notification_widget.danger.disabled.active,
10886 .notification_widget.danger.disabled.active,
10881 .notification_widget.danger[disabled].active,
10887 .notification_widget.danger[disabled].active,
10882 fieldset[disabled] .notification_widget.danger.active {
10888 fieldset[disabled] .notification_widget.danger.active {
10883 background-color: #d9534f;
10889 background-color: #d9534f;
10884 border-color: #d43f3a;
10890 border-color: #d43f3a;
10885 }
10891 }
10886 .notification_widget.danger .badge {
10892 .notification_widget.danger .badge {
10887 color: #d9534f;
10893 color: #d9534f;
10888 background-color: #ffffff;
10894 background-color: #ffffff;
10889 }
10895 }
10890 div#pager {
10896 div#pager {
10891 background-color: #ffffff;
10897 background-color: #ffffff;
10892 font-size: 14px;
10898 font-size: 14px;
10893 line-height: 20px;
10899 line-height: 20px;
10894 overflow: hidden;
10900 overflow: hidden;
10895 display: none;
10901 display: none;
10896 position: fixed;
10902 position: fixed;
10897 bottom: 0px;
10903 bottom: 0px;
10898 width: 100%;
10904 width: 100%;
10899 max-height: 50%;
10905 max-height: 50%;
10900 padding-top: 8px;
10906 padding-top: 8px;
10901 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10907 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10902 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10908 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10903 /* Display over codemirror */
10909 /* Display over codemirror */
10904 z-index: 100;
10910 z-index: 100;
10905 /* Hack which prevents jquery ui resizable from changing top. */
10911 /* Hack which prevents jquery ui resizable from changing top. */
10906 top: inherit !important;
10912 top: inherit !important;
10907 }
10913 }
10908 div#pager pre {
10914 div#pager pre {
10909 line-height: 1.21429em;
10915 line-height: 1.21429em;
10910 color: #000000;
10916 color: #000000;
10911 background-color: #f7f7f7;
10917 background-color: #f7f7f7;
10912 padding: 0.4em;
10918 padding: 0.4em;
10913 }
10919 }
10914 div#pager #pager-button-area {
10920 div#pager #pager-button-area {
10915 position: absolute;
10921 position: absolute;
10916 top: 8px;
10922 top: 8px;
10917 right: 20px;
10923 right: 20px;
10918 }
10924 }
10919 div#pager #pager-contents {
10925 div#pager #pager-contents {
10920 position: relative;
10926 position: relative;
10921 overflow: auto;
10927 overflow: auto;
10922 width: 100%;
10928 width: 100%;
10923 height: 100%;
10929 height: 100%;
10924 }
10930 }
10925 div#pager #pager-contents #pager-container {
10931 div#pager #pager-contents #pager-container {
10926 position: relative;
10932 position: relative;
10927 padding: 15px 0px;
10933 padding: 15px 0px;
10928 box-sizing: border-box;
10934 box-sizing: border-box;
10929 -moz-box-sizing: border-box;
10935 -moz-box-sizing: border-box;
10930 -webkit-box-sizing: border-box;
10936 -webkit-box-sizing: border-box;
10931 }
10937 }
10932 div#pager .ui-resizable-handle {
10938 div#pager .ui-resizable-handle {
10933 top: 0px;
10939 top: 0px;
10934 height: 8px;
10940 height: 8px;
10935 background: #f7f7f7;
10941 background: #f7f7f7;
10936 border-top: 1px solid #cfcfcf;
10942 border-top: 1px solid #cfcfcf;
10937 border-bottom: 1px solid #cfcfcf;
10943 border-bottom: 1px solid #cfcfcf;
10938 /* This injects handle bars (a short, wide = symbol) for
10944 /* This injects handle bars (a short, wide = symbol) for
10939 the resize handle. */
10945 the resize handle. */
10940 }
10946 }
10941 div#pager .ui-resizable-handle::after {
10947 div#pager .ui-resizable-handle::after {
10942 content: '';
10948 content: '';
10943 top: 2px;
10949 top: 2px;
10944 left: 50%;
10950 left: 50%;
10945 height: 3px;
10951 height: 3px;
10946 width: 30px;
10952 width: 30px;
10947 margin-left: -15px;
10953 margin-left: -15px;
10948 position: absolute;
10954 position: absolute;
10949 border-top: 1px solid #cfcfcf;
10955 border-top: 1px solid #cfcfcf;
10950 }
10956 }
10951 .quickhelp {
10957 .quickhelp {
10952 /* Old browsers */
10958 /* Old browsers */
10953 display: -webkit-box;
10959 display: -webkit-box;
10954 -webkit-box-orient: horizontal;
10960 -webkit-box-orient: horizontal;
10955 -webkit-box-align: stretch;
10961 -webkit-box-align: stretch;
10956 display: -moz-box;
10962 display: -moz-box;
10957 -moz-box-orient: horizontal;
10963 -moz-box-orient: horizontal;
10958 -moz-box-align: stretch;
10964 -moz-box-align: stretch;
10959 display: box;
10965 display: box;
10960 box-orient: horizontal;
10966 box-orient: horizontal;
10961 box-align: stretch;
10967 box-align: stretch;
10962 /* Modern browsers */
10968 /* Modern browsers */
10963 display: flex;
10969 display: flex;
10964 flex-direction: row;
10970 flex-direction: row;
10965 align-items: stretch;
10971 align-items: stretch;
10966 }
10972 }
10967 .shortcut_key {
10973 .shortcut_key {
10968 display: inline-block;
10974 display: inline-block;
10969 width: 20ex;
10975 width: 20ex;
10970 text-align: right;
10976 text-align: right;
10971 font-family: monospace;
10977 font-family: monospace;
10972 }
10978 }
10973 .shortcut_descr {
10979 .shortcut_descr {
10974 display: inline-block;
10980 display: inline-block;
10975 /* Old browsers */
10981 /* Old browsers */
10976 -webkit-box-flex: 1;
10982 -webkit-box-flex: 1;
10977 -moz-box-flex: 1;
10983 -moz-box-flex: 1;
10978 box-flex: 1;
10984 box-flex: 1;
10979 /* Modern browsers */
10985 /* Modern browsers */
10980 flex: 1;
10986 flex: 1;
10981 }
10987 }
10982 span.save_widget {
10988 span.save_widget {
10983 margin-top: 6px;
10989 margin-top: 6px;
10984 }
10990 }
10985 span.save_widget span.filename {
10991 span.save_widget span.filename {
10986 height: 1em;
10992 height: 1em;
10987 line-height: 1em;
10993 line-height: 1em;
10988 padding: 3px;
10994 padding: 3px;
10989 margin-left: 16px;
10995 margin-left: 16px;
10990 border: none;
10996 border: none;
10991 font-size: 146.5%;
10997 font-size: 146.5%;
10992 border-radius: 2px;
10998 border-radius: 2px;
10993 }
10999 }
10994 span.save_widget span.filename:hover {
11000 span.save_widget span.filename:hover {
10995 background-color: #e6e6e6;
11001 background-color: #e6e6e6;
10996 }
11002 }
10997 span.checkpoint_status,
11003 span.checkpoint_status,
10998 span.autosave_status {
11004 span.autosave_status {
10999 font-size: small;
11005 font-size: small;
11000 }
11006 }
11001 @media (max-width: 767px) {
11007 @media (max-width: 767px) {
11002 span.save_widget {
11008 span.save_widget {
11003 font-size: small;
11009 font-size: small;
11004 }
11010 }
11005 span.checkpoint_status,
11011 span.checkpoint_status,
11006 span.autosave_status {
11012 span.autosave_status {
11007 display: none;
11013 display: none;
11008 }
11014 }
11009 }
11015 }
11010 @media (min-width: 768px) and (max-width: 991px) {
11016 @media (min-width: 768px) and (max-width: 991px) {
11011 span.checkpoint_status {
11017 span.checkpoint_status {
11012 display: none;
11018 display: none;
11013 }
11019 }
11014 span.autosave_status {
11020 span.autosave_status {
11015 font-size: x-small;
11021 font-size: x-small;
11016 }
11022 }
11017 }
11023 }
11018 .toolbar {
11024 .toolbar {
11019 padding: 0px;
11025 padding: 0px;
11020 margin-left: -5px;
11026 margin-left: -5px;
11021 margin-top: 2px;
11027 margin-top: 2px;
11022 margin-bottom: 5px;
11028 margin-bottom: 5px;
11023 box-sizing: border-box;
11029 box-sizing: border-box;
11024 -moz-box-sizing: border-box;
11030 -moz-box-sizing: border-box;
11025 -webkit-box-sizing: border-box;
11031 -webkit-box-sizing: border-box;
11026 }
11032 }
11027 .toolbar select,
11033 .toolbar select,
11028 .toolbar label {
11034 .toolbar label {
11029 width: auto;
11035 width: auto;
11030 vertical-align: middle;
11036 vertical-align: middle;
11031 margin-right: 2px;
11037 margin-right: 2px;
11032 margin-bottom: 0px;
11038 margin-bottom: 0px;
11033 display: inline;
11039 display: inline;
11034 font-size: 92%;
11040 font-size: 92%;
11035 margin-left: 0.3em;
11041 margin-left: 0.3em;
11036 margin-right: 0.3em;
11042 margin-right: 0.3em;
11037 padding: 0px;
11043 padding: 0px;
11038 padding-top: 3px;
11044 padding-top: 3px;
11039 }
11045 }
11040 .toolbar .btn {
11046 .toolbar .btn {
11041 padding: 2px 8px;
11047 padding: 2px 8px;
11042 }
11048 }
11043 .toolbar .btn-group {
11049 .toolbar .btn-group {
11044 margin-top: 0px;
11050 margin-top: 0px;
11045 margin-left: 5px;
11051 margin-left: 5px;
11046 }
11052 }
11047 #maintoolbar {
11053 #maintoolbar {
11048 margin-bottom: -3px;
11054 margin-bottom: -3px;
11049 margin-top: -8px;
11055 margin-top: -8px;
11050 border: 0px;
11056 border: 0px;
11051 min-height: 27px;
11057 min-height: 27px;
11052 margin-left: 0px;
11058 margin-left: 0px;
11053 padding-top: 11px;
11059 padding-top: 11px;
11054 padding-bottom: 3px;
11060 padding-bottom: 3px;
11055 }
11061 }
11056 #maintoolbar .navbar-text {
11062 #maintoolbar .navbar-text {
11057 float: none;
11063 float: none;
11058 vertical-align: middle;
11064 vertical-align: middle;
11059 text-align: right;
11065 text-align: right;
11060 margin-left: 5px;
11066 margin-left: 5px;
11061 margin-right: 0px;
11067 margin-right: 0px;
11062 margin-top: 0px;
11068 margin-top: 0px;
11063 }
11069 }
11064 .select-xs {
11070 .select-xs {
11065 height: 24px;
11071 height: 24px;
11066 }
11072 }
11067 /**
11073 /**
11068 * Primary styles
11074 * Primary styles
11069 *
11075 *
11070 * Author: IPython Development Team
11076 * Author: IPython Development Team
11071 */
11077 */
11072 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
11078 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
11073 * of chance of beeing generated from the ../less/[samename].less file, you can
11079 * of chance of beeing generated from the ../less/[samename].less file, you can
11074 * try to get back the less file by reverting somme commit in history
11080 * try to get back the less file by reverting somme commit in history
11075 **/
11081 **/
11076 /*
11082 /*
11077 * We'll try to get something pretty, so we
11083 * We'll try to get something pretty, so we
11078 * have some strange css to have the scroll bar on
11084 * have some strange css to have the scroll bar on
11079 * the left with fix button on the top right of the tooltip
11085 * the left with fix button on the top right of the tooltip
11080 */
11086 */
11081 @-moz-keyframes fadeOut {
11087 @-moz-keyframes fadeOut {
11082 from {
11088 from {
11083 opacity: 1;
11089 opacity: 1;
11084 }
11090 }
11085 to {
11091 to {
11086 opacity: 0;
11092 opacity: 0;
11087 }
11093 }
11088 }
11094 }
11089 @-webkit-keyframes fadeOut {
11095 @-webkit-keyframes fadeOut {
11090 from {
11096 from {
11091 opacity: 1;
11097 opacity: 1;
11092 }
11098 }
11093 to {
11099 to {
11094 opacity: 0;
11100 opacity: 0;
11095 }
11101 }
11096 }
11102 }
11097 @-moz-keyframes fadeIn {
11103 @-moz-keyframes fadeIn {
11098 from {
11104 from {
11099 opacity: 0;
11105 opacity: 0;
11100 }
11106 }
11101 to {
11107 to {
11102 opacity: 1;
11108 opacity: 1;
11103 }
11109 }
11104 }
11110 }
11105 @-webkit-keyframes fadeIn {
11111 @-webkit-keyframes fadeIn {
11106 from {
11112 from {
11107 opacity: 0;
11113 opacity: 0;
11108 }
11114 }
11109 to {
11115 to {
11110 opacity: 1;
11116 opacity: 1;
11111 }
11117 }
11112 }
11118 }
11113 /*properties of tooltip after "expand"*/
11119 /*properties of tooltip after "expand"*/
11114 .bigtooltip {
11120 .bigtooltip {
11115 overflow: auto;
11121 overflow: auto;
11116 height: 200px;
11122 height: 200px;
11117 -webkit-transition-property: height;
11123 -webkit-transition-property: height;
11118 -webkit-transition-duration: 500ms;
11124 -webkit-transition-duration: 500ms;
11119 -moz-transition-property: height;
11125 -moz-transition-property: height;
11120 -moz-transition-duration: 500ms;
11126 -moz-transition-duration: 500ms;
11121 transition-property: height;
11127 transition-property: height;
11122 transition-duration: 500ms;
11128 transition-duration: 500ms;
11123 }
11129 }
11124 /*properties of tooltip before "expand"*/
11130 /*properties of tooltip before "expand"*/
11125 .smalltooltip {
11131 .smalltooltip {
11126 -webkit-transition-property: height;
11132 -webkit-transition-property: height;
11127 -webkit-transition-duration: 500ms;
11133 -webkit-transition-duration: 500ms;
11128 -moz-transition-property: height;
11134 -moz-transition-property: height;
11129 -moz-transition-duration: 500ms;
11135 -moz-transition-duration: 500ms;
11130 transition-property: height;
11136 transition-property: height;
11131 transition-duration: 500ms;
11137 transition-duration: 500ms;
11132 text-overflow: ellipsis;
11138 text-overflow: ellipsis;
11133 overflow: hidden;
11139 overflow: hidden;
11134 height: 80px;
11140 height: 80px;
11135 }
11141 }
11136 .tooltipbuttons {
11142 .tooltipbuttons {
11137 position: absolute;
11143 position: absolute;
11138 padding-right: 15px;
11144 padding-right: 15px;
11139 top: 0px;
11145 top: 0px;
11140 right: 0px;
11146 right: 0px;
11141 }
11147 }
11142 .tooltiptext {
11148 .tooltiptext {
11143 /*avoid the button to overlap on some docstring*/
11149 /*avoid the button to overlap on some docstring*/
11144 padding-right: 30px;
11150 padding-right: 30px;
11145 }
11151 }
11146 .ipython_tooltip {
11152 .ipython_tooltip {
11147 max-width: 700px;
11153 max-width: 700px;
11148 /*fade-in animation when inserted*/
11154 /*fade-in animation when inserted*/
11149 -webkit-animation: fadeOut 400ms;
11155 -webkit-animation: fadeOut 400ms;
11150 -moz-animation: fadeOut 400ms;
11156 -moz-animation: fadeOut 400ms;
11151 animation: fadeOut 400ms;
11157 animation: fadeOut 400ms;
11152 -webkit-animation: fadeIn 400ms;
11158 -webkit-animation: fadeIn 400ms;
11153 -moz-animation: fadeIn 400ms;
11159 -moz-animation: fadeIn 400ms;
11154 animation: fadeIn 400ms;
11160 animation: fadeIn 400ms;
11155 vertical-align: middle;
11161 vertical-align: middle;
11156 background-color: #f7f7f7;
11162 background-color: #f7f7f7;
11157 overflow: visible;
11163 overflow: visible;
11158 border: #ababab 1px solid;
11164 border: #ababab 1px solid;
11159 outline: none;
11165 outline: none;
11160 padding: 3px;
11166 padding: 3px;
11161 margin: 0px;
11167 margin: 0px;
11162 padding-left: 7px;
11168 padding-left: 7px;
11163 font-family: monospace;
11169 font-family: monospace;
11164 min-height: 50px;
11170 min-height: 50px;
11165 -moz-box-shadow: 0px 6px 10px -1px #adadad;
11171 -moz-box-shadow: 0px 6px 10px -1px #adadad;
11166 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
11172 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
11167 box-shadow: 0px 6px 10px -1px #adadad;
11173 box-shadow: 0px 6px 10px -1px #adadad;
11168 border-radius: 2px;
11174 border-radius: 2px;
11169 position: absolute;
11175 position: absolute;
11170 z-index: 1000;
11176 z-index: 1000;
11171 }
11177 }
11172 .ipython_tooltip a {
11178 .ipython_tooltip a {
11173 float: right;
11179 float: right;
11174 }
11180 }
11175 .ipython_tooltip .tooltiptext pre {
11181 .ipython_tooltip .tooltiptext pre {
11176 border: 0;
11182 border: 0;
11177 border-radius: 0;
11183 border-radius: 0;
11178 font-size: 100%;
11184 font-size: 100%;
11179 background-color: #f7f7f7;
11185 background-color: #f7f7f7;
11180 }
11186 }
11181 .pretooltiparrow {
11187 .pretooltiparrow {
11182 left: 0px;
11188 left: 0px;
11183 margin: 0px;
11189 margin: 0px;
11184 top: -16px;
11190 top: -16px;
11185 width: 40px;
11191 width: 40px;
11186 height: 16px;
11192 height: 16px;
11187 overflow: hidden;
11193 overflow: hidden;
11188 position: absolute;
11194 position: absolute;
11189 }
11195 }
11190 .pretooltiparrow:before {
11196 .pretooltiparrow:before {
11191 background-color: #f7f7f7;
11197 background-color: #f7f7f7;
11192 border: 1px #ababab solid;
11198 border: 1px #ababab solid;
11193 z-index: 11;
11199 z-index: 11;
11194 content: "";
11200 content: "";
11195 position: absolute;
11201 position: absolute;
11196 left: 15px;
11202 left: 15px;
11197 top: 10px;
11203 top: 10px;
11198 width: 25px;
11204 width: 25px;
11199 height: 25px;
11205 height: 25px;
11200 -webkit-transform: rotate(45deg);
11206 -webkit-transform: rotate(45deg);
11201 -moz-transform: rotate(45deg);
11207 -moz-transform: rotate(45deg);
11202 -ms-transform: rotate(45deg);
11208 -ms-transform: rotate(45deg);
11203 -o-transform: rotate(45deg);
11209 -o-transform: rotate(45deg);
11204 }
11210 }
11205 .terminal-app {
11211 .terminal-app {
11206 background: #eeeeee;
11212 background: #eeeeee;
11207 }
11213 }
11208 .terminal-app #header {
11214 .terminal-app #header {
11209 background: #ffffff;
11215 background: #ffffff;
11210 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11216 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11211 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11217 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11212 }
11218 }
11213 .terminal-app .terminal {
11219 .terminal-app .terminal {
11214 float: left;
11220 float: left;
11215 font-family: monospace;
11221 font-family: monospace;
11216 color: white;
11222 color: white;
11217 background: black;
11223 background: black;
11218 padding: 0.4em;
11224 padding: 0.4em;
11219 border-radius: 2px;
11225 border-radius: 2px;
11220 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11226 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11221 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11227 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11222 }
11228 }
11223 .terminal-app .terminal,
11229 .terminal-app .terminal,
11224 .terminal-app .terminal dummy-screen {
11230 .terminal-app .terminal dummy-screen {
11225 line-height: 1em;
11231 line-height: 1em;
11226 font-size: 14px;
11232 font-size: 14px;
11227 }
11233 }
11228 .terminal-app .terminal-cursor {
11234 .terminal-app .terminal-cursor {
11229 color: black;
11235 color: black;
11230 background: white;
11236 background: white;
11231 }
11237 }
11232 .terminal-app #terminado-container {
11238 .terminal-app #terminado-container {
11233 margin-top: 20px;
11239 margin-top: 20px;
11234 }
11240 }
11235 /*# sourceMappingURL=style.min.css.map */ No newline at end of file
11241 /*# sourceMappingURL=style.min.css.map */
@@ -1,222 +1,226 b''
1 import io
1 import io
2 import json
2 import json
3 import os
3 import os
4 import shutil
4 import shutil
5 import sys
5 import sys
6
6
7 pjoin = os.path.join
7 pjoin = os.path.join
8
8
9 from IPython.utils.path import get_ipython_dir
9 from IPython.utils.path import get_ipython_dir
10 from IPython.utils.py3compat import PY3
10 from IPython.utils.py3compat import PY3
11 from IPython.utils.traitlets import HasTraits, List, Unicode, Dict, Any
11 from IPython.utils.traitlets import HasTraits, List, Unicode, Dict, Any
12 from .launcher import make_ipkernel_cmd
12 from .launcher import make_ipkernel_cmd
13
13
14 if os.name == 'nt':
14 if os.name == 'nt':
15 programdata = os.environ.get('PROGRAMDATA', None)
15 programdata = os.environ.get('PROGRAMDATA', None)
16 if programdata:
16 if programdata:
17 SYSTEM_KERNEL_DIRS = [pjoin(programdata, 'jupyter', 'kernels')]
17 SYSTEM_KERNEL_DIRS = [pjoin(programdata, 'jupyter', 'kernels')]
18 else: # PROGRAMDATA is not defined by default on XP.
18 else: # PROGRAMDATA is not defined by default on XP.
19 SYSTEM_KERNEL_DIRS = []
19 SYSTEM_KERNEL_DIRS = []
20 else:
20 else:
21 SYSTEM_KERNEL_DIRS = ["/usr/share/jupyter/kernels",
21 SYSTEM_KERNEL_DIRS = ["/usr/share/jupyter/kernels",
22 "/usr/local/share/jupyter/kernels",
22 "/usr/local/share/jupyter/kernels",
23 ]
23 ]
24
24
25 NATIVE_KERNEL_NAME = 'python3' if PY3 else 'python2'
25 NATIVE_KERNEL_NAME = 'python3' if PY3 else 'python2'
26
26
27 def _pythonfirst(s):
27 def _pythonfirst(s):
28 "Sort key function that will put strings starting with 'python' first."
28 "Sort key function that will put strings starting with 'python' first."
29 if s == NATIVE_KERNEL_NAME:
29 if s == NATIVE_KERNEL_NAME:
30 return ' ' + s # Two spaces to sort this first of all
30 return ' ' + s # Two spaces to sort this first of all
31 elif s.startswith('python'):
31 elif s.startswith('python'):
32 # Space is not valid in kernel names, so this should sort first
32 # Space is not valid in kernel names, so this should sort first
33 return ' ' + s
33 return ' ' + s
34 return s
34 return s
35
35
36 class KernelSpec(HasTraits):
36 class KernelSpec(HasTraits):
37 argv = List()
37 argv = List()
38 display_name = Unicode()
38 display_name = Unicode()
39 language = Unicode()
39 env = Dict()
40 env = Dict()
40 resource_dir = Unicode()
41 resource_dir = Unicode()
41
42
42 @classmethod
43 @classmethod
43 def from_resource_dir(cls, resource_dir):
44 def from_resource_dir(cls, resource_dir):
44 """Create a KernelSpec object by reading kernel.json
45 """Create a KernelSpec object by reading kernel.json
45
46
46 Pass the path to the *directory* containing kernel.json.
47 Pass the path to the *directory* containing kernel.json.
47 """
48 """
48 kernel_file = pjoin(resource_dir, 'kernel.json')
49 kernel_file = pjoin(resource_dir, 'kernel.json')
49 with io.open(kernel_file, 'r', encoding='utf-8') as f:
50 with io.open(kernel_file, 'r', encoding='utf-8') as f:
50 kernel_dict = json.load(f)
51 kernel_dict = json.load(f)
51 return cls(resource_dir=resource_dir, **kernel_dict)
52 return cls(resource_dir=resource_dir, **kernel_dict)
52
53
53 def to_dict(self):
54 def to_dict(self):
54 d = dict(argv=self.argv,
55 d = dict(argv=self.argv,
55 env=self.env,
56 env=self.env,
56 display_name=self.display_name,
57 display_name=self.display_name,
58 language=self.language,
57 )
59 )
58
60
59 return d
61 return d
60
62
61 def to_json(self):
63 def to_json(self):
62 return json.dumps(self.to_dict())
64 return json.dumps(self.to_dict())
63
65
64 def _is_kernel_dir(path):
66 def _is_kernel_dir(path):
65 """Is ``path`` a kernel directory?"""
67 """Is ``path`` a kernel directory?"""
66 return os.path.isdir(path) and os.path.isfile(pjoin(path, 'kernel.json'))
68 return os.path.isdir(path) and os.path.isfile(pjoin(path, 'kernel.json'))
67
69
68 def _list_kernels_in(dir):
70 def _list_kernels_in(dir):
69 """Return a mapping of kernel names to resource directories from dir.
71 """Return a mapping of kernel names to resource directories from dir.
70
72
71 If dir is None or does not exist, returns an empty dict.
73 If dir is None or does not exist, returns an empty dict.
72 """
74 """
73 if dir is None or not os.path.isdir(dir):
75 if dir is None or not os.path.isdir(dir):
74 return {}
76 return {}
75 return {f.lower(): pjoin(dir, f) for f in os.listdir(dir)
77 return {f.lower(): pjoin(dir, f) for f in os.listdir(dir)
76 if _is_kernel_dir(pjoin(dir, f))}
78 if _is_kernel_dir(pjoin(dir, f))}
77
79
78 class NoSuchKernel(KeyError):
80 class NoSuchKernel(KeyError):
79 def __init__(self, name):
81 def __init__(self, name):
80 self.name = name
82 self.name = name
81
83
82 class KernelSpecManager(HasTraits):
84 class KernelSpecManager(HasTraits):
83 ipython_dir = Unicode()
85 ipython_dir = Unicode()
84 def _ipython_dir_default(self):
86 def _ipython_dir_default(self):
85 return get_ipython_dir()
87 return get_ipython_dir()
86
88
87 user_kernel_dir = Unicode()
89 user_kernel_dir = Unicode()
88 def _user_kernel_dir_default(self):
90 def _user_kernel_dir_default(self):
89 return pjoin(self.ipython_dir, 'kernels')
91 return pjoin(self.ipython_dir, 'kernels')
90
92
91 @property
93 @property
92 def env_kernel_dir(self):
94 def env_kernel_dir(self):
93 return pjoin(sys.prefix, 'share', 'jupyter', 'kernels')
95 return pjoin(sys.prefix, 'share', 'jupyter', 'kernels')
94
96
95 kernel_dirs = List(
97 kernel_dirs = List(
96 help="List of kernel directories to search. Later ones take priority over earlier."
98 help="List of kernel directories to search. Later ones take priority over earlier."
97 )
99 )
98 def _kernel_dirs_default(self):
100 def _kernel_dirs_default(self):
99 dirs = SYSTEM_KERNEL_DIRS[:]
101 dirs = SYSTEM_KERNEL_DIRS[:]
100 if self.env_kernel_dir not in dirs:
102 if self.env_kernel_dir not in dirs:
101 dirs.append(self.env_kernel_dir)
103 dirs.append(self.env_kernel_dir)
102 dirs.append(self.user_kernel_dir)
104 dirs.append(self.user_kernel_dir)
103 return dirs
105 return dirs
104
106
105 @property
107 @property
106 def _native_kernel_dict(self):
108 def _native_kernel_dict(self):
107 """Makes a kernel directory for the native kernel.
109 """Makes a kernel directory for the native kernel.
108
110
109 The native kernel is the kernel using the same Python runtime as this
111 The native kernel is the kernel using the same Python runtime as this
110 process. This will put its information in the user kernels directory.
112 process. This will put its information in the user kernels directory.
111 """
113 """
112 return {'argv': make_ipkernel_cmd(),
114 return {
115 'argv': make_ipkernel_cmd(),
113 'display_name': 'Python %i' % (3 if PY3 else 2),
116 'display_name': 'Python %i' % (3 if PY3 else 2),
117 'language': 'python',
114 }
118 }
115
119
116 @property
120 @property
117 def _native_kernel_resource_dir(self):
121 def _native_kernel_resource_dir(self):
118 return pjoin(os.path.dirname(__file__), 'resources')
122 return pjoin(os.path.dirname(__file__), 'resources')
119
123
120 def find_kernel_specs(self):
124 def find_kernel_specs(self):
121 """Returns a dict mapping kernel names to resource directories."""
125 """Returns a dict mapping kernel names to resource directories."""
122 d = {}
126 d = {}
123 for kernel_dir in self.kernel_dirs:
127 for kernel_dir in self.kernel_dirs:
124 d.update(_list_kernels_in(kernel_dir))
128 d.update(_list_kernels_in(kernel_dir))
125
129
126 d[NATIVE_KERNEL_NAME] = self._native_kernel_resource_dir
130 d[NATIVE_KERNEL_NAME] = self._native_kernel_resource_dir
127 return d
131 return d
128 # TODO: Caching?
132 # TODO: Caching?
129
133
130 def get_kernel_spec(self, kernel_name):
134 def get_kernel_spec(self, kernel_name):
131 """Returns a :class:`KernelSpec` instance for the given kernel_name.
135 """Returns a :class:`KernelSpec` instance for the given kernel_name.
132
136
133 Raises :exc:`NoSuchKernel` if the given kernel name is not found.
137 Raises :exc:`NoSuchKernel` if the given kernel name is not found.
134 """
138 """
135 if kernel_name in {'python', NATIVE_KERNEL_NAME}:
139 if kernel_name in {'python', NATIVE_KERNEL_NAME}:
136 return KernelSpec(resource_dir=self._native_kernel_resource_dir,
140 return KernelSpec(resource_dir=self._native_kernel_resource_dir,
137 **self._native_kernel_dict)
141 **self._native_kernel_dict)
138
142
139 d = self.find_kernel_specs()
143 d = self.find_kernel_specs()
140 try:
144 try:
141 resource_dir = d[kernel_name.lower()]
145 resource_dir = d[kernel_name.lower()]
142 except KeyError:
146 except KeyError:
143 raise NoSuchKernel(kernel_name)
147 raise NoSuchKernel(kernel_name)
144 return KernelSpec.from_resource_dir(resource_dir)
148 return KernelSpec.from_resource_dir(resource_dir)
145
149
146 def _get_destination_dir(self, kernel_name, user=False):
150 def _get_destination_dir(self, kernel_name, user=False):
147 if user:
151 if user:
148 return os.path.join(self.user_kernel_dir, kernel_name)
152 return os.path.join(self.user_kernel_dir, kernel_name)
149 else:
153 else:
150 if SYSTEM_KERNEL_DIRS:
154 if SYSTEM_KERNEL_DIRS:
151 return os.path.join(SYSTEM_KERNEL_DIRS[-1], kernel_name)
155 return os.path.join(SYSTEM_KERNEL_DIRS[-1], kernel_name)
152 else:
156 else:
153 raise EnvironmentError("No system kernel directory is available")
157 raise EnvironmentError("No system kernel directory is available")
154
158
155
159
156 def install_kernel_spec(self, source_dir, kernel_name=None, user=False,
160 def install_kernel_spec(self, source_dir, kernel_name=None, user=False,
157 replace=False):
161 replace=False):
158 """Install a kernel spec by copying its directory.
162 """Install a kernel spec by copying its directory.
159
163
160 If ``kernel_name`` is not given, the basename of ``source_dir`` will
164 If ``kernel_name`` is not given, the basename of ``source_dir`` will
161 be used.
165 be used.
162
166
163 If ``user`` is False, it will attempt to install into the systemwide
167 If ``user`` is False, it will attempt to install into the systemwide
164 kernel registry. If the process does not have appropriate permissions,
168 kernel registry. If the process does not have appropriate permissions,
165 an :exc:`OSError` will be raised.
169 an :exc:`OSError` will be raised.
166
170
167 If ``replace`` is True, this will replace an existing kernel of the same
171 If ``replace`` is True, this will replace an existing kernel of the same
168 name. Otherwise, if the destination already exists, an :exc:`OSError`
172 name. Otherwise, if the destination already exists, an :exc:`OSError`
169 will be raised.
173 will be raised.
170 """
174 """
171 if not kernel_name:
175 if not kernel_name:
172 kernel_name = os.path.basename(source_dir)
176 kernel_name = os.path.basename(source_dir)
173 kernel_name = kernel_name.lower()
177 kernel_name = kernel_name.lower()
174
178
175 destination = self._get_destination_dir(kernel_name, user=user)
179 destination = self._get_destination_dir(kernel_name, user=user)
176
180
177 if replace and os.path.isdir(destination):
181 if replace and os.path.isdir(destination):
178 shutil.rmtree(destination)
182 shutil.rmtree(destination)
179
183
180 shutil.copytree(source_dir, destination)
184 shutil.copytree(source_dir, destination)
181
185
182 def install_native_kernel_spec(self, user=False):
186 def install_native_kernel_spec(self, user=False):
183 """Install the native kernel spec to the filesystem
187 """Install the native kernel spec to the filesystem
184
188
185 This allows a Python 3 frontend to use a Python 2 kernel, or vice versa.
189 This allows a Python 3 frontend to use a Python 2 kernel, or vice versa.
186 The kernelspec will be written pointing to the Python executable on
190 The kernelspec will be written pointing to the Python executable on
187 which this is run.
191 which this is run.
188
192
189 If ``user`` is False, it will attempt to install into the systemwide
193 If ``user`` is False, it will attempt to install into the systemwide
190 kernel registry. If the process does not have appropriate permissions,
194 kernel registry. If the process does not have appropriate permissions,
191 an :exc:`OSError` will be raised.
195 an :exc:`OSError` will be raised.
192 """
196 """
193 path = self._get_destination_dir(NATIVE_KERNEL_NAME, user=user)
197 path = self._get_destination_dir(NATIVE_KERNEL_NAME, user=user)
194 os.makedirs(path, mode=0o755)
198 os.makedirs(path, mode=0o755)
195 with open(pjoin(path, 'kernel.json'), 'w') as f:
199 with open(pjoin(path, 'kernel.json'), 'w') as f:
196 json.dump(self._native_kernel_dict, f, indent=1)
200 json.dump(self._native_kernel_dict, f, indent=1)
197 copy_from = self._native_kernel_resource_dir
201 copy_from = self._native_kernel_resource_dir
198 for file in os.listdir(copy_from):
202 for file in os.listdir(copy_from):
199 shutil.copy(pjoin(copy_from, file), path)
203 shutil.copy(pjoin(copy_from, file), path)
200 return path
204 return path
201
205
202 def find_kernel_specs():
206 def find_kernel_specs():
203 """Returns a dict mapping kernel names to resource directories."""
207 """Returns a dict mapping kernel names to resource directories."""
204 return KernelSpecManager().find_kernel_specs()
208 return KernelSpecManager().find_kernel_specs()
205
209
206 def get_kernel_spec(kernel_name):
210 def get_kernel_spec(kernel_name):
207 """Returns a :class:`KernelSpec` instance for the given kernel_name.
211 """Returns a :class:`KernelSpec` instance for the given kernel_name.
208
212
209 Raises KeyError if the given kernel name is not found.
213 Raises KeyError if the given kernel name is not found.
210 """
214 """
211 return KernelSpecManager().get_kernel_spec(kernel_name)
215 return KernelSpecManager().get_kernel_spec(kernel_name)
212
216
213 def install_kernel_spec(source_dir, kernel_name=None, user=False, replace=False):
217 def install_kernel_spec(source_dir, kernel_name=None, user=False, replace=False):
214 return KernelSpecManager().install_kernel_spec(source_dir, kernel_name,
218 return KernelSpecManager().install_kernel_spec(source_dir, kernel_name,
215 user, replace)
219 user, replace)
216
220
217 install_kernel_spec.__doc__ = KernelSpecManager.install_kernel_spec.__doc__
221 install_kernel_spec.__doc__ = KernelSpecManager.install_kernel_spec.__doc__
218
222
219 def install_native_kernel_spec(user=False):
223 def install_native_kernel_spec(user=False):
220 return KernelSpecManager().install_native_kernel_spec(user=user)
224 return KernelSpecManager().install_native_kernel_spec(user=user)
221
225
222 install_native_kernel_spec.__doc__ = KernelSpecManager.install_native_kernel_spec.__doc__
226 install_native_kernel_spec.__doc__ = KernelSpecManager.install_native_kernel_spec.__doc__
@@ -1,137 +1,143 b''
1 ==========================
1 ==========================
2 Making kernels for IPython
2 Making kernels for IPython
3 ==========================
3 ==========================
4
4
5 A 'kernel' is a program that runs and introspects the user's code. IPython
5 A 'kernel' is a program that runs and introspects the user's code. IPython
6 includes a kernel for Python code, and people have written kernels for
6 includes a kernel for Python code, and people have written kernels for
7 `several other languages <https://github.com/ipython/ipython/wiki/Projects-using-IPython#list-of-some-ipython-compatible-kernels>`_.
7 `several other languages <https://github.com/ipython/ipython/wiki/Projects-using-IPython#list-of-some-ipython-compatible-kernels>`_.
8
8
9 When IPython starts a kernel, it passes it a connection file. This specifies
9 When IPython starts a kernel, it passes it a connection file. This specifies
10 how to set up communications with the frontend.
10 how to set up communications with the frontend.
11
11
12 There are two options for writing a kernel:
12 There are two options for writing a kernel:
13
13
14 1. You can reuse the IPython kernel machinery to handle the communications, and
14 1. You can reuse the IPython kernel machinery to handle the communications, and
15 just describe how to execute your code. This is much simpler if the target
15 just describe how to execute your code. This is much simpler if the target
16 language can be driven from Python. See :doc:`wrapperkernels` for details.
16 language can be driven from Python. See :doc:`wrapperkernels` for details.
17 2. You can implement the kernel machinery in your target language. This is more
17 2. You can implement the kernel machinery in your target language. This is more
18 work initially, but the people using your kernel might be more likely to
18 work initially, but the people using your kernel might be more likely to
19 contribute to it if it's in the language they know.
19 contribute to it if it's in the language they know.
20
20
21 Connection files
21 Connection files
22 ================
22 ================
23
23
24 Your kernel will be given the path to a connection file when it starts (see
24 Your kernel will be given the path to a connection file when it starts (see
25 :ref:`kernelspecs` for how to specify the command line arguments for your kernel).
25 :ref:`kernelspecs` for how to specify the command line arguments for your kernel).
26 This file, which is accessible only to the current user, will contain a JSON
26 This file, which is accessible only to the current user, will contain a JSON
27 dictionary looking something like this::
27 dictionary looking something like this::
28
28
29 {
29 {
30 "control_port": 50160,
30 "control_port": 50160,
31 "shell_port": 57503,
31 "shell_port": 57503,
32 "transport": "tcp",
32 "transport": "tcp",
33 "signature_scheme": "hmac-sha256",
33 "signature_scheme": "hmac-sha256",
34 "stdin_port": 52597,
34 "stdin_port": 52597,
35 "hb_port": 42540,
35 "hb_port": 42540,
36 "ip": "127.0.0.1",
36 "ip": "127.0.0.1",
37 "iopub_port": 40885,
37 "iopub_port": 40885,
38 "key": "a0436f6c-1916-498b-8eb9-e81ab9368e84"
38 "key": "a0436f6c-1916-498b-8eb9-e81ab9368e84"
39 }
39 }
40
40
41 The ``transport``, ``ip`` and five ``_port`` fields specify five ports which the
41 The ``transport``, ``ip`` and five ``_port`` fields specify five ports which the
42 kernel should bind to using `ZeroMQ <http://zeromq.org/>`_. For instance, the
42 kernel should bind to using `ZeroMQ <http://zeromq.org/>`_. For instance, the
43 address of the shell socket in the example above would be::
43 address of the shell socket in the example above would be::
44
44
45 tcp://127.0.0.1:57503
45 tcp://127.0.0.1:57503
46
46
47 New ports are chosen at random for each kernel started.
47 New ports are chosen at random for each kernel started.
48
48
49 ``signature_scheme`` and ``key`` are used to cryptographically sign messages, so
49 ``signature_scheme`` and ``key`` are used to cryptographically sign messages, so
50 that other users on the system can't send code to run in this kernel. See
50 that other users on the system can't send code to run in this kernel. See
51 :ref:`wire_protocol` for the details of how this signature is calculated.
51 :ref:`wire_protocol` for the details of how this signature is calculated.
52
52
53 Handling messages
53 Handling messages
54 =================
54 =================
55
55
56 After reading the connection file and binding to the necessary sockets, the
56 After reading the connection file and binding to the necessary sockets, the
57 kernel should go into an event loop, listening on the hb (heartbeat), control
57 kernel should go into an event loop, listening on the hb (heartbeat), control
58 and shell sockets.
58 and shell sockets.
59
59
60 :ref:`Heartbeat <kernel_heartbeat>` messages should be echoed back immediately
60 :ref:`Heartbeat <kernel_heartbeat>` messages should be echoed back immediately
61 on the same socket - the frontend uses this to check that the kernel is still
61 on the same socket - the frontend uses this to check that the kernel is still
62 alive.
62 alive.
63
63
64 Messages on the control and shell sockets should be parsed, and their signature
64 Messages on the control and shell sockets should be parsed, and their signature
65 validated. See :ref:`wire_protocol` for how to do this.
65 validated. See :ref:`wire_protocol` for how to do this.
66
66
67 The kernel will send messages on the iopub socket to display output, and on the
67 The kernel will send messages on the iopub socket to display output, and on the
68 stdin socket to prompt the user for textual input.
68 stdin socket to prompt the user for textual input.
69
69
70 .. seealso::
70 .. seealso::
71
71
72 :doc:`messaging`
72 :doc:`messaging`
73 Details of the different sockets and the messages that come over them
73 Details of the different sockets and the messages that come over them
74
74
75 `Creating Language Kernels for IPython <http://andrew.gibiansky.com/blog/ipython/ipython-kernels/>`_
75 `Creating Language Kernels for IPython <http://andrew.gibiansky.com/blog/ipython/ipython-kernels/>`_
76 A blog post by the author of `IHaskell <https://github.com/gibiansky/IHaskell>`_,
76 A blog post by the author of `IHaskell <https://github.com/gibiansky/IHaskell>`_,
77 a Haskell kernel
77 a Haskell kernel
78
78
79 `simple_kernel <https://github.com/dsblank/simple_kernel>`_
79 `simple_kernel <https://github.com/dsblank/simple_kernel>`_
80 A simple example implementation of the kernel machinery in Python
80 A simple example implementation of the kernel machinery in Python
81
81
82
82
83 .. _kernelspecs:
83 .. _kernelspecs:
84
84
85 Kernel specs
85 Kernel specs
86 ============
86 ============
87
87
88 A kernel identifies itself to IPython by creating a directory, the name of which
88 A kernel identifies itself to IPython by creating a directory, the name of which
89 is used as an identifier for the kernel. These may be created in a number of
89 is used as an identifier for the kernel. These may be created in a number of
90 locations:
90 locations:
91
91
92 +--------+--------------------------------------+-----------------------------------+
92 +--------+--------------------------------------+-----------------------------------+
93 | | Unix | Windows |
93 | | Unix | Windows |
94 +========+======================================+===================================+
94 +========+======================================+===================================+
95 | System | ``/usr/share/ipython/kernels`` | ``%PROGRAMDATA%\ipython\kernels`` |
95 | System | ``/usr/share/ipython/kernels`` | ``%PROGRAMDATA%\ipython\kernels`` |
96 | | | |
96 | | | |
97 | | ``/usr/local/share/ipython/kernels`` | |
97 | | ``/usr/local/share/ipython/kernels`` | |
98 +--------+--------------------------------------+-----------------------------------+
98 +--------+--------------------------------------+-----------------------------------+
99 | User | ``~/.ipython/kernels`` |
99 | User | ``~/.ipython/kernels`` |
100 +--------+--------------------------------------+-----------------------------------+
100 +--------+--------------------------------------+-----------------------------------+
101
101
102 The user location takes priority over the system locations, and the case of the
102 The user location takes priority over the system locations, and the case of the
103 names is ignored, so selecting kernels works the same way whether or not the
103 names is ignored, so selecting kernels works the same way whether or not the
104 filesystem is case sensitive.
104 filesystem is case sensitive.
105
105
106 Inside the directory, the most important file is *kernel.json*. This should be a
106 Inside the directory, the most important file is *kernel.json*. This should be a
107 JSON serialised dictionary containing the following keys and values:
107 JSON serialised dictionary containing the following keys and values:
108
108
109 - **argv**: A list of command line arguments used to start the kernel. The text
109 - **argv**: A list of command line arguments used to start the kernel. The text
110 ``{connection_file}`` in any argument will be replaced with the path to the
110 ``{connection_file}`` in any argument will be replaced with the path to the
111 connection file.
111 connection file.
112 - **display_name**: The kernel's name as it should be displayed in the UI.
112 - **display_name**: The kernel's name as it should be displayed in the UI.
113 Unlike the kernel name used in the API, this can contain arbitrary unicode
113 Unlike the kernel name used in the API, this can contain arbitrary unicode
114 characters.
114 characters.
115 - **language**: The name of the language of the kernel.
116 When loading notebooks, if no matching kernelspec key (may differ across machines)
117 is found, a kernel with a matching `language` will be used.
118 This allows a notebook written on any Python or Julia kernel to be properly associated
119 with the user's Python or Julia kernel, even if they aren't listed under the same name as the author's.
115 - **env** (optional): A dictionary of environment variables to set for the kernel.
120 - **env** (optional): A dictionary of environment variables to set for the kernel.
116 These will be added to the current environment variables before the kernel is
121 These will be added to the current environment variables before the kernel is
117 started.
122 started.
118
123
119 For example, the kernel.json file for IPython looks like this::
124 For example, the kernel.json file for IPython looks like this::
120
125
121 {
126 {
122 "argv": ["python3", "-c", "from IPython.kernel.zmq.kernelapp import main; main()",
127 "argv": ["python3", "-c", "from IPython.kernel.zmq.kernelapp import main; main()",
123 "-f", "{connection_file}"],
128 "-f", "{connection_file}"],
124 "display_name": "IPython (Python 3)"
129 "display_name": "IPython (Python 3)",
130 "language": "python"
125 }
131 }
126
132
127 To see the available kernel specs, run::
133 To see the available kernel specs, run::
128
134
129 ipython kernelspec list
135 ipython kernelspec list
130
136
131 To start the terminal console or the Qt console with a specific kernel::
137 To start the terminal console or the Qt console with a specific kernel::
132
138
133 ipython console --kernel bash
139 ipython console --kernel bash
134 ipython qtconsole --kernel bash
140 ipython qtconsole --kernel bash
135
141
136 To use different kernels in the notebook, select a different kernel from the
142 To use different kernels in the notebook, select a different kernel from the
137 dropdown menu in the top-right of the UI.
143 dropdown menu in the top-right of the UI.
General Comments 0
You need to be logged in to leave comments. Login now