##// END OF EJS Templates
Merge pull request #6996 from bollwyvl/cm-meta-highlight...
Min RK -
r19292:e2c194f5 merge
parent child Browse files
Show More
@@ -0,0 +1,5 b''
1 /* load the codemirror defaults as LESS so that highlight.less
2 can load default theme declarations by reference without pulling in the
3 nasty positioning
4 */
5 @import (less) "../../components/codemirror/lib/codemirror.css";
@@ -0,0 +1,58 b''
1 casper.notebook_test(function () {
2 this.on('remote.callback', function(data){
3 if(data.error_expected){
4 that.test.assertEquals(
5 data.error,
6 data.expected,
7 "!highlight: " + data.provided + " errors " + data.expected
8 );
9 }else{
10 that.test.assertEquals(
11 data.observed,
12 data.expected,
13 "highlight: " + data.provided + " as " + data.expected
14 );
15 }
16 });
17
18 var that = this;
19 // syntax highlighting
20 [
21 {to: "gfm"},
22 {to: "python"},
23 {to: "ipython"},
24 {to: "ipythongfm"},
25 {to: "text/x-markdown", from: [".md"]},
26 {to: "text/x-python", from: [".py", "Python"]},
27 {to: "application/json", from: ["json", "JSON"]},
28 {to: "text/x-ruby", from: [".rb", "ruby", "Ruby"]},
29 {to: "application/ld+json", from: ["json-ld", "JSON-LD"]},
30 {from: [".pyc"], error: true},
31 {from: ["../"], error: true},
32 {from: ["//"], error: true},
33 ].map(function (mode) {
34 (mode.from || []).concat(mode.to || []).map(function(from){
35 casper.evaluate(function(from, expected, error_expected){
36 IPython.utils.requireCodeMirrorMode(from, function(observed){
37 window.callPhantom({
38 provided: from,
39 expected: expected,
40 observed: observed,
41 error_expected: error_expected
42 });
43 }, function(error){
44 window.callPhantom({
45 provided: from,
46 expected: expected,
47 error: error,
48 error_expected: error_expected
49 });
50 });
51 }, {
52 from: from,
53 expected: mode.to,
54 error_expected: mode.error
55 });
56 });
57 });
58 }); No newline at end of file
@@ -1,847 +1,869 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 'base/js/namespace',
5 'base/js/namespace',
6 'jquery',
6 'jquery',
7 'codemirror/lib/codemirror',
7 'codemirror/lib/codemirror',
8 // silently upgrades CodeMirror
9 'codemirror/mode/meta',
8 ], function(IPython, $, CodeMirror){
10 ], function(IPython, $, CodeMirror){
9 "use strict";
11 "use strict";
10
12
11 IPython.load_extensions = function () {
13 IPython.load_extensions = function () {
12 // load one or more IPython notebook extensions with requirejs
14 // load one or more IPython notebook extensions with requirejs
13
15
14 var extensions = [];
16 var extensions = [];
15 var extension_names = arguments;
17 var extension_names = arguments;
16 for (var i = 0; i < extension_names.length; i++) {
18 for (var i = 0; i < extension_names.length; i++) {
17 extensions.push("nbextensions/" + arguments[i]);
19 extensions.push("nbextensions/" + arguments[i]);
18 }
20 }
19
21
20 require(extensions,
22 require(extensions,
21 function () {
23 function () {
22 for (var i = 0; i < arguments.length; i++) {
24 for (var i = 0; i < arguments.length; i++) {
23 var ext = arguments[i];
25 var ext = arguments[i];
24 var ext_name = extension_names[i];
26 var ext_name = extension_names[i];
25 // success callback
27 // success callback
26 console.log("Loaded extension: " + ext_name);
28 console.log("Loaded extension: " + ext_name);
27 if (ext && ext.load_ipython_extension !== undefined) {
29 if (ext && ext.load_ipython_extension !== undefined) {
28 ext.load_ipython_extension();
30 ext.load_ipython_extension();
29 }
31 }
30 }
32 }
31 },
33 },
32 function (err) {
34 function (err) {
33 // failure callback
35 // failure callback
34 console.log("Failed to load extension(s):", err.requireModules, err);
36 console.log("Failed to load extension(s):", err.requireModules, err);
35 }
37 }
36 );
38 );
37 };
39 };
38
40
39 //============================================================================
41 //============================================================================
40 // Cross-browser RegEx Split
42 // Cross-browser RegEx Split
41 //============================================================================
43 //============================================================================
42
44
43 // This code has been MODIFIED from the code licensed below to not replace the
45 // This code has been MODIFIED from the code licensed below to not replace the
44 // default browser split. The license is reproduced here.
46 // default browser split. The license is reproduced here.
45
47
46 // see http://blog.stevenlevithan.com/archives/cross-browser-split for more info:
48 // see http://blog.stevenlevithan.com/archives/cross-browser-split for more info:
47 /*!
49 /*!
48 * Cross-Browser Split 1.1.1
50 * Cross-Browser Split 1.1.1
49 * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
51 * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
50 * Available under the MIT License
52 * Available under the MIT License
51 * ECMAScript compliant, uniform cross-browser split method
53 * ECMAScript compliant, uniform cross-browser split method
52 */
54 */
53
55
54 /**
56 /**
55 * Splits a string into an array of strings using a regex or string
57 * Splits a string into an array of strings using a regex or string
56 * separator. Matches of the separator are not included in the result array.
58 * separator. Matches of the separator are not included in the result array.
57 * However, if `separator` is a regex that contains capturing groups,
59 * However, if `separator` is a regex that contains capturing groups,
58 * backreferences are spliced into the result each time `separator` is
60 * backreferences are spliced into the result each time `separator` is
59 * matched. Fixes browser bugs compared to the native
61 * matched. Fixes browser bugs compared to the native
60 * `String.prototype.split` and can be used reliably cross-browser.
62 * `String.prototype.split` and can be used reliably cross-browser.
61 * @param {String} str String to split.
63 * @param {String} str String to split.
62 * @param {RegExp|String} separator Regex or string to use for separating
64 * @param {RegExp|String} separator Regex or string to use for separating
63 * the string.
65 * the string.
64 * @param {Number} [limit] Maximum number of items to include in the result
66 * @param {Number} [limit] Maximum number of items to include in the result
65 * array.
67 * array.
66 * @returns {Array} Array of substrings.
68 * @returns {Array} Array of substrings.
67 * @example
69 * @example
68 *
70 *
69 * // Basic use
71 * // Basic use
70 * regex_split('a b c d', ' ');
72 * regex_split('a b c d', ' ');
71 * // -> ['a', 'b', 'c', 'd']
73 * // -> ['a', 'b', 'c', 'd']
72 *
74 *
73 * // With limit
75 * // With limit
74 * regex_split('a b c d', ' ', 2);
76 * regex_split('a b c d', ' ', 2);
75 * // -> ['a', 'b']
77 * // -> ['a', 'b']
76 *
78 *
77 * // Backreferences in result array
79 * // Backreferences in result array
78 * regex_split('..word1 word2..', /([a-z]+)(\d+)/i);
80 * regex_split('..word1 word2..', /([a-z]+)(\d+)/i);
79 * // -> ['..', 'word', '1', ' ', 'word', '2', '..']
81 * // -> ['..', 'word', '1', ' ', 'word', '2', '..']
80 */
82 */
81 var regex_split = function (str, separator, limit) {
83 var regex_split = function (str, separator, limit) {
82 // If `separator` is not a regex, use `split`
84 // If `separator` is not a regex, use `split`
83 if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
85 if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
84 return split.call(str, separator, limit);
86 return split.call(str, separator, limit);
85 }
87 }
86 var output = [],
88 var output = [],
87 flags = (separator.ignoreCase ? "i" : "") +
89 flags = (separator.ignoreCase ? "i" : "") +
88 (separator.multiline ? "m" : "") +
90 (separator.multiline ? "m" : "") +
89 (separator.extended ? "x" : "") + // Proposed for ES6
91 (separator.extended ? "x" : "") + // Proposed for ES6
90 (separator.sticky ? "y" : ""), // Firefox 3+
92 (separator.sticky ? "y" : ""), // Firefox 3+
91 lastLastIndex = 0,
93 lastLastIndex = 0,
92 // Make `global` and avoid `lastIndex` issues by working with a copy
94 // Make `global` and avoid `lastIndex` issues by working with a copy
93 separator = new RegExp(separator.source, flags + "g"),
95 separator = new RegExp(separator.source, flags + "g"),
94 separator2, match, lastIndex, lastLength;
96 separator2, match, lastIndex, lastLength;
95 str += ""; // Type-convert
97 str += ""; // Type-convert
96
98
97 var compliantExecNpcg = typeof(/()??/.exec("")[1]) === "undefined";
99 var compliantExecNpcg = typeof(/()??/.exec("")[1]) === "undefined";
98 if (!compliantExecNpcg) {
100 if (!compliantExecNpcg) {
99 // Doesn't need flags gy, but they don't hurt
101 // Doesn't need flags gy, but they don't hurt
100 separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
102 separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
101 }
103 }
102 /* Values for `limit`, per the spec:
104 /* Values for `limit`, per the spec:
103 * If undefined: 4294967295 // Math.pow(2, 32) - 1
105 * If undefined: 4294967295 // Math.pow(2, 32) - 1
104 * If 0, Infinity, or NaN: 0
106 * If 0, Infinity, or NaN: 0
105 * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
107 * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
106 * If negative number: 4294967296 - Math.floor(Math.abs(limit))
108 * If negative number: 4294967296 - Math.floor(Math.abs(limit))
107 * If other: Type-convert, then use the above rules
109 * If other: Type-convert, then use the above rules
108 */
110 */
109 limit = typeof(limit) === "undefined" ?
111 limit = typeof(limit) === "undefined" ?
110 -1 >>> 0 : // Math.pow(2, 32) - 1
112 -1 >>> 0 : // Math.pow(2, 32) - 1
111 limit >>> 0; // ToUint32(limit)
113 limit >>> 0; // ToUint32(limit)
112 while (match = separator.exec(str)) {
114 while (match = separator.exec(str)) {
113 // `separator.lastIndex` is not reliable cross-browser
115 // `separator.lastIndex` is not reliable cross-browser
114 lastIndex = match.index + match[0].length;
116 lastIndex = match.index + match[0].length;
115 if (lastIndex > lastLastIndex) {
117 if (lastIndex > lastLastIndex) {
116 output.push(str.slice(lastLastIndex, match.index));
118 output.push(str.slice(lastLastIndex, match.index));
117 // Fix browsers whose `exec` methods don't consistently return `undefined` for
119 // Fix browsers whose `exec` methods don't consistently return `undefined` for
118 // nonparticipating capturing groups
120 // nonparticipating capturing groups
119 if (!compliantExecNpcg && match.length > 1) {
121 if (!compliantExecNpcg && match.length > 1) {
120 match[0].replace(separator2, function () {
122 match[0].replace(separator2, function () {
121 for (var i = 1; i < arguments.length - 2; i++) {
123 for (var i = 1; i < arguments.length - 2; i++) {
122 if (typeof(arguments[i]) === "undefined") {
124 if (typeof(arguments[i]) === "undefined") {
123 match[i] = undefined;
125 match[i] = undefined;
124 }
126 }
125 }
127 }
126 });
128 });
127 }
129 }
128 if (match.length > 1 && match.index < str.length) {
130 if (match.length > 1 && match.index < str.length) {
129 Array.prototype.push.apply(output, match.slice(1));
131 Array.prototype.push.apply(output, match.slice(1));
130 }
132 }
131 lastLength = match[0].length;
133 lastLength = match[0].length;
132 lastLastIndex = lastIndex;
134 lastLastIndex = lastIndex;
133 if (output.length >= limit) {
135 if (output.length >= limit) {
134 break;
136 break;
135 }
137 }
136 }
138 }
137 if (separator.lastIndex === match.index) {
139 if (separator.lastIndex === match.index) {
138 separator.lastIndex++; // Avoid an infinite loop
140 separator.lastIndex++; // Avoid an infinite loop
139 }
141 }
140 }
142 }
141 if (lastLastIndex === str.length) {
143 if (lastLastIndex === str.length) {
142 if (lastLength || !separator.test("")) {
144 if (lastLength || !separator.test("")) {
143 output.push("");
145 output.push("");
144 }
146 }
145 } else {
147 } else {
146 output.push(str.slice(lastLastIndex));
148 output.push(str.slice(lastLastIndex));
147 }
149 }
148 return output.length > limit ? output.slice(0, limit) : output;
150 return output.length > limit ? output.slice(0, limit) : output;
149 };
151 };
150
152
151 //============================================================================
153 //============================================================================
152 // End contributed Cross-browser RegEx Split
154 // End contributed Cross-browser RegEx Split
153 //============================================================================
155 //============================================================================
154
156
155
157
156 var uuid = function () {
158 var uuid = function () {
157 /**
159 /**
158 * http://www.ietf.org/rfc/rfc4122.txt
160 * http://www.ietf.org/rfc/rfc4122.txt
159 */
161 */
160 var s = [];
162 var s = [];
161 var hexDigits = "0123456789ABCDEF";
163 var hexDigits = "0123456789ABCDEF";
162 for (var i = 0; i < 32; i++) {
164 for (var i = 0; i < 32; i++) {
163 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
165 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
164 }
166 }
165 s[12] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
167 s[12] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
166 s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
168 s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
167
169
168 var uuid = s.join("");
170 var uuid = s.join("");
169 return uuid;
171 return uuid;
170 };
172 };
171
173
172
174
173 //Fix raw text to parse correctly in crazy XML
175 //Fix raw text to parse correctly in crazy XML
174 function xmlencode(string) {
176 function xmlencode(string) {
175 return string.replace(/\&/g,'&'+'amp;')
177 return string.replace(/\&/g,'&'+'amp;')
176 .replace(/</g,'&'+'lt;')
178 .replace(/</g,'&'+'lt;')
177 .replace(/>/g,'&'+'gt;')
179 .replace(/>/g,'&'+'gt;')
178 .replace(/\'/g,'&'+'apos;')
180 .replace(/\'/g,'&'+'apos;')
179 .replace(/\"/g,'&'+'quot;')
181 .replace(/\"/g,'&'+'quot;')
180 .replace(/`/g,'&'+'#96;');
182 .replace(/`/g,'&'+'#96;');
181 }
183 }
182
184
183
185
184 //Map from terminal commands to CSS classes
186 //Map from terminal commands to CSS classes
185 var ansi_colormap = {
187 var ansi_colormap = {
186 "01":"ansibold",
188 "01":"ansibold",
187
189
188 "30":"ansiblack",
190 "30":"ansiblack",
189 "31":"ansired",
191 "31":"ansired",
190 "32":"ansigreen",
192 "32":"ansigreen",
191 "33":"ansiyellow",
193 "33":"ansiyellow",
192 "34":"ansiblue",
194 "34":"ansiblue",
193 "35":"ansipurple",
195 "35":"ansipurple",
194 "36":"ansicyan",
196 "36":"ansicyan",
195 "37":"ansigray",
197 "37":"ansigray",
196
198
197 "40":"ansibgblack",
199 "40":"ansibgblack",
198 "41":"ansibgred",
200 "41":"ansibgred",
199 "42":"ansibggreen",
201 "42":"ansibggreen",
200 "43":"ansibgyellow",
202 "43":"ansibgyellow",
201 "44":"ansibgblue",
203 "44":"ansibgblue",
202 "45":"ansibgpurple",
204 "45":"ansibgpurple",
203 "46":"ansibgcyan",
205 "46":"ansibgcyan",
204 "47":"ansibggray"
206 "47":"ansibggray"
205 };
207 };
206
208
207 function _process_numbers(attrs, numbers) {
209 function _process_numbers(attrs, numbers) {
208 // process ansi escapes
210 // process ansi escapes
209 var n = numbers.shift();
211 var n = numbers.shift();
210 if (ansi_colormap[n]) {
212 if (ansi_colormap[n]) {
211 if ( ! attrs["class"] ) {
213 if ( ! attrs["class"] ) {
212 attrs["class"] = ansi_colormap[n];
214 attrs["class"] = ansi_colormap[n];
213 } else {
215 } else {
214 attrs["class"] += " " + ansi_colormap[n];
216 attrs["class"] += " " + ansi_colormap[n];
215 }
217 }
216 } else if (n == "38" || n == "48") {
218 } else if (n == "38" || n == "48") {
217 // VT100 256 color or 24 bit RGB
219 // VT100 256 color or 24 bit RGB
218 if (numbers.length < 2) {
220 if (numbers.length < 2) {
219 console.log("Not enough fields for VT100 color", numbers);
221 console.log("Not enough fields for VT100 color", numbers);
220 return;
222 return;
221 }
223 }
222
224
223 var index_or_rgb = numbers.shift();
225 var index_or_rgb = numbers.shift();
224 var r,g,b;
226 var r,g,b;
225 if (index_or_rgb == "5") {
227 if (index_or_rgb == "5") {
226 // 256 color
228 // 256 color
227 var idx = parseInt(numbers.shift());
229 var idx = parseInt(numbers.shift());
228 if (idx < 16) {
230 if (idx < 16) {
229 // indexed ANSI
231 // indexed ANSI
230 // ignore bright / non-bright distinction
232 // ignore bright / non-bright distinction
231 idx = idx % 8;
233 idx = idx % 8;
232 var ansiclass = ansi_colormap[n[0] + (idx % 8).toString()];
234 var ansiclass = ansi_colormap[n[0] + (idx % 8).toString()];
233 if ( ! attrs["class"] ) {
235 if ( ! attrs["class"] ) {
234 attrs["class"] = ansiclass;
236 attrs["class"] = ansiclass;
235 } else {
237 } else {
236 attrs["class"] += " " + ansiclass;
238 attrs["class"] += " " + ansiclass;
237 }
239 }
238 return;
240 return;
239 } else if (idx < 232) {
241 } else if (idx < 232) {
240 // 216 color 6x6x6 RGB
242 // 216 color 6x6x6 RGB
241 idx = idx - 16;
243 idx = idx - 16;
242 b = idx % 6;
244 b = idx % 6;
243 g = Math.floor(idx / 6) % 6;
245 g = Math.floor(idx / 6) % 6;
244 r = Math.floor(idx / 36) % 6;
246 r = Math.floor(idx / 36) % 6;
245 // convert to rgb
247 // convert to rgb
246 r = (r * 51);
248 r = (r * 51);
247 g = (g * 51);
249 g = (g * 51);
248 b = (b * 51);
250 b = (b * 51);
249 } else {
251 } else {
250 // grayscale
252 // grayscale
251 idx = idx - 231;
253 idx = idx - 231;
252 // it's 1-24 and should *not* include black or white,
254 // it's 1-24 and should *not* include black or white,
253 // so a 26 point scale
255 // so a 26 point scale
254 r = g = b = Math.floor(idx * 256 / 26);
256 r = g = b = Math.floor(idx * 256 / 26);
255 }
257 }
256 } else if (index_or_rgb == "2") {
258 } else if (index_or_rgb == "2") {
257 // Simple 24 bit RGB
259 // Simple 24 bit RGB
258 if (numbers.length > 3) {
260 if (numbers.length > 3) {
259 console.log("Not enough fields for RGB", numbers);
261 console.log("Not enough fields for RGB", numbers);
260 return;
262 return;
261 }
263 }
262 r = numbers.shift();
264 r = numbers.shift();
263 g = numbers.shift();
265 g = numbers.shift();
264 b = numbers.shift();
266 b = numbers.shift();
265 } else {
267 } else {
266 console.log("unrecognized control", numbers);
268 console.log("unrecognized control", numbers);
267 return;
269 return;
268 }
270 }
269 if (r !== undefined) {
271 if (r !== undefined) {
270 // apply the rgb color
272 // apply the rgb color
271 var line;
273 var line;
272 if (n == "38") {
274 if (n == "38") {
273 line = "color: ";
275 line = "color: ";
274 } else {
276 } else {
275 line = "background-color: ";
277 line = "background-color: ";
276 }
278 }
277 line = line + "rgb(" + r + "," + g + "," + b + ");";
279 line = line + "rgb(" + r + "," + g + "," + b + ");";
278 if ( !attrs.style ) {
280 if ( !attrs.style ) {
279 attrs.style = line;
281 attrs.style = line;
280 } else {
282 } else {
281 attrs.style += " " + line;
283 attrs.style += " " + line;
282 }
284 }
283 }
285 }
284 }
286 }
285 }
287 }
286
288
287 function ansispan(str) {
289 function ansispan(str) {
288 // ansispan function adapted from github.com/mmalecki/ansispan (MIT License)
290 // ansispan function adapted from github.com/mmalecki/ansispan (MIT License)
289 // regular ansi escapes (using the table above)
291 // regular ansi escapes (using the table above)
290 var is_open = false;
292 var is_open = false;
291 return str.replace(/\033\[(0?[01]|22|39)?([;\d]+)?m/g, function(match, prefix, pattern) {
293 return str.replace(/\033\[(0?[01]|22|39)?([;\d]+)?m/g, function(match, prefix, pattern) {
292 if (!pattern) {
294 if (!pattern) {
293 // [(01|22|39|)m close spans
295 // [(01|22|39|)m close spans
294 if (is_open) {
296 if (is_open) {
295 is_open = false;
297 is_open = false;
296 return "</span>";
298 return "</span>";
297 } else {
299 } else {
298 return "";
300 return "";
299 }
301 }
300 } else {
302 } else {
301 is_open = true;
303 is_open = true;
302
304
303 // consume sequence of color escapes
305 // consume sequence of color escapes
304 var numbers = pattern.match(/\d+/g);
306 var numbers = pattern.match(/\d+/g);
305 var attrs = {};
307 var attrs = {};
306 while (numbers.length > 0) {
308 while (numbers.length > 0) {
307 _process_numbers(attrs, numbers);
309 _process_numbers(attrs, numbers);
308 }
310 }
309
311
310 var span = "<span ";
312 var span = "<span ";
311 for (var attr in attrs) {
313 for (var attr in attrs) {
312 var value = attrs[attr];
314 var value = attrs[attr];
313 span = span + " " + attr + '="' + attrs[attr] + '"';
315 span = span + " " + attr + '="' + attrs[attr] + '"';
314 }
316 }
315 return span + ">";
317 return span + ">";
316 }
318 }
317 });
319 });
318 }
320 }
319
321
320 // Transform ANSI color escape codes into HTML <span> tags with css
322 // Transform ANSI color escape codes into HTML <span> tags with css
321 // classes listed in the above ansi_colormap object. The actual color used
323 // classes listed in the above ansi_colormap object. The actual color used
322 // are set in the css file.
324 // are set in the css file.
323 function fixConsole(txt) {
325 function fixConsole(txt) {
324 txt = xmlencode(txt);
326 txt = xmlencode(txt);
325 var re = /\033\[([\dA-Fa-f;]*?)m/;
327 var re = /\033\[([\dA-Fa-f;]*?)m/;
326 var opened = false;
328 var opened = false;
327 var cmds = [];
329 var cmds = [];
328 var opener = "";
330 var opener = "";
329 var closer = "";
331 var closer = "";
330
332
331 // Strip all ANSI codes that are not color related. Matches
333 // Strip all ANSI codes that are not color related. Matches
332 // all ANSI codes that do not end with "m".
334 // all ANSI codes that do not end with "m".
333 var ignored_re = /(?=(\033\[[\d;=]*[a-ln-zA-Z]{1}))\1(?!m)/g;
335 var ignored_re = /(?=(\033\[[\d;=]*[a-ln-zA-Z]{1}))\1(?!m)/g;
334 txt = txt.replace(ignored_re, "");
336 txt = txt.replace(ignored_re, "");
335
337
336 // color ansi codes
338 // color ansi codes
337 txt = ansispan(txt);
339 txt = ansispan(txt);
338 return txt;
340 return txt;
339 }
341 }
340
342
341 // Remove chunks that should be overridden by the effect of
343 // Remove chunks that should be overridden by the effect of
342 // carriage return characters
344 // carriage return characters
343 function fixCarriageReturn(txt) {
345 function fixCarriageReturn(txt) {
344 var tmp = txt;
346 var tmp = txt;
345 do {
347 do {
346 txt = tmp;
348 txt = tmp;
347 tmp = txt.replace(/\r+\n/gm, '\n'); // \r followed by \n --> newline
349 tmp = txt.replace(/\r+\n/gm, '\n'); // \r followed by \n --> newline
348 tmp = tmp.replace(/^.*\r+/gm, ''); // Other \r --> clear line
350 tmp = tmp.replace(/^.*\r+/gm, ''); // Other \r --> clear line
349 } while (tmp.length < txt.length);
351 } while (tmp.length < txt.length);
350 return txt;
352 return txt;
351 }
353 }
352
354
353 // Locate any URLs and convert them to a anchor tag
355 // Locate any URLs and convert them to a anchor tag
354 function autoLinkUrls(txt) {
356 function autoLinkUrls(txt) {
355 return txt.replace(/(^|\s)(https?|ftp)(:[^'">\s]+)/gi,
357 return txt.replace(/(^|\s)(https?|ftp)(:[^'">\s]+)/gi,
356 "$1<a target=\"_blank\" href=\"$2$3\">$2$3</a>");
358 "$1<a target=\"_blank\" href=\"$2$3\">$2$3</a>");
357 }
359 }
358
360
359 var points_to_pixels = function (points) {
361 var points_to_pixels = function (points) {
360 /**
362 /**
361 * A reasonably good way of converting between points and pixels.
363 * A reasonably good way of converting between points and pixels.
362 */
364 */
363 var test = $('<div style="display: none; width: 10000pt; padding:0; border:0;"></div>');
365 var test = $('<div style="display: none; width: 10000pt; padding:0; border:0;"></div>');
364 $(body).append(test);
366 $(body).append(test);
365 var pixel_per_point = test.width()/10000;
367 var pixel_per_point = test.width()/10000;
366 test.remove();
368 test.remove();
367 return Math.floor(points*pixel_per_point);
369 return Math.floor(points*pixel_per_point);
368 };
370 };
369
371
370 var always_new = function (constructor) {
372 var always_new = function (constructor) {
371 /**
373 /**
372 * wrapper around contructor to avoid requiring `var a = new constructor()`
374 * wrapper around contructor to avoid requiring `var a = new constructor()`
373 * useful for passing constructors as callbacks,
375 * useful for passing constructors as callbacks,
374 * not for programmer laziness.
376 * not for programmer laziness.
375 * from http://programmers.stackexchange.com/questions/118798
377 * from http://programmers.stackexchange.com/questions/118798
376 */
378 */
377 return function () {
379 return function () {
378 var obj = Object.create(constructor.prototype);
380 var obj = Object.create(constructor.prototype);
379 constructor.apply(obj, arguments);
381 constructor.apply(obj, arguments);
380 return obj;
382 return obj;
381 };
383 };
382 };
384 };
383
385
384 var url_path_join = function () {
386 var url_path_join = function () {
385 /**
387 /**
386 * join a sequence of url components with '/'
388 * join a sequence of url components with '/'
387 */
389 */
388 var url = '';
390 var url = '';
389 for (var i = 0; i < arguments.length; i++) {
391 for (var i = 0; i < arguments.length; i++) {
390 if (arguments[i] === '') {
392 if (arguments[i] === '') {
391 continue;
393 continue;
392 }
394 }
393 if (url.length > 0 && url[url.length-1] != '/') {
395 if (url.length > 0 && url[url.length-1] != '/') {
394 url = url + '/' + arguments[i];
396 url = url + '/' + arguments[i];
395 } else {
397 } else {
396 url = url + arguments[i];
398 url = url + arguments[i];
397 }
399 }
398 }
400 }
399 url = url.replace(/\/\/+/, '/');
401 url = url.replace(/\/\/+/, '/');
400 return url;
402 return url;
401 };
403 };
402
404
403 var url_path_split = function (path) {
405 var url_path_split = function (path) {
404 /**
406 /**
405 * Like os.path.split for URLs.
407 * Like os.path.split for URLs.
406 * Always returns two strings, the directory path and the base filename
408 * Always returns two strings, the directory path and the base filename
407 */
409 */
408
410
409 var idx = path.lastIndexOf('/');
411 var idx = path.lastIndexOf('/');
410 if (idx === -1) {
412 if (idx === -1) {
411 return ['', path];
413 return ['', path];
412 } else {
414 } else {
413 return [ path.slice(0, idx), path.slice(idx + 1) ];
415 return [ path.slice(0, idx), path.slice(idx + 1) ];
414 }
416 }
415 };
417 };
416
418
417 var parse_url = function (url) {
419 var parse_url = function (url) {
418 /**
420 /**
419 * an `a` element with an href allows attr-access to the parsed segments of a URL
421 * an `a` element with an href allows attr-access to the parsed segments of a URL
420 * a = parse_url("http://localhost:8888/path/name#hash")
422 * a = parse_url("http://localhost:8888/path/name#hash")
421 * a.protocol = "http:"
423 * a.protocol = "http:"
422 * a.host = "localhost:8888"
424 * a.host = "localhost:8888"
423 * a.hostname = "localhost"
425 * a.hostname = "localhost"
424 * a.port = 8888
426 * a.port = 8888
425 * a.pathname = "/path/name"
427 * a.pathname = "/path/name"
426 * a.hash = "#hash"
428 * a.hash = "#hash"
427 */
429 */
428 var a = document.createElement("a");
430 var a = document.createElement("a");
429 a.href = url;
431 a.href = url;
430 return a;
432 return a;
431 };
433 };
432
434
433 var encode_uri_components = function (uri) {
435 var encode_uri_components = function (uri) {
434 /**
436 /**
435 * encode just the components of a multi-segment uri,
437 * encode just the components of a multi-segment uri,
436 * leaving '/' separators
438 * leaving '/' separators
437 */
439 */
438 return uri.split('/').map(encodeURIComponent).join('/');
440 return uri.split('/').map(encodeURIComponent).join('/');
439 };
441 };
440
442
441 var url_join_encode = function () {
443 var url_join_encode = function () {
442 /**
444 /**
443 * join a sequence of url components with '/',
445 * join a sequence of url components with '/',
444 * encoding each component with encodeURIComponent
446 * encoding each component with encodeURIComponent
445 */
447 */
446 return encode_uri_components(url_path_join.apply(null, arguments));
448 return encode_uri_components(url_path_join.apply(null, arguments));
447 };
449 };
448
450
449
451
450 var splitext = function (filename) {
452 var splitext = function (filename) {
451 /**
453 /**
452 * mimic Python os.path.splitext
454 * mimic Python os.path.splitext
453 * Returns ['base', '.ext']
455 * Returns ['base', '.ext']
454 */
456 */
455 var idx = filename.lastIndexOf('.');
457 var idx = filename.lastIndexOf('.');
456 if (idx > 0) {
458 if (idx > 0) {
457 return [filename.slice(0, idx), filename.slice(idx)];
459 return [filename.slice(0, idx), filename.slice(idx)];
458 } else {
460 } else {
459 return [filename, ''];
461 return [filename, ''];
460 }
462 }
461 };
463 };
462
464
463
465
464 var escape_html = function (text) {
466 var escape_html = function (text) {
465 /**
467 /**
466 * escape text to HTML
468 * escape text to HTML
467 */
469 */
468 return $("<div/>").text(text).html();
470 return $("<div/>").text(text).html();
469 };
471 };
470
472
471
473
472 var get_body_data = function(key) {
474 var get_body_data = function(key) {
473 /**
475 /**
474 * get a url-encoded item from body.data and decode it
476 * get a url-encoded item from body.data and decode it
475 * we should never have any encoded URLs anywhere else in code
477 * we should never have any encoded URLs anywhere else in code
476 * until we are building an actual request
478 * until we are building an actual request
477 */
479 */
478 return decodeURIComponent($('body').data(key));
480 return decodeURIComponent($('body').data(key));
479 };
481 };
480
482
481 var to_absolute_cursor_pos = function (cm, cursor) {
483 var to_absolute_cursor_pos = function (cm, cursor) {
482 /**
484 /**
483 * get the absolute cursor position from CodeMirror's col, ch
485 * get the absolute cursor position from CodeMirror's col, ch
484 */
486 */
485 if (!cursor) {
487 if (!cursor) {
486 cursor = cm.getCursor();
488 cursor = cm.getCursor();
487 }
489 }
488 var cursor_pos = cursor.ch;
490 var cursor_pos = cursor.ch;
489 for (var i = 0; i < cursor.line; i++) {
491 for (var i = 0; i < cursor.line; i++) {
490 cursor_pos += cm.getLine(i).length + 1;
492 cursor_pos += cm.getLine(i).length + 1;
491 }
493 }
492 return cursor_pos;
494 return cursor_pos;
493 };
495 };
494
496
495 var from_absolute_cursor_pos = function (cm, cursor_pos) {
497 var from_absolute_cursor_pos = function (cm, cursor_pos) {
496 /**
498 /**
497 * turn absolute cursor postion into CodeMirror col, ch cursor
499 * turn absolute cursor postion into CodeMirror col, ch cursor
498 */
500 */
499 var i, line;
501 var i, line;
500 var offset = 0;
502 var offset = 0;
501 for (i = 0, line=cm.getLine(i); line !== undefined; i++, line=cm.getLine(i)) {
503 for (i = 0, line=cm.getLine(i); line !== undefined; i++, line=cm.getLine(i)) {
502 if (offset + line.length < cursor_pos) {
504 if (offset + line.length < cursor_pos) {
503 offset += line.length + 1;
505 offset += line.length + 1;
504 } else {
506 } else {
505 return {
507 return {
506 line : i,
508 line : i,
507 ch : cursor_pos - offset,
509 ch : cursor_pos - offset,
508 };
510 };
509 }
511 }
510 }
512 }
511 // reached end, return endpoint
513 // reached end, return endpoint
512 return {
514 return {
513 ch : line.length - 1,
515 ch : line.length - 1,
514 line : i - 1,
516 line : i - 1,
515 };
517 };
516 };
518 };
517
519
518 // http://stackoverflow.com/questions/2400935/browser-detection-in-javascript
520 // http://stackoverflow.com/questions/2400935/browser-detection-in-javascript
519 var browser = (function() {
521 var browser = (function() {
520 if (typeof navigator === 'undefined') {
522 if (typeof navigator === 'undefined') {
521 // navigator undefined in node
523 // navigator undefined in node
522 return 'None';
524 return 'None';
523 }
525 }
524 var N= navigator.appName, ua= navigator.userAgent, tem;
526 var N= navigator.appName, ua= navigator.userAgent, tem;
525 var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
527 var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
526 if (M && (tem= ua.match(/version\/([\.\d]+)/i)) !== null) M[2]= tem[1];
528 if (M && (tem= ua.match(/version\/([\.\d]+)/i)) !== null) M[2]= tem[1];
527 M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
529 M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
528 return M;
530 return M;
529 })();
531 })();
530
532
531 // http://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
533 // http://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
532 var platform = (function () {
534 var platform = (function () {
533 if (typeof navigator === 'undefined') {
535 if (typeof navigator === 'undefined') {
534 // navigator undefined in node
536 // navigator undefined in node
535 return 'None';
537 return 'None';
536 }
538 }
537 var OSName="None";
539 var OSName="None";
538 if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
540 if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
539 if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
541 if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
540 if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
542 if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
541 if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
543 if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
542 return OSName;
544 return OSName;
543 })();
545 })();
544
546
545 var get_url_param = function (name) {
547 var get_url_param = function (name) {
546 // get a URL parameter. I cannot believe we actually need this.
548 // get a URL parameter. I cannot believe we actually need this.
547 // Based on http://stackoverflow.com/a/25359264/938949
549 // Based on http://stackoverflow.com/a/25359264/938949
548 var match = new RegExp('[\?&]' + name + '=([^&]*)').exec(window.location.search);
550 var match = new RegExp('[\?&]' + name + '=([^&]*)').exec(window.location.search);
549 if (match){
551 if (match){
550 return decodeURIComponent(match[1] || '');
552 return decodeURIComponent(match[1] || '');
551 }
553 }
552 };
554 };
553
555
554 var is_or_has = function (a, b) {
556 var is_or_has = function (a, b) {
555 /**
557 /**
556 * Is b a child of a or a itself?
558 * Is b a child of a or a itself?
557 */
559 */
558 return a.has(b).length !==0 || a.is(b);
560 return a.has(b).length !==0 || a.is(b);
559 };
561 };
560
562
561 var is_focused = function (e) {
563 var is_focused = function (e) {
562 /**
564 /**
563 * Is element e, or one of its children focused?
565 * Is element e, or one of its children focused?
564 */
566 */
565 e = $(e);
567 e = $(e);
566 var target = $(document.activeElement);
568 var target = $(document.activeElement);
567 if (target.length > 0) {
569 if (target.length > 0) {
568 if (is_or_has(e, target)) {
570 if (is_or_has(e, target)) {
569 return true;
571 return true;
570 } else {
572 } else {
571 return false;
573 return false;
572 }
574 }
573 } else {
575 } else {
574 return false;
576 return false;
575 }
577 }
576 };
578 };
577
579
578 var mergeopt = function(_class, options, overwrite){
580 var mergeopt = function(_class, options, overwrite){
579 options = options || {};
581 options = options || {};
580 overwrite = overwrite || {};
582 overwrite = overwrite || {};
581 return $.extend(true, {}, _class.options_default, options, overwrite);
583 return $.extend(true, {}, _class.options_default, options, overwrite);
582 };
584 };
583
585
584 var ajax_error_msg = function (jqXHR) {
586 var ajax_error_msg = function (jqXHR) {
585 /**
587 /**
586 * Return a JSON error message if there is one,
588 * Return a JSON error message if there is one,
587 * otherwise the basic HTTP status text.
589 * otherwise the basic HTTP status text.
588 */
590 */
589 if (jqXHR.responseJSON && jqXHR.responseJSON.traceback) {
591 if (jqXHR.responseJSON && jqXHR.responseJSON.traceback) {
590 return jqXHR.responseJSON.traceback;
592 return jqXHR.responseJSON.traceback;
591 } else if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
593 } else if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
592 return jqXHR.responseJSON.message;
594 return jqXHR.responseJSON.message;
593 } else {
595 } else {
594 return jqXHR.statusText;
596 return jqXHR.statusText;
595 }
597 }
596 };
598 };
597 var log_ajax_error = function (jqXHR, status, error) {
599 var log_ajax_error = function (jqXHR, status, error) {
598 /**
600 /**
599 * log ajax failures with informative messages
601 * log ajax failures with informative messages
600 */
602 */
601 var msg = "API request failed (" + jqXHR.status + "): ";
603 var msg = "API request failed (" + jqXHR.status + "): ";
602 console.log(jqXHR);
604 console.log(jqXHR);
603 msg += ajax_error_msg(jqXHR);
605 msg += ajax_error_msg(jqXHR);
604 console.log(msg);
606 console.log(msg);
605 };
607 };
606
608
607 var requireCodeMirrorMode = function (mode, callback, errback) {
609 var requireCodeMirrorMode = function (mode, callback, errback) {
608 /**
610 /**
609 * load a mode with requirejs
611 * find a predefined mode or detect from CM metadata then
612 * require and callback with the resolveable mode string: mime or
613 * custom name
610 */
614 */
611 if (typeof mode != "string") mode = mode.name;
615
612 if (CodeMirror.modes.hasOwnProperty(mode)) {
616 var modename = (typeof mode == "string") ? mode :
613 callback(CodeMirror.modes.mode);
617 mode.mode || mode.name;
618
619 // simplest, cheapest check by mode name: mode may also have config
620 if (CodeMirror.modes.hasOwnProperty(modename)) {
621 // return the full mode object, if it has a name
622 callback(mode.name ? mode : modename);
614 return;
623 return;
615 }
624 }
625
626 // *somehow* get back a CM.modeInfo-like object that has .mode and
627 // .mime
628 var info = (mode && mode.mode && mode.mime && mode) ||
629 CodeMirror.findModeByName(modename) ||
630 CodeMirror.findModeByExtension(modename.split(".").slice(-1)) ||
631 CodeMirror.findModeByMIME(modename) ||
632 {mode: modename, mime: modename};
633
616 require([
634 require([
617 // might want to use CodeMirror.modeURL here
635 // might want to use CodeMirror.modeURL here
618 ['codemirror/mode', mode, mode].join('/'),
636 ['codemirror/mode', info.mode, info.mode].join('/'),
619 ], callback, errback
637 ], function() {
638 // return the original mode, as from a kernelspec on first load
639 // or the mimetype, as for most highlighting
640 callback(mode.name ? mode : info.mime);
641 }, errback
620 );
642 );
621 };
643 };
622
644
623 /** Error type for wrapped XHR errors. */
645 /** Error type for wrapped XHR errors. */
624 var XHR_ERROR = 'XhrError';
646 var XHR_ERROR = 'XhrError';
625
647
626 /**
648 /**
627 * Wraps an AJAX error as an Error object.
649 * Wraps an AJAX error as an Error object.
628 */
650 */
629 var wrap_ajax_error = function (jqXHR, status, error) {
651 var wrap_ajax_error = function (jqXHR, status, error) {
630 var wrapped_error = new Error(ajax_error_msg(jqXHR));
652 var wrapped_error = new Error(ajax_error_msg(jqXHR));
631 wrapped_error.name = XHR_ERROR;
653 wrapped_error.name = XHR_ERROR;
632 // provide xhr response
654 // provide xhr response
633 wrapped_error.xhr = jqXHR;
655 wrapped_error.xhr = jqXHR;
634 wrapped_error.xhr_status = status;
656 wrapped_error.xhr_status = status;
635 wrapped_error.xhr_error = error;
657 wrapped_error.xhr_error = error;
636 return wrapped_error;
658 return wrapped_error;
637 };
659 };
638
660
639 var promising_ajax = function(url, settings) {
661 var promising_ajax = function(url, settings) {
640 /**
662 /**
641 * Like $.ajax, but returning an ES6 promise. success and error settings
663 * Like $.ajax, but returning an ES6 promise. success and error settings
642 * will be ignored.
664 * will be ignored.
643 */
665 */
644 settings = settings || {};
666 settings = settings || {};
645 return new Promise(function(resolve, reject) {
667 return new Promise(function(resolve, reject) {
646 settings.success = function(data, status, jqXHR) {
668 settings.success = function(data, status, jqXHR) {
647 resolve(data);
669 resolve(data);
648 };
670 };
649 settings.error = function(jqXHR, status, error) {
671 settings.error = function(jqXHR, status, error) {
650 log_ajax_error(jqXHR, status, error);
672 log_ajax_error(jqXHR, status, error);
651 reject(wrap_ajax_error(jqXHR, status, error));
673 reject(wrap_ajax_error(jqXHR, status, error));
652 };
674 };
653 $.ajax(url, settings);
675 $.ajax(url, settings);
654 });
676 });
655 };
677 };
656
678
657 var WrappedError = function(message, error){
679 var WrappedError = function(message, error){
658 /**
680 /**
659 * Wrappable Error class
681 * Wrappable Error class
660 *
682 *
661 * The Error class doesn't actually act on `this`. Instead it always
683 * The Error class doesn't actually act on `this`. Instead it always
662 * returns a new instance of Error. Here we capture that instance so we
684 * returns a new instance of Error. Here we capture that instance so we
663 * can apply it's properties to `this`.
685 * can apply it's properties to `this`.
664 */
686 */
665 var tmp = Error.apply(this, [message]);
687 var tmp = Error.apply(this, [message]);
666
688
667 // Copy the properties of the error over to this.
689 // Copy the properties of the error over to this.
668 var properties = Object.getOwnPropertyNames(tmp);
690 var properties = Object.getOwnPropertyNames(tmp);
669 for (var i = 0; i < properties.length; i++) {
691 for (var i = 0; i < properties.length; i++) {
670 this[properties[i]] = tmp[properties[i]];
692 this[properties[i]] = tmp[properties[i]];
671 }
693 }
672
694
673 // Keep a stack of the original error messages.
695 // Keep a stack of the original error messages.
674 if (error instanceof WrappedError) {
696 if (error instanceof WrappedError) {
675 this.error_stack = error.error_stack;
697 this.error_stack = error.error_stack;
676 } else {
698 } else {
677 this.error_stack = [error];
699 this.error_stack = [error];
678 }
700 }
679 this.error_stack.push(tmp);
701 this.error_stack.push(tmp);
680
702
681 return this;
703 return this;
682 };
704 };
683
705
684 WrappedError.prototype = Object.create(Error.prototype, {});
706 WrappedError.prototype = Object.create(Error.prototype, {});
685
707
686
708
687 var load_class = function(class_name, module_name, registry) {
709 var load_class = function(class_name, module_name, registry) {
688 /**
710 /**
689 * Tries to load a class
711 * Tries to load a class
690 *
712 *
691 * Tries to load a class from a module using require.js, if a module
713 * Tries to load a class from a module using require.js, if a module
692 * is specified, otherwise tries to load a class from the global
714 * is specified, otherwise tries to load a class from the global
693 * registry, if the global registry is provided.
715 * registry, if the global registry is provided.
694 */
716 */
695 return new Promise(function(resolve, reject) {
717 return new Promise(function(resolve, reject) {
696
718
697 // Try loading the view module using require.js
719 // Try loading the view module using require.js
698 if (module_name) {
720 if (module_name) {
699 require([module_name], function(module) {
721 require([module_name], function(module) {
700 if (module[class_name] === undefined) {
722 if (module[class_name] === undefined) {
701 reject(new Error('Class '+class_name+' not found in module '+module_name));
723 reject(new Error('Class '+class_name+' not found in module '+module_name));
702 } else {
724 } else {
703 resolve(module[class_name]);
725 resolve(module[class_name]);
704 }
726 }
705 }, reject);
727 }, reject);
706 } else {
728 } else {
707 if (registry && registry[class_name]) {
729 if (registry && registry[class_name]) {
708 resolve(registry[class_name]);
730 resolve(registry[class_name]);
709 } else {
731 } else {
710 reject(new Error('Class '+class_name+' not found in registry '));
732 reject(new Error('Class '+class_name+' not found in registry '));
711 }
733 }
712 }
734 }
713 });
735 });
714 };
736 };
715
737
716 var resolve_promises_dict = function(d) {
738 var resolve_promises_dict = function(d) {
717 /**
739 /**
718 * Resolve a promiseful dictionary.
740 * Resolve a promiseful dictionary.
719 * Returns a single Promise.
741 * Returns a single Promise.
720 */
742 */
721 var keys = Object.keys(d);
743 var keys = Object.keys(d);
722 var values = [];
744 var values = [];
723 keys.forEach(function(key) {
745 keys.forEach(function(key) {
724 values.push(d[key]);
746 values.push(d[key]);
725 });
747 });
726 return Promise.all(values).then(function(v) {
748 return Promise.all(values).then(function(v) {
727 d = {};
749 d = {};
728 for(var i=0; i<keys.length; i++) {
750 for(var i=0; i<keys.length; i++) {
729 d[keys[i]] = v[i];
751 d[keys[i]] = v[i];
730 }
752 }
731 return d;
753 return d;
732 });
754 });
733 };
755 };
734
756
735 var WrappedError = function(message, error){
757 var WrappedError = function(message, error){
736 /**
758 /**
737 * Wrappable Error class
759 * Wrappable Error class
738 *
760 *
739 * The Error class doesn't actually act on `this`. Instead it always
761 * The Error class doesn't actually act on `this`. Instead it always
740 * returns a new instance of Error. Here we capture that instance so we
762 * returns a new instance of Error. Here we capture that instance so we
741 * can apply it's properties to `this`.
763 * can apply it's properties to `this`.
742 */
764 */
743 var tmp = Error.apply(this, [message]);
765 var tmp = Error.apply(this, [message]);
744
766
745 // Copy the properties of the error over to this.
767 // Copy the properties of the error over to this.
746 var properties = Object.getOwnPropertyNames(tmp);
768 var properties = Object.getOwnPropertyNames(tmp);
747 for (var i = 0; i < properties.length; i++) {
769 for (var i = 0; i < properties.length; i++) {
748 this[properties[i]] = tmp[properties[i]];
770 this[properties[i]] = tmp[properties[i]];
749 }
771 }
750
772
751 // Keep a stack of the original error messages.
773 // Keep a stack of the original error messages.
752 if (error instanceof WrappedError) {
774 if (error instanceof WrappedError) {
753 this.error_stack = error.error_stack;
775 this.error_stack = error.error_stack;
754 } else {
776 } else {
755 this.error_stack = [error];
777 this.error_stack = [error];
756 }
778 }
757 this.error_stack.push(tmp);
779 this.error_stack.push(tmp);
758
780
759 return this;
781 return this;
760 };
782 };
761
783
762 WrappedError.prototype = Object.create(Error.prototype, {});
784 WrappedError.prototype = Object.create(Error.prototype, {});
763
785
764 var reject = function(message, log) {
786 var reject = function(message, log) {
765 /**
787 /**
766 * Creates a wrappable Promise rejection function.
788 * Creates a wrappable Promise rejection function.
767 *
789 *
768 * Creates a function that returns a Promise.reject with a new WrappedError
790 * Creates a function that returns a Promise.reject with a new WrappedError
769 * that has the provided message and wraps the original error that
791 * that has the provided message and wraps the original error that
770 * caused the promise to reject.
792 * caused the promise to reject.
771 */
793 */
772 return function(error) {
794 return function(error) {
773 var wrapped_error = new WrappedError(message, error);
795 var wrapped_error = new WrappedError(message, error);
774 if (log) console.error(wrapped_error);
796 if (log) console.error(wrapped_error);
775 return Promise.reject(wrapped_error);
797 return Promise.reject(wrapped_error);
776 };
798 };
777 };
799 };
778
800
779 var typeset = function(element, text) {
801 var typeset = function(element, text) {
780 /**
802 /**
781 * Apply MathJax rendering to an element, and optionally set its text
803 * Apply MathJax rendering to an element, and optionally set its text
782 *
804 *
783 * If MathJax is not available, make no changes.
805 * If MathJax is not available, make no changes.
784 *
806 *
785 * Returns the output any number of typeset elements, or undefined if
807 * Returns the output any number of typeset elements, or undefined if
786 * MathJax was not available.
808 * MathJax was not available.
787 *
809 *
788 * Parameters
810 * Parameters
789 * ----------
811 * ----------
790 * element: Node, NodeList, or jQuery selection
812 * element: Node, NodeList, or jQuery selection
791 * text: option string
813 * text: option string
792 */
814 */
793 if(!window.MathJax){
815 if(!window.MathJax){
794 return;
816 return;
795 }
817 }
796 var $el = element.jquery ? element : $(element);
818 var $el = element.jquery ? element : $(element);
797 if(arguments.length > 1){
819 if(arguments.length > 1){
798 $el.text(text);
820 $el.text(text);
799 }
821 }
800 return $el.map(function(){
822 return $el.map(function(){
801 // MathJax takes a DOM node: $.map makes `this` the context
823 // MathJax takes a DOM node: $.map makes `this` the context
802 return MathJax.Hub.Queue(["Typeset", MathJax.Hub, this]);
824 return MathJax.Hub.Queue(["Typeset", MathJax.Hub, this]);
803 });
825 });
804 };
826 };
805
827
806 var utils = {
828 var utils = {
807 regex_split : regex_split,
829 regex_split : regex_split,
808 uuid : uuid,
830 uuid : uuid,
809 fixConsole : fixConsole,
831 fixConsole : fixConsole,
810 fixCarriageReturn : fixCarriageReturn,
832 fixCarriageReturn : fixCarriageReturn,
811 autoLinkUrls : autoLinkUrls,
833 autoLinkUrls : autoLinkUrls,
812 points_to_pixels : points_to_pixels,
834 points_to_pixels : points_to_pixels,
813 get_body_data : get_body_data,
835 get_body_data : get_body_data,
814 parse_url : parse_url,
836 parse_url : parse_url,
815 url_path_split : url_path_split,
837 url_path_split : url_path_split,
816 url_path_join : url_path_join,
838 url_path_join : url_path_join,
817 url_join_encode : url_join_encode,
839 url_join_encode : url_join_encode,
818 encode_uri_components : encode_uri_components,
840 encode_uri_components : encode_uri_components,
819 splitext : splitext,
841 splitext : splitext,
820 escape_html : escape_html,
842 escape_html : escape_html,
821 always_new : always_new,
843 always_new : always_new,
822 to_absolute_cursor_pos : to_absolute_cursor_pos,
844 to_absolute_cursor_pos : to_absolute_cursor_pos,
823 from_absolute_cursor_pos : from_absolute_cursor_pos,
845 from_absolute_cursor_pos : from_absolute_cursor_pos,
824 browser : browser,
846 browser : browser,
825 platform: platform,
847 platform: platform,
826 get_url_param: get_url_param,
848 get_url_param: get_url_param,
827 is_or_has : is_or_has,
849 is_or_has : is_or_has,
828 is_focused : is_focused,
850 is_focused : is_focused,
829 mergeopt: mergeopt,
851 mergeopt: mergeopt,
830 ajax_error_msg : ajax_error_msg,
852 ajax_error_msg : ajax_error_msg,
831 log_ajax_error : log_ajax_error,
853 log_ajax_error : log_ajax_error,
832 requireCodeMirrorMode : requireCodeMirrorMode,
854 requireCodeMirrorMode : requireCodeMirrorMode,
833 XHR_ERROR : XHR_ERROR,
855 XHR_ERROR : XHR_ERROR,
834 wrap_ajax_error : wrap_ajax_error,
856 wrap_ajax_error : wrap_ajax_error,
835 promising_ajax : promising_ajax,
857 promising_ajax : promising_ajax,
836 WrappedError: WrappedError,
858 WrappedError: WrappedError,
837 load_class: load_class,
859 load_class: load_class,
838 resolve_promises_dict: resolve_promises_dict,
860 resolve_promises_dict: resolve_promises_dict,
839 reject: reject,
861 reject: reject,
840 typeset: typeset,
862 typeset: typeset,
841 };
863 };
842
864
843 // Backwards compatability.
865 // Backwards compatability.
844 IPython.utils = utils;
866 IPython.utils = utils;
845
867
846 return utils;
868 return utils;
847 });
869 });
@@ -1,78 +1,76 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/utils',
6 'base/js/utils',
7 'codemirror/lib/codemirror',
7 'codemirror/lib/codemirror',
8 'codemirror/mode/meta',
8 'codemirror/mode/meta',
9 'codemirror/addon/search/search'
9 'codemirror/addon/search/search'
10 ],
10 ],
11 function($,
11 function($,
12 utils,
12 utils,
13 CodeMirror
13 CodeMirror
14 ) {
14 ) {
15 var Editor = function(selector, options) {
15 var Editor = function(selector, options) {
16 this.selector = selector;
16 this.selector = selector;
17 this.contents = options.contents;
17 this.contents = options.contents;
18 this.events = options.events;
18 this.events = options.events;
19 this.base_url = options.base_url;
19 this.base_url = options.base_url;
20 this.file_path = options.file_path;
20 this.file_path = options.file_path;
21
21
22 this.codemirror = CodeMirror($(this.selector)[0]);
22 this.codemirror = CodeMirror($(this.selector)[0]);
23
23
24 // It appears we have to set commands on the CodeMirror class, not the
24 // It appears we have to set commands on the CodeMirror class, not the
25 // instance. I'd like to be wrong, but since there should only be one CM
25 // instance. I'd like to be wrong, but since there should only be one CM
26 // instance on the page, this is good enough for now.
26 // instance on the page, this is good enough for now.
27 CodeMirror.commands.save = $.proxy(this.save, this);
27 CodeMirror.commands.save = $.proxy(this.save, this);
28
28
29 this.save_enabled = false;
29 this.save_enabled = false;
30 };
30 };
31
31
32 Editor.prototype.load = function() {
32 Editor.prototype.load = function() {
33 var that = this;
33 var that = this;
34 var cm = this.codemirror;
34 var cm = this.codemirror;
35 this.contents.get(this.file_path, {type: 'file', format: 'text'})
35 this.contents.get(this.file_path, {type: 'file', format: 'text'})
36 .then(function(model) {
36 .then(function(model) {
37 cm.setValue(model.content);
37 cm.setValue(model.content);
38
38
39 // Setting the file's initial value creates a history entry,
39 // Setting the file's initial value creates a history entry,
40 // which we don't want.
40 // which we don't want.
41 cm.clearHistory();
41 cm.clearHistory();
42
42
43 // Find and load the highlighting mode
43 // Find and load the highlighting mode
44 var modeinfo = CodeMirror.findModeByMIME(model.mimetype);
44 utils.requireCodeMirrorMode(model.mimetype, function(spec) {
45 if (modeinfo) {
45 var mode = CodeMirror.getMode({}, spec);
46 utils.requireCodeMirrorMode(modeinfo.mode, function() {
46 cm.setOption('mode', mode);
47 cm.setOption('mode', modeinfo.mode);
47 });
48 });
49 }
50 that.save_enabled = true;
48 that.save_enabled = true;
51 },
49 },
52 function(error) {
50 function(error) {
53 cm.setValue("Error! " + error.message +
51 cm.setValue("Error! " + error.message +
54 "\nSaving disabled.");
52 "\nSaving disabled.");
55 that.save_enabled = false;
53 that.save_enabled = false;
56 }
54 }
57 );
55 );
58 };
56 };
59
57
60 Editor.prototype.save = function() {
58 Editor.prototype.save = function() {
61 if (!this.save_enabled) {
59 if (!this.save_enabled) {
62 console.log("Not saving, save disabled");
60 console.log("Not saving, save disabled");
63 return;
61 return;
64 }
62 }
65 var model = {
63 var model = {
66 path: this.file_path,
64 path: this.file_path,
67 type: 'file',
65 type: 'file',
68 format: 'text',
66 format: 'text',
69 content: this.codemirror.getValue(),
67 content: this.codemirror.getValue(),
70 };
68 };
71 var that = this;
69 var that = this;
72 this.contents.save(this.file_path, model).then(function() {
70 this.contents.save(this.file_path, model).then(function() {
73 that.events.trigger("save_succeeded.TextEditor");
71 that.events.trigger("save_succeeded.TextEditor");
74 });
72 });
75 };
73 };
76
74
77 return {Editor: Editor};
75 return {Editor: Editor};
78 });
76 });
@@ -1,678 +1,678 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 *
5 *
6 *
6 *
7 * @module cell
7 * @module cell
8 * @namespace cell
8 * @namespace cell
9 * @class Cell
9 * @class Cell
10 */
10 */
11
11
12
12
13 define([
13 define([
14 'base/js/namespace',
14 'base/js/namespace',
15 'jquery',
15 'jquery',
16 'base/js/utils',
16 'base/js/utils',
17 'codemirror/lib/codemirror',
17 'codemirror/lib/codemirror',
18 'codemirror/addon/edit/matchbrackets',
18 'codemirror/addon/edit/matchbrackets',
19 'codemirror/addon/edit/closebrackets',
19 'codemirror/addon/edit/closebrackets',
20 'codemirror/addon/comment/comment'
20 'codemirror/addon/comment/comment'
21 ], function(IPython, $, utils, CodeMirror, cm_match, cm_closeb, cm_comment) {
21 ], function(IPython, $, utils, CodeMirror, cm_match, cm_closeb, cm_comment) {
22 // TODO: remove IPython dependency here
22 // TODO: remove IPython dependency here
23 "use strict";
23 "use strict";
24
24
25 var Cell = function (options) {
25 var Cell = function (options) {
26 /* Constructor
26 /* Constructor
27 *
27 *
28 * The Base `Cell` class from which to inherit.
28 * The Base `Cell` class from which to inherit.
29 * @constructor
29 * @constructor
30 * @param:
30 * @param:
31 * options: dictionary
31 * options: dictionary
32 * Dictionary of keyword arguments.
32 * Dictionary of keyword arguments.
33 * events: $(Events) instance
33 * events: $(Events) instance
34 * config: dictionary
34 * config: dictionary
35 * keyboard_manager: KeyboardManager instance
35 * keyboard_manager: KeyboardManager instance
36 */
36 */
37 options = options || {};
37 options = options || {};
38 this.keyboard_manager = options.keyboard_manager;
38 this.keyboard_manager = options.keyboard_manager;
39 this.events = options.events;
39 this.events = options.events;
40 var config = utils.mergeopt(Cell, options.config);
40 var config = utils.mergeopt(Cell, options.config);
41 // superclass default overwrite our default
41 // superclass default overwrite our default
42
42
43 this.placeholder = config.placeholder || '';
43 this.placeholder = config.placeholder || '';
44 this.read_only = config.cm_config.readOnly;
44 this.read_only = config.cm_config.readOnly;
45 this.selected = false;
45 this.selected = false;
46 this.rendered = false;
46 this.rendered = false;
47 this.mode = 'command';
47 this.mode = 'command';
48
48
49 // Metadata property
49 // Metadata property
50 var that = this;
50 var that = this;
51 this._metadata = {};
51 this._metadata = {};
52 Object.defineProperty(this, 'metadata', {
52 Object.defineProperty(this, 'metadata', {
53 get: function() { return that._metadata; },
53 get: function() { return that._metadata; },
54 set: function(value) {
54 set: function(value) {
55 that._metadata = value;
55 that._metadata = value;
56 if (that.celltoolbar) {
56 if (that.celltoolbar) {
57 that.celltoolbar.rebuild();
57 that.celltoolbar.rebuild();
58 }
58 }
59 }
59 }
60 });
60 });
61
61
62 // load this from metadata later ?
62 // load this from metadata later ?
63 this.user_highlight = 'auto';
63 this.user_highlight = 'auto';
64 this.cm_config = config.cm_config;
64 this.cm_config = config.cm_config;
65 this.cell_id = utils.uuid();
65 this.cell_id = utils.uuid();
66 this._options = config;
66 this._options = config;
67
67
68 // For JS VM engines optimization, attributes should be all set (even
68 // For JS VM engines optimization, attributes should be all set (even
69 // to null) in the constructor, and if possible, if different subclass
69 // to null) in the constructor, and if possible, if different subclass
70 // have new attributes with same name, they should be created in the
70 // have new attributes with same name, they should be created in the
71 // same order. Easiest is to create and set to null in parent class.
71 // same order. Easiest is to create and set to null in parent class.
72
72
73 this.element = null;
73 this.element = null;
74 this.cell_type = this.cell_type || null;
74 this.cell_type = this.cell_type || null;
75 this.code_mirror = null;
75 this.code_mirror = null;
76
76
77 this.create_element();
77 this.create_element();
78 if (this.element !== null) {
78 if (this.element !== null) {
79 this.element.data("cell", this);
79 this.element.data("cell", this);
80 this.bind_events();
80 this.bind_events();
81 this.init_classes();
81 this.init_classes();
82 }
82 }
83 };
83 };
84
84
85 Cell.options_default = {
85 Cell.options_default = {
86 cm_config : {
86 cm_config : {
87 indentUnit : 4,
87 indentUnit : 4,
88 readOnly: false,
88 readOnly: false,
89 theme: "default",
89 theme: "default",
90 extraKeys: {
90 extraKeys: {
91 "Cmd-Right":"goLineRight",
91 "Cmd-Right":"goLineRight",
92 "End":"goLineRight",
92 "End":"goLineRight",
93 "Cmd-Left":"goLineLeft"
93 "Cmd-Left":"goLineLeft"
94 }
94 }
95 }
95 }
96 };
96 };
97
97
98 // FIXME: Workaround CM Bug #332 (Safari segfault on drag)
98 // FIXME: Workaround CM Bug #332 (Safari segfault on drag)
99 // by disabling drag/drop altogether on Safari
99 // by disabling drag/drop altogether on Safari
100 // https://github.com/codemirror/CodeMirror/issues/332
100 // https://github.com/codemirror/CodeMirror/issues/332
101 if (utils.browser[0] == "Safari") {
101 if (utils.browser[0] == "Safari") {
102 Cell.options_default.cm_config.dragDrop = false;
102 Cell.options_default.cm_config.dragDrop = false;
103 }
103 }
104
104
105 /**
105 /**
106 * Empty. Subclasses must implement create_element.
106 * Empty. Subclasses must implement create_element.
107 * This should contain all the code to create the DOM element in notebook
107 * This should contain all the code to create the DOM element in notebook
108 * and will be called by Base Class constructor.
108 * and will be called by Base Class constructor.
109 * @method create_element
109 * @method create_element
110 */
110 */
111 Cell.prototype.create_element = function () {
111 Cell.prototype.create_element = function () {
112 };
112 };
113
113
114 Cell.prototype.init_classes = function () {
114 Cell.prototype.init_classes = function () {
115 /**
115 /**
116 * Call after this.element exists to initialize the css classes
116 * Call after this.element exists to initialize the css classes
117 * related to selected, rendered and mode.
117 * related to selected, rendered and mode.
118 */
118 */
119 if (this.selected) {
119 if (this.selected) {
120 this.element.addClass('selected');
120 this.element.addClass('selected');
121 } else {
121 } else {
122 this.element.addClass('unselected');
122 this.element.addClass('unselected');
123 }
123 }
124 if (this.rendered) {
124 if (this.rendered) {
125 this.element.addClass('rendered');
125 this.element.addClass('rendered');
126 } else {
126 } else {
127 this.element.addClass('unrendered');
127 this.element.addClass('unrendered');
128 }
128 }
129 if (this.mode === 'edit') {
129 if (this.mode === 'edit') {
130 this.element.addClass('edit_mode');
130 this.element.addClass('edit_mode');
131 } else {
131 } else {
132 this.element.addClass('command_mode');
132 this.element.addClass('command_mode');
133 }
133 }
134 };
134 };
135
135
136 /**
136 /**
137 * Subclasses can implement override bind_events.
137 * Subclasses can implement override bind_events.
138 * Be carefull to call the parent method when overwriting as it fires event.
138 * Be carefull to call the parent method when overwriting as it fires event.
139 * this will be triggerd after create_element in constructor.
139 * this will be triggerd after create_element in constructor.
140 * @method bind_events
140 * @method bind_events
141 */
141 */
142 Cell.prototype.bind_events = function () {
142 Cell.prototype.bind_events = function () {
143 var that = this;
143 var that = this;
144 // We trigger events so that Cell doesn't have to depend on Notebook.
144 // We trigger events so that Cell doesn't have to depend on Notebook.
145 that.element.click(function (event) {
145 that.element.click(function (event) {
146 if (!that.selected) {
146 if (!that.selected) {
147 that.events.trigger('select.Cell', {'cell':that});
147 that.events.trigger('select.Cell', {'cell':that});
148 }
148 }
149 });
149 });
150 that.element.focusin(function (event) {
150 that.element.focusin(function (event) {
151 if (!that.selected) {
151 if (!that.selected) {
152 that.events.trigger('select.Cell', {'cell':that});
152 that.events.trigger('select.Cell', {'cell':that});
153 }
153 }
154 });
154 });
155 if (this.code_mirror) {
155 if (this.code_mirror) {
156 this.code_mirror.on("change", function(cm, change) {
156 this.code_mirror.on("change", function(cm, change) {
157 that.events.trigger("set_dirty.Notebook", {value: true});
157 that.events.trigger("set_dirty.Notebook", {value: true});
158 });
158 });
159 }
159 }
160 if (this.code_mirror) {
160 if (this.code_mirror) {
161 this.code_mirror.on('focus', function(cm, change) {
161 this.code_mirror.on('focus', function(cm, change) {
162 that.events.trigger('edit_mode.Cell', {cell: that});
162 that.events.trigger('edit_mode.Cell', {cell: that});
163 });
163 });
164 }
164 }
165 if (this.code_mirror) {
165 if (this.code_mirror) {
166 this.code_mirror.on('blur', function(cm, change) {
166 this.code_mirror.on('blur', function(cm, change) {
167 that.events.trigger('command_mode.Cell', {cell: that});
167 that.events.trigger('command_mode.Cell', {cell: that});
168 });
168 });
169 }
169 }
170
170
171 this.element.dblclick(function () {
171 this.element.dblclick(function () {
172 if (that.selected === false) {
172 if (that.selected === false) {
173 this.events.trigger('select.Cell', {'cell':that});
173 this.events.trigger('select.Cell', {'cell':that});
174 }
174 }
175 var cont = that.unrender();
175 var cont = that.unrender();
176 if (cont) {
176 if (cont) {
177 that.focus_editor();
177 that.focus_editor();
178 }
178 }
179 });
179 });
180 };
180 };
181
181
182 /**
182 /**
183 * This method gets called in CodeMirror's onKeyDown/onKeyPress
183 * This method gets called in CodeMirror's onKeyDown/onKeyPress
184 * handlers and is used to provide custom key handling.
184 * handlers and is used to provide custom key handling.
185 *
185 *
186 * To have custom handling, subclasses should override this method, but still call it
186 * To have custom handling, subclasses should override this method, but still call it
187 * in order to process the Edit mode keyboard shortcuts.
187 * in order to process the Edit mode keyboard shortcuts.
188 *
188 *
189 * @method handle_codemirror_keyevent
189 * @method handle_codemirror_keyevent
190 * @param {CodeMirror} editor - The codemirror instance bound to the cell
190 * @param {CodeMirror} editor - The codemirror instance bound to the cell
191 * @param {event} event - key press event which either should or should not be handled by CodeMirror
191 * @param {event} event - key press event which either should or should not be handled by CodeMirror
192 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
192 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
193 */
193 */
194 Cell.prototype.handle_codemirror_keyevent = function (editor, event) {
194 Cell.prototype.handle_codemirror_keyevent = function (editor, event) {
195 var shortcuts = this.keyboard_manager.edit_shortcuts;
195 var shortcuts = this.keyboard_manager.edit_shortcuts;
196
196
197 var cur = editor.getCursor();
197 var cur = editor.getCursor();
198 if((cur.line !== 0 || cur.ch !==0) && event.keyCode === 38){
198 if((cur.line !== 0 || cur.ch !==0) && event.keyCode === 38){
199 event._ipkmIgnore = true;
199 event._ipkmIgnore = true;
200 }
200 }
201 var nLastLine = editor.lastLine();
201 var nLastLine = editor.lastLine();
202 if ((event.keyCode === 40) &&
202 if ((event.keyCode === 40) &&
203 ((cur.line !== nLastLine) ||
203 ((cur.line !== nLastLine) ||
204 (cur.ch !== editor.getLineHandle(nLastLine).text.length))
204 (cur.ch !== editor.getLineHandle(nLastLine).text.length))
205 ) {
205 ) {
206 event._ipkmIgnore = true;
206 event._ipkmIgnore = true;
207 }
207 }
208 // if this is an edit_shortcuts shortcut, the global keyboard/shortcut
208 // if this is an edit_shortcuts shortcut, the global keyboard/shortcut
209 // manager will handle it
209 // manager will handle it
210 if (shortcuts.handles(event)) {
210 if (shortcuts.handles(event)) {
211 return true;
211 return true;
212 }
212 }
213
213
214 return false;
214 return false;
215 };
215 };
216
216
217
217
218 /**
218 /**
219 * Triger typsetting of math by mathjax on current cell element
219 * Triger typsetting of math by mathjax on current cell element
220 * @method typeset
220 * @method typeset
221 */
221 */
222 Cell.prototype.typeset = function () {
222 Cell.prototype.typeset = function () {
223 utils.typeset(this.element);
223 utils.typeset(this.element);
224 };
224 };
225
225
226 /**
226 /**
227 * handle cell level logic when a cell is selected
227 * handle cell level logic when a cell is selected
228 * @method select
228 * @method select
229 * @return is the action being taken
229 * @return is the action being taken
230 */
230 */
231 Cell.prototype.select = function () {
231 Cell.prototype.select = function () {
232 if (!this.selected) {
232 if (!this.selected) {
233 this.element.addClass('selected');
233 this.element.addClass('selected');
234 this.element.removeClass('unselected');
234 this.element.removeClass('unselected');
235 this.selected = true;
235 this.selected = true;
236 return true;
236 return true;
237 } else {
237 } else {
238 return false;
238 return false;
239 }
239 }
240 };
240 };
241
241
242 /**
242 /**
243 * handle cell level logic when a cell is unselected
243 * handle cell level logic when a cell is unselected
244 * @method unselect
244 * @method unselect
245 * @return is the action being taken
245 * @return is the action being taken
246 */
246 */
247 Cell.prototype.unselect = function () {
247 Cell.prototype.unselect = function () {
248 if (this.selected) {
248 if (this.selected) {
249 this.element.addClass('unselected');
249 this.element.addClass('unselected');
250 this.element.removeClass('selected');
250 this.element.removeClass('selected');
251 this.selected = false;
251 this.selected = false;
252 return true;
252 return true;
253 } else {
253 } else {
254 return false;
254 return false;
255 }
255 }
256 };
256 };
257
257
258 /**
258 /**
259 * should be overritten by subclass
259 * should be overritten by subclass
260 * @method execute
260 * @method execute
261 */
261 */
262 Cell.prototype.execute = function () {
262 Cell.prototype.execute = function () {
263 return;
263 return;
264 };
264 };
265
265
266 /**
266 /**
267 * handle cell level logic when a cell is rendered
267 * handle cell level logic when a cell is rendered
268 * @method render
268 * @method render
269 * @return is the action being taken
269 * @return is the action being taken
270 */
270 */
271 Cell.prototype.render = function () {
271 Cell.prototype.render = function () {
272 if (!this.rendered) {
272 if (!this.rendered) {
273 this.element.addClass('rendered');
273 this.element.addClass('rendered');
274 this.element.removeClass('unrendered');
274 this.element.removeClass('unrendered');
275 this.rendered = true;
275 this.rendered = true;
276 return true;
276 return true;
277 } else {
277 } else {
278 return false;
278 return false;
279 }
279 }
280 };
280 };
281
281
282 /**
282 /**
283 * handle cell level logic when a cell is unrendered
283 * handle cell level logic when a cell is unrendered
284 * @method unrender
284 * @method unrender
285 * @return is the action being taken
285 * @return is the action being taken
286 */
286 */
287 Cell.prototype.unrender = function () {
287 Cell.prototype.unrender = function () {
288 if (this.rendered) {
288 if (this.rendered) {
289 this.element.addClass('unrendered');
289 this.element.addClass('unrendered');
290 this.element.removeClass('rendered');
290 this.element.removeClass('rendered');
291 this.rendered = false;
291 this.rendered = false;
292 return true;
292 return true;
293 } else {
293 } else {
294 return false;
294 return false;
295 }
295 }
296 };
296 };
297
297
298 /**
298 /**
299 * Delegates keyboard shortcut handling to either IPython keyboard
299 * Delegates keyboard shortcut handling to either IPython keyboard
300 * manager when in command mode, or CodeMirror when in edit mode
300 * manager when in command mode, or CodeMirror when in edit mode
301 *
301 *
302 * @method handle_keyevent
302 * @method handle_keyevent
303 * @param {CodeMirror} editor - The codemirror instance bound to the cell
303 * @param {CodeMirror} editor - The codemirror instance bound to the cell
304 * @param {event} - key event to be handled
304 * @param {event} - key event to be handled
305 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
305 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
306 */
306 */
307 Cell.prototype.handle_keyevent = function (editor, event) {
307 Cell.prototype.handle_keyevent = function (editor, event) {
308 if (this.mode === 'command') {
308 if (this.mode === 'command') {
309 return true;
309 return true;
310 } else if (this.mode === 'edit') {
310 } else if (this.mode === 'edit') {
311 return this.handle_codemirror_keyevent(editor, event);
311 return this.handle_codemirror_keyevent(editor, event);
312 }
312 }
313 };
313 };
314
314
315 /**
315 /**
316 * @method at_top
316 * @method at_top
317 * @return {Boolean}
317 * @return {Boolean}
318 */
318 */
319 Cell.prototype.at_top = function () {
319 Cell.prototype.at_top = function () {
320 var cm = this.code_mirror;
320 var cm = this.code_mirror;
321 var cursor = cm.getCursor();
321 var cursor = cm.getCursor();
322 if (cursor.line === 0 && cursor.ch === 0) {
322 if (cursor.line === 0 && cursor.ch === 0) {
323 return true;
323 return true;
324 }
324 }
325 return false;
325 return false;
326 };
326 };
327
327
328 /**
328 /**
329 * @method at_bottom
329 * @method at_bottom
330 * @return {Boolean}
330 * @return {Boolean}
331 * */
331 * */
332 Cell.prototype.at_bottom = function () {
332 Cell.prototype.at_bottom = function () {
333 var cm = this.code_mirror;
333 var cm = this.code_mirror;
334 var cursor = cm.getCursor();
334 var cursor = cm.getCursor();
335 if (cursor.line === (cm.lineCount()-1) && cursor.ch === cm.getLine(cursor.line).length) {
335 if (cursor.line === (cm.lineCount()-1) && cursor.ch === cm.getLine(cursor.line).length) {
336 return true;
336 return true;
337 }
337 }
338 return false;
338 return false;
339 };
339 };
340
340
341 /**
341 /**
342 * enter the command mode for the cell
342 * enter the command mode for the cell
343 * @method command_mode
343 * @method command_mode
344 * @return is the action being taken
344 * @return is the action being taken
345 */
345 */
346 Cell.prototype.command_mode = function () {
346 Cell.prototype.command_mode = function () {
347 if (this.mode !== 'command') {
347 if (this.mode !== 'command') {
348 this.element.addClass('command_mode');
348 this.element.addClass('command_mode');
349 this.element.removeClass('edit_mode');
349 this.element.removeClass('edit_mode');
350 this.mode = 'command';
350 this.mode = 'command';
351 return true;
351 return true;
352 } else {
352 } else {
353 return false;
353 return false;
354 }
354 }
355 };
355 };
356
356
357 /**
357 /**
358 * enter the edit mode for the cell
358 * enter the edit mode for the cell
359 * @method command_mode
359 * @method command_mode
360 * @return is the action being taken
360 * @return is the action being taken
361 */
361 */
362 Cell.prototype.edit_mode = function () {
362 Cell.prototype.edit_mode = function () {
363 if (this.mode !== 'edit') {
363 if (this.mode !== 'edit') {
364 this.element.addClass('edit_mode');
364 this.element.addClass('edit_mode');
365 this.element.removeClass('command_mode');
365 this.element.removeClass('command_mode');
366 this.mode = 'edit';
366 this.mode = 'edit';
367 return true;
367 return true;
368 } else {
368 } else {
369 return false;
369 return false;
370 }
370 }
371 };
371 };
372
372
373 /**
373 /**
374 * Focus the cell in the DOM sense
374 * Focus the cell in the DOM sense
375 * @method focus_cell
375 * @method focus_cell
376 */
376 */
377 Cell.prototype.focus_cell = function () {
377 Cell.prototype.focus_cell = function () {
378 this.element.focus();
378 this.element.focus();
379 };
379 };
380
380
381 /**
381 /**
382 * Focus the editor area so a user can type
382 * Focus the editor area so a user can type
383 *
383 *
384 * NOTE: If codemirror is focused via a mouse click event, you don't want to
384 * NOTE: If codemirror is focused via a mouse click event, you don't want to
385 * call this because it will cause a page jump.
385 * call this because it will cause a page jump.
386 * @method focus_editor
386 * @method focus_editor
387 */
387 */
388 Cell.prototype.focus_editor = function () {
388 Cell.prototype.focus_editor = function () {
389 this.refresh();
389 this.refresh();
390 this.code_mirror.focus();
390 this.code_mirror.focus();
391 };
391 };
392
392
393 /**
393 /**
394 * Refresh codemirror instance
394 * Refresh codemirror instance
395 * @method refresh
395 * @method refresh
396 */
396 */
397 Cell.prototype.refresh = function () {
397 Cell.prototype.refresh = function () {
398 if (this.code_mirror) {
398 if (this.code_mirror) {
399 this.code_mirror.refresh();
399 this.code_mirror.refresh();
400 }
400 }
401 };
401 };
402
402
403 /**
403 /**
404 * should be overritten by subclass
404 * should be overritten by subclass
405 * @method get_text
405 * @method get_text
406 */
406 */
407 Cell.prototype.get_text = function () {
407 Cell.prototype.get_text = function () {
408 };
408 };
409
409
410 /**
410 /**
411 * should be overritten by subclass
411 * should be overritten by subclass
412 * @method set_text
412 * @method set_text
413 * @param {string} text
413 * @param {string} text
414 */
414 */
415 Cell.prototype.set_text = function (text) {
415 Cell.prototype.set_text = function (text) {
416 };
416 };
417
417
418 /**
418 /**
419 * should be overritten by subclass
419 * should be overritten by subclass
420 * serialise cell to json.
420 * serialise cell to json.
421 * @method toJSON
421 * @method toJSON
422 **/
422 **/
423 Cell.prototype.toJSON = function () {
423 Cell.prototype.toJSON = function () {
424 var data = {};
424 var data = {};
425 // deepcopy the metadata so copied cells don't share the same object
425 // deepcopy the metadata so copied cells don't share the same object
426 data.metadata = JSON.parse(JSON.stringify(this.metadata));
426 data.metadata = JSON.parse(JSON.stringify(this.metadata));
427 data.cell_type = this.cell_type;
427 data.cell_type = this.cell_type;
428 return data;
428 return data;
429 };
429 };
430
430
431 /**
431 /**
432 * should be overritten by subclass
432 * should be overritten by subclass
433 * @method fromJSON
433 * @method fromJSON
434 **/
434 **/
435 Cell.prototype.fromJSON = function (data) {
435 Cell.prototype.fromJSON = function (data) {
436 if (data.metadata !== undefined) {
436 if (data.metadata !== undefined) {
437 this.metadata = data.metadata;
437 this.metadata = data.metadata;
438 }
438 }
439 };
439 };
440
440
441
441
442 /**
442 /**
443 * can the cell be split into two cells (false if not deletable)
443 * can the cell be split into two cells (false if not deletable)
444 * @method is_splittable
444 * @method is_splittable
445 **/
445 **/
446 Cell.prototype.is_splittable = function () {
446 Cell.prototype.is_splittable = function () {
447 return this.is_deletable();
447 return this.is_deletable();
448 };
448 };
449
449
450
450
451 /**
451 /**
452 * can the cell be merged with other cells (false if not deletable)
452 * can the cell be merged with other cells (false if not deletable)
453 * @method is_mergeable
453 * @method is_mergeable
454 **/
454 **/
455 Cell.prototype.is_mergeable = function () {
455 Cell.prototype.is_mergeable = function () {
456 return this.is_deletable();
456 return this.is_deletable();
457 };
457 };
458
458
459 /**
459 /**
460 * is the cell deletable? only false (undeletable) if
460 * is the cell deletable? only false (undeletable) if
461 * metadata.deletable is explicitly false -- everything else
461 * metadata.deletable is explicitly false -- everything else
462 * counts as true
462 * counts as true
463 *
463 *
464 * @method is_deletable
464 * @method is_deletable
465 **/
465 **/
466 Cell.prototype.is_deletable = function () {
466 Cell.prototype.is_deletable = function () {
467 if (this.metadata.deletable === false) {
467 if (this.metadata.deletable === false) {
468 return false;
468 return false;
469 }
469 }
470 return true;
470 return true;
471 };
471 };
472
472
473 /**
473 /**
474 * @return {String} - the text before the cursor
474 * @return {String} - the text before the cursor
475 * @method get_pre_cursor
475 * @method get_pre_cursor
476 **/
476 **/
477 Cell.prototype.get_pre_cursor = function () {
477 Cell.prototype.get_pre_cursor = function () {
478 var cursor = this.code_mirror.getCursor();
478 var cursor = this.code_mirror.getCursor();
479 var text = this.code_mirror.getRange({line:0, ch:0}, cursor);
479 var text = this.code_mirror.getRange({line:0, ch:0}, cursor);
480 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
480 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
481 return text;
481 return text;
482 };
482 };
483
483
484
484
485 /**
485 /**
486 * @return {String} - the text after the cursor
486 * @return {String} - the text after the cursor
487 * @method get_post_cursor
487 * @method get_post_cursor
488 **/
488 **/
489 Cell.prototype.get_post_cursor = function () {
489 Cell.prototype.get_post_cursor = function () {
490 var cursor = this.code_mirror.getCursor();
490 var cursor = this.code_mirror.getCursor();
491 var last_line_num = this.code_mirror.lineCount()-1;
491 var last_line_num = this.code_mirror.lineCount()-1;
492 var last_line_len = this.code_mirror.getLine(last_line_num).length;
492 var last_line_len = this.code_mirror.getLine(last_line_num).length;
493 var end = {line:last_line_num, ch:last_line_len};
493 var end = {line:last_line_num, ch:last_line_len};
494 var text = this.code_mirror.getRange(cursor, end);
494 var text = this.code_mirror.getRange(cursor, end);
495 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
495 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
496 return text;
496 return text;
497 };
497 };
498
498
499 /**
499 /**
500 * Show/Hide CodeMirror LineNumber
500 * Show/Hide CodeMirror LineNumber
501 * @method show_line_numbers
501 * @method show_line_numbers
502 *
502 *
503 * @param value {Bool} show (true), or hide (false) the line number in CodeMirror
503 * @param value {Bool} show (true), or hide (false) the line number in CodeMirror
504 **/
504 **/
505 Cell.prototype.show_line_numbers = function (value) {
505 Cell.prototype.show_line_numbers = function (value) {
506 this.code_mirror.setOption('lineNumbers', value);
506 this.code_mirror.setOption('lineNumbers', value);
507 this.code_mirror.refresh();
507 this.code_mirror.refresh();
508 };
508 };
509
509
510 /**
510 /**
511 * Toggle CodeMirror LineNumber
511 * Toggle CodeMirror LineNumber
512 * @method toggle_line_numbers
512 * @method toggle_line_numbers
513 **/
513 **/
514 Cell.prototype.toggle_line_numbers = function () {
514 Cell.prototype.toggle_line_numbers = function () {
515 var val = this.code_mirror.getOption('lineNumbers');
515 var val = this.code_mirror.getOption('lineNumbers');
516 this.show_line_numbers(!val);
516 this.show_line_numbers(!val);
517 };
517 };
518
518
519 /**
519 /**
520 * Force codemirror highlight mode
520 * Force codemirror highlight mode
521 * @method force_highlight
521 * @method force_highlight
522 * @param {object} - CodeMirror mode
522 * @param {object} - CodeMirror mode
523 **/
523 **/
524 Cell.prototype.force_highlight = function(mode) {
524 Cell.prototype.force_highlight = function(mode) {
525 this.user_highlight = mode;
525 this.user_highlight = mode;
526 this.auto_highlight();
526 this.auto_highlight();
527 };
527 };
528
528
529 /**
529 /**
530 * Try to autodetect cell highlight mode, or use selected mode
530 * Try to autodetect cell highlight mode, or use selected mode
531 * @methods _auto_highlight
531 * @methods _auto_highlight
532 * @private
532 * @private
533 * @param {String|object|undefined} - CodeMirror mode | 'auto'
533 * @param {String|object|undefined} - CodeMirror mode | 'auto'
534 **/
534 **/
535 Cell.prototype._auto_highlight = function (modes) {
535 Cell.prototype._auto_highlight = function (modes) {
536 /**
536 /**
537 *Here we handle manually selected modes
537 *Here we handle manually selected modes
538 */
538 */
539 var that = this;
539 var that = this;
540 var mode;
540 var mode;
541 if( this.user_highlight !== undefined && this.user_highlight != 'auto' )
541 if( this.user_highlight !== undefined && this.user_highlight != 'auto' )
542 {
542 {
543 mode = this.user_highlight;
543 mode = this.user_highlight;
544 CodeMirror.autoLoadMode(this.code_mirror, mode);
544 CodeMirror.autoLoadMode(this.code_mirror, mode);
545 this.code_mirror.setOption('mode', mode);
545 this.code_mirror.setOption('mode', mode);
546 return;
546 return;
547 }
547 }
548 var current_mode = this.code_mirror.getOption('mode', mode);
548 var current_mode = this.code_mirror.getOption('mode', mode);
549 var first_line = this.code_mirror.getLine(0);
549 var first_line = this.code_mirror.getLine(0);
550 // loop on every pairs
550 // loop on every pairs
551 for(mode in modes) {
551 for(mode in modes) {
552 var regs = modes[mode].reg;
552 var regs = modes[mode].reg;
553 // only one key every time but regexp can't be keys...
553 // only one key every time but regexp can't be keys...
554 for(var i=0; i<regs.length; i++) {
554 for(var i=0; i<regs.length; i++) {
555 // here we handle non magic_modes
555 // here we handle non magic_modes
556 if(first_line.match(regs[i]) !== null) {
556 if(first_line.match(regs[i]) !== null) {
557 if(current_mode == mode){
557 if(current_mode == mode){
558 return;
558 return;
559 }
559 }
560 if (mode.search('magic_') !== 0) {
560 if (mode.search('magic_') !== 0) {
561 utils.requireCodeMirrorMode(mode, function () {
561 utils.requireCodeMirrorMode(mode, function (spec) {
562 that.code_mirror.setOption('mode', mode);
562 that.code_mirror.setOption('mode', spec);
563 });
563 });
564 return;
564 return;
565 }
565 }
566 var open = modes[mode].open || "%%";
566 var open = modes[mode].open || "%%";
567 var close = modes[mode].close || "%%end";
567 var close = modes[mode].close || "%%end";
568 var magic_mode = mode;
568 var magic_mode = mode;
569 mode = magic_mode.substr(6);
569 mode = magic_mode.substr(6);
570 if(current_mode == magic_mode){
570 if(current_mode == magic_mode){
571 return;
571 return;
572 }
572 }
573 utils.requireCodeMirrorMode(mode, function () {
573 utils.requireCodeMirrorMode(mode, function (spec) {
574 // create on the fly a mode that switch between
574 // create on the fly a mode that switch between
575 // plain/text and something else, otherwise `%%` is
575 // plain/text and something else, otherwise `%%` is
576 // source of some highlight issues.
576 // source of some highlight issues.
577 CodeMirror.defineMode(magic_mode, function(config) {
577 CodeMirror.defineMode(magic_mode, function(config) {
578 return CodeMirror.multiplexingMode(
578 return CodeMirror.multiplexingMode(
579 CodeMirror.getMode(config, 'text/plain'),
579 CodeMirror.getMode(config, 'text/plain'),
580 // always set something on close
580 // always set something on close
581 {open: open, close: close,
581 {open: open, close: close,
582 mode: CodeMirror.getMode(config, mode),
582 mode: CodeMirror.getMode(config, spec),
583 delimStyle: "delimit"
583 delimStyle: "delimit"
584 }
584 }
585 );
585 );
586 });
586 });
587 that.code_mirror.setOption('mode', magic_mode);
587 that.code_mirror.setOption('mode', magic_mode);
588 });
588 });
589 return;
589 return;
590 }
590 }
591 }
591 }
592 }
592 }
593 // fallback on default
593 // fallback on default
594 var default_mode;
594 var default_mode;
595 try {
595 try {
596 default_mode = this._options.cm_config.mode;
596 default_mode = this._options.cm_config.mode;
597 } catch(e) {
597 } catch(e) {
598 default_mode = 'text/plain';
598 default_mode = 'text/plain';
599 }
599 }
600 if( current_mode === default_mode){
600 if( current_mode === default_mode){
601 return;
601 return;
602 }
602 }
603 this.code_mirror.setOption('mode', default_mode);
603 this.code_mirror.setOption('mode', default_mode);
604 };
604 };
605
605
606 var UnrecognizedCell = function (options) {
606 var UnrecognizedCell = function (options) {
607 /** Constructor for unrecognized cells */
607 /** Constructor for unrecognized cells */
608 Cell.apply(this, arguments);
608 Cell.apply(this, arguments);
609 this.cell_type = 'unrecognized';
609 this.cell_type = 'unrecognized';
610 this.celltoolbar = null;
610 this.celltoolbar = null;
611 this.data = {};
611 this.data = {};
612
612
613 Object.seal(this);
613 Object.seal(this);
614 };
614 };
615
615
616 UnrecognizedCell.prototype = Object.create(Cell.prototype);
616 UnrecognizedCell.prototype = Object.create(Cell.prototype);
617
617
618
618
619 // cannot merge or split unrecognized cells
619 // cannot merge or split unrecognized cells
620 UnrecognizedCell.prototype.is_mergeable = function () {
620 UnrecognizedCell.prototype.is_mergeable = function () {
621 return false;
621 return false;
622 };
622 };
623
623
624 UnrecognizedCell.prototype.is_splittable = function () {
624 UnrecognizedCell.prototype.is_splittable = function () {
625 return false;
625 return false;
626 };
626 };
627
627
628 UnrecognizedCell.prototype.toJSON = function () {
628 UnrecognizedCell.prototype.toJSON = function () {
629 /**
629 /**
630 * deepcopy the metadata so copied cells don't share the same object
630 * deepcopy the metadata so copied cells don't share the same object
631 */
631 */
632 return JSON.parse(JSON.stringify(this.data));
632 return JSON.parse(JSON.stringify(this.data));
633 };
633 };
634
634
635 UnrecognizedCell.prototype.fromJSON = function (data) {
635 UnrecognizedCell.prototype.fromJSON = function (data) {
636 this.data = data;
636 this.data = data;
637 if (data.metadata !== undefined) {
637 if (data.metadata !== undefined) {
638 this.metadata = data.metadata;
638 this.metadata = data.metadata;
639 } else {
639 } else {
640 data.metadata = this.metadata;
640 data.metadata = this.metadata;
641 }
641 }
642 this.element.find('.inner_cell').find("a").text("Unrecognized cell type: " + data.cell_type);
642 this.element.find('.inner_cell').find("a").text("Unrecognized cell type: " + data.cell_type);
643 };
643 };
644
644
645 UnrecognizedCell.prototype.create_element = function () {
645 UnrecognizedCell.prototype.create_element = function () {
646 Cell.prototype.create_element.apply(this, arguments);
646 Cell.prototype.create_element.apply(this, arguments);
647 var cell = this.element = $("<div>").addClass('cell unrecognized_cell');
647 var cell = this.element = $("<div>").addClass('cell unrecognized_cell');
648 cell.attr('tabindex','2');
648 cell.attr('tabindex','2');
649
649
650 var prompt = $('<div/>').addClass('prompt input_prompt');
650 var prompt = $('<div/>').addClass('prompt input_prompt');
651 cell.append(prompt);
651 cell.append(prompt);
652 var inner_cell = $('<div/>').addClass('inner_cell');
652 var inner_cell = $('<div/>').addClass('inner_cell');
653 inner_cell.append(
653 inner_cell.append(
654 $("<a>")
654 $("<a>")
655 .attr("href", "#")
655 .attr("href", "#")
656 .text("Unrecognized cell type")
656 .text("Unrecognized cell type")
657 );
657 );
658 cell.append(inner_cell);
658 cell.append(inner_cell);
659 this.element = cell;
659 this.element = cell;
660 };
660 };
661
661
662 UnrecognizedCell.prototype.bind_events = function () {
662 UnrecognizedCell.prototype.bind_events = function () {
663 Cell.prototype.bind_events.apply(this, arguments);
663 Cell.prototype.bind_events.apply(this, arguments);
664 var cell = this;
664 var cell = this;
665
665
666 this.element.find('.inner_cell').find("a").click(function () {
666 this.element.find('.inner_cell').find("a").click(function () {
667 cell.events.trigger('unrecognized_cell.Cell', {cell: cell})
667 cell.events.trigger('unrecognized_cell.Cell', {cell: cell})
668 });
668 });
669 };
669 };
670
670
671 // Backwards compatibility.
671 // Backwards compatibility.
672 IPython.Cell = Cell;
672 IPython.Cell = Cell;
673
673
674 return {
674 return {
675 Cell: Cell,
675 Cell: Cell,
676 UnrecognizedCell: UnrecognizedCell
676 UnrecognizedCell: UnrecognizedCell
677 };
677 };
678 });
678 });
@@ -1,2527 +1,2526 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 'base/js/namespace',
5 'base/js/namespace',
6 'jquery',
6 'jquery',
7 'base/js/utils',
7 'base/js/utils',
8 'base/js/dialog',
8 'base/js/dialog',
9 'notebook/js/cell',
9 'notebook/js/cell',
10 'notebook/js/textcell',
10 'notebook/js/textcell',
11 'notebook/js/codecell',
11 'notebook/js/codecell',
12 'services/sessions/session',
12 'services/sessions/session',
13 'notebook/js/celltoolbar',
13 'notebook/js/celltoolbar',
14 'components/marked/lib/marked',
14 'components/marked/lib/marked',
15 'codemirror/lib/codemirror',
15 'codemirror/lib/codemirror',
16 'codemirror/addon/runmode/runmode',
16 'codemirror/addon/runmode/runmode',
17 'notebook/js/mathjaxutils',
17 'notebook/js/mathjaxutils',
18 'base/js/keyboard',
18 'base/js/keyboard',
19 'notebook/js/tooltip',
19 'notebook/js/tooltip',
20 'notebook/js/celltoolbarpresets/default',
20 'notebook/js/celltoolbarpresets/default',
21 'notebook/js/celltoolbarpresets/rawcell',
21 'notebook/js/celltoolbarpresets/rawcell',
22 'notebook/js/celltoolbarpresets/slideshow',
22 'notebook/js/celltoolbarpresets/slideshow',
23 'notebook/js/scrollmanager'
23 'notebook/js/scrollmanager'
24 ], function (
24 ], function (
25 IPython,
25 IPython,
26 $,
26 $,
27 utils,
27 utils,
28 dialog,
28 dialog,
29 cellmod,
29 cellmod,
30 textcell,
30 textcell,
31 codecell,
31 codecell,
32 session,
32 session,
33 celltoolbar,
33 celltoolbar,
34 marked,
34 marked,
35 CodeMirror,
35 CodeMirror,
36 runMode,
36 runMode,
37 mathjaxutils,
37 mathjaxutils,
38 keyboard,
38 keyboard,
39 tooltip,
39 tooltip,
40 default_celltoolbar,
40 default_celltoolbar,
41 rawcell_celltoolbar,
41 rawcell_celltoolbar,
42 slideshow_celltoolbar,
42 slideshow_celltoolbar,
43 scrollmanager
43 scrollmanager
44 ) {
44 ) {
45 "use strict";
45 "use strict";
46
46
47 var Notebook = function (selector, options) {
47 var Notebook = function (selector, options) {
48 /**
48 /**
49 * Constructor
49 * Constructor
50 *
50 *
51 * A notebook contains and manages cells.
51 * A notebook contains and manages cells.
52 *
52 *
53 * Parameters:
53 * Parameters:
54 * selector: string
54 * selector: string
55 * options: dictionary
55 * options: dictionary
56 * Dictionary of keyword arguments.
56 * Dictionary of keyword arguments.
57 * events: $(Events) instance
57 * events: $(Events) instance
58 * keyboard_manager: KeyboardManager instance
58 * keyboard_manager: KeyboardManager instance
59 * contents: Contents instance
59 * contents: Contents instance
60 * save_widget: SaveWidget instance
60 * save_widget: SaveWidget instance
61 * config: dictionary
61 * config: dictionary
62 * base_url : string
62 * base_url : string
63 * notebook_path : string
63 * notebook_path : string
64 * notebook_name : string
64 * notebook_name : string
65 */
65 */
66 this.config = utils.mergeopt(Notebook, options.config);
66 this.config = utils.mergeopt(Notebook, options.config);
67 this.base_url = options.base_url;
67 this.base_url = options.base_url;
68 this.notebook_path = options.notebook_path;
68 this.notebook_path = options.notebook_path;
69 this.notebook_name = options.notebook_name;
69 this.notebook_name = options.notebook_name;
70 this.events = options.events;
70 this.events = options.events;
71 this.keyboard_manager = options.keyboard_manager;
71 this.keyboard_manager = options.keyboard_manager;
72 this.contents = options.contents;
72 this.contents = options.contents;
73 this.save_widget = options.save_widget;
73 this.save_widget = options.save_widget;
74 this.tooltip = new tooltip.Tooltip(this.events);
74 this.tooltip = new tooltip.Tooltip(this.events);
75 this.ws_url = options.ws_url;
75 this.ws_url = options.ws_url;
76 this._session_starting = false;
76 this._session_starting = false;
77 this.default_cell_type = this.config.default_cell_type || 'code';
77 this.default_cell_type = this.config.default_cell_type || 'code';
78
78
79 // Create default scroll manager.
79 // Create default scroll manager.
80 this.scroll_manager = new scrollmanager.ScrollManager(this);
80 this.scroll_manager = new scrollmanager.ScrollManager(this);
81
81
82 // TODO: This code smells (and the other `= this` line a couple lines down)
82 // TODO: This code smells (and the other `= this` line a couple lines down)
83 // We need a better way to deal with circular instance references.
83 // We need a better way to deal with circular instance references.
84 this.keyboard_manager.notebook = this;
84 this.keyboard_manager.notebook = this;
85 this.save_widget.notebook = this;
85 this.save_widget.notebook = this;
86
86
87 mathjaxutils.init();
87 mathjaxutils.init();
88
88
89 if (marked) {
89 if (marked) {
90 marked.setOptions({
90 marked.setOptions({
91 gfm : true,
91 gfm : true,
92 tables: true,
92 tables: true,
93 // FIXME: probably want central config for CodeMirror theme when we have js config
93 // FIXME: probably want central config for CodeMirror theme when we have js config
94 langPrefix: "cm-s-ipython language-",
94 langPrefix: "cm-s-ipython language-",
95 highlight: function(code, lang, callback) {
95 highlight: function(code, lang, callback) {
96 if (!lang) {
96 if (!lang) {
97 // no language, no highlight
97 // no language, no highlight
98 if (callback) {
98 if (callback) {
99 callback(null, code);
99 callback(null, code);
100 return;
100 return;
101 } else {
101 } else {
102 return code;
102 return code;
103 }
103 }
104 }
104 }
105 utils.requireCodeMirrorMode(lang, function () {
105 utils.requireCodeMirrorMode(lang, function (spec) {
106 var el = document.createElement("div");
106 var el = document.createElement("div");
107 var mode = CodeMirror.getMode({}, lang);
107 var mode = CodeMirror.getMode({}, spec);
108 if (!mode) {
108 if (!mode) {
109 console.log("No CodeMirror mode: " + lang);
109 console.log("No CodeMirror mode: " + lang);
110 callback(null, code);
110 callback(null, code);
111 return;
111 return;
112 }
112 }
113 try {
113 try {
114 CodeMirror.runMode(code, mode, el);
114 CodeMirror.runMode(code, spec, el);
115 callback(null, el.innerHTML);
115 callback(null, el.innerHTML);
116 } catch (err) {
116 } catch (err) {
117 console.log("Failed to highlight " + lang + " code", err);
117 console.log("Failed to highlight " + lang + " code", err);
118 callback(err, code);
118 callback(err, code);
119 }
119 }
120 }, function (err) {
120 }, function (err) {
121 console.log("No CodeMirror mode: " + lang);
121 console.log("No CodeMirror mode: " + lang);
122 callback(err, code);
122 callback(err, code);
123 });
123 });
124 }
124 }
125 });
125 });
126 }
126 }
127
127
128 this.element = $(selector);
128 this.element = $(selector);
129 this.element.scroll();
129 this.element.scroll();
130 this.element.data("notebook", this);
130 this.element.data("notebook", this);
131 this.next_prompt_number = 1;
131 this.next_prompt_number = 1;
132 this.session = null;
132 this.session = null;
133 this.kernel = null;
133 this.kernel = null;
134 this.clipboard = null;
134 this.clipboard = null;
135 this.undelete_backup = null;
135 this.undelete_backup = null;
136 this.undelete_index = null;
136 this.undelete_index = null;
137 this.undelete_below = false;
137 this.undelete_below = false;
138 this.paste_enabled = false;
138 this.paste_enabled = false;
139 this.writable = false;
139 this.writable = false;
140 // It is important to start out in command mode to match the intial mode
140 // It is important to start out in command mode to match the intial mode
141 // of the KeyboardManager.
141 // of the KeyboardManager.
142 this.mode = 'command';
142 this.mode = 'command';
143 this.set_dirty(false);
143 this.set_dirty(false);
144 this.metadata = {};
144 this.metadata = {};
145 this._checkpoint_after_save = false;
145 this._checkpoint_after_save = false;
146 this.last_checkpoint = null;
146 this.last_checkpoint = null;
147 this.checkpoints = [];
147 this.checkpoints = [];
148 this.autosave_interval = 0;
148 this.autosave_interval = 0;
149 this.autosave_timer = null;
149 this.autosave_timer = null;
150 // autosave *at most* every two minutes
150 // autosave *at most* every two minutes
151 this.minimum_autosave_interval = 120000;
151 this.minimum_autosave_interval = 120000;
152 this.notebook_name_blacklist_re = /[\/\\:]/;
152 this.notebook_name_blacklist_re = /[\/\\:]/;
153 this.nbformat = 4; // Increment this when changing the nbformat
153 this.nbformat = 4; // Increment this when changing the nbformat
154 this.nbformat_minor = this.current_nbformat_minor = 0; // Increment this when changing the nbformat
154 this.nbformat_minor = this.current_nbformat_minor = 0; // Increment this when changing the nbformat
155 this.codemirror_mode = 'ipython';
155 this.codemirror_mode = 'ipython';
156 this.create_elements();
156 this.create_elements();
157 this.bind_events();
157 this.bind_events();
158 this.kernel_selector = null;
158 this.kernel_selector = null;
159 this.dirty = null;
159 this.dirty = null;
160 this.trusted = null;
160 this.trusted = null;
161 this._fully_loaded = false;
161 this._fully_loaded = false;
162
162
163 // Trigger cell toolbar registration.
163 // Trigger cell toolbar registration.
164 default_celltoolbar.register(this);
164 default_celltoolbar.register(this);
165 rawcell_celltoolbar.register(this);
165 rawcell_celltoolbar.register(this);
166 slideshow_celltoolbar.register(this);
166 slideshow_celltoolbar.register(this);
167
167
168 // prevent assign to miss-typed properties.
168 // prevent assign to miss-typed properties.
169 Object.seal(this);
169 Object.seal(this);
170 };
170 };
171
171
172 Notebook.options_default = {
172 Notebook.options_default = {
173 // can be any cell type, or the special values of
173 // can be any cell type, or the special values of
174 // 'above', 'below', or 'selected' to get the value from another cell.
174 // 'above', 'below', or 'selected' to get the value from another cell.
175 Notebook: {
175 Notebook: {
176 default_cell_type: 'code'
176 default_cell_type: 'code'
177 }
177 }
178 };
178 };
179
179
180
180
181 /**
181 /**
182 * Create an HTML and CSS representation of the notebook.
182 * Create an HTML and CSS representation of the notebook.
183 *
183 *
184 * @method create_elements
184 * @method create_elements
185 */
185 */
186 Notebook.prototype.create_elements = function () {
186 Notebook.prototype.create_elements = function () {
187 var that = this;
187 var that = this;
188 this.element.attr('tabindex','-1');
188 this.element.attr('tabindex','-1');
189 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
189 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
190 // We add this end_space div to the end of the notebook div to:
190 // We add this end_space div to the end of the notebook div to:
191 // i) provide a margin between the last cell and the end of the notebook
191 // i) provide a margin between the last cell and the end of the notebook
192 // ii) to prevent the div from scrolling up when the last cell is being
192 // ii) to prevent the div from scrolling up when the last cell is being
193 // edited, but is too low on the page, which browsers will do automatically.
193 // edited, but is too low on the page, which browsers will do automatically.
194 var end_space = $('<div/>').addClass('end_space');
194 var end_space = $('<div/>').addClass('end_space');
195 end_space.dblclick(function (e) {
195 end_space.dblclick(function (e) {
196 var ncells = that.ncells();
196 var ncells = that.ncells();
197 that.insert_cell_below('code',ncells-1);
197 that.insert_cell_below('code',ncells-1);
198 });
198 });
199 this.element.append(this.container);
199 this.element.append(this.container);
200 this.container.append(end_space);
200 this.container.append(end_space);
201 };
201 };
202
202
203 /**
203 /**
204 * Bind JavaScript events: key presses and custom IPython events.
204 * Bind JavaScript events: key presses and custom IPython events.
205 *
205 *
206 * @method bind_events
206 * @method bind_events
207 */
207 */
208 Notebook.prototype.bind_events = function () {
208 Notebook.prototype.bind_events = function () {
209 var that = this;
209 var that = this;
210
210
211 this.events.on('set_next_input.Notebook', function (event, data) {
211 this.events.on('set_next_input.Notebook', function (event, data) {
212 if (data.replace) {
212 if (data.replace) {
213 data.cell.set_text(data.text);
213 data.cell.set_text(data.text);
214 data.cell.clear_output();
214 data.cell.clear_output();
215 } else {
215 } else {
216 var index = that.find_cell_index(data.cell);
216 var index = that.find_cell_index(data.cell);
217 var new_cell = that.insert_cell_below('code',index);
217 var new_cell = that.insert_cell_below('code',index);
218 new_cell.set_text(data.text);
218 new_cell.set_text(data.text);
219 }
219 }
220 that.dirty = true;
220 that.dirty = true;
221 });
221 });
222
222
223 this.events.on('unrecognized_cell.Cell', function () {
223 this.events.on('unrecognized_cell.Cell', function () {
224 that.warn_nbformat_minor();
224 that.warn_nbformat_minor();
225 });
225 });
226
226
227 this.events.on('unrecognized_output.OutputArea', function () {
227 this.events.on('unrecognized_output.OutputArea', function () {
228 that.warn_nbformat_minor();
228 that.warn_nbformat_minor();
229 });
229 });
230
230
231 this.events.on('set_dirty.Notebook', function (event, data) {
231 this.events.on('set_dirty.Notebook', function (event, data) {
232 that.dirty = data.value;
232 that.dirty = data.value;
233 });
233 });
234
234
235 this.events.on('trust_changed.Notebook', function (event, trusted) {
235 this.events.on('trust_changed.Notebook', function (event, trusted) {
236 that.trusted = trusted;
236 that.trusted = trusted;
237 });
237 });
238
238
239 this.events.on('select.Cell', function (event, data) {
239 this.events.on('select.Cell', function (event, data) {
240 var index = that.find_cell_index(data.cell);
240 var index = that.find_cell_index(data.cell);
241 that.select(index);
241 that.select(index);
242 });
242 });
243
243
244 this.events.on('edit_mode.Cell', function (event, data) {
244 this.events.on('edit_mode.Cell', function (event, data) {
245 that.handle_edit_mode(data.cell);
245 that.handle_edit_mode(data.cell);
246 });
246 });
247
247
248 this.events.on('command_mode.Cell', function (event, data) {
248 this.events.on('command_mode.Cell', function (event, data) {
249 that.handle_command_mode(data.cell);
249 that.handle_command_mode(data.cell);
250 });
250 });
251
251
252 this.events.on('spec_changed.Kernel', function(event, data) {
252 this.events.on('spec_changed.Kernel', function(event, data) {
253 that.metadata.kernelspec =
253 that.metadata.kernelspec =
254 {name: data.name, display_name: data.display_name};
254 {name: data.name, display_name: data.display_name};
255 });
255 });
256
256
257 this.events.on('kernel_ready.Kernel', function(event, data) {
257 this.events.on('kernel_ready.Kernel', function(event, data) {
258 var kinfo = data.kernel.info_reply;
258 var kinfo = data.kernel.info_reply;
259 var langinfo = kinfo.language_info || {};
259 var langinfo = kinfo.language_info || {};
260 that.metadata.language_info = langinfo;
260 that.metadata.language_info = langinfo;
261 // Mode 'null' should be plain, unhighlighted text.
261 // Mode 'null' should be plain, unhighlighted text.
262 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
262 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
263 that.set_codemirror_mode(cm_mode);
263 that.set_codemirror_mode(cm_mode);
264 });
264 });
265
265
266 var collapse_time = function (time) {
266 var collapse_time = function (time) {
267 var app_height = $('#ipython-main-app').height(); // content height
267 var app_height = $('#ipython-main-app').height(); // content height
268 var splitter_height = $('div#pager_splitter').outerHeight(true);
268 var splitter_height = $('div#pager_splitter').outerHeight(true);
269 var new_height = app_height - splitter_height;
269 var new_height = app_height - splitter_height;
270 that.element.animate({height : new_height + 'px'}, time);
270 that.element.animate({height : new_height + 'px'}, time);
271 };
271 };
272
272
273 this.element.bind('collapse_pager', function (event, extrap) {
273 this.element.bind('collapse_pager', function (event, extrap) {
274 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
274 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
275 collapse_time(time);
275 collapse_time(time);
276 });
276 });
277
277
278 var expand_time = function (time) {
278 var expand_time = function (time) {
279 var app_height = $('#ipython-main-app').height(); // content height
279 var app_height = $('#ipython-main-app').height(); // content height
280 var splitter_height = $('div#pager_splitter').outerHeight(true);
280 var splitter_height = $('div#pager_splitter').outerHeight(true);
281 var pager_height = $('div#pager').outerHeight(true);
281 var pager_height = $('div#pager').outerHeight(true);
282 var new_height = app_height - pager_height - splitter_height;
282 var new_height = app_height - pager_height - splitter_height;
283 that.element.animate({height : new_height + 'px'}, time);
283 that.element.animate({height : new_height + 'px'}, time);
284 };
284 };
285
285
286 this.element.bind('expand_pager', function (event, extrap) {
286 this.element.bind('expand_pager', function (event, extrap) {
287 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
287 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
288 expand_time(time);
288 expand_time(time);
289 });
289 });
290
290
291 // Firefox 22 broke $(window).on("beforeunload")
291 // Firefox 22 broke $(window).on("beforeunload")
292 // I'm not sure why or how.
292 // I'm not sure why or how.
293 window.onbeforeunload = function (e) {
293 window.onbeforeunload = function (e) {
294 // TODO: Make killing the kernel configurable.
294 // TODO: Make killing the kernel configurable.
295 var kill_kernel = false;
295 var kill_kernel = false;
296 if (kill_kernel) {
296 if (kill_kernel) {
297 that.session.delete();
297 that.session.delete();
298 }
298 }
299 // if we are autosaving, trigger an autosave on nav-away.
299 // if we are autosaving, trigger an autosave on nav-away.
300 // still warn, because if we don't the autosave may fail.
300 // still warn, because if we don't the autosave may fail.
301 if (that.dirty) {
301 if (that.dirty) {
302 if ( that.autosave_interval ) {
302 if ( that.autosave_interval ) {
303 // schedule autosave in a timeout
303 // schedule autosave in a timeout
304 // this gives you a chance to forcefully discard changes
304 // this gives you a chance to forcefully discard changes
305 // by reloading the page if you *really* want to.
305 // by reloading the page if you *really* want to.
306 // the timer doesn't start until you *dismiss* the dialog.
306 // the timer doesn't start until you *dismiss* the dialog.
307 setTimeout(function () {
307 setTimeout(function () {
308 if (that.dirty) {
308 if (that.dirty) {
309 that.save_notebook();
309 that.save_notebook();
310 }
310 }
311 }, 1000);
311 }, 1000);
312 return "Autosave in progress, latest changes may be lost.";
312 return "Autosave in progress, latest changes may be lost.";
313 } else {
313 } else {
314 return "Unsaved changes will be lost.";
314 return "Unsaved changes will be lost.";
315 }
315 }
316 }
316 }
317 // Null is the *only* return value that will make the browser not
317 // Null is the *only* return value that will make the browser not
318 // pop up the "don't leave" dialog.
318 // pop up the "don't leave" dialog.
319 return null;
319 return null;
320 };
320 };
321 };
321 };
322
322
323 Notebook.prototype.warn_nbformat_minor = function (event) {
323 Notebook.prototype.warn_nbformat_minor = function (event) {
324 /**
324 /**
325 * trigger a warning dialog about missing functionality from newer minor versions
325 * trigger a warning dialog about missing functionality from newer minor versions
326 */
326 */
327 var v = 'v' + this.nbformat + '.';
327 var v = 'v' + this.nbformat + '.';
328 var orig_vs = v + this.nbformat_minor;
328 var orig_vs = v + this.nbformat_minor;
329 var this_vs = v + this.current_nbformat_minor;
329 var this_vs = v + this.current_nbformat_minor;
330 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
330 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
331 this_vs + ". You can still work with this notebook, but cell and output types " +
331 this_vs + ". You can still work with this notebook, but cell and output types " +
332 "introduced in later notebook versions will not be available.";
332 "introduced in later notebook versions will not be available.";
333
333
334 dialog.modal({
334 dialog.modal({
335 notebook: this,
335 notebook: this,
336 keyboard_manager: this.keyboard_manager,
336 keyboard_manager: this.keyboard_manager,
337 title : "Newer Notebook",
337 title : "Newer Notebook",
338 body : msg,
338 body : msg,
339 buttons : {
339 buttons : {
340 OK : {
340 OK : {
341 "class" : "btn-danger"
341 "class" : "btn-danger"
342 }
342 }
343 }
343 }
344 });
344 });
345 }
345 }
346
346
347 /**
347 /**
348 * Set the dirty flag, and trigger the set_dirty.Notebook event
348 * Set the dirty flag, and trigger the set_dirty.Notebook event
349 *
349 *
350 * @method set_dirty
350 * @method set_dirty
351 */
351 */
352 Notebook.prototype.set_dirty = function (value) {
352 Notebook.prototype.set_dirty = function (value) {
353 if (value === undefined) {
353 if (value === undefined) {
354 value = true;
354 value = true;
355 }
355 }
356 if (this.dirty == value) {
356 if (this.dirty == value) {
357 return;
357 return;
358 }
358 }
359 this.events.trigger('set_dirty.Notebook', {value: value});
359 this.events.trigger('set_dirty.Notebook', {value: value});
360 };
360 };
361
361
362 /**
362 /**
363 * Scroll the top of the page to a given cell.
363 * Scroll the top of the page to a given cell.
364 *
364 *
365 * @method scroll_to_cell
365 * @method scroll_to_cell
366 * @param {Number} cell_number An index of the cell to view
366 * @param {Number} cell_number An index of the cell to view
367 * @param {Number} time Animation time in milliseconds
367 * @param {Number} time Animation time in milliseconds
368 * @return {Number} Pixel offset from the top of the container
368 * @return {Number} Pixel offset from the top of the container
369 */
369 */
370 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
370 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
371 var cells = this.get_cells();
371 var cells = this.get_cells();
372 time = time || 0;
372 time = time || 0;
373 cell_number = Math.min(cells.length-1,cell_number);
373 cell_number = Math.min(cells.length-1,cell_number);
374 cell_number = Math.max(0 ,cell_number);
374 cell_number = Math.max(0 ,cell_number);
375 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
375 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
376 this.element.animate({scrollTop:scroll_value}, time);
376 this.element.animate({scrollTop:scroll_value}, time);
377 return scroll_value;
377 return scroll_value;
378 };
378 };
379
379
380 /**
380 /**
381 * Scroll to the bottom of the page.
381 * Scroll to the bottom of the page.
382 *
382 *
383 * @method scroll_to_bottom
383 * @method scroll_to_bottom
384 */
384 */
385 Notebook.prototype.scroll_to_bottom = function () {
385 Notebook.prototype.scroll_to_bottom = function () {
386 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
386 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
387 };
387 };
388
388
389 /**
389 /**
390 * Scroll to the top of the page.
390 * Scroll to the top of the page.
391 *
391 *
392 * @method scroll_to_top
392 * @method scroll_to_top
393 */
393 */
394 Notebook.prototype.scroll_to_top = function () {
394 Notebook.prototype.scroll_to_top = function () {
395 this.element.animate({scrollTop:0}, 0);
395 this.element.animate({scrollTop:0}, 0);
396 };
396 };
397
397
398 // Edit Notebook metadata
398 // Edit Notebook metadata
399
399
400 Notebook.prototype.edit_metadata = function () {
400 Notebook.prototype.edit_metadata = function () {
401 var that = this;
401 var that = this;
402 dialog.edit_metadata({
402 dialog.edit_metadata({
403 md: this.metadata,
403 md: this.metadata,
404 callback: function (md) {
404 callback: function (md) {
405 that.metadata = md;
405 that.metadata = md;
406 },
406 },
407 name: 'Notebook',
407 name: 'Notebook',
408 notebook: this,
408 notebook: this,
409 keyboard_manager: this.keyboard_manager});
409 keyboard_manager: this.keyboard_manager});
410 };
410 };
411
411
412 // Cell indexing, retrieval, etc.
412 // Cell indexing, retrieval, etc.
413
413
414 /**
414 /**
415 * Get all cell elements in the notebook.
415 * Get all cell elements in the notebook.
416 *
416 *
417 * @method get_cell_elements
417 * @method get_cell_elements
418 * @return {jQuery} A selector of all cell elements
418 * @return {jQuery} A selector of all cell elements
419 */
419 */
420 Notebook.prototype.get_cell_elements = function () {
420 Notebook.prototype.get_cell_elements = function () {
421 return this.container.find(".cell").not('.cell .cell');
421 return this.container.find(".cell").not('.cell .cell');
422 };
422 };
423
423
424 /**
424 /**
425 * Get a particular cell element.
425 * Get a particular cell element.
426 *
426 *
427 * @method get_cell_element
427 * @method get_cell_element
428 * @param {Number} index An index of a cell to select
428 * @param {Number} index An index of a cell to select
429 * @return {jQuery} A selector of the given cell.
429 * @return {jQuery} A selector of the given cell.
430 */
430 */
431 Notebook.prototype.get_cell_element = function (index) {
431 Notebook.prototype.get_cell_element = function (index) {
432 var result = null;
432 var result = null;
433 var e = this.get_cell_elements().eq(index);
433 var e = this.get_cell_elements().eq(index);
434 if (e.length !== 0) {
434 if (e.length !== 0) {
435 result = e;
435 result = e;
436 }
436 }
437 return result;
437 return result;
438 };
438 };
439
439
440 /**
440 /**
441 * Try to get a particular cell by msg_id.
441 * Try to get a particular cell by msg_id.
442 *
442 *
443 * @method get_msg_cell
443 * @method get_msg_cell
444 * @param {String} msg_id A message UUID
444 * @param {String} msg_id A message UUID
445 * @return {Cell} Cell or null if no cell was found.
445 * @return {Cell} Cell or null if no cell was found.
446 */
446 */
447 Notebook.prototype.get_msg_cell = function (msg_id) {
447 Notebook.prototype.get_msg_cell = function (msg_id) {
448 return codecell.CodeCell.msg_cells[msg_id] || null;
448 return codecell.CodeCell.msg_cells[msg_id] || null;
449 };
449 };
450
450
451 /**
451 /**
452 * Count the cells in this notebook.
452 * Count the cells in this notebook.
453 *
453 *
454 * @method ncells
454 * @method ncells
455 * @return {Number} The number of cells in this notebook
455 * @return {Number} The number of cells in this notebook
456 */
456 */
457 Notebook.prototype.ncells = function () {
457 Notebook.prototype.ncells = function () {
458 return this.get_cell_elements().length;
458 return this.get_cell_elements().length;
459 };
459 };
460
460
461 /**
461 /**
462 * Get all Cell objects in this notebook.
462 * Get all Cell objects in this notebook.
463 *
463 *
464 * @method get_cells
464 * @method get_cells
465 * @return {Array} This notebook's Cell objects
465 * @return {Array} This notebook's Cell objects
466 */
466 */
467 // TODO: we are often calling cells as cells()[i], which we should optimize
467 // TODO: we are often calling cells as cells()[i], which we should optimize
468 // to cells(i) or a new method.
468 // to cells(i) or a new method.
469 Notebook.prototype.get_cells = function () {
469 Notebook.prototype.get_cells = function () {
470 return this.get_cell_elements().toArray().map(function (e) {
470 return this.get_cell_elements().toArray().map(function (e) {
471 return $(e).data("cell");
471 return $(e).data("cell");
472 });
472 });
473 };
473 };
474
474
475 /**
475 /**
476 * Get a Cell object from this notebook.
476 * Get a Cell object from this notebook.
477 *
477 *
478 * @method get_cell
478 * @method get_cell
479 * @param {Number} index An index of a cell to retrieve
479 * @param {Number} index An index of a cell to retrieve
480 * @return {Cell} Cell or null if no cell was found.
480 * @return {Cell} Cell or null if no cell was found.
481 */
481 */
482 Notebook.prototype.get_cell = function (index) {
482 Notebook.prototype.get_cell = function (index) {
483 var result = null;
483 var result = null;
484 var ce = this.get_cell_element(index);
484 var ce = this.get_cell_element(index);
485 if (ce !== null) {
485 if (ce !== null) {
486 result = ce.data('cell');
486 result = ce.data('cell');
487 }
487 }
488 return result;
488 return result;
489 };
489 };
490
490
491 /**
491 /**
492 * Get the cell below a given cell.
492 * Get the cell below a given cell.
493 *
493 *
494 * @method get_next_cell
494 * @method get_next_cell
495 * @param {Cell} cell The provided cell
495 * @param {Cell} cell The provided cell
496 * @return {Cell} the next cell or null if no cell was found.
496 * @return {Cell} the next cell or null if no cell was found.
497 */
497 */
498 Notebook.prototype.get_next_cell = function (cell) {
498 Notebook.prototype.get_next_cell = function (cell) {
499 var result = null;
499 var result = null;
500 var index = this.find_cell_index(cell);
500 var index = this.find_cell_index(cell);
501 if (this.is_valid_cell_index(index+1)) {
501 if (this.is_valid_cell_index(index+1)) {
502 result = this.get_cell(index+1);
502 result = this.get_cell(index+1);
503 }
503 }
504 return result;
504 return result;
505 };
505 };
506
506
507 /**
507 /**
508 * Get the cell above a given cell.
508 * Get the cell above a given cell.
509 *
509 *
510 * @method get_prev_cell
510 * @method get_prev_cell
511 * @param {Cell} cell The provided cell
511 * @param {Cell} cell The provided cell
512 * @return {Cell} The previous cell or null if no cell was found.
512 * @return {Cell} The previous cell or null if no cell was found.
513 */
513 */
514 Notebook.prototype.get_prev_cell = function (cell) {
514 Notebook.prototype.get_prev_cell = function (cell) {
515 var result = null;
515 var result = null;
516 var index = this.find_cell_index(cell);
516 var index = this.find_cell_index(cell);
517 if (index !== null && index > 0) {
517 if (index !== null && index > 0) {
518 result = this.get_cell(index-1);
518 result = this.get_cell(index-1);
519 }
519 }
520 return result;
520 return result;
521 };
521 };
522
522
523 /**
523 /**
524 * Get the numeric index of a given cell.
524 * Get the numeric index of a given cell.
525 *
525 *
526 * @method find_cell_index
526 * @method find_cell_index
527 * @param {Cell} cell The provided cell
527 * @param {Cell} cell The provided cell
528 * @return {Number} The cell's numeric index or null if no cell was found.
528 * @return {Number} The cell's numeric index or null if no cell was found.
529 */
529 */
530 Notebook.prototype.find_cell_index = function (cell) {
530 Notebook.prototype.find_cell_index = function (cell) {
531 var result = null;
531 var result = null;
532 this.get_cell_elements().filter(function (index) {
532 this.get_cell_elements().filter(function (index) {
533 if ($(this).data("cell") === cell) {
533 if ($(this).data("cell") === cell) {
534 result = index;
534 result = index;
535 }
535 }
536 });
536 });
537 return result;
537 return result;
538 };
538 };
539
539
540 /**
540 /**
541 * Get a given index , or the selected index if none is provided.
541 * Get a given index , or the selected index if none is provided.
542 *
542 *
543 * @method index_or_selected
543 * @method index_or_selected
544 * @param {Number} index A cell's index
544 * @param {Number} index A cell's index
545 * @return {Number} The given index, or selected index if none is provided.
545 * @return {Number} The given index, or selected index if none is provided.
546 */
546 */
547 Notebook.prototype.index_or_selected = function (index) {
547 Notebook.prototype.index_or_selected = function (index) {
548 var i;
548 var i;
549 if (index === undefined || index === null) {
549 if (index === undefined || index === null) {
550 i = this.get_selected_index();
550 i = this.get_selected_index();
551 if (i === null) {
551 if (i === null) {
552 i = 0;
552 i = 0;
553 }
553 }
554 } else {
554 } else {
555 i = index;
555 i = index;
556 }
556 }
557 return i;
557 return i;
558 };
558 };
559
559
560 /**
560 /**
561 * Get the currently selected cell.
561 * Get the currently selected cell.
562 * @method get_selected_cell
562 * @method get_selected_cell
563 * @return {Cell} The selected cell
563 * @return {Cell} The selected cell
564 */
564 */
565 Notebook.prototype.get_selected_cell = function () {
565 Notebook.prototype.get_selected_cell = function () {
566 var index = this.get_selected_index();
566 var index = this.get_selected_index();
567 return this.get_cell(index);
567 return this.get_cell(index);
568 };
568 };
569
569
570 /**
570 /**
571 * Check whether a cell index is valid.
571 * Check whether a cell index is valid.
572 *
572 *
573 * @method is_valid_cell_index
573 * @method is_valid_cell_index
574 * @param {Number} index A cell index
574 * @param {Number} index A cell index
575 * @return True if the index is valid, false otherwise
575 * @return True if the index is valid, false otherwise
576 */
576 */
577 Notebook.prototype.is_valid_cell_index = function (index) {
577 Notebook.prototype.is_valid_cell_index = function (index) {
578 if (index !== null && index >= 0 && index < this.ncells()) {
578 if (index !== null && index >= 0 && index < this.ncells()) {
579 return true;
579 return true;
580 } else {
580 } else {
581 return false;
581 return false;
582 }
582 }
583 };
583 };
584
584
585 /**
585 /**
586 * Get the index of the currently selected cell.
586 * Get the index of the currently selected cell.
587
587
588 * @method get_selected_index
588 * @method get_selected_index
589 * @return {Number} The selected cell's numeric index
589 * @return {Number} The selected cell's numeric index
590 */
590 */
591 Notebook.prototype.get_selected_index = function () {
591 Notebook.prototype.get_selected_index = function () {
592 var result = null;
592 var result = null;
593 this.get_cell_elements().filter(function (index) {
593 this.get_cell_elements().filter(function (index) {
594 if ($(this).data("cell").selected === true) {
594 if ($(this).data("cell").selected === true) {
595 result = index;
595 result = index;
596 }
596 }
597 });
597 });
598 return result;
598 return result;
599 };
599 };
600
600
601
601
602 // Cell selection.
602 // Cell selection.
603
603
604 /**
604 /**
605 * Programmatically select a cell.
605 * Programmatically select a cell.
606 *
606 *
607 * @method select
607 * @method select
608 * @param {Number} index A cell's index
608 * @param {Number} index A cell's index
609 * @return {Notebook} This notebook
609 * @return {Notebook} This notebook
610 */
610 */
611 Notebook.prototype.select = function (index) {
611 Notebook.prototype.select = function (index) {
612 if (this.is_valid_cell_index(index)) {
612 if (this.is_valid_cell_index(index)) {
613 var sindex = this.get_selected_index();
613 var sindex = this.get_selected_index();
614 if (sindex !== null && index !== sindex) {
614 if (sindex !== null && index !== sindex) {
615 // If we are about to select a different cell, make sure we are
615 // If we are about to select a different cell, make sure we are
616 // first in command mode.
616 // first in command mode.
617 if (this.mode !== 'command') {
617 if (this.mode !== 'command') {
618 this.command_mode();
618 this.command_mode();
619 }
619 }
620 this.get_cell(sindex).unselect();
620 this.get_cell(sindex).unselect();
621 }
621 }
622 var cell = this.get_cell(index);
622 var cell = this.get_cell(index);
623 cell.select();
623 cell.select();
624 if (cell.cell_type === 'heading') {
624 if (cell.cell_type === 'heading') {
625 this.events.trigger('selected_cell_type_changed.Notebook',
625 this.events.trigger('selected_cell_type_changed.Notebook',
626 {'cell_type':cell.cell_type,level:cell.level}
626 {'cell_type':cell.cell_type,level:cell.level}
627 );
627 );
628 } else {
628 } else {
629 this.events.trigger('selected_cell_type_changed.Notebook',
629 this.events.trigger('selected_cell_type_changed.Notebook',
630 {'cell_type':cell.cell_type}
630 {'cell_type':cell.cell_type}
631 );
631 );
632 }
632 }
633 }
633 }
634 return this;
634 return this;
635 };
635 };
636
636
637 /**
637 /**
638 * Programmatically select the next cell.
638 * Programmatically select the next cell.
639 *
639 *
640 * @method select_next
640 * @method select_next
641 * @return {Notebook} This notebook
641 * @return {Notebook} This notebook
642 */
642 */
643 Notebook.prototype.select_next = function () {
643 Notebook.prototype.select_next = function () {
644 var index = this.get_selected_index();
644 var index = this.get_selected_index();
645 this.select(index+1);
645 this.select(index+1);
646 return this;
646 return this;
647 };
647 };
648
648
649 /**
649 /**
650 * Programmatically select the previous cell.
650 * Programmatically select the previous cell.
651 *
651 *
652 * @method select_prev
652 * @method select_prev
653 * @return {Notebook} This notebook
653 * @return {Notebook} This notebook
654 */
654 */
655 Notebook.prototype.select_prev = function () {
655 Notebook.prototype.select_prev = function () {
656 var index = this.get_selected_index();
656 var index = this.get_selected_index();
657 this.select(index-1);
657 this.select(index-1);
658 return this;
658 return this;
659 };
659 };
660
660
661
661
662 // Edit/Command mode
662 // Edit/Command mode
663
663
664 /**
664 /**
665 * Gets the index of the cell that is in edit mode.
665 * Gets the index of the cell that is in edit mode.
666 *
666 *
667 * @method get_edit_index
667 * @method get_edit_index
668 *
668 *
669 * @return index {int}
669 * @return index {int}
670 **/
670 **/
671 Notebook.prototype.get_edit_index = function () {
671 Notebook.prototype.get_edit_index = function () {
672 var result = null;
672 var result = null;
673 this.get_cell_elements().filter(function (index) {
673 this.get_cell_elements().filter(function (index) {
674 if ($(this).data("cell").mode === 'edit') {
674 if ($(this).data("cell").mode === 'edit') {
675 result = index;
675 result = index;
676 }
676 }
677 });
677 });
678 return result;
678 return result;
679 };
679 };
680
680
681 /**
681 /**
682 * Handle when a a cell blurs and the notebook should enter command mode.
682 * Handle when a a cell blurs and the notebook should enter command mode.
683 *
683 *
684 * @method handle_command_mode
684 * @method handle_command_mode
685 * @param [cell] {Cell} Cell to enter command mode on.
685 * @param [cell] {Cell} Cell to enter command mode on.
686 **/
686 **/
687 Notebook.prototype.handle_command_mode = function (cell) {
687 Notebook.prototype.handle_command_mode = function (cell) {
688 if (this.mode !== 'command') {
688 if (this.mode !== 'command') {
689 cell.command_mode();
689 cell.command_mode();
690 this.mode = 'command';
690 this.mode = 'command';
691 this.events.trigger('command_mode.Notebook');
691 this.events.trigger('command_mode.Notebook');
692 this.keyboard_manager.command_mode();
692 this.keyboard_manager.command_mode();
693 }
693 }
694 };
694 };
695
695
696 /**
696 /**
697 * Make the notebook enter command mode.
697 * Make the notebook enter command mode.
698 *
698 *
699 * @method command_mode
699 * @method command_mode
700 **/
700 **/
701 Notebook.prototype.command_mode = function () {
701 Notebook.prototype.command_mode = function () {
702 var cell = this.get_cell(this.get_edit_index());
702 var cell = this.get_cell(this.get_edit_index());
703 if (cell && this.mode !== 'command') {
703 if (cell && this.mode !== 'command') {
704 // We don't call cell.command_mode, but rather call cell.focus_cell()
704 // We don't call cell.command_mode, but rather call cell.focus_cell()
705 // which will blur and CM editor and trigger the call to
705 // which will blur and CM editor and trigger the call to
706 // handle_command_mode.
706 // handle_command_mode.
707 cell.focus_cell();
707 cell.focus_cell();
708 }
708 }
709 };
709 };
710
710
711 /**
711 /**
712 * Handle when a cell fires it's edit_mode event.
712 * Handle when a cell fires it's edit_mode event.
713 *
713 *
714 * @method handle_edit_mode
714 * @method handle_edit_mode
715 * @param [cell] {Cell} Cell to enter edit mode on.
715 * @param [cell] {Cell} Cell to enter edit mode on.
716 **/
716 **/
717 Notebook.prototype.handle_edit_mode = function (cell) {
717 Notebook.prototype.handle_edit_mode = function (cell) {
718 if (cell && this.mode !== 'edit') {
718 if (cell && this.mode !== 'edit') {
719 cell.edit_mode();
719 cell.edit_mode();
720 this.mode = 'edit';
720 this.mode = 'edit';
721 this.events.trigger('edit_mode.Notebook');
721 this.events.trigger('edit_mode.Notebook');
722 this.keyboard_manager.edit_mode();
722 this.keyboard_manager.edit_mode();
723 }
723 }
724 };
724 };
725
725
726 /**
726 /**
727 * Make a cell enter edit mode.
727 * Make a cell enter edit mode.
728 *
728 *
729 * @method edit_mode
729 * @method edit_mode
730 **/
730 **/
731 Notebook.prototype.edit_mode = function () {
731 Notebook.prototype.edit_mode = function () {
732 var cell = this.get_selected_cell();
732 var cell = this.get_selected_cell();
733 if (cell && this.mode !== 'edit') {
733 if (cell && this.mode !== 'edit') {
734 cell.unrender();
734 cell.unrender();
735 cell.focus_editor();
735 cell.focus_editor();
736 }
736 }
737 };
737 };
738
738
739 /**
739 /**
740 * Focus the currently selected cell.
740 * Focus the currently selected cell.
741 *
741 *
742 * @method focus_cell
742 * @method focus_cell
743 **/
743 **/
744 Notebook.prototype.focus_cell = function () {
744 Notebook.prototype.focus_cell = function () {
745 var cell = this.get_selected_cell();
745 var cell = this.get_selected_cell();
746 if (cell === null) {return;} // No cell is selected
746 if (cell === null) {return;} // No cell is selected
747 cell.focus_cell();
747 cell.focus_cell();
748 };
748 };
749
749
750 // Cell movement
750 // Cell movement
751
751
752 /**
752 /**
753 * Move given (or selected) cell up and select it.
753 * Move given (or selected) cell up and select it.
754 *
754 *
755 * @method move_cell_up
755 * @method move_cell_up
756 * @param [index] {integer} cell index
756 * @param [index] {integer} cell index
757 * @return {Notebook} This notebook
757 * @return {Notebook} This notebook
758 **/
758 **/
759 Notebook.prototype.move_cell_up = function (index) {
759 Notebook.prototype.move_cell_up = function (index) {
760 var i = this.index_or_selected(index);
760 var i = this.index_or_selected(index);
761 if (this.is_valid_cell_index(i) && i > 0) {
761 if (this.is_valid_cell_index(i) && i > 0) {
762 var pivot = this.get_cell_element(i-1);
762 var pivot = this.get_cell_element(i-1);
763 var tomove = this.get_cell_element(i);
763 var tomove = this.get_cell_element(i);
764 if (pivot !== null && tomove !== null) {
764 if (pivot !== null && tomove !== null) {
765 tomove.detach();
765 tomove.detach();
766 pivot.before(tomove);
766 pivot.before(tomove);
767 this.select(i-1);
767 this.select(i-1);
768 var cell = this.get_selected_cell();
768 var cell = this.get_selected_cell();
769 cell.focus_cell();
769 cell.focus_cell();
770 }
770 }
771 this.set_dirty(true);
771 this.set_dirty(true);
772 }
772 }
773 return this;
773 return this;
774 };
774 };
775
775
776
776
777 /**
777 /**
778 * Move given (or selected) cell down and select it
778 * Move given (or selected) cell down and select it
779 *
779 *
780 * @method move_cell_down
780 * @method move_cell_down
781 * @param [index] {integer} cell index
781 * @param [index] {integer} cell index
782 * @return {Notebook} This notebook
782 * @return {Notebook} This notebook
783 **/
783 **/
784 Notebook.prototype.move_cell_down = function (index) {
784 Notebook.prototype.move_cell_down = function (index) {
785 var i = this.index_or_selected(index);
785 var i = this.index_or_selected(index);
786 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
786 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
787 var pivot = this.get_cell_element(i+1);
787 var pivot = this.get_cell_element(i+1);
788 var tomove = this.get_cell_element(i);
788 var tomove = this.get_cell_element(i);
789 if (pivot !== null && tomove !== null) {
789 if (pivot !== null && tomove !== null) {
790 tomove.detach();
790 tomove.detach();
791 pivot.after(tomove);
791 pivot.after(tomove);
792 this.select(i+1);
792 this.select(i+1);
793 var cell = this.get_selected_cell();
793 var cell = this.get_selected_cell();
794 cell.focus_cell();
794 cell.focus_cell();
795 }
795 }
796 }
796 }
797 this.set_dirty();
797 this.set_dirty();
798 return this;
798 return this;
799 };
799 };
800
800
801
801
802 // Insertion, deletion.
802 // Insertion, deletion.
803
803
804 /**
804 /**
805 * Delete a cell from the notebook.
805 * Delete a cell from the notebook.
806 *
806 *
807 * @method delete_cell
807 * @method delete_cell
808 * @param [index] A cell's numeric index
808 * @param [index] A cell's numeric index
809 * @return {Notebook} This notebook
809 * @return {Notebook} This notebook
810 */
810 */
811 Notebook.prototype.delete_cell = function (index) {
811 Notebook.prototype.delete_cell = function (index) {
812 var i = this.index_or_selected(index);
812 var i = this.index_or_selected(index);
813 var cell = this.get_cell(i);
813 var cell = this.get_cell(i);
814 if (!cell.is_deletable()) {
814 if (!cell.is_deletable()) {
815 return this;
815 return this;
816 }
816 }
817
817
818 this.undelete_backup = cell.toJSON();
818 this.undelete_backup = cell.toJSON();
819 $('#undelete_cell').removeClass('disabled');
819 $('#undelete_cell').removeClass('disabled');
820 if (this.is_valid_cell_index(i)) {
820 if (this.is_valid_cell_index(i)) {
821 var old_ncells = this.ncells();
821 var old_ncells = this.ncells();
822 var ce = this.get_cell_element(i);
822 var ce = this.get_cell_element(i);
823 ce.remove();
823 ce.remove();
824 if (i === 0) {
824 if (i === 0) {
825 // Always make sure we have at least one cell.
825 // Always make sure we have at least one cell.
826 if (old_ncells === 1) {
826 if (old_ncells === 1) {
827 this.insert_cell_below('code');
827 this.insert_cell_below('code');
828 }
828 }
829 this.select(0);
829 this.select(0);
830 this.undelete_index = 0;
830 this.undelete_index = 0;
831 this.undelete_below = false;
831 this.undelete_below = false;
832 } else if (i === old_ncells-1 && i !== 0) {
832 } else if (i === old_ncells-1 && i !== 0) {
833 this.select(i-1);
833 this.select(i-1);
834 this.undelete_index = i - 1;
834 this.undelete_index = i - 1;
835 this.undelete_below = true;
835 this.undelete_below = true;
836 } else {
836 } else {
837 this.select(i);
837 this.select(i);
838 this.undelete_index = i;
838 this.undelete_index = i;
839 this.undelete_below = false;
839 this.undelete_below = false;
840 }
840 }
841 this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
841 this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
842 this.set_dirty(true);
842 this.set_dirty(true);
843 }
843 }
844 return this;
844 return this;
845 };
845 };
846
846
847 /**
847 /**
848 * Restore the most recently deleted cell.
848 * Restore the most recently deleted cell.
849 *
849 *
850 * @method undelete
850 * @method undelete
851 */
851 */
852 Notebook.prototype.undelete_cell = function() {
852 Notebook.prototype.undelete_cell = function() {
853 if (this.undelete_backup !== null && this.undelete_index !== null) {
853 if (this.undelete_backup !== null && this.undelete_index !== null) {
854 var current_index = this.get_selected_index();
854 var current_index = this.get_selected_index();
855 if (this.undelete_index < current_index) {
855 if (this.undelete_index < current_index) {
856 current_index = current_index + 1;
856 current_index = current_index + 1;
857 }
857 }
858 if (this.undelete_index >= this.ncells()) {
858 if (this.undelete_index >= this.ncells()) {
859 this.select(this.ncells() - 1);
859 this.select(this.ncells() - 1);
860 }
860 }
861 else {
861 else {
862 this.select(this.undelete_index);
862 this.select(this.undelete_index);
863 }
863 }
864 var cell_data = this.undelete_backup;
864 var cell_data = this.undelete_backup;
865 var new_cell = null;
865 var new_cell = null;
866 if (this.undelete_below) {
866 if (this.undelete_below) {
867 new_cell = this.insert_cell_below(cell_data.cell_type);
867 new_cell = this.insert_cell_below(cell_data.cell_type);
868 } else {
868 } else {
869 new_cell = this.insert_cell_above(cell_data.cell_type);
869 new_cell = this.insert_cell_above(cell_data.cell_type);
870 }
870 }
871 new_cell.fromJSON(cell_data);
871 new_cell.fromJSON(cell_data);
872 if (this.undelete_below) {
872 if (this.undelete_below) {
873 this.select(current_index+1);
873 this.select(current_index+1);
874 } else {
874 } else {
875 this.select(current_index);
875 this.select(current_index);
876 }
876 }
877 this.undelete_backup = null;
877 this.undelete_backup = null;
878 this.undelete_index = null;
878 this.undelete_index = null;
879 }
879 }
880 $('#undelete_cell').addClass('disabled');
880 $('#undelete_cell').addClass('disabled');
881 };
881 };
882
882
883 /**
883 /**
884 * Insert a cell so that after insertion the cell is at given index.
884 * Insert a cell so that after insertion the cell is at given index.
885 *
885 *
886 * If cell type is not provided, it will default to the type of the
886 * If cell type is not provided, it will default to the type of the
887 * currently active cell.
887 * currently active cell.
888 *
888 *
889 * Similar to insert_above, but index parameter is mandatory
889 * Similar to insert_above, but index parameter is mandatory
890 *
890 *
891 * Index will be brought back into the accessible range [0,n]
891 * Index will be brought back into the accessible range [0,n]
892 *
892 *
893 * @method insert_cell_at_index
893 * @method insert_cell_at_index
894 * @param [type] {string} in ['code','markdown', 'raw'], defaults to 'code'
894 * @param [type] {string} in ['code','markdown', 'raw'], defaults to 'code'
895 * @param [index] {int} a valid index where to insert cell
895 * @param [index] {int} a valid index where to insert cell
896 *
896 *
897 * @return cell {cell|null} created cell or null
897 * @return cell {cell|null} created cell or null
898 **/
898 **/
899 Notebook.prototype.insert_cell_at_index = function(type, index){
899 Notebook.prototype.insert_cell_at_index = function(type, index){
900
900
901 var ncells = this.ncells();
901 var ncells = this.ncells();
902 index = Math.min(index, ncells);
902 index = Math.min(index, ncells);
903 index = Math.max(index, 0);
903 index = Math.max(index, 0);
904 var cell = null;
904 var cell = null;
905 type = type || this.default_cell_type;
905 type = type || this.default_cell_type;
906 if (type === 'above') {
906 if (type === 'above') {
907 if (index > 0) {
907 if (index > 0) {
908 type = this.get_cell(index-1).cell_type;
908 type = this.get_cell(index-1).cell_type;
909 } else {
909 } else {
910 type = 'code';
910 type = 'code';
911 }
911 }
912 } else if (type === 'below') {
912 } else if (type === 'below') {
913 if (index < ncells) {
913 if (index < ncells) {
914 type = this.get_cell(index).cell_type;
914 type = this.get_cell(index).cell_type;
915 } else {
915 } else {
916 type = 'code';
916 type = 'code';
917 }
917 }
918 } else if (type === 'selected') {
918 } else if (type === 'selected') {
919 type = this.get_selected_cell().cell_type;
919 type = this.get_selected_cell().cell_type;
920 }
920 }
921
921
922 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
922 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
923 var cell_options = {
923 var cell_options = {
924 events: this.events,
924 events: this.events,
925 config: this.config,
925 config: this.config,
926 keyboard_manager: this.keyboard_manager,
926 keyboard_manager: this.keyboard_manager,
927 notebook: this,
927 notebook: this,
928 tooltip: this.tooltip
928 tooltip: this.tooltip
929 };
929 };
930 switch(type) {
930 switch(type) {
931 case 'code':
931 case 'code':
932 cell = new codecell.CodeCell(this.kernel, cell_options);
932 cell = new codecell.CodeCell(this.kernel, cell_options);
933 cell.set_input_prompt();
933 cell.set_input_prompt();
934 break;
934 break;
935 case 'markdown':
935 case 'markdown':
936 cell = new textcell.MarkdownCell(cell_options);
936 cell = new textcell.MarkdownCell(cell_options);
937 break;
937 break;
938 case 'raw':
938 case 'raw':
939 cell = new textcell.RawCell(cell_options);
939 cell = new textcell.RawCell(cell_options);
940 break;
940 break;
941 default:
941 default:
942 console.log("Unrecognized cell type: ", type, cellmod);
942 console.log("Unrecognized cell type: ", type, cellmod);
943 cell = new cellmod.UnrecognizedCell(cell_options);
943 cell = new cellmod.UnrecognizedCell(cell_options);
944 }
944 }
945
945
946 if(this._insert_element_at_index(cell.element,index)) {
946 if(this._insert_element_at_index(cell.element,index)) {
947 cell.render();
947 cell.render();
948 this.events.trigger('create.Cell', {'cell': cell, 'index': index});
948 this.events.trigger('create.Cell', {'cell': cell, 'index': index});
949 cell.refresh();
949 cell.refresh();
950 // We used to select the cell after we refresh it, but there
950 // We used to select the cell after we refresh it, but there
951 // are now cases were this method is called where select is
951 // are now cases were this method is called where select is
952 // not appropriate. The selection logic should be handled by the
952 // not appropriate. The selection logic should be handled by the
953 // caller of the the top level insert_cell methods.
953 // caller of the the top level insert_cell methods.
954 this.set_dirty(true);
954 this.set_dirty(true);
955 }
955 }
956 }
956 }
957 return cell;
957 return cell;
958
958
959 };
959 };
960
960
961 /**
961 /**
962 * Insert an element at given cell index.
962 * Insert an element at given cell index.
963 *
963 *
964 * @method _insert_element_at_index
964 * @method _insert_element_at_index
965 * @param element {dom_element} a cell element
965 * @param element {dom_element} a cell element
966 * @param [index] {int} a valid index where to inser cell
966 * @param [index] {int} a valid index where to inser cell
967 * @private
967 * @private
968 *
968 *
969 * return true if everything whent fine.
969 * return true if everything whent fine.
970 **/
970 **/
971 Notebook.prototype._insert_element_at_index = function(element, index){
971 Notebook.prototype._insert_element_at_index = function(element, index){
972 if (element === undefined){
972 if (element === undefined){
973 return false;
973 return false;
974 }
974 }
975
975
976 var ncells = this.ncells();
976 var ncells = this.ncells();
977
977
978 if (ncells === 0) {
978 if (ncells === 0) {
979 // special case append if empty
979 // special case append if empty
980 this.element.find('div.end_space').before(element);
980 this.element.find('div.end_space').before(element);
981 } else if ( ncells === index ) {
981 } else if ( ncells === index ) {
982 // special case append it the end, but not empty
982 // special case append it the end, but not empty
983 this.get_cell_element(index-1).after(element);
983 this.get_cell_element(index-1).after(element);
984 } else if (this.is_valid_cell_index(index)) {
984 } else if (this.is_valid_cell_index(index)) {
985 // otherwise always somewhere to append to
985 // otherwise always somewhere to append to
986 this.get_cell_element(index).before(element);
986 this.get_cell_element(index).before(element);
987 } else {
987 } else {
988 return false;
988 return false;
989 }
989 }
990
990
991 if (this.undelete_index !== null && index <= this.undelete_index) {
991 if (this.undelete_index !== null && index <= this.undelete_index) {
992 this.undelete_index = this.undelete_index + 1;
992 this.undelete_index = this.undelete_index + 1;
993 this.set_dirty(true);
993 this.set_dirty(true);
994 }
994 }
995 return true;
995 return true;
996 };
996 };
997
997
998 /**
998 /**
999 * Insert a cell of given type above given index, or at top
999 * Insert a cell of given type above given index, or at top
1000 * of notebook if index smaller than 0.
1000 * of notebook if index smaller than 0.
1001 *
1001 *
1002 * default index value is the one of currently selected cell
1002 * default index value is the one of currently selected cell
1003 *
1003 *
1004 * @method insert_cell_above
1004 * @method insert_cell_above
1005 * @param [type] {string} cell type
1005 * @param [type] {string} cell type
1006 * @param [index] {integer}
1006 * @param [index] {integer}
1007 *
1007 *
1008 * @return handle to created cell or null
1008 * @return handle to created cell or null
1009 **/
1009 **/
1010 Notebook.prototype.insert_cell_above = function (type, index) {
1010 Notebook.prototype.insert_cell_above = function (type, index) {
1011 index = this.index_or_selected(index);
1011 index = this.index_or_selected(index);
1012 return this.insert_cell_at_index(type, index);
1012 return this.insert_cell_at_index(type, index);
1013 };
1013 };
1014
1014
1015 /**
1015 /**
1016 * Insert a cell of given type below given index, or at bottom
1016 * Insert a cell of given type below given index, or at bottom
1017 * of notebook if index greater than number of cells
1017 * of notebook if index greater than number of cells
1018 *
1018 *
1019 * default index value is the one of currently selected cell
1019 * default index value is the one of currently selected cell
1020 *
1020 *
1021 * @method insert_cell_below
1021 * @method insert_cell_below
1022 * @param [type] {string} cell type
1022 * @param [type] {string} cell type
1023 * @param [index] {integer}
1023 * @param [index] {integer}
1024 *
1024 *
1025 * @return handle to created cell or null
1025 * @return handle to created cell or null
1026 *
1026 *
1027 **/
1027 **/
1028 Notebook.prototype.insert_cell_below = function (type, index) {
1028 Notebook.prototype.insert_cell_below = function (type, index) {
1029 index = this.index_or_selected(index);
1029 index = this.index_or_selected(index);
1030 return this.insert_cell_at_index(type, index+1);
1030 return this.insert_cell_at_index(type, index+1);
1031 };
1031 };
1032
1032
1033
1033
1034 /**
1034 /**
1035 * Insert cell at end of notebook
1035 * Insert cell at end of notebook
1036 *
1036 *
1037 * @method insert_cell_at_bottom
1037 * @method insert_cell_at_bottom
1038 * @param {String} type cell type
1038 * @param {String} type cell type
1039 *
1039 *
1040 * @return the added cell; or null
1040 * @return the added cell; or null
1041 **/
1041 **/
1042 Notebook.prototype.insert_cell_at_bottom = function (type){
1042 Notebook.prototype.insert_cell_at_bottom = function (type){
1043 var len = this.ncells();
1043 var len = this.ncells();
1044 return this.insert_cell_below(type,len-1);
1044 return this.insert_cell_below(type,len-1);
1045 };
1045 };
1046
1046
1047 /**
1047 /**
1048 * Turn a cell into a code cell.
1048 * Turn a cell into a code cell.
1049 *
1049 *
1050 * @method to_code
1050 * @method to_code
1051 * @param {Number} [index] A cell's index
1051 * @param {Number} [index] A cell's index
1052 */
1052 */
1053 Notebook.prototype.to_code = function (index) {
1053 Notebook.prototype.to_code = function (index) {
1054 var i = this.index_or_selected(index);
1054 var i = this.index_or_selected(index);
1055 if (this.is_valid_cell_index(i)) {
1055 if (this.is_valid_cell_index(i)) {
1056 var source_cell = this.get_cell(i);
1056 var source_cell = this.get_cell(i);
1057 if (!(source_cell instanceof codecell.CodeCell)) {
1057 if (!(source_cell instanceof codecell.CodeCell)) {
1058 var target_cell = this.insert_cell_below('code',i);
1058 var target_cell = this.insert_cell_below('code',i);
1059 var text = source_cell.get_text();
1059 var text = source_cell.get_text();
1060 if (text === source_cell.placeholder) {
1060 if (text === source_cell.placeholder) {
1061 text = '';
1061 text = '';
1062 }
1062 }
1063 //metadata
1063 //metadata
1064 target_cell.metadata = source_cell.metadata;
1064 target_cell.metadata = source_cell.metadata;
1065
1065
1066 target_cell.set_text(text);
1066 target_cell.set_text(text);
1067 // make this value the starting point, so that we can only undo
1067 // make this value the starting point, so that we can only undo
1068 // to this state, instead of a blank cell
1068 // to this state, instead of a blank cell
1069 target_cell.code_mirror.clearHistory();
1069 target_cell.code_mirror.clearHistory();
1070 source_cell.element.remove();
1070 source_cell.element.remove();
1071 this.select(i);
1071 this.select(i);
1072 var cursor = source_cell.code_mirror.getCursor();
1072 var cursor = source_cell.code_mirror.getCursor();
1073 target_cell.code_mirror.setCursor(cursor);
1073 target_cell.code_mirror.setCursor(cursor);
1074 this.set_dirty(true);
1074 this.set_dirty(true);
1075 }
1075 }
1076 }
1076 }
1077 };
1077 };
1078
1078
1079 /**
1079 /**
1080 * Turn a cell into a Markdown cell.
1080 * Turn a cell into a Markdown cell.
1081 *
1081 *
1082 * @method to_markdown
1082 * @method to_markdown
1083 * @param {Number} [index] A cell's index
1083 * @param {Number} [index] A cell's index
1084 */
1084 */
1085 Notebook.prototype.to_markdown = function (index) {
1085 Notebook.prototype.to_markdown = function (index) {
1086 var i = this.index_or_selected(index);
1086 var i = this.index_or_selected(index);
1087 if (this.is_valid_cell_index(i)) {
1087 if (this.is_valid_cell_index(i)) {
1088 var source_cell = this.get_cell(i);
1088 var source_cell = this.get_cell(i);
1089
1089
1090 if (!(source_cell instanceof textcell.MarkdownCell)) {
1090 if (!(source_cell instanceof textcell.MarkdownCell)) {
1091 var target_cell = this.insert_cell_below('markdown',i);
1091 var target_cell = this.insert_cell_below('markdown',i);
1092 var text = source_cell.get_text();
1092 var text = source_cell.get_text();
1093
1093
1094 if (text === source_cell.placeholder) {
1094 if (text === source_cell.placeholder) {
1095 text = '';
1095 text = '';
1096 }
1096 }
1097 // metadata
1097 // metadata
1098 target_cell.metadata = source_cell.metadata;
1098 target_cell.metadata = source_cell.metadata;
1099 // We must show the editor before setting its contents
1099 // We must show the editor before setting its contents
1100 target_cell.unrender();
1100 target_cell.unrender();
1101 target_cell.set_text(text);
1101 target_cell.set_text(text);
1102 // make this value the starting point, so that we can only undo
1102 // make this value the starting point, so that we can only undo
1103 // to this state, instead of a blank cell
1103 // to this state, instead of a blank cell
1104 target_cell.code_mirror.clearHistory();
1104 target_cell.code_mirror.clearHistory();
1105 source_cell.element.remove();
1105 source_cell.element.remove();
1106 this.select(i);
1106 this.select(i);
1107 if ((source_cell instanceof textcell.TextCell) && source_cell.rendered) {
1107 if ((source_cell instanceof textcell.TextCell) && source_cell.rendered) {
1108 target_cell.render();
1108 target_cell.render();
1109 }
1109 }
1110 var cursor = source_cell.code_mirror.getCursor();
1110 var cursor = source_cell.code_mirror.getCursor();
1111 target_cell.code_mirror.setCursor(cursor);
1111 target_cell.code_mirror.setCursor(cursor);
1112 this.set_dirty(true);
1112 this.set_dirty(true);
1113 }
1113 }
1114 }
1114 }
1115 };
1115 };
1116
1116
1117 /**
1117 /**
1118 * Turn a cell into a raw text cell.
1118 * Turn a cell into a raw text cell.
1119 *
1119 *
1120 * @method to_raw
1120 * @method to_raw
1121 * @param {Number} [index] A cell's index
1121 * @param {Number} [index] A cell's index
1122 */
1122 */
1123 Notebook.prototype.to_raw = function (index) {
1123 Notebook.prototype.to_raw = function (index) {
1124 var i = this.index_or_selected(index);
1124 var i = this.index_or_selected(index);
1125 if (this.is_valid_cell_index(i)) {
1125 if (this.is_valid_cell_index(i)) {
1126 var target_cell = null;
1126 var target_cell = null;
1127 var source_cell = this.get_cell(i);
1127 var source_cell = this.get_cell(i);
1128
1128
1129 if (!(source_cell instanceof textcell.RawCell)) {
1129 if (!(source_cell instanceof textcell.RawCell)) {
1130 target_cell = this.insert_cell_below('raw',i);
1130 target_cell = this.insert_cell_below('raw',i);
1131 var text = source_cell.get_text();
1131 var text = source_cell.get_text();
1132 if (text === source_cell.placeholder) {
1132 if (text === source_cell.placeholder) {
1133 text = '';
1133 text = '';
1134 }
1134 }
1135 //metadata
1135 //metadata
1136 target_cell.metadata = source_cell.metadata;
1136 target_cell.metadata = source_cell.metadata;
1137 // We must show the editor before setting its contents
1137 // We must show the editor before setting its contents
1138 target_cell.unrender();
1138 target_cell.unrender();
1139 target_cell.set_text(text);
1139 target_cell.set_text(text);
1140 // make this value the starting point, so that we can only undo
1140 // make this value the starting point, so that we can only undo
1141 // to this state, instead of a blank cell
1141 // to this state, instead of a blank cell
1142 target_cell.code_mirror.clearHistory();
1142 target_cell.code_mirror.clearHistory();
1143 source_cell.element.remove();
1143 source_cell.element.remove();
1144 this.select(i);
1144 this.select(i);
1145 var cursor = source_cell.code_mirror.getCursor();
1145 var cursor = source_cell.code_mirror.getCursor();
1146 target_cell.code_mirror.setCursor(cursor);
1146 target_cell.code_mirror.setCursor(cursor);
1147 this.set_dirty(true);
1147 this.set_dirty(true);
1148 }
1148 }
1149 }
1149 }
1150 };
1150 };
1151
1151
1152 Notebook.prototype._warn_heading = function () {
1152 Notebook.prototype._warn_heading = function () {
1153 /**
1153 /**
1154 * warn about heading cells being removed
1154 * warn about heading cells being removed
1155 */
1155 */
1156 dialog.modal({
1156 dialog.modal({
1157 notebook: this,
1157 notebook: this,
1158 keyboard_manager: this.keyboard_manager,
1158 keyboard_manager: this.keyboard_manager,
1159 title : "Use markdown headings",
1159 title : "Use markdown headings",
1160 body : $("<p/>").text(
1160 body : $("<p/>").text(
1161 'IPython no longer uses special heading cells. ' +
1161 'IPython no longer uses special heading cells. ' +
1162 'Instead, write your headings in Markdown cells using # characters:'
1162 'Instead, write your headings in Markdown cells using # characters:'
1163 ).append($('<pre/>').text(
1163 ).append($('<pre/>').text(
1164 '## This is a level 2 heading'
1164 '## This is a level 2 heading'
1165 )),
1165 )),
1166 buttons : {
1166 buttons : {
1167 "OK" : {}
1167 "OK" : {}
1168 }
1168 }
1169 });
1169 });
1170 };
1170 };
1171
1171
1172 /**
1172 /**
1173 * Turn a cell into a markdown cell with a heading.
1173 * Turn a cell into a markdown cell with a heading.
1174 *
1174 *
1175 * @method to_heading
1175 * @method to_heading
1176 * @param {Number} [index] A cell's index
1176 * @param {Number} [index] A cell's index
1177 * @param {Number} [level] A heading level (e.g., 1 for h1)
1177 * @param {Number} [level] A heading level (e.g., 1 for h1)
1178 */
1178 */
1179 Notebook.prototype.to_heading = function (index, level) {
1179 Notebook.prototype.to_heading = function (index, level) {
1180 this.to_markdown(index);
1180 this.to_markdown(index);
1181 level = level || 1;
1181 level = level || 1;
1182 var i = this.index_or_selected(index);
1182 var i = this.index_or_selected(index);
1183 if (this.is_valid_cell_index(i)) {
1183 if (this.is_valid_cell_index(i)) {
1184 var cell = this.get_cell(i);
1184 var cell = this.get_cell(i);
1185 cell.set_heading_level(level);
1185 cell.set_heading_level(level);
1186 this.set_dirty(true);
1186 this.set_dirty(true);
1187 }
1187 }
1188 };
1188 };
1189
1189
1190
1190
1191 // Cut/Copy/Paste
1191 // Cut/Copy/Paste
1192
1192
1193 /**
1193 /**
1194 * Enable UI elements for pasting cells.
1194 * Enable UI elements for pasting cells.
1195 *
1195 *
1196 * @method enable_paste
1196 * @method enable_paste
1197 */
1197 */
1198 Notebook.prototype.enable_paste = function () {
1198 Notebook.prototype.enable_paste = function () {
1199 var that = this;
1199 var that = this;
1200 if (!this.paste_enabled) {
1200 if (!this.paste_enabled) {
1201 $('#paste_cell_replace').removeClass('disabled')
1201 $('#paste_cell_replace').removeClass('disabled')
1202 .on('click', function () {that.paste_cell_replace();});
1202 .on('click', function () {that.paste_cell_replace();});
1203 $('#paste_cell_above').removeClass('disabled')
1203 $('#paste_cell_above').removeClass('disabled')
1204 .on('click', function () {that.paste_cell_above();});
1204 .on('click', function () {that.paste_cell_above();});
1205 $('#paste_cell_below').removeClass('disabled')
1205 $('#paste_cell_below').removeClass('disabled')
1206 .on('click', function () {that.paste_cell_below();});
1206 .on('click', function () {that.paste_cell_below();});
1207 this.paste_enabled = true;
1207 this.paste_enabled = true;
1208 }
1208 }
1209 };
1209 };
1210
1210
1211 /**
1211 /**
1212 * Disable UI elements for pasting cells.
1212 * Disable UI elements for pasting cells.
1213 *
1213 *
1214 * @method disable_paste
1214 * @method disable_paste
1215 */
1215 */
1216 Notebook.prototype.disable_paste = function () {
1216 Notebook.prototype.disable_paste = function () {
1217 if (this.paste_enabled) {
1217 if (this.paste_enabled) {
1218 $('#paste_cell_replace').addClass('disabled').off('click');
1218 $('#paste_cell_replace').addClass('disabled').off('click');
1219 $('#paste_cell_above').addClass('disabled').off('click');
1219 $('#paste_cell_above').addClass('disabled').off('click');
1220 $('#paste_cell_below').addClass('disabled').off('click');
1220 $('#paste_cell_below').addClass('disabled').off('click');
1221 this.paste_enabled = false;
1221 this.paste_enabled = false;
1222 }
1222 }
1223 };
1223 };
1224
1224
1225 /**
1225 /**
1226 * Cut a cell.
1226 * Cut a cell.
1227 *
1227 *
1228 * @method cut_cell
1228 * @method cut_cell
1229 */
1229 */
1230 Notebook.prototype.cut_cell = function () {
1230 Notebook.prototype.cut_cell = function () {
1231 this.copy_cell();
1231 this.copy_cell();
1232 this.delete_cell();
1232 this.delete_cell();
1233 };
1233 };
1234
1234
1235 /**
1235 /**
1236 * Copy a cell.
1236 * Copy a cell.
1237 *
1237 *
1238 * @method copy_cell
1238 * @method copy_cell
1239 */
1239 */
1240 Notebook.prototype.copy_cell = function () {
1240 Notebook.prototype.copy_cell = function () {
1241 var cell = this.get_selected_cell();
1241 var cell = this.get_selected_cell();
1242 this.clipboard = cell.toJSON();
1242 this.clipboard = cell.toJSON();
1243 // remove undeletable status from the copied cell
1243 // remove undeletable status from the copied cell
1244 if (this.clipboard.metadata.deletable !== undefined) {
1244 if (this.clipboard.metadata.deletable !== undefined) {
1245 delete this.clipboard.metadata.deletable;
1245 delete this.clipboard.metadata.deletable;
1246 }
1246 }
1247 this.enable_paste();
1247 this.enable_paste();
1248 };
1248 };
1249
1249
1250 /**
1250 /**
1251 * Replace the selected cell with a cell in the clipboard.
1251 * Replace the selected cell with a cell in the clipboard.
1252 *
1252 *
1253 * @method paste_cell_replace
1253 * @method paste_cell_replace
1254 */
1254 */
1255 Notebook.prototype.paste_cell_replace = function () {
1255 Notebook.prototype.paste_cell_replace = function () {
1256 if (this.clipboard !== null && this.paste_enabled) {
1256 if (this.clipboard !== null && this.paste_enabled) {
1257 var cell_data = this.clipboard;
1257 var cell_data = this.clipboard;
1258 var new_cell = this.insert_cell_above(cell_data.cell_type);
1258 var new_cell = this.insert_cell_above(cell_data.cell_type);
1259 new_cell.fromJSON(cell_data);
1259 new_cell.fromJSON(cell_data);
1260 var old_cell = this.get_next_cell(new_cell);
1260 var old_cell = this.get_next_cell(new_cell);
1261 this.delete_cell(this.find_cell_index(old_cell));
1261 this.delete_cell(this.find_cell_index(old_cell));
1262 this.select(this.find_cell_index(new_cell));
1262 this.select(this.find_cell_index(new_cell));
1263 }
1263 }
1264 };
1264 };
1265
1265
1266 /**
1266 /**
1267 * Paste a cell from the clipboard above the selected cell.
1267 * Paste a cell from the clipboard above the selected cell.
1268 *
1268 *
1269 * @method paste_cell_above
1269 * @method paste_cell_above
1270 */
1270 */
1271 Notebook.prototype.paste_cell_above = function () {
1271 Notebook.prototype.paste_cell_above = function () {
1272 if (this.clipboard !== null && this.paste_enabled) {
1272 if (this.clipboard !== null && this.paste_enabled) {
1273 var cell_data = this.clipboard;
1273 var cell_data = this.clipboard;
1274 var new_cell = this.insert_cell_above(cell_data.cell_type);
1274 var new_cell = this.insert_cell_above(cell_data.cell_type);
1275 new_cell.fromJSON(cell_data);
1275 new_cell.fromJSON(cell_data);
1276 new_cell.focus_cell();
1276 new_cell.focus_cell();
1277 }
1277 }
1278 };
1278 };
1279
1279
1280 /**
1280 /**
1281 * Paste a cell from the clipboard below the selected cell.
1281 * Paste a cell from the clipboard below the selected cell.
1282 *
1282 *
1283 * @method paste_cell_below
1283 * @method paste_cell_below
1284 */
1284 */
1285 Notebook.prototype.paste_cell_below = function () {
1285 Notebook.prototype.paste_cell_below = function () {
1286 if (this.clipboard !== null && this.paste_enabled) {
1286 if (this.clipboard !== null && this.paste_enabled) {
1287 var cell_data = this.clipboard;
1287 var cell_data = this.clipboard;
1288 var new_cell = this.insert_cell_below(cell_data.cell_type);
1288 var new_cell = this.insert_cell_below(cell_data.cell_type);
1289 new_cell.fromJSON(cell_data);
1289 new_cell.fromJSON(cell_data);
1290 new_cell.focus_cell();
1290 new_cell.focus_cell();
1291 }
1291 }
1292 };
1292 };
1293
1293
1294 // Split/merge
1294 // Split/merge
1295
1295
1296 /**
1296 /**
1297 * Split the selected cell into two, at the cursor.
1297 * Split the selected cell into two, at the cursor.
1298 *
1298 *
1299 * @method split_cell
1299 * @method split_cell
1300 */
1300 */
1301 Notebook.prototype.split_cell = function () {
1301 Notebook.prototype.split_cell = function () {
1302 var cell = this.get_selected_cell();
1302 var cell = this.get_selected_cell();
1303 if (cell.is_splittable()) {
1303 if (cell.is_splittable()) {
1304 var texta = cell.get_pre_cursor();
1304 var texta = cell.get_pre_cursor();
1305 var textb = cell.get_post_cursor();
1305 var textb = cell.get_post_cursor();
1306 cell.set_text(textb);
1306 cell.set_text(textb);
1307 var new_cell = this.insert_cell_above(cell.cell_type);
1307 var new_cell = this.insert_cell_above(cell.cell_type);
1308 // Unrender the new cell so we can call set_text.
1308 // Unrender the new cell so we can call set_text.
1309 new_cell.unrender();
1309 new_cell.unrender();
1310 new_cell.set_text(texta);
1310 new_cell.set_text(texta);
1311 }
1311 }
1312 };
1312 };
1313
1313
1314 /**
1314 /**
1315 * Combine the selected cell into the cell above it.
1315 * Combine the selected cell into the cell above it.
1316 *
1316 *
1317 * @method merge_cell_above
1317 * @method merge_cell_above
1318 */
1318 */
1319 Notebook.prototype.merge_cell_above = function () {
1319 Notebook.prototype.merge_cell_above = function () {
1320 var index = this.get_selected_index();
1320 var index = this.get_selected_index();
1321 var cell = this.get_cell(index);
1321 var cell = this.get_cell(index);
1322 var render = cell.rendered;
1322 var render = cell.rendered;
1323 if (!cell.is_mergeable()) {
1323 if (!cell.is_mergeable()) {
1324 return;
1324 return;
1325 }
1325 }
1326 if (index > 0) {
1326 if (index > 0) {
1327 var upper_cell = this.get_cell(index-1);
1327 var upper_cell = this.get_cell(index-1);
1328 if (!upper_cell.is_mergeable()) {
1328 if (!upper_cell.is_mergeable()) {
1329 return;
1329 return;
1330 }
1330 }
1331 var upper_text = upper_cell.get_text();
1331 var upper_text = upper_cell.get_text();
1332 var text = cell.get_text();
1332 var text = cell.get_text();
1333 if (cell instanceof codecell.CodeCell) {
1333 if (cell instanceof codecell.CodeCell) {
1334 cell.set_text(upper_text+'\n'+text);
1334 cell.set_text(upper_text+'\n'+text);
1335 } else {
1335 } else {
1336 cell.unrender(); // Must unrender before we set_text.
1336 cell.unrender(); // Must unrender before we set_text.
1337 cell.set_text(upper_text+'\n\n'+text);
1337 cell.set_text(upper_text+'\n\n'+text);
1338 if (render) {
1338 if (render) {
1339 // The rendered state of the final cell should match
1339 // The rendered state of the final cell should match
1340 // that of the original selected cell;
1340 // that of the original selected cell;
1341 cell.render();
1341 cell.render();
1342 }
1342 }
1343 }
1343 }
1344 this.delete_cell(index-1);
1344 this.delete_cell(index-1);
1345 this.select(this.find_cell_index(cell));
1345 this.select(this.find_cell_index(cell));
1346 }
1346 }
1347 };
1347 };
1348
1348
1349 /**
1349 /**
1350 * Combine the selected cell into the cell below it.
1350 * Combine the selected cell into the cell below it.
1351 *
1351 *
1352 * @method merge_cell_below
1352 * @method merge_cell_below
1353 */
1353 */
1354 Notebook.prototype.merge_cell_below = function () {
1354 Notebook.prototype.merge_cell_below = function () {
1355 var index = this.get_selected_index();
1355 var index = this.get_selected_index();
1356 var cell = this.get_cell(index);
1356 var cell = this.get_cell(index);
1357 var render = cell.rendered;
1357 var render = cell.rendered;
1358 if (!cell.is_mergeable()) {
1358 if (!cell.is_mergeable()) {
1359 return;
1359 return;
1360 }
1360 }
1361 if (index < this.ncells()-1) {
1361 if (index < this.ncells()-1) {
1362 var lower_cell = this.get_cell(index+1);
1362 var lower_cell = this.get_cell(index+1);
1363 if (!lower_cell.is_mergeable()) {
1363 if (!lower_cell.is_mergeable()) {
1364 return;
1364 return;
1365 }
1365 }
1366 var lower_text = lower_cell.get_text();
1366 var lower_text = lower_cell.get_text();
1367 var text = cell.get_text();
1367 var text = cell.get_text();
1368 if (cell instanceof codecell.CodeCell) {
1368 if (cell instanceof codecell.CodeCell) {
1369 cell.set_text(text+'\n'+lower_text);
1369 cell.set_text(text+'\n'+lower_text);
1370 } else {
1370 } else {
1371 cell.unrender(); // Must unrender before we set_text.
1371 cell.unrender(); // Must unrender before we set_text.
1372 cell.set_text(text+'\n\n'+lower_text);
1372 cell.set_text(text+'\n\n'+lower_text);
1373 if (render) {
1373 if (render) {
1374 // The rendered state of the final cell should match
1374 // The rendered state of the final cell should match
1375 // that of the original selected cell;
1375 // that of the original selected cell;
1376 cell.render();
1376 cell.render();
1377 }
1377 }
1378 }
1378 }
1379 this.delete_cell(index+1);
1379 this.delete_cell(index+1);
1380 this.select(this.find_cell_index(cell));
1380 this.select(this.find_cell_index(cell));
1381 }
1381 }
1382 };
1382 };
1383
1383
1384
1384
1385 // Cell collapsing and output clearing
1385 // Cell collapsing and output clearing
1386
1386
1387 /**
1387 /**
1388 * Hide a cell's output.
1388 * Hide a cell's output.
1389 *
1389 *
1390 * @method collapse_output
1390 * @method collapse_output
1391 * @param {Number} index A cell's numeric index
1391 * @param {Number} index A cell's numeric index
1392 */
1392 */
1393 Notebook.prototype.collapse_output = function (index) {
1393 Notebook.prototype.collapse_output = function (index) {
1394 var i = this.index_or_selected(index);
1394 var i = this.index_or_selected(index);
1395 var cell = this.get_cell(i);
1395 var cell = this.get_cell(i);
1396 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1396 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1397 cell.collapse_output();
1397 cell.collapse_output();
1398 this.set_dirty(true);
1398 this.set_dirty(true);
1399 }
1399 }
1400 };
1400 };
1401
1401
1402 /**
1402 /**
1403 * Hide each code cell's output area.
1403 * Hide each code cell's output area.
1404 *
1404 *
1405 * @method collapse_all_output
1405 * @method collapse_all_output
1406 */
1406 */
1407 Notebook.prototype.collapse_all_output = function () {
1407 Notebook.prototype.collapse_all_output = function () {
1408 this.get_cells().map(function (cell, i) {
1408 this.get_cells().map(function (cell, i) {
1409 if (cell instanceof codecell.CodeCell) {
1409 if (cell instanceof codecell.CodeCell) {
1410 cell.collapse_output();
1410 cell.collapse_output();
1411 }
1411 }
1412 });
1412 });
1413 // this should not be set if the `collapse` key is removed from nbformat
1413 // this should not be set if the `collapse` key is removed from nbformat
1414 this.set_dirty(true);
1414 this.set_dirty(true);
1415 };
1415 };
1416
1416
1417 /**
1417 /**
1418 * Show a cell's output.
1418 * Show a cell's output.
1419 *
1419 *
1420 * @method expand_output
1420 * @method expand_output
1421 * @param {Number} index A cell's numeric index
1421 * @param {Number} index A cell's numeric index
1422 */
1422 */
1423 Notebook.prototype.expand_output = function (index) {
1423 Notebook.prototype.expand_output = function (index) {
1424 var i = this.index_or_selected(index);
1424 var i = this.index_or_selected(index);
1425 var cell = this.get_cell(i);
1425 var cell = this.get_cell(i);
1426 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1426 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1427 cell.expand_output();
1427 cell.expand_output();
1428 this.set_dirty(true);
1428 this.set_dirty(true);
1429 }
1429 }
1430 };
1430 };
1431
1431
1432 /**
1432 /**
1433 * Expand each code cell's output area, and remove scrollbars.
1433 * Expand each code cell's output area, and remove scrollbars.
1434 *
1434 *
1435 * @method expand_all_output
1435 * @method expand_all_output
1436 */
1436 */
1437 Notebook.prototype.expand_all_output = function () {
1437 Notebook.prototype.expand_all_output = function () {
1438 this.get_cells().map(function (cell, i) {
1438 this.get_cells().map(function (cell, i) {
1439 if (cell instanceof codecell.CodeCell) {
1439 if (cell instanceof codecell.CodeCell) {
1440 cell.expand_output();
1440 cell.expand_output();
1441 }
1441 }
1442 });
1442 });
1443 // this should not be set if the `collapse` key is removed from nbformat
1443 // this should not be set if the `collapse` key is removed from nbformat
1444 this.set_dirty(true);
1444 this.set_dirty(true);
1445 };
1445 };
1446
1446
1447 /**
1447 /**
1448 * Clear the selected CodeCell's output area.
1448 * Clear the selected CodeCell's output area.
1449 *
1449 *
1450 * @method clear_output
1450 * @method clear_output
1451 * @param {Number} index A cell's numeric index
1451 * @param {Number} index A cell's numeric index
1452 */
1452 */
1453 Notebook.prototype.clear_output = function (index) {
1453 Notebook.prototype.clear_output = function (index) {
1454 var i = this.index_or_selected(index);
1454 var i = this.index_or_selected(index);
1455 var cell = this.get_cell(i);
1455 var cell = this.get_cell(i);
1456 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1456 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1457 cell.clear_output();
1457 cell.clear_output();
1458 this.set_dirty(true);
1458 this.set_dirty(true);
1459 }
1459 }
1460 };
1460 };
1461
1461
1462 /**
1462 /**
1463 * Clear each code cell's output area.
1463 * Clear each code cell's output area.
1464 *
1464 *
1465 * @method clear_all_output
1465 * @method clear_all_output
1466 */
1466 */
1467 Notebook.prototype.clear_all_output = function () {
1467 Notebook.prototype.clear_all_output = function () {
1468 this.get_cells().map(function (cell, i) {
1468 this.get_cells().map(function (cell, i) {
1469 if (cell instanceof codecell.CodeCell) {
1469 if (cell instanceof codecell.CodeCell) {
1470 cell.clear_output();
1470 cell.clear_output();
1471 }
1471 }
1472 });
1472 });
1473 this.set_dirty(true);
1473 this.set_dirty(true);
1474 };
1474 };
1475
1475
1476 /**
1476 /**
1477 * Scroll the selected CodeCell's output area.
1477 * Scroll the selected CodeCell's output area.
1478 *
1478 *
1479 * @method scroll_output
1479 * @method scroll_output
1480 * @param {Number} index A cell's numeric index
1480 * @param {Number} index A cell's numeric index
1481 */
1481 */
1482 Notebook.prototype.scroll_output = function (index) {
1482 Notebook.prototype.scroll_output = function (index) {
1483 var i = this.index_or_selected(index);
1483 var i = this.index_or_selected(index);
1484 var cell = this.get_cell(i);
1484 var cell = this.get_cell(i);
1485 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1485 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1486 cell.scroll_output();
1486 cell.scroll_output();
1487 this.set_dirty(true);
1487 this.set_dirty(true);
1488 }
1488 }
1489 };
1489 };
1490
1490
1491 /**
1491 /**
1492 * Expand each code cell's output area, and add a scrollbar for long output.
1492 * Expand each code cell's output area, and add a scrollbar for long output.
1493 *
1493 *
1494 * @method scroll_all_output
1494 * @method scroll_all_output
1495 */
1495 */
1496 Notebook.prototype.scroll_all_output = function () {
1496 Notebook.prototype.scroll_all_output = function () {
1497 this.get_cells().map(function (cell, i) {
1497 this.get_cells().map(function (cell, i) {
1498 if (cell instanceof codecell.CodeCell) {
1498 if (cell instanceof codecell.CodeCell) {
1499 cell.scroll_output();
1499 cell.scroll_output();
1500 }
1500 }
1501 });
1501 });
1502 // this should not be set if the `collapse` key is removed from nbformat
1502 // this should not be set if the `collapse` key is removed from nbformat
1503 this.set_dirty(true);
1503 this.set_dirty(true);
1504 };
1504 };
1505
1505
1506 /** Toggle whether a cell's output is collapsed or expanded.
1506 /** Toggle whether a cell's output is collapsed or expanded.
1507 *
1507 *
1508 * @method toggle_output
1508 * @method toggle_output
1509 * @param {Number} index A cell's numeric index
1509 * @param {Number} index A cell's numeric index
1510 */
1510 */
1511 Notebook.prototype.toggle_output = function (index) {
1511 Notebook.prototype.toggle_output = function (index) {
1512 var i = this.index_or_selected(index);
1512 var i = this.index_or_selected(index);
1513 var cell = this.get_cell(i);
1513 var cell = this.get_cell(i);
1514 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1514 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1515 cell.toggle_output();
1515 cell.toggle_output();
1516 this.set_dirty(true);
1516 this.set_dirty(true);
1517 }
1517 }
1518 };
1518 };
1519
1519
1520 /**
1520 /**
1521 * Hide/show the output of all cells.
1521 * Hide/show the output of all cells.
1522 *
1522 *
1523 * @method toggle_all_output
1523 * @method toggle_all_output
1524 */
1524 */
1525 Notebook.prototype.toggle_all_output = function () {
1525 Notebook.prototype.toggle_all_output = function () {
1526 this.get_cells().map(function (cell, i) {
1526 this.get_cells().map(function (cell, i) {
1527 if (cell instanceof codecell.CodeCell) {
1527 if (cell instanceof codecell.CodeCell) {
1528 cell.toggle_output();
1528 cell.toggle_output();
1529 }
1529 }
1530 });
1530 });
1531 // this should not be set if the `collapse` key is removed from nbformat
1531 // this should not be set if the `collapse` key is removed from nbformat
1532 this.set_dirty(true);
1532 this.set_dirty(true);
1533 };
1533 };
1534
1534
1535 /**
1535 /**
1536 * Toggle a scrollbar for long cell outputs.
1536 * Toggle a scrollbar for long cell outputs.
1537 *
1537 *
1538 * @method toggle_output_scroll
1538 * @method toggle_output_scroll
1539 * @param {Number} index A cell's numeric index
1539 * @param {Number} index A cell's numeric index
1540 */
1540 */
1541 Notebook.prototype.toggle_output_scroll = function (index) {
1541 Notebook.prototype.toggle_output_scroll = function (index) {
1542 var i = this.index_or_selected(index);
1542 var i = this.index_or_selected(index);
1543 var cell = this.get_cell(i);
1543 var cell = this.get_cell(i);
1544 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1544 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1545 cell.toggle_output_scroll();
1545 cell.toggle_output_scroll();
1546 this.set_dirty(true);
1546 this.set_dirty(true);
1547 }
1547 }
1548 };
1548 };
1549
1549
1550 /**
1550 /**
1551 * Toggle the scrolling of long output on all cells.
1551 * Toggle the scrolling of long output on all cells.
1552 *
1552 *
1553 * @method toggle_all_output_scrolling
1553 * @method toggle_all_output_scrolling
1554 */
1554 */
1555 Notebook.prototype.toggle_all_output_scroll = function () {
1555 Notebook.prototype.toggle_all_output_scroll = function () {
1556 this.get_cells().map(function (cell, i) {
1556 this.get_cells().map(function (cell, i) {
1557 if (cell instanceof codecell.CodeCell) {
1557 if (cell instanceof codecell.CodeCell) {
1558 cell.toggle_output_scroll();
1558 cell.toggle_output_scroll();
1559 }
1559 }
1560 });
1560 });
1561 // this should not be set if the `collapse` key is removed from nbformat
1561 // this should not be set if the `collapse` key is removed from nbformat
1562 this.set_dirty(true);
1562 this.set_dirty(true);
1563 };
1563 };
1564
1564
1565 // Other cell functions: line numbers, ...
1565 // Other cell functions: line numbers, ...
1566
1566
1567 /**
1567 /**
1568 * Toggle line numbers in the selected cell's input area.
1568 * Toggle line numbers in the selected cell's input area.
1569 *
1569 *
1570 * @method cell_toggle_line_numbers
1570 * @method cell_toggle_line_numbers
1571 */
1571 */
1572 Notebook.prototype.cell_toggle_line_numbers = function() {
1572 Notebook.prototype.cell_toggle_line_numbers = function() {
1573 this.get_selected_cell().toggle_line_numbers();
1573 this.get_selected_cell().toggle_line_numbers();
1574 };
1574 };
1575
1575
1576 /**
1576 /**
1577 * Set the codemirror mode for all code cells, including the default for
1577 * Set the codemirror mode for all code cells, including the default for
1578 * new code cells.
1578 * new code cells.
1579 *
1579 *
1580 * @method set_codemirror_mode
1580 * @method set_codemirror_mode
1581 */
1581 */
1582 Notebook.prototype.set_codemirror_mode = function(newmode){
1582 Notebook.prototype.set_codemirror_mode = function(newmode){
1583 if (newmode === this.codemirror_mode) {
1583 if (newmode === this.codemirror_mode) {
1584 return;
1584 return;
1585 }
1585 }
1586 this.codemirror_mode = newmode;
1586 this.codemirror_mode = newmode;
1587 codecell.CodeCell.options_default.cm_config.mode = newmode;
1587 codecell.CodeCell.options_default.cm_config.mode = newmode;
1588 var modename = newmode.mode || newmode.name || newmode;
1589
1588
1590 var that = this;
1589 var that = this;
1591 utils.requireCodeMirrorMode(modename, function () {
1590 utils.requireCodeMirrorMode(newmode, function (spec) {
1592 that.get_cells().map(function(cell, i) {
1591 that.get_cells().map(function(cell, i) {
1593 if (cell.cell_type === 'code'){
1592 if (cell.cell_type === 'code'){
1594 cell.code_mirror.setOption('mode', newmode);
1593 cell.code_mirror.setOption('mode', spec);
1595 // This is currently redundant, because cm_config ends up as
1594 // This is currently redundant, because cm_config ends up as
1596 // codemirror's own .options object, but I don't want to
1595 // codemirror's own .options object, but I don't want to
1597 // rely on that.
1596 // rely on that.
1598 cell.cm_config.mode = newmode;
1597 cell.cm_config.mode = spec;
1599 }
1598 }
1600 });
1599 });
1601 });
1600 });
1602 };
1601 };
1603
1602
1604 // Session related things
1603 // Session related things
1605
1604
1606 /**
1605 /**
1607 * Start a new session and set it on each code cell.
1606 * Start a new session and set it on each code cell.
1608 *
1607 *
1609 * @method start_session
1608 * @method start_session
1610 */
1609 */
1611 Notebook.prototype.start_session = function (kernel_name) {
1610 Notebook.prototype.start_session = function (kernel_name) {
1612 if (this._session_starting) {
1611 if (this._session_starting) {
1613 throw new session.SessionAlreadyStarting();
1612 throw new session.SessionAlreadyStarting();
1614 }
1613 }
1615 this._session_starting = true;
1614 this._session_starting = true;
1616
1615
1617 var options = {
1616 var options = {
1618 base_url: this.base_url,
1617 base_url: this.base_url,
1619 ws_url: this.ws_url,
1618 ws_url: this.ws_url,
1620 notebook_path: this.notebook_path,
1619 notebook_path: this.notebook_path,
1621 notebook_name: this.notebook_name,
1620 notebook_name: this.notebook_name,
1622 kernel_name: kernel_name,
1621 kernel_name: kernel_name,
1623 notebook: this
1622 notebook: this
1624 };
1623 };
1625
1624
1626 var success = $.proxy(this._session_started, this);
1625 var success = $.proxy(this._session_started, this);
1627 var failure = $.proxy(this._session_start_failed, this);
1626 var failure = $.proxy(this._session_start_failed, this);
1628
1627
1629 if (this.session !== null) {
1628 if (this.session !== null) {
1630 this.session.restart(options, success, failure);
1629 this.session.restart(options, success, failure);
1631 } else {
1630 } else {
1632 this.session = new session.Session(options);
1631 this.session = new session.Session(options);
1633 this.session.start(success, failure);
1632 this.session.start(success, failure);
1634 }
1633 }
1635 };
1634 };
1636
1635
1637
1636
1638 /**
1637 /**
1639 * Once a session is started, link the code cells to the kernel and pass the
1638 * Once a session is started, link the code cells to the kernel and pass the
1640 * comm manager to the widget manager
1639 * comm manager to the widget manager
1641 *
1640 *
1642 */
1641 */
1643 Notebook.prototype._session_started = function (){
1642 Notebook.prototype._session_started = function (){
1644 this._session_starting = false;
1643 this._session_starting = false;
1645 this.kernel = this.session.kernel;
1644 this.kernel = this.session.kernel;
1646 var ncells = this.ncells();
1645 var ncells = this.ncells();
1647 for (var i=0; i<ncells; i++) {
1646 for (var i=0; i<ncells; i++) {
1648 var cell = this.get_cell(i);
1647 var cell = this.get_cell(i);
1649 if (cell instanceof codecell.CodeCell) {
1648 if (cell instanceof codecell.CodeCell) {
1650 cell.set_kernel(this.session.kernel);
1649 cell.set_kernel(this.session.kernel);
1651 }
1650 }
1652 }
1651 }
1653 };
1652 };
1654 Notebook.prototype._session_start_failed = function (jqxhr, status, error){
1653 Notebook.prototype._session_start_failed = function (jqxhr, status, error){
1655 this._session_starting = false;
1654 this._session_starting = false;
1656 utils.log_ajax_error(jqxhr, status, error);
1655 utils.log_ajax_error(jqxhr, status, error);
1657 };
1656 };
1658
1657
1659 /**
1658 /**
1660 * Prompt the user to restart the IPython kernel.
1659 * Prompt the user to restart the IPython kernel.
1661 *
1660 *
1662 * @method restart_kernel
1661 * @method restart_kernel
1663 */
1662 */
1664 Notebook.prototype.restart_kernel = function () {
1663 Notebook.prototype.restart_kernel = function () {
1665 var that = this;
1664 var that = this;
1666 dialog.modal({
1665 dialog.modal({
1667 notebook: this,
1666 notebook: this,
1668 keyboard_manager: this.keyboard_manager,
1667 keyboard_manager: this.keyboard_manager,
1669 title : "Restart kernel or continue running?",
1668 title : "Restart kernel or continue running?",
1670 body : $("<p/>").text(
1669 body : $("<p/>").text(
1671 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1670 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1672 ),
1671 ),
1673 buttons : {
1672 buttons : {
1674 "Continue running" : {},
1673 "Continue running" : {},
1675 "Restart" : {
1674 "Restart" : {
1676 "class" : "btn-danger",
1675 "class" : "btn-danger",
1677 "click" : function() {
1676 "click" : function() {
1678 that.kernel.restart();
1677 that.kernel.restart();
1679 }
1678 }
1680 }
1679 }
1681 }
1680 }
1682 });
1681 });
1683 };
1682 };
1684
1683
1685 /**
1684 /**
1686 * Execute or render cell outputs and go into command mode.
1685 * Execute or render cell outputs and go into command mode.
1687 *
1686 *
1688 * @method execute_cell
1687 * @method execute_cell
1689 */
1688 */
1690 Notebook.prototype.execute_cell = function () {
1689 Notebook.prototype.execute_cell = function () {
1691 /**
1690 /**
1692 * mode = shift, ctrl, alt
1691 * mode = shift, ctrl, alt
1693 */
1692 */
1694 var cell = this.get_selected_cell();
1693 var cell = this.get_selected_cell();
1695
1694
1696 cell.execute();
1695 cell.execute();
1697 this.command_mode();
1696 this.command_mode();
1698 this.set_dirty(true);
1697 this.set_dirty(true);
1699 };
1698 };
1700
1699
1701 /**
1700 /**
1702 * Execute or render cell outputs and insert a new cell below.
1701 * Execute or render cell outputs and insert a new cell below.
1703 *
1702 *
1704 * @method execute_cell_and_insert_below
1703 * @method execute_cell_and_insert_below
1705 */
1704 */
1706 Notebook.prototype.execute_cell_and_insert_below = function () {
1705 Notebook.prototype.execute_cell_and_insert_below = function () {
1707 var cell = this.get_selected_cell();
1706 var cell = this.get_selected_cell();
1708 var cell_index = this.find_cell_index(cell);
1707 var cell_index = this.find_cell_index(cell);
1709
1708
1710 cell.execute();
1709 cell.execute();
1711
1710
1712 // If we are at the end always insert a new cell and return
1711 // If we are at the end always insert a new cell and return
1713 if (cell_index === (this.ncells()-1)) {
1712 if (cell_index === (this.ncells()-1)) {
1714 this.command_mode();
1713 this.command_mode();
1715 this.insert_cell_below();
1714 this.insert_cell_below();
1716 this.select(cell_index+1);
1715 this.select(cell_index+1);
1717 this.edit_mode();
1716 this.edit_mode();
1718 this.scroll_to_bottom();
1717 this.scroll_to_bottom();
1719 this.set_dirty(true);
1718 this.set_dirty(true);
1720 return;
1719 return;
1721 }
1720 }
1722
1721
1723 this.command_mode();
1722 this.command_mode();
1724 this.insert_cell_below();
1723 this.insert_cell_below();
1725 this.select(cell_index+1);
1724 this.select(cell_index+1);
1726 this.edit_mode();
1725 this.edit_mode();
1727 this.set_dirty(true);
1726 this.set_dirty(true);
1728 };
1727 };
1729
1728
1730 /**
1729 /**
1731 * Execute or render cell outputs and select the next cell.
1730 * Execute or render cell outputs and select the next cell.
1732 *
1731 *
1733 * @method execute_cell_and_select_below
1732 * @method execute_cell_and_select_below
1734 */
1733 */
1735 Notebook.prototype.execute_cell_and_select_below = function () {
1734 Notebook.prototype.execute_cell_and_select_below = function () {
1736
1735
1737 var cell = this.get_selected_cell();
1736 var cell = this.get_selected_cell();
1738 var cell_index = this.find_cell_index(cell);
1737 var cell_index = this.find_cell_index(cell);
1739
1738
1740 cell.execute();
1739 cell.execute();
1741
1740
1742 // If we are at the end always insert a new cell and return
1741 // If we are at the end always insert a new cell and return
1743 if (cell_index === (this.ncells()-1)) {
1742 if (cell_index === (this.ncells()-1)) {
1744 this.command_mode();
1743 this.command_mode();
1745 this.insert_cell_below();
1744 this.insert_cell_below();
1746 this.select(cell_index+1);
1745 this.select(cell_index+1);
1747 this.edit_mode();
1746 this.edit_mode();
1748 this.scroll_to_bottom();
1747 this.scroll_to_bottom();
1749 this.set_dirty(true);
1748 this.set_dirty(true);
1750 return;
1749 return;
1751 }
1750 }
1752
1751
1753 this.command_mode();
1752 this.command_mode();
1754 this.select(cell_index+1);
1753 this.select(cell_index+1);
1755 this.focus_cell();
1754 this.focus_cell();
1756 this.set_dirty(true);
1755 this.set_dirty(true);
1757 };
1756 };
1758
1757
1759 /**
1758 /**
1760 * Execute all cells below the selected cell.
1759 * Execute all cells below the selected cell.
1761 *
1760 *
1762 * @method execute_cells_below
1761 * @method execute_cells_below
1763 */
1762 */
1764 Notebook.prototype.execute_cells_below = function () {
1763 Notebook.prototype.execute_cells_below = function () {
1765 this.execute_cell_range(this.get_selected_index(), this.ncells());
1764 this.execute_cell_range(this.get_selected_index(), this.ncells());
1766 this.scroll_to_bottom();
1765 this.scroll_to_bottom();
1767 };
1766 };
1768
1767
1769 /**
1768 /**
1770 * Execute all cells above the selected cell.
1769 * Execute all cells above the selected cell.
1771 *
1770 *
1772 * @method execute_cells_above
1771 * @method execute_cells_above
1773 */
1772 */
1774 Notebook.prototype.execute_cells_above = function () {
1773 Notebook.prototype.execute_cells_above = function () {
1775 this.execute_cell_range(0, this.get_selected_index());
1774 this.execute_cell_range(0, this.get_selected_index());
1776 };
1775 };
1777
1776
1778 /**
1777 /**
1779 * Execute all cells.
1778 * Execute all cells.
1780 *
1779 *
1781 * @method execute_all_cells
1780 * @method execute_all_cells
1782 */
1781 */
1783 Notebook.prototype.execute_all_cells = function () {
1782 Notebook.prototype.execute_all_cells = function () {
1784 this.execute_cell_range(0, this.ncells());
1783 this.execute_cell_range(0, this.ncells());
1785 this.scroll_to_bottom();
1784 this.scroll_to_bottom();
1786 };
1785 };
1787
1786
1788 /**
1787 /**
1789 * Execute a contiguous range of cells.
1788 * Execute a contiguous range of cells.
1790 *
1789 *
1791 * @method execute_cell_range
1790 * @method execute_cell_range
1792 * @param {Number} start Index of the first cell to execute (inclusive)
1791 * @param {Number} start Index of the first cell to execute (inclusive)
1793 * @param {Number} end Index of the last cell to execute (exclusive)
1792 * @param {Number} end Index of the last cell to execute (exclusive)
1794 */
1793 */
1795 Notebook.prototype.execute_cell_range = function (start, end) {
1794 Notebook.prototype.execute_cell_range = function (start, end) {
1796 this.command_mode();
1795 this.command_mode();
1797 for (var i=start; i<end; i++) {
1796 for (var i=start; i<end; i++) {
1798 this.select(i);
1797 this.select(i);
1799 this.execute_cell();
1798 this.execute_cell();
1800 }
1799 }
1801 };
1800 };
1802
1801
1803 // Persistance and loading
1802 // Persistance and loading
1804
1803
1805 /**
1804 /**
1806 * Getter method for this notebook's name.
1805 * Getter method for this notebook's name.
1807 *
1806 *
1808 * @method get_notebook_name
1807 * @method get_notebook_name
1809 * @return {String} This notebook's name (excluding file extension)
1808 * @return {String} This notebook's name (excluding file extension)
1810 */
1809 */
1811 Notebook.prototype.get_notebook_name = function () {
1810 Notebook.prototype.get_notebook_name = function () {
1812 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1811 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1813 return nbname;
1812 return nbname;
1814 };
1813 };
1815
1814
1816 /**
1815 /**
1817 * Setter method for this notebook's name.
1816 * Setter method for this notebook's name.
1818 *
1817 *
1819 * @method set_notebook_name
1818 * @method set_notebook_name
1820 * @param {String} name A new name for this notebook
1819 * @param {String} name A new name for this notebook
1821 */
1820 */
1822 Notebook.prototype.set_notebook_name = function (name) {
1821 Notebook.prototype.set_notebook_name = function (name) {
1823 var parent = utils.url_path_split(this.notebook_path)[0];
1822 var parent = utils.url_path_split(this.notebook_path)[0];
1824 this.notebook_name = name;
1823 this.notebook_name = name;
1825 this.notebook_path = utils.url_path_join(parent, name);
1824 this.notebook_path = utils.url_path_join(parent, name);
1826 };
1825 };
1827
1826
1828 /**
1827 /**
1829 * Check that a notebook's name is valid.
1828 * Check that a notebook's name is valid.
1830 *
1829 *
1831 * @method test_notebook_name
1830 * @method test_notebook_name
1832 * @param {String} nbname A name for this notebook
1831 * @param {String} nbname A name for this notebook
1833 * @return {Boolean} True if the name is valid, false if invalid
1832 * @return {Boolean} True if the name is valid, false if invalid
1834 */
1833 */
1835 Notebook.prototype.test_notebook_name = function (nbname) {
1834 Notebook.prototype.test_notebook_name = function (nbname) {
1836 nbname = nbname || '';
1835 nbname = nbname || '';
1837 if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) {
1836 if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) {
1838 return true;
1837 return true;
1839 } else {
1838 } else {
1840 return false;
1839 return false;
1841 }
1840 }
1842 };
1841 };
1843
1842
1844 /**
1843 /**
1845 * Load a notebook from JSON (.ipynb).
1844 * Load a notebook from JSON (.ipynb).
1846 *
1845 *
1847 * @method fromJSON
1846 * @method fromJSON
1848 * @param {Object} data JSON representation of a notebook
1847 * @param {Object} data JSON representation of a notebook
1849 */
1848 */
1850 Notebook.prototype.fromJSON = function (data) {
1849 Notebook.prototype.fromJSON = function (data) {
1851
1850
1852 var content = data.content;
1851 var content = data.content;
1853 var ncells = this.ncells();
1852 var ncells = this.ncells();
1854 var i;
1853 var i;
1855 for (i=0; i<ncells; i++) {
1854 for (i=0; i<ncells; i++) {
1856 // Always delete cell 0 as they get renumbered as they are deleted.
1855 // Always delete cell 0 as they get renumbered as they are deleted.
1857 this.delete_cell(0);
1856 this.delete_cell(0);
1858 }
1857 }
1859 // Save the metadata and name.
1858 // Save the metadata and name.
1860 this.metadata = content.metadata;
1859 this.metadata = content.metadata;
1861 this.notebook_name = data.name;
1860 this.notebook_name = data.name;
1862 this.notebook_path = data.path;
1861 this.notebook_path = data.path;
1863 var trusted = true;
1862 var trusted = true;
1864
1863
1865 // Trigger an event changing the kernel spec - this will set the default
1864 // Trigger an event changing the kernel spec - this will set the default
1866 // codemirror mode
1865 // codemirror mode
1867 if (this.metadata.kernelspec !== undefined) {
1866 if (this.metadata.kernelspec !== undefined) {
1868 this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
1867 this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
1869 }
1868 }
1870
1869
1871 // Set the codemirror mode from language_info metadata
1870 // Set the codemirror mode from language_info metadata
1872 if (this.metadata.language_info !== undefined) {
1871 if (this.metadata.language_info !== undefined) {
1873 var langinfo = this.metadata.language_info;
1872 var langinfo = this.metadata.language_info;
1874 // Mode 'null' should be plain, unhighlighted text.
1873 // Mode 'null' should be plain, unhighlighted text.
1875 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
1874 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
1876 this.set_codemirror_mode(cm_mode);
1875 this.set_codemirror_mode(cm_mode);
1877 }
1876 }
1878
1877
1879 var new_cells = content.cells;
1878 var new_cells = content.cells;
1880 ncells = new_cells.length;
1879 ncells = new_cells.length;
1881 var cell_data = null;
1880 var cell_data = null;
1882 var new_cell = null;
1881 var new_cell = null;
1883 for (i=0; i<ncells; i++) {
1882 for (i=0; i<ncells; i++) {
1884 cell_data = new_cells[i];
1883 cell_data = new_cells[i];
1885 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1884 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1886 new_cell.fromJSON(cell_data);
1885 new_cell.fromJSON(cell_data);
1887 if (new_cell.cell_type == 'code' && !new_cell.output_area.trusted) {
1886 if (new_cell.cell_type == 'code' && !new_cell.output_area.trusted) {
1888 trusted = false;
1887 trusted = false;
1889 }
1888 }
1890 }
1889 }
1891 if (trusted !== this.trusted) {
1890 if (trusted !== this.trusted) {
1892 this.trusted = trusted;
1891 this.trusted = trusted;
1893 this.events.trigger("trust_changed.Notebook", trusted);
1892 this.events.trigger("trust_changed.Notebook", trusted);
1894 }
1893 }
1895 };
1894 };
1896
1895
1897 /**
1896 /**
1898 * Dump this notebook into a JSON-friendly object.
1897 * Dump this notebook into a JSON-friendly object.
1899 *
1898 *
1900 * @method toJSON
1899 * @method toJSON
1901 * @return {Object} A JSON-friendly representation of this notebook.
1900 * @return {Object} A JSON-friendly representation of this notebook.
1902 */
1901 */
1903 Notebook.prototype.toJSON = function () {
1902 Notebook.prototype.toJSON = function () {
1904 /**
1903 /**
1905 * remove the conversion indicator, which only belongs in-memory
1904 * remove the conversion indicator, which only belongs in-memory
1906 */
1905 */
1907 delete this.metadata.orig_nbformat;
1906 delete this.metadata.orig_nbformat;
1908 delete this.metadata.orig_nbformat_minor;
1907 delete this.metadata.orig_nbformat_minor;
1909
1908
1910 var cells = this.get_cells();
1909 var cells = this.get_cells();
1911 var ncells = cells.length;
1910 var ncells = cells.length;
1912 var cell_array = new Array(ncells);
1911 var cell_array = new Array(ncells);
1913 var trusted = true;
1912 var trusted = true;
1914 for (var i=0; i<ncells; i++) {
1913 for (var i=0; i<ncells; i++) {
1915 var cell = cells[i];
1914 var cell = cells[i];
1916 if (cell.cell_type == 'code' && !cell.output_area.trusted) {
1915 if (cell.cell_type == 'code' && !cell.output_area.trusted) {
1917 trusted = false;
1916 trusted = false;
1918 }
1917 }
1919 cell_array[i] = cell.toJSON();
1918 cell_array[i] = cell.toJSON();
1920 }
1919 }
1921 var data = {
1920 var data = {
1922 cells: cell_array,
1921 cells: cell_array,
1923 metadata: this.metadata,
1922 metadata: this.metadata,
1924 nbformat: this.nbformat,
1923 nbformat: this.nbformat,
1925 nbformat_minor: this.nbformat_minor
1924 nbformat_minor: this.nbformat_minor
1926 };
1925 };
1927 if (trusted != this.trusted) {
1926 if (trusted != this.trusted) {
1928 this.trusted = trusted;
1927 this.trusted = trusted;
1929 this.events.trigger("trust_changed.Notebook", trusted);
1928 this.events.trigger("trust_changed.Notebook", trusted);
1930 }
1929 }
1931 return data;
1930 return data;
1932 };
1931 };
1933
1932
1934 /**
1933 /**
1935 * Start an autosave timer, for periodically saving the notebook.
1934 * Start an autosave timer, for periodically saving the notebook.
1936 *
1935 *
1937 * @method set_autosave_interval
1936 * @method set_autosave_interval
1938 * @param {Integer} interval the autosave interval in milliseconds
1937 * @param {Integer} interval the autosave interval in milliseconds
1939 */
1938 */
1940 Notebook.prototype.set_autosave_interval = function (interval) {
1939 Notebook.prototype.set_autosave_interval = function (interval) {
1941 var that = this;
1940 var that = this;
1942 // clear previous interval, so we don't get simultaneous timers
1941 // clear previous interval, so we don't get simultaneous timers
1943 if (this.autosave_timer) {
1942 if (this.autosave_timer) {
1944 clearInterval(this.autosave_timer);
1943 clearInterval(this.autosave_timer);
1945 }
1944 }
1946 if (!this.writable) {
1945 if (!this.writable) {
1947 // disable autosave if not writable
1946 // disable autosave if not writable
1948 interval = 0;
1947 interval = 0;
1949 }
1948 }
1950
1949
1951 this.autosave_interval = this.minimum_autosave_interval = interval;
1950 this.autosave_interval = this.minimum_autosave_interval = interval;
1952 if (interval) {
1951 if (interval) {
1953 this.autosave_timer = setInterval(function() {
1952 this.autosave_timer = setInterval(function() {
1954 if (that.dirty) {
1953 if (that.dirty) {
1955 that.save_notebook();
1954 that.save_notebook();
1956 }
1955 }
1957 }, interval);
1956 }, interval);
1958 this.events.trigger("autosave_enabled.Notebook", interval);
1957 this.events.trigger("autosave_enabled.Notebook", interval);
1959 } else {
1958 } else {
1960 this.autosave_timer = null;
1959 this.autosave_timer = null;
1961 this.events.trigger("autosave_disabled.Notebook");
1960 this.events.trigger("autosave_disabled.Notebook");
1962 }
1961 }
1963 };
1962 };
1964
1963
1965 /**
1964 /**
1966 * Save this notebook on the server. This becomes a notebook instance's
1965 * Save this notebook on the server. This becomes a notebook instance's
1967 * .save_notebook method *after* the entire notebook has been loaded.
1966 * .save_notebook method *after* the entire notebook has been loaded.
1968 *
1967 *
1969 * @method save_notebook
1968 * @method save_notebook
1970 */
1969 */
1971 Notebook.prototype.save_notebook = function () {
1970 Notebook.prototype.save_notebook = function () {
1972 if (!this._fully_loaded) {
1971 if (!this._fully_loaded) {
1973 this.events.trigger('notebook_save_failed.Notebook',
1972 this.events.trigger('notebook_save_failed.Notebook',
1974 new Error("Load failed, save is disabled")
1973 new Error("Load failed, save is disabled")
1975 );
1974 );
1976 return;
1975 return;
1977 } else if (!this.writable) {
1976 } else if (!this.writable) {
1978 this.events.trigger('notebook_save_failed.Notebook',
1977 this.events.trigger('notebook_save_failed.Notebook',
1979 new Error("Notebook is read-only")
1978 new Error("Notebook is read-only")
1980 );
1979 );
1981 return;
1980 return;
1982 }
1981 }
1983
1982
1984 // Create a JSON model to be sent to the server.
1983 // Create a JSON model to be sent to the server.
1985 var model = {
1984 var model = {
1986 type : "notebook",
1985 type : "notebook",
1987 content : this.toJSON()
1986 content : this.toJSON()
1988 };
1987 };
1989 // time the ajax call for autosave tuning purposes.
1988 // time the ajax call for autosave tuning purposes.
1990 var start = new Date().getTime();
1989 var start = new Date().getTime();
1991
1990
1992 var that = this;
1991 var that = this;
1993 return this.contents.save(this.notebook_path, model).then(
1992 return this.contents.save(this.notebook_path, model).then(
1994 $.proxy(this.save_notebook_success, this, start),
1993 $.proxy(this.save_notebook_success, this, start),
1995 function (error) {
1994 function (error) {
1996 that.events.trigger('notebook_save_failed.Notebook', error);
1995 that.events.trigger('notebook_save_failed.Notebook', error);
1997 }
1996 }
1998 );
1997 );
1999 };
1998 };
2000
1999
2001 /**
2000 /**
2002 * Success callback for saving a notebook.
2001 * Success callback for saving a notebook.
2003 *
2002 *
2004 * @method save_notebook_success
2003 * @method save_notebook_success
2005 * @param {Integer} start Time when the save request start
2004 * @param {Integer} start Time when the save request start
2006 * @param {Object} data JSON representation of a notebook
2005 * @param {Object} data JSON representation of a notebook
2007 */
2006 */
2008 Notebook.prototype.save_notebook_success = function (start, data) {
2007 Notebook.prototype.save_notebook_success = function (start, data) {
2009 this.set_dirty(false);
2008 this.set_dirty(false);
2010 if (data.message) {
2009 if (data.message) {
2011 // save succeeded, but validation failed.
2010 // save succeeded, but validation failed.
2012 var body = $("<div>");
2011 var body = $("<div>");
2013 var title = "Notebook validation failed";
2012 var title = "Notebook validation failed";
2014
2013
2015 body.append($("<p>").text(
2014 body.append($("<p>").text(
2016 "The save operation succeeded," +
2015 "The save operation succeeded," +
2017 " but the notebook does not appear to be valid." +
2016 " but the notebook does not appear to be valid." +
2018 " The validation error was:"
2017 " The validation error was:"
2019 )).append($("<div>").addClass("validation-error").append(
2018 )).append($("<div>").addClass("validation-error").append(
2020 $("<pre>").text(data.message)
2019 $("<pre>").text(data.message)
2021 ));
2020 ));
2022 dialog.modal({
2021 dialog.modal({
2023 notebook: this,
2022 notebook: this,
2024 keyboard_manager: this.keyboard_manager,
2023 keyboard_manager: this.keyboard_manager,
2025 title: title,
2024 title: title,
2026 body: body,
2025 body: body,
2027 buttons : {
2026 buttons : {
2028 OK : {
2027 OK : {
2029 "class" : "btn-primary"
2028 "class" : "btn-primary"
2030 }
2029 }
2031 }
2030 }
2032 });
2031 });
2033 }
2032 }
2034 this.events.trigger('notebook_saved.Notebook');
2033 this.events.trigger('notebook_saved.Notebook');
2035 this._update_autosave_interval(start);
2034 this._update_autosave_interval(start);
2036 if (this._checkpoint_after_save) {
2035 if (this._checkpoint_after_save) {
2037 this.create_checkpoint();
2036 this.create_checkpoint();
2038 this._checkpoint_after_save = false;
2037 this._checkpoint_after_save = false;
2039 }
2038 }
2040 };
2039 };
2041
2040
2042 /**
2041 /**
2043 * update the autosave interval based on how long the last save took
2042 * update the autosave interval based on how long the last save took
2044 *
2043 *
2045 * @method _update_autosave_interval
2044 * @method _update_autosave_interval
2046 * @param {Integer} timestamp when the save request started
2045 * @param {Integer} timestamp when the save request started
2047 */
2046 */
2048 Notebook.prototype._update_autosave_interval = function (start) {
2047 Notebook.prototype._update_autosave_interval = function (start) {
2049 var duration = (new Date().getTime() - start);
2048 var duration = (new Date().getTime() - start);
2050 if (this.autosave_interval) {
2049 if (this.autosave_interval) {
2051 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
2050 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
2052 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
2051 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
2053 // round to 10 seconds, otherwise we will be setting a new interval too often
2052 // round to 10 seconds, otherwise we will be setting a new interval too often
2054 interval = 10000 * Math.round(interval / 10000);
2053 interval = 10000 * Math.round(interval / 10000);
2055 // set new interval, if it's changed
2054 // set new interval, if it's changed
2056 if (interval != this.autosave_interval) {
2055 if (interval != this.autosave_interval) {
2057 this.set_autosave_interval(interval);
2056 this.set_autosave_interval(interval);
2058 }
2057 }
2059 }
2058 }
2060 };
2059 };
2061
2060
2062 /**
2061 /**
2063 * Explicitly trust the output of this notebook.
2062 * Explicitly trust the output of this notebook.
2064 *
2063 *
2065 * @method trust_notebook
2064 * @method trust_notebook
2066 */
2065 */
2067 Notebook.prototype.trust_notebook = function () {
2066 Notebook.prototype.trust_notebook = function () {
2068 var body = $("<div>").append($("<p>")
2067 var body = $("<div>").append($("<p>")
2069 .text("A trusted IPython notebook may execute hidden malicious code ")
2068 .text("A trusted IPython notebook may execute hidden malicious code ")
2070 .append($("<strong>")
2069 .append($("<strong>")
2071 .append(
2070 .append(
2072 $("<em>").text("when you open it")
2071 $("<em>").text("when you open it")
2073 )
2072 )
2074 ).append(".").append(
2073 ).append(".").append(
2075 " Selecting trust will immediately reload this notebook in a trusted state."
2074 " Selecting trust will immediately reload this notebook in a trusted state."
2076 ).append(
2075 ).append(
2077 " For more information, see the "
2076 " For more information, see the "
2078 ).append($("<a>").attr("href", "http://ipython.org/ipython-doc/2/notebook/security.html")
2077 ).append($("<a>").attr("href", "http://ipython.org/ipython-doc/2/notebook/security.html")
2079 .text("IPython security documentation")
2078 .text("IPython security documentation")
2080 ).append(".")
2079 ).append(".")
2081 );
2080 );
2082
2081
2083 var nb = this;
2082 var nb = this;
2084 dialog.modal({
2083 dialog.modal({
2085 notebook: this,
2084 notebook: this,
2086 keyboard_manager: this.keyboard_manager,
2085 keyboard_manager: this.keyboard_manager,
2087 title: "Trust this notebook?",
2086 title: "Trust this notebook?",
2088 body: body,
2087 body: body,
2089
2088
2090 buttons: {
2089 buttons: {
2091 Cancel : {},
2090 Cancel : {},
2092 Trust : {
2091 Trust : {
2093 class : "btn-danger",
2092 class : "btn-danger",
2094 click : function () {
2093 click : function () {
2095 var cells = nb.get_cells();
2094 var cells = nb.get_cells();
2096 for (var i = 0; i < cells.length; i++) {
2095 for (var i = 0; i < cells.length; i++) {
2097 var cell = cells[i];
2096 var cell = cells[i];
2098 if (cell.cell_type == 'code') {
2097 if (cell.cell_type == 'code') {
2099 cell.output_area.trusted = true;
2098 cell.output_area.trusted = true;
2100 }
2099 }
2101 }
2100 }
2102 nb.events.on('notebook_saved.Notebook', function () {
2101 nb.events.on('notebook_saved.Notebook', function () {
2103 window.location.reload();
2102 window.location.reload();
2104 });
2103 });
2105 nb.save_notebook();
2104 nb.save_notebook();
2106 }
2105 }
2107 }
2106 }
2108 }
2107 }
2109 });
2108 });
2110 };
2109 };
2111
2110
2112 Notebook.prototype.copy_notebook = function () {
2111 Notebook.prototype.copy_notebook = function () {
2113 var that = this;
2112 var that = this;
2114 var base_url = this.base_url;
2113 var base_url = this.base_url;
2115 var w = window.open();
2114 var w = window.open();
2116 var parent = utils.url_path_split(this.notebook_path)[0];
2115 var parent = utils.url_path_split(this.notebook_path)[0];
2117 this.contents.copy(this.notebook_path, parent).then(
2116 this.contents.copy(this.notebook_path, parent).then(
2118 function (data) {
2117 function (data) {
2119 w.location = utils.url_join_encode(
2118 w.location = utils.url_join_encode(
2120 base_url, 'notebooks', data.path
2119 base_url, 'notebooks', data.path
2121 );
2120 );
2122 },
2121 },
2123 function(error) {
2122 function(error) {
2124 w.close();
2123 w.close();
2125 that.events.trigger('notebook_copy_failed', error);
2124 that.events.trigger('notebook_copy_failed', error);
2126 }
2125 }
2127 );
2126 );
2128 };
2127 };
2129
2128
2130 Notebook.prototype.rename = function (new_name) {
2129 Notebook.prototype.rename = function (new_name) {
2131 if (!new_name.match(/\.ipynb$/)) {
2130 if (!new_name.match(/\.ipynb$/)) {
2132 new_name = new_name + ".ipynb";
2131 new_name = new_name + ".ipynb";
2133 }
2132 }
2134
2133
2135 var that = this;
2134 var that = this;
2136 var parent = utils.url_path_split(this.notebook_path)[0];
2135 var parent = utils.url_path_split(this.notebook_path)[0];
2137 var new_path = utils.url_path_join(parent, new_name);
2136 var new_path = utils.url_path_join(parent, new_name);
2138 return this.contents.rename(this.notebook_path, new_path).then(
2137 return this.contents.rename(this.notebook_path, new_path).then(
2139 function (json) {
2138 function (json) {
2140 that.notebook_name = json.name;
2139 that.notebook_name = json.name;
2141 that.notebook_path = json.path;
2140 that.notebook_path = json.path;
2142 that.session.rename_notebook(json.path);
2141 that.session.rename_notebook(json.path);
2143 that.events.trigger('notebook_renamed.Notebook', json);
2142 that.events.trigger('notebook_renamed.Notebook', json);
2144 }
2143 }
2145 );
2144 );
2146 };
2145 };
2147
2146
2148 Notebook.prototype.delete = function () {
2147 Notebook.prototype.delete = function () {
2149 this.contents.delete(this.notebook_path);
2148 this.contents.delete(this.notebook_path);
2150 };
2149 };
2151
2150
2152 /**
2151 /**
2153 * Request a notebook's data from the server.
2152 * Request a notebook's data from the server.
2154 *
2153 *
2155 * @method load_notebook
2154 * @method load_notebook
2156 * @param {String} notebook_path A notebook to load
2155 * @param {String} notebook_path A notebook to load
2157 */
2156 */
2158 Notebook.prototype.load_notebook = function (notebook_path) {
2157 Notebook.prototype.load_notebook = function (notebook_path) {
2159 this.notebook_path = notebook_path;
2158 this.notebook_path = notebook_path;
2160 this.notebook_name = utils.url_path_split(this.notebook_path)[1];
2159 this.notebook_name = utils.url_path_split(this.notebook_path)[1];
2161 this.events.trigger('notebook_loading.Notebook');
2160 this.events.trigger('notebook_loading.Notebook');
2162 this.contents.get(notebook_path, {type: 'notebook'}).then(
2161 this.contents.get(notebook_path, {type: 'notebook'}).then(
2163 $.proxy(this.load_notebook_success, this),
2162 $.proxy(this.load_notebook_success, this),
2164 $.proxy(this.load_notebook_error, this)
2163 $.proxy(this.load_notebook_error, this)
2165 );
2164 );
2166 };
2165 };
2167
2166
2168 /**
2167 /**
2169 * Success callback for loading a notebook from the server.
2168 * Success callback for loading a notebook from the server.
2170 *
2169 *
2171 * Load notebook data from the JSON response.
2170 * Load notebook data from the JSON response.
2172 *
2171 *
2173 * @method load_notebook_success
2172 * @method load_notebook_success
2174 * @param {Object} data JSON representation of a notebook
2173 * @param {Object} data JSON representation of a notebook
2175 */
2174 */
2176 Notebook.prototype.load_notebook_success = function (data) {
2175 Notebook.prototype.load_notebook_success = function (data) {
2177 var failed, msg;
2176 var failed, msg;
2178 try {
2177 try {
2179 this.fromJSON(data);
2178 this.fromJSON(data);
2180 } catch (e) {
2179 } catch (e) {
2181 failed = e;
2180 failed = e;
2182 console.log("Notebook failed to load from JSON:", e);
2181 console.log("Notebook failed to load from JSON:", e);
2183 }
2182 }
2184 if (failed || data.message) {
2183 if (failed || data.message) {
2185 // *either* fromJSON failed or validation failed
2184 // *either* fromJSON failed or validation failed
2186 var body = $("<div>");
2185 var body = $("<div>");
2187 var title;
2186 var title;
2188 if (failed) {
2187 if (failed) {
2189 title = "Notebook failed to load";
2188 title = "Notebook failed to load";
2190 body.append($("<p>").text(
2189 body.append($("<p>").text(
2191 "The error was: "
2190 "The error was: "
2192 )).append($("<div>").addClass("js-error").text(
2191 )).append($("<div>").addClass("js-error").text(
2193 failed.toString()
2192 failed.toString()
2194 )).append($("<p>").text(
2193 )).append($("<p>").text(
2195 "See the error console for details."
2194 "See the error console for details."
2196 ));
2195 ));
2197 } else {
2196 } else {
2198 title = "Notebook validation failed";
2197 title = "Notebook validation failed";
2199 }
2198 }
2200
2199
2201 if (data.message) {
2200 if (data.message) {
2202 if (failed) {
2201 if (failed) {
2203 msg = "The notebook also failed validation:";
2202 msg = "The notebook also failed validation:";
2204 } else {
2203 } else {
2205 msg = "An invalid notebook may not function properly." +
2204 msg = "An invalid notebook may not function properly." +
2206 " The validation error was:";
2205 " The validation error was:";
2207 }
2206 }
2208 body.append($("<p>").text(
2207 body.append($("<p>").text(
2209 msg
2208 msg
2210 )).append($("<div>").addClass("validation-error").append(
2209 )).append($("<div>").addClass("validation-error").append(
2211 $("<pre>").text(data.message)
2210 $("<pre>").text(data.message)
2212 ));
2211 ));
2213 }
2212 }
2214
2213
2215 dialog.modal({
2214 dialog.modal({
2216 notebook: this,
2215 notebook: this,
2217 keyboard_manager: this.keyboard_manager,
2216 keyboard_manager: this.keyboard_manager,
2218 title: title,
2217 title: title,
2219 body: body,
2218 body: body,
2220 buttons : {
2219 buttons : {
2221 OK : {
2220 OK : {
2222 "class" : "btn-primary"
2221 "class" : "btn-primary"
2223 }
2222 }
2224 }
2223 }
2225 });
2224 });
2226 }
2225 }
2227 if (this.ncells() === 0) {
2226 if (this.ncells() === 0) {
2228 this.insert_cell_below('code');
2227 this.insert_cell_below('code');
2229 this.edit_mode(0);
2228 this.edit_mode(0);
2230 } else {
2229 } else {
2231 this.select(0);
2230 this.select(0);
2232 this.handle_command_mode(this.get_cell(0));
2231 this.handle_command_mode(this.get_cell(0));
2233 }
2232 }
2234 this.set_dirty(false);
2233 this.set_dirty(false);
2235 this.scroll_to_top();
2234 this.scroll_to_top();
2236 this.writable = data.writable || false;
2235 this.writable = data.writable || false;
2237 var nbmodel = data.content;
2236 var nbmodel = data.content;
2238 var orig_nbformat = nbmodel.metadata.orig_nbformat;
2237 var orig_nbformat = nbmodel.metadata.orig_nbformat;
2239 var orig_nbformat_minor = nbmodel.metadata.orig_nbformat_minor;
2238 var orig_nbformat_minor = nbmodel.metadata.orig_nbformat_minor;
2240 if (orig_nbformat !== undefined && nbmodel.nbformat !== orig_nbformat) {
2239 if (orig_nbformat !== undefined && nbmodel.nbformat !== orig_nbformat) {
2241 var src;
2240 var src;
2242 if (nbmodel.nbformat > orig_nbformat) {
2241 if (nbmodel.nbformat > orig_nbformat) {
2243 src = " an older notebook format ";
2242 src = " an older notebook format ";
2244 } else {
2243 } else {
2245 src = " a newer notebook format ";
2244 src = " a newer notebook format ";
2246 }
2245 }
2247
2246
2248 msg = "This notebook has been converted from" + src +
2247 msg = "This notebook has been converted from" + src +
2249 "(v"+orig_nbformat+") to the current notebook " +
2248 "(v"+orig_nbformat+") to the current notebook " +
2250 "format (v"+nbmodel.nbformat+"). The next time you save this notebook, the " +
2249 "format (v"+nbmodel.nbformat+"). The next time you save this notebook, the " +
2251 "current notebook format will be used.";
2250 "current notebook format will be used.";
2252
2251
2253 if (nbmodel.nbformat > orig_nbformat) {
2252 if (nbmodel.nbformat > orig_nbformat) {
2254 msg += " Older versions of IPython may not be able to read the new format.";
2253 msg += " Older versions of IPython may not be able to read the new format.";
2255 } else {
2254 } else {
2256 msg += " Some features of the original notebook may not be available.";
2255 msg += " Some features of the original notebook may not be available.";
2257 }
2256 }
2258 msg += " To preserve the original version, close the " +
2257 msg += " To preserve the original version, close the " +
2259 "notebook without saving it.";
2258 "notebook without saving it.";
2260 dialog.modal({
2259 dialog.modal({
2261 notebook: this,
2260 notebook: this,
2262 keyboard_manager: this.keyboard_manager,
2261 keyboard_manager: this.keyboard_manager,
2263 title : "Notebook converted",
2262 title : "Notebook converted",
2264 body : msg,
2263 body : msg,
2265 buttons : {
2264 buttons : {
2266 OK : {
2265 OK : {
2267 class : "btn-primary"
2266 class : "btn-primary"
2268 }
2267 }
2269 }
2268 }
2270 });
2269 });
2271 } else if (this.nbformat_minor < nbmodel.nbformat_minor) {
2270 } else if (this.nbformat_minor < nbmodel.nbformat_minor) {
2272 this.nbformat_minor = nbmodel.nbformat_minor;
2271 this.nbformat_minor = nbmodel.nbformat_minor;
2273 }
2272 }
2274
2273
2275 // Create the session after the notebook is completely loaded to prevent
2274 // Create the session after the notebook is completely loaded to prevent
2276 // code execution upon loading, which is a security risk.
2275 // code execution upon loading, which is a security risk.
2277 if (this.session === null) {
2276 if (this.session === null) {
2278 var kernel_name;
2277 var kernel_name;
2279 if (this.metadata.kernelspec) {
2278 if (this.metadata.kernelspec) {
2280 var kernelspec = this.metadata.kernelspec || {};
2279 var kernelspec = this.metadata.kernelspec || {};
2281 kernel_name = kernelspec.name;
2280 kernel_name = kernelspec.name;
2282 } else {
2281 } else {
2283 kernel_name = utils.get_url_param('kernel_name');
2282 kernel_name = utils.get_url_param('kernel_name');
2284 }
2283 }
2285 this.start_session(kernel_name);
2284 this.start_session(kernel_name);
2286 }
2285 }
2287 // load our checkpoint list
2286 // load our checkpoint list
2288 this.list_checkpoints();
2287 this.list_checkpoints();
2289
2288
2290 // load toolbar state
2289 // load toolbar state
2291 if (this.metadata.celltoolbar) {
2290 if (this.metadata.celltoolbar) {
2292 celltoolbar.CellToolbar.global_show();
2291 celltoolbar.CellToolbar.global_show();
2293 celltoolbar.CellToolbar.activate_preset(this.metadata.celltoolbar);
2292 celltoolbar.CellToolbar.activate_preset(this.metadata.celltoolbar);
2294 } else {
2293 } else {
2295 celltoolbar.CellToolbar.global_hide();
2294 celltoolbar.CellToolbar.global_hide();
2296 }
2295 }
2297
2296
2298 if (!this.writable) {
2297 if (!this.writable) {
2299 this.set_autosave_interval(0);
2298 this.set_autosave_interval(0);
2300 this.events.trigger('notebook_read_only.Notebook');
2299 this.events.trigger('notebook_read_only.Notebook');
2301 }
2300 }
2302
2301
2303 // now that we're fully loaded, it is safe to restore save functionality
2302 // now that we're fully loaded, it is safe to restore save functionality
2304 this._fully_loaded = true;
2303 this._fully_loaded = true;
2305 this.events.trigger('notebook_loaded.Notebook');
2304 this.events.trigger('notebook_loaded.Notebook');
2306 };
2305 };
2307
2306
2308 /**
2307 /**
2309 * Failure callback for loading a notebook from the server.
2308 * Failure callback for loading a notebook from the server.
2310 *
2309 *
2311 * @method load_notebook_error
2310 * @method load_notebook_error
2312 * @param {Error} error
2311 * @param {Error} error
2313 */
2312 */
2314 Notebook.prototype.load_notebook_error = function (error) {
2313 Notebook.prototype.load_notebook_error = function (error) {
2315 this.events.trigger('notebook_load_failed.Notebook', error);
2314 this.events.trigger('notebook_load_failed.Notebook', error);
2316 var msg;
2315 var msg;
2317 if (error.name === utils.XHR_ERROR && error.xhr.status === 500) {
2316 if (error.name === utils.XHR_ERROR && error.xhr.status === 500) {
2318 utils.log_ajax_error(error.xhr, error.xhr_status, error.xhr_error);
2317 utils.log_ajax_error(error.xhr, error.xhr_status, error.xhr_error);
2319 msg = "An unknown error occurred while loading this notebook. " +
2318 msg = "An unknown error occurred while loading this notebook. " +
2320 "This version can load notebook formats " +
2319 "This version can load notebook formats " +
2321 "v" + this.nbformat + " or earlier. See the server log for details.";
2320 "v" + this.nbformat + " or earlier. See the server log for details.";
2322 } else {
2321 } else {
2323 msg = error.message;
2322 msg = error.message;
2324 }
2323 }
2325 dialog.modal({
2324 dialog.modal({
2326 notebook: this,
2325 notebook: this,
2327 keyboard_manager: this.keyboard_manager,
2326 keyboard_manager: this.keyboard_manager,
2328 title: "Error loading notebook",
2327 title: "Error loading notebook",
2329 body : msg,
2328 body : msg,
2330 buttons : {
2329 buttons : {
2331 "OK": {}
2330 "OK": {}
2332 }
2331 }
2333 });
2332 });
2334 };
2333 };
2335
2334
2336 /********************* checkpoint-related *********************/
2335 /********************* checkpoint-related *********************/
2337
2336
2338 /**
2337 /**
2339 * Save the notebook then immediately create a checkpoint.
2338 * Save the notebook then immediately create a checkpoint.
2340 *
2339 *
2341 * @method save_checkpoint
2340 * @method save_checkpoint
2342 */
2341 */
2343 Notebook.prototype.save_checkpoint = function () {
2342 Notebook.prototype.save_checkpoint = function () {
2344 this._checkpoint_after_save = true;
2343 this._checkpoint_after_save = true;
2345 this.save_notebook();
2344 this.save_notebook();
2346 };
2345 };
2347
2346
2348 /**
2347 /**
2349 * Add a checkpoint for this notebook.
2348 * Add a checkpoint for this notebook.
2350 * for use as a callback from checkpoint creation.
2349 * for use as a callback from checkpoint creation.
2351 *
2350 *
2352 * @method add_checkpoint
2351 * @method add_checkpoint
2353 */
2352 */
2354 Notebook.prototype.add_checkpoint = function (checkpoint) {
2353 Notebook.prototype.add_checkpoint = function (checkpoint) {
2355 var found = false;
2354 var found = false;
2356 for (var i = 0; i < this.checkpoints.length; i++) {
2355 for (var i = 0; i < this.checkpoints.length; i++) {
2357 var existing = this.checkpoints[i];
2356 var existing = this.checkpoints[i];
2358 if (existing.id == checkpoint.id) {
2357 if (existing.id == checkpoint.id) {
2359 found = true;
2358 found = true;
2360 this.checkpoints[i] = checkpoint;
2359 this.checkpoints[i] = checkpoint;
2361 break;
2360 break;
2362 }
2361 }
2363 }
2362 }
2364 if (!found) {
2363 if (!found) {
2365 this.checkpoints.push(checkpoint);
2364 this.checkpoints.push(checkpoint);
2366 }
2365 }
2367 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2366 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2368 };
2367 };
2369
2368
2370 /**
2369 /**
2371 * List checkpoints for this notebook.
2370 * List checkpoints for this notebook.
2372 *
2371 *
2373 * @method list_checkpoints
2372 * @method list_checkpoints
2374 */
2373 */
2375 Notebook.prototype.list_checkpoints = function () {
2374 Notebook.prototype.list_checkpoints = function () {
2376 var that = this;
2375 var that = this;
2377 this.contents.list_checkpoints(this.notebook_path).then(
2376 this.contents.list_checkpoints(this.notebook_path).then(
2378 $.proxy(this.list_checkpoints_success, this),
2377 $.proxy(this.list_checkpoints_success, this),
2379 function(error) {
2378 function(error) {
2380 that.events.trigger('list_checkpoints_failed.Notebook', error);
2379 that.events.trigger('list_checkpoints_failed.Notebook', error);
2381 }
2380 }
2382 );
2381 );
2383 };
2382 };
2384
2383
2385 /**
2384 /**
2386 * Success callback for listing checkpoints.
2385 * Success callback for listing checkpoints.
2387 *
2386 *
2388 * @method list_checkpoint_success
2387 * @method list_checkpoint_success
2389 * @param {Object} data JSON representation of a checkpoint
2388 * @param {Object} data JSON representation of a checkpoint
2390 */
2389 */
2391 Notebook.prototype.list_checkpoints_success = function (data) {
2390 Notebook.prototype.list_checkpoints_success = function (data) {
2392 this.checkpoints = data;
2391 this.checkpoints = data;
2393 if (data.length) {
2392 if (data.length) {
2394 this.last_checkpoint = data[data.length - 1];
2393 this.last_checkpoint = data[data.length - 1];
2395 } else {
2394 } else {
2396 this.last_checkpoint = null;
2395 this.last_checkpoint = null;
2397 }
2396 }
2398 this.events.trigger('checkpoints_listed.Notebook', [data]);
2397 this.events.trigger('checkpoints_listed.Notebook', [data]);
2399 };
2398 };
2400
2399
2401 /**
2400 /**
2402 * Create a checkpoint of this notebook on the server from the most recent save.
2401 * Create a checkpoint of this notebook on the server from the most recent save.
2403 *
2402 *
2404 * @method create_checkpoint
2403 * @method create_checkpoint
2405 */
2404 */
2406 Notebook.prototype.create_checkpoint = function () {
2405 Notebook.prototype.create_checkpoint = function () {
2407 var that = this;
2406 var that = this;
2408 this.contents.create_checkpoint(this.notebook_path).then(
2407 this.contents.create_checkpoint(this.notebook_path).then(
2409 $.proxy(this.create_checkpoint_success, this),
2408 $.proxy(this.create_checkpoint_success, this),
2410 function (error) {
2409 function (error) {
2411 that.events.trigger('checkpoint_failed.Notebook', error);
2410 that.events.trigger('checkpoint_failed.Notebook', error);
2412 }
2411 }
2413 );
2412 );
2414 };
2413 };
2415
2414
2416 /**
2415 /**
2417 * Success callback for creating a checkpoint.
2416 * Success callback for creating a checkpoint.
2418 *
2417 *
2419 * @method create_checkpoint_success
2418 * @method create_checkpoint_success
2420 * @param {Object} data JSON representation of a checkpoint
2419 * @param {Object} data JSON representation of a checkpoint
2421 */
2420 */
2422 Notebook.prototype.create_checkpoint_success = function (data) {
2421 Notebook.prototype.create_checkpoint_success = function (data) {
2423 this.add_checkpoint(data);
2422 this.add_checkpoint(data);
2424 this.events.trigger('checkpoint_created.Notebook', data);
2423 this.events.trigger('checkpoint_created.Notebook', data);
2425 };
2424 };
2426
2425
2427 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2426 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2428 var that = this;
2427 var that = this;
2429 checkpoint = checkpoint || this.last_checkpoint;
2428 checkpoint = checkpoint || this.last_checkpoint;
2430 if ( ! checkpoint ) {
2429 if ( ! checkpoint ) {
2431 console.log("restore dialog, but no checkpoint to restore to!");
2430 console.log("restore dialog, but no checkpoint to restore to!");
2432 return;
2431 return;
2433 }
2432 }
2434 var body = $('<div/>').append(
2433 var body = $('<div/>').append(
2435 $('<p/>').addClass("p-space").text(
2434 $('<p/>').addClass("p-space").text(
2436 "Are you sure you want to revert the notebook to " +
2435 "Are you sure you want to revert the notebook to " +
2437 "the latest checkpoint?"
2436 "the latest checkpoint?"
2438 ).append(
2437 ).append(
2439 $("<strong/>").text(
2438 $("<strong/>").text(
2440 " This cannot be undone."
2439 " This cannot be undone."
2441 )
2440 )
2442 )
2441 )
2443 ).append(
2442 ).append(
2444 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2443 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2445 ).append(
2444 ).append(
2446 $('<p/>').addClass("p-space").text(
2445 $('<p/>').addClass("p-space").text(
2447 Date(checkpoint.last_modified)
2446 Date(checkpoint.last_modified)
2448 ).css("text-align", "center")
2447 ).css("text-align", "center")
2449 );
2448 );
2450
2449
2451 dialog.modal({
2450 dialog.modal({
2452 notebook: this,
2451 notebook: this,
2453 keyboard_manager: this.keyboard_manager,
2452 keyboard_manager: this.keyboard_manager,
2454 title : "Revert notebook to checkpoint",
2453 title : "Revert notebook to checkpoint",
2455 body : body,
2454 body : body,
2456 buttons : {
2455 buttons : {
2457 Revert : {
2456 Revert : {
2458 class : "btn-danger",
2457 class : "btn-danger",
2459 click : function () {
2458 click : function () {
2460 that.restore_checkpoint(checkpoint.id);
2459 that.restore_checkpoint(checkpoint.id);
2461 }
2460 }
2462 },
2461 },
2463 Cancel : {}
2462 Cancel : {}
2464 }
2463 }
2465 });
2464 });
2466 };
2465 };
2467
2466
2468 /**
2467 /**
2469 * Restore the notebook to a checkpoint state.
2468 * Restore the notebook to a checkpoint state.
2470 *
2469 *
2471 * @method restore_checkpoint
2470 * @method restore_checkpoint
2472 * @param {String} checkpoint ID
2471 * @param {String} checkpoint ID
2473 */
2472 */
2474 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2473 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2475 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2474 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2476 var that = this;
2475 var that = this;
2477 this.contents.restore_checkpoint(this.notebook_path, checkpoint).then(
2476 this.contents.restore_checkpoint(this.notebook_path, checkpoint).then(
2478 $.proxy(this.restore_checkpoint_success, this),
2477 $.proxy(this.restore_checkpoint_success, this),
2479 function (error) {
2478 function (error) {
2480 that.events.trigger('checkpoint_restore_failed.Notebook', error);
2479 that.events.trigger('checkpoint_restore_failed.Notebook', error);
2481 }
2480 }
2482 );
2481 );
2483 };
2482 };
2484
2483
2485 /**
2484 /**
2486 * Success callback for restoring a notebook to a checkpoint.
2485 * Success callback for restoring a notebook to a checkpoint.
2487 *
2486 *
2488 * @method restore_checkpoint_success
2487 * @method restore_checkpoint_success
2489 */
2488 */
2490 Notebook.prototype.restore_checkpoint_success = function () {
2489 Notebook.prototype.restore_checkpoint_success = function () {
2491 this.events.trigger('checkpoint_restored.Notebook');
2490 this.events.trigger('checkpoint_restored.Notebook');
2492 this.load_notebook(this.notebook_path);
2491 this.load_notebook(this.notebook_path);
2493 };
2492 };
2494
2493
2495 /**
2494 /**
2496 * Delete a notebook checkpoint.
2495 * Delete a notebook checkpoint.
2497 *
2496 *
2498 * @method delete_checkpoint
2497 * @method delete_checkpoint
2499 * @param {String} checkpoint ID
2498 * @param {String} checkpoint ID
2500 */
2499 */
2501 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2500 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2502 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2501 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2503 var that = this;
2502 var that = this;
2504 this.contents.delete_checkpoint(this.notebook_path, checkpoint).then(
2503 this.contents.delete_checkpoint(this.notebook_path, checkpoint).then(
2505 $.proxy(this.delete_checkpoint_success, this),
2504 $.proxy(this.delete_checkpoint_success, this),
2506 function (error) {
2505 function (error) {
2507 that.events.trigger('checkpoint_delete_failed.Notebook', error);
2506 that.events.trigger('checkpoint_delete_failed.Notebook', error);
2508 }
2507 }
2509 );
2508 );
2510 };
2509 };
2511
2510
2512 /**
2511 /**
2513 * Success callback for deleting a notebook checkpoint
2512 * Success callback for deleting a notebook checkpoint
2514 *
2513 *
2515 * @method delete_checkpoint_success
2514 * @method delete_checkpoint_success
2516 */
2515 */
2517 Notebook.prototype.delete_checkpoint_success = function () {
2516 Notebook.prototype.delete_checkpoint_success = function () {
2518 this.events.trigger('checkpoint_deleted.Notebook');
2517 this.events.trigger('checkpoint_deleted.Notebook');
2519 this.load_notebook(this.notebook_path);
2518 this.load_notebook(this.notebook_path);
2520 };
2519 };
2521
2520
2522
2521
2523 // For backwards compatability.
2522 // For backwards compatability.
2524 IPython.Notebook = Notebook;
2523 IPython.Notebook = Notebook;
2525
2524
2526 return {'Notebook': Notebook};
2525 return {'Notebook': Notebook};
2527 });
2526 });
@@ -1,164 +1,112 b''
1 /*
1 /*
2
2
3 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
3 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
4 Adapted from GitHub theme
4 Adapted from GitHub theme
5
5
6 */
6 */
7
7
8 pre code {
8 @import (reference) "highlight-refs.less";
9 display: block;
9
10 padding: 0.5em;
10 @highlight-base: #000;
11
12 .highlight-base{
13 color: @highlight-base;
14 }
15
16 .highlight-variable{
17 .highlight-base();
18 }
19
20 .highlight-variable-2{
21 color: lighten(@highlight-base, 10%);
11 }
22 }
12
23
13 .highlight-base,
24 .highlight-variable-3{
14 pre code,
25 color: lighten(@highlight-base, 20%);
15 pre .subst,
16 pre .tag .title,
17 pre .lisp .title,
18 pre .clojure .built_in,
19 pre .nginx .title {
20 color: black;
21 }
26 }
22
27
23 .highlight-string,
28 .highlight-string{
24 pre .string,
25 pre .constant,
26 pre .parent,
27 pre .tag .value,
28 pre .rules .value,
29 pre .rules .value .number,
30 pre .preprocessor,
31 pre .ruby .symbol,
32 pre .ruby .symbol .string,
33 pre .aggregate,
34 pre .template_tag,
35 pre .django .variable,
36 pre .smalltalk .class,
37 pre .addition,
38 pre .flow,
39 pre .stream,
40 pre .bash .variable,
41 pre .apache .tag,
42 pre .apache .cbracket,
43 pre .tex .command,
44 pre .tex .special,
45 pre .erlang_repl .function_or_atom,
46 pre .markdown .header {
47 color: #BA2121;
29 color: #BA2121;
48 }
30 }
49
31
50 .highlight-comment,
32 .highlight-comment{
51 pre .comment,
52 pre .annotation,
53 pre .template_comment,
54 pre .diff .header,
55 pre .chunk,
56 pre .markdown .blockquote {
57 color: #408080;
33 color: #408080;
58 font-style: italic;
34 font-style: italic;
59 }
35 }
60
36
61 .highlight-number,
37 .highlight-number{
62 pre .number,
63 pre .date,
64 pre .regexp,
65 pre .literal,
66 pre .smalltalk .symbol,
67 pre .smalltalk .char,
68 pre .go .constant,
69 pre .change,
70 pre .markdown .bullet,
71 pre .markdown .link_url {
72 color: #080;
38 color: #080;
73 }
39 }
74
40
75 pre .label,
41 .highlight-atom{
76 pre .javadoc,
42 color: #88F;
77 pre .ruby .string,
78 pre .decorator,
79 pre .filter .argument,
80 pre .localvars,
81 pre .array,
82 pre .attr_selector,
83 pre .important,
84 pre .pseudo,
85 pre .pi,
86 pre .doctype,
87 pre .deletion,
88 pre .envvar,
89 pre .shebang,
90 pre .apache .sqbracket,
91 pre .nginx .built_in,
92 pre .tex .formula,
93 pre .erlang_repl .reserved,
94 pre .prompt,
95 pre .markdown .link_label,
96 pre .vhdl .attribute,
97 pre .clojure .attribute,
98 pre .coffeescript .property {
99 color: #88F
100 }
43 }
101
44
102 .highlight-keyword,
45 .highlight-keyword{
103 pre .keyword,
104 pre .id,
105 pre .phpdoc,
106 pre .aggregate,
107 pre .css .tag,
108 pre .javadoctag,
109 pre .phpdoc,
110 pre .yardoctag,
111 pre .smalltalk .class,
112 pre .winutils,
113 pre .bash .variable,
114 pre .apache .tag,
115 pre .go .typename,
116 pre .tex .command,
117 pre .markdown .strong,
118 pre .request,
119 pre .status {
120 color: #008000;
46 color: #008000;
121 font-weight: bold;
47 font-weight: bold;
122 }
48 }
123
49
124 .highlight-builtin,
50 .highlight-builtin{
125 pre .built_in {
126 color: #008000;
51 color: #008000;
127 }
52 }
128
53
129 pre .markdown .emphasis {
54 .highlight-error{
130 font-style: italic;
55 color: #f00;
131 }
56 }
132
57
133 pre .nginx .built_in {
58 .highlight-operator{
134 font-weight: normal;
59 color: #AA22FF;
60 font-weight: bold;
135 }
61 }
136
62
137 pre .coffeescript .javascript,
63 .highlight-meta{
138 pre .javascript .xml,
64 color: #AA22FF;
139 pre .tex .formula,
140 pre .xml .javascript,
141 pre .xml .vbscript,
142 pre .xml .css,
143 pre .xml .cdata {
144 opacity: 0.5;
145 }
65 }
146
66
67 /* previously not defined, copying from default codemirror */
68 .highlight-def{ .cm-s-default.cm-def() }
69 .highlight-punctuation{ .cm-s-default.cm-punctuation() }
70 .highlight-property{ .cm-s-default.cm-property() }
71 .highlight-string-2{ .cm-s-default.cm-string-2() }
72 .highlight-qualifier{ .cm-s-default.cm-qualifier() }
73 .highlight-bracket{ .cm-s-default.cm-bracket() }
74 .highlight-tag{ .cm-s-default.cm-tag() }
75 .highlight-attribute{ .cm-s-default.cm-attribute() }
76 .highlight-header{ .cm-s-default.cm-header() }
77 .highlight-quote{ .cm-s-default.cm-quote() }
78 .highlight-link{ .cm-s-default.cm-link() }
79
80
147 /* apply the same style to codemirror */
81 /* apply the same style to codemirror */
148 .cm-s-ipython {
82 .cm-s-ipython span {
149 span.cm-variable { .highlight-base()}
83 &.cm-keyword { .highlight-keyword() }
150 span.cm-keyword { .highlight-keyword() }
84 &.cm-atom { .highlight-atom() }
151 span.cm-number { .highlight-number() }
85 &.cm-number { .highlight-number() }
152 span.cm-comment { .highlight-comment() }
86 &.cm-def { .highlight-def() }
153 span.cm-string { .highlight-string()}
87 &.cm-variable { .highlight-variable() }
154 span.cm-builtin { .highlight-builtin() }
88 &.cm-punctuation { .highlight-punctuation() }
155 span.cm-error { color: #f00; }
89 &.cm-property { .highlight-property() }
156 span.cm-operator {color: #AA22FF; font-weight: bold;}
90 &.cm-operator { .highlight-operator() }
157 span.cm-meta {color: #AA22FF;}
91 &.cm-variable-2 { .highlight-variable-2() }
158
92 &.cm-variable-3 { .highlight-variable-3() }
159 span.cm-tab {
93 &.cm-comment { .highlight-comment() }
160 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
94 &.cm-string { .highlight-string() }
161 background-position: right;
95 &.cm-string-2 { .highlight-string-2() }
162 background-repeat: no-repeat;
96 &.cm-meta { .highlight-meta() }
163 }
97 &.cm-qualifier { .highlight-qualifier() }
98 &.cm-builtin { .highlight-builtin() }
99 &.cm-bracket { .highlight-bracket() }
100 &.cm-tag { .highlight-tag() }
101 &.cm-attribute { .highlight-attribute() }
102 &.cm-header { .highlight-header() }
103 &.cm-quote { .highlight-quote() }
104 &.cm-link { .highlight-link() }
105 &.cm-error { .highlight-error() }
106
107 &.cm-tab {
108 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
109 background-position: right;
110 background-repeat: no-repeat;
111 }
164 }
112 }
@@ -1,1584 +1,1562 b''
1 /*!
1 /*!
2 *
2 *
3 * IPython base
3 * IPython base
4 *
4 *
5 */
5 */
6 .modal.fade .modal-dialog {
6 .modal.fade .modal-dialog {
7 -webkit-transform: translate(0, 0);
7 -webkit-transform: translate(0, 0);
8 -ms-transform: translate(0, 0);
8 -ms-transform: translate(0, 0);
9 transform: translate(0, 0);
9 transform: translate(0, 0);
10 }
10 }
11 code {
11 code {
12 color: #000000;
12 color: #000000;
13 }
13 }
14 pre {
14 pre {
15 font-size: inherit;
15 font-size: inherit;
16 line-height: inherit;
16 line-height: inherit;
17 }
17 }
18 label {
18 label {
19 font-weight: normal;
19 font-weight: normal;
20 }
20 }
21 .border-box-sizing {
21 .border-box-sizing {
22 box-sizing: border-box;
22 box-sizing: border-box;
23 -moz-box-sizing: border-box;
23 -moz-box-sizing: border-box;
24 -webkit-box-sizing: border-box;
24 -webkit-box-sizing: border-box;
25 }
25 }
26 .corner-all {
26 .corner-all {
27 border-radius: 4px;
27 border-radius: 4px;
28 }
28 }
29 .no-padding {
29 .no-padding {
30 padding: 0px;
30 padding: 0px;
31 }
31 }
32 /* Flexible box model classes */
32 /* Flexible box model classes */
33 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
33 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
34 /* This file is a compatability layer. It allows the usage of flexible box
34 /* This file is a compatability layer. It allows the usage of flexible box
35 model layouts accross multiple browsers, including older browsers. The newest,
35 model layouts accross multiple browsers, including older browsers. The newest,
36 universal implementation of the flexible box model is used when available (see
36 universal implementation of the flexible box model is used when available (see
37 `Modern browsers` comments below). Browsers that are known to implement this
37 `Modern browsers` comments below). Browsers that are known to implement this
38 new spec completely include:
38 new spec completely include:
39
39
40 Firefox 28.0+
40 Firefox 28.0+
41 Chrome 29.0+
41 Chrome 29.0+
42 Internet Explorer 11+
42 Internet Explorer 11+
43 Opera 17.0+
43 Opera 17.0+
44
44
45 Browsers not listed, including Safari, are supported via the styling under the
45 Browsers not listed, including Safari, are supported via the styling under the
46 `Old browsers` comments below.
46 `Old browsers` comments below.
47 */
47 */
48 .hbox {
48 .hbox {
49 /* Old browsers */
49 /* Old browsers */
50 display: -webkit-box;
50 display: -webkit-box;
51 -webkit-box-orient: horizontal;
51 -webkit-box-orient: horizontal;
52 -webkit-box-align: stretch;
52 -webkit-box-align: stretch;
53 display: -moz-box;
53 display: -moz-box;
54 -moz-box-orient: horizontal;
54 -moz-box-orient: horizontal;
55 -moz-box-align: stretch;
55 -moz-box-align: stretch;
56 display: box;
56 display: box;
57 box-orient: horizontal;
57 box-orient: horizontal;
58 box-align: stretch;
58 box-align: stretch;
59 /* Modern browsers */
59 /* Modern browsers */
60 display: flex;
60 display: flex;
61 flex-direction: row;
61 flex-direction: row;
62 align-items: stretch;
62 align-items: stretch;
63 }
63 }
64 .hbox > * {
64 .hbox > * {
65 /* Old browsers */
65 /* Old browsers */
66 -webkit-box-flex: 0;
66 -webkit-box-flex: 0;
67 -moz-box-flex: 0;
67 -moz-box-flex: 0;
68 box-flex: 0;
68 box-flex: 0;
69 /* Modern browsers */
69 /* Modern browsers */
70 flex: none;
70 flex: none;
71 }
71 }
72 .vbox {
72 .vbox {
73 /* Old browsers */
73 /* Old browsers */
74 display: -webkit-box;
74 display: -webkit-box;
75 -webkit-box-orient: vertical;
75 -webkit-box-orient: vertical;
76 -webkit-box-align: stretch;
76 -webkit-box-align: stretch;
77 display: -moz-box;
77 display: -moz-box;
78 -moz-box-orient: vertical;
78 -moz-box-orient: vertical;
79 -moz-box-align: stretch;
79 -moz-box-align: stretch;
80 display: box;
80 display: box;
81 box-orient: vertical;
81 box-orient: vertical;
82 box-align: stretch;
82 box-align: stretch;
83 /* Modern browsers */
83 /* Modern browsers */
84 display: flex;
84 display: flex;
85 flex-direction: column;
85 flex-direction: column;
86 align-items: stretch;
86 align-items: stretch;
87 }
87 }
88 .vbox > * {
88 .vbox > * {
89 /* Old browsers */
89 /* Old browsers */
90 -webkit-box-flex: 0;
90 -webkit-box-flex: 0;
91 -moz-box-flex: 0;
91 -moz-box-flex: 0;
92 box-flex: 0;
92 box-flex: 0;
93 /* Modern browsers */
93 /* Modern browsers */
94 flex: none;
94 flex: none;
95 }
95 }
96 .hbox.reverse,
96 .hbox.reverse,
97 .vbox.reverse,
97 .vbox.reverse,
98 .reverse {
98 .reverse {
99 /* Old browsers */
99 /* Old browsers */
100 -webkit-box-direction: reverse;
100 -webkit-box-direction: reverse;
101 -moz-box-direction: reverse;
101 -moz-box-direction: reverse;
102 box-direction: reverse;
102 box-direction: reverse;
103 /* Modern browsers */
103 /* Modern browsers */
104 flex-direction: row-reverse;
104 flex-direction: row-reverse;
105 }
105 }
106 .hbox.box-flex0,
106 .hbox.box-flex0,
107 .vbox.box-flex0,
107 .vbox.box-flex0,
108 .box-flex0 {
108 .box-flex0 {
109 /* Old browsers */
109 /* Old browsers */
110 -webkit-box-flex: 0;
110 -webkit-box-flex: 0;
111 -moz-box-flex: 0;
111 -moz-box-flex: 0;
112 box-flex: 0;
112 box-flex: 0;
113 /* Modern browsers */
113 /* Modern browsers */
114 flex: none;
114 flex: none;
115 width: auto;
115 width: auto;
116 }
116 }
117 .hbox.box-flex1,
117 .hbox.box-flex1,
118 .vbox.box-flex1,
118 .vbox.box-flex1,
119 .box-flex1 {
119 .box-flex1 {
120 /* Old browsers */
120 /* Old browsers */
121 -webkit-box-flex: 1;
121 -webkit-box-flex: 1;
122 -moz-box-flex: 1;
122 -moz-box-flex: 1;
123 box-flex: 1;
123 box-flex: 1;
124 /* Modern browsers */
124 /* Modern browsers */
125 flex: 1;
125 flex: 1;
126 }
126 }
127 .hbox.box-flex,
127 .hbox.box-flex,
128 .vbox.box-flex,
128 .vbox.box-flex,
129 .box-flex {
129 .box-flex {
130 /* Old browsers */
130 /* Old browsers */
131 /* Old browsers */
131 /* Old browsers */
132 -webkit-box-flex: 1;
132 -webkit-box-flex: 1;
133 -moz-box-flex: 1;
133 -moz-box-flex: 1;
134 box-flex: 1;
134 box-flex: 1;
135 /* Modern browsers */
135 /* Modern browsers */
136 flex: 1;
136 flex: 1;
137 }
137 }
138 .hbox.box-flex2,
138 .hbox.box-flex2,
139 .vbox.box-flex2,
139 .vbox.box-flex2,
140 .box-flex2 {
140 .box-flex2 {
141 /* Old browsers */
141 /* Old browsers */
142 -webkit-box-flex: 2;
142 -webkit-box-flex: 2;
143 -moz-box-flex: 2;
143 -moz-box-flex: 2;
144 box-flex: 2;
144 box-flex: 2;
145 /* Modern browsers */
145 /* Modern browsers */
146 flex: 2;
146 flex: 2;
147 }
147 }
148 .box-group1 {
148 .box-group1 {
149 /* Deprecated */
149 /* Deprecated */
150 -webkit-box-flex-group: 1;
150 -webkit-box-flex-group: 1;
151 -moz-box-flex-group: 1;
151 -moz-box-flex-group: 1;
152 box-flex-group: 1;
152 box-flex-group: 1;
153 }
153 }
154 .box-group2 {
154 .box-group2 {
155 /* Deprecated */
155 /* Deprecated */
156 -webkit-box-flex-group: 2;
156 -webkit-box-flex-group: 2;
157 -moz-box-flex-group: 2;
157 -moz-box-flex-group: 2;
158 box-flex-group: 2;
158 box-flex-group: 2;
159 }
159 }
160 .hbox.start,
160 .hbox.start,
161 .vbox.start,
161 .vbox.start,
162 .start {
162 .start {
163 /* Old browsers */
163 /* Old browsers */
164 -webkit-box-pack: start;
164 -webkit-box-pack: start;
165 -moz-box-pack: start;
165 -moz-box-pack: start;
166 box-pack: start;
166 box-pack: start;
167 /* Modern browsers */
167 /* Modern browsers */
168 justify-content: flex-start;
168 justify-content: flex-start;
169 }
169 }
170 .hbox.end,
170 .hbox.end,
171 .vbox.end,
171 .vbox.end,
172 .end {
172 .end {
173 /* Old browsers */
173 /* Old browsers */
174 -webkit-box-pack: end;
174 -webkit-box-pack: end;
175 -moz-box-pack: end;
175 -moz-box-pack: end;
176 box-pack: end;
176 box-pack: end;
177 /* Modern browsers */
177 /* Modern browsers */
178 justify-content: flex-end;
178 justify-content: flex-end;
179 }
179 }
180 .hbox.center,
180 .hbox.center,
181 .vbox.center,
181 .vbox.center,
182 .center {
182 .center {
183 /* Old browsers */
183 /* Old browsers */
184 -webkit-box-pack: center;
184 -webkit-box-pack: center;
185 -moz-box-pack: center;
185 -moz-box-pack: center;
186 box-pack: center;
186 box-pack: center;
187 /* Modern browsers */
187 /* Modern browsers */
188 justify-content: center;
188 justify-content: center;
189 }
189 }
190 .hbox.baseline,
190 .hbox.baseline,
191 .vbox.baseline,
191 .vbox.baseline,
192 .baseline {
192 .baseline {
193 /* Old browsers */
193 /* Old browsers */
194 -webkit-box-pack: baseline;
194 -webkit-box-pack: baseline;
195 -moz-box-pack: baseline;
195 -moz-box-pack: baseline;
196 box-pack: baseline;
196 box-pack: baseline;
197 /* Modern browsers */
197 /* Modern browsers */
198 justify-content: baseline;
198 justify-content: baseline;
199 }
199 }
200 .hbox.stretch,
200 .hbox.stretch,
201 .vbox.stretch,
201 .vbox.stretch,
202 .stretch {
202 .stretch {
203 /* Old browsers */
203 /* Old browsers */
204 -webkit-box-pack: stretch;
204 -webkit-box-pack: stretch;
205 -moz-box-pack: stretch;
205 -moz-box-pack: stretch;
206 box-pack: stretch;
206 box-pack: stretch;
207 /* Modern browsers */
207 /* Modern browsers */
208 justify-content: stretch;
208 justify-content: stretch;
209 }
209 }
210 .hbox.align-start,
210 .hbox.align-start,
211 .vbox.align-start,
211 .vbox.align-start,
212 .align-start {
212 .align-start {
213 /* Old browsers */
213 /* Old browsers */
214 -webkit-box-align: start;
214 -webkit-box-align: start;
215 -moz-box-align: start;
215 -moz-box-align: start;
216 box-align: start;
216 box-align: start;
217 /* Modern browsers */
217 /* Modern browsers */
218 align-items: flex-start;
218 align-items: flex-start;
219 }
219 }
220 .hbox.align-end,
220 .hbox.align-end,
221 .vbox.align-end,
221 .vbox.align-end,
222 .align-end {
222 .align-end {
223 /* Old browsers */
223 /* Old browsers */
224 -webkit-box-align: end;
224 -webkit-box-align: end;
225 -moz-box-align: end;
225 -moz-box-align: end;
226 box-align: end;
226 box-align: end;
227 /* Modern browsers */
227 /* Modern browsers */
228 align-items: flex-end;
228 align-items: flex-end;
229 }
229 }
230 .hbox.align-center,
230 .hbox.align-center,
231 .vbox.align-center,
231 .vbox.align-center,
232 .align-center {
232 .align-center {
233 /* Old browsers */
233 /* Old browsers */
234 -webkit-box-align: center;
234 -webkit-box-align: center;
235 -moz-box-align: center;
235 -moz-box-align: center;
236 box-align: center;
236 box-align: center;
237 /* Modern browsers */
237 /* Modern browsers */
238 align-items: center;
238 align-items: center;
239 }
239 }
240 .hbox.align-baseline,
240 .hbox.align-baseline,
241 .vbox.align-baseline,
241 .vbox.align-baseline,
242 .align-baseline {
242 .align-baseline {
243 /* Old browsers */
243 /* Old browsers */
244 -webkit-box-align: baseline;
244 -webkit-box-align: baseline;
245 -moz-box-align: baseline;
245 -moz-box-align: baseline;
246 box-align: baseline;
246 box-align: baseline;
247 /* Modern browsers */
247 /* Modern browsers */
248 align-items: baseline;
248 align-items: baseline;
249 }
249 }
250 .hbox.align-stretch,
250 .hbox.align-stretch,
251 .vbox.align-stretch,
251 .vbox.align-stretch,
252 .align-stretch {
252 .align-stretch {
253 /* Old browsers */
253 /* Old browsers */
254 -webkit-box-align: stretch;
254 -webkit-box-align: stretch;
255 -moz-box-align: stretch;
255 -moz-box-align: stretch;
256 box-align: stretch;
256 box-align: stretch;
257 /* Modern browsers */
257 /* Modern browsers */
258 align-items: stretch;
258 align-items: stretch;
259 }
259 }
260 div.error {
260 div.error {
261 margin: 2em;
261 margin: 2em;
262 text-align: center;
262 text-align: center;
263 }
263 }
264 div.error > h1 {
264 div.error > h1 {
265 font-size: 500%;
265 font-size: 500%;
266 line-height: normal;
266 line-height: normal;
267 }
267 }
268 div.error > p {
268 div.error > p {
269 font-size: 200%;
269 font-size: 200%;
270 line-height: normal;
270 line-height: normal;
271 }
271 }
272 div.traceback-wrapper {
272 div.traceback-wrapper {
273 text-align: left;
273 text-align: left;
274 max-width: 800px;
274 max-width: 800px;
275 margin: auto;
275 margin: auto;
276 }
276 }
277 /*!
277 /*!
278 *
278 *
279 * IPython notebook
279 * IPython notebook
280 *
280 *
281 */
281 */
282 /* CSS font colors for translated ANSI colors. */
282 /* CSS font colors for translated ANSI colors. */
283 .ansibold {
283 .ansibold {
284 font-weight: bold;
284 font-weight: bold;
285 }
285 }
286 /* use dark versions for foreground, to improve visibility */
286 /* use dark versions for foreground, to improve visibility */
287 .ansiblack {
287 .ansiblack {
288 color: black;
288 color: black;
289 }
289 }
290 .ansired {
290 .ansired {
291 color: darkred;
291 color: darkred;
292 }
292 }
293 .ansigreen {
293 .ansigreen {
294 color: darkgreen;
294 color: darkgreen;
295 }
295 }
296 .ansiyellow {
296 .ansiyellow {
297 color: #c4a000;
297 color: #c4a000;
298 }
298 }
299 .ansiblue {
299 .ansiblue {
300 color: darkblue;
300 color: darkblue;
301 }
301 }
302 .ansipurple {
302 .ansipurple {
303 color: darkviolet;
303 color: darkviolet;
304 }
304 }
305 .ansicyan {
305 .ansicyan {
306 color: steelblue;
306 color: steelblue;
307 }
307 }
308 .ansigray {
308 .ansigray {
309 color: gray;
309 color: gray;
310 }
310 }
311 /* and light for background, for the same reason */
311 /* and light for background, for the same reason */
312 .ansibgblack {
312 .ansibgblack {
313 background-color: black;
313 background-color: black;
314 }
314 }
315 .ansibgred {
315 .ansibgred {
316 background-color: red;
316 background-color: red;
317 }
317 }
318 .ansibggreen {
318 .ansibggreen {
319 background-color: green;
319 background-color: green;
320 }
320 }
321 .ansibgyellow {
321 .ansibgyellow {
322 background-color: yellow;
322 background-color: yellow;
323 }
323 }
324 .ansibgblue {
324 .ansibgblue {
325 background-color: blue;
325 background-color: blue;
326 }
326 }
327 .ansibgpurple {
327 .ansibgpurple {
328 background-color: magenta;
328 background-color: magenta;
329 }
329 }
330 .ansibgcyan {
330 .ansibgcyan {
331 background-color: cyan;
331 background-color: cyan;
332 }
332 }
333 .ansibggray {
333 .ansibggray {
334 background-color: gray;
334 background-color: gray;
335 }
335 }
336 div.cell {
336 div.cell {
337 border: 1px solid transparent;
337 border: 1px solid transparent;
338 /* Old browsers */
338 /* Old browsers */
339 display: -webkit-box;
339 display: -webkit-box;
340 -webkit-box-orient: vertical;
340 -webkit-box-orient: vertical;
341 -webkit-box-align: stretch;
341 -webkit-box-align: stretch;
342 display: -moz-box;
342 display: -moz-box;
343 -moz-box-orient: vertical;
343 -moz-box-orient: vertical;
344 -moz-box-align: stretch;
344 -moz-box-align: stretch;
345 display: box;
345 display: box;
346 box-orient: vertical;
346 box-orient: vertical;
347 box-align: stretch;
347 box-align: stretch;
348 /* Modern browsers */
348 /* Modern browsers */
349 display: flex;
349 display: flex;
350 flex-direction: column;
350 flex-direction: column;
351 align-items: stretch;
351 align-items: stretch;
352 border-radius: 4px;
352 border-radius: 4px;
353 box-sizing: border-box;
353 box-sizing: border-box;
354 -moz-box-sizing: border-box;
354 -moz-box-sizing: border-box;
355 -webkit-box-sizing: border-box;
355 -webkit-box-sizing: border-box;
356 border-width: thin;
356 border-width: thin;
357 border-style: solid;
357 border-style: solid;
358 width: 100%;
358 width: 100%;
359 padding: 5px 5px 5px 0px;
359 padding: 5px 5px 5px 0px;
360 /* This acts as a spacer between cells, that is outside the border */
360 /* This acts as a spacer between cells, that is outside the border */
361 margin: 0px;
361 margin: 0px;
362 outline: none;
362 outline: none;
363 }
363 }
364 div.cell.selected {
364 div.cell.selected {
365 border-color: #ababab;
365 border-color: #ababab;
366 }
366 }
367 div.cell.edit_mode {
367 div.cell.edit_mode {
368 border-color: green;
368 border-color: green;
369 }
369 }
370 div.prompt {
370 div.prompt {
371 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
371 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
372 min-width: 15ex;
372 min-width: 15ex;
373 /* This padding is tuned to match the padding on the CodeMirror editor. */
373 /* This padding is tuned to match the padding on the CodeMirror editor. */
374 padding: 0.4em;
374 padding: 0.4em;
375 margin: 0px;
375 margin: 0px;
376 font-family: monospace;
376 font-family: monospace;
377 text-align: right;
377 text-align: right;
378 /* This has to match that of the the CodeMirror class line-height below */
378 /* This has to match that of the the CodeMirror class line-height below */
379 line-height: 1.21429em;
379 line-height: 1.21429em;
380 }
380 }
381 @media (max-width: 480px) {
381 @media (max-width: 480px) {
382 div.prompt {
382 div.prompt {
383 text-align: left;
383 text-align: left;
384 }
384 }
385 }
385 }
386 div.inner_cell {
386 div.inner_cell {
387 /* Old browsers */
387 /* Old browsers */
388 display: -webkit-box;
388 display: -webkit-box;
389 -webkit-box-orient: vertical;
389 -webkit-box-orient: vertical;
390 -webkit-box-align: stretch;
390 -webkit-box-align: stretch;
391 display: -moz-box;
391 display: -moz-box;
392 -moz-box-orient: vertical;
392 -moz-box-orient: vertical;
393 -moz-box-align: stretch;
393 -moz-box-align: stretch;
394 display: box;
394 display: box;
395 box-orient: vertical;
395 box-orient: vertical;
396 box-align: stretch;
396 box-align: stretch;
397 /* Modern browsers */
397 /* Modern browsers */
398 display: flex;
398 display: flex;
399 flex-direction: column;
399 flex-direction: column;
400 align-items: stretch;
400 align-items: stretch;
401 /* Old browsers */
401 /* Old browsers */
402 -webkit-box-flex: 1;
402 -webkit-box-flex: 1;
403 -moz-box-flex: 1;
403 -moz-box-flex: 1;
404 box-flex: 1;
404 box-flex: 1;
405 /* Modern browsers */
405 /* Modern browsers */
406 flex: 1;
406 flex: 1;
407 }
407 }
408 /* input_area and input_prompt must match in top border and margin for alignment */
408 /* input_area and input_prompt must match in top border and margin for alignment */
409 div.input_area {
409 div.input_area {
410 border: 1px solid #cfcfcf;
410 border: 1px solid #cfcfcf;
411 border-radius: 4px;
411 border-radius: 4px;
412 background: #f7f7f7;
412 background: #f7f7f7;
413 line-height: 1.21429em;
413 line-height: 1.21429em;
414 }
414 }
415 /* This is needed so that empty prompt areas can collapse to zero height when there
415 /* This is needed so that empty prompt areas can collapse to zero height when there
416 is no content in the output_subarea and the prompt. The main purpose of this is
416 is no content in the output_subarea and the prompt. The main purpose of this is
417 to make sure that empty JavaScript output_subareas have no height. */
417 to make sure that empty JavaScript output_subareas have no height. */
418 div.prompt:empty {
418 div.prompt:empty {
419 padding-top: 0;
419 padding-top: 0;
420 padding-bottom: 0;
420 padding-bottom: 0;
421 }
421 }
422 div.unrecognized_cell {
422 div.unrecognized_cell {
423 padding: 5px 5px 5px 0px;
423 padding: 5px 5px 5px 0px;
424 /* Old browsers */
424 /* Old browsers */
425 display: -webkit-box;
425 display: -webkit-box;
426 -webkit-box-orient: horizontal;
426 -webkit-box-orient: horizontal;
427 -webkit-box-align: stretch;
427 -webkit-box-align: stretch;
428 display: -moz-box;
428 display: -moz-box;
429 -moz-box-orient: horizontal;
429 -moz-box-orient: horizontal;
430 -moz-box-align: stretch;
430 -moz-box-align: stretch;
431 display: box;
431 display: box;
432 box-orient: horizontal;
432 box-orient: horizontal;
433 box-align: stretch;
433 box-align: stretch;
434 /* Modern browsers */
434 /* Modern browsers */
435 display: flex;
435 display: flex;
436 flex-direction: row;
436 flex-direction: row;
437 align-items: stretch;
437 align-items: stretch;
438 }
438 }
439 div.unrecognized_cell .inner_cell {
439 div.unrecognized_cell .inner_cell {
440 border-radius: 4px;
440 border-radius: 4px;
441 padding: 5px;
441 padding: 5px;
442 font-weight: bold;
442 font-weight: bold;
443 color: red;
443 color: red;
444 border: 1px solid #cfcfcf;
444 border: 1px solid #cfcfcf;
445 background: #eaeaea;
445 background: #eaeaea;
446 }
446 }
447 div.unrecognized_cell .inner_cell a {
447 div.unrecognized_cell .inner_cell a {
448 color: inherit;
448 color: inherit;
449 text-decoration: none;
449 text-decoration: none;
450 }
450 }
451 div.unrecognized_cell .inner_cell a:hover {
451 div.unrecognized_cell .inner_cell a:hover {
452 color: inherit;
452 color: inherit;
453 text-decoration: none;
453 text-decoration: none;
454 }
454 }
455 @media (max-width: 480px) {
455 @media (max-width: 480px) {
456 div.unrecognized_cell > div.prompt {
456 div.unrecognized_cell > div.prompt {
457 display: none;
457 display: none;
458 }
458 }
459 }
459 }
460 /* any special styling for code cells that are currently running goes here */
460 /* any special styling for code cells that are currently running goes here */
461 div.input {
461 div.input {
462 page-break-inside: avoid;
462 page-break-inside: avoid;
463 /* Old browsers */
463 /* Old browsers */
464 display: -webkit-box;
464 display: -webkit-box;
465 -webkit-box-orient: horizontal;
465 -webkit-box-orient: horizontal;
466 -webkit-box-align: stretch;
466 -webkit-box-align: stretch;
467 display: -moz-box;
467 display: -moz-box;
468 -moz-box-orient: horizontal;
468 -moz-box-orient: horizontal;
469 -moz-box-align: stretch;
469 -moz-box-align: stretch;
470 display: box;
470 display: box;
471 box-orient: horizontal;
471 box-orient: horizontal;
472 box-align: stretch;
472 box-align: stretch;
473 /* Modern browsers */
473 /* Modern browsers */
474 display: flex;
474 display: flex;
475 flex-direction: row;
475 flex-direction: row;
476 align-items: stretch;
476 align-items: stretch;
477 }
477 }
478 @media (max-width: 480px) {
478 @media (max-width: 480px) {
479 div.input {
479 div.input {
480 /* Old browsers */
480 /* Old browsers */
481 display: -webkit-box;
481 display: -webkit-box;
482 -webkit-box-orient: vertical;
482 -webkit-box-orient: vertical;
483 -webkit-box-align: stretch;
483 -webkit-box-align: stretch;
484 display: -moz-box;
484 display: -moz-box;
485 -moz-box-orient: vertical;
485 -moz-box-orient: vertical;
486 -moz-box-align: stretch;
486 -moz-box-align: stretch;
487 display: box;
487 display: box;
488 box-orient: vertical;
488 box-orient: vertical;
489 box-align: stretch;
489 box-align: stretch;
490 /* Modern browsers */
490 /* Modern browsers */
491 display: flex;
491 display: flex;
492 flex-direction: column;
492 flex-direction: column;
493 align-items: stretch;
493 align-items: stretch;
494 }
494 }
495 }
495 }
496 /* input_area and input_prompt must match in top border and margin for alignment */
496 /* input_area and input_prompt must match in top border and margin for alignment */
497 div.input_prompt {
497 div.input_prompt {
498 color: #000080;
498 color: #000080;
499 border-top: 1px solid transparent;
499 border-top: 1px solid transparent;
500 }
500 }
501 div.input_area > div.highlight {
501 div.input_area > div.highlight {
502 margin: 0.4em;
502 margin: 0.4em;
503 border: none;
503 border: none;
504 padding: 0px;
504 padding: 0px;
505 background-color: transparent;
505 background-color: transparent;
506 }
506 }
507 div.input_area > div.highlight > pre {
507 div.input_area > div.highlight > pre {
508 margin: 0px;
508 margin: 0px;
509 border: none;
509 border: none;
510 padding: 0px;
510 padding: 0px;
511 background-color: transparent;
511 background-color: transparent;
512 }
512 }
513 /* The following gets added to the <head> if it is detected that the user has a
513 /* The following gets added to the <head> if it is detected that the user has a
514 * monospace font with inconsistent normal/bold/italic height. See
514 * monospace font with inconsistent normal/bold/italic height. See
515 * notebookmain.js. Such fonts will have keywords vertically offset with
515 * notebookmain.js. Such fonts will have keywords vertically offset with
516 * respect to the rest of the text. The user should select a better font.
516 * respect to the rest of the text. The user should select a better font.
517 * See: https://github.com/ipython/ipython/issues/1503
517 * See: https://github.com/ipython/ipython/issues/1503
518 *
518 *
519 * .CodeMirror span {
519 * .CodeMirror span {
520 * vertical-align: bottom;
520 * vertical-align: bottom;
521 * }
521 * }
522 */
522 */
523 .CodeMirror {
523 .CodeMirror {
524 line-height: 1.21429em;
524 line-height: 1.21429em;
525 /* Changed from 1em to our global default */
525 /* Changed from 1em to our global default */
526 height: auto;
526 height: auto;
527 /* Changed to auto to autogrow */
527 /* Changed to auto to autogrow */
528 background: none;
528 background: none;
529 /* Changed from white to allow our bg to show through */
529 /* Changed from white to allow our bg to show through */
530 }
530 }
531 .CodeMirror-scroll {
531 .CodeMirror-scroll {
532 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
532 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
533 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
533 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
534 overflow-y: hidden;
534 overflow-y: hidden;
535 overflow-x: auto;
535 overflow-x: auto;
536 }
536 }
537 .CodeMirror-lines {
537 .CodeMirror-lines {
538 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
538 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
539 /* we have set a different line-height and want this to scale with that. */
539 /* we have set a different line-height and want this to scale with that. */
540 padding: 0.4em;
540 padding: 0.4em;
541 }
541 }
542 .CodeMirror-linenumber {
542 .CodeMirror-linenumber {
543 padding: 0 8px 0 4px;
543 padding: 0 8px 0 4px;
544 }
544 }
545 .CodeMirror-gutters {
545 .CodeMirror-gutters {
546 border-bottom-left-radius: 4px;
546 border-bottom-left-radius: 4px;
547 border-top-left-radius: 4px;
547 border-top-left-radius: 4px;
548 }
548 }
549 .CodeMirror pre {
549 .CodeMirror pre {
550 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
550 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
551 /* .CodeMirror-lines */
551 /* .CodeMirror-lines */
552 padding: 0;
552 padding: 0;
553 border: 0;
553 border: 0;
554 border-radius: 0;
554 border-radius: 0;
555 }
555 }
556 .CodeMirror-vscrollbar,
556 .CodeMirror-vscrollbar,
557 .CodeMirror-hscrollbar {
557 .CodeMirror-hscrollbar {
558 display: none !important;
558 display: none !important;
559 }
559 }
560 /*
560 /*
561
561
562 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
562 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
563 Adapted from GitHub theme
563 Adapted from GitHub theme
564
564
565 */
565 */
566 pre code {
566 .highlight-base {
567 display: block;
567 color: #000000;
568 padding: 0.5em;
568 }
569 }
569 .highlight-variable {
570 .highlight-base,
570 color: #000000;
571 pre code,
571 }
572 pre .subst,
572 .highlight-variable-2 {
573 pre .tag .title,
573 color: #1a1a1a;
574 pre .lisp .title,
574 }
575 pre .clojure .built_in,
575 .highlight-variable-3 {
576 pre .nginx .title {
576 color: #333333;
577 color: black;
578 }
577 }
579 .highlight-string,
578 .highlight-string {
580 pre .string,
581 pre .constant,
582 pre .parent,
583 pre .tag .value,
584 pre .rules .value,
585 pre .rules .value .number,
586 pre .preprocessor,
587 pre .ruby .symbol,
588 pre .ruby .symbol .string,
589 pre .aggregate,
590 pre .template_tag,
591 pre .django .variable,
592 pre .smalltalk .class,
593 pre .addition,
594 pre .flow,
595 pre .stream,
596 pre .bash .variable,
597 pre .apache .tag,
598 pre .apache .cbracket,
599 pre .tex .command,
600 pre .tex .special,
601 pre .erlang_repl .function_or_atom,
602 pre .markdown .header {
603 color: #BA2121;
579 color: #BA2121;
604 }
580 }
605 .highlight-comment,
581 .highlight-comment {
606 pre .comment,
607 pre .annotation,
608 pre .template_comment,
609 pre .diff .header,
610 pre .chunk,
611 pre .markdown .blockquote {
612 color: #408080;
582 color: #408080;
613 font-style: italic;
583 font-style: italic;
614 }
584 }
615 .highlight-number,
585 .highlight-number {
616 pre .number,
617 pre .date,
618 pre .regexp,
619 pre .literal,
620 pre .smalltalk .symbol,
621 pre .smalltalk .char,
622 pre .go .constant,
623 pre .change,
624 pre .markdown .bullet,
625 pre .markdown .link_url {
626 color: #080;
586 color: #080;
627 }
587 }
628 pre .label,
588 .highlight-atom {
629 pre .javadoc,
589 color: #88F;
630 pre .ruby .string,
590 }
631 pre .decorator,
591 .highlight-keyword {
632 pre .filter .argument,
633 pre .localvars,
634 pre .array,
635 pre .attr_selector,
636 pre .important,
637 pre .pseudo,
638 pre .pi,
639 pre .doctype,
640 pre .deletion,
641 pre .envvar,
642 pre .shebang,
643 pre .apache .sqbracket,
644 pre .nginx .built_in,
645 pre .tex .formula,
646 pre .erlang_repl .reserved,
647 pre .prompt,
648 pre .markdown .link_label,
649 pre .vhdl .attribute,
650 pre .clojure .attribute,
651 pre .coffeescript .property {
652 color: #8888ff;
653 }
654 .highlight-keyword,
655 pre .keyword,
656 pre .id,
657 pre .phpdoc,
658 pre .aggregate,
659 pre .css .tag,
660 pre .javadoctag,
661 pre .phpdoc,
662 pre .yardoctag,
663 pre .smalltalk .class,
664 pre .winutils,
665 pre .bash .variable,
666 pre .apache .tag,
667 pre .go .typename,
668 pre .tex .command,
669 pre .markdown .strong,
670 pre .request,
671 pre .status {
672 color: #008000;
592 color: #008000;
673 font-weight: bold;
593 font-weight: bold;
674 }
594 }
675 .highlight-builtin,
595 .highlight-builtin {
676 pre .built_in {
677 color: #008000;
596 color: #008000;
678 }
597 }
679 pre .markdown .emphasis {
598 .highlight-error {
680 font-style: italic;
599 color: #f00;
681 }
600 }
682 pre .nginx .built_in {
601 .highlight-operator {
683 font-weight: normal;
602 color: #AA22FF;
603 font-weight: bold;
604 }
605 .highlight-meta {
606 color: #AA22FF;
684 }
607 }
685 pre .coffeescript .javascript,
608 /* previously not defined, copying from default codemirror */
686 pre .javascript .xml,
609 .highlight-def {
687 pre .tex .formula,
610 color: #00f;
688 pre .xml .javascript,
689 pre .xml .vbscript,
690 pre .xml .css,
691 pre .xml .cdata {
692 opacity: 0.5;
693 }
611 }
694 /* apply the same style to codemirror */
612 .highlight-string-2 {
695 .cm-s-ipython span.cm-variable {
613 color: #f50;
696 color: black;
614 }
615 .highlight-qualifier {
616 color: #555;
617 }
618 .highlight-bracket {
619 color: #997;
620 }
621 .highlight-tag {
622 color: #170;
697 }
623 }
624 .highlight-attribute {
625 color: #00c;
626 }
627 .highlight-header {
628 color: blue;
629 }
630 .highlight-quote {
631 color: #090;
632 }
633 .highlight-link {
634 color: #00c;
635 }
636 /* apply the same style to codemirror */
698 .cm-s-ipython span.cm-keyword {
637 .cm-s-ipython span.cm-keyword {
699 color: #008000;
638 color: #008000;
700 font-weight: bold;
639 font-weight: bold;
701 }
640 }
641 .cm-s-ipython span.cm-atom {
642 color: #88F;
643 }
702 .cm-s-ipython span.cm-number {
644 .cm-s-ipython span.cm-number {
703 color: #080;
645 color: #080;
704 }
646 }
647 .cm-s-ipython span.cm-def {
648 color: #00f;
649 }
650 .cm-s-ipython span.cm-variable {
651 color: #000000;
652 }
653 .cm-s-ipython span.cm-operator {
654 color: #AA22FF;
655 font-weight: bold;
656 }
657 .cm-s-ipython span.cm-variable-2 {
658 color: #1a1a1a;
659 }
660 .cm-s-ipython span.cm-variable-3 {
661 color: #333333;
662 }
705 .cm-s-ipython span.cm-comment {
663 .cm-s-ipython span.cm-comment {
706 color: #408080;
664 color: #408080;
707 font-style: italic;
665 font-style: italic;
708 }
666 }
709 .cm-s-ipython span.cm-string {
667 .cm-s-ipython span.cm-string {
710 color: #BA2121;
668 color: #BA2121;
711 }
669 }
670 .cm-s-ipython span.cm-string-2 {
671 color: #f50;
672 }
673 .cm-s-ipython span.cm-meta {
674 color: #AA22FF;
675 }
676 .cm-s-ipython span.cm-qualifier {
677 color: #555;
678 }
712 .cm-s-ipython span.cm-builtin {
679 .cm-s-ipython span.cm-builtin {
713 color: #008000;
680 color: #008000;
714 }
681 }
715 .cm-s-ipython span.cm-error {
682 .cm-s-ipython span.cm-bracket {
716 color: #f00;
683 color: #997;
717 }
684 }
718 .cm-s-ipython span.cm-operator {
685 .cm-s-ipython span.cm-tag {
719 color: #AA22FF;
686 color: #170;
720 font-weight: bold;
721 }
687 }
722 .cm-s-ipython span.cm-meta {
688 .cm-s-ipython span.cm-attribute {
723 color: #AA22FF;
689 color: #00c;
690 }
691 .cm-s-ipython span.cm-header {
692 color: blue;
693 }
694 .cm-s-ipython span.cm-quote {
695 color: #090;
696 }
697 .cm-s-ipython span.cm-link {
698 color: #00c;
699 }
700 .cm-s-ipython span.cm-error {
701 color: #f00;
724 }
702 }
725 .cm-s-ipython span.cm-tab {
703 .cm-s-ipython span.cm-tab {
726 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
704 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
727 background-position: right;
705 background-position: right;
728 background-repeat: no-repeat;
706 background-repeat: no-repeat;
729 }
707 }
730 div.output_wrapper {
708 div.output_wrapper {
731 /* this position must be relative to enable descendents to be absolute within it */
709 /* this position must be relative to enable descendents to be absolute within it */
732 position: relative;
710 position: relative;
733 /* Old browsers */
711 /* Old browsers */
734 display: -webkit-box;
712 display: -webkit-box;
735 -webkit-box-orient: vertical;
713 -webkit-box-orient: vertical;
736 -webkit-box-align: stretch;
714 -webkit-box-align: stretch;
737 display: -moz-box;
715 display: -moz-box;
738 -moz-box-orient: vertical;
716 -moz-box-orient: vertical;
739 -moz-box-align: stretch;
717 -moz-box-align: stretch;
740 display: box;
718 display: box;
741 box-orient: vertical;
719 box-orient: vertical;
742 box-align: stretch;
720 box-align: stretch;
743 /* Modern browsers */
721 /* Modern browsers */
744 display: flex;
722 display: flex;
745 flex-direction: column;
723 flex-direction: column;
746 align-items: stretch;
724 align-items: stretch;
747 }
725 }
748 /* class for the output area when it should be height-limited */
726 /* class for the output area when it should be height-limited */
749 div.output_scroll {
727 div.output_scroll {
750 /* ideally, this would be max-height, but FF barfs all over that */
728 /* ideally, this would be max-height, but FF barfs all over that */
751 height: 24em;
729 height: 24em;
752 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
730 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
753 width: 100%;
731 width: 100%;
754 overflow: auto;
732 overflow: auto;
755 border-radius: 4px;
733 border-radius: 4px;
756 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
734 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
757 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
735 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
758 display: block;
736 display: block;
759 }
737 }
760 /* output div while it is collapsed */
738 /* output div while it is collapsed */
761 div.output_collapsed {
739 div.output_collapsed {
762 margin: 0px;
740 margin: 0px;
763 padding: 0px;
741 padding: 0px;
764 /* Old browsers */
742 /* Old browsers */
765 display: -webkit-box;
743 display: -webkit-box;
766 -webkit-box-orient: vertical;
744 -webkit-box-orient: vertical;
767 -webkit-box-align: stretch;
745 -webkit-box-align: stretch;
768 display: -moz-box;
746 display: -moz-box;
769 -moz-box-orient: vertical;
747 -moz-box-orient: vertical;
770 -moz-box-align: stretch;
748 -moz-box-align: stretch;
771 display: box;
749 display: box;
772 box-orient: vertical;
750 box-orient: vertical;
773 box-align: stretch;
751 box-align: stretch;
774 /* Modern browsers */
752 /* Modern browsers */
775 display: flex;
753 display: flex;
776 flex-direction: column;
754 flex-direction: column;
777 align-items: stretch;
755 align-items: stretch;
778 }
756 }
779 div.out_prompt_overlay {
757 div.out_prompt_overlay {
780 height: 100%;
758 height: 100%;
781 padding: 0px 0.4em;
759 padding: 0px 0.4em;
782 position: absolute;
760 position: absolute;
783 border-radius: 4px;
761 border-radius: 4px;
784 }
762 }
785 div.out_prompt_overlay:hover {
763 div.out_prompt_overlay:hover {
786 /* use inner shadow to get border that is computed the same on WebKit/FF */
764 /* use inner shadow to get border that is computed the same on WebKit/FF */
787 -webkit-box-shadow: inset 0 0 1px #000000;
765 -webkit-box-shadow: inset 0 0 1px #000000;
788 box-shadow: inset 0 0 1px #000000;
766 box-shadow: inset 0 0 1px #000000;
789 background: rgba(240, 240, 240, 0.5);
767 background: rgba(240, 240, 240, 0.5);
790 }
768 }
791 div.output_prompt {
769 div.output_prompt {
792 color: #8b0000;
770 color: #8b0000;
793 }
771 }
794 /* This class is the outer container of all output sections. */
772 /* This class is the outer container of all output sections. */
795 div.output_area {
773 div.output_area {
796 padding: 0px;
774 padding: 0px;
797 page-break-inside: avoid;
775 page-break-inside: avoid;
798 /* Old browsers */
776 /* Old browsers */
799 display: -webkit-box;
777 display: -webkit-box;
800 -webkit-box-orient: horizontal;
778 -webkit-box-orient: horizontal;
801 -webkit-box-align: stretch;
779 -webkit-box-align: stretch;
802 display: -moz-box;
780 display: -moz-box;
803 -moz-box-orient: horizontal;
781 -moz-box-orient: horizontal;
804 -moz-box-align: stretch;
782 -moz-box-align: stretch;
805 display: box;
783 display: box;
806 box-orient: horizontal;
784 box-orient: horizontal;
807 box-align: stretch;
785 box-align: stretch;
808 /* Modern browsers */
786 /* Modern browsers */
809 display: flex;
787 display: flex;
810 flex-direction: row;
788 flex-direction: row;
811 align-items: stretch;
789 align-items: stretch;
812 }
790 }
813 div.output_area .MathJax_Display {
791 div.output_area .MathJax_Display {
814 text-align: left !important;
792 text-align: left !important;
815 }
793 }
816 div.output_area .rendered_html table {
794 div.output_area .rendered_html table {
817 margin-left: 0;
795 margin-left: 0;
818 margin-right: 0;
796 margin-right: 0;
819 }
797 }
820 div.output_area .rendered_html img {
798 div.output_area .rendered_html img {
821 margin-left: 0;
799 margin-left: 0;
822 margin-right: 0;
800 margin-right: 0;
823 }
801 }
824 /* This is needed to protect the pre formating from global settings such
802 /* This is needed to protect the pre formating from global settings such
825 as that of bootstrap */
803 as that of bootstrap */
826 .output {
804 .output {
827 /* Old browsers */
805 /* Old browsers */
828 display: -webkit-box;
806 display: -webkit-box;
829 -webkit-box-orient: vertical;
807 -webkit-box-orient: vertical;
830 -webkit-box-align: stretch;
808 -webkit-box-align: stretch;
831 display: -moz-box;
809 display: -moz-box;
832 -moz-box-orient: vertical;
810 -moz-box-orient: vertical;
833 -moz-box-align: stretch;
811 -moz-box-align: stretch;
834 display: box;
812 display: box;
835 box-orient: vertical;
813 box-orient: vertical;
836 box-align: stretch;
814 box-align: stretch;
837 /* Modern browsers */
815 /* Modern browsers */
838 display: flex;
816 display: flex;
839 flex-direction: column;
817 flex-direction: column;
840 align-items: stretch;
818 align-items: stretch;
841 }
819 }
842 @media (max-width: 480px) {
820 @media (max-width: 480px) {
843 div.output_area {
821 div.output_area {
844 /* Old browsers */
822 /* Old browsers */
845 display: -webkit-box;
823 display: -webkit-box;
846 -webkit-box-orient: vertical;
824 -webkit-box-orient: vertical;
847 -webkit-box-align: stretch;
825 -webkit-box-align: stretch;
848 display: -moz-box;
826 display: -moz-box;
849 -moz-box-orient: vertical;
827 -moz-box-orient: vertical;
850 -moz-box-align: stretch;
828 -moz-box-align: stretch;
851 display: box;
829 display: box;
852 box-orient: vertical;
830 box-orient: vertical;
853 box-align: stretch;
831 box-align: stretch;
854 /* Modern browsers */
832 /* Modern browsers */
855 display: flex;
833 display: flex;
856 flex-direction: column;
834 flex-direction: column;
857 align-items: stretch;
835 align-items: stretch;
858 }
836 }
859 }
837 }
860 div.output_area pre {
838 div.output_area pre {
861 margin: 0;
839 margin: 0;
862 padding: 0;
840 padding: 0;
863 border: 0;
841 border: 0;
864 vertical-align: baseline;
842 vertical-align: baseline;
865 color: #000000;
843 color: #000000;
866 background-color: transparent;
844 background-color: transparent;
867 border-radius: 0;
845 border-radius: 0;
868 }
846 }
869 /* This class is for the output subarea inside the output_area and after
847 /* This class is for the output subarea inside the output_area and after
870 the prompt div. */
848 the prompt div. */
871 div.output_subarea {
849 div.output_subarea {
872 padding: 0.4em 0.4em 0em 0.4em;
850 padding: 0.4em 0.4em 0em 0.4em;
873 /* Old browsers */
851 /* Old browsers */
874 -webkit-box-flex: 1;
852 -webkit-box-flex: 1;
875 -moz-box-flex: 1;
853 -moz-box-flex: 1;
876 box-flex: 1;
854 box-flex: 1;
877 /* Modern browsers */
855 /* Modern browsers */
878 flex: 1;
856 flex: 1;
879 }
857 }
880 /* The rest of the output_* classes are for special styling of the different
858 /* The rest of the output_* classes are for special styling of the different
881 output types */
859 output types */
882 /* all text output has this class: */
860 /* all text output has this class: */
883 div.output_text {
861 div.output_text {
884 text-align: left;
862 text-align: left;
885 color: #000000;
863 color: #000000;
886 /* This has to match that of the the CodeMirror class line-height below */
864 /* This has to match that of the the CodeMirror class line-height below */
887 line-height: 1.21429em;
865 line-height: 1.21429em;
888 }
866 }
889 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
867 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
890 div.output_stderr {
868 div.output_stderr {
891 background: #fdd;
869 background: #fdd;
892 /* very light red background for stderr */
870 /* very light red background for stderr */
893 }
871 }
894 div.output_latex {
872 div.output_latex {
895 text-align: left;
873 text-align: left;
896 }
874 }
897 /* Empty output_javascript divs should have no height */
875 /* Empty output_javascript divs should have no height */
898 div.output_javascript:empty {
876 div.output_javascript:empty {
899 padding: 0;
877 padding: 0;
900 }
878 }
901 .js-error {
879 .js-error {
902 color: darkred;
880 color: darkred;
903 }
881 }
904 /* raw_input styles */
882 /* raw_input styles */
905 div.raw_input_container {
883 div.raw_input_container {
906 font-family: monospace;
884 font-family: monospace;
907 padding-top: 5px;
885 padding-top: 5px;
908 }
886 }
909 span.raw_input_prompt {
887 span.raw_input_prompt {
910 /* nothing needed here */
888 /* nothing needed here */
911 }
889 }
912 input.raw_input {
890 input.raw_input {
913 font-family: inherit;
891 font-family: inherit;
914 font-size: inherit;
892 font-size: inherit;
915 color: inherit;
893 color: inherit;
916 width: auto;
894 width: auto;
917 /* make sure input baseline aligns with prompt */
895 /* make sure input baseline aligns with prompt */
918 vertical-align: baseline;
896 vertical-align: baseline;
919 /* padding + margin = 0.5em between prompt and cursor */
897 /* padding + margin = 0.5em between prompt and cursor */
920 padding: 0em 0.25em;
898 padding: 0em 0.25em;
921 margin: 0em 0.25em;
899 margin: 0em 0.25em;
922 }
900 }
923 input.raw_input:focus {
901 input.raw_input:focus {
924 box-shadow: none;
902 box-shadow: none;
925 }
903 }
926 p.p-space {
904 p.p-space {
927 margin-bottom: 10px;
905 margin-bottom: 10px;
928 }
906 }
929 div.output_unrecognized {
907 div.output_unrecognized {
930 padding: 5px;
908 padding: 5px;
931 font-weight: bold;
909 font-weight: bold;
932 color: red;
910 color: red;
933 }
911 }
934 div.output_unrecognized a {
912 div.output_unrecognized a {
935 color: inherit;
913 color: inherit;
936 text-decoration: none;
914 text-decoration: none;
937 }
915 }
938 div.output_unrecognized a:hover {
916 div.output_unrecognized a:hover {
939 color: inherit;
917 color: inherit;
940 text-decoration: none;
918 text-decoration: none;
941 }
919 }
942 .rendered_html {
920 .rendered_html {
943 color: #000000;
921 color: #000000;
944 /* any extras will just be numbers: */
922 /* any extras will just be numbers: */
945 }
923 }
946 .rendered_html em {
924 .rendered_html em {
947 font-style: italic;
925 font-style: italic;
948 }
926 }
949 .rendered_html strong {
927 .rendered_html strong {
950 font-weight: bold;
928 font-weight: bold;
951 }
929 }
952 .rendered_html u {
930 .rendered_html u {
953 text-decoration: underline;
931 text-decoration: underline;
954 }
932 }
955 .rendered_html :link {
933 .rendered_html :link {
956 text-decoration: underline;
934 text-decoration: underline;
957 }
935 }
958 .rendered_html :visited {
936 .rendered_html :visited {
959 text-decoration: underline;
937 text-decoration: underline;
960 }
938 }
961 .rendered_html h1 {
939 .rendered_html h1 {
962 font-size: 185.7%;
940 font-size: 185.7%;
963 margin: 1.08em 0 0 0;
941 margin: 1.08em 0 0 0;
964 font-weight: bold;
942 font-weight: bold;
965 line-height: 1.0;
943 line-height: 1.0;
966 }
944 }
967 .rendered_html h2 {
945 .rendered_html h2 {
968 font-size: 157.1%;
946 font-size: 157.1%;
969 margin: 1.27em 0 0 0;
947 margin: 1.27em 0 0 0;
970 font-weight: bold;
948 font-weight: bold;
971 line-height: 1.0;
949 line-height: 1.0;
972 }
950 }
973 .rendered_html h3 {
951 .rendered_html h3 {
974 font-size: 128.6%;
952 font-size: 128.6%;
975 margin: 1.55em 0 0 0;
953 margin: 1.55em 0 0 0;
976 font-weight: bold;
954 font-weight: bold;
977 line-height: 1.0;
955 line-height: 1.0;
978 }
956 }
979 .rendered_html h4 {
957 .rendered_html h4 {
980 font-size: 100%;
958 font-size: 100%;
981 margin: 2em 0 0 0;
959 margin: 2em 0 0 0;
982 font-weight: bold;
960 font-weight: bold;
983 line-height: 1.0;
961 line-height: 1.0;
984 }
962 }
985 .rendered_html h5 {
963 .rendered_html h5 {
986 font-size: 100%;
964 font-size: 100%;
987 margin: 2em 0 0 0;
965 margin: 2em 0 0 0;
988 font-weight: bold;
966 font-weight: bold;
989 line-height: 1.0;
967 line-height: 1.0;
990 font-style: italic;
968 font-style: italic;
991 }
969 }
992 .rendered_html h6 {
970 .rendered_html h6 {
993 font-size: 100%;
971 font-size: 100%;
994 margin: 2em 0 0 0;
972 margin: 2em 0 0 0;
995 font-weight: bold;
973 font-weight: bold;
996 line-height: 1.0;
974 line-height: 1.0;
997 font-style: italic;
975 font-style: italic;
998 }
976 }
999 .rendered_html h1:first-child {
977 .rendered_html h1:first-child {
1000 margin-top: 0.538em;
978 margin-top: 0.538em;
1001 }
979 }
1002 .rendered_html h2:first-child {
980 .rendered_html h2:first-child {
1003 margin-top: 0.636em;
981 margin-top: 0.636em;
1004 }
982 }
1005 .rendered_html h3:first-child {
983 .rendered_html h3:first-child {
1006 margin-top: 0.777em;
984 margin-top: 0.777em;
1007 }
985 }
1008 .rendered_html h4:first-child {
986 .rendered_html h4:first-child {
1009 margin-top: 1em;
987 margin-top: 1em;
1010 }
988 }
1011 .rendered_html h5:first-child {
989 .rendered_html h5:first-child {
1012 margin-top: 1em;
990 margin-top: 1em;
1013 }
991 }
1014 .rendered_html h6:first-child {
992 .rendered_html h6:first-child {
1015 margin-top: 1em;
993 margin-top: 1em;
1016 }
994 }
1017 .rendered_html ul {
995 .rendered_html ul {
1018 list-style: disc;
996 list-style: disc;
1019 margin: 0em 2em;
997 margin: 0em 2em;
1020 padding-left: 0px;
998 padding-left: 0px;
1021 }
999 }
1022 .rendered_html ul ul {
1000 .rendered_html ul ul {
1023 list-style: square;
1001 list-style: square;
1024 margin: 0em 2em;
1002 margin: 0em 2em;
1025 }
1003 }
1026 .rendered_html ul ul ul {
1004 .rendered_html ul ul ul {
1027 list-style: circle;
1005 list-style: circle;
1028 margin: 0em 2em;
1006 margin: 0em 2em;
1029 }
1007 }
1030 .rendered_html ol {
1008 .rendered_html ol {
1031 list-style: decimal;
1009 list-style: decimal;
1032 margin: 0em 2em;
1010 margin: 0em 2em;
1033 padding-left: 0px;
1011 padding-left: 0px;
1034 }
1012 }
1035 .rendered_html ol ol {
1013 .rendered_html ol ol {
1036 list-style: upper-alpha;
1014 list-style: upper-alpha;
1037 margin: 0em 2em;
1015 margin: 0em 2em;
1038 }
1016 }
1039 .rendered_html ol ol ol {
1017 .rendered_html ol ol ol {
1040 list-style: lower-alpha;
1018 list-style: lower-alpha;
1041 margin: 0em 2em;
1019 margin: 0em 2em;
1042 }
1020 }
1043 .rendered_html ol ol ol ol {
1021 .rendered_html ol ol ol ol {
1044 list-style: lower-roman;
1022 list-style: lower-roman;
1045 margin: 0em 2em;
1023 margin: 0em 2em;
1046 }
1024 }
1047 .rendered_html ol ol ol ol ol {
1025 .rendered_html ol ol ol ol ol {
1048 list-style: decimal;
1026 list-style: decimal;
1049 margin: 0em 2em;
1027 margin: 0em 2em;
1050 }
1028 }
1051 .rendered_html * + ul {
1029 .rendered_html * + ul {
1052 margin-top: 1em;
1030 margin-top: 1em;
1053 }
1031 }
1054 .rendered_html * + ol {
1032 .rendered_html * + ol {
1055 margin-top: 1em;
1033 margin-top: 1em;
1056 }
1034 }
1057 .rendered_html hr {
1035 .rendered_html hr {
1058 color: #000000;
1036 color: #000000;
1059 background-color: #000000;
1037 background-color: #000000;
1060 }
1038 }
1061 .rendered_html pre {
1039 .rendered_html pre {
1062 margin: 1em 2em;
1040 margin: 1em 2em;
1063 }
1041 }
1064 .rendered_html pre,
1042 .rendered_html pre,
1065 .rendered_html code {
1043 .rendered_html code {
1066 border: 0;
1044 border: 0;
1067 background-color: #ffffff;
1045 background-color: #ffffff;
1068 color: #000000;
1046 color: #000000;
1069 font-size: 100%;
1047 font-size: 100%;
1070 padding: 0px;
1048 padding: 0px;
1071 }
1049 }
1072 .rendered_html blockquote {
1050 .rendered_html blockquote {
1073 margin: 1em 2em;
1051 margin: 1em 2em;
1074 }
1052 }
1075 .rendered_html table {
1053 .rendered_html table {
1076 margin-left: auto;
1054 margin-left: auto;
1077 margin-right: auto;
1055 margin-right: auto;
1078 border: 1px solid #000000;
1056 border: 1px solid #000000;
1079 border-collapse: collapse;
1057 border-collapse: collapse;
1080 }
1058 }
1081 .rendered_html tr,
1059 .rendered_html tr,
1082 .rendered_html th,
1060 .rendered_html th,
1083 .rendered_html td {
1061 .rendered_html td {
1084 border: 1px solid #000000;
1062 border: 1px solid #000000;
1085 border-collapse: collapse;
1063 border-collapse: collapse;
1086 margin: 1em 2em;
1064 margin: 1em 2em;
1087 }
1065 }
1088 .rendered_html td,
1066 .rendered_html td,
1089 .rendered_html th {
1067 .rendered_html th {
1090 text-align: left;
1068 text-align: left;
1091 vertical-align: middle;
1069 vertical-align: middle;
1092 padding: 4px;
1070 padding: 4px;
1093 }
1071 }
1094 .rendered_html th {
1072 .rendered_html th {
1095 font-weight: bold;
1073 font-weight: bold;
1096 }
1074 }
1097 .rendered_html * + table {
1075 .rendered_html * + table {
1098 margin-top: 1em;
1076 margin-top: 1em;
1099 }
1077 }
1100 .rendered_html p {
1078 .rendered_html p {
1101 text-align: justify;
1079 text-align: justify;
1102 }
1080 }
1103 .rendered_html * + p {
1081 .rendered_html * + p {
1104 margin-top: 1em;
1082 margin-top: 1em;
1105 }
1083 }
1106 .rendered_html img {
1084 .rendered_html img {
1107 display: block;
1085 display: block;
1108 margin-left: auto;
1086 margin-left: auto;
1109 margin-right: auto;
1087 margin-right: auto;
1110 }
1088 }
1111 .rendered_html * + img {
1089 .rendered_html * + img {
1112 margin-top: 1em;
1090 margin-top: 1em;
1113 }
1091 }
1114 div.text_cell {
1092 div.text_cell {
1115 padding: 5px 5px 5px 0px;
1093 padding: 5px 5px 5px 0px;
1116 /* Old browsers */
1094 /* Old browsers */
1117 display: -webkit-box;
1095 display: -webkit-box;
1118 -webkit-box-orient: horizontal;
1096 -webkit-box-orient: horizontal;
1119 -webkit-box-align: stretch;
1097 -webkit-box-align: stretch;
1120 display: -moz-box;
1098 display: -moz-box;
1121 -moz-box-orient: horizontal;
1099 -moz-box-orient: horizontal;
1122 -moz-box-align: stretch;
1100 -moz-box-align: stretch;
1123 display: box;
1101 display: box;
1124 box-orient: horizontal;
1102 box-orient: horizontal;
1125 box-align: stretch;
1103 box-align: stretch;
1126 /* Modern browsers */
1104 /* Modern browsers */
1127 display: flex;
1105 display: flex;
1128 flex-direction: row;
1106 flex-direction: row;
1129 align-items: stretch;
1107 align-items: stretch;
1130 }
1108 }
1131 @media (max-width: 480px) {
1109 @media (max-width: 480px) {
1132 div.text_cell > div.prompt {
1110 div.text_cell > div.prompt {
1133 display: none;
1111 display: none;
1134 }
1112 }
1135 }
1113 }
1136 div.text_cell_render {
1114 div.text_cell_render {
1137 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
1115 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
1138 outline: none;
1116 outline: none;
1139 resize: none;
1117 resize: none;
1140 width: inherit;
1118 width: inherit;
1141 border-style: none;
1119 border-style: none;
1142 padding: 0.5em 0.5em 0.5em 0.4em;
1120 padding: 0.5em 0.5em 0.5em 0.4em;
1143 color: #000000;
1121 color: #000000;
1144 box-sizing: border-box;
1122 box-sizing: border-box;
1145 -moz-box-sizing: border-box;
1123 -moz-box-sizing: border-box;
1146 -webkit-box-sizing: border-box;
1124 -webkit-box-sizing: border-box;
1147 }
1125 }
1148 a.anchor-link:link {
1126 a.anchor-link:link {
1149 text-decoration: none;
1127 text-decoration: none;
1150 padding: 0px 20px;
1128 padding: 0px 20px;
1151 visibility: hidden;
1129 visibility: hidden;
1152 }
1130 }
1153 h1:hover .anchor-link,
1131 h1:hover .anchor-link,
1154 h2:hover .anchor-link,
1132 h2:hover .anchor-link,
1155 h3:hover .anchor-link,
1133 h3:hover .anchor-link,
1156 h4:hover .anchor-link,
1134 h4:hover .anchor-link,
1157 h5:hover .anchor-link,
1135 h5:hover .anchor-link,
1158 h6:hover .anchor-link {
1136 h6:hover .anchor-link {
1159 visibility: visible;
1137 visibility: visible;
1160 }
1138 }
1161 .text_cell.rendered .input_area {
1139 .text_cell.rendered .input_area {
1162 display: none;
1140 display: none;
1163 }
1141 }
1164 .text_cell.unrendered .text_cell_render {
1142 .text_cell.unrendered .text_cell_render {
1165 display: none;
1143 display: none;
1166 }
1144 }
1167 .cm-header-1,
1145 .cm-header-1,
1168 .cm-header-2,
1146 .cm-header-2,
1169 .cm-header-3,
1147 .cm-header-3,
1170 .cm-header-4,
1148 .cm-header-4,
1171 .cm-header-5,
1149 .cm-header-5,
1172 .cm-header-6 {
1150 .cm-header-6 {
1173 font-weight: bold;
1151 font-weight: bold;
1174 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1152 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1175 }
1153 }
1176 .cm-header-1 {
1154 .cm-header-1 {
1177 font-size: 185.7%;
1155 font-size: 185.7%;
1178 }
1156 }
1179 .cm-header-2 {
1157 .cm-header-2 {
1180 font-size: 157.1%;
1158 font-size: 157.1%;
1181 }
1159 }
1182 .cm-header-3 {
1160 .cm-header-3 {
1183 font-size: 128.6%;
1161 font-size: 128.6%;
1184 }
1162 }
1185 .cm-header-4 {
1163 .cm-header-4 {
1186 font-size: 110%;
1164 font-size: 110%;
1187 }
1165 }
1188 .cm-header-5 {
1166 .cm-header-5 {
1189 font-size: 100%;
1167 font-size: 100%;
1190 font-style: italic;
1168 font-style: italic;
1191 }
1169 }
1192 .cm-header-6 {
1170 .cm-header-6 {
1193 font-size: 100%;
1171 font-size: 100%;
1194 font-style: italic;
1172 font-style: italic;
1195 }
1173 }
1196 .widget-area {
1174 .widget-area {
1197 /*
1175 /*
1198 LESS file that styles IPython notebook widgets and the area they sit in.
1176 LESS file that styles IPython notebook widgets and the area they sit in.
1199
1177
1200 The widget area typically looks something like this:
1178 The widget area typically looks something like this:
1201 +------------------------------------------+
1179 +------------------------------------------+
1202 | widget-area |
1180 | widget-area |
1203 | +--------+---------------------------+ |
1181 | +--------+---------------------------+ |
1204 | | prompt | widget-subarea | |
1182 | | prompt | widget-subarea | |
1205 | | | +--------+ +--------+ | |
1183 | | | +--------+ +--------+ | |
1206 | | | | widget | | widget | | |
1184 | | | | widget | | widget | | |
1207 | | | +--------+ +--------+ | |
1185 | | | +--------+ +--------+ | |
1208 | +--------+---------------------------+ |
1186 | +--------+---------------------------+ |
1209 +------------------------------------------+
1187 +------------------------------------------+
1210 */
1188 */
1211 page-break-inside: avoid;
1189 page-break-inside: avoid;
1212 /* Old browsers */
1190 /* Old browsers */
1213 display: -webkit-box;
1191 display: -webkit-box;
1214 -webkit-box-orient: horizontal;
1192 -webkit-box-orient: horizontal;
1215 -webkit-box-align: stretch;
1193 -webkit-box-align: stretch;
1216 display: -moz-box;
1194 display: -moz-box;
1217 -moz-box-orient: horizontal;
1195 -moz-box-orient: horizontal;
1218 -moz-box-align: stretch;
1196 -moz-box-align: stretch;
1219 display: box;
1197 display: box;
1220 box-orient: horizontal;
1198 box-orient: horizontal;
1221 box-align: stretch;
1199 box-align: stretch;
1222 /* Modern browsers */
1200 /* Modern browsers */
1223 display: flex;
1201 display: flex;
1224 flex-direction: row;
1202 flex-direction: row;
1225 align-items: stretch;
1203 align-items: stretch;
1226 }
1204 }
1227 .widget-area .widget-subarea {
1205 .widget-area .widget-subarea {
1228 padding: 0.44em 0.4em 0.4em 1px;
1206 padding: 0.44em 0.4em 0.4em 1px;
1229 margin-left: 6px;
1207 margin-left: 6px;
1230 box-sizing: border-box;
1208 box-sizing: border-box;
1231 -moz-box-sizing: border-box;
1209 -moz-box-sizing: border-box;
1232 -webkit-box-sizing: border-box;
1210 -webkit-box-sizing: border-box;
1233 /* Old browsers */
1211 /* Old browsers */
1234 display: -webkit-box;
1212 display: -webkit-box;
1235 -webkit-box-orient: vertical;
1213 -webkit-box-orient: vertical;
1236 -webkit-box-align: stretch;
1214 -webkit-box-align: stretch;
1237 display: -moz-box;
1215 display: -moz-box;
1238 -moz-box-orient: vertical;
1216 -moz-box-orient: vertical;
1239 -moz-box-align: stretch;
1217 -moz-box-align: stretch;
1240 display: box;
1218 display: box;
1241 box-orient: vertical;
1219 box-orient: vertical;
1242 box-align: stretch;
1220 box-align: stretch;
1243 /* Modern browsers */
1221 /* Modern browsers */
1244 display: flex;
1222 display: flex;
1245 flex-direction: column;
1223 flex-direction: column;
1246 align-items: stretch;
1224 align-items: stretch;
1247 /* Old browsers */
1225 /* Old browsers */
1248 -webkit-box-flex: 2;
1226 -webkit-box-flex: 2;
1249 -moz-box-flex: 2;
1227 -moz-box-flex: 2;
1250 box-flex: 2;
1228 box-flex: 2;
1251 /* Modern browsers */
1229 /* Modern browsers */
1252 flex: 2;
1230 flex: 2;
1253 /* Old browsers */
1231 /* Old browsers */
1254 -webkit-box-align: start;
1232 -webkit-box-align: start;
1255 -moz-box-align: start;
1233 -moz-box-align: start;
1256 box-align: start;
1234 box-align: start;
1257 /* Modern browsers */
1235 /* Modern browsers */
1258 align-items: flex-start;
1236 align-items: flex-start;
1259 }
1237 }
1260 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
1238 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
1261 THE WIDGET AREA). */
1239 THE WIDGET AREA). */
1262 .slide-track {
1240 .slide-track {
1263 /* Slider Track */
1241 /* Slider Track */
1264 border: 1px solid #CCCCCC;
1242 border: 1px solid #CCCCCC;
1265 background: #FFFFFF;
1243 background: #FFFFFF;
1266 border-radius: 4px;
1244 border-radius: 4px;
1267 /* Round the corners of the slide track */
1245 /* Round the corners of the slide track */
1268 }
1246 }
1269 .widget-hslider {
1247 .widget-hslider {
1270 /* Horizontal jQuery Slider
1248 /* Horizontal jQuery Slider
1271
1249
1272 Both the horizontal and vertical versions of the slider are characterized
1250 Both the horizontal and vertical versions of the slider are characterized
1273 by a styled div that contains an invisible jQuery slide div which
1251 by a styled div that contains an invisible jQuery slide div which
1274 contains a visible slider handle div. This is requred so we can control
1252 contains a visible slider handle div. This is requred so we can control
1275 how the slider is drawn and 'fix' the issue where the slide handle
1253 how the slider is drawn and 'fix' the issue where the slide handle
1276 doesn't stop at the end of the slide.
1254 doesn't stop at the end of the slide.
1277
1255
1278 Both horizontal and vertical sliders have this div nesting:
1256 Both horizontal and vertical sliders have this div nesting:
1279 +------------------------------------------+
1257 +------------------------------------------+
1280 | widget-(h/v)slider |
1258 | widget-(h/v)slider |
1281 | +--------+---------------------------+ |
1259 | +--------+---------------------------+ |
1282 | | ui-slider | |
1260 | | ui-slider | |
1283 | | +------------------+ | |
1261 | | +------------------+ | |
1284 | | | ui-slider-handle | | |
1262 | | | ui-slider-handle | | |
1285 | | +------------------+ | |
1263 | | +------------------+ | |
1286 | +--------+---------------------------+ |
1264 | +--------+---------------------------+ |
1287 +------------------------------------------+
1265 +------------------------------------------+
1288 */
1266 */
1289 /* Fix the padding of the slide track so the ui-slider is sized
1267 /* Fix the padding of the slide track so the ui-slider is sized
1290 correctly. */
1268 correctly. */
1291 padding-left: 8px;
1269 padding-left: 8px;
1292 padding-right: 5px;
1270 padding-right: 5px;
1293 overflow: visible;
1271 overflow: visible;
1294 /* Default size of the slider */
1272 /* Default size of the slider */
1295 width: 350px;
1273 width: 350px;
1296 height: 5px;
1274 height: 5px;
1297 max-height: 5px;
1275 max-height: 5px;
1298 margin-top: 13px;
1276 margin-top: 13px;
1299 margin-bottom: 10px;
1277 margin-bottom: 10px;
1300 /* Style the slider track */
1278 /* Style the slider track */
1301 /* Slider Track */
1279 /* Slider Track */
1302 border: 1px solid #CCCCCC;
1280 border: 1px solid #CCCCCC;
1303 background: #FFFFFF;
1281 background: #FFFFFF;
1304 border-radius: 4px;
1282 border-radius: 4px;
1305 /* Round the corners of the slide track */
1283 /* Round the corners of the slide track */
1306 /* Make the div a flex box (makes FF behave correctly). */
1284 /* Make the div a flex box (makes FF behave correctly). */
1307 /* Old browsers */
1285 /* Old browsers */
1308 display: -webkit-box;
1286 display: -webkit-box;
1309 -webkit-box-orient: horizontal;
1287 -webkit-box-orient: horizontal;
1310 -webkit-box-align: stretch;
1288 -webkit-box-align: stretch;
1311 display: -moz-box;
1289 display: -moz-box;
1312 -moz-box-orient: horizontal;
1290 -moz-box-orient: horizontal;
1313 -moz-box-align: stretch;
1291 -moz-box-align: stretch;
1314 display: box;
1292 display: box;
1315 box-orient: horizontal;
1293 box-orient: horizontal;
1316 box-align: stretch;
1294 box-align: stretch;
1317 /* Modern browsers */
1295 /* Modern browsers */
1318 display: flex;
1296 display: flex;
1319 flex-direction: row;
1297 flex-direction: row;
1320 align-items: stretch;
1298 align-items: stretch;
1321 }
1299 }
1322 .widget-hslider .ui-slider {
1300 .widget-hslider .ui-slider {
1323 /* Inner, invisible slide div */
1301 /* Inner, invisible slide div */
1324 border: 0px !important;
1302 border: 0px !important;
1325 background: none !important;
1303 background: none !important;
1326 /* Old browsers */
1304 /* Old browsers */
1327 display: -webkit-box;
1305 display: -webkit-box;
1328 -webkit-box-orient: horizontal;
1306 -webkit-box-orient: horizontal;
1329 -webkit-box-align: stretch;
1307 -webkit-box-align: stretch;
1330 display: -moz-box;
1308 display: -moz-box;
1331 -moz-box-orient: horizontal;
1309 -moz-box-orient: horizontal;
1332 -moz-box-align: stretch;
1310 -moz-box-align: stretch;
1333 display: box;
1311 display: box;
1334 box-orient: horizontal;
1312 box-orient: horizontal;
1335 box-align: stretch;
1313 box-align: stretch;
1336 /* Modern browsers */
1314 /* Modern browsers */
1337 display: flex;
1315 display: flex;
1338 flex-direction: row;
1316 flex-direction: row;
1339 align-items: stretch;
1317 align-items: stretch;
1340 /* Old browsers */
1318 /* Old browsers */
1341 -webkit-box-flex: 1;
1319 -webkit-box-flex: 1;
1342 -moz-box-flex: 1;
1320 -moz-box-flex: 1;
1343 box-flex: 1;
1321 box-flex: 1;
1344 /* Modern browsers */
1322 /* Modern browsers */
1345 flex: 1;
1323 flex: 1;
1346 }
1324 }
1347 .widget-hslider .ui-slider .ui-slider-handle {
1325 .widget-hslider .ui-slider .ui-slider-handle {
1348 width: 14px !important;
1326 width: 14px !important;
1349 height: 28px !important;
1327 height: 28px !important;
1350 margin-top: -8px !important;
1328 margin-top: -8px !important;
1351 }
1329 }
1352 .widget-hslider .ui-slider .ui-slider-range {
1330 .widget-hslider .ui-slider .ui-slider-range {
1353 height: 12px !important;
1331 height: 12px !important;
1354 margin-top: -4px !important;
1332 margin-top: -4px !important;
1355 }
1333 }
1356 .widget-vslider {
1334 .widget-vslider {
1357 /* Vertical jQuery Slider */
1335 /* Vertical jQuery Slider */
1358 /* Fix the padding of the slide track so the ui-slider is sized
1336 /* Fix the padding of the slide track so the ui-slider is sized
1359 correctly. */
1337 correctly. */
1360 padding-bottom: 8px;
1338 padding-bottom: 8px;
1361 overflow: visible;
1339 overflow: visible;
1362 /* Default size of the slider */
1340 /* Default size of the slider */
1363 width: 5px;
1341 width: 5px;
1364 max-width: 5px;
1342 max-width: 5px;
1365 height: 250px;
1343 height: 250px;
1366 margin-left: 12px;
1344 margin-left: 12px;
1367 /* Style the slider track */
1345 /* Style the slider track */
1368 /* Slider Track */
1346 /* Slider Track */
1369 border: 1px solid #CCCCCC;
1347 border: 1px solid #CCCCCC;
1370 background: #FFFFFF;
1348 background: #FFFFFF;
1371 border-radius: 4px;
1349 border-radius: 4px;
1372 /* Round the corners of the slide track */
1350 /* Round the corners of the slide track */
1373 /* Make the div a flex box (makes FF behave correctly). */
1351 /* Make the div a flex box (makes FF behave correctly). */
1374 /* Old browsers */
1352 /* Old browsers */
1375 display: -webkit-box;
1353 display: -webkit-box;
1376 -webkit-box-orient: vertical;
1354 -webkit-box-orient: vertical;
1377 -webkit-box-align: stretch;
1355 -webkit-box-align: stretch;
1378 display: -moz-box;
1356 display: -moz-box;
1379 -moz-box-orient: vertical;
1357 -moz-box-orient: vertical;
1380 -moz-box-align: stretch;
1358 -moz-box-align: stretch;
1381 display: box;
1359 display: box;
1382 box-orient: vertical;
1360 box-orient: vertical;
1383 box-align: stretch;
1361 box-align: stretch;
1384 /* Modern browsers */
1362 /* Modern browsers */
1385 display: flex;
1363 display: flex;
1386 flex-direction: column;
1364 flex-direction: column;
1387 align-items: stretch;
1365 align-items: stretch;
1388 }
1366 }
1389 .widget-vslider .ui-slider {
1367 .widget-vslider .ui-slider {
1390 /* Inner, invisible slide div */
1368 /* Inner, invisible slide div */
1391 border: 0px !important;
1369 border: 0px !important;
1392 background: none !important;
1370 background: none !important;
1393 margin-left: -4px;
1371 margin-left: -4px;
1394 margin-top: 5px;
1372 margin-top: 5px;
1395 /* Old browsers */
1373 /* Old browsers */
1396 display: -webkit-box;
1374 display: -webkit-box;
1397 -webkit-box-orient: vertical;
1375 -webkit-box-orient: vertical;
1398 -webkit-box-align: stretch;
1376 -webkit-box-align: stretch;
1399 display: -moz-box;
1377 display: -moz-box;
1400 -moz-box-orient: vertical;
1378 -moz-box-orient: vertical;
1401 -moz-box-align: stretch;
1379 -moz-box-align: stretch;
1402 display: box;
1380 display: box;
1403 box-orient: vertical;
1381 box-orient: vertical;
1404 box-align: stretch;
1382 box-align: stretch;
1405 /* Modern browsers */
1383 /* Modern browsers */
1406 display: flex;
1384 display: flex;
1407 flex-direction: column;
1385 flex-direction: column;
1408 align-items: stretch;
1386 align-items: stretch;
1409 /* Old browsers */
1387 /* Old browsers */
1410 -webkit-box-flex: 1;
1388 -webkit-box-flex: 1;
1411 -moz-box-flex: 1;
1389 -moz-box-flex: 1;
1412 box-flex: 1;
1390 box-flex: 1;
1413 /* Modern browsers */
1391 /* Modern browsers */
1414 flex: 1;
1392 flex: 1;
1415 }
1393 }
1416 .widget-vslider .ui-slider .ui-slider-handle {
1394 .widget-vslider .ui-slider .ui-slider-handle {
1417 width: 28px !important;
1395 width: 28px !important;
1418 height: 14px !important;
1396 height: 14px !important;
1419 margin-left: -9px;
1397 margin-left: -9px;
1420 }
1398 }
1421 .widget-vslider .ui-slider .ui-slider-range {
1399 .widget-vslider .ui-slider .ui-slider-range {
1422 width: 12px !important;
1400 width: 12px !important;
1423 margin-left: -1px !important;
1401 margin-left: -1px !important;
1424 }
1402 }
1425 .widget-text {
1403 .widget-text {
1426 /* String Textbox - used for TextBoxView and TextAreaView */
1404 /* String Textbox - used for TextBoxView and TextAreaView */
1427 width: 350px;
1405 width: 350px;
1428 margin: 0px !important;
1406 margin: 0px !important;
1429 }
1407 }
1430 .widget-listbox {
1408 .widget-listbox {
1431 /* Listbox */
1409 /* Listbox */
1432 width: 350px;
1410 width: 350px;
1433 margin-bottom: 0px;
1411 margin-bottom: 0px;
1434 }
1412 }
1435 .widget-numeric-text {
1413 .widget-numeric-text {
1436 /* Single Line Textbox - used for IntTextView and FloatTextView */
1414 /* Single Line Textbox - used for IntTextView and FloatTextView */
1437 width: 150px;
1415 width: 150px;
1438 margin: 0px !important;
1416 margin: 0px !important;
1439 }
1417 }
1440 .widget-progress {
1418 .widget-progress {
1441 /* Progress Bar */
1419 /* Progress Bar */
1442 margin-top: 6px;
1420 margin-top: 6px;
1443 width: 350px;
1421 width: 350px;
1444 }
1422 }
1445 .widget-progress .progress-bar {
1423 .widget-progress .progress-bar {
1446 /* Disable progress bar animation */
1424 /* Disable progress bar animation */
1447 -webkit-transition: none;
1425 -webkit-transition: none;
1448 -moz-transition: none;
1426 -moz-transition: none;
1449 -ms-transition: none;
1427 -ms-transition: none;
1450 -o-transition: none;
1428 -o-transition: none;
1451 transition: none;
1429 transition: none;
1452 }
1430 }
1453 .widget-combo-btn {
1431 .widget-combo-btn {
1454 /* ComboBox Main Button */
1432 /* ComboBox Main Button */
1455 min-width: 125px;
1433 min-width: 125px;
1456 }
1434 }
1457 .widget_item .dropdown-menu li a {
1435 .widget_item .dropdown-menu li a {
1458 color: inherit;
1436 color: inherit;
1459 }
1437 }
1460 .widget-hbox {
1438 .widget-hbox {
1461 /* Horizontal widgets */
1439 /* Horizontal widgets */
1462 /* Old browsers */
1440 /* Old browsers */
1463 display: -webkit-box;
1441 display: -webkit-box;
1464 -webkit-box-orient: horizontal;
1442 -webkit-box-orient: horizontal;
1465 -webkit-box-align: stretch;
1443 -webkit-box-align: stretch;
1466 display: -moz-box;
1444 display: -moz-box;
1467 -moz-box-orient: horizontal;
1445 -moz-box-orient: horizontal;
1468 -moz-box-align: stretch;
1446 -moz-box-align: stretch;
1469 display: box;
1447 display: box;
1470 box-orient: horizontal;
1448 box-orient: horizontal;
1471 box-align: stretch;
1449 box-align: stretch;
1472 /* Modern browsers */
1450 /* Modern browsers */
1473 display: flex;
1451 display: flex;
1474 flex-direction: row;
1452 flex-direction: row;
1475 align-items: stretch;
1453 align-items: stretch;
1476 margin-top: 0px !important;
1454 margin-top: 0px !important;
1477 margin-bottom: 0px !important;
1455 margin-bottom: 0px !important;
1478 margin-right: 5px;
1456 margin-right: 5px;
1479 margin-left: 5px;
1457 margin-left: 5px;
1480 }
1458 }
1481 .widget-hbox input[type="checkbox"] {
1459 .widget-hbox input[type="checkbox"] {
1482 margin-top: 9px;
1460 margin-top: 9px;
1483 margin-bottom: 10px;
1461 margin-bottom: 10px;
1484 }
1462 }
1485 .widget-hbox .widget-label {
1463 .widget-hbox .widget-label {
1486 /* Horizontal Label */
1464 /* Horizontal Label */
1487 min-width: 10ex;
1465 min-width: 10ex;
1488 padding-right: 8px;
1466 padding-right: 8px;
1489 padding-top: 5px;
1467 padding-top: 5px;
1490 text-align: right;
1468 text-align: right;
1491 vertical-align: text-top;
1469 vertical-align: text-top;
1492 }
1470 }
1493 .widget-hbox .widget-readout {
1471 .widget-hbox .widget-readout {
1494 padding-left: 8px;
1472 padding-left: 8px;
1495 padding-top: 5px;
1473 padding-top: 5px;
1496 text-align: left;
1474 text-align: left;
1497 vertical-align: text-top;
1475 vertical-align: text-top;
1498 }
1476 }
1499 .widget-vbox {
1477 .widget-vbox {
1500 /* Vertical widgets */
1478 /* Vertical widgets */
1501 /* Old browsers */
1479 /* Old browsers */
1502 display: -webkit-box;
1480 display: -webkit-box;
1503 -webkit-box-orient: vertical;
1481 -webkit-box-orient: vertical;
1504 -webkit-box-align: stretch;
1482 -webkit-box-align: stretch;
1505 display: -moz-box;
1483 display: -moz-box;
1506 -moz-box-orient: vertical;
1484 -moz-box-orient: vertical;
1507 -moz-box-align: stretch;
1485 -moz-box-align: stretch;
1508 display: box;
1486 display: box;
1509 box-orient: vertical;
1487 box-orient: vertical;
1510 box-align: stretch;
1488 box-align: stretch;
1511 /* Modern browsers */
1489 /* Modern browsers */
1512 display: flex;
1490 display: flex;
1513 flex-direction: column;
1491 flex-direction: column;
1514 align-items: stretch;
1492 align-items: stretch;
1515 }
1493 }
1516 .widget-vbox .widget-label {
1494 .widget-vbox .widget-label {
1517 /* Vertical Label */
1495 /* Vertical Label */
1518 padding-bottom: 5px;
1496 padding-bottom: 5px;
1519 text-align: center;
1497 text-align: center;
1520 vertical-align: text-bottom;
1498 vertical-align: text-bottom;
1521 }
1499 }
1522 .widget-vbox .widget-readout {
1500 .widget-vbox .widget-readout {
1523 /* Vertical Label */
1501 /* Vertical Label */
1524 padding-top: 5px;
1502 padding-top: 5px;
1525 text-align: center;
1503 text-align: center;
1526 vertical-align: text-top;
1504 vertical-align: text-top;
1527 }
1505 }
1528 .widget-modal {
1506 .widget-modal {
1529 /* Box - ModalView */
1507 /* Box - ModalView */
1530 overflow: hidden;
1508 overflow: hidden;
1531 position: absolute !important;
1509 position: absolute !important;
1532 top: 0px;
1510 top: 0px;
1533 left: 0px;
1511 left: 0px;
1534 margin-left: 0px !important;
1512 margin-left: 0px !important;
1535 }
1513 }
1536 .widget-modal-body {
1514 .widget-modal-body {
1537 /* Box - ModalView Body */
1515 /* Box - ModalView Body */
1538 max-height: none !important;
1516 max-height: none !important;
1539 }
1517 }
1540 .widget-box {
1518 .widget-box {
1541 /* Box */
1519 /* Box */
1542 box-sizing: border-box;
1520 box-sizing: border-box;
1543 -moz-box-sizing: border-box;
1521 -moz-box-sizing: border-box;
1544 -webkit-box-sizing: border-box;
1522 -webkit-box-sizing: border-box;
1545 /* Old browsers */
1523 /* Old browsers */
1546 -webkit-box-align: start;
1524 -webkit-box-align: start;
1547 -moz-box-align: start;
1525 -moz-box-align: start;
1548 box-align: start;
1526 box-align: start;
1549 /* Modern browsers */
1527 /* Modern browsers */
1550 align-items: flex-start;
1528 align-items: flex-start;
1551 }
1529 }
1552 .widget-radio-box {
1530 .widget-radio-box {
1553 /* Contains RadioButtonsWidget */
1531 /* Contains RadioButtonsWidget */
1554 /* Old browsers */
1532 /* Old browsers */
1555 display: -webkit-box;
1533 display: -webkit-box;
1556 -webkit-box-orient: vertical;
1534 -webkit-box-orient: vertical;
1557 -webkit-box-align: stretch;
1535 -webkit-box-align: stretch;
1558 display: -moz-box;
1536 display: -moz-box;
1559 -moz-box-orient: vertical;
1537 -moz-box-orient: vertical;
1560 -moz-box-align: stretch;
1538 -moz-box-align: stretch;
1561 display: box;
1539 display: box;
1562 box-orient: vertical;
1540 box-orient: vertical;
1563 box-align: stretch;
1541 box-align: stretch;
1564 /* Modern browsers */
1542 /* Modern browsers */
1565 display: flex;
1543 display: flex;
1566 flex-direction: column;
1544 flex-direction: column;
1567 align-items: stretch;
1545 align-items: stretch;
1568 box-sizing: border-box;
1546 box-sizing: border-box;
1569 -moz-box-sizing: border-box;
1547 -moz-box-sizing: border-box;
1570 -webkit-box-sizing: border-box;
1548 -webkit-box-sizing: border-box;
1571 padding-top: 4px;
1549 padding-top: 4px;
1572 }
1550 }
1573 .widget-radio-box label {
1551 .widget-radio-box label {
1574 margin-top: 0px;
1552 margin-top: 0px;
1575 }
1553 }
1576 .docked-widget-modal {
1554 .docked-widget-modal {
1577 /* Horizontal Label */
1555 /* Horizontal Label */
1578 overflow: hidden;
1556 overflow: hidden;
1579 position: relative !important;
1557 position: relative !important;
1580 top: 0px !important;
1558 top: 0px !important;
1581 left: 0px !important;
1559 left: 0px !important;
1582 margin-left: 0px !important;
1560 margin-left: 0px !important;
1583 }
1561 }
1584 /*# sourceMappingURL=../style/ipython.min.css.map */ No newline at end of file
1562 /*# sourceMappingURL=../style/ipython.min.css.map */
@@ -1,10608 +1,10586 b''
1 /*!
1 /*!
2 *
2 *
3 * Twitter Bootstrap
3 * Twitter Bootstrap
4 *
4 *
5 */
5 */
6 /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
6 /*! normalize.css v3.0.0 | 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 nav,
24 nav,
25 section,
25 section,
26 summary {
26 summary {
27 display: block;
27 display: block;
28 }
28 }
29 audio,
29 audio,
30 canvas,
30 canvas,
31 progress,
31 progress,
32 video {
32 video {
33 display: inline-block;
33 display: inline-block;
34 vertical-align: baseline;
34 vertical-align: baseline;
35 }
35 }
36 audio:not([controls]) {
36 audio:not([controls]) {
37 display: none;
37 display: none;
38 height: 0;
38 height: 0;
39 }
39 }
40 [hidden],
40 [hidden],
41 template {
41 template {
42 display: none;
42 display: none;
43 }
43 }
44 a {
44 a {
45 background: transparent;
45 background: transparent;
46 }
46 }
47 a:active,
47 a:active,
48 a:hover {
48 a:hover {
49 outline: 0;
49 outline: 0;
50 }
50 }
51 abbr[title] {
51 abbr[title] {
52 border-bottom: 1px dotted;
52 border-bottom: 1px dotted;
53 }
53 }
54 b,
54 b,
55 strong {
55 strong {
56 font-weight: bold;
56 font-weight: bold;
57 }
57 }
58 dfn {
58 dfn {
59 font-style: italic;
59 font-style: italic;
60 }
60 }
61 h1 {
61 h1 {
62 font-size: 2em;
62 font-size: 2em;
63 margin: 0.67em 0;
63 margin: 0.67em 0;
64 }
64 }
65 mark {
65 mark {
66 background: #ff0;
66 background: #ff0;
67 color: #000;
67 color: #000;
68 }
68 }
69 small {
69 small {
70 font-size: 80%;
70 font-size: 80%;
71 }
71 }
72 sub,
72 sub,
73 sup {
73 sup {
74 font-size: 75%;
74 font-size: 75%;
75 line-height: 0;
75 line-height: 0;
76 position: relative;
76 position: relative;
77 vertical-align: baseline;
77 vertical-align: baseline;
78 }
78 }
79 sup {
79 sup {
80 top: -0.5em;
80 top: -0.5em;
81 }
81 }
82 sub {
82 sub {
83 bottom: -0.25em;
83 bottom: -0.25em;
84 }
84 }
85 img {
85 img {
86 border: 0;
86 border: 0;
87 }
87 }
88 svg:not(:root) {
88 svg:not(:root) {
89 overflow: hidden;
89 overflow: hidden;
90 }
90 }
91 figure {
91 figure {
92 margin: 1em 40px;
92 margin: 1em 40px;
93 }
93 }
94 hr {
94 hr {
95 -moz-box-sizing: content-box;
95 -moz-box-sizing: content-box;
96 box-sizing: content-box;
96 box-sizing: content-box;
97 height: 0;
97 height: 0;
98 }
98 }
99 pre {
99 pre {
100 overflow: auto;
100 overflow: auto;
101 }
101 }
102 code,
102 code,
103 kbd,
103 kbd,
104 pre,
104 pre,
105 samp {
105 samp {
106 font-family: monospace, monospace;
106 font-family: monospace, monospace;
107 font-size: 1em;
107 font-size: 1em;
108 }
108 }
109 button,
109 button,
110 input,
110 input,
111 optgroup,
111 optgroup,
112 select,
112 select,
113 textarea {
113 textarea {
114 color: inherit;
114 color: inherit;
115 font: inherit;
115 font: inherit;
116 margin: 0;
116 margin: 0;
117 }
117 }
118 button {
118 button {
119 overflow: visible;
119 overflow: visible;
120 }
120 }
121 button,
121 button,
122 select {
122 select {
123 text-transform: none;
123 text-transform: none;
124 }
124 }
125 button,
125 button,
126 html input[type="button"],
126 html input[type="button"],
127 input[type="reset"],
127 input[type="reset"],
128 input[type="submit"] {
128 input[type="submit"] {
129 -webkit-appearance: button;
129 -webkit-appearance: button;
130 cursor: pointer;
130 cursor: pointer;
131 }
131 }
132 button[disabled],
132 button[disabled],
133 html input[disabled] {
133 html input[disabled] {
134 cursor: default;
134 cursor: default;
135 }
135 }
136 button::-moz-focus-inner,
136 button::-moz-focus-inner,
137 input::-moz-focus-inner {
137 input::-moz-focus-inner {
138 border: 0;
138 border: 0;
139 padding: 0;
139 padding: 0;
140 }
140 }
141 input {
141 input {
142 line-height: normal;
142 line-height: normal;
143 }
143 }
144 input[type="checkbox"],
144 input[type="checkbox"],
145 input[type="radio"] {
145 input[type="radio"] {
146 box-sizing: border-box;
146 box-sizing: border-box;
147 padding: 0;
147 padding: 0;
148 }
148 }
149 input[type="number"]::-webkit-inner-spin-button,
149 input[type="number"]::-webkit-inner-spin-button,
150 input[type="number"]::-webkit-outer-spin-button {
150 input[type="number"]::-webkit-outer-spin-button {
151 height: auto;
151 height: auto;
152 }
152 }
153 input[type="search"] {
153 input[type="search"] {
154 -webkit-appearance: textfield;
154 -webkit-appearance: textfield;
155 -moz-box-sizing: content-box;
155 -moz-box-sizing: content-box;
156 -webkit-box-sizing: content-box;
156 -webkit-box-sizing: content-box;
157 box-sizing: content-box;
157 box-sizing: content-box;
158 }
158 }
159 input[type="search"]::-webkit-search-cancel-button,
159 input[type="search"]::-webkit-search-cancel-button,
160 input[type="search"]::-webkit-search-decoration {
160 input[type="search"]::-webkit-search-decoration {
161 -webkit-appearance: none;
161 -webkit-appearance: none;
162 }
162 }
163 fieldset {
163 fieldset {
164 border: 1px solid #c0c0c0;
164 border: 1px solid #c0c0c0;
165 margin: 0 2px;
165 margin: 0 2px;
166 padding: 0.35em 0.625em 0.75em;
166 padding: 0.35em 0.625em 0.75em;
167 }
167 }
168 legend {
168 legend {
169 border: 0;
169 border: 0;
170 padding: 0;
170 padding: 0;
171 }
171 }
172 textarea {
172 textarea {
173 overflow: auto;
173 overflow: auto;
174 }
174 }
175 optgroup {
175 optgroup {
176 font-weight: bold;
176 font-weight: bold;
177 }
177 }
178 table {
178 table {
179 border-collapse: collapse;
179 border-collapse: collapse;
180 border-spacing: 0;
180 border-spacing: 0;
181 }
181 }
182 td,
182 td,
183 th {
183 th {
184 padding: 0;
184 padding: 0;
185 }
185 }
186 @media print {
186 @media print {
187 * {
187 * {
188 text-shadow: none !important;
188 text-shadow: none !important;
189 color: #000 !important;
189 color: #000 !important;
190 background: transparent !important;
190 background: transparent !important;
191 box-shadow: none !important;
191 box-shadow: none !important;
192 }
192 }
193 a,
193 a,
194 a:visited {
194 a:visited {
195 text-decoration: underline;
195 text-decoration: underline;
196 }
196 }
197 a[href]:after {
197 a[href]:after {
198 content: " (" attr(href) ")";
198 content: " (" attr(href) ")";
199 }
199 }
200 abbr[title]:after {
200 abbr[title]:after {
201 content: " (" attr(title) ")";
201 content: " (" attr(title) ")";
202 }
202 }
203 a[href^="javascript:"]:after,
203 a[href^="javascript:"]:after,
204 a[href^="#"]:after {
204 a[href^="#"]:after {
205 content: "";
205 content: "";
206 }
206 }
207 pre,
207 pre,
208 blockquote {
208 blockquote {
209 border: 1px solid #999;
209 border: 1px solid #999;
210 page-break-inside: avoid;
210 page-break-inside: avoid;
211 }
211 }
212 thead {
212 thead {
213 display: table-header-group;
213 display: table-header-group;
214 }
214 }
215 tr,
215 tr,
216 img {
216 img {
217 page-break-inside: avoid;
217 page-break-inside: avoid;
218 }
218 }
219 img {
219 img {
220 max-width: 100% !important;
220 max-width: 100% !important;
221 }
221 }
222 p,
222 p,
223 h2,
223 h2,
224 h3 {
224 h3 {
225 orphans: 3;
225 orphans: 3;
226 widows: 3;
226 widows: 3;
227 }
227 }
228 h2,
228 h2,
229 h3 {
229 h3 {
230 page-break-after: avoid;
230 page-break-after: avoid;
231 }
231 }
232 select {
232 select {
233 background: #fff !important;
233 background: #fff !important;
234 }
234 }
235 .navbar {
235 .navbar {
236 display: none;
236 display: none;
237 }
237 }
238 .table td,
238 .table td,
239 .table th {
239 .table th {
240 background-color: #fff !important;
240 background-color: #fff !important;
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-bordered th,
252 .table-bordered th,
253 .table-bordered td {
253 .table-bordered td {
254 border: 1px solid #ddd !important;
254 border: 1px solid #ddd !important;
255 }
255 }
256 }
256 }
257 * {
257 * {
258 -webkit-box-sizing: border-box;
258 -webkit-box-sizing: border-box;
259 -moz-box-sizing: border-box;
259 -moz-box-sizing: border-box;
260 box-sizing: border-box;
260 box-sizing: border-box;
261 }
261 }
262 *:before,
262 *:before,
263 *:after {
263 *:after {
264 -webkit-box-sizing: border-box;
264 -webkit-box-sizing: border-box;
265 -moz-box-sizing: border-box;
265 -moz-box-sizing: border-box;
266 box-sizing: border-box;
266 box-sizing: border-box;
267 }
267 }
268 html {
268 html {
269 font-size: 62.5%;
269 font-size: 62.5%;
270 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
270 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
271 }
271 }
272 body {
272 body {
273 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
273 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
274 font-size: 13px;
274 font-size: 13px;
275 line-height: 1.42857143;
275 line-height: 1.42857143;
276 color: #000000;
276 color: #000000;
277 background-color: #ffffff;
277 background-color: #ffffff;
278 }
278 }
279 input,
279 input,
280 button,
280 button,
281 select,
281 select,
282 textarea {
282 textarea {
283 font-family: inherit;
283 font-family: inherit;
284 font-size: inherit;
284 font-size: inherit;
285 line-height: inherit;
285 line-height: inherit;
286 }
286 }
287 a {
287 a {
288 color: #428bca;
288 color: #428bca;
289 text-decoration: none;
289 text-decoration: none;
290 }
290 }
291 a:hover,
291 a:hover,
292 a:focus {
292 a:focus {
293 color: #2a6496;
293 color: #2a6496;
294 text-decoration: underline;
294 text-decoration: underline;
295 }
295 }
296 a:focus {
296 a:focus {
297 outline: thin dotted;
297 outline: thin dotted;
298 outline: 5px auto -webkit-focus-ring-color;
298 outline: 5px auto -webkit-focus-ring-color;
299 outline-offset: -2px;
299 outline-offset: -2px;
300 }
300 }
301 figure {
301 figure {
302 margin: 0;
302 margin: 0;
303 }
303 }
304 img {
304 img {
305 vertical-align: middle;
305 vertical-align: middle;
306 }
306 }
307 .img-responsive,
307 .img-responsive,
308 .thumbnail > img,
308 .thumbnail > img,
309 .thumbnail a > img,
309 .thumbnail a > img,
310 .carousel-inner > .item > img,
310 .carousel-inner > .item > img,
311 .carousel-inner > .item > a > img {
311 .carousel-inner > .item > a > img {
312 display: block;
312 display: block;
313 max-width: 100%;
313 max-width: 100%;
314 height: auto;
314 height: auto;
315 }
315 }
316 .img-rounded {
316 .img-rounded {
317 border-radius: 6px;
317 border-radius: 6px;
318 }
318 }
319 .img-thumbnail {
319 .img-thumbnail {
320 padding: 4px;
320 padding: 4px;
321 line-height: 1.42857143;
321 line-height: 1.42857143;
322 background-color: #ffffff;
322 background-color: #ffffff;
323 border: 1px solid #dddddd;
323 border: 1px solid #dddddd;
324 border-radius: 4px;
324 border-radius: 4px;
325 -webkit-transition: all 0.2s ease-in-out;
325 -webkit-transition: all 0.2s ease-in-out;
326 transition: all 0.2s ease-in-out;
326 transition: all 0.2s ease-in-out;
327 display: inline-block;
327 display: inline-block;
328 max-width: 100%;
328 max-width: 100%;
329 height: auto;
329 height: auto;
330 }
330 }
331 .img-circle {
331 .img-circle {
332 border-radius: 50%;
332 border-radius: 50%;
333 }
333 }
334 hr {
334 hr {
335 margin-top: 18px;
335 margin-top: 18px;
336 margin-bottom: 18px;
336 margin-bottom: 18px;
337 border: 0;
337 border: 0;
338 border-top: 1px solid #eeeeee;
338 border-top: 1px solid #eeeeee;
339 }
339 }
340 .sr-only {
340 .sr-only {
341 position: absolute;
341 position: absolute;
342 width: 1px;
342 width: 1px;
343 height: 1px;
343 height: 1px;
344 margin: -1px;
344 margin: -1px;
345 padding: 0;
345 padding: 0;
346 overflow: hidden;
346 overflow: hidden;
347 clip: rect(0, 0, 0, 0);
347 clip: rect(0, 0, 0, 0);
348 border: 0;
348 border: 0;
349 }
349 }
350 h1,
350 h1,
351 h2,
351 h2,
352 h3,
352 h3,
353 h4,
353 h4,
354 h5,
354 h5,
355 h6,
355 h6,
356 .h1,
356 .h1,
357 .h2,
357 .h2,
358 .h3,
358 .h3,
359 .h4,
359 .h4,
360 .h5,
360 .h5,
361 .h6 {
361 .h6 {
362 font-family: inherit;
362 font-family: inherit;
363 font-weight: 500;
363 font-weight: 500;
364 line-height: 1.1;
364 line-height: 1.1;
365 color: inherit;
365 color: inherit;
366 }
366 }
367 h1 small,
367 h1 small,
368 h2 small,
368 h2 small,
369 h3 small,
369 h3 small,
370 h4 small,
370 h4 small,
371 h5 small,
371 h5 small,
372 h6 small,
372 h6 small,
373 .h1 small,
373 .h1 small,
374 .h2 small,
374 .h2 small,
375 .h3 small,
375 .h3 small,
376 .h4 small,
376 .h4 small,
377 .h5 small,
377 .h5 small,
378 .h6 small,
378 .h6 small,
379 h1 .small,
379 h1 .small,
380 h2 .small,
380 h2 .small,
381 h3 .small,
381 h3 .small,
382 h4 .small,
382 h4 .small,
383 h5 .small,
383 h5 .small,
384 h6 .small,
384 h6 .small,
385 .h1 .small,
385 .h1 .small,
386 .h2 .small,
386 .h2 .small,
387 .h3 .small,
387 .h3 .small,
388 .h4 .small,
388 .h4 .small,
389 .h5 .small,
389 .h5 .small,
390 .h6 .small {
390 .h6 .small {
391 font-weight: normal;
391 font-weight: normal;
392 line-height: 1;
392 line-height: 1;
393 color: #999999;
393 color: #999999;
394 }
394 }
395 h1,
395 h1,
396 .h1,
396 .h1,
397 h2,
397 h2,
398 .h2,
398 .h2,
399 h3,
399 h3,
400 .h3 {
400 .h3 {
401 margin-top: 18px;
401 margin-top: 18px;
402 margin-bottom: 9px;
402 margin-bottom: 9px;
403 }
403 }
404 h1 small,
404 h1 small,
405 .h1 small,
405 .h1 small,
406 h2 small,
406 h2 small,
407 .h2 small,
407 .h2 small,
408 h3 small,
408 h3 small,
409 .h3 small,
409 .h3 small,
410 h1 .small,
410 h1 .small,
411 .h1 .small,
411 .h1 .small,
412 h2 .small,
412 h2 .small,
413 .h2 .small,
413 .h2 .small,
414 h3 .small,
414 h3 .small,
415 .h3 .small {
415 .h3 .small {
416 font-size: 65%;
416 font-size: 65%;
417 }
417 }
418 h4,
418 h4,
419 .h4,
419 .h4,
420 h5,
420 h5,
421 .h5,
421 .h5,
422 h6,
422 h6,
423 .h6 {
423 .h6 {
424 margin-top: 9px;
424 margin-top: 9px;
425 margin-bottom: 9px;
425 margin-bottom: 9px;
426 }
426 }
427 h4 small,
427 h4 small,
428 .h4 small,
428 .h4 small,
429 h5 small,
429 h5 small,
430 .h5 small,
430 .h5 small,
431 h6 small,
431 h6 small,
432 .h6 small,
432 .h6 small,
433 h4 .small,
433 h4 .small,
434 .h4 .small,
434 .h4 .small,
435 h5 .small,
435 h5 .small,
436 .h5 .small,
436 .h5 .small,
437 h6 .small,
437 h6 .small,
438 .h6 .small {
438 .h6 .small {
439 font-size: 75%;
439 font-size: 75%;
440 }
440 }
441 h1,
441 h1,
442 .h1 {
442 .h1 {
443 font-size: 33px;
443 font-size: 33px;
444 }
444 }
445 h2,
445 h2,
446 .h2 {
446 .h2 {
447 font-size: 27px;
447 font-size: 27px;
448 }
448 }
449 h3,
449 h3,
450 .h3 {
450 .h3 {
451 font-size: 23px;
451 font-size: 23px;
452 }
452 }
453 h4,
453 h4,
454 .h4 {
454 .h4 {
455 font-size: 17px;
455 font-size: 17px;
456 }
456 }
457 h5,
457 h5,
458 .h5 {
458 .h5 {
459 font-size: 13px;
459 font-size: 13px;
460 }
460 }
461 h6,
461 h6,
462 .h6 {
462 .h6 {
463 font-size: 12px;
463 font-size: 12px;
464 }
464 }
465 p {
465 p {
466 margin: 0 0 9px;
466 margin: 0 0 9px;
467 }
467 }
468 .lead {
468 .lead {
469 margin-bottom: 18px;
469 margin-bottom: 18px;
470 font-size: 14px;
470 font-size: 14px;
471 font-weight: 200;
471 font-weight: 200;
472 line-height: 1.4;
472 line-height: 1.4;
473 }
473 }
474 @media (min-width: 768px) {
474 @media (min-width: 768px) {
475 .lead {
475 .lead {
476 font-size: 19.5px;
476 font-size: 19.5px;
477 }
477 }
478 }
478 }
479 small,
479 small,
480 .small {
480 .small {
481 font-size: 85%;
481 font-size: 85%;
482 }
482 }
483 cite {
483 cite {
484 font-style: normal;
484 font-style: normal;
485 }
485 }
486 .text-left {
486 .text-left {
487 text-align: left;
487 text-align: left;
488 }
488 }
489 .text-right {
489 .text-right {
490 text-align: right;
490 text-align: right;
491 }
491 }
492 .text-center {
492 .text-center {
493 text-align: center;
493 text-align: center;
494 }
494 }
495 .text-justify {
495 .text-justify {
496 text-align: justify;
496 text-align: justify;
497 }
497 }
498 .text-muted {
498 .text-muted {
499 color: #999999;
499 color: #999999;
500 }
500 }
501 .text-primary {
501 .text-primary {
502 color: #428bca;
502 color: #428bca;
503 }
503 }
504 a.text-primary:hover {
504 a.text-primary:hover {
505 color: #3071a9;
505 color: #3071a9;
506 }
506 }
507 .text-success {
507 .text-success {
508 color: #3c763d;
508 color: #3c763d;
509 }
509 }
510 a.text-success:hover {
510 a.text-success:hover {
511 color: #2b542c;
511 color: #2b542c;
512 }
512 }
513 .text-info {
513 .text-info {
514 color: #31708f;
514 color: #31708f;
515 }
515 }
516 a.text-info:hover {
516 a.text-info:hover {
517 color: #245269;
517 color: #245269;
518 }
518 }
519 .text-warning {
519 .text-warning {
520 color: #8a6d3b;
520 color: #8a6d3b;
521 }
521 }
522 a.text-warning:hover {
522 a.text-warning:hover {
523 color: #66512c;
523 color: #66512c;
524 }
524 }
525 .text-danger {
525 .text-danger {
526 color: #a94442;
526 color: #a94442;
527 }
527 }
528 a.text-danger:hover {
528 a.text-danger:hover {
529 color: #843534;
529 color: #843534;
530 }
530 }
531 .bg-primary {
531 .bg-primary {
532 color: #fff;
532 color: #fff;
533 background-color: #428bca;
533 background-color: #428bca;
534 }
534 }
535 a.bg-primary:hover {
535 a.bg-primary:hover {
536 background-color: #3071a9;
536 background-color: #3071a9;
537 }
537 }
538 .bg-success {
538 .bg-success {
539 background-color: #dff0d8;
539 background-color: #dff0d8;
540 }
540 }
541 a.bg-success:hover {
541 a.bg-success:hover {
542 background-color: #c1e2b3;
542 background-color: #c1e2b3;
543 }
543 }
544 .bg-info {
544 .bg-info {
545 background-color: #d9edf7;
545 background-color: #d9edf7;
546 }
546 }
547 a.bg-info:hover {
547 a.bg-info:hover {
548 background-color: #afd9ee;
548 background-color: #afd9ee;
549 }
549 }
550 .bg-warning {
550 .bg-warning {
551 background-color: #fcf8e3;
551 background-color: #fcf8e3;
552 }
552 }
553 a.bg-warning:hover {
553 a.bg-warning:hover {
554 background-color: #f7ecb5;
554 background-color: #f7ecb5;
555 }
555 }
556 .bg-danger {
556 .bg-danger {
557 background-color: #f2dede;
557 background-color: #f2dede;
558 }
558 }
559 a.bg-danger:hover {
559 a.bg-danger:hover {
560 background-color: #e4b9b9;
560 background-color: #e4b9b9;
561 }
561 }
562 .page-header {
562 .page-header {
563 padding-bottom: 8px;
563 padding-bottom: 8px;
564 margin: 36px 0 18px;
564 margin: 36px 0 18px;
565 border-bottom: 1px solid #eeeeee;
565 border-bottom: 1px solid #eeeeee;
566 }
566 }
567 ul,
567 ul,
568 ol {
568 ol {
569 margin-top: 0;
569 margin-top: 0;
570 margin-bottom: 9px;
570 margin-bottom: 9px;
571 }
571 }
572 ul ul,
572 ul ul,
573 ol ul,
573 ol ul,
574 ul ol,
574 ul ol,
575 ol ol {
575 ol ol {
576 margin-bottom: 0;
576 margin-bottom: 0;
577 }
577 }
578 .list-unstyled {
578 .list-unstyled {
579 padding-left: 0;
579 padding-left: 0;
580 list-style: none;
580 list-style: none;
581 }
581 }
582 .list-inline {
582 .list-inline {
583 padding-left: 0;
583 padding-left: 0;
584 list-style: none;
584 list-style: none;
585 margin-left: -5px;
585 margin-left: -5px;
586 }
586 }
587 .list-inline > li {
587 .list-inline > li {
588 display: inline-block;
588 display: inline-block;
589 padding-left: 5px;
589 padding-left: 5px;
590 padding-right: 5px;
590 padding-right: 5px;
591 }
591 }
592 dl {
592 dl {
593 margin-top: 0;
593 margin-top: 0;
594 margin-bottom: 18px;
594 margin-bottom: 18px;
595 }
595 }
596 dt,
596 dt,
597 dd {
597 dd {
598 line-height: 1.42857143;
598 line-height: 1.42857143;
599 }
599 }
600 dt {
600 dt {
601 font-weight: bold;
601 font-weight: bold;
602 }
602 }
603 dd {
603 dd {
604 margin-left: 0;
604 margin-left: 0;
605 }
605 }
606 @media (min-width: 540px) {
606 @media (min-width: 540px) {
607 .dl-horizontal dt {
607 .dl-horizontal dt {
608 float: left;
608 float: left;
609 width: 160px;
609 width: 160px;
610 clear: left;
610 clear: left;
611 text-align: right;
611 text-align: right;
612 overflow: hidden;
612 overflow: hidden;
613 text-overflow: ellipsis;
613 text-overflow: ellipsis;
614 white-space: nowrap;
614 white-space: nowrap;
615 }
615 }
616 .dl-horizontal dd {
616 .dl-horizontal dd {
617 margin-left: 180px;
617 margin-left: 180px;
618 }
618 }
619 }
619 }
620 abbr[title],
620 abbr[title],
621 abbr[data-original-title] {
621 abbr[data-original-title] {
622 cursor: help;
622 cursor: help;
623 border-bottom: 1px dotted #999999;
623 border-bottom: 1px dotted #999999;
624 }
624 }
625 .initialism {
625 .initialism {
626 font-size: 90%;
626 font-size: 90%;
627 text-transform: uppercase;
627 text-transform: uppercase;
628 }
628 }
629 blockquote {
629 blockquote {
630 padding: 9px 18px;
630 padding: 9px 18px;
631 margin: 0 0 18px;
631 margin: 0 0 18px;
632 font-size: inherit;
632 font-size: inherit;
633 border-left: 5px solid #eeeeee;
633 border-left: 5px solid #eeeeee;
634 }
634 }
635 blockquote p:last-child,
635 blockquote p:last-child,
636 blockquote ul:last-child,
636 blockquote ul:last-child,
637 blockquote ol:last-child {
637 blockquote ol:last-child {
638 margin-bottom: 0;
638 margin-bottom: 0;
639 }
639 }
640 blockquote footer,
640 blockquote footer,
641 blockquote small,
641 blockquote small,
642 blockquote .small {
642 blockquote .small {
643 display: block;
643 display: block;
644 font-size: 80%;
644 font-size: 80%;
645 line-height: 1.42857143;
645 line-height: 1.42857143;
646 color: #999999;
646 color: #999999;
647 }
647 }
648 blockquote footer:before,
648 blockquote footer:before,
649 blockquote small:before,
649 blockquote small:before,
650 blockquote .small:before {
650 blockquote .small:before {
651 content: '\2014 \00A0';
651 content: '\2014 \00A0';
652 }
652 }
653 .blockquote-reverse,
653 .blockquote-reverse,
654 blockquote.pull-right {
654 blockquote.pull-right {
655 padding-right: 15px;
655 padding-right: 15px;
656 padding-left: 0;
656 padding-left: 0;
657 border-right: 5px solid #eeeeee;
657 border-right: 5px solid #eeeeee;
658 border-left: 0;
658 border-left: 0;
659 text-align: right;
659 text-align: right;
660 }
660 }
661 .blockquote-reverse footer:before,
661 .blockquote-reverse footer:before,
662 blockquote.pull-right footer:before,
662 blockquote.pull-right footer:before,
663 .blockquote-reverse small:before,
663 .blockquote-reverse small:before,
664 blockquote.pull-right small:before,
664 blockquote.pull-right small:before,
665 .blockquote-reverse .small:before,
665 .blockquote-reverse .small:before,
666 blockquote.pull-right .small:before {
666 blockquote.pull-right .small:before {
667 content: '';
667 content: '';
668 }
668 }
669 .blockquote-reverse footer:after,
669 .blockquote-reverse footer:after,
670 blockquote.pull-right footer:after,
670 blockquote.pull-right footer:after,
671 .blockquote-reverse small:after,
671 .blockquote-reverse small:after,
672 blockquote.pull-right small:after,
672 blockquote.pull-right small:after,
673 .blockquote-reverse .small:after,
673 .blockquote-reverse .small:after,
674 blockquote.pull-right .small:after {
674 blockquote.pull-right .small:after {
675 content: '\00A0 \2014';
675 content: '\00A0 \2014';
676 }
676 }
677 blockquote:before,
677 blockquote:before,
678 blockquote:after {
678 blockquote:after {
679 content: "";
679 content: "";
680 }
680 }
681 address {
681 address {
682 margin-bottom: 18px;
682 margin-bottom: 18px;
683 font-style: normal;
683 font-style: normal;
684 line-height: 1.42857143;
684 line-height: 1.42857143;
685 }
685 }
686 code,
686 code,
687 kbd,
687 kbd,
688 pre,
688 pre,
689 samp {
689 samp {
690 font-family: monospace;
690 font-family: monospace;
691 }
691 }
692 code {
692 code {
693 padding: 2px 4px;
693 padding: 2px 4px;
694 font-size: 90%;
694 font-size: 90%;
695 color: #c7254e;
695 color: #c7254e;
696 background-color: #f9f2f4;
696 background-color: #f9f2f4;
697 white-space: nowrap;
697 white-space: nowrap;
698 border-radius: 4px;
698 border-radius: 4px;
699 }
699 }
700 kbd {
700 kbd {
701 padding: 2px 4px;
701 padding: 2px 4px;
702 font-size: 90%;
702 font-size: 90%;
703 color: #ffffff;
703 color: #ffffff;
704 background-color: #333333;
704 background-color: #333333;
705 border-radius: 3px;
705 border-radius: 3px;
706 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
706 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
707 }
707 }
708 pre {
708 pre {
709 display: block;
709 display: block;
710 padding: 8.5px;
710 padding: 8.5px;
711 margin: 0 0 9px;
711 margin: 0 0 9px;
712 font-size: 12px;
712 font-size: 12px;
713 line-height: 1.42857143;
713 line-height: 1.42857143;
714 word-break: break-all;
714 word-break: break-all;
715 word-wrap: break-word;
715 word-wrap: break-word;
716 color: #333333;
716 color: #333333;
717 background-color: #f5f5f5;
717 background-color: #f5f5f5;
718 border: 1px solid #cccccc;
718 border: 1px solid #cccccc;
719 border-radius: 4px;
719 border-radius: 4px;
720 }
720 }
721 pre code {
721 pre code {
722 padding: 0;
722 padding: 0;
723 font-size: inherit;
723 font-size: inherit;
724 color: inherit;
724 color: inherit;
725 white-space: pre-wrap;
725 white-space: pre-wrap;
726 background-color: transparent;
726 background-color: transparent;
727 border-radius: 0;
727 border-radius: 0;
728 }
728 }
729 .pre-scrollable {
729 .pre-scrollable {
730 max-height: 340px;
730 max-height: 340px;
731 overflow-y: scroll;
731 overflow-y: scroll;
732 }
732 }
733 .container {
733 .container {
734 margin-right: auto;
734 margin-right: auto;
735 margin-left: auto;
735 margin-left: auto;
736 padding-left: 15px;
736 padding-left: 15px;
737 padding-right: 15px;
737 padding-right: 15px;
738 }
738 }
739 @media (min-width: 768px) {
739 @media (min-width: 768px) {
740 .container {
740 .container {
741 width: 750px;
741 width: 750px;
742 }
742 }
743 }
743 }
744 @media (min-width: 992px) {
744 @media (min-width: 992px) {
745 .container {
745 .container {
746 width: 970px;
746 width: 970px;
747 }
747 }
748 }
748 }
749 @media (min-width: 1200px) {
749 @media (min-width: 1200px) {
750 .container {
750 .container {
751 width: 1170px;
751 width: 1170px;
752 }
752 }
753 }
753 }
754 .container-fluid {
754 .container-fluid {
755 margin-right: auto;
755 margin-right: auto;
756 margin-left: auto;
756 margin-left: auto;
757 padding-left: 15px;
757 padding-left: 15px;
758 padding-right: 15px;
758 padding-right: 15px;
759 }
759 }
760 .row {
760 .row {
761 margin-left: -15px;
761 margin-left: -15px;
762 margin-right: -15px;
762 margin-right: -15px;
763 }
763 }
764 .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 {
764 .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 {
765 position: relative;
765 position: relative;
766 min-height: 1px;
766 min-height: 1px;
767 padding-left: 15px;
767 padding-left: 15px;
768 padding-right: 15px;
768 padding-right: 15px;
769 }
769 }
770 .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 {
770 .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 {
771 float: left;
771 float: left;
772 }
772 }
773 .col-xs-12 {
773 .col-xs-12 {
774 width: 100%;
774 width: 100%;
775 }
775 }
776 .col-xs-11 {
776 .col-xs-11 {
777 width: 91.66666667%;
777 width: 91.66666667%;
778 }
778 }
779 .col-xs-10 {
779 .col-xs-10 {
780 width: 83.33333333%;
780 width: 83.33333333%;
781 }
781 }
782 .col-xs-9 {
782 .col-xs-9 {
783 width: 75%;
783 width: 75%;
784 }
784 }
785 .col-xs-8 {
785 .col-xs-8 {
786 width: 66.66666667%;
786 width: 66.66666667%;
787 }
787 }
788 .col-xs-7 {
788 .col-xs-7 {
789 width: 58.33333333%;
789 width: 58.33333333%;
790 }
790 }
791 .col-xs-6 {
791 .col-xs-6 {
792 width: 50%;
792 width: 50%;
793 }
793 }
794 .col-xs-5 {
794 .col-xs-5 {
795 width: 41.66666667%;
795 width: 41.66666667%;
796 }
796 }
797 .col-xs-4 {
797 .col-xs-4 {
798 width: 33.33333333%;
798 width: 33.33333333%;
799 }
799 }
800 .col-xs-3 {
800 .col-xs-3 {
801 width: 25%;
801 width: 25%;
802 }
802 }
803 .col-xs-2 {
803 .col-xs-2 {
804 width: 16.66666667%;
804 width: 16.66666667%;
805 }
805 }
806 .col-xs-1 {
806 .col-xs-1 {
807 width: 8.33333333%;
807 width: 8.33333333%;
808 }
808 }
809 .col-xs-pull-12 {
809 .col-xs-pull-12 {
810 right: 100%;
810 right: 100%;
811 }
811 }
812 .col-xs-pull-11 {
812 .col-xs-pull-11 {
813 right: 91.66666667%;
813 right: 91.66666667%;
814 }
814 }
815 .col-xs-pull-10 {
815 .col-xs-pull-10 {
816 right: 83.33333333%;
816 right: 83.33333333%;
817 }
817 }
818 .col-xs-pull-9 {
818 .col-xs-pull-9 {
819 right: 75%;
819 right: 75%;
820 }
820 }
821 .col-xs-pull-8 {
821 .col-xs-pull-8 {
822 right: 66.66666667%;
822 right: 66.66666667%;
823 }
823 }
824 .col-xs-pull-7 {
824 .col-xs-pull-7 {
825 right: 58.33333333%;
825 right: 58.33333333%;
826 }
826 }
827 .col-xs-pull-6 {
827 .col-xs-pull-6 {
828 right: 50%;
828 right: 50%;
829 }
829 }
830 .col-xs-pull-5 {
830 .col-xs-pull-5 {
831 right: 41.66666667%;
831 right: 41.66666667%;
832 }
832 }
833 .col-xs-pull-4 {
833 .col-xs-pull-4 {
834 right: 33.33333333%;
834 right: 33.33333333%;
835 }
835 }
836 .col-xs-pull-3 {
836 .col-xs-pull-3 {
837 right: 25%;
837 right: 25%;
838 }
838 }
839 .col-xs-pull-2 {
839 .col-xs-pull-2 {
840 right: 16.66666667%;
840 right: 16.66666667%;
841 }
841 }
842 .col-xs-pull-1 {
842 .col-xs-pull-1 {
843 right: 8.33333333%;
843 right: 8.33333333%;
844 }
844 }
845 .col-xs-pull-0 {
845 .col-xs-pull-0 {
846 right: 0%;
846 right: 0%;
847 }
847 }
848 .col-xs-push-12 {
848 .col-xs-push-12 {
849 left: 100%;
849 left: 100%;
850 }
850 }
851 .col-xs-push-11 {
851 .col-xs-push-11 {
852 left: 91.66666667%;
852 left: 91.66666667%;
853 }
853 }
854 .col-xs-push-10 {
854 .col-xs-push-10 {
855 left: 83.33333333%;
855 left: 83.33333333%;
856 }
856 }
857 .col-xs-push-9 {
857 .col-xs-push-9 {
858 left: 75%;
858 left: 75%;
859 }
859 }
860 .col-xs-push-8 {
860 .col-xs-push-8 {
861 left: 66.66666667%;
861 left: 66.66666667%;
862 }
862 }
863 .col-xs-push-7 {
863 .col-xs-push-7 {
864 left: 58.33333333%;
864 left: 58.33333333%;
865 }
865 }
866 .col-xs-push-6 {
866 .col-xs-push-6 {
867 left: 50%;
867 left: 50%;
868 }
868 }
869 .col-xs-push-5 {
869 .col-xs-push-5 {
870 left: 41.66666667%;
870 left: 41.66666667%;
871 }
871 }
872 .col-xs-push-4 {
872 .col-xs-push-4 {
873 left: 33.33333333%;
873 left: 33.33333333%;
874 }
874 }
875 .col-xs-push-3 {
875 .col-xs-push-3 {
876 left: 25%;
876 left: 25%;
877 }
877 }
878 .col-xs-push-2 {
878 .col-xs-push-2 {
879 left: 16.66666667%;
879 left: 16.66666667%;
880 }
880 }
881 .col-xs-push-1 {
881 .col-xs-push-1 {
882 left: 8.33333333%;
882 left: 8.33333333%;
883 }
883 }
884 .col-xs-push-0 {
884 .col-xs-push-0 {
885 left: 0%;
885 left: 0%;
886 }
886 }
887 .col-xs-offset-12 {
887 .col-xs-offset-12 {
888 margin-left: 100%;
888 margin-left: 100%;
889 }
889 }
890 .col-xs-offset-11 {
890 .col-xs-offset-11 {
891 margin-left: 91.66666667%;
891 margin-left: 91.66666667%;
892 }
892 }
893 .col-xs-offset-10 {
893 .col-xs-offset-10 {
894 margin-left: 83.33333333%;
894 margin-left: 83.33333333%;
895 }
895 }
896 .col-xs-offset-9 {
896 .col-xs-offset-9 {
897 margin-left: 75%;
897 margin-left: 75%;
898 }
898 }
899 .col-xs-offset-8 {
899 .col-xs-offset-8 {
900 margin-left: 66.66666667%;
900 margin-left: 66.66666667%;
901 }
901 }
902 .col-xs-offset-7 {
902 .col-xs-offset-7 {
903 margin-left: 58.33333333%;
903 margin-left: 58.33333333%;
904 }
904 }
905 .col-xs-offset-6 {
905 .col-xs-offset-6 {
906 margin-left: 50%;
906 margin-left: 50%;
907 }
907 }
908 .col-xs-offset-5 {
908 .col-xs-offset-5 {
909 margin-left: 41.66666667%;
909 margin-left: 41.66666667%;
910 }
910 }
911 .col-xs-offset-4 {
911 .col-xs-offset-4 {
912 margin-left: 33.33333333%;
912 margin-left: 33.33333333%;
913 }
913 }
914 .col-xs-offset-3 {
914 .col-xs-offset-3 {
915 margin-left: 25%;
915 margin-left: 25%;
916 }
916 }
917 .col-xs-offset-2 {
917 .col-xs-offset-2 {
918 margin-left: 16.66666667%;
918 margin-left: 16.66666667%;
919 }
919 }
920 .col-xs-offset-1 {
920 .col-xs-offset-1 {
921 margin-left: 8.33333333%;
921 margin-left: 8.33333333%;
922 }
922 }
923 .col-xs-offset-0 {
923 .col-xs-offset-0 {
924 margin-left: 0%;
924 margin-left: 0%;
925 }
925 }
926 @media (min-width: 768px) {
926 @media (min-width: 768px) {
927 .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 {
927 .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 {
928 float: left;
928 float: left;
929 }
929 }
930 .col-sm-12 {
930 .col-sm-12 {
931 width: 100%;
931 width: 100%;
932 }
932 }
933 .col-sm-11 {
933 .col-sm-11 {
934 width: 91.66666667%;
934 width: 91.66666667%;
935 }
935 }
936 .col-sm-10 {
936 .col-sm-10 {
937 width: 83.33333333%;
937 width: 83.33333333%;
938 }
938 }
939 .col-sm-9 {
939 .col-sm-9 {
940 width: 75%;
940 width: 75%;
941 }
941 }
942 .col-sm-8 {
942 .col-sm-8 {
943 width: 66.66666667%;
943 width: 66.66666667%;
944 }
944 }
945 .col-sm-7 {
945 .col-sm-7 {
946 width: 58.33333333%;
946 width: 58.33333333%;
947 }
947 }
948 .col-sm-6 {
948 .col-sm-6 {
949 width: 50%;
949 width: 50%;
950 }
950 }
951 .col-sm-5 {
951 .col-sm-5 {
952 width: 41.66666667%;
952 width: 41.66666667%;
953 }
953 }
954 .col-sm-4 {
954 .col-sm-4 {
955 width: 33.33333333%;
955 width: 33.33333333%;
956 }
956 }
957 .col-sm-3 {
957 .col-sm-3 {
958 width: 25%;
958 width: 25%;
959 }
959 }
960 .col-sm-2 {
960 .col-sm-2 {
961 width: 16.66666667%;
961 width: 16.66666667%;
962 }
962 }
963 .col-sm-1 {
963 .col-sm-1 {
964 width: 8.33333333%;
964 width: 8.33333333%;
965 }
965 }
966 .col-sm-pull-12 {
966 .col-sm-pull-12 {
967 right: 100%;
967 right: 100%;
968 }
968 }
969 .col-sm-pull-11 {
969 .col-sm-pull-11 {
970 right: 91.66666667%;
970 right: 91.66666667%;
971 }
971 }
972 .col-sm-pull-10 {
972 .col-sm-pull-10 {
973 right: 83.33333333%;
973 right: 83.33333333%;
974 }
974 }
975 .col-sm-pull-9 {
975 .col-sm-pull-9 {
976 right: 75%;
976 right: 75%;
977 }
977 }
978 .col-sm-pull-8 {
978 .col-sm-pull-8 {
979 right: 66.66666667%;
979 right: 66.66666667%;
980 }
980 }
981 .col-sm-pull-7 {
981 .col-sm-pull-7 {
982 right: 58.33333333%;
982 right: 58.33333333%;
983 }
983 }
984 .col-sm-pull-6 {
984 .col-sm-pull-6 {
985 right: 50%;
985 right: 50%;
986 }
986 }
987 .col-sm-pull-5 {
987 .col-sm-pull-5 {
988 right: 41.66666667%;
988 right: 41.66666667%;
989 }
989 }
990 .col-sm-pull-4 {
990 .col-sm-pull-4 {
991 right: 33.33333333%;
991 right: 33.33333333%;
992 }
992 }
993 .col-sm-pull-3 {
993 .col-sm-pull-3 {
994 right: 25%;
994 right: 25%;
995 }
995 }
996 .col-sm-pull-2 {
996 .col-sm-pull-2 {
997 right: 16.66666667%;
997 right: 16.66666667%;
998 }
998 }
999 .col-sm-pull-1 {
999 .col-sm-pull-1 {
1000 right: 8.33333333%;
1000 right: 8.33333333%;
1001 }
1001 }
1002 .col-sm-pull-0 {
1002 .col-sm-pull-0 {
1003 right: 0%;
1003 right: 0%;
1004 }
1004 }
1005 .col-sm-push-12 {
1005 .col-sm-push-12 {
1006 left: 100%;
1006 left: 100%;
1007 }
1007 }
1008 .col-sm-push-11 {
1008 .col-sm-push-11 {
1009 left: 91.66666667%;
1009 left: 91.66666667%;
1010 }
1010 }
1011 .col-sm-push-10 {
1011 .col-sm-push-10 {
1012 left: 83.33333333%;
1012 left: 83.33333333%;
1013 }
1013 }
1014 .col-sm-push-9 {
1014 .col-sm-push-9 {
1015 left: 75%;
1015 left: 75%;
1016 }
1016 }
1017 .col-sm-push-8 {
1017 .col-sm-push-8 {
1018 left: 66.66666667%;
1018 left: 66.66666667%;
1019 }
1019 }
1020 .col-sm-push-7 {
1020 .col-sm-push-7 {
1021 left: 58.33333333%;
1021 left: 58.33333333%;
1022 }
1022 }
1023 .col-sm-push-6 {
1023 .col-sm-push-6 {
1024 left: 50%;
1024 left: 50%;
1025 }
1025 }
1026 .col-sm-push-5 {
1026 .col-sm-push-5 {
1027 left: 41.66666667%;
1027 left: 41.66666667%;
1028 }
1028 }
1029 .col-sm-push-4 {
1029 .col-sm-push-4 {
1030 left: 33.33333333%;
1030 left: 33.33333333%;
1031 }
1031 }
1032 .col-sm-push-3 {
1032 .col-sm-push-3 {
1033 left: 25%;
1033 left: 25%;
1034 }
1034 }
1035 .col-sm-push-2 {
1035 .col-sm-push-2 {
1036 left: 16.66666667%;
1036 left: 16.66666667%;
1037 }
1037 }
1038 .col-sm-push-1 {
1038 .col-sm-push-1 {
1039 left: 8.33333333%;
1039 left: 8.33333333%;
1040 }
1040 }
1041 .col-sm-push-0 {
1041 .col-sm-push-0 {
1042 left: 0%;
1042 left: 0%;
1043 }
1043 }
1044 .col-sm-offset-12 {
1044 .col-sm-offset-12 {
1045 margin-left: 100%;
1045 margin-left: 100%;
1046 }
1046 }
1047 .col-sm-offset-11 {
1047 .col-sm-offset-11 {
1048 margin-left: 91.66666667%;
1048 margin-left: 91.66666667%;
1049 }
1049 }
1050 .col-sm-offset-10 {
1050 .col-sm-offset-10 {
1051 margin-left: 83.33333333%;
1051 margin-left: 83.33333333%;
1052 }
1052 }
1053 .col-sm-offset-9 {
1053 .col-sm-offset-9 {
1054 margin-left: 75%;
1054 margin-left: 75%;
1055 }
1055 }
1056 .col-sm-offset-8 {
1056 .col-sm-offset-8 {
1057 margin-left: 66.66666667%;
1057 margin-left: 66.66666667%;
1058 }
1058 }
1059 .col-sm-offset-7 {
1059 .col-sm-offset-7 {
1060 margin-left: 58.33333333%;
1060 margin-left: 58.33333333%;
1061 }
1061 }
1062 .col-sm-offset-6 {
1062 .col-sm-offset-6 {
1063 margin-left: 50%;
1063 margin-left: 50%;
1064 }
1064 }
1065 .col-sm-offset-5 {
1065 .col-sm-offset-5 {
1066 margin-left: 41.66666667%;
1066 margin-left: 41.66666667%;
1067 }
1067 }
1068 .col-sm-offset-4 {
1068 .col-sm-offset-4 {
1069 margin-left: 33.33333333%;
1069 margin-left: 33.33333333%;
1070 }
1070 }
1071 .col-sm-offset-3 {
1071 .col-sm-offset-3 {
1072 margin-left: 25%;
1072 margin-left: 25%;
1073 }
1073 }
1074 .col-sm-offset-2 {
1074 .col-sm-offset-2 {
1075 margin-left: 16.66666667%;
1075 margin-left: 16.66666667%;
1076 }
1076 }
1077 .col-sm-offset-1 {
1077 .col-sm-offset-1 {
1078 margin-left: 8.33333333%;
1078 margin-left: 8.33333333%;
1079 }
1079 }
1080 .col-sm-offset-0 {
1080 .col-sm-offset-0 {
1081 margin-left: 0%;
1081 margin-left: 0%;
1082 }
1082 }
1083 }
1083 }
1084 @media (min-width: 992px) {
1084 @media (min-width: 992px) {
1085 .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 {
1085 .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 {
1086 float: left;
1086 float: left;
1087 }
1087 }
1088 .col-md-12 {
1088 .col-md-12 {
1089 width: 100%;
1089 width: 100%;
1090 }
1090 }
1091 .col-md-11 {
1091 .col-md-11 {
1092 width: 91.66666667%;
1092 width: 91.66666667%;
1093 }
1093 }
1094 .col-md-10 {
1094 .col-md-10 {
1095 width: 83.33333333%;
1095 width: 83.33333333%;
1096 }
1096 }
1097 .col-md-9 {
1097 .col-md-9 {
1098 width: 75%;
1098 width: 75%;
1099 }
1099 }
1100 .col-md-8 {
1100 .col-md-8 {
1101 width: 66.66666667%;
1101 width: 66.66666667%;
1102 }
1102 }
1103 .col-md-7 {
1103 .col-md-7 {
1104 width: 58.33333333%;
1104 width: 58.33333333%;
1105 }
1105 }
1106 .col-md-6 {
1106 .col-md-6 {
1107 width: 50%;
1107 width: 50%;
1108 }
1108 }
1109 .col-md-5 {
1109 .col-md-5 {
1110 width: 41.66666667%;
1110 width: 41.66666667%;
1111 }
1111 }
1112 .col-md-4 {
1112 .col-md-4 {
1113 width: 33.33333333%;
1113 width: 33.33333333%;
1114 }
1114 }
1115 .col-md-3 {
1115 .col-md-3 {
1116 width: 25%;
1116 width: 25%;
1117 }
1117 }
1118 .col-md-2 {
1118 .col-md-2 {
1119 width: 16.66666667%;
1119 width: 16.66666667%;
1120 }
1120 }
1121 .col-md-1 {
1121 .col-md-1 {
1122 width: 8.33333333%;
1122 width: 8.33333333%;
1123 }
1123 }
1124 .col-md-pull-12 {
1124 .col-md-pull-12 {
1125 right: 100%;
1125 right: 100%;
1126 }
1126 }
1127 .col-md-pull-11 {
1127 .col-md-pull-11 {
1128 right: 91.66666667%;
1128 right: 91.66666667%;
1129 }
1129 }
1130 .col-md-pull-10 {
1130 .col-md-pull-10 {
1131 right: 83.33333333%;
1131 right: 83.33333333%;
1132 }
1132 }
1133 .col-md-pull-9 {
1133 .col-md-pull-9 {
1134 right: 75%;
1134 right: 75%;
1135 }
1135 }
1136 .col-md-pull-8 {
1136 .col-md-pull-8 {
1137 right: 66.66666667%;
1137 right: 66.66666667%;
1138 }
1138 }
1139 .col-md-pull-7 {
1139 .col-md-pull-7 {
1140 right: 58.33333333%;
1140 right: 58.33333333%;
1141 }
1141 }
1142 .col-md-pull-6 {
1142 .col-md-pull-6 {
1143 right: 50%;
1143 right: 50%;
1144 }
1144 }
1145 .col-md-pull-5 {
1145 .col-md-pull-5 {
1146 right: 41.66666667%;
1146 right: 41.66666667%;
1147 }
1147 }
1148 .col-md-pull-4 {
1148 .col-md-pull-4 {
1149 right: 33.33333333%;
1149 right: 33.33333333%;
1150 }
1150 }
1151 .col-md-pull-3 {
1151 .col-md-pull-3 {
1152 right: 25%;
1152 right: 25%;
1153 }
1153 }
1154 .col-md-pull-2 {
1154 .col-md-pull-2 {
1155 right: 16.66666667%;
1155 right: 16.66666667%;
1156 }
1156 }
1157 .col-md-pull-1 {
1157 .col-md-pull-1 {
1158 right: 8.33333333%;
1158 right: 8.33333333%;
1159 }
1159 }
1160 .col-md-pull-0 {
1160 .col-md-pull-0 {
1161 right: 0%;
1161 right: 0%;
1162 }
1162 }
1163 .col-md-push-12 {
1163 .col-md-push-12 {
1164 left: 100%;
1164 left: 100%;
1165 }
1165 }
1166 .col-md-push-11 {
1166 .col-md-push-11 {
1167 left: 91.66666667%;
1167 left: 91.66666667%;
1168 }
1168 }
1169 .col-md-push-10 {
1169 .col-md-push-10 {
1170 left: 83.33333333%;
1170 left: 83.33333333%;
1171 }
1171 }
1172 .col-md-push-9 {
1172 .col-md-push-9 {
1173 left: 75%;
1173 left: 75%;
1174 }
1174 }
1175 .col-md-push-8 {
1175 .col-md-push-8 {
1176 left: 66.66666667%;
1176 left: 66.66666667%;
1177 }
1177 }
1178 .col-md-push-7 {
1178 .col-md-push-7 {
1179 left: 58.33333333%;
1179 left: 58.33333333%;
1180 }
1180 }
1181 .col-md-push-6 {
1181 .col-md-push-6 {
1182 left: 50%;
1182 left: 50%;
1183 }
1183 }
1184 .col-md-push-5 {
1184 .col-md-push-5 {
1185 left: 41.66666667%;
1185 left: 41.66666667%;
1186 }
1186 }
1187 .col-md-push-4 {
1187 .col-md-push-4 {
1188 left: 33.33333333%;
1188 left: 33.33333333%;
1189 }
1189 }
1190 .col-md-push-3 {
1190 .col-md-push-3 {
1191 left: 25%;
1191 left: 25%;
1192 }
1192 }
1193 .col-md-push-2 {
1193 .col-md-push-2 {
1194 left: 16.66666667%;
1194 left: 16.66666667%;
1195 }
1195 }
1196 .col-md-push-1 {
1196 .col-md-push-1 {
1197 left: 8.33333333%;
1197 left: 8.33333333%;
1198 }
1198 }
1199 .col-md-push-0 {
1199 .col-md-push-0 {
1200 left: 0%;
1200 left: 0%;
1201 }
1201 }
1202 .col-md-offset-12 {
1202 .col-md-offset-12 {
1203 margin-left: 100%;
1203 margin-left: 100%;
1204 }
1204 }
1205 .col-md-offset-11 {
1205 .col-md-offset-11 {
1206 margin-left: 91.66666667%;
1206 margin-left: 91.66666667%;
1207 }
1207 }
1208 .col-md-offset-10 {
1208 .col-md-offset-10 {
1209 margin-left: 83.33333333%;
1209 margin-left: 83.33333333%;
1210 }
1210 }
1211 .col-md-offset-9 {
1211 .col-md-offset-9 {
1212 margin-left: 75%;
1212 margin-left: 75%;
1213 }
1213 }
1214 .col-md-offset-8 {
1214 .col-md-offset-8 {
1215 margin-left: 66.66666667%;
1215 margin-left: 66.66666667%;
1216 }
1216 }
1217 .col-md-offset-7 {
1217 .col-md-offset-7 {
1218 margin-left: 58.33333333%;
1218 margin-left: 58.33333333%;
1219 }
1219 }
1220 .col-md-offset-6 {
1220 .col-md-offset-6 {
1221 margin-left: 50%;
1221 margin-left: 50%;
1222 }
1222 }
1223 .col-md-offset-5 {
1223 .col-md-offset-5 {
1224 margin-left: 41.66666667%;
1224 margin-left: 41.66666667%;
1225 }
1225 }
1226 .col-md-offset-4 {
1226 .col-md-offset-4 {
1227 margin-left: 33.33333333%;
1227 margin-left: 33.33333333%;
1228 }
1228 }
1229 .col-md-offset-3 {
1229 .col-md-offset-3 {
1230 margin-left: 25%;
1230 margin-left: 25%;
1231 }
1231 }
1232 .col-md-offset-2 {
1232 .col-md-offset-2 {
1233 margin-left: 16.66666667%;
1233 margin-left: 16.66666667%;
1234 }
1234 }
1235 .col-md-offset-1 {
1235 .col-md-offset-1 {
1236 margin-left: 8.33333333%;
1236 margin-left: 8.33333333%;
1237 }
1237 }
1238 .col-md-offset-0 {
1238 .col-md-offset-0 {
1239 margin-left: 0%;
1239 margin-left: 0%;
1240 }
1240 }
1241 }
1241 }
1242 @media (min-width: 1200px) {
1242 @media (min-width: 1200px) {
1243 .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 {
1243 .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 {
1244 float: left;
1244 float: left;
1245 }
1245 }
1246 .col-lg-12 {
1246 .col-lg-12 {
1247 width: 100%;
1247 width: 100%;
1248 }
1248 }
1249 .col-lg-11 {
1249 .col-lg-11 {
1250 width: 91.66666667%;
1250 width: 91.66666667%;
1251 }
1251 }
1252 .col-lg-10 {
1252 .col-lg-10 {
1253 width: 83.33333333%;
1253 width: 83.33333333%;
1254 }
1254 }
1255 .col-lg-9 {
1255 .col-lg-9 {
1256 width: 75%;
1256 width: 75%;
1257 }
1257 }
1258 .col-lg-8 {
1258 .col-lg-8 {
1259 width: 66.66666667%;
1259 width: 66.66666667%;
1260 }
1260 }
1261 .col-lg-7 {
1261 .col-lg-7 {
1262 width: 58.33333333%;
1262 width: 58.33333333%;
1263 }
1263 }
1264 .col-lg-6 {
1264 .col-lg-6 {
1265 width: 50%;
1265 width: 50%;
1266 }
1266 }
1267 .col-lg-5 {
1267 .col-lg-5 {
1268 width: 41.66666667%;
1268 width: 41.66666667%;
1269 }
1269 }
1270 .col-lg-4 {
1270 .col-lg-4 {
1271 width: 33.33333333%;
1271 width: 33.33333333%;
1272 }
1272 }
1273 .col-lg-3 {
1273 .col-lg-3 {
1274 width: 25%;
1274 width: 25%;
1275 }
1275 }
1276 .col-lg-2 {
1276 .col-lg-2 {
1277 width: 16.66666667%;
1277 width: 16.66666667%;
1278 }
1278 }
1279 .col-lg-1 {
1279 .col-lg-1 {
1280 width: 8.33333333%;
1280 width: 8.33333333%;
1281 }
1281 }
1282 .col-lg-pull-12 {
1282 .col-lg-pull-12 {
1283 right: 100%;
1283 right: 100%;
1284 }
1284 }
1285 .col-lg-pull-11 {
1285 .col-lg-pull-11 {
1286 right: 91.66666667%;
1286 right: 91.66666667%;
1287 }
1287 }
1288 .col-lg-pull-10 {
1288 .col-lg-pull-10 {
1289 right: 83.33333333%;
1289 right: 83.33333333%;
1290 }
1290 }
1291 .col-lg-pull-9 {
1291 .col-lg-pull-9 {
1292 right: 75%;
1292 right: 75%;
1293 }
1293 }
1294 .col-lg-pull-8 {
1294 .col-lg-pull-8 {
1295 right: 66.66666667%;
1295 right: 66.66666667%;
1296 }
1296 }
1297 .col-lg-pull-7 {
1297 .col-lg-pull-7 {
1298 right: 58.33333333%;
1298 right: 58.33333333%;
1299 }
1299 }
1300 .col-lg-pull-6 {
1300 .col-lg-pull-6 {
1301 right: 50%;
1301 right: 50%;
1302 }
1302 }
1303 .col-lg-pull-5 {
1303 .col-lg-pull-5 {
1304 right: 41.66666667%;
1304 right: 41.66666667%;
1305 }
1305 }
1306 .col-lg-pull-4 {
1306 .col-lg-pull-4 {
1307 right: 33.33333333%;
1307 right: 33.33333333%;
1308 }
1308 }
1309 .col-lg-pull-3 {
1309 .col-lg-pull-3 {
1310 right: 25%;
1310 right: 25%;
1311 }
1311 }
1312 .col-lg-pull-2 {
1312 .col-lg-pull-2 {
1313 right: 16.66666667%;
1313 right: 16.66666667%;
1314 }
1314 }
1315 .col-lg-pull-1 {
1315 .col-lg-pull-1 {
1316 right: 8.33333333%;
1316 right: 8.33333333%;
1317 }
1317 }
1318 .col-lg-pull-0 {
1318 .col-lg-pull-0 {
1319 right: 0%;
1319 right: 0%;
1320 }
1320 }
1321 .col-lg-push-12 {
1321 .col-lg-push-12 {
1322 left: 100%;
1322 left: 100%;
1323 }
1323 }
1324 .col-lg-push-11 {
1324 .col-lg-push-11 {
1325 left: 91.66666667%;
1325 left: 91.66666667%;
1326 }
1326 }
1327 .col-lg-push-10 {
1327 .col-lg-push-10 {
1328 left: 83.33333333%;
1328 left: 83.33333333%;
1329 }
1329 }
1330 .col-lg-push-9 {
1330 .col-lg-push-9 {
1331 left: 75%;
1331 left: 75%;
1332 }
1332 }
1333 .col-lg-push-8 {
1333 .col-lg-push-8 {
1334 left: 66.66666667%;
1334 left: 66.66666667%;
1335 }
1335 }
1336 .col-lg-push-7 {
1336 .col-lg-push-7 {
1337 left: 58.33333333%;
1337 left: 58.33333333%;
1338 }
1338 }
1339 .col-lg-push-6 {
1339 .col-lg-push-6 {
1340 left: 50%;
1340 left: 50%;
1341 }
1341 }
1342 .col-lg-push-5 {
1342 .col-lg-push-5 {
1343 left: 41.66666667%;
1343 left: 41.66666667%;
1344 }
1344 }
1345 .col-lg-push-4 {
1345 .col-lg-push-4 {
1346 left: 33.33333333%;
1346 left: 33.33333333%;
1347 }
1347 }
1348 .col-lg-push-3 {
1348 .col-lg-push-3 {
1349 left: 25%;
1349 left: 25%;
1350 }
1350 }
1351 .col-lg-push-2 {
1351 .col-lg-push-2 {
1352 left: 16.66666667%;
1352 left: 16.66666667%;
1353 }
1353 }
1354 .col-lg-push-1 {
1354 .col-lg-push-1 {
1355 left: 8.33333333%;
1355 left: 8.33333333%;
1356 }
1356 }
1357 .col-lg-push-0 {
1357 .col-lg-push-0 {
1358 left: 0%;
1358 left: 0%;
1359 }
1359 }
1360 .col-lg-offset-12 {
1360 .col-lg-offset-12 {
1361 margin-left: 100%;
1361 margin-left: 100%;
1362 }
1362 }
1363 .col-lg-offset-11 {
1363 .col-lg-offset-11 {
1364 margin-left: 91.66666667%;
1364 margin-left: 91.66666667%;
1365 }
1365 }
1366 .col-lg-offset-10 {
1366 .col-lg-offset-10 {
1367 margin-left: 83.33333333%;
1367 margin-left: 83.33333333%;
1368 }
1368 }
1369 .col-lg-offset-9 {
1369 .col-lg-offset-9 {
1370 margin-left: 75%;
1370 margin-left: 75%;
1371 }
1371 }
1372 .col-lg-offset-8 {
1372 .col-lg-offset-8 {
1373 margin-left: 66.66666667%;
1373 margin-left: 66.66666667%;
1374 }
1374 }
1375 .col-lg-offset-7 {
1375 .col-lg-offset-7 {
1376 margin-left: 58.33333333%;
1376 margin-left: 58.33333333%;
1377 }
1377 }
1378 .col-lg-offset-6 {
1378 .col-lg-offset-6 {
1379 margin-left: 50%;
1379 margin-left: 50%;
1380 }
1380 }
1381 .col-lg-offset-5 {
1381 .col-lg-offset-5 {
1382 margin-left: 41.66666667%;
1382 margin-left: 41.66666667%;
1383 }
1383 }
1384 .col-lg-offset-4 {
1384 .col-lg-offset-4 {
1385 margin-left: 33.33333333%;
1385 margin-left: 33.33333333%;
1386 }
1386 }
1387 .col-lg-offset-3 {
1387 .col-lg-offset-3 {
1388 margin-left: 25%;
1388 margin-left: 25%;
1389 }
1389 }
1390 .col-lg-offset-2 {
1390 .col-lg-offset-2 {
1391 margin-left: 16.66666667%;
1391 margin-left: 16.66666667%;
1392 }
1392 }
1393 .col-lg-offset-1 {
1393 .col-lg-offset-1 {
1394 margin-left: 8.33333333%;
1394 margin-left: 8.33333333%;
1395 }
1395 }
1396 .col-lg-offset-0 {
1396 .col-lg-offset-0 {
1397 margin-left: 0%;
1397 margin-left: 0%;
1398 }
1398 }
1399 }
1399 }
1400 table {
1400 table {
1401 max-width: 100%;
1401 max-width: 100%;
1402 background-color: transparent;
1402 background-color: transparent;
1403 }
1403 }
1404 th {
1404 th {
1405 text-align: left;
1405 text-align: left;
1406 }
1406 }
1407 .table {
1407 .table {
1408 width: 100%;
1408 width: 100%;
1409 margin-bottom: 18px;
1409 margin-bottom: 18px;
1410 }
1410 }
1411 .table > thead > tr > th,
1411 .table > thead > tr > th,
1412 .table > tbody > tr > th,
1412 .table > tbody > tr > th,
1413 .table > tfoot > tr > th,
1413 .table > tfoot > tr > th,
1414 .table > thead > tr > td,
1414 .table > thead > tr > td,
1415 .table > tbody > tr > td,
1415 .table > tbody > tr > td,
1416 .table > tfoot > tr > td {
1416 .table > tfoot > tr > td {
1417 padding: 8px;
1417 padding: 8px;
1418 line-height: 1.42857143;
1418 line-height: 1.42857143;
1419 vertical-align: top;
1419 vertical-align: top;
1420 border-top: 1px solid #dddddd;
1420 border-top: 1px solid #dddddd;
1421 }
1421 }
1422 .table > thead > tr > th {
1422 .table > thead > tr > th {
1423 vertical-align: bottom;
1423 vertical-align: bottom;
1424 border-bottom: 2px solid #dddddd;
1424 border-bottom: 2px solid #dddddd;
1425 }
1425 }
1426 .table > caption + thead > tr:first-child > th,
1426 .table > caption + thead > tr:first-child > th,
1427 .table > colgroup + thead > tr:first-child > th,
1427 .table > colgroup + thead > tr:first-child > th,
1428 .table > thead:first-child > tr:first-child > th,
1428 .table > thead:first-child > tr:first-child > th,
1429 .table > caption + thead > tr:first-child > td,
1429 .table > caption + thead > tr:first-child > td,
1430 .table > colgroup + thead > tr:first-child > td,
1430 .table > colgroup + thead > tr:first-child > td,
1431 .table > thead:first-child > tr:first-child > td {
1431 .table > thead:first-child > tr:first-child > td {
1432 border-top: 0;
1432 border-top: 0;
1433 }
1433 }
1434 .table > tbody + tbody {
1434 .table > tbody + tbody {
1435 border-top: 2px solid #dddddd;
1435 border-top: 2px solid #dddddd;
1436 }
1436 }
1437 .table .table {
1437 .table .table {
1438 background-color: #ffffff;
1438 background-color: #ffffff;
1439 }
1439 }
1440 .table-condensed > thead > tr > th,
1440 .table-condensed > thead > tr > th,
1441 .table-condensed > tbody > tr > th,
1441 .table-condensed > tbody > tr > th,
1442 .table-condensed > tfoot > tr > th,
1442 .table-condensed > tfoot > tr > th,
1443 .table-condensed > thead > tr > td,
1443 .table-condensed > thead > tr > td,
1444 .table-condensed > tbody > tr > td,
1444 .table-condensed > tbody > tr > td,
1445 .table-condensed > tfoot > tr > td {
1445 .table-condensed > tfoot > tr > td {
1446 padding: 5px;
1446 padding: 5px;
1447 }
1447 }
1448 .table-bordered {
1448 .table-bordered {
1449 border: 1px solid #dddddd;
1449 border: 1px solid #dddddd;
1450 }
1450 }
1451 .table-bordered > thead > tr > th,
1451 .table-bordered > thead > tr > th,
1452 .table-bordered > tbody > tr > th,
1452 .table-bordered > tbody > tr > th,
1453 .table-bordered > tfoot > tr > th,
1453 .table-bordered > tfoot > tr > th,
1454 .table-bordered > thead > tr > td,
1454 .table-bordered > thead > tr > td,
1455 .table-bordered > tbody > tr > td,
1455 .table-bordered > tbody > tr > td,
1456 .table-bordered > tfoot > tr > td {
1456 .table-bordered > tfoot > tr > td {
1457 border: 1px solid #dddddd;
1457 border: 1px solid #dddddd;
1458 }
1458 }
1459 .table-bordered > thead > tr > th,
1459 .table-bordered > thead > tr > th,
1460 .table-bordered > thead > tr > td {
1460 .table-bordered > thead > tr > td {
1461 border-bottom-width: 2px;
1461 border-bottom-width: 2px;
1462 }
1462 }
1463 .table-striped > tbody > tr:nth-child(odd) > td,
1463 .table-striped > tbody > tr:nth-child(odd) > td,
1464 .table-striped > tbody > tr:nth-child(odd) > th {
1464 .table-striped > tbody > tr:nth-child(odd) > th {
1465 background-color: #f9f9f9;
1465 background-color: #f9f9f9;
1466 }
1466 }
1467 .table-hover > tbody > tr:hover > td,
1467 .table-hover > tbody > tr:hover > td,
1468 .table-hover > tbody > tr:hover > th {
1468 .table-hover > tbody > tr:hover > th {
1469 background-color: #f5f5f5;
1469 background-color: #f5f5f5;
1470 }
1470 }
1471 table col[class*="col-"] {
1471 table col[class*="col-"] {
1472 position: static;
1472 position: static;
1473 float: none;
1473 float: none;
1474 display: table-column;
1474 display: table-column;
1475 }
1475 }
1476 table td[class*="col-"],
1476 table td[class*="col-"],
1477 table th[class*="col-"] {
1477 table th[class*="col-"] {
1478 position: static;
1478 position: static;
1479 float: none;
1479 float: none;
1480 display: table-cell;
1480 display: table-cell;
1481 }
1481 }
1482 .table > thead > tr > td.active,
1482 .table > thead > tr > td.active,
1483 .table > tbody > tr > td.active,
1483 .table > tbody > tr > td.active,
1484 .table > tfoot > tr > td.active,
1484 .table > tfoot > tr > td.active,
1485 .table > thead > tr > th.active,
1485 .table > thead > tr > th.active,
1486 .table > tbody > tr > th.active,
1486 .table > tbody > tr > th.active,
1487 .table > tfoot > tr > th.active,
1487 .table > tfoot > tr > th.active,
1488 .table > thead > tr.active > td,
1488 .table > thead > tr.active > td,
1489 .table > tbody > tr.active > td,
1489 .table > tbody > tr.active > td,
1490 .table > tfoot > tr.active > td,
1490 .table > tfoot > tr.active > td,
1491 .table > thead > tr.active > th,
1491 .table > thead > tr.active > th,
1492 .table > tbody > tr.active > th,
1492 .table > tbody > tr.active > th,
1493 .table > tfoot > tr.active > th {
1493 .table > tfoot > tr.active > th {
1494 background-color: #f5f5f5;
1494 background-color: #f5f5f5;
1495 }
1495 }
1496 .table-hover > tbody > tr > td.active:hover,
1496 .table-hover > tbody > tr > td.active:hover,
1497 .table-hover > tbody > tr > th.active:hover,
1497 .table-hover > tbody > tr > th.active:hover,
1498 .table-hover > tbody > tr.active:hover > td,
1498 .table-hover > tbody > tr.active:hover > td,
1499 .table-hover > tbody > tr.active:hover > th {
1499 .table-hover > tbody > tr.active:hover > th {
1500 background-color: #e8e8e8;
1500 background-color: #e8e8e8;
1501 }
1501 }
1502 .table > thead > tr > td.success,
1502 .table > thead > tr > td.success,
1503 .table > tbody > tr > td.success,
1503 .table > tbody > tr > td.success,
1504 .table > tfoot > tr > td.success,
1504 .table > tfoot > tr > td.success,
1505 .table > thead > tr > th.success,
1505 .table > thead > tr > th.success,
1506 .table > tbody > tr > th.success,
1506 .table > tbody > tr > th.success,
1507 .table > tfoot > tr > th.success,
1507 .table > tfoot > tr > th.success,
1508 .table > thead > tr.success > td,
1508 .table > thead > tr.success > td,
1509 .table > tbody > tr.success > td,
1509 .table > tbody > tr.success > td,
1510 .table > tfoot > tr.success > td,
1510 .table > tfoot > tr.success > td,
1511 .table > thead > tr.success > th,
1511 .table > thead > tr.success > th,
1512 .table > tbody > tr.success > th,
1512 .table > tbody > tr.success > th,
1513 .table > tfoot > tr.success > th {
1513 .table > tfoot > tr.success > th {
1514 background-color: #dff0d8;
1514 background-color: #dff0d8;
1515 }
1515 }
1516 .table-hover > tbody > tr > td.success:hover,
1516 .table-hover > tbody > tr > td.success:hover,
1517 .table-hover > tbody > tr > th.success:hover,
1517 .table-hover > tbody > tr > th.success:hover,
1518 .table-hover > tbody > tr.success:hover > td,
1518 .table-hover > tbody > tr.success:hover > td,
1519 .table-hover > tbody > tr.success:hover > th {
1519 .table-hover > tbody > tr.success:hover > th {
1520 background-color: #d0e9c6;
1520 background-color: #d0e9c6;
1521 }
1521 }
1522 .table > thead > tr > td.info,
1522 .table > thead > tr > td.info,
1523 .table > tbody > tr > td.info,
1523 .table > tbody > tr > td.info,
1524 .table > tfoot > tr > td.info,
1524 .table > tfoot > tr > td.info,
1525 .table > thead > tr > th.info,
1525 .table > thead > tr > th.info,
1526 .table > tbody > tr > th.info,
1526 .table > tbody > tr > th.info,
1527 .table > tfoot > tr > th.info,
1527 .table > tfoot > tr > th.info,
1528 .table > thead > tr.info > td,
1528 .table > thead > tr.info > td,
1529 .table > tbody > tr.info > td,
1529 .table > tbody > tr.info > td,
1530 .table > tfoot > tr.info > td,
1530 .table > tfoot > tr.info > td,
1531 .table > thead > tr.info > th,
1531 .table > thead > tr.info > th,
1532 .table > tbody > tr.info > th,
1532 .table > tbody > tr.info > th,
1533 .table > tfoot > tr.info > th {
1533 .table > tfoot > tr.info > th {
1534 background-color: #d9edf7;
1534 background-color: #d9edf7;
1535 }
1535 }
1536 .table-hover > tbody > tr > td.info:hover,
1536 .table-hover > tbody > tr > td.info:hover,
1537 .table-hover > tbody > tr > th.info:hover,
1537 .table-hover > tbody > tr > th.info:hover,
1538 .table-hover > tbody > tr.info:hover > td,
1538 .table-hover > tbody > tr.info:hover > td,
1539 .table-hover > tbody > tr.info:hover > th {
1539 .table-hover > tbody > tr.info:hover > th {
1540 background-color: #c4e3f3;
1540 background-color: #c4e3f3;
1541 }
1541 }
1542 .table > thead > tr > td.warning,
1542 .table > thead > tr > td.warning,
1543 .table > tbody > tr > td.warning,
1543 .table > tbody > tr > td.warning,
1544 .table > tfoot > tr > td.warning,
1544 .table > tfoot > tr > td.warning,
1545 .table > thead > tr > th.warning,
1545 .table > thead > tr > th.warning,
1546 .table > tbody > tr > th.warning,
1546 .table > tbody > tr > th.warning,
1547 .table > tfoot > tr > th.warning,
1547 .table > tfoot > tr > th.warning,
1548 .table > thead > tr.warning > td,
1548 .table > thead > tr.warning > td,
1549 .table > tbody > tr.warning > td,
1549 .table > tbody > tr.warning > td,
1550 .table > tfoot > tr.warning > td,
1550 .table > tfoot > tr.warning > td,
1551 .table > thead > tr.warning > th,
1551 .table > thead > tr.warning > th,
1552 .table > tbody > tr.warning > th,
1552 .table > tbody > tr.warning > th,
1553 .table > tfoot > tr.warning > th {
1553 .table > tfoot > tr.warning > th {
1554 background-color: #fcf8e3;
1554 background-color: #fcf8e3;
1555 }
1555 }
1556 .table-hover > tbody > tr > td.warning:hover,
1556 .table-hover > tbody > tr > td.warning:hover,
1557 .table-hover > tbody > tr > th.warning:hover,
1557 .table-hover > tbody > tr > th.warning:hover,
1558 .table-hover > tbody > tr.warning:hover > td,
1558 .table-hover > tbody > tr.warning:hover > td,
1559 .table-hover > tbody > tr.warning:hover > th {
1559 .table-hover > tbody > tr.warning:hover > th {
1560 background-color: #faf2cc;
1560 background-color: #faf2cc;
1561 }
1561 }
1562 .table > thead > tr > td.danger,
1562 .table > thead > tr > td.danger,
1563 .table > tbody > tr > td.danger,
1563 .table > tbody > tr > td.danger,
1564 .table > tfoot > tr > td.danger,
1564 .table > tfoot > tr > td.danger,
1565 .table > thead > tr > th.danger,
1565 .table > thead > tr > th.danger,
1566 .table > tbody > tr > th.danger,
1566 .table > tbody > tr > th.danger,
1567 .table > tfoot > tr > th.danger,
1567 .table > tfoot > tr > th.danger,
1568 .table > thead > tr.danger > td,
1568 .table > thead > tr.danger > td,
1569 .table > tbody > tr.danger > td,
1569 .table > tbody > tr.danger > td,
1570 .table > tfoot > tr.danger > td,
1570 .table > tfoot > tr.danger > td,
1571 .table > thead > tr.danger > th,
1571 .table > thead > tr.danger > th,
1572 .table > tbody > tr.danger > th,
1572 .table > tbody > tr.danger > th,
1573 .table > tfoot > tr.danger > th {
1573 .table > tfoot > tr.danger > th {
1574 background-color: #f2dede;
1574 background-color: #f2dede;
1575 }
1575 }
1576 .table-hover > tbody > tr > td.danger:hover,
1576 .table-hover > tbody > tr > td.danger:hover,
1577 .table-hover > tbody > tr > th.danger:hover,
1577 .table-hover > tbody > tr > th.danger:hover,
1578 .table-hover > tbody > tr.danger:hover > td,
1578 .table-hover > tbody > tr.danger:hover > td,
1579 .table-hover > tbody > tr.danger:hover > th {
1579 .table-hover > tbody > tr.danger:hover > th {
1580 background-color: #ebcccc;
1580 background-color: #ebcccc;
1581 }
1581 }
1582 @media (max-width: 767px) {
1582 @media (max-width: 767px) {
1583 .table-responsive {
1583 .table-responsive {
1584 width: 100%;
1584 width: 100%;
1585 margin-bottom: 13.5px;
1585 margin-bottom: 13.5px;
1586 overflow-y: hidden;
1586 overflow-y: hidden;
1587 overflow-x: scroll;
1587 overflow-x: scroll;
1588 -ms-overflow-style: -ms-autohiding-scrollbar;
1588 -ms-overflow-style: -ms-autohiding-scrollbar;
1589 border: 1px solid #dddddd;
1589 border: 1px solid #dddddd;
1590 -webkit-overflow-scrolling: touch;
1590 -webkit-overflow-scrolling: touch;
1591 }
1591 }
1592 .table-responsive > .table {
1592 .table-responsive > .table {
1593 margin-bottom: 0;
1593 margin-bottom: 0;
1594 }
1594 }
1595 .table-responsive > .table > thead > tr > th,
1595 .table-responsive > .table > thead > tr > th,
1596 .table-responsive > .table > tbody > tr > th,
1596 .table-responsive > .table > tbody > tr > th,
1597 .table-responsive > .table > tfoot > tr > th,
1597 .table-responsive > .table > tfoot > tr > th,
1598 .table-responsive > .table > thead > tr > td,
1598 .table-responsive > .table > thead > tr > td,
1599 .table-responsive > .table > tbody > tr > td,
1599 .table-responsive > .table > tbody > tr > td,
1600 .table-responsive > .table > tfoot > tr > td {
1600 .table-responsive > .table > tfoot > tr > td {
1601 white-space: nowrap;
1601 white-space: nowrap;
1602 }
1602 }
1603 .table-responsive > .table-bordered {
1603 .table-responsive > .table-bordered {
1604 border: 0;
1604 border: 0;
1605 }
1605 }
1606 .table-responsive > .table-bordered > thead > tr > th:first-child,
1606 .table-responsive > .table-bordered > thead > tr > th:first-child,
1607 .table-responsive > .table-bordered > tbody > tr > th:first-child,
1607 .table-responsive > .table-bordered > tbody > tr > th:first-child,
1608 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1608 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1609 .table-responsive > .table-bordered > thead > tr > td:first-child,
1609 .table-responsive > .table-bordered > thead > tr > td:first-child,
1610 .table-responsive > .table-bordered > tbody > tr > td:first-child,
1610 .table-responsive > .table-bordered > tbody > tr > td:first-child,
1611 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1611 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1612 border-left: 0;
1612 border-left: 0;
1613 }
1613 }
1614 .table-responsive > .table-bordered > thead > tr > th:last-child,
1614 .table-responsive > .table-bordered > thead > tr > th:last-child,
1615 .table-responsive > .table-bordered > tbody > tr > th:last-child,
1615 .table-responsive > .table-bordered > tbody > tr > th:last-child,
1616 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1616 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1617 .table-responsive > .table-bordered > thead > tr > td:last-child,
1617 .table-responsive > .table-bordered > thead > tr > td:last-child,
1618 .table-responsive > .table-bordered > tbody > tr > td:last-child,
1618 .table-responsive > .table-bordered > tbody > tr > td:last-child,
1619 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1619 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1620 border-right: 0;
1620 border-right: 0;
1621 }
1621 }
1622 .table-responsive > .table-bordered > tbody > tr:last-child > th,
1622 .table-responsive > .table-bordered > tbody > tr:last-child > th,
1623 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1623 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1624 .table-responsive > .table-bordered > tbody > tr:last-child > td,
1624 .table-responsive > .table-bordered > tbody > tr:last-child > td,
1625 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1625 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1626 border-bottom: 0;
1626 border-bottom: 0;
1627 }
1627 }
1628 }
1628 }
1629 fieldset {
1629 fieldset {
1630 padding: 0;
1630 padding: 0;
1631 margin: 0;
1631 margin: 0;
1632 border: 0;
1632 border: 0;
1633 min-width: 0;
1633 min-width: 0;
1634 }
1634 }
1635 legend {
1635 legend {
1636 display: block;
1636 display: block;
1637 width: 100%;
1637 width: 100%;
1638 padding: 0;
1638 padding: 0;
1639 margin-bottom: 18px;
1639 margin-bottom: 18px;
1640 font-size: 19.5px;
1640 font-size: 19.5px;
1641 line-height: inherit;
1641 line-height: inherit;
1642 color: #333333;
1642 color: #333333;
1643 border: 0;
1643 border: 0;
1644 border-bottom: 1px solid #e5e5e5;
1644 border-bottom: 1px solid #e5e5e5;
1645 }
1645 }
1646 label {
1646 label {
1647 display: inline-block;
1647 display: inline-block;
1648 margin-bottom: 5px;
1648 margin-bottom: 5px;
1649 font-weight: bold;
1649 font-weight: bold;
1650 }
1650 }
1651 input[type="search"] {
1651 input[type="search"] {
1652 -webkit-box-sizing: border-box;
1652 -webkit-box-sizing: border-box;
1653 -moz-box-sizing: border-box;
1653 -moz-box-sizing: border-box;
1654 box-sizing: border-box;
1654 box-sizing: border-box;
1655 }
1655 }
1656 input[type="radio"],
1656 input[type="radio"],
1657 input[type="checkbox"] {
1657 input[type="checkbox"] {
1658 margin: 4px 0 0;
1658 margin: 4px 0 0;
1659 margin-top: 1px \9;
1659 margin-top: 1px \9;
1660 /* IE8-9 */
1660 /* IE8-9 */
1661 line-height: normal;
1661 line-height: normal;
1662 }
1662 }
1663 input[type="file"] {
1663 input[type="file"] {
1664 display: block;
1664 display: block;
1665 }
1665 }
1666 input[type="range"] {
1666 input[type="range"] {
1667 display: block;
1667 display: block;
1668 width: 100%;
1668 width: 100%;
1669 }
1669 }
1670 select[multiple],
1670 select[multiple],
1671 select[size] {
1671 select[size] {
1672 height: auto;
1672 height: auto;
1673 }
1673 }
1674 input[type="file"]:focus,
1674 input[type="file"]:focus,
1675 input[type="radio"]:focus,
1675 input[type="radio"]:focus,
1676 input[type="checkbox"]:focus {
1676 input[type="checkbox"]:focus {
1677 outline: thin dotted;
1677 outline: thin dotted;
1678 outline: 5px auto -webkit-focus-ring-color;
1678 outline: 5px auto -webkit-focus-ring-color;
1679 outline-offset: -2px;
1679 outline-offset: -2px;
1680 }
1680 }
1681 output {
1681 output {
1682 display: block;
1682 display: block;
1683 padding-top: 7px;
1683 padding-top: 7px;
1684 font-size: 13px;
1684 font-size: 13px;
1685 line-height: 1.42857143;
1685 line-height: 1.42857143;
1686 color: #555555;
1686 color: #555555;
1687 }
1687 }
1688 .form-control {
1688 .form-control {
1689 display: block;
1689 display: block;
1690 width: 100%;
1690 width: 100%;
1691 height: 32px;
1691 height: 32px;
1692 padding: 6px 12px;
1692 padding: 6px 12px;
1693 font-size: 13px;
1693 font-size: 13px;
1694 line-height: 1.42857143;
1694 line-height: 1.42857143;
1695 color: #555555;
1695 color: #555555;
1696 background-color: #ffffff;
1696 background-color: #ffffff;
1697 background-image: none;
1697 background-image: none;
1698 border: 1px solid #cccccc;
1698 border: 1px solid #cccccc;
1699 border-radius: 4px;
1699 border-radius: 4px;
1700 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1700 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1701 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1701 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1702 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1702 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1703 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1703 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1704 }
1704 }
1705 .form-control:focus {
1705 .form-control:focus {
1706 border-color: #66afe9;
1706 border-color: #66afe9;
1707 outline: 0;
1707 outline: 0;
1708 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1708 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1709 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1709 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1710 }
1710 }
1711 .form-control::-moz-placeholder {
1711 .form-control::-moz-placeholder {
1712 color: #999999;
1712 color: #999999;
1713 opacity: 1;
1713 opacity: 1;
1714 }
1714 }
1715 .form-control:-ms-input-placeholder {
1715 .form-control:-ms-input-placeholder {
1716 color: #999999;
1716 color: #999999;
1717 }
1717 }
1718 .form-control::-webkit-input-placeholder {
1718 .form-control::-webkit-input-placeholder {
1719 color: #999999;
1719 color: #999999;
1720 }
1720 }
1721 .form-control[disabled],
1721 .form-control[disabled],
1722 .form-control[readonly],
1722 .form-control[readonly],
1723 fieldset[disabled] .form-control {
1723 fieldset[disabled] .form-control {
1724 cursor: not-allowed;
1724 cursor: not-allowed;
1725 background-color: #eeeeee;
1725 background-color: #eeeeee;
1726 opacity: 1;
1726 opacity: 1;
1727 }
1727 }
1728 textarea.form-control {
1728 textarea.form-control {
1729 height: auto;
1729 height: auto;
1730 }
1730 }
1731 input[type="search"] {
1731 input[type="search"] {
1732 -webkit-appearance: none;
1732 -webkit-appearance: none;
1733 }
1733 }
1734 input[type="date"] {
1734 input[type="date"] {
1735 line-height: 32px;
1735 line-height: 32px;
1736 }
1736 }
1737 .form-group {
1737 .form-group {
1738 margin-bottom: 15px;
1738 margin-bottom: 15px;
1739 }
1739 }
1740 .radio,
1740 .radio,
1741 .checkbox {
1741 .checkbox {
1742 display: block;
1742 display: block;
1743 min-height: 18px;
1743 min-height: 18px;
1744 margin-top: 10px;
1744 margin-top: 10px;
1745 margin-bottom: 10px;
1745 margin-bottom: 10px;
1746 padding-left: 20px;
1746 padding-left: 20px;
1747 }
1747 }
1748 .radio label,
1748 .radio label,
1749 .checkbox label {
1749 .checkbox label {
1750 display: inline;
1750 display: inline;
1751 font-weight: normal;
1751 font-weight: normal;
1752 cursor: pointer;
1752 cursor: pointer;
1753 }
1753 }
1754 .radio input[type="radio"],
1754 .radio input[type="radio"],
1755 .radio-inline input[type="radio"],
1755 .radio-inline input[type="radio"],
1756 .checkbox input[type="checkbox"],
1756 .checkbox input[type="checkbox"],
1757 .checkbox-inline input[type="checkbox"] {
1757 .checkbox-inline input[type="checkbox"] {
1758 float: left;
1758 float: left;
1759 margin-left: -20px;
1759 margin-left: -20px;
1760 }
1760 }
1761 .radio + .radio,
1761 .radio + .radio,
1762 .checkbox + .checkbox {
1762 .checkbox + .checkbox {
1763 margin-top: -5px;
1763 margin-top: -5px;
1764 }
1764 }
1765 .radio-inline,
1765 .radio-inline,
1766 .checkbox-inline {
1766 .checkbox-inline {
1767 display: inline-block;
1767 display: inline-block;
1768 padding-left: 20px;
1768 padding-left: 20px;
1769 margin-bottom: 0;
1769 margin-bottom: 0;
1770 vertical-align: middle;
1770 vertical-align: middle;
1771 font-weight: normal;
1771 font-weight: normal;
1772 cursor: pointer;
1772 cursor: pointer;
1773 }
1773 }
1774 .radio-inline + .radio-inline,
1774 .radio-inline + .radio-inline,
1775 .checkbox-inline + .checkbox-inline {
1775 .checkbox-inline + .checkbox-inline {
1776 margin-top: 0;
1776 margin-top: 0;
1777 margin-left: 10px;
1777 margin-left: 10px;
1778 }
1778 }
1779 input[type="radio"][disabled],
1779 input[type="radio"][disabled],
1780 input[type="checkbox"][disabled],
1780 input[type="checkbox"][disabled],
1781 .radio[disabled],
1781 .radio[disabled],
1782 .radio-inline[disabled],
1782 .radio-inline[disabled],
1783 .checkbox[disabled],
1783 .checkbox[disabled],
1784 .checkbox-inline[disabled],
1784 .checkbox-inline[disabled],
1785 fieldset[disabled] input[type="radio"],
1785 fieldset[disabled] input[type="radio"],
1786 fieldset[disabled] input[type="checkbox"],
1786 fieldset[disabled] input[type="checkbox"],
1787 fieldset[disabled] .radio,
1787 fieldset[disabled] .radio,
1788 fieldset[disabled] .radio-inline,
1788 fieldset[disabled] .radio-inline,
1789 fieldset[disabled] .checkbox,
1789 fieldset[disabled] .checkbox,
1790 fieldset[disabled] .checkbox-inline {
1790 fieldset[disabled] .checkbox-inline {
1791 cursor: not-allowed;
1791 cursor: not-allowed;
1792 }
1792 }
1793 .input-sm {
1793 .input-sm {
1794 height: 30px;
1794 height: 30px;
1795 padding: 5px 10px;
1795 padding: 5px 10px;
1796 font-size: 12px;
1796 font-size: 12px;
1797 line-height: 1.5;
1797 line-height: 1.5;
1798 border-radius: 3px;
1798 border-radius: 3px;
1799 }
1799 }
1800 select.input-sm {
1800 select.input-sm {
1801 height: 30px;
1801 height: 30px;
1802 line-height: 30px;
1802 line-height: 30px;
1803 }
1803 }
1804 textarea.input-sm,
1804 textarea.input-sm,
1805 select[multiple].input-sm {
1805 select[multiple].input-sm {
1806 height: auto;
1806 height: auto;
1807 }
1807 }
1808 .input-lg {
1808 .input-lg {
1809 height: 45px;
1809 height: 45px;
1810 padding: 10px 16px;
1810 padding: 10px 16px;
1811 font-size: 17px;
1811 font-size: 17px;
1812 line-height: 1.33;
1812 line-height: 1.33;
1813 border-radius: 6px;
1813 border-radius: 6px;
1814 }
1814 }
1815 select.input-lg {
1815 select.input-lg {
1816 height: 45px;
1816 height: 45px;
1817 line-height: 45px;
1817 line-height: 45px;
1818 }
1818 }
1819 textarea.input-lg,
1819 textarea.input-lg,
1820 select[multiple].input-lg {
1820 select[multiple].input-lg {
1821 height: auto;
1821 height: auto;
1822 }
1822 }
1823 .has-feedback {
1823 .has-feedback {
1824 position: relative;
1824 position: relative;
1825 }
1825 }
1826 .has-feedback .form-control {
1826 .has-feedback .form-control {
1827 padding-right: 40px;
1827 padding-right: 40px;
1828 }
1828 }
1829 .has-feedback .form-control-feedback {
1829 .has-feedback .form-control-feedback {
1830 position: absolute;
1830 position: absolute;
1831 top: 23px;
1831 top: 23px;
1832 right: 0;
1832 right: 0;
1833 display: block;
1833 display: block;
1834 width: 32px;
1834 width: 32px;
1835 height: 32px;
1835 height: 32px;
1836 line-height: 32px;
1836 line-height: 32px;
1837 text-align: center;
1837 text-align: center;
1838 }
1838 }
1839 .has-success .help-block,
1839 .has-success .help-block,
1840 .has-success .control-label,
1840 .has-success .control-label,
1841 .has-success .radio,
1841 .has-success .radio,
1842 .has-success .checkbox,
1842 .has-success .checkbox,
1843 .has-success .radio-inline,
1843 .has-success .radio-inline,
1844 .has-success .checkbox-inline {
1844 .has-success .checkbox-inline {
1845 color: #3c763d;
1845 color: #3c763d;
1846 }
1846 }
1847 .has-success .form-control {
1847 .has-success .form-control {
1848 border-color: #3c763d;
1848 border-color: #3c763d;
1849 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1849 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1850 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1850 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1851 }
1851 }
1852 .has-success .form-control:focus {
1852 .has-success .form-control:focus {
1853 border-color: #2b542c;
1853 border-color: #2b542c;
1854 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1854 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1855 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1855 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1856 }
1856 }
1857 .has-success .input-group-addon {
1857 .has-success .input-group-addon {
1858 color: #3c763d;
1858 color: #3c763d;
1859 border-color: #3c763d;
1859 border-color: #3c763d;
1860 background-color: #dff0d8;
1860 background-color: #dff0d8;
1861 }
1861 }
1862 .has-success .form-control-feedback {
1862 .has-success .form-control-feedback {
1863 color: #3c763d;
1863 color: #3c763d;
1864 }
1864 }
1865 .has-warning .help-block,
1865 .has-warning .help-block,
1866 .has-warning .control-label,
1866 .has-warning .control-label,
1867 .has-warning .radio,
1867 .has-warning .radio,
1868 .has-warning .checkbox,
1868 .has-warning .checkbox,
1869 .has-warning .radio-inline,
1869 .has-warning .radio-inline,
1870 .has-warning .checkbox-inline {
1870 .has-warning .checkbox-inline {
1871 color: #8a6d3b;
1871 color: #8a6d3b;
1872 }
1872 }
1873 .has-warning .form-control {
1873 .has-warning .form-control {
1874 border-color: #8a6d3b;
1874 border-color: #8a6d3b;
1875 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1875 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1876 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1876 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1877 }
1877 }
1878 .has-warning .form-control:focus {
1878 .has-warning .form-control:focus {
1879 border-color: #66512c;
1879 border-color: #66512c;
1880 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1880 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1881 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1881 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1882 }
1882 }
1883 .has-warning .input-group-addon {
1883 .has-warning .input-group-addon {
1884 color: #8a6d3b;
1884 color: #8a6d3b;
1885 border-color: #8a6d3b;
1885 border-color: #8a6d3b;
1886 background-color: #fcf8e3;
1886 background-color: #fcf8e3;
1887 }
1887 }
1888 .has-warning .form-control-feedback {
1888 .has-warning .form-control-feedback {
1889 color: #8a6d3b;
1889 color: #8a6d3b;
1890 }
1890 }
1891 .has-error .help-block,
1891 .has-error .help-block,
1892 .has-error .control-label,
1892 .has-error .control-label,
1893 .has-error .radio,
1893 .has-error .radio,
1894 .has-error .checkbox,
1894 .has-error .checkbox,
1895 .has-error .radio-inline,
1895 .has-error .radio-inline,
1896 .has-error .checkbox-inline {
1896 .has-error .checkbox-inline {
1897 color: #a94442;
1897 color: #a94442;
1898 }
1898 }
1899 .has-error .form-control {
1899 .has-error .form-control {
1900 border-color: #a94442;
1900 border-color: #a94442;
1901 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1901 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1902 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1902 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1903 }
1903 }
1904 .has-error .form-control:focus {
1904 .has-error .form-control:focus {
1905 border-color: #843534;
1905 border-color: #843534;
1906 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1906 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1907 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1907 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1908 }
1908 }
1909 .has-error .input-group-addon {
1909 .has-error .input-group-addon {
1910 color: #a94442;
1910 color: #a94442;
1911 border-color: #a94442;
1911 border-color: #a94442;
1912 background-color: #f2dede;
1912 background-color: #f2dede;
1913 }
1913 }
1914 .has-error .form-control-feedback {
1914 .has-error .form-control-feedback {
1915 color: #a94442;
1915 color: #a94442;
1916 }
1916 }
1917 .form-control-static {
1917 .form-control-static {
1918 margin-bottom: 0;
1918 margin-bottom: 0;
1919 }
1919 }
1920 .help-block {
1920 .help-block {
1921 display: block;
1921 display: block;
1922 margin-top: 5px;
1922 margin-top: 5px;
1923 margin-bottom: 10px;
1923 margin-bottom: 10px;
1924 color: #404040;
1924 color: #404040;
1925 }
1925 }
1926 @media (min-width: 768px) {
1926 @media (min-width: 768px) {
1927 .form-inline .form-group {
1927 .form-inline .form-group {
1928 display: inline-block;
1928 display: inline-block;
1929 margin-bottom: 0;
1929 margin-bottom: 0;
1930 vertical-align: middle;
1930 vertical-align: middle;
1931 }
1931 }
1932 .form-inline .form-control {
1932 .form-inline .form-control {
1933 display: inline-block;
1933 display: inline-block;
1934 width: auto;
1934 width: auto;
1935 vertical-align: middle;
1935 vertical-align: middle;
1936 }
1936 }
1937 .form-inline .input-group > .form-control {
1937 .form-inline .input-group > .form-control {
1938 width: 100%;
1938 width: 100%;
1939 }
1939 }
1940 .form-inline .control-label {
1940 .form-inline .control-label {
1941 margin-bottom: 0;
1941 margin-bottom: 0;
1942 vertical-align: middle;
1942 vertical-align: middle;
1943 }
1943 }
1944 .form-inline .radio,
1944 .form-inline .radio,
1945 .form-inline .checkbox {
1945 .form-inline .checkbox {
1946 display: inline-block;
1946 display: inline-block;
1947 margin-top: 0;
1947 margin-top: 0;
1948 margin-bottom: 0;
1948 margin-bottom: 0;
1949 padding-left: 0;
1949 padding-left: 0;
1950 vertical-align: middle;
1950 vertical-align: middle;
1951 }
1951 }
1952 .form-inline .radio input[type="radio"],
1952 .form-inline .radio input[type="radio"],
1953 .form-inline .checkbox input[type="checkbox"] {
1953 .form-inline .checkbox input[type="checkbox"] {
1954 float: none;
1954 float: none;
1955 margin-left: 0;
1955 margin-left: 0;
1956 }
1956 }
1957 .form-inline .has-feedback .form-control-feedback {
1957 .form-inline .has-feedback .form-control-feedback {
1958 top: 0;
1958 top: 0;
1959 }
1959 }
1960 }
1960 }
1961 .form-horizontal .control-label,
1961 .form-horizontal .control-label,
1962 .form-horizontal .radio,
1962 .form-horizontal .radio,
1963 .form-horizontal .checkbox,
1963 .form-horizontal .checkbox,
1964 .form-horizontal .radio-inline,
1964 .form-horizontal .radio-inline,
1965 .form-horizontal .checkbox-inline {
1965 .form-horizontal .checkbox-inline {
1966 margin-top: 0;
1966 margin-top: 0;
1967 margin-bottom: 0;
1967 margin-bottom: 0;
1968 padding-top: 7px;
1968 padding-top: 7px;
1969 }
1969 }
1970 .form-horizontal .radio,
1970 .form-horizontal .radio,
1971 .form-horizontal .checkbox {
1971 .form-horizontal .checkbox {
1972 min-height: 25px;
1972 min-height: 25px;
1973 }
1973 }
1974 .form-horizontal .form-group {
1974 .form-horizontal .form-group {
1975 margin-left: -15px;
1975 margin-left: -15px;
1976 margin-right: -15px;
1976 margin-right: -15px;
1977 }
1977 }
1978 .form-horizontal .form-control-static {
1978 .form-horizontal .form-control-static {
1979 padding-top: 7px;
1979 padding-top: 7px;
1980 }
1980 }
1981 @media (min-width: 768px) {
1981 @media (min-width: 768px) {
1982 .form-horizontal .control-label {
1982 .form-horizontal .control-label {
1983 text-align: right;
1983 text-align: right;
1984 }
1984 }
1985 }
1985 }
1986 .form-horizontal .has-feedback .form-control-feedback {
1986 .form-horizontal .has-feedback .form-control-feedback {
1987 top: 0;
1987 top: 0;
1988 right: 15px;
1988 right: 15px;
1989 }
1989 }
1990 .btn {
1990 .btn {
1991 display: inline-block;
1991 display: inline-block;
1992 margin-bottom: 0;
1992 margin-bottom: 0;
1993 font-weight: normal;
1993 font-weight: normal;
1994 text-align: center;
1994 text-align: center;
1995 vertical-align: middle;
1995 vertical-align: middle;
1996 cursor: pointer;
1996 cursor: pointer;
1997 background-image: none;
1997 background-image: none;
1998 border: 1px solid transparent;
1998 border: 1px solid transparent;
1999 white-space: nowrap;
1999 white-space: nowrap;
2000 padding: 6px 12px;
2000 padding: 6px 12px;
2001 font-size: 13px;
2001 font-size: 13px;
2002 line-height: 1.42857143;
2002 line-height: 1.42857143;
2003 border-radius: 4px;
2003 border-radius: 4px;
2004 -webkit-user-select: none;
2004 -webkit-user-select: none;
2005 -moz-user-select: none;
2005 -moz-user-select: none;
2006 -ms-user-select: none;
2006 -ms-user-select: none;
2007 user-select: none;
2007 user-select: none;
2008 }
2008 }
2009 .btn:focus,
2009 .btn:focus,
2010 .btn:active:focus,
2010 .btn:active:focus,
2011 .btn.active:focus {
2011 .btn.active:focus {
2012 outline: thin dotted;
2012 outline: thin dotted;
2013 outline: 5px auto -webkit-focus-ring-color;
2013 outline: 5px auto -webkit-focus-ring-color;
2014 outline-offset: -2px;
2014 outline-offset: -2px;
2015 }
2015 }
2016 .btn:hover,
2016 .btn:hover,
2017 .btn:focus {
2017 .btn:focus {
2018 color: #333333;
2018 color: #333333;
2019 text-decoration: none;
2019 text-decoration: none;
2020 }
2020 }
2021 .btn:active,
2021 .btn:active,
2022 .btn.active {
2022 .btn.active {
2023 outline: 0;
2023 outline: 0;
2024 background-image: none;
2024 background-image: none;
2025 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2025 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2026 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2026 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2027 }
2027 }
2028 .btn.disabled,
2028 .btn.disabled,
2029 .btn[disabled],
2029 .btn[disabled],
2030 fieldset[disabled] .btn {
2030 fieldset[disabled] .btn {
2031 cursor: not-allowed;
2031 cursor: not-allowed;
2032 pointer-events: none;
2032 pointer-events: none;
2033 opacity: 0.65;
2033 opacity: 0.65;
2034 filter: alpha(opacity=65);
2034 filter: alpha(opacity=65);
2035 -webkit-box-shadow: none;
2035 -webkit-box-shadow: none;
2036 box-shadow: none;
2036 box-shadow: none;
2037 }
2037 }
2038 .btn-default {
2038 .btn-default {
2039 color: #333333;
2039 color: #333333;
2040 background-color: #ffffff;
2040 background-color: #ffffff;
2041 border-color: #cccccc;
2041 border-color: #cccccc;
2042 }
2042 }
2043 .btn-default:hover,
2043 .btn-default:hover,
2044 .btn-default:focus,
2044 .btn-default:focus,
2045 .btn-default:active,
2045 .btn-default:active,
2046 .btn-default.active,
2046 .btn-default.active,
2047 .open .dropdown-toggle.btn-default {
2047 .open .dropdown-toggle.btn-default {
2048 color: #333333;
2048 color: #333333;
2049 background-color: #ebebeb;
2049 background-color: #ebebeb;
2050 border-color: #adadad;
2050 border-color: #adadad;
2051 }
2051 }
2052 .btn-default:active,
2052 .btn-default:active,
2053 .btn-default.active,
2053 .btn-default.active,
2054 .open .dropdown-toggle.btn-default {
2054 .open .dropdown-toggle.btn-default {
2055 background-image: none;
2055 background-image: none;
2056 }
2056 }
2057 .btn-default.disabled,
2057 .btn-default.disabled,
2058 .btn-default[disabled],
2058 .btn-default[disabled],
2059 fieldset[disabled] .btn-default,
2059 fieldset[disabled] .btn-default,
2060 .btn-default.disabled:hover,
2060 .btn-default.disabled:hover,
2061 .btn-default[disabled]:hover,
2061 .btn-default[disabled]:hover,
2062 fieldset[disabled] .btn-default:hover,
2062 fieldset[disabled] .btn-default:hover,
2063 .btn-default.disabled:focus,
2063 .btn-default.disabled:focus,
2064 .btn-default[disabled]:focus,
2064 .btn-default[disabled]:focus,
2065 fieldset[disabled] .btn-default:focus,
2065 fieldset[disabled] .btn-default:focus,
2066 .btn-default.disabled:active,
2066 .btn-default.disabled:active,
2067 .btn-default[disabled]:active,
2067 .btn-default[disabled]:active,
2068 fieldset[disabled] .btn-default:active,
2068 fieldset[disabled] .btn-default:active,
2069 .btn-default.disabled.active,
2069 .btn-default.disabled.active,
2070 .btn-default[disabled].active,
2070 .btn-default[disabled].active,
2071 fieldset[disabled] .btn-default.active {
2071 fieldset[disabled] .btn-default.active {
2072 background-color: #ffffff;
2072 background-color: #ffffff;
2073 border-color: #cccccc;
2073 border-color: #cccccc;
2074 }
2074 }
2075 .btn-default .badge {
2075 .btn-default .badge {
2076 color: #ffffff;
2076 color: #ffffff;
2077 background-color: #333333;
2077 background-color: #333333;
2078 }
2078 }
2079 .btn-primary {
2079 .btn-primary {
2080 color: #ffffff;
2080 color: #ffffff;
2081 background-color: #428bca;
2081 background-color: #428bca;
2082 border-color: #357ebd;
2082 border-color: #357ebd;
2083 }
2083 }
2084 .btn-primary:hover,
2084 .btn-primary:hover,
2085 .btn-primary:focus,
2085 .btn-primary:focus,
2086 .btn-primary:active,
2086 .btn-primary:active,
2087 .btn-primary.active,
2087 .btn-primary.active,
2088 .open .dropdown-toggle.btn-primary {
2088 .open .dropdown-toggle.btn-primary {
2089 color: #ffffff;
2089 color: #ffffff;
2090 background-color: #3276b1;
2090 background-color: #3276b1;
2091 border-color: #285e8e;
2091 border-color: #285e8e;
2092 }
2092 }
2093 .btn-primary:active,
2093 .btn-primary:active,
2094 .btn-primary.active,
2094 .btn-primary.active,
2095 .open .dropdown-toggle.btn-primary {
2095 .open .dropdown-toggle.btn-primary {
2096 background-image: none;
2096 background-image: none;
2097 }
2097 }
2098 .btn-primary.disabled,
2098 .btn-primary.disabled,
2099 .btn-primary[disabled],
2099 .btn-primary[disabled],
2100 fieldset[disabled] .btn-primary,
2100 fieldset[disabled] .btn-primary,
2101 .btn-primary.disabled:hover,
2101 .btn-primary.disabled:hover,
2102 .btn-primary[disabled]:hover,
2102 .btn-primary[disabled]:hover,
2103 fieldset[disabled] .btn-primary:hover,
2103 fieldset[disabled] .btn-primary:hover,
2104 .btn-primary.disabled:focus,
2104 .btn-primary.disabled:focus,
2105 .btn-primary[disabled]:focus,
2105 .btn-primary[disabled]:focus,
2106 fieldset[disabled] .btn-primary:focus,
2106 fieldset[disabled] .btn-primary:focus,
2107 .btn-primary.disabled:active,
2107 .btn-primary.disabled:active,
2108 .btn-primary[disabled]:active,
2108 .btn-primary[disabled]:active,
2109 fieldset[disabled] .btn-primary:active,
2109 fieldset[disabled] .btn-primary:active,
2110 .btn-primary.disabled.active,
2110 .btn-primary.disabled.active,
2111 .btn-primary[disabled].active,
2111 .btn-primary[disabled].active,
2112 fieldset[disabled] .btn-primary.active {
2112 fieldset[disabled] .btn-primary.active {
2113 background-color: #428bca;
2113 background-color: #428bca;
2114 border-color: #357ebd;
2114 border-color: #357ebd;
2115 }
2115 }
2116 .btn-primary .badge {
2116 .btn-primary .badge {
2117 color: #428bca;
2117 color: #428bca;
2118 background-color: #ffffff;
2118 background-color: #ffffff;
2119 }
2119 }
2120 .btn-success {
2120 .btn-success {
2121 color: #ffffff;
2121 color: #ffffff;
2122 background-color: #5cb85c;
2122 background-color: #5cb85c;
2123 border-color: #4cae4c;
2123 border-color: #4cae4c;
2124 }
2124 }
2125 .btn-success:hover,
2125 .btn-success:hover,
2126 .btn-success:focus,
2126 .btn-success:focus,
2127 .btn-success:active,
2127 .btn-success:active,
2128 .btn-success.active,
2128 .btn-success.active,
2129 .open .dropdown-toggle.btn-success {
2129 .open .dropdown-toggle.btn-success {
2130 color: #ffffff;
2130 color: #ffffff;
2131 background-color: #47a447;
2131 background-color: #47a447;
2132 border-color: #398439;
2132 border-color: #398439;
2133 }
2133 }
2134 .btn-success:active,
2134 .btn-success:active,
2135 .btn-success.active,
2135 .btn-success.active,
2136 .open .dropdown-toggle.btn-success {
2136 .open .dropdown-toggle.btn-success {
2137 background-image: none;
2137 background-image: none;
2138 }
2138 }
2139 .btn-success.disabled,
2139 .btn-success.disabled,
2140 .btn-success[disabled],
2140 .btn-success[disabled],
2141 fieldset[disabled] .btn-success,
2141 fieldset[disabled] .btn-success,
2142 .btn-success.disabled:hover,
2142 .btn-success.disabled:hover,
2143 .btn-success[disabled]:hover,
2143 .btn-success[disabled]:hover,
2144 fieldset[disabled] .btn-success:hover,
2144 fieldset[disabled] .btn-success:hover,
2145 .btn-success.disabled:focus,
2145 .btn-success.disabled:focus,
2146 .btn-success[disabled]:focus,
2146 .btn-success[disabled]:focus,
2147 fieldset[disabled] .btn-success:focus,
2147 fieldset[disabled] .btn-success:focus,
2148 .btn-success.disabled:active,
2148 .btn-success.disabled:active,
2149 .btn-success[disabled]:active,
2149 .btn-success[disabled]:active,
2150 fieldset[disabled] .btn-success:active,
2150 fieldset[disabled] .btn-success:active,
2151 .btn-success.disabled.active,
2151 .btn-success.disabled.active,
2152 .btn-success[disabled].active,
2152 .btn-success[disabled].active,
2153 fieldset[disabled] .btn-success.active {
2153 fieldset[disabled] .btn-success.active {
2154 background-color: #5cb85c;
2154 background-color: #5cb85c;
2155 border-color: #4cae4c;
2155 border-color: #4cae4c;
2156 }
2156 }
2157 .btn-success .badge {
2157 .btn-success .badge {
2158 color: #5cb85c;
2158 color: #5cb85c;
2159 background-color: #ffffff;
2159 background-color: #ffffff;
2160 }
2160 }
2161 .btn-info {
2161 .btn-info {
2162 color: #ffffff;
2162 color: #ffffff;
2163 background-color: #5bc0de;
2163 background-color: #5bc0de;
2164 border-color: #46b8da;
2164 border-color: #46b8da;
2165 }
2165 }
2166 .btn-info:hover,
2166 .btn-info:hover,
2167 .btn-info:focus,
2167 .btn-info:focus,
2168 .btn-info:active,
2168 .btn-info:active,
2169 .btn-info.active,
2169 .btn-info.active,
2170 .open .dropdown-toggle.btn-info {
2170 .open .dropdown-toggle.btn-info {
2171 color: #ffffff;
2171 color: #ffffff;
2172 background-color: #39b3d7;
2172 background-color: #39b3d7;
2173 border-color: #269abc;
2173 border-color: #269abc;
2174 }
2174 }
2175 .btn-info:active,
2175 .btn-info:active,
2176 .btn-info.active,
2176 .btn-info.active,
2177 .open .dropdown-toggle.btn-info {
2177 .open .dropdown-toggle.btn-info {
2178 background-image: none;
2178 background-image: none;
2179 }
2179 }
2180 .btn-info.disabled,
2180 .btn-info.disabled,
2181 .btn-info[disabled],
2181 .btn-info[disabled],
2182 fieldset[disabled] .btn-info,
2182 fieldset[disabled] .btn-info,
2183 .btn-info.disabled:hover,
2183 .btn-info.disabled:hover,
2184 .btn-info[disabled]:hover,
2184 .btn-info[disabled]:hover,
2185 fieldset[disabled] .btn-info:hover,
2185 fieldset[disabled] .btn-info:hover,
2186 .btn-info.disabled:focus,
2186 .btn-info.disabled:focus,
2187 .btn-info[disabled]:focus,
2187 .btn-info[disabled]:focus,
2188 fieldset[disabled] .btn-info:focus,
2188 fieldset[disabled] .btn-info:focus,
2189 .btn-info.disabled:active,
2189 .btn-info.disabled:active,
2190 .btn-info[disabled]:active,
2190 .btn-info[disabled]:active,
2191 fieldset[disabled] .btn-info:active,
2191 fieldset[disabled] .btn-info:active,
2192 .btn-info.disabled.active,
2192 .btn-info.disabled.active,
2193 .btn-info[disabled].active,
2193 .btn-info[disabled].active,
2194 fieldset[disabled] .btn-info.active {
2194 fieldset[disabled] .btn-info.active {
2195 background-color: #5bc0de;
2195 background-color: #5bc0de;
2196 border-color: #46b8da;
2196 border-color: #46b8da;
2197 }
2197 }
2198 .btn-info .badge {
2198 .btn-info .badge {
2199 color: #5bc0de;
2199 color: #5bc0de;
2200 background-color: #ffffff;
2200 background-color: #ffffff;
2201 }
2201 }
2202 .btn-warning {
2202 .btn-warning {
2203 color: #ffffff;
2203 color: #ffffff;
2204 background-color: #f0ad4e;
2204 background-color: #f0ad4e;
2205 border-color: #eea236;
2205 border-color: #eea236;
2206 }
2206 }
2207 .btn-warning:hover,
2207 .btn-warning:hover,
2208 .btn-warning:focus,
2208 .btn-warning:focus,
2209 .btn-warning:active,
2209 .btn-warning:active,
2210 .btn-warning.active,
2210 .btn-warning.active,
2211 .open .dropdown-toggle.btn-warning {
2211 .open .dropdown-toggle.btn-warning {
2212 color: #ffffff;
2212 color: #ffffff;
2213 background-color: #ed9c28;
2213 background-color: #ed9c28;
2214 border-color: #d58512;
2214 border-color: #d58512;
2215 }
2215 }
2216 .btn-warning:active,
2216 .btn-warning:active,
2217 .btn-warning.active,
2217 .btn-warning.active,
2218 .open .dropdown-toggle.btn-warning {
2218 .open .dropdown-toggle.btn-warning {
2219 background-image: none;
2219 background-image: none;
2220 }
2220 }
2221 .btn-warning.disabled,
2221 .btn-warning.disabled,
2222 .btn-warning[disabled],
2222 .btn-warning[disabled],
2223 fieldset[disabled] .btn-warning,
2223 fieldset[disabled] .btn-warning,
2224 .btn-warning.disabled:hover,
2224 .btn-warning.disabled:hover,
2225 .btn-warning[disabled]:hover,
2225 .btn-warning[disabled]:hover,
2226 fieldset[disabled] .btn-warning:hover,
2226 fieldset[disabled] .btn-warning:hover,
2227 .btn-warning.disabled:focus,
2227 .btn-warning.disabled:focus,
2228 .btn-warning[disabled]:focus,
2228 .btn-warning[disabled]:focus,
2229 fieldset[disabled] .btn-warning:focus,
2229 fieldset[disabled] .btn-warning:focus,
2230 .btn-warning.disabled:active,
2230 .btn-warning.disabled:active,
2231 .btn-warning[disabled]:active,
2231 .btn-warning[disabled]:active,
2232 fieldset[disabled] .btn-warning:active,
2232 fieldset[disabled] .btn-warning:active,
2233 .btn-warning.disabled.active,
2233 .btn-warning.disabled.active,
2234 .btn-warning[disabled].active,
2234 .btn-warning[disabled].active,
2235 fieldset[disabled] .btn-warning.active {
2235 fieldset[disabled] .btn-warning.active {
2236 background-color: #f0ad4e;
2236 background-color: #f0ad4e;
2237 border-color: #eea236;
2237 border-color: #eea236;
2238 }
2238 }
2239 .btn-warning .badge {
2239 .btn-warning .badge {
2240 color: #f0ad4e;
2240 color: #f0ad4e;
2241 background-color: #ffffff;
2241 background-color: #ffffff;
2242 }
2242 }
2243 .btn-danger {
2243 .btn-danger {
2244 color: #ffffff;
2244 color: #ffffff;
2245 background-color: #d9534f;
2245 background-color: #d9534f;
2246 border-color: #d43f3a;
2246 border-color: #d43f3a;
2247 }
2247 }
2248 .btn-danger:hover,
2248 .btn-danger:hover,
2249 .btn-danger:focus,
2249 .btn-danger:focus,
2250 .btn-danger:active,
2250 .btn-danger:active,
2251 .btn-danger.active,
2251 .btn-danger.active,
2252 .open .dropdown-toggle.btn-danger {
2252 .open .dropdown-toggle.btn-danger {
2253 color: #ffffff;
2253 color: #ffffff;
2254 background-color: #d2322d;
2254 background-color: #d2322d;
2255 border-color: #ac2925;
2255 border-color: #ac2925;
2256 }
2256 }
2257 .btn-danger:active,
2257 .btn-danger:active,
2258 .btn-danger.active,
2258 .btn-danger.active,
2259 .open .dropdown-toggle.btn-danger {
2259 .open .dropdown-toggle.btn-danger {
2260 background-image: none;
2260 background-image: none;
2261 }
2261 }
2262 .btn-danger.disabled,
2262 .btn-danger.disabled,
2263 .btn-danger[disabled],
2263 .btn-danger[disabled],
2264 fieldset[disabled] .btn-danger,
2264 fieldset[disabled] .btn-danger,
2265 .btn-danger.disabled:hover,
2265 .btn-danger.disabled:hover,
2266 .btn-danger[disabled]:hover,
2266 .btn-danger[disabled]:hover,
2267 fieldset[disabled] .btn-danger:hover,
2267 fieldset[disabled] .btn-danger:hover,
2268 .btn-danger.disabled:focus,
2268 .btn-danger.disabled:focus,
2269 .btn-danger[disabled]:focus,
2269 .btn-danger[disabled]:focus,
2270 fieldset[disabled] .btn-danger:focus,
2270 fieldset[disabled] .btn-danger:focus,
2271 .btn-danger.disabled:active,
2271 .btn-danger.disabled:active,
2272 .btn-danger[disabled]:active,
2272 .btn-danger[disabled]:active,
2273 fieldset[disabled] .btn-danger:active,
2273 fieldset[disabled] .btn-danger:active,
2274 .btn-danger.disabled.active,
2274 .btn-danger.disabled.active,
2275 .btn-danger[disabled].active,
2275 .btn-danger[disabled].active,
2276 fieldset[disabled] .btn-danger.active {
2276 fieldset[disabled] .btn-danger.active {
2277 background-color: #d9534f;
2277 background-color: #d9534f;
2278 border-color: #d43f3a;
2278 border-color: #d43f3a;
2279 }
2279 }
2280 .btn-danger .badge {
2280 .btn-danger .badge {
2281 color: #d9534f;
2281 color: #d9534f;
2282 background-color: #ffffff;
2282 background-color: #ffffff;
2283 }
2283 }
2284 .btn-link {
2284 .btn-link {
2285 color: #428bca;
2285 color: #428bca;
2286 font-weight: normal;
2286 font-weight: normal;
2287 cursor: pointer;
2287 cursor: pointer;
2288 border-radius: 0;
2288 border-radius: 0;
2289 }
2289 }
2290 .btn-link,
2290 .btn-link,
2291 .btn-link:active,
2291 .btn-link:active,
2292 .btn-link[disabled],
2292 .btn-link[disabled],
2293 fieldset[disabled] .btn-link {
2293 fieldset[disabled] .btn-link {
2294 background-color: transparent;
2294 background-color: transparent;
2295 -webkit-box-shadow: none;
2295 -webkit-box-shadow: none;
2296 box-shadow: none;
2296 box-shadow: none;
2297 }
2297 }
2298 .btn-link,
2298 .btn-link,
2299 .btn-link:hover,
2299 .btn-link:hover,
2300 .btn-link:focus,
2300 .btn-link:focus,
2301 .btn-link:active {
2301 .btn-link:active {
2302 border-color: transparent;
2302 border-color: transparent;
2303 }
2303 }
2304 .btn-link:hover,
2304 .btn-link:hover,
2305 .btn-link:focus {
2305 .btn-link:focus {
2306 color: #2a6496;
2306 color: #2a6496;
2307 text-decoration: underline;
2307 text-decoration: underline;
2308 background-color: transparent;
2308 background-color: transparent;
2309 }
2309 }
2310 .btn-link[disabled]:hover,
2310 .btn-link[disabled]:hover,
2311 fieldset[disabled] .btn-link:hover,
2311 fieldset[disabled] .btn-link:hover,
2312 .btn-link[disabled]:focus,
2312 .btn-link[disabled]:focus,
2313 fieldset[disabled] .btn-link:focus {
2313 fieldset[disabled] .btn-link:focus {
2314 color: #999999;
2314 color: #999999;
2315 text-decoration: none;
2315 text-decoration: none;
2316 }
2316 }
2317 .btn-lg,
2317 .btn-lg,
2318 .btn-group-lg > .btn {
2318 .btn-group-lg > .btn {
2319 padding: 10px 16px;
2319 padding: 10px 16px;
2320 font-size: 17px;
2320 font-size: 17px;
2321 line-height: 1.33;
2321 line-height: 1.33;
2322 border-radius: 6px;
2322 border-radius: 6px;
2323 }
2323 }
2324 .btn-sm,
2324 .btn-sm,
2325 .btn-group-sm > .btn {
2325 .btn-group-sm > .btn {
2326 padding: 5px 10px;
2326 padding: 5px 10px;
2327 font-size: 12px;
2327 font-size: 12px;
2328 line-height: 1.5;
2328 line-height: 1.5;
2329 border-radius: 3px;
2329 border-radius: 3px;
2330 }
2330 }
2331 .btn-xs,
2331 .btn-xs,
2332 .btn-group-xs > .btn {
2332 .btn-group-xs > .btn {
2333 padding: 1px 5px;
2333 padding: 1px 5px;
2334 font-size: 12px;
2334 font-size: 12px;
2335 line-height: 1.5;
2335 line-height: 1.5;
2336 border-radius: 3px;
2336 border-radius: 3px;
2337 }
2337 }
2338 .btn-block {
2338 .btn-block {
2339 display: block;
2339 display: block;
2340 width: 100%;
2340 width: 100%;
2341 padding-left: 0;
2341 padding-left: 0;
2342 padding-right: 0;
2342 padding-right: 0;
2343 }
2343 }
2344 .btn-block + .btn-block {
2344 .btn-block + .btn-block {
2345 margin-top: 5px;
2345 margin-top: 5px;
2346 }
2346 }
2347 input[type="submit"].btn-block,
2347 input[type="submit"].btn-block,
2348 input[type="reset"].btn-block,
2348 input[type="reset"].btn-block,
2349 input[type="button"].btn-block {
2349 input[type="button"].btn-block {
2350 width: 100%;
2350 width: 100%;
2351 }
2351 }
2352 .fade {
2352 .fade {
2353 opacity: 0;
2353 opacity: 0;
2354 -webkit-transition: opacity 0.15s linear;
2354 -webkit-transition: opacity 0.15s linear;
2355 transition: opacity 0.15s linear;
2355 transition: opacity 0.15s linear;
2356 }
2356 }
2357 .fade.in {
2357 .fade.in {
2358 opacity: 1;
2358 opacity: 1;
2359 }
2359 }
2360 .collapse {
2360 .collapse {
2361 display: none;
2361 display: none;
2362 }
2362 }
2363 .collapse.in {
2363 .collapse.in {
2364 display: block;
2364 display: block;
2365 }
2365 }
2366 .collapsing {
2366 .collapsing {
2367 position: relative;
2367 position: relative;
2368 height: 0;
2368 height: 0;
2369 overflow: hidden;
2369 overflow: hidden;
2370 -webkit-transition: height 0.35s ease;
2370 -webkit-transition: height 0.35s ease;
2371 transition: height 0.35s ease;
2371 transition: height 0.35s ease;
2372 }
2372 }
2373 @font-face {
2373 @font-face {
2374 font-family: 'Glyphicons Halflings';
2374 font-family: 'Glyphicons Halflings';
2375 src: url('../fonts/glyphicons-halflings-regular.eot');
2375 src: url('../fonts/glyphicons-halflings-regular.eot');
2376 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');
2376 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');
2377 }
2377 }
2378 .glyphicon {
2378 .glyphicon {
2379 position: relative;
2379 position: relative;
2380 top: 1px;
2380 top: 1px;
2381 display: inline-block;
2381 display: inline-block;
2382 font-family: 'Glyphicons Halflings';
2382 font-family: 'Glyphicons Halflings';
2383 font-style: normal;
2383 font-style: normal;
2384 font-weight: normal;
2384 font-weight: normal;
2385 line-height: 1;
2385 line-height: 1;
2386 -webkit-font-smoothing: antialiased;
2386 -webkit-font-smoothing: antialiased;
2387 -moz-osx-font-smoothing: grayscale;
2387 -moz-osx-font-smoothing: grayscale;
2388 }
2388 }
2389 .glyphicon-asterisk:before {
2389 .glyphicon-asterisk:before {
2390 content: "\2a";
2390 content: "\2a";
2391 }
2391 }
2392 .glyphicon-plus:before {
2392 .glyphicon-plus:before {
2393 content: "\2b";
2393 content: "\2b";
2394 }
2394 }
2395 .glyphicon-euro:before {
2395 .glyphicon-euro:before {
2396 content: "\20ac";
2396 content: "\20ac";
2397 }
2397 }
2398 .glyphicon-minus:before {
2398 .glyphicon-minus:before {
2399 content: "\2212";
2399 content: "\2212";
2400 }
2400 }
2401 .glyphicon-cloud:before {
2401 .glyphicon-cloud:before {
2402 content: "\2601";
2402 content: "\2601";
2403 }
2403 }
2404 .glyphicon-envelope:before {
2404 .glyphicon-envelope:before {
2405 content: "\2709";
2405 content: "\2709";
2406 }
2406 }
2407 .glyphicon-pencil:before {
2407 .glyphicon-pencil:before {
2408 content: "\270f";
2408 content: "\270f";
2409 }
2409 }
2410 .glyphicon-glass:before {
2410 .glyphicon-glass:before {
2411 content: "\e001";
2411 content: "\e001";
2412 }
2412 }
2413 .glyphicon-music:before {
2413 .glyphicon-music:before {
2414 content: "\e002";
2414 content: "\e002";
2415 }
2415 }
2416 .glyphicon-search:before {
2416 .glyphicon-search:before {
2417 content: "\e003";
2417 content: "\e003";
2418 }
2418 }
2419 .glyphicon-heart:before {
2419 .glyphicon-heart:before {
2420 content: "\e005";
2420 content: "\e005";
2421 }
2421 }
2422 .glyphicon-star:before {
2422 .glyphicon-star:before {
2423 content: "\e006";
2423 content: "\e006";
2424 }
2424 }
2425 .glyphicon-star-empty:before {
2425 .glyphicon-star-empty:before {
2426 content: "\e007";
2426 content: "\e007";
2427 }
2427 }
2428 .glyphicon-user:before {
2428 .glyphicon-user:before {
2429 content: "\e008";
2429 content: "\e008";
2430 }
2430 }
2431 .glyphicon-film:before {
2431 .glyphicon-film:before {
2432 content: "\e009";
2432 content: "\e009";
2433 }
2433 }
2434 .glyphicon-th-large:before {
2434 .glyphicon-th-large:before {
2435 content: "\e010";
2435 content: "\e010";
2436 }
2436 }
2437 .glyphicon-th:before {
2437 .glyphicon-th:before {
2438 content: "\e011";
2438 content: "\e011";
2439 }
2439 }
2440 .glyphicon-th-list:before {
2440 .glyphicon-th-list:before {
2441 content: "\e012";
2441 content: "\e012";
2442 }
2442 }
2443 .glyphicon-ok:before {
2443 .glyphicon-ok:before {
2444 content: "\e013";
2444 content: "\e013";
2445 }
2445 }
2446 .glyphicon-remove:before {
2446 .glyphicon-remove:before {
2447 content: "\e014";
2447 content: "\e014";
2448 }
2448 }
2449 .glyphicon-zoom-in:before {
2449 .glyphicon-zoom-in:before {
2450 content: "\e015";
2450 content: "\e015";
2451 }
2451 }
2452 .glyphicon-zoom-out:before {
2452 .glyphicon-zoom-out:before {
2453 content: "\e016";
2453 content: "\e016";
2454 }
2454 }
2455 .glyphicon-off:before {
2455 .glyphicon-off:before {
2456 content: "\e017";
2456 content: "\e017";
2457 }
2457 }
2458 .glyphicon-signal:before {
2458 .glyphicon-signal:before {
2459 content: "\e018";
2459 content: "\e018";
2460 }
2460 }
2461 .glyphicon-cog:before {
2461 .glyphicon-cog:before {
2462 content: "\e019";
2462 content: "\e019";
2463 }
2463 }
2464 .glyphicon-trash:before {
2464 .glyphicon-trash:before {
2465 content: "\e020";
2465 content: "\e020";
2466 }
2466 }
2467 .glyphicon-home:before {
2467 .glyphicon-home:before {
2468 content: "\e021";
2468 content: "\e021";
2469 }
2469 }
2470 .glyphicon-file:before {
2470 .glyphicon-file:before {
2471 content: "\e022";
2471 content: "\e022";
2472 }
2472 }
2473 .glyphicon-time:before {
2473 .glyphicon-time:before {
2474 content: "\e023";
2474 content: "\e023";
2475 }
2475 }
2476 .glyphicon-road:before {
2476 .glyphicon-road:before {
2477 content: "\e024";
2477 content: "\e024";
2478 }
2478 }
2479 .glyphicon-download-alt:before {
2479 .glyphicon-download-alt:before {
2480 content: "\e025";
2480 content: "\e025";
2481 }
2481 }
2482 .glyphicon-download:before {
2482 .glyphicon-download:before {
2483 content: "\e026";
2483 content: "\e026";
2484 }
2484 }
2485 .glyphicon-upload:before {
2485 .glyphicon-upload:before {
2486 content: "\e027";
2486 content: "\e027";
2487 }
2487 }
2488 .glyphicon-inbox:before {
2488 .glyphicon-inbox:before {
2489 content: "\e028";
2489 content: "\e028";
2490 }
2490 }
2491 .glyphicon-play-circle:before {
2491 .glyphicon-play-circle:before {
2492 content: "\e029";
2492 content: "\e029";
2493 }
2493 }
2494 .glyphicon-repeat:before {
2494 .glyphicon-repeat:before {
2495 content: "\e030";
2495 content: "\e030";
2496 }
2496 }
2497 .glyphicon-refresh:before {
2497 .glyphicon-refresh:before {
2498 content: "\e031";
2498 content: "\e031";
2499 }
2499 }
2500 .glyphicon-list-alt:before {
2500 .glyphicon-list-alt:before {
2501 content: "\e032";
2501 content: "\e032";
2502 }
2502 }
2503 .glyphicon-lock:before {
2503 .glyphicon-lock:before {
2504 content: "\e033";
2504 content: "\e033";
2505 }
2505 }
2506 .glyphicon-flag:before {
2506 .glyphicon-flag:before {
2507 content: "\e034";
2507 content: "\e034";
2508 }
2508 }
2509 .glyphicon-headphones:before {
2509 .glyphicon-headphones:before {
2510 content: "\e035";
2510 content: "\e035";
2511 }
2511 }
2512 .glyphicon-volume-off:before {
2512 .glyphicon-volume-off:before {
2513 content: "\e036";
2513 content: "\e036";
2514 }
2514 }
2515 .glyphicon-volume-down:before {
2515 .glyphicon-volume-down:before {
2516 content: "\e037";
2516 content: "\e037";
2517 }
2517 }
2518 .glyphicon-volume-up:before {
2518 .glyphicon-volume-up:before {
2519 content: "\e038";
2519 content: "\e038";
2520 }
2520 }
2521 .glyphicon-qrcode:before {
2521 .glyphicon-qrcode:before {
2522 content: "\e039";
2522 content: "\e039";
2523 }
2523 }
2524 .glyphicon-barcode:before {
2524 .glyphicon-barcode:before {
2525 content: "\e040";
2525 content: "\e040";
2526 }
2526 }
2527 .glyphicon-tag:before {
2527 .glyphicon-tag:before {
2528 content: "\e041";
2528 content: "\e041";
2529 }
2529 }
2530 .glyphicon-tags:before {
2530 .glyphicon-tags:before {
2531 content: "\e042";
2531 content: "\e042";
2532 }
2532 }
2533 .glyphicon-book:before {
2533 .glyphicon-book:before {
2534 content: "\e043";
2534 content: "\e043";
2535 }
2535 }
2536 .glyphicon-bookmark:before {
2536 .glyphicon-bookmark:before {
2537 content: "\e044";
2537 content: "\e044";
2538 }
2538 }
2539 .glyphicon-print:before {
2539 .glyphicon-print:before {
2540 content: "\e045";
2540 content: "\e045";
2541 }
2541 }
2542 .glyphicon-camera:before {
2542 .glyphicon-camera:before {
2543 content: "\e046";
2543 content: "\e046";
2544 }
2544 }
2545 .glyphicon-font:before {
2545 .glyphicon-font:before {
2546 content: "\e047";
2546 content: "\e047";
2547 }
2547 }
2548 .glyphicon-bold:before {
2548 .glyphicon-bold:before {
2549 content: "\e048";
2549 content: "\e048";
2550 }
2550 }
2551 .glyphicon-italic:before {
2551 .glyphicon-italic:before {
2552 content: "\e049";
2552 content: "\e049";
2553 }
2553 }
2554 .glyphicon-text-height:before {
2554 .glyphicon-text-height:before {
2555 content: "\e050";
2555 content: "\e050";
2556 }
2556 }
2557 .glyphicon-text-width:before {
2557 .glyphicon-text-width:before {
2558 content: "\e051";
2558 content: "\e051";
2559 }
2559 }
2560 .glyphicon-align-left:before {
2560 .glyphicon-align-left:before {
2561 content: "\e052";
2561 content: "\e052";
2562 }
2562 }
2563 .glyphicon-align-center:before {
2563 .glyphicon-align-center:before {
2564 content: "\e053";
2564 content: "\e053";
2565 }
2565 }
2566 .glyphicon-align-right:before {
2566 .glyphicon-align-right:before {
2567 content: "\e054";
2567 content: "\e054";
2568 }
2568 }
2569 .glyphicon-align-justify:before {
2569 .glyphicon-align-justify:before {
2570 content: "\e055";
2570 content: "\e055";
2571 }
2571 }
2572 .glyphicon-list:before {
2572 .glyphicon-list:before {
2573 content: "\e056";
2573 content: "\e056";
2574 }
2574 }
2575 .glyphicon-indent-left:before {
2575 .glyphicon-indent-left:before {
2576 content: "\e057";
2576 content: "\e057";
2577 }
2577 }
2578 .glyphicon-indent-right:before {
2578 .glyphicon-indent-right:before {
2579 content: "\e058";
2579 content: "\e058";
2580 }
2580 }
2581 .glyphicon-facetime-video:before {
2581 .glyphicon-facetime-video:before {
2582 content: "\e059";
2582 content: "\e059";
2583 }
2583 }
2584 .glyphicon-picture:before {
2584 .glyphicon-picture:before {
2585 content: "\e060";
2585 content: "\e060";
2586 }
2586 }
2587 .glyphicon-map-marker:before {
2587 .glyphicon-map-marker:before {
2588 content: "\e062";
2588 content: "\e062";
2589 }
2589 }
2590 .glyphicon-adjust:before {
2590 .glyphicon-adjust:before {
2591 content: "\e063";
2591 content: "\e063";
2592 }
2592 }
2593 .glyphicon-tint:before {
2593 .glyphicon-tint:before {
2594 content: "\e064";
2594 content: "\e064";
2595 }
2595 }
2596 .glyphicon-edit:before {
2596 .glyphicon-edit:before {
2597 content: "\e065";
2597 content: "\e065";
2598 }
2598 }
2599 .glyphicon-share:before {
2599 .glyphicon-share:before {
2600 content: "\e066";
2600 content: "\e066";
2601 }
2601 }
2602 .glyphicon-check:before {
2602 .glyphicon-check:before {
2603 content: "\e067";
2603 content: "\e067";
2604 }
2604 }
2605 .glyphicon-move:before {
2605 .glyphicon-move:before {
2606 content: "\e068";
2606 content: "\e068";
2607 }
2607 }
2608 .glyphicon-step-backward:before {
2608 .glyphicon-step-backward:before {
2609 content: "\e069";
2609 content: "\e069";
2610 }
2610 }
2611 .glyphicon-fast-backward:before {
2611 .glyphicon-fast-backward:before {
2612 content: "\e070";
2612 content: "\e070";
2613 }
2613 }
2614 .glyphicon-backward:before {
2614 .glyphicon-backward:before {
2615 content: "\e071";
2615 content: "\e071";
2616 }
2616 }
2617 .glyphicon-play:before {
2617 .glyphicon-play:before {
2618 content: "\e072";
2618 content: "\e072";
2619 }
2619 }
2620 .glyphicon-pause:before {
2620 .glyphicon-pause:before {
2621 content: "\e073";
2621 content: "\e073";
2622 }
2622 }
2623 .glyphicon-stop:before {
2623 .glyphicon-stop:before {
2624 content: "\e074";
2624 content: "\e074";
2625 }
2625 }
2626 .glyphicon-forward:before {
2626 .glyphicon-forward:before {
2627 content: "\e075";
2627 content: "\e075";
2628 }
2628 }
2629 .glyphicon-fast-forward:before {
2629 .glyphicon-fast-forward:before {
2630 content: "\e076";
2630 content: "\e076";
2631 }
2631 }
2632 .glyphicon-step-forward:before {
2632 .glyphicon-step-forward:before {
2633 content: "\e077";
2633 content: "\e077";
2634 }
2634 }
2635 .glyphicon-eject:before {
2635 .glyphicon-eject:before {
2636 content: "\e078";
2636 content: "\e078";
2637 }
2637 }
2638 .glyphicon-chevron-left:before {
2638 .glyphicon-chevron-left:before {
2639 content: "\e079";
2639 content: "\e079";
2640 }
2640 }
2641 .glyphicon-chevron-right:before {
2641 .glyphicon-chevron-right:before {
2642 content: "\e080";
2642 content: "\e080";
2643 }
2643 }
2644 .glyphicon-plus-sign:before {
2644 .glyphicon-plus-sign:before {
2645 content: "\e081";
2645 content: "\e081";
2646 }
2646 }
2647 .glyphicon-minus-sign:before {
2647 .glyphicon-minus-sign:before {
2648 content: "\e082";
2648 content: "\e082";
2649 }
2649 }
2650 .glyphicon-remove-sign:before {
2650 .glyphicon-remove-sign:before {
2651 content: "\e083";
2651 content: "\e083";
2652 }
2652 }
2653 .glyphicon-ok-sign:before {
2653 .glyphicon-ok-sign:before {
2654 content: "\e084";
2654 content: "\e084";
2655 }
2655 }
2656 .glyphicon-question-sign:before {
2656 .glyphicon-question-sign:before {
2657 content: "\e085";
2657 content: "\e085";
2658 }
2658 }
2659 .glyphicon-info-sign:before {
2659 .glyphicon-info-sign:before {
2660 content: "\e086";
2660 content: "\e086";
2661 }
2661 }
2662 .glyphicon-screenshot:before {
2662 .glyphicon-screenshot:before {
2663 content: "\e087";
2663 content: "\e087";
2664 }
2664 }
2665 .glyphicon-remove-circle:before {
2665 .glyphicon-remove-circle:before {
2666 content: "\e088";
2666 content: "\e088";
2667 }
2667 }
2668 .glyphicon-ok-circle:before {
2668 .glyphicon-ok-circle:before {
2669 content: "\e089";
2669 content: "\e089";
2670 }
2670 }
2671 .glyphicon-ban-circle:before {
2671 .glyphicon-ban-circle:before {
2672 content: "\e090";
2672 content: "\e090";
2673 }
2673 }
2674 .glyphicon-arrow-left:before {
2674 .glyphicon-arrow-left:before {
2675 content: "\e091";
2675 content: "\e091";
2676 }
2676 }
2677 .glyphicon-arrow-right:before {
2677 .glyphicon-arrow-right:before {
2678 content: "\e092";
2678 content: "\e092";
2679 }
2679 }
2680 .glyphicon-arrow-up:before {
2680 .glyphicon-arrow-up:before {
2681 content: "\e093";
2681 content: "\e093";
2682 }
2682 }
2683 .glyphicon-arrow-down:before {
2683 .glyphicon-arrow-down:before {
2684 content: "\e094";
2684 content: "\e094";
2685 }
2685 }
2686 .glyphicon-share-alt:before {
2686 .glyphicon-share-alt:before {
2687 content: "\e095";
2687 content: "\e095";
2688 }
2688 }
2689 .glyphicon-resize-full:before {
2689 .glyphicon-resize-full:before {
2690 content: "\e096";
2690 content: "\e096";
2691 }
2691 }
2692 .glyphicon-resize-small:before {
2692 .glyphicon-resize-small:before {
2693 content: "\e097";
2693 content: "\e097";
2694 }
2694 }
2695 .glyphicon-exclamation-sign:before {
2695 .glyphicon-exclamation-sign:before {
2696 content: "\e101";
2696 content: "\e101";
2697 }
2697 }
2698 .glyphicon-gift:before {
2698 .glyphicon-gift:before {
2699 content: "\e102";
2699 content: "\e102";
2700 }
2700 }
2701 .glyphicon-leaf:before {
2701 .glyphicon-leaf:before {
2702 content: "\e103";
2702 content: "\e103";
2703 }
2703 }
2704 .glyphicon-fire:before {
2704 .glyphicon-fire:before {
2705 content: "\e104";
2705 content: "\e104";
2706 }
2706 }
2707 .glyphicon-eye-open:before {
2707 .glyphicon-eye-open:before {
2708 content: "\e105";
2708 content: "\e105";
2709 }
2709 }
2710 .glyphicon-eye-close:before {
2710 .glyphicon-eye-close:before {
2711 content: "\e106";
2711 content: "\e106";
2712 }
2712 }
2713 .glyphicon-warning-sign:before {
2713 .glyphicon-warning-sign:before {
2714 content: "\e107";
2714 content: "\e107";
2715 }
2715 }
2716 .glyphicon-plane:before {
2716 .glyphicon-plane:before {
2717 content: "\e108";
2717 content: "\e108";
2718 }
2718 }
2719 .glyphicon-calendar:before {
2719 .glyphicon-calendar:before {
2720 content: "\e109";
2720 content: "\e109";
2721 }
2721 }
2722 .glyphicon-random:before {
2722 .glyphicon-random:before {
2723 content: "\e110";
2723 content: "\e110";
2724 }
2724 }
2725 .glyphicon-comment:before {
2725 .glyphicon-comment:before {
2726 content: "\e111";
2726 content: "\e111";
2727 }
2727 }
2728 .glyphicon-magnet:before {
2728 .glyphicon-magnet:before {
2729 content: "\e112";
2729 content: "\e112";
2730 }
2730 }
2731 .glyphicon-chevron-up:before {
2731 .glyphicon-chevron-up:before {
2732 content: "\e113";
2732 content: "\e113";
2733 }
2733 }
2734 .glyphicon-chevron-down:before {
2734 .glyphicon-chevron-down:before {
2735 content: "\e114";
2735 content: "\e114";
2736 }
2736 }
2737 .glyphicon-retweet:before {
2737 .glyphicon-retweet:before {
2738 content: "\e115";
2738 content: "\e115";
2739 }
2739 }
2740 .glyphicon-shopping-cart:before {
2740 .glyphicon-shopping-cart:before {
2741 content: "\e116";
2741 content: "\e116";
2742 }
2742 }
2743 .glyphicon-folder-close:before {
2743 .glyphicon-folder-close:before {
2744 content: "\e117";
2744 content: "\e117";
2745 }
2745 }
2746 .glyphicon-folder-open:before {
2746 .glyphicon-folder-open:before {
2747 content: "\e118";
2747 content: "\e118";
2748 }
2748 }
2749 .glyphicon-resize-vertical:before {
2749 .glyphicon-resize-vertical:before {
2750 content: "\e119";
2750 content: "\e119";
2751 }
2751 }
2752 .glyphicon-resize-horizontal:before {
2752 .glyphicon-resize-horizontal:before {
2753 content: "\e120";
2753 content: "\e120";
2754 }
2754 }
2755 .glyphicon-hdd:before {
2755 .glyphicon-hdd:before {
2756 content: "\e121";
2756 content: "\e121";
2757 }
2757 }
2758 .glyphicon-bullhorn:before {
2758 .glyphicon-bullhorn:before {
2759 content: "\e122";
2759 content: "\e122";
2760 }
2760 }
2761 .glyphicon-bell:before {
2761 .glyphicon-bell:before {
2762 content: "\e123";
2762 content: "\e123";
2763 }
2763 }
2764 .glyphicon-certificate:before {
2764 .glyphicon-certificate:before {
2765 content: "\e124";
2765 content: "\e124";
2766 }
2766 }
2767 .glyphicon-thumbs-up:before {
2767 .glyphicon-thumbs-up:before {
2768 content: "\e125";
2768 content: "\e125";
2769 }
2769 }
2770 .glyphicon-thumbs-down:before {
2770 .glyphicon-thumbs-down:before {
2771 content: "\e126";
2771 content: "\e126";
2772 }
2772 }
2773 .glyphicon-hand-right:before {
2773 .glyphicon-hand-right:before {
2774 content: "\e127";
2774 content: "\e127";
2775 }
2775 }
2776 .glyphicon-hand-left:before {
2776 .glyphicon-hand-left:before {
2777 content: "\e128";
2777 content: "\e128";
2778 }
2778 }
2779 .glyphicon-hand-up:before {
2779 .glyphicon-hand-up:before {
2780 content: "\e129";
2780 content: "\e129";
2781 }
2781 }
2782 .glyphicon-hand-down:before {
2782 .glyphicon-hand-down:before {
2783 content: "\e130";
2783 content: "\e130";
2784 }
2784 }
2785 .glyphicon-circle-arrow-right:before {
2785 .glyphicon-circle-arrow-right:before {
2786 content: "\e131";
2786 content: "\e131";
2787 }
2787 }
2788 .glyphicon-circle-arrow-left:before {
2788 .glyphicon-circle-arrow-left:before {
2789 content: "\e132";
2789 content: "\e132";
2790 }
2790 }
2791 .glyphicon-circle-arrow-up:before {
2791 .glyphicon-circle-arrow-up:before {
2792 content: "\e133";
2792 content: "\e133";
2793 }
2793 }
2794 .glyphicon-circle-arrow-down:before {
2794 .glyphicon-circle-arrow-down:before {
2795 content: "\e134";
2795 content: "\e134";
2796 }
2796 }
2797 .glyphicon-globe:before {
2797 .glyphicon-globe:before {
2798 content: "\e135";
2798 content: "\e135";
2799 }
2799 }
2800 .glyphicon-wrench:before {
2800 .glyphicon-wrench:before {
2801 content: "\e136";
2801 content: "\e136";
2802 }
2802 }
2803 .glyphicon-tasks:before {
2803 .glyphicon-tasks:before {
2804 content: "\e137";
2804 content: "\e137";
2805 }
2805 }
2806 .glyphicon-filter:before {
2806 .glyphicon-filter:before {
2807 content: "\e138";
2807 content: "\e138";
2808 }
2808 }
2809 .glyphicon-briefcase:before {
2809 .glyphicon-briefcase:before {
2810 content: "\e139";
2810 content: "\e139";
2811 }
2811 }
2812 .glyphicon-fullscreen:before {
2812 .glyphicon-fullscreen:before {
2813 content: "\e140";
2813 content: "\e140";
2814 }
2814 }
2815 .glyphicon-dashboard:before {
2815 .glyphicon-dashboard:before {
2816 content: "\e141";
2816 content: "\e141";
2817 }
2817 }
2818 .glyphicon-paperclip:before {
2818 .glyphicon-paperclip:before {
2819 content: "\e142";
2819 content: "\e142";
2820 }
2820 }
2821 .glyphicon-heart-empty:before {
2821 .glyphicon-heart-empty:before {
2822 content: "\e143";
2822 content: "\e143";
2823 }
2823 }
2824 .glyphicon-link:before {
2824 .glyphicon-link:before {
2825 content: "\e144";
2825 content: "\e144";
2826 }
2826 }
2827 .glyphicon-phone:before {
2827 .glyphicon-phone:before {
2828 content: "\e145";
2828 content: "\e145";
2829 }
2829 }
2830 .glyphicon-pushpin:before {
2830 .glyphicon-pushpin:before {
2831 content: "\e146";
2831 content: "\e146";
2832 }
2832 }
2833 .glyphicon-usd:before {
2833 .glyphicon-usd:before {
2834 content: "\e148";
2834 content: "\e148";
2835 }
2835 }
2836 .glyphicon-gbp:before {
2836 .glyphicon-gbp:before {
2837 content: "\e149";
2837 content: "\e149";
2838 }
2838 }
2839 .glyphicon-sort:before {
2839 .glyphicon-sort:before {
2840 content: "\e150";
2840 content: "\e150";
2841 }
2841 }
2842 .glyphicon-sort-by-alphabet:before {
2842 .glyphicon-sort-by-alphabet:before {
2843 content: "\e151";
2843 content: "\e151";
2844 }
2844 }
2845 .glyphicon-sort-by-alphabet-alt:before {
2845 .glyphicon-sort-by-alphabet-alt:before {
2846 content: "\e152";
2846 content: "\e152";
2847 }
2847 }
2848 .glyphicon-sort-by-order:before {
2848 .glyphicon-sort-by-order:before {
2849 content: "\e153";
2849 content: "\e153";
2850 }
2850 }
2851 .glyphicon-sort-by-order-alt:before {
2851 .glyphicon-sort-by-order-alt:before {
2852 content: "\e154";
2852 content: "\e154";
2853 }
2853 }
2854 .glyphicon-sort-by-attributes:before {
2854 .glyphicon-sort-by-attributes:before {
2855 content: "\e155";
2855 content: "\e155";
2856 }
2856 }
2857 .glyphicon-sort-by-attributes-alt:before {
2857 .glyphicon-sort-by-attributes-alt:before {
2858 content: "\e156";
2858 content: "\e156";
2859 }
2859 }
2860 .glyphicon-unchecked:before {
2860 .glyphicon-unchecked:before {
2861 content: "\e157";
2861 content: "\e157";
2862 }
2862 }
2863 .glyphicon-expand:before {
2863 .glyphicon-expand:before {
2864 content: "\e158";
2864 content: "\e158";
2865 }
2865 }
2866 .glyphicon-collapse-down:before {
2866 .glyphicon-collapse-down:before {
2867 content: "\e159";
2867 content: "\e159";
2868 }
2868 }
2869 .glyphicon-collapse-up:before {
2869 .glyphicon-collapse-up:before {
2870 content: "\e160";
2870 content: "\e160";
2871 }
2871 }
2872 .glyphicon-log-in:before {
2872 .glyphicon-log-in:before {
2873 content: "\e161";
2873 content: "\e161";
2874 }
2874 }
2875 .glyphicon-flash:before {
2875 .glyphicon-flash:before {
2876 content: "\e162";
2876 content: "\e162";
2877 }
2877 }
2878 .glyphicon-log-out:before {
2878 .glyphicon-log-out:before {
2879 content: "\e163";
2879 content: "\e163";
2880 }
2880 }
2881 .glyphicon-new-window:before {
2881 .glyphicon-new-window:before {
2882 content: "\e164";
2882 content: "\e164";
2883 }
2883 }
2884 .glyphicon-record:before {
2884 .glyphicon-record:before {
2885 content: "\e165";
2885 content: "\e165";
2886 }
2886 }
2887 .glyphicon-save:before {
2887 .glyphicon-save:before {
2888 content: "\e166";
2888 content: "\e166";
2889 }
2889 }
2890 .glyphicon-open:before {
2890 .glyphicon-open:before {
2891 content: "\e167";
2891 content: "\e167";
2892 }
2892 }
2893 .glyphicon-saved:before {
2893 .glyphicon-saved:before {
2894 content: "\e168";
2894 content: "\e168";
2895 }
2895 }
2896 .glyphicon-import:before {
2896 .glyphicon-import:before {
2897 content: "\e169";
2897 content: "\e169";
2898 }
2898 }
2899 .glyphicon-export:before {
2899 .glyphicon-export:before {
2900 content: "\e170";
2900 content: "\e170";
2901 }
2901 }
2902 .glyphicon-send:before {
2902 .glyphicon-send:before {
2903 content: "\e171";
2903 content: "\e171";
2904 }
2904 }
2905 .glyphicon-floppy-disk:before {
2905 .glyphicon-floppy-disk:before {
2906 content: "\e172";
2906 content: "\e172";
2907 }
2907 }
2908 .glyphicon-floppy-saved:before {
2908 .glyphicon-floppy-saved:before {
2909 content: "\e173";
2909 content: "\e173";
2910 }
2910 }
2911 .glyphicon-floppy-remove:before {
2911 .glyphicon-floppy-remove:before {
2912 content: "\e174";
2912 content: "\e174";
2913 }
2913 }
2914 .glyphicon-floppy-save:before {
2914 .glyphicon-floppy-save:before {
2915 content: "\e175";
2915 content: "\e175";
2916 }
2916 }
2917 .glyphicon-floppy-open:before {
2917 .glyphicon-floppy-open:before {
2918 content: "\e176";
2918 content: "\e176";
2919 }
2919 }
2920 .glyphicon-credit-card:before {
2920 .glyphicon-credit-card:before {
2921 content: "\e177";
2921 content: "\e177";
2922 }
2922 }
2923 .glyphicon-transfer:before {
2923 .glyphicon-transfer:before {
2924 content: "\e178";
2924 content: "\e178";
2925 }
2925 }
2926 .glyphicon-cutlery:before {
2926 .glyphicon-cutlery:before {
2927 content: "\e179";
2927 content: "\e179";
2928 }
2928 }
2929 .glyphicon-header:before {
2929 .glyphicon-header:before {
2930 content: "\e180";
2930 content: "\e180";
2931 }
2931 }
2932 .glyphicon-compressed:before {
2932 .glyphicon-compressed:before {
2933 content: "\e181";
2933 content: "\e181";
2934 }
2934 }
2935 .glyphicon-earphone:before {
2935 .glyphicon-earphone:before {
2936 content: "\e182";
2936 content: "\e182";
2937 }
2937 }
2938 .glyphicon-phone-alt:before {
2938 .glyphicon-phone-alt:before {
2939 content: "\e183";
2939 content: "\e183";
2940 }
2940 }
2941 .glyphicon-tower:before {
2941 .glyphicon-tower:before {
2942 content: "\e184";
2942 content: "\e184";
2943 }
2943 }
2944 .glyphicon-stats:before {
2944 .glyphicon-stats:before {
2945 content: "\e185";
2945 content: "\e185";
2946 }
2946 }
2947 .glyphicon-sd-video:before {
2947 .glyphicon-sd-video:before {
2948 content: "\e186";
2948 content: "\e186";
2949 }
2949 }
2950 .glyphicon-hd-video:before {
2950 .glyphicon-hd-video:before {
2951 content: "\e187";
2951 content: "\e187";
2952 }
2952 }
2953 .glyphicon-subtitles:before {
2953 .glyphicon-subtitles:before {
2954 content: "\e188";
2954 content: "\e188";
2955 }
2955 }
2956 .glyphicon-sound-stereo:before {
2956 .glyphicon-sound-stereo:before {
2957 content: "\e189";
2957 content: "\e189";
2958 }
2958 }
2959 .glyphicon-sound-dolby:before {
2959 .glyphicon-sound-dolby:before {
2960 content: "\e190";
2960 content: "\e190";
2961 }
2961 }
2962 .glyphicon-sound-5-1:before {
2962 .glyphicon-sound-5-1:before {
2963 content: "\e191";
2963 content: "\e191";
2964 }
2964 }
2965 .glyphicon-sound-6-1:before {
2965 .glyphicon-sound-6-1:before {
2966 content: "\e192";
2966 content: "\e192";
2967 }
2967 }
2968 .glyphicon-sound-7-1:before {
2968 .glyphicon-sound-7-1:before {
2969 content: "\e193";
2969 content: "\e193";
2970 }
2970 }
2971 .glyphicon-copyright-mark:before {
2971 .glyphicon-copyright-mark:before {
2972 content: "\e194";
2972 content: "\e194";
2973 }
2973 }
2974 .glyphicon-registration-mark:before {
2974 .glyphicon-registration-mark:before {
2975 content: "\e195";
2975 content: "\e195";
2976 }
2976 }
2977 .glyphicon-cloud-download:before {
2977 .glyphicon-cloud-download:before {
2978 content: "\e197";
2978 content: "\e197";
2979 }
2979 }
2980 .glyphicon-cloud-upload:before {
2980 .glyphicon-cloud-upload:before {
2981 content: "\e198";
2981 content: "\e198";
2982 }
2982 }
2983 .glyphicon-tree-conifer:before {
2983 .glyphicon-tree-conifer:before {
2984 content: "\e199";
2984 content: "\e199";
2985 }
2985 }
2986 .glyphicon-tree-deciduous:before {
2986 .glyphicon-tree-deciduous:before {
2987 content: "\e200";
2987 content: "\e200";
2988 }
2988 }
2989 .caret {
2989 .caret {
2990 display: inline-block;
2990 display: inline-block;
2991 width: 0;
2991 width: 0;
2992 height: 0;
2992 height: 0;
2993 margin-left: 2px;
2993 margin-left: 2px;
2994 vertical-align: middle;
2994 vertical-align: middle;
2995 border-top: 4px solid;
2995 border-top: 4px solid;
2996 border-right: 4px solid transparent;
2996 border-right: 4px solid transparent;
2997 border-left: 4px solid transparent;
2997 border-left: 4px solid transparent;
2998 }
2998 }
2999 .dropdown {
2999 .dropdown {
3000 position: relative;
3000 position: relative;
3001 }
3001 }
3002 .dropdown-toggle:focus {
3002 .dropdown-toggle:focus {
3003 outline: 0;
3003 outline: 0;
3004 }
3004 }
3005 .dropdown-menu {
3005 .dropdown-menu {
3006 position: absolute;
3006 position: absolute;
3007 top: 100%;
3007 top: 100%;
3008 left: 0;
3008 left: 0;
3009 z-index: 1000;
3009 z-index: 1000;
3010 display: none;
3010 display: none;
3011 float: left;
3011 float: left;
3012 min-width: 160px;
3012 min-width: 160px;
3013 padding: 5px 0;
3013 padding: 5px 0;
3014 margin: 2px 0 0;
3014 margin: 2px 0 0;
3015 list-style: none;
3015 list-style: none;
3016 font-size: 13px;
3016 font-size: 13px;
3017 background-color: #ffffff;
3017 background-color: #ffffff;
3018 border: 1px solid #cccccc;
3018 border: 1px solid #cccccc;
3019 border: 1px solid rgba(0, 0, 0, 0.15);
3019 border: 1px solid rgba(0, 0, 0, 0.15);
3020 border-radius: 4px;
3020 border-radius: 4px;
3021 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3021 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3022 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3022 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3023 background-clip: padding-box;
3023 background-clip: padding-box;
3024 }
3024 }
3025 .dropdown-menu.pull-right {
3025 .dropdown-menu.pull-right {
3026 right: 0;
3026 right: 0;
3027 left: auto;
3027 left: auto;
3028 }
3028 }
3029 .dropdown-menu .divider {
3029 .dropdown-menu .divider {
3030 height: 1px;
3030 height: 1px;
3031 margin: 8px 0;
3031 margin: 8px 0;
3032 overflow: hidden;
3032 overflow: hidden;
3033 background-color: #e5e5e5;
3033 background-color: #e5e5e5;
3034 }
3034 }
3035 .dropdown-menu > li > a {
3035 .dropdown-menu > li > a {
3036 display: block;
3036 display: block;
3037 padding: 3px 20px;
3037 padding: 3px 20px;
3038 clear: both;
3038 clear: both;
3039 font-weight: normal;
3039 font-weight: normal;
3040 line-height: 1.42857143;
3040 line-height: 1.42857143;
3041 color: #333333;
3041 color: #333333;
3042 white-space: nowrap;
3042 white-space: nowrap;
3043 }
3043 }
3044 .dropdown-menu > li > a:hover,
3044 .dropdown-menu > li > a:hover,
3045 .dropdown-menu > li > a:focus {
3045 .dropdown-menu > li > a:focus {
3046 text-decoration: none;
3046 text-decoration: none;
3047 color: #262626;
3047 color: #262626;
3048 background-color: #f5f5f5;
3048 background-color: #f5f5f5;
3049 }
3049 }
3050 .dropdown-menu > .active > a,
3050 .dropdown-menu > .active > a,
3051 .dropdown-menu > .active > a:hover,
3051 .dropdown-menu > .active > a:hover,
3052 .dropdown-menu > .active > a:focus {
3052 .dropdown-menu > .active > a:focus {
3053 color: #ffffff;
3053 color: #ffffff;
3054 text-decoration: none;
3054 text-decoration: none;
3055 outline: 0;
3055 outline: 0;
3056 background-color: #428bca;
3056 background-color: #428bca;
3057 }
3057 }
3058 .dropdown-menu > .disabled > a,
3058 .dropdown-menu > .disabled > a,
3059 .dropdown-menu > .disabled > a:hover,
3059 .dropdown-menu > .disabled > a:hover,
3060 .dropdown-menu > .disabled > a:focus {
3060 .dropdown-menu > .disabled > a:focus {
3061 color: #999999;
3061 color: #999999;
3062 }
3062 }
3063 .dropdown-menu > .disabled > a:hover,
3063 .dropdown-menu > .disabled > a:hover,
3064 .dropdown-menu > .disabled > a:focus {
3064 .dropdown-menu > .disabled > a:focus {
3065 text-decoration: none;
3065 text-decoration: none;
3066 background-color: transparent;
3066 background-color: transparent;
3067 background-image: none;
3067 background-image: none;
3068 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3068 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3069 cursor: not-allowed;
3069 cursor: not-allowed;
3070 }
3070 }
3071 .open > .dropdown-menu {
3071 .open > .dropdown-menu {
3072 display: block;
3072 display: block;
3073 }
3073 }
3074 .open > a {
3074 .open > a {
3075 outline: 0;
3075 outline: 0;
3076 }
3076 }
3077 .dropdown-menu-right {
3077 .dropdown-menu-right {
3078 left: auto;
3078 left: auto;
3079 right: 0;
3079 right: 0;
3080 }
3080 }
3081 .dropdown-menu-left {
3081 .dropdown-menu-left {
3082 left: 0;
3082 left: 0;
3083 right: auto;
3083 right: auto;
3084 }
3084 }
3085 .dropdown-header {
3085 .dropdown-header {
3086 display: block;
3086 display: block;
3087 padding: 3px 20px;
3087 padding: 3px 20px;
3088 font-size: 12px;
3088 font-size: 12px;
3089 line-height: 1.42857143;
3089 line-height: 1.42857143;
3090 color: #999999;
3090 color: #999999;
3091 }
3091 }
3092 .dropdown-backdrop {
3092 .dropdown-backdrop {
3093 position: fixed;
3093 position: fixed;
3094 left: 0;
3094 left: 0;
3095 right: 0;
3095 right: 0;
3096 bottom: 0;
3096 bottom: 0;
3097 top: 0;
3097 top: 0;
3098 z-index: 990;
3098 z-index: 990;
3099 }
3099 }
3100 .pull-right > .dropdown-menu {
3100 .pull-right > .dropdown-menu {
3101 right: 0;
3101 right: 0;
3102 left: auto;
3102 left: auto;
3103 }
3103 }
3104 .dropup .caret,
3104 .dropup .caret,
3105 .navbar-fixed-bottom .dropdown .caret {
3105 .navbar-fixed-bottom .dropdown .caret {
3106 border-top: 0;
3106 border-top: 0;
3107 border-bottom: 4px solid;
3107 border-bottom: 4px solid;
3108 content: "";
3108 content: "";
3109 }
3109 }
3110 .dropup .dropdown-menu,
3110 .dropup .dropdown-menu,
3111 .navbar-fixed-bottom .dropdown .dropdown-menu {
3111 .navbar-fixed-bottom .dropdown .dropdown-menu {
3112 top: auto;
3112 top: auto;
3113 bottom: 100%;
3113 bottom: 100%;
3114 margin-bottom: 1px;
3114 margin-bottom: 1px;
3115 }
3115 }
3116 @media (min-width: 540px) {
3116 @media (min-width: 540px) {
3117 .navbar-right .dropdown-menu {
3117 .navbar-right .dropdown-menu {
3118 left: auto;
3118 left: auto;
3119 right: 0;
3119 right: 0;
3120 }
3120 }
3121 .navbar-right .dropdown-menu-left {
3121 .navbar-right .dropdown-menu-left {
3122 left: 0;
3122 left: 0;
3123 right: auto;
3123 right: auto;
3124 }
3124 }
3125 }
3125 }
3126 .btn-group,
3126 .btn-group,
3127 .btn-group-vertical {
3127 .btn-group-vertical {
3128 position: relative;
3128 position: relative;
3129 display: inline-block;
3129 display: inline-block;
3130 vertical-align: middle;
3130 vertical-align: middle;
3131 }
3131 }
3132 .btn-group > .btn,
3132 .btn-group > .btn,
3133 .btn-group-vertical > .btn {
3133 .btn-group-vertical > .btn {
3134 position: relative;
3134 position: relative;
3135 float: left;
3135 float: left;
3136 }
3136 }
3137 .btn-group > .btn:hover,
3137 .btn-group > .btn:hover,
3138 .btn-group-vertical > .btn:hover,
3138 .btn-group-vertical > .btn:hover,
3139 .btn-group > .btn:focus,
3139 .btn-group > .btn:focus,
3140 .btn-group-vertical > .btn:focus,
3140 .btn-group-vertical > .btn:focus,
3141 .btn-group > .btn:active,
3141 .btn-group > .btn:active,
3142 .btn-group-vertical > .btn:active,
3142 .btn-group-vertical > .btn:active,
3143 .btn-group > .btn.active,
3143 .btn-group > .btn.active,
3144 .btn-group-vertical > .btn.active {
3144 .btn-group-vertical > .btn.active {
3145 z-index: 2;
3145 z-index: 2;
3146 }
3146 }
3147 .btn-group > .btn:focus,
3147 .btn-group > .btn:focus,
3148 .btn-group-vertical > .btn:focus {
3148 .btn-group-vertical > .btn:focus {
3149 outline: none;
3149 outline: none;
3150 }
3150 }
3151 .btn-group .btn + .btn,
3151 .btn-group .btn + .btn,
3152 .btn-group .btn + .btn-group,
3152 .btn-group .btn + .btn-group,
3153 .btn-group .btn-group + .btn,
3153 .btn-group .btn-group + .btn,
3154 .btn-group .btn-group + .btn-group {
3154 .btn-group .btn-group + .btn-group {
3155 margin-left: -1px;
3155 margin-left: -1px;
3156 }
3156 }
3157 .btn-toolbar {
3157 .btn-toolbar {
3158 margin-left: -5px;
3158 margin-left: -5px;
3159 }
3159 }
3160 .btn-toolbar .btn-group,
3160 .btn-toolbar .btn-group,
3161 .btn-toolbar .input-group {
3161 .btn-toolbar .input-group {
3162 float: left;
3162 float: left;
3163 }
3163 }
3164 .btn-toolbar > .btn,
3164 .btn-toolbar > .btn,
3165 .btn-toolbar > .btn-group,
3165 .btn-toolbar > .btn-group,
3166 .btn-toolbar > .input-group {
3166 .btn-toolbar > .input-group {
3167 margin-left: 5px;
3167 margin-left: 5px;
3168 }
3168 }
3169 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3169 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3170 border-radius: 0;
3170 border-radius: 0;
3171 }
3171 }
3172 .btn-group > .btn:first-child {
3172 .btn-group > .btn:first-child {
3173 margin-left: 0;
3173 margin-left: 0;
3174 }
3174 }
3175 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3175 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3176 border-bottom-right-radius: 0;
3176 border-bottom-right-radius: 0;
3177 border-top-right-radius: 0;
3177 border-top-right-radius: 0;
3178 }
3178 }
3179 .btn-group > .btn:last-child:not(:first-child),
3179 .btn-group > .btn:last-child:not(:first-child),
3180 .btn-group > .dropdown-toggle:not(:first-child) {
3180 .btn-group > .dropdown-toggle:not(:first-child) {
3181 border-bottom-left-radius: 0;
3181 border-bottom-left-radius: 0;
3182 border-top-left-radius: 0;
3182 border-top-left-radius: 0;
3183 }
3183 }
3184 .btn-group > .btn-group {
3184 .btn-group > .btn-group {
3185 float: left;
3185 float: left;
3186 }
3186 }
3187 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3187 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3188 border-radius: 0;
3188 border-radius: 0;
3189 }
3189 }
3190 .btn-group > .btn-group:first-child > .btn:last-child,
3190 .btn-group > .btn-group:first-child > .btn:last-child,
3191 .btn-group > .btn-group:first-child > .dropdown-toggle {
3191 .btn-group > .btn-group:first-child > .dropdown-toggle {
3192 border-bottom-right-radius: 0;
3192 border-bottom-right-radius: 0;
3193 border-top-right-radius: 0;
3193 border-top-right-radius: 0;
3194 }
3194 }
3195 .btn-group > .btn-group:last-child > .btn:first-child {
3195 .btn-group > .btn-group:last-child > .btn:first-child {
3196 border-bottom-left-radius: 0;
3196 border-bottom-left-radius: 0;
3197 border-top-left-radius: 0;
3197 border-top-left-radius: 0;
3198 }
3198 }
3199 .btn-group .dropdown-toggle:active,
3199 .btn-group .dropdown-toggle:active,
3200 .btn-group.open .dropdown-toggle {
3200 .btn-group.open .dropdown-toggle {
3201 outline: 0;
3201 outline: 0;
3202 }
3202 }
3203 .btn-group > .btn + .dropdown-toggle {
3203 .btn-group > .btn + .dropdown-toggle {
3204 padding-left: 8px;
3204 padding-left: 8px;
3205 padding-right: 8px;
3205 padding-right: 8px;
3206 }
3206 }
3207 .btn-group > .btn-lg + .dropdown-toggle {
3207 .btn-group > .btn-lg + .dropdown-toggle {
3208 padding-left: 12px;
3208 padding-left: 12px;
3209 padding-right: 12px;
3209 padding-right: 12px;
3210 }
3210 }
3211 .btn-group.open .dropdown-toggle {
3211 .btn-group.open .dropdown-toggle {
3212 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3212 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3213 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3213 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3214 }
3214 }
3215 .btn-group.open .dropdown-toggle.btn-link {
3215 .btn-group.open .dropdown-toggle.btn-link {
3216 -webkit-box-shadow: none;
3216 -webkit-box-shadow: none;
3217 box-shadow: none;
3217 box-shadow: none;
3218 }
3218 }
3219 .btn .caret {
3219 .btn .caret {
3220 margin-left: 0;
3220 margin-left: 0;
3221 }
3221 }
3222 .btn-lg .caret {
3222 .btn-lg .caret {
3223 border-width: 5px 5px 0;
3223 border-width: 5px 5px 0;
3224 border-bottom-width: 0;
3224 border-bottom-width: 0;
3225 }
3225 }
3226 .dropup .btn-lg .caret {
3226 .dropup .btn-lg .caret {
3227 border-width: 0 5px 5px;
3227 border-width: 0 5px 5px;
3228 }
3228 }
3229 .btn-group-vertical > .btn,
3229 .btn-group-vertical > .btn,
3230 .btn-group-vertical > .btn-group,
3230 .btn-group-vertical > .btn-group,
3231 .btn-group-vertical > .btn-group > .btn {
3231 .btn-group-vertical > .btn-group > .btn {
3232 display: block;
3232 display: block;
3233 float: none;
3233 float: none;
3234 width: 100%;
3234 width: 100%;
3235 max-width: 100%;
3235 max-width: 100%;
3236 }
3236 }
3237 .btn-group-vertical > .btn-group > .btn {
3237 .btn-group-vertical > .btn-group > .btn {
3238 float: none;
3238 float: none;
3239 }
3239 }
3240 .btn-group-vertical > .btn + .btn,
3240 .btn-group-vertical > .btn + .btn,
3241 .btn-group-vertical > .btn + .btn-group,
3241 .btn-group-vertical > .btn + .btn-group,
3242 .btn-group-vertical > .btn-group + .btn,
3242 .btn-group-vertical > .btn-group + .btn,
3243 .btn-group-vertical > .btn-group + .btn-group {
3243 .btn-group-vertical > .btn-group + .btn-group {
3244 margin-top: -1px;
3244 margin-top: -1px;
3245 margin-left: 0;
3245 margin-left: 0;
3246 }
3246 }
3247 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3247 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3248 border-radius: 0;
3248 border-radius: 0;
3249 }
3249 }
3250 .btn-group-vertical > .btn:first-child:not(:last-child) {
3250 .btn-group-vertical > .btn:first-child:not(:last-child) {
3251 border-top-right-radius: 4px;
3251 border-top-right-radius: 4px;
3252 border-bottom-right-radius: 0;
3252 border-bottom-right-radius: 0;
3253 border-bottom-left-radius: 0;
3253 border-bottom-left-radius: 0;
3254 }
3254 }
3255 .btn-group-vertical > .btn:last-child:not(:first-child) {
3255 .btn-group-vertical > .btn:last-child:not(:first-child) {
3256 border-bottom-left-radius: 4px;
3256 border-bottom-left-radius: 4px;
3257 border-top-right-radius: 0;
3257 border-top-right-radius: 0;
3258 border-top-left-radius: 0;
3258 border-top-left-radius: 0;
3259 }
3259 }
3260 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3260 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3261 border-radius: 0;
3261 border-radius: 0;
3262 }
3262 }
3263 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3263 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3264 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3264 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3265 border-bottom-right-radius: 0;
3265 border-bottom-right-radius: 0;
3266 border-bottom-left-radius: 0;
3266 border-bottom-left-radius: 0;
3267 }
3267 }
3268 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3268 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3269 border-top-right-radius: 0;
3269 border-top-right-radius: 0;
3270 border-top-left-radius: 0;
3270 border-top-left-radius: 0;
3271 }
3271 }
3272 .btn-group-justified {
3272 .btn-group-justified {
3273 display: table;
3273 display: table;
3274 width: 100%;
3274 width: 100%;
3275 table-layout: fixed;
3275 table-layout: fixed;
3276 border-collapse: separate;
3276 border-collapse: separate;
3277 }
3277 }
3278 .btn-group-justified > .btn,
3278 .btn-group-justified > .btn,
3279 .btn-group-justified > .btn-group {
3279 .btn-group-justified > .btn-group {
3280 float: none;
3280 float: none;
3281 display: table-cell;
3281 display: table-cell;
3282 width: 1%;
3282 width: 1%;
3283 }
3283 }
3284 .btn-group-justified > .btn-group .btn {
3284 .btn-group-justified > .btn-group .btn {
3285 width: 100%;
3285 width: 100%;
3286 }
3286 }
3287 [data-toggle="buttons"] > .btn > input[type="radio"],
3287 [data-toggle="buttons"] > .btn > input[type="radio"],
3288 [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3288 [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3289 display: none;
3289 display: none;
3290 }
3290 }
3291 .input-group {
3291 .input-group {
3292 position: relative;
3292 position: relative;
3293 display: table;
3293 display: table;
3294 border-collapse: separate;
3294 border-collapse: separate;
3295 }
3295 }
3296 .input-group[class*="col-"] {
3296 .input-group[class*="col-"] {
3297 float: none;
3297 float: none;
3298 padding-left: 0;
3298 padding-left: 0;
3299 padding-right: 0;
3299 padding-right: 0;
3300 }
3300 }
3301 .input-group .form-control {
3301 .input-group .form-control {
3302 position: relative;
3302 position: relative;
3303 z-index: 2;
3303 z-index: 2;
3304 float: left;
3304 float: left;
3305 width: 100%;
3305 width: 100%;
3306 margin-bottom: 0;
3306 margin-bottom: 0;
3307 }
3307 }
3308 .input-group-lg > .form-control,
3308 .input-group-lg > .form-control,
3309 .input-group-lg > .input-group-addon,
3309 .input-group-lg > .input-group-addon,
3310 .input-group-lg > .input-group-btn > .btn {
3310 .input-group-lg > .input-group-btn > .btn {
3311 height: 45px;
3311 height: 45px;
3312 padding: 10px 16px;
3312 padding: 10px 16px;
3313 font-size: 17px;
3313 font-size: 17px;
3314 line-height: 1.33;
3314 line-height: 1.33;
3315 border-radius: 6px;
3315 border-radius: 6px;
3316 }
3316 }
3317 select.input-group-lg > .form-control,
3317 select.input-group-lg > .form-control,
3318 select.input-group-lg > .input-group-addon,
3318 select.input-group-lg > .input-group-addon,
3319 select.input-group-lg > .input-group-btn > .btn {
3319 select.input-group-lg > .input-group-btn > .btn {
3320 height: 45px;
3320 height: 45px;
3321 line-height: 45px;
3321 line-height: 45px;
3322 }
3322 }
3323 textarea.input-group-lg > .form-control,
3323 textarea.input-group-lg > .form-control,
3324 textarea.input-group-lg > .input-group-addon,
3324 textarea.input-group-lg > .input-group-addon,
3325 textarea.input-group-lg > .input-group-btn > .btn,
3325 textarea.input-group-lg > .input-group-btn > .btn,
3326 select[multiple].input-group-lg > .form-control,
3326 select[multiple].input-group-lg > .form-control,
3327 select[multiple].input-group-lg > .input-group-addon,
3327 select[multiple].input-group-lg > .input-group-addon,
3328 select[multiple].input-group-lg > .input-group-btn > .btn {
3328 select[multiple].input-group-lg > .input-group-btn > .btn {
3329 height: auto;
3329 height: auto;
3330 }
3330 }
3331 .input-group-sm > .form-control,
3331 .input-group-sm > .form-control,
3332 .input-group-sm > .input-group-addon,
3332 .input-group-sm > .input-group-addon,
3333 .input-group-sm > .input-group-btn > .btn {
3333 .input-group-sm > .input-group-btn > .btn {
3334 height: 30px;
3334 height: 30px;
3335 padding: 5px 10px;
3335 padding: 5px 10px;
3336 font-size: 12px;
3336 font-size: 12px;
3337 line-height: 1.5;
3337 line-height: 1.5;
3338 border-radius: 3px;
3338 border-radius: 3px;
3339 }
3339 }
3340 select.input-group-sm > .form-control,
3340 select.input-group-sm > .form-control,
3341 select.input-group-sm > .input-group-addon,
3341 select.input-group-sm > .input-group-addon,
3342 select.input-group-sm > .input-group-btn > .btn {
3342 select.input-group-sm > .input-group-btn > .btn {
3343 height: 30px;
3343 height: 30px;
3344 line-height: 30px;
3344 line-height: 30px;
3345 }
3345 }
3346 textarea.input-group-sm > .form-control,
3346 textarea.input-group-sm > .form-control,
3347 textarea.input-group-sm > .input-group-addon,
3347 textarea.input-group-sm > .input-group-addon,
3348 textarea.input-group-sm > .input-group-btn > .btn,
3348 textarea.input-group-sm > .input-group-btn > .btn,
3349 select[multiple].input-group-sm > .form-control,
3349 select[multiple].input-group-sm > .form-control,
3350 select[multiple].input-group-sm > .input-group-addon,
3350 select[multiple].input-group-sm > .input-group-addon,
3351 select[multiple].input-group-sm > .input-group-btn > .btn {
3351 select[multiple].input-group-sm > .input-group-btn > .btn {
3352 height: auto;
3352 height: auto;
3353 }
3353 }
3354 .input-group-addon,
3354 .input-group-addon,
3355 .input-group-btn,
3355 .input-group-btn,
3356 .input-group .form-control {
3356 .input-group .form-control {
3357 display: table-cell;
3357 display: table-cell;
3358 }
3358 }
3359 .input-group-addon:not(:first-child):not(:last-child),
3359 .input-group-addon:not(:first-child):not(:last-child),
3360 .input-group-btn:not(:first-child):not(:last-child),
3360 .input-group-btn:not(:first-child):not(:last-child),
3361 .input-group .form-control:not(:first-child):not(:last-child) {
3361 .input-group .form-control:not(:first-child):not(:last-child) {
3362 border-radius: 0;
3362 border-radius: 0;
3363 }
3363 }
3364 .input-group-addon,
3364 .input-group-addon,
3365 .input-group-btn {
3365 .input-group-btn {
3366 width: 1%;
3366 width: 1%;
3367 white-space: nowrap;
3367 white-space: nowrap;
3368 vertical-align: middle;
3368 vertical-align: middle;
3369 }
3369 }
3370 .input-group-addon {
3370 .input-group-addon {
3371 padding: 6px 12px;
3371 padding: 6px 12px;
3372 font-size: 13px;
3372 font-size: 13px;
3373 font-weight: normal;
3373 font-weight: normal;
3374 line-height: 1;
3374 line-height: 1;
3375 color: #555555;
3375 color: #555555;
3376 text-align: center;
3376 text-align: center;
3377 background-color: #eeeeee;
3377 background-color: #eeeeee;
3378 border: 1px solid #cccccc;
3378 border: 1px solid #cccccc;
3379 border-radius: 4px;
3379 border-radius: 4px;
3380 }
3380 }
3381 .input-group-addon.input-sm {
3381 .input-group-addon.input-sm {
3382 padding: 5px 10px;
3382 padding: 5px 10px;
3383 font-size: 12px;
3383 font-size: 12px;
3384 border-radius: 3px;
3384 border-radius: 3px;
3385 }
3385 }
3386 .input-group-addon.input-lg {
3386 .input-group-addon.input-lg {
3387 padding: 10px 16px;
3387 padding: 10px 16px;
3388 font-size: 17px;
3388 font-size: 17px;
3389 border-radius: 6px;
3389 border-radius: 6px;
3390 }
3390 }
3391 .input-group-addon input[type="radio"],
3391 .input-group-addon input[type="radio"],
3392 .input-group-addon input[type="checkbox"] {
3392 .input-group-addon input[type="checkbox"] {
3393 margin-top: 0;
3393 margin-top: 0;
3394 }
3394 }
3395 .input-group .form-control:first-child,
3395 .input-group .form-control:first-child,
3396 .input-group-addon:first-child,
3396 .input-group-addon:first-child,
3397 .input-group-btn:first-child > .btn,
3397 .input-group-btn:first-child > .btn,
3398 .input-group-btn:first-child > .btn-group > .btn,
3398 .input-group-btn:first-child > .btn-group > .btn,
3399 .input-group-btn:first-child > .dropdown-toggle,
3399 .input-group-btn:first-child > .dropdown-toggle,
3400 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3400 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3401 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3401 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3402 border-bottom-right-radius: 0;
3402 border-bottom-right-radius: 0;
3403 border-top-right-radius: 0;
3403 border-top-right-radius: 0;
3404 }
3404 }
3405 .input-group-addon:first-child {
3405 .input-group-addon:first-child {
3406 border-right: 0;
3406 border-right: 0;
3407 }
3407 }
3408 .input-group .form-control:last-child,
3408 .input-group .form-control:last-child,
3409 .input-group-addon:last-child,
3409 .input-group-addon:last-child,
3410 .input-group-btn:last-child > .btn,
3410 .input-group-btn:last-child > .btn,
3411 .input-group-btn:last-child > .btn-group > .btn,
3411 .input-group-btn:last-child > .btn-group > .btn,
3412 .input-group-btn:last-child > .dropdown-toggle,
3412 .input-group-btn:last-child > .dropdown-toggle,
3413 .input-group-btn:first-child > .btn:not(:first-child),
3413 .input-group-btn:first-child > .btn:not(:first-child),
3414 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3414 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3415 border-bottom-left-radius: 0;
3415 border-bottom-left-radius: 0;
3416 border-top-left-radius: 0;
3416 border-top-left-radius: 0;
3417 }
3417 }
3418 .input-group-addon:last-child {
3418 .input-group-addon:last-child {
3419 border-left: 0;
3419 border-left: 0;
3420 }
3420 }
3421 .input-group-btn {
3421 .input-group-btn {
3422 position: relative;
3422 position: relative;
3423 font-size: 0;
3423 font-size: 0;
3424 white-space: nowrap;
3424 white-space: nowrap;
3425 }
3425 }
3426 .input-group-btn > .btn {
3426 .input-group-btn > .btn {
3427 position: relative;
3427 position: relative;
3428 }
3428 }
3429 .input-group-btn > .btn + .btn {
3429 .input-group-btn > .btn + .btn {
3430 margin-left: -1px;
3430 margin-left: -1px;
3431 }
3431 }
3432 .input-group-btn > .btn:hover,
3432 .input-group-btn > .btn:hover,
3433 .input-group-btn > .btn:focus,
3433 .input-group-btn > .btn:focus,
3434 .input-group-btn > .btn:active {
3434 .input-group-btn > .btn:active {
3435 z-index: 2;
3435 z-index: 2;
3436 }
3436 }
3437 .input-group-btn:first-child > .btn,
3437 .input-group-btn:first-child > .btn,
3438 .input-group-btn:first-child > .btn-group {
3438 .input-group-btn:first-child > .btn-group {
3439 margin-right: -1px;
3439 margin-right: -1px;
3440 }
3440 }
3441 .input-group-btn:last-child > .btn,
3441 .input-group-btn:last-child > .btn,
3442 .input-group-btn:last-child > .btn-group {
3442 .input-group-btn:last-child > .btn-group {
3443 margin-left: -1px;
3443 margin-left: -1px;
3444 }
3444 }
3445 .nav {
3445 .nav {
3446 margin-bottom: 0;
3446 margin-bottom: 0;
3447 padding-left: 0;
3447 padding-left: 0;
3448 list-style: none;
3448 list-style: none;
3449 }
3449 }
3450 .nav > li {
3450 .nav > li {
3451 position: relative;
3451 position: relative;
3452 display: block;
3452 display: block;
3453 }
3453 }
3454 .nav > li > a {
3454 .nav > li > a {
3455 position: relative;
3455 position: relative;
3456 display: block;
3456 display: block;
3457 padding: 10px 15px;
3457 padding: 10px 15px;
3458 }
3458 }
3459 .nav > li > a:hover,
3459 .nav > li > a:hover,
3460 .nav > li > a:focus {
3460 .nav > li > a:focus {
3461 text-decoration: none;
3461 text-decoration: none;
3462 background-color: #eeeeee;
3462 background-color: #eeeeee;
3463 }
3463 }
3464 .nav > li.disabled > a {
3464 .nav > li.disabled > a {
3465 color: #999999;
3465 color: #999999;
3466 }
3466 }
3467 .nav > li.disabled > a:hover,
3467 .nav > li.disabled > a:hover,
3468 .nav > li.disabled > a:focus {
3468 .nav > li.disabled > a:focus {
3469 color: #999999;
3469 color: #999999;
3470 text-decoration: none;
3470 text-decoration: none;
3471 background-color: transparent;
3471 background-color: transparent;
3472 cursor: not-allowed;
3472 cursor: not-allowed;
3473 }
3473 }
3474 .nav .open > a,
3474 .nav .open > a,
3475 .nav .open > a:hover,
3475 .nav .open > a:hover,
3476 .nav .open > a:focus {
3476 .nav .open > a:focus {
3477 background-color: #eeeeee;
3477 background-color: #eeeeee;
3478 border-color: #428bca;
3478 border-color: #428bca;
3479 }
3479 }
3480 .nav .nav-divider {
3480 .nav .nav-divider {
3481 height: 1px;
3481 height: 1px;
3482 margin: 8px 0;
3482 margin: 8px 0;
3483 overflow: hidden;
3483 overflow: hidden;
3484 background-color: #e5e5e5;
3484 background-color: #e5e5e5;
3485 }
3485 }
3486 .nav > li > a > img {
3486 .nav > li > a > img {
3487 max-width: none;
3487 max-width: none;
3488 }
3488 }
3489 .nav-tabs {
3489 .nav-tabs {
3490 border-bottom: 1px solid #dddddd;
3490 border-bottom: 1px solid #dddddd;
3491 }
3491 }
3492 .nav-tabs > li {
3492 .nav-tabs > li {
3493 float: left;
3493 float: left;
3494 margin-bottom: -1px;
3494 margin-bottom: -1px;
3495 }
3495 }
3496 .nav-tabs > li > a {
3496 .nav-tabs > li > a {
3497 margin-right: 2px;
3497 margin-right: 2px;
3498 line-height: 1.42857143;
3498 line-height: 1.42857143;
3499 border: 1px solid transparent;
3499 border: 1px solid transparent;
3500 border-radius: 4px 4px 0 0;
3500 border-radius: 4px 4px 0 0;
3501 }
3501 }
3502 .nav-tabs > li > a:hover {
3502 .nav-tabs > li > a:hover {
3503 border-color: #eeeeee #eeeeee #dddddd;
3503 border-color: #eeeeee #eeeeee #dddddd;
3504 }
3504 }
3505 .nav-tabs > li.active > a,
3505 .nav-tabs > li.active > a,
3506 .nav-tabs > li.active > a:hover,
3506 .nav-tabs > li.active > a:hover,
3507 .nav-tabs > li.active > a:focus {
3507 .nav-tabs > li.active > a:focus {
3508 color: #555555;
3508 color: #555555;
3509 background-color: #ffffff;
3509 background-color: #ffffff;
3510 border: 1px solid #dddddd;
3510 border: 1px solid #dddddd;
3511 border-bottom-color: transparent;
3511 border-bottom-color: transparent;
3512 cursor: default;
3512 cursor: default;
3513 }
3513 }
3514 .nav-tabs.nav-justified {
3514 .nav-tabs.nav-justified {
3515 width: 100%;
3515 width: 100%;
3516 border-bottom: 0;
3516 border-bottom: 0;
3517 }
3517 }
3518 .nav-tabs.nav-justified > li {
3518 .nav-tabs.nav-justified > li {
3519 float: none;
3519 float: none;
3520 }
3520 }
3521 .nav-tabs.nav-justified > li > a {
3521 .nav-tabs.nav-justified > li > a {
3522 text-align: center;
3522 text-align: center;
3523 margin-bottom: 5px;
3523 margin-bottom: 5px;
3524 }
3524 }
3525 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3525 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3526 top: auto;
3526 top: auto;
3527 left: auto;
3527 left: auto;
3528 }
3528 }
3529 @media (min-width: 768px) {
3529 @media (min-width: 768px) {
3530 .nav-tabs.nav-justified > li {
3530 .nav-tabs.nav-justified > li {
3531 display: table-cell;
3531 display: table-cell;
3532 width: 1%;
3532 width: 1%;
3533 }
3533 }
3534 .nav-tabs.nav-justified > li > a {
3534 .nav-tabs.nav-justified > li > a {
3535 margin-bottom: 0;
3535 margin-bottom: 0;
3536 }
3536 }
3537 }
3537 }
3538 .nav-tabs.nav-justified > li > a {
3538 .nav-tabs.nav-justified > li > a {
3539 margin-right: 0;
3539 margin-right: 0;
3540 border-radius: 4px;
3540 border-radius: 4px;
3541 }
3541 }
3542 .nav-tabs.nav-justified > .active > a,
3542 .nav-tabs.nav-justified > .active > a,
3543 .nav-tabs.nav-justified > .active > a:hover,
3543 .nav-tabs.nav-justified > .active > a:hover,
3544 .nav-tabs.nav-justified > .active > a:focus {
3544 .nav-tabs.nav-justified > .active > a:focus {
3545 border: 1px solid #dddddd;
3545 border: 1px solid #dddddd;
3546 }
3546 }
3547 @media (min-width: 768px) {
3547 @media (min-width: 768px) {
3548 .nav-tabs.nav-justified > li > a {
3548 .nav-tabs.nav-justified > li > a {
3549 border-bottom: 1px solid #dddddd;
3549 border-bottom: 1px solid #dddddd;
3550 border-radius: 4px 4px 0 0;
3550 border-radius: 4px 4px 0 0;
3551 }
3551 }
3552 .nav-tabs.nav-justified > .active > a,
3552 .nav-tabs.nav-justified > .active > a,
3553 .nav-tabs.nav-justified > .active > a:hover,
3553 .nav-tabs.nav-justified > .active > a:hover,
3554 .nav-tabs.nav-justified > .active > a:focus {
3554 .nav-tabs.nav-justified > .active > a:focus {
3555 border-bottom-color: #ffffff;
3555 border-bottom-color: #ffffff;
3556 }
3556 }
3557 }
3557 }
3558 .nav-pills > li {
3558 .nav-pills > li {
3559 float: left;
3559 float: left;
3560 }
3560 }
3561 .nav-pills > li > a {
3561 .nav-pills > li > a {
3562 border-radius: 4px;
3562 border-radius: 4px;
3563 }
3563 }
3564 .nav-pills > li + li {
3564 .nav-pills > li + li {
3565 margin-left: 2px;
3565 margin-left: 2px;
3566 }
3566 }
3567 .nav-pills > li.active > a,
3567 .nav-pills > li.active > a,
3568 .nav-pills > li.active > a:hover,
3568 .nav-pills > li.active > a:hover,
3569 .nav-pills > li.active > a:focus {
3569 .nav-pills > li.active > a:focus {
3570 color: #ffffff;
3570 color: #ffffff;
3571 background-color: #428bca;
3571 background-color: #428bca;
3572 }
3572 }
3573 .nav-stacked > li {
3573 .nav-stacked > li {
3574 float: none;
3574 float: none;
3575 }
3575 }
3576 .nav-stacked > li + li {
3576 .nav-stacked > li + li {
3577 margin-top: 2px;
3577 margin-top: 2px;
3578 margin-left: 0;
3578 margin-left: 0;
3579 }
3579 }
3580 .nav-justified {
3580 .nav-justified {
3581 width: 100%;
3581 width: 100%;
3582 }
3582 }
3583 .nav-justified > li {
3583 .nav-justified > li {
3584 float: none;
3584 float: none;
3585 }
3585 }
3586 .nav-justified > li > a {
3586 .nav-justified > li > a {
3587 text-align: center;
3587 text-align: center;
3588 margin-bottom: 5px;
3588 margin-bottom: 5px;
3589 }
3589 }
3590 .nav-justified > .dropdown .dropdown-menu {
3590 .nav-justified > .dropdown .dropdown-menu {
3591 top: auto;
3591 top: auto;
3592 left: auto;
3592 left: auto;
3593 }
3593 }
3594 @media (min-width: 768px) {
3594 @media (min-width: 768px) {
3595 .nav-justified > li {
3595 .nav-justified > li {
3596 display: table-cell;
3596 display: table-cell;
3597 width: 1%;
3597 width: 1%;
3598 }
3598 }
3599 .nav-justified > li > a {
3599 .nav-justified > li > a {
3600 margin-bottom: 0;
3600 margin-bottom: 0;
3601 }
3601 }
3602 }
3602 }
3603 .nav-tabs-justified {
3603 .nav-tabs-justified {
3604 border-bottom: 0;
3604 border-bottom: 0;
3605 }
3605 }
3606 .nav-tabs-justified > li > a {
3606 .nav-tabs-justified > li > a {
3607 margin-right: 0;
3607 margin-right: 0;
3608 border-radius: 4px;
3608 border-radius: 4px;
3609 }
3609 }
3610 .nav-tabs-justified > .active > a,
3610 .nav-tabs-justified > .active > a,
3611 .nav-tabs-justified > .active > a:hover,
3611 .nav-tabs-justified > .active > a:hover,
3612 .nav-tabs-justified > .active > a:focus {
3612 .nav-tabs-justified > .active > a:focus {
3613 border: 1px solid #dddddd;
3613 border: 1px solid #dddddd;
3614 }
3614 }
3615 @media (min-width: 768px) {
3615 @media (min-width: 768px) {
3616 .nav-tabs-justified > li > a {
3616 .nav-tabs-justified > li > a {
3617 border-bottom: 1px solid #dddddd;
3617 border-bottom: 1px solid #dddddd;
3618 border-radius: 4px 4px 0 0;
3618 border-radius: 4px 4px 0 0;
3619 }
3619 }
3620 .nav-tabs-justified > .active > a,
3620 .nav-tabs-justified > .active > a,
3621 .nav-tabs-justified > .active > a:hover,
3621 .nav-tabs-justified > .active > a:hover,
3622 .nav-tabs-justified > .active > a:focus {
3622 .nav-tabs-justified > .active > a:focus {
3623 border-bottom-color: #ffffff;
3623 border-bottom-color: #ffffff;
3624 }
3624 }
3625 }
3625 }
3626 .tab-content > .tab-pane {
3626 .tab-content > .tab-pane {
3627 display: none;
3627 display: none;
3628 }
3628 }
3629 .tab-content > .active {
3629 .tab-content > .active {
3630 display: block;
3630 display: block;
3631 }
3631 }
3632 .nav-tabs .dropdown-menu {
3632 .nav-tabs .dropdown-menu {
3633 margin-top: -1px;
3633 margin-top: -1px;
3634 border-top-right-radius: 0;
3634 border-top-right-radius: 0;
3635 border-top-left-radius: 0;
3635 border-top-left-radius: 0;
3636 }
3636 }
3637 .navbar {
3637 .navbar {
3638 position: relative;
3638 position: relative;
3639 min-height: 36px;
3639 min-height: 36px;
3640 margin-bottom: 18px;
3640 margin-bottom: 18px;
3641 border: 1px solid transparent;
3641 border: 1px solid transparent;
3642 }
3642 }
3643 @media (min-width: 540px) {
3643 @media (min-width: 540px) {
3644 .navbar {
3644 .navbar {
3645 border-radius: 4px;
3645 border-radius: 4px;
3646 }
3646 }
3647 }
3647 }
3648 @media (min-width: 540px) {
3648 @media (min-width: 540px) {
3649 .navbar-header {
3649 .navbar-header {
3650 float: left;
3650 float: left;
3651 }
3651 }
3652 }
3652 }
3653 .navbar-collapse {
3653 .navbar-collapse {
3654 max-height: 340px;
3654 max-height: 340px;
3655 overflow-x: visible;
3655 overflow-x: visible;
3656 padding-right: 15px;
3656 padding-right: 15px;
3657 padding-left: 15px;
3657 padding-left: 15px;
3658 border-top: 1px solid transparent;
3658 border-top: 1px solid transparent;
3659 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3659 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3660 -webkit-overflow-scrolling: touch;
3660 -webkit-overflow-scrolling: touch;
3661 }
3661 }
3662 .navbar-collapse.in {
3662 .navbar-collapse.in {
3663 overflow-y: auto;
3663 overflow-y: auto;
3664 }
3664 }
3665 @media (min-width: 540px) {
3665 @media (min-width: 540px) {
3666 .navbar-collapse {
3666 .navbar-collapse {
3667 width: auto;
3667 width: auto;
3668 border-top: 0;
3668 border-top: 0;
3669 box-shadow: none;
3669 box-shadow: none;
3670 }
3670 }
3671 .navbar-collapse.collapse {
3671 .navbar-collapse.collapse {
3672 display: block !important;
3672 display: block !important;
3673 height: auto !important;
3673 height: auto !important;
3674 padding-bottom: 0;
3674 padding-bottom: 0;
3675 overflow: visible !important;
3675 overflow: visible !important;
3676 }
3676 }
3677 .navbar-collapse.in {
3677 .navbar-collapse.in {
3678 overflow-y: visible;
3678 overflow-y: visible;
3679 }
3679 }
3680 .navbar-fixed-top .navbar-collapse,
3680 .navbar-fixed-top .navbar-collapse,
3681 .navbar-static-top .navbar-collapse,
3681 .navbar-static-top .navbar-collapse,
3682 .navbar-fixed-bottom .navbar-collapse {
3682 .navbar-fixed-bottom .navbar-collapse {
3683 padding-left: 0;
3683 padding-left: 0;
3684 padding-right: 0;
3684 padding-right: 0;
3685 }
3685 }
3686 }
3686 }
3687 .container > .navbar-header,
3687 .container > .navbar-header,
3688 .container-fluid > .navbar-header,
3688 .container-fluid > .navbar-header,
3689 .container > .navbar-collapse,
3689 .container > .navbar-collapse,
3690 .container-fluid > .navbar-collapse {
3690 .container-fluid > .navbar-collapse {
3691 margin-right: -15px;
3691 margin-right: -15px;
3692 margin-left: -15px;
3692 margin-left: -15px;
3693 }
3693 }
3694 @media (min-width: 540px) {
3694 @media (min-width: 540px) {
3695 .container > .navbar-header,
3695 .container > .navbar-header,
3696 .container-fluid > .navbar-header,
3696 .container-fluid > .navbar-header,
3697 .container > .navbar-collapse,
3697 .container > .navbar-collapse,
3698 .container-fluid > .navbar-collapse {
3698 .container-fluid > .navbar-collapse {
3699 margin-right: 0;
3699 margin-right: 0;
3700 margin-left: 0;
3700 margin-left: 0;
3701 }
3701 }
3702 }
3702 }
3703 .navbar-static-top {
3703 .navbar-static-top {
3704 z-index: 1000;
3704 z-index: 1000;
3705 border-width: 0 0 1px;
3705 border-width: 0 0 1px;
3706 }
3706 }
3707 @media (min-width: 540px) {
3707 @media (min-width: 540px) {
3708 .navbar-static-top {
3708 .navbar-static-top {
3709 border-radius: 0;
3709 border-radius: 0;
3710 }
3710 }
3711 }
3711 }
3712 .navbar-fixed-top,
3712 .navbar-fixed-top,
3713 .navbar-fixed-bottom {
3713 .navbar-fixed-bottom {
3714 position: fixed;
3714 position: fixed;
3715 right: 0;
3715 right: 0;
3716 left: 0;
3716 left: 0;
3717 z-index: 1030;
3717 z-index: 1030;
3718 }
3718 }
3719 @media (min-width: 540px) {
3719 @media (min-width: 540px) {
3720 .navbar-fixed-top,
3720 .navbar-fixed-top,
3721 .navbar-fixed-bottom {
3721 .navbar-fixed-bottom {
3722 border-radius: 0;
3722 border-radius: 0;
3723 }
3723 }
3724 }
3724 }
3725 .navbar-fixed-top {
3725 .navbar-fixed-top {
3726 top: 0;
3726 top: 0;
3727 border-width: 0 0 1px;
3727 border-width: 0 0 1px;
3728 }
3728 }
3729 .navbar-fixed-bottom {
3729 .navbar-fixed-bottom {
3730 bottom: 0;
3730 bottom: 0;
3731 margin-bottom: 0;
3731 margin-bottom: 0;
3732 border-width: 1px 0 0;
3732 border-width: 1px 0 0;
3733 }
3733 }
3734 .navbar-brand {
3734 .navbar-brand {
3735 float: left;
3735 float: left;
3736 padding: 9px 15px;
3736 padding: 9px 15px;
3737 font-size: 17px;
3737 font-size: 17px;
3738 line-height: 18px;
3738 line-height: 18px;
3739 height: 36px;
3739 height: 36px;
3740 }
3740 }
3741 .navbar-brand:hover,
3741 .navbar-brand:hover,
3742 .navbar-brand:focus {
3742 .navbar-brand:focus {
3743 text-decoration: none;
3743 text-decoration: none;
3744 }
3744 }
3745 @media (min-width: 540px) {
3745 @media (min-width: 540px) {
3746 .navbar > .container .navbar-brand,
3746 .navbar > .container .navbar-brand,
3747 .navbar > .container-fluid .navbar-brand {
3747 .navbar > .container-fluid .navbar-brand {
3748 margin-left: -15px;
3748 margin-left: -15px;
3749 }
3749 }
3750 }
3750 }
3751 .navbar-toggle {
3751 .navbar-toggle {
3752 position: relative;
3752 position: relative;
3753 float: right;
3753 float: right;
3754 margin-right: 15px;
3754 margin-right: 15px;
3755 padding: 9px 10px;
3755 padding: 9px 10px;
3756 margin-top: 1px;
3756 margin-top: 1px;
3757 margin-bottom: 1px;
3757 margin-bottom: 1px;
3758 background-color: transparent;
3758 background-color: transparent;
3759 background-image: none;
3759 background-image: none;
3760 border: 1px solid transparent;
3760 border: 1px solid transparent;
3761 border-radius: 4px;
3761 border-radius: 4px;
3762 }
3762 }
3763 .navbar-toggle:focus {
3763 .navbar-toggle:focus {
3764 outline: none;
3764 outline: none;
3765 }
3765 }
3766 .navbar-toggle .icon-bar {
3766 .navbar-toggle .icon-bar {
3767 display: block;
3767 display: block;
3768 width: 22px;
3768 width: 22px;
3769 height: 2px;
3769 height: 2px;
3770 border-radius: 1px;
3770 border-radius: 1px;
3771 }
3771 }
3772 .navbar-toggle .icon-bar + .icon-bar {
3772 .navbar-toggle .icon-bar + .icon-bar {
3773 margin-top: 4px;
3773 margin-top: 4px;
3774 }
3774 }
3775 @media (min-width: 540px) {
3775 @media (min-width: 540px) {
3776 .navbar-toggle {
3776 .navbar-toggle {
3777 display: none;
3777 display: none;
3778 }
3778 }
3779 }
3779 }
3780 .navbar-nav {
3780 .navbar-nav {
3781 margin: 4.5px -15px;
3781 margin: 4.5px -15px;
3782 }
3782 }
3783 .navbar-nav > li > a {
3783 .navbar-nav > li > a {
3784 padding-top: 10px;
3784 padding-top: 10px;
3785 padding-bottom: 10px;
3785 padding-bottom: 10px;
3786 line-height: 18px;
3786 line-height: 18px;
3787 }
3787 }
3788 @media (max-width: 539px) {
3788 @media (max-width: 539px) {
3789 .navbar-nav .open .dropdown-menu {
3789 .navbar-nav .open .dropdown-menu {
3790 position: static;
3790 position: static;
3791 float: none;
3791 float: none;
3792 width: auto;
3792 width: auto;
3793 margin-top: 0;
3793 margin-top: 0;
3794 background-color: transparent;
3794 background-color: transparent;
3795 border: 0;
3795 border: 0;
3796 box-shadow: none;
3796 box-shadow: none;
3797 }
3797 }
3798 .navbar-nav .open .dropdown-menu > li > a,
3798 .navbar-nav .open .dropdown-menu > li > a,
3799 .navbar-nav .open .dropdown-menu .dropdown-header {
3799 .navbar-nav .open .dropdown-menu .dropdown-header {
3800 padding: 5px 15px 5px 25px;
3800 padding: 5px 15px 5px 25px;
3801 }
3801 }
3802 .navbar-nav .open .dropdown-menu > li > a {
3802 .navbar-nav .open .dropdown-menu > li > a {
3803 line-height: 18px;
3803 line-height: 18px;
3804 }
3804 }
3805 .navbar-nav .open .dropdown-menu > li > a:hover,
3805 .navbar-nav .open .dropdown-menu > li > a:hover,
3806 .navbar-nav .open .dropdown-menu > li > a:focus {
3806 .navbar-nav .open .dropdown-menu > li > a:focus {
3807 background-image: none;
3807 background-image: none;
3808 }
3808 }
3809 }
3809 }
3810 @media (min-width: 540px) {
3810 @media (min-width: 540px) {
3811 .navbar-nav {
3811 .navbar-nav {
3812 float: left;
3812 float: left;
3813 margin: 0;
3813 margin: 0;
3814 }
3814 }
3815 .navbar-nav > li {
3815 .navbar-nav > li {
3816 float: left;
3816 float: left;
3817 }
3817 }
3818 .navbar-nav > li > a {
3818 .navbar-nav > li > a {
3819 padding-top: 9px;
3819 padding-top: 9px;
3820 padding-bottom: 9px;
3820 padding-bottom: 9px;
3821 }
3821 }
3822 .navbar-nav.navbar-right:last-child {
3822 .navbar-nav.navbar-right:last-child {
3823 margin-right: -15px;
3823 margin-right: -15px;
3824 }
3824 }
3825 }
3825 }
3826 @media (min-width: 540px) {
3826 @media (min-width: 540px) {
3827 .navbar-left {
3827 .navbar-left {
3828 float: left !important;
3828 float: left !important;
3829 float: left;
3829 float: left;
3830 }
3830 }
3831 .navbar-right {
3831 .navbar-right {
3832 float: right !important;
3832 float: right !important;
3833 float: right;
3833 float: right;
3834 }
3834 }
3835 }
3835 }
3836 .navbar-form {
3836 .navbar-form {
3837 margin-left: -15px;
3837 margin-left: -15px;
3838 margin-right: -15px;
3838 margin-right: -15px;
3839 padding: 10px 15px;
3839 padding: 10px 15px;
3840 border-top: 1px solid transparent;
3840 border-top: 1px solid transparent;
3841 border-bottom: 1px solid transparent;
3841 border-bottom: 1px solid transparent;
3842 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3842 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3843 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3843 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3844 margin-top: 2px;
3844 margin-top: 2px;
3845 margin-bottom: 2px;
3845 margin-bottom: 2px;
3846 }
3846 }
3847 @media (min-width: 768px) {
3847 @media (min-width: 768px) {
3848 .navbar-form .form-group {
3848 .navbar-form .form-group {
3849 display: inline-block;
3849 display: inline-block;
3850 margin-bottom: 0;
3850 margin-bottom: 0;
3851 vertical-align: middle;
3851 vertical-align: middle;
3852 }
3852 }
3853 .navbar-form .form-control {
3853 .navbar-form .form-control {
3854 display: inline-block;
3854 display: inline-block;
3855 width: auto;
3855 width: auto;
3856 vertical-align: middle;
3856 vertical-align: middle;
3857 }
3857 }
3858 .navbar-form .input-group > .form-control {
3858 .navbar-form .input-group > .form-control {
3859 width: 100%;
3859 width: 100%;
3860 }
3860 }
3861 .navbar-form .control-label {
3861 .navbar-form .control-label {
3862 margin-bottom: 0;
3862 margin-bottom: 0;
3863 vertical-align: middle;
3863 vertical-align: middle;
3864 }
3864 }
3865 .navbar-form .radio,
3865 .navbar-form .radio,
3866 .navbar-form .checkbox {
3866 .navbar-form .checkbox {
3867 display: inline-block;
3867 display: inline-block;
3868 margin-top: 0;
3868 margin-top: 0;
3869 margin-bottom: 0;
3869 margin-bottom: 0;
3870 padding-left: 0;
3870 padding-left: 0;
3871 vertical-align: middle;
3871 vertical-align: middle;
3872 }
3872 }
3873 .navbar-form .radio input[type="radio"],
3873 .navbar-form .radio input[type="radio"],
3874 .navbar-form .checkbox input[type="checkbox"] {
3874 .navbar-form .checkbox input[type="checkbox"] {
3875 float: none;
3875 float: none;
3876 margin-left: 0;
3876 margin-left: 0;
3877 }
3877 }
3878 .navbar-form .has-feedback .form-control-feedback {
3878 .navbar-form .has-feedback .form-control-feedback {
3879 top: 0;
3879 top: 0;
3880 }
3880 }
3881 }
3881 }
3882 @media (max-width: 539px) {
3882 @media (max-width: 539px) {
3883 .navbar-form .form-group {
3883 .navbar-form .form-group {
3884 margin-bottom: 5px;
3884 margin-bottom: 5px;
3885 }
3885 }
3886 }
3886 }
3887 @media (min-width: 540px) {
3887 @media (min-width: 540px) {
3888 .navbar-form {
3888 .navbar-form {
3889 width: auto;
3889 width: auto;
3890 border: 0;
3890 border: 0;
3891 margin-left: 0;
3891 margin-left: 0;
3892 margin-right: 0;
3892 margin-right: 0;
3893 padding-top: 0;
3893 padding-top: 0;
3894 padding-bottom: 0;
3894 padding-bottom: 0;
3895 -webkit-box-shadow: none;
3895 -webkit-box-shadow: none;
3896 box-shadow: none;
3896 box-shadow: none;
3897 }
3897 }
3898 .navbar-form.navbar-right:last-child {
3898 .navbar-form.navbar-right:last-child {
3899 margin-right: -15px;
3899 margin-right: -15px;
3900 }
3900 }
3901 }
3901 }
3902 .navbar-nav > li > .dropdown-menu {
3902 .navbar-nav > li > .dropdown-menu {
3903 margin-top: 0;
3903 margin-top: 0;
3904 border-top-right-radius: 0;
3904 border-top-right-radius: 0;
3905 border-top-left-radius: 0;
3905 border-top-left-radius: 0;
3906 }
3906 }
3907 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3907 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3908 border-bottom-right-radius: 0;
3908 border-bottom-right-radius: 0;
3909 border-bottom-left-radius: 0;
3909 border-bottom-left-radius: 0;
3910 }
3910 }
3911 .navbar-btn {
3911 .navbar-btn {
3912 margin-top: 2px;
3912 margin-top: 2px;
3913 margin-bottom: 2px;
3913 margin-bottom: 2px;
3914 }
3914 }
3915 .navbar-btn.btn-sm {
3915 .navbar-btn.btn-sm {
3916 margin-top: 3px;
3916 margin-top: 3px;
3917 margin-bottom: 3px;
3917 margin-bottom: 3px;
3918 }
3918 }
3919 .navbar-btn.btn-xs {
3919 .navbar-btn.btn-xs {
3920 margin-top: 7px;
3920 margin-top: 7px;
3921 margin-bottom: 7px;
3921 margin-bottom: 7px;
3922 }
3922 }
3923 .navbar-text {
3923 .navbar-text {
3924 margin-top: 9px;
3924 margin-top: 9px;
3925 margin-bottom: 9px;
3925 margin-bottom: 9px;
3926 }
3926 }
3927 @media (min-width: 540px) {
3927 @media (min-width: 540px) {
3928 .navbar-text {
3928 .navbar-text {
3929 float: left;
3929 float: left;
3930 margin-left: 15px;
3930 margin-left: 15px;
3931 margin-right: 15px;
3931 margin-right: 15px;
3932 }
3932 }
3933 .navbar-text.navbar-right:last-child {
3933 .navbar-text.navbar-right:last-child {
3934 margin-right: 0;
3934 margin-right: 0;
3935 }
3935 }
3936 }
3936 }
3937 .navbar-default {
3937 .navbar-default {
3938 background-color: #f8f8f8;
3938 background-color: #f8f8f8;
3939 border-color: #e7e7e7;
3939 border-color: #e7e7e7;
3940 }
3940 }
3941 .navbar-default .navbar-brand {
3941 .navbar-default .navbar-brand {
3942 color: #777777;
3942 color: #777777;
3943 }
3943 }
3944 .navbar-default .navbar-brand:hover,
3944 .navbar-default .navbar-brand:hover,
3945 .navbar-default .navbar-brand:focus {
3945 .navbar-default .navbar-brand:focus {
3946 color: #5e5e5e;
3946 color: #5e5e5e;
3947 background-color: transparent;
3947 background-color: transparent;
3948 }
3948 }
3949 .navbar-default .navbar-text {
3949 .navbar-default .navbar-text {
3950 color: #777777;
3950 color: #777777;
3951 }
3951 }
3952 .navbar-default .navbar-nav > li > a {
3952 .navbar-default .navbar-nav > li > a {
3953 color: #777777;
3953 color: #777777;
3954 }
3954 }
3955 .navbar-default .navbar-nav > li > a:hover,
3955 .navbar-default .navbar-nav > li > a:hover,
3956 .navbar-default .navbar-nav > li > a:focus {
3956 .navbar-default .navbar-nav > li > a:focus {
3957 color: #333333;
3957 color: #333333;
3958 background-color: transparent;
3958 background-color: transparent;
3959 }
3959 }
3960 .navbar-default .navbar-nav > .active > a,
3960 .navbar-default .navbar-nav > .active > a,
3961 .navbar-default .navbar-nav > .active > a:hover,
3961 .navbar-default .navbar-nav > .active > a:hover,
3962 .navbar-default .navbar-nav > .active > a:focus {
3962 .navbar-default .navbar-nav > .active > a:focus {
3963 color: #555555;
3963 color: #555555;
3964 background-color: #e7e7e7;
3964 background-color: #e7e7e7;
3965 }
3965 }
3966 .navbar-default .navbar-nav > .disabled > a,
3966 .navbar-default .navbar-nav > .disabled > a,
3967 .navbar-default .navbar-nav > .disabled > a:hover,
3967 .navbar-default .navbar-nav > .disabled > a:hover,
3968 .navbar-default .navbar-nav > .disabled > a:focus {
3968 .navbar-default .navbar-nav > .disabled > a:focus {
3969 color: #cccccc;
3969 color: #cccccc;
3970 background-color: transparent;
3970 background-color: transparent;
3971 }
3971 }
3972 .navbar-default .navbar-toggle {
3972 .navbar-default .navbar-toggle {
3973 border-color: #dddddd;
3973 border-color: #dddddd;
3974 }
3974 }
3975 .navbar-default .navbar-toggle:hover,
3975 .navbar-default .navbar-toggle:hover,
3976 .navbar-default .navbar-toggle:focus {
3976 .navbar-default .navbar-toggle:focus {
3977 background-color: #dddddd;
3977 background-color: #dddddd;
3978 }
3978 }
3979 .navbar-default .navbar-toggle .icon-bar {
3979 .navbar-default .navbar-toggle .icon-bar {
3980 background-color: #888888;
3980 background-color: #888888;
3981 }
3981 }
3982 .navbar-default .navbar-collapse,
3982 .navbar-default .navbar-collapse,
3983 .navbar-default .navbar-form {
3983 .navbar-default .navbar-form {
3984 border-color: #e7e7e7;
3984 border-color: #e7e7e7;
3985 }
3985 }
3986 .navbar-default .navbar-nav > .open > a,
3986 .navbar-default .navbar-nav > .open > a,
3987 .navbar-default .navbar-nav > .open > a:hover,
3987 .navbar-default .navbar-nav > .open > a:hover,
3988 .navbar-default .navbar-nav > .open > a:focus {
3988 .navbar-default .navbar-nav > .open > a:focus {
3989 background-color: #e7e7e7;
3989 background-color: #e7e7e7;
3990 color: #555555;
3990 color: #555555;
3991 }
3991 }
3992 @media (max-width: 539px) {
3992 @media (max-width: 539px) {
3993 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
3993 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
3994 color: #777777;
3994 color: #777777;
3995 }
3995 }
3996 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
3996 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
3997 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
3997 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
3998 color: #333333;
3998 color: #333333;
3999 background-color: transparent;
3999 background-color: transparent;
4000 }
4000 }
4001 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4001 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4002 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4002 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4003 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4003 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4004 color: #555555;
4004 color: #555555;
4005 background-color: #e7e7e7;
4005 background-color: #e7e7e7;
4006 }
4006 }
4007 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4007 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4008 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4008 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4009 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4009 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4010 color: #cccccc;
4010 color: #cccccc;
4011 background-color: transparent;
4011 background-color: transparent;
4012 }
4012 }
4013 }
4013 }
4014 .navbar-default .navbar-link {
4014 .navbar-default .navbar-link {
4015 color: #777777;
4015 color: #777777;
4016 }
4016 }
4017 .navbar-default .navbar-link:hover {
4017 .navbar-default .navbar-link:hover {
4018 color: #333333;
4018 color: #333333;
4019 }
4019 }
4020 .navbar-inverse {
4020 .navbar-inverse {
4021 background-color: #222222;
4021 background-color: #222222;
4022 border-color: #080808;
4022 border-color: #080808;
4023 }
4023 }
4024 .navbar-inverse .navbar-brand {
4024 .navbar-inverse .navbar-brand {
4025 color: #999999;
4025 color: #999999;
4026 }
4026 }
4027 .navbar-inverse .navbar-brand:hover,
4027 .navbar-inverse .navbar-brand:hover,
4028 .navbar-inverse .navbar-brand:focus {
4028 .navbar-inverse .navbar-brand:focus {
4029 color: #ffffff;
4029 color: #ffffff;
4030 background-color: transparent;
4030 background-color: transparent;
4031 }
4031 }
4032 .navbar-inverse .navbar-text {
4032 .navbar-inverse .navbar-text {
4033 color: #999999;
4033 color: #999999;
4034 }
4034 }
4035 .navbar-inverse .navbar-nav > li > a {
4035 .navbar-inverse .navbar-nav > li > a {
4036 color: #999999;
4036 color: #999999;
4037 }
4037 }
4038 .navbar-inverse .navbar-nav > li > a:hover,
4038 .navbar-inverse .navbar-nav > li > a:hover,
4039 .navbar-inverse .navbar-nav > li > a:focus {
4039 .navbar-inverse .navbar-nav > li > a:focus {
4040 color: #ffffff;
4040 color: #ffffff;
4041 background-color: transparent;
4041 background-color: transparent;
4042 }
4042 }
4043 .navbar-inverse .navbar-nav > .active > a,
4043 .navbar-inverse .navbar-nav > .active > a,
4044 .navbar-inverse .navbar-nav > .active > a:hover,
4044 .navbar-inverse .navbar-nav > .active > a:hover,
4045 .navbar-inverse .navbar-nav > .active > a:focus {
4045 .navbar-inverse .navbar-nav > .active > a:focus {
4046 color: #ffffff;
4046 color: #ffffff;
4047 background-color: #080808;
4047 background-color: #080808;
4048 }
4048 }
4049 .navbar-inverse .navbar-nav > .disabled > a,
4049 .navbar-inverse .navbar-nav > .disabled > a,
4050 .navbar-inverse .navbar-nav > .disabled > a:hover,
4050 .navbar-inverse .navbar-nav > .disabled > a:hover,
4051 .navbar-inverse .navbar-nav > .disabled > a:focus {
4051 .navbar-inverse .navbar-nav > .disabled > a:focus {
4052 color: #444444;
4052 color: #444444;
4053 background-color: transparent;
4053 background-color: transparent;
4054 }
4054 }
4055 .navbar-inverse .navbar-toggle {
4055 .navbar-inverse .navbar-toggle {
4056 border-color: #333333;
4056 border-color: #333333;
4057 }
4057 }
4058 .navbar-inverse .navbar-toggle:hover,
4058 .navbar-inverse .navbar-toggle:hover,
4059 .navbar-inverse .navbar-toggle:focus {
4059 .navbar-inverse .navbar-toggle:focus {
4060 background-color: #333333;
4060 background-color: #333333;
4061 }
4061 }
4062 .navbar-inverse .navbar-toggle .icon-bar {
4062 .navbar-inverse .navbar-toggle .icon-bar {
4063 background-color: #ffffff;
4063 background-color: #ffffff;
4064 }
4064 }
4065 .navbar-inverse .navbar-collapse,
4065 .navbar-inverse .navbar-collapse,
4066 .navbar-inverse .navbar-form {
4066 .navbar-inverse .navbar-form {
4067 border-color: #101010;
4067 border-color: #101010;
4068 }
4068 }
4069 .navbar-inverse .navbar-nav > .open > a,
4069 .navbar-inverse .navbar-nav > .open > a,
4070 .navbar-inverse .navbar-nav > .open > a:hover,
4070 .navbar-inverse .navbar-nav > .open > a:hover,
4071 .navbar-inverse .navbar-nav > .open > a:focus {
4071 .navbar-inverse .navbar-nav > .open > a:focus {
4072 background-color: #080808;
4072 background-color: #080808;
4073 color: #ffffff;
4073 color: #ffffff;
4074 }
4074 }
4075 @media (max-width: 539px) {
4075 @media (max-width: 539px) {
4076 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4076 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4077 border-color: #080808;
4077 border-color: #080808;
4078 }
4078 }
4079 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4079 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4080 background-color: #080808;
4080 background-color: #080808;
4081 }
4081 }
4082 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4082 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4083 color: #999999;
4083 color: #999999;
4084 }
4084 }
4085 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4085 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4086 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4086 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4087 color: #ffffff;
4087 color: #ffffff;
4088 background-color: transparent;
4088 background-color: transparent;
4089 }
4089 }
4090 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4090 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4091 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4091 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4092 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4092 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4093 color: #ffffff;
4093 color: #ffffff;
4094 background-color: #080808;
4094 background-color: #080808;
4095 }
4095 }
4096 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4096 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4097 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4097 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4098 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4098 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4099 color: #444444;
4099 color: #444444;
4100 background-color: transparent;
4100 background-color: transparent;
4101 }
4101 }
4102 }
4102 }
4103 .navbar-inverse .navbar-link {
4103 .navbar-inverse .navbar-link {
4104 color: #999999;
4104 color: #999999;
4105 }
4105 }
4106 .navbar-inverse .navbar-link:hover {
4106 .navbar-inverse .navbar-link:hover {
4107 color: #ffffff;
4107 color: #ffffff;
4108 }
4108 }
4109 .breadcrumb {
4109 .breadcrumb {
4110 padding: 8px 15px;
4110 padding: 8px 15px;
4111 margin-bottom: 18px;
4111 margin-bottom: 18px;
4112 list-style: none;
4112 list-style: none;
4113 background-color: #f5f5f5;
4113 background-color: #f5f5f5;
4114 border-radius: 4px;
4114 border-radius: 4px;
4115 }
4115 }
4116 .breadcrumb > li {
4116 .breadcrumb > li {
4117 display: inline-block;
4117 display: inline-block;
4118 }
4118 }
4119 .breadcrumb > li + li:before {
4119 .breadcrumb > li + li:before {
4120 content: "/\00a0";
4120 content: "/\00a0";
4121 padding: 0 5px;
4121 padding: 0 5px;
4122 color: #5e5e5e;
4122 color: #5e5e5e;
4123 }
4123 }
4124 .breadcrumb > .active {
4124 .breadcrumb > .active {
4125 color: #999999;
4125 color: #999999;
4126 }
4126 }
4127 .pagination {
4127 .pagination {
4128 display: inline-block;
4128 display: inline-block;
4129 padding-left: 0;
4129 padding-left: 0;
4130 margin: 18px 0;
4130 margin: 18px 0;
4131 border-radius: 4px;
4131 border-radius: 4px;
4132 }
4132 }
4133 .pagination > li {
4133 .pagination > li {
4134 display: inline;
4134 display: inline;
4135 }
4135 }
4136 .pagination > li > a,
4136 .pagination > li > a,
4137 .pagination > li > span {
4137 .pagination > li > span {
4138 position: relative;
4138 position: relative;
4139 float: left;
4139 float: left;
4140 padding: 6px 12px;
4140 padding: 6px 12px;
4141 line-height: 1.42857143;
4141 line-height: 1.42857143;
4142 text-decoration: none;
4142 text-decoration: none;
4143 color: #428bca;
4143 color: #428bca;
4144 background-color: #ffffff;
4144 background-color: #ffffff;
4145 border: 1px solid #dddddd;
4145 border: 1px solid #dddddd;
4146 margin-left: -1px;
4146 margin-left: -1px;
4147 }
4147 }
4148 .pagination > li:first-child > a,
4148 .pagination > li:first-child > a,
4149 .pagination > li:first-child > span {
4149 .pagination > li:first-child > span {
4150 margin-left: 0;
4150 margin-left: 0;
4151 border-bottom-left-radius: 4px;
4151 border-bottom-left-radius: 4px;
4152 border-top-left-radius: 4px;
4152 border-top-left-radius: 4px;
4153 }
4153 }
4154 .pagination > li:last-child > a,
4154 .pagination > li:last-child > a,
4155 .pagination > li:last-child > span {
4155 .pagination > li:last-child > span {
4156 border-bottom-right-radius: 4px;
4156 border-bottom-right-radius: 4px;
4157 border-top-right-radius: 4px;
4157 border-top-right-radius: 4px;
4158 }
4158 }
4159 .pagination > li > a:hover,
4159 .pagination > li > a:hover,
4160 .pagination > li > span:hover,
4160 .pagination > li > span:hover,
4161 .pagination > li > a:focus,
4161 .pagination > li > a:focus,
4162 .pagination > li > span:focus {
4162 .pagination > li > span:focus {
4163 color: #2a6496;
4163 color: #2a6496;
4164 background-color: #eeeeee;
4164 background-color: #eeeeee;
4165 border-color: #dddddd;
4165 border-color: #dddddd;
4166 }
4166 }
4167 .pagination > .active > a,
4167 .pagination > .active > a,
4168 .pagination > .active > span,
4168 .pagination > .active > span,
4169 .pagination > .active > a:hover,
4169 .pagination > .active > a:hover,
4170 .pagination > .active > span:hover,
4170 .pagination > .active > span:hover,
4171 .pagination > .active > a:focus,
4171 .pagination > .active > a:focus,
4172 .pagination > .active > span:focus {
4172 .pagination > .active > span:focus {
4173 z-index: 2;
4173 z-index: 2;
4174 color: #ffffff;
4174 color: #ffffff;
4175 background-color: #428bca;
4175 background-color: #428bca;
4176 border-color: #428bca;
4176 border-color: #428bca;
4177 cursor: default;
4177 cursor: default;
4178 }
4178 }
4179 .pagination > .disabled > span,
4179 .pagination > .disabled > span,
4180 .pagination > .disabled > span:hover,
4180 .pagination > .disabled > span:hover,
4181 .pagination > .disabled > span:focus,
4181 .pagination > .disabled > span:focus,
4182 .pagination > .disabled > a,
4182 .pagination > .disabled > a,
4183 .pagination > .disabled > a:hover,
4183 .pagination > .disabled > a:hover,
4184 .pagination > .disabled > a:focus {
4184 .pagination > .disabled > a:focus {
4185 color: #999999;
4185 color: #999999;
4186 background-color: #ffffff;
4186 background-color: #ffffff;
4187 border-color: #dddddd;
4187 border-color: #dddddd;
4188 cursor: not-allowed;
4188 cursor: not-allowed;
4189 }
4189 }
4190 .pagination-lg > li > a,
4190 .pagination-lg > li > a,
4191 .pagination-lg > li > span {
4191 .pagination-lg > li > span {
4192 padding: 10px 16px;
4192 padding: 10px 16px;
4193 font-size: 17px;
4193 font-size: 17px;
4194 }
4194 }
4195 .pagination-lg > li:first-child > a,
4195 .pagination-lg > li:first-child > a,
4196 .pagination-lg > li:first-child > span {
4196 .pagination-lg > li:first-child > span {
4197 border-bottom-left-radius: 6px;
4197 border-bottom-left-radius: 6px;
4198 border-top-left-radius: 6px;
4198 border-top-left-radius: 6px;
4199 }
4199 }
4200 .pagination-lg > li:last-child > a,
4200 .pagination-lg > li:last-child > a,
4201 .pagination-lg > li:last-child > span {
4201 .pagination-lg > li:last-child > span {
4202 border-bottom-right-radius: 6px;
4202 border-bottom-right-radius: 6px;
4203 border-top-right-radius: 6px;
4203 border-top-right-radius: 6px;
4204 }
4204 }
4205 .pagination-sm > li > a,
4205 .pagination-sm > li > a,
4206 .pagination-sm > li > span {
4206 .pagination-sm > li > span {
4207 padding: 5px 10px;
4207 padding: 5px 10px;
4208 font-size: 12px;
4208 font-size: 12px;
4209 }
4209 }
4210 .pagination-sm > li:first-child > a,
4210 .pagination-sm > li:first-child > a,
4211 .pagination-sm > li:first-child > span {
4211 .pagination-sm > li:first-child > span {
4212 border-bottom-left-radius: 3px;
4212 border-bottom-left-radius: 3px;
4213 border-top-left-radius: 3px;
4213 border-top-left-radius: 3px;
4214 }
4214 }
4215 .pagination-sm > li:last-child > a,
4215 .pagination-sm > li:last-child > a,
4216 .pagination-sm > li:last-child > span {
4216 .pagination-sm > li:last-child > span {
4217 border-bottom-right-radius: 3px;
4217 border-bottom-right-radius: 3px;
4218 border-top-right-radius: 3px;
4218 border-top-right-radius: 3px;
4219 }
4219 }
4220 .pager {
4220 .pager {
4221 padding-left: 0;
4221 padding-left: 0;
4222 margin: 18px 0;
4222 margin: 18px 0;
4223 list-style: none;
4223 list-style: none;
4224 text-align: center;
4224 text-align: center;
4225 }
4225 }
4226 .pager li {
4226 .pager li {
4227 display: inline;
4227 display: inline;
4228 }
4228 }
4229 .pager li > a,
4229 .pager li > a,
4230 .pager li > span {
4230 .pager li > span {
4231 display: inline-block;
4231 display: inline-block;
4232 padding: 5px 14px;
4232 padding: 5px 14px;
4233 background-color: #ffffff;
4233 background-color: #ffffff;
4234 border: 1px solid #dddddd;
4234 border: 1px solid #dddddd;
4235 border-radius: 15px;
4235 border-radius: 15px;
4236 }
4236 }
4237 .pager li > a:hover,
4237 .pager li > a:hover,
4238 .pager li > a:focus {
4238 .pager li > a:focus {
4239 text-decoration: none;
4239 text-decoration: none;
4240 background-color: #eeeeee;
4240 background-color: #eeeeee;
4241 }
4241 }
4242 .pager .next > a,
4242 .pager .next > a,
4243 .pager .next > span {
4243 .pager .next > span {
4244 float: right;
4244 float: right;
4245 }
4245 }
4246 .pager .previous > a,
4246 .pager .previous > a,
4247 .pager .previous > span {
4247 .pager .previous > span {
4248 float: left;
4248 float: left;
4249 }
4249 }
4250 .pager .disabled > a,
4250 .pager .disabled > a,
4251 .pager .disabled > a:hover,
4251 .pager .disabled > a:hover,
4252 .pager .disabled > a:focus,
4252 .pager .disabled > a:focus,
4253 .pager .disabled > span {
4253 .pager .disabled > span {
4254 color: #999999;
4254 color: #999999;
4255 background-color: #ffffff;
4255 background-color: #ffffff;
4256 cursor: not-allowed;
4256 cursor: not-allowed;
4257 }
4257 }
4258 .label {
4258 .label {
4259 display: inline;
4259 display: inline;
4260 padding: .2em .6em .3em;
4260 padding: .2em .6em .3em;
4261 font-size: 75%;
4261 font-size: 75%;
4262 font-weight: bold;
4262 font-weight: bold;
4263 line-height: 1;
4263 line-height: 1;
4264 color: #ffffff;
4264 color: #ffffff;
4265 text-align: center;
4265 text-align: center;
4266 white-space: nowrap;
4266 white-space: nowrap;
4267 vertical-align: baseline;
4267 vertical-align: baseline;
4268 border-radius: .25em;
4268 border-radius: .25em;
4269 }
4269 }
4270 .label[href]:hover,
4270 .label[href]:hover,
4271 .label[href]:focus {
4271 .label[href]:focus {
4272 color: #ffffff;
4272 color: #ffffff;
4273 text-decoration: none;
4273 text-decoration: none;
4274 cursor: pointer;
4274 cursor: pointer;
4275 }
4275 }
4276 .label:empty {
4276 .label:empty {
4277 display: none;
4277 display: none;
4278 }
4278 }
4279 .btn .label {
4279 .btn .label {
4280 position: relative;
4280 position: relative;
4281 top: -1px;
4281 top: -1px;
4282 }
4282 }
4283 .label-default {
4283 .label-default {
4284 background-color: #999999;
4284 background-color: #999999;
4285 }
4285 }
4286 .label-default[href]:hover,
4286 .label-default[href]:hover,
4287 .label-default[href]:focus {
4287 .label-default[href]:focus {
4288 background-color: #808080;
4288 background-color: #808080;
4289 }
4289 }
4290 .label-primary {
4290 .label-primary {
4291 background-color: #428bca;
4291 background-color: #428bca;
4292 }
4292 }
4293 .label-primary[href]:hover,
4293 .label-primary[href]:hover,
4294 .label-primary[href]:focus {
4294 .label-primary[href]:focus {
4295 background-color: #3071a9;
4295 background-color: #3071a9;
4296 }
4296 }
4297 .label-success {
4297 .label-success {
4298 background-color: #5cb85c;
4298 background-color: #5cb85c;
4299 }
4299 }
4300 .label-success[href]:hover,
4300 .label-success[href]:hover,
4301 .label-success[href]:focus {
4301 .label-success[href]:focus {
4302 background-color: #449d44;
4302 background-color: #449d44;
4303 }
4303 }
4304 .label-info {
4304 .label-info {
4305 background-color: #5bc0de;
4305 background-color: #5bc0de;
4306 }
4306 }
4307 .label-info[href]:hover,
4307 .label-info[href]:hover,
4308 .label-info[href]:focus {
4308 .label-info[href]:focus {
4309 background-color: #31b0d5;
4309 background-color: #31b0d5;
4310 }
4310 }
4311 .label-warning {
4311 .label-warning {
4312 background-color: #f0ad4e;
4312 background-color: #f0ad4e;
4313 }
4313 }
4314 .label-warning[href]:hover,
4314 .label-warning[href]:hover,
4315 .label-warning[href]:focus {
4315 .label-warning[href]:focus {
4316 background-color: #ec971f;
4316 background-color: #ec971f;
4317 }
4317 }
4318 .label-danger {
4318 .label-danger {
4319 background-color: #d9534f;
4319 background-color: #d9534f;
4320 }
4320 }
4321 .label-danger[href]:hover,
4321 .label-danger[href]:hover,
4322 .label-danger[href]:focus {
4322 .label-danger[href]:focus {
4323 background-color: #c9302c;
4323 background-color: #c9302c;
4324 }
4324 }
4325 .badge {
4325 .badge {
4326 display: inline-block;
4326 display: inline-block;
4327 min-width: 10px;
4327 min-width: 10px;
4328 padding: 3px 7px;
4328 padding: 3px 7px;
4329 font-size: 12px;
4329 font-size: 12px;
4330 font-weight: bold;
4330 font-weight: bold;
4331 color: #ffffff;
4331 color: #ffffff;
4332 line-height: 1;
4332 line-height: 1;
4333 vertical-align: baseline;
4333 vertical-align: baseline;
4334 white-space: nowrap;
4334 white-space: nowrap;
4335 text-align: center;
4335 text-align: center;
4336 background-color: #999999;
4336 background-color: #999999;
4337 border-radius: 10px;
4337 border-radius: 10px;
4338 }
4338 }
4339 .badge:empty {
4339 .badge:empty {
4340 display: none;
4340 display: none;
4341 }
4341 }
4342 .btn .badge {
4342 .btn .badge {
4343 position: relative;
4343 position: relative;
4344 top: -1px;
4344 top: -1px;
4345 }
4345 }
4346 .btn-xs .badge {
4346 .btn-xs .badge {
4347 top: 0;
4347 top: 0;
4348 padding: 1px 5px;
4348 padding: 1px 5px;
4349 }
4349 }
4350 a.badge:hover,
4350 a.badge:hover,
4351 a.badge:focus {
4351 a.badge:focus {
4352 color: #ffffff;
4352 color: #ffffff;
4353 text-decoration: none;
4353 text-decoration: none;
4354 cursor: pointer;
4354 cursor: pointer;
4355 }
4355 }
4356 a.list-group-item.active > .badge,
4356 a.list-group-item.active > .badge,
4357 .nav-pills > .active > a > .badge {
4357 .nav-pills > .active > a > .badge {
4358 color: #428bca;
4358 color: #428bca;
4359 background-color: #ffffff;
4359 background-color: #ffffff;
4360 }
4360 }
4361 .nav-pills > li > a > .badge {
4361 .nav-pills > li > a > .badge {
4362 margin-left: 3px;
4362 margin-left: 3px;
4363 }
4363 }
4364 .jumbotron {
4364 .jumbotron {
4365 padding: 30px;
4365 padding: 30px;
4366 margin-bottom: 30px;
4366 margin-bottom: 30px;
4367 color: inherit;
4367 color: inherit;
4368 background-color: #eeeeee;
4368 background-color: #eeeeee;
4369 }
4369 }
4370 .jumbotron h1,
4370 .jumbotron h1,
4371 .jumbotron .h1 {
4371 .jumbotron .h1 {
4372 color: inherit;
4372 color: inherit;
4373 }
4373 }
4374 .jumbotron p {
4374 .jumbotron p {
4375 margin-bottom: 15px;
4375 margin-bottom: 15px;
4376 font-size: 20px;
4376 font-size: 20px;
4377 font-weight: 200;
4377 font-weight: 200;
4378 }
4378 }
4379 .container .jumbotron {
4379 .container .jumbotron {
4380 border-radius: 6px;
4380 border-radius: 6px;
4381 }
4381 }
4382 .jumbotron .container {
4382 .jumbotron .container {
4383 max-width: 100%;
4383 max-width: 100%;
4384 }
4384 }
4385 @media screen and (min-width: 768px) {
4385 @media screen and (min-width: 768px) {
4386 .jumbotron {
4386 .jumbotron {
4387 padding-top: 48px;
4387 padding-top: 48px;
4388 padding-bottom: 48px;
4388 padding-bottom: 48px;
4389 }
4389 }
4390 .container .jumbotron {
4390 .container .jumbotron {
4391 padding-left: 60px;
4391 padding-left: 60px;
4392 padding-right: 60px;
4392 padding-right: 60px;
4393 }
4393 }
4394 .jumbotron h1,
4394 .jumbotron h1,
4395 .jumbotron .h1 {
4395 .jumbotron .h1 {
4396 font-size: 58.5px;
4396 font-size: 58.5px;
4397 }
4397 }
4398 }
4398 }
4399 .thumbnail {
4399 .thumbnail {
4400 display: block;
4400 display: block;
4401 padding: 4px;
4401 padding: 4px;
4402 margin-bottom: 18px;
4402 margin-bottom: 18px;
4403 line-height: 1.42857143;
4403 line-height: 1.42857143;
4404 background-color: #ffffff;
4404 background-color: #ffffff;
4405 border: 1px solid #dddddd;
4405 border: 1px solid #dddddd;
4406 border-radius: 4px;
4406 border-radius: 4px;
4407 -webkit-transition: all 0.2s ease-in-out;
4407 -webkit-transition: all 0.2s ease-in-out;
4408 transition: all 0.2s ease-in-out;
4408 transition: all 0.2s ease-in-out;
4409 }
4409 }
4410 .thumbnail > img,
4410 .thumbnail > img,
4411 .thumbnail a > img {
4411 .thumbnail a > img {
4412 margin-left: auto;
4412 margin-left: auto;
4413 margin-right: auto;
4413 margin-right: auto;
4414 }
4414 }
4415 a.thumbnail:hover,
4415 a.thumbnail:hover,
4416 a.thumbnail:focus,
4416 a.thumbnail:focus,
4417 a.thumbnail.active {
4417 a.thumbnail.active {
4418 border-color: #428bca;
4418 border-color: #428bca;
4419 }
4419 }
4420 .thumbnail .caption {
4420 .thumbnail .caption {
4421 padding: 9px;
4421 padding: 9px;
4422 color: #000000;
4422 color: #000000;
4423 }
4423 }
4424 .alert {
4424 .alert {
4425 padding: 15px;
4425 padding: 15px;
4426 margin-bottom: 18px;
4426 margin-bottom: 18px;
4427 border: 1px solid transparent;
4427 border: 1px solid transparent;
4428 border-radius: 4px;
4428 border-radius: 4px;
4429 }
4429 }
4430 .alert h4 {
4430 .alert h4 {
4431 margin-top: 0;
4431 margin-top: 0;
4432 color: inherit;
4432 color: inherit;
4433 }
4433 }
4434 .alert .alert-link {
4434 .alert .alert-link {
4435 font-weight: bold;
4435 font-weight: bold;
4436 }
4436 }
4437 .alert > p,
4437 .alert > p,
4438 .alert > ul {
4438 .alert > ul {
4439 margin-bottom: 0;
4439 margin-bottom: 0;
4440 }
4440 }
4441 .alert > p + p {
4441 .alert > p + p {
4442 margin-top: 5px;
4442 margin-top: 5px;
4443 }
4443 }
4444 .alert-dismissable {
4444 .alert-dismissable {
4445 padding-right: 35px;
4445 padding-right: 35px;
4446 }
4446 }
4447 .alert-dismissable .close {
4447 .alert-dismissable .close {
4448 position: relative;
4448 position: relative;
4449 top: -2px;
4449 top: -2px;
4450 right: -21px;
4450 right: -21px;
4451 color: inherit;
4451 color: inherit;
4452 }
4452 }
4453 .alert-success {
4453 .alert-success {
4454 background-color: #dff0d8;
4454 background-color: #dff0d8;
4455 border-color: #d6e9c6;
4455 border-color: #d6e9c6;
4456 color: #3c763d;
4456 color: #3c763d;
4457 }
4457 }
4458 .alert-success hr {
4458 .alert-success hr {
4459 border-top-color: #c9e2b3;
4459 border-top-color: #c9e2b3;
4460 }
4460 }
4461 .alert-success .alert-link {
4461 .alert-success .alert-link {
4462 color: #2b542c;
4462 color: #2b542c;
4463 }
4463 }
4464 .alert-info {
4464 .alert-info {
4465 background-color: #d9edf7;
4465 background-color: #d9edf7;
4466 border-color: #bce8f1;
4466 border-color: #bce8f1;
4467 color: #31708f;
4467 color: #31708f;
4468 }
4468 }
4469 .alert-info hr {
4469 .alert-info hr {
4470 border-top-color: #a6e1ec;
4470 border-top-color: #a6e1ec;
4471 }
4471 }
4472 .alert-info .alert-link {
4472 .alert-info .alert-link {
4473 color: #245269;
4473 color: #245269;
4474 }
4474 }
4475 .alert-warning {
4475 .alert-warning {
4476 background-color: #fcf8e3;
4476 background-color: #fcf8e3;
4477 border-color: #faebcc;
4477 border-color: #faebcc;
4478 color: #8a6d3b;
4478 color: #8a6d3b;
4479 }
4479 }
4480 .alert-warning hr {
4480 .alert-warning hr {
4481 border-top-color: #f7e1b5;
4481 border-top-color: #f7e1b5;
4482 }
4482 }
4483 .alert-warning .alert-link {
4483 .alert-warning .alert-link {
4484 color: #66512c;
4484 color: #66512c;
4485 }
4485 }
4486 .alert-danger {
4486 .alert-danger {
4487 background-color: #f2dede;
4487 background-color: #f2dede;
4488 border-color: #ebccd1;
4488 border-color: #ebccd1;
4489 color: #a94442;
4489 color: #a94442;
4490 }
4490 }
4491 .alert-danger hr {
4491 .alert-danger hr {
4492 border-top-color: #e4b9c0;
4492 border-top-color: #e4b9c0;
4493 }
4493 }
4494 .alert-danger .alert-link {
4494 .alert-danger .alert-link {
4495 color: #843534;
4495 color: #843534;
4496 }
4496 }
4497 @-webkit-keyframes progress-bar-stripes {
4497 @-webkit-keyframes progress-bar-stripes {
4498 from {
4498 from {
4499 background-position: 40px 0;
4499 background-position: 40px 0;
4500 }
4500 }
4501 to {
4501 to {
4502 background-position: 0 0;
4502 background-position: 0 0;
4503 }
4503 }
4504 }
4504 }
4505 @keyframes progress-bar-stripes {
4505 @keyframes progress-bar-stripes {
4506 from {
4506 from {
4507 background-position: 40px 0;
4507 background-position: 40px 0;
4508 }
4508 }
4509 to {
4509 to {
4510 background-position: 0 0;
4510 background-position: 0 0;
4511 }
4511 }
4512 }
4512 }
4513 .progress {
4513 .progress {
4514 overflow: hidden;
4514 overflow: hidden;
4515 height: 18px;
4515 height: 18px;
4516 margin-bottom: 18px;
4516 margin-bottom: 18px;
4517 background-color: #f5f5f5;
4517 background-color: #f5f5f5;
4518 border-radius: 4px;
4518 border-radius: 4px;
4519 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4519 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4520 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4520 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4521 }
4521 }
4522 .progress-bar {
4522 .progress-bar {
4523 float: left;
4523 float: left;
4524 width: 0%;
4524 width: 0%;
4525 height: 100%;
4525 height: 100%;
4526 font-size: 12px;
4526 font-size: 12px;
4527 line-height: 18px;
4527 line-height: 18px;
4528 color: #ffffff;
4528 color: #ffffff;
4529 text-align: center;
4529 text-align: center;
4530 background-color: #428bca;
4530 background-color: #428bca;
4531 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4531 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4532 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4532 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4533 -webkit-transition: width 0.6s ease;
4533 -webkit-transition: width 0.6s ease;
4534 transition: width 0.6s ease;
4534 transition: width 0.6s ease;
4535 }
4535 }
4536 .progress-striped .progress-bar {
4536 .progress-striped .progress-bar {
4537 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);
4537 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);
4538 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);
4538 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);
4539 background-size: 40px 40px;
4539 background-size: 40px 40px;
4540 }
4540 }
4541 .progress.active .progress-bar {
4541 .progress.active .progress-bar {
4542 -webkit-animation: progress-bar-stripes 2s linear infinite;
4542 -webkit-animation: progress-bar-stripes 2s linear infinite;
4543 animation: progress-bar-stripes 2s linear infinite;
4543 animation: progress-bar-stripes 2s linear infinite;
4544 }
4544 }
4545 .progress-bar-success {
4545 .progress-bar-success {
4546 background-color: #5cb85c;
4546 background-color: #5cb85c;
4547 }
4547 }
4548 .progress-striped .progress-bar-success {
4548 .progress-striped .progress-bar-success {
4549 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);
4549 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);
4550 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);
4550 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);
4551 }
4551 }
4552 .progress-bar-info {
4552 .progress-bar-info {
4553 background-color: #5bc0de;
4553 background-color: #5bc0de;
4554 }
4554 }
4555 .progress-striped .progress-bar-info {
4555 .progress-striped .progress-bar-info {
4556 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);
4556 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);
4557 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);
4557 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);
4558 }
4558 }
4559 .progress-bar-warning {
4559 .progress-bar-warning {
4560 background-color: #f0ad4e;
4560 background-color: #f0ad4e;
4561 }
4561 }
4562 .progress-striped .progress-bar-warning {
4562 .progress-striped .progress-bar-warning {
4563 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);
4563 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);
4564 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);
4564 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);
4565 }
4565 }
4566 .progress-bar-danger {
4566 .progress-bar-danger {
4567 background-color: #d9534f;
4567 background-color: #d9534f;
4568 }
4568 }
4569 .progress-striped .progress-bar-danger {
4569 .progress-striped .progress-bar-danger {
4570 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);
4570 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);
4571 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);
4571 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);
4572 }
4572 }
4573 .media,
4573 .media,
4574 .media-body {
4574 .media-body {
4575 overflow: hidden;
4575 overflow: hidden;
4576 zoom: 1;
4576 zoom: 1;
4577 }
4577 }
4578 .media,
4578 .media,
4579 .media .media {
4579 .media .media {
4580 margin-top: 15px;
4580 margin-top: 15px;
4581 }
4581 }
4582 .media:first-child {
4582 .media:first-child {
4583 margin-top: 0;
4583 margin-top: 0;
4584 }
4584 }
4585 .media-object {
4585 .media-object {
4586 display: block;
4586 display: block;
4587 }
4587 }
4588 .media-heading {
4588 .media-heading {
4589 margin: 0 0 5px;
4589 margin: 0 0 5px;
4590 }
4590 }
4591 .media > .pull-left {
4591 .media > .pull-left {
4592 margin-right: 10px;
4592 margin-right: 10px;
4593 }
4593 }
4594 .media > .pull-right {
4594 .media > .pull-right {
4595 margin-left: 10px;
4595 margin-left: 10px;
4596 }
4596 }
4597 .media-list {
4597 .media-list {
4598 padding-left: 0;
4598 padding-left: 0;
4599 list-style: none;
4599 list-style: none;
4600 }
4600 }
4601 .list-group {
4601 .list-group {
4602 margin-bottom: 20px;
4602 margin-bottom: 20px;
4603 padding-left: 0;
4603 padding-left: 0;
4604 }
4604 }
4605 .list-group-item {
4605 .list-group-item {
4606 position: relative;
4606 position: relative;
4607 display: block;
4607 display: block;
4608 padding: 10px 15px;
4608 padding: 10px 15px;
4609 margin-bottom: -1px;
4609 margin-bottom: -1px;
4610 background-color: #ffffff;
4610 background-color: #ffffff;
4611 border: 1px solid #dddddd;
4611 border: 1px solid #dddddd;
4612 }
4612 }
4613 .list-group-item:first-child {
4613 .list-group-item:first-child {
4614 border-top-right-radius: 4px;
4614 border-top-right-radius: 4px;
4615 border-top-left-radius: 4px;
4615 border-top-left-radius: 4px;
4616 }
4616 }
4617 .list-group-item:last-child {
4617 .list-group-item:last-child {
4618 margin-bottom: 0;
4618 margin-bottom: 0;
4619 border-bottom-right-radius: 4px;
4619 border-bottom-right-radius: 4px;
4620 border-bottom-left-radius: 4px;
4620 border-bottom-left-radius: 4px;
4621 }
4621 }
4622 .list-group-item > .badge {
4622 .list-group-item > .badge {
4623 float: right;
4623 float: right;
4624 }
4624 }
4625 .list-group-item > .badge + .badge {
4625 .list-group-item > .badge + .badge {
4626 margin-right: 5px;
4626 margin-right: 5px;
4627 }
4627 }
4628 a.list-group-item {
4628 a.list-group-item {
4629 color: #555555;
4629 color: #555555;
4630 }
4630 }
4631 a.list-group-item .list-group-item-heading {
4631 a.list-group-item .list-group-item-heading {
4632 color: #333333;
4632 color: #333333;
4633 }
4633 }
4634 a.list-group-item:hover,
4634 a.list-group-item:hover,
4635 a.list-group-item:focus {
4635 a.list-group-item:focus {
4636 text-decoration: none;
4636 text-decoration: none;
4637 background-color: #f5f5f5;
4637 background-color: #f5f5f5;
4638 }
4638 }
4639 a.list-group-item.active,
4639 a.list-group-item.active,
4640 a.list-group-item.active:hover,
4640 a.list-group-item.active:hover,
4641 a.list-group-item.active:focus {
4641 a.list-group-item.active:focus {
4642 z-index: 2;
4642 z-index: 2;
4643 color: #ffffff;
4643 color: #ffffff;
4644 background-color: #428bca;
4644 background-color: #428bca;
4645 border-color: #428bca;
4645 border-color: #428bca;
4646 }
4646 }
4647 a.list-group-item.active .list-group-item-heading,
4647 a.list-group-item.active .list-group-item-heading,
4648 a.list-group-item.active:hover .list-group-item-heading,
4648 a.list-group-item.active:hover .list-group-item-heading,
4649 a.list-group-item.active:focus .list-group-item-heading {
4649 a.list-group-item.active:focus .list-group-item-heading {
4650 color: inherit;
4650 color: inherit;
4651 }
4651 }
4652 a.list-group-item.active .list-group-item-text,
4652 a.list-group-item.active .list-group-item-text,
4653 a.list-group-item.active:hover .list-group-item-text,
4653 a.list-group-item.active:hover .list-group-item-text,
4654 a.list-group-item.active:focus .list-group-item-text {
4654 a.list-group-item.active:focus .list-group-item-text {
4655 color: #e1edf7;
4655 color: #e1edf7;
4656 }
4656 }
4657 .list-group-item-success {
4657 .list-group-item-success {
4658 color: #3c763d;
4658 color: #3c763d;
4659 background-color: #dff0d8;
4659 background-color: #dff0d8;
4660 }
4660 }
4661 a.list-group-item-success {
4661 a.list-group-item-success {
4662 color: #3c763d;
4662 color: #3c763d;
4663 }
4663 }
4664 a.list-group-item-success .list-group-item-heading {
4664 a.list-group-item-success .list-group-item-heading {
4665 color: inherit;
4665 color: inherit;
4666 }
4666 }
4667 a.list-group-item-success:hover,
4667 a.list-group-item-success:hover,
4668 a.list-group-item-success:focus {
4668 a.list-group-item-success:focus {
4669 color: #3c763d;
4669 color: #3c763d;
4670 background-color: #d0e9c6;
4670 background-color: #d0e9c6;
4671 }
4671 }
4672 a.list-group-item-success.active,
4672 a.list-group-item-success.active,
4673 a.list-group-item-success.active:hover,
4673 a.list-group-item-success.active:hover,
4674 a.list-group-item-success.active:focus {
4674 a.list-group-item-success.active:focus {
4675 color: #fff;
4675 color: #fff;
4676 background-color: #3c763d;
4676 background-color: #3c763d;
4677 border-color: #3c763d;
4677 border-color: #3c763d;
4678 }
4678 }
4679 .list-group-item-info {
4679 .list-group-item-info {
4680 color: #31708f;
4680 color: #31708f;
4681 background-color: #d9edf7;
4681 background-color: #d9edf7;
4682 }
4682 }
4683 a.list-group-item-info {
4683 a.list-group-item-info {
4684 color: #31708f;
4684 color: #31708f;
4685 }
4685 }
4686 a.list-group-item-info .list-group-item-heading {
4686 a.list-group-item-info .list-group-item-heading {
4687 color: inherit;
4687 color: inherit;
4688 }
4688 }
4689 a.list-group-item-info:hover,
4689 a.list-group-item-info:hover,
4690 a.list-group-item-info:focus {
4690 a.list-group-item-info:focus {
4691 color: #31708f;
4691 color: #31708f;
4692 background-color: #c4e3f3;
4692 background-color: #c4e3f3;
4693 }
4693 }
4694 a.list-group-item-info.active,
4694 a.list-group-item-info.active,
4695 a.list-group-item-info.active:hover,
4695 a.list-group-item-info.active:hover,
4696 a.list-group-item-info.active:focus {
4696 a.list-group-item-info.active:focus {
4697 color: #fff;
4697 color: #fff;
4698 background-color: #31708f;
4698 background-color: #31708f;
4699 border-color: #31708f;
4699 border-color: #31708f;
4700 }
4700 }
4701 .list-group-item-warning {
4701 .list-group-item-warning {
4702 color: #8a6d3b;
4702 color: #8a6d3b;
4703 background-color: #fcf8e3;
4703 background-color: #fcf8e3;
4704 }
4704 }
4705 a.list-group-item-warning {
4705 a.list-group-item-warning {
4706 color: #8a6d3b;
4706 color: #8a6d3b;
4707 }
4707 }
4708 a.list-group-item-warning .list-group-item-heading {
4708 a.list-group-item-warning .list-group-item-heading {
4709 color: inherit;
4709 color: inherit;
4710 }
4710 }
4711 a.list-group-item-warning:hover,
4711 a.list-group-item-warning:hover,
4712 a.list-group-item-warning:focus {
4712 a.list-group-item-warning:focus {
4713 color: #8a6d3b;
4713 color: #8a6d3b;
4714 background-color: #faf2cc;
4714 background-color: #faf2cc;
4715 }
4715 }
4716 a.list-group-item-warning.active,
4716 a.list-group-item-warning.active,
4717 a.list-group-item-warning.active:hover,
4717 a.list-group-item-warning.active:hover,
4718 a.list-group-item-warning.active:focus {
4718 a.list-group-item-warning.active:focus {
4719 color: #fff;
4719 color: #fff;
4720 background-color: #8a6d3b;
4720 background-color: #8a6d3b;
4721 border-color: #8a6d3b;
4721 border-color: #8a6d3b;
4722 }
4722 }
4723 .list-group-item-danger {
4723 .list-group-item-danger {
4724 color: #a94442;
4724 color: #a94442;
4725 background-color: #f2dede;
4725 background-color: #f2dede;
4726 }
4726 }
4727 a.list-group-item-danger {
4727 a.list-group-item-danger {
4728 color: #a94442;
4728 color: #a94442;
4729 }
4729 }
4730 a.list-group-item-danger .list-group-item-heading {
4730 a.list-group-item-danger .list-group-item-heading {
4731 color: inherit;
4731 color: inherit;
4732 }
4732 }
4733 a.list-group-item-danger:hover,
4733 a.list-group-item-danger:hover,
4734 a.list-group-item-danger:focus {
4734 a.list-group-item-danger:focus {
4735 color: #a94442;
4735 color: #a94442;
4736 background-color: #ebcccc;
4736 background-color: #ebcccc;
4737 }
4737 }
4738 a.list-group-item-danger.active,
4738 a.list-group-item-danger.active,
4739 a.list-group-item-danger.active:hover,
4739 a.list-group-item-danger.active:hover,
4740 a.list-group-item-danger.active:focus {
4740 a.list-group-item-danger.active:focus {
4741 color: #fff;
4741 color: #fff;
4742 background-color: #a94442;
4742 background-color: #a94442;
4743 border-color: #a94442;
4743 border-color: #a94442;
4744 }
4744 }
4745 .list-group-item-heading {
4745 .list-group-item-heading {
4746 margin-top: 0;
4746 margin-top: 0;
4747 margin-bottom: 5px;
4747 margin-bottom: 5px;
4748 }
4748 }
4749 .list-group-item-text {
4749 .list-group-item-text {
4750 margin-bottom: 0;
4750 margin-bottom: 0;
4751 line-height: 1.3;
4751 line-height: 1.3;
4752 }
4752 }
4753 .panel {
4753 .panel {
4754 margin-bottom: 18px;
4754 margin-bottom: 18px;
4755 background-color: #ffffff;
4755 background-color: #ffffff;
4756 border: 1px solid transparent;
4756 border: 1px solid transparent;
4757 border-radius: 4px;
4757 border-radius: 4px;
4758 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4758 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4759 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4759 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4760 }
4760 }
4761 .panel-body {
4761 .panel-body {
4762 padding: 15px;
4762 padding: 15px;
4763 }
4763 }
4764 .panel-heading {
4764 .panel-heading {
4765 padding: 10px 15px;
4765 padding: 10px 15px;
4766 border-bottom: 1px solid transparent;
4766 border-bottom: 1px solid transparent;
4767 border-top-right-radius: 3px;
4767 border-top-right-radius: 3px;
4768 border-top-left-radius: 3px;
4768 border-top-left-radius: 3px;
4769 }
4769 }
4770 .panel-heading > .dropdown .dropdown-toggle {
4770 .panel-heading > .dropdown .dropdown-toggle {
4771 color: inherit;
4771 color: inherit;
4772 }
4772 }
4773 .panel-title {
4773 .panel-title {
4774 margin-top: 0;
4774 margin-top: 0;
4775 margin-bottom: 0;
4775 margin-bottom: 0;
4776 font-size: 15px;
4776 font-size: 15px;
4777 color: inherit;
4777 color: inherit;
4778 }
4778 }
4779 .panel-title > a {
4779 .panel-title > a {
4780 color: inherit;
4780 color: inherit;
4781 }
4781 }
4782 .panel-footer {
4782 .panel-footer {
4783 padding: 10px 15px;
4783 padding: 10px 15px;
4784 background-color: #f5f5f5;
4784 background-color: #f5f5f5;
4785 border-top: 1px solid #dddddd;
4785 border-top: 1px solid #dddddd;
4786 border-bottom-right-radius: 3px;
4786 border-bottom-right-radius: 3px;
4787 border-bottom-left-radius: 3px;
4787 border-bottom-left-radius: 3px;
4788 }
4788 }
4789 .panel > .list-group {
4789 .panel > .list-group {
4790 margin-bottom: 0;
4790 margin-bottom: 0;
4791 }
4791 }
4792 .panel > .list-group .list-group-item {
4792 .panel > .list-group .list-group-item {
4793 border-width: 1px 0;
4793 border-width: 1px 0;
4794 border-radius: 0;
4794 border-radius: 0;
4795 }
4795 }
4796 .panel > .list-group:first-child .list-group-item:first-child {
4796 .panel > .list-group:first-child .list-group-item:first-child {
4797 border-top: 0;
4797 border-top: 0;
4798 border-top-right-radius: 3px;
4798 border-top-right-radius: 3px;
4799 border-top-left-radius: 3px;
4799 border-top-left-radius: 3px;
4800 }
4800 }
4801 .panel > .list-group:last-child .list-group-item:last-child {
4801 .panel > .list-group:last-child .list-group-item:last-child {
4802 border-bottom: 0;
4802 border-bottom: 0;
4803 border-bottom-right-radius: 3px;
4803 border-bottom-right-radius: 3px;
4804 border-bottom-left-radius: 3px;
4804 border-bottom-left-radius: 3px;
4805 }
4805 }
4806 .panel-heading + .list-group .list-group-item:first-child {
4806 .panel-heading + .list-group .list-group-item:first-child {
4807 border-top-width: 0;
4807 border-top-width: 0;
4808 }
4808 }
4809 .panel > .table,
4809 .panel > .table,
4810 .panel > .table-responsive > .table {
4810 .panel > .table-responsive > .table {
4811 margin-bottom: 0;
4811 margin-bottom: 0;
4812 }
4812 }
4813 .panel > .table:first-child,
4813 .panel > .table:first-child,
4814 .panel > .table-responsive:first-child > .table:first-child {
4814 .panel > .table-responsive:first-child > .table:first-child {
4815 border-top-right-radius: 3px;
4815 border-top-right-radius: 3px;
4816 border-top-left-radius: 3px;
4816 border-top-left-radius: 3px;
4817 }
4817 }
4818 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
4818 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
4819 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
4819 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
4820 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4820 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4821 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4821 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4822 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
4822 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
4823 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
4823 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
4824 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
4824 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
4825 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
4825 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
4826 border-top-left-radius: 3px;
4826 border-top-left-radius: 3px;
4827 }
4827 }
4828 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
4828 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
4829 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
4829 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
4830 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4830 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4831 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4831 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4832 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
4832 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
4833 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
4833 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
4834 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
4834 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
4835 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
4835 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
4836 border-top-right-radius: 3px;
4836 border-top-right-radius: 3px;
4837 }
4837 }
4838 .panel > .table:last-child,
4838 .panel > .table:last-child,
4839 .panel > .table-responsive:last-child > .table:last-child {
4839 .panel > .table-responsive:last-child > .table:last-child {
4840 border-bottom-right-radius: 3px;
4840 border-bottom-right-radius: 3px;
4841 border-bottom-left-radius: 3px;
4841 border-bottom-left-radius: 3px;
4842 }
4842 }
4843 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4843 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4844 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4844 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4845 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4845 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4846 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4846 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4847 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4847 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4848 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4848 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4849 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
4849 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
4850 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
4850 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
4851 border-bottom-left-radius: 3px;
4851 border-bottom-left-radius: 3px;
4852 }
4852 }
4853 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4853 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4854 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4854 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4855 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4855 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4856 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4856 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4857 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4857 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4858 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4858 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4859 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
4859 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
4860 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
4860 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
4861 border-bottom-right-radius: 3px;
4861 border-bottom-right-radius: 3px;
4862 }
4862 }
4863 .panel > .panel-body + .table,
4863 .panel > .panel-body + .table,
4864 .panel > .panel-body + .table-responsive {
4864 .panel > .panel-body + .table-responsive {
4865 border-top: 1px solid #dddddd;
4865 border-top: 1px solid #dddddd;
4866 }
4866 }
4867 .panel > .table > tbody:first-child > tr:first-child th,
4867 .panel > .table > tbody:first-child > tr:first-child th,
4868 .panel > .table > tbody:first-child > tr:first-child td {
4868 .panel > .table > tbody:first-child > tr:first-child td {
4869 border-top: 0;
4869 border-top: 0;
4870 }
4870 }
4871 .panel > .table-bordered,
4871 .panel > .table-bordered,
4872 .panel > .table-responsive > .table-bordered {
4872 .panel > .table-responsive > .table-bordered {
4873 border: 0;
4873 border: 0;
4874 }
4874 }
4875 .panel > .table-bordered > thead > tr > th:first-child,
4875 .panel > .table-bordered > thead > tr > th:first-child,
4876 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
4876 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
4877 .panel > .table-bordered > tbody > tr > th:first-child,
4877 .panel > .table-bordered > tbody > tr > th:first-child,
4878 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
4878 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
4879 .panel > .table-bordered > tfoot > tr > th:first-child,
4879 .panel > .table-bordered > tfoot > tr > th:first-child,
4880 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
4880 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
4881 .panel > .table-bordered > thead > tr > td:first-child,
4881 .panel > .table-bordered > thead > tr > td:first-child,
4882 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
4882 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
4883 .panel > .table-bordered > tbody > tr > td:first-child,
4883 .panel > .table-bordered > tbody > tr > td:first-child,
4884 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
4884 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
4885 .panel > .table-bordered > tfoot > tr > td:first-child,
4885 .panel > .table-bordered > tfoot > tr > td:first-child,
4886 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
4886 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
4887 border-left: 0;
4887 border-left: 0;
4888 }
4888 }
4889 .panel > .table-bordered > thead > tr > th:last-child,
4889 .panel > .table-bordered > thead > tr > th:last-child,
4890 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
4890 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
4891 .panel > .table-bordered > tbody > tr > th:last-child,
4891 .panel > .table-bordered > tbody > tr > th:last-child,
4892 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
4892 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
4893 .panel > .table-bordered > tfoot > tr > th:last-child,
4893 .panel > .table-bordered > tfoot > tr > th:last-child,
4894 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
4894 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
4895 .panel > .table-bordered > thead > tr > td:last-child,
4895 .panel > .table-bordered > thead > tr > td:last-child,
4896 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
4896 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
4897 .panel > .table-bordered > tbody > tr > td:last-child,
4897 .panel > .table-bordered > tbody > tr > td:last-child,
4898 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
4898 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
4899 .panel > .table-bordered > tfoot > tr > td:last-child,
4899 .panel > .table-bordered > tfoot > tr > td:last-child,
4900 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
4900 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
4901 border-right: 0;
4901 border-right: 0;
4902 }
4902 }
4903 .panel > .table-bordered > thead > tr:first-child > td,
4903 .panel > .table-bordered > thead > tr:first-child > td,
4904 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
4904 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
4905 .panel > .table-bordered > tbody > tr:first-child > td,
4905 .panel > .table-bordered > tbody > tr:first-child > td,
4906 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
4906 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
4907 .panel > .table-bordered > thead > tr:first-child > th,
4907 .panel > .table-bordered > thead > tr:first-child > th,
4908 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
4908 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
4909 .panel > .table-bordered > tbody > tr:first-child > th,
4909 .panel > .table-bordered > tbody > tr:first-child > th,
4910 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
4910 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
4911 border-bottom: 0;
4911 border-bottom: 0;
4912 }
4912 }
4913 .panel > .table-bordered > tbody > tr:last-child > td,
4913 .panel > .table-bordered > tbody > tr:last-child > td,
4914 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
4914 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
4915 .panel > .table-bordered > tfoot > tr:last-child > td,
4915 .panel > .table-bordered > tfoot > tr:last-child > td,
4916 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
4916 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
4917 .panel > .table-bordered > tbody > tr:last-child > th,
4917 .panel > .table-bordered > tbody > tr:last-child > th,
4918 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
4918 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
4919 .panel > .table-bordered > tfoot > tr:last-child > th,
4919 .panel > .table-bordered > tfoot > tr:last-child > th,
4920 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
4920 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
4921 border-bottom: 0;
4921 border-bottom: 0;
4922 }
4922 }
4923 .panel > .table-responsive {
4923 .panel > .table-responsive {
4924 border: 0;
4924 border: 0;
4925 margin-bottom: 0;
4925 margin-bottom: 0;
4926 }
4926 }
4927 .panel-group {
4927 .panel-group {
4928 margin-bottom: 18px;
4928 margin-bottom: 18px;
4929 }
4929 }
4930 .panel-group .panel {
4930 .panel-group .panel {
4931 margin-bottom: 0;
4931 margin-bottom: 0;
4932 border-radius: 4px;
4932 border-radius: 4px;
4933 overflow: hidden;
4933 overflow: hidden;
4934 }
4934 }
4935 .panel-group .panel + .panel {
4935 .panel-group .panel + .panel {
4936 margin-top: 5px;
4936 margin-top: 5px;
4937 }
4937 }
4938 .panel-group .panel-heading {
4938 .panel-group .panel-heading {
4939 border-bottom: 0;
4939 border-bottom: 0;
4940 }
4940 }
4941 .panel-group .panel-heading + .panel-collapse .panel-body {
4941 .panel-group .panel-heading + .panel-collapse .panel-body {
4942 border-top: 1px solid #dddddd;
4942 border-top: 1px solid #dddddd;
4943 }
4943 }
4944 .panel-group .panel-footer {
4944 .panel-group .panel-footer {
4945 border-top: 0;
4945 border-top: 0;
4946 }
4946 }
4947 .panel-group .panel-footer + .panel-collapse .panel-body {
4947 .panel-group .panel-footer + .panel-collapse .panel-body {
4948 border-bottom: 1px solid #dddddd;
4948 border-bottom: 1px solid #dddddd;
4949 }
4949 }
4950 .panel-default {
4950 .panel-default {
4951 border-color: #dddddd;
4951 border-color: #dddddd;
4952 }
4952 }
4953 .panel-default > .panel-heading {
4953 .panel-default > .panel-heading {
4954 color: #333333;
4954 color: #333333;
4955 background-color: #f5f5f5;
4955 background-color: #f5f5f5;
4956 border-color: #dddddd;
4956 border-color: #dddddd;
4957 }
4957 }
4958 .panel-default > .panel-heading + .panel-collapse .panel-body {
4958 .panel-default > .panel-heading + .panel-collapse .panel-body {
4959 border-top-color: #dddddd;
4959 border-top-color: #dddddd;
4960 }
4960 }
4961 .panel-default > .panel-footer + .panel-collapse .panel-body {
4961 .panel-default > .panel-footer + .panel-collapse .panel-body {
4962 border-bottom-color: #dddddd;
4962 border-bottom-color: #dddddd;
4963 }
4963 }
4964 .panel-primary {
4964 .panel-primary {
4965 border-color: #428bca;
4965 border-color: #428bca;
4966 }
4966 }
4967 .panel-primary > .panel-heading {
4967 .panel-primary > .panel-heading {
4968 color: #ffffff;
4968 color: #ffffff;
4969 background-color: #428bca;
4969 background-color: #428bca;
4970 border-color: #428bca;
4970 border-color: #428bca;
4971 }
4971 }
4972 .panel-primary > .panel-heading + .panel-collapse .panel-body {
4972 .panel-primary > .panel-heading + .panel-collapse .panel-body {
4973 border-top-color: #428bca;
4973 border-top-color: #428bca;
4974 }
4974 }
4975 .panel-primary > .panel-footer + .panel-collapse .panel-body {
4975 .panel-primary > .panel-footer + .panel-collapse .panel-body {
4976 border-bottom-color: #428bca;
4976 border-bottom-color: #428bca;
4977 }
4977 }
4978 .panel-success {
4978 .panel-success {
4979 border-color: #d6e9c6;
4979 border-color: #d6e9c6;
4980 }
4980 }
4981 .panel-success > .panel-heading {
4981 .panel-success > .panel-heading {
4982 color: #3c763d;
4982 color: #3c763d;
4983 background-color: #dff0d8;
4983 background-color: #dff0d8;
4984 border-color: #d6e9c6;
4984 border-color: #d6e9c6;
4985 }
4985 }
4986 .panel-success > .panel-heading + .panel-collapse .panel-body {
4986 .panel-success > .panel-heading + .panel-collapse .panel-body {
4987 border-top-color: #d6e9c6;
4987 border-top-color: #d6e9c6;
4988 }
4988 }
4989 .panel-success > .panel-footer + .panel-collapse .panel-body {
4989 .panel-success > .panel-footer + .panel-collapse .panel-body {
4990 border-bottom-color: #d6e9c6;
4990 border-bottom-color: #d6e9c6;
4991 }
4991 }
4992 .panel-info {
4992 .panel-info {
4993 border-color: #bce8f1;
4993 border-color: #bce8f1;
4994 }
4994 }
4995 .panel-info > .panel-heading {
4995 .panel-info > .panel-heading {
4996 color: #31708f;
4996 color: #31708f;
4997 background-color: #d9edf7;
4997 background-color: #d9edf7;
4998 border-color: #bce8f1;
4998 border-color: #bce8f1;
4999 }
4999 }
5000 .panel-info > .panel-heading + .panel-collapse .panel-body {
5000 .panel-info > .panel-heading + .panel-collapse .panel-body {
5001 border-top-color: #bce8f1;
5001 border-top-color: #bce8f1;
5002 }
5002 }
5003 .panel-info > .panel-footer + .panel-collapse .panel-body {
5003 .panel-info > .panel-footer + .panel-collapse .panel-body {
5004 border-bottom-color: #bce8f1;
5004 border-bottom-color: #bce8f1;
5005 }
5005 }
5006 .panel-warning {
5006 .panel-warning {
5007 border-color: #faebcc;
5007 border-color: #faebcc;
5008 }
5008 }
5009 .panel-warning > .panel-heading {
5009 .panel-warning > .panel-heading {
5010 color: #8a6d3b;
5010 color: #8a6d3b;
5011 background-color: #fcf8e3;
5011 background-color: #fcf8e3;
5012 border-color: #faebcc;
5012 border-color: #faebcc;
5013 }
5013 }
5014 .panel-warning > .panel-heading + .panel-collapse .panel-body {
5014 .panel-warning > .panel-heading + .panel-collapse .panel-body {
5015 border-top-color: #faebcc;
5015 border-top-color: #faebcc;
5016 }
5016 }
5017 .panel-warning > .panel-footer + .panel-collapse .panel-body {
5017 .panel-warning > .panel-footer + .panel-collapse .panel-body {
5018 border-bottom-color: #faebcc;
5018 border-bottom-color: #faebcc;
5019 }
5019 }
5020 .panel-danger {
5020 .panel-danger {
5021 border-color: #ebccd1;
5021 border-color: #ebccd1;
5022 }
5022 }
5023 .panel-danger > .panel-heading {
5023 .panel-danger > .panel-heading {
5024 color: #a94442;
5024 color: #a94442;
5025 background-color: #f2dede;
5025 background-color: #f2dede;
5026 border-color: #ebccd1;
5026 border-color: #ebccd1;
5027 }
5027 }
5028 .panel-danger > .panel-heading + .panel-collapse .panel-body {
5028 .panel-danger > .panel-heading + .panel-collapse .panel-body {
5029 border-top-color: #ebccd1;
5029 border-top-color: #ebccd1;
5030 }
5030 }
5031 .panel-danger > .panel-footer + .panel-collapse .panel-body {
5031 .panel-danger > .panel-footer + .panel-collapse .panel-body {
5032 border-bottom-color: #ebccd1;
5032 border-bottom-color: #ebccd1;
5033 }
5033 }
5034 .well {
5034 .well {
5035 min-height: 20px;
5035 min-height: 20px;
5036 padding: 19px;
5036 padding: 19px;
5037 margin-bottom: 20px;
5037 margin-bottom: 20px;
5038 background-color: #f5f5f5;
5038 background-color: #f5f5f5;
5039 border: 1px solid #e3e3e3;
5039 border: 1px solid #e3e3e3;
5040 border-radius: 4px;
5040 border-radius: 4px;
5041 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5041 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5042 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5042 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5043 }
5043 }
5044 .well blockquote {
5044 .well blockquote {
5045 border-color: #ddd;
5045 border-color: #ddd;
5046 border-color: rgba(0, 0, 0, 0.15);
5046 border-color: rgba(0, 0, 0, 0.15);
5047 }
5047 }
5048 .well-lg {
5048 .well-lg {
5049 padding: 24px;
5049 padding: 24px;
5050 border-radius: 6px;
5050 border-radius: 6px;
5051 }
5051 }
5052 .well-sm {
5052 .well-sm {
5053 padding: 9px;
5053 padding: 9px;
5054 border-radius: 3px;
5054 border-radius: 3px;
5055 }
5055 }
5056 .close {
5056 .close {
5057 float: right;
5057 float: right;
5058 font-size: 19.5px;
5058 font-size: 19.5px;
5059 font-weight: bold;
5059 font-weight: bold;
5060 line-height: 1;
5060 line-height: 1;
5061 color: #000000;
5061 color: #000000;
5062 text-shadow: 0 1px 0 #ffffff;
5062 text-shadow: 0 1px 0 #ffffff;
5063 opacity: 0.2;
5063 opacity: 0.2;
5064 filter: alpha(opacity=20);
5064 filter: alpha(opacity=20);
5065 }
5065 }
5066 .close:hover,
5066 .close:hover,
5067 .close:focus {
5067 .close:focus {
5068 color: #000000;
5068 color: #000000;
5069 text-decoration: none;
5069 text-decoration: none;
5070 cursor: pointer;
5070 cursor: pointer;
5071 opacity: 0.5;
5071 opacity: 0.5;
5072 filter: alpha(opacity=50);
5072 filter: alpha(opacity=50);
5073 }
5073 }
5074 button.close {
5074 button.close {
5075 padding: 0;
5075 padding: 0;
5076 cursor: pointer;
5076 cursor: pointer;
5077 background: transparent;
5077 background: transparent;
5078 border: 0;
5078 border: 0;
5079 -webkit-appearance: none;
5079 -webkit-appearance: none;
5080 }
5080 }
5081 .modal-open {
5081 .modal-open {
5082 overflow: hidden;
5082 overflow: hidden;
5083 }
5083 }
5084 .modal {
5084 .modal {
5085 display: none;
5085 display: none;
5086 overflow: auto;
5086 overflow: auto;
5087 overflow-y: scroll;
5087 overflow-y: scroll;
5088 position: fixed;
5088 position: fixed;
5089 top: 0;
5089 top: 0;
5090 right: 0;
5090 right: 0;
5091 bottom: 0;
5091 bottom: 0;
5092 left: 0;
5092 left: 0;
5093 z-index: 1050;
5093 z-index: 1050;
5094 -webkit-overflow-scrolling: touch;
5094 -webkit-overflow-scrolling: touch;
5095 outline: 0;
5095 outline: 0;
5096 }
5096 }
5097 .modal.fade .modal-dialog {
5097 .modal.fade .modal-dialog {
5098 -webkit-transform: translate(0, -25%);
5098 -webkit-transform: translate(0, -25%);
5099 -ms-transform: translate(0, -25%);
5099 -ms-transform: translate(0, -25%);
5100 transform: translate(0, -25%);
5100 transform: translate(0, -25%);
5101 -webkit-transition: -webkit-transform 0.3s ease-out;
5101 -webkit-transition: -webkit-transform 0.3s ease-out;
5102 -moz-transition: -moz-transform 0.3s ease-out;
5102 -moz-transition: -moz-transform 0.3s ease-out;
5103 -o-transition: -o-transform 0.3s ease-out;
5103 -o-transition: -o-transform 0.3s ease-out;
5104 transition: transform 0.3s ease-out;
5104 transition: transform 0.3s ease-out;
5105 }
5105 }
5106 .modal.in .modal-dialog {
5106 .modal.in .modal-dialog {
5107 -webkit-transform: translate(0, 0);
5107 -webkit-transform: translate(0, 0);
5108 -ms-transform: translate(0, 0);
5108 -ms-transform: translate(0, 0);
5109 transform: translate(0, 0);
5109 transform: translate(0, 0);
5110 }
5110 }
5111 .modal-dialog {
5111 .modal-dialog {
5112 position: relative;
5112 position: relative;
5113 width: auto;
5113 width: auto;
5114 margin: 10px;
5114 margin: 10px;
5115 }
5115 }
5116 .modal-content {
5116 .modal-content {
5117 position: relative;
5117 position: relative;
5118 background-color: #ffffff;
5118 background-color: #ffffff;
5119 border: 1px solid #999999;
5119 border: 1px solid #999999;
5120 border: 1px solid rgba(0, 0, 0, 0.2);
5120 border: 1px solid rgba(0, 0, 0, 0.2);
5121 border-radius: 6px;
5121 border-radius: 6px;
5122 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5122 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5123 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5123 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5124 background-clip: padding-box;
5124 background-clip: padding-box;
5125 outline: none;
5125 outline: none;
5126 }
5126 }
5127 .modal-backdrop {
5127 .modal-backdrop {
5128 position: fixed;
5128 position: fixed;
5129 top: 0;
5129 top: 0;
5130 right: 0;
5130 right: 0;
5131 bottom: 0;
5131 bottom: 0;
5132 left: 0;
5132 left: 0;
5133 z-index: 1040;
5133 z-index: 1040;
5134 background-color: #000000;
5134 background-color: #000000;
5135 }
5135 }
5136 .modal-backdrop.fade {
5136 .modal-backdrop.fade {
5137 opacity: 0;
5137 opacity: 0;
5138 filter: alpha(opacity=0);
5138 filter: alpha(opacity=0);
5139 }
5139 }
5140 .modal-backdrop.in {
5140 .modal-backdrop.in {
5141 opacity: 0.5;
5141 opacity: 0.5;
5142 filter: alpha(opacity=50);
5142 filter: alpha(opacity=50);
5143 }
5143 }
5144 .modal-header {
5144 .modal-header {
5145 padding: 15px;
5145 padding: 15px;
5146 border-bottom: 1px solid #e5e5e5;
5146 border-bottom: 1px solid #e5e5e5;
5147 min-height: 16.42857143px;
5147 min-height: 16.42857143px;
5148 }
5148 }
5149 .modal-header .close {
5149 .modal-header .close {
5150 margin-top: -2px;
5150 margin-top: -2px;
5151 }
5151 }
5152 .modal-title {
5152 .modal-title {
5153 margin: 0;
5153 margin: 0;
5154 line-height: 1.42857143;
5154 line-height: 1.42857143;
5155 }
5155 }
5156 .modal-body {
5156 .modal-body {
5157 position: relative;
5157 position: relative;
5158 padding: 15px;
5158 padding: 15px;
5159 }
5159 }
5160 .modal-footer {
5160 .modal-footer {
5161 margin-top: 15px;
5161 margin-top: 15px;
5162 padding: 14px 15px 15px;
5162 padding: 14px 15px 15px;
5163 text-align: right;
5163 text-align: right;
5164 border-top: 1px solid #e5e5e5;
5164 border-top: 1px solid #e5e5e5;
5165 }
5165 }
5166 .modal-footer .btn + .btn {
5166 .modal-footer .btn + .btn {
5167 margin-left: 5px;
5167 margin-left: 5px;
5168 margin-bottom: 0;
5168 margin-bottom: 0;
5169 }
5169 }
5170 .modal-footer .btn-group .btn + .btn {
5170 .modal-footer .btn-group .btn + .btn {
5171 margin-left: -1px;
5171 margin-left: -1px;
5172 }
5172 }
5173 .modal-footer .btn-block + .btn-block {
5173 .modal-footer .btn-block + .btn-block {
5174 margin-left: 0;
5174 margin-left: 0;
5175 }
5175 }
5176 @media (min-width: 768px) {
5176 @media (min-width: 768px) {
5177 .modal-dialog {
5177 .modal-dialog {
5178 width: 600px;
5178 width: 600px;
5179 margin: 30px auto;
5179 margin: 30px auto;
5180 }
5180 }
5181 .modal-content {
5181 .modal-content {
5182 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5182 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5183 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5183 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5184 }
5184 }
5185 .modal-sm {
5185 .modal-sm {
5186 width: 300px;
5186 width: 300px;
5187 }
5187 }
5188 }
5188 }
5189 @media (min-width: 992px) {
5189 @media (min-width: 992px) {
5190 .modal-lg {
5190 .modal-lg {
5191 width: 900px;
5191 width: 900px;
5192 }
5192 }
5193 }
5193 }
5194 .tooltip {
5194 .tooltip {
5195 position: absolute;
5195 position: absolute;
5196 z-index: 1030;
5196 z-index: 1030;
5197 display: block;
5197 display: block;
5198 visibility: visible;
5198 visibility: visible;
5199 font-size: 12px;
5199 font-size: 12px;
5200 line-height: 1.4;
5200 line-height: 1.4;
5201 opacity: 0;
5201 opacity: 0;
5202 filter: alpha(opacity=0);
5202 filter: alpha(opacity=0);
5203 }
5203 }
5204 .tooltip.in {
5204 .tooltip.in {
5205 opacity: 0.9;
5205 opacity: 0.9;
5206 filter: alpha(opacity=90);
5206 filter: alpha(opacity=90);
5207 }
5207 }
5208 .tooltip.top {
5208 .tooltip.top {
5209 margin-top: -3px;
5209 margin-top: -3px;
5210 padding: 5px 0;
5210 padding: 5px 0;
5211 }
5211 }
5212 .tooltip.right {
5212 .tooltip.right {
5213 margin-left: 3px;
5213 margin-left: 3px;
5214 padding: 0 5px;
5214 padding: 0 5px;
5215 }
5215 }
5216 .tooltip.bottom {
5216 .tooltip.bottom {
5217 margin-top: 3px;
5217 margin-top: 3px;
5218 padding: 5px 0;
5218 padding: 5px 0;
5219 }
5219 }
5220 .tooltip.left {
5220 .tooltip.left {
5221 margin-left: -3px;
5221 margin-left: -3px;
5222 padding: 0 5px;
5222 padding: 0 5px;
5223 }
5223 }
5224 .tooltip-inner {
5224 .tooltip-inner {
5225 max-width: 200px;
5225 max-width: 200px;
5226 padding: 3px 8px;
5226 padding: 3px 8px;
5227 color: #ffffff;
5227 color: #ffffff;
5228 text-align: center;
5228 text-align: center;
5229 text-decoration: none;
5229 text-decoration: none;
5230 background-color: #000000;
5230 background-color: #000000;
5231 border-radius: 4px;
5231 border-radius: 4px;
5232 }
5232 }
5233 .tooltip-arrow {
5233 .tooltip-arrow {
5234 position: absolute;
5234 position: absolute;
5235 width: 0;
5235 width: 0;
5236 height: 0;
5236 height: 0;
5237 border-color: transparent;
5237 border-color: transparent;
5238 border-style: solid;
5238 border-style: solid;
5239 }
5239 }
5240 .tooltip.top .tooltip-arrow {
5240 .tooltip.top .tooltip-arrow {
5241 bottom: 0;
5241 bottom: 0;
5242 left: 50%;
5242 left: 50%;
5243 margin-left: -5px;
5243 margin-left: -5px;
5244 border-width: 5px 5px 0;
5244 border-width: 5px 5px 0;
5245 border-top-color: #000000;
5245 border-top-color: #000000;
5246 }
5246 }
5247 .tooltip.top-left .tooltip-arrow {
5247 .tooltip.top-left .tooltip-arrow {
5248 bottom: 0;
5248 bottom: 0;
5249 left: 5px;
5249 left: 5px;
5250 border-width: 5px 5px 0;
5250 border-width: 5px 5px 0;
5251 border-top-color: #000000;
5251 border-top-color: #000000;
5252 }
5252 }
5253 .tooltip.top-right .tooltip-arrow {
5253 .tooltip.top-right .tooltip-arrow {
5254 bottom: 0;
5254 bottom: 0;
5255 right: 5px;
5255 right: 5px;
5256 border-width: 5px 5px 0;
5256 border-width: 5px 5px 0;
5257 border-top-color: #000000;
5257 border-top-color: #000000;
5258 }
5258 }
5259 .tooltip.right .tooltip-arrow {
5259 .tooltip.right .tooltip-arrow {
5260 top: 50%;
5260 top: 50%;
5261 left: 0;
5261 left: 0;
5262 margin-top: -5px;
5262 margin-top: -5px;
5263 border-width: 5px 5px 5px 0;
5263 border-width: 5px 5px 5px 0;
5264 border-right-color: #000000;
5264 border-right-color: #000000;
5265 }
5265 }
5266 .tooltip.left .tooltip-arrow {
5266 .tooltip.left .tooltip-arrow {
5267 top: 50%;
5267 top: 50%;
5268 right: 0;
5268 right: 0;
5269 margin-top: -5px;
5269 margin-top: -5px;
5270 border-width: 5px 0 5px 5px;
5270 border-width: 5px 0 5px 5px;
5271 border-left-color: #000000;
5271 border-left-color: #000000;
5272 }
5272 }
5273 .tooltip.bottom .tooltip-arrow {
5273 .tooltip.bottom .tooltip-arrow {
5274 top: 0;
5274 top: 0;
5275 left: 50%;
5275 left: 50%;
5276 margin-left: -5px;
5276 margin-left: -5px;
5277 border-width: 0 5px 5px;
5277 border-width: 0 5px 5px;
5278 border-bottom-color: #000000;
5278 border-bottom-color: #000000;
5279 }
5279 }
5280 .tooltip.bottom-left .tooltip-arrow {
5280 .tooltip.bottom-left .tooltip-arrow {
5281 top: 0;
5281 top: 0;
5282 left: 5px;
5282 left: 5px;
5283 border-width: 0 5px 5px;
5283 border-width: 0 5px 5px;
5284 border-bottom-color: #000000;
5284 border-bottom-color: #000000;
5285 }
5285 }
5286 .tooltip.bottom-right .tooltip-arrow {
5286 .tooltip.bottom-right .tooltip-arrow {
5287 top: 0;
5287 top: 0;
5288 right: 5px;
5288 right: 5px;
5289 border-width: 0 5px 5px;
5289 border-width: 0 5px 5px;
5290 border-bottom-color: #000000;
5290 border-bottom-color: #000000;
5291 }
5291 }
5292 .popover {
5292 .popover {
5293 position: absolute;
5293 position: absolute;
5294 top: 0;
5294 top: 0;
5295 left: 0;
5295 left: 0;
5296 z-index: 1010;
5296 z-index: 1010;
5297 display: none;
5297 display: none;
5298 max-width: 276px;
5298 max-width: 276px;
5299 padding: 1px;
5299 padding: 1px;
5300 text-align: left;
5300 text-align: left;
5301 background-color: #ffffff;
5301 background-color: #ffffff;
5302 background-clip: padding-box;
5302 background-clip: padding-box;
5303 border: 1px solid #cccccc;
5303 border: 1px solid #cccccc;
5304 border: 1px solid rgba(0, 0, 0, 0.2);
5304 border: 1px solid rgba(0, 0, 0, 0.2);
5305 border-radius: 6px;
5305 border-radius: 6px;
5306 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5306 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5307 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5307 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5308 white-space: normal;
5308 white-space: normal;
5309 }
5309 }
5310 .popover.top {
5310 .popover.top {
5311 margin-top: -10px;
5311 margin-top: -10px;
5312 }
5312 }
5313 .popover.right {
5313 .popover.right {
5314 margin-left: 10px;
5314 margin-left: 10px;
5315 }
5315 }
5316 .popover.bottom {
5316 .popover.bottom {
5317 margin-top: 10px;
5317 margin-top: 10px;
5318 }
5318 }
5319 .popover.left {
5319 .popover.left {
5320 margin-left: -10px;
5320 margin-left: -10px;
5321 }
5321 }
5322 .popover-title {
5322 .popover-title {
5323 margin: 0;
5323 margin: 0;
5324 padding: 8px 14px;
5324 padding: 8px 14px;
5325 font-size: 13px;
5325 font-size: 13px;
5326 font-weight: normal;
5326 font-weight: normal;
5327 line-height: 18px;
5327 line-height: 18px;
5328 background-color: #f7f7f7;
5328 background-color: #f7f7f7;
5329 border-bottom: 1px solid #ebebeb;
5329 border-bottom: 1px solid #ebebeb;
5330 border-radius: 5px 5px 0 0;
5330 border-radius: 5px 5px 0 0;
5331 }
5331 }
5332 .popover-content {
5332 .popover-content {
5333 padding: 9px 14px;
5333 padding: 9px 14px;
5334 }
5334 }
5335 .popover > .arrow,
5335 .popover > .arrow,
5336 .popover > .arrow:after {
5336 .popover > .arrow:after {
5337 position: absolute;
5337 position: absolute;
5338 display: block;
5338 display: block;
5339 width: 0;
5339 width: 0;
5340 height: 0;
5340 height: 0;
5341 border-color: transparent;
5341 border-color: transparent;
5342 border-style: solid;
5342 border-style: solid;
5343 }
5343 }
5344 .popover > .arrow {
5344 .popover > .arrow {
5345 border-width: 11px;
5345 border-width: 11px;
5346 }
5346 }
5347 .popover > .arrow:after {
5347 .popover > .arrow:after {
5348 border-width: 10px;
5348 border-width: 10px;
5349 content: "";
5349 content: "";
5350 }
5350 }
5351 .popover.top > .arrow {
5351 .popover.top > .arrow {
5352 left: 50%;
5352 left: 50%;
5353 margin-left: -11px;
5353 margin-left: -11px;
5354 border-bottom-width: 0;
5354 border-bottom-width: 0;
5355 border-top-color: #999999;
5355 border-top-color: #999999;
5356 border-top-color: rgba(0, 0, 0, 0.25);
5356 border-top-color: rgba(0, 0, 0, 0.25);
5357 bottom: -11px;
5357 bottom: -11px;
5358 }
5358 }
5359 .popover.top > .arrow:after {
5359 .popover.top > .arrow:after {
5360 content: " ";
5360 content: " ";
5361 bottom: 1px;
5361 bottom: 1px;
5362 margin-left: -10px;
5362 margin-left: -10px;
5363 border-bottom-width: 0;
5363 border-bottom-width: 0;
5364 border-top-color: #ffffff;
5364 border-top-color: #ffffff;
5365 }
5365 }
5366 .popover.right > .arrow {
5366 .popover.right > .arrow {
5367 top: 50%;
5367 top: 50%;
5368 left: -11px;
5368 left: -11px;
5369 margin-top: -11px;
5369 margin-top: -11px;
5370 border-left-width: 0;
5370 border-left-width: 0;
5371 border-right-color: #999999;
5371 border-right-color: #999999;
5372 border-right-color: rgba(0, 0, 0, 0.25);
5372 border-right-color: rgba(0, 0, 0, 0.25);
5373 }
5373 }
5374 .popover.right > .arrow:after {
5374 .popover.right > .arrow:after {
5375 content: " ";
5375 content: " ";
5376 left: 1px;
5376 left: 1px;
5377 bottom: -10px;
5377 bottom: -10px;
5378 border-left-width: 0;
5378 border-left-width: 0;
5379 border-right-color: #ffffff;
5379 border-right-color: #ffffff;
5380 }
5380 }
5381 .popover.bottom > .arrow {
5381 .popover.bottom > .arrow {
5382 left: 50%;
5382 left: 50%;
5383 margin-left: -11px;
5383 margin-left: -11px;
5384 border-top-width: 0;
5384 border-top-width: 0;
5385 border-bottom-color: #999999;
5385 border-bottom-color: #999999;
5386 border-bottom-color: rgba(0, 0, 0, 0.25);
5386 border-bottom-color: rgba(0, 0, 0, 0.25);
5387 top: -11px;
5387 top: -11px;
5388 }
5388 }
5389 .popover.bottom > .arrow:after {
5389 .popover.bottom > .arrow:after {
5390 content: " ";
5390 content: " ";
5391 top: 1px;
5391 top: 1px;
5392 margin-left: -10px;
5392 margin-left: -10px;
5393 border-top-width: 0;
5393 border-top-width: 0;
5394 border-bottom-color: #ffffff;
5394 border-bottom-color: #ffffff;
5395 }
5395 }
5396 .popover.left > .arrow {
5396 .popover.left > .arrow {
5397 top: 50%;
5397 top: 50%;
5398 right: -11px;
5398 right: -11px;
5399 margin-top: -11px;
5399 margin-top: -11px;
5400 border-right-width: 0;
5400 border-right-width: 0;
5401 border-left-color: #999999;
5401 border-left-color: #999999;
5402 border-left-color: rgba(0, 0, 0, 0.25);
5402 border-left-color: rgba(0, 0, 0, 0.25);
5403 }
5403 }
5404 .popover.left > .arrow:after {
5404 .popover.left > .arrow:after {
5405 content: " ";
5405 content: " ";
5406 right: 1px;
5406 right: 1px;
5407 border-right-width: 0;
5407 border-right-width: 0;
5408 border-left-color: #ffffff;
5408 border-left-color: #ffffff;
5409 bottom: -10px;
5409 bottom: -10px;
5410 }
5410 }
5411 .carousel {
5411 .carousel {
5412 position: relative;
5412 position: relative;
5413 }
5413 }
5414 .carousel-inner {
5414 .carousel-inner {
5415 position: relative;
5415 position: relative;
5416 overflow: hidden;
5416 overflow: hidden;
5417 width: 100%;
5417 width: 100%;
5418 }
5418 }
5419 .carousel-inner > .item {
5419 .carousel-inner > .item {
5420 display: none;
5420 display: none;
5421 position: relative;
5421 position: relative;
5422 -webkit-transition: 0.6s ease-in-out left;
5422 -webkit-transition: 0.6s ease-in-out left;
5423 transition: 0.6s ease-in-out left;
5423 transition: 0.6s ease-in-out left;
5424 }
5424 }
5425 .carousel-inner > .item > img,
5425 .carousel-inner > .item > img,
5426 .carousel-inner > .item > a > img {
5426 .carousel-inner > .item > a > img {
5427 line-height: 1;
5427 line-height: 1;
5428 }
5428 }
5429 .carousel-inner > .active,
5429 .carousel-inner > .active,
5430 .carousel-inner > .next,
5430 .carousel-inner > .next,
5431 .carousel-inner > .prev {
5431 .carousel-inner > .prev {
5432 display: block;
5432 display: block;
5433 }
5433 }
5434 .carousel-inner > .active {
5434 .carousel-inner > .active {
5435 left: 0;
5435 left: 0;
5436 }
5436 }
5437 .carousel-inner > .next,
5437 .carousel-inner > .next,
5438 .carousel-inner > .prev {
5438 .carousel-inner > .prev {
5439 position: absolute;
5439 position: absolute;
5440 top: 0;
5440 top: 0;
5441 width: 100%;
5441 width: 100%;
5442 }
5442 }
5443 .carousel-inner > .next {
5443 .carousel-inner > .next {
5444 left: 100%;
5444 left: 100%;
5445 }
5445 }
5446 .carousel-inner > .prev {
5446 .carousel-inner > .prev {
5447 left: -100%;
5447 left: -100%;
5448 }
5448 }
5449 .carousel-inner > .next.left,
5449 .carousel-inner > .next.left,
5450 .carousel-inner > .prev.right {
5450 .carousel-inner > .prev.right {
5451 left: 0;
5451 left: 0;
5452 }
5452 }
5453 .carousel-inner > .active.left {
5453 .carousel-inner > .active.left {
5454 left: -100%;
5454 left: -100%;
5455 }
5455 }
5456 .carousel-inner > .active.right {
5456 .carousel-inner > .active.right {
5457 left: 100%;
5457 left: 100%;
5458 }
5458 }
5459 .carousel-control {
5459 .carousel-control {
5460 position: absolute;
5460 position: absolute;
5461 top: 0;
5461 top: 0;
5462 left: 0;
5462 left: 0;
5463 bottom: 0;
5463 bottom: 0;
5464 width: 15%;
5464 width: 15%;
5465 opacity: 0.5;
5465 opacity: 0.5;
5466 filter: alpha(opacity=50);
5466 filter: alpha(opacity=50);
5467 font-size: 20px;
5467 font-size: 20px;
5468 color: #ffffff;
5468 color: #ffffff;
5469 text-align: center;
5469 text-align: center;
5470 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5470 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5471 }
5471 }
5472 .carousel-control.left {
5472 .carousel-control.left {
5473 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));
5473 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));
5474 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5474 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5475 background-repeat: repeat-x;
5475 background-repeat: repeat-x;
5476 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5476 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5477 }
5477 }
5478 .carousel-control.right {
5478 .carousel-control.right {
5479 left: auto;
5479 left: auto;
5480 right: 0;
5480 right: 0;
5481 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));
5481 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));
5482 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5482 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5483 background-repeat: repeat-x;
5483 background-repeat: repeat-x;
5484 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5484 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5485 }
5485 }
5486 .carousel-control:hover,
5486 .carousel-control:hover,
5487 .carousel-control:focus {
5487 .carousel-control:focus {
5488 outline: none;
5488 outline: none;
5489 color: #ffffff;
5489 color: #ffffff;
5490 text-decoration: none;
5490 text-decoration: none;
5491 opacity: 0.9;
5491 opacity: 0.9;
5492 filter: alpha(opacity=90);
5492 filter: alpha(opacity=90);
5493 }
5493 }
5494 .carousel-control .icon-prev,
5494 .carousel-control .icon-prev,
5495 .carousel-control .icon-next,
5495 .carousel-control .icon-next,
5496 .carousel-control .glyphicon-chevron-left,
5496 .carousel-control .glyphicon-chevron-left,
5497 .carousel-control .glyphicon-chevron-right {
5497 .carousel-control .glyphicon-chevron-right {
5498 position: absolute;
5498 position: absolute;
5499 top: 50%;
5499 top: 50%;
5500 z-index: 5;
5500 z-index: 5;
5501 display: inline-block;
5501 display: inline-block;
5502 }
5502 }
5503 .carousel-control .icon-prev,
5503 .carousel-control .icon-prev,
5504 .carousel-control .glyphicon-chevron-left {
5504 .carousel-control .glyphicon-chevron-left {
5505 left: 50%;
5505 left: 50%;
5506 }
5506 }
5507 .carousel-control .icon-next,
5507 .carousel-control .icon-next,
5508 .carousel-control .glyphicon-chevron-right {
5508 .carousel-control .glyphicon-chevron-right {
5509 right: 50%;
5509 right: 50%;
5510 }
5510 }
5511 .carousel-control .icon-prev,
5511 .carousel-control .icon-prev,
5512 .carousel-control .icon-next {
5512 .carousel-control .icon-next {
5513 width: 20px;
5513 width: 20px;
5514 height: 20px;
5514 height: 20px;
5515 margin-top: -10px;
5515 margin-top: -10px;
5516 margin-left: -10px;
5516 margin-left: -10px;
5517 font-family: serif;
5517 font-family: serif;
5518 }
5518 }
5519 .carousel-control .icon-prev:before {
5519 .carousel-control .icon-prev:before {
5520 content: '\2039';
5520 content: '\2039';
5521 }
5521 }
5522 .carousel-control .icon-next:before {
5522 .carousel-control .icon-next:before {
5523 content: '\203a';
5523 content: '\203a';
5524 }
5524 }
5525 .carousel-indicators {
5525 .carousel-indicators {
5526 position: absolute;
5526 position: absolute;
5527 bottom: 10px;
5527 bottom: 10px;
5528 left: 50%;
5528 left: 50%;
5529 z-index: 15;
5529 z-index: 15;
5530 width: 60%;
5530 width: 60%;
5531 margin-left: -30%;
5531 margin-left: -30%;
5532 padding-left: 0;
5532 padding-left: 0;
5533 list-style: none;
5533 list-style: none;
5534 text-align: center;
5534 text-align: center;
5535 }
5535 }
5536 .carousel-indicators li {
5536 .carousel-indicators li {
5537 display: inline-block;
5537 display: inline-block;
5538 width: 10px;
5538 width: 10px;
5539 height: 10px;
5539 height: 10px;
5540 margin: 1px;
5540 margin: 1px;
5541 text-indent: -999px;
5541 text-indent: -999px;
5542 border: 1px solid #ffffff;
5542 border: 1px solid #ffffff;
5543 border-radius: 10px;
5543 border-radius: 10px;
5544 cursor: pointer;
5544 cursor: pointer;
5545 background-color: #000 \9;
5545 background-color: #000 \9;
5546 background-color: rgba(0, 0, 0, 0);
5546 background-color: rgba(0, 0, 0, 0);
5547 }
5547 }
5548 .carousel-indicators .active {
5548 .carousel-indicators .active {
5549 margin: 0;
5549 margin: 0;
5550 width: 12px;
5550 width: 12px;
5551 height: 12px;
5551 height: 12px;
5552 background-color: #ffffff;
5552 background-color: #ffffff;
5553 }
5553 }
5554 .carousel-caption {
5554 .carousel-caption {
5555 position: absolute;
5555 position: absolute;
5556 left: 15%;
5556 left: 15%;
5557 right: 15%;
5557 right: 15%;
5558 bottom: 20px;
5558 bottom: 20px;
5559 z-index: 10;
5559 z-index: 10;
5560 padding-top: 20px;
5560 padding-top: 20px;
5561 padding-bottom: 20px;
5561 padding-bottom: 20px;
5562 color: #ffffff;
5562 color: #ffffff;
5563 text-align: center;
5563 text-align: center;
5564 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5564 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5565 }
5565 }
5566 .carousel-caption .btn {
5566 .carousel-caption .btn {
5567 text-shadow: none;
5567 text-shadow: none;
5568 }
5568 }
5569 @media screen and (min-width: 768px) {
5569 @media screen and (min-width: 768px) {
5570 .carousel-control .glyphicon-chevron-left,
5570 .carousel-control .glyphicon-chevron-left,
5571 .carousel-control .glyphicon-chevron-right,
5571 .carousel-control .glyphicon-chevron-right,
5572 .carousel-control .icon-prev,
5572 .carousel-control .icon-prev,
5573 .carousel-control .icon-next {
5573 .carousel-control .icon-next {
5574 width: 30px;
5574 width: 30px;
5575 height: 30px;
5575 height: 30px;
5576 margin-top: -15px;
5576 margin-top: -15px;
5577 margin-left: -15px;
5577 margin-left: -15px;
5578 font-size: 30px;
5578 font-size: 30px;
5579 }
5579 }
5580 .carousel-caption {
5580 .carousel-caption {
5581 left: 20%;
5581 left: 20%;
5582 right: 20%;
5582 right: 20%;
5583 padding-bottom: 30px;
5583 padding-bottom: 30px;
5584 }
5584 }
5585 .carousel-indicators {
5585 .carousel-indicators {
5586 bottom: 20px;
5586 bottom: 20px;
5587 }
5587 }
5588 }
5588 }
5589 .clearfix:before,
5589 .clearfix:before,
5590 .clearfix:after,
5590 .clearfix:after,
5591 .container:before,
5591 .container:before,
5592 .container:after,
5592 .container:after,
5593 .container-fluid:before,
5593 .container-fluid:before,
5594 .container-fluid:after,
5594 .container-fluid:after,
5595 .row:before,
5595 .row:before,
5596 .row:after,
5596 .row:after,
5597 .form-horizontal .form-group:before,
5597 .form-horizontal .form-group:before,
5598 .form-horizontal .form-group:after,
5598 .form-horizontal .form-group:after,
5599 .btn-toolbar:before,
5599 .btn-toolbar:before,
5600 .btn-toolbar:after,
5600 .btn-toolbar:after,
5601 .btn-group-vertical > .btn-group:before,
5601 .btn-group-vertical > .btn-group:before,
5602 .btn-group-vertical > .btn-group:after,
5602 .btn-group-vertical > .btn-group:after,
5603 .nav:before,
5603 .nav:before,
5604 .nav:after,
5604 .nav:after,
5605 .navbar:before,
5605 .navbar:before,
5606 .navbar:after,
5606 .navbar:after,
5607 .navbar-header:before,
5607 .navbar-header:before,
5608 .navbar-header:after,
5608 .navbar-header:after,
5609 .navbar-collapse:before,
5609 .navbar-collapse:before,
5610 .navbar-collapse:after,
5610 .navbar-collapse:after,
5611 .pager:before,
5611 .pager:before,
5612 .pager:after,
5612 .pager:after,
5613 .panel-body:before,
5613 .panel-body:before,
5614 .panel-body:after,
5614 .panel-body:after,
5615 .modal-footer:before,
5615 .modal-footer:before,
5616 .modal-footer:after {
5616 .modal-footer:after {
5617 content: " ";
5617 content: " ";
5618 display: table;
5618 display: table;
5619 }
5619 }
5620 .clearfix:after,
5620 .clearfix:after,
5621 .container:after,
5621 .container:after,
5622 .container-fluid:after,
5622 .container-fluid:after,
5623 .row:after,
5623 .row:after,
5624 .form-horizontal .form-group:after,
5624 .form-horizontal .form-group:after,
5625 .btn-toolbar:after,
5625 .btn-toolbar:after,
5626 .btn-group-vertical > .btn-group:after,
5626 .btn-group-vertical > .btn-group:after,
5627 .nav:after,
5627 .nav:after,
5628 .navbar:after,
5628 .navbar:after,
5629 .navbar-header:after,
5629 .navbar-header:after,
5630 .navbar-collapse:after,
5630 .navbar-collapse:after,
5631 .pager:after,
5631 .pager:after,
5632 .panel-body:after,
5632 .panel-body:after,
5633 .modal-footer:after {
5633 .modal-footer:after {
5634 clear: both;
5634 clear: both;
5635 }
5635 }
5636 .center-block {
5636 .center-block {
5637 display: block;
5637 display: block;
5638 margin-left: auto;
5638 margin-left: auto;
5639 margin-right: auto;
5639 margin-right: auto;
5640 }
5640 }
5641 .pull-right {
5641 .pull-right {
5642 float: right !important;
5642 float: right !important;
5643 }
5643 }
5644 .pull-left {
5644 .pull-left {
5645 float: left !important;
5645 float: left !important;
5646 }
5646 }
5647 .hide {
5647 .hide {
5648 display: none !important;
5648 display: none !important;
5649 }
5649 }
5650 .show {
5650 .show {
5651 display: block !important;
5651 display: block !important;
5652 }
5652 }
5653 .invisible {
5653 .invisible {
5654 visibility: hidden;
5654 visibility: hidden;
5655 }
5655 }
5656 .text-hide {
5656 .text-hide {
5657 font: 0/0 a;
5657 font: 0/0 a;
5658 color: transparent;
5658 color: transparent;
5659 text-shadow: none;
5659 text-shadow: none;
5660 background-color: transparent;
5660 background-color: transparent;
5661 border: 0;
5661 border: 0;
5662 }
5662 }
5663 .hidden {
5663 .hidden {
5664 display: none !important;
5664 display: none !important;
5665 visibility: hidden !important;
5665 visibility: hidden !important;
5666 }
5666 }
5667 .affix {
5667 .affix {
5668 position: fixed;
5668 position: fixed;
5669 }
5669 }
5670 @-ms-viewport {
5670 @-ms-viewport {
5671 width: device-width;
5671 width: device-width;
5672 }
5672 }
5673 .visible-xs,
5673 .visible-xs,
5674 .visible-sm,
5674 .visible-sm,
5675 .visible-md,
5675 .visible-md,
5676 .visible-lg {
5676 .visible-lg {
5677 display: none !important;
5677 display: none !important;
5678 }
5678 }
5679 @media (max-width: 767px) {
5679 @media (max-width: 767px) {
5680 .visible-xs {
5680 .visible-xs {
5681 display: block !important;
5681 display: block !important;
5682 }
5682 }
5683 table.visible-xs {
5683 table.visible-xs {
5684 display: table;
5684 display: table;
5685 }
5685 }
5686 tr.visible-xs {
5686 tr.visible-xs {
5687 display: table-row !important;
5687 display: table-row !important;
5688 }
5688 }
5689 th.visible-xs,
5689 th.visible-xs,
5690 td.visible-xs {
5690 td.visible-xs {
5691 display: table-cell !important;
5691 display: table-cell !important;
5692 }
5692 }
5693 }
5693 }
5694 @media (min-width: 768px) and (max-width: 991px) {
5694 @media (min-width: 768px) and (max-width: 991px) {
5695 .visible-sm {
5695 .visible-sm {
5696 display: block !important;
5696 display: block !important;
5697 }
5697 }
5698 table.visible-sm {
5698 table.visible-sm {
5699 display: table;
5699 display: table;
5700 }
5700 }
5701 tr.visible-sm {
5701 tr.visible-sm {
5702 display: table-row !important;
5702 display: table-row !important;
5703 }
5703 }
5704 th.visible-sm,
5704 th.visible-sm,
5705 td.visible-sm {
5705 td.visible-sm {
5706 display: table-cell !important;
5706 display: table-cell !important;
5707 }
5707 }
5708 }
5708 }
5709 @media (min-width: 992px) and (max-width: 1199px) {
5709 @media (min-width: 992px) and (max-width: 1199px) {
5710 .visible-md {
5710 .visible-md {
5711 display: block !important;
5711 display: block !important;
5712 }
5712 }
5713 table.visible-md {
5713 table.visible-md {
5714 display: table;
5714 display: table;
5715 }
5715 }
5716 tr.visible-md {
5716 tr.visible-md {
5717 display: table-row !important;
5717 display: table-row !important;
5718 }
5718 }
5719 th.visible-md,
5719 th.visible-md,
5720 td.visible-md {
5720 td.visible-md {
5721 display: table-cell !important;
5721 display: table-cell !important;
5722 }
5722 }
5723 }
5723 }
5724 @media (min-width: 1200px) {
5724 @media (min-width: 1200px) {
5725 .visible-lg {
5725 .visible-lg {
5726 display: block !important;
5726 display: block !important;
5727 }
5727 }
5728 table.visible-lg {
5728 table.visible-lg {
5729 display: table;
5729 display: table;
5730 }
5730 }
5731 tr.visible-lg {
5731 tr.visible-lg {
5732 display: table-row !important;
5732 display: table-row !important;
5733 }
5733 }
5734 th.visible-lg,
5734 th.visible-lg,
5735 td.visible-lg {
5735 td.visible-lg {
5736 display: table-cell !important;
5736 display: table-cell !important;
5737 }
5737 }
5738 }
5738 }
5739 @media (max-width: 767px) {
5739 @media (max-width: 767px) {
5740 .hidden-xs {
5740 .hidden-xs {
5741 display: none !important;
5741 display: none !important;
5742 }
5742 }
5743 }
5743 }
5744 @media (min-width: 768px) and (max-width: 991px) {
5744 @media (min-width: 768px) and (max-width: 991px) {
5745 .hidden-sm {
5745 .hidden-sm {
5746 display: none !important;
5746 display: none !important;
5747 }
5747 }
5748 }
5748 }
5749 @media (min-width: 992px) and (max-width: 1199px) {
5749 @media (min-width: 992px) and (max-width: 1199px) {
5750 .hidden-md {
5750 .hidden-md {
5751 display: none !important;
5751 display: none !important;
5752 }
5752 }
5753 }
5753 }
5754 @media (min-width: 1200px) {
5754 @media (min-width: 1200px) {
5755 .hidden-lg {
5755 .hidden-lg {
5756 display: none !important;
5756 display: none !important;
5757 }
5757 }
5758 }
5758 }
5759 .visible-print {
5759 .visible-print {
5760 display: none !important;
5760 display: none !important;
5761 }
5761 }
5762 @media print {
5762 @media print {
5763 .visible-print {
5763 .visible-print {
5764 display: block !important;
5764 display: block !important;
5765 }
5765 }
5766 table.visible-print {
5766 table.visible-print {
5767 display: table;
5767 display: table;
5768 }
5768 }
5769 tr.visible-print {
5769 tr.visible-print {
5770 display: table-row !important;
5770 display: table-row !important;
5771 }
5771 }
5772 th.visible-print,
5772 th.visible-print,
5773 td.visible-print {
5773 td.visible-print {
5774 display: table-cell !important;
5774 display: table-cell !important;
5775 }
5775 }
5776 }
5776 }
5777 @media print {
5777 @media print {
5778 .hidden-print {
5778 .hidden-print {
5779 display: none !important;
5779 display: none !important;
5780 }
5780 }
5781 }
5781 }
5782 /*!
5782 /*!
5783 *
5783 *
5784 * Font Awesome
5784 * Font Awesome
5785 *
5785 *
5786 */
5786 */
5787 /*!
5787 /*!
5788 * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
5788 * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
5789 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
5789 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
5790 */
5790 */
5791 /* FONT PATH
5791 /* FONT PATH
5792 * -------------------------- */
5792 * -------------------------- */
5793 @font-face {
5793 @font-face {
5794 font-family: 'FontAwesome';
5794 font-family: 'FontAwesome';
5795 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
5795 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
5796 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
5796 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
5797 font-weight: normal;
5797 font-weight: normal;
5798 font-style: normal;
5798 font-style: normal;
5799 }
5799 }
5800 .fa {
5800 .fa {
5801 display: inline-block;
5801 display: inline-block;
5802 font: normal normal normal 14px/1 FontAwesome;
5802 font: normal normal normal 14px/1 FontAwesome;
5803 font-size: inherit;
5803 font-size: inherit;
5804 text-rendering: auto;
5804 text-rendering: auto;
5805 -webkit-font-smoothing: antialiased;
5805 -webkit-font-smoothing: antialiased;
5806 -moz-osx-font-smoothing: grayscale;
5806 -moz-osx-font-smoothing: grayscale;
5807 }
5807 }
5808 /* makes the font 33% larger relative to the icon container */
5808 /* makes the font 33% larger relative to the icon container */
5809 .fa-lg {
5809 .fa-lg {
5810 font-size: 1.33333333em;
5810 font-size: 1.33333333em;
5811 line-height: 0.75em;
5811 line-height: 0.75em;
5812 vertical-align: -15%;
5812 vertical-align: -15%;
5813 }
5813 }
5814 .fa-2x {
5814 .fa-2x {
5815 font-size: 2em;
5815 font-size: 2em;
5816 }
5816 }
5817 .fa-3x {
5817 .fa-3x {
5818 font-size: 3em;
5818 font-size: 3em;
5819 }
5819 }
5820 .fa-4x {
5820 .fa-4x {
5821 font-size: 4em;
5821 font-size: 4em;
5822 }
5822 }
5823 .fa-5x {
5823 .fa-5x {
5824 font-size: 5em;
5824 font-size: 5em;
5825 }
5825 }
5826 .fa-fw {
5826 .fa-fw {
5827 width: 1.28571429em;
5827 width: 1.28571429em;
5828 text-align: center;
5828 text-align: center;
5829 }
5829 }
5830 .fa-ul {
5830 .fa-ul {
5831 padding-left: 0;
5831 padding-left: 0;
5832 margin-left: 2.14285714em;
5832 margin-left: 2.14285714em;
5833 list-style-type: none;
5833 list-style-type: none;
5834 }
5834 }
5835 .fa-ul > li {
5835 .fa-ul > li {
5836 position: relative;
5836 position: relative;
5837 }
5837 }
5838 .fa-li {
5838 .fa-li {
5839 position: absolute;
5839 position: absolute;
5840 left: -2.14285714em;
5840 left: -2.14285714em;
5841 width: 2.14285714em;
5841 width: 2.14285714em;
5842 top: 0.14285714em;
5842 top: 0.14285714em;
5843 text-align: center;
5843 text-align: center;
5844 }
5844 }
5845 .fa-li.fa-lg {
5845 .fa-li.fa-lg {
5846 left: -1.85714286em;
5846 left: -1.85714286em;
5847 }
5847 }
5848 .fa-border {
5848 .fa-border {
5849 padding: .2em .25em .15em;
5849 padding: .2em .25em .15em;
5850 border: solid 0.08em #eeeeee;
5850 border: solid 0.08em #eeeeee;
5851 border-radius: .1em;
5851 border-radius: .1em;
5852 }
5852 }
5853 .pull-right {
5853 .pull-right {
5854 float: right;
5854 float: right;
5855 }
5855 }
5856 .pull-left {
5856 .pull-left {
5857 float: left;
5857 float: left;
5858 }
5858 }
5859 .fa.pull-left {
5859 .fa.pull-left {
5860 margin-right: .3em;
5860 margin-right: .3em;
5861 }
5861 }
5862 .fa.pull-right {
5862 .fa.pull-right {
5863 margin-left: .3em;
5863 margin-left: .3em;
5864 }
5864 }
5865 .fa-spin {
5865 .fa-spin {
5866 -webkit-animation: fa-spin 2s infinite linear;
5866 -webkit-animation: fa-spin 2s infinite linear;
5867 animation: fa-spin 2s infinite linear;
5867 animation: fa-spin 2s infinite linear;
5868 }
5868 }
5869 @-webkit-keyframes fa-spin {
5869 @-webkit-keyframes fa-spin {
5870 0% {
5870 0% {
5871 -webkit-transform: rotate(0deg);
5871 -webkit-transform: rotate(0deg);
5872 transform: rotate(0deg);
5872 transform: rotate(0deg);
5873 }
5873 }
5874 100% {
5874 100% {
5875 -webkit-transform: rotate(359deg);
5875 -webkit-transform: rotate(359deg);
5876 transform: rotate(359deg);
5876 transform: rotate(359deg);
5877 }
5877 }
5878 }
5878 }
5879 @keyframes fa-spin {
5879 @keyframes fa-spin {
5880 0% {
5880 0% {
5881 -webkit-transform: rotate(0deg);
5881 -webkit-transform: rotate(0deg);
5882 transform: rotate(0deg);
5882 transform: rotate(0deg);
5883 }
5883 }
5884 100% {
5884 100% {
5885 -webkit-transform: rotate(359deg);
5885 -webkit-transform: rotate(359deg);
5886 transform: rotate(359deg);
5886 transform: rotate(359deg);
5887 }
5887 }
5888 }
5888 }
5889 .fa-rotate-90 {
5889 .fa-rotate-90 {
5890 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
5890 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
5891 -webkit-transform: rotate(90deg);
5891 -webkit-transform: rotate(90deg);
5892 -ms-transform: rotate(90deg);
5892 -ms-transform: rotate(90deg);
5893 transform: rotate(90deg);
5893 transform: rotate(90deg);
5894 }
5894 }
5895 .fa-rotate-180 {
5895 .fa-rotate-180 {
5896 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
5896 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
5897 -webkit-transform: rotate(180deg);
5897 -webkit-transform: rotate(180deg);
5898 -ms-transform: rotate(180deg);
5898 -ms-transform: rotate(180deg);
5899 transform: rotate(180deg);
5899 transform: rotate(180deg);
5900 }
5900 }
5901 .fa-rotate-270 {
5901 .fa-rotate-270 {
5902 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
5902 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
5903 -webkit-transform: rotate(270deg);
5903 -webkit-transform: rotate(270deg);
5904 -ms-transform: rotate(270deg);
5904 -ms-transform: rotate(270deg);
5905 transform: rotate(270deg);
5905 transform: rotate(270deg);
5906 }
5906 }
5907 .fa-flip-horizontal {
5907 .fa-flip-horizontal {
5908 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
5908 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
5909 -webkit-transform: scale(-1, 1);
5909 -webkit-transform: scale(-1, 1);
5910 -ms-transform: scale(-1, 1);
5910 -ms-transform: scale(-1, 1);
5911 transform: scale(-1, 1);
5911 transform: scale(-1, 1);
5912 }
5912 }
5913 .fa-flip-vertical {
5913 .fa-flip-vertical {
5914 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
5914 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
5915 -webkit-transform: scale(1, -1);
5915 -webkit-transform: scale(1, -1);
5916 -ms-transform: scale(1, -1);
5916 -ms-transform: scale(1, -1);
5917 transform: scale(1, -1);
5917 transform: scale(1, -1);
5918 }
5918 }
5919 :root .fa-rotate-90,
5919 :root .fa-rotate-90,
5920 :root .fa-rotate-180,
5920 :root .fa-rotate-180,
5921 :root .fa-rotate-270,
5921 :root .fa-rotate-270,
5922 :root .fa-flip-horizontal,
5922 :root .fa-flip-horizontal,
5923 :root .fa-flip-vertical {
5923 :root .fa-flip-vertical {
5924 filter: none;
5924 filter: none;
5925 }
5925 }
5926 .fa-stack {
5926 .fa-stack {
5927 position: relative;
5927 position: relative;
5928 display: inline-block;
5928 display: inline-block;
5929 width: 2em;
5929 width: 2em;
5930 height: 2em;
5930 height: 2em;
5931 line-height: 2em;
5931 line-height: 2em;
5932 vertical-align: middle;
5932 vertical-align: middle;
5933 }
5933 }
5934 .fa-stack-1x,
5934 .fa-stack-1x,
5935 .fa-stack-2x {
5935 .fa-stack-2x {
5936 position: absolute;
5936 position: absolute;
5937 left: 0;
5937 left: 0;
5938 width: 100%;
5938 width: 100%;
5939 text-align: center;
5939 text-align: center;
5940 }
5940 }
5941 .fa-stack-1x {
5941 .fa-stack-1x {
5942 line-height: inherit;
5942 line-height: inherit;
5943 }
5943 }
5944 .fa-stack-2x {
5944 .fa-stack-2x {
5945 font-size: 2em;
5945 font-size: 2em;
5946 }
5946 }
5947 .fa-inverse {
5947 .fa-inverse {
5948 color: #ffffff;
5948 color: #ffffff;
5949 }
5949 }
5950 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
5950 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
5951 readers do not read off random characters that represent icons */
5951 readers do not read off random characters that represent icons */
5952 .fa-glass:before {
5952 .fa-glass:before {
5953 content: "\f000";
5953 content: "\f000";
5954 }
5954 }
5955 .fa-music:before {
5955 .fa-music:before {
5956 content: "\f001";
5956 content: "\f001";
5957 }
5957 }
5958 .fa-search:before {
5958 .fa-search:before {
5959 content: "\f002";
5959 content: "\f002";
5960 }
5960 }
5961 .fa-envelope-o:before {
5961 .fa-envelope-o:before {
5962 content: "\f003";
5962 content: "\f003";
5963 }
5963 }
5964 .fa-heart:before {
5964 .fa-heart:before {
5965 content: "\f004";
5965 content: "\f004";
5966 }
5966 }
5967 .fa-star:before {
5967 .fa-star:before {
5968 content: "\f005";
5968 content: "\f005";
5969 }
5969 }
5970 .fa-star-o:before {
5970 .fa-star-o:before {
5971 content: "\f006";
5971 content: "\f006";
5972 }
5972 }
5973 .fa-user:before {
5973 .fa-user:before {
5974 content: "\f007";
5974 content: "\f007";
5975 }
5975 }
5976 .fa-film:before {
5976 .fa-film:before {
5977 content: "\f008";
5977 content: "\f008";
5978 }
5978 }
5979 .fa-th-large:before {
5979 .fa-th-large:before {
5980 content: "\f009";
5980 content: "\f009";
5981 }
5981 }
5982 .fa-th:before {
5982 .fa-th:before {
5983 content: "\f00a";
5983 content: "\f00a";
5984 }
5984 }
5985 .fa-th-list:before {
5985 .fa-th-list:before {
5986 content: "\f00b";
5986 content: "\f00b";
5987 }
5987 }
5988 .fa-check:before {
5988 .fa-check:before {
5989 content: "\f00c";
5989 content: "\f00c";
5990 }
5990 }
5991 .fa-remove:before,
5991 .fa-remove:before,
5992 .fa-close:before,
5992 .fa-close:before,
5993 .fa-times:before {
5993 .fa-times:before {
5994 content: "\f00d";
5994 content: "\f00d";
5995 }
5995 }
5996 .fa-search-plus:before {
5996 .fa-search-plus:before {
5997 content: "\f00e";
5997 content: "\f00e";
5998 }
5998 }
5999 .fa-search-minus:before {
5999 .fa-search-minus:before {
6000 content: "\f010";
6000 content: "\f010";
6001 }
6001 }
6002 .fa-power-off:before {
6002 .fa-power-off:before {
6003 content: "\f011";
6003 content: "\f011";
6004 }
6004 }
6005 .fa-signal:before {
6005 .fa-signal:before {
6006 content: "\f012";
6006 content: "\f012";
6007 }
6007 }
6008 .fa-gear:before,
6008 .fa-gear:before,
6009 .fa-cog:before {
6009 .fa-cog:before {
6010 content: "\f013";
6010 content: "\f013";
6011 }
6011 }
6012 .fa-trash-o:before {
6012 .fa-trash-o:before {
6013 content: "\f014";
6013 content: "\f014";
6014 }
6014 }
6015 .fa-home:before {
6015 .fa-home:before {
6016 content: "\f015";
6016 content: "\f015";
6017 }
6017 }
6018 .fa-file-o:before {
6018 .fa-file-o:before {
6019 content: "\f016";
6019 content: "\f016";
6020 }
6020 }
6021 .fa-clock-o:before {
6021 .fa-clock-o:before {
6022 content: "\f017";
6022 content: "\f017";
6023 }
6023 }
6024 .fa-road:before {
6024 .fa-road:before {
6025 content: "\f018";
6025 content: "\f018";
6026 }
6026 }
6027 .fa-download:before {
6027 .fa-download:before {
6028 content: "\f019";
6028 content: "\f019";
6029 }
6029 }
6030 .fa-arrow-circle-o-down:before {
6030 .fa-arrow-circle-o-down:before {
6031 content: "\f01a";
6031 content: "\f01a";
6032 }
6032 }
6033 .fa-arrow-circle-o-up:before {
6033 .fa-arrow-circle-o-up:before {
6034 content: "\f01b";
6034 content: "\f01b";
6035 }
6035 }
6036 .fa-inbox:before {
6036 .fa-inbox:before {
6037 content: "\f01c";
6037 content: "\f01c";
6038 }
6038 }
6039 .fa-play-circle-o:before {
6039 .fa-play-circle-o:before {
6040 content: "\f01d";
6040 content: "\f01d";
6041 }
6041 }
6042 .fa-rotate-right:before,
6042 .fa-rotate-right:before,
6043 .fa-repeat:before {
6043 .fa-repeat:before {
6044 content: "\f01e";
6044 content: "\f01e";
6045 }
6045 }
6046 .fa-refresh:before {
6046 .fa-refresh:before {
6047 content: "\f021";
6047 content: "\f021";
6048 }
6048 }
6049 .fa-list-alt:before {
6049 .fa-list-alt:before {
6050 content: "\f022";
6050 content: "\f022";
6051 }
6051 }
6052 .fa-lock:before {
6052 .fa-lock:before {
6053 content: "\f023";
6053 content: "\f023";
6054 }
6054 }
6055 .fa-flag:before {
6055 .fa-flag:before {
6056 content: "\f024";
6056 content: "\f024";
6057 }
6057 }
6058 .fa-headphones:before {
6058 .fa-headphones:before {
6059 content: "\f025";
6059 content: "\f025";
6060 }
6060 }
6061 .fa-volume-off:before {
6061 .fa-volume-off:before {
6062 content: "\f026";
6062 content: "\f026";
6063 }
6063 }
6064 .fa-volume-down:before {
6064 .fa-volume-down:before {
6065 content: "\f027";
6065 content: "\f027";
6066 }
6066 }
6067 .fa-volume-up:before {
6067 .fa-volume-up:before {
6068 content: "\f028";
6068 content: "\f028";
6069 }
6069 }
6070 .fa-qrcode:before {
6070 .fa-qrcode:before {
6071 content: "\f029";
6071 content: "\f029";
6072 }
6072 }
6073 .fa-barcode:before {
6073 .fa-barcode:before {
6074 content: "\f02a";
6074 content: "\f02a";
6075 }
6075 }
6076 .fa-tag:before {
6076 .fa-tag:before {
6077 content: "\f02b";
6077 content: "\f02b";
6078 }
6078 }
6079 .fa-tags:before {
6079 .fa-tags:before {
6080 content: "\f02c";
6080 content: "\f02c";
6081 }
6081 }
6082 .fa-book:before {
6082 .fa-book:before {
6083 content: "\f02d";
6083 content: "\f02d";
6084 }
6084 }
6085 .fa-bookmark:before {
6085 .fa-bookmark:before {
6086 content: "\f02e";
6086 content: "\f02e";
6087 }
6087 }
6088 .fa-print:before {
6088 .fa-print:before {
6089 content: "\f02f";
6089 content: "\f02f";
6090 }
6090 }
6091 .fa-camera:before {
6091 .fa-camera:before {
6092 content: "\f030";
6092 content: "\f030";
6093 }
6093 }
6094 .fa-font:before {
6094 .fa-font:before {
6095 content: "\f031";
6095 content: "\f031";
6096 }
6096 }
6097 .fa-bold:before {
6097 .fa-bold:before {
6098 content: "\f032";
6098 content: "\f032";
6099 }
6099 }
6100 .fa-italic:before {
6100 .fa-italic:before {
6101 content: "\f033";
6101 content: "\f033";
6102 }
6102 }
6103 .fa-text-height:before {
6103 .fa-text-height:before {
6104 content: "\f034";
6104 content: "\f034";
6105 }
6105 }
6106 .fa-text-width:before {
6106 .fa-text-width:before {
6107 content: "\f035";
6107 content: "\f035";
6108 }
6108 }
6109 .fa-align-left:before {
6109 .fa-align-left:before {
6110 content: "\f036";
6110 content: "\f036";
6111 }
6111 }
6112 .fa-align-center:before {
6112 .fa-align-center:before {
6113 content: "\f037";
6113 content: "\f037";
6114 }
6114 }
6115 .fa-align-right:before {
6115 .fa-align-right:before {
6116 content: "\f038";
6116 content: "\f038";
6117 }
6117 }
6118 .fa-align-justify:before {
6118 .fa-align-justify:before {
6119 content: "\f039";
6119 content: "\f039";
6120 }
6120 }
6121 .fa-list:before {
6121 .fa-list:before {
6122 content: "\f03a";
6122 content: "\f03a";
6123 }
6123 }
6124 .fa-dedent:before,
6124 .fa-dedent:before,
6125 .fa-outdent:before {
6125 .fa-outdent:before {
6126 content: "\f03b";
6126 content: "\f03b";
6127 }
6127 }
6128 .fa-indent:before {
6128 .fa-indent:before {
6129 content: "\f03c";
6129 content: "\f03c";
6130 }
6130 }
6131 .fa-video-camera:before {
6131 .fa-video-camera:before {
6132 content: "\f03d";
6132 content: "\f03d";
6133 }
6133 }
6134 .fa-photo:before,
6134 .fa-photo:before,
6135 .fa-image:before,
6135 .fa-image:before,
6136 .fa-picture-o:before {
6136 .fa-picture-o:before {
6137 content: "\f03e";
6137 content: "\f03e";
6138 }
6138 }
6139 .fa-pencil:before {
6139 .fa-pencil:before {
6140 content: "\f040";
6140 content: "\f040";
6141 }
6141 }
6142 .fa-map-marker:before {
6142 .fa-map-marker:before {
6143 content: "\f041";
6143 content: "\f041";
6144 }
6144 }
6145 .fa-adjust:before {
6145 .fa-adjust:before {
6146 content: "\f042";
6146 content: "\f042";
6147 }
6147 }
6148 .fa-tint:before {
6148 .fa-tint:before {
6149 content: "\f043";
6149 content: "\f043";
6150 }
6150 }
6151 .fa-edit:before,
6151 .fa-edit:before,
6152 .fa-pencil-square-o:before {
6152 .fa-pencil-square-o:before {
6153 content: "\f044";
6153 content: "\f044";
6154 }
6154 }
6155 .fa-share-square-o:before {
6155 .fa-share-square-o:before {
6156 content: "\f045";
6156 content: "\f045";
6157 }
6157 }
6158 .fa-check-square-o:before {
6158 .fa-check-square-o:before {
6159 content: "\f046";
6159 content: "\f046";
6160 }
6160 }
6161 .fa-arrows:before {
6161 .fa-arrows:before {
6162 content: "\f047";
6162 content: "\f047";
6163 }
6163 }
6164 .fa-step-backward:before {
6164 .fa-step-backward:before {
6165 content: "\f048";
6165 content: "\f048";
6166 }
6166 }
6167 .fa-fast-backward:before {
6167 .fa-fast-backward:before {
6168 content: "\f049";
6168 content: "\f049";
6169 }
6169 }
6170 .fa-backward:before {
6170 .fa-backward:before {
6171 content: "\f04a";
6171 content: "\f04a";
6172 }
6172 }
6173 .fa-play:before {
6173 .fa-play:before {
6174 content: "\f04b";
6174 content: "\f04b";
6175 }
6175 }
6176 .fa-pause:before {
6176 .fa-pause:before {
6177 content: "\f04c";
6177 content: "\f04c";
6178 }
6178 }
6179 .fa-stop:before {
6179 .fa-stop:before {
6180 content: "\f04d";
6180 content: "\f04d";
6181 }
6181 }
6182 .fa-forward:before {
6182 .fa-forward:before {
6183 content: "\f04e";
6183 content: "\f04e";
6184 }
6184 }
6185 .fa-fast-forward:before {
6185 .fa-fast-forward:before {
6186 content: "\f050";
6186 content: "\f050";
6187 }
6187 }
6188 .fa-step-forward:before {
6188 .fa-step-forward:before {
6189 content: "\f051";
6189 content: "\f051";
6190 }
6190 }
6191 .fa-eject:before {
6191 .fa-eject:before {
6192 content: "\f052";
6192 content: "\f052";
6193 }
6193 }
6194 .fa-chevron-left:before {
6194 .fa-chevron-left:before {
6195 content: "\f053";
6195 content: "\f053";
6196 }
6196 }
6197 .fa-chevron-right:before {
6197 .fa-chevron-right:before {
6198 content: "\f054";
6198 content: "\f054";
6199 }
6199 }
6200 .fa-plus-circle:before {
6200 .fa-plus-circle:before {
6201 content: "\f055";
6201 content: "\f055";
6202 }
6202 }
6203 .fa-minus-circle:before {
6203 .fa-minus-circle:before {
6204 content: "\f056";
6204 content: "\f056";
6205 }
6205 }
6206 .fa-times-circle:before {
6206 .fa-times-circle:before {
6207 content: "\f057";
6207 content: "\f057";
6208 }
6208 }
6209 .fa-check-circle:before {
6209 .fa-check-circle:before {
6210 content: "\f058";
6210 content: "\f058";
6211 }
6211 }
6212 .fa-question-circle:before {
6212 .fa-question-circle:before {
6213 content: "\f059";
6213 content: "\f059";
6214 }
6214 }
6215 .fa-info-circle:before {
6215 .fa-info-circle:before {
6216 content: "\f05a";
6216 content: "\f05a";
6217 }
6217 }
6218 .fa-crosshairs:before {
6218 .fa-crosshairs:before {
6219 content: "\f05b";
6219 content: "\f05b";
6220 }
6220 }
6221 .fa-times-circle-o:before {
6221 .fa-times-circle-o:before {
6222 content: "\f05c";
6222 content: "\f05c";
6223 }
6223 }
6224 .fa-check-circle-o:before {
6224 .fa-check-circle-o:before {
6225 content: "\f05d";
6225 content: "\f05d";
6226 }
6226 }
6227 .fa-ban:before {
6227 .fa-ban:before {
6228 content: "\f05e";
6228 content: "\f05e";
6229 }
6229 }
6230 .fa-arrow-left:before {
6230 .fa-arrow-left:before {
6231 content: "\f060";
6231 content: "\f060";
6232 }
6232 }
6233 .fa-arrow-right:before {
6233 .fa-arrow-right:before {
6234 content: "\f061";
6234 content: "\f061";
6235 }
6235 }
6236 .fa-arrow-up:before {
6236 .fa-arrow-up:before {
6237 content: "\f062";
6237 content: "\f062";
6238 }
6238 }
6239 .fa-arrow-down:before {
6239 .fa-arrow-down:before {
6240 content: "\f063";
6240 content: "\f063";
6241 }
6241 }
6242 .fa-mail-forward:before,
6242 .fa-mail-forward:before,
6243 .fa-share:before {
6243 .fa-share:before {
6244 content: "\f064";
6244 content: "\f064";
6245 }
6245 }
6246 .fa-expand:before {
6246 .fa-expand:before {
6247 content: "\f065";
6247 content: "\f065";
6248 }
6248 }
6249 .fa-compress:before {
6249 .fa-compress:before {
6250 content: "\f066";
6250 content: "\f066";
6251 }
6251 }
6252 .fa-plus:before {
6252 .fa-plus:before {
6253 content: "\f067";
6253 content: "\f067";
6254 }
6254 }
6255 .fa-minus:before {
6255 .fa-minus:before {
6256 content: "\f068";
6256 content: "\f068";
6257 }
6257 }
6258 .fa-asterisk:before {
6258 .fa-asterisk:before {
6259 content: "\f069";
6259 content: "\f069";
6260 }
6260 }
6261 .fa-exclamation-circle:before {
6261 .fa-exclamation-circle:before {
6262 content: "\f06a";
6262 content: "\f06a";
6263 }
6263 }
6264 .fa-gift:before {
6264 .fa-gift:before {
6265 content: "\f06b";
6265 content: "\f06b";
6266 }
6266 }
6267 .fa-leaf:before {
6267 .fa-leaf:before {
6268 content: "\f06c";
6268 content: "\f06c";
6269 }
6269 }
6270 .fa-fire:before {
6270 .fa-fire:before {
6271 content: "\f06d";
6271 content: "\f06d";
6272 }
6272 }
6273 .fa-eye:before {
6273 .fa-eye:before {
6274 content: "\f06e";
6274 content: "\f06e";
6275 }
6275 }
6276 .fa-eye-slash:before {
6276 .fa-eye-slash:before {
6277 content: "\f070";
6277 content: "\f070";
6278 }
6278 }
6279 .fa-warning:before,
6279 .fa-warning:before,
6280 .fa-exclamation-triangle:before {
6280 .fa-exclamation-triangle:before {
6281 content: "\f071";
6281 content: "\f071";
6282 }
6282 }
6283 .fa-plane:before {
6283 .fa-plane:before {
6284 content: "\f072";
6284 content: "\f072";
6285 }
6285 }
6286 .fa-calendar:before {
6286 .fa-calendar:before {
6287 content: "\f073";
6287 content: "\f073";
6288 }
6288 }
6289 .fa-random:before {
6289 .fa-random:before {
6290 content: "\f074";
6290 content: "\f074";
6291 }
6291 }
6292 .fa-comment:before {
6292 .fa-comment:before {
6293 content: "\f075";
6293 content: "\f075";
6294 }
6294 }
6295 .fa-magnet:before {
6295 .fa-magnet:before {
6296 content: "\f076";
6296 content: "\f076";
6297 }
6297 }
6298 .fa-chevron-up:before {
6298 .fa-chevron-up:before {
6299 content: "\f077";
6299 content: "\f077";
6300 }
6300 }
6301 .fa-chevron-down:before {
6301 .fa-chevron-down:before {
6302 content: "\f078";
6302 content: "\f078";
6303 }
6303 }
6304 .fa-retweet:before {
6304 .fa-retweet:before {
6305 content: "\f079";
6305 content: "\f079";
6306 }
6306 }
6307 .fa-shopping-cart:before {
6307 .fa-shopping-cart:before {
6308 content: "\f07a";
6308 content: "\f07a";
6309 }
6309 }
6310 .fa-folder:before {
6310 .fa-folder:before {
6311 content: "\f07b";
6311 content: "\f07b";
6312 }
6312 }
6313 .fa-folder-open:before {
6313 .fa-folder-open:before {
6314 content: "\f07c";
6314 content: "\f07c";
6315 }
6315 }
6316 .fa-arrows-v:before {
6316 .fa-arrows-v:before {
6317 content: "\f07d";
6317 content: "\f07d";
6318 }
6318 }
6319 .fa-arrows-h:before {
6319 .fa-arrows-h:before {
6320 content: "\f07e";
6320 content: "\f07e";
6321 }
6321 }
6322 .fa-bar-chart-o:before,
6322 .fa-bar-chart-o:before,
6323 .fa-bar-chart:before {
6323 .fa-bar-chart:before {
6324 content: "\f080";
6324 content: "\f080";
6325 }
6325 }
6326 .fa-twitter-square:before {
6326 .fa-twitter-square:before {
6327 content: "\f081";
6327 content: "\f081";
6328 }
6328 }
6329 .fa-facebook-square:before {
6329 .fa-facebook-square:before {
6330 content: "\f082";
6330 content: "\f082";
6331 }
6331 }
6332 .fa-camera-retro:before {
6332 .fa-camera-retro:before {
6333 content: "\f083";
6333 content: "\f083";
6334 }
6334 }
6335 .fa-key:before {
6335 .fa-key:before {
6336 content: "\f084";
6336 content: "\f084";
6337 }
6337 }
6338 .fa-gears:before,
6338 .fa-gears:before,
6339 .fa-cogs:before {
6339 .fa-cogs:before {
6340 content: "\f085";
6340 content: "\f085";
6341 }
6341 }
6342 .fa-comments:before {
6342 .fa-comments:before {
6343 content: "\f086";
6343 content: "\f086";
6344 }
6344 }
6345 .fa-thumbs-o-up:before {
6345 .fa-thumbs-o-up:before {
6346 content: "\f087";
6346 content: "\f087";
6347 }
6347 }
6348 .fa-thumbs-o-down:before {
6348 .fa-thumbs-o-down:before {
6349 content: "\f088";
6349 content: "\f088";
6350 }
6350 }
6351 .fa-star-half:before {
6351 .fa-star-half:before {
6352 content: "\f089";
6352 content: "\f089";
6353 }
6353 }
6354 .fa-heart-o:before {
6354 .fa-heart-o:before {
6355 content: "\f08a";
6355 content: "\f08a";
6356 }
6356 }
6357 .fa-sign-out:before {
6357 .fa-sign-out:before {
6358 content: "\f08b";
6358 content: "\f08b";
6359 }
6359 }
6360 .fa-linkedin-square:before {
6360 .fa-linkedin-square:before {
6361 content: "\f08c";
6361 content: "\f08c";
6362 }
6362 }
6363 .fa-thumb-tack:before {
6363 .fa-thumb-tack:before {
6364 content: "\f08d";
6364 content: "\f08d";
6365 }
6365 }
6366 .fa-external-link:before {
6366 .fa-external-link:before {
6367 content: "\f08e";
6367 content: "\f08e";
6368 }
6368 }
6369 .fa-sign-in:before {
6369 .fa-sign-in:before {
6370 content: "\f090";
6370 content: "\f090";
6371 }
6371 }
6372 .fa-trophy:before {
6372 .fa-trophy:before {
6373 content: "\f091";
6373 content: "\f091";
6374 }
6374 }
6375 .fa-github-square:before {
6375 .fa-github-square:before {
6376 content: "\f092";
6376 content: "\f092";
6377 }
6377 }
6378 .fa-upload:before {
6378 .fa-upload:before {
6379 content: "\f093";
6379 content: "\f093";
6380 }
6380 }
6381 .fa-lemon-o:before {
6381 .fa-lemon-o:before {
6382 content: "\f094";
6382 content: "\f094";
6383 }
6383 }
6384 .fa-phone:before {
6384 .fa-phone:before {
6385 content: "\f095";
6385 content: "\f095";
6386 }
6386 }
6387 .fa-square-o:before {
6387 .fa-square-o:before {
6388 content: "\f096";
6388 content: "\f096";
6389 }
6389 }
6390 .fa-bookmark-o:before {
6390 .fa-bookmark-o:before {
6391 content: "\f097";
6391 content: "\f097";
6392 }
6392 }
6393 .fa-phone-square:before {
6393 .fa-phone-square:before {
6394 content: "\f098";
6394 content: "\f098";
6395 }
6395 }
6396 .fa-twitter:before {
6396 .fa-twitter:before {
6397 content: "\f099";
6397 content: "\f099";
6398 }
6398 }
6399 .fa-facebook:before {
6399 .fa-facebook:before {
6400 content: "\f09a";
6400 content: "\f09a";
6401 }
6401 }
6402 .fa-github:before {
6402 .fa-github:before {
6403 content: "\f09b";
6403 content: "\f09b";
6404 }
6404 }
6405 .fa-unlock:before {
6405 .fa-unlock:before {
6406 content: "\f09c";
6406 content: "\f09c";
6407 }
6407 }
6408 .fa-credit-card:before {
6408 .fa-credit-card:before {
6409 content: "\f09d";
6409 content: "\f09d";
6410 }
6410 }
6411 .fa-rss:before {
6411 .fa-rss:before {
6412 content: "\f09e";
6412 content: "\f09e";
6413 }
6413 }
6414 .fa-hdd-o:before {
6414 .fa-hdd-o:before {
6415 content: "\f0a0";
6415 content: "\f0a0";
6416 }
6416 }
6417 .fa-bullhorn:before {
6417 .fa-bullhorn:before {
6418 content: "\f0a1";
6418 content: "\f0a1";
6419 }
6419 }
6420 .fa-bell:before {
6420 .fa-bell:before {
6421 content: "\f0f3";
6421 content: "\f0f3";
6422 }
6422 }
6423 .fa-certificate:before {
6423 .fa-certificate:before {
6424 content: "\f0a3";
6424 content: "\f0a3";
6425 }
6425 }
6426 .fa-hand-o-right:before {
6426 .fa-hand-o-right:before {
6427 content: "\f0a4";
6427 content: "\f0a4";
6428 }
6428 }
6429 .fa-hand-o-left:before {
6429 .fa-hand-o-left:before {
6430 content: "\f0a5";
6430 content: "\f0a5";
6431 }
6431 }
6432 .fa-hand-o-up:before {
6432 .fa-hand-o-up:before {
6433 content: "\f0a6";
6433 content: "\f0a6";
6434 }
6434 }
6435 .fa-hand-o-down:before {
6435 .fa-hand-o-down:before {
6436 content: "\f0a7";
6436 content: "\f0a7";
6437 }
6437 }
6438 .fa-arrow-circle-left:before {
6438 .fa-arrow-circle-left:before {
6439 content: "\f0a8";
6439 content: "\f0a8";
6440 }
6440 }
6441 .fa-arrow-circle-right:before {
6441 .fa-arrow-circle-right:before {
6442 content: "\f0a9";
6442 content: "\f0a9";
6443 }
6443 }
6444 .fa-arrow-circle-up:before {
6444 .fa-arrow-circle-up:before {
6445 content: "\f0aa";
6445 content: "\f0aa";
6446 }
6446 }
6447 .fa-arrow-circle-down:before {
6447 .fa-arrow-circle-down:before {
6448 content: "\f0ab";
6448 content: "\f0ab";
6449 }
6449 }
6450 .fa-globe:before {
6450 .fa-globe:before {
6451 content: "\f0ac";
6451 content: "\f0ac";
6452 }
6452 }
6453 .fa-wrench:before {
6453 .fa-wrench:before {
6454 content: "\f0ad";
6454 content: "\f0ad";
6455 }
6455 }
6456 .fa-tasks:before {
6456 .fa-tasks:before {
6457 content: "\f0ae";
6457 content: "\f0ae";
6458 }
6458 }
6459 .fa-filter:before {
6459 .fa-filter:before {
6460 content: "\f0b0";
6460 content: "\f0b0";
6461 }
6461 }
6462 .fa-briefcase:before {
6462 .fa-briefcase:before {
6463 content: "\f0b1";
6463 content: "\f0b1";
6464 }
6464 }
6465 .fa-arrows-alt:before {
6465 .fa-arrows-alt:before {
6466 content: "\f0b2";
6466 content: "\f0b2";
6467 }
6467 }
6468 .fa-group:before,
6468 .fa-group:before,
6469 .fa-users:before {
6469 .fa-users:before {
6470 content: "\f0c0";
6470 content: "\f0c0";
6471 }
6471 }
6472 .fa-chain:before,
6472 .fa-chain:before,
6473 .fa-link:before {
6473 .fa-link:before {
6474 content: "\f0c1";
6474 content: "\f0c1";
6475 }
6475 }
6476 .fa-cloud:before {
6476 .fa-cloud:before {
6477 content: "\f0c2";
6477 content: "\f0c2";
6478 }
6478 }
6479 .fa-flask:before {
6479 .fa-flask:before {
6480 content: "\f0c3";
6480 content: "\f0c3";
6481 }
6481 }
6482 .fa-cut:before,
6482 .fa-cut:before,
6483 .fa-scissors:before {
6483 .fa-scissors:before {
6484 content: "\f0c4";
6484 content: "\f0c4";
6485 }
6485 }
6486 .fa-copy:before,
6486 .fa-copy:before,
6487 .fa-files-o:before {
6487 .fa-files-o:before {
6488 content: "\f0c5";
6488 content: "\f0c5";
6489 }
6489 }
6490 .fa-paperclip:before {
6490 .fa-paperclip:before {
6491 content: "\f0c6";
6491 content: "\f0c6";
6492 }
6492 }
6493 .fa-save:before,
6493 .fa-save:before,
6494 .fa-floppy-o:before {
6494 .fa-floppy-o:before {
6495 content: "\f0c7";
6495 content: "\f0c7";
6496 }
6496 }
6497 .fa-square:before {
6497 .fa-square:before {
6498 content: "\f0c8";
6498 content: "\f0c8";
6499 }
6499 }
6500 .fa-navicon:before,
6500 .fa-navicon:before,
6501 .fa-reorder:before,
6501 .fa-reorder:before,
6502 .fa-bars:before {
6502 .fa-bars:before {
6503 content: "\f0c9";
6503 content: "\f0c9";
6504 }
6504 }
6505 .fa-list-ul:before {
6505 .fa-list-ul:before {
6506 content: "\f0ca";
6506 content: "\f0ca";
6507 }
6507 }
6508 .fa-list-ol:before {
6508 .fa-list-ol:before {
6509 content: "\f0cb";
6509 content: "\f0cb";
6510 }
6510 }
6511 .fa-strikethrough:before {
6511 .fa-strikethrough:before {
6512 content: "\f0cc";
6512 content: "\f0cc";
6513 }
6513 }
6514 .fa-underline:before {
6514 .fa-underline:before {
6515 content: "\f0cd";
6515 content: "\f0cd";
6516 }
6516 }
6517 .fa-table:before {
6517 .fa-table:before {
6518 content: "\f0ce";
6518 content: "\f0ce";
6519 }
6519 }
6520 .fa-magic:before {
6520 .fa-magic:before {
6521 content: "\f0d0";
6521 content: "\f0d0";
6522 }
6522 }
6523 .fa-truck:before {
6523 .fa-truck:before {
6524 content: "\f0d1";
6524 content: "\f0d1";
6525 }
6525 }
6526 .fa-pinterest:before {
6526 .fa-pinterest:before {
6527 content: "\f0d2";
6527 content: "\f0d2";
6528 }
6528 }
6529 .fa-pinterest-square:before {
6529 .fa-pinterest-square:before {
6530 content: "\f0d3";
6530 content: "\f0d3";
6531 }
6531 }
6532 .fa-google-plus-square:before {
6532 .fa-google-plus-square:before {
6533 content: "\f0d4";
6533 content: "\f0d4";
6534 }
6534 }
6535 .fa-google-plus:before {
6535 .fa-google-plus:before {
6536 content: "\f0d5";
6536 content: "\f0d5";
6537 }
6537 }
6538 .fa-money:before {
6538 .fa-money:before {
6539 content: "\f0d6";
6539 content: "\f0d6";
6540 }
6540 }
6541 .fa-caret-down:before {
6541 .fa-caret-down:before {
6542 content: "\f0d7";
6542 content: "\f0d7";
6543 }
6543 }
6544 .fa-caret-up:before {
6544 .fa-caret-up:before {
6545 content: "\f0d8";
6545 content: "\f0d8";
6546 }
6546 }
6547 .fa-caret-left:before {
6547 .fa-caret-left:before {
6548 content: "\f0d9";
6548 content: "\f0d9";
6549 }
6549 }
6550 .fa-caret-right:before {
6550 .fa-caret-right:before {
6551 content: "\f0da";
6551 content: "\f0da";
6552 }
6552 }
6553 .fa-columns:before {
6553 .fa-columns:before {
6554 content: "\f0db";
6554 content: "\f0db";
6555 }
6555 }
6556 .fa-unsorted:before,
6556 .fa-unsorted:before,
6557 .fa-sort:before {
6557 .fa-sort:before {
6558 content: "\f0dc";
6558 content: "\f0dc";
6559 }
6559 }
6560 .fa-sort-down:before,
6560 .fa-sort-down:before,
6561 .fa-sort-desc:before {
6561 .fa-sort-desc:before {
6562 content: "\f0dd";
6562 content: "\f0dd";
6563 }
6563 }
6564 .fa-sort-up:before,
6564 .fa-sort-up:before,
6565 .fa-sort-asc:before {
6565 .fa-sort-asc:before {
6566 content: "\f0de";
6566 content: "\f0de";
6567 }
6567 }
6568 .fa-envelope:before {
6568 .fa-envelope:before {
6569 content: "\f0e0";
6569 content: "\f0e0";
6570 }
6570 }
6571 .fa-linkedin:before {
6571 .fa-linkedin:before {
6572 content: "\f0e1";
6572 content: "\f0e1";
6573 }
6573 }
6574 .fa-rotate-left:before,
6574 .fa-rotate-left:before,
6575 .fa-undo:before {
6575 .fa-undo:before {
6576 content: "\f0e2";
6576 content: "\f0e2";
6577 }
6577 }
6578 .fa-legal:before,
6578 .fa-legal:before,
6579 .fa-gavel:before {
6579 .fa-gavel:before {
6580 content: "\f0e3";
6580 content: "\f0e3";
6581 }
6581 }
6582 .fa-dashboard:before,
6582 .fa-dashboard:before,
6583 .fa-tachometer:before {
6583 .fa-tachometer:before {
6584 content: "\f0e4";
6584 content: "\f0e4";
6585 }
6585 }
6586 .fa-comment-o:before {
6586 .fa-comment-o:before {
6587 content: "\f0e5";
6587 content: "\f0e5";
6588 }
6588 }
6589 .fa-comments-o:before {
6589 .fa-comments-o:before {
6590 content: "\f0e6";
6590 content: "\f0e6";
6591 }
6591 }
6592 .fa-flash:before,
6592 .fa-flash:before,
6593 .fa-bolt:before {
6593 .fa-bolt:before {
6594 content: "\f0e7";
6594 content: "\f0e7";
6595 }
6595 }
6596 .fa-sitemap:before {
6596 .fa-sitemap:before {
6597 content: "\f0e8";
6597 content: "\f0e8";
6598 }
6598 }
6599 .fa-umbrella:before {
6599 .fa-umbrella:before {
6600 content: "\f0e9";
6600 content: "\f0e9";
6601 }
6601 }
6602 .fa-paste:before,
6602 .fa-paste:before,
6603 .fa-clipboard:before {
6603 .fa-clipboard:before {
6604 content: "\f0ea";
6604 content: "\f0ea";
6605 }
6605 }
6606 .fa-lightbulb-o:before {
6606 .fa-lightbulb-o:before {
6607 content: "\f0eb";
6607 content: "\f0eb";
6608 }
6608 }
6609 .fa-exchange:before {
6609 .fa-exchange:before {
6610 content: "\f0ec";
6610 content: "\f0ec";
6611 }
6611 }
6612 .fa-cloud-download:before {
6612 .fa-cloud-download:before {
6613 content: "\f0ed";
6613 content: "\f0ed";
6614 }
6614 }
6615 .fa-cloud-upload:before {
6615 .fa-cloud-upload:before {
6616 content: "\f0ee";
6616 content: "\f0ee";
6617 }
6617 }
6618 .fa-user-md:before {
6618 .fa-user-md:before {
6619 content: "\f0f0";
6619 content: "\f0f0";
6620 }
6620 }
6621 .fa-stethoscope:before {
6621 .fa-stethoscope:before {
6622 content: "\f0f1";
6622 content: "\f0f1";
6623 }
6623 }
6624 .fa-suitcase:before {
6624 .fa-suitcase:before {
6625 content: "\f0f2";
6625 content: "\f0f2";
6626 }
6626 }
6627 .fa-bell-o:before {
6627 .fa-bell-o:before {
6628 content: "\f0a2";
6628 content: "\f0a2";
6629 }
6629 }
6630 .fa-coffee:before {
6630 .fa-coffee:before {
6631 content: "\f0f4";
6631 content: "\f0f4";
6632 }
6632 }
6633 .fa-cutlery:before {
6633 .fa-cutlery:before {
6634 content: "\f0f5";
6634 content: "\f0f5";
6635 }
6635 }
6636 .fa-file-text-o:before {
6636 .fa-file-text-o:before {
6637 content: "\f0f6";
6637 content: "\f0f6";
6638 }
6638 }
6639 .fa-building-o:before {
6639 .fa-building-o:before {
6640 content: "\f0f7";
6640 content: "\f0f7";
6641 }
6641 }
6642 .fa-hospital-o:before {
6642 .fa-hospital-o:before {
6643 content: "\f0f8";
6643 content: "\f0f8";
6644 }
6644 }
6645 .fa-ambulance:before {
6645 .fa-ambulance:before {
6646 content: "\f0f9";
6646 content: "\f0f9";
6647 }
6647 }
6648 .fa-medkit:before {
6648 .fa-medkit:before {
6649 content: "\f0fa";
6649 content: "\f0fa";
6650 }
6650 }
6651 .fa-fighter-jet:before {
6651 .fa-fighter-jet:before {
6652 content: "\f0fb";
6652 content: "\f0fb";
6653 }
6653 }
6654 .fa-beer:before {
6654 .fa-beer:before {
6655 content: "\f0fc";
6655 content: "\f0fc";
6656 }
6656 }
6657 .fa-h-square:before {
6657 .fa-h-square:before {
6658 content: "\f0fd";
6658 content: "\f0fd";
6659 }
6659 }
6660 .fa-plus-square:before {
6660 .fa-plus-square:before {
6661 content: "\f0fe";
6661 content: "\f0fe";
6662 }
6662 }
6663 .fa-angle-double-left:before {
6663 .fa-angle-double-left:before {
6664 content: "\f100";
6664 content: "\f100";
6665 }
6665 }
6666 .fa-angle-double-right:before {
6666 .fa-angle-double-right:before {
6667 content: "\f101";
6667 content: "\f101";
6668 }
6668 }
6669 .fa-angle-double-up:before {
6669 .fa-angle-double-up:before {
6670 content: "\f102";
6670 content: "\f102";
6671 }
6671 }
6672 .fa-angle-double-down:before {
6672 .fa-angle-double-down:before {
6673 content: "\f103";
6673 content: "\f103";
6674 }
6674 }
6675 .fa-angle-left:before {
6675 .fa-angle-left:before {
6676 content: "\f104";
6676 content: "\f104";
6677 }
6677 }
6678 .fa-angle-right:before {
6678 .fa-angle-right:before {
6679 content: "\f105";
6679 content: "\f105";
6680 }
6680 }
6681 .fa-angle-up:before {
6681 .fa-angle-up:before {
6682 content: "\f106";
6682 content: "\f106";
6683 }
6683 }
6684 .fa-angle-down:before {
6684 .fa-angle-down:before {
6685 content: "\f107";
6685 content: "\f107";
6686 }
6686 }
6687 .fa-desktop:before {
6687 .fa-desktop:before {
6688 content: "\f108";
6688 content: "\f108";
6689 }
6689 }
6690 .fa-laptop:before {
6690 .fa-laptop:before {
6691 content: "\f109";
6691 content: "\f109";
6692 }
6692 }
6693 .fa-tablet:before {
6693 .fa-tablet:before {
6694 content: "\f10a";
6694 content: "\f10a";
6695 }
6695 }
6696 .fa-mobile-phone:before,
6696 .fa-mobile-phone:before,
6697 .fa-mobile:before {
6697 .fa-mobile:before {
6698 content: "\f10b";
6698 content: "\f10b";
6699 }
6699 }
6700 .fa-circle-o:before {
6700 .fa-circle-o:before {
6701 content: "\f10c";
6701 content: "\f10c";
6702 }
6702 }
6703 .fa-quote-left:before {
6703 .fa-quote-left:before {
6704 content: "\f10d";
6704 content: "\f10d";
6705 }
6705 }
6706 .fa-quote-right:before {
6706 .fa-quote-right:before {
6707 content: "\f10e";
6707 content: "\f10e";
6708 }
6708 }
6709 .fa-spinner:before {
6709 .fa-spinner:before {
6710 content: "\f110";
6710 content: "\f110";
6711 }
6711 }
6712 .fa-circle:before {
6712 .fa-circle:before {
6713 content: "\f111";
6713 content: "\f111";
6714 }
6714 }
6715 .fa-mail-reply:before,
6715 .fa-mail-reply:before,
6716 .fa-reply:before {
6716 .fa-reply:before {
6717 content: "\f112";
6717 content: "\f112";
6718 }
6718 }
6719 .fa-github-alt:before {
6719 .fa-github-alt:before {
6720 content: "\f113";
6720 content: "\f113";
6721 }
6721 }
6722 .fa-folder-o:before {
6722 .fa-folder-o:before {
6723 content: "\f114";
6723 content: "\f114";
6724 }
6724 }
6725 .fa-folder-open-o:before {
6725 .fa-folder-open-o:before {
6726 content: "\f115";
6726 content: "\f115";
6727 }
6727 }
6728 .fa-smile-o:before {
6728 .fa-smile-o:before {
6729 content: "\f118";
6729 content: "\f118";
6730 }
6730 }
6731 .fa-frown-o:before {
6731 .fa-frown-o:before {
6732 content: "\f119";
6732 content: "\f119";
6733 }
6733 }
6734 .fa-meh-o:before {
6734 .fa-meh-o:before {
6735 content: "\f11a";
6735 content: "\f11a";
6736 }
6736 }
6737 .fa-gamepad:before {
6737 .fa-gamepad:before {
6738 content: "\f11b";
6738 content: "\f11b";
6739 }
6739 }
6740 .fa-keyboard-o:before {
6740 .fa-keyboard-o:before {
6741 content: "\f11c";
6741 content: "\f11c";
6742 }
6742 }
6743 .fa-flag-o:before {
6743 .fa-flag-o:before {
6744 content: "\f11d";
6744 content: "\f11d";
6745 }
6745 }
6746 .fa-flag-checkered:before {
6746 .fa-flag-checkered:before {
6747 content: "\f11e";
6747 content: "\f11e";
6748 }
6748 }
6749 .fa-terminal:before {
6749 .fa-terminal:before {
6750 content: "\f120";
6750 content: "\f120";
6751 }
6751 }
6752 .fa-code:before {
6752 .fa-code:before {
6753 content: "\f121";
6753 content: "\f121";
6754 }
6754 }
6755 .fa-mail-reply-all:before,
6755 .fa-mail-reply-all:before,
6756 .fa-reply-all:before {
6756 .fa-reply-all:before {
6757 content: "\f122";
6757 content: "\f122";
6758 }
6758 }
6759 .fa-star-half-empty:before,
6759 .fa-star-half-empty:before,
6760 .fa-star-half-full:before,
6760 .fa-star-half-full:before,
6761 .fa-star-half-o:before {
6761 .fa-star-half-o:before {
6762 content: "\f123";
6762 content: "\f123";
6763 }
6763 }
6764 .fa-location-arrow:before {
6764 .fa-location-arrow:before {
6765 content: "\f124";
6765 content: "\f124";
6766 }
6766 }
6767 .fa-crop:before {
6767 .fa-crop:before {
6768 content: "\f125";
6768 content: "\f125";
6769 }
6769 }
6770 .fa-code-fork:before {
6770 .fa-code-fork:before {
6771 content: "\f126";
6771 content: "\f126";
6772 }
6772 }
6773 .fa-unlink:before,
6773 .fa-unlink:before,
6774 .fa-chain-broken:before {
6774 .fa-chain-broken:before {
6775 content: "\f127";
6775 content: "\f127";
6776 }
6776 }
6777 .fa-question:before {
6777 .fa-question:before {
6778 content: "\f128";
6778 content: "\f128";
6779 }
6779 }
6780 .fa-info:before {
6780 .fa-info:before {
6781 content: "\f129";
6781 content: "\f129";
6782 }
6782 }
6783 .fa-exclamation:before {
6783 .fa-exclamation:before {
6784 content: "\f12a";
6784 content: "\f12a";
6785 }
6785 }
6786 .fa-superscript:before {
6786 .fa-superscript:before {
6787 content: "\f12b";
6787 content: "\f12b";
6788 }
6788 }
6789 .fa-subscript:before {
6789 .fa-subscript:before {
6790 content: "\f12c";
6790 content: "\f12c";
6791 }
6791 }
6792 .fa-eraser:before {
6792 .fa-eraser:before {
6793 content: "\f12d";
6793 content: "\f12d";
6794 }
6794 }
6795 .fa-puzzle-piece:before {
6795 .fa-puzzle-piece:before {
6796 content: "\f12e";
6796 content: "\f12e";
6797 }
6797 }
6798 .fa-microphone:before {
6798 .fa-microphone:before {
6799 content: "\f130";
6799 content: "\f130";
6800 }
6800 }
6801 .fa-microphone-slash:before {
6801 .fa-microphone-slash:before {
6802 content: "\f131";
6802 content: "\f131";
6803 }
6803 }
6804 .fa-shield:before {
6804 .fa-shield:before {
6805 content: "\f132";
6805 content: "\f132";
6806 }
6806 }
6807 .fa-calendar-o:before {
6807 .fa-calendar-o:before {
6808 content: "\f133";
6808 content: "\f133";
6809 }
6809 }
6810 .fa-fire-extinguisher:before {
6810 .fa-fire-extinguisher:before {
6811 content: "\f134";
6811 content: "\f134";
6812 }
6812 }
6813 .fa-rocket:before {
6813 .fa-rocket:before {
6814 content: "\f135";
6814 content: "\f135";
6815 }
6815 }
6816 .fa-maxcdn:before {
6816 .fa-maxcdn:before {
6817 content: "\f136";
6817 content: "\f136";
6818 }
6818 }
6819 .fa-chevron-circle-left:before {
6819 .fa-chevron-circle-left:before {
6820 content: "\f137";
6820 content: "\f137";
6821 }
6821 }
6822 .fa-chevron-circle-right:before {
6822 .fa-chevron-circle-right:before {
6823 content: "\f138";
6823 content: "\f138";
6824 }
6824 }
6825 .fa-chevron-circle-up:before {
6825 .fa-chevron-circle-up:before {
6826 content: "\f139";
6826 content: "\f139";
6827 }
6827 }
6828 .fa-chevron-circle-down:before {
6828 .fa-chevron-circle-down:before {
6829 content: "\f13a";
6829 content: "\f13a";
6830 }
6830 }
6831 .fa-html5:before {
6831 .fa-html5:before {
6832 content: "\f13b";
6832 content: "\f13b";
6833 }
6833 }
6834 .fa-css3:before {
6834 .fa-css3:before {
6835 content: "\f13c";
6835 content: "\f13c";
6836 }
6836 }
6837 .fa-anchor:before {
6837 .fa-anchor:before {
6838 content: "\f13d";
6838 content: "\f13d";
6839 }
6839 }
6840 .fa-unlock-alt:before {
6840 .fa-unlock-alt:before {
6841 content: "\f13e";
6841 content: "\f13e";
6842 }
6842 }
6843 .fa-bullseye:before {
6843 .fa-bullseye:before {
6844 content: "\f140";
6844 content: "\f140";
6845 }
6845 }
6846 .fa-ellipsis-h:before {
6846 .fa-ellipsis-h:before {
6847 content: "\f141";
6847 content: "\f141";
6848 }
6848 }
6849 .fa-ellipsis-v:before {
6849 .fa-ellipsis-v:before {
6850 content: "\f142";
6850 content: "\f142";
6851 }
6851 }
6852 .fa-rss-square:before {
6852 .fa-rss-square:before {
6853 content: "\f143";
6853 content: "\f143";
6854 }
6854 }
6855 .fa-play-circle:before {
6855 .fa-play-circle:before {
6856 content: "\f144";
6856 content: "\f144";
6857 }
6857 }
6858 .fa-ticket:before {
6858 .fa-ticket:before {
6859 content: "\f145";
6859 content: "\f145";
6860 }
6860 }
6861 .fa-minus-square:before {
6861 .fa-minus-square:before {
6862 content: "\f146";
6862 content: "\f146";
6863 }
6863 }
6864 .fa-minus-square-o:before {
6864 .fa-minus-square-o:before {
6865 content: "\f147";
6865 content: "\f147";
6866 }
6866 }
6867 .fa-level-up:before {
6867 .fa-level-up:before {
6868 content: "\f148";
6868 content: "\f148";
6869 }
6869 }
6870 .fa-level-down:before {
6870 .fa-level-down:before {
6871 content: "\f149";
6871 content: "\f149";
6872 }
6872 }
6873 .fa-check-square:before {
6873 .fa-check-square:before {
6874 content: "\f14a";
6874 content: "\f14a";
6875 }
6875 }
6876 .fa-pencil-square:before {
6876 .fa-pencil-square:before {
6877 content: "\f14b";
6877 content: "\f14b";
6878 }
6878 }
6879 .fa-external-link-square:before {
6879 .fa-external-link-square:before {
6880 content: "\f14c";
6880 content: "\f14c";
6881 }
6881 }
6882 .fa-share-square:before {
6882 .fa-share-square:before {
6883 content: "\f14d";
6883 content: "\f14d";
6884 }
6884 }
6885 .fa-compass:before {
6885 .fa-compass:before {
6886 content: "\f14e";
6886 content: "\f14e";
6887 }
6887 }
6888 .fa-toggle-down:before,
6888 .fa-toggle-down:before,
6889 .fa-caret-square-o-down:before {
6889 .fa-caret-square-o-down:before {
6890 content: "\f150";
6890 content: "\f150";
6891 }
6891 }
6892 .fa-toggle-up:before,
6892 .fa-toggle-up:before,
6893 .fa-caret-square-o-up:before {
6893 .fa-caret-square-o-up:before {
6894 content: "\f151";
6894 content: "\f151";
6895 }
6895 }
6896 .fa-toggle-right:before,
6896 .fa-toggle-right:before,
6897 .fa-caret-square-o-right:before {
6897 .fa-caret-square-o-right:before {
6898 content: "\f152";
6898 content: "\f152";
6899 }
6899 }
6900 .fa-euro:before,
6900 .fa-euro:before,
6901 .fa-eur:before {
6901 .fa-eur:before {
6902 content: "\f153";
6902 content: "\f153";
6903 }
6903 }
6904 .fa-gbp:before {
6904 .fa-gbp:before {
6905 content: "\f154";
6905 content: "\f154";
6906 }
6906 }
6907 .fa-dollar:before,
6907 .fa-dollar:before,
6908 .fa-usd:before {
6908 .fa-usd:before {
6909 content: "\f155";
6909 content: "\f155";
6910 }
6910 }
6911 .fa-rupee:before,
6911 .fa-rupee:before,
6912 .fa-inr:before {
6912 .fa-inr:before {
6913 content: "\f156";
6913 content: "\f156";
6914 }
6914 }
6915 .fa-cny:before,
6915 .fa-cny:before,
6916 .fa-rmb:before,
6916 .fa-rmb:before,
6917 .fa-yen:before,
6917 .fa-yen:before,
6918 .fa-jpy:before {
6918 .fa-jpy:before {
6919 content: "\f157";
6919 content: "\f157";
6920 }
6920 }
6921 .fa-ruble:before,
6921 .fa-ruble:before,
6922 .fa-rouble:before,
6922 .fa-rouble:before,
6923 .fa-rub:before {
6923 .fa-rub:before {
6924 content: "\f158";
6924 content: "\f158";
6925 }
6925 }
6926 .fa-won:before,
6926 .fa-won:before,
6927 .fa-krw:before {
6927 .fa-krw:before {
6928 content: "\f159";
6928 content: "\f159";
6929 }
6929 }
6930 .fa-bitcoin:before,
6930 .fa-bitcoin:before,
6931 .fa-btc:before {
6931 .fa-btc:before {
6932 content: "\f15a";
6932 content: "\f15a";
6933 }
6933 }
6934 .fa-file:before {
6934 .fa-file:before {
6935 content: "\f15b";
6935 content: "\f15b";
6936 }
6936 }
6937 .fa-file-text:before {
6937 .fa-file-text:before {
6938 content: "\f15c";
6938 content: "\f15c";
6939 }
6939 }
6940 .fa-sort-alpha-asc:before {
6940 .fa-sort-alpha-asc:before {
6941 content: "\f15d";
6941 content: "\f15d";
6942 }
6942 }
6943 .fa-sort-alpha-desc:before {
6943 .fa-sort-alpha-desc:before {
6944 content: "\f15e";
6944 content: "\f15e";
6945 }
6945 }
6946 .fa-sort-amount-asc:before {
6946 .fa-sort-amount-asc:before {
6947 content: "\f160";
6947 content: "\f160";
6948 }
6948 }
6949 .fa-sort-amount-desc:before {
6949 .fa-sort-amount-desc:before {
6950 content: "\f161";
6950 content: "\f161";
6951 }
6951 }
6952 .fa-sort-numeric-asc:before {
6952 .fa-sort-numeric-asc:before {
6953 content: "\f162";
6953 content: "\f162";
6954 }
6954 }
6955 .fa-sort-numeric-desc:before {
6955 .fa-sort-numeric-desc:before {
6956 content: "\f163";
6956 content: "\f163";
6957 }
6957 }
6958 .fa-thumbs-up:before {
6958 .fa-thumbs-up:before {
6959 content: "\f164";
6959 content: "\f164";
6960 }
6960 }
6961 .fa-thumbs-down:before {
6961 .fa-thumbs-down:before {
6962 content: "\f165";
6962 content: "\f165";
6963 }
6963 }
6964 .fa-youtube-square:before {
6964 .fa-youtube-square:before {
6965 content: "\f166";
6965 content: "\f166";
6966 }
6966 }
6967 .fa-youtube:before {
6967 .fa-youtube:before {
6968 content: "\f167";
6968 content: "\f167";
6969 }
6969 }
6970 .fa-xing:before {
6970 .fa-xing:before {
6971 content: "\f168";
6971 content: "\f168";
6972 }
6972 }
6973 .fa-xing-square:before {
6973 .fa-xing-square:before {
6974 content: "\f169";
6974 content: "\f169";
6975 }
6975 }
6976 .fa-youtube-play:before {
6976 .fa-youtube-play:before {
6977 content: "\f16a";
6977 content: "\f16a";
6978 }
6978 }
6979 .fa-dropbox:before {
6979 .fa-dropbox:before {
6980 content: "\f16b";
6980 content: "\f16b";
6981 }
6981 }
6982 .fa-stack-overflow:before {
6982 .fa-stack-overflow:before {
6983 content: "\f16c";
6983 content: "\f16c";
6984 }
6984 }
6985 .fa-instagram:before {
6985 .fa-instagram:before {
6986 content: "\f16d";
6986 content: "\f16d";
6987 }
6987 }
6988 .fa-flickr:before {
6988 .fa-flickr:before {
6989 content: "\f16e";
6989 content: "\f16e";
6990 }
6990 }
6991 .fa-adn:before {
6991 .fa-adn:before {
6992 content: "\f170";
6992 content: "\f170";
6993 }
6993 }
6994 .fa-bitbucket:before {
6994 .fa-bitbucket:before {
6995 content: "\f171";
6995 content: "\f171";
6996 }
6996 }
6997 .fa-bitbucket-square:before {
6997 .fa-bitbucket-square:before {
6998 content: "\f172";
6998 content: "\f172";
6999 }
6999 }
7000 .fa-tumblr:before {
7000 .fa-tumblr:before {
7001 content: "\f173";
7001 content: "\f173";
7002 }
7002 }
7003 .fa-tumblr-square:before {
7003 .fa-tumblr-square:before {
7004 content: "\f174";
7004 content: "\f174";
7005 }
7005 }
7006 .fa-long-arrow-down:before {
7006 .fa-long-arrow-down:before {
7007 content: "\f175";
7007 content: "\f175";
7008 }
7008 }
7009 .fa-long-arrow-up:before {
7009 .fa-long-arrow-up:before {
7010 content: "\f176";
7010 content: "\f176";
7011 }
7011 }
7012 .fa-long-arrow-left:before {
7012 .fa-long-arrow-left:before {
7013 content: "\f177";
7013 content: "\f177";
7014 }
7014 }
7015 .fa-long-arrow-right:before {
7015 .fa-long-arrow-right:before {
7016 content: "\f178";
7016 content: "\f178";
7017 }
7017 }
7018 .fa-apple:before {
7018 .fa-apple:before {
7019 content: "\f179";
7019 content: "\f179";
7020 }
7020 }
7021 .fa-windows:before {
7021 .fa-windows:before {
7022 content: "\f17a";
7022 content: "\f17a";
7023 }
7023 }
7024 .fa-android:before {
7024 .fa-android:before {
7025 content: "\f17b";
7025 content: "\f17b";
7026 }
7026 }
7027 .fa-linux:before {
7027 .fa-linux:before {
7028 content: "\f17c";
7028 content: "\f17c";
7029 }
7029 }
7030 .fa-dribbble:before {
7030 .fa-dribbble:before {
7031 content: "\f17d";
7031 content: "\f17d";
7032 }
7032 }
7033 .fa-skype:before {
7033 .fa-skype:before {
7034 content: "\f17e";
7034 content: "\f17e";
7035 }
7035 }
7036 .fa-foursquare:before {
7036 .fa-foursquare:before {
7037 content: "\f180";
7037 content: "\f180";
7038 }
7038 }
7039 .fa-trello:before {
7039 .fa-trello:before {
7040 content: "\f181";
7040 content: "\f181";
7041 }
7041 }
7042 .fa-female:before {
7042 .fa-female:before {
7043 content: "\f182";
7043 content: "\f182";
7044 }
7044 }
7045 .fa-male:before {
7045 .fa-male:before {
7046 content: "\f183";
7046 content: "\f183";
7047 }
7047 }
7048 .fa-gittip:before {
7048 .fa-gittip:before {
7049 content: "\f184";
7049 content: "\f184";
7050 }
7050 }
7051 .fa-sun-o:before {
7051 .fa-sun-o:before {
7052 content: "\f185";
7052 content: "\f185";
7053 }
7053 }
7054 .fa-moon-o:before {
7054 .fa-moon-o:before {
7055 content: "\f186";
7055 content: "\f186";
7056 }
7056 }
7057 .fa-archive:before {
7057 .fa-archive:before {
7058 content: "\f187";
7058 content: "\f187";
7059 }
7059 }
7060 .fa-bug:before {
7060 .fa-bug:before {
7061 content: "\f188";
7061 content: "\f188";
7062 }
7062 }
7063 .fa-vk:before {
7063 .fa-vk:before {
7064 content: "\f189";
7064 content: "\f189";
7065 }
7065 }
7066 .fa-weibo:before {
7066 .fa-weibo:before {
7067 content: "\f18a";
7067 content: "\f18a";
7068 }
7068 }
7069 .fa-renren:before {
7069 .fa-renren:before {
7070 content: "\f18b";
7070 content: "\f18b";
7071 }
7071 }
7072 .fa-pagelines:before {
7072 .fa-pagelines:before {
7073 content: "\f18c";
7073 content: "\f18c";
7074 }
7074 }
7075 .fa-stack-exchange:before {
7075 .fa-stack-exchange:before {
7076 content: "\f18d";
7076 content: "\f18d";
7077 }
7077 }
7078 .fa-arrow-circle-o-right:before {
7078 .fa-arrow-circle-o-right:before {
7079 content: "\f18e";
7079 content: "\f18e";
7080 }
7080 }
7081 .fa-arrow-circle-o-left:before {
7081 .fa-arrow-circle-o-left:before {
7082 content: "\f190";
7082 content: "\f190";
7083 }
7083 }
7084 .fa-toggle-left:before,
7084 .fa-toggle-left:before,
7085 .fa-caret-square-o-left:before {
7085 .fa-caret-square-o-left:before {
7086 content: "\f191";
7086 content: "\f191";
7087 }
7087 }
7088 .fa-dot-circle-o:before {
7088 .fa-dot-circle-o:before {
7089 content: "\f192";
7089 content: "\f192";
7090 }
7090 }
7091 .fa-wheelchair:before {
7091 .fa-wheelchair:before {
7092 content: "\f193";
7092 content: "\f193";
7093 }
7093 }
7094 .fa-vimeo-square:before {
7094 .fa-vimeo-square:before {
7095 content: "\f194";
7095 content: "\f194";
7096 }
7096 }
7097 .fa-turkish-lira:before,
7097 .fa-turkish-lira:before,
7098 .fa-try:before {
7098 .fa-try:before {
7099 content: "\f195";
7099 content: "\f195";
7100 }
7100 }
7101 .fa-plus-square-o:before {
7101 .fa-plus-square-o:before {
7102 content: "\f196";
7102 content: "\f196";
7103 }
7103 }
7104 .fa-space-shuttle:before {
7104 .fa-space-shuttle:before {
7105 content: "\f197";
7105 content: "\f197";
7106 }
7106 }
7107 .fa-slack:before {
7107 .fa-slack:before {
7108 content: "\f198";
7108 content: "\f198";
7109 }
7109 }
7110 .fa-envelope-square:before {
7110 .fa-envelope-square:before {
7111 content: "\f199";
7111 content: "\f199";
7112 }
7112 }
7113 .fa-wordpress:before {
7113 .fa-wordpress:before {
7114 content: "\f19a";
7114 content: "\f19a";
7115 }
7115 }
7116 .fa-openid:before {
7116 .fa-openid:before {
7117 content: "\f19b";
7117 content: "\f19b";
7118 }
7118 }
7119 .fa-institution:before,
7119 .fa-institution:before,
7120 .fa-bank:before,
7120 .fa-bank:before,
7121 .fa-university:before {
7121 .fa-university:before {
7122 content: "\f19c";
7122 content: "\f19c";
7123 }
7123 }
7124 .fa-mortar-board:before,
7124 .fa-mortar-board:before,
7125 .fa-graduation-cap:before {
7125 .fa-graduation-cap:before {
7126 content: "\f19d";
7126 content: "\f19d";
7127 }
7127 }
7128 .fa-yahoo:before {
7128 .fa-yahoo:before {
7129 content: "\f19e";
7129 content: "\f19e";
7130 }
7130 }
7131 .fa-google:before {
7131 .fa-google:before {
7132 content: "\f1a0";
7132 content: "\f1a0";
7133 }
7133 }
7134 .fa-reddit:before {
7134 .fa-reddit:before {
7135 content: "\f1a1";
7135 content: "\f1a1";
7136 }
7136 }
7137 .fa-reddit-square:before {
7137 .fa-reddit-square:before {
7138 content: "\f1a2";
7138 content: "\f1a2";
7139 }
7139 }
7140 .fa-stumbleupon-circle:before {
7140 .fa-stumbleupon-circle:before {
7141 content: "\f1a3";
7141 content: "\f1a3";
7142 }
7142 }
7143 .fa-stumbleupon:before {
7143 .fa-stumbleupon:before {
7144 content: "\f1a4";
7144 content: "\f1a4";
7145 }
7145 }
7146 .fa-delicious:before {
7146 .fa-delicious:before {
7147 content: "\f1a5";
7147 content: "\f1a5";
7148 }
7148 }
7149 .fa-digg:before {
7149 .fa-digg:before {
7150 content: "\f1a6";
7150 content: "\f1a6";
7151 }
7151 }
7152 .fa-pied-piper:before {
7152 .fa-pied-piper:before {
7153 content: "\f1a7";
7153 content: "\f1a7";
7154 }
7154 }
7155 .fa-pied-piper-alt:before {
7155 .fa-pied-piper-alt:before {
7156 content: "\f1a8";
7156 content: "\f1a8";
7157 }
7157 }
7158 .fa-drupal:before {
7158 .fa-drupal:before {
7159 content: "\f1a9";
7159 content: "\f1a9";
7160 }
7160 }
7161 .fa-joomla:before {
7161 .fa-joomla:before {
7162 content: "\f1aa";
7162 content: "\f1aa";
7163 }
7163 }
7164 .fa-language:before {
7164 .fa-language:before {
7165 content: "\f1ab";
7165 content: "\f1ab";
7166 }
7166 }
7167 .fa-fax:before {
7167 .fa-fax:before {
7168 content: "\f1ac";
7168 content: "\f1ac";
7169 }
7169 }
7170 .fa-building:before {
7170 .fa-building:before {
7171 content: "\f1ad";
7171 content: "\f1ad";
7172 }
7172 }
7173 .fa-child:before {
7173 .fa-child:before {
7174 content: "\f1ae";
7174 content: "\f1ae";
7175 }
7175 }
7176 .fa-paw:before {
7176 .fa-paw:before {
7177 content: "\f1b0";
7177 content: "\f1b0";
7178 }
7178 }
7179 .fa-spoon:before {
7179 .fa-spoon:before {
7180 content: "\f1b1";
7180 content: "\f1b1";
7181 }
7181 }
7182 .fa-cube:before {
7182 .fa-cube:before {
7183 content: "\f1b2";
7183 content: "\f1b2";
7184 }
7184 }
7185 .fa-cubes:before {
7185 .fa-cubes:before {
7186 content: "\f1b3";
7186 content: "\f1b3";
7187 }
7187 }
7188 .fa-behance:before {
7188 .fa-behance:before {
7189 content: "\f1b4";
7189 content: "\f1b4";
7190 }
7190 }
7191 .fa-behance-square:before {
7191 .fa-behance-square:before {
7192 content: "\f1b5";
7192 content: "\f1b5";
7193 }
7193 }
7194 .fa-steam:before {
7194 .fa-steam:before {
7195 content: "\f1b6";
7195 content: "\f1b6";
7196 }
7196 }
7197 .fa-steam-square:before {
7197 .fa-steam-square:before {
7198 content: "\f1b7";
7198 content: "\f1b7";
7199 }
7199 }
7200 .fa-recycle:before {
7200 .fa-recycle:before {
7201 content: "\f1b8";
7201 content: "\f1b8";
7202 }
7202 }
7203 .fa-automobile:before,
7203 .fa-automobile:before,
7204 .fa-car:before {
7204 .fa-car:before {
7205 content: "\f1b9";
7205 content: "\f1b9";
7206 }
7206 }
7207 .fa-cab:before,
7207 .fa-cab:before,
7208 .fa-taxi:before {
7208 .fa-taxi:before {
7209 content: "\f1ba";
7209 content: "\f1ba";
7210 }
7210 }
7211 .fa-tree:before {
7211 .fa-tree:before {
7212 content: "\f1bb";
7212 content: "\f1bb";
7213 }
7213 }
7214 .fa-spotify:before {
7214 .fa-spotify:before {
7215 content: "\f1bc";
7215 content: "\f1bc";
7216 }
7216 }
7217 .fa-deviantart:before {
7217 .fa-deviantart:before {
7218 content: "\f1bd";
7218 content: "\f1bd";
7219 }
7219 }
7220 .fa-soundcloud:before {
7220 .fa-soundcloud:before {
7221 content: "\f1be";
7221 content: "\f1be";
7222 }
7222 }
7223 .fa-database:before {
7223 .fa-database:before {
7224 content: "\f1c0";
7224 content: "\f1c0";
7225 }
7225 }
7226 .fa-file-pdf-o:before {
7226 .fa-file-pdf-o:before {
7227 content: "\f1c1";
7227 content: "\f1c1";
7228 }
7228 }
7229 .fa-file-word-o:before {
7229 .fa-file-word-o:before {
7230 content: "\f1c2";
7230 content: "\f1c2";
7231 }
7231 }
7232 .fa-file-excel-o:before {
7232 .fa-file-excel-o:before {
7233 content: "\f1c3";
7233 content: "\f1c3";
7234 }
7234 }
7235 .fa-file-powerpoint-o:before {
7235 .fa-file-powerpoint-o:before {
7236 content: "\f1c4";
7236 content: "\f1c4";
7237 }
7237 }
7238 .fa-file-photo-o:before,
7238 .fa-file-photo-o:before,
7239 .fa-file-picture-o:before,
7239 .fa-file-picture-o:before,
7240 .fa-file-image-o:before {
7240 .fa-file-image-o:before {
7241 content: "\f1c5";
7241 content: "\f1c5";
7242 }
7242 }
7243 .fa-file-zip-o:before,
7243 .fa-file-zip-o:before,
7244 .fa-file-archive-o:before {
7244 .fa-file-archive-o:before {
7245 content: "\f1c6";
7245 content: "\f1c6";
7246 }
7246 }
7247 .fa-file-sound-o:before,
7247 .fa-file-sound-o:before,
7248 .fa-file-audio-o:before {
7248 .fa-file-audio-o:before {
7249 content: "\f1c7";
7249 content: "\f1c7";
7250 }
7250 }
7251 .fa-file-movie-o:before,
7251 .fa-file-movie-o:before,
7252 .fa-file-video-o:before {
7252 .fa-file-video-o:before {
7253 content: "\f1c8";
7253 content: "\f1c8";
7254 }
7254 }
7255 .fa-file-code-o:before {
7255 .fa-file-code-o:before {
7256 content: "\f1c9";
7256 content: "\f1c9";
7257 }
7257 }
7258 .fa-vine:before {
7258 .fa-vine:before {
7259 content: "\f1ca";
7259 content: "\f1ca";
7260 }
7260 }
7261 .fa-codepen:before {
7261 .fa-codepen:before {
7262 content: "\f1cb";
7262 content: "\f1cb";
7263 }
7263 }
7264 .fa-jsfiddle:before {
7264 .fa-jsfiddle:before {
7265 content: "\f1cc";
7265 content: "\f1cc";
7266 }
7266 }
7267 .fa-life-bouy:before,
7267 .fa-life-bouy:before,
7268 .fa-life-buoy:before,
7268 .fa-life-buoy:before,
7269 .fa-life-saver:before,
7269 .fa-life-saver:before,
7270 .fa-support:before,
7270 .fa-support:before,
7271 .fa-life-ring:before {
7271 .fa-life-ring:before {
7272 content: "\f1cd";
7272 content: "\f1cd";
7273 }
7273 }
7274 .fa-circle-o-notch:before {
7274 .fa-circle-o-notch:before {
7275 content: "\f1ce";
7275 content: "\f1ce";
7276 }
7276 }
7277 .fa-ra:before,
7277 .fa-ra:before,
7278 .fa-rebel:before {
7278 .fa-rebel:before {
7279 content: "\f1d0";
7279 content: "\f1d0";
7280 }
7280 }
7281 .fa-ge:before,
7281 .fa-ge:before,
7282 .fa-empire:before {
7282 .fa-empire:before {
7283 content: "\f1d1";
7283 content: "\f1d1";
7284 }
7284 }
7285 .fa-git-square:before {
7285 .fa-git-square:before {
7286 content: "\f1d2";
7286 content: "\f1d2";
7287 }
7287 }
7288 .fa-git:before {
7288 .fa-git:before {
7289 content: "\f1d3";
7289 content: "\f1d3";
7290 }
7290 }
7291 .fa-hacker-news:before {
7291 .fa-hacker-news:before {
7292 content: "\f1d4";
7292 content: "\f1d4";
7293 }
7293 }
7294 .fa-tencent-weibo:before {
7294 .fa-tencent-weibo:before {
7295 content: "\f1d5";
7295 content: "\f1d5";
7296 }
7296 }
7297 .fa-qq:before {
7297 .fa-qq:before {
7298 content: "\f1d6";
7298 content: "\f1d6";
7299 }
7299 }
7300 .fa-wechat:before,
7300 .fa-wechat:before,
7301 .fa-weixin:before {
7301 .fa-weixin:before {
7302 content: "\f1d7";
7302 content: "\f1d7";
7303 }
7303 }
7304 .fa-send:before,
7304 .fa-send:before,
7305 .fa-paper-plane:before {
7305 .fa-paper-plane:before {
7306 content: "\f1d8";
7306 content: "\f1d8";
7307 }
7307 }
7308 .fa-send-o:before,
7308 .fa-send-o:before,
7309 .fa-paper-plane-o:before {
7309 .fa-paper-plane-o:before {
7310 content: "\f1d9";
7310 content: "\f1d9";
7311 }
7311 }
7312 .fa-history:before {
7312 .fa-history:before {
7313 content: "\f1da";
7313 content: "\f1da";
7314 }
7314 }
7315 .fa-circle-thin:before {
7315 .fa-circle-thin:before {
7316 content: "\f1db";
7316 content: "\f1db";
7317 }
7317 }
7318 .fa-header:before {
7318 .fa-header:before {
7319 content: "\f1dc";
7319 content: "\f1dc";
7320 }
7320 }
7321 .fa-paragraph:before {
7321 .fa-paragraph:before {
7322 content: "\f1dd";
7322 content: "\f1dd";
7323 }
7323 }
7324 .fa-sliders:before {
7324 .fa-sliders:before {
7325 content: "\f1de";
7325 content: "\f1de";
7326 }
7326 }
7327 .fa-share-alt:before {
7327 .fa-share-alt:before {
7328 content: "\f1e0";
7328 content: "\f1e0";
7329 }
7329 }
7330 .fa-share-alt-square:before {
7330 .fa-share-alt-square:before {
7331 content: "\f1e1";
7331 content: "\f1e1";
7332 }
7332 }
7333 .fa-bomb:before {
7333 .fa-bomb:before {
7334 content: "\f1e2";
7334 content: "\f1e2";
7335 }
7335 }
7336 .fa-soccer-ball-o:before,
7336 .fa-soccer-ball-o:before,
7337 .fa-futbol-o:before {
7337 .fa-futbol-o:before {
7338 content: "\f1e3";
7338 content: "\f1e3";
7339 }
7339 }
7340 .fa-tty:before {
7340 .fa-tty:before {
7341 content: "\f1e4";
7341 content: "\f1e4";
7342 }
7342 }
7343 .fa-binoculars:before {
7343 .fa-binoculars:before {
7344 content: "\f1e5";
7344 content: "\f1e5";
7345 }
7345 }
7346 .fa-plug:before {
7346 .fa-plug:before {
7347 content: "\f1e6";
7347 content: "\f1e6";
7348 }
7348 }
7349 .fa-slideshare:before {
7349 .fa-slideshare:before {
7350 content: "\f1e7";
7350 content: "\f1e7";
7351 }
7351 }
7352 .fa-twitch:before {
7352 .fa-twitch:before {
7353 content: "\f1e8";
7353 content: "\f1e8";
7354 }
7354 }
7355 .fa-yelp:before {
7355 .fa-yelp:before {
7356 content: "\f1e9";
7356 content: "\f1e9";
7357 }
7357 }
7358 .fa-newspaper-o:before {
7358 .fa-newspaper-o:before {
7359 content: "\f1ea";
7359 content: "\f1ea";
7360 }
7360 }
7361 .fa-wifi:before {
7361 .fa-wifi:before {
7362 content: "\f1eb";
7362 content: "\f1eb";
7363 }
7363 }
7364 .fa-calculator:before {
7364 .fa-calculator:before {
7365 content: "\f1ec";
7365 content: "\f1ec";
7366 }
7366 }
7367 .fa-paypal:before {
7367 .fa-paypal:before {
7368 content: "\f1ed";
7368 content: "\f1ed";
7369 }
7369 }
7370 .fa-google-wallet:before {
7370 .fa-google-wallet:before {
7371 content: "\f1ee";
7371 content: "\f1ee";
7372 }
7372 }
7373 .fa-cc-visa:before {
7373 .fa-cc-visa:before {
7374 content: "\f1f0";
7374 content: "\f1f0";
7375 }
7375 }
7376 .fa-cc-mastercard:before {
7376 .fa-cc-mastercard:before {
7377 content: "\f1f1";
7377 content: "\f1f1";
7378 }
7378 }
7379 .fa-cc-discover:before {
7379 .fa-cc-discover:before {
7380 content: "\f1f2";
7380 content: "\f1f2";
7381 }
7381 }
7382 .fa-cc-amex:before {
7382 .fa-cc-amex:before {
7383 content: "\f1f3";
7383 content: "\f1f3";
7384 }
7384 }
7385 .fa-cc-paypal:before {
7385 .fa-cc-paypal:before {
7386 content: "\f1f4";
7386 content: "\f1f4";
7387 }
7387 }
7388 .fa-cc-stripe:before {
7388 .fa-cc-stripe:before {
7389 content: "\f1f5";
7389 content: "\f1f5";
7390 }
7390 }
7391 .fa-bell-slash:before {
7391 .fa-bell-slash:before {
7392 content: "\f1f6";
7392 content: "\f1f6";
7393 }
7393 }
7394 .fa-bell-slash-o:before {
7394 .fa-bell-slash-o:before {
7395 content: "\f1f7";
7395 content: "\f1f7";
7396 }
7396 }
7397 .fa-trash:before {
7397 .fa-trash:before {
7398 content: "\f1f8";
7398 content: "\f1f8";
7399 }
7399 }
7400 .fa-copyright:before {
7400 .fa-copyright:before {
7401 content: "\f1f9";
7401 content: "\f1f9";
7402 }
7402 }
7403 .fa-at:before {
7403 .fa-at:before {
7404 content: "\f1fa";
7404 content: "\f1fa";
7405 }
7405 }
7406 .fa-eyedropper:before {
7406 .fa-eyedropper:before {
7407 content: "\f1fb";
7407 content: "\f1fb";
7408 }
7408 }
7409 .fa-paint-brush:before {
7409 .fa-paint-brush:before {
7410 content: "\f1fc";
7410 content: "\f1fc";
7411 }
7411 }
7412 .fa-birthday-cake:before {
7412 .fa-birthday-cake:before {
7413 content: "\f1fd";
7413 content: "\f1fd";
7414 }
7414 }
7415 .fa-area-chart:before {
7415 .fa-area-chart:before {
7416 content: "\f1fe";
7416 content: "\f1fe";
7417 }
7417 }
7418 .fa-pie-chart:before {
7418 .fa-pie-chart:before {
7419 content: "\f200";
7419 content: "\f200";
7420 }
7420 }
7421 .fa-line-chart:before {
7421 .fa-line-chart:before {
7422 content: "\f201";
7422 content: "\f201";
7423 }
7423 }
7424 .fa-lastfm:before {
7424 .fa-lastfm:before {
7425 content: "\f202";
7425 content: "\f202";
7426 }
7426 }
7427 .fa-lastfm-square:before {
7427 .fa-lastfm-square:before {
7428 content: "\f203";
7428 content: "\f203";
7429 }
7429 }
7430 .fa-toggle-off:before {
7430 .fa-toggle-off:before {
7431 content: "\f204";
7431 content: "\f204";
7432 }
7432 }
7433 .fa-toggle-on:before {
7433 .fa-toggle-on:before {
7434 content: "\f205";
7434 content: "\f205";
7435 }
7435 }
7436 .fa-bicycle:before {
7436 .fa-bicycle:before {
7437 content: "\f206";
7437 content: "\f206";
7438 }
7438 }
7439 .fa-bus:before {
7439 .fa-bus:before {
7440 content: "\f207";
7440 content: "\f207";
7441 }
7441 }
7442 .fa-ioxhost:before {
7442 .fa-ioxhost:before {
7443 content: "\f208";
7443 content: "\f208";
7444 }
7444 }
7445 .fa-angellist:before {
7445 .fa-angellist:before {
7446 content: "\f209";
7446 content: "\f209";
7447 }
7447 }
7448 .fa-cc:before {
7448 .fa-cc:before {
7449 content: "\f20a";
7449 content: "\f20a";
7450 }
7450 }
7451 .fa-shekel:before,
7451 .fa-shekel:before,
7452 .fa-sheqel:before,
7452 .fa-sheqel:before,
7453 .fa-ils:before {
7453 .fa-ils:before {
7454 content: "\f20b";
7454 content: "\f20b";
7455 }
7455 }
7456 .fa-meanpath:before {
7456 .fa-meanpath:before {
7457 content: "\f20c";
7457 content: "\f20c";
7458 }
7458 }
7459 /*!
7459 /*!
7460 *
7460 *
7461 * IPython base
7461 * IPython base
7462 *
7462 *
7463 */
7463 */
7464 .modal.fade .modal-dialog {
7464 .modal.fade .modal-dialog {
7465 -webkit-transform: translate(0, 0);
7465 -webkit-transform: translate(0, 0);
7466 -ms-transform: translate(0, 0);
7466 -ms-transform: translate(0, 0);
7467 transform: translate(0, 0);
7467 transform: translate(0, 0);
7468 }
7468 }
7469 code {
7469 code {
7470 color: #000000;
7470 color: #000000;
7471 }
7471 }
7472 pre {
7472 pre {
7473 font-size: inherit;
7473 font-size: inherit;
7474 line-height: inherit;
7474 line-height: inherit;
7475 }
7475 }
7476 label {
7476 label {
7477 font-weight: normal;
7477 font-weight: normal;
7478 }
7478 }
7479 .border-box-sizing {
7479 .border-box-sizing {
7480 box-sizing: border-box;
7480 box-sizing: border-box;
7481 -moz-box-sizing: border-box;
7481 -moz-box-sizing: border-box;
7482 -webkit-box-sizing: border-box;
7482 -webkit-box-sizing: border-box;
7483 }
7483 }
7484 .corner-all {
7484 .corner-all {
7485 border-radius: 4px;
7485 border-radius: 4px;
7486 }
7486 }
7487 .no-padding {
7487 .no-padding {
7488 padding: 0px;
7488 padding: 0px;
7489 }
7489 }
7490 /* Flexible box model classes */
7490 /* Flexible box model classes */
7491 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
7491 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
7492 /* This file is a compatability layer. It allows the usage of flexible box
7492 /* This file is a compatability layer. It allows the usage of flexible box
7493 model layouts accross multiple browsers, including older browsers. The newest,
7493 model layouts accross multiple browsers, including older browsers. The newest,
7494 universal implementation of the flexible box model is used when available (see
7494 universal implementation of the flexible box model is used when available (see
7495 `Modern browsers` comments below). Browsers that are known to implement this
7495 `Modern browsers` comments below). Browsers that are known to implement this
7496 new spec completely include:
7496 new spec completely include:
7497
7497
7498 Firefox 28.0+
7498 Firefox 28.0+
7499 Chrome 29.0+
7499 Chrome 29.0+
7500 Internet Explorer 11+
7500 Internet Explorer 11+
7501 Opera 17.0+
7501 Opera 17.0+
7502
7502
7503 Browsers not listed, including Safari, are supported via the styling under the
7503 Browsers not listed, including Safari, are supported via the styling under the
7504 `Old browsers` comments below.
7504 `Old browsers` comments below.
7505 */
7505 */
7506 .hbox {
7506 .hbox {
7507 /* Old browsers */
7507 /* Old browsers */
7508 display: -webkit-box;
7508 display: -webkit-box;
7509 -webkit-box-orient: horizontal;
7509 -webkit-box-orient: horizontal;
7510 -webkit-box-align: stretch;
7510 -webkit-box-align: stretch;
7511 display: -moz-box;
7511 display: -moz-box;
7512 -moz-box-orient: horizontal;
7512 -moz-box-orient: horizontal;
7513 -moz-box-align: stretch;
7513 -moz-box-align: stretch;
7514 display: box;
7514 display: box;
7515 box-orient: horizontal;
7515 box-orient: horizontal;
7516 box-align: stretch;
7516 box-align: stretch;
7517 /* Modern browsers */
7517 /* Modern browsers */
7518 display: flex;
7518 display: flex;
7519 flex-direction: row;
7519 flex-direction: row;
7520 align-items: stretch;
7520 align-items: stretch;
7521 }
7521 }
7522 .hbox > * {
7522 .hbox > * {
7523 /* Old browsers */
7523 /* Old browsers */
7524 -webkit-box-flex: 0;
7524 -webkit-box-flex: 0;
7525 -moz-box-flex: 0;
7525 -moz-box-flex: 0;
7526 box-flex: 0;
7526 box-flex: 0;
7527 /* Modern browsers */
7527 /* Modern browsers */
7528 flex: none;
7528 flex: none;
7529 }
7529 }
7530 .vbox {
7530 .vbox {
7531 /* Old browsers */
7531 /* Old browsers */
7532 display: -webkit-box;
7532 display: -webkit-box;
7533 -webkit-box-orient: vertical;
7533 -webkit-box-orient: vertical;
7534 -webkit-box-align: stretch;
7534 -webkit-box-align: stretch;
7535 display: -moz-box;
7535 display: -moz-box;
7536 -moz-box-orient: vertical;
7536 -moz-box-orient: vertical;
7537 -moz-box-align: stretch;
7537 -moz-box-align: stretch;
7538 display: box;
7538 display: box;
7539 box-orient: vertical;
7539 box-orient: vertical;
7540 box-align: stretch;
7540 box-align: stretch;
7541 /* Modern browsers */
7541 /* Modern browsers */
7542 display: flex;
7542 display: flex;
7543 flex-direction: column;
7543 flex-direction: column;
7544 align-items: stretch;
7544 align-items: stretch;
7545 }
7545 }
7546 .vbox > * {
7546 .vbox > * {
7547 /* Old browsers */
7547 /* Old browsers */
7548 -webkit-box-flex: 0;
7548 -webkit-box-flex: 0;
7549 -moz-box-flex: 0;
7549 -moz-box-flex: 0;
7550 box-flex: 0;
7550 box-flex: 0;
7551 /* Modern browsers */
7551 /* Modern browsers */
7552 flex: none;
7552 flex: none;
7553 }
7553 }
7554 .hbox.reverse,
7554 .hbox.reverse,
7555 .vbox.reverse,
7555 .vbox.reverse,
7556 .reverse {
7556 .reverse {
7557 /* Old browsers */
7557 /* Old browsers */
7558 -webkit-box-direction: reverse;
7558 -webkit-box-direction: reverse;
7559 -moz-box-direction: reverse;
7559 -moz-box-direction: reverse;
7560 box-direction: reverse;
7560 box-direction: reverse;
7561 /* Modern browsers */
7561 /* Modern browsers */
7562 flex-direction: row-reverse;
7562 flex-direction: row-reverse;
7563 }
7563 }
7564 .hbox.box-flex0,
7564 .hbox.box-flex0,
7565 .vbox.box-flex0,
7565 .vbox.box-flex0,
7566 .box-flex0 {
7566 .box-flex0 {
7567 /* Old browsers */
7567 /* Old browsers */
7568 -webkit-box-flex: 0;
7568 -webkit-box-flex: 0;
7569 -moz-box-flex: 0;
7569 -moz-box-flex: 0;
7570 box-flex: 0;
7570 box-flex: 0;
7571 /* Modern browsers */
7571 /* Modern browsers */
7572 flex: none;
7572 flex: none;
7573 width: auto;
7573 width: auto;
7574 }
7574 }
7575 .hbox.box-flex1,
7575 .hbox.box-flex1,
7576 .vbox.box-flex1,
7576 .vbox.box-flex1,
7577 .box-flex1 {
7577 .box-flex1 {
7578 /* Old browsers */
7578 /* Old browsers */
7579 -webkit-box-flex: 1;
7579 -webkit-box-flex: 1;
7580 -moz-box-flex: 1;
7580 -moz-box-flex: 1;
7581 box-flex: 1;
7581 box-flex: 1;
7582 /* Modern browsers */
7582 /* Modern browsers */
7583 flex: 1;
7583 flex: 1;
7584 }
7584 }
7585 .hbox.box-flex,
7585 .hbox.box-flex,
7586 .vbox.box-flex,
7586 .vbox.box-flex,
7587 .box-flex {
7587 .box-flex {
7588 /* Old browsers */
7588 /* Old browsers */
7589 /* Old browsers */
7589 /* Old browsers */
7590 -webkit-box-flex: 1;
7590 -webkit-box-flex: 1;
7591 -moz-box-flex: 1;
7591 -moz-box-flex: 1;
7592 box-flex: 1;
7592 box-flex: 1;
7593 /* Modern browsers */
7593 /* Modern browsers */
7594 flex: 1;
7594 flex: 1;
7595 }
7595 }
7596 .hbox.box-flex2,
7596 .hbox.box-flex2,
7597 .vbox.box-flex2,
7597 .vbox.box-flex2,
7598 .box-flex2 {
7598 .box-flex2 {
7599 /* Old browsers */
7599 /* Old browsers */
7600 -webkit-box-flex: 2;
7600 -webkit-box-flex: 2;
7601 -moz-box-flex: 2;
7601 -moz-box-flex: 2;
7602 box-flex: 2;
7602 box-flex: 2;
7603 /* Modern browsers */
7603 /* Modern browsers */
7604 flex: 2;
7604 flex: 2;
7605 }
7605 }
7606 .box-group1 {
7606 .box-group1 {
7607 /* Deprecated */
7607 /* Deprecated */
7608 -webkit-box-flex-group: 1;
7608 -webkit-box-flex-group: 1;
7609 -moz-box-flex-group: 1;
7609 -moz-box-flex-group: 1;
7610 box-flex-group: 1;
7610 box-flex-group: 1;
7611 }
7611 }
7612 .box-group2 {
7612 .box-group2 {
7613 /* Deprecated */
7613 /* Deprecated */
7614 -webkit-box-flex-group: 2;
7614 -webkit-box-flex-group: 2;
7615 -moz-box-flex-group: 2;
7615 -moz-box-flex-group: 2;
7616 box-flex-group: 2;
7616 box-flex-group: 2;
7617 }
7617 }
7618 .hbox.start,
7618 .hbox.start,
7619 .vbox.start,
7619 .vbox.start,
7620 .start {
7620 .start {
7621 /* Old browsers */
7621 /* Old browsers */
7622 -webkit-box-pack: start;
7622 -webkit-box-pack: start;
7623 -moz-box-pack: start;
7623 -moz-box-pack: start;
7624 box-pack: start;
7624 box-pack: start;
7625 /* Modern browsers */
7625 /* Modern browsers */
7626 justify-content: flex-start;
7626 justify-content: flex-start;
7627 }
7627 }
7628 .hbox.end,
7628 .hbox.end,
7629 .vbox.end,
7629 .vbox.end,
7630 .end {
7630 .end {
7631 /* Old browsers */
7631 /* Old browsers */
7632 -webkit-box-pack: end;
7632 -webkit-box-pack: end;
7633 -moz-box-pack: end;
7633 -moz-box-pack: end;
7634 box-pack: end;
7634 box-pack: end;
7635 /* Modern browsers */
7635 /* Modern browsers */
7636 justify-content: flex-end;
7636 justify-content: flex-end;
7637 }
7637 }
7638 .hbox.center,
7638 .hbox.center,
7639 .vbox.center,
7639 .vbox.center,
7640 .center {
7640 .center {
7641 /* Old browsers */
7641 /* Old browsers */
7642 -webkit-box-pack: center;
7642 -webkit-box-pack: center;
7643 -moz-box-pack: center;
7643 -moz-box-pack: center;
7644 box-pack: center;
7644 box-pack: center;
7645 /* Modern browsers */
7645 /* Modern browsers */
7646 justify-content: center;
7646 justify-content: center;
7647 }
7647 }
7648 .hbox.baseline,
7648 .hbox.baseline,
7649 .vbox.baseline,
7649 .vbox.baseline,
7650 .baseline {
7650 .baseline {
7651 /* Old browsers */
7651 /* Old browsers */
7652 -webkit-box-pack: baseline;
7652 -webkit-box-pack: baseline;
7653 -moz-box-pack: baseline;
7653 -moz-box-pack: baseline;
7654 box-pack: baseline;
7654 box-pack: baseline;
7655 /* Modern browsers */
7655 /* Modern browsers */
7656 justify-content: baseline;
7656 justify-content: baseline;
7657 }
7657 }
7658 .hbox.stretch,
7658 .hbox.stretch,
7659 .vbox.stretch,
7659 .vbox.stretch,
7660 .stretch {
7660 .stretch {
7661 /* Old browsers */
7661 /* Old browsers */
7662 -webkit-box-pack: stretch;
7662 -webkit-box-pack: stretch;
7663 -moz-box-pack: stretch;
7663 -moz-box-pack: stretch;
7664 box-pack: stretch;
7664 box-pack: stretch;
7665 /* Modern browsers */
7665 /* Modern browsers */
7666 justify-content: stretch;
7666 justify-content: stretch;
7667 }
7667 }
7668 .hbox.align-start,
7668 .hbox.align-start,
7669 .vbox.align-start,
7669 .vbox.align-start,
7670 .align-start {
7670 .align-start {
7671 /* Old browsers */
7671 /* Old browsers */
7672 -webkit-box-align: start;
7672 -webkit-box-align: start;
7673 -moz-box-align: start;
7673 -moz-box-align: start;
7674 box-align: start;
7674 box-align: start;
7675 /* Modern browsers */
7675 /* Modern browsers */
7676 align-items: flex-start;
7676 align-items: flex-start;
7677 }
7677 }
7678 .hbox.align-end,
7678 .hbox.align-end,
7679 .vbox.align-end,
7679 .vbox.align-end,
7680 .align-end {
7680 .align-end {
7681 /* Old browsers */
7681 /* Old browsers */
7682 -webkit-box-align: end;
7682 -webkit-box-align: end;
7683 -moz-box-align: end;
7683 -moz-box-align: end;
7684 box-align: end;
7684 box-align: end;
7685 /* Modern browsers */
7685 /* Modern browsers */
7686 align-items: flex-end;
7686 align-items: flex-end;
7687 }
7687 }
7688 .hbox.align-center,
7688 .hbox.align-center,
7689 .vbox.align-center,
7689 .vbox.align-center,
7690 .align-center {
7690 .align-center {
7691 /* Old browsers */
7691 /* Old browsers */
7692 -webkit-box-align: center;
7692 -webkit-box-align: center;
7693 -moz-box-align: center;
7693 -moz-box-align: center;
7694 box-align: center;
7694 box-align: center;
7695 /* Modern browsers */
7695 /* Modern browsers */
7696 align-items: center;
7696 align-items: center;
7697 }
7697 }
7698 .hbox.align-baseline,
7698 .hbox.align-baseline,
7699 .vbox.align-baseline,
7699 .vbox.align-baseline,
7700 .align-baseline {
7700 .align-baseline {
7701 /* Old browsers */
7701 /* Old browsers */
7702 -webkit-box-align: baseline;
7702 -webkit-box-align: baseline;
7703 -moz-box-align: baseline;
7703 -moz-box-align: baseline;
7704 box-align: baseline;
7704 box-align: baseline;
7705 /* Modern browsers */
7705 /* Modern browsers */
7706 align-items: baseline;
7706 align-items: baseline;
7707 }
7707 }
7708 .hbox.align-stretch,
7708 .hbox.align-stretch,
7709 .vbox.align-stretch,
7709 .vbox.align-stretch,
7710 .align-stretch {
7710 .align-stretch {
7711 /* Old browsers */
7711 /* Old browsers */
7712 -webkit-box-align: stretch;
7712 -webkit-box-align: stretch;
7713 -moz-box-align: stretch;
7713 -moz-box-align: stretch;
7714 box-align: stretch;
7714 box-align: stretch;
7715 /* Modern browsers */
7715 /* Modern browsers */
7716 align-items: stretch;
7716 align-items: stretch;
7717 }
7717 }
7718 div.error {
7718 div.error {
7719 margin: 2em;
7719 margin: 2em;
7720 text-align: center;
7720 text-align: center;
7721 }
7721 }
7722 div.error > h1 {
7722 div.error > h1 {
7723 font-size: 500%;
7723 font-size: 500%;
7724 line-height: normal;
7724 line-height: normal;
7725 }
7725 }
7726 div.error > p {
7726 div.error > p {
7727 font-size: 200%;
7727 font-size: 200%;
7728 line-height: normal;
7728 line-height: normal;
7729 }
7729 }
7730 div.traceback-wrapper {
7730 div.traceback-wrapper {
7731 text-align: left;
7731 text-align: left;
7732 max-width: 800px;
7732 max-width: 800px;
7733 margin: auto;
7733 margin: auto;
7734 }
7734 }
7735 /**
7735 /**
7736 * Primary styles
7736 * Primary styles
7737 *
7737 *
7738 * Author: IPython Development Team
7738 * Author: IPython Development Team
7739 */
7739 */
7740 body {
7740 body {
7741 background-color: white;
7741 background-color: white;
7742 /* This makes sure that the body covers the entire window and needs to
7742 /* This makes sure that the body covers the entire window and needs to
7743 be in a different element than the display: box in wrapper below */
7743 be in a different element than the display: box in wrapper below */
7744 position: absolute;
7744 position: absolute;
7745 left: 0px;
7745 left: 0px;
7746 right: 0px;
7746 right: 0px;
7747 top: 0px;
7747 top: 0px;
7748 bottom: 0px;
7748 bottom: 0px;
7749 overflow: visible;
7749 overflow: visible;
7750 }
7750 }
7751 div#header {
7751 div#header {
7752 /* Initially hidden to prevent FLOUC */
7752 /* Initially hidden to prevent FLOUC */
7753 display: none;
7753 display: none;
7754 margin-bottom: -6px;
7754 margin-bottom: -6px;
7755 position: fixed;
7755 position: fixed;
7756 top: 0;
7756 top: 0;
7757 width: 100%;
7757 width: 100%;
7758 background-color: #ffffff;
7758 background-color: #ffffff;
7759 min-height: 31px;
7759 min-height: 31px;
7760 /* Display over codemirror */
7760 /* Display over codemirror */
7761 z-index: 100;
7761 z-index: 100;
7762 }
7762 }
7763 div#header #header-container {
7763 div#header #header-container {
7764 margin-bottom: 0px;
7764 margin-bottom: 0px;
7765 padding-left: 30px;
7765 padding-left: 30px;
7766 padding-bottom: 5px;
7766 padding-bottom: 5px;
7767 box-sizing: border-box;
7767 box-sizing: border-box;
7768 -moz-box-sizing: border-box;
7768 -moz-box-sizing: border-box;
7769 -webkit-box-sizing: border-box;
7769 -webkit-box-sizing: border-box;
7770 }
7770 }
7771 div#header .header-bar {
7771 div#header .header-bar {
7772 width: 100%;
7772 width: 100%;
7773 height: 0px;
7773 height: 0px;
7774 border-bottom: 1px solid #e7e7e7;
7774 border-bottom: 1px solid #e7e7e7;
7775 }
7775 }
7776 #header-spacer {
7776 #header-spacer {
7777 width: 100%;
7777 width: 100%;
7778 visibility: hidden;
7778 visibility: hidden;
7779 }
7779 }
7780 #ipython_notebook {
7780 #ipython_notebook {
7781 padding-left: 0px;
7781 padding-left: 0px;
7782 }
7782 }
7783 #noscript {
7783 #noscript {
7784 width: auto;
7784 width: auto;
7785 padding-top: 16px;
7785 padding-top: 16px;
7786 padding-bottom: 16px;
7786 padding-bottom: 16px;
7787 text-align: center;
7787 text-align: center;
7788 font-size: 22px;
7788 font-size: 22px;
7789 color: red;
7789 color: red;
7790 font-weight: bold;
7790 font-weight: bold;
7791 }
7791 }
7792 #ipython_notebook img {
7792 #ipython_notebook img {
7793 font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
7793 font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
7794 height: 24px;
7794 height: 24px;
7795 text-decoration: none;
7795 text-decoration: none;
7796 color: black;
7796 color: black;
7797 }
7797 }
7798 #site {
7798 #site {
7799 width: 100%;
7799 width: 100%;
7800 display: none;
7800 display: none;
7801 box-sizing: border-box;
7801 box-sizing: border-box;
7802 -moz-box-sizing: border-box;
7802 -moz-box-sizing: border-box;
7803 -webkit-box-sizing: border-box;
7803 -webkit-box-sizing: border-box;
7804 }
7804 }
7805 /* Smaller buttons */
7805 /* Smaller buttons */
7806 .ui-button .ui-button-text {
7806 .ui-button .ui-button-text {
7807 padding: 0.2em 0.8em;
7807 padding: 0.2em 0.8em;
7808 font-size: 77%;
7808 font-size: 77%;
7809 }
7809 }
7810 input.ui-button {
7810 input.ui-button {
7811 padding: 0.3em 0.9em;
7811 padding: 0.3em 0.9em;
7812 }
7812 }
7813 .navbar span {
7813 .navbar span {
7814 margin-top: 3px;
7814 margin-top: 3px;
7815 }
7815 }
7816 span#login_widget {
7816 span#login_widget {
7817 float: right;
7817 float: right;
7818 }
7818 }
7819 span#login_widget > .button,
7819 span#login_widget > .button,
7820 #logout {
7820 #logout {
7821 display: inline-block;
7821 display: inline-block;
7822 margin-bottom: 0;
7822 margin-bottom: 0;
7823 font-weight: normal;
7823 font-weight: normal;
7824 text-align: center;
7824 text-align: center;
7825 vertical-align: middle;
7825 vertical-align: middle;
7826 cursor: pointer;
7826 cursor: pointer;
7827 background-image: none;
7827 background-image: none;
7828 border: 1px solid transparent;
7828 border: 1px solid transparent;
7829 white-space: nowrap;
7829 white-space: nowrap;
7830 padding: 6px 12px;
7830 padding: 6px 12px;
7831 font-size: 13px;
7831 font-size: 13px;
7832 line-height: 1.42857143;
7832 line-height: 1.42857143;
7833 border-radius: 4px;
7833 border-radius: 4px;
7834 -webkit-user-select: none;
7834 -webkit-user-select: none;
7835 -moz-user-select: none;
7835 -moz-user-select: none;
7836 -ms-user-select: none;
7836 -ms-user-select: none;
7837 user-select: none;
7837 user-select: none;
7838 color: #333333;
7838 color: #333333;
7839 background-color: #ffffff;
7839 background-color: #ffffff;
7840 border-color: #cccccc;
7840 border-color: #cccccc;
7841 padding: 5px 10px;
7841 padding: 5px 10px;
7842 font-size: 12px;
7842 font-size: 12px;
7843 line-height: 1.5;
7843 line-height: 1.5;
7844 border-radius: 3px;
7844 border-radius: 3px;
7845 }
7845 }
7846 span#login_widget > .button:focus,
7846 span#login_widget > .button:focus,
7847 #logout:focus,
7847 #logout:focus,
7848 span#login_widget > .button:active:focus,
7848 span#login_widget > .button:active:focus,
7849 #logout:active:focus,
7849 #logout:active:focus,
7850 span#login_widget > .button.active:focus,
7850 span#login_widget > .button.active:focus,
7851 #logout.active:focus {
7851 #logout.active:focus {
7852 outline: thin dotted;
7852 outline: thin dotted;
7853 outline: 5px auto -webkit-focus-ring-color;
7853 outline: 5px auto -webkit-focus-ring-color;
7854 outline-offset: -2px;
7854 outline-offset: -2px;
7855 }
7855 }
7856 span#login_widget > .button:hover,
7856 span#login_widget > .button:hover,
7857 #logout:hover,
7857 #logout:hover,
7858 span#login_widget > .button:focus,
7858 span#login_widget > .button:focus,
7859 #logout:focus {
7859 #logout:focus {
7860 color: #333333;
7860 color: #333333;
7861 text-decoration: none;
7861 text-decoration: none;
7862 }
7862 }
7863 span#login_widget > .button:active,
7863 span#login_widget > .button:active,
7864 #logout:active,
7864 #logout:active,
7865 span#login_widget > .button.active,
7865 span#login_widget > .button.active,
7866 #logout.active {
7866 #logout.active {
7867 outline: 0;
7867 outline: 0;
7868 background-image: none;
7868 background-image: none;
7869 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7869 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7870 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7870 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7871 }
7871 }
7872 span#login_widget > .button.disabled,
7872 span#login_widget > .button.disabled,
7873 #logout.disabled,
7873 #logout.disabled,
7874 span#login_widget > .button[disabled],
7874 span#login_widget > .button[disabled],
7875 #logout[disabled],
7875 #logout[disabled],
7876 fieldset[disabled] span#login_widget > .button,
7876 fieldset[disabled] span#login_widget > .button,
7877 fieldset[disabled] #logout {
7877 fieldset[disabled] #logout {
7878 cursor: not-allowed;
7878 cursor: not-allowed;
7879 pointer-events: none;
7879 pointer-events: none;
7880 opacity: 0.65;
7880 opacity: 0.65;
7881 filter: alpha(opacity=65);
7881 filter: alpha(opacity=65);
7882 -webkit-box-shadow: none;
7882 -webkit-box-shadow: none;
7883 box-shadow: none;
7883 box-shadow: none;
7884 }
7884 }
7885 span#login_widget > .button:hover,
7885 span#login_widget > .button:hover,
7886 #logout:hover,
7886 #logout:hover,
7887 span#login_widget > .button:focus,
7887 span#login_widget > .button:focus,
7888 #logout:focus,
7888 #logout:focus,
7889 span#login_widget > .button:active,
7889 span#login_widget > .button:active,
7890 #logout:active,
7890 #logout:active,
7891 span#login_widget > .button.active,
7891 span#login_widget > .button.active,
7892 #logout.active,
7892 #logout.active,
7893 .open .dropdown-togglespan#login_widget > .button,
7893 .open .dropdown-togglespan#login_widget > .button,
7894 .open .dropdown-toggle#logout {
7894 .open .dropdown-toggle#logout {
7895 color: #333333;
7895 color: #333333;
7896 background-color: #ebebeb;
7896 background-color: #ebebeb;
7897 border-color: #adadad;
7897 border-color: #adadad;
7898 }
7898 }
7899 span#login_widget > .button:active,
7899 span#login_widget > .button:active,
7900 #logout:active,
7900 #logout:active,
7901 span#login_widget > .button.active,
7901 span#login_widget > .button.active,
7902 #logout.active,
7902 #logout.active,
7903 .open .dropdown-togglespan#login_widget > .button,
7903 .open .dropdown-togglespan#login_widget > .button,
7904 .open .dropdown-toggle#logout {
7904 .open .dropdown-toggle#logout {
7905 background-image: none;
7905 background-image: none;
7906 }
7906 }
7907 span#login_widget > .button.disabled,
7907 span#login_widget > .button.disabled,
7908 #logout.disabled,
7908 #logout.disabled,
7909 span#login_widget > .button[disabled],
7909 span#login_widget > .button[disabled],
7910 #logout[disabled],
7910 #logout[disabled],
7911 fieldset[disabled] span#login_widget > .button,
7911 fieldset[disabled] span#login_widget > .button,
7912 fieldset[disabled] #logout,
7912 fieldset[disabled] #logout,
7913 span#login_widget > .button.disabled:hover,
7913 span#login_widget > .button.disabled:hover,
7914 #logout.disabled:hover,
7914 #logout.disabled:hover,
7915 span#login_widget > .button[disabled]:hover,
7915 span#login_widget > .button[disabled]:hover,
7916 #logout[disabled]:hover,
7916 #logout[disabled]:hover,
7917 fieldset[disabled] span#login_widget > .button:hover,
7917 fieldset[disabled] span#login_widget > .button:hover,
7918 fieldset[disabled] #logout:hover,
7918 fieldset[disabled] #logout:hover,
7919 span#login_widget > .button.disabled:focus,
7919 span#login_widget > .button.disabled:focus,
7920 #logout.disabled:focus,
7920 #logout.disabled:focus,
7921 span#login_widget > .button[disabled]:focus,
7921 span#login_widget > .button[disabled]:focus,
7922 #logout[disabled]:focus,
7922 #logout[disabled]:focus,
7923 fieldset[disabled] span#login_widget > .button:focus,
7923 fieldset[disabled] span#login_widget > .button:focus,
7924 fieldset[disabled] #logout:focus,
7924 fieldset[disabled] #logout:focus,
7925 span#login_widget > .button.disabled:active,
7925 span#login_widget > .button.disabled:active,
7926 #logout.disabled:active,
7926 #logout.disabled:active,
7927 span#login_widget > .button[disabled]:active,
7927 span#login_widget > .button[disabled]:active,
7928 #logout[disabled]:active,
7928 #logout[disabled]:active,
7929 fieldset[disabled] span#login_widget > .button:active,
7929 fieldset[disabled] span#login_widget > .button:active,
7930 fieldset[disabled] #logout:active,
7930 fieldset[disabled] #logout:active,
7931 span#login_widget > .button.disabled.active,
7931 span#login_widget > .button.disabled.active,
7932 #logout.disabled.active,
7932 #logout.disabled.active,
7933 span#login_widget > .button[disabled].active,
7933 span#login_widget > .button[disabled].active,
7934 #logout[disabled].active,
7934 #logout[disabled].active,
7935 fieldset[disabled] span#login_widget > .button.active,
7935 fieldset[disabled] span#login_widget > .button.active,
7936 fieldset[disabled] #logout.active {
7936 fieldset[disabled] #logout.active {
7937 background-color: #ffffff;
7937 background-color: #ffffff;
7938 border-color: #cccccc;
7938 border-color: #cccccc;
7939 }
7939 }
7940 span#login_widget > .button .badge,
7940 span#login_widget > .button .badge,
7941 #logout .badge {
7941 #logout .badge {
7942 color: #ffffff;
7942 color: #ffffff;
7943 background-color: #333333;
7943 background-color: #333333;
7944 }
7944 }
7945 .nav-header {
7945 .nav-header {
7946 text-transform: none;
7946 text-transform: none;
7947 }
7947 }
7948 #header > span {
7948 #header > span {
7949 margin-top: 10px;
7949 margin-top: 10px;
7950 }
7950 }
7951 .modal_stretch .modal-dialog {
7951 .modal_stretch .modal-dialog {
7952 /* Old browsers */
7952 /* Old browsers */
7953 display: -webkit-box;
7953 display: -webkit-box;
7954 -webkit-box-orient: vertical;
7954 -webkit-box-orient: vertical;
7955 -webkit-box-align: stretch;
7955 -webkit-box-align: stretch;
7956 display: -moz-box;
7956 display: -moz-box;
7957 -moz-box-orient: vertical;
7957 -moz-box-orient: vertical;
7958 -moz-box-align: stretch;
7958 -moz-box-align: stretch;
7959 display: box;
7959 display: box;
7960 box-orient: vertical;
7960 box-orient: vertical;
7961 box-align: stretch;
7961 box-align: stretch;
7962 /* Modern browsers */
7962 /* Modern browsers */
7963 display: flex;
7963 display: flex;
7964 flex-direction: column;
7964 flex-direction: column;
7965 align-items: stretch;
7965 align-items: stretch;
7966 min-height: 80%;
7966 min-height: 80%;
7967 }
7967 }
7968 .modal_stretch .modal-dialog .modal-body {
7968 .modal_stretch .modal-dialog .modal-body {
7969 max-height: none;
7969 max-height: none;
7970 flex: 1;
7970 flex: 1;
7971 }
7971 }
7972 @media (min-width: 768px) {
7972 @media (min-width: 768px) {
7973 .modal .modal-dialog {
7973 .modal .modal-dialog {
7974 width: 700px;
7974 width: 700px;
7975 }
7975 }
7976 }
7976 }
7977 /*!
7977 /*!
7978 *
7978 *
7979 * IPython auth
7979 * IPython auth
7980 *
7980 *
7981 */
7981 */
7982 .center-nav {
7982 .center-nav {
7983 display: inline-block;
7983 display: inline-block;
7984 margin-bottom: -4px;
7984 margin-bottom: -4px;
7985 }
7985 }
7986 /*!
7986 /*!
7987 *
7987 *
7988 * IPython tree view
7988 * IPython tree view
7989 *
7989 *
7990 */
7990 */
7991 /* We need an invisible input field on top of the sentense*/
7991 /* We need an invisible input field on top of the sentense*/
7992 /* "Drag file onto the list ..." */
7992 /* "Drag file onto the list ..." */
7993 .alternate_upload {
7993 .alternate_upload {
7994 background-color: none;
7994 background-color: none;
7995 display: inline;
7995 display: inline;
7996 }
7996 }
7997 .alternate_upload.form {
7997 .alternate_upload.form {
7998 padding: 0;
7998 padding: 0;
7999 margin: 0;
7999 margin: 0;
8000 }
8000 }
8001 .alternate_upload input.fileinput {
8001 .alternate_upload input.fileinput {
8002 display: inline;
8002 display: inline;
8003 opacity: 0;
8003 opacity: 0;
8004 z-index: 2;
8004 z-index: 2;
8005 width: 12ex;
8005 width: 12ex;
8006 margin-right: -12ex;
8006 margin-right: -12ex;
8007 }
8007 }
8008 .alternate_upload .input-overlay {
8008 .alternate_upload .input-overlay {
8009 display: inline-block;
8009 display: inline-block;
8010 font-weight: bold;
8010 font-weight: bold;
8011 }
8011 }
8012 /**
8012 /**
8013 * Primary styles
8013 * Primary styles
8014 *
8014 *
8015 * Author: IPython Development Team
8015 * Author: IPython Development Team
8016 */
8016 */
8017 ul#tabs {
8017 ul#tabs {
8018 margin-bottom: 4px;
8018 margin-bottom: 4px;
8019 }
8019 }
8020 ul#tabs a {
8020 ul#tabs a {
8021 padding-top: 6px;
8021 padding-top: 6px;
8022 padding-bottom: 4px;
8022 padding-bottom: 4px;
8023 }
8023 }
8024 ul.breadcrumb a:focus,
8024 ul.breadcrumb a:focus,
8025 ul.breadcrumb a:hover {
8025 ul.breadcrumb a:hover {
8026 text-decoration: none;
8026 text-decoration: none;
8027 }
8027 }
8028 ul.breadcrumb i.icon-home {
8028 ul.breadcrumb i.icon-home {
8029 font-size: 16px;
8029 font-size: 16px;
8030 margin-right: 4px;
8030 margin-right: 4px;
8031 }
8031 }
8032 ul.breadcrumb span {
8032 ul.breadcrumb span {
8033 color: #5e5e5e;
8033 color: #5e5e5e;
8034 }
8034 }
8035 .list_toolbar {
8035 .list_toolbar {
8036 padding: 4px 0 4px 0;
8036 padding: 4px 0 4px 0;
8037 vertical-align: middle;
8037 vertical-align: middle;
8038 }
8038 }
8039 .list_toolbar .tree-buttons {
8039 .list_toolbar .tree-buttons {
8040 padding-top: 2px;
8040 padding-top: 2px;
8041 }
8041 }
8042 .list_toolbar [class*="span"] {
8042 .list_toolbar [class*="span"] {
8043 min-height: 24px;
8043 min-height: 24px;
8044 }
8044 }
8045 .list_header {
8045 .list_header {
8046 font-weight: bold;
8046 font-weight: bold;
8047 }
8047 }
8048 .list_container {
8048 .list_container {
8049 margin-top: 4px;
8049 margin-top: 4px;
8050 margin-bottom: 20px;
8050 margin-bottom: 20px;
8051 border: 1px solid #ababab;
8051 border: 1px solid #ababab;
8052 border-radius: 4px;
8052 border-radius: 4px;
8053 }
8053 }
8054 .list_container > div {
8054 .list_container > div {
8055 border-bottom: 1px solid #ababab;
8055 border-bottom: 1px solid #ababab;
8056 }
8056 }
8057 .list_container > div:hover .list-item {
8057 .list_container > div:hover .list-item {
8058 background-color: red;
8058 background-color: red;
8059 }
8059 }
8060 .list_container > div:last-child {
8060 .list_container > div:last-child {
8061 border: none;
8061 border: none;
8062 }
8062 }
8063 .list_item:hover .list_item {
8063 .list_item:hover .list_item {
8064 background-color: #ddd;
8064 background-color: #ddd;
8065 }
8065 }
8066 .list_item a {
8066 .list_item a {
8067 text-decoration: none;
8067 text-decoration: none;
8068 }
8068 }
8069 .action_col {
8069 .action_col {
8070 text-align: right;
8070 text-align: right;
8071 }
8071 }
8072 .list_header > div,
8072 .list_header > div,
8073 .list_item > div {
8073 .list_item > div {
8074 padding-top: 4px;
8074 padding-top: 4px;
8075 padding-bottom: 4px;
8075 padding-bottom: 4px;
8076 padding-left: 7px;
8076 padding-left: 7px;
8077 padding-right: 7px;
8077 padding-right: 7px;
8078 line-height: 22px;
8078 line-height: 22px;
8079 }
8079 }
8080 .item_name {
8080 .item_name {
8081 line-height: 22px;
8081 line-height: 22px;
8082 height: 24px;
8082 height: 24px;
8083 }
8083 }
8084 .item_icon {
8084 .item_icon {
8085 font-size: 14px;
8085 font-size: 14px;
8086 color: #5e5e5e;
8086 color: #5e5e5e;
8087 margin-right: 7px;
8087 margin-right: 7px;
8088 }
8088 }
8089 .item_buttons {
8089 .item_buttons {
8090 line-height: 1em;
8090 line-height: 1em;
8091 }
8091 }
8092 .item_buttons .btn {
8092 .item_buttons .btn {
8093 min-width: 13ex;
8093 min-width: 13ex;
8094 }
8094 }
8095 .toolbar_info {
8095 .toolbar_info {
8096 height: 24px;
8096 height: 24px;
8097 line-height: 24px;
8097 line-height: 24px;
8098 }
8098 }
8099 input.nbname_input,
8099 input.nbname_input,
8100 input.engine_num_input {
8100 input.engine_num_input {
8101 padding-top: 3px;
8101 padding-top: 3px;
8102 padding-bottom: 3px;
8102 padding-bottom: 3px;
8103 height: 22px;
8103 height: 22px;
8104 line-height: 14px;
8104 line-height: 14px;
8105 margin: 0px;
8105 margin: 0px;
8106 }
8106 }
8107 input.engine_num_input {
8107 input.engine_num_input {
8108 width: 60px;
8108 width: 60px;
8109 }
8109 }
8110 .highlight_text {
8110 .highlight_text {
8111 color: blue;
8111 color: blue;
8112 }
8112 }
8113 #project_name > .breadcrumb {
8113 #project_name > .breadcrumb {
8114 padding: 0px;
8114 padding: 0px;
8115 margin-bottom: 0px;
8115 margin-bottom: 0px;
8116 background-color: transparent;
8116 background-color: transparent;
8117 font-weight: bold;
8117 font-weight: bold;
8118 }
8118 }
8119 .tab-content .row {
8119 .tab-content .row {
8120 margin-left: 0px;
8120 margin-left: 0px;
8121 margin-right: 0px;
8121 margin-right: 0px;
8122 }
8122 }
8123 .folder_icon:before {
8123 .folder_icon:before {
8124 display: inline-block;
8124 display: inline-block;
8125 font: normal normal normal 14px/1 FontAwesome;
8125 font: normal normal normal 14px/1 FontAwesome;
8126 font-size: inherit;
8126 font-size: inherit;
8127 text-rendering: auto;
8127 text-rendering: auto;
8128 -webkit-font-smoothing: antialiased;
8128 -webkit-font-smoothing: antialiased;
8129 -moz-osx-font-smoothing: grayscale;
8129 -moz-osx-font-smoothing: grayscale;
8130 content: "\f114";
8130 content: "\f114";
8131 }
8131 }
8132 .folder_icon:before.pull-left {
8132 .folder_icon:before.pull-left {
8133 margin-right: .3em;
8133 margin-right: .3em;
8134 }
8134 }
8135 .folder_icon:before.pull-right {
8135 .folder_icon:before.pull-right {
8136 margin-left: .3em;
8136 margin-left: .3em;
8137 }
8137 }
8138 .notebook_icon:before {
8138 .notebook_icon:before {
8139 display: inline-block;
8139 display: inline-block;
8140 font: normal normal normal 14px/1 FontAwesome;
8140 font: normal normal normal 14px/1 FontAwesome;
8141 font-size: inherit;
8141 font-size: inherit;
8142 text-rendering: auto;
8142 text-rendering: auto;
8143 -webkit-font-smoothing: antialiased;
8143 -webkit-font-smoothing: antialiased;
8144 -moz-osx-font-smoothing: grayscale;
8144 -moz-osx-font-smoothing: grayscale;
8145 content: "\f02d";
8145 content: "\f02d";
8146 }
8146 }
8147 .notebook_icon:before.pull-left {
8147 .notebook_icon:before.pull-left {
8148 margin-right: .3em;
8148 margin-right: .3em;
8149 }
8149 }
8150 .notebook_icon:before.pull-right {
8150 .notebook_icon:before.pull-right {
8151 margin-left: .3em;
8151 margin-left: .3em;
8152 }
8152 }
8153 .file_icon:before {
8153 .file_icon:before {
8154 display: inline-block;
8154 display: inline-block;
8155 font: normal normal normal 14px/1 FontAwesome;
8155 font: normal normal normal 14px/1 FontAwesome;
8156 font-size: inherit;
8156 font-size: inherit;
8157 text-rendering: auto;
8157 text-rendering: auto;
8158 -webkit-font-smoothing: antialiased;
8158 -webkit-font-smoothing: antialiased;
8159 -moz-osx-font-smoothing: grayscale;
8159 -moz-osx-font-smoothing: grayscale;
8160 content: "\f016";
8160 content: "\f016";
8161 }
8161 }
8162 .file_icon:before.pull-left {
8162 .file_icon:before.pull-left {
8163 margin-right: .3em;
8163 margin-right: .3em;
8164 }
8164 }
8165 .file_icon:before.pull-right {
8165 .file_icon:before.pull-right {
8166 margin-left: .3em;
8166 margin-left: .3em;
8167 }
8167 }
8168 ul#new-notebook-menu {
8168 ul#new-notebook-menu {
8169 left: auto;
8169 left: auto;
8170 right: 0;
8170 right: 0;
8171 }
8171 }
8172 .kernel-menu-icon {
8172 .kernel-menu-icon {
8173 padding-right: 12px;
8173 padding-right: 12px;
8174 width: 24px;
8174 width: 24px;
8175 content: "\f096";
8175 content: "\f096";
8176 }
8176 }
8177 .kernel-menu-icon:before {
8177 .kernel-menu-icon:before {
8178 content: "\f096";
8178 content: "\f096";
8179 }
8179 }
8180 .kernel-menu-icon-current:before {
8180 .kernel-menu-icon-current:before {
8181 content: "\f00c";
8181 content: "\f00c";
8182 }
8182 }
8183 /*!
8183 /*!
8184 *
8184 *
8185 * IPython notebook
8185 * IPython notebook
8186 *
8186 *
8187 */
8187 */
8188 /* CSS font colors for translated ANSI colors. */
8188 /* CSS font colors for translated ANSI colors. */
8189 .ansibold {
8189 .ansibold {
8190 font-weight: bold;
8190 font-weight: bold;
8191 }
8191 }
8192 /* use dark versions for foreground, to improve visibility */
8192 /* use dark versions for foreground, to improve visibility */
8193 .ansiblack {
8193 .ansiblack {
8194 color: black;
8194 color: black;
8195 }
8195 }
8196 .ansired {
8196 .ansired {
8197 color: darkred;
8197 color: darkred;
8198 }
8198 }
8199 .ansigreen {
8199 .ansigreen {
8200 color: darkgreen;
8200 color: darkgreen;
8201 }
8201 }
8202 .ansiyellow {
8202 .ansiyellow {
8203 color: #c4a000;
8203 color: #c4a000;
8204 }
8204 }
8205 .ansiblue {
8205 .ansiblue {
8206 color: darkblue;
8206 color: darkblue;
8207 }
8207 }
8208 .ansipurple {
8208 .ansipurple {
8209 color: darkviolet;
8209 color: darkviolet;
8210 }
8210 }
8211 .ansicyan {
8211 .ansicyan {
8212 color: steelblue;
8212 color: steelblue;
8213 }
8213 }
8214 .ansigray {
8214 .ansigray {
8215 color: gray;
8215 color: gray;
8216 }
8216 }
8217 /* and light for background, for the same reason */
8217 /* and light for background, for the same reason */
8218 .ansibgblack {
8218 .ansibgblack {
8219 background-color: black;
8219 background-color: black;
8220 }
8220 }
8221 .ansibgred {
8221 .ansibgred {
8222 background-color: red;
8222 background-color: red;
8223 }
8223 }
8224 .ansibggreen {
8224 .ansibggreen {
8225 background-color: green;
8225 background-color: green;
8226 }
8226 }
8227 .ansibgyellow {
8227 .ansibgyellow {
8228 background-color: yellow;
8228 background-color: yellow;
8229 }
8229 }
8230 .ansibgblue {
8230 .ansibgblue {
8231 background-color: blue;
8231 background-color: blue;
8232 }
8232 }
8233 .ansibgpurple {
8233 .ansibgpurple {
8234 background-color: magenta;
8234 background-color: magenta;
8235 }
8235 }
8236 .ansibgcyan {
8236 .ansibgcyan {
8237 background-color: cyan;
8237 background-color: cyan;
8238 }
8238 }
8239 .ansibggray {
8239 .ansibggray {
8240 background-color: gray;
8240 background-color: gray;
8241 }
8241 }
8242 div.cell {
8242 div.cell {
8243 border: 1px solid transparent;
8243 border: 1px solid transparent;
8244 /* Old browsers */
8244 /* Old browsers */
8245 display: -webkit-box;
8245 display: -webkit-box;
8246 -webkit-box-orient: vertical;
8246 -webkit-box-orient: vertical;
8247 -webkit-box-align: stretch;
8247 -webkit-box-align: stretch;
8248 display: -moz-box;
8248 display: -moz-box;
8249 -moz-box-orient: vertical;
8249 -moz-box-orient: vertical;
8250 -moz-box-align: stretch;
8250 -moz-box-align: stretch;
8251 display: box;
8251 display: box;
8252 box-orient: vertical;
8252 box-orient: vertical;
8253 box-align: stretch;
8253 box-align: stretch;
8254 /* Modern browsers */
8254 /* Modern browsers */
8255 display: flex;
8255 display: flex;
8256 flex-direction: column;
8256 flex-direction: column;
8257 align-items: stretch;
8257 align-items: stretch;
8258 border-radius: 4px;
8258 border-radius: 4px;
8259 box-sizing: border-box;
8259 box-sizing: border-box;
8260 -moz-box-sizing: border-box;
8260 -moz-box-sizing: border-box;
8261 -webkit-box-sizing: border-box;
8261 -webkit-box-sizing: border-box;
8262 border-width: thin;
8262 border-width: thin;
8263 border-style: solid;
8263 border-style: solid;
8264 width: 100%;
8264 width: 100%;
8265 padding: 5px 5px 5px 0px;
8265 padding: 5px 5px 5px 0px;
8266 /* This acts as a spacer between cells, that is outside the border */
8266 /* This acts as a spacer between cells, that is outside the border */
8267 margin: 0px;
8267 margin: 0px;
8268 outline: none;
8268 outline: none;
8269 }
8269 }
8270 div.cell.selected {
8270 div.cell.selected {
8271 border-color: #ababab;
8271 border-color: #ababab;
8272 }
8272 }
8273 div.cell.edit_mode {
8273 div.cell.edit_mode {
8274 border-color: green;
8274 border-color: green;
8275 }
8275 }
8276 div.prompt {
8276 div.prompt {
8277 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
8277 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
8278 min-width: 15ex;
8278 min-width: 15ex;
8279 /* This padding is tuned to match the padding on the CodeMirror editor. */
8279 /* This padding is tuned to match the padding on the CodeMirror editor. */
8280 padding: 0.4em;
8280 padding: 0.4em;
8281 margin: 0px;
8281 margin: 0px;
8282 font-family: monospace;
8282 font-family: monospace;
8283 text-align: right;
8283 text-align: right;
8284 /* This has to match that of the the CodeMirror class line-height below */
8284 /* This has to match that of the the CodeMirror class line-height below */
8285 line-height: 1.21429em;
8285 line-height: 1.21429em;
8286 }
8286 }
8287 @media (max-width: 480px) {
8287 @media (max-width: 480px) {
8288 div.prompt {
8288 div.prompt {
8289 text-align: left;
8289 text-align: left;
8290 }
8290 }
8291 }
8291 }
8292 div.inner_cell {
8292 div.inner_cell {
8293 /* Old browsers */
8293 /* Old browsers */
8294 display: -webkit-box;
8294 display: -webkit-box;
8295 -webkit-box-orient: vertical;
8295 -webkit-box-orient: vertical;
8296 -webkit-box-align: stretch;
8296 -webkit-box-align: stretch;
8297 display: -moz-box;
8297 display: -moz-box;
8298 -moz-box-orient: vertical;
8298 -moz-box-orient: vertical;
8299 -moz-box-align: stretch;
8299 -moz-box-align: stretch;
8300 display: box;
8300 display: box;
8301 box-orient: vertical;
8301 box-orient: vertical;
8302 box-align: stretch;
8302 box-align: stretch;
8303 /* Modern browsers */
8303 /* Modern browsers */
8304 display: flex;
8304 display: flex;
8305 flex-direction: column;
8305 flex-direction: column;
8306 align-items: stretch;
8306 align-items: stretch;
8307 /* Old browsers */
8307 /* Old browsers */
8308 -webkit-box-flex: 1;
8308 -webkit-box-flex: 1;
8309 -moz-box-flex: 1;
8309 -moz-box-flex: 1;
8310 box-flex: 1;
8310 box-flex: 1;
8311 /* Modern browsers */
8311 /* Modern browsers */
8312 flex: 1;
8312 flex: 1;
8313 }
8313 }
8314 /* input_area and input_prompt must match in top border and margin for alignment */
8314 /* input_area and input_prompt must match in top border and margin for alignment */
8315 div.input_area {
8315 div.input_area {
8316 border: 1px solid #cfcfcf;
8316 border: 1px solid #cfcfcf;
8317 border-radius: 4px;
8317 border-radius: 4px;
8318 background: #f7f7f7;
8318 background: #f7f7f7;
8319 line-height: 1.21429em;
8319 line-height: 1.21429em;
8320 }
8320 }
8321 /* This is needed so that empty prompt areas can collapse to zero height when there
8321 /* This is needed so that empty prompt areas can collapse to zero height when there
8322 is no content in the output_subarea and the prompt. The main purpose of this is
8322 is no content in the output_subarea and the prompt. The main purpose of this is
8323 to make sure that empty JavaScript output_subareas have no height. */
8323 to make sure that empty JavaScript output_subareas have no height. */
8324 div.prompt:empty {
8324 div.prompt:empty {
8325 padding-top: 0;
8325 padding-top: 0;
8326 padding-bottom: 0;
8326 padding-bottom: 0;
8327 }
8327 }
8328 div.unrecognized_cell {
8328 div.unrecognized_cell {
8329 padding: 5px 5px 5px 0px;
8329 padding: 5px 5px 5px 0px;
8330 /* Old browsers */
8330 /* Old browsers */
8331 display: -webkit-box;
8331 display: -webkit-box;
8332 -webkit-box-orient: horizontal;
8332 -webkit-box-orient: horizontal;
8333 -webkit-box-align: stretch;
8333 -webkit-box-align: stretch;
8334 display: -moz-box;
8334 display: -moz-box;
8335 -moz-box-orient: horizontal;
8335 -moz-box-orient: horizontal;
8336 -moz-box-align: stretch;
8336 -moz-box-align: stretch;
8337 display: box;
8337 display: box;
8338 box-orient: horizontal;
8338 box-orient: horizontal;
8339 box-align: stretch;
8339 box-align: stretch;
8340 /* Modern browsers */
8340 /* Modern browsers */
8341 display: flex;
8341 display: flex;
8342 flex-direction: row;
8342 flex-direction: row;
8343 align-items: stretch;
8343 align-items: stretch;
8344 }
8344 }
8345 div.unrecognized_cell .inner_cell {
8345 div.unrecognized_cell .inner_cell {
8346 border-radius: 4px;
8346 border-radius: 4px;
8347 padding: 5px;
8347 padding: 5px;
8348 font-weight: bold;
8348 font-weight: bold;
8349 color: red;
8349 color: red;
8350 border: 1px solid #cfcfcf;
8350 border: 1px solid #cfcfcf;
8351 background: #eaeaea;
8351 background: #eaeaea;
8352 }
8352 }
8353 div.unrecognized_cell .inner_cell a {
8353 div.unrecognized_cell .inner_cell a {
8354 color: inherit;
8354 color: inherit;
8355 text-decoration: none;
8355 text-decoration: none;
8356 }
8356 }
8357 div.unrecognized_cell .inner_cell a:hover {
8357 div.unrecognized_cell .inner_cell a:hover {
8358 color: inherit;
8358 color: inherit;
8359 text-decoration: none;
8359 text-decoration: none;
8360 }
8360 }
8361 @media (max-width: 480px) {
8361 @media (max-width: 480px) {
8362 div.unrecognized_cell > div.prompt {
8362 div.unrecognized_cell > div.prompt {
8363 display: none;
8363 display: none;
8364 }
8364 }
8365 }
8365 }
8366 /* any special styling for code cells that are currently running goes here */
8366 /* any special styling for code cells that are currently running goes here */
8367 div.input {
8367 div.input {
8368 page-break-inside: avoid;
8368 page-break-inside: avoid;
8369 /* Old browsers */
8369 /* Old browsers */
8370 display: -webkit-box;
8370 display: -webkit-box;
8371 -webkit-box-orient: horizontal;
8371 -webkit-box-orient: horizontal;
8372 -webkit-box-align: stretch;
8372 -webkit-box-align: stretch;
8373 display: -moz-box;
8373 display: -moz-box;
8374 -moz-box-orient: horizontal;
8374 -moz-box-orient: horizontal;
8375 -moz-box-align: stretch;
8375 -moz-box-align: stretch;
8376 display: box;
8376 display: box;
8377 box-orient: horizontal;
8377 box-orient: horizontal;
8378 box-align: stretch;
8378 box-align: stretch;
8379 /* Modern browsers */
8379 /* Modern browsers */
8380 display: flex;
8380 display: flex;
8381 flex-direction: row;
8381 flex-direction: row;
8382 align-items: stretch;
8382 align-items: stretch;
8383 }
8383 }
8384 @media (max-width: 480px) {
8384 @media (max-width: 480px) {
8385 div.input {
8385 div.input {
8386 /* Old browsers */
8386 /* Old browsers */
8387 display: -webkit-box;
8387 display: -webkit-box;
8388 -webkit-box-orient: vertical;
8388 -webkit-box-orient: vertical;
8389 -webkit-box-align: stretch;
8389 -webkit-box-align: stretch;
8390 display: -moz-box;
8390 display: -moz-box;
8391 -moz-box-orient: vertical;
8391 -moz-box-orient: vertical;
8392 -moz-box-align: stretch;
8392 -moz-box-align: stretch;
8393 display: box;
8393 display: box;
8394 box-orient: vertical;
8394 box-orient: vertical;
8395 box-align: stretch;
8395 box-align: stretch;
8396 /* Modern browsers */
8396 /* Modern browsers */
8397 display: flex;
8397 display: flex;
8398 flex-direction: column;
8398 flex-direction: column;
8399 align-items: stretch;
8399 align-items: stretch;
8400 }
8400 }
8401 }
8401 }
8402 /* input_area and input_prompt must match in top border and margin for alignment */
8402 /* input_area and input_prompt must match in top border and margin for alignment */
8403 div.input_prompt {
8403 div.input_prompt {
8404 color: #000080;
8404 color: #000080;
8405 border-top: 1px solid transparent;
8405 border-top: 1px solid transparent;
8406 }
8406 }
8407 div.input_area > div.highlight {
8407 div.input_area > div.highlight {
8408 margin: 0.4em;
8408 margin: 0.4em;
8409 border: none;
8409 border: none;
8410 padding: 0px;
8410 padding: 0px;
8411 background-color: transparent;
8411 background-color: transparent;
8412 }
8412 }
8413 div.input_area > div.highlight > pre {
8413 div.input_area > div.highlight > pre {
8414 margin: 0px;
8414 margin: 0px;
8415 border: none;
8415 border: none;
8416 padding: 0px;
8416 padding: 0px;
8417 background-color: transparent;
8417 background-color: transparent;
8418 }
8418 }
8419 /* The following gets added to the <head> if it is detected that the user has a
8419 /* The following gets added to the <head> if it is detected that the user has a
8420 * monospace font with inconsistent normal/bold/italic height. See
8420 * monospace font with inconsistent normal/bold/italic height. See
8421 * notebookmain.js. Such fonts will have keywords vertically offset with
8421 * notebookmain.js. Such fonts will have keywords vertically offset with
8422 * respect to the rest of the text. The user should select a better font.
8422 * respect to the rest of the text. The user should select a better font.
8423 * See: https://github.com/ipython/ipython/issues/1503
8423 * See: https://github.com/ipython/ipython/issues/1503
8424 *
8424 *
8425 * .CodeMirror span {
8425 * .CodeMirror span {
8426 * vertical-align: bottom;
8426 * vertical-align: bottom;
8427 * }
8427 * }
8428 */
8428 */
8429 .CodeMirror {
8429 .CodeMirror {
8430 line-height: 1.21429em;
8430 line-height: 1.21429em;
8431 /* Changed from 1em to our global default */
8431 /* Changed from 1em to our global default */
8432 height: auto;
8432 height: auto;
8433 /* Changed to auto to autogrow */
8433 /* Changed to auto to autogrow */
8434 background: none;
8434 background: none;
8435 /* Changed from white to allow our bg to show through */
8435 /* Changed from white to allow our bg to show through */
8436 }
8436 }
8437 .CodeMirror-scroll {
8437 .CodeMirror-scroll {
8438 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
8438 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
8439 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
8439 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
8440 overflow-y: hidden;
8440 overflow-y: hidden;
8441 overflow-x: auto;
8441 overflow-x: auto;
8442 }
8442 }
8443 .CodeMirror-lines {
8443 .CodeMirror-lines {
8444 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
8444 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
8445 /* we have set a different line-height and want this to scale with that. */
8445 /* we have set a different line-height and want this to scale with that. */
8446 padding: 0.4em;
8446 padding: 0.4em;
8447 }
8447 }
8448 .CodeMirror-linenumber {
8448 .CodeMirror-linenumber {
8449 padding: 0 8px 0 4px;
8449 padding: 0 8px 0 4px;
8450 }
8450 }
8451 .CodeMirror-gutters {
8451 .CodeMirror-gutters {
8452 border-bottom-left-radius: 4px;
8452 border-bottom-left-radius: 4px;
8453 border-top-left-radius: 4px;
8453 border-top-left-radius: 4px;
8454 }
8454 }
8455 .CodeMirror pre {
8455 .CodeMirror pre {
8456 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
8456 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
8457 /* .CodeMirror-lines */
8457 /* .CodeMirror-lines */
8458 padding: 0;
8458 padding: 0;
8459 border: 0;
8459 border: 0;
8460 border-radius: 0;
8460 border-radius: 0;
8461 }
8461 }
8462 .CodeMirror-vscrollbar,
8462 .CodeMirror-vscrollbar,
8463 .CodeMirror-hscrollbar {
8463 .CodeMirror-hscrollbar {
8464 display: none !important;
8464 display: none !important;
8465 }
8465 }
8466 /*
8466 /*
8467
8467
8468 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
8468 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
8469 Adapted from GitHub theme
8469 Adapted from GitHub theme
8470
8470
8471 */
8471 */
8472 pre code {
8472 .highlight-base {
8473 display: block;
8473 color: #000000;
8474 padding: 0.5em;
8474 }
8475 }
8475 .highlight-variable {
8476 .highlight-base,
8476 color: #000000;
8477 pre code,
8477 }
8478 pre .subst,
8478 .highlight-variable-2 {
8479 pre .tag .title,
8479 color: #1a1a1a;
8480 pre .lisp .title,
8480 }
8481 pre .clojure .built_in,
8481 .highlight-variable-3 {
8482 pre .nginx .title {
8482 color: #333333;
8483 color: black;
8484 }
8483 }
8485 .highlight-string,
8484 .highlight-string {
8486 pre .string,
8487 pre .constant,
8488 pre .parent,
8489 pre .tag .value,
8490 pre .rules .value,
8491 pre .rules .value .number,
8492 pre .preprocessor,
8493 pre .ruby .symbol,
8494 pre .ruby .symbol .string,
8495 pre .aggregate,
8496 pre .template_tag,
8497 pre .django .variable,
8498 pre .smalltalk .class,
8499 pre .addition,
8500 pre .flow,
8501 pre .stream,
8502 pre .bash .variable,
8503 pre .apache .tag,
8504 pre .apache .cbracket,
8505 pre .tex .command,
8506 pre .tex .special,
8507 pre .erlang_repl .function_or_atom,
8508 pre .markdown .header {
8509 color: #BA2121;
8485 color: #BA2121;
8510 }
8486 }
8511 .highlight-comment,
8487 .highlight-comment {
8512 pre .comment,
8513 pre .annotation,
8514 pre .template_comment,
8515 pre .diff .header,
8516 pre .chunk,
8517 pre .markdown .blockquote {
8518 color: #408080;
8488 color: #408080;
8519 font-style: italic;
8489 font-style: italic;
8520 }
8490 }
8521 .highlight-number,
8491 .highlight-number {
8522 pre .number,
8523 pre .date,
8524 pre .regexp,
8525 pre .literal,
8526 pre .smalltalk .symbol,
8527 pre .smalltalk .char,
8528 pre .go .constant,
8529 pre .change,
8530 pre .markdown .bullet,
8531 pre .markdown .link_url {
8532 color: #080;
8492 color: #080;
8533 }
8493 }
8534 pre .label,
8494 .highlight-atom {
8535 pre .javadoc,
8495 color: #88F;
8536 pre .ruby .string,
8496 }
8537 pre .decorator,
8497 .highlight-keyword {
8538 pre .filter .argument,
8539 pre .localvars,
8540 pre .array,
8541 pre .attr_selector,
8542 pre .important,
8543 pre .pseudo,
8544 pre .pi,
8545 pre .doctype,
8546 pre .deletion,
8547 pre .envvar,
8548 pre .shebang,
8549 pre .apache .sqbracket,
8550 pre .nginx .built_in,
8551 pre .tex .formula,
8552 pre .erlang_repl .reserved,
8553 pre .prompt,
8554 pre .markdown .link_label,
8555 pre .vhdl .attribute,
8556 pre .clojure .attribute,
8557 pre .coffeescript .property {
8558 color: #8888ff;
8559 }
8560 .highlight-keyword,
8561 pre .keyword,
8562 pre .id,
8563 pre .phpdoc,
8564 pre .aggregate,
8565 pre .css .tag,
8566 pre .javadoctag,
8567 pre .phpdoc,
8568 pre .yardoctag,
8569 pre .smalltalk .class,
8570 pre .winutils,
8571 pre .bash .variable,
8572 pre .apache .tag,
8573 pre .go .typename,
8574 pre .tex .command,
8575 pre .markdown .strong,
8576 pre .request,
8577 pre .status {
8578 color: #008000;
8498 color: #008000;
8579 font-weight: bold;
8499 font-weight: bold;
8580 }
8500 }
8581 .highlight-builtin,
8501 .highlight-builtin {
8582 pre .built_in {
8583 color: #008000;
8502 color: #008000;
8584 }
8503 }
8585 pre .markdown .emphasis {
8504 .highlight-error {
8586 font-style: italic;
8505 color: #f00;
8587 }
8506 }
8588 pre .nginx .built_in {
8507 .highlight-operator {
8589 font-weight: normal;
8508 color: #AA22FF;
8509 font-weight: bold;
8590 }
8510 }
8591 pre .coffeescript .javascript,
8511 .highlight-meta {
8592 pre .javascript .xml,
8512 color: #AA22FF;
8593 pre .tex .formula,
8594 pre .xml .javascript,
8595 pre .xml .vbscript,
8596 pre .xml .css,
8597 pre .xml .cdata {
8598 opacity: 0.5;
8599 }
8513 }
8600 /* apply the same style to codemirror */
8514 /* previously not defined, copying from default codemirror */
8601 .cm-s-ipython span.cm-variable {
8515 .highlight-def {
8602 color: black;
8516 color: #00f;
8517 }
8518 .highlight-string-2 {
8519 color: #f50;
8520 }
8521 .highlight-qualifier {
8522 color: #555;
8523 }
8524 .highlight-bracket {
8525 color: #997;
8526 }
8527 .highlight-tag {
8528 color: #170;
8603 }
8529 }
8530 .highlight-attribute {
8531 color: #00c;
8532 }
8533 .highlight-header {
8534 color: blue;
8535 }
8536 .highlight-quote {
8537 color: #090;
8538 }
8539 .highlight-link {
8540 color: #00c;
8541 }
8542 /* apply the same style to codemirror */
8604 .cm-s-ipython span.cm-keyword {
8543 .cm-s-ipython span.cm-keyword {
8605 color: #008000;
8544 color: #008000;
8606 font-weight: bold;
8545 font-weight: bold;
8607 }
8546 }
8547 .cm-s-ipython span.cm-atom {
8548 color: #88F;
8549 }
8608 .cm-s-ipython span.cm-number {
8550 .cm-s-ipython span.cm-number {
8609 color: #080;
8551 color: #080;
8610 }
8552 }
8553 .cm-s-ipython span.cm-def {
8554 color: #00f;
8555 }
8556 .cm-s-ipython span.cm-variable {
8557 color: #000000;
8558 }
8559 .cm-s-ipython span.cm-operator {
8560 color: #AA22FF;
8561 font-weight: bold;
8562 }
8563 .cm-s-ipython span.cm-variable-2 {
8564 color: #1a1a1a;
8565 }
8566 .cm-s-ipython span.cm-variable-3 {
8567 color: #333333;
8568 }
8611 .cm-s-ipython span.cm-comment {
8569 .cm-s-ipython span.cm-comment {
8612 color: #408080;
8570 color: #408080;
8613 font-style: italic;
8571 font-style: italic;
8614 }
8572 }
8615 .cm-s-ipython span.cm-string {
8573 .cm-s-ipython span.cm-string {
8616 color: #BA2121;
8574 color: #BA2121;
8617 }
8575 }
8576 .cm-s-ipython span.cm-string-2 {
8577 color: #f50;
8578 }
8579 .cm-s-ipython span.cm-meta {
8580 color: #AA22FF;
8581 }
8582 .cm-s-ipython span.cm-qualifier {
8583 color: #555;
8584 }
8618 .cm-s-ipython span.cm-builtin {
8585 .cm-s-ipython span.cm-builtin {
8619 color: #008000;
8586 color: #008000;
8620 }
8587 }
8621 .cm-s-ipython span.cm-error {
8588 .cm-s-ipython span.cm-bracket {
8622 color: #f00;
8589 color: #997;
8623 }
8590 }
8624 .cm-s-ipython span.cm-operator {
8591 .cm-s-ipython span.cm-tag {
8625 color: #AA22FF;
8592 color: #170;
8626 font-weight: bold;
8627 }
8593 }
8628 .cm-s-ipython span.cm-meta {
8594 .cm-s-ipython span.cm-attribute {
8629 color: #AA22FF;
8595 color: #00c;
8596 }
8597 .cm-s-ipython span.cm-header {
8598 color: blue;
8599 }
8600 .cm-s-ipython span.cm-quote {
8601 color: #090;
8602 }
8603 .cm-s-ipython span.cm-link {
8604 color: #00c;
8605 }
8606 .cm-s-ipython span.cm-error {
8607 color: #f00;
8630 }
8608 }
8631 .cm-s-ipython span.cm-tab {
8609 .cm-s-ipython span.cm-tab {
8632 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
8610 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
8633 background-position: right;
8611 background-position: right;
8634 background-repeat: no-repeat;
8612 background-repeat: no-repeat;
8635 }
8613 }
8636 div.output_wrapper {
8614 div.output_wrapper {
8637 /* this position must be relative to enable descendents to be absolute within it */
8615 /* this position must be relative to enable descendents to be absolute within it */
8638 position: relative;
8616 position: relative;
8639 /* Old browsers */
8617 /* Old browsers */
8640 display: -webkit-box;
8618 display: -webkit-box;
8641 -webkit-box-orient: vertical;
8619 -webkit-box-orient: vertical;
8642 -webkit-box-align: stretch;
8620 -webkit-box-align: stretch;
8643 display: -moz-box;
8621 display: -moz-box;
8644 -moz-box-orient: vertical;
8622 -moz-box-orient: vertical;
8645 -moz-box-align: stretch;
8623 -moz-box-align: stretch;
8646 display: box;
8624 display: box;
8647 box-orient: vertical;
8625 box-orient: vertical;
8648 box-align: stretch;
8626 box-align: stretch;
8649 /* Modern browsers */
8627 /* Modern browsers */
8650 display: flex;
8628 display: flex;
8651 flex-direction: column;
8629 flex-direction: column;
8652 align-items: stretch;
8630 align-items: stretch;
8653 }
8631 }
8654 /* class for the output area when it should be height-limited */
8632 /* class for the output area when it should be height-limited */
8655 div.output_scroll {
8633 div.output_scroll {
8656 /* ideally, this would be max-height, but FF barfs all over that */
8634 /* ideally, this would be max-height, but FF barfs all over that */
8657 height: 24em;
8635 height: 24em;
8658 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
8636 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
8659 width: 100%;
8637 width: 100%;
8660 overflow: auto;
8638 overflow: auto;
8661 border-radius: 4px;
8639 border-radius: 4px;
8662 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8640 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8663 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8641 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8664 display: block;
8642 display: block;
8665 }
8643 }
8666 /* output div while it is collapsed */
8644 /* output div while it is collapsed */
8667 div.output_collapsed {
8645 div.output_collapsed {
8668 margin: 0px;
8646 margin: 0px;
8669 padding: 0px;
8647 padding: 0px;
8670 /* Old browsers */
8648 /* Old browsers */
8671 display: -webkit-box;
8649 display: -webkit-box;
8672 -webkit-box-orient: vertical;
8650 -webkit-box-orient: vertical;
8673 -webkit-box-align: stretch;
8651 -webkit-box-align: stretch;
8674 display: -moz-box;
8652 display: -moz-box;
8675 -moz-box-orient: vertical;
8653 -moz-box-orient: vertical;
8676 -moz-box-align: stretch;
8654 -moz-box-align: stretch;
8677 display: box;
8655 display: box;
8678 box-orient: vertical;
8656 box-orient: vertical;
8679 box-align: stretch;
8657 box-align: stretch;
8680 /* Modern browsers */
8658 /* Modern browsers */
8681 display: flex;
8659 display: flex;
8682 flex-direction: column;
8660 flex-direction: column;
8683 align-items: stretch;
8661 align-items: stretch;
8684 }
8662 }
8685 div.out_prompt_overlay {
8663 div.out_prompt_overlay {
8686 height: 100%;
8664 height: 100%;
8687 padding: 0px 0.4em;
8665 padding: 0px 0.4em;
8688 position: absolute;
8666 position: absolute;
8689 border-radius: 4px;
8667 border-radius: 4px;
8690 }
8668 }
8691 div.out_prompt_overlay:hover {
8669 div.out_prompt_overlay:hover {
8692 /* use inner shadow to get border that is computed the same on WebKit/FF */
8670 /* use inner shadow to get border that is computed the same on WebKit/FF */
8693 -webkit-box-shadow: inset 0 0 1px #000000;
8671 -webkit-box-shadow: inset 0 0 1px #000000;
8694 box-shadow: inset 0 0 1px #000000;
8672 box-shadow: inset 0 0 1px #000000;
8695 background: rgba(240, 240, 240, 0.5);
8673 background: rgba(240, 240, 240, 0.5);
8696 }
8674 }
8697 div.output_prompt {
8675 div.output_prompt {
8698 color: #8b0000;
8676 color: #8b0000;
8699 }
8677 }
8700 /* This class is the outer container of all output sections. */
8678 /* This class is the outer container of all output sections. */
8701 div.output_area {
8679 div.output_area {
8702 padding: 0px;
8680 padding: 0px;
8703 page-break-inside: avoid;
8681 page-break-inside: avoid;
8704 /* Old browsers */
8682 /* Old browsers */
8705 display: -webkit-box;
8683 display: -webkit-box;
8706 -webkit-box-orient: horizontal;
8684 -webkit-box-orient: horizontal;
8707 -webkit-box-align: stretch;
8685 -webkit-box-align: stretch;
8708 display: -moz-box;
8686 display: -moz-box;
8709 -moz-box-orient: horizontal;
8687 -moz-box-orient: horizontal;
8710 -moz-box-align: stretch;
8688 -moz-box-align: stretch;
8711 display: box;
8689 display: box;
8712 box-orient: horizontal;
8690 box-orient: horizontal;
8713 box-align: stretch;
8691 box-align: stretch;
8714 /* Modern browsers */
8692 /* Modern browsers */
8715 display: flex;
8693 display: flex;
8716 flex-direction: row;
8694 flex-direction: row;
8717 align-items: stretch;
8695 align-items: stretch;
8718 }
8696 }
8719 div.output_area .MathJax_Display {
8697 div.output_area .MathJax_Display {
8720 text-align: left !important;
8698 text-align: left !important;
8721 }
8699 }
8722 div.output_area .rendered_html table {
8700 div.output_area .rendered_html table {
8723 margin-left: 0;
8701 margin-left: 0;
8724 margin-right: 0;
8702 margin-right: 0;
8725 }
8703 }
8726 div.output_area .rendered_html img {
8704 div.output_area .rendered_html img {
8727 margin-left: 0;
8705 margin-left: 0;
8728 margin-right: 0;
8706 margin-right: 0;
8729 }
8707 }
8730 /* This is needed to protect the pre formating from global settings such
8708 /* This is needed to protect the pre formating from global settings such
8731 as that of bootstrap */
8709 as that of bootstrap */
8732 .output {
8710 .output {
8733 /* Old browsers */
8711 /* Old browsers */
8734 display: -webkit-box;
8712 display: -webkit-box;
8735 -webkit-box-orient: vertical;
8713 -webkit-box-orient: vertical;
8736 -webkit-box-align: stretch;
8714 -webkit-box-align: stretch;
8737 display: -moz-box;
8715 display: -moz-box;
8738 -moz-box-orient: vertical;
8716 -moz-box-orient: vertical;
8739 -moz-box-align: stretch;
8717 -moz-box-align: stretch;
8740 display: box;
8718 display: box;
8741 box-orient: vertical;
8719 box-orient: vertical;
8742 box-align: stretch;
8720 box-align: stretch;
8743 /* Modern browsers */
8721 /* Modern browsers */
8744 display: flex;
8722 display: flex;
8745 flex-direction: column;
8723 flex-direction: column;
8746 align-items: stretch;
8724 align-items: stretch;
8747 }
8725 }
8748 @media (max-width: 480px) {
8726 @media (max-width: 480px) {
8749 div.output_area {
8727 div.output_area {
8750 /* Old browsers */
8728 /* Old browsers */
8751 display: -webkit-box;
8729 display: -webkit-box;
8752 -webkit-box-orient: vertical;
8730 -webkit-box-orient: vertical;
8753 -webkit-box-align: stretch;
8731 -webkit-box-align: stretch;
8754 display: -moz-box;
8732 display: -moz-box;
8755 -moz-box-orient: vertical;
8733 -moz-box-orient: vertical;
8756 -moz-box-align: stretch;
8734 -moz-box-align: stretch;
8757 display: box;
8735 display: box;
8758 box-orient: vertical;
8736 box-orient: vertical;
8759 box-align: stretch;
8737 box-align: stretch;
8760 /* Modern browsers */
8738 /* Modern browsers */
8761 display: flex;
8739 display: flex;
8762 flex-direction: column;
8740 flex-direction: column;
8763 align-items: stretch;
8741 align-items: stretch;
8764 }
8742 }
8765 }
8743 }
8766 div.output_area pre {
8744 div.output_area pre {
8767 margin: 0;
8745 margin: 0;
8768 padding: 0;
8746 padding: 0;
8769 border: 0;
8747 border: 0;
8770 vertical-align: baseline;
8748 vertical-align: baseline;
8771 color: #000000;
8749 color: #000000;
8772 background-color: transparent;
8750 background-color: transparent;
8773 border-radius: 0;
8751 border-radius: 0;
8774 }
8752 }
8775 /* This class is for the output subarea inside the output_area and after
8753 /* This class is for the output subarea inside the output_area and after
8776 the prompt div. */
8754 the prompt div. */
8777 div.output_subarea {
8755 div.output_subarea {
8778 padding: 0.4em 0.4em 0em 0.4em;
8756 padding: 0.4em 0.4em 0em 0.4em;
8779 /* Old browsers */
8757 /* Old browsers */
8780 -webkit-box-flex: 1;
8758 -webkit-box-flex: 1;
8781 -moz-box-flex: 1;
8759 -moz-box-flex: 1;
8782 box-flex: 1;
8760 box-flex: 1;
8783 /* Modern browsers */
8761 /* Modern browsers */
8784 flex: 1;
8762 flex: 1;
8785 }
8763 }
8786 /* The rest of the output_* classes are for special styling of the different
8764 /* The rest of the output_* classes are for special styling of the different
8787 output types */
8765 output types */
8788 /* all text output has this class: */
8766 /* all text output has this class: */
8789 div.output_text {
8767 div.output_text {
8790 text-align: left;
8768 text-align: left;
8791 color: #000000;
8769 color: #000000;
8792 /* This has to match that of the the CodeMirror class line-height below */
8770 /* This has to match that of the the CodeMirror class line-height below */
8793 line-height: 1.21429em;
8771 line-height: 1.21429em;
8794 }
8772 }
8795 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
8773 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
8796 div.output_stderr {
8774 div.output_stderr {
8797 background: #fdd;
8775 background: #fdd;
8798 /* very light red background for stderr */
8776 /* very light red background for stderr */
8799 }
8777 }
8800 div.output_latex {
8778 div.output_latex {
8801 text-align: left;
8779 text-align: left;
8802 }
8780 }
8803 /* Empty output_javascript divs should have no height */
8781 /* Empty output_javascript divs should have no height */
8804 div.output_javascript:empty {
8782 div.output_javascript:empty {
8805 padding: 0;
8783 padding: 0;
8806 }
8784 }
8807 .js-error {
8785 .js-error {
8808 color: darkred;
8786 color: darkred;
8809 }
8787 }
8810 /* raw_input styles */
8788 /* raw_input styles */
8811 div.raw_input_container {
8789 div.raw_input_container {
8812 font-family: monospace;
8790 font-family: monospace;
8813 padding-top: 5px;
8791 padding-top: 5px;
8814 }
8792 }
8815 span.raw_input_prompt {
8793 span.raw_input_prompt {
8816 /* nothing needed here */
8794 /* nothing needed here */
8817 }
8795 }
8818 input.raw_input {
8796 input.raw_input {
8819 font-family: inherit;
8797 font-family: inherit;
8820 font-size: inherit;
8798 font-size: inherit;
8821 color: inherit;
8799 color: inherit;
8822 width: auto;
8800 width: auto;
8823 /* make sure input baseline aligns with prompt */
8801 /* make sure input baseline aligns with prompt */
8824 vertical-align: baseline;
8802 vertical-align: baseline;
8825 /* padding + margin = 0.5em between prompt and cursor */
8803 /* padding + margin = 0.5em between prompt and cursor */
8826 padding: 0em 0.25em;
8804 padding: 0em 0.25em;
8827 margin: 0em 0.25em;
8805 margin: 0em 0.25em;
8828 }
8806 }
8829 input.raw_input:focus {
8807 input.raw_input:focus {
8830 box-shadow: none;
8808 box-shadow: none;
8831 }
8809 }
8832 p.p-space {
8810 p.p-space {
8833 margin-bottom: 10px;
8811 margin-bottom: 10px;
8834 }
8812 }
8835 div.output_unrecognized {
8813 div.output_unrecognized {
8836 padding: 5px;
8814 padding: 5px;
8837 font-weight: bold;
8815 font-weight: bold;
8838 color: red;
8816 color: red;
8839 }
8817 }
8840 div.output_unrecognized a {
8818 div.output_unrecognized a {
8841 color: inherit;
8819 color: inherit;
8842 text-decoration: none;
8820 text-decoration: none;
8843 }
8821 }
8844 div.output_unrecognized a:hover {
8822 div.output_unrecognized a:hover {
8845 color: inherit;
8823 color: inherit;
8846 text-decoration: none;
8824 text-decoration: none;
8847 }
8825 }
8848 .rendered_html {
8826 .rendered_html {
8849 color: #000000;
8827 color: #000000;
8850 /* any extras will just be numbers: */
8828 /* any extras will just be numbers: */
8851 }
8829 }
8852 .rendered_html em {
8830 .rendered_html em {
8853 font-style: italic;
8831 font-style: italic;
8854 }
8832 }
8855 .rendered_html strong {
8833 .rendered_html strong {
8856 font-weight: bold;
8834 font-weight: bold;
8857 }
8835 }
8858 .rendered_html u {
8836 .rendered_html u {
8859 text-decoration: underline;
8837 text-decoration: underline;
8860 }
8838 }
8861 .rendered_html :link {
8839 .rendered_html :link {
8862 text-decoration: underline;
8840 text-decoration: underline;
8863 }
8841 }
8864 .rendered_html :visited {
8842 .rendered_html :visited {
8865 text-decoration: underline;
8843 text-decoration: underline;
8866 }
8844 }
8867 .rendered_html h1 {
8845 .rendered_html h1 {
8868 font-size: 185.7%;
8846 font-size: 185.7%;
8869 margin: 1.08em 0 0 0;
8847 margin: 1.08em 0 0 0;
8870 font-weight: bold;
8848 font-weight: bold;
8871 line-height: 1.0;
8849 line-height: 1.0;
8872 }
8850 }
8873 .rendered_html h2 {
8851 .rendered_html h2 {
8874 font-size: 157.1%;
8852 font-size: 157.1%;
8875 margin: 1.27em 0 0 0;
8853 margin: 1.27em 0 0 0;
8876 font-weight: bold;
8854 font-weight: bold;
8877 line-height: 1.0;
8855 line-height: 1.0;
8878 }
8856 }
8879 .rendered_html h3 {
8857 .rendered_html h3 {
8880 font-size: 128.6%;
8858 font-size: 128.6%;
8881 margin: 1.55em 0 0 0;
8859 margin: 1.55em 0 0 0;
8882 font-weight: bold;
8860 font-weight: bold;
8883 line-height: 1.0;
8861 line-height: 1.0;
8884 }
8862 }
8885 .rendered_html h4 {
8863 .rendered_html h4 {
8886 font-size: 100%;
8864 font-size: 100%;
8887 margin: 2em 0 0 0;
8865 margin: 2em 0 0 0;
8888 font-weight: bold;
8866 font-weight: bold;
8889 line-height: 1.0;
8867 line-height: 1.0;
8890 }
8868 }
8891 .rendered_html h5 {
8869 .rendered_html h5 {
8892 font-size: 100%;
8870 font-size: 100%;
8893 margin: 2em 0 0 0;
8871 margin: 2em 0 0 0;
8894 font-weight: bold;
8872 font-weight: bold;
8895 line-height: 1.0;
8873 line-height: 1.0;
8896 font-style: italic;
8874 font-style: italic;
8897 }
8875 }
8898 .rendered_html h6 {
8876 .rendered_html h6 {
8899 font-size: 100%;
8877 font-size: 100%;
8900 margin: 2em 0 0 0;
8878 margin: 2em 0 0 0;
8901 font-weight: bold;
8879 font-weight: bold;
8902 line-height: 1.0;
8880 line-height: 1.0;
8903 font-style: italic;
8881 font-style: italic;
8904 }
8882 }
8905 .rendered_html h1:first-child {
8883 .rendered_html h1:first-child {
8906 margin-top: 0.538em;
8884 margin-top: 0.538em;
8907 }
8885 }
8908 .rendered_html h2:first-child {
8886 .rendered_html h2:first-child {
8909 margin-top: 0.636em;
8887 margin-top: 0.636em;
8910 }
8888 }
8911 .rendered_html h3:first-child {
8889 .rendered_html h3:first-child {
8912 margin-top: 0.777em;
8890 margin-top: 0.777em;
8913 }
8891 }
8914 .rendered_html h4:first-child {
8892 .rendered_html h4:first-child {
8915 margin-top: 1em;
8893 margin-top: 1em;
8916 }
8894 }
8917 .rendered_html h5:first-child {
8895 .rendered_html h5:first-child {
8918 margin-top: 1em;
8896 margin-top: 1em;
8919 }
8897 }
8920 .rendered_html h6:first-child {
8898 .rendered_html h6:first-child {
8921 margin-top: 1em;
8899 margin-top: 1em;
8922 }
8900 }
8923 .rendered_html ul {
8901 .rendered_html ul {
8924 list-style: disc;
8902 list-style: disc;
8925 margin: 0em 2em;
8903 margin: 0em 2em;
8926 padding-left: 0px;
8904 padding-left: 0px;
8927 }
8905 }
8928 .rendered_html ul ul {
8906 .rendered_html ul ul {
8929 list-style: square;
8907 list-style: square;
8930 margin: 0em 2em;
8908 margin: 0em 2em;
8931 }
8909 }
8932 .rendered_html ul ul ul {
8910 .rendered_html ul ul ul {
8933 list-style: circle;
8911 list-style: circle;
8934 margin: 0em 2em;
8912 margin: 0em 2em;
8935 }
8913 }
8936 .rendered_html ol {
8914 .rendered_html ol {
8937 list-style: decimal;
8915 list-style: decimal;
8938 margin: 0em 2em;
8916 margin: 0em 2em;
8939 padding-left: 0px;
8917 padding-left: 0px;
8940 }
8918 }
8941 .rendered_html ol ol {
8919 .rendered_html ol ol {
8942 list-style: upper-alpha;
8920 list-style: upper-alpha;
8943 margin: 0em 2em;
8921 margin: 0em 2em;
8944 }
8922 }
8945 .rendered_html ol ol ol {
8923 .rendered_html ol ol ol {
8946 list-style: lower-alpha;
8924 list-style: lower-alpha;
8947 margin: 0em 2em;
8925 margin: 0em 2em;
8948 }
8926 }
8949 .rendered_html ol ol ol ol {
8927 .rendered_html ol ol ol ol {
8950 list-style: lower-roman;
8928 list-style: lower-roman;
8951 margin: 0em 2em;
8929 margin: 0em 2em;
8952 }
8930 }
8953 .rendered_html ol ol ol ol ol {
8931 .rendered_html ol ol ol ol ol {
8954 list-style: decimal;
8932 list-style: decimal;
8955 margin: 0em 2em;
8933 margin: 0em 2em;
8956 }
8934 }
8957 .rendered_html * + ul {
8935 .rendered_html * + ul {
8958 margin-top: 1em;
8936 margin-top: 1em;
8959 }
8937 }
8960 .rendered_html * + ol {
8938 .rendered_html * + ol {
8961 margin-top: 1em;
8939 margin-top: 1em;
8962 }
8940 }
8963 .rendered_html hr {
8941 .rendered_html hr {
8964 color: #000000;
8942 color: #000000;
8965 background-color: #000000;
8943 background-color: #000000;
8966 }
8944 }
8967 .rendered_html pre {
8945 .rendered_html pre {
8968 margin: 1em 2em;
8946 margin: 1em 2em;
8969 }
8947 }
8970 .rendered_html pre,
8948 .rendered_html pre,
8971 .rendered_html code {
8949 .rendered_html code {
8972 border: 0;
8950 border: 0;
8973 background-color: #ffffff;
8951 background-color: #ffffff;
8974 color: #000000;
8952 color: #000000;
8975 font-size: 100%;
8953 font-size: 100%;
8976 padding: 0px;
8954 padding: 0px;
8977 }
8955 }
8978 .rendered_html blockquote {
8956 .rendered_html blockquote {
8979 margin: 1em 2em;
8957 margin: 1em 2em;
8980 }
8958 }
8981 .rendered_html table {
8959 .rendered_html table {
8982 margin-left: auto;
8960 margin-left: auto;
8983 margin-right: auto;
8961 margin-right: auto;
8984 border: 1px solid #000000;
8962 border: 1px solid #000000;
8985 border-collapse: collapse;
8963 border-collapse: collapse;
8986 }
8964 }
8987 .rendered_html tr,
8965 .rendered_html tr,
8988 .rendered_html th,
8966 .rendered_html th,
8989 .rendered_html td {
8967 .rendered_html td {
8990 border: 1px solid #000000;
8968 border: 1px solid #000000;
8991 border-collapse: collapse;
8969 border-collapse: collapse;
8992 margin: 1em 2em;
8970 margin: 1em 2em;
8993 }
8971 }
8994 .rendered_html td,
8972 .rendered_html td,
8995 .rendered_html th {
8973 .rendered_html th {
8996 text-align: left;
8974 text-align: left;
8997 vertical-align: middle;
8975 vertical-align: middle;
8998 padding: 4px;
8976 padding: 4px;
8999 }
8977 }
9000 .rendered_html th {
8978 .rendered_html th {
9001 font-weight: bold;
8979 font-weight: bold;
9002 }
8980 }
9003 .rendered_html * + table {
8981 .rendered_html * + table {
9004 margin-top: 1em;
8982 margin-top: 1em;
9005 }
8983 }
9006 .rendered_html p {
8984 .rendered_html p {
9007 text-align: justify;
8985 text-align: justify;
9008 }
8986 }
9009 .rendered_html * + p {
8987 .rendered_html * + p {
9010 margin-top: 1em;
8988 margin-top: 1em;
9011 }
8989 }
9012 .rendered_html img {
8990 .rendered_html img {
9013 display: block;
8991 display: block;
9014 margin-left: auto;
8992 margin-left: auto;
9015 margin-right: auto;
8993 margin-right: auto;
9016 }
8994 }
9017 .rendered_html * + img {
8995 .rendered_html * + img {
9018 margin-top: 1em;
8996 margin-top: 1em;
9019 }
8997 }
9020 div.text_cell {
8998 div.text_cell {
9021 padding: 5px 5px 5px 0px;
8999 padding: 5px 5px 5px 0px;
9022 /* Old browsers */
9000 /* Old browsers */
9023 display: -webkit-box;
9001 display: -webkit-box;
9024 -webkit-box-orient: horizontal;
9002 -webkit-box-orient: horizontal;
9025 -webkit-box-align: stretch;
9003 -webkit-box-align: stretch;
9026 display: -moz-box;
9004 display: -moz-box;
9027 -moz-box-orient: horizontal;
9005 -moz-box-orient: horizontal;
9028 -moz-box-align: stretch;
9006 -moz-box-align: stretch;
9029 display: box;
9007 display: box;
9030 box-orient: horizontal;
9008 box-orient: horizontal;
9031 box-align: stretch;
9009 box-align: stretch;
9032 /* Modern browsers */
9010 /* Modern browsers */
9033 display: flex;
9011 display: flex;
9034 flex-direction: row;
9012 flex-direction: row;
9035 align-items: stretch;
9013 align-items: stretch;
9036 }
9014 }
9037 @media (max-width: 480px) {
9015 @media (max-width: 480px) {
9038 div.text_cell > div.prompt {
9016 div.text_cell > div.prompt {
9039 display: none;
9017 display: none;
9040 }
9018 }
9041 }
9019 }
9042 div.text_cell_render {
9020 div.text_cell_render {
9043 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
9021 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
9044 outline: none;
9022 outline: none;
9045 resize: none;
9023 resize: none;
9046 width: inherit;
9024 width: inherit;
9047 border-style: none;
9025 border-style: none;
9048 padding: 0.5em 0.5em 0.5em 0.4em;
9026 padding: 0.5em 0.5em 0.5em 0.4em;
9049 color: #000000;
9027 color: #000000;
9050 box-sizing: border-box;
9028 box-sizing: border-box;
9051 -moz-box-sizing: border-box;
9029 -moz-box-sizing: border-box;
9052 -webkit-box-sizing: border-box;
9030 -webkit-box-sizing: border-box;
9053 }
9031 }
9054 a.anchor-link:link {
9032 a.anchor-link:link {
9055 text-decoration: none;
9033 text-decoration: none;
9056 padding: 0px 20px;
9034 padding: 0px 20px;
9057 visibility: hidden;
9035 visibility: hidden;
9058 }
9036 }
9059 h1:hover .anchor-link,
9037 h1:hover .anchor-link,
9060 h2:hover .anchor-link,
9038 h2:hover .anchor-link,
9061 h3:hover .anchor-link,
9039 h3:hover .anchor-link,
9062 h4:hover .anchor-link,
9040 h4:hover .anchor-link,
9063 h5:hover .anchor-link,
9041 h5:hover .anchor-link,
9064 h6:hover .anchor-link {
9042 h6:hover .anchor-link {
9065 visibility: visible;
9043 visibility: visible;
9066 }
9044 }
9067 .text_cell.rendered .input_area {
9045 .text_cell.rendered .input_area {
9068 display: none;
9046 display: none;
9069 }
9047 }
9070 .text_cell.unrendered .text_cell_render {
9048 .text_cell.unrendered .text_cell_render {
9071 display: none;
9049 display: none;
9072 }
9050 }
9073 .cm-header-1,
9051 .cm-header-1,
9074 .cm-header-2,
9052 .cm-header-2,
9075 .cm-header-3,
9053 .cm-header-3,
9076 .cm-header-4,
9054 .cm-header-4,
9077 .cm-header-5,
9055 .cm-header-5,
9078 .cm-header-6 {
9056 .cm-header-6 {
9079 font-weight: bold;
9057 font-weight: bold;
9080 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9058 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9081 }
9059 }
9082 .cm-header-1 {
9060 .cm-header-1 {
9083 font-size: 185.7%;
9061 font-size: 185.7%;
9084 }
9062 }
9085 .cm-header-2 {
9063 .cm-header-2 {
9086 font-size: 157.1%;
9064 font-size: 157.1%;
9087 }
9065 }
9088 .cm-header-3 {
9066 .cm-header-3 {
9089 font-size: 128.6%;
9067 font-size: 128.6%;
9090 }
9068 }
9091 .cm-header-4 {
9069 .cm-header-4 {
9092 font-size: 110%;
9070 font-size: 110%;
9093 }
9071 }
9094 .cm-header-5 {
9072 .cm-header-5 {
9095 font-size: 100%;
9073 font-size: 100%;
9096 font-style: italic;
9074 font-style: italic;
9097 }
9075 }
9098 .cm-header-6 {
9076 .cm-header-6 {
9099 font-size: 100%;
9077 font-size: 100%;
9100 font-style: italic;
9078 font-style: italic;
9101 }
9079 }
9102 .widget-area {
9080 .widget-area {
9103 /*
9081 /*
9104 LESS file that styles IPython notebook widgets and the area they sit in.
9082 LESS file that styles IPython notebook widgets and the area they sit in.
9105
9083
9106 The widget area typically looks something like this:
9084 The widget area typically looks something like this:
9107 +------------------------------------------+
9085 +------------------------------------------+
9108 | widget-area |
9086 | widget-area |
9109 | +--------+---------------------------+ |
9087 | +--------+---------------------------+ |
9110 | | prompt | widget-subarea | |
9088 | | prompt | widget-subarea | |
9111 | | | +--------+ +--------+ | |
9089 | | | +--------+ +--------+ | |
9112 | | | | widget | | widget | | |
9090 | | | | widget | | widget | | |
9113 | | | +--------+ +--------+ | |
9091 | | | +--------+ +--------+ | |
9114 | +--------+---------------------------+ |
9092 | +--------+---------------------------+ |
9115 +------------------------------------------+
9093 +------------------------------------------+
9116 */
9094 */
9117 page-break-inside: avoid;
9095 page-break-inside: avoid;
9118 /* Old browsers */
9096 /* Old browsers */
9119 display: -webkit-box;
9097 display: -webkit-box;
9120 -webkit-box-orient: horizontal;
9098 -webkit-box-orient: horizontal;
9121 -webkit-box-align: stretch;
9099 -webkit-box-align: stretch;
9122 display: -moz-box;
9100 display: -moz-box;
9123 -moz-box-orient: horizontal;
9101 -moz-box-orient: horizontal;
9124 -moz-box-align: stretch;
9102 -moz-box-align: stretch;
9125 display: box;
9103 display: box;
9126 box-orient: horizontal;
9104 box-orient: horizontal;
9127 box-align: stretch;
9105 box-align: stretch;
9128 /* Modern browsers */
9106 /* Modern browsers */
9129 display: flex;
9107 display: flex;
9130 flex-direction: row;
9108 flex-direction: row;
9131 align-items: stretch;
9109 align-items: stretch;
9132 }
9110 }
9133 .widget-area .widget-subarea {
9111 .widget-area .widget-subarea {
9134 padding: 0.44em 0.4em 0.4em 1px;
9112 padding: 0.44em 0.4em 0.4em 1px;
9135 margin-left: 6px;
9113 margin-left: 6px;
9136 box-sizing: border-box;
9114 box-sizing: border-box;
9137 -moz-box-sizing: border-box;
9115 -moz-box-sizing: border-box;
9138 -webkit-box-sizing: border-box;
9116 -webkit-box-sizing: border-box;
9139 /* Old browsers */
9117 /* Old browsers */
9140 display: -webkit-box;
9118 display: -webkit-box;
9141 -webkit-box-orient: vertical;
9119 -webkit-box-orient: vertical;
9142 -webkit-box-align: stretch;
9120 -webkit-box-align: stretch;
9143 display: -moz-box;
9121 display: -moz-box;
9144 -moz-box-orient: vertical;
9122 -moz-box-orient: vertical;
9145 -moz-box-align: stretch;
9123 -moz-box-align: stretch;
9146 display: box;
9124 display: box;
9147 box-orient: vertical;
9125 box-orient: vertical;
9148 box-align: stretch;
9126 box-align: stretch;
9149 /* Modern browsers */
9127 /* Modern browsers */
9150 display: flex;
9128 display: flex;
9151 flex-direction: column;
9129 flex-direction: column;
9152 align-items: stretch;
9130 align-items: stretch;
9153 /* Old browsers */
9131 /* Old browsers */
9154 -webkit-box-flex: 2;
9132 -webkit-box-flex: 2;
9155 -moz-box-flex: 2;
9133 -moz-box-flex: 2;
9156 box-flex: 2;
9134 box-flex: 2;
9157 /* Modern browsers */
9135 /* Modern browsers */
9158 flex: 2;
9136 flex: 2;
9159 /* Old browsers */
9137 /* Old browsers */
9160 -webkit-box-align: start;
9138 -webkit-box-align: start;
9161 -moz-box-align: start;
9139 -moz-box-align: start;
9162 box-align: start;
9140 box-align: start;
9163 /* Modern browsers */
9141 /* Modern browsers */
9164 align-items: flex-start;
9142 align-items: flex-start;
9165 }
9143 }
9166 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9144 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9167 THE WIDGET AREA). */
9145 THE WIDGET AREA). */
9168 .slide-track {
9146 .slide-track {
9169 /* Slider Track */
9147 /* Slider Track */
9170 border: 1px solid #CCCCCC;
9148 border: 1px solid #CCCCCC;
9171 background: #FFFFFF;
9149 background: #FFFFFF;
9172 border-radius: 4px;
9150 border-radius: 4px;
9173 /* Round the corners of the slide track */
9151 /* Round the corners of the slide track */
9174 }
9152 }
9175 .widget-hslider {
9153 .widget-hslider {
9176 /* Horizontal jQuery Slider
9154 /* Horizontal jQuery Slider
9177
9155
9178 Both the horizontal and vertical versions of the slider are characterized
9156 Both the horizontal and vertical versions of the slider are characterized
9179 by a styled div that contains an invisible jQuery slide div which
9157 by a styled div that contains an invisible jQuery slide div which
9180 contains a visible slider handle div. This is requred so we can control
9158 contains a visible slider handle div. This is requred so we can control
9181 how the slider is drawn and 'fix' the issue where the slide handle
9159 how the slider is drawn and 'fix' the issue where the slide handle
9182 doesn't stop at the end of the slide.
9160 doesn't stop at the end of the slide.
9183
9161
9184 Both horizontal and vertical sliders have this div nesting:
9162 Both horizontal and vertical sliders have this div nesting:
9185 +------------------------------------------+
9163 +------------------------------------------+
9186 | widget-(h/v)slider |
9164 | widget-(h/v)slider |
9187 | +--------+---------------------------+ |
9165 | +--------+---------------------------+ |
9188 | | ui-slider | |
9166 | | ui-slider | |
9189 | | +------------------+ | |
9167 | | +------------------+ | |
9190 | | | ui-slider-handle | | |
9168 | | | ui-slider-handle | | |
9191 | | +------------------+ | |
9169 | | +------------------+ | |
9192 | +--------+---------------------------+ |
9170 | +--------+---------------------------+ |
9193 +------------------------------------------+
9171 +------------------------------------------+
9194 */
9172 */
9195 /* Fix the padding of the slide track so the ui-slider is sized
9173 /* Fix the padding of the slide track so the ui-slider is sized
9196 correctly. */
9174 correctly. */
9197 padding-left: 8px;
9175 padding-left: 8px;
9198 padding-right: 5px;
9176 padding-right: 5px;
9199 overflow: visible;
9177 overflow: visible;
9200 /* Default size of the slider */
9178 /* Default size of the slider */
9201 width: 350px;
9179 width: 350px;
9202 height: 5px;
9180 height: 5px;
9203 max-height: 5px;
9181 max-height: 5px;
9204 margin-top: 13px;
9182 margin-top: 13px;
9205 margin-bottom: 10px;
9183 margin-bottom: 10px;
9206 /* Style the slider track */
9184 /* Style the slider track */
9207 /* Slider Track */
9185 /* Slider Track */
9208 border: 1px solid #CCCCCC;
9186 border: 1px solid #CCCCCC;
9209 background: #FFFFFF;
9187 background: #FFFFFF;
9210 border-radius: 4px;
9188 border-radius: 4px;
9211 /* Round the corners of the slide track */
9189 /* Round the corners of the slide track */
9212 /* Make the div a flex box (makes FF behave correctly). */
9190 /* Make the div a flex box (makes FF behave correctly). */
9213 /* Old browsers */
9191 /* Old browsers */
9214 display: -webkit-box;
9192 display: -webkit-box;
9215 -webkit-box-orient: horizontal;
9193 -webkit-box-orient: horizontal;
9216 -webkit-box-align: stretch;
9194 -webkit-box-align: stretch;
9217 display: -moz-box;
9195 display: -moz-box;
9218 -moz-box-orient: horizontal;
9196 -moz-box-orient: horizontal;
9219 -moz-box-align: stretch;
9197 -moz-box-align: stretch;
9220 display: box;
9198 display: box;
9221 box-orient: horizontal;
9199 box-orient: horizontal;
9222 box-align: stretch;
9200 box-align: stretch;
9223 /* Modern browsers */
9201 /* Modern browsers */
9224 display: flex;
9202 display: flex;
9225 flex-direction: row;
9203 flex-direction: row;
9226 align-items: stretch;
9204 align-items: stretch;
9227 }
9205 }
9228 .widget-hslider .ui-slider {
9206 .widget-hslider .ui-slider {
9229 /* Inner, invisible slide div */
9207 /* Inner, invisible slide div */
9230 border: 0px !important;
9208 border: 0px !important;
9231 background: none !important;
9209 background: none !important;
9232 /* Old browsers */
9210 /* Old browsers */
9233 display: -webkit-box;
9211 display: -webkit-box;
9234 -webkit-box-orient: horizontal;
9212 -webkit-box-orient: horizontal;
9235 -webkit-box-align: stretch;
9213 -webkit-box-align: stretch;
9236 display: -moz-box;
9214 display: -moz-box;
9237 -moz-box-orient: horizontal;
9215 -moz-box-orient: horizontal;
9238 -moz-box-align: stretch;
9216 -moz-box-align: stretch;
9239 display: box;
9217 display: box;
9240 box-orient: horizontal;
9218 box-orient: horizontal;
9241 box-align: stretch;
9219 box-align: stretch;
9242 /* Modern browsers */
9220 /* Modern browsers */
9243 display: flex;
9221 display: flex;
9244 flex-direction: row;
9222 flex-direction: row;
9245 align-items: stretch;
9223 align-items: stretch;
9246 /* Old browsers */
9224 /* Old browsers */
9247 -webkit-box-flex: 1;
9225 -webkit-box-flex: 1;
9248 -moz-box-flex: 1;
9226 -moz-box-flex: 1;
9249 box-flex: 1;
9227 box-flex: 1;
9250 /* Modern browsers */
9228 /* Modern browsers */
9251 flex: 1;
9229 flex: 1;
9252 }
9230 }
9253 .widget-hslider .ui-slider .ui-slider-handle {
9231 .widget-hslider .ui-slider .ui-slider-handle {
9254 width: 14px !important;
9232 width: 14px !important;
9255 height: 28px !important;
9233 height: 28px !important;
9256 margin-top: -8px !important;
9234 margin-top: -8px !important;
9257 }
9235 }
9258 .widget-hslider .ui-slider .ui-slider-range {
9236 .widget-hslider .ui-slider .ui-slider-range {
9259 height: 12px !important;
9237 height: 12px !important;
9260 margin-top: -4px !important;
9238 margin-top: -4px !important;
9261 }
9239 }
9262 .widget-vslider {
9240 .widget-vslider {
9263 /* Vertical jQuery Slider */
9241 /* Vertical jQuery Slider */
9264 /* Fix the padding of the slide track so the ui-slider is sized
9242 /* Fix the padding of the slide track so the ui-slider is sized
9265 correctly. */
9243 correctly. */
9266 padding-bottom: 8px;
9244 padding-bottom: 8px;
9267 overflow: visible;
9245 overflow: visible;
9268 /* Default size of the slider */
9246 /* Default size of the slider */
9269 width: 5px;
9247 width: 5px;
9270 max-width: 5px;
9248 max-width: 5px;
9271 height: 250px;
9249 height: 250px;
9272 margin-left: 12px;
9250 margin-left: 12px;
9273 /* Style the slider track */
9251 /* Style the slider track */
9274 /* Slider Track */
9252 /* Slider Track */
9275 border: 1px solid #CCCCCC;
9253 border: 1px solid #CCCCCC;
9276 background: #FFFFFF;
9254 background: #FFFFFF;
9277 border-radius: 4px;
9255 border-radius: 4px;
9278 /* Round the corners of the slide track */
9256 /* Round the corners of the slide track */
9279 /* Make the div a flex box (makes FF behave correctly). */
9257 /* Make the div a flex box (makes FF behave correctly). */
9280 /* Old browsers */
9258 /* Old browsers */
9281 display: -webkit-box;
9259 display: -webkit-box;
9282 -webkit-box-orient: vertical;
9260 -webkit-box-orient: vertical;
9283 -webkit-box-align: stretch;
9261 -webkit-box-align: stretch;
9284 display: -moz-box;
9262 display: -moz-box;
9285 -moz-box-orient: vertical;
9263 -moz-box-orient: vertical;
9286 -moz-box-align: stretch;
9264 -moz-box-align: stretch;
9287 display: box;
9265 display: box;
9288 box-orient: vertical;
9266 box-orient: vertical;
9289 box-align: stretch;
9267 box-align: stretch;
9290 /* Modern browsers */
9268 /* Modern browsers */
9291 display: flex;
9269 display: flex;
9292 flex-direction: column;
9270 flex-direction: column;
9293 align-items: stretch;
9271 align-items: stretch;
9294 }
9272 }
9295 .widget-vslider .ui-slider {
9273 .widget-vslider .ui-slider {
9296 /* Inner, invisible slide div */
9274 /* Inner, invisible slide div */
9297 border: 0px !important;
9275 border: 0px !important;
9298 background: none !important;
9276 background: none !important;
9299 margin-left: -4px;
9277 margin-left: -4px;
9300 margin-top: 5px;
9278 margin-top: 5px;
9301 /* Old browsers */
9279 /* Old browsers */
9302 display: -webkit-box;
9280 display: -webkit-box;
9303 -webkit-box-orient: vertical;
9281 -webkit-box-orient: vertical;
9304 -webkit-box-align: stretch;
9282 -webkit-box-align: stretch;
9305 display: -moz-box;
9283 display: -moz-box;
9306 -moz-box-orient: vertical;
9284 -moz-box-orient: vertical;
9307 -moz-box-align: stretch;
9285 -moz-box-align: stretch;
9308 display: box;
9286 display: box;
9309 box-orient: vertical;
9287 box-orient: vertical;
9310 box-align: stretch;
9288 box-align: stretch;
9311 /* Modern browsers */
9289 /* Modern browsers */
9312 display: flex;
9290 display: flex;
9313 flex-direction: column;
9291 flex-direction: column;
9314 align-items: stretch;
9292 align-items: stretch;
9315 /* Old browsers */
9293 /* Old browsers */
9316 -webkit-box-flex: 1;
9294 -webkit-box-flex: 1;
9317 -moz-box-flex: 1;
9295 -moz-box-flex: 1;
9318 box-flex: 1;
9296 box-flex: 1;
9319 /* Modern browsers */
9297 /* Modern browsers */
9320 flex: 1;
9298 flex: 1;
9321 }
9299 }
9322 .widget-vslider .ui-slider .ui-slider-handle {
9300 .widget-vslider .ui-slider .ui-slider-handle {
9323 width: 28px !important;
9301 width: 28px !important;
9324 height: 14px !important;
9302 height: 14px !important;
9325 margin-left: -9px;
9303 margin-left: -9px;
9326 }
9304 }
9327 .widget-vslider .ui-slider .ui-slider-range {
9305 .widget-vslider .ui-slider .ui-slider-range {
9328 width: 12px !important;
9306 width: 12px !important;
9329 margin-left: -1px !important;
9307 margin-left: -1px !important;
9330 }
9308 }
9331 .widget-text {
9309 .widget-text {
9332 /* String Textbox - used for TextBoxView and TextAreaView */
9310 /* String Textbox - used for TextBoxView and TextAreaView */
9333 width: 350px;
9311 width: 350px;
9334 margin: 0px !important;
9312 margin: 0px !important;
9335 }
9313 }
9336 .widget-listbox {
9314 .widget-listbox {
9337 /* Listbox */
9315 /* Listbox */
9338 width: 350px;
9316 width: 350px;
9339 margin-bottom: 0px;
9317 margin-bottom: 0px;
9340 }
9318 }
9341 .widget-numeric-text {
9319 .widget-numeric-text {
9342 /* Single Line Textbox - used for IntTextView and FloatTextView */
9320 /* Single Line Textbox - used for IntTextView and FloatTextView */
9343 width: 150px;
9321 width: 150px;
9344 margin: 0px !important;
9322 margin: 0px !important;
9345 }
9323 }
9346 .widget-progress {
9324 .widget-progress {
9347 /* Progress Bar */
9325 /* Progress Bar */
9348 margin-top: 6px;
9326 margin-top: 6px;
9349 width: 350px;
9327 width: 350px;
9350 }
9328 }
9351 .widget-progress .progress-bar {
9329 .widget-progress .progress-bar {
9352 /* Disable progress bar animation */
9330 /* Disable progress bar animation */
9353 -webkit-transition: none;
9331 -webkit-transition: none;
9354 -moz-transition: none;
9332 -moz-transition: none;
9355 -ms-transition: none;
9333 -ms-transition: none;
9356 -o-transition: none;
9334 -o-transition: none;
9357 transition: none;
9335 transition: none;
9358 }
9336 }
9359 .widget-combo-btn {
9337 .widget-combo-btn {
9360 /* ComboBox Main Button */
9338 /* ComboBox Main Button */
9361 min-width: 125px;
9339 min-width: 125px;
9362 }
9340 }
9363 .widget_item .dropdown-menu li a {
9341 .widget_item .dropdown-menu li a {
9364 color: inherit;
9342 color: inherit;
9365 }
9343 }
9366 .widget-hbox {
9344 .widget-hbox {
9367 /* Horizontal widgets */
9345 /* Horizontal widgets */
9368 /* Old browsers */
9346 /* Old browsers */
9369 display: -webkit-box;
9347 display: -webkit-box;
9370 -webkit-box-orient: horizontal;
9348 -webkit-box-orient: horizontal;
9371 -webkit-box-align: stretch;
9349 -webkit-box-align: stretch;
9372 display: -moz-box;
9350 display: -moz-box;
9373 -moz-box-orient: horizontal;
9351 -moz-box-orient: horizontal;
9374 -moz-box-align: stretch;
9352 -moz-box-align: stretch;
9375 display: box;
9353 display: box;
9376 box-orient: horizontal;
9354 box-orient: horizontal;
9377 box-align: stretch;
9355 box-align: stretch;
9378 /* Modern browsers */
9356 /* Modern browsers */
9379 display: flex;
9357 display: flex;
9380 flex-direction: row;
9358 flex-direction: row;
9381 align-items: stretch;
9359 align-items: stretch;
9382 margin-top: 0px !important;
9360 margin-top: 0px !important;
9383 margin-bottom: 0px !important;
9361 margin-bottom: 0px !important;
9384 margin-right: 5px;
9362 margin-right: 5px;
9385 margin-left: 5px;
9363 margin-left: 5px;
9386 }
9364 }
9387 .widget-hbox input[type="checkbox"] {
9365 .widget-hbox input[type="checkbox"] {
9388 margin-top: 9px;
9366 margin-top: 9px;
9389 margin-bottom: 10px;
9367 margin-bottom: 10px;
9390 }
9368 }
9391 .widget-hbox .widget-label {
9369 .widget-hbox .widget-label {
9392 /* Horizontal Label */
9370 /* Horizontal Label */
9393 min-width: 10ex;
9371 min-width: 10ex;
9394 padding-right: 8px;
9372 padding-right: 8px;
9395 padding-top: 5px;
9373 padding-top: 5px;
9396 text-align: right;
9374 text-align: right;
9397 vertical-align: text-top;
9375 vertical-align: text-top;
9398 }
9376 }
9399 .widget-hbox .widget-readout {
9377 .widget-hbox .widget-readout {
9400 padding-left: 8px;
9378 padding-left: 8px;
9401 padding-top: 5px;
9379 padding-top: 5px;
9402 text-align: left;
9380 text-align: left;
9403 vertical-align: text-top;
9381 vertical-align: text-top;
9404 }
9382 }
9405 .widget-vbox {
9383 .widget-vbox {
9406 /* Vertical widgets */
9384 /* Vertical widgets */
9407 /* Old browsers */
9385 /* Old browsers */
9408 display: -webkit-box;
9386 display: -webkit-box;
9409 -webkit-box-orient: vertical;
9387 -webkit-box-orient: vertical;
9410 -webkit-box-align: stretch;
9388 -webkit-box-align: stretch;
9411 display: -moz-box;
9389 display: -moz-box;
9412 -moz-box-orient: vertical;
9390 -moz-box-orient: vertical;
9413 -moz-box-align: stretch;
9391 -moz-box-align: stretch;
9414 display: box;
9392 display: box;
9415 box-orient: vertical;
9393 box-orient: vertical;
9416 box-align: stretch;
9394 box-align: stretch;
9417 /* Modern browsers */
9395 /* Modern browsers */
9418 display: flex;
9396 display: flex;
9419 flex-direction: column;
9397 flex-direction: column;
9420 align-items: stretch;
9398 align-items: stretch;
9421 }
9399 }
9422 .widget-vbox .widget-label {
9400 .widget-vbox .widget-label {
9423 /* Vertical Label */
9401 /* Vertical Label */
9424 padding-bottom: 5px;
9402 padding-bottom: 5px;
9425 text-align: center;
9403 text-align: center;
9426 vertical-align: text-bottom;
9404 vertical-align: text-bottom;
9427 }
9405 }
9428 .widget-vbox .widget-readout {
9406 .widget-vbox .widget-readout {
9429 /* Vertical Label */
9407 /* Vertical Label */
9430 padding-top: 5px;
9408 padding-top: 5px;
9431 text-align: center;
9409 text-align: center;
9432 vertical-align: text-top;
9410 vertical-align: text-top;
9433 }
9411 }
9434 .widget-modal {
9412 .widget-modal {
9435 /* Box - ModalView */
9413 /* Box - ModalView */
9436 overflow: hidden;
9414 overflow: hidden;
9437 position: absolute !important;
9415 position: absolute !important;
9438 top: 0px;
9416 top: 0px;
9439 left: 0px;
9417 left: 0px;
9440 margin-left: 0px !important;
9418 margin-left: 0px !important;
9441 }
9419 }
9442 .widget-modal-body {
9420 .widget-modal-body {
9443 /* Box - ModalView Body */
9421 /* Box - ModalView Body */
9444 max-height: none !important;
9422 max-height: none !important;
9445 }
9423 }
9446 .widget-box {
9424 .widget-box {
9447 /* Box */
9425 /* Box */
9448 box-sizing: border-box;
9426 box-sizing: border-box;
9449 -moz-box-sizing: border-box;
9427 -moz-box-sizing: border-box;
9450 -webkit-box-sizing: border-box;
9428 -webkit-box-sizing: border-box;
9451 /* Old browsers */
9429 /* Old browsers */
9452 -webkit-box-align: start;
9430 -webkit-box-align: start;
9453 -moz-box-align: start;
9431 -moz-box-align: start;
9454 box-align: start;
9432 box-align: start;
9455 /* Modern browsers */
9433 /* Modern browsers */
9456 align-items: flex-start;
9434 align-items: flex-start;
9457 }
9435 }
9458 .widget-radio-box {
9436 .widget-radio-box {
9459 /* Contains RadioButtonsWidget */
9437 /* Contains RadioButtonsWidget */
9460 /* Old browsers */
9438 /* Old browsers */
9461 display: -webkit-box;
9439 display: -webkit-box;
9462 -webkit-box-orient: vertical;
9440 -webkit-box-orient: vertical;
9463 -webkit-box-align: stretch;
9441 -webkit-box-align: stretch;
9464 display: -moz-box;
9442 display: -moz-box;
9465 -moz-box-orient: vertical;
9443 -moz-box-orient: vertical;
9466 -moz-box-align: stretch;
9444 -moz-box-align: stretch;
9467 display: box;
9445 display: box;
9468 box-orient: vertical;
9446 box-orient: vertical;
9469 box-align: stretch;
9447 box-align: stretch;
9470 /* Modern browsers */
9448 /* Modern browsers */
9471 display: flex;
9449 display: flex;
9472 flex-direction: column;
9450 flex-direction: column;
9473 align-items: stretch;
9451 align-items: stretch;
9474 box-sizing: border-box;
9452 box-sizing: border-box;
9475 -moz-box-sizing: border-box;
9453 -moz-box-sizing: border-box;
9476 -webkit-box-sizing: border-box;
9454 -webkit-box-sizing: border-box;
9477 padding-top: 4px;
9455 padding-top: 4px;
9478 }
9456 }
9479 .widget-radio-box label {
9457 .widget-radio-box label {
9480 margin-top: 0px;
9458 margin-top: 0px;
9481 }
9459 }
9482 .docked-widget-modal {
9460 .docked-widget-modal {
9483 /* Horizontal Label */
9461 /* Horizontal Label */
9484 overflow: hidden;
9462 overflow: hidden;
9485 position: relative !important;
9463 position: relative !important;
9486 top: 0px !important;
9464 top: 0px !important;
9487 left: 0px !important;
9465 left: 0px !important;
9488 margin-left: 0px !important;
9466 margin-left: 0px !important;
9489 }
9467 }
9490 /*!
9468 /*!
9491 *
9469 *
9492 * IPython notebook webapp
9470 * IPython notebook webapp
9493 *
9471 *
9494 */
9472 */
9495 body {
9473 body {
9496 background-color: #ffffff;
9474 background-color: #ffffff;
9497 }
9475 }
9498 @media (max-width: 767px) {
9476 @media (max-width: 767px) {
9499 body.notebook_app {
9477 body.notebook_app {
9500 padding-left: 0px;
9478 padding-left: 0px;
9501 padding-right: 0px;
9479 padding-right: 0px;
9502 }
9480 }
9503 }
9481 }
9504 #ipython-main-app {
9482 #ipython-main-app {
9505 box-sizing: border-box;
9483 box-sizing: border-box;
9506 -moz-box-sizing: border-box;
9484 -moz-box-sizing: border-box;
9507 -webkit-box-sizing: border-box;
9485 -webkit-box-sizing: border-box;
9508 }
9486 }
9509 span#notebook_name {
9487 span#notebook_name {
9510 height: 1em;
9488 height: 1em;
9511 line-height: 1em;
9489 line-height: 1em;
9512 padding: 3px;
9490 padding: 3px;
9513 border: none;
9491 border: none;
9514 font-size: 146.5%;
9492 font-size: 146.5%;
9515 border-radius: 4px;
9493 border-radius: 4px;
9516 }
9494 }
9517 span#notebook_name:hover {
9495 span#notebook_name:hover {
9518 background-color: #e6e6e6;
9496 background-color: #e6e6e6;
9519 }
9497 }
9520 div#notebook_panel {
9498 div#notebook_panel {
9521 margin: 0px 0px 0px 0px;
9499 margin: 0px 0px 0px 0px;
9522 padding: 0px;
9500 padding: 0px;
9523 box-sizing: border-box;
9501 box-sizing: border-box;
9524 -moz-box-sizing: border-box;
9502 -moz-box-sizing: border-box;
9525 -webkit-box-sizing: border-box;
9503 -webkit-box-sizing: border-box;
9526 }
9504 }
9527 div#notebook {
9505 div#notebook {
9528 font-size: 14px;
9506 font-size: 14px;
9529 line-height: 20px;
9507 line-height: 20px;
9530 overflow-y: hidden;
9508 overflow-y: hidden;
9531 overflow-x: auto;
9509 overflow-x: auto;
9532 width: 100%;
9510 width: 100%;
9533 /* This spaces the cell away from the edge of the notebook area */
9511 /* This spaces the cell away from the edge of the notebook area */
9534 padding: 2em 0 2em 0;
9512 padding: 2em 0 2em 0;
9535 margin: 0px;
9513 margin: 0px;
9536 outline: none;
9514 outline: none;
9537 box-sizing: border-box;
9515 box-sizing: border-box;
9538 -moz-box-sizing: border-box;
9516 -moz-box-sizing: border-box;
9539 -webkit-box-sizing: border-box;
9517 -webkit-box-sizing: border-box;
9540 }
9518 }
9541 div.ui-widget-content {
9519 div.ui-widget-content {
9542 border: 1px solid #ababab;
9520 border: 1px solid #ababab;
9543 outline: none;
9521 outline: none;
9544 }
9522 }
9545 pre.dialog {
9523 pre.dialog {
9546 background-color: #f7f7f7;
9524 background-color: #f7f7f7;
9547 border: 1px solid #ddd;
9525 border: 1px solid #ddd;
9548 border-radius: 4px;
9526 border-radius: 4px;
9549 padding: 0.4em;
9527 padding: 0.4em;
9550 padding-left: 2em;
9528 padding-left: 2em;
9551 }
9529 }
9552 p.dialog {
9530 p.dialog {
9553 padding: 0.2em;
9531 padding: 0.2em;
9554 }
9532 }
9555 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
9533 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
9556 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
9534 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
9557 */
9535 */
9558 pre,
9536 pre,
9559 code,
9537 code,
9560 kbd,
9538 kbd,
9561 samp {
9539 samp {
9562 white-space: pre-wrap;
9540 white-space: pre-wrap;
9563 }
9541 }
9564 #fonttest {
9542 #fonttest {
9565 font-family: monospace;
9543 font-family: monospace;
9566 }
9544 }
9567 p {
9545 p {
9568 margin-bottom: 0;
9546 margin-bottom: 0;
9569 }
9547 }
9570 .end_space {
9548 .end_space {
9571 height: 200px;
9549 height: 200px;
9572 }
9550 }
9573 .lower-header-bar {
9551 .lower-header-bar {
9574 width: 100%;
9552 width: 100%;
9575 height: 0px;
9553 height: 0px;
9576 border-bottom: 1px solid #e7e7e7;
9554 border-bottom: 1px solid #e7e7e7;
9577 margin-bottom: -1px;
9555 margin-bottom: -1px;
9578 }
9556 }
9579 .notebook_app #header {
9557 .notebook_app #header {
9580 -webkit-box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9558 -webkit-box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9581 box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9559 box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9582 }
9560 }
9583 /* CSS for the cell toolbar */
9561 /* CSS for the cell toolbar */
9584 .celltoolbar {
9562 .celltoolbar {
9585 border: thin solid #CFCFCF;
9563 border: thin solid #CFCFCF;
9586 border-bottom: none;
9564 border-bottom: none;
9587 background: #EEE;
9565 background: #EEE;
9588 border-radius: 4px 4px 0px 0px;
9566 border-radius: 4px 4px 0px 0px;
9589 width: 100%;
9567 width: 100%;
9590 height: 29px;
9568 height: 29px;
9591 padding-right: 4px;
9569 padding-right: 4px;
9592 /* Old browsers */
9570 /* Old browsers */
9593 display: -webkit-box;
9571 display: -webkit-box;
9594 -webkit-box-orient: horizontal;
9572 -webkit-box-orient: horizontal;
9595 -webkit-box-align: stretch;
9573 -webkit-box-align: stretch;
9596 display: -moz-box;
9574 display: -moz-box;
9597 -moz-box-orient: horizontal;
9575 -moz-box-orient: horizontal;
9598 -moz-box-align: stretch;
9576 -moz-box-align: stretch;
9599 display: box;
9577 display: box;
9600 box-orient: horizontal;
9578 box-orient: horizontal;
9601 box-align: stretch;
9579 box-align: stretch;
9602 /* Modern browsers */
9580 /* Modern browsers */
9603 display: flex;
9581 display: flex;
9604 flex-direction: row;
9582 flex-direction: row;
9605 align-items: stretch;
9583 align-items: stretch;
9606 /* Old browsers */
9584 /* Old browsers */
9607 -webkit-box-pack: end;
9585 -webkit-box-pack: end;
9608 -moz-box-pack: end;
9586 -moz-box-pack: end;
9609 box-pack: end;
9587 box-pack: end;
9610 /* Modern browsers */
9588 /* Modern browsers */
9611 justify-content: flex-end;
9589 justify-content: flex-end;
9612 }
9590 }
9613 .ctb_hideshow {
9591 .ctb_hideshow {
9614 display: none;
9592 display: none;
9615 vertical-align: bottom;
9593 vertical-align: bottom;
9616 }
9594 }
9617 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
9595 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
9618 Cell toolbars are only shown when the ctb_global_show class is also set.
9596 Cell toolbars are only shown when the ctb_global_show class is also set.
9619 */
9597 */
9620 .ctb_global_show .ctb_show.ctb_hideshow {
9598 .ctb_global_show .ctb_show.ctb_hideshow {
9621 display: block;
9599 display: block;
9622 }
9600 }
9623 .ctb_global_show .ctb_show + .input_area,
9601 .ctb_global_show .ctb_show + .input_area,
9624 .ctb_global_show .ctb_show + div.text_cell_input {
9602 .ctb_global_show .ctb_show + div.text_cell_input {
9625 border-top-right-radius: 0px;
9603 border-top-right-radius: 0px;
9626 border-top-left-radius: 0px;
9604 border-top-left-radius: 0px;
9627 }
9605 }
9628 .celltoolbar {
9606 .celltoolbar {
9629 font-size: 87%;
9607 font-size: 87%;
9630 padding-top: 3px;
9608 padding-top: 3px;
9631 }
9609 }
9632 .celltoolbar select {
9610 .celltoolbar select {
9633 display: block;
9611 display: block;
9634 width: 100%;
9612 width: 100%;
9635 height: 32px;
9613 height: 32px;
9636 padding: 6px 12px;
9614 padding: 6px 12px;
9637 font-size: 13px;
9615 font-size: 13px;
9638 line-height: 1.42857143;
9616 line-height: 1.42857143;
9639 color: #555555;
9617 color: #555555;
9640 background-color: #ffffff;
9618 background-color: #ffffff;
9641 background-image: none;
9619 background-image: none;
9642 border: 1px solid #cccccc;
9620 border: 1px solid #cccccc;
9643 border-radius: 4px;
9621 border-radius: 4px;
9644 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9622 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9645 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9623 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9646 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9624 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9647 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9625 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9648 height: 30px;
9626 height: 30px;
9649 padding: 5px 10px;
9627 padding: 5px 10px;
9650 font-size: 12px;
9628 font-size: 12px;
9651 line-height: 1.5;
9629 line-height: 1.5;
9652 border-radius: 3px;
9630 border-radius: 3px;
9653 width: inherit;
9631 width: inherit;
9654 font-size: 87%;
9632 font-size: 87%;
9655 height: 22px;
9633 height: 22px;
9656 display: inline-block;
9634 display: inline-block;
9657 }
9635 }
9658 .celltoolbar select:focus {
9636 .celltoolbar select:focus {
9659 border-color: #66afe9;
9637 border-color: #66afe9;
9660 outline: 0;
9638 outline: 0;
9661 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9639 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9662 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9640 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9663 }
9641 }
9664 .celltoolbar select::-moz-placeholder {
9642 .celltoolbar select::-moz-placeholder {
9665 color: #999999;
9643 color: #999999;
9666 opacity: 1;
9644 opacity: 1;
9667 }
9645 }
9668 .celltoolbar select:-ms-input-placeholder {
9646 .celltoolbar select:-ms-input-placeholder {
9669 color: #999999;
9647 color: #999999;
9670 }
9648 }
9671 .celltoolbar select::-webkit-input-placeholder {
9649 .celltoolbar select::-webkit-input-placeholder {
9672 color: #999999;
9650 color: #999999;
9673 }
9651 }
9674 .celltoolbar select[disabled],
9652 .celltoolbar select[disabled],
9675 .celltoolbar select[readonly],
9653 .celltoolbar select[readonly],
9676 fieldset[disabled] .celltoolbar select {
9654 fieldset[disabled] .celltoolbar select {
9677 cursor: not-allowed;
9655 cursor: not-allowed;
9678 background-color: #eeeeee;
9656 background-color: #eeeeee;
9679 opacity: 1;
9657 opacity: 1;
9680 }
9658 }
9681 textarea.celltoolbar select {
9659 textarea.celltoolbar select {
9682 height: auto;
9660 height: auto;
9683 }
9661 }
9684 select.celltoolbar select {
9662 select.celltoolbar select {
9685 height: 30px;
9663 height: 30px;
9686 line-height: 30px;
9664 line-height: 30px;
9687 }
9665 }
9688 textarea.celltoolbar select,
9666 textarea.celltoolbar select,
9689 select[multiple].celltoolbar select {
9667 select[multiple].celltoolbar select {
9690 height: auto;
9668 height: auto;
9691 }
9669 }
9692 .celltoolbar label {
9670 .celltoolbar label {
9693 margin-left: 5px;
9671 margin-left: 5px;
9694 margin-right: 5px;
9672 margin-right: 5px;
9695 }
9673 }
9696 .completions {
9674 .completions {
9697 position: absolute;
9675 position: absolute;
9698 z-index: 10;
9676 z-index: 10;
9699 overflow: hidden;
9677 overflow: hidden;
9700 border: 1px solid #ababab;
9678 border: 1px solid #ababab;
9701 border-radius: 4px;
9679 border-radius: 4px;
9702 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
9680 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
9703 box-shadow: 0px 6px 10px -1px #adadad;
9681 box-shadow: 0px 6px 10px -1px #adadad;
9704 }
9682 }
9705 .completions select {
9683 .completions select {
9706 background: white;
9684 background: white;
9707 outline: none;
9685 outline: none;
9708 border: none;
9686 border: none;
9709 padding: 0px;
9687 padding: 0px;
9710 margin: 0px;
9688 margin: 0px;
9711 overflow: auto;
9689 overflow: auto;
9712 font-family: monospace;
9690 font-family: monospace;
9713 font-size: 110%;
9691 font-size: 110%;
9714 color: #000000;
9692 color: #000000;
9715 width: auto;
9693 width: auto;
9716 }
9694 }
9717 .completions select option.context {
9695 .completions select option.context {
9718 color: #3071a9;
9696 color: #3071a9;
9719 }
9697 }
9720 #kernel_selector_widget {
9698 #kernel_selector_widget {
9721 margin-right: 1em;
9699 margin-right: 1em;
9722 float: right;
9700 float: right;
9723 }
9701 }
9724 #kernel_selector_widget > button {
9702 #kernel_selector_widget > button {
9725 display: inline-block;
9703 display: inline-block;
9726 margin-bottom: 0;
9704 margin-bottom: 0;
9727 font-weight: normal;
9705 font-weight: normal;
9728 text-align: center;
9706 text-align: center;
9729 vertical-align: middle;
9707 vertical-align: middle;
9730 cursor: pointer;
9708 cursor: pointer;
9731 background-image: none;
9709 background-image: none;
9732 border: 1px solid transparent;
9710 border: 1px solid transparent;
9733 white-space: nowrap;
9711 white-space: nowrap;
9734 padding: 6px 12px;
9712 padding: 6px 12px;
9735 font-size: 13px;
9713 font-size: 13px;
9736 line-height: 1.42857143;
9714 line-height: 1.42857143;
9737 border-radius: 4px;
9715 border-radius: 4px;
9738 -webkit-user-select: none;
9716 -webkit-user-select: none;
9739 -moz-user-select: none;
9717 -moz-user-select: none;
9740 -ms-user-select: none;
9718 -ms-user-select: none;
9741 user-select: none;
9719 user-select: none;
9742 color: #333333;
9720 color: #333333;
9743 background-color: #ffffff;
9721 background-color: #ffffff;
9744 border-color: #cccccc;
9722 border-color: #cccccc;
9745 padding: 5px 10px;
9723 padding: 5px 10px;
9746 font-size: 12px;
9724 font-size: 12px;
9747 line-height: 1.5;
9725 line-height: 1.5;
9748 border-radius: 3px;
9726 border-radius: 3px;
9749 }
9727 }
9750 #kernel_selector_widget > button:focus,
9728 #kernel_selector_widget > button:focus,
9751 #kernel_selector_widget > button:active:focus,
9729 #kernel_selector_widget > button:active:focus,
9752 #kernel_selector_widget > button.active:focus {
9730 #kernel_selector_widget > button.active:focus {
9753 outline: thin dotted;
9731 outline: thin dotted;
9754 outline: 5px auto -webkit-focus-ring-color;
9732 outline: 5px auto -webkit-focus-ring-color;
9755 outline-offset: -2px;
9733 outline-offset: -2px;
9756 }
9734 }
9757 #kernel_selector_widget > button:hover,
9735 #kernel_selector_widget > button:hover,
9758 #kernel_selector_widget > button:focus {
9736 #kernel_selector_widget > button:focus {
9759 color: #333333;
9737 color: #333333;
9760 text-decoration: none;
9738 text-decoration: none;
9761 }
9739 }
9762 #kernel_selector_widget > button:active,
9740 #kernel_selector_widget > button:active,
9763 #kernel_selector_widget > button.active {
9741 #kernel_selector_widget > button.active {
9764 outline: 0;
9742 outline: 0;
9765 background-image: none;
9743 background-image: none;
9766 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9744 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9767 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9745 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9768 }
9746 }
9769 #kernel_selector_widget > button.disabled,
9747 #kernel_selector_widget > button.disabled,
9770 #kernel_selector_widget > button[disabled],
9748 #kernel_selector_widget > button[disabled],
9771 fieldset[disabled] #kernel_selector_widget > button {
9749 fieldset[disabled] #kernel_selector_widget > button {
9772 cursor: not-allowed;
9750 cursor: not-allowed;
9773 pointer-events: none;
9751 pointer-events: none;
9774 opacity: 0.65;
9752 opacity: 0.65;
9775 filter: alpha(opacity=65);
9753 filter: alpha(opacity=65);
9776 -webkit-box-shadow: none;
9754 -webkit-box-shadow: none;
9777 box-shadow: none;
9755 box-shadow: none;
9778 }
9756 }
9779 #kernel_selector_widget > button:hover,
9757 #kernel_selector_widget > button:hover,
9780 #kernel_selector_widget > button:focus,
9758 #kernel_selector_widget > button:focus,
9781 #kernel_selector_widget > button:active,
9759 #kernel_selector_widget > button:active,
9782 #kernel_selector_widget > button.active,
9760 #kernel_selector_widget > button.active,
9783 .open .dropdown-toggle#kernel_selector_widget > button {
9761 .open .dropdown-toggle#kernel_selector_widget > button {
9784 color: #333333;
9762 color: #333333;
9785 background-color: #ebebeb;
9763 background-color: #ebebeb;
9786 border-color: #adadad;
9764 border-color: #adadad;
9787 }
9765 }
9788 #kernel_selector_widget > button:active,
9766 #kernel_selector_widget > button:active,
9789 #kernel_selector_widget > button.active,
9767 #kernel_selector_widget > button.active,
9790 .open .dropdown-toggle#kernel_selector_widget > button {
9768 .open .dropdown-toggle#kernel_selector_widget > button {
9791 background-image: none;
9769 background-image: none;
9792 }
9770 }
9793 #kernel_selector_widget > button.disabled,
9771 #kernel_selector_widget > button.disabled,
9794 #kernel_selector_widget > button[disabled],
9772 #kernel_selector_widget > button[disabled],
9795 fieldset[disabled] #kernel_selector_widget > button,
9773 fieldset[disabled] #kernel_selector_widget > button,
9796 #kernel_selector_widget > button.disabled:hover,
9774 #kernel_selector_widget > button.disabled:hover,
9797 #kernel_selector_widget > button[disabled]:hover,
9775 #kernel_selector_widget > button[disabled]:hover,
9798 fieldset[disabled] #kernel_selector_widget > button:hover,
9776 fieldset[disabled] #kernel_selector_widget > button:hover,
9799 #kernel_selector_widget > button.disabled:focus,
9777 #kernel_selector_widget > button.disabled:focus,
9800 #kernel_selector_widget > button[disabled]:focus,
9778 #kernel_selector_widget > button[disabled]:focus,
9801 fieldset[disabled] #kernel_selector_widget > button:focus,
9779 fieldset[disabled] #kernel_selector_widget > button:focus,
9802 #kernel_selector_widget > button.disabled:active,
9780 #kernel_selector_widget > button.disabled:active,
9803 #kernel_selector_widget > button[disabled]:active,
9781 #kernel_selector_widget > button[disabled]:active,
9804 fieldset[disabled] #kernel_selector_widget > button:active,
9782 fieldset[disabled] #kernel_selector_widget > button:active,
9805 #kernel_selector_widget > button.disabled.active,
9783 #kernel_selector_widget > button.disabled.active,
9806 #kernel_selector_widget > button[disabled].active,
9784 #kernel_selector_widget > button[disabled].active,
9807 fieldset[disabled] #kernel_selector_widget > button.active {
9785 fieldset[disabled] #kernel_selector_widget > button.active {
9808 background-color: #ffffff;
9786 background-color: #ffffff;
9809 border-color: #cccccc;
9787 border-color: #cccccc;
9810 }
9788 }
9811 #kernel_selector_widget > button .badge {
9789 #kernel_selector_widget > button .badge {
9812 color: #ffffff;
9790 color: #ffffff;
9813 background-color: #333333;
9791 background-color: #333333;
9814 }
9792 }
9815 #kernel_selector_widget > button > span.caret {
9793 #kernel_selector_widget > button > span.caret {
9816 margin-top: 0px;
9794 margin-top: 0px;
9817 }
9795 }
9818 #menubar {
9796 #menubar {
9819 margin-top: 0px;
9797 margin-top: 0px;
9820 margin-bottom: -24px;
9798 margin-bottom: -24px;
9821 position: relative;
9799 position: relative;
9822 box-sizing: border-box;
9800 box-sizing: border-box;
9823 -moz-box-sizing: border-box;
9801 -moz-box-sizing: border-box;
9824 -webkit-box-sizing: border-box;
9802 -webkit-box-sizing: border-box;
9825 }
9803 }
9826 #menubar .navbar {
9804 #menubar .navbar {
9827 border-top: 1px;
9805 border-top: 1px;
9828 border-radius: 0px 0px 4px 4px;
9806 border-radius: 0px 0px 4px 4px;
9829 margin-bottom: 23px;
9807 margin-bottom: 23px;
9830 }
9808 }
9831 #menubar .navbar-toggle {
9809 #menubar .navbar-toggle {
9832 float: left;
9810 float: left;
9833 }
9811 }
9834 #menubar .navbar-collapse {
9812 #menubar .navbar-collapse {
9835 clear: left;
9813 clear: left;
9836 }
9814 }
9837 #menubar li.dropdown {
9815 #menubar li.dropdown {
9838 line-height: 12px;
9816 line-height: 12px;
9839 }
9817 }
9840 #menubar li.dropdown a {
9818 #menubar li.dropdown a {
9841 padding-top: 6px;
9819 padding-top: 6px;
9842 padding-bottom: 5px;
9820 padding-bottom: 5px;
9843 }
9821 }
9844 #menubar ul.navbar-right {
9822 #menubar ul.navbar-right {
9845 padding-top: 2px;
9823 padding-top: 2px;
9846 margin-bottom: 0px;
9824 margin-bottom: 0px;
9847 }
9825 }
9848 .nav-wrapper {
9826 .nav-wrapper {
9849 border-bottom: 1px solid #e7e7e7;
9827 border-bottom: 1px solid #e7e7e7;
9850 }
9828 }
9851 i.menu-icon {
9829 i.menu-icon {
9852 padding-top: 4px;
9830 padding-top: 4px;
9853 }
9831 }
9854 ul#help_menu li a {
9832 ul#help_menu li a {
9855 overflow: hidden;
9833 overflow: hidden;
9856 padding-right: 2.2em;
9834 padding-right: 2.2em;
9857 }
9835 }
9858 ul#help_menu li a i {
9836 ul#help_menu li a i {
9859 margin-right: -1.2em;
9837 margin-right: -1.2em;
9860 }
9838 }
9861 #menus {
9839 #menus {
9862 min-height: 30px;
9840 min-height: 30px;
9863 }
9841 }
9864 .dropdown-submenu {
9842 .dropdown-submenu {
9865 position: relative;
9843 position: relative;
9866 }
9844 }
9867 .dropdown-submenu > .dropdown-menu {
9845 .dropdown-submenu > .dropdown-menu {
9868 top: 0;
9846 top: 0;
9869 left: 100%;
9847 left: 100%;
9870 margin-top: -6px;
9848 margin-top: -6px;
9871 margin-left: -1px;
9849 margin-left: -1px;
9872 -webkit-border-radius: 0 6px 6px 6px;
9850 -webkit-border-radius: 0 6px 6px 6px;
9873 -moz-border-radius: 0 6px 6px 6px;
9851 -moz-border-radius: 0 6px 6px 6px;
9874 border-radius: 0 6px 6px 6px;
9852 border-radius: 0 6px 6px 6px;
9875 }
9853 }
9876 .dropdown-submenu:hover > .dropdown-menu {
9854 .dropdown-submenu:hover > .dropdown-menu {
9877 display: block;
9855 display: block;
9878 }
9856 }
9879 .dropdown-submenu > a:after {
9857 .dropdown-submenu > a:after {
9880 display: block;
9858 display: block;
9881 content: " ";
9859 content: " ";
9882 float: right;
9860 float: right;
9883 width: 0;
9861 width: 0;
9884 height: 0;
9862 height: 0;
9885 border-color: transparent;
9863 border-color: transparent;
9886 border-style: solid;
9864 border-style: solid;
9887 border-width: 5px 0 5px 5px;
9865 border-width: 5px 0 5px 5px;
9888 border-left-color: #cccccc;
9866 border-left-color: #cccccc;
9889 margin-top: 5px;
9867 margin-top: 5px;
9890 margin-right: -10px;
9868 margin-right: -10px;
9891 }
9869 }
9892 .dropdown-submenu:hover > a:after {
9870 .dropdown-submenu:hover > a:after {
9893 border-left-color: #ffffff;
9871 border-left-color: #ffffff;
9894 }
9872 }
9895 .dropdown-submenu.pull-left {
9873 .dropdown-submenu.pull-left {
9896 float: none;
9874 float: none;
9897 }
9875 }
9898 .dropdown-submenu.pull-left > .dropdown-menu {
9876 .dropdown-submenu.pull-left > .dropdown-menu {
9899 left: -100%;
9877 left: -100%;
9900 margin-left: 10px;
9878 margin-left: 10px;
9901 -webkit-border-radius: 6px 0 6px 6px;
9879 -webkit-border-radius: 6px 0 6px 6px;
9902 -moz-border-radius: 6px 0 6px 6px;
9880 -moz-border-radius: 6px 0 6px 6px;
9903 border-radius: 6px 0 6px 6px;
9881 border-radius: 6px 0 6px 6px;
9904 }
9882 }
9905 #notification_area {
9883 #notification_area {
9906 float: right !important;
9884 float: right !important;
9907 float: right;
9885 float: right;
9908 z-index: 10;
9886 z-index: 10;
9909 }
9887 }
9910 .indicator_area {
9888 .indicator_area {
9911 color: #777777;
9889 color: #777777;
9912 padding: 4px 3px;
9890 padding: 4px 3px;
9913 margin: 0px;
9891 margin: 0px;
9914 width: 11px;
9892 width: 11px;
9915 z-index: 10;
9893 z-index: 10;
9916 text-align: center;
9894 text-align: center;
9917 }
9895 }
9918 #kernel_indicator {
9896 #kernel_indicator {
9919 float: right !important;
9897 float: right !important;
9920 float: right;
9898 float: right;
9921 color: #777777;
9899 color: #777777;
9922 padding: 4px 3px;
9900 padding: 4px 3px;
9923 margin: 0px;
9901 margin: 0px;
9924 width: 11px;
9902 width: 11px;
9925 z-index: 10;
9903 z-index: 10;
9926 text-align: center;
9904 text-align: center;
9927 margin-right: 12px;
9905 margin-right: 12px;
9928 }
9906 }
9929 #modal_indicator {
9907 #modal_indicator {
9930 float: right !important;
9908 float: right !important;
9931 float: right;
9909 float: right;
9932 color: #777777;
9910 color: #777777;
9933 padding: 4px 3px;
9911 padding: 4px 3px;
9934 margin: 0px;
9912 margin: 0px;
9935 width: 11px;
9913 width: 11px;
9936 z-index: 10;
9914 z-index: 10;
9937 text-align: center;
9915 text-align: center;
9938 margin-right: 5px;
9916 margin-right: 5px;
9939 }
9917 }
9940 .edit_mode_icon:before {
9918 .edit_mode_icon:before {
9941 display: inline-block;
9919 display: inline-block;
9942 font: normal normal normal 14px/1 FontAwesome;
9920 font: normal normal normal 14px/1 FontAwesome;
9943 font-size: inherit;
9921 font-size: inherit;
9944 text-rendering: auto;
9922 text-rendering: auto;
9945 -webkit-font-smoothing: antialiased;
9923 -webkit-font-smoothing: antialiased;
9946 -moz-osx-font-smoothing: grayscale;
9924 -moz-osx-font-smoothing: grayscale;
9947 content: "\f040";
9925 content: "\f040";
9948 }
9926 }
9949 .edit_mode_icon:before.pull-left {
9927 .edit_mode_icon:before.pull-left {
9950 margin-right: .3em;
9928 margin-right: .3em;
9951 }
9929 }
9952 .edit_mode_icon:before.pull-right {
9930 .edit_mode_icon:before.pull-right {
9953 margin-left: .3em;
9931 margin-left: .3em;
9954 }
9932 }
9955 .command_mode_icon:before {
9933 .command_mode_icon:before {
9956 display: inline-block;
9934 display: inline-block;
9957 font: normal normal normal 14px/1 FontAwesome;
9935 font: normal normal normal 14px/1 FontAwesome;
9958 font-size: inherit;
9936 font-size: inherit;
9959 text-rendering: auto;
9937 text-rendering: auto;
9960 -webkit-font-smoothing: antialiased;
9938 -webkit-font-smoothing: antialiased;
9961 -moz-osx-font-smoothing: grayscale;
9939 -moz-osx-font-smoothing: grayscale;
9962 content: ' ';
9940 content: ' ';
9963 }
9941 }
9964 .command_mode_icon:before.pull-left {
9942 .command_mode_icon:before.pull-left {
9965 margin-right: .3em;
9943 margin-right: .3em;
9966 }
9944 }
9967 .command_mode_icon:before.pull-right {
9945 .command_mode_icon:before.pull-right {
9968 margin-left: .3em;
9946 margin-left: .3em;
9969 }
9947 }
9970 .kernel_idle_icon:before {
9948 .kernel_idle_icon:before {
9971 display: inline-block;
9949 display: inline-block;
9972 font: normal normal normal 14px/1 FontAwesome;
9950 font: normal normal normal 14px/1 FontAwesome;
9973 font-size: inherit;
9951 font-size: inherit;
9974 text-rendering: auto;
9952 text-rendering: auto;
9975 -webkit-font-smoothing: antialiased;
9953 -webkit-font-smoothing: antialiased;
9976 -moz-osx-font-smoothing: grayscale;
9954 -moz-osx-font-smoothing: grayscale;
9977 content: "\f10c";
9955 content: "\f10c";
9978 }
9956 }
9979 .kernel_idle_icon:before.pull-left {
9957 .kernel_idle_icon:before.pull-left {
9980 margin-right: .3em;
9958 margin-right: .3em;
9981 }
9959 }
9982 .kernel_idle_icon:before.pull-right {
9960 .kernel_idle_icon:before.pull-right {
9983 margin-left: .3em;
9961 margin-left: .3em;
9984 }
9962 }
9985 .kernel_busy_icon:before {
9963 .kernel_busy_icon:before {
9986 display: inline-block;
9964 display: inline-block;
9987 font: normal normal normal 14px/1 FontAwesome;
9965 font: normal normal normal 14px/1 FontAwesome;
9988 font-size: inherit;
9966 font-size: inherit;
9989 text-rendering: auto;
9967 text-rendering: auto;
9990 -webkit-font-smoothing: antialiased;
9968 -webkit-font-smoothing: antialiased;
9991 -moz-osx-font-smoothing: grayscale;
9969 -moz-osx-font-smoothing: grayscale;
9992 content: "\f111";
9970 content: "\f111";
9993 }
9971 }
9994 .kernel_busy_icon:before.pull-left {
9972 .kernel_busy_icon:before.pull-left {
9995 margin-right: .3em;
9973 margin-right: .3em;
9996 }
9974 }
9997 .kernel_busy_icon:before.pull-right {
9975 .kernel_busy_icon:before.pull-right {
9998 margin-left: .3em;
9976 margin-left: .3em;
9999 }
9977 }
10000 .kernel_dead_icon:before {
9978 .kernel_dead_icon:before {
10001 display: inline-block;
9979 display: inline-block;
10002 font: normal normal normal 14px/1 FontAwesome;
9980 font: normal normal normal 14px/1 FontAwesome;
10003 font-size: inherit;
9981 font-size: inherit;
10004 text-rendering: auto;
9982 text-rendering: auto;
10005 -webkit-font-smoothing: antialiased;
9983 -webkit-font-smoothing: antialiased;
10006 -moz-osx-font-smoothing: grayscale;
9984 -moz-osx-font-smoothing: grayscale;
10007 content: "\f1e2";
9985 content: "\f1e2";
10008 }
9986 }
10009 .kernel_dead_icon:before.pull-left {
9987 .kernel_dead_icon:before.pull-left {
10010 margin-right: .3em;
9988 margin-right: .3em;
10011 }
9989 }
10012 .kernel_dead_icon:before.pull-right {
9990 .kernel_dead_icon:before.pull-right {
10013 margin-left: .3em;
9991 margin-left: .3em;
10014 }
9992 }
10015 .kernel_disconnected_icon:before {
9993 .kernel_disconnected_icon:before {
10016 display: inline-block;
9994 display: inline-block;
10017 font: normal normal normal 14px/1 FontAwesome;
9995 font: normal normal normal 14px/1 FontAwesome;
10018 font-size: inherit;
9996 font-size: inherit;
10019 text-rendering: auto;
9997 text-rendering: auto;
10020 -webkit-font-smoothing: antialiased;
9998 -webkit-font-smoothing: antialiased;
10021 -moz-osx-font-smoothing: grayscale;
9999 -moz-osx-font-smoothing: grayscale;
10022 content: "\f127";
10000 content: "\f127";
10023 }
10001 }
10024 .kernel_disconnected_icon:before.pull-left {
10002 .kernel_disconnected_icon:before.pull-left {
10025 margin-right: .3em;
10003 margin-right: .3em;
10026 }
10004 }
10027 .kernel_disconnected_icon:before.pull-right {
10005 .kernel_disconnected_icon:before.pull-right {
10028 margin-left: .3em;
10006 margin-left: .3em;
10029 }
10007 }
10030 .notification_widget {
10008 .notification_widget {
10031 color: #777777;
10009 color: #777777;
10032 padding: 1px 12px;
10010 padding: 1px 12px;
10033 margin: 2px 4px;
10011 margin: 2px 4px;
10034 z-index: 10;
10012 z-index: 10;
10035 background: rgba(240, 240, 240, 0.5);
10013 background: rgba(240, 240, 240, 0.5);
10036 float: right !important;
10014 float: right !important;
10037 float: right;
10015 float: right;
10038 box-sizing: border-box;
10016 box-sizing: border-box;
10039 -moz-box-sizing: border-box;
10017 -moz-box-sizing: border-box;
10040 -webkit-box-sizing: border-box;
10018 -webkit-box-sizing: border-box;
10041 display: inline-block;
10019 display: inline-block;
10042 margin-bottom: 0;
10020 margin-bottom: 0;
10043 font-weight: normal;
10021 font-weight: normal;
10044 text-align: center;
10022 text-align: center;
10045 vertical-align: middle;
10023 vertical-align: middle;
10046 cursor: pointer;
10024 cursor: pointer;
10047 background-image: none;
10025 background-image: none;
10048 border: 1px solid transparent;
10026 border: 1px solid transparent;
10049 white-space: nowrap;
10027 white-space: nowrap;
10050 padding: 6px 12px;
10028 padding: 6px 12px;
10051 font-size: 13px;
10029 font-size: 13px;
10052 line-height: 1.42857143;
10030 line-height: 1.42857143;
10053 border-radius: 4px;
10031 border-radius: 4px;
10054 -webkit-user-select: none;
10032 -webkit-user-select: none;
10055 -moz-user-select: none;
10033 -moz-user-select: none;
10056 -ms-user-select: none;
10034 -ms-user-select: none;
10057 user-select: none;
10035 user-select: none;
10058 color: #333333;
10036 color: #333333;
10059 background-color: #ffffff;
10037 background-color: #ffffff;
10060 border-color: #cccccc;
10038 border-color: #cccccc;
10061 padding: 1px 5px;
10039 padding: 1px 5px;
10062 font-size: 12px;
10040 font-size: 12px;
10063 line-height: 1.5;
10041 line-height: 1.5;
10064 border-radius: 3px;
10042 border-radius: 3px;
10065 }
10043 }
10066 .notification_widget:focus,
10044 .notification_widget:focus,
10067 .notification_widget:active:focus,
10045 .notification_widget:active:focus,
10068 .notification_widget.active:focus {
10046 .notification_widget.active:focus {
10069 outline: thin dotted;
10047 outline: thin dotted;
10070 outline: 5px auto -webkit-focus-ring-color;
10048 outline: 5px auto -webkit-focus-ring-color;
10071 outline-offset: -2px;
10049 outline-offset: -2px;
10072 }
10050 }
10073 .notification_widget:hover,
10051 .notification_widget:hover,
10074 .notification_widget:focus {
10052 .notification_widget:focus {
10075 color: #333333;
10053 color: #333333;
10076 text-decoration: none;
10054 text-decoration: none;
10077 }
10055 }
10078 .notification_widget:active,
10056 .notification_widget:active,
10079 .notification_widget.active {
10057 .notification_widget.active {
10080 outline: 0;
10058 outline: 0;
10081 background-image: none;
10059 background-image: none;
10082 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10060 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10083 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10061 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10084 }
10062 }
10085 .notification_widget.disabled,
10063 .notification_widget.disabled,
10086 .notification_widget[disabled],
10064 .notification_widget[disabled],
10087 fieldset[disabled] .notification_widget {
10065 fieldset[disabled] .notification_widget {
10088 cursor: not-allowed;
10066 cursor: not-allowed;
10089 pointer-events: none;
10067 pointer-events: none;
10090 opacity: 0.65;
10068 opacity: 0.65;
10091 filter: alpha(opacity=65);
10069 filter: alpha(opacity=65);
10092 -webkit-box-shadow: none;
10070 -webkit-box-shadow: none;
10093 box-shadow: none;
10071 box-shadow: none;
10094 }
10072 }
10095 .notification_widget:hover,
10073 .notification_widget:hover,
10096 .notification_widget:focus,
10074 .notification_widget:focus,
10097 .notification_widget:active,
10075 .notification_widget:active,
10098 .notification_widget.active,
10076 .notification_widget.active,
10099 .open .dropdown-toggle.notification_widget {
10077 .open .dropdown-toggle.notification_widget {
10100 color: #333333;
10078 color: #333333;
10101 background-color: #ebebeb;
10079 background-color: #ebebeb;
10102 border-color: #adadad;
10080 border-color: #adadad;
10103 }
10081 }
10104 .notification_widget:active,
10082 .notification_widget:active,
10105 .notification_widget.active,
10083 .notification_widget.active,
10106 .open .dropdown-toggle.notification_widget {
10084 .open .dropdown-toggle.notification_widget {
10107 background-image: none;
10085 background-image: none;
10108 }
10086 }
10109 .notification_widget.disabled,
10087 .notification_widget.disabled,
10110 .notification_widget[disabled],
10088 .notification_widget[disabled],
10111 fieldset[disabled] .notification_widget,
10089 fieldset[disabled] .notification_widget,
10112 .notification_widget.disabled:hover,
10090 .notification_widget.disabled:hover,
10113 .notification_widget[disabled]:hover,
10091 .notification_widget[disabled]:hover,
10114 fieldset[disabled] .notification_widget:hover,
10092 fieldset[disabled] .notification_widget:hover,
10115 .notification_widget.disabled:focus,
10093 .notification_widget.disabled:focus,
10116 .notification_widget[disabled]:focus,
10094 .notification_widget[disabled]:focus,
10117 fieldset[disabled] .notification_widget:focus,
10095 fieldset[disabled] .notification_widget:focus,
10118 .notification_widget.disabled:active,
10096 .notification_widget.disabled:active,
10119 .notification_widget[disabled]:active,
10097 .notification_widget[disabled]:active,
10120 fieldset[disabled] .notification_widget:active,
10098 fieldset[disabled] .notification_widget:active,
10121 .notification_widget.disabled.active,
10099 .notification_widget.disabled.active,
10122 .notification_widget[disabled].active,
10100 .notification_widget[disabled].active,
10123 fieldset[disabled] .notification_widget.active {
10101 fieldset[disabled] .notification_widget.active {
10124 background-color: #ffffff;
10102 background-color: #ffffff;
10125 border-color: #cccccc;
10103 border-color: #cccccc;
10126 }
10104 }
10127 .notification_widget .badge {
10105 .notification_widget .badge {
10128 color: #ffffff;
10106 color: #ffffff;
10129 background-color: #333333;
10107 background-color: #333333;
10130 }
10108 }
10131 .notification_widget.span {
10109 .notification_widget.span {
10132 padding-right: 2px;
10110 padding-right: 2px;
10133 }
10111 }
10134 .notification_widget.warning {
10112 .notification_widget.warning {
10135 color: #ffffff;
10113 color: #ffffff;
10136 background-color: #f0ad4e;
10114 background-color: #f0ad4e;
10137 border-color: #eea236;
10115 border-color: #eea236;
10138 }
10116 }
10139 .notification_widget.warning:hover,
10117 .notification_widget.warning:hover,
10140 .notification_widget.warning:focus,
10118 .notification_widget.warning:focus,
10141 .notification_widget.warning:active,
10119 .notification_widget.warning:active,
10142 .notification_widget.warning.active,
10120 .notification_widget.warning.active,
10143 .open .dropdown-toggle.notification_widget.warning {
10121 .open .dropdown-toggle.notification_widget.warning {
10144 color: #ffffff;
10122 color: #ffffff;
10145 background-color: #ed9c28;
10123 background-color: #ed9c28;
10146 border-color: #d58512;
10124 border-color: #d58512;
10147 }
10125 }
10148 .notification_widget.warning:active,
10126 .notification_widget.warning:active,
10149 .notification_widget.warning.active,
10127 .notification_widget.warning.active,
10150 .open .dropdown-toggle.notification_widget.warning {
10128 .open .dropdown-toggle.notification_widget.warning {
10151 background-image: none;
10129 background-image: none;
10152 }
10130 }
10153 .notification_widget.warning.disabled,
10131 .notification_widget.warning.disabled,
10154 .notification_widget.warning[disabled],
10132 .notification_widget.warning[disabled],
10155 fieldset[disabled] .notification_widget.warning,
10133 fieldset[disabled] .notification_widget.warning,
10156 .notification_widget.warning.disabled:hover,
10134 .notification_widget.warning.disabled:hover,
10157 .notification_widget.warning[disabled]:hover,
10135 .notification_widget.warning[disabled]:hover,
10158 fieldset[disabled] .notification_widget.warning:hover,
10136 fieldset[disabled] .notification_widget.warning:hover,
10159 .notification_widget.warning.disabled:focus,
10137 .notification_widget.warning.disabled:focus,
10160 .notification_widget.warning[disabled]:focus,
10138 .notification_widget.warning[disabled]:focus,
10161 fieldset[disabled] .notification_widget.warning:focus,
10139 fieldset[disabled] .notification_widget.warning:focus,
10162 .notification_widget.warning.disabled:active,
10140 .notification_widget.warning.disabled:active,
10163 .notification_widget.warning[disabled]:active,
10141 .notification_widget.warning[disabled]:active,
10164 fieldset[disabled] .notification_widget.warning:active,
10142 fieldset[disabled] .notification_widget.warning:active,
10165 .notification_widget.warning.disabled.active,
10143 .notification_widget.warning.disabled.active,
10166 .notification_widget.warning[disabled].active,
10144 .notification_widget.warning[disabled].active,
10167 fieldset[disabled] .notification_widget.warning.active {
10145 fieldset[disabled] .notification_widget.warning.active {
10168 background-color: #f0ad4e;
10146 background-color: #f0ad4e;
10169 border-color: #eea236;
10147 border-color: #eea236;
10170 }
10148 }
10171 .notification_widget.warning .badge {
10149 .notification_widget.warning .badge {
10172 color: #f0ad4e;
10150 color: #f0ad4e;
10173 background-color: #ffffff;
10151 background-color: #ffffff;
10174 }
10152 }
10175 .notification_widget.success {
10153 .notification_widget.success {
10176 color: #ffffff;
10154 color: #ffffff;
10177 background-color: #5cb85c;
10155 background-color: #5cb85c;
10178 border-color: #4cae4c;
10156 border-color: #4cae4c;
10179 }
10157 }
10180 .notification_widget.success:hover,
10158 .notification_widget.success:hover,
10181 .notification_widget.success:focus,
10159 .notification_widget.success:focus,
10182 .notification_widget.success:active,
10160 .notification_widget.success:active,
10183 .notification_widget.success.active,
10161 .notification_widget.success.active,
10184 .open .dropdown-toggle.notification_widget.success {
10162 .open .dropdown-toggle.notification_widget.success {
10185 color: #ffffff;
10163 color: #ffffff;
10186 background-color: #47a447;
10164 background-color: #47a447;
10187 border-color: #398439;
10165 border-color: #398439;
10188 }
10166 }
10189 .notification_widget.success:active,
10167 .notification_widget.success:active,
10190 .notification_widget.success.active,
10168 .notification_widget.success.active,
10191 .open .dropdown-toggle.notification_widget.success {
10169 .open .dropdown-toggle.notification_widget.success {
10192 background-image: none;
10170 background-image: none;
10193 }
10171 }
10194 .notification_widget.success.disabled,
10172 .notification_widget.success.disabled,
10195 .notification_widget.success[disabled],
10173 .notification_widget.success[disabled],
10196 fieldset[disabled] .notification_widget.success,
10174 fieldset[disabled] .notification_widget.success,
10197 .notification_widget.success.disabled:hover,
10175 .notification_widget.success.disabled:hover,
10198 .notification_widget.success[disabled]:hover,
10176 .notification_widget.success[disabled]:hover,
10199 fieldset[disabled] .notification_widget.success:hover,
10177 fieldset[disabled] .notification_widget.success:hover,
10200 .notification_widget.success.disabled:focus,
10178 .notification_widget.success.disabled:focus,
10201 .notification_widget.success[disabled]:focus,
10179 .notification_widget.success[disabled]:focus,
10202 fieldset[disabled] .notification_widget.success:focus,
10180 fieldset[disabled] .notification_widget.success:focus,
10203 .notification_widget.success.disabled:active,
10181 .notification_widget.success.disabled:active,
10204 .notification_widget.success[disabled]:active,
10182 .notification_widget.success[disabled]:active,
10205 fieldset[disabled] .notification_widget.success:active,
10183 fieldset[disabled] .notification_widget.success:active,
10206 .notification_widget.success.disabled.active,
10184 .notification_widget.success.disabled.active,
10207 .notification_widget.success[disabled].active,
10185 .notification_widget.success[disabled].active,
10208 fieldset[disabled] .notification_widget.success.active {
10186 fieldset[disabled] .notification_widget.success.active {
10209 background-color: #5cb85c;
10187 background-color: #5cb85c;
10210 border-color: #4cae4c;
10188 border-color: #4cae4c;
10211 }
10189 }
10212 .notification_widget.success .badge {
10190 .notification_widget.success .badge {
10213 color: #5cb85c;
10191 color: #5cb85c;
10214 background-color: #ffffff;
10192 background-color: #ffffff;
10215 }
10193 }
10216 .notification_widget.info {
10194 .notification_widget.info {
10217 color: #ffffff;
10195 color: #ffffff;
10218 background-color: #5bc0de;
10196 background-color: #5bc0de;
10219 border-color: #46b8da;
10197 border-color: #46b8da;
10220 }
10198 }
10221 .notification_widget.info:hover,
10199 .notification_widget.info:hover,
10222 .notification_widget.info:focus,
10200 .notification_widget.info:focus,
10223 .notification_widget.info:active,
10201 .notification_widget.info:active,
10224 .notification_widget.info.active,
10202 .notification_widget.info.active,
10225 .open .dropdown-toggle.notification_widget.info {
10203 .open .dropdown-toggle.notification_widget.info {
10226 color: #ffffff;
10204 color: #ffffff;
10227 background-color: #39b3d7;
10205 background-color: #39b3d7;
10228 border-color: #269abc;
10206 border-color: #269abc;
10229 }
10207 }
10230 .notification_widget.info:active,
10208 .notification_widget.info:active,
10231 .notification_widget.info.active,
10209 .notification_widget.info.active,
10232 .open .dropdown-toggle.notification_widget.info {
10210 .open .dropdown-toggle.notification_widget.info {
10233 background-image: none;
10211 background-image: none;
10234 }
10212 }
10235 .notification_widget.info.disabled,
10213 .notification_widget.info.disabled,
10236 .notification_widget.info[disabled],
10214 .notification_widget.info[disabled],
10237 fieldset[disabled] .notification_widget.info,
10215 fieldset[disabled] .notification_widget.info,
10238 .notification_widget.info.disabled:hover,
10216 .notification_widget.info.disabled:hover,
10239 .notification_widget.info[disabled]:hover,
10217 .notification_widget.info[disabled]:hover,
10240 fieldset[disabled] .notification_widget.info:hover,
10218 fieldset[disabled] .notification_widget.info:hover,
10241 .notification_widget.info.disabled:focus,
10219 .notification_widget.info.disabled:focus,
10242 .notification_widget.info[disabled]:focus,
10220 .notification_widget.info[disabled]:focus,
10243 fieldset[disabled] .notification_widget.info:focus,
10221 fieldset[disabled] .notification_widget.info:focus,
10244 .notification_widget.info.disabled:active,
10222 .notification_widget.info.disabled:active,
10245 .notification_widget.info[disabled]:active,
10223 .notification_widget.info[disabled]:active,
10246 fieldset[disabled] .notification_widget.info:active,
10224 fieldset[disabled] .notification_widget.info:active,
10247 .notification_widget.info.disabled.active,
10225 .notification_widget.info.disabled.active,
10248 .notification_widget.info[disabled].active,
10226 .notification_widget.info[disabled].active,
10249 fieldset[disabled] .notification_widget.info.active {
10227 fieldset[disabled] .notification_widget.info.active {
10250 background-color: #5bc0de;
10228 background-color: #5bc0de;
10251 border-color: #46b8da;
10229 border-color: #46b8da;
10252 }
10230 }
10253 .notification_widget.info .badge {
10231 .notification_widget.info .badge {
10254 color: #5bc0de;
10232 color: #5bc0de;
10255 background-color: #ffffff;
10233 background-color: #ffffff;
10256 }
10234 }
10257 .notification_widget.danger {
10235 .notification_widget.danger {
10258 color: #ffffff;
10236 color: #ffffff;
10259 background-color: #d9534f;
10237 background-color: #d9534f;
10260 border-color: #d43f3a;
10238 border-color: #d43f3a;
10261 }
10239 }
10262 .notification_widget.danger:hover,
10240 .notification_widget.danger:hover,
10263 .notification_widget.danger:focus,
10241 .notification_widget.danger:focus,
10264 .notification_widget.danger:active,
10242 .notification_widget.danger:active,
10265 .notification_widget.danger.active,
10243 .notification_widget.danger.active,
10266 .open .dropdown-toggle.notification_widget.danger {
10244 .open .dropdown-toggle.notification_widget.danger {
10267 color: #ffffff;
10245 color: #ffffff;
10268 background-color: #d2322d;
10246 background-color: #d2322d;
10269 border-color: #ac2925;
10247 border-color: #ac2925;
10270 }
10248 }
10271 .notification_widget.danger:active,
10249 .notification_widget.danger:active,
10272 .notification_widget.danger.active,
10250 .notification_widget.danger.active,
10273 .open .dropdown-toggle.notification_widget.danger {
10251 .open .dropdown-toggle.notification_widget.danger {
10274 background-image: none;
10252 background-image: none;
10275 }
10253 }
10276 .notification_widget.danger.disabled,
10254 .notification_widget.danger.disabled,
10277 .notification_widget.danger[disabled],
10255 .notification_widget.danger[disabled],
10278 fieldset[disabled] .notification_widget.danger,
10256 fieldset[disabled] .notification_widget.danger,
10279 .notification_widget.danger.disabled:hover,
10257 .notification_widget.danger.disabled:hover,
10280 .notification_widget.danger[disabled]:hover,
10258 .notification_widget.danger[disabled]:hover,
10281 fieldset[disabled] .notification_widget.danger:hover,
10259 fieldset[disabled] .notification_widget.danger:hover,
10282 .notification_widget.danger.disabled:focus,
10260 .notification_widget.danger.disabled:focus,
10283 .notification_widget.danger[disabled]:focus,
10261 .notification_widget.danger[disabled]:focus,
10284 fieldset[disabled] .notification_widget.danger:focus,
10262 fieldset[disabled] .notification_widget.danger:focus,
10285 .notification_widget.danger.disabled:active,
10263 .notification_widget.danger.disabled:active,
10286 .notification_widget.danger[disabled]:active,
10264 .notification_widget.danger[disabled]:active,
10287 fieldset[disabled] .notification_widget.danger:active,
10265 fieldset[disabled] .notification_widget.danger:active,
10288 .notification_widget.danger.disabled.active,
10266 .notification_widget.danger.disabled.active,
10289 .notification_widget.danger[disabled].active,
10267 .notification_widget.danger[disabled].active,
10290 fieldset[disabled] .notification_widget.danger.active {
10268 fieldset[disabled] .notification_widget.danger.active {
10291 background-color: #d9534f;
10269 background-color: #d9534f;
10292 border-color: #d43f3a;
10270 border-color: #d43f3a;
10293 }
10271 }
10294 .notification_widget.danger .badge {
10272 .notification_widget.danger .badge {
10295 color: #d9534f;
10273 color: #d9534f;
10296 background-color: #ffffff;
10274 background-color: #ffffff;
10297 }
10275 }
10298 div#pager {
10276 div#pager {
10299 background-color: #ffffff;
10277 background-color: #ffffff;
10300 font-size: 14px;
10278 font-size: 14px;
10301 line-height: 20px;
10279 line-height: 20px;
10302 overflow: hidden;
10280 overflow: hidden;
10303 display: none;
10281 display: none;
10304 position: fixed;
10282 position: fixed;
10305 bottom: 0px;
10283 bottom: 0px;
10306 width: 100%;
10284 width: 100%;
10307 max-height: 50%;
10285 max-height: 50%;
10308 padding-top: 7px;
10286 padding-top: 7px;
10309 /* Display over codemirror */
10287 /* Display over codemirror */
10310 z-index: 100;
10288 z-index: 100;
10311 /* Hack which prevents jquery ui resizable from changing top. */
10289 /* Hack which prevents jquery ui resizable from changing top. */
10312 top: inherit !important;
10290 top: inherit !important;
10313 }
10291 }
10314 div#pager pre {
10292 div#pager pre {
10315 line-height: 1.21429em;
10293 line-height: 1.21429em;
10316 color: #000000;
10294 color: #000000;
10317 background-color: #f7f7f7;
10295 background-color: #f7f7f7;
10318 padding: 0.4em;
10296 padding: 0.4em;
10319 }
10297 }
10320 div#pager #pager-button-area {
10298 div#pager #pager-button-area {
10321 position: absolute;
10299 position: absolute;
10322 top: 7px;
10300 top: 7px;
10323 right: 20px;
10301 right: 20px;
10324 }
10302 }
10325 div#pager #pager-contents {
10303 div#pager #pager-contents {
10326 position: relative;
10304 position: relative;
10327 overflow: auto;
10305 overflow: auto;
10328 width: 100%;
10306 width: 100%;
10329 height: 100%;
10307 height: 100%;
10330 }
10308 }
10331 div#pager #pager-contents #pager-container {
10309 div#pager #pager-contents #pager-container {
10332 position: relative;
10310 position: relative;
10333 padding: 15px 0px;
10311 padding: 15px 0px;
10334 box-sizing: border-box;
10312 box-sizing: border-box;
10335 -moz-box-sizing: border-box;
10313 -moz-box-sizing: border-box;
10336 -webkit-box-sizing: border-box;
10314 -webkit-box-sizing: border-box;
10337 }
10315 }
10338 div#pager .ui-resizable-handle {
10316 div#pager .ui-resizable-handle {
10339 top: 0px;
10317 top: 0px;
10340 height: 7px;
10318 height: 7px;
10341 background: #cfcfcf;
10319 background: #cfcfcf;
10342 border-bottom: 1px solid #ababab;
10320 border-bottom: 1px solid #ababab;
10343 }
10321 }
10344 .quickhelp {
10322 .quickhelp {
10345 /* Old browsers */
10323 /* Old browsers */
10346 display: -webkit-box;
10324 display: -webkit-box;
10347 -webkit-box-orient: horizontal;
10325 -webkit-box-orient: horizontal;
10348 -webkit-box-align: stretch;
10326 -webkit-box-align: stretch;
10349 display: -moz-box;
10327 display: -moz-box;
10350 -moz-box-orient: horizontal;
10328 -moz-box-orient: horizontal;
10351 -moz-box-align: stretch;
10329 -moz-box-align: stretch;
10352 display: box;
10330 display: box;
10353 box-orient: horizontal;
10331 box-orient: horizontal;
10354 box-align: stretch;
10332 box-align: stretch;
10355 /* Modern browsers */
10333 /* Modern browsers */
10356 display: flex;
10334 display: flex;
10357 flex-direction: row;
10335 flex-direction: row;
10358 align-items: stretch;
10336 align-items: stretch;
10359 }
10337 }
10360 .shortcut_key {
10338 .shortcut_key {
10361 display: inline-block;
10339 display: inline-block;
10362 width: 20ex;
10340 width: 20ex;
10363 text-align: right;
10341 text-align: right;
10364 font-family: monospace;
10342 font-family: monospace;
10365 }
10343 }
10366 .shortcut_descr {
10344 .shortcut_descr {
10367 display: inline-block;
10345 display: inline-block;
10368 /* Old browsers */
10346 /* Old browsers */
10369 -webkit-box-flex: 1;
10347 -webkit-box-flex: 1;
10370 -moz-box-flex: 1;
10348 -moz-box-flex: 1;
10371 box-flex: 1;
10349 box-flex: 1;
10372 /* Modern browsers */
10350 /* Modern browsers */
10373 flex: 1;
10351 flex: 1;
10374 }
10352 }
10375 span#save_widget {
10353 span#save_widget {
10376 padding: 0px 5px;
10354 padding: 0px 5px;
10377 margin-top: 12px;
10355 margin-top: 12px;
10378 }
10356 }
10379 span#checkpoint_status,
10357 span#checkpoint_status,
10380 span#autosave_status {
10358 span#autosave_status {
10381 font-size: small;
10359 font-size: small;
10382 }
10360 }
10383 @media (max-width: 767px) {
10361 @media (max-width: 767px) {
10384 span#save_widget {
10362 span#save_widget {
10385 font-size: small;
10363 font-size: small;
10386 }
10364 }
10387 span#checkpoint_status,
10365 span#checkpoint_status,
10388 span#autosave_status {
10366 span#autosave_status {
10389 font-size: x-small;
10367 font-size: x-small;
10390 }
10368 }
10391 }
10369 }
10392 @media (max-width: 767px) {
10370 @media (max-width: 767px) {
10393 span#checkpoint_status,
10371 span#checkpoint_status,
10394 span#autosave_status {
10372 span#autosave_status {
10395 display: none;
10373 display: none;
10396 }
10374 }
10397 }
10375 }
10398 @media (min-width: 768px) and (max-width: 979px) {
10376 @media (min-width: 768px) and (max-width: 979px) {
10399 span#checkpoint_status {
10377 span#checkpoint_status {
10400 display: none;
10378 display: none;
10401 }
10379 }
10402 span#autosave_status {
10380 span#autosave_status {
10403 font-size: x-small;
10381 font-size: x-small;
10404 }
10382 }
10405 }
10383 }
10406 .toolbar {
10384 .toolbar {
10407 padding: 0px;
10385 padding: 0px;
10408 margin-left: -5px;
10386 margin-left: -5px;
10409 margin-top: -5px;
10387 margin-top: -5px;
10410 margin-bottom: 5px;
10388 margin-bottom: 5px;
10411 box-sizing: border-box;
10389 box-sizing: border-box;
10412 -moz-box-sizing: border-box;
10390 -moz-box-sizing: border-box;
10413 -webkit-box-sizing: border-box;
10391 -webkit-box-sizing: border-box;
10414 }
10392 }
10415 .toolbar select,
10393 .toolbar select,
10416 .toolbar label {
10394 .toolbar label {
10417 width: auto;
10395 width: auto;
10418 vertical-align: middle;
10396 vertical-align: middle;
10419 margin-right: 2px;
10397 margin-right: 2px;
10420 margin-bottom: 0px;
10398 margin-bottom: 0px;
10421 display: inline;
10399 display: inline;
10422 font-size: 92%;
10400 font-size: 92%;
10423 margin-left: 0.3em;
10401 margin-left: 0.3em;
10424 margin-right: 0.3em;
10402 margin-right: 0.3em;
10425 padding: 0px;
10403 padding: 0px;
10426 padding-top: 3px;
10404 padding-top: 3px;
10427 }
10405 }
10428 .toolbar .btn {
10406 .toolbar .btn {
10429 padding: 2px 8px;
10407 padding: 2px 8px;
10430 }
10408 }
10431 .toolbar .btn-group {
10409 .toolbar .btn-group {
10432 margin-top: 0px;
10410 margin-top: 0px;
10433 margin-left: 5px;
10411 margin-left: 5px;
10434 }
10412 }
10435 #maintoolbar {
10413 #maintoolbar {
10436 margin-bottom: -3px;
10414 margin-bottom: -3px;
10437 margin-top: -8px;
10415 margin-top: -8px;
10438 border: 0px;
10416 border: 0px;
10439 min-height: 27px;
10417 min-height: 27px;
10440 margin-left: 32px;
10418 margin-left: 32px;
10441 padding-top: 11px;
10419 padding-top: 11px;
10442 padding-bottom: 3px;
10420 padding-bottom: 3px;
10443 }
10421 }
10444 #maintoolbar .navbar-text {
10422 #maintoolbar .navbar-text {
10445 float: none;
10423 float: none;
10446 vertical-align: middle;
10424 vertical-align: middle;
10447 text-align: right;
10425 text-align: right;
10448 margin-left: 5px;
10426 margin-left: 5px;
10449 margin-right: 0px;
10427 margin-right: 0px;
10450 margin-top: 0px;
10428 margin-top: 0px;
10451 }
10429 }
10452 .select-xs {
10430 .select-xs {
10453 height: 24px;
10431 height: 24px;
10454 }
10432 }
10455 /**
10433 /**
10456 * Primary styles
10434 * Primary styles
10457 *
10435 *
10458 * Author: IPython Development Team
10436 * Author: IPython Development Team
10459 */
10437 */
10460 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
10438 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
10461 * of chance of beeing generated from the ../less/[samename].less file, you can
10439 * of chance of beeing generated from the ../less/[samename].less file, you can
10462 * try to get back the less file by reverting somme commit in history
10440 * try to get back the less file by reverting somme commit in history
10463 **/
10441 **/
10464 /*
10442 /*
10465 * We'll try to get something pretty, so we
10443 * We'll try to get something pretty, so we
10466 * have some strange css to have the scroll bar on
10444 * have some strange css to have the scroll bar on
10467 * the left with fix button on the top right of the tooltip
10445 * the left with fix button on the top right of the tooltip
10468 */
10446 */
10469 @-moz-keyframes fadeOut {
10447 @-moz-keyframes fadeOut {
10470 from {
10448 from {
10471 opacity: 1;
10449 opacity: 1;
10472 }
10450 }
10473 to {
10451 to {
10474 opacity: 0;
10452 opacity: 0;
10475 }
10453 }
10476 }
10454 }
10477 @-webkit-keyframes fadeOut {
10455 @-webkit-keyframes fadeOut {
10478 from {
10456 from {
10479 opacity: 1;
10457 opacity: 1;
10480 }
10458 }
10481 to {
10459 to {
10482 opacity: 0;
10460 opacity: 0;
10483 }
10461 }
10484 }
10462 }
10485 @-moz-keyframes fadeIn {
10463 @-moz-keyframes fadeIn {
10486 from {
10464 from {
10487 opacity: 0;
10465 opacity: 0;
10488 }
10466 }
10489 to {
10467 to {
10490 opacity: 1;
10468 opacity: 1;
10491 }
10469 }
10492 }
10470 }
10493 @-webkit-keyframes fadeIn {
10471 @-webkit-keyframes fadeIn {
10494 from {
10472 from {
10495 opacity: 0;
10473 opacity: 0;
10496 }
10474 }
10497 to {
10475 to {
10498 opacity: 1;
10476 opacity: 1;
10499 }
10477 }
10500 }
10478 }
10501 /*properties of tooltip after "expand"*/
10479 /*properties of tooltip after "expand"*/
10502 .bigtooltip {
10480 .bigtooltip {
10503 overflow: auto;
10481 overflow: auto;
10504 height: 200px;
10482 height: 200px;
10505 -webkit-transition-property: height;
10483 -webkit-transition-property: height;
10506 -webkit-transition-duration: 500ms;
10484 -webkit-transition-duration: 500ms;
10507 -moz-transition-property: height;
10485 -moz-transition-property: height;
10508 -moz-transition-duration: 500ms;
10486 -moz-transition-duration: 500ms;
10509 transition-property: height;
10487 transition-property: height;
10510 transition-duration: 500ms;
10488 transition-duration: 500ms;
10511 }
10489 }
10512 /*properties of tooltip before "expand"*/
10490 /*properties of tooltip before "expand"*/
10513 .smalltooltip {
10491 .smalltooltip {
10514 -webkit-transition-property: height;
10492 -webkit-transition-property: height;
10515 -webkit-transition-duration: 500ms;
10493 -webkit-transition-duration: 500ms;
10516 -moz-transition-property: height;
10494 -moz-transition-property: height;
10517 -moz-transition-duration: 500ms;
10495 -moz-transition-duration: 500ms;
10518 transition-property: height;
10496 transition-property: height;
10519 transition-duration: 500ms;
10497 transition-duration: 500ms;
10520 text-overflow: ellipsis;
10498 text-overflow: ellipsis;
10521 overflow: hidden;
10499 overflow: hidden;
10522 height: 80px;
10500 height: 80px;
10523 }
10501 }
10524 .tooltipbuttons {
10502 .tooltipbuttons {
10525 position: absolute;
10503 position: absolute;
10526 padding-right: 15px;
10504 padding-right: 15px;
10527 top: 0px;
10505 top: 0px;
10528 right: 0px;
10506 right: 0px;
10529 }
10507 }
10530 .tooltiptext {
10508 .tooltiptext {
10531 /*avoid the button to overlap on some docstring*/
10509 /*avoid the button to overlap on some docstring*/
10532 padding-right: 30px;
10510 padding-right: 30px;
10533 }
10511 }
10534 .ipython_tooltip {
10512 .ipython_tooltip {
10535 max-width: 700px;
10513 max-width: 700px;
10536 /*fade-in animation when inserted*/
10514 /*fade-in animation when inserted*/
10537 -webkit-animation: fadeOut 400ms;
10515 -webkit-animation: fadeOut 400ms;
10538 -moz-animation: fadeOut 400ms;
10516 -moz-animation: fadeOut 400ms;
10539 animation: fadeOut 400ms;
10517 animation: fadeOut 400ms;
10540 -webkit-animation: fadeIn 400ms;
10518 -webkit-animation: fadeIn 400ms;
10541 -moz-animation: fadeIn 400ms;
10519 -moz-animation: fadeIn 400ms;
10542 animation: fadeIn 400ms;
10520 animation: fadeIn 400ms;
10543 vertical-align: middle;
10521 vertical-align: middle;
10544 background-color: #f7f7f7;
10522 background-color: #f7f7f7;
10545 overflow: visible;
10523 overflow: visible;
10546 border: #ababab 1px solid;
10524 border: #ababab 1px solid;
10547 outline: none;
10525 outline: none;
10548 padding: 3px;
10526 padding: 3px;
10549 margin: 0px;
10527 margin: 0px;
10550 padding-left: 7px;
10528 padding-left: 7px;
10551 font-family: monospace;
10529 font-family: monospace;
10552 min-height: 50px;
10530 min-height: 50px;
10553 -moz-box-shadow: 0px 6px 10px -1px #adadad;
10531 -moz-box-shadow: 0px 6px 10px -1px #adadad;
10554 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10532 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10555 box-shadow: 0px 6px 10px -1px #adadad;
10533 box-shadow: 0px 6px 10px -1px #adadad;
10556 border-radius: 4px;
10534 border-radius: 4px;
10557 position: absolute;
10535 position: absolute;
10558 z-index: 1000;
10536 z-index: 1000;
10559 }
10537 }
10560 .ipython_tooltip a {
10538 .ipython_tooltip a {
10561 float: right;
10539 float: right;
10562 }
10540 }
10563 .ipython_tooltip .tooltiptext pre {
10541 .ipython_tooltip .tooltiptext pre {
10564 border: 0;
10542 border: 0;
10565 border-radius: 0;
10543 border-radius: 0;
10566 font-size: 100%;
10544 font-size: 100%;
10567 background-color: #f7f7f7;
10545 background-color: #f7f7f7;
10568 }
10546 }
10569 .pretooltiparrow {
10547 .pretooltiparrow {
10570 left: 0px;
10548 left: 0px;
10571 margin: 0px;
10549 margin: 0px;
10572 top: -16px;
10550 top: -16px;
10573 width: 40px;
10551 width: 40px;
10574 height: 16px;
10552 height: 16px;
10575 overflow: hidden;
10553 overflow: hidden;
10576 position: absolute;
10554 position: absolute;
10577 }
10555 }
10578 .pretooltiparrow:before {
10556 .pretooltiparrow:before {
10579 background-color: #f7f7f7;
10557 background-color: #f7f7f7;
10580 border: 1px #ababab solid;
10558 border: 1px #ababab solid;
10581 z-index: 11;
10559 z-index: 11;
10582 content: "";
10560 content: "";
10583 position: absolute;
10561 position: absolute;
10584 left: 15px;
10562 left: 15px;
10585 top: 10px;
10563 top: 10px;
10586 width: 25px;
10564 width: 25px;
10587 height: 25px;
10565 height: 25px;
10588 -webkit-transform: rotate(45deg);
10566 -webkit-transform: rotate(45deg);
10589 -moz-transform: rotate(45deg);
10567 -moz-transform: rotate(45deg);
10590 -ms-transform: rotate(45deg);
10568 -ms-transform: rotate(45deg);
10591 -o-transform: rotate(45deg);
10569 -o-transform: rotate(45deg);
10592 }
10570 }
10593 .terminal {
10571 .terminal {
10594 float: left;
10572 float: left;
10595 border: black solid 5px;
10573 border: black solid 5px;
10596 font-family: "DejaVu Sans Mono", "Liberation Mono", monospace;
10574 font-family: "DejaVu Sans Mono", "Liberation Mono", monospace;
10597 font-size: 11px;
10575 font-size: 11px;
10598 color: white;
10576 color: white;
10599 background: black;
10577 background: black;
10600 }
10578 }
10601 .terminal-cursor {
10579 .terminal-cursor {
10602 color: black;
10580 color: black;
10603 background: white;
10581 background: white;
10604 }
10582 }
10605 #terminado-container {
10583 #terminado-container {
10606 margin: 8px;
10584 margin: 8px;
10607 }
10585 }
10608 /*# sourceMappingURL=../style/style.min.css.map */ No newline at end of file
10586 /*# sourceMappingURL=../style/style.min.css.map */
General Comments 0
You need to be logged in to leave comments. Login now