##// 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 1 // Copyright (c) IPython Development Team.
2 2 // Distributed under the terms of the Modified BSD License.
3 3
4 4 define([
5 5 'base/js/namespace',
6 6 'jquery',
7 7 'codemirror/lib/codemirror',
8 // silently upgrades CodeMirror
9 'codemirror/mode/meta',
8 10 ], function(IPython, $, CodeMirror){
9 11 "use strict";
10 12
11 13 IPython.load_extensions = function () {
12 14 // load one or more IPython notebook extensions with requirejs
13 15
14 16 var extensions = [];
15 17 var extension_names = arguments;
16 18 for (var i = 0; i < extension_names.length; i++) {
17 19 extensions.push("nbextensions/" + arguments[i]);
18 20 }
19 21
20 22 require(extensions,
21 23 function () {
22 24 for (var i = 0; i < arguments.length; i++) {
23 25 var ext = arguments[i];
24 26 var ext_name = extension_names[i];
25 27 // success callback
26 28 console.log("Loaded extension: " + ext_name);
27 29 if (ext && ext.load_ipython_extension !== undefined) {
28 30 ext.load_ipython_extension();
29 31 }
30 32 }
31 33 },
32 34 function (err) {
33 35 // failure callback
34 36 console.log("Failed to load extension(s):", err.requireModules, err);
35 37 }
36 38 );
37 39 };
38 40
39 41 //============================================================================
40 42 // Cross-browser RegEx Split
41 43 //============================================================================
42 44
43 45 // This code has been MODIFIED from the code licensed below to not replace the
44 46 // default browser split. The license is reproduced here.
45 47
46 48 // see http://blog.stevenlevithan.com/archives/cross-browser-split for more info:
47 49 /*!
48 50 * Cross-Browser Split 1.1.1
49 51 * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
50 52 * Available under the MIT License
51 53 * ECMAScript compliant, uniform cross-browser split method
52 54 */
53 55
54 56 /**
55 57 * Splits a string into an array of strings using a regex or string
56 58 * separator. Matches of the separator are not included in the result array.
57 59 * However, if `separator` is a regex that contains capturing groups,
58 60 * backreferences are spliced into the result each time `separator` is
59 61 * matched. Fixes browser bugs compared to the native
60 62 * `String.prototype.split` and can be used reliably cross-browser.
61 63 * @param {String} str String to split.
62 64 * @param {RegExp|String} separator Regex or string to use for separating
63 65 * the string.
64 66 * @param {Number} [limit] Maximum number of items to include in the result
65 67 * array.
66 68 * @returns {Array} Array of substrings.
67 69 * @example
68 70 *
69 71 * // Basic use
70 72 * regex_split('a b c d', ' ');
71 73 * // -> ['a', 'b', 'c', 'd']
72 74 *
73 75 * // With limit
74 76 * regex_split('a b c d', ' ', 2);
75 77 * // -> ['a', 'b']
76 78 *
77 79 * // Backreferences in result array
78 80 * regex_split('..word1 word2..', /([a-z]+)(\d+)/i);
79 81 * // -> ['..', 'word', '1', ' ', 'word', '2', '..']
80 82 */
81 83 var regex_split = function (str, separator, limit) {
82 84 // If `separator` is not a regex, use `split`
83 85 if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
84 86 return split.call(str, separator, limit);
85 87 }
86 88 var output = [],
87 89 flags = (separator.ignoreCase ? "i" : "") +
88 90 (separator.multiline ? "m" : "") +
89 91 (separator.extended ? "x" : "") + // Proposed for ES6
90 92 (separator.sticky ? "y" : ""), // Firefox 3+
91 93 lastLastIndex = 0,
92 94 // Make `global` and avoid `lastIndex` issues by working with a copy
93 95 separator = new RegExp(separator.source, flags + "g"),
94 96 separator2, match, lastIndex, lastLength;
95 97 str += ""; // Type-convert
96 98
97 99 var compliantExecNpcg = typeof(/()??/.exec("")[1]) === "undefined";
98 100 if (!compliantExecNpcg) {
99 101 // Doesn't need flags gy, but they don't hurt
100 102 separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
101 103 }
102 104 /* Values for `limit`, per the spec:
103 105 * If undefined: 4294967295 // Math.pow(2, 32) - 1
104 106 * If 0, Infinity, or NaN: 0
105 107 * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
106 108 * If negative number: 4294967296 - Math.floor(Math.abs(limit))
107 109 * If other: Type-convert, then use the above rules
108 110 */
109 111 limit = typeof(limit) === "undefined" ?
110 112 -1 >>> 0 : // Math.pow(2, 32) - 1
111 113 limit >>> 0; // ToUint32(limit)
112 114 while (match = separator.exec(str)) {
113 115 // `separator.lastIndex` is not reliable cross-browser
114 116 lastIndex = match.index + match[0].length;
115 117 if (lastIndex > lastLastIndex) {
116 118 output.push(str.slice(lastLastIndex, match.index));
117 119 // Fix browsers whose `exec` methods don't consistently return `undefined` for
118 120 // nonparticipating capturing groups
119 121 if (!compliantExecNpcg && match.length > 1) {
120 122 match[0].replace(separator2, function () {
121 123 for (var i = 1; i < arguments.length - 2; i++) {
122 124 if (typeof(arguments[i]) === "undefined") {
123 125 match[i] = undefined;
124 126 }
125 127 }
126 128 });
127 129 }
128 130 if (match.length > 1 && match.index < str.length) {
129 131 Array.prototype.push.apply(output, match.slice(1));
130 132 }
131 133 lastLength = match[0].length;
132 134 lastLastIndex = lastIndex;
133 135 if (output.length >= limit) {
134 136 break;
135 137 }
136 138 }
137 139 if (separator.lastIndex === match.index) {
138 140 separator.lastIndex++; // Avoid an infinite loop
139 141 }
140 142 }
141 143 if (lastLastIndex === str.length) {
142 144 if (lastLength || !separator.test("")) {
143 145 output.push("");
144 146 }
145 147 } else {
146 148 output.push(str.slice(lastLastIndex));
147 149 }
148 150 return output.length > limit ? output.slice(0, limit) : output;
149 151 };
150 152
151 153 //============================================================================
152 154 // End contributed Cross-browser RegEx Split
153 155 //============================================================================
154 156
155 157
156 158 var uuid = function () {
157 159 /**
158 160 * http://www.ietf.org/rfc/rfc4122.txt
159 161 */
160 162 var s = [];
161 163 var hexDigits = "0123456789ABCDEF";
162 164 for (var i = 0; i < 32; i++) {
163 165 s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
164 166 }
165 167 s[12] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
166 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 170 var uuid = s.join("");
169 171 return uuid;
170 172 };
171 173
172 174
173 175 //Fix raw text to parse correctly in crazy XML
174 176 function xmlencode(string) {
175 177 return string.replace(/\&/g,'&'+'amp;')
176 178 .replace(/</g,'&'+'lt;')
177 179 .replace(/>/g,'&'+'gt;')
178 180 .replace(/\'/g,'&'+'apos;')
179 181 .replace(/\"/g,'&'+'quot;')
180 182 .replace(/`/g,'&'+'#96;');
181 183 }
182 184
183 185
184 186 //Map from terminal commands to CSS classes
185 187 var ansi_colormap = {
186 188 "01":"ansibold",
187 189
188 190 "30":"ansiblack",
189 191 "31":"ansired",
190 192 "32":"ansigreen",
191 193 "33":"ansiyellow",
192 194 "34":"ansiblue",
193 195 "35":"ansipurple",
194 196 "36":"ansicyan",
195 197 "37":"ansigray",
196 198
197 199 "40":"ansibgblack",
198 200 "41":"ansibgred",
199 201 "42":"ansibggreen",
200 202 "43":"ansibgyellow",
201 203 "44":"ansibgblue",
202 204 "45":"ansibgpurple",
203 205 "46":"ansibgcyan",
204 206 "47":"ansibggray"
205 207 };
206 208
207 209 function _process_numbers(attrs, numbers) {
208 210 // process ansi escapes
209 211 var n = numbers.shift();
210 212 if (ansi_colormap[n]) {
211 213 if ( ! attrs["class"] ) {
212 214 attrs["class"] = ansi_colormap[n];
213 215 } else {
214 216 attrs["class"] += " " + ansi_colormap[n];
215 217 }
216 218 } else if (n == "38" || n == "48") {
217 219 // VT100 256 color or 24 bit RGB
218 220 if (numbers.length < 2) {
219 221 console.log("Not enough fields for VT100 color", numbers);
220 222 return;
221 223 }
222 224
223 225 var index_or_rgb = numbers.shift();
224 226 var r,g,b;
225 227 if (index_or_rgb == "5") {
226 228 // 256 color
227 229 var idx = parseInt(numbers.shift());
228 230 if (idx < 16) {
229 231 // indexed ANSI
230 232 // ignore bright / non-bright distinction
231 233 idx = idx % 8;
232 234 var ansiclass = ansi_colormap[n[0] + (idx % 8).toString()];
233 235 if ( ! attrs["class"] ) {
234 236 attrs["class"] = ansiclass;
235 237 } else {
236 238 attrs["class"] += " " + ansiclass;
237 239 }
238 240 return;
239 241 } else if (idx < 232) {
240 242 // 216 color 6x6x6 RGB
241 243 idx = idx - 16;
242 244 b = idx % 6;
243 245 g = Math.floor(idx / 6) % 6;
244 246 r = Math.floor(idx / 36) % 6;
245 247 // convert to rgb
246 248 r = (r * 51);
247 249 g = (g * 51);
248 250 b = (b * 51);
249 251 } else {
250 252 // grayscale
251 253 idx = idx - 231;
252 254 // it's 1-24 and should *not* include black or white,
253 255 // so a 26 point scale
254 256 r = g = b = Math.floor(idx * 256 / 26);
255 257 }
256 258 } else if (index_or_rgb == "2") {
257 259 // Simple 24 bit RGB
258 260 if (numbers.length > 3) {
259 261 console.log("Not enough fields for RGB", numbers);
260 262 return;
261 263 }
262 264 r = numbers.shift();
263 265 g = numbers.shift();
264 266 b = numbers.shift();
265 267 } else {
266 268 console.log("unrecognized control", numbers);
267 269 return;
268 270 }
269 271 if (r !== undefined) {
270 272 // apply the rgb color
271 273 var line;
272 274 if (n == "38") {
273 275 line = "color: ";
274 276 } else {
275 277 line = "background-color: ";
276 278 }
277 279 line = line + "rgb(" + r + "," + g + "," + b + ");";
278 280 if ( !attrs.style ) {
279 281 attrs.style = line;
280 282 } else {
281 283 attrs.style += " " + line;
282 284 }
283 285 }
284 286 }
285 287 }
286 288
287 289 function ansispan(str) {
288 290 // ansispan function adapted from github.com/mmalecki/ansispan (MIT License)
289 291 // regular ansi escapes (using the table above)
290 292 var is_open = false;
291 293 return str.replace(/\033\[(0?[01]|22|39)?([;\d]+)?m/g, function(match, prefix, pattern) {
292 294 if (!pattern) {
293 295 // [(01|22|39|)m close spans
294 296 if (is_open) {
295 297 is_open = false;
296 298 return "</span>";
297 299 } else {
298 300 return "";
299 301 }
300 302 } else {
301 303 is_open = true;
302 304
303 305 // consume sequence of color escapes
304 306 var numbers = pattern.match(/\d+/g);
305 307 var attrs = {};
306 308 while (numbers.length > 0) {
307 309 _process_numbers(attrs, numbers);
308 310 }
309 311
310 312 var span = "<span ";
311 313 for (var attr in attrs) {
312 314 var value = attrs[attr];
313 315 span = span + " " + attr + '="' + attrs[attr] + '"';
314 316 }
315 317 return span + ">";
316 318 }
317 319 });
318 320 }
319 321
320 322 // Transform ANSI color escape codes into HTML <span> tags with css
321 323 // classes listed in the above ansi_colormap object. The actual color used
322 324 // are set in the css file.
323 325 function fixConsole(txt) {
324 326 txt = xmlencode(txt);
325 327 var re = /\033\[([\dA-Fa-f;]*?)m/;
326 328 var opened = false;
327 329 var cmds = [];
328 330 var opener = "";
329 331 var closer = "";
330 332
331 333 // Strip all ANSI codes that are not color related. Matches
332 334 // all ANSI codes that do not end with "m".
333 335 var ignored_re = /(?=(\033\[[\d;=]*[a-ln-zA-Z]{1}))\1(?!m)/g;
334 336 txt = txt.replace(ignored_re, "");
335 337
336 338 // color ansi codes
337 339 txt = ansispan(txt);
338 340 return txt;
339 341 }
340 342
341 343 // Remove chunks that should be overridden by the effect of
342 344 // carriage return characters
343 345 function fixCarriageReturn(txt) {
344 346 var tmp = txt;
345 347 do {
346 348 txt = tmp;
347 349 tmp = txt.replace(/\r+\n/gm, '\n'); // \r followed by \n --> newline
348 350 tmp = tmp.replace(/^.*\r+/gm, ''); // Other \r --> clear line
349 351 } while (tmp.length < txt.length);
350 352 return txt;
351 353 }
352 354
353 355 // Locate any URLs and convert them to a anchor tag
354 356 function autoLinkUrls(txt) {
355 357 return txt.replace(/(^|\s)(https?|ftp)(:[^'">\s]+)/gi,
356 358 "$1<a target=\"_blank\" href=\"$2$3\">$2$3</a>");
357 359 }
358 360
359 361 var points_to_pixels = function (points) {
360 362 /**
361 363 * A reasonably good way of converting between points and pixels.
362 364 */
363 365 var test = $('<div style="display: none; width: 10000pt; padding:0; border:0;"></div>');
364 366 $(body).append(test);
365 367 var pixel_per_point = test.width()/10000;
366 368 test.remove();
367 369 return Math.floor(points*pixel_per_point);
368 370 };
369 371
370 372 var always_new = function (constructor) {
371 373 /**
372 374 * wrapper around contructor to avoid requiring `var a = new constructor()`
373 375 * useful for passing constructors as callbacks,
374 376 * not for programmer laziness.
375 377 * from http://programmers.stackexchange.com/questions/118798
376 378 */
377 379 return function () {
378 380 var obj = Object.create(constructor.prototype);
379 381 constructor.apply(obj, arguments);
380 382 return obj;
381 383 };
382 384 };
383 385
384 386 var url_path_join = function () {
385 387 /**
386 388 * join a sequence of url components with '/'
387 389 */
388 390 var url = '';
389 391 for (var i = 0; i < arguments.length; i++) {
390 392 if (arguments[i] === '') {
391 393 continue;
392 394 }
393 395 if (url.length > 0 && url[url.length-1] != '/') {
394 396 url = url + '/' + arguments[i];
395 397 } else {
396 398 url = url + arguments[i];
397 399 }
398 400 }
399 401 url = url.replace(/\/\/+/, '/');
400 402 return url;
401 403 };
402 404
403 405 var url_path_split = function (path) {
404 406 /**
405 407 * Like os.path.split for URLs.
406 408 * Always returns two strings, the directory path and the base filename
407 409 */
408 410
409 411 var idx = path.lastIndexOf('/');
410 412 if (idx === -1) {
411 413 return ['', path];
412 414 } else {
413 415 return [ path.slice(0, idx), path.slice(idx + 1) ];
414 416 }
415 417 };
416 418
417 419 var parse_url = function (url) {
418 420 /**
419 421 * an `a` element with an href allows attr-access to the parsed segments of a URL
420 422 * a = parse_url("http://localhost:8888/path/name#hash")
421 423 * a.protocol = "http:"
422 424 * a.host = "localhost:8888"
423 425 * a.hostname = "localhost"
424 426 * a.port = 8888
425 427 * a.pathname = "/path/name"
426 428 * a.hash = "#hash"
427 429 */
428 430 var a = document.createElement("a");
429 431 a.href = url;
430 432 return a;
431 433 };
432 434
433 435 var encode_uri_components = function (uri) {
434 436 /**
435 437 * encode just the components of a multi-segment uri,
436 438 * leaving '/' separators
437 439 */
438 440 return uri.split('/').map(encodeURIComponent).join('/');
439 441 };
440 442
441 443 var url_join_encode = function () {
442 444 /**
443 445 * join a sequence of url components with '/',
444 446 * encoding each component with encodeURIComponent
445 447 */
446 448 return encode_uri_components(url_path_join.apply(null, arguments));
447 449 };
448 450
449 451
450 452 var splitext = function (filename) {
451 453 /**
452 454 * mimic Python os.path.splitext
453 455 * Returns ['base', '.ext']
454 456 */
455 457 var idx = filename.lastIndexOf('.');
456 458 if (idx > 0) {
457 459 return [filename.slice(0, idx), filename.slice(idx)];
458 460 } else {
459 461 return [filename, ''];
460 462 }
461 463 };
462 464
463 465
464 466 var escape_html = function (text) {
465 467 /**
466 468 * escape text to HTML
467 469 */
468 470 return $("<div/>").text(text).html();
469 471 };
470 472
471 473
472 474 var get_body_data = function(key) {
473 475 /**
474 476 * get a url-encoded item from body.data and decode it
475 477 * we should never have any encoded URLs anywhere else in code
476 478 * until we are building an actual request
477 479 */
478 480 return decodeURIComponent($('body').data(key));
479 481 };
480 482
481 483 var to_absolute_cursor_pos = function (cm, cursor) {
482 484 /**
483 485 * get the absolute cursor position from CodeMirror's col, ch
484 486 */
485 487 if (!cursor) {
486 488 cursor = cm.getCursor();
487 489 }
488 490 var cursor_pos = cursor.ch;
489 491 for (var i = 0; i < cursor.line; i++) {
490 492 cursor_pos += cm.getLine(i).length + 1;
491 493 }
492 494 return cursor_pos;
493 495 };
494 496
495 497 var from_absolute_cursor_pos = function (cm, cursor_pos) {
496 498 /**
497 499 * turn absolute cursor postion into CodeMirror col, ch cursor
498 500 */
499 501 var i, line;
500 502 var offset = 0;
501 503 for (i = 0, line=cm.getLine(i); line !== undefined; i++, line=cm.getLine(i)) {
502 504 if (offset + line.length < cursor_pos) {
503 505 offset += line.length + 1;
504 506 } else {
505 507 return {
506 508 line : i,
507 509 ch : cursor_pos - offset,
508 510 };
509 511 }
510 512 }
511 513 // reached end, return endpoint
512 514 return {
513 515 ch : line.length - 1,
514 516 line : i - 1,
515 517 };
516 518 };
517 519
518 520 // http://stackoverflow.com/questions/2400935/browser-detection-in-javascript
519 521 var browser = (function() {
520 522 if (typeof navigator === 'undefined') {
521 523 // navigator undefined in node
522 524 return 'None';
523 525 }
524 526 var N= navigator.appName, ua= navigator.userAgent, tem;
525 527 var M= ua.match(/(opera|chrome|safari|firefox|msie)\/?\s*(\.?\d+(\.\d+)*)/i);
526 528 if (M && (tem= ua.match(/version\/([\.\d]+)/i)) !== null) M[2]= tem[1];
527 529 M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
528 530 return M;
529 531 })();
530 532
531 533 // http://stackoverflow.com/questions/11219582/how-to-detect-my-browser-version-and-operating-system-using-javascript
532 534 var platform = (function () {
533 535 if (typeof navigator === 'undefined') {
534 536 // navigator undefined in node
535 537 return 'None';
536 538 }
537 539 var OSName="None";
538 540 if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
539 541 if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
540 542 if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
541 543 if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";
542 544 return OSName;
543 545 })();
544 546
545 547 var get_url_param = function (name) {
546 548 // get a URL parameter. I cannot believe we actually need this.
547 549 // Based on http://stackoverflow.com/a/25359264/938949
548 550 var match = new RegExp('[\?&]' + name + '=([^&]*)').exec(window.location.search);
549 551 if (match){
550 552 return decodeURIComponent(match[1] || '');
551 553 }
552 554 };
553 555
554 556 var is_or_has = function (a, b) {
555 557 /**
556 558 * Is b a child of a or a itself?
557 559 */
558 560 return a.has(b).length !==0 || a.is(b);
559 561 };
560 562
561 563 var is_focused = function (e) {
562 564 /**
563 565 * Is element e, or one of its children focused?
564 566 */
565 567 e = $(e);
566 568 var target = $(document.activeElement);
567 569 if (target.length > 0) {
568 570 if (is_or_has(e, target)) {
569 571 return true;
570 572 } else {
571 573 return false;
572 574 }
573 575 } else {
574 576 return false;
575 577 }
576 578 };
577 579
578 580 var mergeopt = function(_class, options, overwrite){
579 581 options = options || {};
580 582 overwrite = overwrite || {};
581 583 return $.extend(true, {}, _class.options_default, options, overwrite);
582 584 };
583 585
584 586 var ajax_error_msg = function (jqXHR) {
585 587 /**
586 588 * Return a JSON error message if there is one,
587 589 * otherwise the basic HTTP status text.
588 590 */
589 591 if (jqXHR.responseJSON && jqXHR.responseJSON.traceback) {
590 592 return jqXHR.responseJSON.traceback;
591 593 } else if (jqXHR.responseJSON && jqXHR.responseJSON.message) {
592 594 return jqXHR.responseJSON.message;
593 595 } else {
594 596 return jqXHR.statusText;
595 597 }
596 598 };
597 599 var log_ajax_error = function (jqXHR, status, error) {
598 600 /**
599 601 * log ajax failures with informative messages
600 602 */
601 603 var msg = "API request failed (" + jqXHR.status + "): ";
602 604 console.log(jqXHR);
603 605 msg += ajax_error_msg(jqXHR);
604 606 console.log(msg);
605 607 };
606
608
607 609 var requireCodeMirrorMode = function (mode, callback, errback) {
608 /**
609 * load a mode with requirejs
610 /**
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;
612 if (CodeMirror.modes.hasOwnProperty(mode)) {
613 callback(CodeMirror.modes.mode);
615
616 var modename = (typeof mode == "string") ? 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 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 634 require([
617 635 // might want to use CodeMirror.modeURL here
618 ['codemirror/mode', mode, mode].join('/'),
619 ], callback, errback
636 ['codemirror/mode', info.mode, info.mode].join('/'),
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 645 /** Error type for wrapped XHR errors. */
624 646 var XHR_ERROR = 'XhrError';
625 647
626 648 /**
627 649 * Wraps an AJAX error as an Error object.
628 650 */
629 651 var wrap_ajax_error = function (jqXHR, status, error) {
630 652 var wrapped_error = new Error(ajax_error_msg(jqXHR));
631 653 wrapped_error.name = XHR_ERROR;
632 654 // provide xhr response
633 655 wrapped_error.xhr = jqXHR;
634 656 wrapped_error.xhr_status = status;
635 657 wrapped_error.xhr_error = error;
636 658 return wrapped_error;
637 659 };
638 660
639 661 var promising_ajax = function(url, settings) {
640 662 /**
641 663 * Like $.ajax, but returning an ES6 promise. success and error settings
642 664 * will be ignored.
643 665 */
644 666 settings = settings || {};
645 667 return new Promise(function(resolve, reject) {
646 668 settings.success = function(data, status, jqXHR) {
647 669 resolve(data);
648 670 };
649 671 settings.error = function(jqXHR, status, error) {
650 672 log_ajax_error(jqXHR, status, error);
651 673 reject(wrap_ajax_error(jqXHR, status, error));
652 674 };
653 675 $.ajax(url, settings);
654 676 });
655 677 };
656 678
657 679 var WrappedError = function(message, error){
658 680 /**
659 681 * Wrappable Error class
660 682 *
661 683 * The Error class doesn't actually act on `this`. Instead it always
662 684 * returns a new instance of Error. Here we capture that instance so we
663 685 * can apply it's properties to `this`.
664 686 */
665 687 var tmp = Error.apply(this, [message]);
666 688
667 689 // Copy the properties of the error over to this.
668 690 var properties = Object.getOwnPropertyNames(tmp);
669 691 for (var i = 0; i < properties.length; i++) {
670 692 this[properties[i]] = tmp[properties[i]];
671 693 }
672 694
673 695 // Keep a stack of the original error messages.
674 696 if (error instanceof WrappedError) {
675 697 this.error_stack = error.error_stack;
676 698 } else {
677 699 this.error_stack = [error];
678 700 }
679 701 this.error_stack.push(tmp);
680 702
681 703 return this;
682 704 };
683 705
684 706 WrappedError.prototype = Object.create(Error.prototype, {});
685 707
686 708
687 709 var load_class = function(class_name, module_name, registry) {
688 710 /**
689 711 * Tries to load a class
690 712 *
691 713 * Tries to load a class from a module using require.js, if a module
692 714 * is specified, otherwise tries to load a class from the global
693 715 * registry, if the global registry is provided.
694 716 */
695 717 return new Promise(function(resolve, reject) {
696 718
697 719 // Try loading the view module using require.js
698 720 if (module_name) {
699 721 require([module_name], function(module) {
700 722 if (module[class_name] === undefined) {
701 723 reject(new Error('Class '+class_name+' not found in module '+module_name));
702 724 } else {
703 725 resolve(module[class_name]);
704 726 }
705 727 }, reject);
706 728 } else {
707 729 if (registry && registry[class_name]) {
708 730 resolve(registry[class_name]);
709 731 } else {
710 732 reject(new Error('Class '+class_name+' not found in registry '));
711 733 }
712 734 }
713 735 });
714 736 };
715 737
716 738 var resolve_promises_dict = function(d) {
717 739 /**
718 740 * Resolve a promiseful dictionary.
719 741 * Returns a single Promise.
720 742 */
721 743 var keys = Object.keys(d);
722 744 var values = [];
723 745 keys.forEach(function(key) {
724 746 values.push(d[key]);
725 747 });
726 748 return Promise.all(values).then(function(v) {
727 749 d = {};
728 750 for(var i=0; i<keys.length; i++) {
729 751 d[keys[i]] = v[i];
730 752 }
731 753 return d;
732 754 });
733 755 };
734 756
735 757 var WrappedError = function(message, error){
736 758 /**
737 759 * Wrappable Error class
738 760 *
739 761 * The Error class doesn't actually act on `this`. Instead it always
740 762 * returns a new instance of Error. Here we capture that instance so we
741 763 * can apply it's properties to `this`.
742 764 */
743 765 var tmp = Error.apply(this, [message]);
744 766
745 767 // Copy the properties of the error over to this.
746 768 var properties = Object.getOwnPropertyNames(tmp);
747 769 for (var i = 0; i < properties.length; i++) {
748 770 this[properties[i]] = tmp[properties[i]];
749 771 }
750 772
751 773 // Keep a stack of the original error messages.
752 774 if (error instanceof WrappedError) {
753 775 this.error_stack = error.error_stack;
754 776 } else {
755 777 this.error_stack = [error];
756 778 }
757 779 this.error_stack.push(tmp);
758 780
759 781 return this;
760 782 };
761 783
762 784 WrappedError.prototype = Object.create(Error.prototype, {});
763 785
764 786 var reject = function(message, log) {
765 787 /**
766 788 * Creates a wrappable Promise rejection function.
767 789 *
768 790 * Creates a function that returns a Promise.reject with a new WrappedError
769 791 * that has the provided message and wraps the original error that
770 792 * caused the promise to reject.
771 793 */
772 794 return function(error) {
773 795 var wrapped_error = new WrappedError(message, error);
774 796 if (log) console.error(wrapped_error);
775 797 return Promise.reject(wrapped_error);
776 798 };
777 799 };
778 800
779 801 var typeset = function(element, text) {
780 802 /**
781 803 * Apply MathJax rendering to an element, and optionally set its text
782 804 *
783 805 * If MathJax is not available, make no changes.
784 806 *
785 807 * Returns the output any number of typeset elements, or undefined if
786 808 * MathJax was not available.
787 809 *
788 810 * Parameters
789 811 * ----------
790 812 * element: Node, NodeList, or jQuery selection
791 813 * text: option string
792 814 */
793 815 if(!window.MathJax){
794 816 return;
795 817 }
796 818 var $el = element.jquery ? element : $(element);
797 819 if(arguments.length > 1){
798 820 $el.text(text);
799 821 }
800 822 return $el.map(function(){
801 823 // MathJax takes a DOM node: $.map makes `this` the context
802 824 return MathJax.Hub.Queue(["Typeset", MathJax.Hub, this]);
803 825 });
804 826 };
805 827
806 828 var utils = {
807 829 regex_split : regex_split,
808 830 uuid : uuid,
809 831 fixConsole : fixConsole,
810 832 fixCarriageReturn : fixCarriageReturn,
811 833 autoLinkUrls : autoLinkUrls,
812 834 points_to_pixels : points_to_pixels,
813 835 get_body_data : get_body_data,
814 836 parse_url : parse_url,
815 837 url_path_split : url_path_split,
816 838 url_path_join : url_path_join,
817 839 url_join_encode : url_join_encode,
818 840 encode_uri_components : encode_uri_components,
819 841 splitext : splitext,
820 842 escape_html : escape_html,
821 843 always_new : always_new,
822 844 to_absolute_cursor_pos : to_absolute_cursor_pos,
823 845 from_absolute_cursor_pos : from_absolute_cursor_pos,
824 846 browser : browser,
825 847 platform: platform,
826 848 get_url_param: get_url_param,
827 849 is_or_has : is_or_has,
828 850 is_focused : is_focused,
829 851 mergeopt: mergeopt,
830 852 ajax_error_msg : ajax_error_msg,
831 853 log_ajax_error : log_ajax_error,
832 854 requireCodeMirrorMode : requireCodeMirrorMode,
833 855 XHR_ERROR : XHR_ERROR,
834 856 wrap_ajax_error : wrap_ajax_error,
835 857 promising_ajax : promising_ajax,
836 858 WrappedError: WrappedError,
837 859 load_class: load_class,
838 860 resolve_promises_dict: resolve_promises_dict,
839 861 reject: reject,
840 862 typeset: typeset,
841 863 };
842 864
843 865 // Backwards compatability.
844 866 IPython.utils = utils;
845 867
846 868 return utils;
847 869 });
@@ -1,78 +1,76 b''
1 1 // Copyright (c) IPython Development Team.
2 2 // Distributed under the terms of the Modified BSD License.
3 3
4 4 define([
5 5 'jquery',
6 6 'base/js/utils',
7 7 'codemirror/lib/codemirror',
8 8 'codemirror/mode/meta',
9 9 'codemirror/addon/search/search'
10 10 ],
11 11 function($,
12 12 utils,
13 13 CodeMirror
14 14 ) {
15 15 var Editor = function(selector, options) {
16 16 this.selector = selector;
17 17 this.contents = options.contents;
18 18 this.events = options.events;
19 19 this.base_url = options.base_url;
20 20 this.file_path = options.file_path;
21 21
22 22 this.codemirror = CodeMirror($(this.selector)[0]);
23 23
24 24 // It appears we have to set commands on the CodeMirror class, not the
25 25 // instance. I'd like to be wrong, but since there should only be one CM
26 26 // instance on the page, this is good enough for now.
27 27 CodeMirror.commands.save = $.proxy(this.save, this);
28 28
29 29 this.save_enabled = false;
30 30 };
31 31
32 32 Editor.prototype.load = function() {
33 33 var that = this;
34 34 var cm = this.codemirror;
35 35 this.contents.get(this.file_path, {type: 'file', format: 'text'})
36 36 .then(function(model) {
37 37 cm.setValue(model.content);
38 38
39 39 // Setting the file's initial value creates a history entry,
40 40 // which we don't want.
41 41 cm.clearHistory();
42 42
43 43 // Find and load the highlighting mode
44 var modeinfo = CodeMirror.findModeByMIME(model.mimetype);
45 if (modeinfo) {
46 utils.requireCodeMirrorMode(modeinfo.mode, function() {
47 cm.setOption('mode', modeinfo.mode);
48 });
49 }
44 utils.requireCodeMirrorMode(model.mimetype, function(spec) {
45 var mode = CodeMirror.getMode({}, spec);
46 cm.setOption('mode', mode);
47 });
50 48 that.save_enabled = true;
51 49 },
52 50 function(error) {
53 51 cm.setValue("Error! " + error.message +
54 52 "\nSaving disabled.");
55 53 that.save_enabled = false;
56 54 }
57 55 );
58 56 };
59 57
60 58 Editor.prototype.save = function() {
61 59 if (!this.save_enabled) {
62 60 console.log("Not saving, save disabled");
63 61 return;
64 62 }
65 63 var model = {
66 64 path: this.file_path,
67 65 type: 'file',
68 66 format: 'text',
69 67 content: this.codemirror.getValue(),
70 68 };
71 69 var that = this;
72 70 this.contents.save(this.file_path, model).then(function() {
73 71 that.events.trigger("save_succeeded.TextEditor");
74 72 });
75 73 };
76 74
77 75 return {Editor: Editor};
78 76 });
@@ -1,678 +1,678 b''
1 1 // Copyright (c) IPython Development Team.
2 2 // Distributed under the terms of the Modified BSD License.
3 3
4 4 /**
5 5 *
6 6 *
7 7 * @module cell
8 8 * @namespace cell
9 9 * @class Cell
10 10 */
11 11
12 12
13 13 define([
14 14 'base/js/namespace',
15 15 'jquery',
16 16 'base/js/utils',
17 17 'codemirror/lib/codemirror',
18 18 'codemirror/addon/edit/matchbrackets',
19 19 'codemirror/addon/edit/closebrackets',
20 20 'codemirror/addon/comment/comment'
21 21 ], function(IPython, $, utils, CodeMirror, cm_match, cm_closeb, cm_comment) {
22 22 // TODO: remove IPython dependency here
23 23 "use strict";
24 24
25 25 var Cell = function (options) {
26 26 /* Constructor
27 27 *
28 28 * The Base `Cell` class from which to inherit.
29 29 * @constructor
30 30 * @param:
31 31 * options: dictionary
32 32 * Dictionary of keyword arguments.
33 33 * events: $(Events) instance
34 34 * config: dictionary
35 35 * keyboard_manager: KeyboardManager instance
36 36 */
37 37 options = options || {};
38 38 this.keyboard_manager = options.keyboard_manager;
39 39 this.events = options.events;
40 40 var config = utils.mergeopt(Cell, options.config);
41 41 // superclass default overwrite our default
42 42
43 43 this.placeholder = config.placeholder || '';
44 44 this.read_only = config.cm_config.readOnly;
45 45 this.selected = false;
46 46 this.rendered = false;
47 47 this.mode = 'command';
48 48
49 49 // Metadata property
50 50 var that = this;
51 51 this._metadata = {};
52 52 Object.defineProperty(this, 'metadata', {
53 53 get: function() { return that._metadata; },
54 54 set: function(value) {
55 55 that._metadata = value;
56 56 if (that.celltoolbar) {
57 57 that.celltoolbar.rebuild();
58 58 }
59 59 }
60 60 });
61 61
62 62 // load this from metadata later ?
63 63 this.user_highlight = 'auto';
64 64 this.cm_config = config.cm_config;
65 65 this.cell_id = utils.uuid();
66 66 this._options = config;
67 67
68 68 // For JS VM engines optimization, attributes should be all set (even
69 69 // to null) in the constructor, and if possible, if different subclass
70 70 // have new attributes with same name, they should be created in the
71 71 // same order. Easiest is to create and set to null in parent class.
72 72
73 73 this.element = null;
74 74 this.cell_type = this.cell_type || null;
75 75 this.code_mirror = null;
76 76
77 77 this.create_element();
78 78 if (this.element !== null) {
79 79 this.element.data("cell", this);
80 80 this.bind_events();
81 81 this.init_classes();
82 82 }
83 83 };
84 84
85 85 Cell.options_default = {
86 86 cm_config : {
87 87 indentUnit : 4,
88 88 readOnly: false,
89 89 theme: "default",
90 90 extraKeys: {
91 91 "Cmd-Right":"goLineRight",
92 92 "End":"goLineRight",
93 93 "Cmd-Left":"goLineLeft"
94 94 }
95 95 }
96 96 };
97 97
98 98 // FIXME: Workaround CM Bug #332 (Safari segfault on drag)
99 99 // by disabling drag/drop altogether on Safari
100 100 // https://github.com/codemirror/CodeMirror/issues/332
101 101 if (utils.browser[0] == "Safari") {
102 102 Cell.options_default.cm_config.dragDrop = false;
103 103 }
104 104
105 105 /**
106 106 * Empty. Subclasses must implement create_element.
107 107 * This should contain all the code to create the DOM element in notebook
108 108 * and will be called by Base Class constructor.
109 109 * @method create_element
110 110 */
111 111 Cell.prototype.create_element = function () {
112 112 };
113 113
114 114 Cell.prototype.init_classes = function () {
115 115 /**
116 116 * Call after this.element exists to initialize the css classes
117 117 * related to selected, rendered and mode.
118 118 */
119 119 if (this.selected) {
120 120 this.element.addClass('selected');
121 121 } else {
122 122 this.element.addClass('unselected');
123 123 }
124 124 if (this.rendered) {
125 125 this.element.addClass('rendered');
126 126 } else {
127 127 this.element.addClass('unrendered');
128 128 }
129 129 if (this.mode === 'edit') {
130 130 this.element.addClass('edit_mode');
131 131 } else {
132 132 this.element.addClass('command_mode');
133 133 }
134 134 };
135 135
136 136 /**
137 137 * Subclasses can implement override bind_events.
138 138 * Be carefull to call the parent method when overwriting as it fires event.
139 139 * this will be triggerd after create_element in constructor.
140 140 * @method bind_events
141 141 */
142 142 Cell.prototype.bind_events = function () {
143 143 var that = this;
144 144 // We trigger events so that Cell doesn't have to depend on Notebook.
145 145 that.element.click(function (event) {
146 146 if (!that.selected) {
147 147 that.events.trigger('select.Cell', {'cell':that});
148 148 }
149 149 });
150 150 that.element.focusin(function (event) {
151 151 if (!that.selected) {
152 152 that.events.trigger('select.Cell', {'cell':that});
153 153 }
154 154 });
155 155 if (this.code_mirror) {
156 156 this.code_mirror.on("change", function(cm, change) {
157 157 that.events.trigger("set_dirty.Notebook", {value: true});
158 158 });
159 159 }
160 160 if (this.code_mirror) {
161 161 this.code_mirror.on('focus', function(cm, change) {
162 162 that.events.trigger('edit_mode.Cell', {cell: that});
163 163 });
164 164 }
165 165 if (this.code_mirror) {
166 166 this.code_mirror.on('blur', function(cm, change) {
167 167 that.events.trigger('command_mode.Cell', {cell: that});
168 168 });
169 169 }
170 170
171 171 this.element.dblclick(function () {
172 172 if (that.selected === false) {
173 173 this.events.trigger('select.Cell', {'cell':that});
174 174 }
175 175 var cont = that.unrender();
176 176 if (cont) {
177 177 that.focus_editor();
178 178 }
179 179 });
180 180 };
181 181
182 182 /**
183 183 * This method gets called in CodeMirror's onKeyDown/onKeyPress
184 184 * handlers and is used to provide custom key handling.
185 185 *
186 186 * To have custom handling, subclasses should override this method, but still call it
187 187 * in order to process the Edit mode keyboard shortcuts.
188 188 *
189 189 * @method handle_codemirror_keyevent
190 190 * @param {CodeMirror} editor - The codemirror instance bound to the cell
191 191 * @param {event} event - key press event which either should or should not be handled by CodeMirror
192 192 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
193 193 */
194 194 Cell.prototype.handle_codemirror_keyevent = function (editor, event) {
195 195 var shortcuts = this.keyboard_manager.edit_shortcuts;
196 196
197 197 var cur = editor.getCursor();
198 198 if((cur.line !== 0 || cur.ch !==0) && event.keyCode === 38){
199 199 event._ipkmIgnore = true;
200 200 }
201 201 var nLastLine = editor.lastLine();
202 202 if ((event.keyCode === 40) &&
203 203 ((cur.line !== nLastLine) ||
204 204 (cur.ch !== editor.getLineHandle(nLastLine).text.length))
205 205 ) {
206 206 event._ipkmIgnore = true;
207 207 }
208 208 // if this is an edit_shortcuts shortcut, the global keyboard/shortcut
209 209 // manager will handle it
210 210 if (shortcuts.handles(event)) {
211 211 return true;
212 212 }
213 213
214 214 return false;
215 215 };
216 216
217 217
218 218 /**
219 219 * Triger typsetting of math by mathjax on current cell element
220 220 * @method typeset
221 221 */
222 222 Cell.prototype.typeset = function () {
223 223 utils.typeset(this.element);
224 224 };
225 225
226 226 /**
227 227 * handle cell level logic when a cell is selected
228 228 * @method select
229 229 * @return is the action being taken
230 230 */
231 231 Cell.prototype.select = function () {
232 232 if (!this.selected) {
233 233 this.element.addClass('selected');
234 234 this.element.removeClass('unselected');
235 235 this.selected = true;
236 236 return true;
237 237 } else {
238 238 return false;
239 239 }
240 240 };
241 241
242 242 /**
243 243 * handle cell level logic when a cell is unselected
244 244 * @method unselect
245 245 * @return is the action being taken
246 246 */
247 247 Cell.prototype.unselect = function () {
248 248 if (this.selected) {
249 249 this.element.addClass('unselected');
250 250 this.element.removeClass('selected');
251 251 this.selected = false;
252 252 return true;
253 253 } else {
254 254 return false;
255 255 }
256 256 };
257 257
258 258 /**
259 259 * should be overritten by subclass
260 260 * @method execute
261 261 */
262 262 Cell.prototype.execute = function () {
263 263 return;
264 264 };
265 265
266 266 /**
267 267 * handle cell level logic when a cell is rendered
268 268 * @method render
269 269 * @return is the action being taken
270 270 */
271 271 Cell.prototype.render = function () {
272 272 if (!this.rendered) {
273 273 this.element.addClass('rendered');
274 274 this.element.removeClass('unrendered');
275 275 this.rendered = true;
276 276 return true;
277 277 } else {
278 278 return false;
279 279 }
280 280 };
281 281
282 282 /**
283 283 * handle cell level logic when a cell is unrendered
284 284 * @method unrender
285 285 * @return is the action being taken
286 286 */
287 287 Cell.prototype.unrender = function () {
288 288 if (this.rendered) {
289 289 this.element.addClass('unrendered');
290 290 this.element.removeClass('rendered');
291 291 this.rendered = false;
292 292 return true;
293 293 } else {
294 294 return false;
295 295 }
296 296 };
297 297
298 298 /**
299 299 * Delegates keyboard shortcut handling to either IPython keyboard
300 300 * manager when in command mode, or CodeMirror when in edit mode
301 301 *
302 302 * @method handle_keyevent
303 303 * @param {CodeMirror} editor - The codemirror instance bound to the cell
304 304 * @param {event} - key event to be handled
305 305 * @return {Boolean} `true` if CodeMirror should ignore the event, `false` Otherwise
306 306 */
307 307 Cell.prototype.handle_keyevent = function (editor, event) {
308 308 if (this.mode === 'command') {
309 309 return true;
310 310 } else if (this.mode === 'edit') {
311 311 return this.handle_codemirror_keyevent(editor, event);
312 312 }
313 313 };
314 314
315 315 /**
316 316 * @method at_top
317 317 * @return {Boolean}
318 318 */
319 319 Cell.prototype.at_top = function () {
320 320 var cm = this.code_mirror;
321 321 var cursor = cm.getCursor();
322 322 if (cursor.line === 0 && cursor.ch === 0) {
323 323 return true;
324 324 }
325 325 return false;
326 326 };
327 327
328 328 /**
329 329 * @method at_bottom
330 330 * @return {Boolean}
331 331 * */
332 332 Cell.prototype.at_bottom = function () {
333 333 var cm = this.code_mirror;
334 334 var cursor = cm.getCursor();
335 335 if (cursor.line === (cm.lineCount()-1) && cursor.ch === cm.getLine(cursor.line).length) {
336 336 return true;
337 337 }
338 338 return false;
339 339 };
340 340
341 341 /**
342 342 * enter the command mode for the cell
343 343 * @method command_mode
344 344 * @return is the action being taken
345 345 */
346 346 Cell.prototype.command_mode = function () {
347 347 if (this.mode !== 'command') {
348 348 this.element.addClass('command_mode');
349 349 this.element.removeClass('edit_mode');
350 350 this.mode = 'command';
351 351 return true;
352 352 } else {
353 353 return false;
354 354 }
355 355 };
356 356
357 357 /**
358 358 * enter the edit mode for the cell
359 359 * @method command_mode
360 360 * @return is the action being taken
361 361 */
362 362 Cell.prototype.edit_mode = function () {
363 363 if (this.mode !== 'edit') {
364 364 this.element.addClass('edit_mode');
365 365 this.element.removeClass('command_mode');
366 366 this.mode = 'edit';
367 367 return true;
368 368 } else {
369 369 return false;
370 370 }
371 371 };
372 372
373 373 /**
374 374 * Focus the cell in the DOM sense
375 375 * @method focus_cell
376 376 */
377 377 Cell.prototype.focus_cell = function () {
378 378 this.element.focus();
379 379 };
380 380
381 381 /**
382 382 * Focus the editor area so a user can type
383 383 *
384 384 * NOTE: If codemirror is focused via a mouse click event, you don't want to
385 385 * call this because it will cause a page jump.
386 386 * @method focus_editor
387 387 */
388 388 Cell.prototype.focus_editor = function () {
389 389 this.refresh();
390 390 this.code_mirror.focus();
391 391 };
392 392
393 393 /**
394 394 * Refresh codemirror instance
395 395 * @method refresh
396 396 */
397 397 Cell.prototype.refresh = function () {
398 398 if (this.code_mirror) {
399 399 this.code_mirror.refresh();
400 400 }
401 401 };
402 402
403 403 /**
404 404 * should be overritten by subclass
405 405 * @method get_text
406 406 */
407 407 Cell.prototype.get_text = function () {
408 408 };
409 409
410 410 /**
411 411 * should be overritten by subclass
412 412 * @method set_text
413 413 * @param {string} text
414 414 */
415 415 Cell.prototype.set_text = function (text) {
416 416 };
417 417
418 418 /**
419 419 * should be overritten by subclass
420 420 * serialise cell to json.
421 421 * @method toJSON
422 422 **/
423 423 Cell.prototype.toJSON = function () {
424 424 var data = {};
425 425 // deepcopy the metadata so copied cells don't share the same object
426 426 data.metadata = JSON.parse(JSON.stringify(this.metadata));
427 427 data.cell_type = this.cell_type;
428 428 return data;
429 429 };
430 430
431 431 /**
432 432 * should be overritten by subclass
433 433 * @method fromJSON
434 434 **/
435 435 Cell.prototype.fromJSON = function (data) {
436 436 if (data.metadata !== undefined) {
437 437 this.metadata = data.metadata;
438 438 }
439 439 };
440 440
441 441
442 442 /**
443 443 * can the cell be split into two cells (false if not deletable)
444 444 * @method is_splittable
445 445 **/
446 446 Cell.prototype.is_splittable = function () {
447 447 return this.is_deletable();
448 448 };
449 449
450 450
451 451 /**
452 452 * can the cell be merged with other cells (false if not deletable)
453 453 * @method is_mergeable
454 454 **/
455 455 Cell.prototype.is_mergeable = function () {
456 456 return this.is_deletable();
457 457 };
458 458
459 459 /**
460 460 * is the cell deletable? only false (undeletable) if
461 461 * metadata.deletable is explicitly false -- everything else
462 462 * counts as true
463 463 *
464 464 * @method is_deletable
465 465 **/
466 466 Cell.prototype.is_deletable = function () {
467 467 if (this.metadata.deletable === false) {
468 468 return false;
469 469 }
470 470 return true;
471 471 };
472 472
473 473 /**
474 474 * @return {String} - the text before the cursor
475 475 * @method get_pre_cursor
476 476 **/
477 477 Cell.prototype.get_pre_cursor = function () {
478 478 var cursor = this.code_mirror.getCursor();
479 479 var text = this.code_mirror.getRange({line:0, ch:0}, cursor);
480 480 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
481 481 return text;
482 482 };
483 483
484 484
485 485 /**
486 486 * @return {String} - the text after the cursor
487 487 * @method get_post_cursor
488 488 **/
489 489 Cell.prototype.get_post_cursor = function () {
490 490 var cursor = this.code_mirror.getCursor();
491 491 var last_line_num = this.code_mirror.lineCount()-1;
492 492 var last_line_len = this.code_mirror.getLine(last_line_num).length;
493 493 var end = {line:last_line_num, ch:last_line_len};
494 494 var text = this.code_mirror.getRange(cursor, end);
495 495 text = text.replace(/^\n+/, '').replace(/\n+$/, '');
496 496 return text;
497 497 };
498 498
499 499 /**
500 500 * Show/Hide CodeMirror LineNumber
501 501 * @method show_line_numbers
502 502 *
503 503 * @param value {Bool} show (true), or hide (false) the line number in CodeMirror
504 504 **/
505 505 Cell.prototype.show_line_numbers = function (value) {
506 506 this.code_mirror.setOption('lineNumbers', value);
507 507 this.code_mirror.refresh();
508 508 };
509 509
510 510 /**
511 511 * Toggle CodeMirror LineNumber
512 512 * @method toggle_line_numbers
513 513 **/
514 514 Cell.prototype.toggle_line_numbers = function () {
515 515 var val = this.code_mirror.getOption('lineNumbers');
516 516 this.show_line_numbers(!val);
517 517 };
518 518
519 519 /**
520 520 * Force codemirror highlight mode
521 521 * @method force_highlight
522 522 * @param {object} - CodeMirror mode
523 523 **/
524 524 Cell.prototype.force_highlight = function(mode) {
525 525 this.user_highlight = mode;
526 526 this.auto_highlight();
527 527 };
528 528
529 529 /**
530 530 * Try to autodetect cell highlight mode, or use selected mode
531 531 * @methods _auto_highlight
532 532 * @private
533 533 * @param {String|object|undefined} - CodeMirror mode | 'auto'
534 534 **/
535 535 Cell.prototype._auto_highlight = function (modes) {
536 536 /**
537 537 *Here we handle manually selected modes
538 538 */
539 539 var that = this;
540 540 var mode;
541 541 if( this.user_highlight !== undefined && this.user_highlight != 'auto' )
542 542 {
543 543 mode = this.user_highlight;
544 544 CodeMirror.autoLoadMode(this.code_mirror, mode);
545 545 this.code_mirror.setOption('mode', mode);
546 546 return;
547 547 }
548 548 var current_mode = this.code_mirror.getOption('mode', mode);
549 549 var first_line = this.code_mirror.getLine(0);
550 550 // loop on every pairs
551 551 for(mode in modes) {
552 552 var regs = modes[mode].reg;
553 553 // only one key every time but regexp can't be keys...
554 554 for(var i=0; i<regs.length; i++) {
555 555 // here we handle non magic_modes
556 556 if(first_line.match(regs[i]) !== null) {
557 557 if(current_mode == mode){
558 558 return;
559 559 }
560 560 if (mode.search('magic_') !== 0) {
561 utils.requireCodeMirrorMode(mode, function () {
562 that.code_mirror.setOption('mode', mode);
561 utils.requireCodeMirrorMode(mode, function (spec) {
562 that.code_mirror.setOption('mode', spec);
563 563 });
564 564 return;
565 565 }
566 566 var open = modes[mode].open || "%%";
567 567 var close = modes[mode].close || "%%end";
568 568 var magic_mode = mode;
569 569 mode = magic_mode.substr(6);
570 570 if(current_mode == magic_mode){
571 571 return;
572 572 }
573 utils.requireCodeMirrorMode(mode, function () {
573 utils.requireCodeMirrorMode(mode, function (spec) {
574 574 // create on the fly a mode that switch between
575 575 // plain/text and something else, otherwise `%%` is
576 576 // source of some highlight issues.
577 577 CodeMirror.defineMode(magic_mode, function(config) {
578 578 return CodeMirror.multiplexingMode(
579 579 CodeMirror.getMode(config, 'text/plain'),
580 580 // always set something on close
581 581 {open: open, close: close,
582 mode: CodeMirror.getMode(config, mode),
582 mode: CodeMirror.getMode(config, spec),
583 583 delimStyle: "delimit"
584 584 }
585 585 );
586 586 });
587 587 that.code_mirror.setOption('mode', magic_mode);
588 588 });
589 589 return;
590 590 }
591 591 }
592 592 }
593 593 // fallback on default
594 594 var default_mode;
595 595 try {
596 596 default_mode = this._options.cm_config.mode;
597 597 } catch(e) {
598 598 default_mode = 'text/plain';
599 599 }
600 600 if( current_mode === default_mode){
601 601 return;
602 602 }
603 603 this.code_mirror.setOption('mode', default_mode);
604 604 };
605 605
606 606 var UnrecognizedCell = function (options) {
607 607 /** Constructor for unrecognized cells */
608 608 Cell.apply(this, arguments);
609 609 this.cell_type = 'unrecognized';
610 610 this.celltoolbar = null;
611 611 this.data = {};
612 612
613 613 Object.seal(this);
614 614 };
615 615
616 616 UnrecognizedCell.prototype = Object.create(Cell.prototype);
617 617
618 618
619 619 // cannot merge or split unrecognized cells
620 620 UnrecognizedCell.prototype.is_mergeable = function () {
621 621 return false;
622 622 };
623 623
624 624 UnrecognizedCell.prototype.is_splittable = function () {
625 625 return false;
626 626 };
627 627
628 628 UnrecognizedCell.prototype.toJSON = function () {
629 629 /**
630 630 * deepcopy the metadata so copied cells don't share the same object
631 631 */
632 632 return JSON.parse(JSON.stringify(this.data));
633 633 };
634 634
635 635 UnrecognizedCell.prototype.fromJSON = function (data) {
636 636 this.data = data;
637 637 if (data.metadata !== undefined) {
638 638 this.metadata = data.metadata;
639 639 } else {
640 640 data.metadata = this.metadata;
641 641 }
642 642 this.element.find('.inner_cell').find("a").text("Unrecognized cell type: " + data.cell_type);
643 643 };
644 644
645 645 UnrecognizedCell.prototype.create_element = function () {
646 646 Cell.prototype.create_element.apply(this, arguments);
647 647 var cell = this.element = $("<div>").addClass('cell unrecognized_cell');
648 648 cell.attr('tabindex','2');
649 649
650 650 var prompt = $('<div/>').addClass('prompt input_prompt');
651 651 cell.append(prompt);
652 652 var inner_cell = $('<div/>').addClass('inner_cell');
653 653 inner_cell.append(
654 654 $("<a>")
655 655 .attr("href", "#")
656 656 .text("Unrecognized cell type")
657 657 );
658 658 cell.append(inner_cell);
659 659 this.element = cell;
660 660 };
661 661
662 662 UnrecognizedCell.prototype.bind_events = function () {
663 663 Cell.prototype.bind_events.apply(this, arguments);
664 664 var cell = this;
665 665
666 666 this.element.find('.inner_cell').find("a").click(function () {
667 667 cell.events.trigger('unrecognized_cell.Cell', {cell: cell})
668 668 });
669 669 };
670 670
671 671 // Backwards compatibility.
672 672 IPython.Cell = Cell;
673 673
674 674 return {
675 675 Cell: Cell,
676 676 UnrecognizedCell: UnrecognizedCell
677 677 };
678 678 });
@@ -1,2527 +1,2526 b''
1 1 // Copyright (c) IPython Development Team.
2 2 // Distributed under the terms of the Modified BSD License.
3 3
4 4 define([
5 5 'base/js/namespace',
6 6 'jquery',
7 7 'base/js/utils',
8 8 'base/js/dialog',
9 9 'notebook/js/cell',
10 10 'notebook/js/textcell',
11 11 'notebook/js/codecell',
12 12 'services/sessions/session',
13 13 'notebook/js/celltoolbar',
14 14 'components/marked/lib/marked',
15 15 'codemirror/lib/codemirror',
16 16 'codemirror/addon/runmode/runmode',
17 17 'notebook/js/mathjaxutils',
18 18 'base/js/keyboard',
19 19 'notebook/js/tooltip',
20 20 'notebook/js/celltoolbarpresets/default',
21 21 'notebook/js/celltoolbarpresets/rawcell',
22 22 'notebook/js/celltoolbarpresets/slideshow',
23 23 'notebook/js/scrollmanager'
24 24 ], function (
25 25 IPython,
26 26 $,
27 27 utils,
28 28 dialog,
29 29 cellmod,
30 30 textcell,
31 31 codecell,
32 32 session,
33 33 celltoolbar,
34 34 marked,
35 35 CodeMirror,
36 36 runMode,
37 37 mathjaxutils,
38 38 keyboard,
39 39 tooltip,
40 40 default_celltoolbar,
41 41 rawcell_celltoolbar,
42 42 slideshow_celltoolbar,
43 43 scrollmanager
44 44 ) {
45 45 "use strict";
46 46
47 47 var Notebook = function (selector, options) {
48 48 /**
49 49 * Constructor
50 50 *
51 51 * A notebook contains and manages cells.
52 52 *
53 53 * Parameters:
54 54 * selector: string
55 55 * options: dictionary
56 56 * Dictionary of keyword arguments.
57 57 * events: $(Events) instance
58 58 * keyboard_manager: KeyboardManager instance
59 59 * contents: Contents instance
60 60 * save_widget: SaveWidget instance
61 61 * config: dictionary
62 62 * base_url : string
63 63 * notebook_path : string
64 64 * notebook_name : string
65 65 */
66 66 this.config = utils.mergeopt(Notebook, options.config);
67 67 this.base_url = options.base_url;
68 68 this.notebook_path = options.notebook_path;
69 69 this.notebook_name = options.notebook_name;
70 70 this.events = options.events;
71 71 this.keyboard_manager = options.keyboard_manager;
72 72 this.contents = options.contents;
73 73 this.save_widget = options.save_widget;
74 74 this.tooltip = new tooltip.Tooltip(this.events);
75 75 this.ws_url = options.ws_url;
76 76 this._session_starting = false;
77 77 this.default_cell_type = this.config.default_cell_type || 'code';
78 78
79 79 // Create default scroll manager.
80 80 this.scroll_manager = new scrollmanager.ScrollManager(this);
81 81
82 82 // TODO: This code smells (and the other `= this` line a couple lines down)
83 83 // We need a better way to deal with circular instance references.
84 84 this.keyboard_manager.notebook = this;
85 85 this.save_widget.notebook = this;
86 86
87 87 mathjaxutils.init();
88 88
89 89 if (marked) {
90 90 marked.setOptions({
91 91 gfm : true,
92 92 tables: true,
93 93 // FIXME: probably want central config for CodeMirror theme when we have js config
94 94 langPrefix: "cm-s-ipython language-",
95 95 highlight: function(code, lang, callback) {
96 96 if (!lang) {
97 97 // no language, no highlight
98 98 if (callback) {
99 99 callback(null, code);
100 100 return;
101 101 } else {
102 102 return code;
103 103 }
104 104 }
105 utils.requireCodeMirrorMode(lang, function () {
105 utils.requireCodeMirrorMode(lang, function (spec) {
106 106 var el = document.createElement("div");
107 var mode = CodeMirror.getMode({}, lang);
107 var mode = CodeMirror.getMode({}, spec);
108 108 if (!mode) {
109 109 console.log("No CodeMirror mode: " + lang);
110 110 callback(null, code);
111 111 return;
112 112 }
113 113 try {
114 CodeMirror.runMode(code, mode, el);
114 CodeMirror.runMode(code, spec, el);
115 115 callback(null, el.innerHTML);
116 116 } catch (err) {
117 117 console.log("Failed to highlight " + lang + " code", err);
118 118 callback(err, code);
119 119 }
120 120 }, function (err) {
121 121 console.log("No CodeMirror mode: " + lang);
122 122 callback(err, code);
123 123 });
124 124 }
125 125 });
126 126 }
127 127
128 128 this.element = $(selector);
129 129 this.element.scroll();
130 130 this.element.data("notebook", this);
131 131 this.next_prompt_number = 1;
132 132 this.session = null;
133 133 this.kernel = null;
134 134 this.clipboard = null;
135 135 this.undelete_backup = null;
136 136 this.undelete_index = null;
137 137 this.undelete_below = false;
138 138 this.paste_enabled = false;
139 139 this.writable = false;
140 140 // It is important to start out in command mode to match the intial mode
141 141 // of the KeyboardManager.
142 142 this.mode = 'command';
143 143 this.set_dirty(false);
144 144 this.metadata = {};
145 145 this._checkpoint_after_save = false;
146 146 this.last_checkpoint = null;
147 147 this.checkpoints = [];
148 148 this.autosave_interval = 0;
149 149 this.autosave_timer = null;
150 150 // autosave *at most* every two minutes
151 151 this.minimum_autosave_interval = 120000;
152 152 this.notebook_name_blacklist_re = /[\/\\:]/;
153 153 this.nbformat = 4; // Increment this when changing the nbformat
154 154 this.nbformat_minor = this.current_nbformat_minor = 0; // Increment this when changing the nbformat
155 155 this.codemirror_mode = 'ipython';
156 156 this.create_elements();
157 157 this.bind_events();
158 158 this.kernel_selector = null;
159 159 this.dirty = null;
160 160 this.trusted = null;
161 161 this._fully_loaded = false;
162 162
163 163 // Trigger cell toolbar registration.
164 164 default_celltoolbar.register(this);
165 165 rawcell_celltoolbar.register(this);
166 166 slideshow_celltoolbar.register(this);
167 167
168 168 // prevent assign to miss-typed properties.
169 169 Object.seal(this);
170 170 };
171 171
172 172 Notebook.options_default = {
173 173 // can be any cell type, or the special values of
174 174 // 'above', 'below', or 'selected' to get the value from another cell.
175 175 Notebook: {
176 176 default_cell_type: 'code'
177 177 }
178 178 };
179 179
180 180
181 181 /**
182 182 * Create an HTML and CSS representation of the notebook.
183 183 *
184 184 * @method create_elements
185 185 */
186 186 Notebook.prototype.create_elements = function () {
187 187 var that = this;
188 188 this.element.attr('tabindex','-1');
189 189 this.container = $("<div/>").addClass("container").attr("id", "notebook-container");
190 190 // We add this end_space div to the end of the notebook div to:
191 191 // i) provide a margin between the last cell and the end of the notebook
192 192 // ii) to prevent the div from scrolling up when the last cell is being
193 193 // edited, but is too low on the page, which browsers will do automatically.
194 194 var end_space = $('<div/>').addClass('end_space');
195 195 end_space.dblclick(function (e) {
196 196 var ncells = that.ncells();
197 197 that.insert_cell_below('code',ncells-1);
198 198 });
199 199 this.element.append(this.container);
200 200 this.container.append(end_space);
201 201 };
202 202
203 203 /**
204 204 * Bind JavaScript events: key presses and custom IPython events.
205 205 *
206 206 * @method bind_events
207 207 */
208 208 Notebook.prototype.bind_events = function () {
209 209 var that = this;
210 210
211 211 this.events.on('set_next_input.Notebook', function (event, data) {
212 212 if (data.replace) {
213 213 data.cell.set_text(data.text);
214 214 data.cell.clear_output();
215 215 } else {
216 216 var index = that.find_cell_index(data.cell);
217 217 var new_cell = that.insert_cell_below('code',index);
218 218 new_cell.set_text(data.text);
219 219 }
220 220 that.dirty = true;
221 221 });
222 222
223 223 this.events.on('unrecognized_cell.Cell', function () {
224 224 that.warn_nbformat_minor();
225 225 });
226 226
227 227 this.events.on('unrecognized_output.OutputArea', function () {
228 228 that.warn_nbformat_minor();
229 229 });
230 230
231 231 this.events.on('set_dirty.Notebook', function (event, data) {
232 232 that.dirty = data.value;
233 233 });
234 234
235 235 this.events.on('trust_changed.Notebook', function (event, trusted) {
236 236 that.trusted = trusted;
237 237 });
238 238
239 239 this.events.on('select.Cell', function (event, data) {
240 240 var index = that.find_cell_index(data.cell);
241 241 that.select(index);
242 242 });
243 243
244 244 this.events.on('edit_mode.Cell', function (event, data) {
245 245 that.handle_edit_mode(data.cell);
246 246 });
247 247
248 248 this.events.on('command_mode.Cell', function (event, data) {
249 249 that.handle_command_mode(data.cell);
250 250 });
251 251
252 252 this.events.on('spec_changed.Kernel', function(event, data) {
253 253 that.metadata.kernelspec =
254 254 {name: data.name, display_name: data.display_name};
255 255 });
256 256
257 257 this.events.on('kernel_ready.Kernel', function(event, data) {
258 258 var kinfo = data.kernel.info_reply;
259 259 var langinfo = kinfo.language_info || {};
260 260 that.metadata.language_info = langinfo;
261 261 // Mode 'null' should be plain, unhighlighted text.
262 262 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
263 263 that.set_codemirror_mode(cm_mode);
264 264 });
265 265
266 266 var collapse_time = function (time) {
267 267 var app_height = $('#ipython-main-app').height(); // content height
268 268 var splitter_height = $('div#pager_splitter').outerHeight(true);
269 269 var new_height = app_height - splitter_height;
270 270 that.element.animate({height : new_height + 'px'}, time);
271 271 };
272 272
273 273 this.element.bind('collapse_pager', function (event, extrap) {
274 274 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
275 275 collapse_time(time);
276 276 });
277 277
278 278 var expand_time = function (time) {
279 279 var app_height = $('#ipython-main-app').height(); // content height
280 280 var splitter_height = $('div#pager_splitter').outerHeight(true);
281 281 var pager_height = $('div#pager').outerHeight(true);
282 282 var new_height = app_height - pager_height - splitter_height;
283 283 that.element.animate({height : new_height + 'px'}, time);
284 284 };
285 285
286 286 this.element.bind('expand_pager', function (event, extrap) {
287 287 var time = (extrap !== undefined) ? ((extrap.duration !== undefined ) ? extrap.duration : 'fast') : 'fast';
288 288 expand_time(time);
289 289 });
290 290
291 291 // Firefox 22 broke $(window).on("beforeunload")
292 292 // I'm not sure why or how.
293 293 window.onbeforeunload = function (e) {
294 294 // TODO: Make killing the kernel configurable.
295 295 var kill_kernel = false;
296 296 if (kill_kernel) {
297 297 that.session.delete();
298 298 }
299 299 // if we are autosaving, trigger an autosave on nav-away.
300 300 // still warn, because if we don't the autosave may fail.
301 301 if (that.dirty) {
302 302 if ( that.autosave_interval ) {
303 303 // schedule autosave in a timeout
304 304 // this gives you a chance to forcefully discard changes
305 305 // by reloading the page if you *really* want to.
306 306 // the timer doesn't start until you *dismiss* the dialog.
307 307 setTimeout(function () {
308 308 if (that.dirty) {
309 309 that.save_notebook();
310 310 }
311 311 }, 1000);
312 312 return "Autosave in progress, latest changes may be lost.";
313 313 } else {
314 314 return "Unsaved changes will be lost.";
315 315 }
316 316 }
317 317 // Null is the *only* return value that will make the browser not
318 318 // pop up the "don't leave" dialog.
319 319 return null;
320 320 };
321 321 };
322 322
323 323 Notebook.prototype.warn_nbformat_minor = function (event) {
324 324 /**
325 325 * trigger a warning dialog about missing functionality from newer minor versions
326 326 */
327 327 var v = 'v' + this.nbformat + '.';
328 328 var orig_vs = v + this.nbformat_minor;
329 329 var this_vs = v + this.current_nbformat_minor;
330 330 var msg = "This notebook is version " + orig_vs + ", but we only fully support up to " +
331 331 this_vs + ". You can still work with this notebook, but cell and output types " +
332 332 "introduced in later notebook versions will not be available.";
333 333
334 334 dialog.modal({
335 335 notebook: this,
336 336 keyboard_manager: this.keyboard_manager,
337 337 title : "Newer Notebook",
338 338 body : msg,
339 339 buttons : {
340 340 OK : {
341 341 "class" : "btn-danger"
342 342 }
343 343 }
344 344 });
345 345 }
346 346
347 347 /**
348 348 * Set the dirty flag, and trigger the set_dirty.Notebook event
349 349 *
350 350 * @method set_dirty
351 351 */
352 352 Notebook.prototype.set_dirty = function (value) {
353 353 if (value === undefined) {
354 354 value = true;
355 355 }
356 356 if (this.dirty == value) {
357 357 return;
358 358 }
359 359 this.events.trigger('set_dirty.Notebook', {value: value});
360 360 };
361 361
362 362 /**
363 363 * Scroll the top of the page to a given cell.
364 364 *
365 365 * @method scroll_to_cell
366 366 * @param {Number} cell_number An index of the cell to view
367 367 * @param {Number} time Animation time in milliseconds
368 368 * @return {Number} Pixel offset from the top of the container
369 369 */
370 370 Notebook.prototype.scroll_to_cell = function (cell_number, time) {
371 371 var cells = this.get_cells();
372 372 time = time || 0;
373 373 cell_number = Math.min(cells.length-1,cell_number);
374 374 cell_number = Math.max(0 ,cell_number);
375 375 var scroll_value = cells[cell_number].element.position().top-cells[0].element.position().top ;
376 376 this.element.animate({scrollTop:scroll_value}, time);
377 377 return scroll_value;
378 378 };
379 379
380 380 /**
381 381 * Scroll to the bottom of the page.
382 382 *
383 383 * @method scroll_to_bottom
384 384 */
385 385 Notebook.prototype.scroll_to_bottom = function () {
386 386 this.element.animate({scrollTop:this.element.get(0).scrollHeight}, 0);
387 387 };
388 388
389 389 /**
390 390 * Scroll to the top of the page.
391 391 *
392 392 * @method scroll_to_top
393 393 */
394 394 Notebook.prototype.scroll_to_top = function () {
395 395 this.element.animate({scrollTop:0}, 0);
396 396 };
397 397
398 398 // Edit Notebook metadata
399 399
400 400 Notebook.prototype.edit_metadata = function () {
401 401 var that = this;
402 402 dialog.edit_metadata({
403 403 md: this.metadata,
404 404 callback: function (md) {
405 405 that.metadata = md;
406 406 },
407 407 name: 'Notebook',
408 408 notebook: this,
409 409 keyboard_manager: this.keyboard_manager});
410 410 };
411 411
412 412 // Cell indexing, retrieval, etc.
413 413
414 414 /**
415 415 * Get all cell elements in the notebook.
416 416 *
417 417 * @method get_cell_elements
418 418 * @return {jQuery} A selector of all cell elements
419 419 */
420 420 Notebook.prototype.get_cell_elements = function () {
421 421 return this.container.find(".cell").not('.cell .cell');
422 422 };
423 423
424 424 /**
425 425 * Get a particular cell element.
426 426 *
427 427 * @method get_cell_element
428 428 * @param {Number} index An index of a cell to select
429 429 * @return {jQuery} A selector of the given cell.
430 430 */
431 431 Notebook.prototype.get_cell_element = function (index) {
432 432 var result = null;
433 433 var e = this.get_cell_elements().eq(index);
434 434 if (e.length !== 0) {
435 435 result = e;
436 436 }
437 437 return result;
438 438 };
439 439
440 440 /**
441 441 * Try to get a particular cell by msg_id.
442 442 *
443 443 * @method get_msg_cell
444 444 * @param {String} msg_id A message UUID
445 445 * @return {Cell} Cell or null if no cell was found.
446 446 */
447 447 Notebook.prototype.get_msg_cell = function (msg_id) {
448 448 return codecell.CodeCell.msg_cells[msg_id] || null;
449 449 };
450 450
451 451 /**
452 452 * Count the cells in this notebook.
453 453 *
454 454 * @method ncells
455 455 * @return {Number} The number of cells in this notebook
456 456 */
457 457 Notebook.prototype.ncells = function () {
458 458 return this.get_cell_elements().length;
459 459 };
460 460
461 461 /**
462 462 * Get all Cell objects in this notebook.
463 463 *
464 464 * @method get_cells
465 465 * @return {Array} This notebook's Cell objects
466 466 */
467 467 // TODO: we are often calling cells as cells()[i], which we should optimize
468 468 // to cells(i) or a new method.
469 469 Notebook.prototype.get_cells = function () {
470 470 return this.get_cell_elements().toArray().map(function (e) {
471 471 return $(e).data("cell");
472 472 });
473 473 };
474 474
475 475 /**
476 476 * Get a Cell object from this notebook.
477 477 *
478 478 * @method get_cell
479 479 * @param {Number} index An index of a cell to retrieve
480 480 * @return {Cell} Cell or null if no cell was found.
481 481 */
482 482 Notebook.prototype.get_cell = function (index) {
483 483 var result = null;
484 484 var ce = this.get_cell_element(index);
485 485 if (ce !== null) {
486 486 result = ce.data('cell');
487 487 }
488 488 return result;
489 489 };
490 490
491 491 /**
492 492 * Get the cell below a given cell.
493 493 *
494 494 * @method get_next_cell
495 495 * @param {Cell} cell The provided cell
496 496 * @return {Cell} the next cell or null if no cell was found.
497 497 */
498 498 Notebook.prototype.get_next_cell = function (cell) {
499 499 var result = null;
500 500 var index = this.find_cell_index(cell);
501 501 if (this.is_valid_cell_index(index+1)) {
502 502 result = this.get_cell(index+1);
503 503 }
504 504 return result;
505 505 };
506 506
507 507 /**
508 508 * Get the cell above a given cell.
509 509 *
510 510 * @method get_prev_cell
511 511 * @param {Cell} cell The provided cell
512 512 * @return {Cell} The previous cell or null if no cell was found.
513 513 */
514 514 Notebook.prototype.get_prev_cell = function (cell) {
515 515 var result = null;
516 516 var index = this.find_cell_index(cell);
517 517 if (index !== null && index > 0) {
518 518 result = this.get_cell(index-1);
519 519 }
520 520 return result;
521 521 };
522 522
523 523 /**
524 524 * Get the numeric index of a given cell.
525 525 *
526 526 * @method find_cell_index
527 527 * @param {Cell} cell The provided cell
528 528 * @return {Number} The cell's numeric index or null if no cell was found.
529 529 */
530 530 Notebook.prototype.find_cell_index = function (cell) {
531 531 var result = null;
532 532 this.get_cell_elements().filter(function (index) {
533 533 if ($(this).data("cell") === cell) {
534 534 result = index;
535 535 }
536 536 });
537 537 return result;
538 538 };
539 539
540 540 /**
541 541 * Get a given index , or the selected index if none is provided.
542 542 *
543 543 * @method index_or_selected
544 544 * @param {Number} index A cell's index
545 545 * @return {Number} The given index, or selected index if none is provided.
546 546 */
547 547 Notebook.prototype.index_or_selected = function (index) {
548 548 var i;
549 549 if (index === undefined || index === null) {
550 550 i = this.get_selected_index();
551 551 if (i === null) {
552 552 i = 0;
553 553 }
554 554 } else {
555 555 i = index;
556 556 }
557 557 return i;
558 558 };
559 559
560 560 /**
561 561 * Get the currently selected cell.
562 562 * @method get_selected_cell
563 563 * @return {Cell} The selected cell
564 564 */
565 565 Notebook.prototype.get_selected_cell = function () {
566 566 var index = this.get_selected_index();
567 567 return this.get_cell(index);
568 568 };
569 569
570 570 /**
571 571 * Check whether a cell index is valid.
572 572 *
573 573 * @method is_valid_cell_index
574 574 * @param {Number} index A cell index
575 575 * @return True if the index is valid, false otherwise
576 576 */
577 577 Notebook.prototype.is_valid_cell_index = function (index) {
578 578 if (index !== null && index >= 0 && index < this.ncells()) {
579 579 return true;
580 580 } else {
581 581 return false;
582 582 }
583 583 };
584 584
585 585 /**
586 586 * Get the index of the currently selected cell.
587 587
588 588 * @method get_selected_index
589 589 * @return {Number} The selected cell's numeric index
590 590 */
591 591 Notebook.prototype.get_selected_index = function () {
592 592 var result = null;
593 593 this.get_cell_elements().filter(function (index) {
594 594 if ($(this).data("cell").selected === true) {
595 595 result = index;
596 596 }
597 597 });
598 598 return result;
599 599 };
600 600
601 601
602 602 // Cell selection.
603 603
604 604 /**
605 605 * Programmatically select a cell.
606 606 *
607 607 * @method select
608 608 * @param {Number} index A cell's index
609 609 * @return {Notebook} This notebook
610 610 */
611 611 Notebook.prototype.select = function (index) {
612 612 if (this.is_valid_cell_index(index)) {
613 613 var sindex = this.get_selected_index();
614 614 if (sindex !== null && index !== sindex) {
615 615 // If we are about to select a different cell, make sure we are
616 616 // first in command mode.
617 617 if (this.mode !== 'command') {
618 618 this.command_mode();
619 619 }
620 620 this.get_cell(sindex).unselect();
621 621 }
622 622 var cell = this.get_cell(index);
623 623 cell.select();
624 624 if (cell.cell_type === 'heading') {
625 625 this.events.trigger('selected_cell_type_changed.Notebook',
626 626 {'cell_type':cell.cell_type,level:cell.level}
627 627 );
628 628 } else {
629 629 this.events.trigger('selected_cell_type_changed.Notebook',
630 630 {'cell_type':cell.cell_type}
631 631 );
632 632 }
633 633 }
634 634 return this;
635 635 };
636 636
637 637 /**
638 638 * Programmatically select the next cell.
639 639 *
640 640 * @method select_next
641 641 * @return {Notebook} This notebook
642 642 */
643 643 Notebook.prototype.select_next = function () {
644 644 var index = this.get_selected_index();
645 645 this.select(index+1);
646 646 return this;
647 647 };
648 648
649 649 /**
650 650 * Programmatically select the previous cell.
651 651 *
652 652 * @method select_prev
653 653 * @return {Notebook} This notebook
654 654 */
655 655 Notebook.prototype.select_prev = function () {
656 656 var index = this.get_selected_index();
657 657 this.select(index-1);
658 658 return this;
659 659 };
660 660
661 661
662 662 // Edit/Command mode
663 663
664 664 /**
665 665 * Gets the index of the cell that is in edit mode.
666 666 *
667 667 * @method get_edit_index
668 668 *
669 669 * @return index {int}
670 670 **/
671 671 Notebook.prototype.get_edit_index = function () {
672 672 var result = null;
673 673 this.get_cell_elements().filter(function (index) {
674 674 if ($(this).data("cell").mode === 'edit') {
675 675 result = index;
676 676 }
677 677 });
678 678 return result;
679 679 };
680 680
681 681 /**
682 682 * Handle when a a cell blurs and the notebook should enter command mode.
683 683 *
684 684 * @method handle_command_mode
685 685 * @param [cell] {Cell} Cell to enter command mode on.
686 686 **/
687 687 Notebook.prototype.handle_command_mode = function (cell) {
688 688 if (this.mode !== 'command') {
689 689 cell.command_mode();
690 690 this.mode = 'command';
691 691 this.events.trigger('command_mode.Notebook');
692 692 this.keyboard_manager.command_mode();
693 693 }
694 694 };
695 695
696 696 /**
697 697 * Make the notebook enter command mode.
698 698 *
699 699 * @method command_mode
700 700 **/
701 701 Notebook.prototype.command_mode = function () {
702 702 var cell = this.get_cell(this.get_edit_index());
703 703 if (cell && this.mode !== 'command') {
704 704 // We don't call cell.command_mode, but rather call cell.focus_cell()
705 705 // which will blur and CM editor and trigger the call to
706 706 // handle_command_mode.
707 707 cell.focus_cell();
708 708 }
709 709 };
710 710
711 711 /**
712 712 * Handle when a cell fires it's edit_mode event.
713 713 *
714 714 * @method handle_edit_mode
715 715 * @param [cell] {Cell} Cell to enter edit mode on.
716 716 **/
717 717 Notebook.prototype.handle_edit_mode = function (cell) {
718 718 if (cell && this.mode !== 'edit') {
719 719 cell.edit_mode();
720 720 this.mode = 'edit';
721 721 this.events.trigger('edit_mode.Notebook');
722 722 this.keyboard_manager.edit_mode();
723 723 }
724 724 };
725 725
726 726 /**
727 727 * Make a cell enter edit mode.
728 728 *
729 729 * @method edit_mode
730 730 **/
731 731 Notebook.prototype.edit_mode = function () {
732 732 var cell = this.get_selected_cell();
733 733 if (cell && this.mode !== 'edit') {
734 734 cell.unrender();
735 735 cell.focus_editor();
736 736 }
737 737 };
738 738
739 739 /**
740 740 * Focus the currently selected cell.
741 741 *
742 742 * @method focus_cell
743 743 **/
744 744 Notebook.prototype.focus_cell = function () {
745 745 var cell = this.get_selected_cell();
746 746 if (cell === null) {return;} // No cell is selected
747 747 cell.focus_cell();
748 748 };
749 749
750 750 // Cell movement
751 751
752 752 /**
753 753 * Move given (or selected) cell up and select it.
754 754 *
755 755 * @method move_cell_up
756 756 * @param [index] {integer} cell index
757 757 * @return {Notebook} This notebook
758 758 **/
759 759 Notebook.prototype.move_cell_up = function (index) {
760 760 var i = this.index_or_selected(index);
761 761 if (this.is_valid_cell_index(i) && i > 0) {
762 762 var pivot = this.get_cell_element(i-1);
763 763 var tomove = this.get_cell_element(i);
764 764 if (pivot !== null && tomove !== null) {
765 765 tomove.detach();
766 766 pivot.before(tomove);
767 767 this.select(i-1);
768 768 var cell = this.get_selected_cell();
769 769 cell.focus_cell();
770 770 }
771 771 this.set_dirty(true);
772 772 }
773 773 return this;
774 774 };
775 775
776 776
777 777 /**
778 778 * Move given (or selected) cell down and select it
779 779 *
780 780 * @method move_cell_down
781 781 * @param [index] {integer} cell index
782 782 * @return {Notebook} This notebook
783 783 **/
784 784 Notebook.prototype.move_cell_down = function (index) {
785 785 var i = this.index_or_selected(index);
786 786 if (this.is_valid_cell_index(i) && this.is_valid_cell_index(i+1)) {
787 787 var pivot = this.get_cell_element(i+1);
788 788 var tomove = this.get_cell_element(i);
789 789 if (pivot !== null && tomove !== null) {
790 790 tomove.detach();
791 791 pivot.after(tomove);
792 792 this.select(i+1);
793 793 var cell = this.get_selected_cell();
794 794 cell.focus_cell();
795 795 }
796 796 }
797 797 this.set_dirty();
798 798 return this;
799 799 };
800 800
801 801
802 802 // Insertion, deletion.
803 803
804 804 /**
805 805 * Delete a cell from the notebook.
806 806 *
807 807 * @method delete_cell
808 808 * @param [index] A cell's numeric index
809 809 * @return {Notebook} This notebook
810 810 */
811 811 Notebook.prototype.delete_cell = function (index) {
812 812 var i = this.index_or_selected(index);
813 813 var cell = this.get_cell(i);
814 814 if (!cell.is_deletable()) {
815 815 return this;
816 816 }
817 817
818 818 this.undelete_backup = cell.toJSON();
819 819 $('#undelete_cell').removeClass('disabled');
820 820 if (this.is_valid_cell_index(i)) {
821 821 var old_ncells = this.ncells();
822 822 var ce = this.get_cell_element(i);
823 823 ce.remove();
824 824 if (i === 0) {
825 825 // Always make sure we have at least one cell.
826 826 if (old_ncells === 1) {
827 827 this.insert_cell_below('code');
828 828 }
829 829 this.select(0);
830 830 this.undelete_index = 0;
831 831 this.undelete_below = false;
832 832 } else if (i === old_ncells-1 && i !== 0) {
833 833 this.select(i-1);
834 834 this.undelete_index = i - 1;
835 835 this.undelete_below = true;
836 836 } else {
837 837 this.select(i);
838 838 this.undelete_index = i;
839 839 this.undelete_below = false;
840 840 }
841 841 this.events.trigger('delete.Cell', {'cell': cell, 'index': i});
842 842 this.set_dirty(true);
843 843 }
844 844 return this;
845 845 };
846 846
847 847 /**
848 848 * Restore the most recently deleted cell.
849 849 *
850 850 * @method undelete
851 851 */
852 852 Notebook.prototype.undelete_cell = function() {
853 853 if (this.undelete_backup !== null && this.undelete_index !== null) {
854 854 var current_index = this.get_selected_index();
855 855 if (this.undelete_index < current_index) {
856 856 current_index = current_index + 1;
857 857 }
858 858 if (this.undelete_index >= this.ncells()) {
859 859 this.select(this.ncells() - 1);
860 860 }
861 861 else {
862 862 this.select(this.undelete_index);
863 863 }
864 864 var cell_data = this.undelete_backup;
865 865 var new_cell = null;
866 866 if (this.undelete_below) {
867 867 new_cell = this.insert_cell_below(cell_data.cell_type);
868 868 } else {
869 869 new_cell = this.insert_cell_above(cell_data.cell_type);
870 870 }
871 871 new_cell.fromJSON(cell_data);
872 872 if (this.undelete_below) {
873 873 this.select(current_index+1);
874 874 } else {
875 875 this.select(current_index);
876 876 }
877 877 this.undelete_backup = null;
878 878 this.undelete_index = null;
879 879 }
880 880 $('#undelete_cell').addClass('disabled');
881 881 };
882 882
883 883 /**
884 884 * Insert a cell so that after insertion the cell is at given index.
885 885 *
886 886 * If cell type is not provided, it will default to the type of the
887 887 * currently active cell.
888 888 *
889 889 * Similar to insert_above, but index parameter is mandatory
890 890 *
891 891 * Index will be brought back into the accessible range [0,n]
892 892 *
893 893 * @method insert_cell_at_index
894 894 * @param [type] {string} in ['code','markdown', 'raw'], defaults to 'code'
895 895 * @param [index] {int} a valid index where to insert cell
896 896 *
897 897 * @return cell {cell|null} created cell or null
898 898 **/
899 899 Notebook.prototype.insert_cell_at_index = function(type, index){
900 900
901 901 var ncells = this.ncells();
902 902 index = Math.min(index, ncells);
903 903 index = Math.max(index, 0);
904 904 var cell = null;
905 905 type = type || this.default_cell_type;
906 906 if (type === 'above') {
907 907 if (index > 0) {
908 908 type = this.get_cell(index-1).cell_type;
909 909 } else {
910 910 type = 'code';
911 911 }
912 912 } else if (type === 'below') {
913 913 if (index < ncells) {
914 914 type = this.get_cell(index).cell_type;
915 915 } else {
916 916 type = 'code';
917 917 }
918 918 } else if (type === 'selected') {
919 919 type = this.get_selected_cell().cell_type;
920 920 }
921 921
922 922 if (ncells === 0 || this.is_valid_cell_index(index) || index === ncells) {
923 923 var cell_options = {
924 924 events: this.events,
925 925 config: this.config,
926 926 keyboard_manager: this.keyboard_manager,
927 927 notebook: this,
928 928 tooltip: this.tooltip
929 929 };
930 930 switch(type) {
931 931 case 'code':
932 932 cell = new codecell.CodeCell(this.kernel, cell_options);
933 933 cell.set_input_prompt();
934 934 break;
935 935 case 'markdown':
936 936 cell = new textcell.MarkdownCell(cell_options);
937 937 break;
938 938 case 'raw':
939 939 cell = new textcell.RawCell(cell_options);
940 940 break;
941 941 default:
942 942 console.log("Unrecognized cell type: ", type, cellmod);
943 943 cell = new cellmod.UnrecognizedCell(cell_options);
944 944 }
945 945
946 946 if(this._insert_element_at_index(cell.element,index)) {
947 947 cell.render();
948 948 this.events.trigger('create.Cell', {'cell': cell, 'index': index});
949 949 cell.refresh();
950 950 // We used to select the cell after we refresh it, but there
951 951 // are now cases were this method is called where select is
952 952 // not appropriate. The selection logic should be handled by the
953 953 // caller of the the top level insert_cell methods.
954 954 this.set_dirty(true);
955 955 }
956 956 }
957 957 return cell;
958 958
959 959 };
960 960
961 961 /**
962 962 * Insert an element at given cell index.
963 963 *
964 964 * @method _insert_element_at_index
965 965 * @param element {dom_element} a cell element
966 966 * @param [index] {int} a valid index where to inser cell
967 967 * @private
968 968 *
969 969 * return true if everything whent fine.
970 970 **/
971 971 Notebook.prototype._insert_element_at_index = function(element, index){
972 972 if (element === undefined){
973 973 return false;
974 974 }
975 975
976 976 var ncells = this.ncells();
977 977
978 978 if (ncells === 0) {
979 979 // special case append if empty
980 980 this.element.find('div.end_space').before(element);
981 981 } else if ( ncells === index ) {
982 982 // special case append it the end, but not empty
983 983 this.get_cell_element(index-1).after(element);
984 984 } else if (this.is_valid_cell_index(index)) {
985 985 // otherwise always somewhere to append to
986 986 this.get_cell_element(index).before(element);
987 987 } else {
988 988 return false;
989 989 }
990 990
991 991 if (this.undelete_index !== null && index <= this.undelete_index) {
992 992 this.undelete_index = this.undelete_index + 1;
993 993 this.set_dirty(true);
994 994 }
995 995 return true;
996 996 };
997 997
998 998 /**
999 999 * Insert a cell of given type above given index, or at top
1000 1000 * of notebook if index smaller than 0.
1001 1001 *
1002 1002 * default index value is the one of currently selected cell
1003 1003 *
1004 1004 * @method insert_cell_above
1005 1005 * @param [type] {string} cell type
1006 1006 * @param [index] {integer}
1007 1007 *
1008 1008 * @return handle to created cell or null
1009 1009 **/
1010 1010 Notebook.prototype.insert_cell_above = function (type, index) {
1011 1011 index = this.index_or_selected(index);
1012 1012 return this.insert_cell_at_index(type, index);
1013 1013 };
1014 1014
1015 1015 /**
1016 1016 * Insert a cell of given type below given index, or at bottom
1017 1017 * of notebook if index greater than number of cells
1018 1018 *
1019 1019 * default index value is the one of currently selected cell
1020 1020 *
1021 1021 * @method insert_cell_below
1022 1022 * @param [type] {string} cell type
1023 1023 * @param [index] {integer}
1024 1024 *
1025 1025 * @return handle to created cell or null
1026 1026 *
1027 1027 **/
1028 1028 Notebook.prototype.insert_cell_below = function (type, index) {
1029 1029 index = this.index_or_selected(index);
1030 1030 return this.insert_cell_at_index(type, index+1);
1031 1031 };
1032 1032
1033 1033
1034 1034 /**
1035 1035 * Insert cell at end of notebook
1036 1036 *
1037 1037 * @method insert_cell_at_bottom
1038 1038 * @param {String} type cell type
1039 1039 *
1040 1040 * @return the added cell; or null
1041 1041 **/
1042 1042 Notebook.prototype.insert_cell_at_bottom = function (type){
1043 1043 var len = this.ncells();
1044 1044 return this.insert_cell_below(type,len-1);
1045 1045 };
1046 1046
1047 1047 /**
1048 1048 * Turn a cell into a code cell.
1049 1049 *
1050 1050 * @method to_code
1051 1051 * @param {Number} [index] A cell's index
1052 1052 */
1053 1053 Notebook.prototype.to_code = function (index) {
1054 1054 var i = this.index_or_selected(index);
1055 1055 if (this.is_valid_cell_index(i)) {
1056 1056 var source_cell = this.get_cell(i);
1057 1057 if (!(source_cell instanceof codecell.CodeCell)) {
1058 1058 var target_cell = this.insert_cell_below('code',i);
1059 1059 var text = source_cell.get_text();
1060 1060 if (text === source_cell.placeholder) {
1061 1061 text = '';
1062 1062 }
1063 1063 //metadata
1064 1064 target_cell.metadata = source_cell.metadata;
1065 1065
1066 1066 target_cell.set_text(text);
1067 1067 // make this value the starting point, so that we can only undo
1068 1068 // to this state, instead of a blank cell
1069 1069 target_cell.code_mirror.clearHistory();
1070 1070 source_cell.element.remove();
1071 1071 this.select(i);
1072 1072 var cursor = source_cell.code_mirror.getCursor();
1073 1073 target_cell.code_mirror.setCursor(cursor);
1074 1074 this.set_dirty(true);
1075 1075 }
1076 1076 }
1077 1077 };
1078 1078
1079 1079 /**
1080 1080 * Turn a cell into a Markdown cell.
1081 1081 *
1082 1082 * @method to_markdown
1083 1083 * @param {Number} [index] A cell's index
1084 1084 */
1085 1085 Notebook.prototype.to_markdown = function (index) {
1086 1086 var i = this.index_or_selected(index);
1087 1087 if (this.is_valid_cell_index(i)) {
1088 1088 var source_cell = this.get_cell(i);
1089 1089
1090 1090 if (!(source_cell instanceof textcell.MarkdownCell)) {
1091 1091 var target_cell = this.insert_cell_below('markdown',i);
1092 1092 var text = source_cell.get_text();
1093 1093
1094 1094 if (text === source_cell.placeholder) {
1095 1095 text = '';
1096 1096 }
1097 1097 // metadata
1098 1098 target_cell.metadata = source_cell.metadata;
1099 1099 // We must show the editor before setting its contents
1100 1100 target_cell.unrender();
1101 1101 target_cell.set_text(text);
1102 1102 // make this value the starting point, so that we can only undo
1103 1103 // to this state, instead of a blank cell
1104 1104 target_cell.code_mirror.clearHistory();
1105 1105 source_cell.element.remove();
1106 1106 this.select(i);
1107 1107 if ((source_cell instanceof textcell.TextCell) && source_cell.rendered) {
1108 1108 target_cell.render();
1109 1109 }
1110 1110 var cursor = source_cell.code_mirror.getCursor();
1111 1111 target_cell.code_mirror.setCursor(cursor);
1112 1112 this.set_dirty(true);
1113 1113 }
1114 1114 }
1115 1115 };
1116 1116
1117 1117 /**
1118 1118 * Turn a cell into a raw text cell.
1119 1119 *
1120 1120 * @method to_raw
1121 1121 * @param {Number} [index] A cell's index
1122 1122 */
1123 1123 Notebook.prototype.to_raw = function (index) {
1124 1124 var i = this.index_or_selected(index);
1125 1125 if (this.is_valid_cell_index(i)) {
1126 1126 var target_cell = null;
1127 1127 var source_cell = this.get_cell(i);
1128 1128
1129 1129 if (!(source_cell instanceof textcell.RawCell)) {
1130 1130 target_cell = this.insert_cell_below('raw',i);
1131 1131 var text = source_cell.get_text();
1132 1132 if (text === source_cell.placeholder) {
1133 1133 text = '';
1134 1134 }
1135 1135 //metadata
1136 1136 target_cell.metadata = source_cell.metadata;
1137 1137 // We must show the editor before setting its contents
1138 1138 target_cell.unrender();
1139 1139 target_cell.set_text(text);
1140 1140 // make this value the starting point, so that we can only undo
1141 1141 // to this state, instead of a blank cell
1142 1142 target_cell.code_mirror.clearHistory();
1143 1143 source_cell.element.remove();
1144 1144 this.select(i);
1145 1145 var cursor = source_cell.code_mirror.getCursor();
1146 1146 target_cell.code_mirror.setCursor(cursor);
1147 1147 this.set_dirty(true);
1148 1148 }
1149 1149 }
1150 1150 };
1151 1151
1152 1152 Notebook.prototype._warn_heading = function () {
1153 1153 /**
1154 1154 * warn about heading cells being removed
1155 1155 */
1156 1156 dialog.modal({
1157 1157 notebook: this,
1158 1158 keyboard_manager: this.keyboard_manager,
1159 1159 title : "Use markdown headings",
1160 1160 body : $("<p/>").text(
1161 1161 'IPython no longer uses special heading cells. ' +
1162 1162 'Instead, write your headings in Markdown cells using # characters:'
1163 1163 ).append($('<pre/>').text(
1164 1164 '## This is a level 2 heading'
1165 1165 )),
1166 1166 buttons : {
1167 1167 "OK" : {}
1168 1168 }
1169 1169 });
1170 1170 };
1171 1171
1172 1172 /**
1173 1173 * Turn a cell into a markdown cell with a heading.
1174 1174 *
1175 1175 * @method to_heading
1176 1176 * @param {Number} [index] A cell's index
1177 1177 * @param {Number} [level] A heading level (e.g., 1 for h1)
1178 1178 */
1179 1179 Notebook.prototype.to_heading = function (index, level) {
1180 1180 this.to_markdown(index);
1181 1181 level = level || 1;
1182 1182 var i = this.index_or_selected(index);
1183 1183 if (this.is_valid_cell_index(i)) {
1184 1184 var cell = this.get_cell(i);
1185 1185 cell.set_heading_level(level);
1186 1186 this.set_dirty(true);
1187 1187 }
1188 1188 };
1189 1189
1190 1190
1191 1191 // Cut/Copy/Paste
1192 1192
1193 1193 /**
1194 1194 * Enable UI elements for pasting cells.
1195 1195 *
1196 1196 * @method enable_paste
1197 1197 */
1198 1198 Notebook.prototype.enable_paste = function () {
1199 1199 var that = this;
1200 1200 if (!this.paste_enabled) {
1201 1201 $('#paste_cell_replace').removeClass('disabled')
1202 1202 .on('click', function () {that.paste_cell_replace();});
1203 1203 $('#paste_cell_above').removeClass('disabled')
1204 1204 .on('click', function () {that.paste_cell_above();});
1205 1205 $('#paste_cell_below').removeClass('disabled')
1206 1206 .on('click', function () {that.paste_cell_below();});
1207 1207 this.paste_enabled = true;
1208 1208 }
1209 1209 };
1210 1210
1211 1211 /**
1212 1212 * Disable UI elements for pasting cells.
1213 1213 *
1214 1214 * @method disable_paste
1215 1215 */
1216 1216 Notebook.prototype.disable_paste = function () {
1217 1217 if (this.paste_enabled) {
1218 1218 $('#paste_cell_replace').addClass('disabled').off('click');
1219 1219 $('#paste_cell_above').addClass('disabled').off('click');
1220 1220 $('#paste_cell_below').addClass('disabled').off('click');
1221 1221 this.paste_enabled = false;
1222 1222 }
1223 1223 };
1224 1224
1225 1225 /**
1226 1226 * Cut a cell.
1227 1227 *
1228 1228 * @method cut_cell
1229 1229 */
1230 1230 Notebook.prototype.cut_cell = function () {
1231 1231 this.copy_cell();
1232 1232 this.delete_cell();
1233 1233 };
1234 1234
1235 1235 /**
1236 1236 * Copy a cell.
1237 1237 *
1238 1238 * @method copy_cell
1239 1239 */
1240 1240 Notebook.prototype.copy_cell = function () {
1241 1241 var cell = this.get_selected_cell();
1242 1242 this.clipboard = cell.toJSON();
1243 1243 // remove undeletable status from the copied cell
1244 1244 if (this.clipboard.metadata.deletable !== undefined) {
1245 1245 delete this.clipboard.metadata.deletable;
1246 1246 }
1247 1247 this.enable_paste();
1248 1248 };
1249 1249
1250 1250 /**
1251 1251 * Replace the selected cell with a cell in the clipboard.
1252 1252 *
1253 1253 * @method paste_cell_replace
1254 1254 */
1255 1255 Notebook.prototype.paste_cell_replace = function () {
1256 1256 if (this.clipboard !== null && this.paste_enabled) {
1257 1257 var cell_data = this.clipboard;
1258 1258 var new_cell = this.insert_cell_above(cell_data.cell_type);
1259 1259 new_cell.fromJSON(cell_data);
1260 1260 var old_cell = this.get_next_cell(new_cell);
1261 1261 this.delete_cell(this.find_cell_index(old_cell));
1262 1262 this.select(this.find_cell_index(new_cell));
1263 1263 }
1264 1264 };
1265 1265
1266 1266 /**
1267 1267 * Paste a cell from the clipboard above the selected cell.
1268 1268 *
1269 1269 * @method paste_cell_above
1270 1270 */
1271 1271 Notebook.prototype.paste_cell_above = function () {
1272 1272 if (this.clipboard !== null && this.paste_enabled) {
1273 1273 var cell_data = this.clipboard;
1274 1274 var new_cell = this.insert_cell_above(cell_data.cell_type);
1275 1275 new_cell.fromJSON(cell_data);
1276 1276 new_cell.focus_cell();
1277 1277 }
1278 1278 };
1279 1279
1280 1280 /**
1281 1281 * Paste a cell from the clipboard below the selected cell.
1282 1282 *
1283 1283 * @method paste_cell_below
1284 1284 */
1285 1285 Notebook.prototype.paste_cell_below = function () {
1286 1286 if (this.clipboard !== null && this.paste_enabled) {
1287 1287 var cell_data = this.clipboard;
1288 1288 var new_cell = this.insert_cell_below(cell_data.cell_type);
1289 1289 new_cell.fromJSON(cell_data);
1290 1290 new_cell.focus_cell();
1291 1291 }
1292 1292 };
1293 1293
1294 1294 // Split/merge
1295 1295
1296 1296 /**
1297 1297 * Split the selected cell into two, at the cursor.
1298 1298 *
1299 1299 * @method split_cell
1300 1300 */
1301 1301 Notebook.prototype.split_cell = function () {
1302 1302 var cell = this.get_selected_cell();
1303 1303 if (cell.is_splittable()) {
1304 1304 var texta = cell.get_pre_cursor();
1305 1305 var textb = cell.get_post_cursor();
1306 1306 cell.set_text(textb);
1307 1307 var new_cell = this.insert_cell_above(cell.cell_type);
1308 1308 // Unrender the new cell so we can call set_text.
1309 1309 new_cell.unrender();
1310 1310 new_cell.set_text(texta);
1311 1311 }
1312 1312 };
1313 1313
1314 1314 /**
1315 1315 * Combine the selected cell into the cell above it.
1316 1316 *
1317 1317 * @method merge_cell_above
1318 1318 */
1319 1319 Notebook.prototype.merge_cell_above = function () {
1320 1320 var index = this.get_selected_index();
1321 1321 var cell = this.get_cell(index);
1322 1322 var render = cell.rendered;
1323 1323 if (!cell.is_mergeable()) {
1324 1324 return;
1325 1325 }
1326 1326 if (index > 0) {
1327 1327 var upper_cell = this.get_cell(index-1);
1328 1328 if (!upper_cell.is_mergeable()) {
1329 1329 return;
1330 1330 }
1331 1331 var upper_text = upper_cell.get_text();
1332 1332 var text = cell.get_text();
1333 1333 if (cell instanceof codecell.CodeCell) {
1334 1334 cell.set_text(upper_text+'\n'+text);
1335 1335 } else {
1336 1336 cell.unrender(); // Must unrender before we set_text.
1337 1337 cell.set_text(upper_text+'\n\n'+text);
1338 1338 if (render) {
1339 1339 // The rendered state of the final cell should match
1340 1340 // that of the original selected cell;
1341 1341 cell.render();
1342 1342 }
1343 1343 }
1344 1344 this.delete_cell(index-1);
1345 1345 this.select(this.find_cell_index(cell));
1346 1346 }
1347 1347 };
1348 1348
1349 1349 /**
1350 1350 * Combine the selected cell into the cell below it.
1351 1351 *
1352 1352 * @method merge_cell_below
1353 1353 */
1354 1354 Notebook.prototype.merge_cell_below = function () {
1355 1355 var index = this.get_selected_index();
1356 1356 var cell = this.get_cell(index);
1357 1357 var render = cell.rendered;
1358 1358 if (!cell.is_mergeable()) {
1359 1359 return;
1360 1360 }
1361 1361 if (index < this.ncells()-1) {
1362 1362 var lower_cell = this.get_cell(index+1);
1363 1363 if (!lower_cell.is_mergeable()) {
1364 1364 return;
1365 1365 }
1366 1366 var lower_text = lower_cell.get_text();
1367 1367 var text = cell.get_text();
1368 1368 if (cell instanceof codecell.CodeCell) {
1369 1369 cell.set_text(text+'\n'+lower_text);
1370 1370 } else {
1371 1371 cell.unrender(); // Must unrender before we set_text.
1372 1372 cell.set_text(text+'\n\n'+lower_text);
1373 1373 if (render) {
1374 1374 // The rendered state of the final cell should match
1375 1375 // that of the original selected cell;
1376 1376 cell.render();
1377 1377 }
1378 1378 }
1379 1379 this.delete_cell(index+1);
1380 1380 this.select(this.find_cell_index(cell));
1381 1381 }
1382 1382 };
1383 1383
1384 1384
1385 1385 // Cell collapsing and output clearing
1386 1386
1387 1387 /**
1388 1388 * Hide a cell's output.
1389 1389 *
1390 1390 * @method collapse_output
1391 1391 * @param {Number} index A cell's numeric index
1392 1392 */
1393 1393 Notebook.prototype.collapse_output = function (index) {
1394 1394 var i = this.index_or_selected(index);
1395 1395 var cell = this.get_cell(i);
1396 1396 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1397 1397 cell.collapse_output();
1398 1398 this.set_dirty(true);
1399 1399 }
1400 1400 };
1401 1401
1402 1402 /**
1403 1403 * Hide each code cell's output area.
1404 1404 *
1405 1405 * @method collapse_all_output
1406 1406 */
1407 1407 Notebook.prototype.collapse_all_output = function () {
1408 1408 this.get_cells().map(function (cell, i) {
1409 1409 if (cell instanceof codecell.CodeCell) {
1410 1410 cell.collapse_output();
1411 1411 }
1412 1412 });
1413 1413 // this should not be set if the `collapse` key is removed from nbformat
1414 1414 this.set_dirty(true);
1415 1415 };
1416 1416
1417 1417 /**
1418 1418 * Show a cell's output.
1419 1419 *
1420 1420 * @method expand_output
1421 1421 * @param {Number} index A cell's numeric index
1422 1422 */
1423 1423 Notebook.prototype.expand_output = function (index) {
1424 1424 var i = this.index_or_selected(index);
1425 1425 var cell = this.get_cell(i);
1426 1426 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1427 1427 cell.expand_output();
1428 1428 this.set_dirty(true);
1429 1429 }
1430 1430 };
1431 1431
1432 1432 /**
1433 1433 * Expand each code cell's output area, and remove scrollbars.
1434 1434 *
1435 1435 * @method expand_all_output
1436 1436 */
1437 1437 Notebook.prototype.expand_all_output = function () {
1438 1438 this.get_cells().map(function (cell, i) {
1439 1439 if (cell instanceof codecell.CodeCell) {
1440 1440 cell.expand_output();
1441 1441 }
1442 1442 });
1443 1443 // this should not be set if the `collapse` key is removed from nbformat
1444 1444 this.set_dirty(true);
1445 1445 };
1446 1446
1447 1447 /**
1448 1448 * Clear the selected CodeCell's output area.
1449 1449 *
1450 1450 * @method clear_output
1451 1451 * @param {Number} index A cell's numeric index
1452 1452 */
1453 1453 Notebook.prototype.clear_output = function (index) {
1454 1454 var i = this.index_or_selected(index);
1455 1455 var cell = this.get_cell(i);
1456 1456 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1457 1457 cell.clear_output();
1458 1458 this.set_dirty(true);
1459 1459 }
1460 1460 };
1461 1461
1462 1462 /**
1463 1463 * Clear each code cell's output area.
1464 1464 *
1465 1465 * @method clear_all_output
1466 1466 */
1467 1467 Notebook.prototype.clear_all_output = function () {
1468 1468 this.get_cells().map(function (cell, i) {
1469 1469 if (cell instanceof codecell.CodeCell) {
1470 1470 cell.clear_output();
1471 1471 }
1472 1472 });
1473 1473 this.set_dirty(true);
1474 1474 };
1475 1475
1476 1476 /**
1477 1477 * Scroll the selected CodeCell's output area.
1478 1478 *
1479 1479 * @method scroll_output
1480 1480 * @param {Number} index A cell's numeric index
1481 1481 */
1482 1482 Notebook.prototype.scroll_output = function (index) {
1483 1483 var i = this.index_or_selected(index);
1484 1484 var cell = this.get_cell(i);
1485 1485 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1486 1486 cell.scroll_output();
1487 1487 this.set_dirty(true);
1488 1488 }
1489 1489 };
1490 1490
1491 1491 /**
1492 1492 * Expand each code cell's output area, and add a scrollbar for long output.
1493 1493 *
1494 1494 * @method scroll_all_output
1495 1495 */
1496 1496 Notebook.prototype.scroll_all_output = function () {
1497 1497 this.get_cells().map(function (cell, i) {
1498 1498 if (cell instanceof codecell.CodeCell) {
1499 1499 cell.scroll_output();
1500 1500 }
1501 1501 });
1502 1502 // this should not be set if the `collapse` key is removed from nbformat
1503 1503 this.set_dirty(true);
1504 1504 };
1505 1505
1506 1506 /** Toggle whether a cell's output is collapsed or expanded.
1507 1507 *
1508 1508 * @method toggle_output
1509 1509 * @param {Number} index A cell's numeric index
1510 1510 */
1511 1511 Notebook.prototype.toggle_output = function (index) {
1512 1512 var i = this.index_or_selected(index);
1513 1513 var cell = this.get_cell(i);
1514 1514 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1515 1515 cell.toggle_output();
1516 1516 this.set_dirty(true);
1517 1517 }
1518 1518 };
1519 1519
1520 1520 /**
1521 1521 * Hide/show the output of all cells.
1522 1522 *
1523 1523 * @method toggle_all_output
1524 1524 */
1525 1525 Notebook.prototype.toggle_all_output = function () {
1526 1526 this.get_cells().map(function (cell, i) {
1527 1527 if (cell instanceof codecell.CodeCell) {
1528 1528 cell.toggle_output();
1529 1529 }
1530 1530 });
1531 1531 // this should not be set if the `collapse` key is removed from nbformat
1532 1532 this.set_dirty(true);
1533 1533 };
1534 1534
1535 1535 /**
1536 1536 * Toggle a scrollbar for long cell outputs.
1537 1537 *
1538 1538 * @method toggle_output_scroll
1539 1539 * @param {Number} index A cell's numeric index
1540 1540 */
1541 1541 Notebook.prototype.toggle_output_scroll = function (index) {
1542 1542 var i = this.index_or_selected(index);
1543 1543 var cell = this.get_cell(i);
1544 1544 if (cell !== null && (cell instanceof codecell.CodeCell)) {
1545 1545 cell.toggle_output_scroll();
1546 1546 this.set_dirty(true);
1547 1547 }
1548 1548 };
1549 1549
1550 1550 /**
1551 1551 * Toggle the scrolling of long output on all cells.
1552 1552 *
1553 1553 * @method toggle_all_output_scrolling
1554 1554 */
1555 1555 Notebook.prototype.toggle_all_output_scroll = function () {
1556 1556 this.get_cells().map(function (cell, i) {
1557 1557 if (cell instanceof codecell.CodeCell) {
1558 1558 cell.toggle_output_scroll();
1559 1559 }
1560 1560 });
1561 1561 // this should not be set if the `collapse` key is removed from nbformat
1562 1562 this.set_dirty(true);
1563 1563 };
1564 1564
1565 1565 // Other cell functions: line numbers, ...
1566 1566
1567 1567 /**
1568 1568 * Toggle line numbers in the selected cell's input area.
1569 1569 *
1570 1570 * @method cell_toggle_line_numbers
1571 1571 */
1572 1572 Notebook.prototype.cell_toggle_line_numbers = function() {
1573 1573 this.get_selected_cell().toggle_line_numbers();
1574 1574 };
1575 1575
1576 1576 /**
1577 1577 * Set the codemirror mode for all code cells, including the default for
1578 1578 * new code cells.
1579 1579 *
1580 1580 * @method set_codemirror_mode
1581 1581 */
1582 1582 Notebook.prototype.set_codemirror_mode = function(newmode){
1583 1583 if (newmode === this.codemirror_mode) {
1584 1584 return;
1585 1585 }
1586 1586 this.codemirror_mode = newmode;
1587 1587 codecell.CodeCell.options_default.cm_config.mode = newmode;
1588 var modename = newmode.mode || newmode.name || newmode;
1589 1588
1590 1589 var that = this;
1591 utils.requireCodeMirrorMode(modename, function () {
1590 utils.requireCodeMirrorMode(newmode, function (spec) {
1592 1591 that.get_cells().map(function(cell, i) {
1593 1592 if (cell.cell_type === 'code'){
1594 cell.code_mirror.setOption('mode', newmode);
1593 cell.code_mirror.setOption('mode', spec);
1595 1594 // This is currently redundant, because cm_config ends up as
1596 1595 // codemirror's own .options object, but I don't want to
1597 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 1603 // Session related things
1605 1604
1606 1605 /**
1607 1606 * Start a new session and set it on each code cell.
1608 1607 *
1609 1608 * @method start_session
1610 1609 */
1611 1610 Notebook.prototype.start_session = function (kernel_name) {
1612 1611 if (this._session_starting) {
1613 1612 throw new session.SessionAlreadyStarting();
1614 1613 }
1615 1614 this._session_starting = true;
1616 1615
1617 1616 var options = {
1618 1617 base_url: this.base_url,
1619 1618 ws_url: this.ws_url,
1620 1619 notebook_path: this.notebook_path,
1621 1620 notebook_name: this.notebook_name,
1622 1621 kernel_name: kernel_name,
1623 1622 notebook: this
1624 1623 };
1625 1624
1626 1625 var success = $.proxy(this._session_started, this);
1627 1626 var failure = $.proxy(this._session_start_failed, this);
1628 1627
1629 1628 if (this.session !== null) {
1630 1629 this.session.restart(options, success, failure);
1631 1630 } else {
1632 1631 this.session = new session.Session(options);
1633 1632 this.session.start(success, failure);
1634 1633 }
1635 1634 };
1636 1635
1637 1636
1638 1637 /**
1639 1638 * Once a session is started, link the code cells to the kernel and pass the
1640 1639 * comm manager to the widget manager
1641 1640 *
1642 1641 */
1643 1642 Notebook.prototype._session_started = function (){
1644 1643 this._session_starting = false;
1645 1644 this.kernel = this.session.kernel;
1646 1645 var ncells = this.ncells();
1647 1646 for (var i=0; i<ncells; i++) {
1648 1647 var cell = this.get_cell(i);
1649 1648 if (cell instanceof codecell.CodeCell) {
1650 1649 cell.set_kernel(this.session.kernel);
1651 1650 }
1652 1651 }
1653 1652 };
1654 1653 Notebook.prototype._session_start_failed = function (jqxhr, status, error){
1655 1654 this._session_starting = false;
1656 1655 utils.log_ajax_error(jqxhr, status, error);
1657 1656 };
1658 1657
1659 1658 /**
1660 1659 * Prompt the user to restart the IPython kernel.
1661 1660 *
1662 1661 * @method restart_kernel
1663 1662 */
1664 1663 Notebook.prototype.restart_kernel = function () {
1665 1664 var that = this;
1666 1665 dialog.modal({
1667 1666 notebook: this,
1668 1667 keyboard_manager: this.keyboard_manager,
1669 1668 title : "Restart kernel or continue running?",
1670 1669 body : $("<p/>").text(
1671 1670 'Do you want to restart the current kernel? You will lose all variables defined in it.'
1672 1671 ),
1673 1672 buttons : {
1674 1673 "Continue running" : {},
1675 1674 "Restart" : {
1676 1675 "class" : "btn-danger",
1677 1676 "click" : function() {
1678 1677 that.kernel.restart();
1679 1678 }
1680 1679 }
1681 1680 }
1682 1681 });
1683 1682 };
1684 1683
1685 1684 /**
1686 1685 * Execute or render cell outputs and go into command mode.
1687 1686 *
1688 1687 * @method execute_cell
1689 1688 */
1690 1689 Notebook.prototype.execute_cell = function () {
1691 1690 /**
1692 1691 * mode = shift, ctrl, alt
1693 1692 */
1694 1693 var cell = this.get_selected_cell();
1695 1694
1696 1695 cell.execute();
1697 1696 this.command_mode();
1698 1697 this.set_dirty(true);
1699 1698 };
1700 1699
1701 1700 /**
1702 1701 * Execute or render cell outputs and insert a new cell below.
1703 1702 *
1704 1703 * @method execute_cell_and_insert_below
1705 1704 */
1706 1705 Notebook.prototype.execute_cell_and_insert_below = function () {
1707 1706 var cell = this.get_selected_cell();
1708 1707 var cell_index = this.find_cell_index(cell);
1709 1708
1710 1709 cell.execute();
1711 1710
1712 1711 // If we are at the end always insert a new cell and return
1713 1712 if (cell_index === (this.ncells()-1)) {
1714 1713 this.command_mode();
1715 1714 this.insert_cell_below();
1716 1715 this.select(cell_index+1);
1717 1716 this.edit_mode();
1718 1717 this.scroll_to_bottom();
1719 1718 this.set_dirty(true);
1720 1719 return;
1721 1720 }
1722 1721
1723 1722 this.command_mode();
1724 1723 this.insert_cell_below();
1725 1724 this.select(cell_index+1);
1726 1725 this.edit_mode();
1727 1726 this.set_dirty(true);
1728 1727 };
1729 1728
1730 1729 /**
1731 1730 * Execute or render cell outputs and select the next cell.
1732 1731 *
1733 1732 * @method execute_cell_and_select_below
1734 1733 */
1735 1734 Notebook.prototype.execute_cell_and_select_below = function () {
1736 1735
1737 1736 var cell = this.get_selected_cell();
1738 1737 var cell_index = this.find_cell_index(cell);
1739 1738
1740 1739 cell.execute();
1741 1740
1742 1741 // If we are at the end always insert a new cell and return
1743 1742 if (cell_index === (this.ncells()-1)) {
1744 1743 this.command_mode();
1745 1744 this.insert_cell_below();
1746 1745 this.select(cell_index+1);
1747 1746 this.edit_mode();
1748 1747 this.scroll_to_bottom();
1749 1748 this.set_dirty(true);
1750 1749 return;
1751 1750 }
1752 1751
1753 1752 this.command_mode();
1754 1753 this.select(cell_index+1);
1755 1754 this.focus_cell();
1756 1755 this.set_dirty(true);
1757 1756 };
1758 1757
1759 1758 /**
1760 1759 * Execute all cells below the selected cell.
1761 1760 *
1762 1761 * @method execute_cells_below
1763 1762 */
1764 1763 Notebook.prototype.execute_cells_below = function () {
1765 1764 this.execute_cell_range(this.get_selected_index(), this.ncells());
1766 1765 this.scroll_to_bottom();
1767 1766 };
1768 1767
1769 1768 /**
1770 1769 * Execute all cells above the selected cell.
1771 1770 *
1772 1771 * @method execute_cells_above
1773 1772 */
1774 1773 Notebook.prototype.execute_cells_above = function () {
1775 1774 this.execute_cell_range(0, this.get_selected_index());
1776 1775 };
1777 1776
1778 1777 /**
1779 1778 * Execute all cells.
1780 1779 *
1781 1780 * @method execute_all_cells
1782 1781 */
1783 1782 Notebook.prototype.execute_all_cells = function () {
1784 1783 this.execute_cell_range(0, this.ncells());
1785 1784 this.scroll_to_bottom();
1786 1785 };
1787 1786
1788 1787 /**
1789 1788 * Execute a contiguous range of cells.
1790 1789 *
1791 1790 * @method execute_cell_range
1792 1791 * @param {Number} start Index of the first cell to execute (inclusive)
1793 1792 * @param {Number} end Index of the last cell to execute (exclusive)
1794 1793 */
1795 1794 Notebook.prototype.execute_cell_range = function (start, end) {
1796 1795 this.command_mode();
1797 1796 for (var i=start; i<end; i++) {
1798 1797 this.select(i);
1799 1798 this.execute_cell();
1800 1799 }
1801 1800 };
1802 1801
1803 1802 // Persistance and loading
1804 1803
1805 1804 /**
1806 1805 * Getter method for this notebook's name.
1807 1806 *
1808 1807 * @method get_notebook_name
1809 1808 * @return {String} This notebook's name (excluding file extension)
1810 1809 */
1811 1810 Notebook.prototype.get_notebook_name = function () {
1812 1811 var nbname = this.notebook_name.substring(0,this.notebook_name.length-6);
1813 1812 return nbname;
1814 1813 };
1815 1814
1816 1815 /**
1817 1816 * Setter method for this notebook's name.
1818 1817 *
1819 1818 * @method set_notebook_name
1820 1819 * @param {String} name A new name for this notebook
1821 1820 */
1822 1821 Notebook.prototype.set_notebook_name = function (name) {
1823 1822 var parent = utils.url_path_split(this.notebook_path)[0];
1824 1823 this.notebook_name = name;
1825 1824 this.notebook_path = utils.url_path_join(parent, name);
1826 1825 };
1827 1826
1828 1827 /**
1829 1828 * Check that a notebook's name is valid.
1830 1829 *
1831 1830 * @method test_notebook_name
1832 1831 * @param {String} nbname A name for this notebook
1833 1832 * @return {Boolean} True if the name is valid, false if invalid
1834 1833 */
1835 1834 Notebook.prototype.test_notebook_name = function (nbname) {
1836 1835 nbname = nbname || '';
1837 1836 if (nbname.length>0 && !this.notebook_name_blacklist_re.test(nbname)) {
1838 1837 return true;
1839 1838 } else {
1840 1839 return false;
1841 1840 }
1842 1841 };
1843 1842
1844 1843 /**
1845 1844 * Load a notebook from JSON (.ipynb).
1846 1845 *
1847 1846 * @method fromJSON
1848 1847 * @param {Object} data JSON representation of a notebook
1849 1848 */
1850 1849 Notebook.prototype.fromJSON = function (data) {
1851 1850
1852 1851 var content = data.content;
1853 1852 var ncells = this.ncells();
1854 1853 var i;
1855 1854 for (i=0; i<ncells; i++) {
1856 1855 // Always delete cell 0 as they get renumbered as they are deleted.
1857 1856 this.delete_cell(0);
1858 1857 }
1859 1858 // Save the metadata and name.
1860 1859 this.metadata = content.metadata;
1861 1860 this.notebook_name = data.name;
1862 1861 this.notebook_path = data.path;
1863 1862 var trusted = true;
1864 1863
1865 1864 // Trigger an event changing the kernel spec - this will set the default
1866 1865 // codemirror mode
1867 1866 if (this.metadata.kernelspec !== undefined) {
1868 1867 this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
1869 1868 }
1870 1869
1871 1870 // Set the codemirror mode from language_info metadata
1872 1871 if (this.metadata.language_info !== undefined) {
1873 1872 var langinfo = this.metadata.language_info;
1874 1873 // Mode 'null' should be plain, unhighlighted text.
1875 1874 var cm_mode = langinfo.codemirror_mode || langinfo.name || 'null';
1876 1875 this.set_codemirror_mode(cm_mode);
1877 1876 }
1878 1877
1879 1878 var new_cells = content.cells;
1880 1879 ncells = new_cells.length;
1881 1880 var cell_data = null;
1882 1881 var new_cell = null;
1883 1882 for (i=0; i<ncells; i++) {
1884 1883 cell_data = new_cells[i];
1885 1884 new_cell = this.insert_cell_at_index(cell_data.cell_type, i);
1886 1885 new_cell.fromJSON(cell_data);
1887 1886 if (new_cell.cell_type == 'code' && !new_cell.output_area.trusted) {
1888 1887 trusted = false;
1889 1888 }
1890 1889 }
1891 1890 if (trusted !== this.trusted) {
1892 1891 this.trusted = trusted;
1893 1892 this.events.trigger("trust_changed.Notebook", trusted);
1894 1893 }
1895 1894 };
1896 1895
1897 1896 /**
1898 1897 * Dump this notebook into a JSON-friendly object.
1899 1898 *
1900 1899 * @method toJSON
1901 1900 * @return {Object} A JSON-friendly representation of this notebook.
1902 1901 */
1903 1902 Notebook.prototype.toJSON = function () {
1904 1903 /**
1905 1904 * remove the conversion indicator, which only belongs in-memory
1906 1905 */
1907 1906 delete this.metadata.orig_nbformat;
1908 1907 delete this.metadata.orig_nbformat_minor;
1909 1908
1910 1909 var cells = this.get_cells();
1911 1910 var ncells = cells.length;
1912 1911 var cell_array = new Array(ncells);
1913 1912 var trusted = true;
1914 1913 for (var i=0; i<ncells; i++) {
1915 1914 var cell = cells[i];
1916 1915 if (cell.cell_type == 'code' && !cell.output_area.trusted) {
1917 1916 trusted = false;
1918 1917 }
1919 1918 cell_array[i] = cell.toJSON();
1920 1919 }
1921 1920 var data = {
1922 1921 cells: cell_array,
1923 1922 metadata: this.metadata,
1924 1923 nbformat: this.nbformat,
1925 1924 nbformat_minor: this.nbformat_minor
1926 1925 };
1927 1926 if (trusted != this.trusted) {
1928 1927 this.trusted = trusted;
1929 1928 this.events.trigger("trust_changed.Notebook", trusted);
1930 1929 }
1931 1930 return data;
1932 1931 };
1933 1932
1934 1933 /**
1935 1934 * Start an autosave timer, for periodically saving the notebook.
1936 1935 *
1937 1936 * @method set_autosave_interval
1938 1937 * @param {Integer} interval the autosave interval in milliseconds
1939 1938 */
1940 1939 Notebook.prototype.set_autosave_interval = function (interval) {
1941 1940 var that = this;
1942 1941 // clear previous interval, so we don't get simultaneous timers
1943 1942 if (this.autosave_timer) {
1944 1943 clearInterval(this.autosave_timer);
1945 1944 }
1946 1945 if (!this.writable) {
1947 1946 // disable autosave if not writable
1948 1947 interval = 0;
1949 1948 }
1950 1949
1951 1950 this.autosave_interval = this.minimum_autosave_interval = interval;
1952 1951 if (interval) {
1953 1952 this.autosave_timer = setInterval(function() {
1954 1953 if (that.dirty) {
1955 1954 that.save_notebook();
1956 1955 }
1957 1956 }, interval);
1958 1957 this.events.trigger("autosave_enabled.Notebook", interval);
1959 1958 } else {
1960 1959 this.autosave_timer = null;
1961 1960 this.events.trigger("autosave_disabled.Notebook");
1962 1961 }
1963 1962 };
1964 1963
1965 1964 /**
1966 1965 * Save this notebook on the server. This becomes a notebook instance's
1967 1966 * .save_notebook method *after* the entire notebook has been loaded.
1968 1967 *
1969 1968 * @method save_notebook
1970 1969 */
1971 1970 Notebook.prototype.save_notebook = function () {
1972 1971 if (!this._fully_loaded) {
1973 1972 this.events.trigger('notebook_save_failed.Notebook',
1974 1973 new Error("Load failed, save is disabled")
1975 1974 );
1976 1975 return;
1977 1976 } else if (!this.writable) {
1978 1977 this.events.trigger('notebook_save_failed.Notebook',
1979 1978 new Error("Notebook is read-only")
1980 1979 );
1981 1980 return;
1982 1981 }
1983 1982
1984 1983 // Create a JSON model to be sent to the server.
1985 1984 var model = {
1986 1985 type : "notebook",
1987 1986 content : this.toJSON()
1988 1987 };
1989 1988 // time the ajax call for autosave tuning purposes.
1990 1989 var start = new Date().getTime();
1991 1990
1992 1991 var that = this;
1993 1992 return this.contents.save(this.notebook_path, model).then(
1994 1993 $.proxy(this.save_notebook_success, this, start),
1995 1994 function (error) {
1996 1995 that.events.trigger('notebook_save_failed.Notebook', error);
1997 1996 }
1998 1997 );
1999 1998 };
2000 1999
2001 2000 /**
2002 2001 * Success callback for saving a notebook.
2003 2002 *
2004 2003 * @method save_notebook_success
2005 2004 * @param {Integer} start Time when the save request start
2006 2005 * @param {Object} data JSON representation of a notebook
2007 2006 */
2008 2007 Notebook.prototype.save_notebook_success = function (start, data) {
2009 2008 this.set_dirty(false);
2010 2009 if (data.message) {
2011 2010 // save succeeded, but validation failed.
2012 2011 var body = $("<div>");
2013 2012 var title = "Notebook validation failed";
2014 2013
2015 2014 body.append($("<p>").text(
2016 2015 "The save operation succeeded," +
2017 2016 " but the notebook does not appear to be valid." +
2018 2017 " The validation error was:"
2019 2018 )).append($("<div>").addClass("validation-error").append(
2020 2019 $("<pre>").text(data.message)
2021 2020 ));
2022 2021 dialog.modal({
2023 2022 notebook: this,
2024 2023 keyboard_manager: this.keyboard_manager,
2025 2024 title: title,
2026 2025 body: body,
2027 2026 buttons : {
2028 2027 OK : {
2029 2028 "class" : "btn-primary"
2030 2029 }
2031 2030 }
2032 2031 });
2033 2032 }
2034 2033 this.events.trigger('notebook_saved.Notebook');
2035 2034 this._update_autosave_interval(start);
2036 2035 if (this._checkpoint_after_save) {
2037 2036 this.create_checkpoint();
2038 2037 this._checkpoint_after_save = false;
2039 2038 }
2040 2039 };
2041 2040
2042 2041 /**
2043 2042 * update the autosave interval based on how long the last save took
2044 2043 *
2045 2044 * @method _update_autosave_interval
2046 2045 * @param {Integer} timestamp when the save request started
2047 2046 */
2048 2047 Notebook.prototype._update_autosave_interval = function (start) {
2049 2048 var duration = (new Date().getTime() - start);
2050 2049 if (this.autosave_interval) {
2051 2050 // new save interval: higher of 10x save duration or parameter (default 30 seconds)
2052 2051 var interval = Math.max(10 * duration, this.minimum_autosave_interval);
2053 2052 // round to 10 seconds, otherwise we will be setting a new interval too often
2054 2053 interval = 10000 * Math.round(interval / 10000);
2055 2054 // set new interval, if it's changed
2056 2055 if (interval != this.autosave_interval) {
2057 2056 this.set_autosave_interval(interval);
2058 2057 }
2059 2058 }
2060 2059 };
2061 2060
2062 2061 /**
2063 2062 * Explicitly trust the output of this notebook.
2064 2063 *
2065 2064 * @method trust_notebook
2066 2065 */
2067 2066 Notebook.prototype.trust_notebook = function () {
2068 2067 var body = $("<div>").append($("<p>")
2069 2068 .text("A trusted IPython notebook may execute hidden malicious code ")
2070 2069 .append($("<strong>")
2071 2070 .append(
2072 2071 $("<em>").text("when you open it")
2073 2072 )
2074 2073 ).append(".").append(
2075 2074 " Selecting trust will immediately reload this notebook in a trusted state."
2076 2075 ).append(
2077 2076 " For more information, see the "
2078 2077 ).append($("<a>").attr("href", "http://ipython.org/ipython-doc/2/notebook/security.html")
2079 2078 .text("IPython security documentation")
2080 2079 ).append(".")
2081 2080 );
2082 2081
2083 2082 var nb = this;
2084 2083 dialog.modal({
2085 2084 notebook: this,
2086 2085 keyboard_manager: this.keyboard_manager,
2087 2086 title: "Trust this notebook?",
2088 2087 body: body,
2089 2088
2090 2089 buttons: {
2091 2090 Cancel : {},
2092 2091 Trust : {
2093 2092 class : "btn-danger",
2094 2093 click : function () {
2095 2094 var cells = nb.get_cells();
2096 2095 for (var i = 0; i < cells.length; i++) {
2097 2096 var cell = cells[i];
2098 2097 if (cell.cell_type == 'code') {
2099 2098 cell.output_area.trusted = true;
2100 2099 }
2101 2100 }
2102 2101 nb.events.on('notebook_saved.Notebook', function () {
2103 2102 window.location.reload();
2104 2103 });
2105 2104 nb.save_notebook();
2106 2105 }
2107 2106 }
2108 2107 }
2109 2108 });
2110 2109 };
2111 2110
2112 2111 Notebook.prototype.copy_notebook = function () {
2113 2112 var that = this;
2114 2113 var base_url = this.base_url;
2115 2114 var w = window.open();
2116 2115 var parent = utils.url_path_split(this.notebook_path)[0];
2117 2116 this.contents.copy(this.notebook_path, parent).then(
2118 2117 function (data) {
2119 2118 w.location = utils.url_join_encode(
2120 2119 base_url, 'notebooks', data.path
2121 2120 );
2122 2121 },
2123 2122 function(error) {
2124 2123 w.close();
2125 2124 that.events.trigger('notebook_copy_failed', error);
2126 2125 }
2127 2126 );
2128 2127 };
2129 2128
2130 2129 Notebook.prototype.rename = function (new_name) {
2131 2130 if (!new_name.match(/\.ipynb$/)) {
2132 2131 new_name = new_name + ".ipynb";
2133 2132 }
2134 2133
2135 2134 var that = this;
2136 2135 var parent = utils.url_path_split(this.notebook_path)[0];
2137 2136 var new_path = utils.url_path_join(parent, new_name);
2138 2137 return this.contents.rename(this.notebook_path, new_path).then(
2139 2138 function (json) {
2140 2139 that.notebook_name = json.name;
2141 2140 that.notebook_path = json.path;
2142 2141 that.session.rename_notebook(json.path);
2143 2142 that.events.trigger('notebook_renamed.Notebook', json);
2144 2143 }
2145 2144 );
2146 2145 };
2147 2146
2148 2147 Notebook.prototype.delete = function () {
2149 2148 this.contents.delete(this.notebook_path);
2150 2149 };
2151 2150
2152 2151 /**
2153 2152 * Request a notebook's data from the server.
2154 2153 *
2155 2154 * @method load_notebook
2156 2155 * @param {String} notebook_path A notebook to load
2157 2156 */
2158 2157 Notebook.prototype.load_notebook = function (notebook_path) {
2159 2158 this.notebook_path = notebook_path;
2160 2159 this.notebook_name = utils.url_path_split(this.notebook_path)[1];
2161 2160 this.events.trigger('notebook_loading.Notebook');
2162 2161 this.contents.get(notebook_path, {type: 'notebook'}).then(
2163 2162 $.proxy(this.load_notebook_success, this),
2164 2163 $.proxy(this.load_notebook_error, this)
2165 2164 );
2166 2165 };
2167 2166
2168 2167 /**
2169 2168 * Success callback for loading a notebook from the server.
2170 2169 *
2171 2170 * Load notebook data from the JSON response.
2172 2171 *
2173 2172 * @method load_notebook_success
2174 2173 * @param {Object} data JSON representation of a notebook
2175 2174 */
2176 2175 Notebook.prototype.load_notebook_success = function (data) {
2177 2176 var failed, msg;
2178 2177 try {
2179 2178 this.fromJSON(data);
2180 2179 } catch (e) {
2181 2180 failed = e;
2182 2181 console.log("Notebook failed to load from JSON:", e);
2183 2182 }
2184 2183 if (failed || data.message) {
2185 2184 // *either* fromJSON failed or validation failed
2186 2185 var body = $("<div>");
2187 2186 var title;
2188 2187 if (failed) {
2189 2188 title = "Notebook failed to load";
2190 2189 body.append($("<p>").text(
2191 2190 "The error was: "
2192 2191 )).append($("<div>").addClass("js-error").text(
2193 2192 failed.toString()
2194 2193 )).append($("<p>").text(
2195 2194 "See the error console for details."
2196 2195 ));
2197 2196 } else {
2198 2197 title = "Notebook validation failed";
2199 2198 }
2200 2199
2201 2200 if (data.message) {
2202 2201 if (failed) {
2203 2202 msg = "The notebook also failed validation:";
2204 2203 } else {
2205 2204 msg = "An invalid notebook may not function properly." +
2206 2205 " The validation error was:";
2207 2206 }
2208 2207 body.append($("<p>").text(
2209 2208 msg
2210 2209 )).append($("<div>").addClass("validation-error").append(
2211 2210 $("<pre>").text(data.message)
2212 2211 ));
2213 2212 }
2214 2213
2215 2214 dialog.modal({
2216 2215 notebook: this,
2217 2216 keyboard_manager: this.keyboard_manager,
2218 2217 title: title,
2219 2218 body: body,
2220 2219 buttons : {
2221 2220 OK : {
2222 2221 "class" : "btn-primary"
2223 2222 }
2224 2223 }
2225 2224 });
2226 2225 }
2227 2226 if (this.ncells() === 0) {
2228 2227 this.insert_cell_below('code');
2229 2228 this.edit_mode(0);
2230 2229 } else {
2231 2230 this.select(0);
2232 2231 this.handle_command_mode(this.get_cell(0));
2233 2232 }
2234 2233 this.set_dirty(false);
2235 2234 this.scroll_to_top();
2236 2235 this.writable = data.writable || false;
2237 2236 var nbmodel = data.content;
2238 2237 var orig_nbformat = nbmodel.metadata.orig_nbformat;
2239 2238 var orig_nbformat_minor = nbmodel.metadata.orig_nbformat_minor;
2240 2239 if (orig_nbformat !== undefined && nbmodel.nbformat !== orig_nbformat) {
2241 2240 var src;
2242 2241 if (nbmodel.nbformat > orig_nbformat) {
2243 2242 src = " an older notebook format ";
2244 2243 } else {
2245 2244 src = " a newer notebook format ";
2246 2245 }
2247 2246
2248 2247 msg = "This notebook has been converted from" + src +
2249 2248 "(v"+orig_nbformat+") to the current notebook " +
2250 2249 "format (v"+nbmodel.nbformat+"). The next time you save this notebook, the " +
2251 2250 "current notebook format will be used.";
2252 2251
2253 2252 if (nbmodel.nbformat > orig_nbformat) {
2254 2253 msg += " Older versions of IPython may not be able to read the new format.";
2255 2254 } else {
2256 2255 msg += " Some features of the original notebook may not be available.";
2257 2256 }
2258 2257 msg += " To preserve the original version, close the " +
2259 2258 "notebook without saving it.";
2260 2259 dialog.modal({
2261 2260 notebook: this,
2262 2261 keyboard_manager: this.keyboard_manager,
2263 2262 title : "Notebook converted",
2264 2263 body : msg,
2265 2264 buttons : {
2266 2265 OK : {
2267 2266 class : "btn-primary"
2268 2267 }
2269 2268 }
2270 2269 });
2271 2270 } else if (this.nbformat_minor < nbmodel.nbformat_minor) {
2272 2271 this.nbformat_minor = nbmodel.nbformat_minor;
2273 2272 }
2274 2273
2275 2274 // Create the session after the notebook is completely loaded to prevent
2276 2275 // code execution upon loading, which is a security risk.
2277 2276 if (this.session === null) {
2278 2277 var kernel_name;
2279 2278 if (this.metadata.kernelspec) {
2280 2279 var kernelspec = this.metadata.kernelspec || {};
2281 2280 kernel_name = kernelspec.name;
2282 2281 } else {
2283 2282 kernel_name = utils.get_url_param('kernel_name');
2284 2283 }
2285 2284 this.start_session(kernel_name);
2286 2285 }
2287 2286 // load our checkpoint list
2288 2287 this.list_checkpoints();
2289 2288
2290 2289 // load toolbar state
2291 2290 if (this.metadata.celltoolbar) {
2292 2291 celltoolbar.CellToolbar.global_show();
2293 2292 celltoolbar.CellToolbar.activate_preset(this.metadata.celltoolbar);
2294 2293 } else {
2295 2294 celltoolbar.CellToolbar.global_hide();
2296 2295 }
2297 2296
2298 2297 if (!this.writable) {
2299 2298 this.set_autosave_interval(0);
2300 2299 this.events.trigger('notebook_read_only.Notebook');
2301 2300 }
2302 2301
2303 2302 // now that we're fully loaded, it is safe to restore save functionality
2304 2303 this._fully_loaded = true;
2305 2304 this.events.trigger('notebook_loaded.Notebook');
2306 2305 };
2307 2306
2308 2307 /**
2309 2308 * Failure callback for loading a notebook from the server.
2310 2309 *
2311 2310 * @method load_notebook_error
2312 2311 * @param {Error} error
2313 2312 */
2314 2313 Notebook.prototype.load_notebook_error = function (error) {
2315 2314 this.events.trigger('notebook_load_failed.Notebook', error);
2316 2315 var msg;
2317 2316 if (error.name === utils.XHR_ERROR && error.xhr.status === 500) {
2318 2317 utils.log_ajax_error(error.xhr, error.xhr_status, error.xhr_error);
2319 2318 msg = "An unknown error occurred while loading this notebook. " +
2320 2319 "This version can load notebook formats " +
2321 2320 "v" + this.nbformat + " or earlier. See the server log for details.";
2322 2321 } else {
2323 2322 msg = error.message;
2324 2323 }
2325 2324 dialog.modal({
2326 2325 notebook: this,
2327 2326 keyboard_manager: this.keyboard_manager,
2328 2327 title: "Error loading notebook",
2329 2328 body : msg,
2330 2329 buttons : {
2331 2330 "OK": {}
2332 2331 }
2333 2332 });
2334 2333 };
2335 2334
2336 2335 /********************* checkpoint-related *********************/
2337 2336
2338 2337 /**
2339 2338 * Save the notebook then immediately create a checkpoint.
2340 2339 *
2341 2340 * @method save_checkpoint
2342 2341 */
2343 2342 Notebook.prototype.save_checkpoint = function () {
2344 2343 this._checkpoint_after_save = true;
2345 2344 this.save_notebook();
2346 2345 };
2347 2346
2348 2347 /**
2349 2348 * Add a checkpoint for this notebook.
2350 2349 * for use as a callback from checkpoint creation.
2351 2350 *
2352 2351 * @method add_checkpoint
2353 2352 */
2354 2353 Notebook.prototype.add_checkpoint = function (checkpoint) {
2355 2354 var found = false;
2356 2355 for (var i = 0; i < this.checkpoints.length; i++) {
2357 2356 var existing = this.checkpoints[i];
2358 2357 if (existing.id == checkpoint.id) {
2359 2358 found = true;
2360 2359 this.checkpoints[i] = checkpoint;
2361 2360 break;
2362 2361 }
2363 2362 }
2364 2363 if (!found) {
2365 2364 this.checkpoints.push(checkpoint);
2366 2365 }
2367 2366 this.last_checkpoint = this.checkpoints[this.checkpoints.length - 1];
2368 2367 };
2369 2368
2370 2369 /**
2371 2370 * List checkpoints for this notebook.
2372 2371 *
2373 2372 * @method list_checkpoints
2374 2373 */
2375 2374 Notebook.prototype.list_checkpoints = function () {
2376 2375 var that = this;
2377 2376 this.contents.list_checkpoints(this.notebook_path).then(
2378 2377 $.proxy(this.list_checkpoints_success, this),
2379 2378 function(error) {
2380 2379 that.events.trigger('list_checkpoints_failed.Notebook', error);
2381 2380 }
2382 2381 );
2383 2382 };
2384 2383
2385 2384 /**
2386 2385 * Success callback for listing checkpoints.
2387 2386 *
2388 2387 * @method list_checkpoint_success
2389 2388 * @param {Object} data JSON representation of a checkpoint
2390 2389 */
2391 2390 Notebook.prototype.list_checkpoints_success = function (data) {
2392 2391 this.checkpoints = data;
2393 2392 if (data.length) {
2394 2393 this.last_checkpoint = data[data.length - 1];
2395 2394 } else {
2396 2395 this.last_checkpoint = null;
2397 2396 }
2398 2397 this.events.trigger('checkpoints_listed.Notebook', [data]);
2399 2398 };
2400 2399
2401 2400 /**
2402 2401 * Create a checkpoint of this notebook on the server from the most recent save.
2403 2402 *
2404 2403 * @method create_checkpoint
2405 2404 */
2406 2405 Notebook.prototype.create_checkpoint = function () {
2407 2406 var that = this;
2408 2407 this.contents.create_checkpoint(this.notebook_path).then(
2409 2408 $.proxy(this.create_checkpoint_success, this),
2410 2409 function (error) {
2411 2410 that.events.trigger('checkpoint_failed.Notebook', error);
2412 2411 }
2413 2412 );
2414 2413 };
2415 2414
2416 2415 /**
2417 2416 * Success callback for creating a checkpoint.
2418 2417 *
2419 2418 * @method create_checkpoint_success
2420 2419 * @param {Object} data JSON representation of a checkpoint
2421 2420 */
2422 2421 Notebook.prototype.create_checkpoint_success = function (data) {
2423 2422 this.add_checkpoint(data);
2424 2423 this.events.trigger('checkpoint_created.Notebook', data);
2425 2424 };
2426 2425
2427 2426 Notebook.prototype.restore_checkpoint_dialog = function (checkpoint) {
2428 2427 var that = this;
2429 2428 checkpoint = checkpoint || this.last_checkpoint;
2430 2429 if ( ! checkpoint ) {
2431 2430 console.log("restore dialog, but no checkpoint to restore to!");
2432 2431 return;
2433 2432 }
2434 2433 var body = $('<div/>').append(
2435 2434 $('<p/>').addClass("p-space").text(
2436 2435 "Are you sure you want to revert the notebook to " +
2437 2436 "the latest checkpoint?"
2438 2437 ).append(
2439 2438 $("<strong/>").text(
2440 2439 " This cannot be undone."
2441 2440 )
2442 2441 )
2443 2442 ).append(
2444 2443 $('<p/>').addClass("p-space").text("The checkpoint was last updated at:")
2445 2444 ).append(
2446 2445 $('<p/>').addClass("p-space").text(
2447 2446 Date(checkpoint.last_modified)
2448 2447 ).css("text-align", "center")
2449 2448 );
2450 2449
2451 2450 dialog.modal({
2452 2451 notebook: this,
2453 2452 keyboard_manager: this.keyboard_manager,
2454 2453 title : "Revert notebook to checkpoint",
2455 2454 body : body,
2456 2455 buttons : {
2457 2456 Revert : {
2458 2457 class : "btn-danger",
2459 2458 click : function () {
2460 2459 that.restore_checkpoint(checkpoint.id);
2461 2460 }
2462 2461 },
2463 2462 Cancel : {}
2464 2463 }
2465 2464 });
2466 2465 };
2467 2466
2468 2467 /**
2469 2468 * Restore the notebook to a checkpoint state.
2470 2469 *
2471 2470 * @method restore_checkpoint
2472 2471 * @param {String} checkpoint ID
2473 2472 */
2474 2473 Notebook.prototype.restore_checkpoint = function (checkpoint) {
2475 2474 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2476 2475 var that = this;
2477 2476 this.contents.restore_checkpoint(this.notebook_path, checkpoint).then(
2478 2477 $.proxy(this.restore_checkpoint_success, this),
2479 2478 function (error) {
2480 2479 that.events.trigger('checkpoint_restore_failed.Notebook', error);
2481 2480 }
2482 2481 );
2483 2482 };
2484 2483
2485 2484 /**
2486 2485 * Success callback for restoring a notebook to a checkpoint.
2487 2486 *
2488 2487 * @method restore_checkpoint_success
2489 2488 */
2490 2489 Notebook.prototype.restore_checkpoint_success = function () {
2491 2490 this.events.trigger('checkpoint_restored.Notebook');
2492 2491 this.load_notebook(this.notebook_path);
2493 2492 };
2494 2493
2495 2494 /**
2496 2495 * Delete a notebook checkpoint.
2497 2496 *
2498 2497 * @method delete_checkpoint
2499 2498 * @param {String} checkpoint ID
2500 2499 */
2501 2500 Notebook.prototype.delete_checkpoint = function (checkpoint) {
2502 2501 this.events.trigger('notebook_restoring.Notebook', checkpoint);
2503 2502 var that = this;
2504 2503 this.contents.delete_checkpoint(this.notebook_path, checkpoint).then(
2505 2504 $.proxy(this.delete_checkpoint_success, this),
2506 2505 function (error) {
2507 2506 that.events.trigger('checkpoint_delete_failed.Notebook', error);
2508 2507 }
2509 2508 );
2510 2509 };
2511 2510
2512 2511 /**
2513 2512 * Success callback for deleting a notebook checkpoint
2514 2513 *
2515 2514 * @method delete_checkpoint_success
2516 2515 */
2517 2516 Notebook.prototype.delete_checkpoint_success = function () {
2518 2517 this.events.trigger('checkpoint_deleted.Notebook');
2519 2518 this.load_notebook(this.notebook_path);
2520 2519 };
2521 2520
2522 2521
2523 2522 // For backwards compatability.
2524 2523 IPython.Notebook = Notebook;
2525 2524
2526 2525 return {'Notebook': Notebook};
2527 2526 });
@@ -1,164 +1,112 b''
1 1 /*
2 2
3 3 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
4 4 Adapted from GitHub theme
5 5
6 6 */
7 7
8 pre code {
9 display: block;
10 padding: 0.5em;
8 @import (reference) "highlight-refs.less";
9
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,
14 pre code,
15 pre .subst,
16 pre .tag .title,
17 pre .lisp .title,
18 pre .clojure .built_in,
19 pre .nginx .title {
20 color: black;
24 .highlight-variable-3{
25 color: lighten(@highlight-base, 20%);
21 26 }
22 27
23 .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 {
28 .highlight-string{
47 29 color: #BA2121;
48 30 }
49 31
50 .highlight-comment,
51 pre .comment,
52 pre .annotation,
53 pre .template_comment,
54 pre .diff .header,
55 pre .chunk,
56 pre .markdown .blockquote {
32 .highlight-comment{
57 33 color: #408080;
58 34 font-style: italic;
59 35 }
60 36
61 .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 {
37 .highlight-number{
72 38 color: #080;
73 39 }
74 40
75 pre .label,
76 pre .javadoc,
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
41 .highlight-atom{
42 color: #88F;
100 43 }
101 44
102 .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 {
45 .highlight-keyword{
120 46 color: #008000;
121 47 font-weight: bold;
122 48 }
123 49
124 .highlight-builtin,
125 pre .built_in {
50 .highlight-builtin{
126 51 color: #008000;
127 52 }
128 53
129 pre .markdown .emphasis {
130 font-style: italic;
54 .highlight-error{
55 color: #f00;
131 56 }
132 57
133 pre .nginx .built_in {
134 font-weight: normal;
58 .highlight-operator{
59 color: #AA22FF;
60 font-weight: bold;
135 61 }
136 62
137 pre .coffeescript .javascript,
138 pre .javascript .xml,
139 pre .tex .formula,
140 pre .xml .javascript,
141 pre .xml .vbscript,
142 pre .xml .css,
143 pre .xml .cdata {
144 opacity: 0.5;
63 .highlight-meta{
64 color: #AA22FF;
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 81 /* apply the same style to codemirror */
148 .cm-s-ipython {
149 span.cm-variable { .highlight-base()}
150 span.cm-keyword { .highlight-keyword() }
151 span.cm-number { .highlight-number() }
152 span.cm-comment { .highlight-comment() }
153 span.cm-string { .highlight-string()}
154 span.cm-builtin { .highlight-builtin() }
155 span.cm-error { color: #f00; }
156 span.cm-operator {color: #AA22FF; font-weight: bold;}
157 span.cm-meta {color: #AA22FF;}
158
159 span.cm-tab {
160 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
161 background-position: right;
162 background-repeat: no-repeat;
163 }
82 .cm-s-ipython span {
83 &.cm-keyword { .highlight-keyword() }
84 &.cm-atom { .highlight-atom() }
85 &.cm-number { .highlight-number() }
86 &.cm-def { .highlight-def() }
87 &.cm-variable { .highlight-variable() }
88 &.cm-punctuation { .highlight-punctuation() }
89 &.cm-property { .highlight-property() }
90 &.cm-operator { .highlight-operator() }
91 &.cm-variable-2 { .highlight-variable-2() }
92 &.cm-variable-3 { .highlight-variable-3() }
93 &.cm-comment { .highlight-comment() }
94 &.cm-string { .highlight-string() }
95 &.cm-string-2 { .highlight-string-2() }
96 &.cm-meta { .highlight-meta() }
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 3 * IPython base
4 4 *
5 5 */
6 6 .modal.fade .modal-dialog {
7 7 -webkit-transform: translate(0, 0);
8 8 -ms-transform: translate(0, 0);
9 9 transform: translate(0, 0);
10 10 }
11 11 code {
12 12 color: #000000;
13 13 }
14 14 pre {
15 15 font-size: inherit;
16 16 line-height: inherit;
17 17 }
18 18 label {
19 19 font-weight: normal;
20 20 }
21 21 .border-box-sizing {
22 22 box-sizing: border-box;
23 23 -moz-box-sizing: border-box;
24 24 -webkit-box-sizing: border-box;
25 25 }
26 26 .corner-all {
27 27 border-radius: 4px;
28 28 }
29 29 .no-padding {
30 30 padding: 0px;
31 31 }
32 32 /* Flexible box model classes */
33 33 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
34 34 /* This file is a compatability layer. It allows the usage of flexible box
35 35 model layouts accross multiple browsers, including older browsers. The newest,
36 36 universal implementation of the flexible box model is used when available (see
37 37 `Modern browsers` comments below). Browsers that are known to implement this
38 38 new spec completely include:
39 39
40 40 Firefox 28.0+
41 41 Chrome 29.0+
42 42 Internet Explorer 11+
43 43 Opera 17.0+
44 44
45 45 Browsers not listed, including Safari, are supported via the styling under the
46 46 `Old browsers` comments below.
47 47 */
48 48 .hbox {
49 49 /* Old browsers */
50 50 display: -webkit-box;
51 51 -webkit-box-orient: horizontal;
52 52 -webkit-box-align: stretch;
53 53 display: -moz-box;
54 54 -moz-box-orient: horizontal;
55 55 -moz-box-align: stretch;
56 56 display: box;
57 57 box-orient: horizontal;
58 58 box-align: stretch;
59 59 /* Modern browsers */
60 60 display: flex;
61 61 flex-direction: row;
62 62 align-items: stretch;
63 63 }
64 64 .hbox > * {
65 65 /* Old browsers */
66 66 -webkit-box-flex: 0;
67 67 -moz-box-flex: 0;
68 68 box-flex: 0;
69 69 /* Modern browsers */
70 70 flex: none;
71 71 }
72 72 .vbox {
73 73 /* Old browsers */
74 74 display: -webkit-box;
75 75 -webkit-box-orient: vertical;
76 76 -webkit-box-align: stretch;
77 77 display: -moz-box;
78 78 -moz-box-orient: vertical;
79 79 -moz-box-align: stretch;
80 80 display: box;
81 81 box-orient: vertical;
82 82 box-align: stretch;
83 83 /* Modern browsers */
84 84 display: flex;
85 85 flex-direction: column;
86 86 align-items: stretch;
87 87 }
88 88 .vbox > * {
89 89 /* Old browsers */
90 90 -webkit-box-flex: 0;
91 91 -moz-box-flex: 0;
92 92 box-flex: 0;
93 93 /* Modern browsers */
94 94 flex: none;
95 95 }
96 96 .hbox.reverse,
97 97 .vbox.reverse,
98 98 .reverse {
99 99 /* Old browsers */
100 100 -webkit-box-direction: reverse;
101 101 -moz-box-direction: reverse;
102 102 box-direction: reverse;
103 103 /* Modern browsers */
104 104 flex-direction: row-reverse;
105 105 }
106 106 .hbox.box-flex0,
107 107 .vbox.box-flex0,
108 108 .box-flex0 {
109 109 /* Old browsers */
110 110 -webkit-box-flex: 0;
111 111 -moz-box-flex: 0;
112 112 box-flex: 0;
113 113 /* Modern browsers */
114 114 flex: none;
115 115 width: auto;
116 116 }
117 117 .hbox.box-flex1,
118 118 .vbox.box-flex1,
119 119 .box-flex1 {
120 120 /* Old browsers */
121 121 -webkit-box-flex: 1;
122 122 -moz-box-flex: 1;
123 123 box-flex: 1;
124 124 /* Modern browsers */
125 125 flex: 1;
126 126 }
127 127 .hbox.box-flex,
128 128 .vbox.box-flex,
129 129 .box-flex {
130 130 /* Old browsers */
131 131 /* Old browsers */
132 132 -webkit-box-flex: 1;
133 133 -moz-box-flex: 1;
134 134 box-flex: 1;
135 135 /* Modern browsers */
136 136 flex: 1;
137 137 }
138 138 .hbox.box-flex2,
139 139 .vbox.box-flex2,
140 140 .box-flex2 {
141 141 /* Old browsers */
142 142 -webkit-box-flex: 2;
143 143 -moz-box-flex: 2;
144 144 box-flex: 2;
145 145 /* Modern browsers */
146 146 flex: 2;
147 147 }
148 148 .box-group1 {
149 149 /* Deprecated */
150 150 -webkit-box-flex-group: 1;
151 151 -moz-box-flex-group: 1;
152 152 box-flex-group: 1;
153 153 }
154 154 .box-group2 {
155 155 /* Deprecated */
156 156 -webkit-box-flex-group: 2;
157 157 -moz-box-flex-group: 2;
158 158 box-flex-group: 2;
159 159 }
160 160 .hbox.start,
161 161 .vbox.start,
162 162 .start {
163 163 /* Old browsers */
164 164 -webkit-box-pack: start;
165 165 -moz-box-pack: start;
166 166 box-pack: start;
167 167 /* Modern browsers */
168 168 justify-content: flex-start;
169 169 }
170 170 .hbox.end,
171 171 .vbox.end,
172 172 .end {
173 173 /* Old browsers */
174 174 -webkit-box-pack: end;
175 175 -moz-box-pack: end;
176 176 box-pack: end;
177 177 /* Modern browsers */
178 178 justify-content: flex-end;
179 179 }
180 180 .hbox.center,
181 181 .vbox.center,
182 182 .center {
183 183 /* Old browsers */
184 184 -webkit-box-pack: center;
185 185 -moz-box-pack: center;
186 186 box-pack: center;
187 187 /* Modern browsers */
188 188 justify-content: center;
189 189 }
190 190 .hbox.baseline,
191 191 .vbox.baseline,
192 192 .baseline {
193 193 /* Old browsers */
194 194 -webkit-box-pack: baseline;
195 195 -moz-box-pack: baseline;
196 196 box-pack: baseline;
197 197 /* Modern browsers */
198 198 justify-content: baseline;
199 199 }
200 200 .hbox.stretch,
201 201 .vbox.stretch,
202 202 .stretch {
203 203 /* Old browsers */
204 204 -webkit-box-pack: stretch;
205 205 -moz-box-pack: stretch;
206 206 box-pack: stretch;
207 207 /* Modern browsers */
208 208 justify-content: stretch;
209 209 }
210 210 .hbox.align-start,
211 211 .vbox.align-start,
212 212 .align-start {
213 213 /* Old browsers */
214 214 -webkit-box-align: start;
215 215 -moz-box-align: start;
216 216 box-align: start;
217 217 /* Modern browsers */
218 218 align-items: flex-start;
219 219 }
220 220 .hbox.align-end,
221 221 .vbox.align-end,
222 222 .align-end {
223 223 /* Old browsers */
224 224 -webkit-box-align: end;
225 225 -moz-box-align: end;
226 226 box-align: end;
227 227 /* Modern browsers */
228 228 align-items: flex-end;
229 229 }
230 230 .hbox.align-center,
231 231 .vbox.align-center,
232 232 .align-center {
233 233 /* Old browsers */
234 234 -webkit-box-align: center;
235 235 -moz-box-align: center;
236 236 box-align: center;
237 237 /* Modern browsers */
238 238 align-items: center;
239 239 }
240 240 .hbox.align-baseline,
241 241 .vbox.align-baseline,
242 242 .align-baseline {
243 243 /* Old browsers */
244 244 -webkit-box-align: baseline;
245 245 -moz-box-align: baseline;
246 246 box-align: baseline;
247 247 /* Modern browsers */
248 248 align-items: baseline;
249 249 }
250 250 .hbox.align-stretch,
251 251 .vbox.align-stretch,
252 252 .align-stretch {
253 253 /* Old browsers */
254 254 -webkit-box-align: stretch;
255 255 -moz-box-align: stretch;
256 256 box-align: stretch;
257 257 /* Modern browsers */
258 258 align-items: stretch;
259 259 }
260 260 div.error {
261 261 margin: 2em;
262 262 text-align: center;
263 263 }
264 264 div.error > h1 {
265 265 font-size: 500%;
266 266 line-height: normal;
267 267 }
268 268 div.error > p {
269 269 font-size: 200%;
270 270 line-height: normal;
271 271 }
272 272 div.traceback-wrapper {
273 273 text-align: left;
274 274 max-width: 800px;
275 275 margin: auto;
276 276 }
277 277 /*!
278 278 *
279 279 * IPython notebook
280 280 *
281 281 */
282 282 /* CSS font colors for translated ANSI colors. */
283 283 .ansibold {
284 284 font-weight: bold;
285 285 }
286 286 /* use dark versions for foreground, to improve visibility */
287 287 .ansiblack {
288 288 color: black;
289 289 }
290 290 .ansired {
291 291 color: darkred;
292 292 }
293 293 .ansigreen {
294 294 color: darkgreen;
295 295 }
296 296 .ansiyellow {
297 297 color: #c4a000;
298 298 }
299 299 .ansiblue {
300 300 color: darkblue;
301 301 }
302 302 .ansipurple {
303 303 color: darkviolet;
304 304 }
305 305 .ansicyan {
306 306 color: steelblue;
307 307 }
308 308 .ansigray {
309 309 color: gray;
310 310 }
311 311 /* and light for background, for the same reason */
312 312 .ansibgblack {
313 313 background-color: black;
314 314 }
315 315 .ansibgred {
316 316 background-color: red;
317 317 }
318 318 .ansibggreen {
319 319 background-color: green;
320 320 }
321 321 .ansibgyellow {
322 322 background-color: yellow;
323 323 }
324 324 .ansibgblue {
325 325 background-color: blue;
326 326 }
327 327 .ansibgpurple {
328 328 background-color: magenta;
329 329 }
330 330 .ansibgcyan {
331 331 background-color: cyan;
332 332 }
333 333 .ansibggray {
334 334 background-color: gray;
335 335 }
336 336 div.cell {
337 337 border: 1px solid transparent;
338 338 /* Old browsers */
339 339 display: -webkit-box;
340 340 -webkit-box-orient: vertical;
341 341 -webkit-box-align: stretch;
342 342 display: -moz-box;
343 343 -moz-box-orient: vertical;
344 344 -moz-box-align: stretch;
345 345 display: box;
346 346 box-orient: vertical;
347 347 box-align: stretch;
348 348 /* Modern browsers */
349 349 display: flex;
350 350 flex-direction: column;
351 351 align-items: stretch;
352 352 border-radius: 4px;
353 353 box-sizing: border-box;
354 354 -moz-box-sizing: border-box;
355 355 -webkit-box-sizing: border-box;
356 356 border-width: thin;
357 357 border-style: solid;
358 358 width: 100%;
359 359 padding: 5px 5px 5px 0px;
360 360 /* This acts as a spacer between cells, that is outside the border */
361 361 margin: 0px;
362 362 outline: none;
363 363 }
364 364 div.cell.selected {
365 365 border-color: #ababab;
366 366 }
367 367 div.cell.edit_mode {
368 368 border-color: green;
369 369 }
370 370 div.prompt {
371 371 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
372 372 min-width: 15ex;
373 373 /* This padding is tuned to match the padding on the CodeMirror editor. */
374 374 padding: 0.4em;
375 375 margin: 0px;
376 376 font-family: monospace;
377 377 text-align: right;
378 378 /* This has to match that of the the CodeMirror class line-height below */
379 379 line-height: 1.21429em;
380 380 }
381 381 @media (max-width: 480px) {
382 382 div.prompt {
383 383 text-align: left;
384 384 }
385 385 }
386 386 div.inner_cell {
387 387 /* Old browsers */
388 388 display: -webkit-box;
389 389 -webkit-box-orient: vertical;
390 390 -webkit-box-align: stretch;
391 391 display: -moz-box;
392 392 -moz-box-orient: vertical;
393 393 -moz-box-align: stretch;
394 394 display: box;
395 395 box-orient: vertical;
396 396 box-align: stretch;
397 397 /* Modern browsers */
398 398 display: flex;
399 399 flex-direction: column;
400 400 align-items: stretch;
401 401 /* Old browsers */
402 402 -webkit-box-flex: 1;
403 403 -moz-box-flex: 1;
404 404 box-flex: 1;
405 405 /* Modern browsers */
406 406 flex: 1;
407 407 }
408 408 /* input_area and input_prompt must match in top border and margin for alignment */
409 409 div.input_area {
410 410 border: 1px solid #cfcfcf;
411 411 border-radius: 4px;
412 412 background: #f7f7f7;
413 413 line-height: 1.21429em;
414 414 }
415 415 /* This is needed so that empty prompt areas can collapse to zero height when there
416 416 is no content in the output_subarea and the prompt. The main purpose of this is
417 417 to make sure that empty JavaScript output_subareas have no height. */
418 418 div.prompt:empty {
419 419 padding-top: 0;
420 420 padding-bottom: 0;
421 421 }
422 422 div.unrecognized_cell {
423 423 padding: 5px 5px 5px 0px;
424 424 /* Old browsers */
425 425 display: -webkit-box;
426 426 -webkit-box-orient: horizontal;
427 427 -webkit-box-align: stretch;
428 428 display: -moz-box;
429 429 -moz-box-orient: horizontal;
430 430 -moz-box-align: stretch;
431 431 display: box;
432 432 box-orient: horizontal;
433 433 box-align: stretch;
434 434 /* Modern browsers */
435 435 display: flex;
436 436 flex-direction: row;
437 437 align-items: stretch;
438 438 }
439 439 div.unrecognized_cell .inner_cell {
440 440 border-radius: 4px;
441 441 padding: 5px;
442 442 font-weight: bold;
443 443 color: red;
444 444 border: 1px solid #cfcfcf;
445 445 background: #eaeaea;
446 446 }
447 447 div.unrecognized_cell .inner_cell a {
448 448 color: inherit;
449 449 text-decoration: none;
450 450 }
451 451 div.unrecognized_cell .inner_cell a:hover {
452 452 color: inherit;
453 453 text-decoration: none;
454 454 }
455 455 @media (max-width: 480px) {
456 456 div.unrecognized_cell > div.prompt {
457 457 display: none;
458 458 }
459 459 }
460 460 /* any special styling for code cells that are currently running goes here */
461 461 div.input {
462 462 page-break-inside: avoid;
463 463 /* Old browsers */
464 464 display: -webkit-box;
465 465 -webkit-box-orient: horizontal;
466 466 -webkit-box-align: stretch;
467 467 display: -moz-box;
468 468 -moz-box-orient: horizontal;
469 469 -moz-box-align: stretch;
470 470 display: box;
471 471 box-orient: horizontal;
472 472 box-align: stretch;
473 473 /* Modern browsers */
474 474 display: flex;
475 475 flex-direction: row;
476 476 align-items: stretch;
477 477 }
478 478 @media (max-width: 480px) {
479 479 div.input {
480 480 /* Old browsers */
481 481 display: -webkit-box;
482 482 -webkit-box-orient: vertical;
483 483 -webkit-box-align: stretch;
484 484 display: -moz-box;
485 485 -moz-box-orient: vertical;
486 486 -moz-box-align: stretch;
487 487 display: box;
488 488 box-orient: vertical;
489 489 box-align: stretch;
490 490 /* Modern browsers */
491 491 display: flex;
492 492 flex-direction: column;
493 493 align-items: stretch;
494 494 }
495 495 }
496 496 /* input_area and input_prompt must match in top border and margin for alignment */
497 497 div.input_prompt {
498 498 color: #000080;
499 499 border-top: 1px solid transparent;
500 500 }
501 501 div.input_area > div.highlight {
502 502 margin: 0.4em;
503 503 border: none;
504 504 padding: 0px;
505 505 background-color: transparent;
506 506 }
507 507 div.input_area > div.highlight > pre {
508 508 margin: 0px;
509 509 border: none;
510 510 padding: 0px;
511 511 background-color: transparent;
512 512 }
513 513 /* The following gets added to the <head> if it is detected that the user has a
514 514 * monospace font with inconsistent normal/bold/italic height. See
515 515 * notebookmain.js. Such fonts will have keywords vertically offset with
516 516 * respect to the rest of the text. The user should select a better font.
517 517 * See: https://github.com/ipython/ipython/issues/1503
518 518 *
519 519 * .CodeMirror span {
520 520 * vertical-align: bottom;
521 521 * }
522 522 */
523 523 .CodeMirror {
524 524 line-height: 1.21429em;
525 525 /* Changed from 1em to our global default */
526 526 height: auto;
527 527 /* Changed to auto to autogrow */
528 528 background: none;
529 529 /* Changed from white to allow our bg to show through */
530 530 }
531 531 .CodeMirror-scroll {
532 532 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
533 533 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
534 534 overflow-y: hidden;
535 535 overflow-x: auto;
536 536 }
537 537 .CodeMirror-lines {
538 538 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
539 539 /* we have set a different line-height and want this to scale with that. */
540 540 padding: 0.4em;
541 541 }
542 542 .CodeMirror-linenumber {
543 543 padding: 0 8px 0 4px;
544 544 }
545 545 .CodeMirror-gutters {
546 546 border-bottom-left-radius: 4px;
547 547 border-top-left-radius: 4px;
548 548 }
549 549 .CodeMirror pre {
550 550 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
551 551 /* .CodeMirror-lines */
552 552 padding: 0;
553 553 border: 0;
554 554 border-radius: 0;
555 555 }
556 556 .CodeMirror-vscrollbar,
557 557 .CodeMirror-hscrollbar {
558 558 display: none !important;
559 559 }
560 560 /*
561 561
562 562 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
563 563 Adapted from GitHub theme
564 564
565 565 */
566 pre code {
567 display: block;
568 padding: 0.5em;
569 }
570 .highlight-base,
571 pre code,
572 pre .subst,
573 pre .tag .title,
574 pre .lisp .title,
575 pre .clojure .built_in,
576 pre .nginx .title {
577 color: black;
566 .highlight-base {
567 color: #000000;
568 }
569 .highlight-variable {
570 color: #000000;
571 }
572 .highlight-variable-2 {
573 color: #1a1a1a;
574 }
575 .highlight-variable-3 {
576 color: #333333;
578 577 }
579 .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 {
578 .highlight-string {
603 579 color: #BA2121;
604 580 }
605 .highlight-comment,
606 pre .comment,
607 pre .annotation,
608 pre .template_comment,
609 pre .diff .header,
610 pre .chunk,
611 pre .markdown .blockquote {
581 .highlight-comment {
612 582 color: #408080;
613 583 font-style: italic;
614 584 }
615 .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 {
585 .highlight-number {
626 586 color: #080;
627 587 }
628 pre .label,
629 pre .javadoc,
630 pre .ruby .string,
631 pre .decorator,
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 {
588 .highlight-atom {
589 color: #88F;
590 }
591 .highlight-keyword {
672 592 color: #008000;
673 593 font-weight: bold;
674 594 }
675 .highlight-builtin,
676 pre .built_in {
595 .highlight-builtin {
677 596 color: #008000;
678 597 }
679 pre .markdown .emphasis {
680 font-style: italic;
598 .highlight-error {
599 color: #f00;
681 600 }
682 pre .nginx .built_in {
683 font-weight: normal;
601 .highlight-operator {
602 color: #AA22FF;
603 font-weight: bold;
604 }
605 .highlight-meta {
606 color: #AA22FF;
684 607 }
685 pre .coffeescript .javascript,
686 pre .javascript .xml,
687 pre .tex .formula,
688 pre .xml .javascript,
689 pre .xml .vbscript,
690 pre .xml .css,
691 pre .xml .cdata {
692 opacity: 0.5;
608 /* previously not defined, copying from default codemirror */
609 .highlight-def {
610 color: #00f;
693 611 }
694 /* apply the same style to codemirror */
695 .cm-s-ipython span.cm-variable {
696 color: black;
612 .highlight-string-2 {
613 color: #f50;
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 637 .cm-s-ipython span.cm-keyword {
699 638 color: #008000;
700 639 font-weight: bold;
701 640 }
641 .cm-s-ipython span.cm-atom {
642 color: #88F;
643 }
702 644 .cm-s-ipython span.cm-number {
703 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 663 .cm-s-ipython span.cm-comment {
706 664 color: #408080;
707 665 font-style: italic;
708 666 }
709 667 .cm-s-ipython span.cm-string {
710 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 679 .cm-s-ipython span.cm-builtin {
713 680 color: #008000;
714 681 }
715 .cm-s-ipython span.cm-error {
716 color: #f00;
682 .cm-s-ipython span.cm-bracket {
683 color: #997;
717 684 }
718 .cm-s-ipython span.cm-operator {
719 color: #AA22FF;
720 font-weight: bold;
685 .cm-s-ipython span.cm-tag {
686 color: #170;
721 687 }
722 .cm-s-ipython span.cm-meta {
723 color: #AA22FF;
688 .cm-s-ipython span.cm-attribute {
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 703 .cm-s-ipython span.cm-tab {
726 704 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
727 705 background-position: right;
728 706 background-repeat: no-repeat;
729 707 }
730 708 div.output_wrapper {
731 709 /* this position must be relative to enable descendents to be absolute within it */
732 710 position: relative;
733 711 /* Old browsers */
734 712 display: -webkit-box;
735 713 -webkit-box-orient: vertical;
736 714 -webkit-box-align: stretch;
737 715 display: -moz-box;
738 716 -moz-box-orient: vertical;
739 717 -moz-box-align: stretch;
740 718 display: box;
741 719 box-orient: vertical;
742 720 box-align: stretch;
743 721 /* Modern browsers */
744 722 display: flex;
745 723 flex-direction: column;
746 724 align-items: stretch;
747 725 }
748 726 /* class for the output area when it should be height-limited */
749 727 div.output_scroll {
750 728 /* ideally, this would be max-height, but FF barfs all over that */
751 729 height: 24em;
752 730 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
753 731 width: 100%;
754 732 overflow: auto;
755 733 border-radius: 4px;
756 734 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
757 735 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
758 736 display: block;
759 737 }
760 738 /* output div while it is collapsed */
761 739 div.output_collapsed {
762 740 margin: 0px;
763 741 padding: 0px;
764 742 /* Old browsers */
765 743 display: -webkit-box;
766 744 -webkit-box-orient: vertical;
767 745 -webkit-box-align: stretch;
768 746 display: -moz-box;
769 747 -moz-box-orient: vertical;
770 748 -moz-box-align: stretch;
771 749 display: box;
772 750 box-orient: vertical;
773 751 box-align: stretch;
774 752 /* Modern browsers */
775 753 display: flex;
776 754 flex-direction: column;
777 755 align-items: stretch;
778 756 }
779 757 div.out_prompt_overlay {
780 758 height: 100%;
781 759 padding: 0px 0.4em;
782 760 position: absolute;
783 761 border-radius: 4px;
784 762 }
785 763 div.out_prompt_overlay:hover {
786 764 /* use inner shadow to get border that is computed the same on WebKit/FF */
787 765 -webkit-box-shadow: inset 0 0 1px #000000;
788 766 box-shadow: inset 0 0 1px #000000;
789 767 background: rgba(240, 240, 240, 0.5);
790 768 }
791 769 div.output_prompt {
792 770 color: #8b0000;
793 771 }
794 772 /* This class is the outer container of all output sections. */
795 773 div.output_area {
796 774 padding: 0px;
797 775 page-break-inside: avoid;
798 776 /* Old browsers */
799 777 display: -webkit-box;
800 778 -webkit-box-orient: horizontal;
801 779 -webkit-box-align: stretch;
802 780 display: -moz-box;
803 781 -moz-box-orient: horizontal;
804 782 -moz-box-align: stretch;
805 783 display: box;
806 784 box-orient: horizontal;
807 785 box-align: stretch;
808 786 /* Modern browsers */
809 787 display: flex;
810 788 flex-direction: row;
811 789 align-items: stretch;
812 790 }
813 791 div.output_area .MathJax_Display {
814 792 text-align: left !important;
815 793 }
816 794 div.output_area .rendered_html table {
817 795 margin-left: 0;
818 796 margin-right: 0;
819 797 }
820 798 div.output_area .rendered_html img {
821 799 margin-left: 0;
822 800 margin-right: 0;
823 801 }
824 802 /* This is needed to protect the pre formating from global settings such
825 803 as that of bootstrap */
826 804 .output {
827 805 /* Old browsers */
828 806 display: -webkit-box;
829 807 -webkit-box-orient: vertical;
830 808 -webkit-box-align: stretch;
831 809 display: -moz-box;
832 810 -moz-box-orient: vertical;
833 811 -moz-box-align: stretch;
834 812 display: box;
835 813 box-orient: vertical;
836 814 box-align: stretch;
837 815 /* Modern browsers */
838 816 display: flex;
839 817 flex-direction: column;
840 818 align-items: stretch;
841 819 }
842 820 @media (max-width: 480px) {
843 821 div.output_area {
844 822 /* Old browsers */
845 823 display: -webkit-box;
846 824 -webkit-box-orient: vertical;
847 825 -webkit-box-align: stretch;
848 826 display: -moz-box;
849 827 -moz-box-orient: vertical;
850 828 -moz-box-align: stretch;
851 829 display: box;
852 830 box-orient: vertical;
853 831 box-align: stretch;
854 832 /* Modern browsers */
855 833 display: flex;
856 834 flex-direction: column;
857 835 align-items: stretch;
858 836 }
859 837 }
860 838 div.output_area pre {
861 839 margin: 0;
862 840 padding: 0;
863 841 border: 0;
864 842 vertical-align: baseline;
865 843 color: #000000;
866 844 background-color: transparent;
867 845 border-radius: 0;
868 846 }
869 847 /* This class is for the output subarea inside the output_area and after
870 848 the prompt div. */
871 849 div.output_subarea {
872 850 padding: 0.4em 0.4em 0em 0.4em;
873 851 /* Old browsers */
874 852 -webkit-box-flex: 1;
875 853 -moz-box-flex: 1;
876 854 box-flex: 1;
877 855 /* Modern browsers */
878 856 flex: 1;
879 857 }
880 858 /* The rest of the output_* classes are for special styling of the different
881 859 output types */
882 860 /* all text output has this class: */
883 861 div.output_text {
884 862 text-align: left;
885 863 color: #000000;
886 864 /* This has to match that of the the CodeMirror class line-height below */
887 865 line-height: 1.21429em;
888 866 }
889 867 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
890 868 div.output_stderr {
891 869 background: #fdd;
892 870 /* very light red background for stderr */
893 871 }
894 872 div.output_latex {
895 873 text-align: left;
896 874 }
897 875 /* Empty output_javascript divs should have no height */
898 876 div.output_javascript:empty {
899 877 padding: 0;
900 878 }
901 879 .js-error {
902 880 color: darkred;
903 881 }
904 882 /* raw_input styles */
905 883 div.raw_input_container {
906 884 font-family: monospace;
907 885 padding-top: 5px;
908 886 }
909 887 span.raw_input_prompt {
910 888 /* nothing needed here */
911 889 }
912 890 input.raw_input {
913 891 font-family: inherit;
914 892 font-size: inherit;
915 893 color: inherit;
916 894 width: auto;
917 895 /* make sure input baseline aligns with prompt */
918 896 vertical-align: baseline;
919 897 /* padding + margin = 0.5em between prompt and cursor */
920 898 padding: 0em 0.25em;
921 899 margin: 0em 0.25em;
922 900 }
923 901 input.raw_input:focus {
924 902 box-shadow: none;
925 903 }
926 904 p.p-space {
927 905 margin-bottom: 10px;
928 906 }
929 907 div.output_unrecognized {
930 908 padding: 5px;
931 909 font-weight: bold;
932 910 color: red;
933 911 }
934 912 div.output_unrecognized a {
935 913 color: inherit;
936 914 text-decoration: none;
937 915 }
938 916 div.output_unrecognized a:hover {
939 917 color: inherit;
940 918 text-decoration: none;
941 919 }
942 920 .rendered_html {
943 921 color: #000000;
944 922 /* any extras will just be numbers: */
945 923 }
946 924 .rendered_html em {
947 925 font-style: italic;
948 926 }
949 927 .rendered_html strong {
950 928 font-weight: bold;
951 929 }
952 930 .rendered_html u {
953 931 text-decoration: underline;
954 932 }
955 933 .rendered_html :link {
956 934 text-decoration: underline;
957 935 }
958 936 .rendered_html :visited {
959 937 text-decoration: underline;
960 938 }
961 939 .rendered_html h1 {
962 940 font-size: 185.7%;
963 941 margin: 1.08em 0 0 0;
964 942 font-weight: bold;
965 943 line-height: 1.0;
966 944 }
967 945 .rendered_html h2 {
968 946 font-size: 157.1%;
969 947 margin: 1.27em 0 0 0;
970 948 font-weight: bold;
971 949 line-height: 1.0;
972 950 }
973 951 .rendered_html h3 {
974 952 font-size: 128.6%;
975 953 margin: 1.55em 0 0 0;
976 954 font-weight: bold;
977 955 line-height: 1.0;
978 956 }
979 957 .rendered_html h4 {
980 958 font-size: 100%;
981 959 margin: 2em 0 0 0;
982 960 font-weight: bold;
983 961 line-height: 1.0;
984 962 }
985 963 .rendered_html h5 {
986 964 font-size: 100%;
987 965 margin: 2em 0 0 0;
988 966 font-weight: bold;
989 967 line-height: 1.0;
990 968 font-style: italic;
991 969 }
992 970 .rendered_html h6 {
993 971 font-size: 100%;
994 972 margin: 2em 0 0 0;
995 973 font-weight: bold;
996 974 line-height: 1.0;
997 975 font-style: italic;
998 976 }
999 977 .rendered_html h1:first-child {
1000 978 margin-top: 0.538em;
1001 979 }
1002 980 .rendered_html h2:first-child {
1003 981 margin-top: 0.636em;
1004 982 }
1005 983 .rendered_html h3:first-child {
1006 984 margin-top: 0.777em;
1007 985 }
1008 986 .rendered_html h4:first-child {
1009 987 margin-top: 1em;
1010 988 }
1011 989 .rendered_html h5:first-child {
1012 990 margin-top: 1em;
1013 991 }
1014 992 .rendered_html h6:first-child {
1015 993 margin-top: 1em;
1016 994 }
1017 995 .rendered_html ul {
1018 996 list-style: disc;
1019 997 margin: 0em 2em;
1020 998 padding-left: 0px;
1021 999 }
1022 1000 .rendered_html ul ul {
1023 1001 list-style: square;
1024 1002 margin: 0em 2em;
1025 1003 }
1026 1004 .rendered_html ul ul ul {
1027 1005 list-style: circle;
1028 1006 margin: 0em 2em;
1029 1007 }
1030 1008 .rendered_html ol {
1031 1009 list-style: decimal;
1032 1010 margin: 0em 2em;
1033 1011 padding-left: 0px;
1034 1012 }
1035 1013 .rendered_html ol ol {
1036 1014 list-style: upper-alpha;
1037 1015 margin: 0em 2em;
1038 1016 }
1039 1017 .rendered_html ol ol ol {
1040 1018 list-style: lower-alpha;
1041 1019 margin: 0em 2em;
1042 1020 }
1043 1021 .rendered_html ol ol ol ol {
1044 1022 list-style: lower-roman;
1045 1023 margin: 0em 2em;
1046 1024 }
1047 1025 .rendered_html ol ol ol ol ol {
1048 1026 list-style: decimal;
1049 1027 margin: 0em 2em;
1050 1028 }
1051 1029 .rendered_html * + ul {
1052 1030 margin-top: 1em;
1053 1031 }
1054 1032 .rendered_html * + ol {
1055 1033 margin-top: 1em;
1056 1034 }
1057 1035 .rendered_html hr {
1058 1036 color: #000000;
1059 1037 background-color: #000000;
1060 1038 }
1061 1039 .rendered_html pre {
1062 1040 margin: 1em 2em;
1063 1041 }
1064 1042 .rendered_html pre,
1065 1043 .rendered_html code {
1066 1044 border: 0;
1067 1045 background-color: #ffffff;
1068 1046 color: #000000;
1069 1047 font-size: 100%;
1070 1048 padding: 0px;
1071 1049 }
1072 1050 .rendered_html blockquote {
1073 1051 margin: 1em 2em;
1074 1052 }
1075 1053 .rendered_html table {
1076 1054 margin-left: auto;
1077 1055 margin-right: auto;
1078 1056 border: 1px solid #000000;
1079 1057 border-collapse: collapse;
1080 1058 }
1081 1059 .rendered_html tr,
1082 1060 .rendered_html th,
1083 1061 .rendered_html td {
1084 1062 border: 1px solid #000000;
1085 1063 border-collapse: collapse;
1086 1064 margin: 1em 2em;
1087 1065 }
1088 1066 .rendered_html td,
1089 1067 .rendered_html th {
1090 1068 text-align: left;
1091 1069 vertical-align: middle;
1092 1070 padding: 4px;
1093 1071 }
1094 1072 .rendered_html th {
1095 1073 font-weight: bold;
1096 1074 }
1097 1075 .rendered_html * + table {
1098 1076 margin-top: 1em;
1099 1077 }
1100 1078 .rendered_html p {
1101 1079 text-align: justify;
1102 1080 }
1103 1081 .rendered_html * + p {
1104 1082 margin-top: 1em;
1105 1083 }
1106 1084 .rendered_html img {
1107 1085 display: block;
1108 1086 margin-left: auto;
1109 1087 margin-right: auto;
1110 1088 }
1111 1089 .rendered_html * + img {
1112 1090 margin-top: 1em;
1113 1091 }
1114 1092 div.text_cell {
1115 1093 padding: 5px 5px 5px 0px;
1116 1094 /* Old browsers */
1117 1095 display: -webkit-box;
1118 1096 -webkit-box-orient: horizontal;
1119 1097 -webkit-box-align: stretch;
1120 1098 display: -moz-box;
1121 1099 -moz-box-orient: horizontal;
1122 1100 -moz-box-align: stretch;
1123 1101 display: box;
1124 1102 box-orient: horizontal;
1125 1103 box-align: stretch;
1126 1104 /* Modern browsers */
1127 1105 display: flex;
1128 1106 flex-direction: row;
1129 1107 align-items: stretch;
1130 1108 }
1131 1109 @media (max-width: 480px) {
1132 1110 div.text_cell > div.prompt {
1133 1111 display: none;
1134 1112 }
1135 1113 }
1136 1114 div.text_cell_render {
1137 1115 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
1138 1116 outline: none;
1139 1117 resize: none;
1140 1118 width: inherit;
1141 1119 border-style: none;
1142 1120 padding: 0.5em 0.5em 0.5em 0.4em;
1143 1121 color: #000000;
1144 1122 box-sizing: border-box;
1145 1123 -moz-box-sizing: border-box;
1146 1124 -webkit-box-sizing: border-box;
1147 1125 }
1148 1126 a.anchor-link:link {
1149 1127 text-decoration: none;
1150 1128 padding: 0px 20px;
1151 1129 visibility: hidden;
1152 1130 }
1153 1131 h1:hover .anchor-link,
1154 1132 h2:hover .anchor-link,
1155 1133 h3:hover .anchor-link,
1156 1134 h4:hover .anchor-link,
1157 1135 h5:hover .anchor-link,
1158 1136 h6:hover .anchor-link {
1159 1137 visibility: visible;
1160 1138 }
1161 1139 .text_cell.rendered .input_area {
1162 1140 display: none;
1163 1141 }
1164 1142 .text_cell.unrendered .text_cell_render {
1165 1143 display: none;
1166 1144 }
1167 1145 .cm-header-1,
1168 1146 .cm-header-2,
1169 1147 .cm-header-3,
1170 1148 .cm-header-4,
1171 1149 .cm-header-5,
1172 1150 .cm-header-6 {
1173 1151 font-weight: bold;
1174 1152 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1175 1153 }
1176 1154 .cm-header-1 {
1177 1155 font-size: 185.7%;
1178 1156 }
1179 1157 .cm-header-2 {
1180 1158 font-size: 157.1%;
1181 1159 }
1182 1160 .cm-header-3 {
1183 1161 font-size: 128.6%;
1184 1162 }
1185 1163 .cm-header-4 {
1186 1164 font-size: 110%;
1187 1165 }
1188 1166 .cm-header-5 {
1189 1167 font-size: 100%;
1190 1168 font-style: italic;
1191 1169 }
1192 1170 .cm-header-6 {
1193 1171 font-size: 100%;
1194 1172 font-style: italic;
1195 1173 }
1196 1174 .widget-area {
1197 1175 /*
1198 1176 LESS file that styles IPython notebook widgets and the area they sit in.
1199 1177
1200 1178 The widget area typically looks something like this:
1201 1179 +------------------------------------------+
1202 1180 | widget-area |
1203 1181 | +--------+---------------------------+ |
1204 1182 | | prompt | widget-subarea | |
1205 1183 | | | +--------+ +--------+ | |
1206 1184 | | | | widget | | widget | | |
1207 1185 | | | +--------+ +--------+ | |
1208 1186 | +--------+---------------------------+ |
1209 1187 +------------------------------------------+
1210 1188 */
1211 1189 page-break-inside: avoid;
1212 1190 /* Old browsers */
1213 1191 display: -webkit-box;
1214 1192 -webkit-box-orient: horizontal;
1215 1193 -webkit-box-align: stretch;
1216 1194 display: -moz-box;
1217 1195 -moz-box-orient: horizontal;
1218 1196 -moz-box-align: stretch;
1219 1197 display: box;
1220 1198 box-orient: horizontal;
1221 1199 box-align: stretch;
1222 1200 /* Modern browsers */
1223 1201 display: flex;
1224 1202 flex-direction: row;
1225 1203 align-items: stretch;
1226 1204 }
1227 1205 .widget-area .widget-subarea {
1228 1206 padding: 0.44em 0.4em 0.4em 1px;
1229 1207 margin-left: 6px;
1230 1208 box-sizing: border-box;
1231 1209 -moz-box-sizing: border-box;
1232 1210 -webkit-box-sizing: border-box;
1233 1211 /* Old browsers */
1234 1212 display: -webkit-box;
1235 1213 -webkit-box-orient: vertical;
1236 1214 -webkit-box-align: stretch;
1237 1215 display: -moz-box;
1238 1216 -moz-box-orient: vertical;
1239 1217 -moz-box-align: stretch;
1240 1218 display: box;
1241 1219 box-orient: vertical;
1242 1220 box-align: stretch;
1243 1221 /* Modern browsers */
1244 1222 display: flex;
1245 1223 flex-direction: column;
1246 1224 align-items: stretch;
1247 1225 /* Old browsers */
1248 1226 -webkit-box-flex: 2;
1249 1227 -moz-box-flex: 2;
1250 1228 box-flex: 2;
1251 1229 /* Modern browsers */
1252 1230 flex: 2;
1253 1231 /* Old browsers */
1254 1232 -webkit-box-align: start;
1255 1233 -moz-box-align: start;
1256 1234 box-align: start;
1257 1235 /* Modern browsers */
1258 1236 align-items: flex-start;
1259 1237 }
1260 1238 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
1261 1239 THE WIDGET AREA). */
1262 1240 .slide-track {
1263 1241 /* Slider Track */
1264 1242 border: 1px solid #CCCCCC;
1265 1243 background: #FFFFFF;
1266 1244 border-radius: 4px;
1267 1245 /* Round the corners of the slide track */
1268 1246 }
1269 1247 .widget-hslider {
1270 1248 /* Horizontal jQuery Slider
1271 1249
1272 1250 Both the horizontal and vertical versions of the slider are characterized
1273 1251 by a styled div that contains an invisible jQuery slide div which
1274 1252 contains a visible slider handle div. This is requred so we can control
1275 1253 how the slider is drawn and 'fix' the issue where the slide handle
1276 1254 doesn't stop at the end of the slide.
1277 1255
1278 1256 Both horizontal and vertical sliders have this div nesting:
1279 1257 +------------------------------------------+
1280 1258 | widget-(h/v)slider |
1281 1259 | +--------+---------------------------+ |
1282 1260 | | ui-slider | |
1283 1261 | | +------------------+ | |
1284 1262 | | | ui-slider-handle | | |
1285 1263 | | +------------------+ | |
1286 1264 | +--------+---------------------------+ |
1287 1265 +------------------------------------------+
1288 1266 */
1289 1267 /* Fix the padding of the slide track so the ui-slider is sized
1290 1268 correctly. */
1291 1269 padding-left: 8px;
1292 1270 padding-right: 5px;
1293 1271 overflow: visible;
1294 1272 /* Default size of the slider */
1295 1273 width: 350px;
1296 1274 height: 5px;
1297 1275 max-height: 5px;
1298 1276 margin-top: 13px;
1299 1277 margin-bottom: 10px;
1300 1278 /* Style the slider track */
1301 1279 /* Slider Track */
1302 1280 border: 1px solid #CCCCCC;
1303 1281 background: #FFFFFF;
1304 1282 border-radius: 4px;
1305 1283 /* Round the corners of the slide track */
1306 1284 /* Make the div a flex box (makes FF behave correctly). */
1307 1285 /* Old browsers */
1308 1286 display: -webkit-box;
1309 1287 -webkit-box-orient: horizontal;
1310 1288 -webkit-box-align: stretch;
1311 1289 display: -moz-box;
1312 1290 -moz-box-orient: horizontal;
1313 1291 -moz-box-align: stretch;
1314 1292 display: box;
1315 1293 box-orient: horizontal;
1316 1294 box-align: stretch;
1317 1295 /* Modern browsers */
1318 1296 display: flex;
1319 1297 flex-direction: row;
1320 1298 align-items: stretch;
1321 1299 }
1322 1300 .widget-hslider .ui-slider {
1323 1301 /* Inner, invisible slide div */
1324 1302 border: 0px !important;
1325 1303 background: none !important;
1326 1304 /* Old browsers */
1327 1305 display: -webkit-box;
1328 1306 -webkit-box-orient: horizontal;
1329 1307 -webkit-box-align: stretch;
1330 1308 display: -moz-box;
1331 1309 -moz-box-orient: horizontal;
1332 1310 -moz-box-align: stretch;
1333 1311 display: box;
1334 1312 box-orient: horizontal;
1335 1313 box-align: stretch;
1336 1314 /* Modern browsers */
1337 1315 display: flex;
1338 1316 flex-direction: row;
1339 1317 align-items: stretch;
1340 1318 /* Old browsers */
1341 1319 -webkit-box-flex: 1;
1342 1320 -moz-box-flex: 1;
1343 1321 box-flex: 1;
1344 1322 /* Modern browsers */
1345 1323 flex: 1;
1346 1324 }
1347 1325 .widget-hslider .ui-slider .ui-slider-handle {
1348 1326 width: 14px !important;
1349 1327 height: 28px !important;
1350 1328 margin-top: -8px !important;
1351 1329 }
1352 1330 .widget-hslider .ui-slider .ui-slider-range {
1353 1331 height: 12px !important;
1354 1332 margin-top: -4px !important;
1355 1333 }
1356 1334 .widget-vslider {
1357 1335 /* Vertical jQuery Slider */
1358 1336 /* Fix the padding of the slide track so the ui-slider is sized
1359 1337 correctly. */
1360 1338 padding-bottom: 8px;
1361 1339 overflow: visible;
1362 1340 /* Default size of the slider */
1363 1341 width: 5px;
1364 1342 max-width: 5px;
1365 1343 height: 250px;
1366 1344 margin-left: 12px;
1367 1345 /* Style the slider track */
1368 1346 /* Slider Track */
1369 1347 border: 1px solid #CCCCCC;
1370 1348 background: #FFFFFF;
1371 1349 border-radius: 4px;
1372 1350 /* Round the corners of the slide track */
1373 1351 /* Make the div a flex box (makes FF behave correctly). */
1374 1352 /* Old browsers */
1375 1353 display: -webkit-box;
1376 1354 -webkit-box-orient: vertical;
1377 1355 -webkit-box-align: stretch;
1378 1356 display: -moz-box;
1379 1357 -moz-box-orient: vertical;
1380 1358 -moz-box-align: stretch;
1381 1359 display: box;
1382 1360 box-orient: vertical;
1383 1361 box-align: stretch;
1384 1362 /* Modern browsers */
1385 1363 display: flex;
1386 1364 flex-direction: column;
1387 1365 align-items: stretch;
1388 1366 }
1389 1367 .widget-vslider .ui-slider {
1390 1368 /* Inner, invisible slide div */
1391 1369 border: 0px !important;
1392 1370 background: none !important;
1393 1371 margin-left: -4px;
1394 1372 margin-top: 5px;
1395 1373 /* Old browsers */
1396 1374 display: -webkit-box;
1397 1375 -webkit-box-orient: vertical;
1398 1376 -webkit-box-align: stretch;
1399 1377 display: -moz-box;
1400 1378 -moz-box-orient: vertical;
1401 1379 -moz-box-align: stretch;
1402 1380 display: box;
1403 1381 box-orient: vertical;
1404 1382 box-align: stretch;
1405 1383 /* Modern browsers */
1406 1384 display: flex;
1407 1385 flex-direction: column;
1408 1386 align-items: stretch;
1409 1387 /* Old browsers */
1410 1388 -webkit-box-flex: 1;
1411 1389 -moz-box-flex: 1;
1412 1390 box-flex: 1;
1413 1391 /* Modern browsers */
1414 1392 flex: 1;
1415 1393 }
1416 1394 .widget-vslider .ui-slider .ui-slider-handle {
1417 1395 width: 28px !important;
1418 1396 height: 14px !important;
1419 1397 margin-left: -9px;
1420 1398 }
1421 1399 .widget-vslider .ui-slider .ui-slider-range {
1422 1400 width: 12px !important;
1423 1401 margin-left: -1px !important;
1424 1402 }
1425 1403 .widget-text {
1426 1404 /* String Textbox - used for TextBoxView and TextAreaView */
1427 1405 width: 350px;
1428 1406 margin: 0px !important;
1429 1407 }
1430 1408 .widget-listbox {
1431 1409 /* Listbox */
1432 1410 width: 350px;
1433 1411 margin-bottom: 0px;
1434 1412 }
1435 1413 .widget-numeric-text {
1436 1414 /* Single Line Textbox - used for IntTextView and FloatTextView */
1437 1415 width: 150px;
1438 1416 margin: 0px !important;
1439 1417 }
1440 1418 .widget-progress {
1441 1419 /* Progress Bar */
1442 1420 margin-top: 6px;
1443 1421 width: 350px;
1444 1422 }
1445 1423 .widget-progress .progress-bar {
1446 1424 /* Disable progress bar animation */
1447 1425 -webkit-transition: none;
1448 1426 -moz-transition: none;
1449 1427 -ms-transition: none;
1450 1428 -o-transition: none;
1451 1429 transition: none;
1452 1430 }
1453 1431 .widget-combo-btn {
1454 1432 /* ComboBox Main Button */
1455 1433 min-width: 125px;
1456 1434 }
1457 1435 .widget_item .dropdown-menu li a {
1458 1436 color: inherit;
1459 1437 }
1460 1438 .widget-hbox {
1461 1439 /* Horizontal widgets */
1462 1440 /* Old browsers */
1463 1441 display: -webkit-box;
1464 1442 -webkit-box-orient: horizontal;
1465 1443 -webkit-box-align: stretch;
1466 1444 display: -moz-box;
1467 1445 -moz-box-orient: horizontal;
1468 1446 -moz-box-align: stretch;
1469 1447 display: box;
1470 1448 box-orient: horizontal;
1471 1449 box-align: stretch;
1472 1450 /* Modern browsers */
1473 1451 display: flex;
1474 1452 flex-direction: row;
1475 1453 align-items: stretch;
1476 1454 margin-top: 0px !important;
1477 1455 margin-bottom: 0px !important;
1478 1456 margin-right: 5px;
1479 1457 margin-left: 5px;
1480 1458 }
1481 1459 .widget-hbox input[type="checkbox"] {
1482 1460 margin-top: 9px;
1483 1461 margin-bottom: 10px;
1484 1462 }
1485 1463 .widget-hbox .widget-label {
1486 1464 /* Horizontal Label */
1487 1465 min-width: 10ex;
1488 1466 padding-right: 8px;
1489 1467 padding-top: 5px;
1490 1468 text-align: right;
1491 1469 vertical-align: text-top;
1492 1470 }
1493 1471 .widget-hbox .widget-readout {
1494 1472 padding-left: 8px;
1495 1473 padding-top: 5px;
1496 1474 text-align: left;
1497 1475 vertical-align: text-top;
1498 1476 }
1499 1477 .widget-vbox {
1500 1478 /* Vertical widgets */
1501 1479 /* Old browsers */
1502 1480 display: -webkit-box;
1503 1481 -webkit-box-orient: vertical;
1504 1482 -webkit-box-align: stretch;
1505 1483 display: -moz-box;
1506 1484 -moz-box-orient: vertical;
1507 1485 -moz-box-align: stretch;
1508 1486 display: box;
1509 1487 box-orient: vertical;
1510 1488 box-align: stretch;
1511 1489 /* Modern browsers */
1512 1490 display: flex;
1513 1491 flex-direction: column;
1514 1492 align-items: stretch;
1515 1493 }
1516 1494 .widget-vbox .widget-label {
1517 1495 /* Vertical Label */
1518 1496 padding-bottom: 5px;
1519 1497 text-align: center;
1520 1498 vertical-align: text-bottom;
1521 1499 }
1522 1500 .widget-vbox .widget-readout {
1523 1501 /* Vertical Label */
1524 1502 padding-top: 5px;
1525 1503 text-align: center;
1526 1504 vertical-align: text-top;
1527 1505 }
1528 1506 .widget-modal {
1529 1507 /* Box - ModalView */
1530 1508 overflow: hidden;
1531 1509 position: absolute !important;
1532 1510 top: 0px;
1533 1511 left: 0px;
1534 1512 margin-left: 0px !important;
1535 1513 }
1536 1514 .widget-modal-body {
1537 1515 /* Box - ModalView Body */
1538 1516 max-height: none !important;
1539 1517 }
1540 1518 .widget-box {
1541 1519 /* Box */
1542 1520 box-sizing: border-box;
1543 1521 -moz-box-sizing: border-box;
1544 1522 -webkit-box-sizing: border-box;
1545 1523 /* Old browsers */
1546 1524 -webkit-box-align: start;
1547 1525 -moz-box-align: start;
1548 1526 box-align: start;
1549 1527 /* Modern browsers */
1550 1528 align-items: flex-start;
1551 1529 }
1552 1530 .widget-radio-box {
1553 1531 /* Contains RadioButtonsWidget */
1554 1532 /* Old browsers */
1555 1533 display: -webkit-box;
1556 1534 -webkit-box-orient: vertical;
1557 1535 -webkit-box-align: stretch;
1558 1536 display: -moz-box;
1559 1537 -moz-box-orient: vertical;
1560 1538 -moz-box-align: stretch;
1561 1539 display: box;
1562 1540 box-orient: vertical;
1563 1541 box-align: stretch;
1564 1542 /* Modern browsers */
1565 1543 display: flex;
1566 1544 flex-direction: column;
1567 1545 align-items: stretch;
1568 1546 box-sizing: border-box;
1569 1547 -moz-box-sizing: border-box;
1570 1548 -webkit-box-sizing: border-box;
1571 1549 padding-top: 4px;
1572 1550 }
1573 1551 .widget-radio-box label {
1574 1552 margin-top: 0px;
1575 1553 }
1576 1554 .docked-widget-modal {
1577 1555 /* Horizontal Label */
1578 1556 overflow: hidden;
1579 1557 position: relative !important;
1580 1558 top: 0px !important;
1581 1559 left: 0px !important;
1582 1560 margin-left: 0px !important;
1583 1561 }
1584 1562 /*# sourceMappingURL=../style/ipython.min.css.map */ No newline at end of file
@@ -1,10608 +1,10586 b''
1 1 /*!
2 2 *
3 3 * Twitter Bootstrap
4 4 *
5 5 */
6 6 /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
7 7 html {
8 8 font-family: sans-serif;
9 9 -ms-text-size-adjust: 100%;
10 10 -webkit-text-size-adjust: 100%;
11 11 }
12 12 body {
13 13 margin: 0;
14 14 }
15 15 article,
16 16 aside,
17 17 details,
18 18 figcaption,
19 19 figure,
20 20 footer,
21 21 header,
22 22 hgroup,
23 23 main,
24 24 nav,
25 25 section,
26 26 summary {
27 27 display: block;
28 28 }
29 29 audio,
30 30 canvas,
31 31 progress,
32 32 video {
33 33 display: inline-block;
34 34 vertical-align: baseline;
35 35 }
36 36 audio:not([controls]) {
37 37 display: none;
38 38 height: 0;
39 39 }
40 40 [hidden],
41 41 template {
42 42 display: none;
43 43 }
44 44 a {
45 45 background: transparent;
46 46 }
47 47 a:active,
48 48 a:hover {
49 49 outline: 0;
50 50 }
51 51 abbr[title] {
52 52 border-bottom: 1px dotted;
53 53 }
54 54 b,
55 55 strong {
56 56 font-weight: bold;
57 57 }
58 58 dfn {
59 59 font-style: italic;
60 60 }
61 61 h1 {
62 62 font-size: 2em;
63 63 margin: 0.67em 0;
64 64 }
65 65 mark {
66 66 background: #ff0;
67 67 color: #000;
68 68 }
69 69 small {
70 70 font-size: 80%;
71 71 }
72 72 sub,
73 73 sup {
74 74 font-size: 75%;
75 75 line-height: 0;
76 76 position: relative;
77 77 vertical-align: baseline;
78 78 }
79 79 sup {
80 80 top: -0.5em;
81 81 }
82 82 sub {
83 83 bottom: -0.25em;
84 84 }
85 85 img {
86 86 border: 0;
87 87 }
88 88 svg:not(:root) {
89 89 overflow: hidden;
90 90 }
91 91 figure {
92 92 margin: 1em 40px;
93 93 }
94 94 hr {
95 95 -moz-box-sizing: content-box;
96 96 box-sizing: content-box;
97 97 height: 0;
98 98 }
99 99 pre {
100 100 overflow: auto;
101 101 }
102 102 code,
103 103 kbd,
104 104 pre,
105 105 samp {
106 106 font-family: monospace, monospace;
107 107 font-size: 1em;
108 108 }
109 109 button,
110 110 input,
111 111 optgroup,
112 112 select,
113 113 textarea {
114 114 color: inherit;
115 115 font: inherit;
116 116 margin: 0;
117 117 }
118 118 button {
119 119 overflow: visible;
120 120 }
121 121 button,
122 122 select {
123 123 text-transform: none;
124 124 }
125 125 button,
126 126 html input[type="button"],
127 127 input[type="reset"],
128 128 input[type="submit"] {
129 129 -webkit-appearance: button;
130 130 cursor: pointer;
131 131 }
132 132 button[disabled],
133 133 html input[disabled] {
134 134 cursor: default;
135 135 }
136 136 button::-moz-focus-inner,
137 137 input::-moz-focus-inner {
138 138 border: 0;
139 139 padding: 0;
140 140 }
141 141 input {
142 142 line-height: normal;
143 143 }
144 144 input[type="checkbox"],
145 145 input[type="radio"] {
146 146 box-sizing: border-box;
147 147 padding: 0;
148 148 }
149 149 input[type="number"]::-webkit-inner-spin-button,
150 150 input[type="number"]::-webkit-outer-spin-button {
151 151 height: auto;
152 152 }
153 153 input[type="search"] {
154 154 -webkit-appearance: textfield;
155 155 -moz-box-sizing: content-box;
156 156 -webkit-box-sizing: content-box;
157 157 box-sizing: content-box;
158 158 }
159 159 input[type="search"]::-webkit-search-cancel-button,
160 160 input[type="search"]::-webkit-search-decoration {
161 161 -webkit-appearance: none;
162 162 }
163 163 fieldset {
164 164 border: 1px solid #c0c0c0;
165 165 margin: 0 2px;
166 166 padding: 0.35em 0.625em 0.75em;
167 167 }
168 168 legend {
169 169 border: 0;
170 170 padding: 0;
171 171 }
172 172 textarea {
173 173 overflow: auto;
174 174 }
175 175 optgroup {
176 176 font-weight: bold;
177 177 }
178 178 table {
179 179 border-collapse: collapse;
180 180 border-spacing: 0;
181 181 }
182 182 td,
183 183 th {
184 184 padding: 0;
185 185 }
186 186 @media print {
187 187 * {
188 188 text-shadow: none !important;
189 189 color: #000 !important;
190 190 background: transparent !important;
191 191 box-shadow: none !important;
192 192 }
193 193 a,
194 194 a:visited {
195 195 text-decoration: underline;
196 196 }
197 197 a[href]:after {
198 198 content: " (" attr(href) ")";
199 199 }
200 200 abbr[title]:after {
201 201 content: " (" attr(title) ")";
202 202 }
203 203 a[href^="javascript:"]:after,
204 204 a[href^="#"]:after {
205 205 content: "";
206 206 }
207 207 pre,
208 208 blockquote {
209 209 border: 1px solid #999;
210 210 page-break-inside: avoid;
211 211 }
212 212 thead {
213 213 display: table-header-group;
214 214 }
215 215 tr,
216 216 img {
217 217 page-break-inside: avoid;
218 218 }
219 219 img {
220 220 max-width: 100% !important;
221 221 }
222 222 p,
223 223 h2,
224 224 h3 {
225 225 orphans: 3;
226 226 widows: 3;
227 227 }
228 228 h2,
229 229 h3 {
230 230 page-break-after: avoid;
231 231 }
232 232 select {
233 233 background: #fff !important;
234 234 }
235 235 .navbar {
236 236 display: none;
237 237 }
238 238 .table td,
239 239 .table th {
240 240 background-color: #fff !important;
241 241 }
242 242 .btn > .caret,
243 243 .dropup > .btn > .caret {
244 244 border-top-color: #000 !important;
245 245 }
246 246 .label {
247 247 border: 1px solid #000;
248 248 }
249 249 .table {
250 250 border-collapse: collapse !important;
251 251 }
252 252 .table-bordered th,
253 253 .table-bordered td {
254 254 border: 1px solid #ddd !important;
255 255 }
256 256 }
257 257 * {
258 258 -webkit-box-sizing: border-box;
259 259 -moz-box-sizing: border-box;
260 260 box-sizing: border-box;
261 261 }
262 262 *:before,
263 263 *:after {
264 264 -webkit-box-sizing: border-box;
265 265 -moz-box-sizing: border-box;
266 266 box-sizing: border-box;
267 267 }
268 268 html {
269 269 font-size: 62.5%;
270 270 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
271 271 }
272 272 body {
273 273 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
274 274 font-size: 13px;
275 275 line-height: 1.42857143;
276 276 color: #000000;
277 277 background-color: #ffffff;
278 278 }
279 279 input,
280 280 button,
281 281 select,
282 282 textarea {
283 283 font-family: inherit;
284 284 font-size: inherit;
285 285 line-height: inherit;
286 286 }
287 287 a {
288 288 color: #428bca;
289 289 text-decoration: none;
290 290 }
291 291 a:hover,
292 292 a:focus {
293 293 color: #2a6496;
294 294 text-decoration: underline;
295 295 }
296 296 a:focus {
297 297 outline: thin dotted;
298 298 outline: 5px auto -webkit-focus-ring-color;
299 299 outline-offset: -2px;
300 300 }
301 301 figure {
302 302 margin: 0;
303 303 }
304 304 img {
305 305 vertical-align: middle;
306 306 }
307 307 .img-responsive,
308 308 .thumbnail > img,
309 309 .thumbnail a > img,
310 310 .carousel-inner > .item > img,
311 311 .carousel-inner > .item > a > img {
312 312 display: block;
313 313 max-width: 100%;
314 314 height: auto;
315 315 }
316 316 .img-rounded {
317 317 border-radius: 6px;
318 318 }
319 319 .img-thumbnail {
320 320 padding: 4px;
321 321 line-height: 1.42857143;
322 322 background-color: #ffffff;
323 323 border: 1px solid #dddddd;
324 324 border-radius: 4px;
325 325 -webkit-transition: all 0.2s ease-in-out;
326 326 transition: all 0.2s ease-in-out;
327 327 display: inline-block;
328 328 max-width: 100%;
329 329 height: auto;
330 330 }
331 331 .img-circle {
332 332 border-radius: 50%;
333 333 }
334 334 hr {
335 335 margin-top: 18px;
336 336 margin-bottom: 18px;
337 337 border: 0;
338 338 border-top: 1px solid #eeeeee;
339 339 }
340 340 .sr-only {
341 341 position: absolute;
342 342 width: 1px;
343 343 height: 1px;
344 344 margin: -1px;
345 345 padding: 0;
346 346 overflow: hidden;
347 347 clip: rect(0, 0, 0, 0);
348 348 border: 0;
349 349 }
350 350 h1,
351 351 h2,
352 352 h3,
353 353 h4,
354 354 h5,
355 355 h6,
356 356 .h1,
357 357 .h2,
358 358 .h3,
359 359 .h4,
360 360 .h5,
361 361 .h6 {
362 362 font-family: inherit;
363 363 font-weight: 500;
364 364 line-height: 1.1;
365 365 color: inherit;
366 366 }
367 367 h1 small,
368 368 h2 small,
369 369 h3 small,
370 370 h4 small,
371 371 h5 small,
372 372 h6 small,
373 373 .h1 small,
374 374 .h2 small,
375 375 .h3 small,
376 376 .h4 small,
377 377 .h5 small,
378 378 .h6 small,
379 379 h1 .small,
380 380 h2 .small,
381 381 h3 .small,
382 382 h4 .small,
383 383 h5 .small,
384 384 h6 .small,
385 385 .h1 .small,
386 386 .h2 .small,
387 387 .h3 .small,
388 388 .h4 .small,
389 389 .h5 .small,
390 390 .h6 .small {
391 391 font-weight: normal;
392 392 line-height: 1;
393 393 color: #999999;
394 394 }
395 395 h1,
396 396 .h1,
397 397 h2,
398 398 .h2,
399 399 h3,
400 400 .h3 {
401 401 margin-top: 18px;
402 402 margin-bottom: 9px;
403 403 }
404 404 h1 small,
405 405 .h1 small,
406 406 h2 small,
407 407 .h2 small,
408 408 h3 small,
409 409 .h3 small,
410 410 h1 .small,
411 411 .h1 .small,
412 412 h2 .small,
413 413 .h2 .small,
414 414 h3 .small,
415 415 .h3 .small {
416 416 font-size: 65%;
417 417 }
418 418 h4,
419 419 .h4,
420 420 h5,
421 421 .h5,
422 422 h6,
423 423 .h6 {
424 424 margin-top: 9px;
425 425 margin-bottom: 9px;
426 426 }
427 427 h4 small,
428 428 .h4 small,
429 429 h5 small,
430 430 .h5 small,
431 431 h6 small,
432 432 .h6 small,
433 433 h4 .small,
434 434 .h4 .small,
435 435 h5 .small,
436 436 .h5 .small,
437 437 h6 .small,
438 438 .h6 .small {
439 439 font-size: 75%;
440 440 }
441 441 h1,
442 442 .h1 {
443 443 font-size: 33px;
444 444 }
445 445 h2,
446 446 .h2 {
447 447 font-size: 27px;
448 448 }
449 449 h3,
450 450 .h3 {
451 451 font-size: 23px;
452 452 }
453 453 h4,
454 454 .h4 {
455 455 font-size: 17px;
456 456 }
457 457 h5,
458 458 .h5 {
459 459 font-size: 13px;
460 460 }
461 461 h6,
462 462 .h6 {
463 463 font-size: 12px;
464 464 }
465 465 p {
466 466 margin: 0 0 9px;
467 467 }
468 468 .lead {
469 469 margin-bottom: 18px;
470 470 font-size: 14px;
471 471 font-weight: 200;
472 472 line-height: 1.4;
473 473 }
474 474 @media (min-width: 768px) {
475 475 .lead {
476 476 font-size: 19.5px;
477 477 }
478 478 }
479 479 small,
480 480 .small {
481 481 font-size: 85%;
482 482 }
483 483 cite {
484 484 font-style: normal;
485 485 }
486 486 .text-left {
487 487 text-align: left;
488 488 }
489 489 .text-right {
490 490 text-align: right;
491 491 }
492 492 .text-center {
493 493 text-align: center;
494 494 }
495 495 .text-justify {
496 496 text-align: justify;
497 497 }
498 498 .text-muted {
499 499 color: #999999;
500 500 }
501 501 .text-primary {
502 502 color: #428bca;
503 503 }
504 504 a.text-primary:hover {
505 505 color: #3071a9;
506 506 }
507 507 .text-success {
508 508 color: #3c763d;
509 509 }
510 510 a.text-success:hover {
511 511 color: #2b542c;
512 512 }
513 513 .text-info {
514 514 color: #31708f;
515 515 }
516 516 a.text-info:hover {
517 517 color: #245269;
518 518 }
519 519 .text-warning {
520 520 color: #8a6d3b;
521 521 }
522 522 a.text-warning:hover {
523 523 color: #66512c;
524 524 }
525 525 .text-danger {
526 526 color: #a94442;
527 527 }
528 528 a.text-danger:hover {
529 529 color: #843534;
530 530 }
531 531 .bg-primary {
532 532 color: #fff;
533 533 background-color: #428bca;
534 534 }
535 535 a.bg-primary:hover {
536 536 background-color: #3071a9;
537 537 }
538 538 .bg-success {
539 539 background-color: #dff0d8;
540 540 }
541 541 a.bg-success:hover {
542 542 background-color: #c1e2b3;
543 543 }
544 544 .bg-info {
545 545 background-color: #d9edf7;
546 546 }
547 547 a.bg-info:hover {
548 548 background-color: #afd9ee;
549 549 }
550 550 .bg-warning {
551 551 background-color: #fcf8e3;
552 552 }
553 553 a.bg-warning:hover {
554 554 background-color: #f7ecb5;
555 555 }
556 556 .bg-danger {
557 557 background-color: #f2dede;
558 558 }
559 559 a.bg-danger:hover {
560 560 background-color: #e4b9b9;
561 561 }
562 562 .page-header {
563 563 padding-bottom: 8px;
564 564 margin: 36px 0 18px;
565 565 border-bottom: 1px solid #eeeeee;
566 566 }
567 567 ul,
568 568 ol {
569 569 margin-top: 0;
570 570 margin-bottom: 9px;
571 571 }
572 572 ul ul,
573 573 ol ul,
574 574 ul ol,
575 575 ol ol {
576 576 margin-bottom: 0;
577 577 }
578 578 .list-unstyled {
579 579 padding-left: 0;
580 580 list-style: none;
581 581 }
582 582 .list-inline {
583 583 padding-left: 0;
584 584 list-style: none;
585 585 margin-left: -5px;
586 586 }
587 587 .list-inline > li {
588 588 display: inline-block;
589 589 padding-left: 5px;
590 590 padding-right: 5px;
591 591 }
592 592 dl {
593 593 margin-top: 0;
594 594 margin-bottom: 18px;
595 595 }
596 596 dt,
597 597 dd {
598 598 line-height: 1.42857143;
599 599 }
600 600 dt {
601 601 font-weight: bold;
602 602 }
603 603 dd {
604 604 margin-left: 0;
605 605 }
606 606 @media (min-width: 540px) {
607 607 .dl-horizontal dt {
608 608 float: left;
609 609 width: 160px;
610 610 clear: left;
611 611 text-align: right;
612 612 overflow: hidden;
613 613 text-overflow: ellipsis;
614 614 white-space: nowrap;
615 615 }
616 616 .dl-horizontal dd {
617 617 margin-left: 180px;
618 618 }
619 619 }
620 620 abbr[title],
621 621 abbr[data-original-title] {
622 622 cursor: help;
623 623 border-bottom: 1px dotted #999999;
624 624 }
625 625 .initialism {
626 626 font-size: 90%;
627 627 text-transform: uppercase;
628 628 }
629 629 blockquote {
630 630 padding: 9px 18px;
631 631 margin: 0 0 18px;
632 632 font-size: inherit;
633 633 border-left: 5px solid #eeeeee;
634 634 }
635 635 blockquote p:last-child,
636 636 blockquote ul:last-child,
637 637 blockquote ol:last-child {
638 638 margin-bottom: 0;
639 639 }
640 640 blockquote footer,
641 641 blockquote small,
642 642 blockquote .small {
643 643 display: block;
644 644 font-size: 80%;
645 645 line-height: 1.42857143;
646 646 color: #999999;
647 647 }
648 648 blockquote footer:before,
649 649 blockquote small:before,
650 650 blockquote .small:before {
651 651 content: '\2014 \00A0';
652 652 }
653 653 .blockquote-reverse,
654 654 blockquote.pull-right {
655 655 padding-right: 15px;
656 656 padding-left: 0;
657 657 border-right: 5px solid #eeeeee;
658 658 border-left: 0;
659 659 text-align: right;
660 660 }
661 661 .blockquote-reverse footer:before,
662 662 blockquote.pull-right footer:before,
663 663 .blockquote-reverse small:before,
664 664 blockquote.pull-right small:before,
665 665 .blockquote-reverse .small:before,
666 666 blockquote.pull-right .small:before {
667 667 content: '';
668 668 }
669 669 .blockquote-reverse footer:after,
670 670 blockquote.pull-right footer:after,
671 671 .blockquote-reverse small:after,
672 672 blockquote.pull-right small:after,
673 673 .blockquote-reverse .small:after,
674 674 blockquote.pull-right .small:after {
675 675 content: '\00A0 \2014';
676 676 }
677 677 blockquote:before,
678 678 blockquote:after {
679 679 content: "";
680 680 }
681 681 address {
682 682 margin-bottom: 18px;
683 683 font-style: normal;
684 684 line-height: 1.42857143;
685 685 }
686 686 code,
687 687 kbd,
688 688 pre,
689 689 samp {
690 690 font-family: monospace;
691 691 }
692 692 code {
693 693 padding: 2px 4px;
694 694 font-size: 90%;
695 695 color: #c7254e;
696 696 background-color: #f9f2f4;
697 697 white-space: nowrap;
698 698 border-radius: 4px;
699 699 }
700 700 kbd {
701 701 padding: 2px 4px;
702 702 font-size: 90%;
703 703 color: #ffffff;
704 704 background-color: #333333;
705 705 border-radius: 3px;
706 706 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
707 707 }
708 708 pre {
709 709 display: block;
710 710 padding: 8.5px;
711 711 margin: 0 0 9px;
712 712 font-size: 12px;
713 713 line-height: 1.42857143;
714 714 word-break: break-all;
715 715 word-wrap: break-word;
716 716 color: #333333;
717 717 background-color: #f5f5f5;
718 718 border: 1px solid #cccccc;
719 719 border-radius: 4px;
720 720 }
721 721 pre code {
722 722 padding: 0;
723 723 font-size: inherit;
724 724 color: inherit;
725 725 white-space: pre-wrap;
726 726 background-color: transparent;
727 727 border-radius: 0;
728 728 }
729 729 .pre-scrollable {
730 730 max-height: 340px;
731 731 overflow-y: scroll;
732 732 }
733 733 .container {
734 734 margin-right: auto;
735 735 margin-left: auto;
736 736 padding-left: 15px;
737 737 padding-right: 15px;
738 738 }
739 739 @media (min-width: 768px) {
740 740 .container {
741 741 width: 750px;
742 742 }
743 743 }
744 744 @media (min-width: 992px) {
745 745 .container {
746 746 width: 970px;
747 747 }
748 748 }
749 749 @media (min-width: 1200px) {
750 750 .container {
751 751 width: 1170px;
752 752 }
753 753 }
754 754 .container-fluid {
755 755 margin-right: auto;
756 756 margin-left: auto;
757 757 padding-left: 15px;
758 758 padding-right: 15px;
759 759 }
760 760 .row {
761 761 margin-left: -15px;
762 762 margin-right: -15px;
763 763 }
764 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 765 position: relative;
766 766 min-height: 1px;
767 767 padding-left: 15px;
768 768 padding-right: 15px;
769 769 }
770 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 771 float: left;
772 772 }
773 773 .col-xs-12 {
774 774 width: 100%;
775 775 }
776 776 .col-xs-11 {
777 777 width: 91.66666667%;
778 778 }
779 779 .col-xs-10 {
780 780 width: 83.33333333%;
781 781 }
782 782 .col-xs-9 {
783 783 width: 75%;
784 784 }
785 785 .col-xs-8 {
786 786 width: 66.66666667%;
787 787 }
788 788 .col-xs-7 {
789 789 width: 58.33333333%;
790 790 }
791 791 .col-xs-6 {
792 792 width: 50%;
793 793 }
794 794 .col-xs-5 {
795 795 width: 41.66666667%;
796 796 }
797 797 .col-xs-4 {
798 798 width: 33.33333333%;
799 799 }
800 800 .col-xs-3 {
801 801 width: 25%;
802 802 }
803 803 .col-xs-2 {
804 804 width: 16.66666667%;
805 805 }
806 806 .col-xs-1 {
807 807 width: 8.33333333%;
808 808 }
809 809 .col-xs-pull-12 {
810 810 right: 100%;
811 811 }
812 812 .col-xs-pull-11 {
813 813 right: 91.66666667%;
814 814 }
815 815 .col-xs-pull-10 {
816 816 right: 83.33333333%;
817 817 }
818 818 .col-xs-pull-9 {
819 819 right: 75%;
820 820 }
821 821 .col-xs-pull-8 {
822 822 right: 66.66666667%;
823 823 }
824 824 .col-xs-pull-7 {
825 825 right: 58.33333333%;
826 826 }
827 827 .col-xs-pull-6 {
828 828 right: 50%;
829 829 }
830 830 .col-xs-pull-5 {
831 831 right: 41.66666667%;
832 832 }
833 833 .col-xs-pull-4 {
834 834 right: 33.33333333%;
835 835 }
836 836 .col-xs-pull-3 {
837 837 right: 25%;
838 838 }
839 839 .col-xs-pull-2 {
840 840 right: 16.66666667%;
841 841 }
842 842 .col-xs-pull-1 {
843 843 right: 8.33333333%;
844 844 }
845 845 .col-xs-pull-0 {
846 846 right: 0%;
847 847 }
848 848 .col-xs-push-12 {
849 849 left: 100%;
850 850 }
851 851 .col-xs-push-11 {
852 852 left: 91.66666667%;
853 853 }
854 854 .col-xs-push-10 {
855 855 left: 83.33333333%;
856 856 }
857 857 .col-xs-push-9 {
858 858 left: 75%;
859 859 }
860 860 .col-xs-push-8 {
861 861 left: 66.66666667%;
862 862 }
863 863 .col-xs-push-7 {
864 864 left: 58.33333333%;
865 865 }
866 866 .col-xs-push-6 {
867 867 left: 50%;
868 868 }
869 869 .col-xs-push-5 {
870 870 left: 41.66666667%;
871 871 }
872 872 .col-xs-push-4 {
873 873 left: 33.33333333%;
874 874 }
875 875 .col-xs-push-3 {
876 876 left: 25%;
877 877 }
878 878 .col-xs-push-2 {
879 879 left: 16.66666667%;
880 880 }
881 881 .col-xs-push-1 {
882 882 left: 8.33333333%;
883 883 }
884 884 .col-xs-push-0 {
885 885 left: 0%;
886 886 }
887 887 .col-xs-offset-12 {
888 888 margin-left: 100%;
889 889 }
890 890 .col-xs-offset-11 {
891 891 margin-left: 91.66666667%;
892 892 }
893 893 .col-xs-offset-10 {
894 894 margin-left: 83.33333333%;
895 895 }
896 896 .col-xs-offset-9 {
897 897 margin-left: 75%;
898 898 }
899 899 .col-xs-offset-8 {
900 900 margin-left: 66.66666667%;
901 901 }
902 902 .col-xs-offset-7 {
903 903 margin-left: 58.33333333%;
904 904 }
905 905 .col-xs-offset-6 {
906 906 margin-left: 50%;
907 907 }
908 908 .col-xs-offset-5 {
909 909 margin-left: 41.66666667%;
910 910 }
911 911 .col-xs-offset-4 {
912 912 margin-left: 33.33333333%;
913 913 }
914 914 .col-xs-offset-3 {
915 915 margin-left: 25%;
916 916 }
917 917 .col-xs-offset-2 {
918 918 margin-left: 16.66666667%;
919 919 }
920 920 .col-xs-offset-1 {
921 921 margin-left: 8.33333333%;
922 922 }
923 923 .col-xs-offset-0 {
924 924 margin-left: 0%;
925 925 }
926 926 @media (min-width: 768px) {
927 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 928 float: left;
929 929 }
930 930 .col-sm-12 {
931 931 width: 100%;
932 932 }
933 933 .col-sm-11 {
934 934 width: 91.66666667%;
935 935 }
936 936 .col-sm-10 {
937 937 width: 83.33333333%;
938 938 }
939 939 .col-sm-9 {
940 940 width: 75%;
941 941 }
942 942 .col-sm-8 {
943 943 width: 66.66666667%;
944 944 }
945 945 .col-sm-7 {
946 946 width: 58.33333333%;
947 947 }
948 948 .col-sm-6 {
949 949 width: 50%;
950 950 }
951 951 .col-sm-5 {
952 952 width: 41.66666667%;
953 953 }
954 954 .col-sm-4 {
955 955 width: 33.33333333%;
956 956 }
957 957 .col-sm-3 {
958 958 width: 25%;
959 959 }
960 960 .col-sm-2 {
961 961 width: 16.66666667%;
962 962 }
963 963 .col-sm-1 {
964 964 width: 8.33333333%;
965 965 }
966 966 .col-sm-pull-12 {
967 967 right: 100%;
968 968 }
969 969 .col-sm-pull-11 {
970 970 right: 91.66666667%;
971 971 }
972 972 .col-sm-pull-10 {
973 973 right: 83.33333333%;
974 974 }
975 975 .col-sm-pull-9 {
976 976 right: 75%;
977 977 }
978 978 .col-sm-pull-8 {
979 979 right: 66.66666667%;
980 980 }
981 981 .col-sm-pull-7 {
982 982 right: 58.33333333%;
983 983 }
984 984 .col-sm-pull-6 {
985 985 right: 50%;
986 986 }
987 987 .col-sm-pull-5 {
988 988 right: 41.66666667%;
989 989 }
990 990 .col-sm-pull-4 {
991 991 right: 33.33333333%;
992 992 }
993 993 .col-sm-pull-3 {
994 994 right: 25%;
995 995 }
996 996 .col-sm-pull-2 {
997 997 right: 16.66666667%;
998 998 }
999 999 .col-sm-pull-1 {
1000 1000 right: 8.33333333%;
1001 1001 }
1002 1002 .col-sm-pull-0 {
1003 1003 right: 0%;
1004 1004 }
1005 1005 .col-sm-push-12 {
1006 1006 left: 100%;
1007 1007 }
1008 1008 .col-sm-push-11 {
1009 1009 left: 91.66666667%;
1010 1010 }
1011 1011 .col-sm-push-10 {
1012 1012 left: 83.33333333%;
1013 1013 }
1014 1014 .col-sm-push-9 {
1015 1015 left: 75%;
1016 1016 }
1017 1017 .col-sm-push-8 {
1018 1018 left: 66.66666667%;
1019 1019 }
1020 1020 .col-sm-push-7 {
1021 1021 left: 58.33333333%;
1022 1022 }
1023 1023 .col-sm-push-6 {
1024 1024 left: 50%;
1025 1025 }
1026 1026 .col-sm-push-5 {
1027 1027 left: 41.66666667%;
1028 1028 }
1029 1029 .col-sm-push-4 {
1030 1030 left: 33.33333333%;
1031 1031 }
1032 1032 .col-sm-push-3 {
1033 1033 left: 25%;
1034 1034 }
1035 1035 .col-sm-push-2 {
1036 1036 left: 16.66666667%;
1037 1037 }
1038 1038 .col-sm-push-1 {
1039 1039 left: 8.33333333%;
1040 1040 }
1041 1041 .col-sm-push-0 {
1042 1042 left: 0%;
1043 1043 }
1044 1044 .col-sm-offset-12 {
1045 1045 margin-left: 100%;
1046 1046 }
1047 1047 .col-sm-offset-11 {
1048 1048 margin-left: 91.66666667%;
1049 1049 }
1050 1050 .col-sm-offset-10 {
1051 1051 margin-left: 83.33333333%;
1052 1052 }
1053 1053 .col-sm-offset-9 {
1054 1054 margin-left: 75%;
1055 1055 }
1056 1056 .col-sm-offset-8 {
1057 1057 margin-left: 66.66666667%;
1058 1058 }
1059 1059 .col-sm-offset-7 {
1060 1060 margin-left: 58.33333333%;
1061 1061 }
1062 1062 .col-sm-offset-6 {
1063 1063 margin-left: 50%;
1064 1064 }
1065 1065 .col-sm-offset-5 {
1066 1066 margin-left: 41.66666667%;
1067 1067 }
1068 1068 .col-sm-offset-4 {
1069 1069 margin-left: 33.33333333%;
1070 1070 }
1071 1071 .col-sm-offset-3 {
1072 1072 margin-left: 25%;
1073 1073 }
1074 1074 .col-sm-offset-2 {
1075 1075 margin-left: 16.66666667%;
1076 1076 }
1077 1077 .col-sm-offset-1 {
1078 1078 margin-left: 8.33333333%;
1079 1079 }
1080 1080 .col-sm-offset-0 {
1081 1081 margin-left: 0%;
1082 1082 }
1083 1083 }
1084 1084 @media (min-width: 992px) {
1085 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 1086 float: left;
1087 1087 }
1088 1088 .col-md-12 {
1089 1089 width: 100%;
1090 1090 }
1091 1091 .col-md-11 {
1092 1092 width: 91.66666667%;
1093 1093 }
1094 1094 .col-md-10 {
1095 1095 width: 83.33333333%;
1096 1096 }
1097 1097 .col-md-9 {
1098 1098 width: 75%;
1099 1099 }
1100 1100 .col-md-8 {
1101 1101 width: 66.66666667%;
1102 1102 }
1103 1103 .col-md-7 {
1104 1104 width: 58.33333333%;
1105 1105 }
1106 1106 .col-md-6 {
1107 1107 width: 50%;
1108 1108 }
1109 1109 .col-md-5 {
1110 1110 width: 41.66666667%;
1111 1111 }
1112 1112 .col-md-4 {
1113 1113 width: 33.33333333%;
1114 1114 }
1115 1115 .col-md-3 {
1116 1116 width: 25%;
1117 1117 }
1118 1118 .col-md-2 {
1119 1119 width: 16.66666667%;
1120 1120 }
1121 1121 .col-md-1 {
1122 1122 width: 8.33333333%;
1123 1123 }
1124 1124 .col-md-pull-12 {
1125 1125 right: 100%;
1126 1126 }
1127 1127 .col-md-pull-11 {
1128 1128 right: 91.66666667%;
1129 1129 }
1130 1130 .col-md-pull-10 {
1131 1131 right: 83.33333333%;
1132 1132 }
1133 1133 .col-md-pull-9 {
1134 1134 right: 75%;
1135 1135 }
1136 1136 .col-md-pull-8 {
1137 1137 right: 66.66666667%;
1138 1138 }
1139 1139 .col-md-pull-7 {
1140 1140 right: 58.33333333%;
1141 1141 }
1142 1142 .col-md-pull-6 {
1143 1143 right: 50%;
1144 1144 }
1145 1145 .col-md-pull-5 {
1146 1146 right: 41.66666667%;
1147 1147 }
1148 1148 .col-md-pull-4 {
1149 1149 right: 33.33333333%;
1150 1150 }
1151 1151 .col-md-pull-3 {
1152 1152 right: 25%;
1153 1153 }
1154 1154 .col-md-pull-2 {
1155 1155 right: 16.66666667%;
1156 1156 }
1157 1157 .col-md-pull-1 {
1158 1158 right: 8.33333333%;
1159 1159 }
1160 1160 .col-md-pull-0 {
1161 1161 right: 0%;
1162 1162 }
1163 1163 .col-md-push-12 {
1164 1164 left: 100%;
1165 1165 }
1166 1166 .col-md-push-11 {
1167 1167 left: 91.66666667%;
1168 1168 }
1169 1169 .col-md-push-10 {
1170 1170 left: 83.33333333%;
1171 1171 }
1172 1172 .col-md-push-9 {
1173 1173 left: 75%;
1174 1174 }
1175 1175 .col-md-push-8 {
1176 1176 left: 66.66666667%;
1177 1177 }
1178 1178 .col-md-push-7 {
1179 1179 left: 58.33333333%;
1180 1180 }
1181 1181 .col-md-push-6 {
1182 1182 left: 50%;
1183 1183 }
1184 1184 .col-md-push-5 {
1185 1185 left: 41.66666667%;
1186 1186 }
1187 1187 .col-md-push-4 {
1188 1188 left: 33.33333333%;
1189 1189 }
1190 1190 .col-md-push-3 {
1191 1191 left: 25%;
1192 1192 }
1193 1193 .col-md-push-2 {
1194 1194 left: 16.66666667%;
1195 1195 }
1196 1196 .col-md-push-1 {
1197 1197 left: 8.33333333%;
1198 1198 }
1199 1199 .col-md-push-0 {
1200 1200 left: 0%;
1201 1201 }
1202 1202 .col-md-offset-12 {
1203 1203 margin-left: 100%;
1204 1204 }
1205 1205 .col-md-offset-11 {
1206 1206 margin-left: 91.66666667%;
1207 1207 }
1208 1208 .col-md-offset-10 {
1209 1209 margin-left: 83.33333333%;
1210 1210 }
1211 1211 .col-md-offset-9 {
1212 1212 margin-left: 75%;
1213 1213 }
1214 1214 .col-md-offset-8 {
1215 1215 margin-left: 66.66666667%;
1216 1216 }
1217 1217 .col-md-offset-7 {
1218 1218 margin-left: 58.33333333%;
1219 1219 }
1220 1220 .col-md-offset-6 {
1221 1221 margin-left: 50%;
1222 1222 }
1223 1223 .col-md-offset-5 {
1224 1224 margin-left: 41.66666667%;
1225 1225 }
1226 1226 .col-md-offset-4 {
1227 1227 margin-left: 33.33333333%;
1228 1228 }
1229 1229 .col-md-offset-3 {
1230 1230 margin-left: 25%;
1231 1231 }
1232 1232 .col-md-offset-2 {
1233 1233 margin-left: 16.66666667%;
1234 1234 }
1235 1235 .col-md-offset-1 {
1236 1236 margin-left: 8.33333333%;
1237 1237 }
1238 1238 .col-md-offset-0 {
1239 1239 margin-left: 0%;
1240 1240 }
1241 1241 }
1242 1242 @media (min-width: 1200px) {
1243 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 1244 float: left;
1245 1245 }
1246 1246 .col-lg-12 {
1247 1247 width: 100%;
1248 1248 }
1249 1249 .col-lg-11 {
1250 1250 width: 91.66666667%;
1251 1251 }
1252 1252 .col-lg-10 {
1253 1253 width: 83.33333333%;
1254 1254 }
1255 1255 .col-lg-9 {
1256 1256 width: 75%;
1257 1257 }
1258 1258 .col-lg-8 {
1259 1259 width: 66.66666667%;
1260 1260 }
1261 1261 .col-lg-7 {
1262 1262 width: 58.33333333%;
1263 1263 }
1264 1264 .col-lg-6 {
1265 1265 width: 50%;
1266 1266 }
1267 1267 .col-lg-5 {
1268 1268 width: 41.66666667%;
1269 1269 }
1270 1270 .col-lg-4 {
1271 1271 width: 33.33333333%;
1272 1272 }
1273 1273 .col-lg-3 {
1274 1274 width: 25%;
1275 1275 }
1276 1276 .col-lg-2 {
1277 1277 width: 16.66666667%;
1278 1278 }
1279 1279 .col-lg-1 {
1280 1280 width: 8.33333333%;
1281 1281 }
1282 1282 .col-lg-pull-12 {
1283 1283 right: 100%;
1284 1284 }
1285 1285 .col-lg-pull-11 {
1286 1286 right: 91.66666667%;
1287 1287 }
1288 1288 .col-lg-pull-10 {
1289 1289 right: 83.33333333%;
1290 1290 }
1291 1291 .col-lg-pull-9 {
1292 1292 right: 75%;
1293 1293 }
1294 1294 .col-lg-pull-8 {
1295 1295 right: 66.66666667%;
1296 1296 }
1297 1297 .col-lg-pull-7 {
1298 1298 right: 58.33333333%;
1299 1299 }
1300 1300 .col-lg-pull-6 {
1301 1301 right: 50%;
1302 1302 }
1303 1303 .col-lg-pull-5 {
1304 1304 right: 41.66666667%;
1305 1305 }
1306 1306 .col-lg-pull-4 {
1307 1307 right: 33.33333333%;
1308 1308 }
1309 1309 .col-lg-pull-3 {
1310 1310 right: 25%;
1311 1311 }
1312 1312 .col-lg-pull-2 {
1313 1313 right: 16.66666667%;
1314 1314 }
1315 1315 .col-lg-pull-1 {
1316 1316 right: 8.33333333%;
1317 1317 }
1318 1318 .col-lg-pull-0 {
1319 1319 right: 0%;
1320 1320 }
1321 1321 .col-lg-push-12 {
1322 1322 left: 100%;
1323 1323 }
1324 1324 .col-lg-push-11 {
1325 1325 left: 91.66666667%;
1326 1326 }
1327 1327 .col-lg-push-10 {
1328 1328 left: 83.33333333%;
1329 1329 }
1330 1330 .col-lg-push-9 {
1331 1331 left: 75%;
1332 1332 }
1333 1333 .col-lg-push-8 {
1334 1334 left: 66.66666667%;
1335 1335 }
1336 1336 .col-lg-push-7 {
1337 1337 left: 58.33333333%;
1338 1338 }
1339 1339 .col-lg-push-6 {
1340 1340 left: 50%;
1341 1341 }
1342 1342 .col-lg-push-5 {
1343 1343 left: 41.66666667%;
1344 1344 }
1345 1345 .col-lg-push-4 {
1346 1346 left: 33.33333333%;
1347 1347 }
1348 1348 .col-lg-push-3 {
1349 1349 left: 25%;
1350 1350 }
1351 1351 .col-lg-push-2 {
1352 1352 left: 16.66666667%;
1353 1353 }
1354 1354 .col-lg-push-1 {
1355 1355 left: 8.33333333%;
1356 1356 }
1357 1357 .col-lg-push-0 {
1358 1358 left: 0%;
1359 1359 }
1360 1360 .col-lg-offset-12 {
1361 1361 margin-left: 100%;
1362 1362 }
1363 1363 .col-lg-offset-11 {
1364 1364 margin-left: 91.66666667%;
1365 1365 }
1366 1366 .col-lg-offset-10 {
1367 1367 margin-left: 83.33333333%;
1368 1368 }
1369 1369 .col-lg-offset-9 {
1370 1370 margin-left: 75%;
1371 1371 }
1372 1372 .col-lg-offset-8 {
1373 1373 margin-left: 66.66666667%;
1374 1374 }
1375 1375 .col-lg-offset-7 {
1376 1376 margin-left: 58.33333333%;
1377 1377 }
1378 1378 .col-lg-offset-6 {
1379 1379 margin-left: 50%;
1380 1380 }
1381 1381 .col-lg-offset-5 {
1382 1382 margin-left: 41.66666667%;
1383 1383 }
1384 1384 .col-lg-offset-4 {
1385 1385 margin-left: 33.33333333%;
1386 1386 }
1387 1387 .col-lg-offset-3 {
1388 1388 margin-left: 25%;
1389 1389 }
1390 1390 .col-lg-offset-2 {
1391 1391 margin-left: 16.66666667%;
1392 1392 }
1393 1393 .col-lg-offset-1 {
1394 1394 margin-left: 8.33333333%;
1395 1395 }
1396 1396 .col-lg-offset-0 {
1397 1397 margin-left: 0%;
1398 1398 }
1399 1399 }
1400 1400 table {
1401 1401 max-width: 100%;
1402 1402 background-color: transparent;
1403 1403 }
1404 1404 th {
1405 1405 text-align: left;
1406 1406 }
1407 1407 .table {
1408 1408 width: 100%;
1409 1409 margin-bottom: 18px;
1410 1410 }
1411 1411 .table > thead > tr > th,
1412 1412 .table > tbody > tr > th,
1413 1413 .table > tfoot > tr > th,
1414 1414 .table > thead > tr > td,
1415 1415 .table > tbody > tr > td,
1416 1416 .table > tfoot > tr > td {
1417 1417 padding: 8px;
1418 1418 line-height: 1.42857143;
1419 1419 vertical-align: top;
1420 1420 border-top: 1px solid #dddddd;
1421 1421 }
1422 1422 .table > thead > tr > th {
1423 1423 vertical-align: bottom;
1424 1424 border-bottom: 2px solid #dddddd;
1425 1425 }
1426 1426 .table > caption + thead > tr:first-child > th,
1427 1427 .table > colgroup + thead > tr:first-child > th,
1428 1428 .table > thead:first-child > tr:first-child > th,
1429 1429 .table > caption + thead > tr:first-child > td,
1430 1430 .table > colgroup + thead > tr:first-child > td,
1431 1431 .table > thead:first-child > tr:first-child > td {
1432 1432 border-top: 0;
1433 1433 }
1434 1434 .table > tbody + tbody {
1435 1435 border-top: 2px solid #dddddd;
1436 1436 }
1437 1437 .table .table {
1438 1438 background-color: #ffffff;
1439 1439 }
1440 1440 .table-condensed > thead > tr > th,
1441 1441 .table-condensed > tbody > tr > th,
1442 1442 .table-condensed > tfoot > tr > th,
1443 1443 .table-condensed > thead > tr > td,
1444 1444 .table-condensed > tbody > tr > td,
1445 1445 .table-condensed > tfoot > tr > td {
1446 1446 padding: 5px;
1447 1447 }
1448 1448 .table-bordered {
1449 1449 border: 1px solid #dddddd;
1450 1450 }
1451 1451 .table-bordered > thead > tr > th,
1452 1452 .table-bordered > tbody > tr > th,
1453 1453 .table-bordered > tfoot > tr > th,
1454 1454 .table-bordered > thead > tr > td,
1455 1455 .table-bordered > tbody > tr > td,
1456 1456 .table-bordered > tfoot > tr > td {
1457 1457 border: 1px solid #dddddd;
1458 1458 }
1459 1459 .table-bordered > thead > tr > th,
1460 1460 .table-bordered > thead > tr > td {
1461 1461 border-bottom-width: 2px;
1462 1462 }
1463 1463 .table-striped > tbody > tr:nth-child(odd) > td,
1464 1464 .table-striped > tbody > tr:nth-child(odd) > th {
1465 1465 background-color: #f9f9f9;
1466 1466 }
1467 1467 .table-hover > tbody > tr:hover > td,
1468 1468 .table-hover > tbody > tr:hover > th {
1469 1469 background-color: #f5f5f5;
1470 1470 }
1471 1471 table col[class*="col-"] {
1472 1472 position: static;
1473 1473 float: none;
1474 1474 display: table-column;
1475 1475 }
1476 1476 table td[class*="col-"],
1477 1477 table th[class*="col-"] {
1478 1478 position: static;
1479 1479 float: none;
1480 1480 display: table-cell;
1481 1481 }
1482 1482 .table > thead > tr > td.active,
1483 1483 .table > tbody > tr > td.active,
1484 1484 .table > tfoot > tr > td.active,
1485 1485 .table > thead > tr > th.active,
1486 1486 .table > tbody > tr > th.active,
1487 1487 .table > tfoot > tr > th.active,
1488 1488 .table > thead > tr.active > td,
1489 1489 .table > tbody > tr.active > td,
1490 1490 .table > tfoot > tr.active > td,
1491 1491 .table > thead > tr.active > th,
1492 1492 .table > tbody > tr.active > th,
1493 1493 .table > tfoot > tr.active > th {
1494 1494 background-color: #f5f5f5;
1495 1495 }
1496 1496 .table-hover > tbody > tr > td.active:hover,
1497 1497 .table-hover > tbody > tr > th.active:hover,
1498 1498 .table-hover > tbody > tr.active:hover > td,
1499 1499 .table-hover > tbody > tr.active:hover > th {
1500 1500 background-color: #e8e8e8;
1501 1501 }
1502 1502 .table > thead > tr > td.success,
1503 1503 .table > tbody > tr > td.success,
1504 1504 .table > tfoot > tr > td.success,
1505 1505 .table > thead > tr > th.success,
1506 1506 .table > tbody > tr > th.success,
1507 1507 .table > tfoot > tr > th.success,
1508 1508 .table > thead > tr.success > td,
1509 1509 .table > tbody > tr.success > td,
1510 1510 .table > tfoot > tr.success > td,
1511 1511 .table > thead > tr.success > th,
1512 1512 .table > tbody > tr.success > th,
1513 1513 .table > tfoot > tr.success > th {
1514 1514 background-color: #dff0d8;
1515 1515 }
1516 1516 .table-hover > tbody > tr > td.success:hover,
1517 1517 .table-hover > tbody > tr > th.success:hover,
1518 1518 .table-hover > tbody > tr.success:hover > td,
1519 1519 .table-hover > tbody > tr.success:hover > th {
1520 1520 background-color: #d0e9c6;
1521 1521 }
1522 1522 .table > thead > tr > td.info,
1523 1523 .table > tbody > tr > td.info,
1524 1524 .table > tfoot > tr > td.info,
1525 1525 .table > thead > tr > th.info,
1526 1526 .table > tbody > tr > th.info,
1527 1527 .table > tfoot > tr > th.info,
1528 1528 .table > thead > tr.info > td,
1529 1529 .table > tbody > tr.info > td,
1530 1530 .table > tfoot > tr.info > td,
1531 1531 .table > thead > tr.info > th,
1532 1532 .table > tbody > tr.info > th,
1533 1533 .table > tfoot > tr.info > th {
1534 1534 background-color: #d9edf7;
1535 1535 }
1536 1536 .table-hover > tbody > tr > td.info:hover,
1537 1537 .table-hover > tbody > tr > th.info:hover,
1538 1538 .table-hover > tbody > tr.info:hover > td,
1539 1539 .table-hover > tbody > tr.info:hover > th {
1540 1540 background-color: #c4e3f3;
1541 1541 }
1542 1542 .table > thead > tr > td.warning,
1543 1543 .table > tbody > tr > td.warning,
1544 1544 .table > tfoot > tr > td.warning,
1545 1545 .table > thead > tr > th.warning,
1546 1546 .table > tbody > tr > th.warning,
1547 1547 .table > tfoot > tr > th.warning,
1548 1548 .table > thead > tr.warning > td,
1549 1549 .table > tbody > tr.warning > td,
1550 1550 .table > tfoot > tr.warning > td,
1551 1551 .table > thead > tr.warning > th,
1552 1552 .table > tbody > tr.warning > th,
1553 1553 .table > tfoot > tr.warning > th {
1554 1554 background-color: #fcf8e3;
1555 1555 }
1556 1556 .table-hover > tbody > tr > td.warning:hover,
1557 1557 .table-hover > tbody > tr > th.warning:hover,
1558 1558 .table-hover > tbody > tr.warning:hover > td,
1559 1559 .table-hover > tbody > tr.warning:hover > th {
1560 1560 background-color: #faf2cc;
1561 1561 }
1562 1562 .table > thead > tr > td.danger,
1563 1563 .table > tbody > tr > td.danger,
1564 1564 .table > tfoot > tr > td.danger,
1565 1565 .table > thead > tr > th.danger,
1566 1566 .table > tbody > tr > th.danger,
1567 1567 .table > tfoot > tr > th.danger,
1568 1568 .table > thead > tr.danger > td,
1569 1569 .table > tbody > tr.danger > td,
1570 1570 .table > tfoot > tr.danger > td,
1571 1571 .table > thead > tr.danger > th,
1572 1572 .table > tbody > tr.danger > th,
1573 1573 .table > tfoot > tr.danger > th {
1574 1574 background-color: #f2dede;
1575 1575 }
1576 1576 .table-hover > tbody > tr > td.danger:hover,
1577 1577 .table-hover > tbody > tr > th.danger:hover,
1578 1578 .table-hover > tbody > tr.danger:hover > td,
1579 1579 .table-hover > tbody > tr.danger:hover > th {
1580 1580 background-color: #ebcccc;
1581 1581 }
1582 1582 @media (max-width: 767px) {
1583 1583 .table-responsive {
1584 1584 width: 100%;
1585 1585 margin-bottom: 13.5px;
1586 1586 overflow-y: hidden;
1587 1587 overflow-x: scroll;
1588 1588 -ms-overflow-style: -ms-autohiding-scrollbar;
1589 1589 border: 1px solid #dddddd;
1590 1590 -webkit-overflow-scrolling: touch;
1591 1591 }
1592 1592 .table-responsive > .table {
1593 1593 margin-bottom: 0;
1594 1594 }
1595 1595 .table-responsive > .table > thead > tr > th,
1596 1596 .table-responsive > .table > tbody > tr > th,
1597 1597 .table-responsive > .table > tfoot > tr > th,
1598 1598 .table-responsive > .table > thead > tr > td,
1599 1599 .table-responsive > .table > tbody > tr > td,
1600 1600 .table-responsive > .table > tfoot > tr > td {
1601 1601 white-space: nowrap;
1602 1602 }
1603 1603 .table-responsive > .table-bordered {
1604 1604 border: 0;
1605 1605 }
1606 1606 .table-responsive > .table-bordered > thead > tr > th:first-child,
1607 1607 .table-responsive > .table-bordered > tbody > tr > th:first-child,
1608 1608 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1609 1609 .table-responsive > .table-bordered > thead > tr > td:first-child,
1610 1610 .table-responsive > .table-bordered > tbody > tr > td:first-child,
1611 1611 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1612 1612 border-left: 0;
1613 1613 }
1614 1614 .table-responsive > .table-bordered > thead > tr > th:last-child,
1615 1615 .table-responsive > .table-bordered > tbody > tr > th:last-child,
1616 1616 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1617 1617 .table-responsive > .table-bordered > thead > tr > td:last-child,
1618 1618 .table-responsive > .table-bordered > tbody > tr > td:last-child,
1619 1619 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1620 1620 border-right: 0;
1621 1621 }
1622 1622 .table-responsive > .table-bordered > tbody > tr:last-child > th,
1623 1623 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1624 1624 .table-responsive > .table-bordered > tbody > tr:last-child > td,
1625 1625 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1626 1626 border-bottom: 0;
1627 1627 }
1628 1628 }
1629 1629 fieldset {
1630 1630 padding: 0;
1631 1631 margin: 0;
1632 1632 border: 0;
1633 1633 min-width: 0;
1634 1634 }
1635 1635 legend {
1636 1636 display: block;
1637 1637 width: 100%;
1638 1638 padding: 0;
1639 1639 margin-bottom: 18px;
1640 1640 font-size: 19.5px;
1641 1641 line-height: inherit;
1642 1642 color: #333333;
1643 1643 border: 0;
1644 1644 border-bottom: 1px solid #e5e5e5;
1645 1645 }
1646 1646 label {
1647 1647 display: inline-block;
1648 1648 margin-bottom: 5px;
1649 1649 font-weight: bold;
1650 1650 }
1651 1651 input[type="search"] {
1652 1652 -webkit-box-sizing: border-box;
1653 1653 -moz-box-sizing: border-box;
1654 1654 box-sizing: border-box;
1655 1655 }
1656 1656 input[type="radio"],
1657 1657 input[type="checkbox"] {
1658 1658 margin: 4px 0 0;
1659 1659 margin-top: 1px \9;
1660 1660 /* IE8-9 */
1661 1661 line-height: normal;
1662 1662 }
1663 1663 input[type="file"] {
1664 1664 display: block;
1665 1665 }
1666 1666 input[type="range"] {
1667 1667 display: block;
1668 1668 width: 100%;
1669 1669 }
1670 1670 select[multiple],
1671 1671 select[size] {
1672 1672 height: auto;
1673 1673 }
1674 1674 input[type="file"]:focus,
1675 1675 input[type="radio"]:focus,
1676 1676 input[type="checkbox"]:focus {
1677 1677 outline: thin dotted;
1678 1678 outline: 5px auto -webkit-focus-ring-color;
1679 1679 outline-offset: -2px;
1680 1680 }
1681 1681 output {
1682 1682 display: block;
1683 1683 padding-top: 7px;
1684 1684 font-size: 13px;
1685 1685 line-height: 1.42857143;
1686 1686 color: #555555;
1687 1687 }
1688 1688 .form-control {
1689 1689 display: block;
1690 1690 width: 100%;
1691 1691 height: 32px;
1692 1692 padding: 6px 12px;
1693 1693 font-size: 13px;
1694 1694 line-height: 1.42857143;
1695 1695 color: #555555;
1696 1696 background-color: #ffffff;
1697 1697 background-image: none;
1698 1698 border: 1px solid #cccccc;
1699 1699 border-radius: 4px;
1700 1700 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1701 1701 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1702 1702 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1703 1703 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1704 1704 }
1705 1705 .form-control:focus {
1706 1706 border-color: #66afe9;
1707 1707 outline: 0;
1708 1708 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1709 1709 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1710 1710 }
1711 1711 .form-control::-moz-placeholder {
1712 1712 color: #999999;
1713 1713 opacity: 1;
1714 1714 }
1715 1715 .form-control:-ms-input-placeholder {
1716 1716 color: #999999;
1717 1717 }
1718 1718 .form-control::-webkit-input-placeholder {
1719 1719 color: #999999;
1720 1720 }
1721 1721 .form-control[disabled],
1722 1722 .form-control[readonly],
1723 1723 fieldset[disabled] .form-control {
1724 1724 cursor: not-allowed;
1725 1725 background-color: #eeeeee;
1726 1726 opacity: 1;
1727 1727 }
1728 1728 textarea.form-control {
1729 1729 height: auto;
1730 1730 }
1731 1731 input[type="search"] {
1732 1732 -webkit-appearance: none;
1733 1733 }
1734 1734 input[type="date"] {
1735 1735 line-height: 32px;
1736 1736 }
1737 1737 .form-group {
1738 1738 margin-bottom: 15px;
1739 1739 }
1740 1740 .radio,
1741 1741 .checkbox {
1742 1742 display: block;
1743 1743 min-height: 18px;
1744 1744 margin-top: 10px;
1745 1745 margin-bottom: 10px;
1746 1746 padding-left: 20px;
1747 1747 }
1748 1748 .radio label,
1749 1749 .checkbox label {
1750 1750 display: inline;
1751 1751 font-weight: normal;
1752 1752 cursor: pointer;
1753 1753 }
1754 1754 .radio input[type="radio"],
1755 1755 .radio-inline input[type="radio"],
1756 1756 .checkbox input[type="checkbox"],
1757 1757 .checkbox-inline input[type="checkbox"] {
1758 1758 float: left;
1759 1759 margin-left: -20px;
1760 1760 }
1761 1761 .radio + .radio,
1762 1762 .checkbox + .checkbox {
1763 1763 margin-top: -5px;
1764 1764 }
1765 1765 .radio-inline,
1766 1766 .checkbox-inline {
1767 1767 display: inline-block;
1768 1768 padding-left: 20px;
1769 1769 margin-bottom: 0;
1770 1770 vertical-align: middle;
1771 1771 font-weight: normal;
1772 1772 cursor: pointer;
1773 1773 }
1774 1774 .radio-inline + .radio-inline,
1775 1775 .checkbox-inline + .checkbox-inline {
1776 1776 margin-top: 0;
1777 1777 margin-left: 10px;
1778 1778 }
1779 1779 input[type="radio"][disabled],
1780 1780 input[type="checkbox"][disabled],
1781 1781 .radio[disabled],
1782 1782 .radio-inline[disabled],
1783 1783 .checkbox[disabled],
1784 1784 .checkbox-inline[disabled],
1785 1785 fieldset[disabled] input[type="radio"],
1786 1786 fieldset[disabled] input[type="checkbox"],
1787 1787 fieldset[disabled] .radio,
1788 1788 fieldset[disabled] .radio-inline,
1789 1789 fieldset[disabled] .checkbox,
1790 1790 fieldset[disabled] .checkbox-inline {
1791 1791 cursor: not-allowed;
1792 1792 }
1793 1793 .input-sm {
1794 1794 height: 30px;
1795 1795 padding: 5px 10px;
1796 1796 font-size: 12px;
1797 1797 line-height: 1.5;
1798 1798 border-radius: 3px;
1799 1799 }
1800 1800 select.input-sm {
1801 1801 height: 30px;
1802 1802 line-height: 30px;
1803 1803 }
1804 1804 textarea.input-sm,
1805 1805 select[multiple].input-sm {
1806 1806 height: auto;
1807 1807 }
1808 1808 .input-lg {
1809 1809 height: 45px;
1810 1810 padding: 10px 16px;
1811 1811 font-size: 17px;
1812 1812 line-height: 1.33;
1813 1813 border-radius: 6px;
1814 1814 }
1815 1815 select.input-lg {
1816 1816 height: 45px;
1817 1817 line-height: 45px;
1818 1818 }
1819 1819 textarea.input-lg,
1820 1820 select[multiple].input-lg {
1821 1821 height: auto;
1822 1822 }
1823 1823 .has-feedback {
1824 1824 position: relative;
1825 1825 }
1826 1826 .has-feedback .form-control {
1827 1827 padding-right: 40px;
1828 1828 }
1829 1829 .has-feedback .form-control-feedback {
1830 1830 position: absolute;
1831 1831 top: 23px;
1832 1832 right: 0;
1833 1833 display: block;
1834 1834 width: 32px;
1835 1835 height: 32px;
1836 1836 line-height: 32px;
1837 1837 text-align: center;
1838 1838 }
1839 1839 .has-success .help-block,
1840 1840 .has-success .control-label,
1841 1841 .has-success .radio,
1842 1842 .has-success .checkbox,
1843 1843 .has-success .radio-inline,
1844 1844 .has-success .checkbox-inline {
1845 1845 color: #3c763d;
1846 1846 }
1847 1847 .has-success .form-control {
1848 1848 border-color: #3c763d;
1849 1849 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1850 1850 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1851 1851 }
1852 1852 .has-success .form-control:focus {
1853 1853 border-color: #2b542c;
1854 1854 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1855 1855 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1856 1856 }
1857 1857 .has-success .input-group-addon {
1858 1858 color: #3c763d;
1859 1859 border-color: #3c763d;
1860 1860 background-color: #dff0d8;
1861 1861 }
1862 1862 .has-success .form-control-feedback {
1863 1863 color: #3c763d;
1864 1864 }
1865 1865 .has-warning .help-block,
1866 1866 .has-warning .control-label,
1867 1867 .has-warning .radio,
1868 1868 .has-warning .checkbox,
1869 1869 .has-warning .radio-inline,
1870 1870 .has-warning .checkbox-inline {
1871 1871 color: #8a6d3b;
1872 1872 }
1873 1873 .has-warning .form-control {
1874 1874 border-color: #8a6d3b;
1875 1875 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1876 1876 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1877 1877 }
1878 1878 .has-warning .form-control:focus {
1879 1879 border-color: #66512c;
1880 1880 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1881 1881 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1882 1882 }
1883 1883 .has-warning .input-group-addon {
1884 1884 color: #8a6d3b;
1885 1885 border-color: #8a6d3b;
1886 1886 background-color: #fcf8e3;
1887 1887 }
1888 1888 .has-warning .form-control-feedback {
1889 1889 color: #8a6d3b;
1890 1890 }
1891 1891 .has-error .help-block,
1892 1892 .has-error .control-label,
1893 1893 .has-error .radio,
1894 1894 .has-error .checkbox,
1895 1895 .has-error .radio-inline,
1896 1896 .has-error .checkbox-inline {
1897 1897 color: #a94442;
1898 1898 }
1899 1899 .has-error .form-control {
1900 1900 border-color: #a94442;
1901 1901 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1902 1902 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1903 1903 }
1904 1904 .has-error .form-control:focus {
1905 1905 border-color: #843534;
1906 1906 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1907 1907 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1908 1908 }
1909 1909 .has-error .input-group-addon {
1910 1910 color: #a94442;
1911 1911 border-color: #a94442;
1912 1912 background-color: #f2dede;
1913 1913 }
1914 1914 .has-error .form-control-feedback {
1915 1915 color: #a94442;
1916 1916 }
1917 1917 .form-control-static {
1918 1918 margin-bottom: 0;
1919 1919 }
1920 1920 .help-block {
1921 1921 display: block;
1922 1922 margin-top: 5px;
1923 1923 margin-bottom: 10px;
1924 1924 color: #404040;
1925 1925 }
1926 1926 @media (min-width: 768px) {
1927 1927 .form-inline .form-group {
1928 1928 display: inline-block;
1929 1929 margin-bottom: 0;
1930 1930 vertical-align: middle;
1931 1931 }
1932 1932 .form-inline .form-control {
1933 1933 display: inline-block;
1934 1934 width: auto;
1935 1935 vertical-align: middle;
1936 1936 }
1937 1937 .form-inline .input-group > .form-control {
1938 1938 width: 100%;
1939 1939 }
1940 1940 .form-inline .control-label {
1941 1941 margin-bottom: 0;
1942 1942 vertical-align: middle;
1943 1943 }
1944 1944 .form-inline .radio,
1945 1945 .form-inline .checkbox {
1946 1946 display: inline-block;
1947 1947 margin-top: 0;
1948 1948 margin-bottom: 0;
1949 1949 padding-left: 0;
1950 1950 vertical-align: middle;
1951 1951 }
1952 1952 .form-inline .radio input[type="radio"],
1953 1953 .form-inline .checkbox input[type="checkbox"] {
1954 1954 float: none;
1955 1955 margin-left: 0;
1956 1956 }
1957 1957 .form-inline .has-feedback .form-control-feedback {
1958 1958 top: 0;
1959 1959 }
1960 1960 }
1961 1961 .form-horizontal .control-label,
1962 1962 .form-horizontal .radio,
1963 1963 .form-horizontal .checkbox,
1964 1964 .form-horizontal .radio-inline,
1965 1965 .form-horizontal .checkbox-inline {
1966 1966 margin-top: 0;
1967 1967 margin-bottom: 0;
1968 1968 padding-top: 7px;
1969 1969 }
1970 1970 .form-horizontal .radio,
1971 1971 .form-horizontal .checkbox {
1972 1972 min-height: 25px;
1973 1973 }
1974 1974 .form-horizontal .form-group {
1975 1975 margin-left: -15px;
1976 1976 margin-right: -15px;
1977 1977 }
1978 1978 .form-horizontal .form-control-static {
1979 1979 padding-top: 7px;
1980 1980 }
1981 1981 @media (min-width: 768px) {
1982 1982 .form-horizontal .control-label {
1983 1983 text-align: right;
1984 1984 }
1985 1985 }
1986 1986 .form-horizontal .has-feedback .form-control-feedback {
1987 1987 top: 0;
1988 1988 right: 15px;
1989 1989 }
1990 1990 .btn {
1991 1991 display: inline-block;
1992 1992 margin-bottom: 0;
1993 1993 font-weight: normal;
1994 1994 text-align: center;
1995 1995 vertical-align: middle;
1996 1996 cursor: pointer;
1997 1997 background-image: none;
1998 1998 border: 1px solid transparent;
1999 1999 white-space: nowrap;
2000 2000 padding: 6px 12px;
2001 2001 font-size: 13px;
2002 2002 line-height: 1.42857143;
2003 2003 border-radius: 4px;
2004 2004 -webkit-user-select: none;
2005 2005 -moz-user-select: none;
2006 2006 -ms-user-select: none;
2007 2007 user-select: none;
2008 2008 }
2009 2009 .btn:focus,
2010 2010 .btn:active:focus,
2011 2011 .btn.active:focus {
2012 2012 outline: thin dotted;
2013 2013 outline: 5px auto -webkit-focus-ring-color;
2014 2014 outline-offset: -2px;
2015 2015 }
2016 2016 .btn:hover,
2017 2017 .btn:focus {
2018 2018 color: #333333;
2019 2019 text-decoration: none;
2020 2020 }
2021 2021 .btn:active,
2022 2022 .btn.active {
2023 2023 outline: 0;
2024 2024 background-image: none;
2025 2025 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2026 2026 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2027 2027 }
2028 2028 .btn.disabled,
2029 2029 .btn[disabled],
2030 2030 fieldset[disabled] .btn {
2031 2031 cursor: not-allowed;
2032 2032 pointer-events: none;
2033 2033 opacity: 0.65;
2034 2034 filter: alpha(opacity=65);
2035 2035 -webkit-box-shadow: none;
2036 2036 box-shadow: none;
2037 2037 }
2038 2038 .btn-default {
2039 2039 color: #333333;
2040 2040 background-color: #ffffff;
2041 2041 border-color: #cccccc;
2042 2042 }
2043 2043 .btn-default:hover,
2044 2044 .btn-default:focus,
2045 2045 .btn-default:active,
2046 2046 .btn-default.active,
2047 2047 .open .dropdown-toggle.btn-default {
2048 2048 color: #333333;
2049 2049 background-color: #ebebeb;
2050 2050 border-color: #adadad;
2051 2051 }
2052 2052 .btn-default:active,
2053 2053 .btn-default.active,
2054 2054 .open .dropdown-toggle.btn-default {
2055 2055 background-image: none;
2056 2056 }
2057 2057 .btn-default.disabled,
2058 2058 .btn-default[disabled],
2059 2059 fieldset[disabled] .btn-default,
2060 2060 .btn-default.disabled:hover,
2061 2061 .btn-default[disabled]:hover,
2062 2062 fieldset[disabled] .btn-default:hover,
2063 2063 .btn-default.disabled:focus,
2064 2064 .btn-default[disabled]:focus,
2065 2065 fieldset[disabled] .btn-default:focus,
2066 2066 .btn-default.disabled:active,
2067 2067 .btn-default[disabled]:active,
2068 2068 fieldset[disabled] .btn-default:active,
2069 2069 .btn-default.disabled.active,
2070 2070 .btn-default[disabled].active,
2071 2071 fieldset[disabled] .btn-default.active {
2072 2072 background-color: #ffffff;
2073 2073 border-color: #cccccc;
2074 2074 }
2075 2075 .btn-default .badge {
2076 2076 color: #ffffff;
2077 2077 background-color: #333333;
2078 2078 }
2079 2079 .btn-primary {
2080 2080 color: #ffffff;
2081 2081 background-color: #428bca;
2082 2082 border-color: #357ebd;
2083 2083 }
2084 2084 .btn-primary:hover,
2085 2085 .btn-primary:focus,
2086 2086 .btn-primary:active,
2087 2087 .btn-primary.active,
2088 2088 .open .dropdown-toggle.btn-primary {
2089 2089 color: #ffffff;
2090 2090 background-color: #3276b1;
2091 2091 border-color: #285e8e;
2092 2092 }
2093 2093 .btn-primary:active,
2094 2094 .btn-primary.active,
2095 2095 .open .dropdown-toggle.btn-primary {
2096 2096 background-image: none;
2097 2097 }
2098 2098 .btn-primary.disabled,
2099 2099 .btn-primary[disabled],
2100 2100 fieldset[disabled] .btn-primary,
2101 2101 .btn-primary.disabled:hover,
2102 2102 .btn-primary[disabled]:hover,
2103 2103 fieldset[disabled] .btn-primary:hover,
2104 2104 .btn-primary.disabled:focus,
2105 2105 .btn-primary[disabled]:focus,
2106 2106 fieldset[disabled] .btn-primary:focus,
2107 2107 .btn-primary.disabled:active,
2108 2108 .btn-primary[disabled]:active,
2109 2109 fieldset[disabled] .btn-primary:active,
2110 2110 .btn-primary.disabled.active,
2111 2111 .btn-primary[disabled].active,
2112 2112 fieldset[disabled] .btn-primary.active {
2113 2113 background-color: #428bca;
2114 2114 border-color: #357ebd;
2115 2115 }
2116 2116 .btn-primary .badge {
2117 2117 color: #428bca;
2118 2118 background-color: #ffffff;
2119 2119 }
2120 2120 .btn-success {
2121 2121 color: #ffffff;
2122 2122 background-color: #5cb85c;
2123 2123 border-color: #4cae4c;
2124 2124 }
2125 2125 .btn-success:hover,
2126 2126 .btn-success:focus,
2127 2127 .btn-success:active,
2128 2128 .btn-success.active,
2129 2129 .open .dropdown-toggle.btn-success {
2130 2130 color: #ffffff;
2131 2131 background-color: #47a447;
2132 2132 border-color: #398439;
2133 2133 }
2134 2134 .btn-success:active,
2135 2135 .btn-success.active,
2136 2136 .open .dropdown-toggle.btn-success {
2137 2137 background-image: none;
2138 2138 }
2139 2139 .btn-success.disabled,
2140 2140 .btn-success[disabled],
2141 2141 fieldset[disabled] .btn-success,
2142 2142 .btn-success.disabled:hover,
2143 2143 .btn-success[disabled]:hover,
2144 2144 fieldset[disabled] .btn-success:hover,
2145 2145 .btn-success.disabled:focus,
2146 2146 .btn-success[disabled]:focus,
2147 2147 fieldset[disabled] .btn-success:focus,
2148 2148 .btn-success.disabled:active,
2149 2149 .btn-success[disabled]:active,
2150 2150 fieldset[disabled] .btn-success:active,
2151 2151 .btn-success.disabled.active,
2152 2152 .btn-success[disabled].active,
2153 2153 fieldset[disabled] .btn-success.active {
2154 2154 background-color: #5cb85c;
2155 2155 border-color: #4cae4c;
2156 2156 }
2157 2157 .btn-success .badge {
2158 2158 color: #5cb85c;
2159 2159 background-color: #ffffff;
2160 2160 }
2161 2161 .btn-info {
2162 2162 color: #ffffff;
2163 2163 background-color: #5bc0de;
2164 2164 border-color: #46b8da;
2165 2165 }
2166 2166 .btn-info:hover,
2167 2167 .btn-info:focus,
2168 2168 .btn-info:active,
2169 2169 .btn-info.active,
2170 2170 .open .dropdown-toggle.btn-info {
2171 2171 color: #ffffff;
2172 2172 background-color: #39b3d7;
2173 2173 border-color: #269abc;
2174 2174 }
2175 2175 .btn-info:active,
2176 2176 .btn-info.active,
2177 2177 .open .dropdown-toggle.btn-info {
2178 2178 background-image: none;
2179 2179 }
2180 2180 .btn-info.disabled,
2181 2181 .btn-info[disabled],
2182 2182 fieldset[disabled] .btn-info,
2183 2183 .btn-info.disabled:hover,
2184 2184 .btn-info[disabled]:hover,
2185 2185 fieldset[disabled] .btn-info:hover,
2186 2186 .btn-info.disabled:focus,
2187 2187 .btn-info[disabled]:focus,
2188 2188 fieldset[disabled] .btn-info:focus,
2189 2189 .btn-info.disabled:active,
2190 2190 .btn-info[disabled]:active,
2191 2191 fieldset[disabled] .btn-info:active,
2192 2192 .btn-info.disabled.active,
2193 2193 .btn-info[disabled].active,
2194 2194 fieldset[disabled] .btn-info.active {
2195 2195 background-color: #5bc0de;
2196 2196 border-color: #46b8da;
2197 2197 }
2198 2198 .btn-info .badge {
2199 2199 color: #5bc0de;
2200 2200 background-color: #ffffff;
2201 2201 }
2202 2202 .btn-warning {
2203 2203 color: #ffffff;
2204 2204 background-color: #f0ad4e;
2205 2205 border-color: #eea236;
2206 2206 }
2207 2207 .btn-warning:hover,
2208 2208 .btn-warning:focus,
2209 2209 .btn-warning:active,
2210 2210 .btn-warning.active,
2211 2211 .open .dropdown-toggle.btn-warning {
2212 2212 color: #ffffff;
2213 2213 background-color: #ed9c28;
2214 2214 border-color: #d58512;
2215 2215 }
2216 2216 .btn-warning:active,
2217 2217 .btn-warning.active,
2218 2218 .open .dropdown-toggle.btn-warning {
2219 2219 background-image: none;
2220 2220 }
2221 2221 .btn-warning.disabled,
2222 2222 .btn-warning[disabled],
2223 2223 fieldset[disabled] .btn-warning,
2224 2224 .btn-warning.disabled:hover,
2225 2225 .btn-warning[disabled]:hover,
2226 2226 fieldset[disabled] .btn-warning:hover,
2227 2227 .btn-warning.disabled:focus,
2228 2228 .btn-warning[disabled]:focus,
2229 2229 fieldset[disabled] .btn-warning:focus,
2230 2230 .btn-warning.disabled:active,
2231 2231 .btn-warning[disabled]:active,
2232 2232 fieldset[disabled] .btn-warning:active,
2233 2233 .btn-warning.disabled.active,
2234 2234 .btn-warning[disabled].active,
2235 2235 fieldset[disabled] .btn-warning.active {
2236 2236 background-color: #f0ad4e;
2237 2237 border-color: #eea236;
2238 2238 }
2239 2239 .btn-warning .badge {
2240 2240 color: #f0ad4e;
2241 2241 background-color: #ffffff;
2242 2242 }
2243 2243 .btn-danger {
2244 2244 color: #ffffff;
2245 2245 background-color: #d9534f;
2246 2246 border-color: #d43f3a;
2247 2247 }
2248 2248 .btn-danger:hover,
2249 2249 .btn-danger:focus,
2250 2250 .btn-danger:active,
2251 2251 .btn-danger.active,
2252 2252 .open .dropdown-toggle.btn-danger {
2253 2253 color: #ffffff;
2254 2254 background-color: #d2322d;
2255 2255 border-color: #ac2925;
2256 2256 }
2257 2257 .btn-danger:active,
2258 2258 .btn-danger.active,
2259 2259 .open .dropdown-toggle.btn-danger {
2260 2260 background-image: none;
2261 2261 }
2262 2262 .btn-danger.disabled,
2263 2263 .btn-danger[disabled],
2264 2264 fieldset[disabled] .btn-danger,
2265 2265 .btn-danger.disabled:hover,
2266 2266 .btn-danger[disabled]:hover,
2267 2267 fieldset[disabled] .btn-danger:hover,
2268 2268 .btn-danger.disabled:focus,
2269 2269 .btn-danger[disabled]:focus,
2270 2270 fieldset[disabled] .btn-danger:focus,
2271 2271 .btn-danger.disabled:active,
2272 2272 .btn-danger[disabled]:active,
2273 2273 fieldset[disabled] .btn-danger:active,
2274 2274 .btn-danger.disabled.active,
2275 2275 .btn-danger[disabled].active,
2276 2276 fieldset[disabled] .btn-danger.active {
2277 2277 background-color: #d9534f;
2278 2278 border-color: #d43f3a;
2279 2279 }
2280 2280 .btn-danger .badge {
2281 2281 color: #d9534f;
2282 2282 background-color: #ffffff;
2283 2283 }
2284 2284 .btn-link {
2285 2285 color: #428bca;
2286 2286 font-weight: normal;
2287 2287 cursor: pointer;
2288 2288 border-radius: 0;
2289 2289 }
2290 2290 .btn-link,
2291 2291 .btn-link:active,
2292 2292 .btn-link[disabled],
2293 2293 fieldset[disabled] .btn-link {
2294 2294 background-color: transparent;
2295 2295 -webkit-box-shadow: none;
2296 2296 box-shadow: none;
2297 2297 }
2298 2298 .btn-link,
2299 2299 .btn-link:hover,
2300 2300 .btn-link:focus,
2301 2301 .btn-link:active {
2302 2302 border-color: transparent;
2303 2303 }
2304 2304 .btn-link:hover,
2305 2305 .btn-link:focus {
2306 2306 color: #2a6496;
2307 2307 text-decoration: underline;
2308 2308 background-color: transparent;
2309 2309 }
2310 2310 .btn-link[disabled]:hover,
2311 2311 fieldset[disabled] .btn-link:hover,
2312 2312 .btn-link[disabled]:focus,
2313 2313 fieldset[disabled] .btn-link:focus {
2314 2314 color: #999999;
2315 2315 text-decoration: none;
2316 2316 }
2317 2317 .btn-lg,
2318 2318 .btn-group-lg > .btn {
2319 2319 padding: 10px 16px;
2320 2320 font-size: 17px;
2321 2321 line-height: 1.33;
2322 2322 border-radius: 6px;
2323 2323 }
2324 2324 .btn-sm,
2325 2325 .btn-group-sm > .btn {
2326 2326 padding: 5px 10px;
2327 2327 font-size: 12px;
2328 2328 line-height: 1.5;
2329 2329 border-radius: 3px;
2330 2330 }
2331 2331 .btn-xs,
2332 2332 .btn-group-xs > .btn {
2333 2333 padding: 1px 5px;
2334 2334 font-size: 12px;
2335 2335 line-height: 1.5;
2336 2336 border-radius: 3px;
2337 2337 }
2338 2338 .btn-block {
2339 2339 display: block;
2340 2340 width: 100%;
2341 2341 padding-left: 0;
2342 2342 padding-right: 0;
2343 2343 }
2344 2344 .btn-block + .btn-block {
2345 2345 margin-top: 5px;
2346 2346 }
2347 2347 input[type="submit"].btn-block,
2348 2348 input[type="reset"].btn-block,
2349 2349 input[type="button"].btn-block {
2350 2350 width: 100%;
2351 2351 }
2352 2352 .fade {
2353 2353 opacity: 0;
2354 2354 -webkit-transition: opacity 0.15s linear;
2355 2355 transition: opacity 0.15s linear;
2356 2356 }
2357 2357 .fade.in {
2358 2358 opacity: 1;
2359 2359 }
2360 2360 .collapse {
2361 2361 display: none;
2362 2362 }
2363 2363 .collapse.in {
2364 2364 display: block;
2365 2365 }
2366 2366 .collapsing {
2367 2367 position: relative;
2368 2368 height: 0;
2369 2369 overflow: hidden;
2370 2370 -webkit-transition: height 0.35s ease;
2371 2371 transition: height 0.35s ease;
2372 2372 }
2373 2373 @font-face {
2374 2374 font-family: 'Glyphicons Halflings';
2375 2375 src: url('../fonts/glyphicons-halflings-regular.eot');
2376 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 2378 .glyphicon {
2379 2379 position: relative;
2380 2380 top: 1px;
2381 2381 display: inline-block;
2382 2382 font-family: 'Glyphicons Halflings';
2383 2383 font-style: normal;
2384 2384 font-weight: normal;
2385 2385 line-height: 1;
2386 2386 -webkit-font-smoothing: antialiased;
2387 2387 -moz-osx-font-smoothing: grayscale;
2388 2388 }
2389 2389 .glyphicon-asterisk:before {
2390 2390 content: "\2a";
2391 2391 }
2392 2392 .glyphicon-plus:before {
2393 2393 content: "\2b";
2394 2394 }
2395 2395 .glyphicon-euro:before {
2396 2396 content: "\20ac";
2397 2397 }
2398 2398 .glyphicon-minus:before {
2399 2399 content: "\2212";
2400 2400 }
2401 2401 .glyphicon-cloud:before {
2402 2402 content: "\2601";
2403 2403 }
2404 2404 .glyphicon-envelope:before {
2405 2405 content: "\2709";
2406 2406 }
2407 2407 .glyphicon-pencil:before {
2408 2408 content: "\270f";
2409 2409 }
2410 2410 .glyphicon-glass:before {
2411 2411 content: "\e001";
2412 2412 }
2413 2413 .glyphicon-music:before {
2414 2414 content: "\e002";
2415 2415 }
2416 2416 .glyphicon-search:before {
2417 2417 content: "\e003";
2418 2418 }
2419 2419 .glyphicon-heart:before {
2420 2420 content: "\e005";
2421 2421 }
2422 2422 .glyphicon-star:before {
2423 2423 content: "\e006";
2424 2424 }
2425 2425 .glyphicon-star-empty:before {
2426 2426 content: "\e007";
2427 2427 }
2428 2428 .glyphicon-user:before {
2429 2429 content: "\e008";
2430 2430 }
2431 2431 .glyphicon-film:before {
2432 2432 content: "\e009";
2433 2433 }
2434 2434 .glyphicon-th-large:before {
2435 2435 content: "\e010";
2436 2436 }
2437 2437 .glyphicon-th:before {
2438 2438 content: "\e011";
2439 2439 }
2440 2440 .glyphicon-th-list:before {
2441 2441 content: "\e012";
2442 2442 }
2443 2443 .glyphicon-ok:before {
2444 2444 content: "\e013";
2445 2445 }
2446 2446 .glyphicon-remove:before {
2447 2447 content: "\e014";
2448 2448 }
2449 2449 .glyphicon-zoom-in:before {
2450 2450 content: "\e015";
2451 2451 }
2452 2452 .glyphicon-zoom-out:before {
2453 2453 content: "\e016";
2454 2454 }
2455 2455 .glyphicon-off:before {
2456 2456 content: "\e017";
2457 2457 }
2458 2458 .glyphicon-signal:before {
2459 2459 content: "\e018";
2460 2460 }
2461 2461 .glyphicon-cog:before {
2462 2462 content: "\e019";
2463 2463 }
2464 2464 .glyphicon-trash:before {
2465 2465 content: "\e020";
2466 2466 }
2467 2467 .glyphicon-home:before {
2468 2468 content: "\e021";
2469 2469 }
2470 2470 .glyphicon-file:before {
2471 2471 content: "\e022";
2472 2472 }
2473 2473 .glyphicon-time:before {
2474 2474 content: "\e023";
2475 2475 }
2476 2476 .glyphicon-road:before {
2477 2477 content: "\e024";
2478 2478 }
2479 2479 .glyphicon-download-alt:before {
2480 2480 content: "\e025";
2481 2481 }
2482 2482 .glyphicon-download:before {
2483 2483 content: "\e026";
2484 2484 }
2485 2485 .glyphicon-upload:before {
2486 2486 content: "\e027";
2487 2487 }
2488 2488 .glyphicon-inbox:before {
2489 2489 content: "\e028";
2490 2490 }
2491 2491 .glyphicon-play-circle:before {
2492 2492 content: "\e029";
2493 2493 }
2494 2494 .glyphicon-repeat:before {
2495 2495 content: "\e030";
2496 2496 }
2497 2497 .glyphicon-refresh:before {
2498 2498 content: "\e031";
2499 2499 }
2500 2500 .glyphicon-list-alt:before {
2501 2501 content: "\e032";
2502 2502 }
2503 2503 .glyphicon-lock:before {
2504 2504 content: "\e033";
2505 2505 }
2506 2506 .glyphicon-flag:before {
2507 2507 content: "\e034";
2508 2508 }
2509 2509 .glyphicon-headphones:before {
2510 2510 content: "\e035";
2511 2511 }
2512 2512 .glyphicon-volume-off:before {
2513 2513 content: "\e036";
2514 2514 }
2515 2515 .glyphicon-volume-down:before {
2516 2516 content: "\e037";
2517 2517 }
2518 2518 .glyphicon-volume-up:before {
2519 2519 content: "\e038";
2520 2520 }
2521 2521 .glyphicon-qrcode:before {
2522 2522 content: "\e039";
2523 2523 }
2524 2524 .glyphicon-barcode:before {
2525 2525 content: "\e040";
2526 2526 }
2527 2527 .glyphicon-tag:before {
2528 2528 content: "\e041";
2529 2529 }
2530 2530 .glyphicon-tags:before {
2531 2531 content: "\e042";
2532 2532 }
2533 2533 .glyphicon-book:before {
2534 2534 content: "\e043";
2535 2535 }
2536 2536 .glyphicon-bookmark:before {
2537 2537 content: "\e044";
2538 2538 }
2539 2539 .glyphicon-print:before {
2540 2540 content: "\e045";
2541 2541 }
2542 2542 .glyphicon-camera:before {
2543 2543 content: "\e046";
2544 2544 }
2545 2545 .glyphicon-font:before {
2546 2546 content: "\e047";
2547 2547 }
2548 2548 .glyphicon-bold:before {
2549 2549 content: "\e048";
2550 2550 }
2551 2551 .glyphicon-italic:before {
2552 2552 content: "\e049";
2553 2553 }
2554 2554 .glyphicon-text-height:before {
2555 2555 content: "\e050";
2556 2556 }
2557 2557 .glyphicon-text-width:before {
2558 2558 content: "\e051";
2559 2559 }
2560 2560 .glyphicon-align-left:before {
2561 2561 content: "\e052";
2562 2562 }
2563 2563 .glyphicon-align-center:before {
2564 2564 content: "\e053";
2565 2565 }
2566 2566 .glyphicon-align-right:before {
2567 2567 content: "\e054";
2568 2568 }
2569 2569 .glyphicon-align-justify:before {
2570 2570 content: "\e055";
2571 2571 }
2572 2572 .glyphicon-list:before {
2573 2573 content: "\e056";
2574 2574 }
2575 2575 .glyphicon-indent-left:before {
2576 2576 content: "\e057";
2577 2577 }
2578 2578 .glyphicon-indent-right:before {
2579 2579 content: "\e058";
2580 2580 }
2581 2581 .glyphicon-facetime-video:before {
2582 2582 content: "\e059";
2583 2583 }
2584 2584 .glyphicon-picture:before {
2585 2585 content: "\e060";
2586 2586 }
2587 2587 .glyphicon-map-marker:before {
2588 2588 content: "\e062";
2589 2589 }
2590 2590 .glyphicon-adjust:before {
2591 2591 content: "\e063";
2592 2592 }
2593 2593 .glyphicon-tint:before {
2594 2594 content: "\e064";
2595 2595 }
2596 2596 .glyphicon-edit:before {
2597 2597 content: "\e065";
2598 2598 }
2599 2599 .glyphicon-share:before {
2600 2600 content: "\e066";
2601 2601 }
2602 2602 .glyphicon-check:before {
2603 2603 content: "\e067";
2604 2604 }
2605 2605 .glyphicon-move:before {
2606 2606 content: "\e068";
2607 2607 }
2608 2608 .glyphicon-step-backward:before {
2609 2609 content: "\e069";
2610 2610 }
2611 2611 .glyphicon-fast-backward:before {
2612 2612 content: "\e070";
2613 2613 }
2614 2614 .glyphicon-backward:before {
2615 2615 content: "\e071";
2616 2616 }
2617 2617 .glyphicon-play:before {
2618 2618 content: "\e072";
2619 2619 }
2620 2620 .glyphicon-pause:before {
2621 2621 content: "\e073";
2622 2622 }
2623 2623 .glyphicon-stop:before {
2624 2624 content: "\e074";
2625 2625 }
2626 2626 .glyphicon-forward:before {
2627 2627 content: "\e075";
2628 2628 }
2629 2629 .glyphicon-fast-forward:before {
2630 2630 content: "\e076";
2631 2631 }
2632 2632 .glyphicon-step-forward:before {
2633 2633 content: "\e077";
2634 2634 }
2635 2635 .glyphicon-eject:before {
2636 2636 content: "\e078";
2637 2637 }
2638 2638 .glyphicon-chevron-left:before {
2639 2639 content: "\e079";
2640 2640 }
2641 2641 .glyphicon-chevron-right:before {
2642 2642 content: "\e080";
2643 2643 }
2644 2644 .glyphicon-plus-sign:before {
2645 2645 content: "\e081";
2646 2646 }
2647 2647 .glyphicon-minus-sign:before {
2648 2648 content: "\e082";
2649 2649 }
2650 2650 .glyphicon-remove-sign:before {
2651 2651 content: "\e083";
2652 2652 }
2653 2653 .glyphicon-ok-sign:before {
2654 2654 content: "\e084";
2655 2655 }
2656 2656 .glyphicon-question-sign:before {
2657 2657 content: "\e085";
2658 2658 }
2659 2659 .glyphicon-info-sign:before {
2660 2660 content: "\e086";
2661 2661 }
2662 2662 .glyphicon-screenshot:before {
2663 2663 content: "\e087";
2664 2664 }
2665 2665 .glyphicon-remove-circle:before {
2666 2666 content: "\e088";
2667 2667 }
2668 2668 .glyphicon-ok-circle:before {
2669 2669 content: "\e089";
2670 2670 }
2671 2671 .glyphicon-ban-circle:before {
2672 2672 content: "\e090";
2673 2673 }
2674 2674 .glyphicon-arrow-left:before {
2675 2675 content: "\e091";
2676 2676 }
2677 2677 .glyphicon-arrow-right:before {
2678 2678 content: "\e092";
2679 2679 }
2680 2680 .glyphicon-arrow-up:before {
2681 2681 content: "\e093";
2682 2682 }
2683 2683 .glyphicon-arrow-down:before {
2684 2684 content: "\e094";
2685 2685 }
2686 2686 .glyphicon-share-alt:before {
2687 2687 content: "\e095";
2688 2688 }
2689 2689 .glyphicon-resize-full:before {
2690 2690 content: "\e096";
2691 2691 }
2692 2692 .glyphicon-resize-small:before {
2693 2693 content: "\e097";
2694 2694 }
2695 2695 .glyphicon-exclamation-sign:before {
2696 2696 content: "\e101";
2697 2697 }
2698 2698 .glyphicon-gift:before {
2699 2699 content: "\e102";
2700 2700 }
2701 2701 .glyphicon-leaf:before {
2702 2702 content: "\e103";
2703 2703 }
2704 2704 .glyphicon-fire:before {
2705 2705 content: "\e104";
2706 2706 }
2707 2707 .glyphicon-eye-open:before {
2708 2708 content: "\e105";
2709 2709 }
2710 2710 .glyphicon-eye-close:before {
2711 2711 content: "\e106";
2712 2712 }
2713 2713 .glyphicon-warning-sign:before {
2714 2714 content: "\e107";
2715 2715 }
2716 2716 .glyphicon-plane:before {
2717 2717 content: "\e108";
2718 2718 }
2719 2719 .glyphicon-calendar:before {
2720 2720 content: "\e109";
2721 2721 }
2722 2722 .glyphicon-random:before {
2723 2723 content: "\e110";
2724 2724 }
2725 2725 .glyphicon-comment:before {
2726 2726 content: "\e111";
2727 2727 }
2728 2728 .glyphicon-magnet:before {
2729 2729 content: "\e112";
2730 2730 }
2731 2731 .glyphicon-chevron-up:before {
2732 2732 content: "\e113";
2733 2733 }
2734 2734 .glyphicon-chevron-down:before {
2735 2735 content: "\e114";
2736 2736 }
2737 2737 .glyphicon-retweet:before {
2738 2738 content: "\e115";
2739 2739 }
2740 2740 .glyphicon-shopping-cart:before {
2741 2741 content: "\e116";
2742 2742 }
2743 2743 .glyphicon-folder-close:before {
2744 2744 content: "\e117";
2745 2745 }
2746 2746 .glyphicon-folder-open:before {
2747 2747 content: "\e118";
2748 2748 }
2749 2749 .glyphicon-resize-vertical:before {
2750 2750 content: "\e119";
2751 2751 }
2752 2752 .glyphicon-resize-horizontal:before {
2753 2753 content: "\e120";
2754 2754 }
2755 2755 .glyphicon-hdd:before {
2756 2756 content: "\e121";
2757 2757 }
2758 2758 .glyphicon-bullhorn:before {
2759 2759 content: "\e122";
2760 2760 }
2761 2761 .glyphicon-bell:before {
2762 2762 content: "\e123";
2763 2763 }
2764 2764 .glyphicon-certificate:before {
2765 2765 content: "\e124";
2766 2766 }
2767 2767 .glyphicon-thumbs-up:before {
2768 2768 content: "\e125";
2769 2769 }
2770 2770 .glyphicon-thumbs-down:before {
2771 2771 content: "\e126";
2772 2772 }
2773 2773 .glyphicon-hand-right:before {
2774 2774 content: "\e127";
2775 2775 }
2776 2776 .glyphicon-hand-left:before {
2777 2777 content: "\e128";
2778 2778 }
2779 2779 .glyphicon-hand-up:before {
2780 2780 content: "\e129";
2781 2781 }
2782 2782 .glyphicon-hand-down:before {
2783 2783 content: "\e130";
2784 2784 }
2785 2785 .glyphicon-circle-arrow-right:before {
2786 2786 content: "\e131";
2787 2787 }
2788 2788 .glyphicon-circle-arrow-left:before {
2789 2789 content: "\e132";
2790 2790 }
2791 2791 .glyphicon-circle-arrow-up:before {
2792 2792 content: "\e133";
2793 2793 }
2794 2794 .glyphicon-circle-arrow-down:before {
2795 2795 content: "\e134";
2796 2796 }
2797 2797 .glyphicon-globe:before {
2798 2798 content: "\e135";
2799 2799 }
2800 2800 .glyphicon-wrench:before {
2801 2801 content: "\e136";
2802 2802 }
2803 2803 .glyphicon-tasks:before {
2804 2804 content: "\e137";
2805 2805 }
2806 2806 .glyphicon-filter:before {
2807 2807 content: "\e138";
2808 2808 }
2809 2809 .glyphicon-briefcase:before {
2810 2810 content: "\e139";
2811 2811 }
2812 2812 .glyphicon-fullscreen:before {
2813 2813 content: "\e140";
2814 2814 }
2815 2815 .glyphicon-dashboard:before {
2816 2816 content: "\e141";
2817 2817 }
2818 2818 .glyphicon-paperclip:before {
2819 2819 content: "\e142";
2820 2820 }
2821 2821 .glyphicon-heart-empty:before {
2822 2822 content: "\e143";
2823 2823 }
2824 2824 .glyphicon-link:before {
2825 2825 content: "\e144";
2826 2826 }
2827 2827 .glyphicon-phone:before {
2828 2828 content: "\e145";
2829 2829 }
2830 2830 .glyphicon-pushpin:before {
2831 2831 content: "\e146";
2832 2832 }
2833 2833 .glyphicon-usd:before {
2834 2834 content: "\e148";
2835 2835 }
2836 2836 .glyphicon-gbp:before {
2837 2837 content: "\e149";
2838 2838 }
2839 2839 .glyphicon-sort:before {
2840 2840 content: "\e150";
2841 2841 }
2842 2842 .glyphicon-sort-by-alphabet:before {
2843 2843 content: "\e151";
2844 2844 }
2845 2845 .glyphicon-sort-by-alphabet-alt:before {
2846 2846 content: "\e152";
2847 2847 }
2848 2848 .glyphicon-sort-by-order:before {
2849 2849 content: "\e153";
2850 2850 }
2851 2851 .glyphicon-sort-by-order-alt:before {
2852 2852 content: "\e154";
2853 2853 }
2854 2854 .glyphicon-sort-by-attributes:before {
2855 2855 content: "\e155";
2856 2856 }
2857 2857 .glyphicon-sort-by-attributes-alt:before {
2858 2858 content: "\e156";
2859 2859 }
2860 2860 .glyphicon-unchecked:before {
2861 2861 content: "\e157";
2862 2862 }
2863 2863 .glyphicon-expand:before {
2864 2864 content: "\e158";
2865 2865 }
2866 2866 .glyphicon-collapse-down:before {
2867 2867 content: "\e159";
2868 2868 }
2869 2869 .glyphicon-collapse-up:before {
2870 2870 content: "\e160";
2871 2871 }
2872 2872 .glyphicon-log-in:before {
2873 2873 content: "\e161";
2874 2874 }
2875 2875 .glyphicon-flash:before {
2876 2876 content: "\e162";
2877 2877 }
2878 2878 .glyphicon-log-out:before {
2879 2879 content: "\e163";
2880 2880 }
2881 2881 .glyphicon-new-window:before {
2882 2882 content: "\e164";
2883 2883 }
2884 2884 .glyphicon-record:before {
2885 2885 content: "\e165";
2886 2886 }
2887 2887 .glyphicon-save:before {
2888 2888 content: "\e166";
2889 2889 }
2890 2890 .glyphicon-open:before {
2891 2891 content: "\e167";
2892 2892 }
2893 2893 .glyphicon-saved:before {
2894 2894 content: "\e168";
2895 2895 }
2896 2896 .glyphicon-import:before {
2897 2897 content: "\e169";
2898 2898 }
2899 2899 .glyphicon-export:before {
2900 2900 content: "\e170";
2901 2901 }
2902 2902 .glyphicon-send:before {
2903 2903 content: "\e171";
2904 2904 }
2905 2905 .glyphicon-floppy-disk:before {
2906 2906 content: "\e172";
2907 2907 }
2908 2908 .glyphicon-floppy-saved:before {
2909 2909 content: "\e173";
2910 2910 }
2911 2911 .glyphicon-floppy-remove:before {
2912 2912 content: "\e174";
2913 2913 }
2914 2914 .glyphicon-floppy-save:before {
2915 2915 content: "\e175";
2916 2916 }
2917 2917 .glyphicon-floppy-open:before {
2918 2918 content: "\e176";
2919 2919 }
2920 2920 .glyphicon-credit-card:before {
2921 2921 content: "\e177";
2922 2922 }
2923 2923 .glyphicon-transfer:before {
2924 2924 content: "\e178";
2925 2925 }
2926 2926 .glyphicon-cutlery:before {
2927 2927 content: "\e179";
2928 2928 }
2929 2929 .glyphicon-header:before {
2930 2930 content: "\e180";
2931 2931 }
2932 2932 .glyphicon-compressed:before {
2933 2933 content: "\e181";
2934 2934 }
2935 2935 .glyphicon-earphone:before {
2936 2936 content: "\e182";
2937 2937 }
2938 2938 .glyphicon-phone-alt:before {
2939 2939 content: "\e183";
2940 2940 }
2941 2941 .glyphicon-tower:before {
2942 2942 content: "\e184";
2943 2943 }
2944 2944 .glyphicon-stats:before {
2945 2945 content: "\e185";
2946 2946 }
2947 2947 .glyphicon-sd-video:before {
2948 2948 content: "\e186";
2949 2949 }
2950 2950 .glyphicon-hd-video:before {
2951 2951 content: "\e187";
2952 2952 }
2953 2953 .glyphicon-subtitles:before {
2954 2954 content: "\e188";
2955 2955 }
2956 2956 .glyphicon-sound-stereo:before {
2957 2957 content: "\e189";
2958 2958 }
2959 2959 .glyphicon-sound-dolby:before {
2960 2960 content: "\e190";
2961 2961 }
2962 2962 .glyphicon-sound-5-1:before {
2963 2963 content: "\e191";
2964 2964 }
2965 2965 .glyphicon-sound-6-1:before {
2966 2966 content: "\e192";
2967 2967 }
2968 2968 .glyphicon-sound-7-1:before {
2969 2969 content: "\e193";
2970 2970 }
2971 2971 .glyphicon-copyright-mark:before {
2972 2972 content: "\e194";
2973 2973 }
2974 2974 .glyphicon-registration-mark:before {
2975 2975 content: "\e195";
2976 2976 }
2977 2977 .glyphicon-cloud-download:before {
2978 2978 content: "\e197";
2979 2979 }
2980 2980 .glyphicon-cloud-upload:before {
2981 2981 content: "\e198";
2982 2982 }
2983 2983 .glyphicon-tree-conifer:before {
2984 2984 content: "\e199";
2985 2985 }
2986 2986 .glyphicon-tree-deciduous:before {
2987 2987 content: "\e200";
2988 2988 }
2989 2989 .caret {
2990 2990 display: inline-block;
2991 2991 width: 0;
2992 2992 height: 0;
2993 2993 margin-left: 2px;
2994 2994 vertical-align: middle;
2995 2995 border-top: 4px solid;
2996 2996 border-right: 4px solid transparent;
2997 2997 border-left: 4px solid transparent;
2998 2998 }
2999 2999 .dropdown {
3000 3000 position: relative;
3001 3001 }
3002 3002 .dropdown-toggle:focus {
3003 3003 outline: 0;
3004 3004 }
3005 3005 .dropdown-menu {
3006 3006 position: absolute;
3007 3007 top: 100%;
3008 3008 left: 0;
3009 3009 z-index: 1000;
3010 3010 display: none;
3011 3011 float: left;
3012 3012 min-width: 160px;
3013 3013 padding: 5px 0;
3014 3014 margin: 2px 0 0;
3015 3015 list-style: none;
3016 3016 font-size: 13px;
3017 3017 background-color: #ffffff;
3018 3018 border: 1px solid #cccccc;
3019 3019 border: 1px solid rgba(0, 0, 0, 0.15);
3020 3020 border-radius: 4px;
3021 3021 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3022 3022 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3023 3023 background-clip: padding-box;
3024 3024 }
3025 3025 .dropdown-menu.pull-right {
3026 3026 right: 0;
3027 3027 left: auto;
3028 3028 }
3029 3029 .dropdown-menu .divider {
3030 3030 height: 1px;
3031 3031 margin: 8px 0;
3032 3032 overflow: hidden;
3033 3033 background-color: #e5e5e5;
3034 3034 }
3035 3035 .dropdown-menu > li > a {
3036 3036 display: block;
3037 3037 padding: 3px 20px;
3038 3038 clear: both;
3039 3039 font-weight: normal;
3040 3040 line-height: 1.42857143;
3041 3041 color: #333333;
3042 3042 white-space: nowrap;
3043 3043 }
3044 3044 .dropdown-menu > li > a:hover,
3045 3045 .dropdown-menu > li > a:focus {
3046 3046 text-decoration: none;
3047 3047 color: #262626;
3048 3048 background-color: #f5f5f5;
3049 3049 }
3050 3050 .dropdown-menu > .active > a,
3051 3051 .dropdown-menu > .active > a:hover,
3052 3052 .dropdown-menu > .active > a:focus {
3053 3053 color: #ffffff;
3054 3054 text-decoration: none;
3055 3055 outline: 0;
3056 3056 background-color: #428bca;
3057 3057 }
3058 3058 .dropdown-menu > .disabled > a,
3059 3059 .dropdown-menu > .disabled > a:hover,
3060 3060 .dropdown-menu > .disabled > a:focus {
3061 3061 color: #999999;
3062 3062 }
3063 3063 .dropdown-menu > .disabled > a:hover,
3064 3064 .dropdown-menu > .disabled > a:focus {
3065 3065 text-decoration: none;
3066 3066 background-color: transparent;
3067 3067 background-image: none;
3068 3068 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3069 3069 cursor: not-allowed;
3070 3070 }
3071 3071 .open > .dropdown-menu {
3072 3072 display: block;
3073 3073 }
3074 3074 .open > a {
3075 3075 outline: 0;
3076 3076 }
3077 3077 .dropdown-menu-right {
3078 3078 left: auto;
3079 3079 right: 0;
3080 3080 }
3081 3081 .dropdown-menu-left {
3082 3082 left: 0;
3083 3083 right: auto;
3084 3084 }
3085 3085 .dropdown-header {
3086 3086 display: block;
3087 3087 padding: 3px 20px;
3088 3088 font-size: 12px;
3089 3089 line-height: 1.42857143;
3090 3090 color: #999999;
3091 3091 }
3092 3092 .dropdown-backdrop {
3093 3093 position: fixed;
3094 3094 left: 0;
3095 3095 right: 0;
3096 3096 bottom: 0;
3097 3097 top: 0;
3098 3098 z-index: 990;
3099 3099 }
3100 3100 .pull-right > .dropdown-menu {
3101 3101 right: 0;
3102 3102 left: auto;
3103 3103 }
3104 3104 .dropup .caret,
3105 3105 .navbar-fixed-bottom .dropdown .caret {
3106 3106 border-top: 0;
3107 3107 border-bottom: 4px solid;
3108 3108 content: "";
3109 3109 }
3110 3110 .dropup .dropdown-menu,
3111 3111 .navbar-fixed-bottom .dropdown .dropdown-menu {
3112 3112 top: auto;
3113 3113 bottom: 100%;
3114 3114 margin-bottom: 1px;
3115 3115 }
3116 3116 @media (min-width: 540px) {
3117 3117 .navbar-right .dropdown-menu {
3118 3118 left: auto;
3119 3119 right: 0;
3120 3120 }
3121 3121 .navbar-right .dropdown-menu-left {
3122 3122 left: 0;
3123 3123 right: auto;
3124 3124 }
3125 3125 }
3126 3126 .btn-group,
3127 3127 .btn-group-vertical {
3128 3128 position: relative;
3129 3129 display: inline-block;
3130 3130 vertical-align: middle;
3131 3131 }
3132 3132 .btn-group > .btn,
3133 3133 .btn-group-vertical > .btn {
3134 3134 position: relative;
3135 3135 float: left;
3136 3136 }
3137 3137 .btn-group > .btn:hover,
3138 3138 .btn-group-vertical > .btn:hover,
3139 3139 .btn-group > .btn:focus,
3140 3140 .btn-group-vertical > .btn:focus,
3141 3141 .btn-group > .btn:active,
3142 3142 .btn-group-vertical > .btn:active,
3143 3143 .btn-group > .btn.active,
3144 3144 .btn-group-vertical > .btn.active {
3145 3145 z-index: 2;
3146 3146 }
3147 3147 .btn-group > .btn:focus,
3148 3148 .btn-group-vertical > .btn:focus {
3149 3149 outline: none;
3150 3150 }
3151 3151 .btn-group .btn + .btn,
3152 3152 .btn-group .btn + .btn-group,
3153 3153 .btn-group .btn-group + .btn,
3154 3154 .btn-group .btn-group + .btn-group {
3155 3155 margin-left: -1px;
3156 3156 }
3157 3157 .btn-toolbar {
3158 3158 margin-left: -5px;
3159 3159 }
3160 3160 .btn-toolbar .btn-group,
3161 3161 .btn-toolbar .input-group {
3162 3162 float: left;
3163 3163 }
3164 3164 .btn-toolbar > .btn,
3165 3165 .btn-toolbar > .btn-group,
3166 3166 .btn-toolbar > .input-group {
3167 3167 margin-left: 5px;
3168 3168 }
3169 3169 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3170 3170 border-radius: 0;
3171 3171 }
3172 3172 .btn-group > .btn:first-child {
3173 3173 margin-left: 0;
3174 3174 }
3175 3175 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3176 3176 border-bottom-right-radius: 0;
3177 3177 border-top-right-radius: 0;
3178 3178 }
3179 3179 .btn-group > .btn:last-child:not(:first-child),
3180 3180 .btn-group > .dropdown-toggle:not(:first-child) {
3181 3181 border-bottom-left-radius: 0;
3182 3182 border-top-left-radius: 0;
3183 3183 }
3184 3184 .btn-group > .btn-group {
3185 3185 float: left;
3186 3186 }
3187 3187 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3188 3188 border-radius: 0;
3189 3189 }
3190 3190 .btn-group > .btn-group:first-child > .btn:last-child,
3191 3191 .btn-group > .btn-group:first-child > .dropdown-toggle {
3192 3192 border-bottom-right-radius: 0;
3193 3193 border-top-right-radius: 0;
3194 3194 }
3195 3195 .btn-group > .btn-group:last-child > .btn:first-child {
3196 3196 border-bottom-left-radius: 0;
3197 3197 border-top-left-radius: 0;
3198 3198 }
3199 3199 .btn-group .dropdown-toggle:active,
3200 3200 .btn-group.open .dropdown-toggle {
3201 3201 outline: 0;
3202 3202 }
3203 3203 .btn-group > .btn + .dropdown-toggle {
3204 3204 padding-left: 8px;
3205 3205 padding-right: 8px;
3206 3206 }
3207 3207 .btn-group > .btn-lg + .dropdown-toggle {
3208 3208 padding-left: 12px;
3209 3209 padding-right: 12px;
3210 3210 }
3211 3211 .btn-group.open .dropdown-toggle {
3212 3212 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3213 3213 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3214 3214 }
3215 3215 .btn-group.open .dropdown-toggle.btn-link {
3216 3216 -webkit-box-shadow: none;
3217 3217 box-shadow: none;
3218 3218 }
3219 3219 .btn .caret {
3220 3220 margin-left: 0;
3221 3221 }
3222 3222 .btn-lg .caret {
3223 3223 border-width: 5px 5px 0;
3224 3224 border-bottom-width: 0;
3225 3225 }
3226 3226 .dropup .btn-lg .caret {
3227 3227 border-width: 0 5px 5px;
3228 3228 }
3229 3229 .btn-group-vertical > .btn,
3230 3230 .btn-group-vertical > .btn-group,
3231 3231 .btn-group-vertical > .btn-group > .btn {
3232 3232 display: block;
3233 3233 float: none;
3234 3234 width: 100%;
3235 3235 max-width: 100%;
3236 3236 }
3237 3237 .btn-group-vertical > .btn-group > .btn {
3238 3238 float: none;
3239 3239 }
3240 3240 .btn-group-vertical > .btn + .btn,
3241 3241 .btn-group-vertical > .btn + .btn-group,
3242 3242 .btn-group-vertical > .btn-group + .btn,
3243 3243 .btn-group-vertical > .btn-group + .btn-group {
3244 3244 margin-top: -1px;
3245 3245 margin-left: 0;
3246 3246 }
3247 3247 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3248 3248 border-radius: 0;
3249 3249 }
3250 3250 .btn-group-vertical > .btn:first-child:not(:last-child) {
3251 3251 border-top-right-radius: 4px;
3252 3252 border-bottom-right-radius: 0;
3253 3253 border-bottom-left-radius: 0;
3254 3254 }
3255 3255 .btn-group-vertical > .btn:last-child:not(:first-child) {
3256 3256 border-bottom-left-radius: 4px;
3257 3257 border-top-right-radius: 0;
3258 3258 border-top-left-radius: 0;
3259 3259 }
3260 3260 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3261 3261 border-radius: 0;
3262 3262 }
3263 3263 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3264 3264 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3265 3265 border-bottom-right-radius: 0;
3266 3266 border-bottom-left-radius: 0;
3267 3267 }
3268 3268 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3269 3269 border-top-right-radius: 0;
3270 3270 border-top-left-radius: 0;
3271 3271 }
3272 3272 .btn-group-justified {
3273 3273 display: table;
3274 3274 width: 100%;
3275 3275 table-layout: fixed;
3276 3276 border-collapse: separate;
3277 3277 }
3278 3278 .btn-group-justified > .btn,
3279 3279 .btn-group-justified > .btn-group {
3280 3280 float: none;
3281 3281 display: table-cell;
3282 3282 width: 1%;
3283 3283 }
3284 3284 .btn-group-justified > .btn-group .btn {
3285 3285 width: 100%;
3286 3286 }
3287 3287 [data-toggle="buttons"] > .btn > input[type="radio"],
3288 3288 [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3289 3289 display: none;
3290 3290 }
3291 3291 .input-group {
3292 3292 position: relative;
3293 3293 display: table;
3294 3294 border-collapse: separate;
3295 3295 }
3296 3296 .input-group[class*="col-"] {
3297 3297 float: none;
3298 3298 padding-left: 0;
3299 3299 padding-right: 0;
3300 3300 }
3301 3301 .input-group .form-control {
3302 3302 position: relative;
3303 3303 z-index: 2;
3304 3304 float: left;
3305 3305 width: 100%;
3306 3306 margin-bottom: 0;
3307 3307 }
3308 3308 .input-group-lg > .form-control,
3309 3309 .input-group-lg > .input-group-addon,
3310 3310 .input-group-lg > .input-group-btn > .btn {
3311 3311 height: 45px;
3312 3312 padding: 10px 16px;
3313 3313 font-size: 17px;
3314 3314 line-height: 1.33;
3315 3315 border-radius: 6px;
3316 3316 }
3317 3317 select.input-group-lg > .form-control,
3318 3318 select.input-group-lg > .input-group-addon,
3319 3319 select.input-group-lg > .input-group-btn > .btn {
3320 3320 height: 45px;
3321 3321 line-height: 45px;
3322 3322 }
3323 3323 textarea.input-group-lg > .form-control,
3324 3324 textarea.input-group-lg > .input-group-addon,
3325 3325 textarea.input-group-lg > .input-group-btn > .btn,
3326 3326 select[multiple].input-group-lg > .form-control,
3327 3327 select[multiple].input-group-lg > .input-group-addon,
3328 3328 select[multiple].input-group-lg > .input-group-btn > .btn {
3329 3329 height: auto;
3330 3330 }
3331 3331 .input-group-sm > .form-control,
3332 3332 .input-group-sm > .input-group-addon,
3333 3333 .input-group-sm > .input-group-btn > .btn {
3334 3334 height: 30px;
3335 3335 padding: 5px 10px;
3336 3336 font-size: 12px;
3337 3337 line-height: 1.5;
3338 3338 border-radius: 3px;
3339 3339 }
3340 3340 select.input-group-sm > .form-control,
3341 3341 select.input-group-sm > .input-group-addon,
3342 3342 select.input-group-sm > .input-group-btn > .btn {
3343 3343 height: 30px;
3344 3344 line-height: 30px;
3345 3345 }
3346 3346 textarea.input-group-sm > .form-control,
3347 3347 textarea.input-group-sm > .input-group-addon,
3348 3348 textarea.input-group-sm > .input-group-btn > .btn,
3349 3349 select[multiple].input-group-sm > .form-control,
3350 3350 select[multiple].input-group-sm > .input-group-addon,
3351 3351 select[multiple].input-group-sm > .input-group-btn > .btn {
3352 3352 height: auto;
3353 3353 }
3354 3354 .input-group-addon,
3355 3355 .input-group-btn,
3356 3356 .input-group .form-control {
3357 3357 display: table-cell;
3358 3358 }
3359 3359 .input-group-addon:not(:first-child):not(:last-child),
3360 3360 .input-group-btn:not(:first-child):not(:last-child),
3361 3361 .input-group .form-control:not(:first-child):not(:last-child) {
3362 3362 border-radius: 0;
3363 3363 }
3364 3364 .input-group-addon,
3365 3365 .input-group-btn {
3366 3366 width: 1%;
3367 3367 white-space: nowrap;
3368 3368 vertical-align: middle;
3369 3369 }
3370 3370 .input-group-addon {
3371 3371 padding: 6px 12px;
3372 3372 font-size: 13px;
3373 3373 font-weight: normal;
3374 3374 line-height: 1;
3375 3375 color: #555555;
3376 3376 text-align: center;
3377 3377 background-color: #eeeeee;
3378 3378 border: 1px solid #cccccc;
3379 3379 border-radius: 4px;
3380 3380 }
3381 3381 .input-group-addon.input-sm {
3382 3382 padding: 5px 10px;
3383 3383 font-size: 12px;
3384 3384 border-radius: 3px;
3385 3385 }
3386 3386 .input-group-addon.input-lg {
3387 3387 padding: 10px 16px;
3388 3388 font-size: 17px;
3389 3389 border-radius: 6px;
3390 3390 }
3391 3391 .input-group-addon input[type="radio"],
3392 3392 .input-group-addon input[type="checkbox"] {
3393 3393 margin-top: 0;
3394 3394 }
3395 3395 .input-group .form-control:first-child,
3396 3396 .input-group-addon:first-child,
3397 3397 .input-group-btn:first-child > .btn,
3398 3398 .input-group-btn:first-child > .btn-group > .btn,
3399 3399 .input-group-btn:first-child > .dropdown-toggle,
3400 3400 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3401 3401 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3402 3402 border-bottom-right-radius: 0;
3403 3403 border-top-right-radius: 0;
3404 3404 }
3405 3405 .input-group-addon:first-child {
3406 3406 border-right: 0;
3407 3407 }
3408 3408 .input-group .form-control:last-child,
3409 3409 .input-group-addon:last-child,
3410 3410 .input-group-btn:last-child > .btn,
3411 3411 .input-group-btn:last-child > .btn-group > .btn,
3412 3412 .input-group-btn:last-child > .dropdown-toggle,
3413 3413 .input-group-btn:first-child > .btn:not(:first-child),
3414 3414 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3415 3415 border-bottom-left-radius: 0;
3416 3416 border-top-left-radius: 0;
3417 3417 }
3418 3418 .input-group-addon:last-child {
3419 3419 border-left: 0;
3420 3420 }
3421 3421 .input-group-btn {
3422 3422 position: relative;
3423 3423 font-size: 0;
3424 3424 white-space: nowrap;
3425 3425 }
3426 3426 .input-group-btn > .btn {
3427 3427 position: relative;
3428 3428 }
3429 3429 .input-group-btn > .btn + .btn {
3430 3430 margin-left: -1px;
3431 3431 }
3432 3432 .input-group-btn > .btn:hover,
3433 3433 .input-group-btn > .btn:focus,
3434 3434 .input-group-btn > .btn:active {
3435 3435 z-index: 2;
3436 3436 }
3437 3437 .input-group-btn:first-child > .btn,
3438 3438 .input-group-btn:first-child > .btn-group {
3439 3439 margin-right: -1px;
3440 3440 }
3441 3441 .input-group-btn:last-child > .btn,
3442 3442 .input-group-btn:last-child > .btn-group {
3443 3443 margin-left: -1px;
3444 3444 }
3445 3445 .nav {
3446 3446 margin-bottom: 0;
3447 3447 padding-left: 0;
3448 3448 list-style: none;
3449 3449 }
3450 3450 .nav > li {
3451 3451 position: relative;
3452 3452 display: block;
3453 3453 }
3454 3454 .nav > li > a {
3455 3455 position: relative;
3456 3456 display: block;
3457 3457 padding: 10px 15px;
3458 3458 }
3459 3459 .nav > li > a:hover,
3460 3460 .nav > li > a:focus {
3461 3461 text-decoration: none;
3462 3462 background-color: #eeeeee;
3463 3463 }
3464 3464 .nav > li.disabled > a {
3465 3465 color: #999999;
3466 3466 }
3467 3467 .nav > li.disabled > a:hover,
3468 3468 .nav > li.disabled > a:focus {
3469 3469 color: #999999;
3470 3470 text-decoration: none;
3471 3471 background-color: transparent;
3472 3472 cursor: not-allowed;
3473 3473 }
3474 3474 .nav .open > a,
3475 3475 .nav .open > a:hover,
3476 3476 .nav .open > a:focus {
3477 3477 background-color: #eeeeee;
3478 3478 border-color: #428bca;
3479 3479 }
3480 3480 .nav .nav-divider {
3481 3481 height: 1px;
3482 3482 margin: 8px 0;
3483 3483 overflow: hidden;
3484 3484 background-color: #e5e5e5;
3485 3485 }
3486 3486 .nav > li > a > img {
3487 3487 max-width: none;
3488 3488 }
3489 3489 .nav-tabs {
3490 3490 border-bottom: 1px solid #dddddd;
3491 3491 }
3492 3492 .nav-tabs > li {
3493 3493 float: left;
3494 3494 margin-bottom: -1px;
3495 3495 }
3496 3496 .nav-tabs > li > a {
3497 3497 margin-right: 2px;
3498 3498 line-height: 1.42857143;
3499 3499 border: 1px solid transparent;
3500 3500 border-radius: 4px 4px 0 0;
3501 3501 }
3502 3502 .nav-tabs > li > a:hover {
3503 3503 border-color: #eeeeee #eeeeee #dddddd;
3504 3504 }
3505 3505 .nav-tabs > li.active > a,
3506 3506 .nav-tabs > li.active > a:hover,
3507 3507 .nav-tabs > li.active > a:focus {
3508 3508 color: #555555;
3509 3509 background-color: #ffffff;
3510 3510 border: 1px solid #dddddd;
3511 3511 border-bottom-color: transparent;
3512 3512 cursor: default;
3513 3513 }
3514 3514 .nav-tabs.nav-justified {
3515 3515 width: 100%;
3516 3516 border-bottom: 0;
3517 3517 }
3518 3518 .nav-tabs.nav-justified > li {
3519 3519 float: none;
3520 3520 }
3521 3521 .nav-tabs.nav-justified > li > a {
3522 3522 text-align: center;
3523 3523 margin-bottom: 5px;
3524 3524 }
3525 3525 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3526 3526 top: auto;
3527 3527 left: auto;
3528 3528 }
3529 3529 @media (min-width: 768px) {
3530 3530 .nav-tabs.nav-justified > li {
3531 3531 display: table-cell;
3532 3532 width: 1%;
3533 3533 }
3534 3534 .nav-tabs.nav-justified > li > a {
3535 3535 margin-bottom: 0;
3536 3536 }
3537 3537 }
3538 3538 .nav-tabs.nav-justified > li > a {
3539 3539 margin-right: 0;
3540 3540 border-radius: 4px;
3541 3541 }
3542 3542 .nav-tabs.nav-justified > .active > a,
3543 3543 .nav-tabs.nav-justified > .active > a:hover,
3544 3544 .nav-tabs.nav-justified > .active > a:focus {
3545 3545 border: 1px solid #dddddd;
3546 3546 }
3547 3547 @media (min-width: 768px) {
3548 3548 .nav-tabs.nav-justified > li > a {
3549 3549 border-bottom: 1px solid #dddddd;
3550 3550 border-radius: 4px 4px 0 0;
3551 3551 }
3552 3552 .nav-tabs.nav-justified > .active > a,
3553 3553 .nav-tabs.nav-justified > .active > a:hover,
3554 3554 .nav-tabs.nav-justified > .active > a:focus {
3555 3555 border-bottom-color: #ffffff;
3556 3556 }
3557 3557 }
3558 3558 .nav-pills > li {
3559 3559 float: left;
3560 3560 }
3561 3561 .nav-pills > li > a {
3562 3562 border-radius: 4px;
3563 3563 }
3564 3564 .nav-pills > li + li {
3565 3565 margin-left: 2px;
3566 3566 }
3567 3567 .nav-pills > li.active > a,
3568 3568 .nav-pills > li.active > a:hover,
3569 3569 .nav-pills > li.active > a:focus {
3570 3570 color: #ffffff;
3571 3571 background-color: #428bca;
3572 3572 }
3573 3573 .nav-stacked > li {
3574 3574 float: none;
3575 3575 }
3576 3576 .nav-stacked > li + li {
3577 3577 margin-top: 2px;
3578 3578 margin-left: 0;
3579 3579 }
3580 3580 .nav-justified {
3581 3581 width: 100%;
3582 3582 }
3583 3583 .nav-justified > li {
3584 3584 float: none;
3585 3585 }
3586 3586 .nav-justified > li > a {
3587 3587 text-align: center;
3588 3588 margin-bottom: 5px;
3589 3589 }
3590 3590 .nav-justified > .dropdown .dropdown-menu {
3591 3591 top: auto;
3592 3592 left: auto;
3593 3593 }
3594 3594 @media (min-width: 768px) {
3595 3595 .nav-justified > li {
3596 3596 display: table-cell;
3597 3597 width: 1%;
3598 3598 }
3599 3599 .nav-justified > li > a {
3600 3600 margin-bottom: 0;
3601 3601 }
3602 3602 }
3603 3603 .nav-tabs-justified {
3604 3604 border-bottom: 0;
3605 3605 }
3606 3606 .nav-tabs-justified > li > a {
3607 3607 margin-right: 0;
3608 3608 border-radius: 4px;
3609 3609 }
3610 3610 .nav-tabs-justified > .active > a,
3611 3611 .nav-tabs-justified > .active > a:hover,
3612 3612 .nav-tabs-justified > .active > a:focus {
3613 3613 border: 1px solid #dddddd;
3614 3614 }
3615 3615 @media (min-width: 768px) {
3616 3616 .nav-tabs-justified > li > a {
3617 3617 border-bottom: 1px solid #dddddd;
3618 3618 border-radius: 4px 4px 0 0;
3619 3619 }
3620 3620 .nav-tabs-justified > .active > a,
3621 3621 .nav-tabs-justified > .active > a:hover,
3622 3622 .nav-tabs-justified > .active > a:focus {
3623 3623 border-bottom-color: #ffffff;
3624 3624 }
3625 3625 }
3626 3626 .tab-content > .tab-pane {
3627 3627 display: none;
3628 3628 }
3629 3629 .tab-content > .active {
3630 3630 display: block;
3631 3631 }
3632 3632 .nav-tabs .dropdown-menu {
3633 3633 margin-top: -1px;
3634 3634 border-top-right-radius: 0;
3635 3635 border-top-left-radius: 0;
3636 3636 }
3637 3637 .navbar {
3638 3638 position: relative;
3639 3639 min-height: 36px;
3640 3640 margin-bottom: 18px;
3641 3641 border: 1px solid transparent;
3642 3642 }
3643 3643 @media (min-width: 540px) {
3644 3644 .navbar {
3645 3645 border-radius: 4px;
3646 3646 }
3647 3647 }
3648 3648 @media (min-width: 540px) {
3649 3649 .navbar-header {
3650 3650 float: left;
3651 3651 }
3652 3652 }
3653 3653 .navbar-collapse {
3654 3654 max-height: 340px;
3655 3655 overflow-x: visible;
3656 3656 padding-right: 15px;
3657 3657 padding-left: 15px;
3658 3658 border-top: 1px solid transparent;
3659 3659 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3660 3660 -webkit-overflow-scrolling: touch;
3661 3661 }
3662 3662 .navbar-collapse.in {
3663 3663 overflow-y: auto;
3664 3664 }
3665 3665 @media (min-width: 540px) {
3666 3666 .navbar-collapse {
3667 3667 width: auto;
3668 3668 border-top: 0;
3669 3669 box-shadow: none;
3670 3670 }
3671 3671 .navbar-collapse.collapse {
3672 3672 display: block !important;
3673 3673 height: auto !important;
3674 3674 padding-bottom: 0;
3675 3675 overflow: visible !important;
3676 3676 }
3677 3677 .navbar-collapse.in {
3678 3678 overflow-y: visible;
3679 3679 }
3680 3680 .navbar-fixed-top .navbar-collapse,
3681 3681 .navbar-static-top .navbar-collapse,
3682 3682 .navbar-fixed-bottom .navbar-collapse {
3683 3683 padding-left: 0;
3684 3684 padding-right: 0;
3685 3685 }
3686 3686 }
3687 3687 .container > .navbar-header,
3688 3688 .container-fluid > .navbar-header,
3689 3689 .container > .navbar-collapse,
3690 3690 .container-fluid > .navbar-collapse {
3691 3691 margin-right: -15px;
3692 3692 margin-left: -15px;
3693 3693 }
3694 3694 @media (min-width: 540px) {
3695 3695 .container > .navbar-header,
3696 3696 .container-fluid > .navbar-header,
3697 3697 .container > .navbar-collapse,
3698 3698 .container-fluid > .navbar-collapse {
3699 3699 margin-right: 0;
3700 3700 margin-left: 0;
3701 3701 }
3702 3702 }
3703 3703 .navbar-static-top {
3704 3704 z-index: 1000;
3705 3705 border-width: 0 0 1px;
3706 3706 }
3707 3707 @media (min-width: 540px) {
3708 3708 .navbar-static-top {
3709 3709 border-radius: 0;
3710 3710 }
3711 3711 }
3712 3712 .navbar-fixed-top,
3713 3713 .navbar-fixed-bottom {
3714 3714 position: fixed;
3715 3715 right: 0;
3716 3716 left: 0;
3717 3717 z-index: 1030;
3718 3718 }
3719 3719 @media (min-width: 540px) {
3720 3720 .navbar-fixed-top,
3721 3721 .navbar-fixed-bottom {
3722 3722 border-radius: 0;
3723 3723 }
3724 3724 }
3725 3725 .navbar-fixed-top {
3726 3726 top: 0;
3727 3727 border-width: 0 0 1px;
3728 3728 }
3729 3729 .navbar-fixed-bottom {
3730 3730 bottom: 0;
3731 3731 margin-bottom: 0;
3732 3732 border-width: 1px 0 0;
3733 3733 }
3734 3734 .navbar-brand {
3735 3735 float: left;
3736 3736 padding: 9px 15px;
3737 3737 font-size: 17px;
3738 3738 line-height: 18px;
3739 3739 height: 36px;
3740 3740 }
3741 3741 .navbar-brand:hover,
3742 3742 .navbar-brand:focus {
3743 3743 text-decoration: none;
3744 3744 }
3745 3745 @media (min-width: 540px) {
3746 3746 .navbar > .container .navbar-brand,
3747 3747 .navbar > .container-fluid .navbar-brand {
3748 3748 margin-left: -15px;
3749 3749 }
3750 3750 }
3751 3751 .navbar-toggle {
3752 3752 position: relative;
3753 3753 float: right;
3754 3754 margin-right: 15px;
3755 3755 padding: 9px 10px;
3756 3756 margin-top: 1px;
3757 3757 margin-bottom: 1px;
3758 3758 background-color: transparent;
3759 3759 background-image: none;
3760 3760 border: 1px solid transparent;
3761 3761 border-radius: 4px;
3762 3762 }
3763 3763 .navbar-toggle:focus {
3764 3764 outline: none;
3765 3765 }
3766 3766 .navbar-toggle .icon-bar {
3767 3767 display: block;
3768 3768 width: 22px;
3769 3769 height: 2px;
3770 3770 border-radius: 1px;
3771 3771 }
3772 3772 .navbar-toggle .icon-bar + .icon-bar {
3773 3773 margin-top: 4px;
3774 3774 }
3775 3775 @media (min-width: 540px) {
3776 3776 .navbar-toggle {
3777 3777 display: none;
3778 3778 }
3779 3779 }
3780 3780 .navbar-nav {
3781 3781 margin: 4.5px -15px;
3782 3782 }
3783 3783 .navbar-nav > li > a {
3784 3784 padding-top: 10px;
3785 3785 padding-bottom: 10px;
3786 3786 line-height: 18px;
3787 3787 }
3788 3788 @media (max-width: 539px) {
3789 3789 .navbar-nav .open .dropdown-menu {
3790 3790 position: static;
3791 3791 float: none;
3792 3792 width: auto;
3793 3793 margin-top: 0;
3794 3794 background-color: transparent;
3795 3795 border: 0;
3796 3796 box-shadow: none;
3797 3797 }
3798 3798 .navbar-nav .open .dropdown-menu > li > a,
3799 3799 .navbar-nav .open .dropdown-menu .dropdown-header {
3800 3800 padding: 5px 15px 5px 25px;
3801 3801 }
3802 3802 .navbar-nav .open .dropdown-menu > li > a {
3803 3803 line-height: 18px;
3804 3804 }
3805 3805 .navbar-nav .open .dropdown-menu > li > a:hover,
3806 3806 .navbar-nav .open .dropdown-menu > li > a:focus {
3807 3807 background-image: none;
3808 3808 }
3809 3809 }
3810 3810 @media (min-width: 540px) {
3811 3811 .navbar-nav {
3812 3812 float: left;
3813 3813 margin: 0;
3814 3814 }
3815 3815 .navbar-nav > li {
3816 3816 float: left;
3817 3817 }
3818 3818 .navbar-nav > li > a {
3819 3819 padding-top: 9px;
3820 3820 padding-bottom: 9px;
3821 3821 }
3822 3822 .navbar-nav.navbar-right:last-child {
3823 3823 margin-right: -15px;
3824 3824 }
3825 3825 }
3826 3826 @media (min-width: 540px) {
3827 3827 .navbar-left {
3828 3828 float: left !important;
3829 3829 float: left;
3830 3830 }
3831 3831 .navbar-right {
3832 3832 float: right !important;
3833 3833 float: right;
3834 3834 }
3835 3835 }
3836 3836 .navbar-form {
3837 3837 margin-left: -15px;
3838 3838 margin-right: -15px;
3839 3839 padding: 10px 15px;
3840 3840 border-top: 1px solid transparent;
3841 3841 border-bottom: 1px solid transparent;
3842 3842 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3843 3843 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3844 3844 margin-top: 2px;
3845 3845 margin-bottom: 2px;
3846 3846 }
3847 3847 @media (min-width: 768px) {
3848 3848 .navbar-form .form-group {
3849 3849 display: inline-block;
3850 3850 margin-bottom: 0;
3851 3851 vertical-align: middle;
3852 3852 }
3853 3853 .navbar-form .form-control {
3854 3854 display: inline-block;
3855 3855 width: auto;
3856 3856 vertical-align: middle;
3857 3857 }
3858 3858 .navbar-form .input-group > .form-control {
3859 3859 width: 100%;
3860 3860 }
3861 3861 .navbar-form .control-label {
3862 3862 margin-bottom: 0;
3863 3863 vertical-align: middle;
3864 3864 }
3865 3865 .navbar-form .radio,
3866 3866 .navbar-form .checkbox {
3867 3867 display: inline-block;
3868 3868 margin-top: 0;
3869 3869 margin-bottom: 0;
3870 3870 padding-left: 0;
3871 3871 vertical-align: middle;
3872 3872 }
3873 3873 .navbar-form .radio input[type="radio"],
3874 3874 .navbar-form .checkbox input[type="checkbox"] {
3875 3875 float: none;
3876 3876 margin-left: 0;
3877 3877 }
3878 3878 .navbar-form .has-feedback .form-control-feedback {
3879 3879 top: 0;
3880 3880 }
3881 3881 }
3882 3882 @media (max-width: 539px) {
3883 3883 .navbar-form .form-group {
3884 3884 margin-bottom: 5px;
3885 3885 }
3886 3886 }
3887 3887 @media (min-width: 540px) {
3888 3888 .navbar-form {
3889 3889 width: auto;
3890 3890 border: 0;
3891 3891 margin-left: 0;
3892 3892 margin-right: 0;
3893 3893 padding-top: 0;
3894 3894 padding-bottom: 0;
3895 3895 -webkit-box-shadow: none;
3896 3896 box-shadow: none;
3897 3897 }
3898 3898 .navbar-form.navbar-right:last-child {
3899 3899 margin-right: -15px;
3900 3900 }
3901 3901 }
3902 3902 .navbar-nav > li > .dropdown-menu {
3903 3903 margin-top: 0;
3904 3904 border-top-right-radius: 0;
3905 3905 border-top-left-radius: 0;
3906 3906 }
3907 3907 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3908 3908 border-bottom-right-radius: 0;
3909 3909 border-bottom-left-radius: 0;
3910 3910 }
3911 3911 .navbar-btn {
3912 3912 margin-top: 2px;
3913 3913 margin-bottom: 2px;
3914 3914 }
3915 3915 .navbar-btn.btn-sm {
3916 3916 margin-top: 3px;
3917 3917 margin-bottom: 3px;
3918 3918 }
3919 3919 .navbar-btn.btn-xs {
3920 3920 margin-top: 7px;
3921 3921 margin-bottom: 7px;
3922 3922 }
3923 3923 .navbar-text {
3924 3924 margin-top: 9px;
3925 3925 margin-bottom: 9px;
3926 3926 }
3927 3927 @media (min-width: 540px) {
3928 3928 .navbar-text {
3929 3929 float: left;
3930 3930 margin-left: 15px;
3931 3931 margin-right: 15px;
3932 3932 }
3933 3933 .navbar-text.navbar-right:last-child {
3934 3934 margin-right: 0;
3935 3935 }
3936 3936 }
3937 3937 .navbar-default {
3938 3938 background-color: #f8f8f8;
3939 3939 border-color: #e7e7e7;
3940 3940 }
3941 3941 .navbar-default .navbar-brand {
3942 3942 color: #777777;
3943 3943 }
3944 3944 .navbar-default .navbar-brand:hover,
3945 3945 .navbar-default .navbar-brand:focus {
3946 3946 color: #5e5e5e;
3947 3947 background-color: transparent;
3948 3948 }
3949 3949 .navbar-default .navbar-text {
3950 3950 color: #777777;
3951 3951 }
3952 3952 .navbar-default .navbar-nav > li > a {
3953 3953 color: #777777;
3954 3954 }
3955 3955 .navbar-default .navbar-nav > li > a:hover,
3956 3956 .navbar-default .navbar-nav > li > a:focus {
3957 3957 color: #333333;
3958 3958 background-color: transparent;
3959 3959 }
3960 3960 .navbar-default .navbar-nav > .active > a,
3961 3961 .navbar-default .navbar-nav > .active > a:hover,
3962 3962 .navbar-default .navbar-nav > .active > a:focus {
3963 3963 color: #555555;
3964 3964 background-color: #e7e7e7;
3965 3965 }
3966 3966 .navbar-default .navbar-nav > .disabled > a,
3967 3967 .navbar-default .navbar-nav > .disabled > a:hover,
3968 3968 .navbar-default .navbar-nav > .disabled > a:focus {
3969 3969 color: #cccccc;
3970 3970 background-color: transparent;
3971 3971 }
3972 3972 .navbar-default .navbar-toggle {
3973 3973 border-color: #dddddd;
3974 3974 }
3975 3975 .navbar-default .navbar-toggle:hover,
3976 3976 .navbar-default .navbar-toggle:focus {
3977 3977 background-color: #dddddd;
3978 3978 }
3979 3979 .navbar-default .navbar-toggle .icon-bar {
3980 3980 background-color: #888888;
3981 3981 }
3982 3982 .navbar-default .navbar-collapse,
3983 3983 .navbar-default .navbar-form {
3984 3984 border-color: #e7e7e7;
3985 3985 }
3986 3986 .navbar-default .navbar-nav > .open > a,
3987 3987 .navbar-default .navbar-nav > .open > a:hover,
3988 3988 .navbar-default .navbar-nav > .open > a:focus {
3989 3989 background-color: #e7e7e7;
3990 3990 color: #555555;
3991 3991 }
3992 3992 @media (max-width: 539px) {
3993 3993 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
3994 3994 color: #777777;
3995 3995 }
3996 3996 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
3997 3997 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
3998 3998 color: #333333;
3999 3999 background-color: transparent;
4000 4000 }
4001 4001 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4002 4002 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4003 4003 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4004 4004 color: #555555;
4005 4005 background-color: #e7e7e7;
4006 4006 }
4007 4007 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4008 4008 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4009 4009 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4010 4010 color: #cccccc;
4011 4011 background-color: transparent;
4012 4012 }
4013 4013 }
4014 4014 .navbar-default .navbar-link {
4015 4015 color: #777777;
4016 4016 }
4017 4017 .navbar-default .navbar-link:hover {
4018 4018 color: #333333;
4019 4019 }
4020 4020 .navbar-inverse {
4021 4021 background-color: #222222;
4022 4022 border-color: #080808;
4023 4023 }
4024 4024 .navbar-inverse .navbar-brand {
4025 4025 color: #999999;
4026 4026 }
4027 4027 .navbar-inverse .navbar-brand:hover,
4028 4028 .navbar-inverse .navbar-brand:focus {
4029 4029 color: #ffffff;
4030 4030 background-color: transparent;
4031 4031 }
4032 4032 .navbar-inverse .navbar-text {
4033 4033 color: #999999;
4034 4034 }
4035 4035 .navbar-inverse .navbar-nav > li > a {
4036 4036 color: #999999;
4037 4037 }
4038 4038 .navbar-inverse .navbar-nav > li > a:hover,
4039 4039 .navbar-inverse .navbar-nav > li > a:focus {
4040 4040 color: #ffffff;
4041 4041 background-color: transparent;
4042 4042 }
4043 4043 .navbar-inverse .navbar-nav > .active > a,
4044 4044 .navbar-inverse .navbar-nav > .active > a:hover,
4045 4045 .navbar-inverse .navbar-nav > .active > a:focus {
4046 4046 color: #ffffff;
4047 4047 background-color: #080808;
4048 4048 }
4049 4049 .navbar-inverse .navbar-nav > .disabled > a,
4050 4050 .navbar-inverse .navbar-nav > .disabled > a:hover,
4051 4051 .navbar-inverse .navbar-nav > .disabled > a:focus {
4052 4052 color: #444444;
4053 4053 background-color: transparent;
4054 4054 }
4055 4055 .navbar-inverse .navbar-toggle {
4056 4056 border-color: #333333;
4057 4057 }
4058 4058 .navbar-inverse .navbar-toggle:hover,
4059 4059 .navbar-inverse .navbar-toggle:focus {
4060 4060 background-color: #333333;
4061 4061 }
4062 4062 .navbar-inverse .navbar-toggle .icon-bar {
4063 4063 background-color: #ffffff;
4064 4064 }
4065 4065 .navbar-inverse .navbar-collapse,
4066 4066 .navbar-inverse .navbar-form {
4067 4067 border-color: #101010;
4068 4068 }
4069 4069 .navbar-inverse .navbar-nav > .open > a,
4070 4070 .navbar-inverse .navbar-nav > .open > a:hover,
4071 4071 .navbar-inverse .navbar-nav > .open > a:focus {
4072 4072 background-color: #080808;
4073 4073 color: #ffffff;
4074 4074 }
4075 4075 @media (max-width: 539px) {
4076 4076 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4077 4077 border-color: #080808;
4078 4078 }
4079 4079 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4080 4080 background-color: #080808;
4081 4081 }
4082 4082 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4083 4083 color: #999999;
4084 4084 }
4085 4085 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4086 4086 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4087 4087 color: #ffffff;
4088 4088 background-color: transparent;
4089 4089 }
4090 4090 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4091 4091 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4092 4092 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4093 4093 color: #ffffff;
4094 4094 background-color: #080808;
4095 4095 }
4096 4096 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4097 4097 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4098 4098 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4099 4099 color: #444444;
4100 4100 background-color: transparent;
4101 4101 }
4102 4102 }
4103 4103 .navbar-inverse .navbar-link {
4104 4104 color: #999999;
4105 4105 }
4106 4106 .navbar-inverse .navbar-link:hover {
4107 4107 color: #ffffff;
4108 4108 }
4109 4109 .breadcrumb {
4110 4110 padding: 8px 15px;
4111 4111 margin-bottom: 18px;
4112 4112 list-style: none;
4113 4113 background-color: #f5f5f5;
4114 4114 border-radius: 4px;
4115 4115 }
4116 4116 .breadcrumb > li {
4117 4117 display: inline-block;
4118 4118 }
4119 4119 .breadcrumb > li + li:before {
4120 4120 content: "/\00a0";
4121 4121 padding: 0 5px;
4122 4122 color: #5e5e5e;
4123 4123 }
4124 4124 .breadcrumb > .active {
4125 4125 color: #999999;
4126 4126 }
4127 4127 .pagination {
4128 4128 display: inline-block;
4129 4129 padding-left: 0;
4130 4130 margin: 18px 0;
4131 4131 border-radius: 4px;
4132 4132 }
4133 4133 .pagination > li {
4134 4134 display: inline;
4135 4135 }
4136 4136 .pagination > li > a,
4137 4137 .pagination > li > span {
4138 4138 position: relative;
4139 4139 float: left;
4140 4140 padding: 6px 12px;
4141 4141 line-height: 1.42857143;
4142 4142 text-decoration: none;
4143 4143 color: #428bca;
4144 4144 background-color: #ffffff;
4145 4145 border: 1px solid #dddddd;
4146 4146 margin-left: -1px;
4147 4147 }
4148 4148 .pagination > li:first-child > a,
4149 4149 .pagination > li:first-child > span {
4150 4150 margin-left: 0;
4151 4151 border-bottom-left-radius: 4px;
4152 4152 border-top-left-radius: 4px;
4153 4153 }
4154 4154 .pagination > li:last-child > a,
4155 4155 .pagination > li:last-child > span {
4156 4156 border-bottom-right-radius: 4px;
4157 4157 border-top-right-radius: 4px;
4158 4158 }
4159 4159 .pagination > li > a:hover,
4160 4160 .pagination > li > span:hover,
4161 4161 .pagination > li > a:focus,
4162 4162 .pagination > li > span:focus {
4163 4163 color: #2a6496;
4164 4164 background-color: #eeeeee;
4165 4165 border-color: #dddddd;
4166 4166 }
4167 4167 .pagination > .active > a,
4168 4168 .pagination > .active > span,
4169 4169 .pagination > .active > a:hover,
4170 4170 .pagination > .active > span:hover,
4171 4171 .pagination > .active > a:focus,
4172 4172 .pagination > .active > span:focus {
4173 4173 z-index: 2;
4174 4174 color: #ffffff;
4175 4175 background-color: #428bca;
4176 4176 border-color: #428bca;
4177 4177 cursor: default;
4178 4178 }
4179 4179 .pagination > .disabled > span,
4180 4180 .pagination > .disabled > span:hover,
4181 4181 .pagination > .disabled > span:focus,
4182 4182 .pagination > .disabled > a,
4183 4183 .pagination > .disabled > a:hover,
4184 4184 .pagination > .disabled > a:focus {
4185 4185 color: #999999;
4186 4186 background-color: #ffffff;
4187 4187 border-color: #dddddd;
4188 4188 cursor: not-allowed;
4189 4189 }
4190 4190 .pagination-lg > li > a,
4191 4191 .pagination-lg > li > span {
4192 4192 padding: 10px 16px;
4193 4193 font-size: 17px;
4194 4194 }
4195 4195 .pagination-lg > li:first-child > a,
4196 4196 .pagination-lg > li:first-child > span {
4197 4197 border-bottom-left-radius: 6px;
4198 4198 border-top-left-radius: 6px;
4199 4199 }
4200 4200 .pagination-lg > li:last-child > a,
4201 4201 .pagination-lg > li:last-child > span {
4202 4202 border-bottom-right-radius: 6px;
4203 4203 border-top-right-radius: 6px;
4204 4204 }
4205 4205 .pagination-sm > li > a,
4206 4206 .pagination-sm > li > span {
4207 4207 padding: 5px 10px;
4208 4208 font-size: 12px;
4209 4209 }
4210 4210 .pagination-sm > li:first-child > a,
4211 4211 .pagination-sm > li:first-child > span {
4212 4212 border-bottom-left-radius: 3px;
4213 4213 border-top-left-radius: 3px;
4214 4214 }
4215 4215 .pagination-sm > li:last-child > a,
4216 4216 .pagination-sm > li:last-child > span {
4217 4217 border-bottom-right-radius: 3px;
4218 4218 border-top-right-radius: 3px;
4219 4219 }
4220 4220 .pager {
4221 4221 padding-left: 0;
4222 4222 margin: 18px 0;
4223 4223 list-style: none;
4224 4224 text-align: center;
4225 4225 }
4226 4226 .pager li {
4227 4227 display: inline;
4228 4228 }
4229 4229 .pager li > a,
4230 4230 .pager li > span {
4231 4231 display: inline-block;
4232 4232 padding: 5px 14px;
4233 4233 background-color: #ffffff;
4234 4234 border: 1px solid #dddddd;
4235 4235 border-radius: 15px;
4236 4236 }
4237 4237 .pager li > a:hover,
4238 4238 .pager li > a:focus {
4239 4239 text-decoration: none;
4240 4240 background-color: #eeeeee;
4241 4241 }
4242 4242 .pager .next > a,
4243 4243 .pager .next > span {
4244 4244 float: right;
4245 4245 }
4246 4246 .pager .previous > a,
4247 4247 .pager .previous > span {
4248 4248 float: left;
4249 4249 }
4250 4250 .pager .disabled > a,
4251 4251 .pager .disabled > a:hover,
4252 4252 .pager .disabled > a:focus,
4253 4253 .pager .disabled > span {
4254 4254 color: #999999;
4255 4255 background-color: #ffffff;
4256 4256 cursor: not-allowed;
4257 4257 }
4258 4258 .label {
4259 4259 display: inline;
4260 4260 padding: .2em .6em .3em;
4261 4261 font-size: 75%;
4262 4262 font-weight: bold;
4263 4263 line-height: 1;
4264 4264 color: #ffffff;
4265 4265 text-align: center;
4266 4266 white-space: nowrap;
4267 4267 vertical-align: baseline;
4268 4268 border-radius: .25em;
4269 4269 }
4270 4270 .label[href]:hover,
4271 4271 .label[href]:focus {
4272 4272 color: #ffffff;
4273 4273 text-decoration: none;
4274 4274 cursor: pointer;
4275 4275 }
4276 4276 .label:empty {
4277 4277 display: none;
4278 4278 }
4279 4279 .btn .label {
4280 4280 position: relative;
4281 4281 top: -1px;
4282 4282 }
4283 4283 .label-default {
4284 4284 background-color: #999999;
4285 4285 }
4286 4286 .label-default[href]:hover,
4287 4287 .label-default[href]:focus {
4288 4288 background-color: #808080;
4289 4289 }
4290 4290 .label-primary {
4291 4291 background-color: #428bca;
4292 4292 }
4293 4293 .label-primary[href]:hover,
4294 4294 .label-primary[href]:focus {
4295 4295 background-color: #3071a9;
4296 4296 }
4297 4297 .label-success {
4298 4298 background-color: #5cb85c;
4299 4299 }
4300 4300 .label-success[href]:hover,
4301 4301 .label-success[href]:focus {
4302 4302 background-color: #449d44;
4303 4303 }
4304 4304 .label-info {
4305 4305 background-color: #5bc0de;
4306 4306 }
4307 4307 .label-info[href]:hover,
4308 4308 .label-info[href]:focus {
4309 4309 background-color: #31b0d5;
4310 4310 }
4311 4311 .label-warning {
4312 4312 background-color: #f0ad4e;
4313 4313 }
4314 4314 .label-warning[href]:hover,
4315 4315 .label-warning[href]:focus {
4316 4316 background-color: #ec971f;
4317 4317 }
4318 4318 .label-danger {
4319 4319 background-color: #d9534f;
4320 4320 }
4321 4321 .label-danger[href]:hover,
4322 4322 .label-danger[href]:focus {
4323 4323 background-color: #c9302c;
4324 4324 }
4325 4325 .badge {
4326 4326 display: inline-block;
4327 4327 min-width: 10px;
4328 4328 padding: 3px 7px;
4329 4329 font-size: 12px;
4330 4330 font-weight: bold;
4331 4331 color: #ffffff;
4332 4332 line-height: 1;
4333 4333 vertical-align: baseline;
4334 4334 white-space: nowrap;
4335 4335 text-align: center;
4336 4336 background-color: #999999;
4337 4337 border-radius: 10px;
4338 4338 }
4339 4339 .badge:empty {
4340 4340 display: none;
4341 4341 }
4342 4342 .btn .badge {
4343 4343 position: relative;
4344 4344 top: -1px;
4345 4345 }
4346 4346 .btn-xs .badge {
4347 4347 top: 0;
4348 4348 padding: 1px 5px;
4349 4349 }
4350 4350 a.badge:hover,
4351 4351 a.badge:focus {
4352 4352 color: #ffffff;
4353 4353 text-decoration: none;
4354 4354 cursor: pointer;
4355 4355 }
4356 4356 a.list-group-item.active > .badge,
4357 4357 .nav-pills > .active > a > .badge {
4358 4358 color: #428bca;
4359 4359 background-color: #ffffff;
4360 4360 }
4361 4361 .nav-pills > li > a > .badge {
4362 4362 margin-left: 3px;
4363 4363 }
4364 4364 .jumbotron {
4365 4365 padding: 30px;
4366 4366 margin-bottom: 30px;
4367 4367 color: inherit;
4368 4368 background-color: #eeeeee;
4369 4369 }
4370 4370 .jumbotron h1,
4371 4371 .jumbotron .h1 {
4372 4372 color: inherit;
4373 4373 }
4374 4374 .jumbotron p {
4375 4375 margin-bottom: 15px;
4376 4376 font-size: 20px;
4377 4377 font-weight: 200;
4378 4378 }
4379 4379 .container .jumbotron {
4380 4380 border-radius: 6px;
4381 4381 }
4382 4382 .jumbotron .container {
4383 4383 max-width: 100%;
4384 4384 }
4385 4385 @media screen and (min-width: 768px) {
4386 4386 .jumbotron {
4387 4387 padding-top: 48px;
4388 4388 padding-bottom: 48px;
4389 4389 }
4390 4390 .container .jumbotron {
4391 4391 padding-left: 60px;
4392 4392 padding-right: 60px;
4393 4393 }
4394 4394 .jumbotron h1,
4395 4395 .jumbotron .h1 {
4396 4396 font-size: 58.5px;
4397 4397 }
4398 4398 }
4399 4399 .thumbnail {
4400 4400 display: block;
4401 4401 padding: 4px;
4402 4402 margin-bottom: 18px;
4403 4403 line-height: 1.42857143;
4404 4404 background-color: #ffffff;
4405 4405 border: 1px solid #dddddd;
4406 4406 border-radius: 4px;
4407 4407 -webkit-transition: all 0.2s ease-in-out;
4408 4408 transition: all 0.2s ease-in-out;
4409 4409 }
4410 4410 .thumbnail > img,
4411 4411 .thumbnail a > img {
4412 4412 margin-left: auto;
4413 4413 margin-right: auto;
4414 4414 }
4415 4415 a.thumbnail:hover,
4416 4416 a.thumbnail:focus,
4417 4417 a.thumbnail.active {
4418 4418 border-color: #428bca;
4419 4419 }
4420 4420 .thumbnail .caption {
4421 4421 padding: 9px;
4422 4422 color: #000000;
4423 4423 }
4424 4424 .alert {
4425 4425 padding: 15px;
4426 4426 margin-bottom: 18px;
4427 4427 border: 1px solid transparent;
4428 4428 border-radius: 4px;
4429 4429 }
4430 4430 .alert h4 {
4431 4431 margin-top: 0;
4432 4432 color: inherit;
4433 4433 }
4434 4434 .alert .alert-link {
4435 4435 font-weight: bold;
4436 4436 }
4437 4437 .alert > p,
4438 4438 .alert > ul {
4439 4439 margin-bottom: 0;
4440 4440 }
4441 4441 .alert > p + p {
4442 4442 margin-top: 5px;
4443 4443 }
4444 4444 .alert-dismissable {
4445 4445 padding-right: 35px;
4446 4446 }
4447 4447 .alert-dismissable .close {
4448 4448 position: relative;
4449 4449 top: -2px;
4450 4450 right: -21px;
4451 4451 color: inherit;
4452 4452 }
4453 4453 .alert-success {
4454 4454 background-color: #dff0d8;
4455 4455 border-color: #d6e9c6;
4456 4456 color: #3c763d;
4457 4457 }
4458 4458 .alert-success hr {
4459 4459 border-top-color: #c9e2b3;
4460 4460 }
4461 4461 .alert-success .alert-link {
4462 4462 color: #2b542c;
4463 4463 }
4464 4464 .alert-info {
4465 4465 background-color: #d9edf7;
4466 4466 border-color: #bce8f1;
4467 4467 color: #31708f;
4468 4468 }
4469 4469 .alert-info hr {
4470 4470 border-top-color: #a6e1ec;
4471 4471 }
4472 4472 .alert-info .alert-link {
4473 4473 color: #245269;
4474 4474 }
4475 4475 .alert-warning {
4476 4476 background-color: #fcf8e3;
4477 4477 border-color: #faebcc;
4478 4478 color: #8a6d3b;
4479 4479 }
4480 4480 .alert-warning hr {
4481 4481 border-top-color: #f7e1b5;
4482 4482 }
4483 4483 .alert-warning .alert-link {
4484 4484 color: #66512c;
4485 4485 }
4486 4486 .alert-danger {
4487 4487 background-color: #f2dede;
4488 4488 border-color: #ebccd1;
4489 4489 color: #a94442;
4490 4490 }
4491 4491 .alert-danger hr {
4492 4492 border-top-color: #e4b9c0;
4493 4493 }
4494 4494 .alert-danger .alert-link {
4495 4495 color: #843534;
4496 4496 }
4497 4497 @-webkit-keyframes progress-bar-stripes {
4498 4498 from {
4499 4499 background-position: 40px 0;
4500 4500 }
4501 4501 to {
4502 4502 background-position: 0 0;
4503 4503 }
4504 4504 }
4505 4505 @keyframes progress-bar-stripes {
4506 4506 from {
4507 4507 background-position: 40px 0;
4508 4508 }
4509 4509 to {
4510 4510 background-position: 0 0;
4511 4511 }
4512 4512 }
4513 4513 .progress {
4514 4514 overflow: hidden;
4515 4515 height: 18px;
4516 4516 margin-bottom: 18px;
4517 4517 background-color: #f5f5f5;
4518 4518 border-radius: 4px;
4519 4519 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4520 4520 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4521 4521 }
4522 4522 .progress-bar {
4523 4523 float: left;
4524 4524 width: 0%;
4525 4525 height: 100%;
4526 4526 font-size: 12px;
4527 4527 line-height: 18px;
4528 4528 color: #ffffff;
4529 4529 text-align: center;
4530 4530 background-color: #428bca;
4531 4531 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4532 4532 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4533 4533 -webkit-transition: width 0.6s ease;
4534 4534 transition: width 0.6s ease;
4535 4535 }
4536 4536 .progress-striped .progress-bar {
4537 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 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 4539 background-size: 40px 40px;
4540 4540 }
4541 4541 .progress.active .progress-bar {
4542 4542 -webkit-animation: progress-bar-stripes 2s linear infinite;
4543 4543 animation: progress-bar-stripes 2s linear infinite;
4544 4544 }
4545 4545 .progress-bar-success {
4546 4546 background-color: #5cb85c;
4547 4547 }
4548 4548 .progress-striped .progress-bar-success {
4549 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 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 4552 .progress-bar-info {
4553 4553 background-color: #5bc0de;
4554 4554 }
4555 4555 .progress-striped .progress-bar-info {
4556 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 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 4559 .progress-bar-warning {
4560 4560 background-color: #f0ad4e;
4561 4561 }
4562 4562 .progress-striped .progress-bar-warning {
4563 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 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 4566 .progress-bar-danger {
4567 4567 background-color: #d9534f;
4568 4568 }
4569 4569 .progress-striped .progress-bar-danger {
4570 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 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 4573 .media,
4574 4574 .media-body {
4575 4575 overflow: hidden;
4576 4576 zoom: 1;
4577 4577 }
4578 4578 .media,
4579 4579 .media .media {
4580 4580 margin-top: 15px;
4581 4581 }
4582 4582 .media:first-child {
4583 4583 margin-top: 0;
4584 4584 }
4585 4585 .media-object {
4586 4586 display: block;
4587 4587 }
4588 4588 .media-heading {
4589 4589 margin: 0 0 5px;
4590 4590 }
4591 4591 .media > .pull-left {
4592 4592 margin-right: 10px;
4593 4593 }
4594 4594 .media > .pull-right {
4595 4595 margin-left: 10px;
4596 4596 }
4597 4597 .media-list {
4598 4598 padding-left: 0;
4599 4599 list-style: none;
4600 4600 }
4601 4601 .list-group {
4602 4602 margin-bottom: 20px;
4603 4603 padding-left: 0;
4604 4604 }
4605 4605 .list-group-item {
4606 4606 position: relative;
4607 4607 display: block;
4608 4608 padding: 10px 15px;
4609 4609 margin-bottom: -1px;
4610 4610 background-color: #ffffff;
4611 4611 border: 1px solid #dddddd;
4612 4612 }
4613 4613 .list-group-item:first-child {
4614 4614 border-top-right-radius: 4px;
4615 4615 border-top-left-radius: 4px;
4616 4616 }
4617 4617 .list-group-item:last-child {
4618 4618 margin-bottom: 0;
4619 4619 border-bottom-right-radius: 4px;
4620 4620 border-bottom-left-radius: 4px;
4621 4621 }
4622 4622 .list-group-item > .badge {
4623 4623 float: right;
4624 4624 }
4625 4625 .list-group-item > .badge + .badge {
4626 4626 margin-right: 5px;
4627 4627 }
4628 4628 a.list-group-item {
4629 4629 color: #555555;
4630 4630 }
4631 4631 a.list-group-item .list-group-item-heading {
4632 4632 color: #333333;
4633 4633 }
4634 4634 a.list-group-item:hover,
4635 4635 a.list-group-item:focus {
4636 4636 text-decoration: none;
4637 4637 background-color: #f5f5f5;
4638 4638 }
4639 4639 a.list-group-item.active,
4640 4640 a.list-group-item.active:hover,
4641 4641 a.list-group-item.active:focus {
4642 4642 z-index: 2;
4643 4643 color: #ffffff;
4644 4644 background-color: #428bca;
4645 4645 border-color: #428bca;
4646 4646 }
4647 4647 a.list-group-item.active .list-group-item-heading,
4648 4648 a.list-group-item.active:hover .list-group-item-heading,
4649 4649 a.list-group-item.active:focus .list-group-item-heading {
4650 4650 color: inherit;
4651 4651 }
4652 4652 a.list-group-item.active .list-group-item-text,
4653 4653 a.list-group-item.active:hover .list-group-item-text,
4654 4654 a.list-group-item.active:focus .list-group-item-text {
4655 4655 color: #e1edf7;
4656 4656 }
4657 4657 .list-group-item-success {
4658 4658 color: #3c763d;
4659 4659 background-color: #dff0d8;
4660 4660 }
4661 4661 a.list-group-item-success {
4662 4662 color: #3c763d;
4663 4663 }
4664 4664 a.list-group-item-success .list-group-item-heading {
4665 4665 color: inherit;
4666 4666 }
4667 4667 a.list-group-item-success:hover,
4668 4668 a.list-group-item-success:focus {
4669 4669 color: #3c763d;
4670 4670 background-color: #d0e9c6;
4671 4671 }
4672 4672 a.list-group-item-success.active,
4673 4673 a.list-group-item-success.active:hover,
4674 4674 a.list-group-item-success.active:focus {
4675 4675 color: #fff;
4676 4676 background-color: #3c763d;
4677 4677 border-color: #3c763d;
4678 4678 }
4679 4679 .list-group-item-info {
4680 4680 color: #31708f;
4681 4681 background-color: #d9edf7;
4682 4682 }
4683 4683 a.list-group-item-info {
4684 4684 color: #31708f;
4685 4685 }
4686 4686 a.list-group-item-info .list-group-item-heading {
4687 4687 color: inherit;
4688 4688 }
4689 4689 a.list-group-item-info:hover,
4690 4690 a.list-group-item-info:focus {
4691 4691 color: #31708f;
4692 4692 background-color: #c4e3f3;
4693 4693 }
4694 4694 a.list-group-item-info.active,
4695 4695 a.list-group-item-info.active:hover,
4696 4696 a.list-group-item-info.active:focus {
4697 4697 color: #fff;
4698 4698 background-color: #31708f;
4699 4699 border-color: #31708f;
4700 4700 }
4701 4701 .list-group-item-warning {
4702 4702 color: #8a6d3b;
4703 4703 background-color: #fcf8e3;
4704 4704 }
4705 4705 a.list-group-item-warning {
4706 4706 color: #8a6d3b;
4707 4707 }
4708 4708 a.list-group-item-warning .list-group-item-heading {
4709 4709 color: inherit;
4710 4710 }
4711 4711 a.list-group-item-warning:hover,
4712 4712 a.list-group-item-warning:focus {
4713 4713 color: #8a6d3b;
4714 4714 background-color: #faf2cc;
4715 4715 }
4716 4716 a.list-group-item-warning.active,
4717 4717 a.list-group-item-warning.active:hover,
4718 4718 a.list-group-item-warning.active:focus {
4719 4719 color: #fff;
4720 4720 background-color: #8a6d3b;
4721 4721 border-color: #8a6d3b;
4722 4722 }
4723 4723 .list-group-item-danger {
4724 4724 color: #a94442;
4725 4725 background-color: #f2dede;
4726 4726 }
4727 4727 a.list-group-item-danger {
4728 4728 color: #a94442;
4729 4729 }
4730 4730 a.list-group-item-danger .list-group-item-heading {
4731 4731 color: inherit;
4732 4732 }
4733 4733 a.list-group-item-danger:hover,
4734 4734 a.list-group-item-danger:focus {
4735 4735 color: #a94442;
4736 4736 background-color: #ebcccc;
4737 4737 }
4738 4738 a.list-group-item-danger.active,
4739 4739 a.list-group-item-danger.active:hover,
4740 4740 a.list-group-item-danger.active:focus {
4741 4741 color: #fff;
4742 4742 background-color: #a94442;
4743 4743 border-color: #a94442;
4744 4744 }
4745 4745 .list-group-item-heading {
4746 4746 margin-top: 0;
4747 4747 margin-bottom: 5px;
4748 4748 }
4749 4749 .list-group-item-text {
4750 4750 margin-bottom: 0;
4751 4751 line-height: 1.3;
4752 4752 }
4753 4753 .panel {
4754 4754 margin-bottom: 18px;
4755 4755 background-color: #ffffff;
4756 4756 border: 1px solid transparent;
4757 4757 border-radius: 4px;
4758 4758 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4759 4759 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4760 4760 }
4761 4761 .panel-body {
4762 4762 padding: 15px;
4763 4763 }
4764 4764 .panel-heading {
4765 4765 padding: 10px 15px;
4766 4766 border-bottom: 1px solid transparent;
4767 4767 border-top-right-radius: 3px;
4768 4768 border-top-left-radius: 3px;
4769 4769 }
4770 4770 .panel-heading > .dropdown .dropdown-toggle {
4771 4771 color: inherit;
4772 4772 }
4773 4773 .panel-title {
4774 4774 margin-top: 0;
4775 4775 margin-bottom: 0;
4776 4776 font-size: 15px;
4777 4777 color: inherit;
4778 4778 }
4779 4779 .panel-title > a {
4780 4780 color: inherit;
4781 4781 }
4782 4782 .panel-footer {
4783 4783 padding: 10px 15px;
4784 4784 background-color: #f5f5f5;
4785 4785 border-top: 1px solid #dddddd;
4786 4786 border-bottom-right-radius: 3px;
4787 4787 border-bottom-left-radius: 3px;
4788 4788 }
4789 4789 .panel > .list-group {
4790 4790 margin-bottom: 0;
4791 4791 }
4792 4792 .panel > .list-group .list-group-item {
4793 4793 border-width: 1px 0;
4794 4794 border-radius: 0;
4795 4795 }
4796 4796 .panel > .list-group:first-child .list-group-item:first-child {
4797 4797 border-top: 0;
4798 4798 border-top-right-radius: 3px;
4799 4799 border-top-left-radius: 3px;
4800 4800 }
4801 4801 .panel > .list-group:last-child .list-group-item:last-child {
4802 4802 border-bottom: 0;
4803 4803 border-bottom-right-radius: 3px;
4804 4804 border-bottom-left-radius: 3px;
4805 4805 }
4806 4806 .panel-heading + .list-group .list-group-item:first-child {
4807 4807 border-top-width: 0;
4808 4808 }
4809 4809 .panel > .table,
4810 4810 .panel > .table-responsive > .table {
4811 4811 margin-bottom: 0;
4812 4812 }
4813 4813 .panel > .table:first-child,
4814 4814 .panel > .table-responsive:first-child > .table:first-child {
4815 4815 border-top-right-radius: 3px;
4816 4816 border-top-left-radius: 3px;
4817 4817 }
4818 4818 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
4819 4819 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
4820 4820 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4821 4821 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4822 4822 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
4823 4823 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
4824 4824 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
4825 4825 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
4826 4826 border-top-left-radius: 3px;
4827 4827 }
4828 4828 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
4829 4829 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
4830 4830 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4831 4831 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4832 4832 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
4833 4833 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
4834 4834 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
4835 4835 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
4836 4836 border-top-right-radius: 3px;
4837 4837 }
4838 4838 .panel > .table:last-child,
4839 4839 .panel > .table-responsive:last-child > .table:last-child {
4840 4840 border-bottom-right-radius: 3px;
4841 4841 border-bottom-left-radius: 3px;
4842 4842 }
4843 4843 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4844 4844 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4845 4845 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4846 4846 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4847 4847 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4848 4848 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4849 4849 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
4850 4850 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
4851 4851 border-bottom-left-radius: 3px;
4852 4852 }
4853 4853 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4854 4854 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4855 4855 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4856 4856 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4857 4857 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4858 4858 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4859 4859 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
4860 4860 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
4861 4861 border-bottom-right-radius: 3px;
4862 4862 }
4863 4863 .panel > .panel-body + .table,
4864 4864 .panel > .panel-body + .table-responsive {
4865 4865 border-top: 1px solid #dddddd;
4866 4866 }
4867 4867 .panel > .table > tbody:first-child > tr:first-child th,
4868 4868 .panel > .table > tbody:first-child > tr:first-child td {
4869 4869 border-top: 0;
4870 4870 }
4871 4871 .panel > .table-bordered,
4872 4872 .panel > .table-responsive > .table-bordered {
4873 4873 border: 0;
4874 4874 }
4875 4875 .panel > .table-bordered > thead > tr > th:first-child,
4876 4876 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
4877 4877 .panel > .table-bordered > tbody > tr > th:first-child,
4878 4878 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
4879 4879 .panel > .table-bordered > tfoot > tr > th:first-child,
4880 4880 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
4881 4881 .panel > .table-bordered > thead > tr > td:first-child,
4882 4882 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
4883 4883 .panel > .table-bordered > tbody > tr > td:first-child,
4884 4884 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
4885 4885 .panel > .table-bordered > tfoot > tr > td:first-child,
4886 4886 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
4887 4887 border-left: 0;
4888 4888 }
4889 4889 .panel > .table-bordered > thead > tr > th:last-child,
4890 4890 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
4891 4891 .panel > .table-bordered > tbody > tr > th:last-child,
4892 4892 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
4893 4893 .panel > .table-bordered > tfoot > tr > th:last-child,
4894 4894 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
4895 4895 .panel > .table-bordered > thead > tr > td:last-child,
4896 4896 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
4897 4897 .panel > .table-bordered > tbody > tr > td:last-child,
4898 4898 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
4899 4899 .panel > .table-bordered > tfoot > tr > td:last-child,
4900 4900 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
4901 4901 border-right: 0;
4902 4902 }
4903 4903 .panel > .table-bordered > thead > tr:first-child > td,
4904 4904 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
4905 4905 .panel > .table-bordered > tbody > tr:first-child > td,
4906 4906 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
4907 4907 .panel > .table-bordered > thead > tr:first-child > th,
4908 4908 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
4909 4909 .panel > .table-bordered > tbody > tr:first-child > th,
4910 4910 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
4911 4911 border-bottom: 0;
4912 4912 }
4913 4913 .panel > .table-bordered > tbody > tr:last-child > td,
4914 4914 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
4915 4915 .panel > .table-bordered > tfoot > tr:last-child > td,
4916 4916 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
4917 4917 .panel > .table-bordered > tbody > tr:last-child > th,
4918 4918 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
4919 4919 .panel > .table-bordered > tfoot > tr:last-child > th,
4920 4920 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
4921 4921 border-bottom: 0;
4922 4922 }
4923 4923 .panel > .table-responsive {
4924 4924 border: 0;
4925 4925 margin-bottom: 0;
4926 4926 }
4927 4927 .panel-group {
4928 4928 margin-bottom: 18px;
4929 4929 }
4930 4930 .panel-group .panel {
4931 4931 margin-bottom: 0;
4932 4932 border-radius: 4px;
4933 4933 overflow: hidden;
4934 4934 }
4935 4935 .panel-group .panel + .panel {
4936 4936 margin-top: 5px;
4937 4937 }
4938 4938 .panel-group .panel-heading {
4939 4939 border-bottom: 0;
4940 4940 }
4941 4941 .panel-group .panel-heading + .panel-collapse .panel-body {
4942 4942 border-top: 1px solid #dddddd;
4943 4943 }
4944 4944 .panel-group .panel-footer {
4945 4945 border-top: 0;
4946 4946 }
4947 4947 .panel-group .panel-footer + .panel-collapse .panel-body {
4948 4948 border-bottom: 1px solid #dddddd;
4949 4949 }
4950 4950 .panel-default {
4951 4951 border-color: #dddddd;
4952 4952 }
4953 4953 .panel-default > .panel-heading {
4954 4954 color: #333333;
4955 4955 background-color: #f5f5f5;
4956 4956 border-color: #dddddd;
4957 4957 }
4958 4958 .panel-default > .panel-heading + .panel-collapse .panel-body {
4959 4959 border-top-color: #dddddd;
4960 4960 }
4961 4961 .panel-default > .panel-footer + .panel-collapse .panel-body {
4962 4962 border-bottom-color: #dddddd;
4963 4963 }
4964 4964 .panel-primary {
4965 4965 border-color: #428bca;
4966 4966 }
4967 4967 .panel-primary > .panel-heading {
4968 4968 color: #ffffff;
4969 4969 background-color: #428bca;
4970 4970 border-color: #428bca;
4971 4971 }
4972 4972 .panel-primary > .panel-heading + .panel-collapse .panel-body {
4973 4973 border-top-color: #428bca;
4974 4974 }
4975 4975 .panel-primary > .panel-footer + .panel-collapse .panel-body {
4976 4976 border-bottom-color: #428bca;
4977 4977 }
4978 4978 .panel-success {
4979 4979 border-color: #d6e9c6;
4980 4980 }
4981 4981 .panel-success > .panel-heading {
4982 4982 color: #3c763d;
4983 4983 background-color: #dff0d8;
4984 4984 border-color: #d6e9c6;
4985 4985 }
4986 4986 .panel-success > .panel-heading + .panel-collapse .panel-body {
4987 4987 border-top-color: #d6e9c6;
4988 4988 }
4989 4989 .panel-success > .panel-footer + .panel-collapse .panel-body {
4990 4990 border-bottom-color: #d6e9c6;
4991 4991 }
4992 4992 .panel-info {
4993 4993 border-color: #bce8f1;
4994 4994 }
4995 4995 .panel-info > .panel-heading {
4996 4996 color: #31708f;
4997 4997 background-color: #d9edf7;
4998 4998 border-color: #bce8f1;
4999 4999 }
5000 5000 .panel-info > .panel-heading + .panel-collapse .panel-body {
5001 5001 border-top-color: #bce8f1;
5002 5002 }
5003 5003 .panel-info > .panel-footer + .panel-collapse .panel-body {
5004 5004 border-bottom-color: #bce8f1;
5005 5005 }
5006 5006 .panel-warning {
5007 5007 border-color: #faebcc;
5008 5008 }
5009 5009 .panel-warning > .panel-heading {
5010 5010 color: #8a6d3b;
5011 5011 background-color: #fcf8e3;
5012 5012 border-color: #faebcc;
5013 5013 }
5014 5014 .panel-warning > .panel-heading + .panel-collapse .panel-body {
5015 5015 border-top-color: #faebcc;
5016 5016 }
5017 5017 .panel-warning > .panel-footer + .panel-collapse .panel-body {
5018 5018 border-bottom-color: #faebcc;
5019 5019 }
5020 5020 .panel-danger {
5021 5021 border-color: #ebccd1;
5022 5022 }
5023 5023 .panel-danger > .panel-heading {
5024 5024 color: #a94442;
5025 5025 background-color: #f2dede;
5026 5026 border-color: #ebccd1;
5027 5027 }
5028 5028 .panel-danger > .panel-heading + .panel-collapse .panel-body {
5029 5029 border-top-color: #ebccd1;
5030 5030 }
5031 5031 .panel-danger > .panel-footer + .panel-collapse .panel-body {
5032 5032 border-bottom-color: #ebccd1;
5033 5033 }
5034 5034 .well {
5035 5035 min-height: 20px;
5036 5036 padding: 19px;
5037 5037 margin-bottom: 20px;
5038 5038 background-color: #f5f5f5;
5039 5039 border: 1px solid #e3e3e3;
5040 5040 border-radius: 4px;
5041 5041 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5042 5042 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5043 5043 }
5044 5044 .well blockquote {
5045 5045 border-color: #ddd;
5046 5046 border-color: rgba(0, 0, 0, 0.15);
5047 5047 }
5048 5048 .well-lg {
5049 5049 padding: 24px;
5050 5050 border-radius: 6px;
5051 5051 }
5052 5052 .well-sm {
5053 5053 padding: 9px;
5054 5054 border-radius: 3px;
5055 5055 }
5056 5056 .close {
5057 5057 float: right;
5058 5058 font-size: 19.5px;
5059 5059 font-weight: bold;
5060 5060 line-height: 1;
5061 5061 color: #000000;
5062 5062 text-shadow: 0 1px 0 #ffffff;
5063 5063 opacity: 0.2;
5064 5064 filter: alpha(opacity=20);
5065 5065 }
5066 5066 .close:hover,
5067 5067 .close:focus {
5068 5068 color: #000000;
5069 5069 text-decoration: none;
5070 5070 cursor: pointer;
5071 5071 opacity: 0.5;
5072 5072 filter: alpha(opacity=50);
5073 5073 }
5074 5074 button.close {
5075 5075 padding: 0;
5076 5076 cursor: pointer;
5077 5077 background: transparent;
5078 5078 border: 0;
5079 5079 -webkit-appearance: none;
5080 5080 }
5081 5081 .modal-open {
5082 5082 overflow: hidden;
5083 5083 }
5084 5084 .modal {
5085 5085 display: none;
5086 5086 overflow: auto;
5087 5087 overflow-y: scroll;
5088 5088 position: fixed;
5089 5089 top: 0;
5090 5090 right: 0;
5091 5091 bottom: 0;
5092 5092 left: 0;
5093 5093 z-index: 1050;
5094 5094 -webkit-overflow-scrolling: touch;
5095 5095 outline: 0;
5096 5096 }
5097 5097 .modal.fade .modal-dialog {
5098 5098 -webkit-transform: translate(0, -25%);
5099 5099 -ms-transform: translate(0, -25%);
5100 5100 transform: translate(0, -25%);
5101 5101 -webkit-transition: -webkit-transform 0.3s ease-out;
5102 5102 -moz-transition: -moz-transform 0.3s ease-out;
5103 5103 -o-transition: -o-transform 0.3s ease-out;
5104 5104 transition: transform 0.3s ease-out;
5105 5105 }
5106 5106 .modal.in .modal-dialog {
5107 5107 -webkit-transform: translate(0, 0);
5108 5108 -ms-transform: translate(0, 0);
5109 5109 transform: translate(0, 0);
5110 5110 }
5111 5111 .modal-dialog {
5112 5112 position: relative;
5113 5113 width: auto;
5114 5114 margin: 10px;
5115 5115 }
5116 5116 .modal-content {
5117 5117 position: relative;
5118 5118 background-color: #ffffff;
5119 5119 border: 1px solid #999999;
5120 5120 border: 1px solid rgba(0, 0, 0, 0.2);
5121 5121 border-radius: 6px;
5122 5122 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5123 5123 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5124 5124 background-clip: padding-box;
5125 5125 outline: none;
5126 5126 }
5127 5127 .modal-backdrop {
5128 5128 position: fixed;
5129 5129 top: 0;
5130 5130 right: 0;
5131 5131 bottom: 0;
5132 5132 left: 0;
5133 5133 z-index: 1040;
5134 5134 background-color: #000000;
5135 5135 }
5136 5136 .modal-backdrop.fade {
5137 5137 opacity: 0;
5138 5138 filter: alpha(opacity=0);
5139 5139 }
5140 5140 .modal-backdrop.in {
5141 5141 opacity: 0.5;
5142 5142 filter: alpha(opacity=50);
5143 5143 }
5144 5144 .modal-header {
5145 5145 padding: 15px;
5146 5146 border-bottom: 1px solid #e5e5e5;
5147 5147 min-height: 16.42857143px;
5148 5148 }
5149 5149 .modal-header .close {
5150 5150 margin-top: -2px;
5151 5151 }
5152 5152 .modal-title {
5153 5153 margin: 0;
5154 5154 line-height: 1.42857143;
5155 5155 }
5156 5156 .modal-body {
5157 5157 position: relative;
5158 5158 padding: 15px;
5159 5159 }
5160 5160 .modal-footer {
5161 5161 margin-top: 15px;
5162 5162 padding: 14px 15px 15px;
5163 5163 text-align: right;
5164 5164 border-top: 1px solid #e5e5e5;
5165 5165 }
5166 5166 .modal-footer .btn + .btn {
5167 5167 margin-left: 5px;
5168 5168 margin-bottom: 0;
5169 5169 }
5170 5170 .modal-footer .btn-group .btn + .btn {
5171 5171 margin-left: -1px;
5172 5172 }
5173 5173 .modal-footer .btn-block + .btn-block {
5174 5174 margin-left: 0;
5175 5175 }
5176 5176 @media (min-width: 768px) {
5177 5177 .modal-dialog {
5178 5178 width: 600px;
5179 5179 margin: 30px auto;
5180 5180 }
5181 5181 .modal-content {
5182 5182 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5183 5183 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5184 5184 }
5185 5185 .modal-sm {
5186 5186 width: 300px;
5187 5187 }
5188 5188 }
5189 5189 @media (min-width: 992px) {
5190 5190 .modal-lg {
5191 5191 width: 900px;
5192 5192 }
5193 5193 }
5194 5194 .tooltip {
5195 5195 position: absolute;
5196 5196 z-index: 1030;
5197 5197 display: block;
5198 5198 visibility: visible;
5199 5199 font-size: 12px;
5200 5200 line-height: 1.4;
5201 5201 opacity: 0;
5202 5202 filter: alpha(opacity=0);
5203 5203 }
5204 5204 .tooltip.in {
5205 5205 opacity: 0.9;
5206 5206 filter: alpha(opacity=90);
5207 5207 }
5208 5208 .tooltip.top {
5209 5209 margin-top: -3px;
5210 5210 padding: 5px 0;
5211 5211 }
5212 5212 .tooltip.right {
5213 5213 margin-left: 3px;
5214 5214 padding: 0 5px;
5215 5215 }
5216 5216 .tooltip.bottom {
5217 5217 margin-top: 3px;
5218 5218 padding: 5px 0;
5219 5219 }
5220 5220 .tooltip.left {
5221 5221 margin-left: -3px;
5222 5222 padding: 0 5px;
5223 5223 }
5224 5224 .tooltip-inner {
5225 5225 max-width: 200px;
5226 5226 padding: 3px 8px;
5227 5227 color: #ffffff;
5228 5228 text-align: center;
5229 5229 text-decoration: none;
5230 5230 background-color: #000000;
5231 5231 border-radius: 4px;
5232 5232 }
5233 5233 .tooltip-arrow {
5234 5234 position: absolute;
5235 5235 width: 0;
5236 5236 height: 0;
5237 5237 border-color: transparent;
5238 5238 border-style: solid;
5239 5239 }
5240 5240 .tooltip.top .tooltip-arrow {
5241 5241 bottom: 0;
5242 5242 left: 50%;
5243 5243 margin-left: -5px;
5244 5244 border-width: 5px 5px 0;
5245 5245 border-top-color: #000000;
5246 5246 }
5247 5247 .tooltip.top-left .tooltip-arrow {
5248 5248 bottom: 0;
5249 5249 left: 5px;
5250 5250 border-width: 5px 5px 0;
5251 5251 border-top-color: #000000;
5252 5252 }
5253 5253 .tooltip.top-right .tooltip-arrow {
5254 5254 bottom: 0;
5255 5255 right: 5px;
5256 5256 border-width: 5px 5px 0;
5257 5257 border-top-color: #000000;
5258 5258 }
5259 5259 .tooltip.right .tooltip-arrow {
5260 5260 top: 50%;
5261 5261 left: 0;
5262 5262 margin-top: -5px;
5263 5263 border-width: 5px 5px 5px 0;
5264 5264 border-right-color: #000000;
5265 5265 }
5266 5266 .tooltip.left .tooltip-arrow {
5267 5267 top: 50%;
5268 5268 right: 0;
5269 5269 margin-top: -5px;
5270 5270 border-width: 5px 0 5px 5px;
5271 5271 border-left-color: #000000;
5272 5272 }
5273 5273 .tooltip.bottom .tooltip-arrow {
5274 5274 top: 0;
5275 5275 left: 50%;
5276 5276 margin-left: -5px;
5277 5277 border-width: 0 5px 5px;
5278 5278 border-bottom-color: #000000;
5279 5279 }
5280 5280 .tooltip.bottom-left .tooltip-arrow {
5281 5281 top: 0;
5282 5282 left: 5px;
5283 5283 border-width: 0 5px 5px;
5284 5284 border-bottom-color: #000000;
5285 5285 }
5286 5286 .tooltip.bottom-right .tooltip-arrow {
5287 5287 top: 0;
5288 5288 right: 5px;
5289 5289 border-width: 0 5px 5px;
5290 5290 border-bottom-color: #000000;
5291 5291 }
5292 5292 .popover {
5293 5293 position: absolute;
5294 5294 top: 0;
5295 5295 left: 0;
5296 5296 z-index: 1010;
5297 5297 display: none;
5298 5298 max-width: 276px;
5299 5299 padding: 1px;
5300 5300 text-align: left;
5301 5301 background-color: #ffffff;
5302 5302 background-clip: padding-box;
5303 5303 border: 1px solid #cccccc;
5304 5304 border: 1px solid rgba(0, 0, 0, 0.2);
5305 5305 border-radius: 6px;
5306 5306 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5307 5307 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5308 5308 white-space: normal;
5309 5309 }
5310 5310 .popover.top {
5311 5311 margin-top: -10px;
5312 5312 }
5313 5313 .popover.right {
5314 5314 margin-left: 10px;
5315 5315 }
5316 5316 .popover.bottom {
5317 5317 margin-top: 10px;
5318 5318 }
5319 5319 .popover.left {
5320 5320 margin-left: -10px;
5321 5321 }
5322 5322 .popover-title {
5323 5323 margin: 0;
5324 5324 padding: 8px 14px;
5325 5325 font-size: 13px;
5326 5326 font-weight: normal;
5327 5327 line-height: 18px;
5328 5328 background-color: #f7f7f7;
5329 5329 border-bottom: 1px solid #ebebeb;
5330 5330 border-radius: 5px 5px 0 0;
5331 5331 }
5332 5332 .popover-content {
5333 5333 padding: 9px 14px;
5334 5334 }
5335 5335 .popover > .arrow,
5336 5336 .popover > .arrow:after {
5337 5337 position: absolute;
5338 5338 display: block;
5339 5339 width: 0;
5340 5340 height: 0;
5341 5341 border-color: transparent;
5342 5342 border-style: solid;
5343 5343 }
5344 5344 .popover > .arrow {
5345 5345 border-width: 11px;
5346 5346 }
5347 5347 .popover > .arrow:after {
5348 5348 border-width: 10px;
5349 5349 content: "";
5350 5350 }
5351 5351 .popover.top > .arrow {
5352 5352 left: 50%;
5353 5353 margin-left: -11px;
5354 5354 border-bottom-width: 0;
5355 5355 border-top-color: #999999;
5356 5356 border-top-color: rgba(0, 0, 0, 0.25);
5357 5357 bottom: -11px;
5358 5358 }
5359 5359 .popover.top > .arrow:after {
5360 5360 content: " ";
5361 5361 bottom: 1px;
5362 5362 margin-left: -10px;
5363 5363 border-bottom-width: 0;
5364 5364 border-top-color: #ffffff;
5365 5365 }
5366 5366 .popover.right > .arrow {
5367 5367 top: 50%;
5368 5368 left: -11px;
5369 5369 margin-top: -11px;
5370 5370 border-left-width: 0;
5371 5371 border-right-color: #999999;
5372 5372 border-right-color: rgba(0, 0, 0, 0.25);
5373 5373 }
5374 5374 .popover.right > .arrow:after {
5375 5375 content: " ";
5376 5376 left: 1px;
5377 5377 bottom: -10px;
5378 5378 border-left-width: 0;
5379 5379 border-right-color: #ffffff;
5380 5380 }
5381 5381 .popover.bottom > .arrow {
5382 5382 left: 50%;
5383 5383 margin-left: -11px;
5384 5384 border-top-width: 0;
5385 5385 border-bottom-color: #999999;
5386 5386 border-bottom-color: rgba(0, 0, 0, 0.25);
5387 5387 top: -11px;
5388 5388 }
5389 5389 .popover.bottom > .arrow:after {
5390 5390 content: " ";
5391 5391 top: 1px;
5392 5392 margin-left: -10px;
5393 5393 border-top-width: 0;
5394 5394 border-bottom-color: #ffffff;
5395 5395 }
5396 5396 .popover.left > .arrow {
5397 5397 top: 50%;
5398 5398 right: -11px;
5399 5399 margin-top: -11px;
5400 5400 border-right-width: 0;
5401 5401 border-left-color: #999999;
5402 5402 border-left-color: rgba(0, 0, 0, 0.25);
5403 5403 }
5404 5404 .popover.left > .arrow:after {
5405 5405 content: " ";
5406 5406 right: 1px;
5407 5407 border-right-width: 0;
5408 5408 border-left-color: #ffffff;
5409 5409 bottom: -10px;
5410 5410 }
5411 5411 .carousel {
5412 5412 position: relative;
5413 5413 }
5414 5414 .carousel-inner {
5415 5415 position: relative;
5416 5416 overflow: hidden;
5417 5417 width: 100%;
5418 5418 }
5419 5419 .carousel-inner > .item {
5420 5420 display: none;
5421 5421 position: relative;
5422 5422 -webkit-transition: 0.6s ease-in-out left;
5423 5423 transition: 0.6s ease-in-out left;
5424 5424 }
5425 5425 .carousel-inner > .item > img,
5426 5426 .carousel-inner > .item > a > img {
5427 5427 line-height: 1;
5428 5428 }
5429 5429 .carousel-inner > .active,
5430 5430 .carousel-inner > .next,
5431 5431 .carousel-inner > .prev {
5432 5432 display: block;
5433 5433 }
5434 5434 .carousel-inner > .active {
5435 5435 left: 0;
5436 5436 }
5437 5437 .carousel-inner > .next,
5438 5438 .carousel-inner > .prev {
5439 5439 position: absolute;
5440 5440 top: 0;
5441 5441 width: 100%;
5442 5442 }
5443 5443 .carousel-inner > .next {
5444 5444 left: 100%;
5445 5445 }
5446 5446 .carousel-inner > .prev {
5447 5447 left: -100%;
5448 5448 }
5449 5449 .carousel-inner > .next.left,
5450 5450 .carousel-inner > .prev.right {
5451 5451 left: 0;
5452 5452 }
5453 5453 .carousel-inner > .active.left {
5454 5454 left: -100%;
5455 5455 }
5456 5456 .carousel-inner > .active.right {
5457 5457 left: 100%;
5458 5458 }
5459 5459 .carousel-control {
5460 5460 position: absolute;
5461 5461 top: 0;
5462 5462 left: 0;
5463 5463 bottom: 0;
5464 5464 width: 15%;
5465 5465 opacity: 0.5;
5466 5466 filter: alpha(opacity=50);
5467 5467 font-size: 20px;
5468 5468 color: #ffffff;
5469 5469 text-align: center;
5470 5470 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5471 5471 }
5472 5472 .carousel-control.left {
5473 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 5474 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5475 5475 background-repeat: repeat-x;
5476 5476 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5477 5477 }
5478 5478 .carousel-control.right {
5479 5479 left: auto;
5480 5480 right: 0;
5481 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 5482 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5483 5483 background-repeat: repeat-x;
5484 5484 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5485 5485 }
5486 5486 .carousel-control:hover,
5487 5487 .carousel-control:focus {
5488 5488 outline: none;
5489 5489 color: #ffffff;
5490 5490 text-decoration: none;
5491 5491 opacity: 0.9;
5492 5492 filter: alpha(opacity=90);
5493 5493 }
5494 5494 .carousel-control .icon-prev,
5495 5495 .carousel-control .icon-next,
5496 5496 .carousel-control .glyphicon-chevron-left,
5497 5497 .carousel-control .glyphicon-chevron-right {
5498 5498 position: absolute;
5499 5499 top: 50%;
5500 5500 z-index: 5;
5501 5501 display: inline-block;
5502 5502 }
5503 5503 .carousel-control .icon-prev,
5504 5504 .carousel-control .glyphicon-chevron-left {
5505 5505 left: 50%;
5506 5506 }
5507 5507 .carousel-control .icon-next,
5508 5508 .carousel-control .glyphicon-chevron-right {
5509 5509 right: 50%;
5510 5510 }
5511 5511 .carousel-control .icon-prev,
5512 5512 .carousel-control .icon-next {
5513 5513 width: 20px;
5514 5514 height: 20px;
5515 5515 margin-top: -10px;
5516 5516 margin-left: -10px;
5517 5517 font-family: serif;
5518 5518 }
5519 5519 .carousel-control .icon-prev:before {
5520 5520 content: '\2039';
5521 5521 }
5522 5522 .carousel-control .icon-next:before {
5523 5523 content: '\203a';
5524 5524 }
5525 5525 .carousel-indicators {
5526 5526 position: absolute;
5527 5527 bottom: 10px;
5528 5528 left: 50%;
5529 5529 z-index: 15;
5530 5530 width: 60%;
5531 5531 margin-left: -30%;
5532 5532 padding-left: 0;
5533 5533 list-style: none;
5534 5534 text-align: center;
5535 5535 }
5536 5536 .carousel-indicators li {
5537 5537 display: inline-block;
5538 5538 width: 10px;
5539 5539 height: 10px;
5540 5540 margin: 1px;
5541 5541 text-indent: -999px;
5542 5542 border: 1px solid #ffffff;
5543 5543 border-radius: 10px;
5544 5544 cursor: pointer;
5545 5545 background-color: #000 \9;
5546 5546 background-color: rgba(0, 0, 0, 0);
5547 5547 }
5548 5548 .carousel-indicators .active {
5549 5549 margin: 0;
5550 5550 width: 12px;
5551 5551 height: 12px;
5552 5552 background-color: #ffffff;
5553 5553 }
5554 5554 .carousel-caption {
5555 5555 position: absolute;
5556 5556 left: 15%;
5557 5557 right: 15%;
5558 5558 bottom: 20px;
5559 5559 z-index: 10;
5560 5560 padding-top: 20px;
5561 5561 padding-bottom: 20px;
5562 5562 color: #ffffff;
5563 5563 text-align: center;
5564 5564 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5565 5565 }
5566 5566 .carousel-caption .btn {
5567 5567 text-shadow: none;
5568 5568 }
5569 5569 @media screen and (min-width: 768px) {
5570 5570 .carousel-control .glyphicon-chevron-left,
5571 5571 .carousel-control .glyphicon-chevron-right,
5572 5572 .carousel-control .icon-prev,
5573 5573 .carousel-control .icon-next {
5574 5574 width: 30px;
5575 5575 height: 30px;
5576 5576 margin-top: -15px;
5577 5577 margin-left: -15px;
5578 5578 font-size: 30px;
5579 5579 }
5580 5580 .carousel-caption {
5581 5581 left: 20%;
5582 5582 right: 20%;
5583 5583 padding-bottom: 30px;
5584 5584 }
5585 5585 .carousel-indicators {
5586 5586 bottom: 20px;
5587 5587 }
5588 5588 }
5589 5589 .clearfix:before,
5590 5590 .clearfix:after,
5591 5591 .container:before,
5592 5592 .container:after,
5593 5593 .container-fluid:before,
5594 5594 .container-fluid:after,
5595 5595 .row:before,
5596 5596 .row:after,
5597 5597 .form-horizontal .form-group:before,
5598 5598 .form-horizontal .form-group:after,
5599 5599 .btn-toolbar:before,
5600 5600 .btn-toolbar:after,
5601 5601 .btn-group-vertical > .btn-group:before,
5602 5602 .btn-group-vertical > .btn-group:after,
5603 5603 .nav:before,
5604 5604 .nav:after,
5605 5605 .navbar:before,
5606 5606 .navbar:after,
5607 5607 .navbar-header:before,
5608 5608 .navbar-header:after,
5609 5609 .navbar-collapse:before,
5610 5610 .navbar-collapse:after,
5611 5611 .pager:before,
5612 5612 .pager:after,
5613 5613 .panel-body:before,
5614 5614 .panel-body:after,
5615 5615 .modal-footer:before,
5616 5616 .modal-footer:after {
5617 5617 content: " ";
5618 5618 display: table;
5619 5619 }
5620 5620 .clearfix:after,
5621 5621 .container:after,
5622 5622 .container-fluid:after,
5623 5623 .row:after,
5624 5624 .form-horizontal .form-group:after,
5625 5625 .btn-toolbar:after,
5626 5626 .btn-group-vertical > .btn-group:after,
5627 5627 .nav:after,
5628 5628 .navbar:after,
5629 5629 .navbar-header:after,
5630 5630 .navbar-collapse:after,
5631 5631 .pager:after,
5632 5632 .panel-body:after,
5633 5633 .modal-footer:after {
5634 5634 clear: both;
5635 5635 }
5636 5636 .center-block {
5637 5637 display: block;
5638 5638 margin-left: auto;
5639 5639 margin-right: auto;
5640 5640 }
5641 5641 .pull-right {
5642 5642 float: right !important;
5643 5643 }
5644 5644 .pull-left {
5645 5645 float: left !important;
5646 5646 }
5647 5647 .hide {
5648 5648 display: none !important;
5649 5649 }
5650 5650 .show {
5651 5651 display: block !important;
5652 5652 }
5653 5653 .invisible {
5654 5654 visibility: hidden;
5655 5655 }
5656 5656 .text-hide {
5657 5657 font: 0/0 a;
5658 5658 color: transparent;
5659 5659 text-shadow: none;
5660 5660 background-color: transparent;
5661 5661 border: 0;
5662 5662 }
5663 5663 .hidden {
5664 5664 display: none !important;
5665 5665 visibility: hidden !important;
5666 5666 }
5667 5667 .affix {
5668 5668 position: fixed;
5669 5669 }
5670 5670 @-ms-viewport {
5671 5671 width: device-width;
5672 5672 }
5673 5673 .visible-xs,
5674 5674 .visible-sm,
5675 5675 .visible-md,
5676 5676 .visible-lg {
5677 5677 display: none !important;
5678 5678 }
5679 5679 @media (max-width: 767px) {
5680 5680 .visible-xs {
5681 5681 display: block !important;
5682 5682 }
5683 5683 table.visible-xs {
5684 5684 display: table;
5685 5685 }
5686 5686 tr.visible-xs {
5687 5687 display: table-row !important;
5688 5688 }
5689 5689 th.visible-xs,
5690 5690 td.visible-xs {
5691 5691 display: table-cell !important;
5692 5692 }
5693 5693 }
5694 5694 @media (min-width: 768px) and (max-width: 991px) {
5695 5695 .visible-sm {
5696 5696 display: block !important;
5697 5697 }
5698 5698 table.visible-sm {
5699 5699 display: table;
5700 5700 }
5701 5701 tr.visible-sm {
5702 5702 display: table-row !important;
5703 5703 }
5704 5704 th.visible-sm,
5705 5705 td.visible-sm {
5706 5706 display: table-cell !important;
5707 5707 }
5708 5708 }
5709 5709 @media (min-width: 992px) and (max-width: 1199px) {
5710 5710 .visible-md {
5711 5711 display: block !important;
5712 5712 }
5713 5713 table.visible-md {
5714 5714 display: table;
5715 5715 }
5716 5716 tr.visible-md {
5717 5717 display: table-row !important;
5718 5718 }
5719 5719 th.visible-md,
5720 5720 td.visible-md {
5721 5721 display: table-cell !important;
5722 5722 }
5723 5723 }
5724 5724 @media (min-width: 1200px) {
5725 5725 .visible-lg {
5726 5726 display: block !important;
5727 5727 }
5728 5728 table.visible-lg {
5729 5729 display: table;
5730 5730 }
5731 5731 tr.visible-lg {
5732 5732 display: table-row !important;
5733 5733 }
5734 5734 th.visible-lg,
5735 5735 td.visible-lg {
5736 5736 display: table-cell !important;
5737 5737 }
5738 5738 }
5739 5739 @media (max-width: 767px) {
5740 5740 .hidden-xs {
5741 5741 display: none !important;
5742 5742 }
5743 5743 }
5744 5744 @media (min-width: 768px) and (max-width: 991px) {
5745 5745 .hidden-sm {
5746 5746 display: none !important;
5747 5747 }
5748 5748 }
5749 5749 @media (min-width: 992px) and (max-width: 1199px) {
5750 5750 .hidden-md {
5751 5751 display: none !important;
5752 5752 }
5753 5753 }
5754 5754 @media (min-width: 1200px) {
5755 5755 .hidden-lg {
5756 5756 display: none !important;
5757 5757 }
5758 5758 }
5759 5759 .visible-print {
5760 5760 display: none !important;
5761 5761 }
5762 5762 @media print {
5763 5763 .visible-print {
5764 5764 display: block !important;
5765 5765 }
5766 5766 table.visible-print {
5767 5767 display: table;
5768 5768 }
5769 5769 tr.visible-print {
5770 5770 display: table-row !important;
5771 5771 }
5772 5772 th.visible-print,
5773 5773 td.visible-print {
5774 5774 display: table-cell !important;
5775 5775 }
5776 5776 }
5777 5777 @media print {
5778 5778 .hidden-print {
5779 5779 display: none !important;
5780 5780 }
5781 5781 }
5782 5782 /*!
5783 5783 *
5784 5784 * Font Awesome
5785 5785 *
5786 5786 */
5787 5787 /*!
5788 5788 * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
5789 5789 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
5790 5790 */
5791 5791 /* FONT PATH
5792 5792 * -------------------------- */
5793 5793 @font-face {
5794 5794 font-family: 'FontAwesome';
5795 5795 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
5796 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 5797 font-weight: normal;
5798 5798 font-style: normal;
5799 5799 }
5800 5800 .fa {
5801 5801 display: inline-block;
5802 5802 font: normal normal normal 14px/1 FontAwesome;
5803 5803 font-size: inherit;
5804 5804 text-rendering: auto;
5805 5805 -webkit-font-smoothing: antialiased;
5806 5806 -moz-osx-font-smoothing: grayscale;
5807 5807 }
5808 5808 /* makes the font 33% larger relative to the icon container */
5809 5809 .fa-lg {
5810 5810 font-size: 1.33333333em;
5811 5811 line-height: 0.75em;
5812 5812 vertical-align: -15%;
5813 5813 }
5814 5814 .fa-2x {
5815 5815 font-size: 2em;
5816 5816 }
5817 5817 .fa-3x {
5818 5818 font-size: 3em;
5819 5819 }
5820 5820 .fa-4x {
5821 5821 font-size: 4em;
5822 5822 }
5823 5823 .fa-5x {
5824 5824 font-size: 5em;
5825 5825 }
5826 5826 .fa-fw {
5827 5827 width: 1.28571429em;
5828 5828 text-align: center;
5829 5829 }
5830 5830 .fa-ul {
5831 5831 padding-left: 0;
5832 5832 margin-left: 2.14285714em;
5833 5833 list-style-type: none;
5834 5834 }
5835 5835 .fa-ul > li {
5836 5836 position: relative;
5837 5837 }
5838 5838 .fa-li {
5839 5839 position: absolute;
5840 5840 left: -2.14285714em;
5841 5841 width: 2.14285714em;
5842 5842 top: 0.14285714em;
5843 5843 text-align: center;
5844 5844 }
5845 5845 .fa-li.fa-lg {
5846 5846 left: -1.85714286em;
5847 5847 }
5848 5848 .fa-border {
5849 5849 padding: .2em .25em .15em;
5850 5850 border: solid 0.08em #eeeeee;
5851 5851 border-radius: .1em;
5852 5852 }
5853 5853 .pull-right {
5854 5854 float: right;
5855 5855 }
5856 5856 .pull-left {
5857 5857 float: left;
5858 5858 }
5859 5859 .fa.pull-left {
5860 5860 margin-right: .3em;
5861 5861 }
5862 5862 .fa.pull-right {
5863 5863 margin-left: .3em;
5864 5864 }
5865 5865 .fa-spin {
5866 5866 -webkit-animation: fa-spin 2s infinite linear;
5867 5867 animation: fa-spin 2s infinite linear;
5868 5868 }
5869 5869 @-webkit-keyframes fa-spin {
5870 5870 0% {
5871 5871 -webkit-transform: rotate(0deg);
5872 5872 transform: rotate(0deg);
5873 5873 }
5874 5874 100% {
5875 5875 -webkit-transform: rotate(359deg);
5876 5876 transform: rotate(359deg);
5877 5877 }
5878 5878 }
5879 5879 @keyframes fa-spin {
5880 5880 0% {
5881 5881 -webkit-transform: rotate(0deg);
5882 5882 transform: rotate(0deg);
5883 5883 }
5884 5884 100% {
5885 5885 -webkit-transform: rotate(359deg);
5886 5886 transform: rotate(359deg);
5887 5887 }
5888 5888 }
5889 5889 .fa-rotate-90 {
5890 5890 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
5891 5891 -webkit-transform: rotate(90deg);
5892 5892 -ms-transform: rotate(90deg);
5893 5893 transform: rotate(90deg);
5894 5894 }
5895 5895 .fa-rotate-180 {
5896 5896 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
5897 5897 -webkit-transform: rotate(180deg);
5898 5898 -ms-transform: rotate(180deg);
5899 5899 transform: rotate(180deg);
5900 5900 }
5901 5901 .fa-rotate-270 {
5902 5902 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
5903 5903 -webkit-transform: rotate(270deg);
5904 5904 -ms-transform: rotate(270deg);
5905 5905 transform: rotate(270deg);
5906 5906 }
5907 5907 .fa-flip-horizontal {
5908 5908 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
5909 5909 -webkit-transform: scale(-1, 1);
5910 5910 -ms-transform: scale(-1, 1);
5911 5911 transform: scale(-1, 1);
5912 5912 }
5913 5913 .fa-flip-vertical {
5914 5914 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
5915 5915 -webkit-transform: scale(1, -1);
5916 5916 -ms-transform: scale(1, -1);
5917 5917 transform: scale(1, -1);
5918 5918 }
5919 5919 :root .fa-rotate-90,
5920 5920 :root .fa-rotate-180,
5921 5921 :root .fa-rotate-270,
5922 5922 :root .fa-flip-horizontal,
5923 5923 :root .fa-flip-vertical {
5924 5924 filter: none;
5925 5925 }
5926 5926 .fa-stack {
5927 5927 position: relative;
5928 5928 display: inline-block;
5929 5929 width: 2em;
5930 5930 height: 2em;
5931 5931 line-height: 2em;
5932 5932 vertical-align: middle;
5933 5933 }
5934 5934 .fa-stack-1x,
5935 5935 .fa-stack-2x {
5936 5936 position: absolute;
5937 5937 left: 0;
5938 5938 width: 100%;
5939 5939 text-align: center;
5940 5940 }
5941 5941 .fa-stack-1x {
5942 5942 line-height: inherit;
5943 5943 }
5944 5944 .fa-stack-2x {
5945 5945 font-size: 2em;
5946 5946 }
5947 5947 .fa-inverse {
5948 5948 color: #ffffff;
5949 5949 }
5950 5950 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
5951 5951 readers do not read off random characters that represent icons */
5952 5952 .fa-glass:before {
5953 5953 content: "\f000";
5954 5954 }
5955 5955 .fa-music:before {
5956 5956 content: "\f001";
5957 5957 }
5958 5958 .fa-search:before {
5959 5959 content: "\f002";
5960 5960 }
5961 5961 .fa-envelope-o:before {
5962 5962 content: "\f003";
5963 5963 }
5964 5964 .fa-heart:before {
5965 5965 content: "\f004";
5966 5966 }
5967 5967 .fa-star:before {
5968 5968 content: "\f005";
5969 5969 }
5970 5970 .fa-star-o:before {
5971 5971 content: "\f006";
5972 5972 }
5973 5973 .fa-user:before {
5974 5974 content: "\f007";
5975 5975 }
5976 5976 .fa-film:before {
5977 5977 content: "\f008";
5978 5978 }
5979 5979 .fa-th-large:before {
5980 5980 content: "\f009";
5981 5981 }
5982 5982 .fa-th:before {
5983 5983 content: "\f00a";
5984 5984 }
5985 5985 .fa-th-list:before {
5986 5986 content: "\f00b";
5987 5987 }
5988 5988 .fa-check:before {
5989 5989 content: "\f00c";
5990 5990 }
5991 5991 .fa-remove:before,
5992 5992 .fa-close:before,
5993 5993 .fa-times:before {
5994 5994 content: "\f00d";
5995 5995 }
5996 5996 .fa-search-plus:before {
5997 5997 content: "\f00e";
5998 5998 }
5999 5999 .fa-search-minus:before {
6000 6000 content: "\f010";
6001 6001 }
6002 6002 .fa-power-off:before {
6003 6003 content: "\f011";
6004 6004 }
6005 6005 .fa-signal:before {
6006 6006 content: "\f012";
6007 6007 }
6008 6008 .fa-gear:before,
6009 6009 .fa-cog:before {
6010 6010 content: "\f013";
6011 6011 }
6012 6012 .fa-trash-o:before {
6013 6013 content: "\f014";
6014 6014 }
6015 6015 .fa-home:before {
6016 6016 content: "\f015";
6017 6017 }
6018 6018 .fa-file-o:before {
6019 6019 content: "\f016";
6020 6020 }
6021 6021 .fa-clock-o:before {
6022 6022 content: "\f017";
6023 6023 }
6024 6024 .fa-road:before {
6025 6025 content: "\f018";
6026 6026 }
6027 6027 .fa-download:before {
6028 6028 content: "\f019";
6029 6029 }
6030 6030 .fa-arrow-circle-o-down:before {
6031 6031 content: "\f01a";
6032 6032 }
6033 6033 .fa-arrow-circle-o-up:before {
6034 6034 content: "\f01b";
6035 6035 }
6036 6036 .fa-inbox:before {
6037 6037 content: "\f01c";
6038 6038 }
6039 6039 .fa-play-circle-o:before {
6040 6040 content: "\f01d";
6041 6041 }
6042 6042 .fa-rotate-right:before,
6043 6043 .fa-repeat:before {
6044 6044 content: "\f01e";
6045 6045 }
6046 6046 .fa-refresh:before {
6047 6047 content: "\f021";
6048 6048 }
6049 6049 .fa-list-alt:before {
6050 6050 content: "\f022";
6051 6051 }
6052 6052 .fa-lock:before {
6053 6053 content: "\f023";
6054 6054 }
6055 6055 .fa-flag:before {
6056 6056 content: "\f024";
6057 6057 }
6058 6058 .fa-headphones:before {
6059 6059 content: "\f025";
6060 6060 }
6061 6061 .fa-volume-off:before {
6062 6062 content: "\f026";
6063 6063 }
6064 6064 .fa-volume-down:before {
6065 6065 content: "\f027";
6066 6066 }
6067 6067 .fa-volume-up:before {
6068 6068 content: "\f028";
6069 6069 }
6070 6070 .fa-qrcode:before {
6071 6071 content: "\f029";
6072 6072 }
6073 6073 .fa-barcode:before {
6074 6074 content: "\f02a";
6075 6075 }
6076 6076 .fa-tag:before {
6077 6077 content: "\f02b";
6078 6078 }
6079 6079 .fa-tags:before {
6080 6080 content: "\f02c";
6081 6081 }
6082 6082 .fa-book:before {
6083 6083 content: "\f02d";
6084 6084 }
6085 6085 .fa-bookmark:before {
6086 6086 content: "\f02e";
6087 6087 }
6088 6088 .fa-print:before {
6089 6089 content: "\f02f";
6090 6090 }
6091 6091 .fa-camera:before {
6092 6092 content: "\f030";
6093 6093 }
6094 6094 .fa-font:before {
6095 6095 content: "\f031";
6096 6096 }
6097 6097 .fa-bold:before {
6098 6098 content: "\f032";
6099 6099 }
6100 6100 .fa-italic:before {
6101 6101 content: "\f033";
6102 6102 }
6103 6103 .fa-text-height:before {
6104 6104 content: "\f034";
6105 6105 }
6106 6106 .fa-text-width:before {
6107 6107 content: "\f035";
6108 6108 }
6109 6109 .fa-align-left:before {
6110 6110 content: "\f036";
6111 6111 }
6112 6112 .fa-align-center:before {
6113 6113 content: "\f037";
6114 6114 }
6115 6115 .fa-align-right:before {
6116 6116 content: "\f038";
6117 6117 }
6118 6118 .fa-align-justify:before {
6119 6119 content: "\f039";
6120 6120 }
6121 6121 .fa-list:before {
6122 6122 content: "\f03a";
6123 6123 }
6124 6124 .fa-dedent:before,
6125 6125 .fa-outdent:before {
6126 6126 content: "\f03b";
6127 6127 }
6128 6128 .fa-indent:before {
6129 6129 content: "\f03c";
6130 6130 }
6131 6131 .fa-video-camera:before {
6132 6132 content: "\f03d";
6133 6133 }
6134 6134 .fa-photo:before,
6135 6135 .fa-image:before,
6136 6136 .fa-picture-o:before {
6137 6137 content: "\f03e";
6138 6138 }
6139 6139 .fa-pencil:before {
6140 6140 content: "\f040";
6141 6141 }
6142 6142 .fa-map-marker:before {
6143 6143 content: "\f041";
6144 6144 }
6145 6145 .fa-adjust:before {
6146 6146 content: "\f042";
6147 6147 }
6148 6148 .fa-tint:before {
6149 6149 content: "\f043";
6150 6150 }
6151 6151 .fa-edit:before,
6152 6152 .fa-pencil-square-o:before {
6153 6153 content: "\f044";
6154 6154 }
6155 6155 .fa-share-square-o:before {
6156 6156 content: "\f045";
6157 6157 }
6158 6158 .fa-check-square-o:before {
6159 6159 content: "\f046";
6160 6160 }
6161 6161 .fa-arrows:before {
6162 6162 content: "\f047";
6163 6163 }
6164 6164 .fa-step-backward:before {
6165 6165 content: "\f048";
6166 6166 }
6167 6167 .fa-fast-backward:before {
6168 6168 content: "\f049";
6169 6169 }
6170 6170 .fa-backward:before {
6171 6171 content: "\f04a";
6172 6172 }
6173 6173 .fa-play:before {
6174 6174 content: "\f04b";
6175 6175 }
6176 6176 .fa-pause:before {
6177 6177 content: "\f04c";
6178 6178 }
6179 6179 .fa-stop:before {
6180 6180 content: "\f04d";
6181 6181 }
6182 6182 .fa-forward:before {
6183 6183 content: "\f04e";
6184 6184 }
6185 6185 .fa-fast-forward:before {
6186 6186 content: "\f050";
6187 6187 }
6188 6188 .fa-step-forward:before {
6189 6189 content: "\f051";
6190 6190 }
6191 6191 .fa-eject:before {
6192 6192 content: "\f052";
6193 6193 }
6194 6194 .fa-chevron-left:before {
6195 6195 content: "\f053";
6196 6196 }
6197 6197 .fa-chevron-right:before {
6198 6198 content: "\f054";
6199 6199 }
6200 6200 .fa-plus-circle:before {
6201 6201 content: "\f055";
6202 6202 }
6203 6203 .fa-minus-circle:before {
6204 6204 content: "\f056";
6205 6205 }
6206 6206 .fa-times-circle:before {
6207 6207 content: "\f057";
6208 6208 }
6209 6209 .fa-check-circle:before {
6210 6210 content: "\f058";
6211 6211 }
6212 6212 .fa-question-circle:before {
6213 6213 content: "\f059";
6214 6214 }
6215 6215 .fa-info-circle:before {
6216 6216 content: "\f05a";
6217 6217 }
6218 6218 .fa-crosshairs:before {
6219 6219 content: "\f05b";
6220 6220 }
6221 6221 .fa-times-circle-o:before {
6222 6222 content: "\f05c";
6223 6223 }
6224 6224 .fa-check-circle-o:before {
6225 6225 content: "\f05d";
6226 6226 }
6227 6227 .fa-ban:before {
6228 6228 content: "\f05e";
6229 6229 }
6230 6230 .fa-arrow-left:before {
6231 6231 content: "\f060";
6232 6232 }
6233 6233 .fa-arrow-right:before {
6234 6234 content: "\f061";
6235 6235 }
6236 6236 .fa-arrow-up:before {
6237 6237 content: "\f062";
6238 6238 }
6239 6239 .fa-arrow-down:before {
6240 6240 content: "\f063";
6241 6241 }
6242 6242 .fa-mail-forward:before,
6243 6243 .fa-share:before {
6244 6244 content: "\f064";
6245 6245 }
6246 6246 .fa-expand:before {
6247 6247 content: "\f065";
6248 6248 }
6249 6249 .fa-compress:before {
6250 6250 content: "\f066";
6251 6251 }
6252 6252 .fa-plus:before {
6253 6253 content: "\f067";
6254 6254 }
6255 6255 .fa-minus:before {
6256 6256 content: "\f068";
6257 6257 }
6258 6258 .fa-asterisk:before {
6259 6259 content: "\f069";
6260 6260 }
6261 6261 .fa-exclamation-circle:before {
6262 6262 content: "\f06a";
6263 6263 }
6264 6264 .fa-gift:before {
6265 6265 content: "\f06b";
6266 6266 }
6267 6267 .fa-leaf:before {
6268 6268 content: "\f06c";
6269 6269 }
6270 6270 .fa-fire:before {
6271 6271 content: "\f06d";
6272 6272 }
6273 6273 .fa-eye:before {
6274 6274 content: "\f06e";
6275 6275 }
6276 6276 .fa-eye-slash:before {
6277 6277 content: "\f070";
6278 6278 }
6279 6279 .fa-warning:before,
6280 6280 .fa-exclamation-triangle:before {
6281 6281 content: "\f071";
6282 6282 }
6283 6283 .fa-plane:before {
6284 6284 content: "\f072";
6285 6285 }
6286 6286 .fa-calendar:before {
6287 6287 content: "\f073";
6288 6288 }
6289 6289 .fa-random:before {
6290 6290 content: "\f074";
6291 6291 }
6292 6292 .fa-comment:before {
6293 6293 content: "\f075";
6294 6294 }
6295 6295 .fa-magnet:before {
6296 6296 content: "\f076";
6297 6297 }
6298 6298 .fa-chevron-up:before {
6299 6299 content: "\f077";
6300 6300 }
6301 6301 .fa-chevron-down:before {
6302 6302 content: "\f078";
6303 6303 }
6304 6304 .fa-retweet:before {
6305 6305 content: "\f079";
6306 6306 }
6307 6307 .fa-shopping-cart:before {
6308 6308 content: "\f07a";
6309 6309 }
6310 6310 .fa-folder:before {
6311 6311 content: "\f07b";
6312 6312 }
6313 6313 .fa-folder-open:before {
6314 6314 content: "\f07c";
6315 6315 }
6316 6316 .fa-arrows-v:before {
6317 6317 content: "\f07d";
6318 6318 }
6319 6319 .fa-arrows-h:before {
6320 6320 content: "\f07e";
6321 6321 }
6322 6322 .fa-bar-chart-o:before,
6323 6323 .fa-bar-chart:before {
6324 6324 content: "\f080";
6325 6325 }
6326 6326 .fa-twitter-square:before {
6327 6327 content: "\f081";
6328 6328 }
6329 6329 .fa-facebook-square:before {
6330 6330 content: "\f082";
6331 6331 }
6332 6332 .fa-camera-retro:before {
6333 6333 content: "\f083";
6334 6334 }
6335 6335 .fa-key:before {
6336 6336 content: "\f084";
6337 6337 }
6338 6338 .fa-gears:before,
6339 6339 .fa-cogs:before {
6340 6340 content: "\f085";
6341 6341 }
6342 6342 .fa-comments:before {
6343 6343 content: "\f086";
6344 6344 }
6345 6345 .fa-thumbs-o-up:before {
6346 6346 content: "\f087";
6347 6347 }
6348 6348 .fa-thumbs-o-down:before {
6349 6349 content: "\f088";
6350 6350 }
6351 6351 .fa-star-half:before {
6352 6352 content: "\f089";
6353 6353 }
6354 6354 .fa-heart-o:before {
6355 6355 content: "\f08a";
6356 6356 }
6357 6357 .fa-sign-out:before {
6358 6358 content: "\f08b";
6359 6359 }
6360 6360 .fa-linkedin-square:before {
6361 6361 content: "\f08c";
6362 6362 }
6363 6363 .fa-thumb-tack:before {
6364 6364 content: "\f08d";
6365 6365 }
6366 6366 .fa-external-link:before {
6367 6367 content: "\f08e";
6368 6368 }
6369 6369 .fa-sign-in:before {
6370 6370 content: "\f090";
6371 6371 }
6372 6372 .fa-trophy:before {
6373 6373 content: "\f091";
6374 6374 }
6375 6375 .fa-github-square:before {
6376 6376 content: "\f092";
6377 6377 }
6378 6378 .fa-upload:before {
6379 6379 content: "\f093";
6380 6380 }
6381 6381 .fa-lemon-o:before {
6382 6382 content: "\f094";
6383 6383 }
6384 6384 .fa-phone:before {
6385 6385 content: "\f095";
6386 6386 }
6387 6387 .fa-square-o:before {
6388 6388 content: "\f096";
6389 6389 }
6390 6390 .fa-bookmark-o:before {
6391 6391 content: "\f097";
6392 6392 }
6393 6393 .fa-phone-square:before {
6394 6394 content: "\f098";
6395 6395 }
6396 6396 .fa-twitter:before {
6397 6397 content: "\f099";
6398 6398 }
6399 6399 .fa-facebook:before {
6400 6400 content: "\f09a";
6401 6401 }
6402 6402 .fa-github:before {
6403 6403 content: "\f09b";
6404 6404 }
6405 6405 .fa-unlock:before {
6406 6406 content: "\f09c";
6407 6407 }
6408 6408 .fa-credit-card:before {
6409 6409 content: "\f09d";
6410 6410 }
6411 6411 .fa-rss:before {
6412 6412 content: "\f09e";
6413 6413 }
6414 6414 .fa-hdd-o:before {
6415 6415 content: "\f0a0";
6416 6416 }
6417 6417 .fa-bullhorn:before {
6418 6418 content: "\f0a1";
6419 6419 }
6420 6420 .fa-bell:before {
6421 6421 content: "\f0f3";
6422 6422 }
6423 6423 .fa-certificate:before {
6424 6424 content: "\f0a3";
6425 6425 }
6426 6426 .fa-hand-o-right:before {
6427 6427 content: "\f0a4";
6428 6428 }
6429 6429 .fa-hand-o-left:before {
6430 6430 content: "\f0a5";
6431 6431 }
6432 6432 .fa-hand-o-up:before {
6433 6433 content: "\f0a6";
6434 6434 }
6435 6435 .fa-hand-o-down:before {
6436 6436 content: "\f0a7";
6437 6437 }
6438 6438 .fa-arrow-circle-left:before {
6439 6439 content: "\f0a8";
6440 6440 }
6441 6441 .fa-arrow-circle-right:before {
6442 6442 content: "\f0a9";
6443 6443 }
6444 6444 .fa-arrow-circle-up:before {
6445 6445 content: "\f0aa";
6446 6446 }
6447 6447 .fa-arrow-circle-down:before {
6448 6448 content: "\f0ab";
6449 6449 }
6450 6450 .fa-globe:before {
6451 6451 content: "\f0ac";
6452 6452 }
6453 6453 .fa-wrench:before {
6454 6454 content: "\f0ad";
6455 6455 }
6456 6456 .fa-tasks:before {
6457 6457 content: "\f0ae";
6458 6458 }
6459 6459 .fa-filter:before {
6460 6460 content: "\f0b0";
6461 6461 }
6462 6462 .fa-briefcase:before {
6463 6463 content: "\f0b1";
6464 6464 }
6465 6465 .fa-arrows-alt:before {
6466 6466 content: "\f0b2";
6467 6467 }
6468 6468 .fa-group:before,
6469 6469 .fa-users:before {
6470 6470 content: "\f0c0";
6471 6471 }
6472 6472 .fa-chain:before,
6473 6473 .fa-link:before {
6474 6474 content: "\f0c1";
6475 6475 }
6476 6476 .fa-cloud:before {
6477 6477 content: "\f0c2";
6478 6478 }
6479 6479 .fa-flask:before {
6480 6480 content: "\f0c3";
6481 6481 }
6482 6482 .fa-cut:before,
6483 6483 .fa-scissors:before {
6484 6484 content: "\f0c4";
6485 6485 }
6486 6486 .fa-copy:before,
6487 6487 .fa-files-o:before {
6488 6488 content: "\f0c5";
6489 6489 }
6490 6490 .fa-paperclip:before {
6491 6491 content: "\f0c6";
6492 6492 }
6493 6493 .fa-save:before,
6494 6494 .fa-floppy-o:before {
6495 6495 content: "\f0c7";
6496 6496 }
6497 6497 .fa-square:before {
6498 6498 content: "\f0c8";
6499 6499 }
6500 6500 .fa-navicon:before,
6501 6501 .fa-reorder:before,
6502 6502 .fa-bars:before {
6503 6503 content: "\f0c9";
6504 6504 }
6505 6505 .fa-list-ul:before {
6506 6506 content: "\f0ca";
6507 6507 }
6508 6508 .fa-list-ol:before {
6509 6509 content: "\f0cb";
6510 6510 }
6511 6511 .fa-strikethrough:before {
6512 6512 content: "\f0cc";
6513 6513 }
6514 6514 .fa-underline:before {
6515 6515 content: "\f0cd";
6516 6516 }
6517 6517 .fa-table:before {
6518 6518 content: "\f0ce";
6519 6519 }
6520 6520 .fa-magic:before {
6521 6521 content: "\f0d0";
6522 6522 }
6523 6523 .fa-truck:before {
6524 6524 content: "\f0d1";
6525 6525 }
6526 6526 .fa-pinterest:before {
6527 6527 content: "\f0d2";
6528 6528 }
6529 6529 .fa-pinterest-square:before {
6530 6530 content: "\f0d3";
6531 6531 }
6532 6532 .fa-google-plus-square:before {
6533 6533 content: "\f0d4";
6534 6534 }
6535 6535 .fa-google-plus:before {
6536 6536 content: "\f0d5";
6537 6537 }
6538 6538 .fa-money:before {
6539 6539 content: "\f0d6";
6540 6540 }
6541 6541 .fa-caret-down:before {
6542 6542 content: "\f0d7";
6543 6543 }
6544 6544 .fa-caret-up:before {
6545 6545 content: "\f0d8";
6546 6546 }
6547 6547 .fa-caret-left:before {
6548 6548 content: "\f0d9";
6549 6549 }
6550 6550 .fa-caret-right:before {
6551 6551 content: "\f0da";
6552 6552 }
6553 6553 .fa-columns:before {
6554 6554 content: "\f0db";
6555 6555 }
6556 6556 .fa-unsorted:before,
6557 6557 .fa-sort:before {
6558 6558 content: "\f0dc";
6559 6559 }
6560 6560 .fa-sort-down:before,
6561 6561 .fa-sort-desc:before {
6562 6562 content: "\f0dd";
6563 6563 }
6564 6564 .fa-sort-up:before,
6565 6565 .fa-sort-asc:before {
6566 6566 content: "\f0de";
6567 6567 }
6568 6568 .fa-envelope:before {
6569 6569 content: "\f0e0";
6570 6570 }
6571 6571 .fa-linkedin:before {
6572 6572 content: "\f0e1";
6573 6573 }
6574 6574 .fa-rotate-left:before,
6575 6575 .fa-undo:before {
6576 6576 content: "\f0e2";
6577 6577 }
6578 6578 .fa-legal:before,
6579 6579 .fa-gavel:before {
6580 6580 content: "\f0e3";
6581 6581 }
6582 6582 .fa-dashboard:before,
6583 6583 .fa-tachometer:before {
6584 6584 content: "\f0e4";
6585 6585 }
6586 6586 .fa-comment-o:before {
6587 6587 content: "\f0e5";
6588 6588 }
6589 6589 .fa-comments-o:before {
6590 6590 content: "\f0e6";
6591 6591 }
6592 6592 .fa-flash:before,
6593 6593 .fa-bolt:before {
6594 6594 content: "\f0e7";
6595 6595 }
6596 6596 .fa-sitemap:before {
6597 6597 content: "\f0e8";
6598 6598 }
6599 6599 .fa-umbrella:before {
6600 6600 content: "\f0e9";
6601 6601 }
6602 6602 .fa-paste:before,
6603 6603 .fa-clipboard:before {
6604 6604 content: "\f0ea";
6605 6605 }
6606 6606 .fa-lightbulb-o:before {
6607 6607 content: "\f0eb";
6608 6608 }
6609 6609 .fa-exchange:before {
6610 6610 content: "\f0ec";
6611 6611 }
6612 6612 .fa-cloud-download:before {
6613 6613 content: "\f0ed";
6614 6614 }
6615 6615 .fa-cloud-upload:before {
6616 6616 content: "\f0ee";
6617 6617 }
6618 6618 .fa-user-md:before {
6619 6619 content: "\f0f0";
6620 6620 }
6621 6621 .fa-stethoscope:before {
6622 6622 content: "\f0f1";
6623 6623 }
6624 6624 .fa-suitcase:before {
6625 6625 content: "\f0f2";
6626 6626 }
6627 6627 .fa-bell-o:before {
6628 6628 content: "\f0a2";
6629 6629 }
6630 6630 .fa-coffee:before {
6631 6631 content: "\f0f4";
6632 6632 }
6633 6633 .fa-cutlery:before {
6634 6634 content: "\f0f5";
6635 6635 }
6636 6636 .fa-file-text-o:before {
6637 6637 content: "\f0f6";
6638 6638 }
6639 6639 .fa-building-o:before {
6640 6640 content: "\f0f7";
6641 6641 }
6642 6642 .fa-hospital-o:before {
6643 6643 content: "\f0f8";
6644 6644 }
6645 6645 .fa-ambulance:before {
6646 6646 content: "\f0f9";
6647 6647 }
6648 6648 .fa-medkit:before {
6649 6649 content: "\f0fa";
6650 6650 }
6651 6651 .fa-fighter-jet:before {
6652 6652 content: "\f0fb";
6653 6653 }
6654 6654 .fa-beer:before {
6655 6655 content: "\f0fc";
6656 6656 }
6657 6657 .fa-h-square:before {
6658 6658 content: "\f0fd";
6659 6659 }
6660 6660 .fa-plus-square:before {
6661 6661 content: "\f0fe";
6662 6662 }
6663 6663 .fa-angle-double-left:before {
6664 6664 content: "\f100";
6665 6665 }
6666 6666 .fa-angle-double-right:before {
6667 6667 content: "\f101";
6668 6668 }
6669 6669 .fa-angle-double-up:before {
6670 6670 content: "\f102";
6671 6671 }
6672 6672 .fa-angle-double-down:before {
6673 6673 content: "\f103";
6674 6674 }
6675 6675 .fa-angle-left:before {
6676 6676 content: "\f104";
6677 6677 }
6678 6678 .fa-angle-right:before {
6679 6679 content: "\f105";
6680 6680 }
6681 6681 .fa-angle-up:before {
6682 6682 content: "\f106";
6683 6683 }
6684 6684 .fa-angle-down:before {
6685 6685 content: "\f107";
6686 6686 }
6687 6687 .fa-desktop:before {
6688 6688 content: "\f108";
6689 6689 }
6690 6690 .fa-laptop:before {
6691 6691 content: "\f109";
6692 6692 }
6693 6693 .fa-tablet:before {
6694 6694 content: "\f10a";
6695 6695 }
6696 6696 .fa-mobile-phone:before,
6697 6697 .fa-mobile:before {
6698 6698 content: "\f10b";
6699 6699 }
6700 6700 .fa-circle-o:before {
6701 6701 content: "\f10c";
6702 6702 }
6703 6703 .fa-quote-left:before {
6704 6704 content: "\f10d";
6705 6705 }
6706 6706 .fa-quote-right:before {
6707 6707 content: "\f10e";
6708 6708 }
6709 6709 .fa-spinner:before {
6710 6710 content: "\f110";
6711 6711 }
6712 6712 .fa-circle:before {
6713 6713 content: "\f111";
6714 6714 }
6715 6715 .fa-mail-reply:before,
6716 6716 .fa-reply:before {
6717 6717 content: "\f112";
6718 6718 }
6719 6719 .fa-github-alt:before {
6720 6720 content: "\f113";
6721 6721 }
6722 6722 .fa-folder-o:before {
6723 6723 content: "\f114";
6724 6724 }
6725 6725 .fa-folder-open-o:before {
6726 6726 content: "\f115";
6727 6727 }
6728 6728 .fa-smile-o:before {
6729 6729 content: "\f118";
6730 6730 }
6731 6731 .fa-frown-o:before {
6732 6732 content: "\f119";
6733 6733 }
6734 6734 .fa-meh-o:before {
6735 6735 content: "\f11a";
6736 6736 }
6737 6737 .fa-gamepad:before {
6738 6738 content: "\f11b";
6739 6739 }
6740 6740 .fa-keyboard-o:before {
6741 6741 content: "\f11c";
6742 6742 }
6743 6743 .fa-flag-o:before {
6744 6744 content: "\f11d";
6745 6745 }
6746 6746 .fa-flag-checkered:before {
6747 6747 content: "\f11e";
6748 6748 }
6749 6749 .fa-terminal:before {
6750 6750 content: "\f120";
6751 6751 }
6752 6752 .fa-code:before {
6753 6753 content: "\f121";
6754 6754 }
6755 6755 .fa-mail-reply-all:before,
6756 6756 .fa-reply-all:before {
6757 6757 content: "\f122";
6758 6758 }
6759 6759 .fa-star-half-empty:before,
6760 6760 .fa-star-half-full:before,
6761 6761 .fa-star-half-o:before {
6762 6762 content: "\f123";
6763 6763 }
6764 6764 .fa-location-arrow:before {
6765 6765 content: "\f124";
6766 6766 }
6767 6767 .fa-crop:before {
6768 6768 content: "\f125";
6769 6769 }
6770 6770 .fa-code-fork:before {
6771 6771 content: "\f126";
6772 6772 }
6773 6773 .fa-unlink:before,
6774 6774 .fa-chain-broken:before {
6775 6775 content: "\f127";
6776 6776 }
6777 6777 .fa-question:before {
6778 6778 content: "\f128";
6779 6779 }
6780 6780 .fa-info:before {
6781 6781 content: "\f129";
6782 6782 }
6783 6783 .fa-exclamation:before {
6784 6784 content: "\f12a";
6785 6785 }
6786 6786 .fa-superscript:before {
6787 6787 content: "\f12b";
6788 6788 }
6789 6789 .fa-subscript:before {
6790 6790 content: "\f12c";
6791 6791 }
6792 6792 .fa-eraser:before {
6793 6793 content: "\f12d";
6794 6794 }
6795 6795 .fa-puzzle-piece:before {
6796 6796 content: "\f12e";
6797 6797 }
6798 6798 .fa-microphone:before {
6799 6799 content: "\f130";
6800 6800 }
6801 6801 .fa-microphone-slash:before {
6802 6802 content: "\f131";
6803 6803 }
6804 6804 .fa-shield:before {
6805 6805 content: "\f132";
6806 6806 }
6807 6807 .fa-calendar-o:before {
6808 6808 content: "\f133";
6809 6809 }
6810 6810 .fa-fire-extinguisher:before {
6811 6811 content: "\f134";
6812 6812 }
6813 6813 .fa-rocket:before {
6814 6814 content: "\f135";
6815 6815 }
6816 6816 .fa-maxcdn:before {
6817 6817 content: "\f136";
6818 6818 }
6819 6819 .fa-chevron-circle-left:before {
6820 6820 content: "\f137";
6821 6821 }
6822 6822 .fa-chevron-circle-right:before {
6823 6823 content: "\f138";
6824 6824 }
6825 6825 .fa-chevron-circle-up:before {
6826 6826 content: "\f139";
6827 6827 }
6828 6828 .fa-chevron-circle-down:before {
6829 6829 content: "\f13a";
6830 6830 }
6831 6831 .fa-html5:before {
6832 6832 content: "\f13b";
6833 6833 }
6834 6834 .fa-css3:before {
6835 6835 content: "\f13c";
6836 6836 }
6837 6837 .fa-anchor:before {
6838 6838 content: "\f13d";
6839 6839 }
6840 6840 .fa-unlock-alt:before {
6841 6841 content: "\f13e";
6842 6842 }
6843 6843 .fa-bullseye:before {
6844 6844 content: "\f140";
6845 6845 }
6846 6846 .fa-ellipsis-h:before {
6847 6847 content: "\f141";
6848 6848 }
6849 6849 .fa-ellipsis-v:before {
6850 6850 content: "\f142";
6851 6851 }
6852 6852 .fa-rss-square:before {
6853 6853 content: "\f143";
6854 6854 }
6855 6855 .fa-play-circle:before {
6856 6856 content: "\f144";
6857 6857 }
6858 6858 .fa-ticket:before {
6859 6859 content: "\f145";
6860 6860 }
6861 6861 .fa-minus-square:before {
6862 6862 content: "\f146";
6863 6863 }
6864 6864 .fa-minus-square-o:before {
6865 6865 content: "\f147";
6866 6866 }
6867 6867 .fa-level-up:before {
6868 6868 content: "\f148";
6869 6869 }
6870 6870 .fa-level-down:before {
6871 6871 content: "\f149";
6872 6872 }
6873 6873 .fa-check-square:before {
6874 6874 content: "\f14a";
6875 6875 }
6876 6876 .fa-pencil-square:before {
6877 6877 content: "\f14b";
6878 6878 }
6879 6879 .fa-external-link-square:before {
6880 6880 content: "\f14c";
6881 6881 }
6882 6882 .fa-share-square:before {
6883 6883 content: "\f14d";
6884 6884 }
6885 6885 .fa-compass:before {
6886 6886 content: "\f14e";
6887 6887 }
6888 6888 .fa-toggle-down:before,
6889 6889 .fa-caret-square-o-down:before {
6890 6890 content: "\f150";
6891 6891 }
6892 6892 .fa-toggle-up:before,
6893 6893 .fa-caret-square-o-up:before {
6894 6894 content: "\f151";
6895 6895 }
6896 6896 .fa-toggle-right:before,
6897 6897 .fa-caret-square-o-right:before {
6898 6898 content: "\f152";
6899 6899 }
6900 6900 .fa-euro:before,
6901 6901 .fa-eur:before {
6902 6902 content: "\f153";
6903 6903 }
6904 6904 .fa-gbp:before {
6905 6905 content: "\f154";
6906 6906 }
6907 6907 .fa-dollar:before,
6908 6908 .fa-usd:before {
6909 6909 content: "\f155";
6910 6910 }
6911 6911 .fa-rupee:before,
6912 6912 .fa-inr:before {
6913 6913 content: "\f156";
6914 6914 }
6915 6915 .fa-cny:before,
6916 6916 .fa-rmb:before,
6917 6917 .fa-yen:before,
6918 6918 .fa-jpy:before {
6919 6919 content: "\f157";
6920 6920 }
6921 6921 .fa-ruble:before,
6922 6922 .fa-rouble:before,
6923 6923 .fa-rub:before {
6924 6924 content: "\f158";
6925 6925 }
6926 6926 .fa-won:before,
6927 6927 .fa-krw:before {
6928 6928 content: "\f159";
6929 6929 }
6930 6930 .fa-bitcoin:before,
6931 6931 .fa-btc:before {
6932 6932 content: "\f15a";
6933 6933 }
6934 6934 .fa-file:before {
6935 6935 content: "\f15b";
6936 6936 }
6937 6937 .fa-file-text:before {
6938 6938 content: "\f15c";
6939 6939 }
6940 6940 .fa-sort-alpha-asc:before {
6941 6941 content: "\f15d";
6942 6942 }
6943 6943 .fa-sort-alpha-desc:before {
6944 6944 content: "\f15e";
6945 6945 }
6946 6946 .fa-sort-amount-asc:before {
6947 6947 content: "\f160";
6948 6948 }
6949 6949 .fa-sort-amount-desc:before {
6950 6950 content: "\f161";
6951 6951 }
6952 6952 .fa-sort-numeric-asc:before {
6953 6953 content: "\f162";
6954 6954 }
6955 6955 .fa-sort-numeric-desc:before {
6956 6956 content: "\f163";
6957 6957 }
6958 6958 .fa-thumbs-up:before {
6959 6959 content: "\f164";
6960 6960 }
6961 6961 .fa-thumbs-down:before {
6962 6962 content: "\f165";
6963 6963 }
6964 6964 .fa-youtube-square:before {
6965 6965 content: "\f166";
6966 6966 }
6967 6967 .fa-youtube:before {
6968 6968 content: "\f167";
6969 6969 }
6970 6970 .fa-xing:before {
6971 6971 content: "\f168";
6972 6972 }
6973 6973 .fa-xing-square:before {
6974 6974 content: "\f169";
6975 6975 }
6976 6976 .fa-youtube-play:before {
6977 6977 content: "\f16a";
6978 6978 }
6979 6979 .fa-dropbox:before {
6980 6980 content: "\f16b";
6981 6981 }
6982 6982 .fa-stack-overflow:before {
6983 6983 content: "\f16c";
6984 6984 }
6985 6985 .fa-instagram:before {
6986 6986 content: "\f16d";
6987 6987 }
6988 6988 .fa-flickr:before {
6989 6989 content: "\f16e";
6990 6990 }
6991 6991 .fa-adn:before {
6992 6992 content: "\f170";
6993 6993 }
6994 6994 .fa-bitbucket:before {
6995 6995 content: "\f171";
6996 6996 }
6997 6997 .fa-bitbucket-square:before {
6998 6998 content: "\f172";
6999 6999 }
7000 7000 .fa-tumblr:before {
7001 7001 content: "\f173";
7002 7002 }
7003 7003 .fa-tumblr-square:before {
7004 7004 content: "\f174";
7005 7005 }
7006 7006 .fa-long-arrow-down:before {
7007 7007 content: "\f175";
7008 7008 }
7009 7009 .fa-long-arrow-up:before {
7010 7010 content: "\f176";
7011 7011 }
7012 7012 .fa-long-arrow-left:before {
7013 7013 content: "\f177";
7014 7014 }
7015 7015 .fa-long-arrow-right:before {
7016 7016 content: "\f178";
7017 7017 }
7018 7018 .fa-apple:before {
7019 7019 content: "\f179";
7020 7020 }
7021 7021 .fa-windows:before {
7022 7022 content: "\f17a";
7023 7023 }
7024 7024 .fa-android:before {
7025 7025 content: "\f17b";
7026 7026 }
7027 7027 .fa-linux:before {
7028 7028 content: "\f17c";
7029 7029 }
7030 7030 .fa-dribbble:before {
7031 7031 content: "\f17d";
7032 7032 }
7033 7033 .fa-skype:before {
7034 7034 content: "\f17e";
7035 7035 }
7036 7036 .fa-foursquare:before {
7037 7037 content: "\f180";
7038 7038 }
7039 7039 .fa-trello:before {
7040 7040 content: "\f181";
7041 7041 }
7042 7042 .fa-female:before {
7043 7043 content: "\f182";
7044 7044 }
7045 7045 .fa-male:before {
7046 7046 content: "\f183";
7047 7047 }
7048 7048 .fa-gittip:before {
7049 7049 content: "\f184";
7050 7050 }
7051 7051 .fa-sun-o:before {
7052 7052 content: "\f185";
7053 7053 }
7054 7054 .fa-moon-o:before {
7055 7055 content: "\f186";
7056 7056 }
7057 7057 .fa-archive:before {
7058 7058 content: "\f187";
7059 7059 }
7060 7060 .fa-bug:before {
7061 7061 content: "\f188";
7062 7062 }
7063 7063 .fa-vk:before {
7064 7064 content: "\f189";
7065 7065 }
7066 7066 .fa-weibo:before {
7067 7067 content: "\f18a";
7068 7068 }
7069 7069 .fa-renren:before {
7070 7070 content: "\f18b";
7071 7071 }
7072 7072 .fa-pagelines:before {
7073 7073 content: "\f18c";
7074 7074 }
7075 7075 .fa-stack-exchange:before {
7076 7076 content: "\f18d";
7077 7077 }
7078 7078 .fa-arrow-circle-o-right:before {
7079 7079 content: "\f18e";
7080 7080 }
7081 7081 .fa-arrow-circle-o-left:before {
7082 7082 content: "\f190";
7083 7083 }
7084 7084 .fa-toggle-left:before,
7085 7085 .fa-caret-square-o-left:before {
7086 7086 content: "\f191";
7087 7087 }
7088 7088 .fa-dot-circle-o:before {
7089 7089 content: "\f192";
7090 7090 }
7091 7091 .fa-wheelchair:before {
7092 7092 content: "\f193";
7093 7093 }
7094 7094 .fa-vimeo-square:before {
7095 7095 content: "\f194";
7096 7096 }
7097 7097 .fa-turkish-lira:before,
7098 7098 .fa-try:before {
7099 7099 content: "\f195";
7100 7100 }
7101 7101 .fa-plus-square-o:before {
7102 7102 content: "\f196";
7103 7103 }
7104 7104 .fa-space-shuttle:before {
7105 7105 content: "\f197";
7106 7106 }
7107 7107 .fa-slack:before {
7108 7108 content: "\f198";
7109 7109 }
7110 7110 .fa-envelope-square:before {
7111 7111 content: "\f199";
7112 7112 }
7113 7113 .fa-wordpress:before {
7114 7114 content: "\f19a";
7115 7115 }
7116 7116 .fa-openid:before {
7117 7117 content: "\f19b";
7118 7118 }
7119 7119 .fa-institution:before,
7120 7120 .fa-bank:before,
7121 7121 .fa-university:before {
7122 7122 content: "\f19c";
7123 7123 }
7124 7124 .fa-mortar-board:before,
7125 7125 .fa-graduation-cap:before {
7126 7126 content: "\f19d";
7127 7127 }
7128 7128 .fa-yahoo:before {
7129 7129 content: "\f19e";
7130 7130 }
7131 7131 .fa-google:before {
7132 7132 content: "\f1a0";
7133 7133 }
7134 7134 .fa-reddit:before {
7135 7135 content: "\f1a1";
7136 7136 }
7137 7137 .fa-reddit-square:before {
7138 7138 content: "\f1a2";
7139 7139 }
7140 7140 .fa-stumbleupon-circle:before {
7141 7141 content: "\f1a3";
7142 7142 }
7143 7143 .fa-stumbleupon:before {
7144 7144 content: "\f1a4";
7145 7145 }
7146 7146 .fa-delicious:before {
7147 7147 content: "\f1a5";
7148 7148 }
7149 7149 .fa-digg:before {
7150 7150 content: "\f1a6";
7151 7151 }
7152 7152 .fa-pied-piper:before {
7153 7153 content: "\f1a7";
7154 7154 }
7155 7155 .fa-pied-piper-alt:before {
7156 7156 content: "\f1a8";
7157 7157 }
7158 7158 .fa-drupal:before {
7159 7159 content: "\f1a9";
7160 7160 }
7161 7161 .fa-joomla:before {
7162 7162 content: "\f1aa";
7163 7163 }
7164 7164 .fa-language:before {
7165 7165 content: "\f1ab";
7166 7166 }
7167 7167 .fa-fax:before {
7168 7168 content: "\f1ac";
7169 7169 }
7170 7170 .fa-building:before {
7171 7171 content: "\f1ad";
7172 7172 }
7173 7173 .fa-child:before {
7174 7174 content: "\f1ae";
7175 7175 }
7176 7176 .fa-paw:before {
7177 7177 content: "\f1b0";
7178 7178 }
7179 7179 .fa-spoon:before {
7180 7180 content: "\f1b1";
7181 7181 }
7182 7182 .fa-cube:before {
7183 7183 content: "\f1b2";
7184 7184 }
7185 7185 .fa-cubes:before {
7186 7186 content: "\f1b3";
7187 7187 }
7188 7188 .fa-behance:before {
7189 7189 content: "\f1b4";
7190 7190 }
7191 7191 .fa-behance-square:before {
7192 7192 content: "\f1b5";
7193 7193 }
7194 7194 .fa-steam:before {
7195 7195 content: "\f1b6";
7196 7196 }
7197 7197 .fa-steam-square:before {
7198 7198 content: "\f1b7";
7199 7199 }
7200 7200 .fa-recycle:before {
7201 7201 content: "\f1b8";
7202 7202 }
7203 7203 .fa-automobile:before,
7204 7204 .fa-car:before {
7205 7205 content: "\f1b9";
7206 7206 }
7207 7207 .fa-cab:before,
7208 7208 .fa-taxi:before {
7209 7209 content: "\f1ba";
7210 7210 }
7211 7211 .fa-tree:before {
7212 7212 content: "\f1bb";
7213 7213 }
7214 7214 .fa-spotify:before {
7215 7215 content: "\f1bc";
7216 7216 }
7217 7217 .fa-deviantart:before {
7218 7218 content: "\f1bd";
7219 7219 }
7220 7220 .fa-soundcloud:before {
7221 7221 content: "\f1be";
7222 7222 }
7223 7223 .fa-database:before {
7224 7224 content: "\f1c0";
7225 7225 }
7226 7226 .fa-file-pdf-o:before {
7227 7227 content: "\f1c1";
7228 7228 }
7229 7229 .fa-file-word-o:before {
7230 7230 content: "\f1c2";
7231 7231 }
7232 7232 .fa-file-excel-o:before {
7233 7233 content: "\f1c3";
7234 7234 }
7235 7235 .fa-file-powerpoint-o:before {
7236 7236 content: "\f1c4";
7237 7237 }
7238 7238 .fa-file-photo-o:before,
7239 7239 .fa-file-picture-o:before,
7240 7240 .fa-file-image-o:before {
7241 7241 content: "\f1c5";
7242 7242 }
7243 7243 .fa-file-zip-o:before,
7244 7244 .fa-file-archive-o:before {
7245 7245 content: "\f1c6";
7246 7246 }
7247 7247 .fa-file-sound-o:before,
7248 7248 .fa-file-audio-o:before {
7249 7249 content: "\f1c7";
7250 7250 }
7251 7251 .fa-file-movie-o:before,
7252 7252 .fa-file-video-o:before {
7253 7253 content: "\f1c8";
7254 7254 }
7255 7255 .fa-file-code-o:before {
7256 7256 content: "\f1c9";
7257 7257 }
7258 7258 .fa-vine:before {
7259 7259 content: "\f1ca";
7260 7260 }
7261 7261 .fa-codepen:before {
7262 7262 content: "\f1cb";
7263 7263 }
7264 7264 .fa-jsfiddle:before {
7265 7265 content: "\f1cc";
7266 7266 }
7267 7267 .fa-life-bouy:before,
7268 7268 .fa-life-buoy:before,
7269 7269 .fa-life-saver:before,
7270 7270 .fa-support:before,
7271 7271 .fa-life-ring:before {
7272 7272 content: "\f1cd";
7273 7273 }
7274 7274 .fa-circle-o-notch:before {
7275 7275 content: "\f1ce";
7276 7276 }
7277 7277 .fa-ra:before,
7278 7278 .fa-rebel:before {
7279 7279 content: "\f1d0";
7280 7280 }
7281 7281 .fa-ge:before,
7282 7282 .fa-empire:before {
7283 7283 content: "\f1d1";
7284 7284 }
7285 7285 .fa-git-square:before {
7286 7286 content: "\f1d2";
7287 7287 }
7288 7288 .fa-git:before {
7289 7289 content: "\f1d3";
7290 7290 }
7291 7291 .fa-hacker-news:before {
7292 7292 content: "\f1d4";
7293 7293 }
7294 7294 .fa-tencent-weibo:before {
7295 7295 content: "\f1d5";
7296 7296 }
7297 7297 .fa-qq:before {
7298 7298 content: "\f1d6";
7299 7299 }
7300 7300 .fa-wechat:before,
7301 7301 .fa-weixin:before {
7302 7302 content: "\f1d7";
7303 7303 }
7304 7304 .fa-send:before,
7305 7305 .fa-paper-plane:before {
7306 7306 content: "\f1d8";
7307 7307 }
7308 7308 .fa-send-o:before,
7309 7309 .fa-paper-plane-o:before {
7310 7310 content: "\f1d9";
7311 7311 }
7312 7312 .fa-history:before {
7313 7313 content: "\f1da";
7314 7314 }
7315 7315 .fa-circle-thin:before {
7316 7316 content: "\f1db";
7317 7317 }
7318 7318 .fa-header:before {
7319 7319 content: "\f1dc";
7320 7320 }
7321 7321 .fa-paragraph:before {
7322 7322 content: "\f1dd";
7323 7323 }
7324 7324 .fa-sliders:before {
7325 7325 content: "\f1de";
7326 7326 }
7327 7327 .fa-share-alt:before {
7328 7328 content: "\f1e0";
7329 7329 }
7330 7330 .fa-share-alt-square:before {
7331 7331 content: "\f1e1";
7332 7332 }
7333 7333 .fa-bomb:before {
7334 7334 content: "\f1e2";
7335 7335 }
7336 7336 .fa-soccer-ball-o:before,
7337 7337 .fa-futbol-o:before {
7338 7338 content: "\f1e3";
7339 7339 }
7340 7340 .fa-tty:before {
7341 7341 content: "\f1e4";
7342 7342 }
7343 7343 .fa-binoculars:before {
7344 7344 content: "\f1e5";
7345 7345 }
7346 7346 .fa-plug:before {
7347 7347 content: "\f1e6";
7348 7348 }
7349 7349 .fa-slideshare:before {
7350 7350 content: "\f1e7";
7351 7351 }
7352 7352 .fa-twitch:before {
7353 7353 content: "\f1e8";
7354 7354 }
7355 7355 .fa-yelp:before {
7356 7356 content: "\f1e9";
7357 7357 }
7358 7358 .fa-newspaper-o:before {
7359 7359 content: "\f1ea";
7360 7360 }
7361 7361 .fa-wifi:before {
7362 7362 content: "\f1eb";
7363 7363 }
7364 7364 .fa-calculator:before {
7365 7365 content: "\f1ec";
7366 7366 }
7367 7367 .fa-paypal:before {
7368 7368 content: "\f1ed";
7369 7369 }
7370 7370 .fa-google-wallet:before {
7371 7371 content: "\f1ee";
7372 7372 }
7373 7373 .fa-cc-visa:before {
7374 7374 content: "\f1f0";
7375 7375 }
7376 7376 .fa-cc-mastercard:before {
7377 7377 content: "\f1f1";
7378 7378 }
7379 7379 .fa-cc-discover:before {
7380 7380 content: "\f1f2";
7381 7381 }
7382 7382 .fa-cc-amex:before {
7383 7383 content: "\f1f3";
7384 7384 }
7385 7385 .fa-cc-paypal:before {
7386 7386 content: "\f1f4";
7387 7387 }
7388 7388 .fa-cc-stripe:before {
7389 7389 content: "\f1f5";
7390 7390 }
7391 7391 .fa-bell-slash:before {
7392 7392 content: "\f1f6";
7393 7393 }
7394 7394 .fa-bell-slash-o:before {
7395 7395 content: "\f1f7";
7396 7396 }
7397 7397 .fa-trash:before {
7398 7398 content: "\f1f8";
7399 7399 }
7400 7400 .fa-copyright:before {
7401 7401 content: "\f1f9";
7402 7402 }
7403 7403 .fa-at:before {
7404 7404 content: "\f1fa";
7405 7405 }
7406 7406 .fa-eyedropper:before {
7407 7407 content: "\f1fb";
7408 7408 }
7409 7409 .fa-paint-brush:before {
7410 7410 content: "\f1fc";
7411 7411 }
7412 7412 .fa-birthday-cake:before {
7413 7413 content: "\f1fd";
7414 7414 }
7415 7415 .fa-area-chart:before {
7416 7416 content: "\f1fe";
7417 7417 }
7418 7418 .fa-pie-chart:before {
7419 7419 content: "\f200";
7420 7420 }
7421 7421 .fa-line-chart:before {
7422 7422 content: "\f201";
7423 7423 }
7424 7424 .fa-lastfm:before {
7425 7425 content: "\f202";
7426 7426 }
7427 7427 .fa-lastfm-square:before {
7428 7428 content: "\f203";
7429 7429 }
7430 7430 .fa-toggle-off:before {
7431 7431 content: "\f204";
7432 7432 }
7433 7433 .fa-toggle-on:before {
7434 7434 content: "\f205";
7435 7435 }
7436 7436 .fa-bicycle:before {
7437 7437 content: "\f206";
7438 7438 }
7439 7439 .fa-bus:before {
7440 7440 content: "\f207";
7441 7441 }
7442 7442 .fa-ioxhost:before {
7443 7443 content: "\f208";
7444 7444 }
7445 7445 .fa-angellist:before {
7446 7446 content: "\f209";
7447 7447 }
7448 7448 .fa-cc:before {
7449 7449 content: "\f20a";
7450 7450 }
7451 7451 .fa-shekel:before,
7452 7452 .fa-sheqel:before,
7453 7453 .fa-ils:before {
7454 7454 content: "\f20b";
7455 7455 }
7456 7456 .fa-meanpath:before {
7457 7457 content: "\f20c";
7458 7458 }
7459 7459 /*!
7460 7460 *
7461 7461 * IPython base
7462 7462 *
7463 7463 */
7464 7464 .modal.fade .modal-dialog {
7465 7465 -webkit-transform: translate(0, 0);
7466 7466 -ms-transform: translate(0, 0);
7467 7467 transform: translate(0, 0);
7468 7468 }
7469 7469 code {
7470 7470 color: #000000;
7471 7471 }
7472 7472 pre {
7473 7473 font-size: inherit;
7474 7474 line-height: inherit;
7475 7475 }
7476 7476 label {
7477 7477 font-weight: normal;
7478 7478 }
7479 7479 .border-box-sizing {
7480 7480 box-sizing: border-box;
7481 7481 -moz-box-sizing: border-box;
7482 7482 -webkit-box-sizing: border-box;
7483 7483 }
7484 7484 .corner-all {
7485 7485 border-radius: 4px;
7486 7486 }
7487 7487 .no-padding {
7488 7488 padding: 0px;
7489 7489 }
7490 7490 /* Flexible box model classes */
7491 7491 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
7492 7492 /* This file is a compatability layer. It allows the usage of flexible box
7493 7493 model layouts accross multiple browsers, including older browsers. The newest,
7494 7494 universal implementation of the flexible box model is used when available (see
7495 7495 `Modern browsers` comments below). Browsers that are known to implement this
7496 7496 new spec completely include:
7497 7497
7498 7498 Firefox 28.0+
7499 7499 Chrome 29.0+
7500 7500 Internet Explorer 11+
7501 7501 Opera 17.0+
7502 7502
7503 7503 Browsers not listed, including Safari, are supported via the styling under the
7504 7504 `Old browsers` comments below.
7505 7505 */
7506 7506 .hbox {
7507 7507 /* Old browsers */
7508 7508 display: -webkit-box;
7509 7509 -webkit-box-orient: horizontal;
7510 7510 -webkit-box-align: stretch;
7511 7511 display: -moz-box;
7512 7512 -moz-box-orient: horizontal;
7513 7513 -moz-box-align: stretch;
7514 7514 display: box;
7515 7515 box-orient: horizontal;
7516 7516 box-align: stretch;
7517 7517 /* Modern browsers */
7518 7518 display: flex;
7519 7519 flex-direction: row;
7520 7520 align-items: stretch;
7521 7521 }
7522 7522 .hbox > * {
7523 7523 /* Old browsers */
7524 7524 -webkit-box-flex: 0;
7525 7525 -moz-box-flex: 0;
7526 7526 box-flex: 0;
7527 7527 /* Modern browsers */
7528 7528 flex: none;
7529 7529 }
7530 7530 .vbox {
7531 7531 /* Old browsers */
7532 7532 display: -webkit-box;
7533 7533 -webkit-box-orient: vertical;
7534 7534 -webkit-box-align: stretch;
7535 7535 display: -moz-box;
7536 7536 -moz-box-orient: vertical;
7537 7537 -moz-box-align: stretch;
7538 7538 display: box;
7539 7539 box-orient: vertical;
7540 7540 box-align: stretch;
7541 7541 /* Modern browsers */
7542 7542 display: flex;
7543 7543 flex-direction: column;
7544 7544 align-items: stretch;
7545 7545 }
7546 7546 .vbox > * {
7547 7547 /* Old browsers */
7548 7548 -webkit-box-flex: 0;
7549 7549 -moz-box-flex: 0;
7550 7550 box-flex: 0;
7551 7551 /* Modern browsers */
7552 7552 flex: none;
7553 7553 }
7554 7554 .hbox.reverse,
7555 7555 .vbox.reverse,
7556 7556 .reverse {
7557 7557 /* Old browsers */
7558 7558 -webkit-box-direction: reverse;
7559 7559 -moz-box-direction: reverse;
7560 7560 box-direction: reverse;
7561 7561 /* Modern browsers */
7562 7562 flex-direction: row-reverse;
7563 7563 }
7564 7564 .hbox.box-flex0,
7565 7565 .vbox.box-flex0,
7566 7566 .box-flex0 {
7567 7567 /* Old browsers */
7568 7568 -webkit-box-flex: 0;
7569 7569 -moz-box-flex: 0;
7570 7570 box-flex: 0;
7571 7571 /* Modern browsers */
7572 7572 flex: none;
7573 7573 width: auto;
7574 7574 }
7575 7575 .hbox.box-flex1,
7576 7576 .vbox.box-flex1,
7577 7577 .box-flex1 {
7578 7578 /* Old browsers */
7579 7579 -webkit-box-flex: 1;
7580 7580 -moz-box-flex: 1;
7581 7581 box-flex: 1;
7582 7582 /* Modern browsers */
7583 7583 flex: 1;
7584 7584 }
7585 7585 .hbox.box-flex,
7586 7586 .vbox.box-flex,
7587 7587 .box-flex {
7588 7588 /* Old browsers */
7589 7589 /* Old browsers */
7590 7590 -webkit-box-flex: 1;
7591 7591 -moz-box-flex: 1;
7592 7592 box-flex: 1;
7593 7593 /* Modern browsers */
7594 7594 flex: 1;
7595 7595 }
7596 7596 .hbox.box-flex2,
7597 7597 .vbox.box-flex2,
7598 7598 .box-flex2 {
7599 7599 /* Old browsers */
7600 7600 -webkit-box-flex: 2;
7601 7601 -moz-box-flex: 2;
7602 7602 box-flex: 2;
7603 7603 /* Modern browsers */
7604 7604 flex: 2;
7605 7605 }
7606 7606 .box-group1 {
7607 7607 /* Deprecated */
7608 7608 -webkit-box-flex-group: 1;
7609 7609 -moz-box-flex-group: 1;
7610 7610 box-flex-group: 1;
7611 7611 }
7612 7612 .box-group2 {
7613 7613 /* Deprecated */
7614 7614 -webkit-box-flex-group: 2;
7615 7615 -moz-box-flex-group: 2;
7616 7616 box-flex-group: 2;
7617 7617 }
7618 7618 .hbox.start,
7619 7619 .vbox.start,
7620 7620 .start {
7621 7621 /* Old browsers */
7622 7622 -webkit-box-pack: start;
7623 7623 -moz-box-pack: start;
7624 7624 box-pack: start;
7625 7625 /* Modern browsers */
7626 7626 justify-content: flex-start;
7627 7627 }
7628 7628 .hbox.end,
7629 7629 .vbox.end,
7630 7630 .end {
7631 7631 /* Old browsers */
7632 7632 -webkit-box-pack: end;
7633 7633 -moz-box-pack: end;
7634 7634 box-pack: end;
7635 7635 /* Modern browsers */
7636 7636 justify-content: flex-end;
7637 7637 }
7638 7638 .hbox.center,
7639 7639 .vbox.center,
7640 7640 .center {
7641 7641 /* Old browsers */
7642 7642 -webkit-box-pack: center;
7643 7643 -moz-box-pack: center;
7644 7644 box-pack: center;
7645 7645 /* Modern browsers */
7646 7646 justify-content: center;
7647 7647 }
7648 7648 .hbox.baseline,
7649 7649 .vbox.baseline,
7650 7650 .baseline {
7651 7651 /* Old browsers */
7652 7652 -webkit-box-pack: baseline;
7653 7653 -moz-box-pack: baseline;
7654 7654 box-pack: baseline;
7655 7655 /* Modern browsers */
7656 7656 justify-content: baseline;
7657 7657 }
7658 7658 .hbox.stretch,
7659 7659 .vbox.stretch,
7660 7660 .stretch {
7661 7661 /* Old browsers */
7662 7662 -webkit-box-pack: stretch;
7663 7663 -moz-box-pack: stretch;
7664 7664 box-pack: stretch;
7665 7665 /* Modern browsers */
7666 7666 justify-content: stretch;
7667 7667 }
7668 7668 .hbox.align-start,
7669 7669 .vbox.align-start,
7670 7670 .align-start {
7671 7671 /* Old browsers */
7672 7672 -webkit-box-align: start;
7673 7673 -moz-box-align: start;
7674 7674 box-align: start;
7675 7675 /* Modern browsers */
7676 7676 align-items: flex-start;
7677 7677 }
7678 7678 .hbox.align-end,
7679 7679 .vbox.align-end,
7680 7680 .align-end {
7681 7681 /* Old browsers */
7682 7682 -webkit-box-align: end;
7683 7683 -moz-box-align: end;
7684 7684 box-align: end;
7685 7685 /* Modern browsers */
7686 7686 align-items: flex-end;
7687 7687 }
7688 7688 .hbox.align-center,
7689 7689 .vbox.align-center,
7690 7690 .align-center {
7691 7691 /* Old browsers */
7692 7692 -webkit-box-align: center;
7693 7693 -moz-box-align: center;
7694 7694 box-align: center;
7695 7695 /* Modern browsers */
7696 7696 align-items: center;
7697 7697 }
7698 7698 .hbox.align-baseline,
7699 7699 .vbox.align-baseline,
7700 7700 .align-baseline {
7701 7701 /* Old browsers */
7702 7702 -webkit-box-align: baseline;
7703 7703 -moz-box-align: baseline;
7704 7704 box-align: baseline;
7705 7705 /* Modern browsers */
7706 7706 align-items: baseline;
7707 7707 }
7708 7708 .hbox.align-stretch,
7709 7709 .vbox.align-stretch,
7710 7710 .align-stretch {
7711 7711 /* Old browsers */
7712 7712 -webkit-box-align: stretch;
7713 7713 -moz-box-align: stretch;
7714 7714 box-align: stretch;
7715 7715 /* Modern browsers */
7716 7716 align-items: stretch;
7717 7717 }
7718 7718 div.error {
7719 7719 margin: 2em;
7720 7720 text-align: center;
7721 7721 }
7722 7722 div.error > h1 {
7723 7723 font-size: 500%;
7724 7724 line-height: normal;
7725 7725 }
7726 7726 div.error > p {
7727 7727 font-size: 200%;
7728 7728 line-height: normal;
7729 7729 }
7730 7730 div.traceback-wrapper {
7731 7731 text-align: left;
7732 7732 max-width: 800px;
7733 7733 margin: auto;
7734 7734 }
7735 7735 /**
7736 7736 * Primary styles
7737 7737 *
7738 7738 * Author: IPython Development Team
7739 7739 */
7740 7740 body {
7741 7741 background-color: white;
7742 7742 /* This makes sure that the body covers the entire window and needs to
7743 7743 be in a different element than the display: box in wrapper below */
7744 7744 position: absolute;
7745 7745 left: 0px;
7746 7746 right: 0px;
7747 7747 top: 0px;
7748 7748 bottom: 0px;
7749 7749 overflow: visible;
7750 7750 }
7751 7751 div#header {
7752 7752 /* Initially hidden to prevent FLOUC */
7753 7753 display: none;
7754 7754 margin-bottom: -6px;
7755 7755 position: fixed;
7756 7756 top: 0;
7757 7757 width: 100%;
7758 7758 background-color: #ffffff;
7759 7759 min-height: 31px;
7760 7760 /* Display over codemirror */
7761 7761 z-index: 100;
7762 7762 }
7763 7763 div#header #header-container {
7764 7764 margin-bottom: 0px;
7765 7765 padding-left: 30px;
7766 7766 padding-bottom: 5px;
7767 7767 box-sizing: border-box;
7768 7768 -moz-box-sizing: border-box;
7769 7769 -webkit-box-sizing: border-box;
7770 7770 }
7771 7771 div#header .header-bar {
7772 7772 width: 100%;
7773 7773 height: 0px;
7774 7774 border-bottom: 1px solid #e7e7e7;
7775 7775 }
7776 7776 #header-spacer {
7777 7777 width: 100%;
7778 7778 visibility: hidden;
7779 7779 }
7780 7780 #ipython_notebook {
7781 7781 padding-left: 0px;
7782 7782 }
7783 7783 #noscript {
7784 7784 width: auto;
7785 7785 padding-top: 16px;
7786 7786 padding-bottom: 16px;
7787 7787 text-align: center;
7788 7788 font-size: 22px;
7789 7789 color: red;
7790 7790 font-weight: bold;
7791 7791 }
7792 7792 #ipython_notebook img {
7793 7793 font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
7794 7794 height: 24px;
7795 7795 text-decoration: none;
7796 7796 color: black;
7797 7797 }
7798 7798 #site {
7799 7799 width: 100%;
7800 7800 display: none;
7801 7801 box-sizing: border-box;
7802 7802 -moz-box-sizing: border-box;
7803 7803 -webkit-box-sizing: border-box;
7804 7804 }
7805 7805 /* Smaller buttons */
7806 7806 .ui-button .ui-button-text {
7807 7807 padding: 0.2em 0.8em;
7808 7808 font-size: 77%;
7809 7809 }
7810 7810 input.ui-button {
7811 7811 padding: 0.3em 0.9em;
7812 7812 }
7813 7813 .navbar span {
7814 7814 margin-top: 3px;
7815 7815 }
7816 7816 span#login_widget {
7817 7817 float: right;
7818 7818 }
7819 7819 span#login_widget > .button,
7820 7820 #logout {
7821 7821 display: inline-block;
7822 7822 margin-bottom: 0;
7823 7823 font-weight: normal;
7824 7824 text-align: center;
7825 7825 vertical-align: middle;
7826 7826 cursor: pointer;
7827 7827 background-image: none;
7828 7828 border: 1px solid transparent;
7829 7829 white-space: nowrap;
7830 7830 padding: 6px 12px;
7831 7831 font-size: 13px;
7832 7832 line-height: 1.42857143;
7833 7833 border-radius: 4px;
7834 7834 -webkit-user-select: none;
7835 7835 -moz-user-select: none;
7836 7836 -ms-user-select: none;
7837 7837 user-select: none;
7838 7838 color: #333333;
7839 7839 background-color: #ffffff;
7840 7840 border-color: #cccccc;
7841 7841 padding: 5px 10px;
7842 7842 font-size: 12px;
7843 7843 line-height: 1.5;
7844 7844 border-radius: 3px;
7845 7845 }
7846 7846 span#login_widget > .button:focus,
7847 7847 #logout:focus,
7848 7848 span#login_widget > .button:active:focus,
7849 7849 #logout:active:focus,
7850 7850 span#login_widget > .button.active:focus,
7851 7851 #logout.active:focus {
7852 7852 outline: thin dotted;
7853 7853 outline: 5px auto -webkit-focus-ring-color;
7854 7854 outline-offset: -2px;
7855 7855 }
7856 7856 span#login_widget > .button:hover,
7857 7857 #logout:hover,
7858 7858 span#login_widget > .button:focus,
7859 7859 #logout:focus {
7860 7860 color: #333333;
7861 7861 text-decoration: none;
7862 7862 }
7863 7863 span#login_widget > .button:active,
7864 7864 #logout:active,
7865 7865 span#login_widget > .button.active,
7866 7866 #logout.active {
7867 7867 outline: 0;
7868 7868 background-image: none;
7869 7869 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7870 7870 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7871 7871 }
7872 7872 span#login_widget > .button.disabled,
7873 7873 #logout.disabled,
7874 7874 span#login_widget > .button[disabled],
7875 7875 #logout[disabled],
7876 7876 fieldset[disabled] span#login_widget > .button,
7877 7877 fieldset[disabled] #logout {
7878 7878 cursor: not-allowed;
7879 7879 pointer-events: none;
7880 7880 opacity: 0.65;
7881 7881 filter: alpha(opacity=65);
7882 7882 -webkit-box-shadow: none;
7883 7883 box-shadow: none;
7884 7884 }
7885 7885 span#login_widget > .button:hover,
7886 7886 #logout:hover,
7887 7887 span#login_widget > .button:focus,
7888 7888 #logout:focus,
7889 7889 span#login_widget > .button:active,
7890 7890 #logout:active,
7891 7891 span#login_widget > .button.active,
7892 7892 #logout.active,
7893 7893 .open .dropdown-togglespan#login_widget > .button,
7894 7894 .open .dropdown-toggle#logout {
7895 7895 color: #333333;
7896 7896 background-color: #ebebeb;
7897 7897 border-color: #adadad;
7898 7898 }
7899 7899 span#login_widget > .button:active,
7900 7900 #logout:active,
7901 7901 span#login_widget > .button.active,
7902 7902 #logout.active,
7903 7903 .open .dropdown-togglespan#login_widget > .button,
7904 7904 .open .dropdown-toggle#logout {
7905 7905 background-image: none;
7906 7906 }
7907 7907 span#login_widget > .button.disabled,
7908 7908 #logout.disabled,
7909 7909 span#login_widget > .button[disabled],
7910 7910 #logout[disabled],
7911 7911 fieldset[disabled] span#login_widget > .button,
7912 7912 fieldset[disabled] #logout,
7913 7913 span#login_widget > .button.disabled:hover,
7914 7914 #logout.disabled:hover,
7915 7915 span#login_widget > .button[disabled]:hover,
7916 7916 #logout[disabled]:hover,
7917 7917 fieldset[disabled] span#login_widget > .button:hover,
7918 7918 fieldset[disabled] #logout:hover,
7919 7919 span#login_widget > .button.disabled:focus,
7920 7920 #logout.disabled:focus,
7921 7921 span#login_widget > .button[disabled]:focus,
7922 7922 #logout[disabled]:focus,
7923 7923 fieldset[disabled] span#login_widget > .button:focus,
7924 7924 fieldset[disabled] #logout:focus,
7925 7925 span#login_widget > .button.disabled:active,
7926 7926 #logout.disabled:active,
7927 7927 span#login_widget > .button[disabled]:active,
7928 7928 #logout[disabled]:active,
7929 7929 fieldset[disabled] span#login_widget > .button:active,
7930 7930 fieldset[disabled] #logout:active,
7931 7931 span#login_widget > .button.disabled.active,
7932 7932 #logout.disabled.active,
7933 7933 span#login_widget > .button[disabled].active,
7934 7934 #logout[disabled].active,
7935 7935 fieldset[disabled] span#login_widget > .button.active,
7936 7936 fieldset[disabled] #logout.active {
7937 7937 background-color: #ffffff;
7938 7938 border-color: #cccccc;
7939 7939 }
7940 7940 span#login_widget > .button .badge,
7941 7941 #logout .badge {
7942 7942 color: #ffffff;
7943 7943 background-color: #333333;
7944 7944 }
7945 7945 .nav-header {
7946 7946 text-transform: none;
7947 7947 }
7948 7948 #header > span {
7949 7949 margin-top: 10px;
7950 7950 }
7951 7951 .modal_stretch .modal-dialog {
7952 7952 /* Old browsers */
7953 7953 display: -webkit-box;
7954 7954 -webkit-box-orient: vertical;
7955 7955 -webkit-box-align: stretch;
7956 7956 display: -moz-box;
7957 7957 -moz-box-orient: vertical;
7958 7958 -moz-box-align: stretch;
7959 7959 display: box;
7960 7960 box-orient: vertical;
7961 7961 box-align: stretch;
7962 7962 /* Modern browsers */
7963 7963 display: flex;
7964 7964 flex-direction: column;
7965 7965 align-items: stretch;
7966 7966 min-height: 80%;
7967 7967 }
7968 7968 .modal_stretch .modal-dialog .modal-body {
7969 7969 max-height: none;
7970 7970 flex: 1;
7971 7971 }
7972 7972 @media (min-width: 768px) {
7973 7973 .modal .modal-dialog {
7974 7974 width: 700px;
7975 7975 }
7976 7976 }
7977 7977 /*!
7978 7978 *
7979 7979 * IPython auth
7980 7980 *
7981 7981 */
7982 7982 .center-nav {
7983 7983 display: inline-block;
7984 7984 margin-bottom: -4px;
7985 7985 }
7986 7986 /*!
7987 7987 *
7988 7988 * IPython tree view
7989 7989 *
7990 7990 */
7991 7991 /* We need an invisible input field on top of the sentense*/
7992 7992 /* "Drag file onto the list ..." */
7993 7993 .alternate_upload {
7994 7994 background-color: none;
7995 7995 display: inline;
7996 7996 }
7997 7997 .alternate_upload.form {
7998 7998 padding: 0;
7999 7999 margin: 0;
8000 8000 }
8001 8001 .alternate_upload input.fileinput {
8002 8002 display: inline;
8003 8003 opacity: 0;
8004 8004 z-index: 2;
8005 8005 width: 12ex;
8006 8006 margin-right: -12ex;
8007 8007 }
8008 8008 .alternate_upload .input-overlay {
8009 8009 display: inline-block;
8010 8010 font-weight: bold;
8011 8011 }
8012 8012 /**
8013 8013 * Primary styles
8014 8014 *
8015 8015 * Author: IPython Development Team
8016 8016 */
8017 8017 ul#tabs {
8018 8018 margin-bottom: 4px;
8019 8019 }
8020 8020 ul#tabs a {
8021 8021 padding-top: 6px;
8022 8022 padding-bottom: 4px;
8023 8023 }
8024 8024 ul.breadcrumb a:focus,
8025 8025 ul.breadcrumb a:hover {
8026 8026 text-decoration: none;
8027 8027 }
8028 8028 ul.breadcrumb i.icon-home {
8029 8029 font-size: 16px;
8030 8030 margin-right: 4px;
8031 8031 }
8032 8032 ul.breadcrumb span {
8033 8033 color: #5e5e5e;
8034 8034 }
8035 8035 .list_toolbar {
8036 8036 padding: 4px 0 4px 0;
8037 8037 vertical-align: middle;
8038 8038 }
8039 8039 .list_toolbar .tree-buttons {
8040 8040 padding-top: 2px;
8041 8041 }
8042 8042 .list_toolbar [class*="span"] {
8043 8043 min-height: 24px;
8044 8044 }
8045 8045 .list_header {
8046 8046 font-weight: bold;
8047 8047 }
8048 8048 .list_container {
8049 8049 margin-top: 4px;
8050 8050 margin-bottom: 20px;
8051 8051 border: 1px solid #ababab;
8052 8052 border-radius: 4px;
8053 8053 }
8054 8054 .list_container > div {
8055 8055 border-bottom: 1px solid #ababab;
8056 8056 }
8057 8057 .list_container > div:hover .list-item {
8058 8058 background-color: red;
8059 8059 }
8060 8060 .list_container > div:last-child {
8061 8061 border: none;
8062 8062 }
8063 8063 .list_item:hover .list_item {
8064 8064 background-color: #ddd;
8065 8065 }
8066 8066 .list_item a {
8067 8067 text-decoration: none;
8068 8068 }
8069 8069 .action_col {
8070 8070 text-align: right;
8071 8071 }
8072 8072 .list_header > div,
8073 8073 .list_item > div {
8074 8074 padding-top: 4px;
8075 8075 padding-bottom: 4px;
8076 8076 padding-left: 7px;
8077 8077 padding-right: 7px;
8078 8078 line-height: 22px;
8079 8079 }
8080 8080 .item_name {
8081 8081 line-height: 22px;
8082 8082 height: 24px;
8083 8083 }
8084 8084 .item_icon {
8085 8085 font-size: 14px;
8086 8086 color: #5e5e5e;
8087 8087 margin-right: 7px;
8088 8088 }
8089 8089 .item_buttons {
8090 8090 line-height: 1em;
8091 8091 }
8092 8092 .item_buttons .btn {
8093 8093 min-width: 13ex;
8094 8094 }
8095 8095 .toolbar_info {
8096 8096 height: 24px;
8097 8097 line-height: 24px;
8098 8098 }
8099 8099 input.nbname_input,
8100 8100 input.engine_num_input {
8101 8101 padding-top: 3px;
8102 8102 padding-bottom: 3px;
8103 8103 height: 22px;
8104 8104 line-height: 14px;
8105 8105 margin: 0px;
8106 8106 }
8107 8107 input.engine_num_input {
8108 8108 width: 60px;
8109 8109 }
8110 8110 .highlight_text {
8111 8111 color: blue;
8112 8112 }
8113 8113 #project_name > .breadcrumb {
8114 8114 padding: 0px;
8115 8115 margin-bottom: 0px;
8116 8116 background-color: transparent;
8117 8117 font-weight: bold;
8118 8118 }
8119 8119 .tab-content .row {
8120 8120 margin-left: 0px;
8121 8121 margin-right: 0px;
8122 8122 }
8123 8123 .folder_icon:before {
8124 8124 display: inline-block;
8125 8125 font: normal normal normal 14px/1 FontAwesome;
8126 8126 font-size: inherit;
8127 8127 text-rendering: auto;
8128 8128 -webkit-font-smoothing: antialiased;
8129 8129 -moz-osx-font-smoothing: grayscale;
8130 8130 content: "\f114";
8131 8131 }
8132 8132 .folder_icon:before.pull-left {
8133 8133 margin-right: .3em;
8134 8134 }
8135 8135 .folder_icon:before.pull-right {
8136 8136 margin-left: .3em;
8137 8137 }
8138 8138 .notebook_icon:before {
8139 8139 display: inline-block;
8140 8140 font: normal normal normal 14px/1 FontAwesome;
8141 8141 font-size: inherit;
8142 8142 text-rendering: auto;
8143 8143 -webkit-font-smoothing: antialiased;
8144 8144 -moz-osx-font-smoothing: grayscale;
8145 8145 content: "\f02d";
8146 8146 }
8147 8147 .notebook_icon:before.pull-left {
8148 8148 margin-right: .3em;
8149 8149 }
8150 8150 .notebook_icon:before.pull-right {
8151 8151 margin-left: .3em;
8152 8152 }
8153 8153 .file_icon:before {
8154 8154 display: inline-block;
8155 8155 font: normal normal normal 14px/1 FontAwesome;
8156 8156 font-size: inherit;
8157 8157 text-rendering: auto;
8158 8158 -webkit-font-smoothing: antialiased;
8159 8159 -moz-osx-font-smoothing: grayscale;
8160 8160 content: "\f016";
8161 8161 }
8162 8162 .file_icon:before.pull-left {
8163 8163 margin-right: .3em;
8164 8164 }
8165 8165 .file_icon:before.pull-right {
8166 8166 margin-left: .3em;
8167 8167 }
8168 8168 ul#new-notebook-menu {
8169 8169 left: auto;
8170 8170 right: 0;
8171 8171 }
8172 8172 .kernel-menu-icon {
8173 8173 padding-right: 12px;
8174 8174 width: 24px;
8175 8175 content: "\f096";
8176 8176 }
8177 8177 .kernel-menu-icon:before {
8178 8178 content: "\f096";
8179 8179 }
8180 8180 .kernel-menu-icon-current:before {
8181 8181 content: "\f00c";
8182 8182 }
8183 8183 /*!
8184 8184 *
8185 8185 * IPython notebook
8186 8186 *
8187 8187 */
8188 8188 /* CSS font colors for translated ANSI colors. */
8189 8189 .ansibold {
8190 8190 font-weight: bold;
8191 8191 }
8192 8192 /* use dark versions for foreground, to improve visibility */
8193 8193 .ansiblack {
8194 8194 color: black;
8195 8195 }
8196 8196 .ansired {
8197 8197 color: darkred;
8198 8198 }
8199 8199 .ansigreen {
8200 8200 color: darkgreen;
8201 8201 }
8202 8202 .ansiyellow {
8203 8203 color: #c4a000;
8204 8204 }
8205 8205 .ansiblue {
8206 8206 color: darkblue;
8207 8207 }
8208 8208 .ansipurple {
8209 8209 color: darkviolet;
8210 8210 }
8211 8211 .ansicyan {
8212 8212 color: steelblue;
8213 8213 }
8214 8214 .ansigray {
8215 8215 color: gray;
8216 8216 }
8217 8217 /* and light for background, for the same reason */
8218 8218 .ansibgblack {
8219 8219 background-color: black;
8220 8220 }
8221 8221 .ansibgred {
8222 8222 background-color: red;
8223 8223 }
8224 8224 .ansibggreen {
8225 8225 background-color: green;
8226 8226 }
8227 8227 .ansibgyellow {
8228 8228 background-color: yellow;
8229 8229 }
8230 8230 .ansibgblue {
8231 8231 background-color: blue;
8232 8232 }
8233 8233 .ansibgpurple {
8234 8234 background-color: magenta;
8235 8235 }
8236 8236 .ansibgcyan {
8237 8237 background-color: cyan;
8238 8238 }
8239 8239 .ansibggray {
8240 8240 background-color: gray;
8241 8241 }
8242 8242 div.cell {
8243 8243 border: 1px solid transparent;
8244 8244 /* Old browsers */
8245 8245 display: -webkit-box;
8246 8246 -webkit-box-orient: vertical;
8247 8247 -webkit-box-align: stretch;
8248 8248 display: -moz-box;
8249 8249 -moz-box-orient: vertical;
8250 8250 -moz-box-align: stretch;
8251 8251 display: box;
8252 8252 box-orient: vertical;
8253 8253 box-align: stretch;
8254 8254 /* Modern browsers */
8255 8255 display: flex;
8256 8256 flex-direction: column;
8257 8257 align-items: stretch;
8258 8258 border-radius: 4px;
8259 8259 box-sizing: border-box;
8260 8260 -moz-box-sizing: border-box;
8261 8261 -webkit-box-sizing: border-box;
8262 8262 border-width: thin;
8263 8263 border-style: solid;
8264 8264 width: 100%;
8265 8265 padding: 5px 5px 5px 0px;
8266 8266 /* This acts as a spacer between cells, that is outside the border */
8267 8267 margin: 0px;
8268 8268 outline: none;
8269 8269 }
8270 8270 div.cell.selected {
8271 8271 border-color: #ababab;
8272 8272 }
8273 8273 div.cell.edit_mode {
8274 8274 border-color: green;
8275 8275 }
8276 8276 div.prompt {
8277 8277 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
8278 8278 min-width: 15ex;
8279 8279 /* This padding is tuned to match the padding on the CodeMirror editor. */
8280 8280 padding: 0.4em;
8281 8281 margin: 0px;
8282 8282 font-family: monospace;
8283 8283 text-align: right;
8284 8284 /* This has to match that of the the CodeMirror class line-height below */
8285 8285 line-height: 1.21429em;
8286 8286 }
8287 8287 @media (max-width: 480px) {
8288 8288 div.prompt {
8289 8289 text-align: left;
8290 8290 }
8291 8291 }
8292 8292 div.inner_cell {
8293 8293 /* Old browsers */
8294 8294 display: -webkit-box;
8295 8295 -webkit-box-orient: vertical;
8296 8296 -webkit-box-align: stretch;
8297 8297 display: -moz-box;
8298 8298 -moz-box-orient: vertical;
8299 8299 -moz-box-align: stretch;
8300 8300 display: box;
8301 8301 box-orient: vertical;
8302 8302 box-align: stretch;
8303 8303 /* Modern browsers */
8304 8304 display: flex;
8305 8305 flex-direction: column;
8306 8306 align-items: stretch;
8307 8307 /* Old browsers */
8308 8308 -webkit-box-flex: 1;
8309 8309 -moz-box-flex: 1;
8310 8310 box-flex: 1;
8311 8311 /* Modern browsers */
8312 8312 flex: 1;
8313 8313 }
8314 8314 /* input_area and input_prompt must match in top border and margin for alignment */
8315 8315 div.input_area {
8316 8316 border: 1px solid #cfcfcf;
8317 8317 border-radius: 4px;
8318 8318 background: #f7f7f7;
8319 8319 line-height: 1.21429em;
8320 8320 }
8321 8321 /* This is needed so that empty prompt areas can collapse to zero height when there
8322 8322 is no content in the output_subarea and the prompt. The main purpose of this is
8323 8323 to make sure that empty JavaScript output_subareas have no height. */
8324 8324 div.prompt:empty {
8325 8325 padding-top: 0;
8326 8326 padding-bottom: 0;
8327 8327 }
8328 8328 div.unrecognized_cell {
8329 8329 padding: 5px 5px 5px 0px;
8330 8330 /* Old browsers */
8331 8331 display: -webkit-box;
8332 8332 -webkit-box-orient: horizontal;
8333 8333 -webkit-box-align: stretch;
8334 8334 display: -moz-box;
8335 8335 -moz-box-orient: horizontal;
8336 8336 -moz-box-align: stretch;
8337 8337 display: box;
8338 8338 box-orient: horizontal;
8339 8339 box-align: stretch;
8340 8340 /* Modern browsers */
8341 8341 display: flex;
8342 8342 flex-direction: row;
8343 8343 align-items: stretch;
8344 8344 }
8345 8345 div.unrecognized_cell .inner_cell {
8346 8346 border-radius: 4px;
8347 8347 padding: 5px;
8348 8348 font-weight: bold;
8349 8349 color: red;
8350 8350 border: 1px solid #cfcfcf;
8351 8351 background: #eaeaea;
8352 8352 }
8353 8353 div.unrecognized_cell .inner_cell a {
8354 8354 color: inherit;
8355 8355 text-decoration: none;
8356 8356 }
8357 8357 div.unrecognized_cell .inner_cell a:hover {
8358 8358 color: inherit;
8359 8359 text-decoration: none;
8360 8360 }
8361 8361 @media (max-width: 480px) {
8362 8362 div.unrecognized_cell > div.prompt {
8363 8363 display: none;
8364 8364 }
8365 8365 }
8366 8366 /* any special styling for code cells that are currently running goes here */
8367 8367 div.input {
8368 8368 page-break-inside: avoid;
8369 8369 /* Old browsers */
8370 8370 display: -webkit-box;
8371 8371 -webkit-box-orient: horizontal;
8372 8372 -webkit-box-align: stretch;
8373 8373 display: -moz-box;
8374 8374 -moz-box-orient: horizontal;
8375 8375 -moz-box-align: stretch;
8376 8376 display: box;
8377 8377 box-orient: horizontal;
8378 8378 box-align: stretch;
8379 8379 /* Modern browsers */
8380 8380 display: flex;
8381 8381 flex-direction: row;
8382 8382 align-items: stretch;
8383 8383 }
8384 8384 @media (max-width: 480px) {
8385 8385 div.input {
8386 8386 /* Old browsers */
8387 8387 display: -webkit-box;
8388 8388 -webkit-box-orient: vertical;
8389 8389 -webkit-box-align: stretch;
8390 8390 display: -moz-box;
8391 8391 -moz-box-orient: vertical;
8392 8392 -moz-box-align: stretch;
8393 8393 display: box;
8394 8394 box-orient: vertical;
8395 8395 box-align: stretch;
8396 8396 /* Modern browsers */
8397 8397 display: flex;
8398 8398 flex-direction: column;
8399 8399 align-items: stretch;
8400 8400 }
8401 8401 }
8402 8402 /* input_area and input_prompt must match in top border and margin for alignment */
8403 8403 div.input_prompt {
8404 8404 color: #000080;
8405 8405 border-top: 1px solid transparent;
8406 8406 }
8407 8407 div.input_area > div.highlight {
8408 8408 margin: 0.4em;
8409 8409 border: none;
8410 8410 padding: 0px;
8411 8411 background-color: transparent;
8412 8412 }
8413 8413 div.input_area > div.highlight > pre {
8414 8414 margin: 0px;
8415 8415 border: none;
8416 8416 padding: 0px;
8417 8417 background-color: transparent;
8418 8418 }
8419 8419 /* The following gets added to the <head> if it is detected that the user has a
8420 8420 * monospace font with inconsistent normal/bold/italic height. See
8421 8421 * notebookmain.js. Such fonts will have keywords vertically offset with
8422 8422 * respect to the rest of the text. The user should select a better font.
8423 8423 * See: https://github.com/ipython/ipython/issues/1503
8424 8424 *
8425 8425 * .CodeMirror span {
8426 8426 * vertical-align: bottom;
8427 8427 * }
8428 8428 */
8429 8429 .CodeMirror {
8430 8430 line-height: 1.21429em;
8431 8431 /* Changed from 1em to our global default */
8432 8432 height: auto;
8433 8433 /* Changed to auto to autogrow */
8434 8434 background: none;
8435 8435 /* Changed from white to allow our bg to show through */
8436 8436 }
8437 8437 .CodeMirror-scroll {
8438 8438 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
8439 8439 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
8440 8440 overflow-y: hidden;
8441 8441 overflow-x: auto;
8442 8442 }
8443 8443 .CodeMirror-lines {
8444 8444 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
8445 8445 /* we have set a different line-height and want this to scale with that. */
8446 8446 padding: 0.4em;
8447 8447 }
8448 8448 .CodeMirror-linenumber {
8449 8449 padding: 0 8px 0 4px;
8450 8450 }
8451 8451 .CodeMirror-gutters {
8452 8452 border-bottom-left-radius: 4px;
8453 8453 border-top-left-radius: 4px;
8454 8454 }
8455 8455 .CodeMirror pre {
8456 8456 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
8457 8457 /* .CodeMirror-lines */
8458 8458 padding: 0;
8459 8459 border: 0;
8460 8460 border-radius: 0;
8461 8461 }
8462 8462 .CodeMirror-vscrollbar,
8463 8463 .CodeMirror-hscrollbar {
8464 8464 display: none !important;
8465 8465 }
8466 8466 /*
8467 8467
8468 8468 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
8469 8469 Adapted from GitHub theme
8470 8470
8471 8471 */
8472 pre code {
8473 display: block;
8474 padding: 0.5em;
8475 }
8476 .highlight-base,
8477 pre code,
8478 pre .subst,
8479 pre .tag .title,
8480 pre .lisp .title,
8481 pre .clojure .built_in,
8482 pre .nginx .title {
8483 color: black;
8472 .highlight-base {
8473 color: #000000;
8474 }
8475 .highlight-variable {
8476 color: #000000;
8477 }
8478 .highlight-variable-2 {
8479 color: #1a1a1a;
8480 }
8481 .highlight-variable-3 {
8482 color: #333333;
8484 8483 }
8485 .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 {
8484 .highlight-string {
8509 8485 color: #BA2121;
8510 8486 }
8511 .highlight-comment,
8512 pre .comment,
8513 pre .annotation,
8514 pre .template_comment,
8515 pre .diff .header,
8516 pre .chunk,
8517 pre .markdown .blockquote {
8487 .highlight-comment {
8518 8488 color: #408080;
8519 8489 font-style: italic;
8520 8490 }
8521 .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 {
8491 .highlight-number {
8532 8492 color: #080;
8533 8493 }
8534 pre .label,
8535 pre .javadoc,
8536 pre .ruby .string,
8537 pre .decorator,
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 {
8494 .highlight-atom {
8495 color: #88F;
8496 }
8497 .highlight-keyword {
8578 8498 color: #008000;
8579 8499 font-weight: bold;
8580 8500 }
8581 .highlight-builtin,
8582 pre .built_in {
8501 .highlight-builtin {
8583 8502 color: #008000;
8584 8503 }
8585 pre .markdown .emphasis {
8586 font-style: italic;
8504 .highlight-error {
8505 color: #f00;
8587 8506 }
8588 pre .nginx .built_in {
8589 font-weight: normal;
8507 .highlight-operator {
8508 color: #AA22FF;
8509 font-weight: bold;
8590 8510 }
8591 pre .coffeescript .javascript,
8592 pre .javascript .xml,
8593 pre .tex .formula,
8594 pre .xml .javascript,
8595 pre .xml .vbscript,
8596 pre .xml .css,
8597 pre .xml .cdata {
8598 opacity: 0.5;
8511 .highlight-meta {
8512 color: #AA22FF;
8599 8513 }
8600 /* apply the same style to codemirror */
8601 .cm-s-ipython span.cm-variable {
8602 color: black;
8514 /* previously not defined, copying from default codemirror */
8515 .highlight-def {
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 8543 .cm-s-ipython span.cm-keyword {
8605 8544 color: #008000;
8606 8545 font-weight: bold;
8607 8546 }
8547 .cm-s-ipython span.cm-atom {
8548 color: #88F;
8549 }
8608 8550 .cm-s-ipython span.cm-number {
8609 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 8569 .cm-s-ipython span.cm-comment {
8612 8570 color: #408080;
8613 8571 font-style: italic;
8614 8572 }
8615 8573 .cm-s-ipython span.cm-string {
8616 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 8585 .cm-s-ipython span.cm-builtin {
8619 8586 color: #008000;
8620 8587 }
8621 .cm-s-ipython span.cm-error {
8622 color: #f00;
8588 .cm-s-ipython span.cm-bracket {
8589 color: #997;
8623 8590 }
8624 .cm-s-ipython span.cm-operator {
8625 color: #AA22FF;
8626 font-weight: bold;
8591 .cm-s-ipython span.cm-tag {
8592 color: #170;
8627 8593 }
8628 .cm-s-ipython span.cm-meta {
8629 color: #AA22FF;
8594 .cm-s-ipython span.cm-attribute {
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 8609 .cm-s-ipython span.cm-tab {
8632 8610 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
8633 8611 background-position: right;
8634 8612 background-repeat: no-repeat;
8635 8613 }
8636 8614 div.output_wrapper {
8637 8615 /* this position must be relative to enable descendents to be absolute within it */
8638 8616 position: relative;
8639 8617 /* Old browsers */
8640 8618 display: -webkit-box;
8641 8619 -webkit-box-orient: vertical;
8642 8620 -webkit-box-align: stretch;
8643 8621 display: -moz-box;
8644 8622 -moz-box-orient: vertical;
8645 8623 -moz-box-align: stretch;
8646 8624 display: box;
8647 8625 box-orient: vertical;
8648 8626 box-align: stretch;
8649 8627 /* Modern browsers */
8650 8628 display: flex;
8651 8629 flex-direction: column;
8652 8630 align-items: stretch;
8653 8631 }
8654 8632 /* class for the output area when it should be height-limited */
8655 8633 div.output_scroll {
8656 8634 /* ideally, this would be max-height, but FF barfs all over that */
8657 8635 height: 24em;
8658 8636 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
8659 8637 width: 100%;
8660 8638 overflow: auto;
8661 8639 border-radius: 4px;
8662 8640 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8663 8641 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8664 8642 display: block;
8665 8643 }
8666 8644 /* output div while it is collapsed */
8667 8645 div.output_collapsed {
8668 8646 margin: 0px;
8669 8647 padding: 0px;
8670 8648 /* Old browsers */
8671 8649 display: -webkit-box;
8672 8650 -webkit-box-orient: vertical;
8673 8651 -webkit-box-align: stretch;
8674 8652 display: -moz-box;
8675 8653 -moz-box-orient: vertical;
8676 8654 -moz-box-align: stretch;
8677 8655 display: box;
8678 8656 box-orient: vertical;
8679 8657 box-align: stretch;
8680 8658 /* Modern browsers */
8681 8659 display: flex;
8682 8660 flex-direction: column;
8683 8661 align-items: stretch;
8684 8662 }
8685 8663 div.out_prompt_overlay {
8686 8664 height: 100%;
8687 8665 padding: 0px 0.4em;
8688 8666 position: absolute;
8689 8667 border-radius: 4px;
8690 8668 }
8691 8669 div.out_prompt_overlay:hover {
8692 8670 /* use inner shadow to get border that is computed the same on WebKit/FF */
8693 8671 -webkit-box-shadow: inset 0 0 1px #000000;
8694 8672 box-shadow: inset 0 0 1px #000000;
8695 8673 background: rgba(240, 240, 240, 0.5);
8696 8674 }
8697 8675 div.output_prompt {
8698 8676 color: #8b0000;
8699 8677 }
8700 8678 /* This class is the outer container of all output sections. */
8701 8679 div.output_area {
8702 8680 padding: 0px;
8703 8681 page-break-inside: avoid;
8704 8682 /* Old browsers */
8705 8683 display: -webkit-box;
8706 8684 -webkit-box-orient: horizontal;
8707 8685 -webkit-box-align: stretch;
8708 8686 display: -moz-box;
8709 8687 -moz-box-orient: horizontal;
8710 8688 -moz-box-align: stretch;
8711 8689 display: box;
8712 8690 box-orient: horizontal;
8713 8691 box-align: stretch;
8714 8692 /* Modern browsers */
8715 8693 display: flex;
8716 8694 flex-direction: row;
8717 8695 align-items: stretch;
8718 8696 }
8719 8697 div.output_area .MathJax_Display {
8720 8698 text-align: left !important;
8721 8699 }
8722 8700 div.output_area .rendered_html table {
8723 8701 margin-left: 0;
8724 8702 margin-right: 0;
8725 8703 }
8726 8704 div.output_area .rendered_html img {
8727 8705 margin-left: 0;
8728 8706 margin-right: 0;
8729 8707 }
8730 8708 /* This is needed to protect the pre formating from global settings such
8731 8709 as that of bootstrap */
8732 8710 .output {
8733 8711 /* Old browsers */
8734 8712 display: -webkit-box;
8735 8713 -webkit-box-orient: vertical;
8736 8714 -webkit-box-align: stretch;
8737 8715 display: -moz-box;
8738 8716 -moz-box-orient: vertical;
8739 8717 -moz-box-align: stretch;
8740 8718 display: box;
8741 8719 box-orient: vertical;
8742 8720 box-align: stretch;
8743 8721 /* Modern browsers */
8744 8722 display: flex;
8745 8723 flex-direction: column;
8746 8724 align-items: stretch;
8747 8725 }
8748 8726 @media (max-width: 480px) {
8749 8727 div.output_area {
8750 8728 /* Old browsers */
8751 8729 display: -webkit-box;
8752 8730 -webkit-box-orient: vertical;
8753 8731 -webkit-box-align: stretch;
8754 8732 display: -moz-box;
8755 8733 -moz-box-orient: vertical;
8756 8734 -moz-box-align: stretch;
8757 8735 display: box;
8758 8736 box-orient: vertical;
8759 8737 box-align: stretch;
8760 8738 /* Modern browsers */
8761 8739 display: flex;
8762 8740 flex-direction: column;
8763 8741 align-items: stretch;
8764 8742 }
8765 8743 }
8766 8744 div.output_area pre {
8767 8745 margin: 0;
8768 8746 padding: 0;
8769 8747 border: 0;
8770 8748 vertical-align: baseline;
8771 8749 color: #000000;
8772 8750 background-color: transparent;
8773 8751 border-radius: 0;
8774 8752 }
8775 8753 /* This class is for the output subarea inside the output_area and after
8776 8754 the prompt div. */
8777 8755 div.output_subarea {
8778 8756 padding: 0.4em 0.4em 0em 0.4em;
8779 8757 /* Old browsers */
8780 8758 -webkit-box-flex: 1;
8781 8759 -moz-box-flex: 1;
8782 8760 box-flex: 1;
8783 8761 /* Modern browsers */
8784 8762 flex: 1;
8785 8763 }
8786 8764 /* The rest of the output_* classes are for special styling of the different
8787 8765 output types */
8788 8766 /* all text output has this class: */
8789 8767 div.output_text {
8790 8768 text-align: left;
8791 8769 color: #000000;
8792 8770 /* This has to match that of the the CodeMirror class line-height below */
8793 8771 line-height: 1.21429em;
8794 8772 }
8795 8773 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
8796 8774 div.output_stderr {
8797 8775 background: #fdd;
8798 8776 /* very light red background for stderr */
8799 8777 }
8800 8778 div.output_latex {
8801 8779 text-align: left;
8802 8780 }
8803 8781 /* Empty output_javascript divs should have no height */
8804 8782 div.output_javascript:empty {
8805 8783 padding: 0;
8806 8784 }
8807 8785 .js-error {
8808 8786 color: darkred;
8809 8787 }
8810 8788 /* raw_input styles */
8811 8789 div.raw_input_container {
8812 8790 font-family: monospace;
8813 8791 padding-top: 5px;
8814 8792 }
8815 8793 span.raw_input_prompt {
8816 8794 /* nothing needed here */
8817 8795 }
8818 8796 input.raw_input {
8819 8797 font-family: inherit;
8820 8798 font-size: inherit;
8821 8799 color: inherit;
8822 8800 width: auto;
8823 8801 /* make sure input baseline aligns with prompt */
8824 8802 vertical-align: baseline;
8825 8803 /* padding + margin = 0.5em between prompt and cursor */
8826 8804 padding: 0em 0.25em;
8827 8805 margin: 0em 0.25em;
8828 8806 }
8829 8807 input.raw_input:focus {
8830 8808 box-shadow: none;
8831 8809 }
8832 8810 p.p-space {
8833 8811 margin-bottom: 10px;
8834 8812 }
8835 8813 div.output_unrecognized {
8836 8814 padding: 5px;
8837 8815 font-weight: bold;
8838 8816 color: red;
8839 8817 }
8840 8818 div.output_unrecognized a {
8841 8819 color: inherit;
8842 8820 text-decoration: none;
8843 8821 }
8844 8822 div.output_unrecognized a:hover {
8845 8823 color: inherit;
8846 8824 text-decoration: none;
8847 8825 }
8848 8826 .rendered_html {
8849 8827 color: #000000;
8850 8828 /* any extras will just be numbers: */
8851 8829 }
8852 8830 .rendered_html em {
8853 8831 font-style: italic;
8854 8832 }
8855 8833 .rendered_html strong {
8856 8834 font-weight: bold;
8857 8835 }
8858 8836 .rendered_html u {
8859 8837 text-decoration: underline;
8860 8838 }
8861 8839 .rendered_html :link {
8862 8840 text-decoration: underline;
8863 8841 }
8864 8842 .rendered_html :visited {
8865 8843 text-decoration: underline;
8866 8844 }
8867 8845 .rendered_html h1 {
8868 8846 font-size: 185.7%;
8869 8847 margin: 1.08em 0 0 0;
8870 8848 font-weight: bold;
8871 8849 line-height: 1.0;
8872 8850 }
8873 8851 .rendered_html h2 {
8874 8852 font-size: 157.1%;
8875 8853 margin: 1.27em 0 0 0;
8876 8854 font-weight: bold;
8877 8855 line-height: 1.0;
8878 8856 }
8879 8857 .rendered_html h3 {
8880 8858 font-size: 128.6%;
8881 8859 margin: 1.55em 0 0 0;
8882 8860 font-weight: bold;
8883 8861 line-height: 1.0;
8884 8862 }
8885 8863 .rendered_html h4 {
8886 8864 font-size: 100%;
8887 8865 margin: 2em 0 0 0;
8888 8866 font-weight: bold;
8889 8867 line-height: 1.0;
8890 8868 }
8891 8869 .rendered_html h5 {
8892 8870 font-size: 100%;
8893 8871 margin: 2em 0 0 0;
8894 8872 font-weight: bold;
8895 8873 line-height: 1.0;
8896 8874 font-style: italic;
8897 8875 }
8898 8876 .rendered_html h6 {
8899 8877 font-size: 100%;
8900 8878 margin: 2em 0 0 0;
8901 8879 font-weight: bold;
8902 8880 line-height: 1.0;
8903 8881 font-style: italic;
8904 8882 }
8905 8883 .rendered_html h1:first-child {
8906 8884 margin-top: 0.538em;
8907 8885 }
8908 8886 .rendered_html h2:first-child {
8909 8887 margin-top: 0.636em;
8910 8888 }
8911 8889 .rendered_html h3:first-child {
8912 8890 margin-top: 0.777em;
8913 8891 }
8914 8892 .rendered_html h4:first-child {
8915 8893 margin-top: 1em;
8916 8894 }
8917 8895 .rendered_html h5:first-child {
8918 8896 margin-top: 1em;
8919 8897 }
8920 8898 .rendered_html h6:first-child {
8921 8899 margin-top: 1em;
8922 8900 }
8923 8901 .rendered_html ul {
8924 8902 list-style: disc;
8925 8903 margin: 0em 2em;
8926 8904 padding-left: 0px;
8927 8905 }
8928 8906 .rendered_html ul ul {
8929 8907 list-style: square;
8930 8908 margin: 0em 2em;
8931 8909 }
8932 8910 .rendered_html ul ul ul {
8933 8911 list-style: circle;
8934 8912 margin: 0em 2em;
8935 8913 }
8936 8914 .rendered_html ol {
8937 8915 list-style: decimal;
8938 8916 margin: 0em 2em;
8939 8917 padding-left: 0px;
8940 8918 }
8941 8919 .rendered_html ol ol {
8942 8920 list-style: upper-alpha;
8943 8921 margin: 0em 2em;
8944 8922 }
8945 8923 .rendered_html ol ol ol {
8946 8924 list-style: lower-alpha;
8947 8925 margin: 0em 2em;
8948 8926 }
8949 8927 .rendered_html ol ol ol ol {
8950 8928 list-style: lower-roman;
8951 8929 margin: 0em 2em;
8952 8930 }
8953 8931 .rendered_html ol ol ol ol ol {
8954 8932 list-style: decimal;
8955 8933 margin: 0em 2em;
8956 8934 }
8957 8935 .rendered_html * + ul {
8958 8936 margin-top: 1em;
8959 8937 }
8960 8938 .rendered_html * + ol {
8961 8939 margin-top: 1em;
8962 8940 }
8963 8941 .rendered_html hr {
8964 8942 color: #000000;
8965 8943 background-color: #000000;
8966 8944 }
8967 8945 .rendered_html pre {
8968 8946 margin: 1em 2em;
8969 8947 }
8970 8948 .rendered_html pre,
8971 8949 .rendered_html code {
8972 8950 border: 0;
8973 8951 background-color: #ffffff;
8974 8952 color: #000000;
8975 8953 font-size: 100%;
8976 8954 padding: 0px;
8977 8955 }
8978 8956 .rendered_html blockquote {
8979 8957 margin: 1em 2em;
8980 8958 }
8981 8959 .rendered_html table {
8982 8960 margin-left: auto;
8983 8961 margin-right: auto;
8984 8962 border: 1px solid #000000;
8985 8963 border-collapse: collapse;
8986 8964 }
8987 8965 .rendered_html tr,
8988 8966 .rendered_html th,
8989 8967 .rendered_html td {
8990 8968 border: 1px solid #000000;
8991 8969 border-collapse: collapse;
8992 8970 margin: 1em 2em;
8993 8971 }
8994 8972 .rendered_html td,
8995 8973 .rendered_html th {
8996 8974 text-align: left;
8997 8975 vertical-align: middle;
8998 8976 padding: 4px;
8999 8977 }
9000 8978 .rendered_html th {
9001 8979 font-weight: bold;
9002 8980 }
9003 8981 .rendered_html * + table {
9004 8982 margin-top: 1em;
9005 8983 }
9006 8984 .rendered_html p {
9007 8985 text-align: justify;
9008 8986 }
9009 8987 .rendered_html * + p {
9010 8988 margin-top: 1em;
9011 8989 }
9012 8990 .rendered_html img {
9013 8991 display: block;
9014 8992 margin-left: auto;
9015 8993 margin-right: auto;
9016 8994 }
9017 8995 .rendered_html * + img {
9018 8996 margin-top: 1em;
9019 8997 }
9020 8998 div.text_cell {
9021 8999 padding: 5px 5px 5px 0px;
9022 9000 /* Old browsers */
9023 9001 display: -webkit-box;
9024 9002 -webkit-box-orient: horizontal;
9025 9003 -webkit-box-align: stretch;
9026 9004 display: -moz-box;
9027 9005 -moz-box-orient: horizontal;
9028 9006 -moz-box-align: stretch;
9029 9007 display: box;
9030 9008 box-orient: horizontal;
9031 9009 box-align: stretch;
9032 9010 /* Modern browsers */
9033 9011 display: flex;
9034 9012 flex-direction: row;
9035 9013 align-items: stretch;
9036 9014 }
9037 9015 @media (max-width: 480px) {
9038 9016 div.text_cell > div.prompt {
9039 9017 display: none;
9040 9018 }
9041 9019 }
9042 9020 div.text_cell_render {
9043 9021 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
9044 9022 outline: none;
9045 9023 resize: none;
9046 9024 width: inherit;
9047 9025 border-style: none;
9048 9026 padding: 0.5em 0.5em 0.5em 0.4em;
9049 9027 color: #000000;
9050 9028 box-sizing: border-box;
9051 9029 -moz-box-sizing: border-box;
9052 9030 -webkit-box-sizing: border-box;
9053 9031 }
9054 9032 a.anchor-link:link {
9055 9033 text-decoration: none;
9056 9034 padding: 0px 20px;
9057 9035 visibility: hidden;
9058 9036 }
9059 9037 h1:hover .anchor-link,
9060 9038 h2:hover .anchor-link,
9061 9039 h3:hover .anchor-link,
9062 9040 h4:hover .anchor-link,
9063 9041 h5:hover .anchor-link,
9064 9042 h6:hover .anchor-link {
9065 9043 visibility: visible;
9066 9044 }
9067 9045 .text_cell.rendered .input_area {
9068 9046 display: none;
9069 9047 }
9070 9048 .text_cell.unrendered .text_cell_render {
9071 9049 display: none;
9072 9050 }
9073 9051 .cm-header-1,
9074 9052 .cm-header-2,
9075 9053 .cm-header-3,
9076 9054 .cm-header-4,
9077 9055 .cm-header-5,
9078 9056 .cm-header-6 {
9079 9057 font-weight: bold;
9080 9058 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9081 9059 }
9082 9060 .cm-header-1 {
9083 9061 font-size: 185.7%;
9084 9062 }
9085 9063 .cm-header-2 {
9086 9064 font-size: 157.1%;
9087 9065 }
9088 9066 .cm-header-3 {
9089 9067 font-size: 128.6%;
9090 9068 }
9091 9069 .cm-header-4 {
9092 9070 font-size: 110%;
9093 9071 }
9094 9072 .cm-header-5 {
9095 9073 font-size: 100%;
9096 9074 font-style: italic;
9097 9075 }
9098 9076 .cm-header-6 {
9099 9077 font-size: 100%;
9100 9078 font-style: italic;
9101 9079 }
9102 9080 .widget-area {
9103 9081 /*
9104 9082 LESS file that styles IPython notebook widgets and the area they sit in.
9105 9083
9106 9084 The widget area typically looks something like this:
9107 9085 +------------------------------------------+
9108 9086 | widget-area |
9109 9087 | +--------+---------------------------+ |
9110 9088 | | prompt | widget-subarea | |
9111 9089 | | | +--------+ +--------+ | |
9112 9090 | | | | widget | | widget | | |
9113 9091 | | | +--------+ +--------+ | |
9114 9092 | +--------+---------------------------+ |
9115 9093 +------------------------------------------+
9116 9094 */
9117 9095 page-break-inside: avoid;
9118 9096 /* Old browsers */
9119 9097 display: -webkit-box;
9120 9098 -webkit-box-orient: horizontal;
9121 9099 -webkit-box-align: stretch;
9122 9100 display: -moz-box;
9123 9101 -moz-box-orient: horizontal;
9124 9102 -moz-box-align: stretch;
9125 9103 display: box;
9126 9104 box-orient: horizontal;
9127 9105 box-align: stretch;
9128 9106 /* Modern browsers */
9129 9107 display: flex;
9130 9108 flex-direction: row;
9131 9109 align-items: stretch;
9132 9110 }
9133 9111 .widget-area .widget-subarea {
9134 9112 padding: 0.44em 0.4em 0.4em 1px;
9135 9113 margin-left: 6px;
9136 9114 box-sizing: border-box;
9137 9115 -moz-box-sizing: border-box;
9138 9116 -webkit-box-sizing: border-box;
9139 9117 /* Old browsers */
9140 9118 display: -webkit-box;
9141 9119 -webkit-box-orient: vertical;
9142 9120 -webkit-box-align: stretch;
9143 9121 display: -moz-box;
9144 9122 -moz-box-orient: vertical;
9145 9123 -moz-box-align: stretch;
9146 9124 display: box;
9147 9125 box-orient: vertical;
9148 9126 box-align: stretch;
9149 9127 /* Modern browsers */
9150 9128 display: flex;
9151 9129 flex-direction: column;
9152 9130 align-items: stretch;
9153 9131 /* Old browsers */
9154 9132 -webkit-box-flex: 2;
9155 9133 -moz-box-flex: 2;
9156 9134 box-flex: 2;
9157 9135 /* Modern browsers */
9158 9136 flex: 2;
9159 9137 /* Old browsers */
9160 9138 -webkit-box-align: start;
9161 9139 -moz-box-align: start;
9162 9140 box-align: start;
9163 9141 /* Modern browsers */
9164 9142 align-items: flex-start;
9165 9143 }
9166 9144 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9167 9145 THE WIDGET AREA). */
9168 9146 .slide-track {
9169 9147 /* Slider Track */
9170 9148 border: 1px solid #CCCCCC;
9171 9149 background: #FFFFFF;
9172 9150 border-radius: 4px;
9173 9151 /* Round the corners of the slide track */
9174 9152 }
9175 9153 .widget-hslider {
9176 9154 /* Horizontal jQuery Slider
9177 9155
9178 9156 Both the horizontal and vertical versions of the slider are characterized
9179 9157 by a styled div that contains an invisible jQuery slide div which
9180 9158 contains a visible slider handle div. This is requred so we can control
9181 9159 how the slider is drawn and 'fix' the issue where the slide handle
9182 9160 doesn't stop at the end of the slide.
9183 9161
9184 9162 Both horizontal and vertical sliders have this div nesting:
9185 9163 +------------------------------------------+
9186 9164 | widget-(h/v)slider |
9187 9165 | +--------+---------------------------+ |
9188 9166 | | ui-slider | |
9189 9167 | | +------------------+ | |
9190 9168 | | | ui-slider-handle | | |
9191 9169 | | +------------------+ | |
9192 9170 | +--------+---------------------------+ |
9193 9171 +------------------------------------------+
9194 9172 */
9195 9173 /* Fix the padding of the slide track so the ui-slider is sized
9196 9174 correctly. */
9197 9175 padding-left: 8px;
9198 9176 padding-right: 5px;
9199 9177 overflow: visible;
9200 9178 /* Default size of the slider */
9201 9179 width: 350px;
9202 9180 height: 5px;
9203 9181 max-height: 5px;
9204 9182 margin-top: 13px;
9205 9183 margin-bottom: 10px;
9206 9184 /* Style the slider track */
9207 9185 /* Slider Track */
9208 9186 border: 1px solid #CCCCCC;
9209 9187 background: #FFFFFF;
9210 9188 border-radius: 4px;
9211 9189 /* Round the corners of the slide track */
9212 9190 /* Make the div a flex box (makes FF behave correctly). */
9213 9191 /* Old browsers */
9214 9192 display: -webkit-box;
9215 9193 -webkit-box-orient: horizontal;
9216 9194 -webkit-box-align: stretch;
9217 9195 display: -moz-box;
9218 9196 -moz-box-orient: horizontal;
9219 9197 -moz-box-align: stretch;
9220 9198 display: box;
9221 9199 box-orient: horizontal;
9222 9200 box-align: stretch;
9223 9201 /* Modern browsers */
9224 9202 display: flex;
9225 9203 flex-direction: row;
9226 9204 align-items: stretch;
9227 9205 }
9228 9206 .widget-hslider .ui-slider {
9229 9207 /* Inner, invisible slide div */
9230 9208 border: 0px !important;
9231 9209 background: none !important;
9232 9210 /* Old browsers */
9233 9211 display: -webkit-box;
9234 9212 -webkit-box-orient: horizontal;
9235 9213 -webkit-box-align: stretch;
9236 9214 display: -moz-box;
9237 9215 -moz-box-orient: horizontal;
9238 9216 -moz-box-align: stretch;
9239 9217 display: box;
9240 9218 box-orient: horizontal;
9241 9219 box-align: stretch;
9242 9220 /* Modern browsers */
9243 9221 display: flex;
9244 9222 flex-direction: row;
9245 9223 align-items: stretch;
9246 9224 /* Old browsers */
9247 9225 -webkit-box-flex: 1;
9248 9226 -moz-box-flex: 1;
9249 9227 box-flex: 1;
9250 9228 /* Modern browsers */
9251 9229 flex: 1;
9252 9230 }
9253 9231 .widget-hslider .ui-slider .ui-slider-handle {
9254 9232 width: 14px !important;
9255 9233 height: 28px !important;
9256 9234 margin-top: -8px !important;
9257 9235 }
9258 9236 .widget-hslider .ui-slider .ui-slider-range {
9259 9237 height: 12px !important;
9260 9238 margin-top: -4px !important;
9261 9239 }
9262 9240 .widget-vslider {
9263 9241 /* Vertical jQuery Slider */
9264 9242 /* Fix the padding of the slide track so the ui-slider is sized
9265 9243 correctly. */
9266 9244 padding-bottom: 8px;
9267 9245 overflow: visible;
9268 9246 /* Default size of the slider */
9269 9247 width: 5px;
9270 9248 max-width: 5px;
9271 9249 height: 250px;
9272 9250 margin-left: 12px;
9273 9251 /* Style the slider track */
9274 9252 /* Slider Track */
9275 9253 border: 1px solid #CCCCCC;
9276 9254 background: #FFFFFF;
9277 9255 border-radius: 4px;
9278 9256 /* Round the corners of the slide track */
9279 9257 /* Make the div a flex box (makes FF behave correctly). */
9280 9258 /* Old browsers */
9281 9259 display: -webkit-box;
9282 9260 -webkit-box-orient: vertical;
9283 9261 -webkit-box-align: stretch;
9284 9262 display: -moz-box;
9285 9263 -moz-box-orient: vertical;
9286 9264 -moz-box-align: stretch;
9287 9265 display: box;
9288 9266 box-orient: vertical;
9289 9267 box-align: stretch;
9290 9268 /* Modern browsers */
9291 9269 display: flex;
9292 9270 flex-direction: column;
9293 9271 align-items: stretch;
9294 9272 }
9295 9273 .widget-vslider .ui-slider {
9296 9274 /* Inner, invisible slide div */
9297 9275 border: 0px !important;
9298 9276 background: none !important;
9299 9277 margin-left: -4px;
9300 9278 margin-top: 5px;
9301 9279 /* Old browsers */
9302 9280 display: -webkit-box;
9303 9281 -webkit-box-orient: vertical;
9304 9282 -webkit-box-align: stretch;
9305 9283 display: -moz-box;
9306 9284 -moz-box-orient: vertical;
9307 9285 -moz-box-align: stretch;
9308 9286 display: box;
9309 9287 box-orient: vertical;
9310 9288 box-align: stretch;
9311 9289 /* Modern browsers */
9312 9290 display: flex;
9313 9291 flex-direction: column;
9314 9292 align-items: stretch;
9315 9293 /* Old browsers */
9316 9294 -webkit-box-flex: 1;
9317 9295 -moz-box-flex: 1;
9318 9296 box-flex: 1;
9319 9297 /* Modern browsers */
9320 9298 flex: 1;
9321 9299 }
9322 9300 .widget-vslider .ui-slider .ui-slider-handle {
9323 9301 width: 28px !important;
9324 9302 height: 14px !important;
9325 9303 margin-left: -9px;
9326 9304 }
9327 9305 .widget-vslider .ui-slider .ui-slider-range {
9328 9306 width: 12px !important;
9329 9307 margin-left: -1px !important;
9330 9308 }
9331 9309 .widget-text {
9332 9310 /* String Textbox - used for TextBoxView and TextAreaView */
9333 9311 width: 350px;
9334 9312 margin: 0px !important;
9335 9313 }
9336 9314 .widget-listbox {
9337 9315 /* Listbox */
9338 9316 width: 350px;
9339 9317 margin-bottom: 0px;
9340 9318 }
9341 9319 .widget-numeric-text {
9342 9320 /* Single Line Textbox - used for IntTextView and FloatTextView */
9343 9321 width: 150px;
9344 9322 margin: 0px !important;
9345 9323 }
9346 9324 .widget-progress {
9347 9325 /* Progress Bar */
9348 9326 margin-top: 6px;
9349 9327 width: 350px;
9350 9328 }
9351 9329 .widget-progress .progress-bar {
9352 9330 /* Disable progress bar animation */
9353 9331 -webkit-transition: none;
9354 9332 -moz-transition: none;
9355 9333 -ms-transition: none;
9356 9334 -o-transition: none;
9357 9335 transition: none;
9358 9336 }
9359 9337 .widget-combo-btn {
9360 9338 /* ComboBox Main Button */
9361 9339 min-width: 125px;
9362 9340 }
9363 9341 .widget_item .dropdown-menu li a {
9364 9342 color: inherit;
9365 9343 }
9366 9344 .widget-hbox {
9367 9345 /* Horizontal widgets */
9368 9346 /* Old browsers */
9369 9347 display: -webkit-box;
9370 9348 -webkit-box-orient: horizontal;
9371 9349 -webkit-box-align: stretch;
9372 9350 display: -moz-box;
9373 9351 -moz-box-orient: horizontal;
9374 9352 -moz-box-align: stretch;
9375 9353 display: box;
9376 9354 box-orient: horizontal;
9377 9355 box-align: stretch;
9378 9356 /* Modern browsers */
9379 9357 display: flex;
9380 9358 flex-direction: row;
9381 9359 align-items: stretch;
9382 9360 margin-top: 0px !important;
9383 9361 margin-bottom: 0px !important;
9384 9362 margin-right: 5px;
9385 9363 margin-left: 5px;
9386 9364 }
9387 9365 .widget-hbox input[type="checkbox"] {
9388 9366 margin-top: 9px;
9389 9367 margin-bottom: 10px;
9390 9368 }
9391 9369 .widget-hbox .widget-label {
9392 9370 /* Horizontal Label */
9393 9371 min-width: 10ex;
9394 9372 padding-right: 8px;
9395 9373 padding-top: 5px;
9396 9374 text-align: right;
9397 9375 vertical-align: text-top;
9398 9376 }
9399 9377 .widget-hbox .widget-readout {
9400 9378 padding-left: 8px;
9401 9379 padding-top: 5px;
9402 9380 text-align: left;
9403 9381 vertical-align: text-top;
9404 9382 }
9405 9383 .widget-vbox {
9406 9384 /* Vertical widgets */
9407 9385 /* Old browsers */
9408 9386 display: -webkit-box;
9409 9387 -webkit-box-orient: vertical;
9410 9388 -webkit-box-align: stretch;
9411 9389 display: -moz-box;
9412 9390 -moz-box-orient: vertical;
9413 9391 -moz-box-align: stretch;
9414 9392 display: box;
9415 9393 box-orient: vertical;
9416 9394 box-align: stretch;
9417 9395 /* Modern browsers */
9418 9396 display: flex;
9419 9397 flex-direction: column;
9420 9398 align-items: stretch;
9421 9399 }
9422 9400 .widget-vbox .widget-label {
9423 9401 /* Vertical Label */
9424 9402 padding-bottom: 5px;
9425 9403 text-align: center;
9426 9404 vertical-align: text-bottom;
9427 9405 }
9428 9406 .widget-vbox .widget-readout {
9429 9407 /* Vertical Label */
9430 9408 padding-top: 5px;
9431 9409 text-align: center;
9432 9410 vertical-align: text-top;
9433 9411 }
9434 9412 .widget-modal {
9435 9413 /* Box - ModalView */
9436 9414 overflow: hidden;
9437 9415 position: absolute !important;
9438 9416 top: 0px;
9439 9417 left: 0px;
9440 9418 margin-left: 0px !important;
9441 9419 }
9442 9420 .widget-modal-body {
9443 9421 /* Box - ModalView Body */
9444 9422 max-height: none !important;
9445 9423 }
9446 9424 .widget-box {
9447 9425 /* Box */
9448 9426 box-sizing: border-box;
9449 9427 -moz-box-sizing: border-box;
9450 9428 -webkit-box-sizing: border-box;
9451 9429 /* Old browsers */
9452 9430 -webkit-box-align: start;
9453 9431 -moz-box-align: start;
9454 9432 box-align: start;
9455 9433 /* Modern browsers */
9456 9434 align-items: flex-start;
9457 9435 }
9458 9436 .widget-radio-box {
9459 9437 /* Contains RadioButtonsWidget */
9460 9438 /* Old browsers */
9461 9439 display: -webkit-box;
9462 9440 -webkit-box-orient: vertical;
9463 9441 -webkit-box-align: stretch;
9464 9442 display: -moz-box;
9465 9443 -moz-box-orient: vertical;
9466 9444 -moz-box-align: stretch;
9467 9445 display: box;
9468 9446 box-orient: vertical;
9469 9447 box-align: stretch;
9470 9448 /* Modern browsers */
9471 9449 display: flex;
9472 9450 flex-direction: column;
9473 9451 align-items: stretch;
9474 9452 box-sizing: border-box;
9475 9453 -moz-box-sizing: border-box;
9476 9454 -webkit-box-sizing: border-box;
9477 9455 padding-top: 4px;
9478 9456 }
9479 9457 .widget-radio-box label {
9480 9458 margin-top: 0px;
9481 9459 }
9482 9460 .docked-widget-modal {
9483 9461 /* Horizontal Label */
9484 9462 overflow: hidden;
9485 9463 position: relative !important;
9486 9464 top: 0px !important;
9487 9465 left: 0px !important;
9488 9466 margin-left: 0px !important;
9489 9467 }
9490 9468 /*!
9491 9469 *
9492 9470 * IPython notebook webapp
9493 9471 *
9494 9472 */
9495 9473 body {
9496 9474 background-color: #ffffff;
9497 9475 }
9498 9476 @media (max-width: 767px) {
9499 9477 body.notebook_app {
9500 9478 padding-left: 0px;
9501 9479 padding-right: 0px;
9502 9480 }
9503 9481 }
9504 9482 #ipython-main-app {
9505 9483 box-sizing: border-box;
9506 9484 -moz-box-sizing: border-box;
9507 9485 -webkit-box-sizing: border-box;
9508 9486 }
9509 9487 span#notebook_name {
9510 9488 height: 1em;
9511 9489 line-height: 1em;
9512 9490 padding: 3px;
9513 9491 border: none;
9514 9492 font-size: 146.5%;
9515 9493 border-radius: 4px;
9516 9494 }
9517 9495 span#notebook_name:hover {
9518 9496 background-color: #e6e6e6;
9519 9497 }
9520 9498 div#notebook_panel {
9521 9499 margin: 0px 0px 0px 0px;
9522 9500 padding: 0px;
9523 9501 box-sizing: border-box;
9524 9502 -moz-box-sizing: border-box;
9525 9503 -webkit-box-sizing: border-box;
9526 9504 }
9527 9505 div#notebook {
9528 9506 font-size: 14px;
9529 9507 line-height: 20px;
9530 9508 overflow-y: hidden;
9531 9509 overflow-x: auto;
9532 9510 width: 100%;
9533 9511 /* This spaces the cell away from the edge of the notebook area */
9534 9512 padding: 2em 0 2em 0;
9535 9513 margin: 0px;
9536 9514 outline: none;
9537 9515 box-sizing: border-box;
9538 9516 -moz-box-sizing: border-box;
9539 9517 -webkit-box-sizing: border-box;
9540 9518 }
9541 9519 div.ui-widget-content {
9542 9520 border: 1px solid #ababab;
9543 9521 outline: none;
9544 9522 }
9545 9523 pre.dialog {
9546 9524 background-color: #f7f7f7;
9547 9525 border: 1px solid #ddd;
9548 9526 border-radius: 4px;
9549 9527 padding: 0.4em;
9550 9528 padding-left: 2em;
9551 9529 }
9552 9530 p.dialog {
9553 9531 padding: 0.2em;
9554 9532 }
9555 9533 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
9556 9534 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
9557 9535 */
9558 9536 pre,
9559 9537 code,
9560 9538 kbd,
9561 9539 samp {
9562 9540 white-space: pre-wrap;
9563 9541 }
9564 9542 #fonttest {
9565 9543 font-family: monospace;
9566 9544 }
9567 9545 p {
9568 9546 margin-bottom: 0;
9569 9547 }
9570 9548 .end_space {
9571 9549 height: 200px;
9572 9550 }
9573 9551 .lower-header-bar {
9574 9552 width: 100%;
9575 9553 height: 0px;
9576 9554 border-bottom: 1px solid #e7e7e7;
9577 9555 margin-bottom: -1px;
9578 9556 }
9579 9557 .notebook_app #header {
9580 9558 -webkit-box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9581 9559 box-shadow: 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9582 9560 }
9583 9561 /* CSS for the cell toolbar */
9584 9562 .celltoolbar {
9585 9563 border: thin solid #CFCFCF;
9586 9564 border-bottom: none;
9587 9565 background: #EEE;
9588 9566 border-radius: 4px 4px 0px 0px;
9589 9567 width: 100%;
9590 9568 height: 29px;
9591 9569 padding-right: 4px;
9592 9570 /* Old browsers */
9593 9571 display: -webkit-box;
9594 9572 -webkit-box-orient: horizontal;
9595 9573 -webkit-box-align: stretch;
9596 9574 display: -moz-box;
9597 9575 -moz-box-orient: horizontal;
9598 9576 -moz-box-align: stretch;
9599 9577 display: box;
9600 9578 box-orient: horizontal;
9601 9579 box-align: stretch;
9602 9580 /* Modern browsers */
9603 9581 display: flex;
9604 9582 flex-direction: row;
9605 9583 align-items: stretch;
9606 9584 /* Old browsers */
9607 9585 -webkit-box-pack: end;
9608 9586 -moz-box-pack: end;
9609 9587 box-pack: end;
9610 9588 /* Modern browsers */
9611 9589 justify-content: flex-end;
9612 9590 }
9613 9591 .ctb_hideshow {
9614 9592 display: none;
9615 9593 vertical-align: bottom;
9616 9594 }
9617 9595 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
9618 9596 Cell toolbars are only shown when the ctb_global_show class is also set.
9619 9597 */
9620 9598 .ctb_global_show .ctb_show.ctb_hideshow {
9621 9599 display: block;
9622 9600 }
9623 9601 .ctb_global_show .ctb_show + .input_area,
9624 9602 .ctb_global_show .ctb_show + div.text_cell_input {
9625 9603 border-top-right-radius: 0px;
9626 9604 border-top-left-radius: 0px;
9627 9605 }
9628 9606 .celltoolbar {
9629 9607 font-size: 87%;
9630 9608 padding-top: 3px;
9631 9609 }
9632 9610 .celltoolbar select {
9633 9611 display: block;
9634 9612 width: 100%;
9635 9613 height: 32px;
9636 9614 padding: 6px 12px;
9637 9615 font-size: 13px;
9638 9616 line-height: 1.42857143;
9639 9617 color: #555555;
9640 9618 background-color: #ffffff;
9641 9619 background-image: none;
9642 9620 border: 1px solid #cccccc;
9643 9621 border-radius: 4px;
9644 9622 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9645 9623 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
9646 9624 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9647 9625 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
9648 9626 height: 30px;
9649 9627 padding: 5px 10px;
9650 9628 font-size: 12px;
9651 9629 line-height: 1.5;
9652 9630 border-radius: 3px;
9653 9631 width: inherit;
9654 9632 font-size: 87%;
9655 9633 height: 22px;
9656 9634 display: inline-block;
9657 9635 }
9658 9636 .celltoolbar select:focus {
9659 9637 border-color: #66afe9;
9660 9638 outline: 0;
9661 9639 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9662 9640 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
9663 9641 }
9664 9642 .celltoolbar select::-moz-placeholder {
9665 9643 color: #999999;
9666 9644 opacity: 1;
9667 9645 }
9668 9646 .celltoolbar select:-ms-input-placeholder {
9669 9647 color: #999999;
9670 9648 }
9671 9649 .celltoolbar select::-webkit-input-placeholder {
9672 9650 color: #999999;
9673 9651 }
9674 9652 .celltoolbar select[disabled],
9675 9653 .celltoolbar select[readonly],
9676 9654 fieldset[disabled] .celltoolbar select {
9677 9655 cursor: not-allowed;
9678 9656 background-color: #eeeeee;
9679 9657 opacity: 1;
9680 9658 }
9681 9659 textarea.celltoolbar select {
9682 9660 height: auto;
9683 9661 }
9684 9662 select.celltoolbar select {
9685 9663 height: 30px;
9686 9664 line-height: 30px;
9687 9665 }
9688 9666 textarea.celltoolbar select,
9689 9667 select[multiple].celltoolbar select {
9690 9668 height: auto;
9691 9669 }
9692 9670 .celltoolbar label {
9693 9671 margin-left: 5px;
9694 9672 margin-right: 5px;
9695 9673 }
9696 9674 .completions {
9697 9675 position: absolute;
9698 9676 z-index: 10;
9699 9677 overflow: hidden;
9700 9678 border: 1px solid #ababab;
9701 9679 border-radius: 4px;
9702 9680 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
9703 9681 box-shadow: 0px 6px 10px -1px #adadad;
9704 9682 }
9705 9683 .completions select {
9706 9684 background: white;
9707 9685 outline: none;
9708 9686 border: none;
9709 9687 padding: 0px;
9710 9688 margin: 0px;
9711 9689 overflow: auto;
9712 9690 font-family: monospace;
9713 9691 font-size: 110%;
9714 9692 color: #000000;
9715 9693 width: auto;
9716 9694 }
9717 9695 .completions select option.context {
9718 9696 color: #3071a9;
9719 9697 }
9720 9698 #kernel_selector_widget {
9721 9699 margin-right: 1em;
9722 9700 float: right;
9723 9701 }
9724 9702 #kernel_selector_widget > button {
9725 9703 display: inline-block;
9726 9704 margin-bottom: 0;
9727 9705 font-weight: normal;
9728 9706 text-align: center;
9729 9707 vertical-align: middle;
9730 9708 cursor: pointer;
9731 9709 background-image: none;
9732 9710 border: 1px solid transparent;
9733 9711 white-space: nowrap;
9734 9712 padding: 6px 12px;
9735 9713 font-size: 13px;
9736 9714 line-height: 1.42857143;
9737 9715 border-radius: 4px;
9738 9716 -webkit-user-select: none;
9739 9717 -moz-user-select: none;
9740 9718 -ms-user-select: none;
9741 9719 user-select: none;
9742 9720 color: #333333;
9743 9721 background-color: #ffffff;
9744 9722 border-color: #cccccc;
9745 9723 padding: 5px 10px;
9746 9724 font-size: 12px;
9747 9725 line-height: 1.5;
9748 9726 border-radius: 3px;
9749 9727 }
9750 9728 #kernel_selector_widget > button:focus,
9751 9729 #kernel_selector_widget > button:active:focus,
9752 9730 #kernel_selector_widget > button.active:focus {
9753 9731 outline: thin dotted;
9754 9732 outline: 5px auto -webkit-focus-ring-color;
9755 9733 outline-offset: -2px;
9756 9734 }
9757 9735 #kernel_selector_widget > button:hover,
9758 9736 #kernel_selector_widget > button:focus {
9759 9737 color: #333333;
9760 9738 text-decoration: none;
9761 9739 }
9762 9740 #kernel_selector_widget > button:active,
9763 9741 #kernel_selector_widget > button.active {
9764 9742 outline: 0;
9765 9743 background-image: none;
9766 9744 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9767 9745 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9768 9746 }
9769 9747 #kernel_selector_widget > button.disabled,
9770 9748 #kernel_selector_widget > button[disabled],
9771 9749 fieldset[disabled] #kernel_selector_widget > button {
9772 9750 cursor: not-allowed;
9773 9751 pointer-events: none;
9774 9752 opacity: 0.65;
9775 9753 filter: alpha(opacity=65);
9776 9754 -webkit-box-shadow: none;
9777 9755 box-shadow: none;
9778 9756 }
9779 9757 #kernel_selector_widget > button:hover,
9780 9758 #kernel_selector_widget > button:focus,
9781 9759 #kernel_selector_widget > button:active,
9782 9760 #kernel_selector_widget > button.active,
9783 9761 .open .dropdown-toggle#kernel_selector_widget > button {
9784 9762 color: #333333;
9785 9763 background-color: #ebebeb;
9786 9764 border-color: #adadad;
9787 9765 }
9788 9766 #kernel_selector_widget > button:active,
9789 9767 #kernel_selector_widget > button.active,
9790 9768 .open .dropdown-toggle#kernel_selector_widget > button {
9791 9769 background-image: none;
9792 9770 }
9793 9771 #kernel_selector_widget > button.disabled,
9794 9772 #kernel_selector_widget > button[disabled],
9795 9773 fieldset[disabled] #kernel_selector_widget > button,
9796 9774 #kernel_selector_widget > button.disabled:hover,
9797 9775 #kernel_selector_widget > button[disabled]:hover,
9798 9776 fieldset[disabled] #kernel_selector_widget > button:hover,
9799 9777 #kernel_selector_widget > button.disabled:focus,
9800 9778 #kernel_selector_widget > button[disabled]:focus,
9801 9779 fieldset[disabled] #kernel_selector_widget > button:focus,
9802 9780 #kernel_selector_widget > button.disabled:active,
9803 9781 #kernel_selector_widget > button[disabled]:active,
9804 9782 fieldset[disabled] #kernel_selector_widget > button:active,
9805 9783 #kernel_selector_widget > button.disabled.active,
9806 9784 #kernel_selector_widget > button[disabled].active,
9807 9785 fieldset[disabled] #kernel_selector_widget > button.active {
9808 9786 background-color: #ffffff;
9809 9787 border-color: #cccccc;
9810 9788 }
9811 9789 #kernel_selector_widget > button .badge {
9812 9790 color: #ffffff;
9813 9791 background-color: #333333;
9814 9792 }
9815 9793 #kernel_selector_widget > button > span.caret {
9816 9794 margin-top: 0px;
9817 9795 }
9818 9796 #menubar {
9819 9797 margin-top: 0px;
9820 9798 margin-bottom: -24px;
9821 9799 position: relative;
9822 9800 box-sizing: border-box;
9823 9801 -moz-box-sizing: border-box;
9824 9802 -webkit-box-sizing: border-box;
9825 9803 }
9826 9804 #menubar .navbar {
9827 9805 border-top: 1px;
9828 9806 border-radius: 0px 0px 4px 4px;
9829 9807 margin-bottom: 23px;
9830 9808 }
9831 9809 #menubar .navbar-toggle {
9832 9810 float: left;
9833 9811 }
9834 9812 #menubar .navbar-collapse {
9835 9813 clear: left;
9836 9814 }
9837 9815 #menubar li.dropdown {
9838 9816 line-height: 12px;
9839 9817 }
9840 9818 #menubar li.dropdown a {
9841 9819 padding-top: 6px;
9842 9820 padding-bottom: 5px;
9843 9821 }
9844 9822 #menubar ul.navbar-right {
9845 9823 padding-top: 2px;
9846 9824 margin-bottom: 0px;
9847 9825 }
9848 9826 .nav-wrapper {
9849 9827 border-bottom: 1px solid #e7e7e7;
9850 9828 }
9851 9829 i.menu-icon {
9852 9830 padding-top: 4px;
9853 9831 }
9854 9832 ul#help_menu li a {
9855 9833 overflow: hidden;
9856 9834 padding-right: 2.2em;
9857 9835 }
9858 9836 ul#help_menu li a i {
9859 9837 margin-right: -1.2em;
9860 9838 }
9861 9839 #menus {
9862 9840 min-height: 30px;
9863 9841 }
9864 9842 .dropdown-submenu {
9865 9843 position: relative;
9866 9844 }
9867 9845 .dropdown-submenu > .dropdown-menu {
9868 9846 top: 0;
9869 9847 left: 100%;
9870 9848 margin-top: -6px;
9871 9849 margin-left: -1px;
9872 9850 -webkit-border-radius: 0 6px 6px 6px;
9873 9851 -moz-border-radius: 0 6px 6px 6px;
9874 9852 border-radius: 0 6px 6px 6px;
9875 9853 }
9876 9854 .dropdown-submenu:hover > .dropdown-menu {
9877 9855 display: block;
9878 9856 }
9879 9857 .dropdown-submenu > a:after {
9880 9858 display: block;
9881 9859 content: " ";
9882 9860 float: right;
9883 9861 width: 0;
9884 9862 height: 0;
9885 9863 border-color: transparent;
9886 9864 border-style: solid;
9887 9865 border-width: 5px 0 5px 5px;
9888 9866 border-left-color: #cccccc;
9889 9867 margin-top: 5px;
9890 9868 margin-right: -10px;
9891 9869 }
9892 9870 .dropdown-submenu:hover > a:after {
9893 9871 border-left-color: #ffffff;
9894 9872 }
9895 9873 .dropdown-submenu.pull-left {
9896 9874 float: none;
9897 9875 }
9898 9876 .dropdown-submenu.pull-left > .dropdown-menu {
9899 9877 left: -100%;
9900 9878 margin-left: 10px;
9901 9879 -webkit-border-radius: 6px 0 6px 6px;
9902 9880 -moz-border-radius: 6px 0 6px 6px;
9903 9881 border-radius: 6px 0 6px 6px;
9904 9882 }
9905 9883 #notification_area {
9906 9884 float: right !important;
9907 9885 float: right;
9908 9886 z-index: 10;
9909 9887 }
9910 9888 .indicator_area {
9911 9889 color: #777777;
9912 9890 padding: 4px 3px;
9913 9891 margin: 0px;
9914 9892 width: 11px;
9915 9893 z-index: 10;
9916 9894 text-align: center;
9917 9895 }
9918 9896 #kernel_indicator {
9919 9897 float: right !important;
9920 9898 float: right;
9921 9899 color: #777777;
9922 9900 padding: 4px 3px;
9923 9901 margin: 0px;
9924 9902 width: 11px;
9925 9903 z-index: 10;
9926 9904 text-align: center;
9927 9905 margin-right: 12px;
9928 9906 }
9929 9907 #modal_indicator {
9930 9908 float: right !important;
9931 9909 float: right;
9932 9910 color: #777777;
9933 9911 padding: 4px 3px;
9934 9912 margin: 0px;
9935 9913 width: 11px;
9936 9914 z-index: 10;
9937 9915 text-align: center;
9938 9916 margin-right: 5px;
9939 9917 }
9940 9918 .edit_mode_icon:before {
9941 9919 display: inline-block;
9942 9920 font: normal normal normal 14px/1 FontAwesome;
9943 9921 font-size: inherit;
9944 9922 text-rendering: auto;
9945 9923 -webkit-font-smoothing: antialiased;
9946 9924 -moz-osx-font-smoothing: grayscale;
9947 9925 content: "\f040";
9948 9926 }
9949 9927 .edit_mode_icon:before.pull-left {
9950 9928 margin-right: .3em;
9951 9929 }
9952 9930 .edit_mode_icon:before.pull-right {
9953 9931 margin-left: .3em;
9954 9932 }
9955 9933 .command_mode_icon:before {
9956 9934 display: inline-block;
9957 9935 font: normal normal normal 14px/1 FontAwesome;
9958 9936 font-size: inherit;
9959 9937 text-rendering: auto;
9960 9938 -webkit-font-smoothing: antialiased;
9961 9939 -moz-osx-font-smoothing: grayscale;
9962 9940 content: ' ';
9963 9941 }
9964 9942 .command_mode_icon:before.pull-left {
9965 9943 margin-right: .3em;
9966 9944 }
9967 9945 .command_mode_icon:before.pull-right {
9968 9946 margin-left: .3em;
9969 9947 }
9970 9948 .kernel_idle_icon:before {
9971 9949 display: inline-block;
9972 9950 font: normal normal normal 14px/1 FontAwesome;
9973 9951 font-size: inherit;
9974 9952 text-rendering: auto;
9975 9953 -webkit-font-smoothing: antialiased;
9976 9954 -moz-osx-font-smoothing: grayscale;
9977 9955 content: "\f10c";
9978 9956 }
9979 9957 .kernel_idle_icon:before.pull-left {
9980 9958 margin-right: .3em;
9981 9959 }
9982 9960 .kernel_idle_icon:before.pull-right {
9983 9961 margin-left: .3em;
9984 9962 }
9985 9963 .kernel_busy_icon:before {
9986 9964 display: inline-block;
9987 9965 font: normal normal normal 14px/1 FontAwesome;
9988 9966 font-size: inherit;
9989 9967 text-rendering: auto;
9990 9968 -webkit-font-smoothing: antialiased;
9991 9969 -moz-osx-font-smoothing: grayscale;
9992 9970 content: "\f111";
9993 9971 }
9994 9972 .kernel_busy_icon:before.pull-left {
9995 9973 margin-right: .3em;
9996 9974 }
9997 9975 .kernel_busy_icon:before.pull-right {
9998 9976 margin-left: .3em;
9999 9977 }
10000 9978 .kernel_dead_icon:before {
10001 9979 display: inline-block;
10002 9980 font: normal normal normal 14px/1 FontAwesome;
10003 9981 font-size: inherit;
10004 9982 text-rendering: auto;
10005 9983 -webkit-font-smoothing: antialiased;
10006 9984 -moz-osx-font-smoothing: grayscale;
10007 9985 content: "\f1e2";
10008 9986 }
10009 9987 .kernel_dead_icon:before.pull-left {
10010 9988 margin-right: .3em;
10011 9989 }
10012 9990 .kernel_dead_icon:before.pull-right {
10013 9991 margin-left: .3em;
10014 9992 }
10015 9993 .kernel_disconnected_icon:before {
10016 9994 display: inline-block;
10017 9995 font: normal normal normal 14px/1 FontAwesome;
10018 9996 font-size: inherit;
10019 9997 text-rendering: auto;
10020 9998 -webkit-font-smoothing: antialiased;
10021 9999 -moz-osx-font-smoothing: grayscale;
10022 10000 content: "\f127";
10023 10001 }
10024 10002 .kernel_disconnected_icon:before.pull-left {
10025 10003 margin-right: .3em;
10026 10004 }
10027 10005 .kernel_disconnected_icon:before.pull-right {
10028 10006 margin-left: .3em;
10029 10007 }
10030 10008 .notification_widget {
10031 10009 color: #777777;
10032 10010 padding: 1px 12px;
10033 10011 margin: 2px 4px;
10034 10012 z-index: 10;
10035 10013 background: rgba(240, 240, 240, 0.5);
10036 10014 float: right !important;
10037 10015 float: right;
10038 10016 box-sizing: border-box;
10039 10017 -moz-box-sizing: border-box;
10040 10018 -webkit-box-sizing: border-box;
10041 10019 display: inline-block;
10042 10020 margin-bottom: 0;
10043 10021 font-weight: normal;
10044 10022 text-align: center;
10045 10023 vertical-align: middle;
10046 10024 cursor: pointer;
10047 10025 background-image: none;
10048 10026 border: 1px solid transparent;
10049 10027 white-space: nowrap;
10050 10028 padding: 6px 12px;
10051 10029 font-size: 13px;
10052 10030 line-height: 1.42857143;
10053 10031 border-radius: 4px;
10054 10032 -webkit-user-select: none;
10055 10033 -moz-user-select: none;
10056 10034 -ms-user-select: none;
10057 10035 user-select: none;
10058 10036 color: #333333;
10059 10037 background-color: #ffffff;
10060 10038 border-color: #cccccc;
10061 10039 padding: 1px 5px;
10062 10040 font-size: 12px;
10063 10041 line-height: 1.5;
10064 10042 border-radius: 3px;
10065 10043 }
10066 10044 .notification_widget:focus,
10067 10045 .notification_widget:active:focus,
10068 10046 .notification_widget.active:focus {
10069 10047 outline: thin dotted;
10070 10048 outline: 5px auto -webkit-focus-ring-color;
10071 10049 outline-offset: -2px;
10072 10050 }
10073 10051 .notification_widget:hover,
10074 10052 .notification_widget:focus {
10075 10053 color: #333333;
10076 10054 text-decoration: none;
10077 10055 }
10078 10056 .notification_widget:active,
10079 10057 .notification_widget.active {
10080 10058 outline: 0;
10081 10059 background-image: none;
10082 10060 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10083 10061 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10084 10062 }
10085 10063 .notification_widget.disabled,
10086 10064 .notification_widget[disabled],
10087 10065 fieldset[disabled] .notification_widget {
10088 10066 cursor: not-allowed;
10089 10067 pointer-events: none;
10090 10068 opacity: 0.65;
10091 10069 filter: alpha(opacity=65);
10092 10070 -webkit-box-shadow: none;
10093 10071 box-shadow: none;
10094 10072 }
10095 10073 .notification_widget:hover,
10096 10074 .notification_widget:focus,
10097 10075 .notification_widget:active,
10098 10076 .notification_widget.active,
10099 10077 .open .dropdown-toggle.notification_widget {
10100 10078 color: #333333;
10101 10079 background-color: #ebebeb;
10102 10080 border-color: #adadad;
10103 10081 }
10104 10082 .notification_widget:active,
10105 10083 .notification_widget.active,
10106 10084 .open .dropdown-toggle.notification_widget {
10107 10085 background-image: none;
10108 10086 }
10109 10087 .notification_widget.disabled,
10110 10088 .notification_widget[disabled],
10111 10089 fieldset[disabled] .notification_widget,
10112 10090 .notification_widget.disabled:hover,
10113 10091 .notification_widget[disabled]:hover,
10114 10092 fieldset[disabled] .notification_widget:hover,
10115 10093 .notification_widget.disabled:focus,
10116 10094 .notification_widget[disabled]:focus,
10117 10095 fieldset[disabled] .notification_widget:focus,
10118 10096 .notification_widget.disabled:active,
10119 10097 .notification_widget[disabled]:active,
10120 10098 fieldset[disabled] .notification_widget:active,
10121 10099 .notification_widget.disabled.active,
10122 10100 .notification_widget[disabled].active,
10123 10101 fieldset[disabled] .notification_widget.active {
10124 10102 background-color: #ffffff;
10125 10103 border-color: #cccccc;
10126 10104 }
10127 10105 .notification_widget .badge {
10128 10106 color: #ffffff;
10129 10107 background-color: #333333;
10130 10108 }
10131 10109 .notification_widget.span {
10132 10110 padding-right: 2px;
10133 10111 }
10134 10112 .notification_widget.warning {
10135 10113 color: #ffffff;
10136 10114 background-color: #f0ad4e;
10137 10115 border-color: #eea236;
10138 10116 }
10139 10117 .notification_widget.warning:hover,
10140 10118 .notification_widget.warning:focus,
10141 10119 .notification_widget.warning:active,
10142 10120 .notification_widget.warning.active,
10143 10121 .open .dropdown-toggle.notification_widget.warning {
10144 10122 color: #ffffff;
10145 10123 background-color: #ed9c28;
10146 10124 border-color: #d58512;
10147 10125 }
10148 10126 .notification_widget.warning:active,
10149 10127 .notification_widget.warning.active,
10150 10128 .open .dropdown-toggle.notification_widget.warning {
10151 10129 background-image: none;
10152 10130 }
10153 10131 .notification_widget.warning.disabled,
10154 10132 .notification_widget.warning[disabled],
10155 10133 fieldset[disabled] .notification_widget.warning,
10156 10134 .notification_widget.warning.disabled:hover,
10157 10135 .notification_widget.warning[disabled]:hover,
10158 10136 fieldset[disabled] .notification_widget.warning:hover,
10159 10137 .notification_widget.warning.disabled:focus,
10160 10138 .notification_widget.warning[disabled]:focus,
10161 10139 fieldset[disabled] .notification_widget.warning:focus,
10162 10140 .notification_widget.warning.disabled:active,
10163 10141 .notification_widget.warning[disabled]:active,
10164 10142 fieldset[disabled] .notification_widget.warning:active,
10165 10143 .notification_widget.warning.disabled.active,
10166 10144 .notification_widget.warning[disabled].active,
10167 10145 fieldset[disabled] .notification_widget.warning.active {
10168 10146 background-color: #f0ad4e;
10169 10147 border-color: #eea236;
10170 10148 }
10171 10149 .notification_widget.warning .badge {
10172 10150 color: #f0ad4e;
10173 10151 background-color: #ffffff;
10174 10152 }
10175 10153 .notification_widget.success {
10176 10154 color: #ffffff;
10177 10155 background-color: #5cb85c;
10178 10156 border-color: #4cae4c;
10179 10157 }
10180 10158 .notification_widget.success:hover,
10181 10159 .notification_widget.success:focus,
10182 10160 .notification_widget.success:active,
10183 10161 .notification_widget.success.active,
10184 10162 .open .dropdown-toggle.notification_widget.success {
10185 10163 color: #ffffff;
10186 10164 background-color: #47a447;
10187 10165 border-color: #398439;
10188 10166 }
10189 10167 .notification_widget.success:active,
10190 10168 .notification_widget.success.active,
10191 10169 .open .dropdown-toggle.notification_widget.success {
10192 10170 background-image: none;
10193 10171 }
10194 10172 .notification_widget.success.disabled,
10195 10173 .notification_widget.success[disabled],
10196 10174 fieldset[disabled] .notification_widget.success,
10197 10175 .notification_widget.success.disabled:hover,
10198 10176 .notification_widget.success[disabled]:hover,
10199 10177 fieldset[disabled] .notification_widget.success:hover,
10200 10178 .notification_widget.success.disabled:focus,
10201 10179 .notification_widget.success[disabled]:focus,
10202 10180 fieldset[disabled] .notification_widget.success:focus,
10203 10181 .notification_widget.success.disabled:active,
10204 10182 .notification_widget.success[disabled]:active,
10205 10183 fieldset[disabled] .notification_widget.success:active,
10206 10184 .notification_widget.success.disabled.active,
10207 10185 .notification_widget.success[disabled].active,
10208 10186 fieldset[disabled] .notification_widget.success.active {
10209 10187 background-color: #5cb85c;
10210 10188 border-color: #4cae4c;
10211 10189 }
10212 10190 .notification_widget.success .badge {
10213 10191 color: #5cb85c;
10214 10192 background-color: #ffffff;
10215 10193 }
10216 10194 .notification_widget.info {
10217 10195 color: #ffffff;
10218 10196 background-color: #5bc0de;
10219 10197 border-color: #46b8da;
10220 10198 }
10221 10199 .notification_widget.info:hover,
10222 10200 .notification_widget.info:focus,
10223 10201 .notification_widget.info:active,
10224 10202 .notification_widget.info.active,
10225 10203 .open .dropdown-toggle.notification_widget.info {
10226 10204 color: #ffffff;
10227 10205 background-color: #39b3d7;
10228 10206 border-color: #269abc;
10229 10207 }
10230 10208 .notification_widget.info:active,
10231 10209 .notification_widget.info.active,
10232 10210 .open .dropdown-toggle.notification_widget.info {
10233 10211 background-image: none;
10234 10212 }
10235 10213 .notification_widget.info.disabled,
10236 10214 .notification_widget.info[disabled],
10237 10215 fieldset[disabled] .notification_widget.info,
10238 10216 .notification_widget.info.disabled:hover,
10239 10217 .notification_widget.info[disabled]:hover,
10240 10218 fieldset[disabled] .notification_widget.info:hover,
10241 10219 .notification_widget.info.disabled:focus,
10242 10220 .notification_widget.info[disabled]:focus,
10243 10221 fieldset[disabled] .notification_widget.info:focus,
10244 10222 .notification_widget.info.disabled:active,
10245 10223 .notification_widget.info[disabled]:active,
10246 10224 fieldset[disabled] .notification_widget.info:active,
10247 10225 .notification_widget.info.disabled.active,
10248 10226 .notification_widget.info[disabled].active,
10249 10227 fieldset[disabled] .notification_widget.info.active {
10250 10228 background-color: #5bc0de;
10251 10229 border-color: #46b8da;
10252 10230 }
10253 10231 .notification_widget.info .badge {
10254 10232 color: #5bc0de;
10255 10233 background-color: #ffffff;
10256 10234 }
10257 10235 .notification_widget.danger {
10258 10236 color: #ffffff;
10259 10237 background-color: #d9534f;
10260 10238 border-color: #d43f3a;
10261 10239 }
10262 10240 .notification_widget.danger:hover,
10263 10241 .notification_widget.danger:focus,
10264 10242 .notification_widget.danger:active,
10265 10243 .notification_widget.danger.active,
10266 10244 .open .dropdown-toggle.notification_widget.danger {
10267 10245 color: #ffffff;
10268 10246 background-color: #d2322d;
10269 10247 border-color: #ac2925;
10270 10248 }
10271 10249 .notification_widget.danger:active,
10272 10250 .notification_widget.danger.active,
10273 10251 .open .dropdown-toggle.notification_widget.danger {
10274 10252 background-image: none;
10275 10253 }
10276 10254 .notification_widget.danger.disabled,
10277 10255 .notification_widget.danger[disabled],
10278 10256 fieldset[disabled] .notification_widget.danger,
10279 10257 .notification_widget.danger.disabled:hover,
10280 10258 .notification_widget.danger[disabled]:hover,
10281 10259 fieldset[disabled] .notification_widget.danger:hover,
10282 10260 .notification_widget.danger.disabled:focus,
10283 10261 .notification_widget.danger[disabled]:focus,
10284 10262 fieldset[disabled] .notification_widget.danger:focus,
10285 10263 .notification_widget.danger.disabled:active,
10286 10264 .notification_widget.danger[disabled]:active,
10287 10265 fieldset[disabled] .notification_widget.danger:active,
10288 10266 .notification_widget.danger.disabled.active,
10289 10267 .notification_widget.danger[disabled].active,
10290 10268 fieldset[disabled] .notification_widget.danger.active {
10291 10269 background-color: #d9534f;
10292 10270 border-color: #d43f3a;
10293 10271 }
10294 10272 .notification_widget.danger .badge {
10295 10273 color: #d9534f;
10296 10274 background-color: #ffffff;
10297 10275 }
10298 10276 div#pager {
10299 10277 background-color: #ffffff;
10300 10278 font-size: 14px;
10301 10279 line-height: 20px;
10302 10280 overflow: hidden;
10303 10281 display: none;
10304 10282 position: fixed;
10305 10283 bottom: 0px;
10306 10284 width: 100%;
10307 10285 max-height: 50%;
10308 10286 padding-top: 7px;
10309 10287 /* Display over codemirror */
10310 10288 z-index: 100;
10311 10289 /* Hack which prevents jquery ui resizable from changing top. */
10312 10290 top: inherit !important;
10313 10291 }
10314 10292 div#pager pre {
10315 10293 line-height: 1.21429em;
10316 10294 color: #000000;
10317 10295 background-color: #f7f7f7;
10318 10296 padding: 0.4em;
10319 10297 }
10320 10298 div#pager #pager-button-area {
10321 10299 position: absolute;
10322 10300 top: 7px;
10323 10301 right: 20px;
10324 10302 }
10325 10303 div#pager #pager-contents {
10326 10304 position: relative;
10327 10305 overflow: auto;
10328 10306 width: 100%;
10329 10307 height: 100%;
10330 10308 }
10331 10309 div#pager #pager-contents #pager-container {
10332 10310 position: relative;
10333 10311 padding: 15px 0px;
10334 10312 box-sizing: border-box;
10335 10313 -moz-box-sizing: border-box;
10336 10314 -webkit-box-sizing: border-box;
10337 10315 }
10338 10316 div#pager .ui-resizable-handle {
10339 10317 top: 0px;
10340 10318 height: 7px;
10341 10319 background: #cfcfcf;
10342 10320 border-bottom: 1px solid #ababab;
10343 10321 }
10344 10322 .quickhelp {
10345 10323 /* Old browsers */
10346 10324 display: -webkit-box;
10347 10325 -webkit-box-orient: horizontal;
10348 10326 -webkit-box-align: stretch;
10349 10327 display: -moz-box;
10350 10328 -moz-box-orient: horizontal;
10351 10329 -moz-box-align: stretch;
10352 10330 display: box;
10353 10331 box-orient: horizontal;
10354 10332 box-align: stretch;
10355 10333 /* Modern browsers */
10356 10334 display: flex;
10357 10335 flex-direction: row;
10358 10336 align-items: stretch;
10359 10337 }
10360 10338 .shortcut_key {
10361 10339 display: inline-block;
10362 10340 width: 20ex;
10363 10341 text-align: right;
10364 10342 font-family: monospace;
10365 10343 }
10366 10344 .shortcut_descr {
10367 10345 display: inline-block;
10368 10346 /* Old browsers */
10369 10347 -webkit-box-flex: 1;
10370 10348 -moz-box-flex: 1;
10371 10349 box-flex: 1;
10372 10350 /* Modern browsers */
10373 10351 flex: 1;
10374 10352 }
10375 10353 span#save_widget {
10376 10354 padding: 0px 5px;
10377 10355 margin-top: 12px;
10378 10356 }
10379 10357 span#checkpoint_status,
10380 10358 span#autosave_status {
10381 10359 font-size: small;
10382 10360 }
10383 10361 @media (max-width: 767px) {
10384 10362 span#save_widget {
10385 10363 font-size: small;
10386 10364 }
10387 10365 span#checkpoint_status,
10388 10366 span#autosave_status {
10389 10367 font-size: x-small;
10390 10368 }
10391 10369 }
10392 10370 @media (max-width: 767px) {
10393 10371 span#checkpoint_status,
10394 10372 span#autosave_status {
10395 10373 display: none;
10396 10374 }
10397 10375 }
10398 10376 @media (min-width: 768px) and (max-width: 979px) {
10399 10377 span#checkpoint_status {
10400 10378 display: none;
10401 10379 }
10402 10380 span#autosave_status {
10403 10381 font-size: x-small;
10404 10382 }
10405 10383 }
10406 10384 .toolbar {
10407 10385 padding: 0px;
10408 10386 margin-left: -5px;
10409 10387 margin-top: -5px;
10410 10388 margin-bottom: 5px;
10411 10389 box-sizing: border-box;
10412 10390 -moz-box-sizing: border-box;
10413 10391 -webkit-box-sizing: border-box;
10414 10392 }
10415 10393 .toolbar select,
10416 10394 .toolbar label {
10417 10395 width: auto;
10418 10396 vertical-align: middle;
10419 10397 margin-right: 2px;
10420 10398 margin-bottom: 0px;
10421 10399 display: inline;
10422 10400 font-size: 92%;
10423 10401 margin-left: 0.3em;
10424 10402 margin-right: 0.3em;
10425 10403 padding: 0px;
10426 10404 padding-top: 3px;
10427 10405 }
10428 10406 .toolbar .btn {
10429 10407 padding: 2px 8px;
10430 10408 }
10431 10409 .toolbar .btn-group {
10432 10410 margin-top: 0px;
10433 10411 margin-left: 5px;
10434 10412 }
10435 10413 #maintoolbar {
10436 10414 margin-bottom: -3px;
10437 10415 margin-top: -8px;
10438 10416 border: 0px;
10439 10417 min-height: 27px;
10440 10418 margin-left: 32px;
10441 10419 padding-top: 11px;
10442 10420 padding-bottom: 3px;
10443 10421 }
10444 10422 #maintoolbar .navbar-text {
10445 10423 float: none;
10446 10424 vertical-align: middle;
10447 10425 text-align: right;
10448 10426 margin-left: 5px;
10449 10427 margin-right: 0px;
10450 10428 margin-top: 0px;
10451 10429 }
10452 10430 .select-xs {
10453 10431 height: 24px;
10454 10432 }
10455 10433 /**
10456 10434 * Primary styles
10457 10435 *
10458 10436 * Author: IPython Development Team
10459 10437 */
10460 10438 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
10461 10439 * of chance of beeing generated from the ../less/[samename].less file, you can
10462 10440 * try to get back the less file by reverting somme commit in history
10463 10441 **/
10464 10442 /*
10465 10443 * We'll try to get something pretty, so we
10466 10444 * have some strange css to have the scroll bar on
10467 10445 * the left with fix button on the top right of the tooltip
10468 10446 */
10469 10447 @-moz-keyframes fadeOut {
10470 10448 from {
10471 10449 opacity: 1;
10472 10450 }
10473 10451 to {
10474 10452 opacity: 0;
10475 10453 }
10476 10454 }
10477 10455 @-webkit-keyframes fadeOut {
10478 10456 from {
10479 10457 opacity: 1;
10480 10458 }
10481 10459 to {
10482 10460 opacity: 0;
10483 10461 }
10484 10462 }
10485 10463 @-moz-keyframes fadeIn {
10486 10464 from {
10487 10465 opacity: 0;
10488 10466 }
10489 10467 to {
10490 10468 opacity: 1;
10491 10469 }
10492 10470 }
10493 10471 @-webkit-keyframes fadeIn {
10494 10472 from {
10495 10473 opacity: 0;
10496 10474 }
10497 10475 to {
10498 10476 opacity: 1;
10499 10477 }
10500 10478 }
10501 10479 /*properties of tooltip after "expand"*/
10502 10480 .bigtooltip {
10503 10481 overflow: auto;
10504 10482 height: 200px;
10505 10483 -webkit-transition-property: height;
10506 10484 -webkit-transition-duration: 500ms;
10507 10485 -moz-transition-property: height;
10508 10486 -moz-transition-duration: 500ms;
10509 10487 transition-property: height;
10510 10488 transition-duration: 500ms;
10511 10489 }
10512 10490 /*properties of tooltip before "expand"*/
10513 10491 .smalltooltip {
10514 10492 -webkit-transition-property: height;
10515 10493 -webkit-transition-duration: 500ms;
10516 10494 -moz-transition-property: height;
10517 10495 -moz-transition-duration: 500ms;
10518 10496 transition-property: height;
10519 10497 transition-duration: 500ms;
10520 10498 text-overflow: ellipsis;
10521 10499 overflow: hidden;
10522 10500 height: 80px;
10523 10501 }
10524 10502 .tooltipbuttons {
10525 10503 position: absolute;
10526 10504 padding-right: 15px;
10527 10505 top: 0px;
10528 10506 right: 0px;
10529 10507 }
10530 10508 .tooltiptext {
10531 10509 /*avoid the button to overlap on some docstring*/
10532 10510 padding-right: 30px;
10533 10511 }
10534 10512 .ipython_tooltip {
10535 10513 max-width: 700px;
10536 10514 /*fade-in animation when inserted*/
10537 10515 -webkit-animation: fadeOut 400ms;
10538 10516 -moz-animation: fadeOut 400ms;
10539 10517 animation: fadeOut 400ms;
10540 10518 -webkit-animation: fadeIn 400ms;
10541 10519 -moz-animation: fadeIn 400ms;
10542 10520 animation: fadeIn 400ms;
10543 10521 vertical-align: middle;
10544 10522 background-color: #f7f7f7;
10545 10523 overflow: visible;
10546 10524 border: #ababab 1px solid;
10547 10525 outline: none;
10548 10526 padding: 3px;
10549 10527 margin: 0px;
10550 10528 padding-left: 7px;
10551 10529 font-family: monospace;
10552 10530 min-height: 50px;
10553 10531 -moz-box-shadow: 0px 6px 10px -1px #adadad;
10554 10532 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10555 10533 box-shadow: 0px 6px 10px -1px #adadad;
10556 10534 border-radius: 4px;
10557 10535 position: absolute;
10558 10536 z-index: 1000;
10559 10537 }
10560 10538 .ipython_tooltip a {
10561 10539 float: right;
10562 10540 }
10563 10541 .ipython_tooltip .tooltiptext pre {
10564 10542 border: 0;
10565 10543 border-radius: 0;
10566 10544 font-size: 100%;
10567 10545 background-color: #f7f7f7;
10568 10546 }
10569 10547 .pretooltiparrow {
10570 10548 left: 0px;
10571 10549 margin: 0px;
10572 10550 top: -16px;
10573 10551 width: 40px;
10574 10552 height: 16px;
10575 10553 overflow: hidden;
10576 10554 position: absolute;
10577 10555 }
10578 10556 .pretooltiparrow:before {
10579 10557 background-color: #f7f7f7;
10580 10558 border: 1px #ababab solid;
10581 10559 z-index: 11;
10582 10560 content: "";
10583 10561 position: absolute;
10584 10562 left: 15px;
10585 10563 top: 10px;
10586 10564 width: 25px;
10587 10565 height: 25px;
10588 10566 -webkit-transform: rotate(45deg);
10589 10567 -moz-transform: rotate(45deg);
10590 10568 -ms-transform: rotate(45deg);
10591 10569 -o-transform: rotate(45deg);
10592 10570 }
10593 10571 .terminal {
10594 10572 float: left;
10595 10573 border: black solid 5px;
10596 10574 font-family: "DejaVu Sans Mono", "Liberation Mono", monospace;
10597 10575 font-size: 11px;
10598 10576 color: white;
10599 10577 background: black;
10600 10578 }
10601 10579 .terminal-cursor {
10602 10580 color: black;
10603 10581 background: white;
10604 10582 }
10605 10583 #terminado-container {
10606 10584 margin: 8px;
10607 10585 }
10608 10586 /*# sourceMappingURL=../style/style.min.css.map */ No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now