##// END OF EJS Templates
Merge pull request #6235 from jdfreder/addclass...
Brian E. Granger -
r17949:a2e1c674 merge
parent child Browse files
Show More
This diff has been collapsed as it changes many lines, (10970 lines changed) Show them Hide them
@@ -0,0 +1,10970 b''
1 <!DOCTYPE html>
2 <html>
3 <head>
4
5 <meta charset="utf-8" />
6 <title>Notebook</title>
7
8 <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
9 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
10
11 <style type="text/css">
12 /*!
13 *
14 * Twitter Bootstrap
15 *
16 */
17 /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
18 html {
19 font-family: sans-serif;
20 -ms-text-size-adjust: 100%;
21 -webkit-text-size-adjust: 100%;
22 }
23 body {
24 margin: 0;
25 }
26 article,
27 aside,
28 details,
29 figcaption,
30 figure,
31 footer,
32 header,
33 hgroup,
34 main,
35 nav,
36 section,
37 summary {
38 display: block;
39 }
40 audio,
41 canvas,
42 progress,
43 video {
44 display: inline-block;
45 vertical-align: baseline;
46 }
47 audio:not([controls]) {
48 display: none;
49 height: 0;
50 }
51 [hidden],
52 template {
53 display: none;
54 }
55 a {
56 background: transparent;
57 }
58 a:active,
59 a:hover {
60 outline: 0;
61 }
62 abbr[title] {
63 border-bottom: 1px dotted;
64 }
65 b,
66 strong {
67 font-weight: bold;
68 }
69 dfn {
70 font-style: italic;
71 }
72 h1 {
73 font-size: 2em;
74 margin: 0.67em 0;
75 }
76 mark {
77 background: #ff0;
78 color: #000;
79 }
80 small {
81 font-size: 80%;
82 }
83 sub,
84 sup {
85 font-size: 75%;
86 line-height: 0;
87 position: relative;
88 vertical-align: baseline;
89 }
90 sup {
91 top: -0.5em;
92 }
93 sub {
94 bottom: -0.25em;
95 }
96 img {
97 border: 0;
98 }
99 svg:not(:root) {
100 overflow: hidden;
101 }
102 figure {
103 margin: 1em 40px;
104 }
105 hr {
106 -moz-box-sizing: content-box;
107 box-sizing: content-box;
108 height: 0;
109 }
110 pre {
111 overflow: auto;
112 }
113 code,
114 kbd,
115 pre,
116 samp {
117 font-family: monospace, monospace;
118 font-size: 1em;
119 }
120 button,
121 input,
122 optgroup,
123 select,
124 textarea {
125 color: inherit;
126 font: inherit;
127 margin: 0;
128 }
129 button {
130 overflow: visible;
131 }
132 button,
133 select {
134 text-transform: none;
135 }
136 button,
137 html input[type="button"],
138 input[type="reset"],
139 input[type="submit"] {
140 -webkit-appearance: button;
141 cursor: pointer;
142 }
143 button[disabled],
144 html input[disabled] {
145 cursor: default;
146 }
147 button::-moz-focus-inner,
148 input::-moz-focus-inner {
149 border: 0;
150 padding: 0;
151 }
152 input {
153 line-height: normal;
154 }
155 input[type="checkbox"],
156 input[type="radio"] {
157 box-sizing: border-box;
158 padding: 0;
159 }
160 input[type="number"]::-webkit-inner-spin-button,
161 input[type="number"]::-webkit-outer-spin-button {
162 height: auto;
163 }
164 input[type="search"] {
165 -webkit-appearance: textfield;
166 -moz-box-sizing: content-box;
167 -webkit-box-sizing: content-box;
168 box-sizing: content-box;
169 }
170 input[type="search"]::-webkit-search-cancel-button,
171 input[type="search"]::-webkit-search-decoration {
172 -webkit-appearance: none;
173 }
174 fieldset {
175 border: 1px solid #c0c0c0;
176 margin: 0 2px;
177 padding: 0.35em 0.625em 0.75em;
178 }
179 legend {
180 border: 0;
181 padding: 0;
182 }
183 textarea {
184 overflow: auto;
185 }
186 optgroup {
187 font-weight: bold;
188 }
189 table {
190 border-collapse: collapse;
191 border-spacing: 0;
192 }
193 td,
194 th {
195 padding: 0;
196 }
197 @media print {
198 * {
199 text-shadow: none !important;
200 color: #000 !important;
201 background: transparent !important;
202 box-shadow: none !important;
203 }
204 a,
205 a:visited {
206 text-decoration: underline;
207 }
208 a[href]:after {
209 content: " (" attr(href) ")";
210 }
211 abbr[title]:after {
212 content: " (" attr(title) ")";
213 }
214 a[href^="javascript:"]:after,
215 a[href^="#"]:after {
216 content: "";
217 }
218 pre,
219 blockquote {
220 border: 1px solid #999;
221 page-break-inside: avoid;
222 }
223 thead {
224 display: table-header-group;
225 }
226 tr,
227 img {
228 page-break-inside: avoid;
229 }
230 img {
231 max-width: 100% !important;
232 }
233 p,
234 h2,
235 h3 {
236 orphans: 3;
237 widows: 3;
238 }
239 h2,
240 h3 {
241 page-break-after: avoid;
242 }
243 select {
244 background: #fff !important;
245 }
246 .navbar {
247 display: none;
248 }
249 .table td,
250 .table th {
251 background-color: #fff !important;
252 }
253 .btn > .caret,
254 .dropup > .btn > .caret {
255 border-top-color: #000 !important;
256 }
257 .label {
258 border: 1px solid #000;
259 }
260 .table {
261 border-collapse: collapse !important;
262 }
263 .table-bordered th,
264 .table-bordered td {
265 border: 1px solid #ddd !important;
266 }
267 }
268 * {
269 -webkit-box-sizing: border-box;
270 -moz-box-sizing: border-box;
271 box-sizing: border-box;
272 }
273 *:before,
274 *:after {
275 -webkit-box-sizing: border-box;
276 -moz-box-sizing: border-box;
277 box-sizing: border-box;
278 }
279 html {
280 font-size: 62.5%;
281 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
282 }
283 body {
284 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
285 font-size: 13px;
286 line-height: 1.42857143;
287 color: #000000;
288 background-color: #ffffff;
289 }
290 input,
291 button,
292 select,
293 textarea {
294 font-family: inherit;
295 font-size: inherit;
296 line-height: inherit;
297 }
298 a {
299 color: #428bca;
300 text-decoration: none;
301 }
302 a:hover,
303 a:focus {
304 color: #2a6496;
305 text-decoration: underline;
306 }
307 a:focus {
308 outline: thin dotted;
309 outline: 5px auto -webkit-focus-ring-color;
310 outline-offset: -2px;
311 }
312 figure {
313 margin: 0;
314 }
315 img {
316 vertical-align: middle;
317 }
318 .img-responsive,
319 .thumbnail > img,
320 .thumbnail a > img,
321 .carousel-inner > .item > img,
322 .carousel-inner > .item > a > img {
323 display: block;
324 max-width: 100%;
325 height: auto;
326 }
327 .img-rounded {
328 border-radius: 6px;
329 }
330 .img-thumbnail {
331 padding: 4px;
332 line-height: 1.42857143;
333 background-color: #ffffff;
334 border: 1px solid #dddddd;
335 border-radius: 4px;
336 -webkit-transition: all 0.2s ease-in-out;
337 transition: all 0.2s ease-in-out;
338 display: inline-block;
339 max-width: 100%;
340 height: auto;
341 }
342 .img-circle {
343 border-radius: 50%;
344 }
345 hr {
346 margin-top: 18px;
347 margin-bottom: 18px;
348 border: 0;
349 border-top: 1px solid #eeeeee;
350 }
351 .sr-only {
352 position: absolute;
353 width: 1px;
354 height: 1px;
355 margin: -1px;
356 padding: 0;
357 overflow: hidden;
358 clip: rect(0, 0, 0, 0);
359 border: 0;
360 }
361 h1,
362 h2,
363 h3,
364 h4,
365 h5,
366 h6,
367 .h1,
368 .h2,
369 .h3,
370 .h4,
371 .h5,
372 .h6 {
373 font-family: inherit;
374 font-weight: 500;
375 line-height: 1.1;
376 color: inherit;
377 }
378 h1 small,
379 h2 small,
380 h3 small,
381 h4 small,
382 h5 small,
383 h6 small,
384 .h1 small,
385 .h2 small,
386 .h3 small,
387 .h4 small,
388 .h5 small,
389 .h6 small,
390 h1 .small,
391 h2 .small,
392 h3 .small,
393 h4 .small,
394 h5 .small,
395 h6 .small,
396 .h1 .small,
397 .h2 .small,
398 .h3 .small,
399 .h4 .small,
400 .h5 .small,
401 .h6 .small {
402 font-weight: normal;
403 line-height: 1;
404 color: #999999;
405 }
406 h1,
407 .h1,
408 h2,
409 .h2,
410 h3,
411 .h3 {
412 margin-top: 18px;
413 margin-bottom: 9px;
414 }
415 h1 small,
416 .h1 small,
417 h2 small,
418 .h2 small,
419 h3 small,
420 .h3 small,
421 h1 .small,
422 .h1 .small,
423 h2 .small,
424 .h2 .small,
425 h3 .small,
426 .h3 .small {
427 font-size: 65%;
428 }
429 h4,
430 .h4,
431 h5,
432 .h5,
433 h6,
434 .h6 {
435 margin-top: 9px;
436 margin-bottom: 9px;
437 }
438 h4 small,
439 .h4 small,
440 h5 small,
441 .h5 small,
442 h6 small,
443 .h6 small,
444 h4 .small,
445 .h4 .small,
446 h5 .small,
447 .h5 .small,
448 h6 .small,
449 .h6 .small {
450 font-size: 75%;
451 }
452 h1,
453 .h1 {
454 font-size: 33px;
455 }
456 h2,
457 .h2 {
458 font-size: 27px;
459 }
460 h3,
461 .h3 {
462 font-size: 23px;
463 }
464 h4,
465 .h4 {
466 font-size: 17px;
467 }
468 h5,
469 .h5 {
470 font-size: 13px;
471 }
472 h6,
473 .h6 {
474 font-size: 12px;
475 }
476 p {
477 margin: 0 0 9px;
478 }
479 .lead {
480 margin-bottom: 18px;
481 font-size: 14px;
482 font-weight: 200;
483 line-height: 1.4;
484 }
485 @media (min-width: 768px) {
486 .lead {
487 font-size: 19.5px;
488 }
489 }
490 small,
491 .small {
492 font-size: 85%;
493 }
494 cite {
495 font-style: normal;
496 }
497 .text-left {
498 text-align: left;
499 }
500 .text-right {
501 text-align: right;
502 }
503 .text-center {
504 text-align: center;
505 }
506 .text-justify {
507 text-align: justify;
508 }
509 .text-muted {
510 color: #999999;
511 }
512 .text-primary {
513 color: #428bca;
514 }
515 a.text-primary:hover {
516 color: #3071a9;
517 }
518 .text-success {
519 color: #3c763d;
520 }
521 a.text-success:hover {
522 color: #2b542c;
523 }
524 .text-info {
525 color: #31708f;
526 }
527 a.text-info:hover {
528 color: #245269;
529 }
530 .text-warning {
531 color: #8a6d3b;
532 }
533 a.text-warning:hover {
534 color: #66512c;
535 }
536 .text-danger {
537 color: #a94442;
538 }
539 a.text-danger:hover {
540 color: #843534;
541 }
542 .bg-primary {
543 color: #fff;
544 background-color: #428bca;
545 }
546 a.bg-primary:hover {
547 background-color: #3071a9;
548 }
549 .bg-success {
550 background-color: #dff0d8;
551 }
552 a.bg-success:hover {
553 background-color: #c1e2b3;
554 }
555 .bg-info {
556 background-color: #d9edf7;
557 }
558 a.bg-info:hover {
559 background-color: #afd9ee;
560 }
561 .bg-warning {
562 background-color: #fcf8e3;
563 }
564 a.bg-warning:hover {
565 background-color: #f7ecb5;
566 }
567 .bg-danger {
568 background-color: #f2dede;
569 }
570 a.bg-danger:hover {
571 background-color: #e4b9b9;
572 }
573 .page-header {
574 padding-bottom: 8px;
575 margin: 36px 0 18px;
576 border-bottom: 1px solid #eeeeee;
577 }
578 ul,
579 ol {
580 margin-top: 0;
581 margin-bottom: 9px;
582 }
583 ul ul,
584 ol ul,
585 ul ol,
586 ol ol {
587 margin-bottom: 0;
588 }
589 .list-unstyled {
590 padding-left: 0;
591 list-style: none;
592 }
593 .list-inline {
594 padding-left: 0;
595 list-style: none;
596 margin-left: -5px;
597 }
598 .list-inline > li {
599 display: inline-block;
600 padding-left: 5px;
601 padding-right: 5px;
602 }
603 dl {
604 margin-top: 0;
605 margin-bottom: 18px;
606 }
607 dt,
608 dd {
609 line-height: 1.42857143;
610 }
611 dt {
612 font-weight: bold;
613 }
614 dd {
615 margin-left: 0;
616 }
617 @media (min-width: 768px) {
618 .dl-horizontal dt {
619 float: left;
620 width: 160px;
621 clear: left;
622 text-align: right;
623 overflow: hidden;
624 text-overflow: ellipsis;
625 white-space: nowrap;
626 }
627 .dl-horizontal dd {
628 margin-left: 180px;
629 }
630 }
631 abbr[title],
632 abbr[data-original-title] {
633 cursor: help;
634 border-bottom: 1px dotted #999999;
635 }
636 .initialism {
637 font-size: 90%;
638 text-transform: uppercase;
639 }
640 blockquote {
641 padding: 9px 18px;
642 margin: 0 0 18px;
643 font-size: inherit;
644 border-left: 5px solid #eeeeee;
645 }
646 blockquote p:last-child,
647 blockquote ul:last-child,
648 blockquote ol:last-child {
649 margin-bottom: 0;
650 }
651 blockquote footer,
652 blockquote small,
653 blockquote .small {
654 display: block;
655 font-size: 80%;
656 line-height: 1.42857143;
657 color: #999999;
658 }
659 blockquote footer:before,
660 blockquote small:before,
661 blockquote .small:before {
662 content: '\2014 \00A0';
663 }
664 .blockquote-reverse,
665 blockquote.pull-right {
666 padding-right: 15px;
667 padding-left: 0;
668 border-right: 5px solid #eeeeee;
669 border-left: 0;
670 text-align: right;
671 }
672 .blockquote-reverse footer:before,
673 blockquote.pull-right footer:before,
674 .blockquote-reverse small:before,
675 blockquote.pull-right small:before,
676 .blockquote-reverse .small:before,
677 blockquote.pull-right .small:before {
678 content: '';
679 }
680 .blockquote-reverse footer:after,
681 blockquote.pull-right footer:after,
682 .blockquote-reverse small:after,
683 blockquote.pull-right small:after,
684 .blockquote-reverse .small:after,
685 blockquote.pull-right .small:after {
686 content: '\00A0 \2014';
687 }
688 blockquote:before,
689 blockquote:after {
690 content: "";
691 }
692 address {
693 margin-bottom: 18px;
694 font-style: normal;
695 line-height: 1.42857143;
696 }
697 code,
698 kbd,
699 pre,
700 samp {
701 font-family: monospace;
702 }
703 code {
704 padding: 2px 4px;
705 font-size: 90%;
706 color: #c7254e;
707 background-color: #f9f2f4;
708 white-space: nowrap;
709 border-radius: 4px;
710 }
711 kbd {
712 padding: 2px 4px;
713 font-size: 90%;
714 color: #ffffff;
715 background-color: #333333;
716 border-radius: 3px;
717 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
718 }
719 pre {
720 display: block;
721 padding: 8.5px;
722 margin: 0 0 9px;
723 font-size: 12px;
724 line-height: 1.42857143;
725 word-break: break-all;
726 word-wrap: break-word;
727 color: #333333;
728 background-color: #f5f5f5;
729 border: 1px solid #cccccc;
730 border-radius: 4px;
731 }
732 pre code {
733 padding: 0;
734 font-size: inherit;
735 color: inherit;
736 white-space: pre-wrap;
737 background-color: transparent;
738 border-radius: 0;
739 }
740 .pre-scrollable {
741 max-height: 340px;
742 overflow-y: scroll;
743 }
744 .container {
745 margin-right: auto;
746 margin-left: auto;
747 padding-left: 15px;
748 padding-right: 15px;
749 }
750 @media (min-width: 768px) {
751 .container {
752 width: 750px;
753 }
754 }
755 @media (min-width: 992px) {
756 .container {
757 width: 970px;
758 }
759 }
760 @media (min-width: 1200px) {
761 .container {
762 width: 1170px;
763 }
764 }
765 .container-fluid {
766 margin-right: auto;
767 margin-left: auto;
768 padding-left: 15px;
769 padding-right: 15px;
770 }
771 .row {
772 margin-left: -15px;
773 margin-right: -15px;
774 }
775 .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 {
776 position: relative;
777 min-height: 1px;
778 padding-left: 15px;
779 padding-right: 15px;
780 }
781 .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 {
782 float: left;
783 }
784 .col-xs-12 {
785 width: 100%;
786 }
787 .col-xs-11 {
788 width: 91.66666667%;
789 }
790 .col-xs-10 {
791 width: 83.33333333%;
792 }
793 .col-xs-9 {
794 width: 75%;
795 }
796 .col-xs-8 {
797 width: 66.66666667%;
798 }
799 .col-xs-7 {
800 width: 58.33333333%;
801 }
802 .col-xs-6 {
803 width: 50%;
804 }
805 .col-xs-5 {
806 width: 41.66666667%;
807 }
808 .col-xs-4 {
809 width: 33.33333333%;
810 }
811 .col-xs-3 {
812 width: 25%;
813 }
814 .col-xs-2 {
815 width: 16.66666667%;
816 }
817 .col-xs-1 {
818 width: 8.33333333%;
819 }
820 .col-xs-pull-12 {
821 right: 100%;
822 }
823 .col-xs-pull-11 {
824 right: 91.66666667%;
825 }
826 .col-xs-pull-10 {
827 right: 83.33333333%;
828 }
829 .col-xs-pull-9 {
830 right: 75%;
831 }
832 .col-xs-pull-8 {
833 right: 66.66666667%;
834 }
835 .col-xs-pull-7 {
836 right: 58.33333333%;
837 }
838 .col-xs-pull-6 {
839 right: 50%;
840 }
841 .col-xs-pull-5 {
842 right: 41.66666667%;
843 }
844 .col-xs-pull-4 {
845 right: 33.33333333%;
846 }
847 .col-xs-pull-3 {
848 right: 25%;
849 }
850 .col-xs-pull-2 {
851 right: 16.66666667%;
852 }
853 .col-xs-pull-1 {
854 right: 8.33333333%;
855 }
856 .col-xs-pull-0 {
857 right: 0%;
858 }
859 .col-xs-push-12 {
860 left: 100%;
861 }
862 .col-xs-push-11 {
863 left: 91.66666667%;
864 }
865 .col-xs-push-10 {
866 left: 83.33333333%;
867 }
868 .col-xs-push-9 {
869 left: 75%;
870 }
871 .col-xs-push-8 {
872 left: 66.66666667%;
873 }
874 .col-xs-push-7 {
875 left: 58.33333333%;
876 }
877 .col-xs-push-6 {
878 left: 50%;
879 }
880 .col-xs-push-5 {
881 left: 41.66666667%;
882 }
883 .col-xs-push-4 {
884 left: 33.33333333%;
885 }
886 .col-xs-push-3 {
887 left: 25%;
888 }
889 .col-xs-push-2 {
890 left: 16.66666667%;
891 }
892 .col-xs-push-1 {
893 left: 8.33333333%;
894 }
895 .col-xs-push-0 {
896 left: 0%;
897 }
898 .col-xs-offset-12 {
899 margin-left: 100%;
900 }
901 .col-xs-offset-11 {
902 margin-left: 91.66666667%;
903 }
904 .col-xs-offset-10 {
905 margin-left: 83.33333333%;
906 }
907 .col-xs-offset-9 {
908 margin-left: 75%;
909 }
910 .col-xs-offset-8 {
911 margin-left: 66.66666667%;
912 }
913 .col-xs-offset-7 {
914 margin-left: 58.33333333%;
915 }
916 .col-xs-offset-6 {
917 margin-left: 50%;
918 }
919 .col-xs-offset-5 {
920 margin-left: 41.66666667%;
921 }
922 .col-xs-offset-4 {
923 margin-left: 33.33333333%;
924 }
925 .col-xs-offset-3 {
926 margin-left: 25%;
927 }
928 .col-xs-offset-2 {
929 margin-left: 16.66666667%;
930 }
931 .col-xs-offset-1 {
932 margin-left: 8.33333333%;
933 }
934 .col-xs-offset-0 {
935 margin-left: 0%;
936 }
937 @media (min-width: 768px) {
938 .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 {
939 float: left;
940 }
941 .col-sm-12 {
942 width: 100%;
943 }
944 .col-sm-11 {
945 width: 91.66666667%;
946 }
947 .col-sm-10 {
948 width: 83.33333333%;
949 }
950 .col-sm-9 {
951 width: 75%;
952 }
953 .col-sm-8 {
954 width: 66.66666667%;
955 }
956 .col-sm-7 {
957 width: 58.33333333%;
958 }
959 .col-sm-6 {
960 width: 50%;
961 }
962 .col-sm-5 {
963 width: 41.66666667%;
964 }
965 .col-sm-4 {
966 width: 33.33333333%;
967 }
968 .col-sm-3 {
969 width: 25%;
970 }
971 .col-sm-2 {
972 width: 16.66666667%;
973 }
974 .col-sm-1 {
975 width: 8.33333333%;
976 }
977 .col-sm-pull-12 {
978 right: 100%;
979 }
980 .col-sm-pull-11 {
981 right: 91.66666667%;
982 }
983 .col-sm-pull-10 {
984 right: 83.33333333%;
985 }
986 .col-sm-pull-9 {
987 right: 75%;
988 }
989 .col-sm-pull-8 {
990 right: 66.66666667%;
991 }
992 .col-sm-pull-7 {
993 right: 58.33333333%;
994 }
995 .col-sm-pull-6 {
996 right: 50%;
997 }
998 .col-sm-pull-5 {
999 right: 41.66666667%;
1000 }
1001 .col-sm-pull-4 {
1002 right: 33.33333333%;
1003 }
1004 .col-sm-pull-3 {
1005 right: 25%;
1006 }
1007 .col-sm-pull-2 {
1008 right: 16.66666667%;
1009 }
1010 .col-sm-pull-1 {
1011 right: 8.33333333%;
1012 }
1013 .col-sm-pull-0 {
1014 right: 0%;
1015 }
1016 .col-sm-push-12 {
1017 left: 100%;
1018 }
1019 .col-sm-push-11 {
1020 left: 91.66666667%;
1021 }
1022 .col-sm-push-10 {
1023 left: 83.33333333%;
1024 }
1025 .col-sm-push-9 {
1026 left: 75%;
1027 }
1028 .col-sm-push-8 {
1029 left: 66.66666667%;
1030 }
1031 .col-sm-push-7 {
1032 left: 58.33333333%;
1033 }
1034 .col-sm-push-6 {
1035 left: 50%;
1036 }
1037 .col-sm-push-5 {
1038 left: 41.66666667%;
1039 }
1040 .col-sm-push-4 {
1041 left: 33.33333333%;
1042 }
1043 .col-sm-push-3 {
1044 left: 25%;
1045 }
1046 .col-sm-push-2 {
1047 left: 16.66666667%;
1048 }
1049 .col-sm-push-1 {
1050 left: 8.33333333%;
1051 }
1052 .col-sm-push-0 {
1053 left: 0%;
1054 }
1055 .col-sm-offset-12 {
1056 margin-left: 100%;
1057 }
1058 .col-sm-offset-11 {
1059 margin-left: 91.66666667%;
1060 }
1061 .col-sm-offset-10 {
1062 margin-left: 83.33333333%;
1063 }
1064 .col-sm-offset-9 {
1065 margin-left: 75%;
1066 }
1067 .col-sm-offset-8 {
1068 margin-left: 66.66666667%;
1069 }
1070 .col-sm-offset-7 {
1071 margin-left: 58.33333333%;
1072 }
1073 .col-sm-offset-6 {
1074 margin-left: 50%;
1075 }
1076 .col-sm-offset-5 {
1077 margin-left: 41.66666667%;
1078 }
1079 .col-sm-offset-4 {
1080 margin-left: 33.33333333%;
1081 }
1082 .col-sm-offset-3 {
1083 margin-left: 25%;
1084 }
1085 .col-sm-offset-2 {
1086 margin-left: 16.66666667%;
1087 }
1088 .col-sm-offset-1 {
1089 margin-left: 8.33333333%;
1090 }
1091 .col-sm-offset-0 {
1092 margin-left: 0%;
1093 }
1094 }
1095 @media (min-width: 992px) {
1096 .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 {
1097 float: left;
1098 }
1099 .col-md-12 {
1100 width: 100%;
1101 }
1102 .col-md-11 {
1103 width: 91.66666667%;
1104 }
1105 .col-md-10 {
1106 width: 83.33333333%;
1107 }
1108 .col-md-9 {
1109 width: 75%;
1110 }
1111 .col-md-8 {
1112 width: 66.66666667%;
1113 }
1114 .col-md-7 {
1115 width: 58.33333333%;
1116 }
1117 .col-md-6 {
1118 width: 50%;
1119 }
1120 .col-md-5 {
1121 width: 41.66666667%;
1122 }
1123 .col-md-4 {
1124 width: 33.33333333%;
1125 }
1126 .col-md-3 {
1127 width: 25%;
1128 }
1129 .col-md-2 {
1130 width: 16.66666667%;
1131 }
1132 .col-md-1 {
1133 width: 8.33333333%;
1134 }
1135 .col-md-pull-12 {
1136 right: 100%;
1137 }
1138 .col-md-pull-11 {
1139 right: 91.66666667%;
1140 }
1141 .col-md-pull-10 {
1142 right: 83.33333333%;
1143 }
1144 .col-md-pull-9 {
1145 right: 75%;
1146 }
1147 .col-md-pull-8 {
1148 right: 66.66666667%;
1149 }
1150 .col-md-pull-7 {
1151 right: 58.33333333%;
1152 }
1153 .col-md-pull-6 {
1154 right: 50%;
1155 }
1156 .col-md-pull-5 {
1157 right: 41.66666667%;
1158 }
1159 .col-md-pull-4 {
1160 right: 33.33333333%;
1161 }
1162 .col-md-pull-3 {
1163 right: 25%;
1164 }
1165 .col-md-pull-2 {
1166 right: 16.66666667%;
1167 }
1168 .col-md-pull-1 {
1169 right: 8.33333333%;
1170 }
1171 .col-md-pull-0 {
1172 right: 0%;
1173 }
1174 .col-md-push-12 {
1175 left: 100%;
1176 }
1177 .col-md-push-11 {
1178 left: 91.66666667%;
1179 }
1180 .col-md-push-10 {
1181 left: 83.33333333%;
1182 }
1183 .col-md-push-9 {
1184 left: 75%;
1185 }
1186 .col-md-push-8 {
1187 left: 66.66666667%;
1188 }
1189 .col-md-push-7 {
1190 left: 58.33333333%;
1191 }
1192 .col-md-push-6 {
1193 left: 50%;
1194 }
1195 .col-md-push-5 {
1196 left: 41.66666667%;
1197 }
1198 .col-md-push-4 {
1199 left: 33.33333333%;
1200 }
1201 .col-md-push-3 {
1202 left: 25%;
1203 }
1204 .col-md-push-2 {
1205 left: 16.66666667%;
1206 }
1207 .col-md-push-1 {
1208 left: 8.33333333%;
1209 }
1210 .col-md-push-0 {
1211 left: 0%;
1212 }
1213 .col-md-offset-12 {
1214 margin-left: 100%;
1215 }
1216 .col-md-offset-11 {
1217 margin-left: 91.66666667%;
1218 }
1219 .col-md-offset-10 {
1220 margin-left: 83.33333333%;
1221 }
1222 .col-md-offset-9 {
1223 margin-left: 75%;
1224 }
1225 .col-md-offset-8 {
1226 margin-left: 66.66666667%;
1227 }
1228 .col-md-offset-7 {
1229 margin-left: 58.33333333%;
1230 }
1231 .col-md-offset-6 {
1232 margin-left: 50%;
1233 }
1234 .col-md-offset-5 {
1235 margin-left: 41.66666667%;
1236 }
1237 .col-md-offset-4 {
1238 margin-left: 33.33333333%;
1239 }
1240 .col-md-offset-3 {
1241 margin-left: 25%;
1242 }
1243 .col-md-offset-2 {
1244 margin-left: 16.66666667%;
1245 }
1246 .col-md-offset-1 {
1247 margin-left: 8.33333333%;
1248 }
1249 .col-md-offset-0 {
1250 margin-left: 0%;
1251 }
1252 }
1253 @media (min-width: 1200px) {
1254 .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 {
1255 float: left;
1256 }
1257 .col-lg-12 {
1258 width: 100%;
1259 }
1260 .col-lg-11 {
1261 width: 91.66666667%;
1262 }
1263 .col-lg-10 {
1264 width: 83.33333333%;
1265 }
1266 .col-lg-9 {
1267 width: 75%;
1268 }
1269 .col-lg-8 {
1270 width: 66.66666667%;
1271 }
1272 .col-lg-7 {
1273 width: 58.33333333%;
1274 }
1275 .col-lg-6 {
1276 width: 50%;
1277 }
1278 .col-lg-5 {
1279 width: 41.66666667%;
1280 }
1281 .col-lg-4 {
1282 width: 33.33333333%;
1283 }
1284 .col-lg-3 {
1285 width: 25%;
1286 }
1287 .col-lg-2 {
1288 width: 16.66666667%;
1289 }
1290 .col-lg-1 {
1291 width: 8.33333333%;
1292 }
1293 .col-lg-pull-12 {
1294 right: 100%;
1295 }
1296 .col-lg-pull-11 {
1297 right: 91.66666667%;
1298 }
1299 .col-lg-pull-10 {
1300 right: 83.33333333%;
1301 }
1302 .col-lg-pull-9 {
1303 right: 75%;
1304 }
1305 .col-lg-pull-8 {
1306 right: 66.66666667%;
1307 }
1308 .col-lg-pull-7 {
1309 right: 58.33333333%;
1310 }
1311 .col-lg-pull-6 {
1312 right: 50%;
1313 }
1314 .col-lg-pull-5 {
1315 right: 41.66666667%;
1316 }
1317 .col-lg-pull-4 {
1318 right: 33.33333333%;
1319 }
1320 .col-lg-pull-3 {
1321 right: 25%;
1322 }
1323 .col-lg-pull-2 {
1324 right: 16.66666667%;
1325 }
1326 .col-lg-pull-1 {
1327 right: 8.33333333%;
1328 }
1329 .col-lg-pull-0 {
1330 right: 0%;
1331 }
1332 .col-lg-push-12 {
1333 left: 100%;
1334 }
1335 .col-lg-push-11 {
1336 left: 91.66666667%;
1337 }
1338 .col-lg-push-10 {
1339 left: 83.33333333%;
1340 }
1341 .col-lg-push-9 {
1342 left: 75%;
1343 }
1344 .col-lg-push-8 {
1345 left: 66.66666667%;
1346 }
1347 .col-lg-push-7 {
1348 left: 58.33333333%;
1349 }
1350 .col-lg-push-6 {
1351 left: 50%;
1352 }
1353 .col-lg-push-5 {
1354 left: 41.66666667%;
1355 }
1356 .col-lg-push-4 {
1357 left: 33.33333333%;
1358 }
1359 .col-lg-push-3 {
1360 left: 25%;
1361 }
1362 .col-lg-push-2 {
1363 left: 16.66666667%;
1364 }
1365 .col-lg-push-1 {
1366 left: 8.33333333%;
1367 }
1368 .col-lg-push-0 {
1369 left: 0%;
1370 }
1371 .col-lg-offset-12 {
1372 margin-left: 100%;
1373 }
1374 .col-lg-offset-11 {
1375 margin-left: 91.66666667%;
1376 }
1377 .col-lg-offset-10 {
1378 margin-left: 83.33333333%;
1379 }
1380 .col-lg-offset-9 {
1381 margin-left: 75%;
1382 }
1383 .col-lg-offset-8 {
1384 margin-left: 66.66666667%;
1385 }
1386 .col-lg-offset-7 {
1387 margin-left: 58.33333333%;
1388 }
1389 .col-lg-offset-6 {
1390 margin-left: 50%;
1391 }
1392 .col-lg-offset-5 {
1393 margin-left: 41.66666667%;
1394 }
1395 .col-lg-offset-4 {
1396 margin-left: 33.33333333%;
1397 }
1398 .col-lg-offset-3 {
1399 margin-left: 25%;
1400 }
1401 .col-lg-offset-2 {
1402 margin-left: 16.66666667%;
1403 }
1404 .col-lg-offset-1 {
1405 margin-left: 8.33333333%;
1406 }
1407 .col-lg-offset-0 {
1408 margin-left: 0%;
1409 }
1410 }
1411 table {
1412 max-width: 100%;
1413 background-color: transparent;
1414 }
1415 th {
1416 text-align: left;
1417 }
1418 .table {
1419 width: 100%;
1420 margin-bottom: 18px;
1421 }
1422 .table > thead > tr > th,
1423 .table > tbody > tr > th,
1424 .table > tfoot > tr > th,
1425 .table > thead > tr > td,
1426 .table > tbody > tr > td,
1427 .table > tfoot > tr > td {
1428 padding: 8px;
1429 line-height: 1.42857143;
1430 vertical-align: top;
1431 border-top: 1px solid #dddddd;
1432 }
1433 .table > thead > tr > th {
1434 vertical-align: bottom;
1435 border-bottom: 2px solid #dddddd;
1436 }
1437 .table > caption + thead > tr:first-child > th,
1438 .table > colgroup + thead > tr:first-child > th,
1439 .table > thead:first-child > tr:first-child > th,
1440 .table > caption + thead > tr:first-child > td,
1441 .table > colgroup + thead > tr:first-child > td,
1442 .table > thead:first-child > tr:first-child > td {
1443 border-top: 0;
1444 }
1445 .table > tbody + tbody {
1446 border-top: 2px solid #dddddd;
1447 }
1448 .table .table {
1449 background-color: #ffffff;
1450 }
1451 .table-condensed > thead > tr > th,
1452 .table-condensed > tbody > tr > th,
1453 .table-condensed > tfoot > tr > th,
1454 .table-condensed > thead > tr > td,
1455 .table-condensed > tbody > tr > td,
1456 .table-condensed > tfoot > tr > td {
1457 padding: 5px;
1458 }
1459 .table-bordered {
1460 border: 1px solid #dddddd;
1461 }
1462 .table-bordered > thead > tr > th,
1463 .table-bordered > tbody > tr > th,
1464 .table-bordered > tfoot > tr > th,
1465 .table-bordered > thead > tr > td,
1466 .table-bordered > tbody > tr > td,
1467 .table-bordered > tfoot > tr > td {
1468 border: 1px solid #dddddd;
1469 }
1470 .table-bordered > thead > tr > th,
1471 .table-bordered > thead > tr > td {
1472 border-bottom-width: 2px;
1473 }
1474 .table-striped > tbody > tr:nth-child(odd) > td,
1475 .table-striped > tbody > tr:nth-child(odd) > th {
1476 background-color: #f9f9f9;
1477 }
1478 .table-hover > tbody > tr:hover > td,
1479 .table-hover > tbody > tr:hover > th {
1480 background-color: #f5f5f5;
1481 }
1482 table col[class*="col-"] {
1483 position: static;
1484 float: none;
1485 display: table-column;
1486 }
1487 table td[class*="col-"],
1488 table th[class*="col-"] {
1489 position: static;
1490 float: none;
1491 display: table-cell;
1492 }
1493 .table > thead > tr > td.active,
1494 .table > tbody > tr > td.active,
1495 .table > tfoot > tr > td.active,
1496 .table > thead > tr > th.active,
1497 .table > tbody > tr > th.active,
1498 .table > tfoot > tr > th.active,
1499 .table > thead > tr.active > td,
1500 .table > tbody > tr.active > td,
1501 .table > tfoot > tr.active > td,
1502 .table > thead > tr.active > th,
1503 .table > tbody > tr.active > th,
1504 .table > tfoot > tr.active > th {
1505 background-color: #f5f5f5;
1506 }
1507 .table-hover > tbody > tr > td.active:hover,
1508 .table-hover > tbody > tr > th.active:hover,
1509 .table-hover > tbody > tr.active:hover > td,
1510 .table-hover > tbody > tr.active:hover > th {
1511 background-color: #e8e8e8;
1512 }
1513 .table > thead > tr > td.success,
1514 .table > tbody > tr > td.success,
1515 .table > tfoot > tr > td.success,
1516 .table > thead > tr > th.success,
1517 .table > tbody > tr > th.success,
1518 .table > tfoot > tr > th.success,
1519 .table > thead > tr.success > td,
1520 .table > tbody > tr.success > td,
1521 .table > tfoot > tr.success > td,
1522 .table > thead > tr.success > th,
1523 .table > tbody > tr.success > th,
1524 .table > tfoot > tr.success > th {
1525 background-color: #dff0d8;
1526 }
1527 .table-hover > tbody > tr > td.success:hover,
1528 .table-hover > tbody > tr > th.success:hover,
1529 .table-hover > tbody > tr.success:hover > td,
1530 .table-hover > tbody > tr.success:hover > th {
1531 background-color: #d0e9c6;
1532 }
1533 .table > thead > tr > td.info,
1534 .table > tbody > tr > td.info,
1535 .table > tfoot > tr > td.info,
1536 .table > thead > tr > th.info,
1537 .table > tbody > tr > th.info,
1538 .table > tfoot > tr > th.info,
1539 .table > thead > tr.info > td,
1540 .table > tbody > tr.info > td,
1541 .table > tfoot > tr.info > td,
1542 .table > thead > tr.info > th,
1543 .table > tbody > tr.info > th,
1544 .table > tfoot > tr.info > th {
1545 background-color: #d9edf7;
1546 }
1547 .table-hover > tbody > tr > td.info:hover,
1548 .table-hover > tbody > tr > th.info:hover,
1549 .table-hover > tbody > tr.info:hover > td,
1550 .table-hover > tbody > tr.info:hover > th {
1551 background-color: #c4e3f3;
1552 }
1553 .table > thead > tr > td.warning,
1554 .table > tbody > tr > td.warning,
1555 .table > tfoot > tr > td.warning,
1556 .table > thead > tr > th.warning,
1557 .table > tbody > tr > th.warning,
1558 .table > tfoot > tr > th.warning,
1559 .table > thead > tr.warning > td,
1560 .table > tbody > tr.warning > td,
1561 .table > tfoot > tr.warning > td,
1562 .table > thead > tr.warning > th,
1563 .table > tbody > tr.warning > th,
1564 .table > tfoot > tr.warning > th {
1565 background-color: #fcf8e3;
1566 }
1567 .table-hover > tbody > tr > td.warning:hover,
1568 .table-hover > tbody > tr > th.warning:hover,
1569 .table-hover > tbody > tr.warning:hover > td,
1570 .table-hover > tbody > tr.warning:hover > th {
1571 background-color: #faf2cc;
1572 }
1573 .table > thead > tr > td.danger,
1574 .table > tbody > tr > td.danger,
1575 .table > tfoot > tr > td.danger,
1576 .table > thead > tr > th.danger,
1577 .table > tbody > tr > th.danger,
1578 .table > tfoot > tr > th.danger,
1579 .table > thead > tr.danger > td,
1580 .table > tbody > tr.danger > td,
1581 .table > tfoot > tr.danger > td,
1582 .table > thead > tr.danger > th,
1583 .table > tbody > tr.danger > th,
1584 .table > tfoot > tr.danger > th {
1585 background-color: #f2dede;
1586 }
1587 .table-hover > tbody > tr > td.danger:hover,
1588 .table-hover > tbody > tr > th.danger:hover,
1589 .table-hover > tbody > tr.danger:hover > td,
1590 .table-hover > tbody > tr.danger:hover > th {
1591 background-color: #ebcccc;
1592 }
1593 @media (max-width: 767px) {
1594 .table-responsive {
1595 width: 100%;
1596 margin-bottom: 13.5px;
1597 overflow-y: hidden;
1598 overflow-x: scroll;
1599 -ms-overflow-style: -ms-autohiding-scrollbar;
1600 border: 1px solid #dddddd;
1601 -webkit-overflow-scrolling: touch;
1602 }
1603 .table-responsive > .table {
1604 margin-bottom: 0;
1605 }
1606 .table-responsive > .table > thead > tr > th,
1607 .table-responsive > .table > tbody > tr > th,
1608 .table-responsive > .table > tfoot > tr > th,
1609 .table-responsive > .table > thead > tr > td,
1610 .table-responsive > .table > tbody > tr > td,
1611 .table-responsive > .table > tfoot > tr > td {
1612 white-space: nowrap;
1613 }
1614 .table-responsive > .table-bordered {
1615 border: 0;
1616 }
1617 .table-responsive > .table-bordered > thead > tr > th:first-child,
1618 .table-responsive > .table-bordered > tbody > tr > th:first-child,
1619 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1620 .table-responsive > .table-bordered > thead > tr > td:first-child,
1621 .table-responsive > .table-bordered > tbody > tr > td:first-child,
1622 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1623 border-left: 0;
1624 }
1625 .table-responsive > .table-bordered > thead > tr > th:last-child,
1626 .table-responsive > .table-bordered > tbody > tr > th:last-child,
1627 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1628 .table-responsive > .table-bordered > thead > tr > td:last-child,
1629 .table-responsive > .table-bordered > tbody > tr > td:last-child,
1630 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1631 border-right: 0;
1632 }
1633 .table-responsive > .table-bordered > tbody > tr:last-child > th,
1634 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1635 .table-responsive > .table-bordered > tbody > tr:last-child > td,
1636 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1637 border-bottom: 0;
1638 }
1639 }
1640 fieldset {
1641 padding: 0;
1642 margin: 0;
1643 border: 0;
1644 min-width: 0;
1645 }
1646 legend {
1647 display: block;
1648 width: 100%;
1649 padding: 0;
1650 margin-bottom: 18px;
1651 font-size: 19.5px;
1652 line-height: inherit;
1653 color: #333333;
1654 border: 0;
1655 border-bottom: 1px solid #e5e5e5;
1656 }
1657 label {
1658 display: inline-block;
1659 margin-bottom: 5px;
1660 font-weight: bold;
1661 }
1662 input[type="search"] {
1663 -webkit-box-sizing: border-box;
1664 -moz-box-sizing: border-box;
1665 box-sizing: border-box;
1666 }
1667 input[type="radio"],
1668 input[type="checkbox"] {
1669 margin: 4px 0 0;
1670 margin-top: 1px \9;
1671 /* IE8-9 */
1672 line-height: normal;
1673 }
1674 input[type="file"] {
1675 display: block;
1676 }
1677 input[type="range"] {
1678 display: block;
1679 width: 100%;
1680 }
1681 select[multiple],
1682 select[size] {
1683 height: auto;
1684 }
1685 input[type="file"]:focus,
1686 input[type="radio"]:focus,
1687 input[type="checkbox"]:focus {
1688 outline: thin dotted;
1689 outline: 5px auto -webkit-focus-ring-color;
1690 outline-offset: -2px;
1691 }
1692 output {
1693 display: block;
1694 padding-top: 7px;
1695 font-size: 13px;
1696 line-height: 1.42857143;
1697 color: #555555;
1698 }
1699 .form-control {
1700 display: block;
1701 width: 100%;
1702 height: 32px;
1703 padding: 6px 12px;
1704 font-size: 13px;
1705 line-height: 1.42857143;
1706 color: #555555;
1707 background-color: #ffffff;
1708 background-image: none;
1709 border: 1px solid #cccccc;
1710 border-radius: 4px;
1711 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1712 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1713 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1714 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1715 }
1716 .form-control:focus {
1717 border-color: #66afe9;
1718 outline: 0;
1719 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1720 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1721 }
1722 .form-control::-moz-placeholder {
1723 color: #999999;
1724 opacity: 1;
1725 }
1726 .form-control:-ms-input-placeholder {
1727 color: #999999;
1728 }
1729 .form-control::-webkit-input-placeholder {
1730 color: #999999;
1731 }
1732 .form-control[disabled],
1733 .form-control[readonly],
1734 fieldset[disabled] .form-control {
1735 cursor: not-allowed;
1736 background-color: #eeeeee;
1737 opacity: 1;
1738 }
1739 textarea.form-control {
1740 height: auto;
1741 }
1742 input[type="search"] {
1743 -webkit-appearance: none;
1744 }
1745 input[type="date"] {
1746 line-height: 32px;
1747 }
1748 .form-group {
1749 margin-bottom: 15px;
1750 }
1751 .radio,
1752 .checkbox {
1753 display: block;
1754 min-height: 18px;
1755 margin-top: 10px;
1756 margin-bottom: 10px;
1757 padding-left: 20px;
1758 }
1759 .radio label,
1760 .checkbox label {
1761 display: inline;
1762 font-weight: normal;
1763 cursor: pointer;
1764 }
1765 .radio input[type="radio"],
1766 .radio-inline input[type="radio"],
1767 .checkbox input[type="checkbox"],
1768 .checkbox-inline input[type="checkbox"] {
1769 float: left;
1770 margin-left: -20px;
1771 }
1772 .radio + .radio,
1773 .checkbox + .checkbox {
1774 margin-top: -5px;
1775 }
1776 .radio-inline,
1777 .checkbox-inline {
1778 display: inline-block;
1779 padding-left: 20px;
1780 margin-bottom: 0;
1781 vertical-align: middle;
1782 font-weight: normal;
1783 cursor: pointer;
1784 }
1785 .radio-inline + .radio-inline,
1786 .checkbox-inline + .checkbox-inline {
1787 margin-top: 0;
1788 margin-left: 10px;
1789 }
1790 input[type="radio"][disabled],
1791 input[type="checkbox"][disabled],
1792 .radio[disabled],
1793 .radio-inline[disabled],
1794 .checkbox[disabled],
1795 .checkbox-inline[disabled],
1796 fieldset[disabled] input[type="radio"],
1797 fieldset[disabled] input[type="checkbox"],
1798 fieldset[disabled] .radio,
1799 fieldset[disabled] .radio-inline,
1800 fieldset[disabled] .checkbox,
1801 fieldset[disabled] .checkbox-inline {
1802 cursor: not-allowed;
1803 }
1804 .input-sm {
1805 height: 30px;
1806 padding: 5px 10px;
1807 font-size: 12px;
1808 line-height: 1.5;
1809 border-radius: 3px;
1810 }
1811 select.input-sm {
1812 height: 30px;
1813 line-height: 30px;
1814 }
1815 textarea.input-sm,
1816 select[multiple].input-sm {
1817 height: auto;
1818 }
1819 .input-lg {
1820 height: 45px;
1821 padding: 10px 16px;
1822 font-size: 17px;
1823 line-height: 1.33;
1824 border-radius: 6px;
1825 }
1826 select.input-lg {
1827 height: 45px;
1828 line-height: 45px;
1829 }
1830 textarea.input-lg,
1831 select[multiple].input-lg {
1832 height: auto;
1833 }
1834 .has-feedback {
1835 position: relative;
1836 }
1837 .has-feedback .form-control {
1838 padding-right: 40px;
1839 }
1840 .has-feedback .form-control-feedback {
1841 position: absolute;
1842 top: 23px;
1843 right: 0;
1844 display: block;
1845 width: 32px;
1846 height: 32px;
1847 line-height: 32px;
1848 text-align: center;
1849 }
1850 .has-success .help-block,
1851 .has-success .control-label,
1852 .has-success .radio,
1853 .has-success .checkbox,
1854 .has-success .radio-inline,
1855 .has-success .checkbox-inline {
1856 color: #3c763d;
1857 }
1858 .has-success .form-control {
1859 border-color: #3c763d;
1860 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1861 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1862 }
1863 .has-success .form-control:focus {
1864 border-color: #2b542c;
1865 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1866 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1867 }
1868 .has-success .input-group-addon {
1869 color: #3c763d;
1870 border-color: #3c763d;
1871 background-color: #dff0d8;
1872 }
1873 .has-success .form-control-feedback {
1874 color: #3c763d;
1875 }
1876 .has-warning .help-block,
1877 .has-warning .control-label,
1878 .has-warning .radio,
1879 .has-warning .checkbox,
1880 .has-warning .radio-inline,
1881 .has-warning .checkbox-inline {
1882 color: #8a6d3b;
1883 }
1884 .has-warning .form-control {
1885 border-color: #8a6d3b;
1886 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1887 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1888 }
1889 .has-warning .form-control:focus {
1890 border-color: #66512c;
1891 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1892 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1893 }
1894 .has-warning .input-group-addon {
1895 color: #8a6d3b;
1896 border-color: #8a6d3b;
1897 background-color: #fcf8e3;
1898 }
1899 .has-warning .form-control-feedback {
1900 color: #8a6d3b;
1901 }
1902 .has-error .help-block,
1903 .has-error .control-label,
1904 .has-error .radio,
1905 .has-error .checkbox,
1906 .has-error .radio-inline,
1907 .has-error .checkbox-inline {
1908 color: #a94442;
1909 }
1910 .has-error .form-control {
1911 border-color: #a94442;
1912 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1913 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1914 }
1915 .has-error .form-control:focus {
1916 border-color: #843534;
1917 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1918 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1919 }
1920 .has-error .input-group-addon {
1921 color: #a94442;
1922 border-color: #a94442;
1923 background-color: #f2dede;
1924 }
1925 .has-error .form-control-feedback {
1926 color: #a94442;
1927 }
1928 .form-control-static {
1929 margin-bottom: 0;
1930 }
1931 .help-block {
1932 display: block;
1933 margin-top: 5px;
1934 margin-bottom: 10px;
1935 color: #404040;
1936 }
1937 @media (min-width: 768px) {
1938 .form-inline .form-group {
1939 display: inline-block;
1940 margin-bottom: 0;
1941 vertical-align: middle;
1942 }
1943 .form-inline .form-control {
1944 display: inline-block;
1945 width: auto;
1946 vertical-align: middle;
1947 }
1948 .form-inline .input-group > .form-control {
1949 width: 100%;
1950 }
1951 .form-inline .control-label {
1952 margin-bottom: 0;
1953 vertical-align: middle;
1954 }
1955 .form-inline .radio,
1956 .form-inline .checkbox {
1957 display: inline-block;
1958 margin-top: 0;
1959 margin-bottom: 0;
1960 padding-left: 0;
1961 vertical-align: middle;
1962 }
1963 .form-inline .radio input[type="radio"],
1964 .form-inline .checkbox input[type="checkbox"] {
1965 float: none;
1966 margin-left: 0;
1967 }
1968 .form-inline .has-feedback .form-control-feedback {
1969 top: 0;
1970 }
1971 }
1972 .form-horizontal .control-label,
1973 .form-horizontal .radio,
1974 .form-horizontal .checkbox,
1975 .form-horizontal .radio-inline,
1976 .form-horizontal .checkbox-inline {
1977 margin-top: 0;
1978 margin-bottom: 0;
1979 padding-top: 7px;
1980 }
1981 .form-horizontal .radio,
1982 .form-horizontal .checkbox {
1983 min-height: 25px;
1984 }
1985 .form-horizontal .form-group {
1986 margin-left: -15px;
1987 margin-right: -15px;
1988 }
1989 .form-horizontal .form-control-static {
1990 padding-top: 7px;
1991 }
1992 @media (min-width: 768px) {
1993 .form-horizontal .control-label {
1994 text-align: right;
1995 }
1996 }
1997 .form-horizontal .has-feedback .form-control-feedback {
1998 top: 0;
1999 right: 15px;
2000 }
2001 .btn {
2002 display: inline-block;
2003 margin-bottom: 0;
2004 font-weight: normal;
2005 text-align: center;
2006 vertical-align: middle;
2007 cursor: pointer;
2008 background-image: none;
2009 border: 1px solid transparent;
2010 white-space: nowrap;
2011 padding: 6px 12px;
2012 font-size: 13px;
2013 line-height: 1.42857143;
2014 border-radius: 4px;
2015 -webkit-user-select: none;
2016 -moz-user-select: none;
2017 -ms-user-select: none;
2018 user-select: none;
2019 }
2020 .btn:focus,
2021 .btn:active:focus,
2022 .btn.active:focus {
2023 outline: thin dotted;
2024 outline: 5px auto -webkit-focus-ring-color;
2025 outline-offset: -2px;
2026 }
2027 .btn:hover,
2028 .btn:focus {
2029 color: #333333;
2030 text-decoration: none;
2031 }
2032 .btn:active,
2033 .btn.active {
2034 outline: 0;
2035 background-image: none;
2036 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2037 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
2038 }
2039 .btn.disabled,
2040 .btn[disabled],
2041 fieldset[disabled] .btn {
2042 cursor: not-allowed;
2043 pointer-events: none;
2044 opacity: 0.65;
2045 filter: alpha(opacity=65);
2046 -webkit-box-shadow: none;
2047 box-shadow: none;
2048 }
2049 .btn-default {
2050 color: #333333;
2051 background-color: #ffffff;
2052 border-color: #cccccc;
2053 }
2054 .btn-default:hover,
2055 .btn-default:focus,
2056 .btn-default:active,
2057 .btn-default.active,
2058 .open .dropdown-toggle.btn-default {
2059 color: #333333;
2060 background-color: #ebebeb;
2061 border-color: #adadad;
2062 }
2063 .btn-default:active,
2064 .btn-default.active,
2065 .open .dropdown-toggle.btn-default {
2066 background-image: none;
2067 }
2068 .btn-default.disabled,
2069 .btn-default[disabled],
2070 fieldset[disabled] .btn-default,
2071 .btn-default.disabled:hover,
2072 .btn-default[disabled]:hover,
2073 fieldset[disabled] .btn-default:hover,
2074 .btn-default.disabled:focus,
2075 .btn-default[disabled]:focus,
2076 fieldset[disabled] .btn-default:focus,
2077 .btn-default.disabled:active,
2078 .btn-default[disabled]:active,
2079 fieldset[disabled] .btn-default:active,
2080 .btn-default.disabled.active,
2081 .btn-default[disabled].active,
2082 fieldset[disabled] .btn-default.active {
2083 background-color: #ffffff;
2084 border-color: #cccccc;
2085 }
2086 .btn-default .badge {
2087 color: #ffffff;
2088 background-color: #333333;
2089 }
2090 .btn-primary {
2091 color: #ffffff;
2092 background-color: #428bca;
2093 border-color: #357ebd;
2094 }
2095 .btn-primary:hover,
2096 .btn-primary:focus,
2097 .btn-primary:active,
2098 .btn-primary.active,
2099 .open .dropdown-toggle.btn-primary {
2100 color: #ffffff;
2101 background-color: #3276b1;
2102 border-color: #285e8e;
2103 }
2104 .btn-primary:active,
2105 .btn-primary.active,
2106 .open .dropdown-toggle.btn-primary {
2107 background-image: none;
2108 }
2109 .btn-primary.disabled,
2110 .btn-primary[disabled],
2111 fieldset[disabled] .btn-primary,
2112 .btn-primary.disabled:hover,
2113 .btn-primary[disabled]:hover,
2114 fieldset[disabled] .btn-primary:hover,
2115 .btn-primary.disabled:focus,
2116 .btn-primary[disabled]:focus,
2117 fieldset[disabled] .btn-primary:focus,
2118 .btn-primary.disabled:active,
2119 .btn-primary[disabled]:active,
2120 fieldset[disabled] .btn-primary:active,
2121 .btn-primary.disabled.active,
2122 .btn-primary[disabled].active,
2123 fieldset[disabled] .btn-primary.active {
2124 background-color: #428bca;
2125 border-color: #357ebd;
2126 }
2127 .btn-primary .badge {
2128 color: #428bca;
2129 background-color: #ffffff;
2130 }
2131 .btn-success {
2132 color: #ffffff;
2133 background-color: #5cb85c;
2134 border-color: #4cae4c;
2135 }
2136 .btn-success:hover,
2137 .btn-success:focus,
2138 .btn-success:active,
2139 .btn-success.active,
2140 .open .dropdown-toggle.btn-success {
2141 color: #ffffff;
2142 background-color: #47a447;
2143 border-color: #398439;
2144 }
2145 .btn-success:active,
2146 .btn-success.active,
2147 .open .dropdown-toggle.btn-success {
2148 background-image: none;
2149 }
2150 .btn-success.disabled,
2151 .btn-success[disabled],
2152 fieldset[disabled] .btn-success,
2153 .btn-success.disabled:hover,
2154 .btn-success[disabled]:hover,
2155 fieldset[disabled] .btn-success:hover,
2156 .btn-success.disabled:focus,
2157 .btn-success[disabled]:focus,
2158 fieldset[disabled] .btn-success:focus,
2159 .btn-success.disabled:active,
2160 .btn-success[disabled]:active,
2161 fieldset[disabled] .btn-success:active,
2162 .btn-success.disabled.active,
2163 .btn-success[disabled].active,
2164 fieldset[disabled] .btn-success.active {
2165 background-color: #5cb85c;
2166 border-color: #4cae4c;
2167 }
2168 .btn-success .badge {
2169 color: #5cb85c;
2170 background-color: #ffffff;
2171 }
2172 .btn-info {
2173 color: #ffffff;
2174 background-color: #5bc0de;
2175 border-color: #46b8da;
2176 }
2177 .btn-info:hover,
2178 .btn-info:focus,
2179 .btn-info:active,
2180 .btn-info.active,
2181 .open .dropdown-toggle.btn-info {
2182 color: #ffffff;
2183 background-color: #39b3d7;
2184 border-color: #269abc;
2185 }
2186 .btn-info:active,
2187 .btn-info.active,
2188 .open .dropdown-toggle.btn-info {
2189 background-image: none;
2190 }
2191 .btn-info.disabled,
2192 .btn-info[disabled],
2193 fieldset[disabled] .btn-info,
2194 .btn-info.disabled:hover,
2195 .btn-info[disabled]:hover,
2196 fieldset[disabled] .btn-info:hover,
2197 .btn-info.disabled:focus,
2198 .btn-info[disabled]:focus,
2199 fieldset[disabled] .btn-info:focus,
2200 .btn-info.disabled:active,
2201 .btn-info[disabled]:active,
2202 fieldset[disabled] .btn-info:active,
2203 .btn-info.disabled.active,
2204 .btn-info[disabled].active,
2205 fieldset[disabled] .btn-info.active {
2206 background-color: #5bc0de;
2207 border-color: #46b8da;
2208 }
2209 .btn-info .badge {
2210 color: #5bc0de;
2211 background-color: #ffffff;
2212 }
2213 .btn-warning {
2214 color: #ffffff;
2215 background-color: #f0ad4e;
2216 border-color: #eea236;
2217 }
2218 .btn-warning:hover,
2219 .btn-warning:focus,
2220 .btn-warning:active,
2221 .btn-warning.active,
2222 .open .dropdown-toggle.btn-warning {
2223 color: #ffffff;
2224 background-color: #ed9c28;
2225 border-color: #d58512;
2226 }
2227 .btn-warning:active,
2228 .btn-warning.active,
2229 .open .dropdown-toggle.btn-warning {
2230 background-image: none;
2231 }
2232 .btn-warning.disabled,
2233 .btn-warning[disabled],
2234 fieldset[disabled] .btn-warning,
2235 .btn-warning.disabled:hover,
2236 .btn-warning[disabled]:hover,
2237 fieldset[disabled] .btn-warning:hover,
2238 .btn-warning.disabled:focus,
2239 .btn-warning[disabled]:focus,
2240 fieldset[disabled] .btn-warning:focus,
2241 .btn-warning.disabled:active,
2242 .btn-warning[disabled]:active,
2243 fieldset[disabled] .btn-warning:active,
2244 .btn-warning.disabled.active,
2245 .btn-warning[disabled].active,
2246 fieldset[disabled] .btn-warning.active {
2247 background-color: #f0ad4e;
2248 border-color: #eea236;
2249 }
2250 .btn-warning .badge {
2251 color: #f0ad4e;
2252 background-color: #ffffff;
2253 }
2254 .btn-danger {
2255 color: #ffffff;
2256 background-color: #d9534f;
2257 border-color: #d43f3a;
2258 }
2259 .btn-danger:hover,
2260 .btn-danger:focus,
2261 .btn-danger:active,
2262 .btn-danger.active,
2263 .open .dropdown-toggle.btn-danger {
2264 color: #ffffff;
2265 background-color: #d2322d;
2266 border-color: #ac2925;
2267 }
2268 .btn-danger:active,
2269 .btn-danger.active,
2270 .open .dropdown-toggle.btn-danger {
2271 background-image: none;
2272 }
2273 .btn-danger.disabled,
2274 .btn-danger[disabled],
2275 fieldset[disabled] .btn-danger,
2276 .btn-danger.disabled:hover,
2277 .btn-danger[disabled]:hover,
2278 fieldset[disabled] .btn-danger:hover,
2279 .btn-danger.disabled:focus,
2280 .btn-danger[disabled]:focus,
2281 fieldset[disabled] .btn-danger:focus,
2282 .btn-danger.disabled:active,
2283 .btn-danger[disabled]:active,
2284 fieldset[disabled] .btn-danger:active,
2285 .btn-danger.disabled.active,
2286 .btn-danger[disabled].active,
2287 fieldset[disabled] .btn-danger.active {
2288 background-color: #d9534f;
2289 border-color: #d43f3a;
2290 }
2291 .btn-danger .badge {
2292 color: #d9534f;
2293 background-color: #ffffff;
2294 }
2295 .btn-link {
2296 color: #428bca;
2297 font-weight: normal;
2298 cursor: pointer;
2299 border-radius: 0;
2300 }
2301 .btn-link,
2302 .btn-link:active,
2303 .btn-link[disabled],
2304 fieldset[disabled] .btn-link {
2305 background-color: transparent;
2306 -webkit-box-shadow: none;
2307 box-shadow: none;
2308 }
2309 .btn-link,
2310 .btn-link:hover,
2311 .btn-link:focus,
2312 .btn-link:active {
2313 border-color: transparent;
2314 }
2315 .btn-link:hover,
2316 .btn-link:focus {
2317 color: #2a6496;
2318 text-decoration: underline;
2319 background-color: transparent;
2320 }
2321 .btn-link[disabled]:hover,
2322 fieldset[disabled] .btn-link:hover,
2323 .btn-link[disabled]:focus,
2324 fieldset[disabled] .btn-link:focus {
2325 color: #999999;
2326 text-decoration: none;
2327 }
2328 .btn-lg,
2329 .btn-group-lg > .btn {
2330 padding: 10px 16px;
2331 font-size: 17px;
2332 line-height: 1.33;
2333 border-radius: 6px;
2334 }
2335 .btn-sm,
2336 .btn-group-sm > .btn {
2337 padding: 5px 10px;
2338 font-size: 12px;
2339 line-height: 1.5;
2340 border-radius: 3px;
2341 }
2342 .btn-xs,
2343 .btn-group-xs > .btn {
2344 padding: 1px 5px;
2345 font-size: 12px;
2346 line-height: 1.5;
2347 border-radius: 3px;
2348 }
2349 .btn-block {
2350 display: block;
2351 width: 100%;
2352 padding-left: 0;
2353 padding-right: 0;
2354 }
2355 .btn-block + .btn-block {
2356 margin-top: 5px;
2357 }
2358 input[type="submit"].btn-block,
2359 input[type="reset"].btn-block,
2360 input[type="button"].btn-block {
2361 width: 100%;
2362 }
2363 .fade {
2364 opacity: 0;
2365 -webkit-transition: opacity 0.15s linear;
2366 transition: opacity 0.15s linear;
2367 }
2368 .fade.in {
2369 opacity: 1;
2370 }
2371 .collapse {
2372 display: none;
2373 }
2374 .collapse.in {
2375 display: block;
2376 }
2377 .collapsing {
2378 position: relative;
2379 height: 0;
2380 overflow: hidden;
2381 -webkit-transition: height 0.35s ease;
2382 transition: height 0.35s ease;
2383 }
2384 @font-face {
2385 font-family: 'Glyphicons Halflings';
2386 src: url('../fonts/glyphicons-halflings-regular.eot');
2387 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');
2388 }
2389 .glyphicon {
2390 position: relative;
2391 top: 1px;
2392 display: inline-block;
2393 font-family: 'Glyphicons Halflings';
2394 font-style: normal;
2395 font-weight: normal;
2396 line-height: 1;
2397 -webkit-font-smoothing: antialiased;
2398 -moz-osx-font-smoothing: grayscale;
2399 }
2400 .glyphicon-asterisk:before {
2401 content: "\2a";
2402 }
2403 .glyphicon-plus:before {
2404 content: "\2b";
2405 }
2406 .glyphicon-euro:before {
2407 content: "\20ac";
2408 }
2409 .glyphicon-minus:before {
2410 content: "\2212";
2411 }
2412 .glyphicon-cloud:before {
2413 content: "\2601";
2414 }
2415 .glyphicon-envelope:before {
2416 content: "\2709";
2417 }
2418 .glyphicon-pencil:before {
2419 content: "\270f";
2420 }
2421 .glyphicon-glass:before {
2422 content: "\e001";
2423 }
2424 .glyphicon-music:before {
2425 content: "\e002";
2426 }
2427 .glyphicon-search:before {
2428 content: "\e003";
2429 }
2430 .glyphicon-heart:before {
2431 content: "\e005";
2432 }
2433 .glyphicon-star:before {
2434 content: "\e006";
2435 }
2436 .glyphicon-star-empty:before {
2437 content: "\e007";
2438 }
2439 .glyphicon-user:before {
2440 content: "\e008";
2441 }
2442 .glyphicon-film:before {
2443 content: "\e009";
2444 }
2445 .glyphicon-th-large:before {
2446 content: "\e010";
2447 }
2448 .glyphicon-th:before {
2449 content: "\e011";
2450 }
2451 .glyphicon-th-list:before {
2452 content: "\e012";
2453 }
2454 .glyphicon-ok:before {
2455 content: "\e013";
2456 }
2457 .glyphicon-remove:before {
2458 content: "\e014";
2459 }
2460 .glyphicon-zoom-in:before {
2461 content: "\e015";
2462 }
2463 .glyphicon-zoom-out:before {
2464 content: "\e016";
2465 }
2466 .glyphicon-off:before {
2467 content: "\e017";
2468 }
2469 .glyphicon-signal:before {
2470 content: "\e018";
2471 }
2472 .glyphicon-cog:before {
2473 content: "\e019";
2474 }
2475 .glyphicon-trash:before {
2476 content: "\e020";
2477 }
2478 .glyphicon-home:before {
2479 content: "\e021";
2480 }
2481 .glyphicon-file:before {
2482 content: "\e022";
2483 }
2484 .glyphicon-time:before {
2485 content: "\e023";
2486 }
2487 .glyphicon-road:before {
2488 content: "\e024";
2489 }
2490 .glyphicon-download-alt:before {
2491 content: "\e025";
2492 }
2493 .glyphicon-download:before {
2494 content: "\e026";
2495 }
2496 .glyphicon-upload:before {
2497 content: "\e027";
2498 }
2499 .glyphicon-inbox:before {
2500 content: "\e028";
2501 }
2502 .glyphicon-play-circle:before {
2503 content: "\e029";
2504 }
2505 .glyphicon-repeat:before {
2506 content: "\e030";
2507 }
2508 .glyphicon-refresh:before {
2509 content: "\e031";
2510 }
2511 .glyphicon-list-alt:before {
2512 content: "\e032";
2513 }
2514 .glyphicon-lock:before {
2515 content: "\e033";
2516 }
2517 .glyphicon-flag:before {
2518 content: "\e034";
2519 }
2520 .glyphicon-headphones:before {
2521 content: "\e035";
2522 }
2523 .glyphicon-volume-off:before {
2524 content: "\e036";
2525 }
2526 .glyphicon-volume-down:before {
2527 content: "\e037";
2528 }
2529 .glyphicon-volume-up:before {
2530 content: "\e038";
2531 }
2532 .glyphicon-qrcode:before {
2533 content: "\e039";
2534 }
2535 .glyphicon-barcode:before {
2536 content: "\e040";
2537 }
2538 .glyphicon-tag:before {
2539 content: "\e041";
2540 }
2541 .glyphicon-tags:before {
2542 content: "\e042";
2543 }
2544 .glyphicon-book:before {
2545 content: "\e043";
2546 }
2547 .glyphicon-bookmark:before {
2548 content: "\e044";
2549 }
2550 .glyphicon-print:before {
2551 content: "\e045";
2552 }
2553 .glyphicon-camera:before {
2554 content: "\e046";
2555 }
2556 .glyphicon-font:before {
2557 content: "\e047";
2558 }
2559 .glyphicon-bold:before {
2560 content: "\e048";
2561 }
2562 .glyphicon-italic:before {
2563 content: "\e049";
2564 }
2565 .glyphicon-text-height:before {
2566 content: "\e050";
2567 }
2568 .glyphicon-text-width:before {
2569 content: "\e051";
2570 }
2571 .glyphicon-align-left:before {
2572 content: "\e052";
2573 }
2574 .glyphicon-align-center:before {
2575 content: "\e053";
2576 }
2577 .glyphicon-align-right:before {
2578 content: "\e054";
2579 }
2580 .glyphicon-align-justify:before {
2581 content: "\e055";
2582 }
2583 .glyphicon-list:before {
2584 content: "\e056";
2585 }
2586 .glyphicon-indent-left:before {
2587 content: "\e057";
2588 }
2589 .glyphicon-indent-right:before {
2590 content: "\e058";
2591 }
2592 .glyphicon-facetime-video:before {
2593 content: "\e059";
2594 }
2595 .glyphicon-picture:before {
2596 content: "\e060";
2597 }
2598 .glyphicon-map-marker:before {
2599 content: "\e062";
2600 }
2601 .glyphicon-adjust:before {
2602 content: "\e063";
2603 }
2604 .glyphicon-tint:before {
2605 content: "\e064";
2606 }
2607 .glyphicon-edit:before {
2608 content: "\e065";
2609 }
2610 .glyphicon-share:before {
2611 content: "\e066";
2612 }
2613 .glyphicon-check:before {
2614 content: "\e067";
2615 }
2616 .glyphicon-move:before {
2617 content: "\e068";
2618 }
2619 .glyphicon-step-backward:before {
2620 content: "\e069";
2621 }
2622 .glyphicon-fast-backward:before {
2623 content: "\e070";
2624 }
2625 .glyphicon-backward:before {
2626 content: "\e071";
2627 }
2628 .glyphicon-play:before {
2629 content: "\e072";
2630 }
2631 .glyphicon-pause:before {
2632 content: "\e073";
2633 }
2634 .glyphicon-stop:before {
2635 content: "\e074";
2636 }
2637 .glyphicon-forward:before {
2638 content: "\e075";
2639 }
2640 .glyphicon-fast-forward:before {
2641 content: "\e076";
2642 }
2643 .glyphicon-step-forward:before {
2644 content: "\e077";
2645 }
2646 .glyphicon-eject:before {
2647 content: "\e078";
2648 }
2649 .glyphicon-chevron-left:before {
2650 content: "\e079";
2651 }
2652 .glyphicon-chevron-right:before {
2653 content: "\e080";
2654 }
2655 .glyphicon-plus-sign:before {
2656 content: "\e081";
2657 }
2658 .glyphicon-minus-sign:before {
2659 content: "\e082";
2660 }
2661 .glyphicon-remove-sign:before {
2662 content: "\e083";
2663 }
2664 .glyphicon-ok-sign:before {
2665 content: "\e084";
2666 }
2667 .glyphicon-question-sign:before {
2668 content: "\e085";
2669 }
2670 .glyphicon-info-sign:before {
2671 content: "\e086";
2672 }
2673 .glyphicon-screenshot:before {
2674 content: "\e087";
2675 }
2676 .glyphicon-remove-circle:before {
2677 content: "\e088";
2678 }
2679 .glyphicon-ok-circle:before {
2680 content: "\e089";
2681 }
2682 .glyphicon-ban-circle:before {
2683 content: "\e090";
2684 }
2685 .glyphicon-arrow-left:before {
2686 content: "\e091";
2687 }
2688 .glyphicon-arrow-right:before {
2689 content: "\e092";
2690 }
2691 .glyphicon-arrow-up:before {
2692 content: "\e093";
2693 }
2694 .glyphicon-arrow-down:before {
2695 content: "\e094";
2696 }
2697 .glyphicon-share-alt:before {
2698 content: "\e095";
2699 }
2700 .glyphicon-resize-full:before {
2701 content: "\e096";
2702 }
2703 .glyphicon-resize-small:before {
2704 content: "\e097";
2705 }
2706 .glyphicon-exclamation-sign:before {
2707 content: "\e101";
2708 }
2709 .glyphicon-gift:before {
2710 content: "\e102";
2711 }
2712 .glyphicon-leaf:before {
2713 content: "\e103";
2714 }
2715 .glyphicon-fire:before {
2716 content: "\e104";
2717 }
2718 .glyphicon-eye-open:before {
2719 content: "\e105";
2720 }
2721 .glyphicon-eye-close:before {
2722 content: "\e106";
2723 }
2724 .glyphicon-warning-sign:before {
2725 content: "\e107";
2726 }
2727 .glyphicon-plane:before {
2728 content: "\e108";
2729 }
2730 .glyphicon-calendar:before {
2731 content: "\e109";
2732 }
2733 .glyphicon-random:before {
2734 content: "\e110";
2735 }
2736 .glyphicon-comment:before {
2737 content: "\e111";
2738 }
2739 .glyphicon-magnet:before {
2740 content: "\e112";
2741 }
2742 .glyphicon-chevron-up:before {
2743 content: "\e113";
2744 }
2745 .glyphicon-chevron-down:before {
2746 content: "\e114";
2747 }
2748 .glyphicon-retweet:before {
2749 content: "\e115";
2750 }
2751 .glyphicon-shopping-cart:before {
2752 content: "\e116";
2753 }
2754 .glyphicon-folder-close:before {
2755 content: "\e117";
2756 }
2757 .glyphicon-folder-open:before {
2758 content: "\e118";
2759 }
2760 .glyphicon-resize-vertical:before {
2761 content: "\e119";
2762 }
2763 .glyphicon-resize-horizontal:before {
2764 content: "\e120";
2765 }
2766 .glyphicon-hdd:before {
2767 content: "\e121";
2768 }
2769 .glyphicon-bullhorn:before {
2770 content: "\e122";
2771 }
2772 .glyphicon-bell:before {
2773 content: "\e123";
2774 }
2775 .glyphicon-certificate:before {
2776 content: "\e124";
2777 }
2778 .glyphicon-thumbs-up:before {
2779 content: "\e125";
2780 }
2781 .glyphicon-thumbs-down:before {
2782 content: "\e126";
2783 }
2784 .glyphicon-hand-right:before {
2785 content: "\e127";
2786 }
2787 .glyphicon-hand-left:before {
2788 content: "\e128";
2789 }
2790 .glyphicon-hand-up:before {
2791 content: "\e129";
2792 }
2793 .glyphicon-hand-down:before {
2794 content: "\e130";
2795 }
2796 .glyphicon-circle-arrow-right:before {
2797 content: "\e131";
2798 }
2799 .glyphicon-circle-arrow-left:before {
2800 content: "\e132";
2801 }
2802 .glyphicon-circle-arrow-up:before {
2803 content: "\e133";
2804 }
2805 .glyphicon-circle-arrow-down:before {
2806 content: "\e134";
2807 }
2808 .glyphicon-globe:before {
2809 content: "\e135";
2810 }
2811 .glyphicon-wrench:before {
2812 content: "\e136";
2813 }
2814 .glyphicon-tasks:before {
2815 content: "\e137";
2816 }
2817 .glyphicon-filter:before {
2818 content: "\e138";
2819 }
2820 .glyphicon-briefcase:before {
2821 content: "\e139";
2822 }
2823 .glyphicon-fullscreen:before {
2824 content: "\e140";
2825 }
2826 .glyphicon-dashboard:before {
2827 content: "\e141";
2828 }
2829 .glyphicon-paperclip:before {
2830 content: "\e142";
2831 }
2832 .glyphicon-heart-empty:before {
2833 content: "\e143";
2834 }
2835 .glyphicon-link:before {
2836 content: "\e144";
2837 }
2838 .glyphicon-phone:before {
2839 content: "\e145";
2840 }
2841 .glyphicon-pushpin:before {
2842 content: "\e146";
2843 }
2844 .glyphicon-usd:before {
2845 content: "\e148";
2846 }
2847 .glyphicon-gbp:before {
2848 content: "\e149";
2849 }
2850 .glyphicon-sort:before {
2851 content: "\e150";
2852 }
2853 .glyphicon-sort-by-alphabet:before {
2854 content: "\e151";
2855 }
2856 .glyphicon-sort-by-alphabet-alt:before {
2857 content: "\e152";
2858 }
2859 .glyphicon-sort-by-order:before {
2860 content: "\e153";
2861 }
2862 .glyphicon-sort-by-order-alt:before {
2863 content: "\e154";
2864 }
2865 .glyphicon-sort-by-attributes:before {
2866 content: "\e155";
2867 }
2868 .glyphicon-sort-by-attributes-alt:before {
2869 content: "\e156";
2870 }
2871 .glyphicon-unchecked:before {
2872 content: "\e157";
2873 }
2874 .glyphicon-expand:before {
2875 content: "\e158";
2876 }
2877 .glyphicon-collapse-down:before {
2878 content: "\e159";
2879 }
2880 .glyphicon-collapse-up:before {
2881 content: "\e160";
2882 }
2883 .glyphicon-log-in:before {
2884 content: "\e161";
2885 }
2886 .glyphicon-flash:before {
2887 content: "\e162";
2888 }
2889 .glyphicon-log-out:before {
2890 content: "\e163";
2891 }
2892 .glyphicon-new-window:before {
2893 content: "\e164";
2894 }
2895 .glyphicon-record:before {
2896 content: "\e165";
2897 }
2898 .glyphicon-save:before {
2899 content: "\e166";
2900 }
2901 .glyphicon-open:before {
2902 content: "\e167";
2903 }
2904 .glyphicon-saved:before {
2905 content: "\e168";
2906 }
2907 .glyphicon-import:before {
2908 content: "\e169";
2909 }
2910 .glyphicon-export:before {
2911 content: "\e170";
2912 }
2913 .glyphicon-send:before {
2914 content: "\e171";
2915 }
2916 .glyphicon-floppy-disk:before {
2917 content: "\e172";
2918 }
2919 .glyphicon-floppy-saved:before {
2920 content: "\e173";
2921 }
2922 .glyphicon-floppy-remove:before {
2923 content: "\e174";
2924 }
2925 .glyphicon-floppy-save:before {
2926 content: "\e175";
2927 }
2928 .glyphicon-floppy-open:before {
2929 content: "\e176";
2930 }
2931 .glyphicon-credit-card:before {
2932 content: "\e177";
2933 }
2934 .glyphicon-transfer:before {
2935 content: "\e178";
2936 }
2937 .glyphicon-cutlery:before {
2938 content: "\e179";
2939 }
2940 .glyphicon-header:before {
2941 content: "\e180";
2942 }
2943 .glyphicon-compressed:before {
2944 content: "\e181";
2945 }
2946 .glyphicon-earphone:before {
2947 content: "\e182";
2948 }
2949 .glyphicon-phone-alt:before {
2950 content: "\e183";
2951 }
2952 .glyphicon-tower:before {
2953 content: "\e184";
2954 }
2955 .glyphicon-stats:before {
2956 content: "\e185";
2957 }
2958 .glyphicon-sd-video:before {
2959 content: "\e186";
2960 }
2961 .glyphicon-hd-video:before {
2962 content: "\e187";
2963 }
2964 .glyphicon-subtitles:before {
2965 content: "\e188";
2966 }
2967 .glyphicon-sound-stereo:before {
2968 content: "\e189";
2969 }
2970 .glyphicon-sound-dolby:before {
2971 content: "\e190";
2972 }
2973 .glyphicon-sound-5-1:before {
2974 content: "\e191";
2975 }
2976 .glyphicon-sound-6-1:before {
2977 content: "\e192";
2978 }
2979 .glyphicon-sound-7-1:before {
2980 content: "\e193";
2981 }
2982 .glyphicon-copyright-mark:before {
2983 content: "\e194";
2984 }
2985 .glyphicon-registration-mark:before {
2986 content: "\e195";
2987 }
2988 .glyphicon-cloud-download:before {
2989 content: "\e197";
2990 }
2991 .glyphicon-cloud-upload:before {
2992 content: "\e198";
2993 }
2994 .glyphicon-tree-conifer:before {
2995 content: "\e199";
2996 }
2997 .glyphicon-tree-deciduous:before {
2998 content: "\e200";
2999 }
3000 .caret {
3001 display: inline-block;
3002 width: 0;
3003 height: 0;
3004 margin-left: 2px;
3005 vertical-align: middle;
3006 border-top: 4px solid;
3007 border-right: 4px solid transparent;
3008 border-left: 4px solid transparent;
3009 }
3010 .dropdown {
3011 position: relative;
3012 }
3013 .dropdown-toggle:focus {
3014 outline: 0;
3015 }
3016 .dropdown-menu {
3017 position: absolute;
3018 top: 100%;
3019 left: 0;
3020 z-index: 1000;
3021 display: none;
3022 float: left;
3023 min-width: 160px;
3024 padding: 5px 0;
3025 margin: 2px 0 0;
3026 list-style: none;
3027 font-size: 13px;
3028 background-color: #ffffff;
3029 border: 1px solid #cccccc;
3030 border: 1px solid rgba(0, 0, 0, 0.15);
3031 border-radius: 4px;
3032 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3033 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3034 background-clip: padding-box;
3035 }
3036 .dropdown-menu.pull-right {
3037 right: 0;
3038 left: auto;
3039 }
3040 .dropdown-menu .divider {
3041 height: 1px;
3042 margin: 8px 0;
3043 overflow: hidden;
3044 background-color: #e5e5e5;
3045 }
3046 .dropdown-menu > li > a {
3047 display: block;
3048 padding: 3px 20px;
3049 clear: both;
3050 font-weight: normal;
3051 line-height: 1.42857143;
3052 color: #333333;
3053 white-space: nowrap;
3054 }
3055 .dropdown-menu > li > a:hover,
3056 .dropdown-menu > li > a:focus {
3057 text-decoration: none;
3058 color: #262626;
3059 background-color: #f5f5f5;
3060 }
3061 .dropdown-menu > .active > a,
3062 .dropdown-menu > .active > a:hover,
3063 .dropdown-menu > .active > a:focus {
3064 color: #ffffff;
3065 text-decoration: none;
3066 outline: 0;
3067 background-color: #428bca;
3068 }
3069 .dropdown-menu > .disabled > a,
3070 .dropdown-menu > .disabled > a:hover,
3071 .dropdown-menu > .disabled > a:focus {
3072 color: #999999;
3073 }
3074 .dropdown-menu > .disabled > a:hover,
3075 .dropdown-menu > .disabled > a:focus {
3076 text-decoration: none;
3077 background-color: transparent;
3078 background-image: none;
3079 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3080 cursor: not-allowed;
3081 }
3082 .open > .dropdown-menu {
3083 display: block;
3084 }
3085 .open > a {
3086 outline: 0;
3087 }
3088 .dropdown-menu-right {
3089 left: auto;
3090 right: 0;
3091 }
3092 .dropdown-menu-left {
3093 left: 0;
3094 right: auto;
3095 }
3096 .dropdown-header {
3097 display: block;
3098 padding: 3px 20px;
3099 font-size: 12px;
3100 line-height: 1.42857143;
3101 color: #999999;
3102 }
3103 .dropdown-backdrop {
3104 position: fixed;
3105 left: 0;
3106 right: 0;
3107 bottom: 0;
3108 top: 0;
3109 z-index: 990;
3110 }
3111 .pull-right > .dropdown-menu {
3112 right: 0;
3113 left: auto;
3114 }
3115 .dropup .caret,
3116 .navbar-fixed-bottom .dropdown .caret {
3117 border-top: 0;
3118 border-bottom: 4px solid;
3119 content: "";
3120 }
3121 .dropup .dropdown-menu,
3122 .navbar-fixed-bottom .dropdown .dropdown-menu {
3123 top: auto;
3124 bottom: 100%;
3125 margin-bottom: 1px;
3126 }
3127 @media (min-width: 768px) {
3128 .navbar-right .dropdown-menu {
3129 left: auto;
3130 right: 0;
3131 }
3132 .navbar-right .dropdown-menu-left {
3133 left: 0;
3134 right: auto;
3135 }
3136 }
3137 .btn-group,
3138 .btn-group-vertical {
3139 position: relative;
3140 display: inline-block;
3141 vertical-align: middle;
3142 }
3143 .btn-group > .btn,
3144 .btn-group-vertical > .btn {
3145 position: relative;
3146 float: left;
3147 }
3148 .btn-group > .btn:hover,
3149 .btn-group-vertical > .btn:hover,
3150 .btn-group > .btn:focus,
3151 .btn-group-vertical > .btn:focus,
3152 .btn-group > .btn:active,
3153 .btn-group-vertical > .btn:active,
3154 .btn-group > .btn.active,
3155 .btn-group-vertical > .btn.active {
3156 z-index: 2;
3157 }
3158 .btn-group > .btn:focus,
3159 .btn-group-vertical > .btn:focus {
3160 outline: none;
3161 }
3162 .btn-group .btn + .btn,
3163 .btn-group .btn + .btn-group,
3164 .btn-group .btn-group + .btn,
3165 .btn-group .btn-group + .btn-group {
3166 margin-left: -1px;
3167 }
3168 .btn-toolbar {
3169 margin-left: -5px;
3170 }
3171 .btn-toolbar .btn-group,
3172 .btn-toolbar .input-group {
3173 float: left;
3174 }
3175 .btn-toolbar > .btn,
3176 .btn-toolbar > .btn-group,
3177 .btn-toolbar > .input-group {
3178 margin-left: 5px;
3179 }
3180 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3181 border-radius: 0;
3182 }
3183 .btn-group > .btn:first-child {
3184 margin-left: 0;
3185 }
3186 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3187 border-bottom-right-radius: 0;
3188 border-top-right-radius: 0;
3189 }
3190 .btn-group > .btn:last-child:not(:first-child),
3191 .btn-group > .dropdown-toggle:not(:first-child) {
3192 border-bottom-left-radius: 0;
3193 border-top-left-radius: 0;
3194 }
3195 .btn-group > .btn-group {
3196 float: left;
3197 }
3198 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3199 border-radius: 0;
3200 }
3201 .btn-group > .btn-group:first-child > .btn:last-child,
3202 .btn-group > .btn-group:first-child > .dropdown-toggle {
3203 border-bottom-right-radius: 0;
3204 border-top-right-radius: 0;
3205 }
3206 .btn-group > .btn-group:last-child > .btn:first-child {
3207 border-bottom-left-radius: 0;
3208 border-top-left-radius: 0;
3209 }
3210 .btn-group .dropdown-toggle:active,
3211 .btn-group.open .dropdown-toggle {
3212 outline: 0;
3213 }
3214 .btn-group > .btn + .dropdown-toggle {
3215 padding-left: 8px;
3216 padding-right: 8px;
3217 }
3218 .btn-group > .btn-lg + .dropdown-toggle {
3219 padding-left: 12px;
3220 padding-right: 12px;
3221 }
3222 .btn-group.open .dropdown-toggle {
3223 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3224 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3225 }
3226 .btn-group.open .dropdown-toggle.btn-link {
3227 -webkit-box-shadow: none;
3228 box-shadow: none;
3229 }
3230 .btn .caret {
3231 margin-left: 0;
3232 }
3233 .btn-lg .caret {
3234 border-width: 5px 5px 0;
3235 border-bottom-width: 0;
3236 }
3237 .dropup .btn-lg .caret {
3238 border-width: 0 5px 5px;
3239 }
3240 .btn-group-vertical > .btn,
3241 .btn-group-vertical > .btn-group,
3242 .btn-group-vertical > .btn-group > .btn {
3243 display: block;
3244 float: none;
3245 width: 100%;
3246 max-width: 100%;
3247 }
3248 .btn-group-vertical > .btn-group > .btn {
3249 float: none;
3250 }
3251 .btn-group-vertical > .btn + .btn,
3252 .btn-group-vertical > .btn + .btn-group,
3253 .btn-group-vertical > .btn-group + .btn,
3254 .btn-group-vertical > .btn-group + .btn-group {
3255 margin-top: -1px;
3256 margin-left: 0;
3257 }
3258 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3259 border-radius: 0;
3260 }
3261 .btn-group-vertical > .btn:first-child:not(:last-child) {
3262 border-top-right-radius: 4px;
3263 border-bottom-right-radius: 0;
3264 border-bottom-left-radius: 0;
3265 }
3266 .btn-group-vertical > .btn:last-child:not(:first-child) {
3267 border-bottom-left-radius: 4px;
3268 border-top-right-radius: 0;
3269 border-top-left-radius: 0;
3270 }
3271 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3272 border-radius: 0;
3273 }
3274 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3275 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3276 border-bottom-right-radius: 0;
3277 border-bottom-left-radius: 0;
3278 }
3279 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3280 border-top-right-radius: 0;
3281 border-top-left-radius: 0;
3282 }
3283 .btn-group-justified {
3284 display: table;
3285 width: 100%;
3286 table-layout: fixed;
3287 border-collapse: separate;
3288 }
3289 .btn-group-justified > .btn,
3290 .btn-group-justified > .btn-group {
3291 float: none;
3292 display: table-cell;
3293 width: 1%;
3294 }
3295 .btn-group-justified > .btn-group .btn {
3296 width: 100%;
3297 }
3298 [data-toggle="buttons"] > .btn > input[type="radio"],
3299 [data-toggle="buttons"] > .btn > input[type="checkbox"] {
3300 display: none;
3301 }
3302 .input-group {
3303 position: relative;
3304 display: table;
3305 border-collapse: separate;
3306 }
3307 .input-group[class*="col-"] {
3308 float: none;
3309 padding-left: 0;
3310 padding-right: 0;
3311 }
3312 .input-group .form-control {
3313 position: relative;
3314 z-index: 2;
3315 float: left;
3316 width: 100%;
3317 margin-bottom: 0;
3318 }
3319 .input-group-lg > .form-control,
3320 .input-group-lg > .input-group-addon,
3321 .input-group-lg > .input-group-btn > .btn {
3322 height: 45px;
3323 padding: 10px 16px;
3324 font-size: 17px;
3325 line-height: 1.33;
3326 border-radius: 6px;
3327 }
3328 select.input-group-lg > .form-control,
3329 select.input-group-lg > .input-group-addon,
3330 select.input-group-lg > .input-group-btn > .btn {
3331 height: 45px;
3332 line-height: 45px;
3333 }
3334 textarea.input-group-lg > .form-control,
3335 textarea.input-group-lg > .input-group-addon,
3336 textarea.input-group-lg > .input-group-btn > .btn,
3337 select[multiple].input-group-lg > .form-control,
3338 select[multiple].input-group-lg > .input-group-addon,
3339 select[multiple].input-group-lg > .input-group-btn > .btn {
3340 height: auto;
3341 }
3342 .input-group-sm > .form-control,
3343 .input-group-sm > .input-group-addon,
3344 .input-group-sm > .input-group-btn > .btn {
3345 height: 30px;
3346 padding: 5px 10px;
3347 font-size: 12px;
3348 line-height: 1.5;
3349 border-radius: 3px;
3350 }
3351 select.input-group-sm > .form-control,
3352 select.input-group-sm > .input-group-addon,
3353 select.input-group-sm > .input-group-btn > .btn {
3354 height: 30px;
3355 line-height: 30px;
3356 }
3357 textarea.input-group-sm > .form-control,
3358 textarea.input-group-sm > .input-group-addon,
3359 textarea.input-group-sm > .input-group-btn > .btn,
3360 select[multiple].input-group-sm > .form-control,
3361 select[multiple].input-group-sm > .input-group-addon,
3362 select[multiple].input-group-sm > .input-group-btn > .btn {
3363 height: auto;
3364 }
3365 .input-group-addon,
3366 .input-group-btn,
3367 .input-group .form-control {
3368 display: table-cell;
3369 }
3370 .input-group-addon:not(:first-child):not(:last-child),
3371 .input-group-btn:not(:first-child):not(:last-child),
3372 .input-group .form-control:not(:first-child):not(:last-child) {
3373 border-radius: 0;
3374 }
3375 .input-group-addon,
3376 .input-group-btn {
3377 width: 1%;
3378 white-space: nowrap;
3379 vertical-align: middle;
3380 }
3381 .input-group-addon {
3382 padding: 6px 12px;
3383 font-size: 13px;
3384 font-weight: normal;
3385 line-height: 1;
3386 color: #555555;
3387 text-align: center;
3388 background-color: #eeeeee;
3389 border: 1px solid #cccccc;
3390 border-radius: 4px;
3391 }
3392 .input-group-addon.input-sm {
3393 padding: 5px 10px;
3394 font-size: 12px;
3395 border-radius: 3px;
3396 }
3397 .input-group-addon.input-lg {
3398 padding: 10px 16px;
3399 font-size: 17px;
3400 border-radius: 6px;
3401 }
3402 .input-group-addon input[type="radio"],
3403 .input-group-addon input[type="checkbox"] {
3404 margin-top: 0;
3405 }
3406 .input-group .form-control:first-child,
3407 .input-group-addon:first-child,
3408 .input-group-btn:first-child > .btn,
3409 .input-group-btn:first-child > .btn-group > .btn,
3410 .input-group-btn:first-child > .dropdown-toggle,
3411 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3412 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3413 border-bottom-right-radius: 0;
3414 border-top-right-radius: 0;
3415 }
3416 .input-group-addon:first-child {
3417 border-right: 0;
3418 }
3419 .input-group .form-control:last-child,
3420 .input-group-addon:last-child,
3421 .input-group-btn:last-child > .btn,
3422 .input-group-btn:last-child > .btn-group > .btn,
3423 .input-group-btn:last-child > .dropdown-toggle,
3424 .input-group-btn:first-child > .btn:not(:first-child),
3425 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3426 border-bottom-left-radius: 0;
3427 border-top-left-radius: 0;
3428 }
3429 .input-group-addon:last-child {
3430 border-left: 0;
3431 }
3432 .input-group-btn {
3433 position: relative;
3434 font-size: 0;
3435 white-space: nowrap;
3436 }
3437 .input-group-btn > .btn {
3438 position: relative;
3439 }
3440 .input-group-btn > .btn + .btn {
3441 margin-left: -1px;
3442 }
3443 .input-group-btn > .btn:hover,
3444 .input-group-btn > .btn:focus,
3445 .input-group-btn > .btn:active {
3446 z-index: 2;
3447 }
3448 .input-group-btn:first-child > .btn,
3449 .input-group-btn:first-child > .btn-group {
3450 margin-right: -1px;
3451 }
3452 .input-group-btn:last-child > .btn,
3453 .input-group-btn:last-child > .btn-group {
3454 margin-left: -1px;
3455 }
3456 .nav {
3457 margin-bottom: 0;
3458 padding-left: 0;
3459 list-style: none;
3460 }
3461 .nav > li {
3462 position: relative;
3463 display: block;
3464 }
3465 .nav > li > a {
3466 position: relative;
3467 display: block;
3468 padding: 10px 15px;
3469 }
3470 .nav > li > a:hover,
3471 .nav > li > a:focus {
3472 text-decoration: none;
3473 background-color: #eeeeee;
3474 }
3475 .nav > li.disabled > a {
3476 color: #999999;
3477 }
3478 .nav > li.disabled > a:hover,
3479 .nav > li.disabled > a:focus {
3480 color: #999999;
3481 text-decoration: none;
3482 background-color: transparent;
3483 cursor: not-allowed;
3484 }
3485 .nav .open > a,
3486 .nav .open > a:hover,
3487 .nav .open > a:focus {
3488 background-color: #eeeeee;
3489 border-color: #428bca;
3490 }
3491 .nav .nav-divider {
3492 height: 1px;
3493 margin: 8px 0;
3494 overflow: hidden;
3495 background-color: #e5e5e5;
3496 }
3497 .nav > li > a > img {
3498 max-width: none;
3499 }
3500 .nav-tabs {
3501 border-bottom: 1px solid #dddddd;
3502 }
3503 .nav-tabs > li {
3504 float: left;
3505 margin-bottom: -1px;
3506 }
3507 .nav-tabs > li > a {
3508 margin-right: 2px;
3509 line-height: 1.42857143;
3510 border: 1px solid transparent;
3511 border-radius: 4px 4px 0 0;
3512 }
3513 .nav-tabs > li > a:hover {
3514 border-color: #eeeeee #eeeeee #dddddd;
3515 }
3516 .nav-tabs > li.active > a,
3517 .nav-tabs > li.active > a:hover,
3518 .nav-tabs > li.active > a:focus {
3519 color: #555555;
3520 background-color: #ffffff;
3521 border: 1px solid #dddddd;
3522 border-bottom-color: transparent;
3523 cursor: default;
3524 }
3525 .nav-tabs.nav-justified {
3526 width: 100%;
3527 border-bottom: 0;
3528 }
3529 .nav-tabs.nav-justified > li {
3530 float: none;
3531 }
3532 .nav-tabs.nav-justified > li > a {
3533 text-align: center;
3534 margin-bottom: 5px;
3535 }
3536 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
3537 top: auto;
3538 left: auto;
3539 }
3540 @media (min-width: 768px) {
3541 .nav-tabs.nav-justified > li {
3542 display: table-cell;
3543 width: 1%;
3544 }
3545 .nav-tabs.nav-justified > li > a {
3546 margin-bottom: 0;
3547 }
3548 }
3549 .nav-tabs.nav-justified > li > a {
3550 margin-right: 0;
3551 border-radius: 4px;
3552 }
3553 .nav-tabs.nav-justified > .active > a,
3554 .nav-tabs.nav-justified > .active > a:hover,
3555 .nav-tabs.nav-justified > .active > a:focus {
3556 border: 1px solid #dddddd;
3557 }
3558 @media (min-width: 768px) {
3559 .nav-tabs.nav-justified > li > a {
3560 border-bottom: 1px solid #dddddd;
3561 border-radius: 4px 4px 0 0;
3562 }
3563 .nav-tabs.nav-justified > .active > a,
3564 .nav-tabs.nav-justified > .active > a:hover,
3565 .nav-tabs.nav-justified > .active > a:focus {
3566 border-bottom-color: #ffffff;
3567 }
3568 }
3569 .nav-pills > li {
3570 float: left;
3571 }
3572 .nav-pills > li > a {
3573 border-radius: 4px;
3574 }
3575 .nav-pills > li + li {
3576 margin-left: 2px;
3577 }
3578 .nav-pills > li.active > a,
3579 .nav-pills > li.active > a:hover,
3580 .nav-pills > li.active > a:focus {
3581 color: #ffffff;
3582 background-color: #428bca;
3583 }
3584 .nav-stacked > li {
3585 float: none;
3586 }
3587 .nav-stacked > li + li {
3588 margin-top: 2px;
3589 margin-left: 0;
3590 }
3591 .nav-justified {
3592 width: 100%;
3593 }
3594 .nav-justified > li {
3595 float: none;
3596 }
3597 .nav-justified > li > a {
3598 text-align: center;
3599 margin-bottom: 5px;
3600 }
3601 .nav-justified > .dropdown .dropdown-menu {
3602 top: auto;
3603 left: auto;
3604 }
3605 @media (min-width: 768px) {
3606 .nav-justified > li {
3607 display: table-cell;
3608 width: 1%;
3609 }
3610 .nav-justified > li > a {
3611 margin-bottom: 0;
3612 }
3613 }
3614 .nav-tabs-justified {
3615 border-bottom: 0;
3616 }
3617 .nav-tabs-justified > li > a {
3618 margin-right: 0;
3619 border-radius: 4px;
3620 }
3621 .nav-tabs-justified > .active > a,
3622 .nav-tabs-justified > .active > a:hover,
3623 .nav-tabs-justified > .active > a:focus {
3624 border: 1px solid #dddddd;
3625 }
3626 @media (min-width: 768px) {
3627 .nav-tabs-justified > li > a {
3628 border-bottom: 1px solid #dddddd;
3629 border-radius: 4px 4px 0 0;
3630 }
3631 .nav-tabs-justified > .active > a,
3632 .nav-tabs-justified > .active > a:hover,
3633 .nav-tabs-justified > .active > a:focus {
3634 border-bottom-color: #ffffff;
3635 }
3636 }
3637 .tab-content > .tab-pane {
3638 display: none;
3639 }
3640 .tab-content > .active {
3641 display: block;
3642 }
3643 .nav-tabs .dropdown-menu {
3644 margin-top: -1px;
3645 border-top-right-radius: 0;
3646 border-top-left-radius: 0;
3647 }
3648 .navbar {
3649 position: relative;
3650 min-height: 36px;
3651 margin-bottom: 18px;
3652 border: 1px solid transparent;
3653 }
3654 @media (min-width: 768px) {
3655 .navbar {
3656 border-radius: 4px;
3657 }
3658 }
3659 @media (min-width: 768px) {
3660 .navbar-header {
3661 float: left;
3662 }
3663 }
3664 .navbar-collapse {
3665 max-height: 340px;
3666 overflow-x: visible;
3667 padding-right: 15px;
3668 padding-left: 15px;
3669 border-top: 1px solid transparent;
3670 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
3671 -webkit-overflow-scrolling: touch;
3672 }
3673 .navbar-collapse.in {
3674 overflow-y: auto;
3675 }
3676 @media (min-width: 768px) {
3677 .navbar-collapse {
3678 width: auto;
3679 border-top: 0;
3680 box-shadow: none;
3681 }
3682 .navbar-collapse.collapse {
3683 display: block !important;
3684 height: auto !important;
3685 padding-bottom: 0;
3686 overflow: visible !important;
3687 }
3688 .navbar-collapse.in {
3689 overflow-y: visible;
3690 }
3691 .navbar-fixed-top .navbar-collapse,
3692 .navbar-static-top .navbar-collapse,
3693 .navbar-fixed-bottom .navbar-collapse {
3694 padding-left: 0;
3695 padding-right: 0;
3696 }
3697 }
3698 .container > .navbar-header,
3699 .container-fluid > .navbar-header,
3700 .container > .navbar-collapse,
3701 .container-fluid > .navbar-collapse {
3702 margin-right: -15px;
3703 margin-left: -15px;
3704 }
3705 @media (min-width: 768px) {
3706 .container > .navbar-header,
3707 .container-fluid > .navbar-header,
3708 .container > .navbar-collapse,
3709 .container-fluid > .navbar-collapse {
3710 margin-right: 0;
3711 margin-left: 0;
3712 }
3713 }
3714 .navbar-static-top {
3715 z-index: 1000;
3716 border-width: 0 0 1px;
3717 }
3718 @media (min-width: 768px) {
3719 .navbar-static-top {
3720 border-radius: 0;
3721 }
3722 }
3723 .navbar-fixed-top,
3724 .navbar-fixed-bottom {
3725 position: fixed;
3726 right: 0;
3727 left: 0;
3728 z-index: 1030;
3729 }
3730 @media (min-width: 768px) {
3731 .navbar-fixed-top,
3732 .navbar-fixed-bottom {
3733 border-radius: 0;
3734 }
3735 }
3736 .navbar-fixed-top {
3737 top: 0;
3738 border-width: 0 0 1px;
3739 }
3740 .navbar-fixed-bottom {
3741 bottom: 0;
3742 margin-bottom: 0;
3743 border-width: 1px 0 0;
3744 }
3745 .navbar-brand {
3746 float: left;
3747 padding: 9px 15px;
3748 font-size: 17px;
3749 line-height: 18px;
3750 height: 36px;
3751 }
3752 .navbar-brand:hover,
3753 .navbar-brand:focus {
3754 text-decoration: none;
3755 }
3756 @media (min-width: 768px) {
3757 .navbar > .container .navbar-brand,
3758 .navbar > .container-fluid .navbar-brand {
3759 margin-left: -15px;
3760 }
3761 }
3762 .navbar-toggle {
3763 position: relative;
3764 float: right;
3765 margin-right: 15px;
3766 padding: 9px 10px;
3767 margin-top: 1px;
3768 margin-bottom: 1px;
3769 background-color: transparent;
3770 background-image: none;
3771 border: 1px solid transparent;
3772 border-radius: 4px;
3773 }
3774 .navbar-toggle:focus {
3775 outline: none;
3776 }
3777 .navbar-toggle .icon-bar {
3778 display: block;
3779 width: 22px;
3780 height: 2px;
3781 border-radius: 1px;
3782 }
3783 .navbar-toggle .icon-bar + .icon-bar {
3784 margin-top: 4px;
3785 }
3786 @media (min-width: 768px) {
3787 .navbar-toggle {
3788 display: none;
3789 }
3790 }
3791 .navbar-nav {
3792 margin: 4.5px -15px;
3793 }
3794 .navbar-nav > li > a {
3795 padding-top: 10px;
3796 padding-bottom: 10px;
3797 line-height: 18px;
3798 }
3799 @media (max-width: 767px) {
3800 .navbar-nav .open .dropdown-menu {
3801 position: static;
3802 float: none;
3803 width: auto;
3804 margin-top: 0;
3805 background-color: transparent;
3806 border: 0;
3807 box-shadow: none;
3808 }
3809 .navbar-nav .open .dropdown-menu > li > a,
3810 .navbar-nav .open .dropdown-menu .dropdown-header {
3811 padding: 5px 15px 5px 25px;
3812 }
3813 .navbar-nav .open .dropdown-menu > li > a {
3814 line-height: 18px;
3815 }
3816 .navbar-nav .open .dropdown-menu > li > a:hover,
3817 .navbar-nav .open .dropdown-menu > li > a:focus {
3818 background-image: none;
3819 }
3820 }
3821 @media (min-width: 768px) {
3822 .navbar-nav {
3823 float: left;
3824 margin: 0;
3825 }
3826 .navbar-nav > li {
3827 float: left;
3828 }
3829 .navbar-nav > li > a {
3830 padding-top: 9px;
3831 padding-bottom: 9px;
3832 }
3833 .navbar-nav.navbar-right:last-child {
3834 margin-right: -15px;
3835 }
3836 }
3837 @media (min-width: 768px) {
3838 .navbar-left {
3839 float: left !important;
3840 float: left;
3841 }
3842 .navbar-right {
3843 float: right !important;
3844 float: right;
3845 }
3846 }
3847 .navbar-form {
3848 margin-left: -15px;
3849 margin-right: -15px;
3850 padding: 10px 15px;
3851 border-top: 1px solid transparent;
3852 border-bottom: 1px solid transparent;
3853 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3854 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
3855 margin-top: 2px;
3856 margin-bottom: 2px;
3857 }
3858 @media (min-width: 768px) {
3859 .navbar-form .form-group {
3860 display: inline-block;
3861 margin-bottom: 0;
3862 vertical-align: middle;
3863 }
3864 .navbar-form .form-control {
3865 display: inline-block;
3866 width: auto;
3867 vertical-align: middle;
3868 }
3869 .navbar-form .input-group > .form-control {
3870 width: 100%;
3871 }
3872 .navbar-form .control-label {
3873 margin-bottom: 0;
3874 vertical-align: middle;
3875 }
3876 .navbar-form .radio,
3877 .navbar-form .checkbox {
3878 display: inline-block;
3879 margin-top: 0;
3880 margin-bottom: 0;
3881 padding-left: 0;
3882 vertical-align: middle;
3883 }
3884 .navbar-form .radio input[type="radio"],
3885 .navbar-form .checkbox input[type="checkbox"] {
3886 float: none;
3887 margin-left: 0;
3888 }
3889 .navbar-form .has-feedback .form-control-feedback {
3890 top: 0;
3891 }
3892 }
3893 @media (max-width: 767px) {
3894 .navbar-form .form-group {
3895 margin-bottom: 5px;
3896 }
3897 }
3898 @media (min-width: 768px) {
3899 .navbar-form {
3900 width: auto;
3901 border: 0;
3902 margin-left: 0;
3903 margin-right: 0;
3904 padding-top: 0;
3905 padding-bottom: 0;
3906 -webkit-box-shadow: none;
3907 box-shadow: none;
3908 }
3909 .navbar-form.navbar-right:last-child {
3910 margin-right: -15px;
3911 }
3912 }
3913 .navbar-nav > li > .dropdown-menu {
3914 margin-top: 0;
3915 border-top-right-radius: 0;
3916 border-top-left-radius: 0;
3917 }
3918 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
3919 border-bottom-right-radius: 0;
3920 border-bottom-left-radius: 0;
3921 }
3922 .navbar-btn {
3923 margin-top: 2px;
3924 margin-bottom: 2px;
3925 }
3926 .navbar-btn.btn-sm {
3927 margin-top: 3px;
3928 margin-bottom: 3px;
3929 }
3930 .navbar-btn.btn-xs {
3931 margin-top: 7px;
3932 margin-bottom: 7px;
3933 }
3934 .navbar-text {
3935 margin-top: 9px;
3936 margin-bottom: 9px;
3937 }
3938 @media (min-width: 768px) {
3939 .navbar-text {
3940 float: left;
3941 margin-left: 15px;
3942 margin-right: 15px;
3943 }
3944 .navbar-text.navbar-right:last-child {
3945 margin-right: 0;
3946 }
3947 }
3948 .navbar-default {
3949 background-color: #f8f8f8;
3950 border-color: #e7e7e7;
3951 }
3952 .navbar-default .navbar-brand {
3953 color: #777777;
3954 }
3955 .navbar-default .navbar-brand:hover,
3956 .navbar-default .navbar-brand:focus {
3957 color: #5e5e5e;
3958 background-color: transparent;
3959 }
3960 .navbar-default .navbar-text {
3961 color: #777777;
3962 }
3963 .navbar-default .navbar-nav > li > a {
3964 color: #777777;
3965 }
3966 .navbar-default .navbar-nav > li > a:hover,
3967 .navbar-default .navbar-nav > li > a:focus {
3968 color: #333333;
3969 background-color: transparent;
3970 }
3971 .navbar-default .navbar-nav > .active > a,
3972 .navbar-default .navbar-nav > .active > a:hover,
3973 .navbar-default .navbar-nav > .active > a:focus {
3974 color: #555555;
3975 background-color: #e7e7e7;
3976 }
3977 .navbar-default .navbar-nav > .disabled > a,
3978 .navbar-default .navbar-nav > .disabled > a:hover,
3979 .navbar-default .navbar-nav > .disabled > a:focus {
3980 color: #cccccc;
3981 background-color: transparent;
3982 }
3983 .navbar-default .navbar-toggle {
3984 border-color: #dddddd;
3985 }
3986 .navbar-default .navbar-toggle:hover,
3987 .navbar-default .navbar-toggle:focus {
3988 background-color: #dddddd;
3989 }
3990 .navbar-default .navbar-toggle .icon-bar {
3991 background-color: #888888;
3992 }
3993 .navbar-default .navbar-collapse,
3994 .navbar-default .navbar-form {
3995 border-color: #e7e7e7;
3996 }
3997 .navbar-default .navbar-nav > .open > a,
3998 .navbar-default .navbar-nav > .open > a:hover,
3999 .navbar-default .navbar-nav > .open > a:focus {
4000 background-color: #e7e7e7;
4001 color: #555555;
4002 }
4003 @media (max-width: 767px) {
4004 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4005 color: #777777;
4006 }
4007 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4008 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4009 color: #333333;
4010 background-color: transparent;
4011 }
4012 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4013 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4014 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4015 color: #555555;
4016 background-color: #e7e7e7;
4017 }
4018 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4019 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4020 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4021 color: #cccccc;
4022 background-color: transparent;
4023 }
4024 }
4025 .navbar-default .navbar-link {
4026 color: #777777;
4027 }
4028 .navbar-default .navbar-link:hover {
4029 color: #333333;
4030 }
4031 .navbar-inverse {
4032 background-color: #222222;
4033 border-color: #080808;
4034 }
4035 .navbar-inverse .navbar-brand {
4036 color: #999999;
4037 }
4038 .navbar-inverse .navbar-brand:hover,
4039 .navbar-inverse .navbar-brand:focus {
4040 color: #ffffff;
4041 background-color: transparent;
4042 }
4043 .navbar-inverse .navbar-text {
4044 color: #999999;
4045 }
4046 .navbar-inverse .navbar-nav > li > a {
4047 color: #999999;
4048 }
4049 .navbar-inverse .navbar-nav > li > a:hover,
4050 .navbar-inverse .navbar-nav > li > a:focus {
4051 color: #ffffff;
4052 background-color: transparent;
4053 }
4054 .navbar-inverse .navbar-nav > .active > a,
4055 .navbar-inverse .navbar-nav > .active > a:hover,
4056 .navbar-inverse .navbar-nav > .active > a:focus {
4057 color: #ffffff;
4058 background-color: #080808;
4059 }
4060 .navbar-inverse .navbar-nav > .disabled > a,
4061 .navbar-inverse .navbar-nav > .disabled > a:hover,
4062 .navbar-inverse .navbar-nav > .disabled > a:focus {
4063 color: #444444;
4064 background-color: transparent;
4065 }
4066 .navbar-inverse .navbar-toggle {
4067 border-color: #333333;
4068 }
4069 .navbar-inverse .navbar-toggle:hover,
4070 .navbar-inverse .navbar-toggle:focus {
4071 background-color: #333333;
4072 }
4073 .navbar-inverse .navbar-toggle .icon-bar {
4074 background-color: #ffffff;
4075 }
4076 .navbar-inverse .navbar-collapse,
4077 .navbar-inverse .navbar-form {
4078 border-color: #101010;
4079 }
4080 .navbar-inverse .navbar-nav > .open > a,
4081 .navbar-inverse .navbar-nav > .open > a:hover,
4082 .navbar-inverse .navbar-nav > .open > a:focus {
4083 background-color: #080808;
4084 color: #ffffff;
4085 }
4086 @media (max-width: 767px) {
4087 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4088 border-color: #080808;
4089 }
4090 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4091 background-color: #080808;
4092 }
4093 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4094 color: #999999;
4095 }
4096 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4097 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4098 color: #ffffff;
4099 background-color: transparent;
4100 }
4101 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4102 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4103 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4104 color: #ffffff;
4105 background-color: #080808;
4106 }
4107 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4108 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4109 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4110 color: #444444;
4111 background-color: transparent;
4112 }
4113 }
4114 .navbar-inverse .navbar-link {
4115 color: #999999;
4116 }
4117 .navbar-inverse .navbar-link:hover {
4118 color: #ffffff;
4119 }
4120 .breadcrumb {
4121 padding: 8px 15px;
4122 margin-bottom: 18px;
4123 list-style: none;
4124 background-color: #f5f5f5;
4125 border-radius: 4px;
4126 }
4127 .breadcrumb > li {
4128 display: inline-block;
4129 }
4130 .breadcrumb > li + li:before {
4131 content: "/\00a0";
4132 padding: 0 5px;
4133 color: #5e5e5e;
4134 }
4135 .breadcrumb > .active {
4136 color: #999999;
4137 }
4138 .pagination {
4139 display: inline-block;
4140 padding-left: 0;
4141 margin: 18px 0;
4142 border-radius: 4px;
4143 }
4144 .pagination > li {
4145 display: inline;
4146 }
4147 .pagination > li > a,
4148 .pagination > li > span {
4149 position: relative;
4150 float: left;
4151 padding: 6px 12px;
4152 line-height: 1.42857143;
4153 text-decoration: none;
4154 color: #428bca;
4155 background-color: #ffffff;
4156 border: 1px solid #dddddd;
4157 margin-left: -1px;
4158 }
4159 .pagination > li:first-child > a,
4160 .pagination > li:first-child > span {
4161 margin-left: 0;
4162 border-bottom-left-radius: 4px;
4163 border-top-left-radius: 4px;
4164 }
4165 .pagination > li:last-child > a,
4166 .pagination > li:last-child > span {
4167 border-bottom-right-radius: 4px;
4168 border-top-right-radius: 4px;
4169 }
4170 .pagination > li > a:hover,
4171 .pagination > li > span:hover,
4172 .pagination > li > a:focus,
4173 .pagination > li > span:focus {
4174 color: #2a6496;
4175 background-color: #eeeeee;
4176 border-color: #dddddd;
4177 }
4178 .pagination > .active > a,
4179 .pagination > .active > span,
4180 .pagination > .active > a:hover,
4181 .pagination > .active > span:hover,
4182 .pagination > .active > a:focus,
4183 .pagination > .active > span:focus {
4184 z-index: 2;
4185 color: #ffffff;
4186 background-color: #428bca;
4187 border-color: #428bca;
4188 cursor: default;
4189 }
4190 .pagination > .disabled > span,
4191 .pagination > .disabled > span:hover,
4192 .pagination > .disabled > span:focus,
4193 .pagination > .disabled > a,
4194 .pagination > .disabled > a:hover,
4195 .pagination > .disabled > a:focus {
4196 color: #999999;
4197 background-color: #ffffff;
4198 border-color: #dddddd;
4199 cursor: not-allowed;
4200 }
4201 .pagination-lg > li > a,
4202 .pagination-lg > li > span {
4203 padding: 10px 16px;
4204 font-size: 17px;
4205 }
4206 .pagination-lg > li:first-child > a,
4207 .pagination-lg > li:first-child > span {
4208 border-bottom-left-radius: 6px;
4209 border-top-left-radius: 6px;
4210 }
4211 .pagination-lg > li:last-child > a,
4212 .pagination-lg > li:last-child > span {
4213 border-bottom-right-radius: 6px;
4214 border-top-right-radius: 6px;
4215 }
4216 .pagination-sm > li > a,
4217 .pagination-sm > li > span {
4218 padding: 5px 10px;
4219 font-size: 12px;
4220 }
4221 .pagination-sm > li:first-child > a,
4222 .pagination-sm > li:first-child > span {
4223 border-bottom-left-radius: 3px;
4224 border-top-left-radius: 3px;
4225 }
4226 .pagination-sm > li:last-child > a,
4227 .pagination-sm > li:last-child > span {
4228 border-bottom-right-radius: 3px;
4229 border-top-right-radius: 3px;
4230 }
4231 .pager {
4232 padding-left: 0;
4233 margin: 18px 0;
4234 list-style: none;
4235 text-align: center;
4236 }
4237 .pager li {
4238 display: inline;
4239 }
4240 .pager li > a,
4241 .pager li > span {
4242 display: inline-block;
4243 padding: 5px 14px;
4244 background-color: #ffffff;
4245 border: 1px solid #dddddd;
4246 border-radius: 15px;
4247 }
4248 .pager li > a:hover,
4249 .pager li > a:focus {
4250 text-decoration: none;
4251 background-color: #eeeeee;
4252 }
4253 .pager .next > a,
4254 .pager .next > span {
4255 float: right;
4256 }
4257 .pager .previous > a,
4258 .pager .previous > span {
4259 float: left;
4260 }
4261 .pager .disabled > a,
4262 .pager .disabled > a:hover,
4263 .pager .disabled > a:focus,
4264 .pager .disabled > span {
4265 color: #999999;
4266 background-color: #ffffff;
4267 cursor: not-allowed;
4268 }
4269 .label {
4270 display: inline;
4271 padding: .2em .6em .3em;
4272 font-size: 75%;
4273 font-weight: bold;
4274 line-height: 1;
4275 color: #ffffff;
4276 text-align: center;
4277 white-space: nowrap;
4278 vertical-align: baseline;
4279 border-radius: .25em;
4280 }
4281 .label[href]:hover,
4282 .label[href]:focus {
4283 color: #ffffff;
4284 text-decoration: none;
4285 cursor: pointer;
4286 }
4287 .label:empty {
4288 display: none;
4289 }
4290 .btn .label {
4291 position: relative;
4292 top: -1px;
4293 }
4294 .label-default {
4295 background-color: #999999;
4296 }
4297 .label-default[href]:hover,
4298 .label-default[href]:focus {
4299 background-color: #808080;
4300 }
4301 .label-primary {
4302 background-color: #428bca;
4303 }
4304 .label-primary[href]:hover,
4305 .label-primary[href]:focus {
4306 background-color: #3071a9;
4307 }
4308 .label-success {
4309 background-color: #5cb85c;
4310 }
4311 .label-success[href]:hover,
4312 .label-success[href]:focus {
4313 background-color: #449d44;
4314 }
4315 .label-info {
4316 background-color: #5bc0de;
4317 }
4318 .label-info[href]:hover,
4319 .label-info[href]:focus {
4320 background-color: #31b0d5;
4321 }
4322 .label-warning {
4323 background-color: #f0ad4e;
4324 }
4325 .label-warning[href]:hover,
4326 .label-warning[href]:focus {
4327 background-color: #ec971f;
4328 }
4329 .label-danger {
4330 background-color: #d9534f;
4331 }
4332 .label-danger[href]:hover,
4333 .label-danger[href]:focus {
4334 background-color: #c9302c;
4335 }
4336 .badge {
4337 display: inline-block;
4338 min-width: 10px;
4339 padding: 3px 7px;
4340 font-size: 12px;
4341 font-weight: bold;
4342 color: #ffffff;
4343 line-height: 1;
4344 vertical-align: baseline;
4345 white-space: nowrap;
4346 text-align: center;
4347 background-color: #999999;
4348 border-radius: 10px;
4349 }
4350 .badge:empty {
4351 display: none;
4352 }
4353 .btn .badge {
4354 position: relative;
4355 top: -1px;
4356 }
4357 .btn-xs .badge {
4358 top: 0;
4359 padding: 1px 5px;
4360 }
4361 a.badge:hover,
4362 a.badge:focus {
4363 color: #ffffff;
4364 text-decoration: none;
4365 cursor: pointer;
4366 }
4367 a.list-group-item.active > .badge,
4368 .nav-pills > .active > a > .badge {
4369 color: #428bca;
4370 background-color: #ffffff;
4371 }
4372 .nav-pills > li > a > .badge {
4373 margin-left: 3px;
4374 }
4375 .jumbotron {
4376 padding: 30px;
4377 margin-bottom: 30px;
4378 color: inherit;
4379 background-color: #eeeeee;
4380 }
4381 .jumbotron h1,
4382 .jumbotron .h1 {
4383 color: inherit;
4384 }
4385 .jumbotron p {
4386 margin-bottom: 15px;
4387 font-size: 20px;
4388 font-weight: 200;
4389 }
4390 .container .jumbotron {
4391 border-radius: 6px;
4392 }
4393 .jumbotron .container {
4394 max-width: 100%;
4395 }
4396 @media screen and (min-width: 768px) {
4397 .jumbotron {
4398 padding-top: 48px;
4399 padding-bottom: 48px;
4400 }
4401 .container .jumbotron {
4402 padding-left: 60px;
4403 padding-right: 60px;
4404 }
4405 .jumbotron h1,
4406 .jumbotron .h1 {
4407 font-size: 58.5px;
4408 }
4409 }
4410 .thumbnail {
4411 display: block;
4412 padding: 4px;
4413 margin-bottom: 18px;
4414 line-height: 1.42857143;
4415 background-color: #ffffff;
4416 border: 1px solid #dddddd;
4417 border-radius: 4px;
4418 -webkit-transition: all 0.2s ease-in-out;
4419 transition: all 0.2s ease-in-out;
4420 }
4421 .thumbnail > img,
4422 .thumbnail a > img {
4423 margin-left: auto;
4424 margin-right: auto;
4425 }
4426 a.thumbnail:hover,
4427 a.thumbnail:focus,
4428 a.thumbnail.active {
4429 border-color: #428bca;
4430 }
4431 .thumbnail .caption {
4432 padding: 9px;
4433 color: #000000;
4434 }
4435 .alert {
4436 padding: 15px;
4437 margin-bottom: 18px;
4438 border: 1px solid transparent;
4439 border-radius: 4px;
4440 }
4441 .alert h4 {
4442 margin-top: 0;
4443 color: inherit;
4444 }
4445 .alert .alert-link {
4446 font-weight: bold;
4447 }
4448 .alert > p,
4449 .alert > ul {
4450 margin-bottom: 0;
4451 }
4452 .alert > p + p {
4453 margin-top: 5px;
4454 }
4455 .alert-dismissable {
4456 padding-right: 35px;
4457 }
4458 .alert-dismissable .close {
4459 position: relative;
4460 top: -2px;
4461 right: -21px;
4462 color: inherit;
4463 }
4464 .alert-success {
4465 background-color: #dff0d8;
4466 border-color: #d6e9c6;
4467 color: #3c763d;
4468 }
4469 .alert-success hr {
4470 border-top-color: #c9e2b3;
4471 }
4472 .alert-success .alert-link {
4473 color: #2b542c;
4474 }
4475 .alert-info {
4476 background-color: #d9edf7;
4477 border-color: #bce8f1;
4478 color: #31708f;
4479 }
4480 .alert-info hr {
4481 border-top-color: #a6e1ec;
4482 }
4483 .alert-info .alert-link {
4484 color: #245269;
4485 }
4486 .alert-warning {
4487 background-color: #fcf8e3;
4488 border-color: #faebcc;
4489 color: #8a6d3b;
4490 }
4491 .alert-warning hr {
4492 border-top-color: #f7e1b5;
4493 }
4494 .alert-warning .alert-link {
4495 color: #66512c;
4496 }
4497 .alert-danger {
4498 background-color: #f2dede;
4499 border-color: #ebccd1;
4500 color: #a94442;
4501 }
4502 .alert-danger hr {
4503 border-top-color: #e4b9c0;
4504 }
4505 .alert-danger .alert-link {
4506 color: #843534;
4507 }
4508 @-webkit-keyframes progress-bar-stripes {
4509 from {
4510 background-position: 40px 0;
4511 }
4512 to {
4513 background-position: 0 0;
4514 }
4515 }
4516 @keyframes progress-bar-stripes {
4517 from {
4518 background-position: 40px 0;
4519 }
4520 to {
4521 background-position: 0 0;
4522 }
4523 }
4524 .progress {
4525 overflow: hidden;
4526 height: 18px;
4527 margin-bottom: 18px;
4528 background-color: #f5f5f5;
4529 border-radius: 4px;
4530 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4531 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
4532 }
4533 .progress-bar {
4534 float: left;
4535 width: 0%;
4536 height: 100%;
4537 font-size: 12px;
4538 line-height: 18px;
4539 color: #ffffff;
4540 text-align: center;
4541 background-color: #428bca;
4542 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4543 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
4544 -webkit-transition: width 0.6s ease;
4545 transition: width 0.6s ease;
4546 }
4547 .progress-striped .progress-bar {
4548 background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4549 background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
4550 background-size: 40px 40px;
4551 }
4552 .progress.active .progress-bar {
4553 -webkit-animation: progress-bar-stripes 2s linear infinite;
4554 animation: progress-bar-stripes 2s linear infinite;
4555 }
4556 .progress-bar-success {
4557 background-color: #5cb85c;
4558 }
4559 .progress-striped .progress-bar-success {
4560 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);
4561 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);
4562 }
4563 .progress-bar-info {
4564 background-color: #5bc0de;
4565 }
4566 .progress-striped .progress-bar-info {
4567 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);
4568 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);
4569 }
4570 .progress-bar-warning {
4571 background-color: #f0ad4e;
4572 }
4573 .progress-striped .progress-bar-warning {
4574 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);
4575 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);
4576 }
4577 .progress-bar-danger {
4578 background-color: #d9534f;
4579 }
4580 .progress-striped .progress-bar-danger {
4581 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);
4582 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);
4583 }
4584 .media,
4585 .media-body {
4586 overflow: hidden;
4587 zoom: 1;
4588 }
4589 .media,
4590 .media .media {
4591 margin-top: 15px;
4592 }
4593 .media:first-child {
4594 margin-top: 0;
4595 }
4596 .media-object {
4597 display: block;
4598 }
4599 .media-heading {
4600 margin: 0 0 5px;
4601 }
4602 .media > .pull-left {
4603 margin-right: 10px;
4604 }
4605 .media > .pull-right {
4606 margin-left: 10px;
4607 }
4608 .media-list {
4609 padding-left: 0;
4610 list-style: none;
4611 }
4612 .list-group {
4613 margin-bottom: 20px;
4614 padding-left: 0;
4615 }
4616 .list-group-item {
4617 position: relative;
4618 display: block;
4619 padding: 10px 15px;
4620 margin-bottom: -1px;
4621 background-color: #ffffff;
4622 border: 1px solid #dddddd;
4623 }
4624 .list-group-item:first-child {
4625 border-top-right-radius: 4px;
4626 border-top-left-radius: 4px;
4627 }
4628 .list-group-item:last-child {
4629 margin-bottom: 0;
4630 border-bottom-right-radius: 4px;
4631 border-bottom-left-radius: 4px;
4632 }
4633 .list-group-item > .badge {
4634 float: right;
4635 }
4636 .list-group-item > .badge + .badge {
4637 margin-right: 5px;
4638 }
4639 a.list-group-item {
4640 color: #555555;
4641 }
4642 a.list-group-item .list-group-item-heading {
4643 color: #333333;
4644 }
4645 a.list-group-item:hover,
4646 a.list-group-item:focus {
4647 text-decoration: none;
4648 background-color: #f5f5f5;
4649 }
4650 a.list-group-item.active,
4651 a.list-group-item.active:hover,
4652 a.list-group-item.active:focus {
4653 z-index: 2;
4654 color: #ffffff;
4655 background-color: #428bca;
4656 border-color: #428bca;
4657 }
4658 a.list-group-item.active .list-group-item-heading,
4659 a.list-group-item.active:hover .list-group-item-heading,
4660 a.list-group-item.active:focus .list-group-item-heading {
4661 color: inherit;
4662 }
4663 a.list-group-item.active .list-group-item-text,
4664 a.list-group-item.active:hover .list-group-item-text,
4665 a.list-group-item.active:focus .list-group-item-text {
4666 color: #e1edf7;
4667 }
4668 .list-group-item-success {
4669 color: #3c763d;
4670 background-color: #dff0d8;
4671 }
4672 a.list-group-item-success {
4673 color: #3c763d;
4674 }
4675 a.list-group-item-success .list-group-item-heading {
4676 color: inherit;
4677 }
4678 a.list-group-item-success:hover,
4679 a.list-group-item-success:focus {
4680 color: #3c763d;
4681 background-color: #d0e9c6;
4682 }
4683 a.list-group-item-success.active,
4684 a.list-group-item-success.active:hover,
4685 a.list-group-item-success.active:focus {
4686 color: #fff;
4687 background-color: #3c763d;
4688 border-color: #3c763d;
4689 }
4690 .list-group-item-info {
4691 color: #31708f;
4692 background-color: #d9edf7;
4693 }
4694 a.list-group-item-info {
4695 color: #31708f;
4696 }
4697 a.list-group-item-info .list-group-item-heading {
4698 color: inherit;
4699 }
4700 a.list-group-item-info:hover,
4701 a.list-group-item-info:focus {
4702 color: #31708f;
4703 background-color: #c4e3f3;
4704 }
4705 a.list-group-item-info.active,
4706 a.list-group-item-info.active:hover,
4707 a.list-group-item-info.active:focus {
4708 color: #fff;
4709 background-color: #31708f;
4710 border-color: #31708f;
4711 }
4712 .list-group-item-warning {
4713 color: #8a6d3b;
4714 background-color: #fcf8e3;
4715 }
4716 a.list-group-item-warning {
4717 color: #8a6d3b;
4718 }
4719 a.list-group-item-warning .list-group-item-heading {
4720 color: inherit;
4721 }
4722 a.list-group-item-warning:hover,
4723 a.list-group-item-warning:focus {
4724 color: #8a6d3b;
4725 background-color: #faf2cc;
4726 }
4727 a.list-group-item-warning.active,
4728 a.list-group-item-warning.active:hover,
4729 a.list-group-item-warning.active:focus {
4730 color: #fff;
4731 background-color: #8a6d3b;
4732 border-color: #8a6d3b;
4733 }
4734 .list-group-item-danger {
4735 color: #a94442;
4736 background-color: #f2dede;
4737 }
4738 a.list-group-item-danger {
4739 color: #a94442;
4740 }
4741 a.list-group-item-danger .list-group-item-heading {
4742 color: inherit;
4743 }
4744 a.list-group-item-danger:hover,
4745 a.list-group-item-danger:focus {
4746 color: #a94442;
4747 background-color: #ebcccc;
4748 }
4749 a.list-group-item-danger.active,
4750 a.list-group-item-danger.active:hover,
4751 a.list-group-item-danger.active:focus {
4752 color: #fff;
4753 background-color: #a94442;
4754 border-color: #a94442;
4755 }
4756 .list-group-item-heading {
4757 margin-top: 0;
4758 margin-bottom: 5px;
4759 }
4760 .list-group-item-text {
4761 margin-bottom: 0;
4762 line-height: 1.3;
4763 }
4764 .panel {
4765 margin-bottom: 18px;
4766 background-color: #ffffff;
4767 border: 1px solid transparent;
4768 border-radius: 4px;
4769 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4770 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
4771 }
4772 .panel-body {
4773 padding: 15px;
4774 }
4775 .panel-heading {
4776 padding: 10px 15px;
4777 border-bottom: 1px solid transparent;
4778 border-top-right-radius: 3px;
4779 border-top-left-radius: 3px;
4780 }
4781 .panel-heading > .dropdown .dropdown-toggle {
4782 color: inherit;
4783 }
4784 .panel-title {
4785 margin-top: 0;
4786 margin-bottom: 0;
4787 font-size: 15px;
4788 color: inherit;
4789 }
4790 .panel-title > a {
4791 color: inherit;
4792 }
4793 .panel-footer {
4794 padding: 10px 15px;
4795 background-color: #f5f5f5;
4796 border-top: 1px solid #dddddd;
4797 border-bottom-right-radius: 3px;
4798 border-bottom-left-radius: 3px;
4799 }
4800 .panel > .list-group {
4801 margin-bottom: 0;
4802 }
4803 .panel > .list-group .list-group-item {
4804 border-width: 1px 0;
4805 border-radius: 0;
4806 }
4807 .panel > .list-group:first-child .list-group-item:first-child {
4808 border-top: 0;
4809 border-top-right-radius: 3px;
4810 border-top-left-radius: 3px;
4811 }
4812 .panel > .list-group:last-child .list-group-item:last-child {
4813 border-bottom: 0;
4814 border-bottom-right-radius: 3px;
4815 border-bottom-left-radius: 3px;
4816 }
4817 .panel-heading + .list-group .list-group-item:first-child {
4818 border-top-width: 0;
4819 }
4820 .panel > .table,
4821 .panel > .table-responsive > .table {
4822 margin-bottom: 0;
4823 }
4824 .panel > .table:first-child,
4825 .panel > .table-responsive:first-child > .table:first-child {
4826 border-top-right-radius: 3px;
4827 border-top-left-radius: 3px;
4828 }
4829 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
4830 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
4831 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4832 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
4833 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
4834 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
4835 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
4836 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
4837 border-top-left-radius: 3px;
4838 }
4839 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
4840 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
4841 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4842 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
4843 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
4844 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
4845 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
4846 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
4847 border-top-right-radius: 3px;
4848 }
4849 .panel > .table:last-child,
4850 .panel > .table-responsive:last-child > .table:last-child {
4851 border-bottom-right-radius: 3px;
4852 border-bottom-left-radius: 3px;
4853 }
4854 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4855 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
4856 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4857 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
4858 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4859 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
4860 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
4861 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
4862 border-bottom-left-radius: 3px;
4863 }
4864 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4865 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
4866 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4867 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
4868 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4869 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
4870 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
4871 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
4872 border-bottom-right-radius: 3px;
4873 }
4874 .panel > .panel-body + .table,
4875 .panel > .panel-body + .table-responsive {
4876 border-top: 1px solid #dddddd;
4877 }
4878 .panel > .table > tbody:first-child > tr:first-child th,
4879 .panel > .table > tbody:first-child > tr:first-child td {
4880 border-top: 0;
4881 }
4882 .panel > .table-bordered,
4883 .panel > .table-responsive > .table-bordered {
4884 border: 0;
4885 }
4886 .panel > .table-bordered > thead > tr > th:first-child,
4887 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
4888 .panel > .table-bordered > tbody > tr > th:first-child,
4889 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
4890 .panel > .table-bordered > tfoot > tr > th:first-child,
4891 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
4892 .panel > .table-bordered > thead > tr > td:first-child,
4893 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
4894 .panel > .table-bordered > tbody > tr > td:first-child,
4895 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
4896 .panel > .table-bordered > tfoot > tr > td:first-child,
4897 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
4898 border-left: 0;
4899 }
4900 .panel > .table-bordered > thead > tr > th:last-child,
4901 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
4902 .panel > .table-bordered > tbody > tr > th:last-child,
4903 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
4904 .panel > .table-bordered > tfoot > tr > th:last-child,
4905 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
4906 .panel > .table-bordered > thead > tr > td:last-child,
4907 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
4908 .panel > .table-bordered > tbody > tr > td:last-child,
4909 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
4910 .panel > .table-bordered > tfoot > tr > td:last-child,
4911 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
4912 border-right: 0;
4913 }
4914 .panel > .table-bordered > thead > tr:first-child > td,
4915 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
4916 .panel > .table-bordered > tbody > tr:first-child > td,
4917 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
4918 .panel > .table-bordered > thead > tr:first-child > th,
4919 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
4920 .panel > .table-bordered > tbody > tr:first-child > th,
4921 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
4922 border-bottom: 0;
4923 }
4924 .panel > .table-bordered > tbody > tr:last-child > td,
4925 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
4926 .panel > .table-bordered > tfoot > tr:last-child > td,
4927 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
4928 .panel > .table-bordered > tbody > tr:last-child > th,
4929 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
4930 .panel > .table-bordered > tfoot > tr:last-child > th,
4931 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
4932 border-bottom: 0;
4933 }
4934 .panel > .table-responsive {
4935 border: 0;
4936 margin-bottom: 0;
4937 }
4938 .panel-group {
4939 margin-bottom: 18px;
4940 }
4941 .panel-group .panel {
4942 margin-bottom: 0;
4943 border-radius: 4px;
4944 overflow: hidden;
4945 }
4946 .panel-group .panel + .panel {
4947 margin-top: 5px;
4948 }
4949 .panel-group .panel-heading {
4950 border-bottom: 0;
4951 }
4952 .panel-group .panel-heading + .panel-collapse .panel-body {
4953 border-top: 1px solid #dddddd;
4954 }
4955 .panel-group .panel-footer {
4956 border-top: 0;
4957 }
4958 .panel-group .panel-footer + .panel-collapse .panel-body {
4959 border-bottom: 1px solid #dddddd;
4960 }
4961 .panel-default {
4962 border-color: #dddddd;
4963 }
4964 .panel-default > .panel-heading {
4965 color: #333333;
4966 background-color: #f5f5f5;
4967 border-color: #dddddd;
4968 }
4969 .panel-default > .panel-heading + .panel-collapse .panel-body {
4970 border-top-color: #dddddd;
4971 }
4972 .panel-default > .panel-footer + .panel-collapse .panel-body {
4973 border-bottom-color: #dddddd;
4974 }
4975 .panel-primary {
4976 border-color: #428bca;
4977 }
4978 .panel-primary > .panel-heading {
4979 color: #ffffff;
4980 background-color: #428bca;
4981 border-color: #428bca;
4982 }
4983 .panel-primary > .panel-heading + .panel-collapse .panel-body {
4984 border-top-color: #428bca;
4985 }
4986 .panel-primary > .panel-footer + .panel-collapse .panel-body {
4987 border-bottom-color: #428bca;
4988 }
4989 .panel-success {
4990 border-color: #d6e9c6;
4991 }
4992 .panel-success > .panel-heading {
4993 color: #3c763d;
4994 background-color: #dff0d8;
4995 border-color: #d6e9c6;
4996 }
4997 .panel-success > .panel-heading + .panel-collapse .panel-body {
4998 border-top-color: #d6e9c6;
4999 }
5000 .panel-success > .panel-footer + .panel-collapse .panel-body {
5001 border-bottom-color: #d6e9c6;
5002 }
5003 .panel-info {
5004 border-color: #bce8f1;
5005 }
5006 .panel-info > .panel-heading {
5007 color: #31708f;
5008 background-color: #d9edf7;
5009 border-color: #bce8f1;
5010 }
5011 .panel-info > .panel-heading + .panel-collapse .panel-body {
5012 border-top-color: #bce8f1;
5013 }
5014 .panel-info > .panel-footer + .panel-collapse .panel-body {
5015 border-bottom-color: #bce8f1;
5016 }
5017 .panel-warning {
5018 border-color: #faebcc;
5019 }
5020 .panel-warning > .panel-heading {
5021 color: #8a6d3b;
5022 background-color: #fcf8e3;
5023 border-color: #faebcc;
5024 }
5025 .panel-warning > .panel-heading + .panel-collapse .panel-body {
5026 border-top-color: #faebcc;
5027 }
5028 .panel-warning > .panel-footer + .panel-collapse .panel-body {
5029 border-bottom-color: #faebcc;
5030 }
5031 .panel-danger {
5032 border-color: #ebccd1;
5033 }
5034 .panel-danger > .panel-heading {
5035 color: #a94442;
5036 background-color: #f2dede;
5037 border-color: #ebccd1;
5038 }
5039 .panel-danger > .panel-heading + .panel-collapse .panel-body {
5040 border-top-color: #ebccd1;
5041 }
5042 .panel-danger > .panel-footer + .panel-collapse .panel-body {
5043 border-bottom-color: #ebccd1;
5044 }
5045 .well {
5046 min-height: 20px;
5047 padding: 19px;
5048 margin-bottom: 20px;
5049 background-color: #f5f5f5;
5050 border: 1px solid #e3e3e3;
5051 border-radius: 4px;
5052 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5053 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5054 }
5055 .well blockquote {
5056 border-color: #ddd;
5057 border-color: rgba(0, 0, 0, 0.15);
5058 }
5059 .well-lg {
5060 padding: 24px;
5061 border-radius: 6px;
5062 }
5063 .well-sm {
5064 padding: 9px;
5065 border-radius: 3px;
5066 }
5067 .close {
5068 float: right;
5069 font-size: 19.5px;
5070 font-weight: bold;
5071 line-height: 1;
5072 color: #000000;
5073 text-shadow: 0 1px 0 #ffffff;
5074 opacity: 0.2;
5075 filter: alpha(opacity=20);
5076 }
5077 .close:hover,
5078 .close:focus {
5079 color: #000000;
5080 text-decoration: none;
5081 cursor: pointer;
5082 opacity: 0.5;
5083 filter: alpha(opacity=50);
5084 }
5085 button.close {
5086 padding: 0;
5087 cursor: pointer;
5088 background: transparent;
5089 border: 0;
5090 -webkit-appearance: none;
5091 }
5092 .modal-open {
5093 overflow: hidden;
5094 }
5095 .modal {
5096 display: none;
5097 overflow: auto;
5098 overflow-y: scroll;
5099 position: fixed;
5100 top: 0;
5101 right: 0;
5102 bottom: 0;
5103 left: 0;
5104 z-index: 1050;
5105 -webkit-overflow-scrolling: touch;
5106 outline: 0;
5107 }
5108 .modal.fade .modal-dialog {
5109 -webkit-transform: translate(0, -25%);
5110 -ms-transform: translate(0, -25%);
5111 transform: translate(0, -25%);
5112 -webkit-transition: -webkit-transform 0.3s ease-out;
5113 -moz-transition: -moz-transform 0.3s ease-out;
5114 -o-transition: -o-transform 0.3s ease-out;
5115 transition: transform 0.3s ease-out;
5116 }
5117 .modal.in .modal-dialog {
5118 -webkit-transform: translate(0, 0);
5119 -ms-transform: translate(0, 0);
5120 transform: translate(0, 0);
5121 }
5122 .modal-dialog {
5123 position: relative;
5124 width: auto;
5125 margin: 10px;
5126 }
5127 .modal-content {
5128 position: relative;
5129 background-color: #ffffff;
5130 border: 1px solid #999999;
5131 border: 1px solid rgba(0, 0, 0, 0.2);
5132 border-radius: 6px;
5133 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5134 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5135 background-clip: padding-box;
5136 outline: none;
5137 }
5138 .modal-backdrop {
5139 position: fixed;
5140 top: 0;
5141 right: 0;
5142 bottom: 0;
5143 left: 0;
5144 z-index: 1040;
5145 background-color: #000000;
5146 }
5147 .modal-backdrop.fade {
5148 opacity: 0;
5149 filter: alpha(opacity=0);
5150 }
5151 .modal-backdrop.in {
5152 opacity: 0.5;
5153 filter: alpha(opacity=50);
5154 }
5155 .modal-header {
5156 padding: 15px;
5157 border-bottom: 1px solid #e5e5e5;
5158 min-height: 16.42857143px;
5159 }
5160 .modal-header .close {
5161 margin-top: -2px;
5162 }
5163 .modal-title {
5164 margin: 0;
5165 line-height: 1.42857143;
5166 }
5167 .modal-body {
5168 position: relative;
5169 padding: 15px;
5170 }
5171 .modal-footer {
5172 margin-top: 15px;
5173 padding: 14px 15px 15px;
5174 text-align: right;
5175 border-top: 1px solid #e5e5e5;
5176 }
5177 .modal-footer .btn + .btn {
5178 margin-left: 5px;
5179 margin-bottom: 0;
5180 }
5181 .modal-footer .btn-group .btn + .btn {
5182 margin-left: -1px;
5183 }
5184 .modal-footer .btn-block + .btn-block {
5185 margin-left: 0;
5186 }
5187 @media (min-width: 768px) {
5188 .modal-dialog {
5189 width: 600px;
5190 margin: 30px auto;
5191 }
5192 .modal-content {
5193 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5194 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5195 }
5196 .modal-sm {
5197 width: 300px;
5198 }
5199 }
5200 @media (min-width: 992px) {
5201 .modal-lg {
5202 width: 900px;
5203 }
5204 }
5205 .tooltip {
5206 position: absolute;
5207 z-index: 1030;
5208 display: block;
5209 visibility: visible;
5210 font-size: 12px;
5211 line-height: 1.4;
5212 opacity: 0;
5213 filter: alpha(opacity=0);
5214 }
5215 .tooltip.in {
5216 opacity: 0.9;
5217 filter: alpha(opacity=90);
5218 }
5219 .tooltip.top {
5220 margin-top: -3px;
5221 padding: 5px 0;
5222 }
5223 .tooltip.right {
5224 margin-left: 3px;
5225 padding: 0 5px;
5226 }
5227 .tooltip.bottom {
5228 margin-top: 3px;
5229 padding: 5px 0;
5230 }
5231 .tooltip.left {
5232 margin-left: -3px;
5233 padding: 0 5px;
5234 }
5235 .tooltip-inner {
5236 max-width: 200px;
5237 padding: 3px 8px;
5238 color: #ffffff;
5239 text-align: center;
5240 text-decoration: none;
5241 background-color: #000000;
5242 border-radius: 4px;
5243 }
5244 .tooltip-arrow {
5245 position: absolute;
5246 width: 0;
5247 height: 0;
5248 border-color: transparent;
5249 border-style: solid;
5250 }
5251 .tooltip.top .tooltip-arrow {
5252 bottom: 0;
5253 left: 50%;
5254 margin-left: -5px;
5255 border-width: 5px 5px 0;
5256 border-top-color: #000000;
5257 }
5258 .tooltip.top-left .tooltip-arrow {
5259 bottom: 0;
5260 left: 5px;
5261 border-width: 5px 5px 0;
5262 border-top-color: #000000;
5263 }
5264 .tooltip.top-right .tooltip-arrow {
5265 bottom: 0;
5266 right: 5px;
5267 border-width: 5px 5px 0;
5268 border-top-color: #000000;
5269 }
5270 .tooltip.right .tooltip-arrow {
5271 top: 50%;
5272 left: 0;
5273 margin-top: -5px;
5274 border-width: 5px 5px 5px 0;
5275 border-right-color: #000000;
5276 }
5277 .tooltip.left .tooltip-arrow {
5278 top: 50%;
5279 right: 0;
5280 margin-top: -5px;
5281 border-width: 5px 0 5px 5px;
5282 border-left-color: #000000;
5283 }
5284 .tooltip.bottom .tooltip-arrow {
5285 top: 0;
5286 left: 50%;
5287 margin-left: -5px;
5288 border-width: 0 5px 5px;
5289 border-bottom-color: #000000;
5290 }
5291 .tooltip.bottom-left .tooltip-arrow {
5292 top: 0;
5293 left: 5px;
5294 border-width: 0 5px 5px;
5295 border-bottom-color: #000000;
5296 }
5297 .tooltip.bottom-right .tooltip-arrow {
5298 top: 0;
5299 right: 5px;
5300 border-width: 0 5px 5px;
5301 border-bottom-color: #000000;
5302 }
5303 .popover {
5304 position: absolute;
5305 top: 0;
5306 left: 0;
5307 z-index: 1010;
5308 display: none;
5309 max-width: 276px;
5310 padding: 1px;
5311 text-align: left;
5312 background-color: #ffffff;
5313 background-clip: padding-box;
5314 border: 1px solid #cccccc;
5315 border: 1px solid rgba(0, 0, 0, 0.2);
5316 border-radius: 6px;
5317 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5318 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
5319 white-space: normal;
5320 }
5321 .popover.top {
5322 margin-top: -10px;
5323 }
5324 .popover.right {
5325 margin-left: 10px;
5326 }
5327 .popover.bottom {
5328 margin-top: 10px;
5329 }
5330 .popover.left {
5331 margin-left: -10px;
5332 }
5333 .popover-title {
5334 margin: 0;
5335 padding: 8px 14px;
5336 font-size: 13px;
5337 font-weight: normal;
5338 line-height: 18px;
5339 background-color: #f7f7f7;
5340 border-bottom: 1px solid #ebebeb;
5341 border-radius: 5px 5px 0 0;
5342 }
5343 .popover-content {
5344 padding: 9px 14px;
5345 }
5346 .popover > .arrow,
5347 .popover > .arrow:after {
5348 position: absolute;
5349 display: block;
5350 width: 0;
5351 height: 0;
5352 border-color: transparent;
5353 border-style: solid;
5354 }
5355 .popover > .arrow {
5356 border-width: 11px;
5357 }
5358 .popover > .arrow:after {
5359 border-width: 10px;
5360 content: "";
5361 }
5362 .popover.top > .arrow {
5363 left: 50%;
5364 margin-left: -11px;
5365 border-bottom-width: 0;
5366 border-top-color: #999999;
5367 border-top-color: rgba(0, 0, 0, 0.25);
5368 bottom: -11px;
5369 }
5370 .popover.top > .arrow:after {
5371 content: " ";
5372 bottom: 1px;
5373 margin-left: -10px;
5374 border-bottom-width: 0;
5375 border-top-color: #ffffff;
5376 }
5377 .popover.right > .arrow {
5378 top: 50%;
5379 left: -11px;
5380 margin-top: -11px;
5381 border-left-width: 0;
5382 border-right-color: #999999;
5383 border-right-color: rgba(0, 0, 0, 0.25);
5384 }
5385 .popover.right > .arrow:after {
5386 content: " ";
5387 left: 1px;
5388 bottom: -10px;
5389 border-left-width: 0;
5390 border-right-color: #ffffff;
5391 }
5392 .popover.bottom > .arrow {
5393 left: 50%;
5394 margin-left: -11px;
5395 border-top-width: 0;
5396 border-bottom-color: #999999;
5397 border-bottom-color: rgba(0, 0, 0, 0.25);
5398 top: -11px;
5399 }
5400 .popover.bottom > .arrow:after {
5401 content: " ";
5402 top: 1px;
5403 margin-left: -10px;
5404 border-top-width: 0;
5405 border-bottom-color: #ffffff;
5406 }
5407 .popover.left > .arrow {
5408 top: 50%;
5409 right: -11px;
5410 margin-top: -11px;
5411 border-right-width: 0;
5412 border-left-color: #999999;
5413 border-left-color: rgba(0, 0, 0, 0.25);
5414 }
5415 .popover.left > .arrow:after {
5416 content: " ";
5417 right: 1px;
5418 border-right-width: 0;
5419 border-left-color: #ffffff;
5420 bottom: -10px;
5421 }
5422 .carousel {
5423 position: relative;
5424 }
5425 .carousel-inner {
5426 position: relative;
5427 overflow: hidden;
5428 width: 100%;
5429 }
5430 .carousel-inner > .item {
5431 display: none;
5432 position: relative;
5433 -webkit-transition: 0.6s ease-in-out left;
5434 transition: 0.6s ease-in-out left;
5435 }
5436 .carousel-inner > .item > img,
5437 .carousel-inner > .item > a > img {
5438 line-height: 1;
5439 }
5440 .carousel-inner > .active,
5441 .carousel-inner > .next,
5442 .carousel-inner > .prev {
5443 display: block;
5444 }
5445 .carousel-inner > .active {
5446 left: 0;
5447 }
5448 .carousel-inner > .next,
5449 .carousel-inner > .prev {
5450 position: absolute;
5451 top: 0;
5452 width: 100%;
5453 }
5454 .carousel-inner > .next {
5455 left: 100%;
5456 }
5457 .carousel-inner > .prev {
5458 left: -100%;
5459 }
5460 .carousel-inner > .next.left,
5461 .carousel-inner > .prev.right {
5462 left: 0;
5463 }
5464 .carousel-inner > .active.left {
5465 left: -100%;
5466 }
5467 .carousel-inner > .active.right {
5468 left: 100%;
5469 }
5470 .carousel-control {
5471 position: absolute;
5472 top: 0;
5473 left: 0;
5474 bottom: 0;
5475 width: 15%;
5476 opacity: 0.5;
5477 filter: alpha(opacity=50);
5478 font-size: 20px;
5479 color: #ffffff;
5480 text-align: center;
5481 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5482 }
5483 .carousel-control.left {
5484 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));
5485 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
5486 background-repeat: repeat-x;
5487 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
5488 }
5489 .carousel-control.right {
5490 left: auto;
5491 right: 0;
5492 background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));
5493 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
5494 background-repeat: repeat-x;
5495 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
5496 }
5497 .carousel-control:hover,
5498 .carousel-control:focus {
5499 outline: none;
5500 color: #ffffff;
5501 text-decoration: none;
5502 opacity: 0.9;
5503 filter: alpha(opacity=90);
5504 }
5505 .carousel-control .icon-prev,
5506 .carousel-control .icon-next,
5507 .carousel-control .glyphicon-chevron-left,
5508 .carousel-control .glyphicon-chevron-right {
5509 position: absolute;
5510 top: 50%;
5511 z-index: 5;
5512 display: inline-block;
5513 }
5514 .carousel-control .icon-prev,
5515 .carousel-control .glyphicon-chevron-left {
5516 left: 50%;
5517 }
5518 .carousel-control .icon-next,
5519 .carousel-control .glyphicon-chevron-right {
5520 right: 50%;
5521 }
5522 .carousel-control .icon-prev,
5523 .carousel-control .icon-next {
5524 width: 20px;
5525 height: 20px;
5526 margin-top: -10px;
5527 margin-left: -10px;
5528 font-family: serif;
5529 }
5530 .carousel-control .icon-prev:before {
5531 content: '\2039';
5532 }
5533 .carousel-control .icon-next:before {
5534 content: '\203a';
5535 }
5536 .carousel-indicators {
5537 position: absolute;
5538 bottom: 10px;
5539 left: 50%;
5540 z-index: 15;
5541 width: 60%;
5542 margin-left: -30%;
5543 padding-left: 0;
5544 list-style: none;
5545 text-align: center;
5546 }
5547 .carousel-indicators li {
5548 display: inline-block;
5549 width: 10px;
5550 height: 10px;
5551 margin: 1px;
5552 text-indent: -999px;
5553 border: 1px solid #ffffff;
5554 border-radius: 10px;
5555 cursor: pointer;
5556 background-color: #000 \9;
5557 background-color: rgba(0, 0, 0, 0);
5558 }
5559 .carousel-indicators .active {
5560 margin: 0;
5561 width: 12px;
5562 height: 12px;
5563 background-color: #ffffff;
5564 }
5565 .carousel-caption {
5566 position: absolute;
5567 left: 15%;
5568 right: 15%;
5569 bottom: 20px;
5570 z-index: 10;
5571 padding-top: 20px;
5572 padding-bottom: 20px;
5573 color: #ffffff;
5574 text-align: center;
5575 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
5576 }
5577 .carousel-caption .btn {
5578 text-shadow: none;
5579 }
5580 @media screen and (min-width: 768px) {
5581 .carousel-control .glyphicon-chevron-left,
5582 .carousel-control .glyphicon-chevron-right,
5583 .carousel-control .icon-prev,
5584 .carousel-control .icon-next {
5585 width: 30px;
5586 height: 30px;
5587 margin-top: -15px;
5588 margin-left: -15px;
5589 font-size: 30px;
5590 }
5591 .carousel-caption {
5592 left: 20%;
5593 right: 20%;
5594 padding-bottom: 30px;
5595 }
5596 .carousel-indicators {
5597 bottom: 20px;
5598 }
5599 }
5600 .clearfix:before,
5601 .clearfix:after,
5602 .container:before,
5603 .container:after,
5604 .container-fluid:before,
5605 .container-fluid:after,
5606 .row:before,
5607 .row:after,
5608 .form-horizontal .form-group:before,
5609 .form-horizontal .form-group:after,
5610 .btn-toolbar:before,
5611 .btn-toolbar:after,
5612 .btn-group-vertical > .btn-group:before,
5613 .btn-group-vertical > .btn-group:after,
5614 .nav:before,
5615 .nav:after,
5616 .navbar:before,
5617 .navbar:after,
5618 .navbar-header:before,
5619 .navbar-header:after,
5620 .navbar-collapse:before,
5621 .navbar-collapse:after,
5622 .pager:before,
5623 .pager:after,
5624 .panel-body:before,
5625 .panel-body:after,
5626 .modal-footer:before,
5627 .modal-footer:after {
5628 content: " ";
5629 display: table;
5630 }
5631 .clearfix:after,
5632 .container:after,
5633 .container-fluid:after,
5634 .row:after,
5635 .form-horizontal .form-group:after,
5636 .btn-toolbar:after,
5637 .btn-group-vertical > .btn-group:after,
5638 .nav:after,
5639 .navbar:after,
5640 .navbar-header:after,
5641 .navbar-collapse:after,
5642 .pager:after,
5643 .panel-body:after,
5644 .modal-footer:after {
5645 clear: both;
5646 }
5647 .center-block {
5648 display: block;
5649 margin-left: auto;
5650 margin-right: auto;
5651 }
5652 .pull-right {
5653 float: right !important;
5654 }
5655 .pull-left {
5656 float: left !important;
5657 }
5658 .hide {
5659 display: none !important;
5660 }
5661 .show {
5662 display: block !important;
5663 }
5664 .invisible {
5665 visibility: hidden;
5666 }
5667 .text-hide {
5668 font: 0/0 a;
5669 color: transparent;
5670 text-shadow: none;
5671 background-color: transparent;
5672 border: 0;
5673 }
5674 .hidden {
5675 display: none !important;
5676 visibility: hidden !important;
5677 }
5678 .affix {
5679 position: fixed;
5680 }
5681 @-ms-viewport {
5682 width: device-width;
5683 }
5684 .visible-xs,
5685 .visible-sm,
5686 .visible-md,
5687 .visible-lg {
5688 display: none !important;
5689 }
5690 @media (max-width: 767px) {
5691 .visible-xs {
5692 display: block !important;
5693 }
5694 table.visible-xs {
5695 display: table;
5696 }
5697 tr.visible-xs {
5698 display: table-row !important;
5699 }
5700 th.visible-xs,
5701 td.visible-xs {
5702 display: table-cell !important;
5703 }
5704 }
5705 @media (min-width: 768px) and (max-width: 991px) {
5706 .visible-sm {
5707 display: block !important;
5708 }
5709 table.visible-sm {
5710 display: table;
5711 }
5712 tr.visible-sm {
5713 display: table-row !important;
5714 }
5715 th.visible-sm,
5716 td.visible-sm {
5717 display: table-cell !important;
5718 }
5719 }
5720 @media (min-width: 992px) and (max-width: 1199px) {
5721 .visible-md {
5722 display: block !important;
5723 }
5724 table.visible-md {
5725 display: table;
5726 }
5727 tr.visible-md {
5728 display: table-row !important;
5729 }
5730 th.visible-md,
5731 td.visible-md {
5732 display: table-cell !important;
5733 }
5734 }
5735 @media (min-width: 1200px) {
5736 .visible-lg {
5737 display: block !important;
5738 }
5739 table.visible-lg {
5740 display: table;
5741 }
5742 tr.visible-lg {
5743 display: table-row !important;
5744 }
5745 th.visible-lg,
5746 td.visible-lg {
5747 display: table-cell !important;
5748 }
5749 }
5750 @media (max-width: 767px) {
5751 .hidden-xs {
5752 display: none !important;
5753 }
5754 }
5755 @media (min-width: 768px) and (max-width: 991px) {
5756 .hidden-sm {
5757 display: none !important;
5758 }
5759 }
5760 @media (min-width: 992px) and (max-width: 1199px) {
5761 .hidden-md {
5762 display: none !important;
5763 }
5764 }
5765 @media (min-width: 1200px) {
5766 .hidden-lg {
5767 display: none !important;
5768 }
5769 }
5770 .visible-print {
5771 display: none !important;
5772 }
5773 @media print {
5774 .visible-print {
5775 display: block !important;
5776 }
5777 table.visible-print {
5778 display: table;
5779 }
5780 tr.visible-print {
5781 display: table-row !important;
5782 }
5783 th.visible-print,
5784 td.visible-print {
5785 display: table-cell !important;
5786 }
5787 }
5788 @media print {
5789 .hidden-print {
5790 display: none !important;
5791 }
5792 }
5793 /*!
5794 *
5795 * Font Awesome
5796 *
5797 */
5798 /*!
5799 * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
5800 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
5801 */
5802 /* FONT PATH
5803 * -------------------------- */
5804 @font-face {
5805 font-family: 'FontAwesome';
5806 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.1.0');
5807 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg');
5808 font-weight: normal;
5809 font-style: normal;
5810 }
5811 .fa {
5812 display: inline-block;
5813 font-family: FontAwesome;
5814 font-style: normal;
5815 font-weight: normal;
5816 line-height: 1;
5817 -webkit-font-smoothing: antialiased;
5818 -moz-osx-font-smoothing: grayscale;
5819 }
5820 /* makes the font 33% larger relative to the icon container */
5821 .fa-lg {
5822 font-size: 1.33333333em;
5823 line-height: 0.75em;
5824 vertical-align: -15%;
5825 }
5826 .fa-2x {
5827 font-size: 2em;
5828 }
5829 .fa-3x {
5830 font-size: 3em;
5831 }
5832 .fa-4x {
5833 font-size: 4em;
5834 }
5835 .fa-5x {
5836 font-size: 5em;
5837 }
5838 .fa-fw {
5839 width: 1.28571429em;
5840 text-align: center;
5841 }
5842 .fa-ul {
5843 padding-left: 0;
5844 margin-left: 2.14285714em;
5845 list-style-type: none;
5846 }
5847 .fa-ul > li {
5848 position: relative;
5849 }
5850 .fa-li {
5851 position: absolute;
5852 left: -2.14285714em;
5853 width: 2.14285714em;
5854 top: 0.14285714em;
5855 text-align: center;
5856 }
5857 .fa-li.fa-lg {
5858 left: -1.85714286em;
5859 }
5860 .fa-border {
5861 padding: .2em .25em .15em;
5862 border: solid 0.08em #eeeeee;
5863 border-radius: .1em;
5864 }
5865 .pull-right {
5866 float: right;
5867 }
5868 .pull-left {
5869 float: left;
5870 }
5871 .fa.pull-left {
5872 margin-right: .3em;
5873 }
5874 .fa.pull-right {
5875 margin-left: .3em;
5876 }
5877 .fa-spin {
5878 -webkit-animation: spin 2s infinite linear;
5879 -moz-animation: spin 2s infinite linear;
5880 -o-animation: spin 2s infinite linear;
5881 animation: spin 2s infinite linear;
5882 }
5883 @-moz-keyframes spin {
5884 0% {
5885 -moz-transform: rotate(0deg);
5886 }
5887 100% {
5888 -moz-transform: rotate(359deg);
5889 }
5890 }
5891 @-webkit-keyframes spin {
5892 0% {
5893 -webkit-transform: rotate(0deg);
5894 }
5895 100% {
5896 -webkit-transform: rotate(359deg);
5897 }
5898 }
5899 @-o-keyframes spin {
5900 0% {
5901 -o-transform: rotate(0deg);
5902 }
5903 100% {
5904 -o-transform: rotate(359deg);
5905 }
5906 }
5907 @keyframes spin {
5908 0% {
5909 -webkit-transform: rotate(0deg);
5910 transform: rotate(0deg);
5911 }
5912 100% {
5913 -webkit-transform: rotate(359deg);
5914 transform: rotate(359deg);
5915 }
5916 }
5917 .fa-rotate-90 {
5918 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
5919 -webkit-transform: rotate(90deg);
5920 -moz-transform: rotate(90deg);
5921 -ms-transform: rotate(90deg);
5922 -o-transform: rotate(90deg);
5923 transform: rotate(90deg);
5924 }
5925 .fa-rotate-180 {
5926 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
5927 -webkit-transform: rotate(180deg);
5928 -moz-transform: rotate(180deg);
5929 -ms-transform: rotate(180deg);
5930 -o-transform: rotate(180deg);
5931 transform: rotate(180deg);
5932 }
5933 .fa-rotate-270 {
5934 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
5935 -webkit-transform: rotate(270deg);
5936 -moz-transform: rotate(270deg);
5937 -ms-transform: rotate(270deg);
5938 -o-transform: rotate(270deg);
5939 transform: rotate(270deg);
5940 }
5941 .fa-flip-horizontal {
5942 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
5943 -webkit-transform: scale(-1, 1);
5944 -moz-transform: scale(-1, 1);
5945 -ms-transform: scale(-1, 1);
5946 -o-transform: scale(-1, 1);
5947 transform: scale(-1, 1);
5948 }
5949 .fa-flip-vertical {
5950 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
5951 -webkit-transform: scale(1, -1);
5952 -moz-transform: scale(1, -1);
5953 -ms-transform: scale(1, -1);
5954 -o-transform: scale(1, -1);
5955 transform: scale(1, -1);
5956 }
5957 .fa-stack {
5958 position: relative;
5959 display: inline-block;
5960 width: 2em;
5961 height: 2em;
5962 line-height: 2em;
5963 vertical-align: middle;
5964 }
5965 .fa-stack-1x,
5966 .fa-stack-2x {
5967 position: absolute;
5968 left: 0;
5969 width: 100%;
5970 text-align: center;
5971 }
5972 .fa-stack-1x {
5973 line-height: inherit;
5974 }
5975 .fa-stack-2x {
5976 font-size: 2em;
5977 }
5978 .fa-inverse {
5979 color: #ffffff;
5980 }
5981 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
5982 readers do not read off random characters that represent icons */
5983 .fa-glass:before {
5984 content: "\f000";
5985 }
5986 .fa-music:before {
5987 content: "\f001";
5988 }
5989 .fa-search:before {
5990 content: "\f002";
5991 }
5992 .fa-envelope-o:before {
5993 content: "\f003";
5994 }
5995 .fa-heart:before {
5996 content: "\f004";
5997 }
5998 .fa-star:before {
5999 content: "\f005";
6000 }
6001 .fa-star-o:before {
6002 content: "\f006";
6003 }
6004 .fa-user:before {
6005 content: "\f007";
6006 }
6007 .fa-film:before {
6008 content: "\f008";
6009 }
6010 .fa-th-large:before {
6011 content: "\f009";
6012 }
6013 .fa-th:before {
6014 content: "\f00a";
6015 }
6016 .fa-th-list:before {
6017 content: "\f00b";
6018 }
6019 .fa-check:before {
6020 content: "\f00c";
6021 }
6022 .fa-times:before {
6023 content: "\f00d";
6024 }
6025 .fa-search-plus:before {
6026 content: "\f00e";
6027 }
6028 .fa-search-minus:before {
6029 content: "\f010";
6030 }
6031 .fa-power-off:before {
6032 content: "\f011";
6033 }
6034 .fa-signal:before {
6035 content: "\f012";
6036 }
6037 .fa-gear:before,
6038 .fa-cog:before {
6039 content: "\f013";
6040 }
6041 .fa-trash-o:before {
6042 content: "\f014";
6043 }
6044 .fa-home:before {
6045 content: "\f015";
6046 }
6047 .fa-file-o:before {
6048 content: "\f016";
6049 }
6050 .fa-clock-o:before {
6051 content: "\f017";
6052 }
6053 .fa-road:before {
6054 content: "\f018";
6055 }
6056 .fa-download:before {
6057 content: "\f019";
6058 }
6059 .fa-arrow-circle-o-down:before {
6060 content: "\f01a";
6061 }
6062 .fa-arrow-circle-o-up:before {
6063 content: "\f01b";
6064 }
6065 .fa-inbox:before {
6066 content: "\f01c";
6067 }
6068 .fa-play-circle-o:before {
6069 content: "\f01d";
6070 }
6071 .fa-rotate-right:before,
6072 .fa-repeat:before {
6073 content: "\f01e";
6074 }
6075 .fa-refresh:before {
6076 content: "\f021";
6077 }
6078 .fa-list-alt:before {
6079 content: "\f022";
6080 }
6081 .fa-lock:before {
6082 content: "\f023";
6083 }
6084 .fa-flag:before {
6085 content: "\f024";
6086 }
6087 .fa-headphones:before {
6088 content: "\f025";
6089 }
6090 .fa-volume-off:before {
6091 content: "\f026";
6092 }
6093 .fa-volume-down:before {
6094 content: "\f027";
6095 }
6096 .fa-volume-up:before {
6097 content: "\f028";
6098 }
6099 .fa-qrcode:before {
6100 content: "\f029";
6101 }
6102 .fa-barcode:before {
6103 content: "\f02a";
6104 }
6105 .fa-tag:before {
6106 content: "\f02b";
6107 }
6108 .fa-tags:before {
6109 content: "\f02c";
6110 }
6111 .fa-book:before {
6112 content: "\f02d";
6113 }
6114 .fa-bookmark:before {
6115 content: "\f02e";
6116 }
6117 .fa-print:before {
6118 content: "\f02f";
6119 }
6120 .fa-camera:before {
6121 content: "\f030";
6122 }
6123 .fa-font:before {
6124 content: "\f031";
6125 }
6126 .fa-bold:before {
6127 content: "\f032";
6128 }
6129 .fa-italic:before {
6130 content: "\f033";
6131 }
6132 .fa-text-height:before {
6133 content: "\f034";
6134 }
6135 .fa-text-width:before {
6136 content: "\f035";
6137 }
6138 .fa-align-left:before {
6139 content: "\f036";
6140 }
6141 .fa-align-center:before {
6142 content: "\f037";
6143 }
6144 .fa-align-right:before {
6145 content: "\f038";
6146 }
6147 .fa-align-justify:before {
6148 content: "\f039";
6149 }
6150 .fa-list:before {
6151 content: "\f03a";
6152 }
6153 .fa-dedent:before,
6154 .fa-outdent:before {
6155 content: "\f03b";
6156 }
6157 .fa-indent:before {
6158 content: "\f03c";
6159 }
6160 .fa-video-camera:before {
6161 content: "\f03d";
6162 }
6163 .fa-photo:before,
6164 .fa-image:before,
6165 .fa-picture-o:before {
6166 content: "\f03e";
6167 }
6168 .fa-pencil:before {
6169 content: "\f040";
6170 }
6171 .fa-map-marker:before {
6172 content: "\f041";
6173 }
6174 .fa-adjust:before {
6175 content: "\f042";
6176 }
6177 .fa-tint:before {
6178 content: "\f043";
6179 }
6180 .fa-edit:before,
6181 .fa-pencil-square-o:before {
6182 content: "\f044";
6183 }
6184 .fa-share-square-o:before {
6185 content: "\f045";
6186 }
6187 .fa-check-square-o:before {
6188 content: "\f046";
6189 }
6190 .fa-arrows:before {
6191 content: "\f047";
6192 }
6193 .fa-step-backward:before {
6194 content: "\f048";
6195 }
6196 .fa-fast-backward:before {
6197 content: "\f049";
6198 }
6199 .fa-backward:before {
6200 content: "\f04a";
6201 }
6202 .fa-play:before {
6203 content: "\f04b";
6204 }
6205 .fa-pause:before {
6206 content: "\f04c";
6207 }
6208 .fa-stop:before {
6209 content: "\f04d";
6210 }
6211 .fa-forward:before {
6212 content: "\f04e";
6213 }
6214 .fa-fast-forward:before {
6215 content: "\f050";
6216 }
6217 .fa-step-forward:before {
6218 content: "\f051";
6219 }
6220 .fa-eject:before {
6221 content: "\f052";
6222 }
6223 .fa-chevron-left:before {
6224 content: "\f053";
6225 }
6226 .fa-chevron-right:before {
6227 content: "\f054";
6228 }
6229 .fa-plus-circle:before {
6230 content: "\f055";
6231 }
6232 .fa-minus-circle:before {
6233 content: "\f056";
6234 }
6235 .fa-times-circle:before {
6236 content: "\f057";
6237 }
6238 .fa-check-circle:before {
6239 content: "\f058";
6240 }
6241 .fa-question-circle:before {
6242 content: "\f059";
6243 }
6244 .fa-info-circle:before {
6245 content: "\f05a";
6246 }
6247 .fa-crosshairs:before {
6248 content: "\f05b";
6249 }
6250 .fa-times-circle-o:before {
6251 content: "\f05c";
6252 }
6253 .fa-check-circle-o:before {
6254 content: "\f05d";
6255 }
6256 .fa-ban:before {
6257 content: "\f05e";
6258 }
6259 .fa-arrow-left:before {
6260 content: "\f060";
6261 }
6262 .fa-arrow-right:before {
6263 content: "\f061";
6264 }
6265 .fa-arrow-up:before {
6266 content: "\f062";
6267 }
6268 .fa-arrow-down:before {
6269 content: "\f063";
6270 }
6271 .fa-mail-forward:before,
6272 .fa-share:before {
6273 content: "\f064";
6274 }
6275 .fa-expand:before {
6276 content: "\f065";
6277 }
6278 .fa-compress:before {
6279 content: "\f066";
6280 }
6281 .fa-plus:before {
6282 content: "\f067";
6283 }
6284 .fa-minus:before {
6285 content: "\f068";
6286 }
6287 .fa-asterisk:before {
6288 content: "\f069";
6289 }
6290 .fa-exclamation-circle:before {
6291 content: "\f06a";
6292 }
6293 .fa-gift:before {
6294 content: "\f06b";
6295 }
6296 .fa-leaf:before {
6297 content: "\f06c";
6298 }
6299 .fa-fire:before {
6300 content: "\f06d";
6301 }
6302 .fa-eye:before {
6303 content: "\f06e";
6304 }
6305 .fa-eye-slash:before {
6306 content: "\f070";
6307 }
6308 .fa-warning:before,
6309 .fa-exclamation-triangle:before {
6310 content: "\f071";
6311 }
6312 .fa-plane:before {
6313 content: "\f072";
6314 }
6315 .fa-calendar:before {
6316 content: "\f073";
6317 }
6318 .fa-random:before {
6319 content: "\f074";
6320 }
6321 .fa-comment:before {
6322 content: "\f075";
6323 }
6324 .fa-magnet:before {
6325 content: "\f076";
6326 }
6327 .fa-chevron-up:before {
6328 content: "\f077";
6329 }
6330 .fa-chevron-down:before {
6331 content: "\f078";
6332 }
6333 .fa-retweet:before {
6334 content: "\f079";
6335 }
6336 .fa-shopping-cart:before {
6337 content: "\f07a";
6338 }
6339 .fa-folder:before {
6340 content: "\f07b";
6341 }
6342 .fa-folder-open:before {
6343 content: "\f07c";
6344 }
6345 .fa-arrows-v:before {
6346 content: "\f07d";
6347 }
6348 .fa-arrows-h:before {
6349 content: "\f07e";
6350 }
6351 .fa-bar-chart-o:before {
6352 content: "\f080";
6353 }
6354 .fa-twitter-square:before {
6355 content: "\f081";
6356 }
6357 .fa-facebook-square:before {
6358 content: "\f082";
6359 }
6360 .fa-camera-retro:before {
6361 content: "\f083";
6362 }
6363 .fa-key:before {
6364 content: "\f084";
6365 }
6366 .fa-gears:before,
6367 .fa-cogs:before {
6368 content: "\f085";
6369 }
6370 .fa-comments:before {
6371 content: "\f086";
6372 }
6373 .fa-thumbs-o-up:before {
6374 content: "\f087";
6375 }
6376 .fa-thumbs-o-down:before {
6377 content: "\f088";
6378 }
6379 .fa-star-half:before {
6380 content: "\f089";
6381 }
6382 .fa-heart-o:before {
6383 content: "\f08a";
6384 }
6385 .fa-sign-out:before {
6386 content: "\f08b";
6387 }
6388 .fa-linkedin-square:before {
6389 content: "\f08c";
6390 }
6391 .fa-thumb-tack:before {
6392 content: "\f08d";
6393 }
6394 .fa-external-link:before {
6395 content: "\f08e";
6396 }
6397 .fa-sign-in:before {
6398 content: "\f090";
6399 }
6400 .fa-trophy:before {
6401 content: "\f091";
6402 }
6403 .fa-github-square:before {
6404 content: "\f092";
6405 }
6406 .fa-upload:before {
6407 content: "\f093";
6408 }
6409 .fa-lemon-o:before {
6410 content: "\f094";
6411 }
6412 .fa-phone:before {
6413 content: "\f095";
6414 }
6415 .fa-square-o:before {
6416 content: "\f096";
6417 }
6418 .fa-bookmark-o:before {
6419 content: "\f097";
6420 }
6421 .fa-phone-square:before {
6422 content: "\f098";
6423 }
6424 .fa-twitter:before {
6425 content: "\f099";
6426 }
6427 .fa-facebook:before {
6428 content: "\f09a";
6429 }
6430 .fa-github:before {
6431 content: "\f09b";
6432 }
6433 .fa-unlock:before {
6434 content: "\f09c";
6435 }
6436 .fa-credit-card:before {
6437 content: "\f09d";
6438 }
6439 .fa-rss:before {
6440 content: "\f09e";
6441 }
6442 .fa-hdd-o:before {
6443 content: "\f0a0";
6444 }
6445 .fa-bullhorn:before {
6446 content: "\f0a1";
6447 }
6448 .fa-bell:before {
6449 content: "\f0f3";
6450 }
6451 .fa-certificate:before {
6452 content: "\f0a3";
6453 }
6454 .fa-hand-o-right:before {
6455 content: "\f0a4";
6456 }
6457 .fa-hand-o-left:before {
6458 content: "\f0a5";
6459 }
6460 .fa-hand-o-up:before {
6461 content: "\f0a6";
6462 }
6463 .fa-hand-o-down:before {
6464 content: "\f0a7";
6465 }
6466 .fa-arrow-circle-left:before {
6467 content: "\f0a8";
6468 }
6469 .fa-arrow-circle-right:before {
6470 content: "\f0a9";
6471 }
6472 .fa-arrow-circle-up:before {
6473 content: "\f0aa";
6474 }
6475 .fa-arrow-circle-down:before {
6476 content: "\f0ab";
6477 }
6478 .fa-globe:before {
6479 content: "\f0ac";
6480 }
6481 .fa-wrench:before {
6482 content: "\f0ad";
6483 }
6484 .fa-tasks:before {
6485 content: "\f0ae";
6486 }
6487 .fa-filter:before {
6488 content: "\f0b0";
6489 }
6490 .fa-briefcase:before {
6491 content: "\f0b1";
6492 }
6493 .fa-arrows-alt:before {
6494 content: "\f0b2";
6495 }
6496 .fa-group:before,
6497 .fa-users:before {
6498 content: "\f0c0";
6499 }
6500 .fa-chain:before,
6501 .fa-link:before {
6502 content: "\f0c1";
6503 }
6504 .fa-cloud:before {
6505 content: "\f0c2";
6506 }
6507 .fa-flask:before {
6508 content: "\f0c3";
6509 }
6510 .fa-cut:before,
6511 .fa-scissors:before {
6512 content: "\f0c4";
6513 }
6514 .fa-copy:before,
6515 .fa-files-o:before {
6516 content: "\f0c5";
6517 }
6518 .fa-paperclip:before {
6519 content: "\f0c6";
6520 }
6521 .fa-save:before,
6522 .fa-floppy-o:before {
6523 content: "\f0c7";
6524 }
6525 .fa-square:before {
6526 content: "\f0c8";
6527 }
6528 .fa-navicon:before,
6529 .fa-reorder:before,
6530 .fa-bars:before {
6531 content: "\f0c9";
6532 }
6533 .fa-list-ul:before {
6534 content: "\f0ca";
6535 }
6536 .fa-list-ol:before {
6537 content: "\f0cb";
6538 }
6539 .fa-strikethrough:before {
6540 content: "\f0cc";
6541 }
6542 .fa-underline:before {
6543 content: "\f0cd";
6544 }
6545 .fa-table:before {
6546 content: "\f0ce";
6547 }
6548 .fa-magic:before {
6549 content: "\f0d0";
6550 }
6551 .fa-truck:before {
6552 content: "\f0d1";
6553 }
6554 .fa-pinterest:before {
6555 content: "\f0d2";
6556 }
6557 .fa-pinterest-square:before {
6558 content: "\f0d3";
6559 }
6560 .fa-google-plus-square:before {
6561 content: "\f0d4";
6562 }
6563 .fa-google-plus:before {
6564 content: "\f0d5";
6565 }
6566 .fa-money:before {
6567 content: "\f0d6";
6568 }
6569 .fa-caret-down:before {
6570 content: "\f0d7";
6571 }
6572 .fa-caret-up:before {
6573 content: "\f0d8";
6574 }
6575 .fa-caret-left:before {
6576 content: "\f0d9";
6577 }
6578 .fa-caret-right:before {
6579 content: "\f0da";
6580 }
6581 .fa-columns:before {
6582 content: "\f0db";
6583 }
6584 .fa-unsorted:before,
6585 .fa-sort:before {
6586 content: "\f0dc";
6587 }
6588 .fa-sort-down:before,
6589 .fa-sort-desc:before {
6590 content: "\f0dd";
6591 }
6592 .fa-sort-up:before,
6593 .fa-sort-asc:before {
6594 content: "\f0de";
6595 }
6596 .fa-envelope:before {
6597 content: "\f0e0";
6598 }
6599 .fa-linkedin:before {
6600 content: "\f0e1";
6601 }
6602 .fa-rotate-left:before,
6603 .fa-undo:before {
6604 content: "\f0e2";
6605 }
6606 .fa-legal:before,
6607 .fa-gavel:before {
6608 content: "\f0e3";
6609 }
6610 .fa-dashboard:before,
6611 .fa-tachometer:before {
6612 content: "\f0e4";
6613 }
6614 .fa-comment-o:before {
6615 content: "\f0e5";
6616 }
6617 .fa-comments-o:before {
6618 content: "\f0e6";
6619 }
6620 .fa-flash:before,
6621 .fa-bolt:before {
6622 content: "\f0e7";
6623 }
6624 .fa-sitemap:before {
6625 content: "\f0e8";
6626 }
6627 .fa-umbrella:before {
6628 content: "\f0e9";
6629 }
6630 .fa-paste:before,
6631 .fa-clipboard:before {
6632 content: "\f0ea";
6633 }
6634 .fa-lightbulb-o:before {
6635 content: "\f0eb";
6636 }
6637 .fa-exchange:before {
6638 content: "\f0ec";
6639 }
6640 .fa-cloud-download:before {
6641 content: "\f0ed";
6642 }
6643 .fa-cloud-upload:before {
6644 content: "\f0ee";
6645 }
6646 .fa-user-md:before {
6647 content: "\f0f0";
6648 }
6649 .fa-stethoscope:before {
6650 content: "\f0f1";
6651 }
6652 .fa-suitcase:before {
6653 content: "\f0f2";
6654 }
6655 .fa-bell-o:before {
6656 content: "\f0a2";
6657 }
6658 .fa-coffee:before {
6659 content: "\f0f4";
6660 }
6661 .fa-cutlery:before {
6662 content: "\f0f5";
6663 }
6664 .fa-file-text-o:before {
6665 content: "\f0f6";
6666 }
6667 .fa-building-o:before {
6668 content: "\f0f7";
6669 }
6670 .fa-hospital-o:before {
6671 content: "\f0f8";
6672 }
6673 .fa-ambulance:before {
6674 content: "\f0f9";
6675 }
6676 .fa-medkit:before {
6677 content: "\f0fa";
6678 }
6679 .fa-fighter-jet:before {
6680 content: "\f0fb";
6681 }
6682 .fa-beer:before {
6683 content: "\f0fc";
6684 }
6685 .fa-h-square:before {
6686 content: "\f0fd";
6687 }
6688 .fa-plus-square:before {
6689 content: "\f0fe";
6690 }
6691 .fa-angle-double-left:before {
6692 content: "\f100";
6693 }
6694 .fa-angle-double-right:before {
6695 content: "\f101";
6696 }
6697 .fa-angle-double-up:before {
6698 content: "\f102";
6699 }
6700 .fa-angle-double-down:before {
6701 content: "\f103";
6702 }
6703 .fa-angle-left:before {
6704 content: "\f104";
6705 }
6706 .fa-angle-right:before {
6707 content: "\f105";
6708 }
6709 .fa-angle-up:before {
6710 content: "\f106";
6711 }
6712 .fa-angle-down:before {
6713 content: "\f107";
6714 }
6715 .fa-desktop:before {
6716 content: "\f108";
6717 }
6718 .fa-laptop:before {
6719 content: "\f109";
6720 }
6721 .fa-tablet:before {
6722 content: "\f10a";
6723 }
6724 .fa-mobile-phone:before,
6725 .fa-mobile:before {
6726 content: "\f10b";
6727 }
6728 .fa-circle-o:before {
6729 content: "\f10c";
6730 }
6731 .fa-quote-left:before {
6732 content: "\f10d";
6733 }
6734 .fa-quote-right:before {
6735 content: "\f10e";
6736 }
6737 .fa-spinner:before {
6738 content: "\f110";
6739 }
6740 .fa-circle:before {
6741 content: "\f111";
6742 }
6743 .fa-mail-reply:before,
6744 .fa-reply:before {
6745 content: "\f112";
6746 }
6747 .fa-github-alt:before {
6748 content: "\f113";
6749 }
6750 .fa-folder-o:before {
6751 content: "\f114";
6752 }
6753 .fa-folder-open-o:before {
6754 content: "\f115";
6755 }
6756 .fa-smile-o:before {
6757 content: "\f118";
6758 }
6759 .fa-frown-o:before {
6760 content: "\f119";
6761 }
6762 .fa-meh-o:before {
6763 content: "\f11a";
6764 }
6765 .fa-gamepad:before {
6766 content: "\f11b";
6767 }
6768 .fa-keyboard-o:before {
6769 content: "\f11c";
6770 }
6771 .fa-flag-o:before {
6772 content: "\f11d";
6773 }
6774 .fa-flag-checkered:before {
6775 content: "\f11e";
6776 }
6777 .fa-terminal:before {
6778 content: "\f120";
6779 }
6780 .fa-code:before {
6781 content: "\f121";
6782 }
6783 .fa-mail-reply-all:before,
6784 .fa-reply-all:before {
6785 content: "\f122";
6786 }
6787 .fa-star-half-empty:before,
6788 .fa-star-half-full:before,
6789 .fa-star-half-o:before {
6790 content: "\f123";
6791 }
6792 .fa-location-arrow:before {
6793 content: "\f124";
6794 }
6795 .fa-crop:before {
6796 content: "\f125";
6797 }
6798 .fa-code-fork:before {
6799 content: "\f126";
6800 }
6801 .fa-unlink:before,
6802 .fa-chain-broken:before {
6803 content: "\f127";
6804 }
6805 .fa-question:before {
6806 content: "\f128";
6807 }
6808 .fa-info:before {
6809 content: "\f129";
6810 }
6811 .fa-exclamation:before {
6812 content: "\f12a";
6813 }
6814 .fa-superscript:before {
6815 content: "\f12b";
6816 }
6817 .fa-subscript:before {
6818 content: "\f12c";
6819 }
6820 .fa-eraser:before {
6821 content: "\f12d";
6822 }
6823 .fa-puzzle-piece:before {
6824 content: "\f12e";
6825 }
6826 .fa-microphone:before {
6827 content: "\f130";
6828 }
6829 .fa-microphone-slash:before {
6830 content: "\f131";
6831 }
6832 .fa-shield:before {
6833 content: "\f132";
6834 }
6835 .fa-calendar-o:before {
6836 content: "\f133";
6837 }
6838 .fa-fire-extinguisher:before {
6839 content: "\f134";
6840 }
6841 .fa-rocket:before {
6842 content: "\f135";
6843 }
6844 .fa-maxcdn:before {
6845 content: "\f136";
6846 }
6847 .fa-chevron-circle-left:before {
6848 content: "\f137";
6849 }
6850 .fa-chevron-circle-right:before {
6851 content: "\f138";
6852 }
6853 .fa-chevron-circle-up:before {
6854 content: "\f139";
6855 }
6856 .fa-chevron-circle-down:before {
6857 content: "\f13a";
6858 }
6859 .fa-html5:before {
6860 content: "\f13b";
6861 }
6862 .fa-css3:before {
6863 content: "\f13c";
6864 }
6865 .fa-anchor:before {
6866 content: "\f13d";
6867 }
6868 .fa-unlock-alt:before {
6869 content: "\f13e";
6870 }
6871 .fa-bullseye:before {
6872 content: "\f140";
6873 }
6874 .fa-ellipsis-h:before {
6875 content: "\f141";
6876 }
6877 .fa-ellipsis-v:before {
6878 content: "\f142";
6879 }
6880 .fa-rss-square:before {
6881 content: "\f143";
6882 }
6883 .fa-play-circle:before {
6884 content: "\f144";
6885 }
6886 .fa-ticket:before {
6887 content: "\f145";
6888 }
6889 .fa-minus-square:before {
6890 content: "\f146";
6891 }
6892 .fa-minus-square-o:before {
6893 content: "\f147";
6894 }
6895 .fa-level-up:before {
6896 content: "\f148";
6897 }
6898 .fa-level-down:before {
6899 content: "\f149";
6900 }
6901 .fa-check-square:before {
6902 content: "\f14a";
6903 }
6904 .fa-pencil-square:before {
6905 content: "\f14b";
6906 }
6907 .fa-external-link-square:before {
6908 content: "\f14c";
6909 }
6910 .fa-share-square:before {
6911 content: "\f14d";
6912 }
6913 .fa-compass:before {
6914 content: "\f14e";
6915 }
6916 .fa-toggle-down:before,
6917 .fa-caret-square-o-down:before {
6918 content: "\f150";
6919 }
6920 .fa-toggle-up:before,
6921 .fa-caret-square-o-up:before {
6922 content: "\f151";
6923 }
6924 .fa-toggle-right:before,
6925 .fa-caret-square-o-right:before {
6926 content: "\f152";
6927 }
6928 .fa-euro:before,
6929 .fa-eur:before {
6930 content: "\f153";
6931 }
6932 .fa-gbp:before {
6933 content: "\f154";
6934 }
6935 .fa-dollar:before,
6936 .fa-usd:before {
6937 content: "\f155";
6938 }
6939 .fa-rupee:before,
6940 .fa-inr:before {
6941 content: "\f156";
6942 }
6943 .fa-cny:before,
6944 .fa-rmb:before,
6945 .fa-yen:before,
6946 .fa-jpy:before {
6947 content: "\f157";
6948 }
6949 .fa-ruble:before,
6950 .fa-rouble:before,
6951 .fa-rub:before {
6952 content: "\f158";
6953 }
6954 .fa-won:before,
6955 .fa-krw:before {
6956 content: "\f159";
6957 }
6958 .fa-bitcoin:before,
6959 .fa-btc:before {
6960 content: "\f15a";
6961 }
6962 .fa-file:before {
6963 content: "\f15b";
6964 }
6965 .fa-file-text:before {
6966 content: "\f15c";
6967 }
6968 .fa-sort-alpha-asc:before {
6969 content: "\f15d";
6970 }
6971 .fa-sort-alpha-desc:before {
6972 content: "\f15e";
6973 }
6974 .fa-sort-amount-asc:before {
6975 content: "\f160";
6976 }
6977 .fa-sort-amount-desc:before {
6978 content: "\f161";
6979 }
6980 .fa-sort-numeric-asc:before {
6981 content: "\f162";
6982 }
6983 .fa-sort-numeric-desc:before {
6984 content: "\f163";
6985 }
6986 .fa-thumbs-up:before {
6987 content: "\f164";
6988 }
6989 .fa-thumbs-down:before {
6990 content: "\f165";
6991 }
6992 .fa-youtube-square:before {
6993 content: "\f166";
6994 }
6995 .fa-youtube:before {
6996 content: "\f167";
6997 }
6998 .fa-xing:before {
6999 content: "\f168";
7000 }
7001 .fa-xing-square:before {
7002 content: "\f169";
7003 }
7004 .fa-youtube-play:before {
7005 content: "\f16a";
7006 }
7007 .fa-dropbox:before {
7008 content: "\f16b";
7009 }
7010 .fa-stack-overflow:before {
7011 content: "\f16c";
7012 }
7013 .fa-instagram:before {
7014 content: "\f16d";
7015 }
7016 .fa-flickr:before {
7017 content: "\f16e";
7018 }
7019 .fa-adn:before {
7020 content: "\f170";
7021 }
7022 .fa-bitbucket:before {
7023 content: "\f171";
7024 }
7025 .fa-bitbucket-square:before {
7026 content: "\f172";
7027 }
7028 .fa-tumblr:before {
7029 content: "\f173";
7030 }
7031 .fa-tumblr-square:before {
7032 content: "\f174";
7033 }
7034 .fa-long-arrow-down:before {
7035 content: "\f175";
7036 }
7037 .fa-long-arrow-up:before {
7038 content: "\f176";
7039 }
7040 .fa-long-arrow-left:before {
7041 content: "\f177";
7042 }
7043 .fa-long-arrow-right:before {
7044 content: "\f178";
7045 }
7046 .fa-apple:before {
7047 content: "\f179";
7048 }
7049 .fa-windows:before {
7050 content: "\f17a";
7051 }
7052 .fa-android:before {
7053 content: "\f17b";
7054 }
7055 .fa-linux:before {
7056 content: "\f17c";
7057 }
7058 .fa-dribbble:before {
7059 content: "\f17d";
7060 }
7061 .fa-skype:before {
7062 content: "\f17e";
7063 }
7064 .fa-foursquare:before {
7065 content: "\f180";
7066 }
7067 .fa-trello:before {
7068 content: "\f181";
7069 }
7070 .fa-female:before {
7071 content: "\f182";
7072 }
7073 .fa-male:before {
7074 content: "\f183";
7075 }
7076 .fa-gittip:before {
7077 content: "\f184";
7078 }
7079 .fa-sun-o:before {
7080 content: "\f185";
7081 }
7082 .fa-moon-o:before {
7083 content: "\f186";
7084 }
7085 .fa-archive:before {
7086 content: "\f187";
7087 }
7088 .fa-bug:before {
7089 content: "\f188";
7090 }
7091 .fa-vk:before {
7092 content: "\f189";
7093 }
7094 .fa-weibo:before {
7095 content: "\f18a";
7096 }
7097 .fa-renren:before {
7098 content: "\f18b";
7099 }
7100 .fa-pagelines:before {
7101 content: "\f18c";
7102 }
7103 .fa-stack-exchange:before {
7104 content: "\f18d";
7105 }
7106 .fa-arrow-circle-o-right:before {
7107 content: "\f18e";
7108 }
7109 .fa-arrow-circle-o-left:before {
7110 content: "\f190";
7111 }
7112 .fa-toggle-left:before,
7113 .fa-caret-square-o-left:before {
7114 content: "\f191";
7115 }
7116 .fa-dot-circle-o:before {
7117 content: "\f192";
7118 }
7119 .fa-wheelchair:before {
7120 content: "\f193";
7121 }
7122 .fa-vimeo-square:before {
7123 content: "\f194";
7124 }
7125 .fa-turkish-lira:before,
7126 .fa-try:before {
7127 content: "\f195";
7128 }
7129 .fa-plus-square-o:before {
7130 content: "\f196";
7131 }
7132 .fa-space-shuttle:before {
7133 content: "\f197";
7134 }
7135 .fa-slack:before {
7136 content: "\f198";
7137 }
7138 .fa-envelope-square:before {
7139 content: "\f199";
7140 }
7141 .fa-wordpress:before {
7142 content: "\f19a";
7143 }
7144 .fa-openid:before {
7145 content: "\f19b";
7146 }
7147 .fa-institution:before,
7148 .fa-bank:before,
7149 .fa-university:before {
7150 content: "\f19c";
7151 }
7152 .fa-mortar-board:before,
7153 .fa-graduation-cap:before {
7154 content: "\f19d";
7155 }
7156 .fa-yahoo:before {
7157 content: "\f19e";
7158 }
7159 .fa-google:before {
7160 content: "\f1a0";
7161 }
7162 .fa-reddit:before {
7163 content: "\f1a1";
7164 }
7165 .fa-reddit-square:before {
7166 content: "\f1a2";
7167 }
7168 .fa-stumbleupon-circle:before {
7169 content: "\f1a3";
7170 }
7171 .fa-stumbleupon:before {
7172 content: "\f1a4";
7173 }
7174 .fa-delicious:before {
7175 content: "\f1a5";
7176 }
7177 .fa-digg:before {
7178 content: "\f1a6";
7179 }
7180 .fa-pied-piper-square:before,
7181 .fa-pied-piper:before {
7182 content: "\f1a7";
7183 }
7184 .fa-pied-piper-alt:before {
7185 content: "\f1a8";
7186 }
7187 .fa-drupal:before {
7188 content: "\f1a9";
7189 }
7190 .fa-joomla:before {
7191 content: "\f1aa";
7192 }
7193 .fa-language:before {
7194 content: "\f1ab";
7195 }
7196 .fa-fax:before {
7197 content: "\f1ac";
7198 }
7199 .fa-building:before {
7200 content: "\f1ad";
7201 }
7202 .fa-child:before {
7203 content: "\f1ae";
7204 }
7205 .fa-paw:before {
7206 content: "\f1b0";
7207 }
7208 .fa-spoon:before {
7209 content: "\f1b1";
7210 }
7211 .fa-cube:before {
7212 content: "\f1b2";
7213 }
7214 .fa-cubes:before {
7215 content: "\f1b3";
7216 }
7217 .fa-behance:before {
7218 content: "\f1b4";
7219 }
7220 .fa-behance-square:before {
7221 content: "\f1b5";
7222 }
7223 .fa-steam:before {
7224 content: "\f1b6";
7225 }
7226 .fa-steam-square:before {
7227 content: "\f1b7";
7228 }
7229 .fa-recycle:before {
7230 content: "\f1b8";
7231 }
7232 .fa-automobile:before,
7233 .fa-car:before {
7234 content: "\f1b9";
7235 }
7236 .fa-cab:before,
7237 .fa-taxi:before {
7238 content: "\f1ba";
7239 }
7240 .fa-tree:before {
7241 content: "\f1bb";
7242 }
7243 .fa-spotify:before {
7244 content: "\f1bc";
7245 }
7246 .fa-deviantart:before {
7247 content: "\f1bd";
7248 }
7249 .fa-soundcloud:before {
7250 content: "\f1be";
7251 }
7252 .fa-database:before {
7253 content: "\f1c0";
7254 }
7255 .fa-file-pdf-o:before {
7256 content: "\f1c1";
7257 }
7258 .fa-file-word-o:before {
7259 content: "\f1c2";
7260 }
7261 .fa-file-excel-o:before {
7262 content: "\f1c3";
7263 }
7264 .fa-file-powerpoint-o:before {
7265 content: "\f1c4";
7266 }
7267 .fa-file-photo-o:before,
7268 .fa-file-picture-o:before,
7269 .fa-file-image-o:before {
7270 content: "\f1c5";
7271 }
7272 .fa-file-zip-o:before,
7273 .fa-file-archive-o:before {
7274 content: "\f1c6";
7275 }
7276 .fa-file-sound-o:before,
7277 .fa-file-audio-o:before {
7278 content: "\f1c7";
7279 }
7280 .fa-file-movie-o:before,
7281 .fa-file-video-o:before {
7282 content: "\f1c8";
7283 }
7284 .fa-file-code-o:before {
7285 content: "\f1c9";
7286 }
7287 .fa-vine:before {
7288 content: "\f1ca";
7289 }
7290 .fa-codepen:before {
7291 content: "\f1cb";
7292 }
7293 .fa-jsfiddle:before {
7294 content: "\f1cc";
7295 }
7296 .fa-life-bouy:before,
7297 .fa-life-saver:before,
7298 .fa-support:before,
7299 .fa-life-ring:before {
7300 content: "\f1cd";
7301 }
7302 .fa-circle-o-notch:before {
7303 content: "\f1ce";
7304 }
7305 .fa-ra:before,
7306 .fa-rebel:before {
7307 content: "\f1d0";
7308 }
7309 .fa-ge:before,
7310 .fa-empire:before {
7311 content: "\f1d1";
7312 }
7313 .fa-git-square:before {
7314 content: "\f1d2";
7315 }
7316 .fa-git:before {
7317 content: "\f1d3";
7318 }
7319 .fa-hacker-news:before {
7320 content: "\f1d4";
7321 }
7322 .fa-tencent-weibo:before {
7323 content: "\f1d5";
7324 }
7325 .fa-qq:before {
7326 content: "\f1d6";
7327 }
7328 .fa-wechat:before,
7329 .fa-weixin:before {
7330 content: "\f1d7";
7331 }
7332 .fa-send:before,
7333 .fa-paper-plane:before {
7334 content: "\f1d8";
7335 }
7336 .fa-send-o:before,
7337 .fa-paper-plane-o:before {
7338 content: "\f1d9";
7339 }
7340 .fa-history:before {
7341 content: "\f1da";
7342 }
7343 .fa-circle-thin:before {
7344 content: "\f1db";
7345 }
7346 .fa-header:before {
7347 content: "\f1dc";
7348 }
7349 .fa-paragraph:before {
7350 content: "\f1dd";
7351 }
7352 .fa-sliders:before {
7353 content: "\f1de";
7354 }
7355 .fa-share-alt:before {
7356 content: "\f1e0";
7357 }
7358 .fa-share-alt-square:before {
7359 content: "\f1e1";
7360 }
7361 .fa-bomb:before {
7362 content: "\f1e2";
7363 }
7364 /*!
7365 *
7366 * IPython base
7367 *
7368 */
7369 .modal.fade .modal-dialog {
7370 -webkit-transform: translate(0, 0);
7371 -ms-transform: translate(0, 0);
7372 transform: translate(0, 0);
7373 }
7374 code {
7375 color: #000000;
7376 }
7377 pre {
7378 font-size: inherit;
7379 line-height: inherit;
7380 }
7381 label {
7382 font-weight: normal;
7383 }
7384 .border-box-sizing {
7385 box-sizing: border-box;
7386 -moz-box-sizing: border-box;
7387 -webkit-box-sizing: border-box;
7388 }
7389 .corner-all {
7390 border-radius: 4px;
7391 }
7392 .no-padding {
7393 padding: 0px;
7394 }
7395 /* Flexible box model classes */
7396 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
7397 /* This file is a compatability layer. It allows the usage of flexible box
7398 model layouts accross multiple browsers, including older browsers. The newest,
7399 universal implementation of the flexible box model is used when available (see
7400 `Modern browsers` comments below). Browsers that are known to implement this
7401 new spec completely include:
7402
7403 Firefox 28.0+
7404 Chrome 29.0+
7405 Internet Explorer 11+
7406 Opera 17.0+
7407
7408 Browsers not listed, including Safari, are supported via the styling under the
7409 `Old browsers` comments below.
7410 */
7411 .hbox {
7412 /* Old browsers */
7413 display: -webkit-box;
7414 -webkit-box-orient: horizontal;
7415 -webkit-box-align: stretch;
7416 display: -moz-box;
7417 -moz-box-orient: horizontal;
7418 -moz-box-align: stretch;
7419 display: box;
7420 box-orient: horizontal;
7421 box-align: stretch;
7422 /* Modern browsers */
7423 display: flex;
7424 flex-direction: row;
7425 align-items: stretch;
7426 }
7427 .hbox > * {
7428 /* Old browsers */
7429 -webkit-box-flex: 0;
7430 -moz-box-flex: 0;
7431 box-flex: 0;
7432 /* Modern browsers */
7433 flex: none;
7434 }
7435 .vbox {
7436 /* Old browsers */
7437 display: -webkit-box;
7438 -webkit-box-orient: vertical;
7439 -webkit-box-align: stretch;
7440 display: -moz-box;
7441 -moz-box-orient: vertical;
7442 -moz-box-align: stretch;
7443 display: box;
7444 box-orient: vertical;
7445 box-align: stretch;
7446 /* Modern browsers */
7447 display: flex;
7448 flex-direction: column;
7449 align-items: stretch;
7450 }
7451 .vbox > * {
7452 /* Old browsers */
7453 -webkit-box-flex: 0;
7454 -moz-box-flex: 0;
7455 box-flex: 0;
7456 /* Modern browsers */
7457 flex: none;
7458 }
7459 .hbox.reverse,
7460 .vbox.reverse,
7461 .reverse {
7462 /* Old browsers */
7463 -webkit-box-direction: reverse;
7464 -moz-box-direction: reverse;
7465 box-direction: reverse;
7466 /* Modern browsers */
7467 flex-direction: row-reverse;
7468 }
7469 .hbox.box-flex0,
7470 .vbox.box-flex0,
7471 .box-flex0 {
7472 /* Old browsers */
7473 -webkit-box-flex: 0;
7474 -moz-box-flex: 0;
7475 box-flex: 0;
7476 /* Modern browsers */
7477 flex: none;
7478 width: auto;
7479 }
7480 .hbox.box-flex1,
7481 .vbox.box-flex1,
7482 .box-flex1 {
7483 /* Old browsers */
7484 -webkit-box-flex: 1;
7485 -moz-box-flex: 1;
7486 box-flex: 1;
7487 /* Modern browsers */
7488 flex: 1;
7489 }
7490 .hbox.box-flex,
7491 .vbox.box-flex,
7492 .box-flex {
7493 /* Old browsers */
7494 /* Old browsers */
7495 -webkit-box-flex: 1;
7496 -moz-box-flex: 1;
7497 box-flex: 1;
7498 /* Modern browsers */
7499 flex: 1;
7500 }
7501 .hbox.box-flex2,
7502 .vbox.box-flex2,
7503 .box-flex2 {
7504 /* Old browsers */
7505 -webkit-box-flex: 2;
7506 -moz-box-flex: 2;
7507 box-flex: 2;
7508 /* Modern browsers */
7509 flex: 2;
7510 }
7511 .box-group1 {
7512 /* Deprecated */
7513 -webkit-box-flex-group: 1;
7514 -moz-box-flex-group: 1;
7515 box-flex-group: 1;
7516 }
7517 .box-group2 {
7518 /* Deprecated */
7519 -webkit-box-flex-group: 2;
7520 -moz-box-flex-group: 2;
7521 box-flex-group: 2;
7522 }
7523 .hbox.start,
7524 .vbox.start,
7525 .start {
7526 /* Old browsers */
7527 -webkit-box-pack: start;
7528 -moz-box-pack: start;
7529 box-pack: start;
7530 /* Modern browsers */
7531 justify-content: flex-start;
7532 }
7533 .hbox.end,
7534 .vbox.end,
7535 .end {
7536 /* Old browsers */
7537 -webkit-box-pack: end;
7538 -moz-box-pack: end;
7539 box-pack: end;
7540 /* Modern browsers */
7541 justify-content: flex-end;
7542 }
7543 .hbox.center,
7544 .vbox.center,
7545 .center {
7546 /* Old browsers */
7547 -webkit-box-pack: center;
7548 -moz-box-pack: center;
7549 box-pack: center;
7550 /* Modern browsers */
7551 justify-content: center;
7552 }
7553 .hbox.baseline,
7554 .vbox.baseline,
7555 .baseline {
7556 /* Old browsers */
7557 -webkit-box-pack: baseline;
7558 -moz-box-pack: baseline;
7559 box-pack: baseline;
7560 /* Modern browsers */
7561 justify-content: baseline;
7562 }
7563 .hbox.stretch,
7564 .vbox.stretch,
7565 .stretch {
7566 /* Old browsers */
7567 -webkit-box-pack: stretch;
7568 -moz-box-pack: stretch;
7569 box-pack: stretch;
7570 /* Modern browsers */
7571 justify-content: stretch;
7572 }
7573 .hbox.align-start,
7574 .vbox.align-start,
7575 .align-start {
7576 /* Old browsers */
7577 -webkit-box-align: start;
7578 -moz-box-align: start;
7579 box-align: start;
7580 /* Modern browsers */
7581 align-items: flex-start;
7582 }
7583 .hbox.align-end,
7584 .vbox.align-end,
7585 .align-end {
7586 /* Old browsers */
7587 -webkit-box-align: end;
7588 -moz-box-align: end;
7589 box-align: end;
7590 /* Modern browsers */
7591 align-items: flex-end;
7592 }
7593 .hbox.align-center,
7594 .vbox.align-center,
7595 .align-center {
7596 /* Old browsers */
7597 -webkit-box-align: center;
7598 -moz-box-align: center;
7599 box-align: center;
7600 /* Modern browsers */
7601 align-items: center;
7602 }
7603 .hbox.align-baseline,
7604 .vbox.align-baseline,
7605 .align-baseline {
7606 /* Old browsers */
7607 -webkit-box-align: baseline;
7608 -moz-box-align: baseline;
7609 box-align: baseline;
7610 /* Modern browsers */
7611 align-items: baseline;
7612 }
7613 .hbox.align-stretch,
7614 .vbox.align-stretch,
7615 .align-stretch {
7616 /* Old browsers */
7617 -webkit-box-align: stretch;
7618 -moz-box-align: stretch;
7619 box-align: stretch;
7620 /* Modern browsers */
7621 align-items: stretch;
7622 }
7623 div.error {
7624 margin: 2em;
7625 text-align: center;
7626 }
7627 div.error > h1 {
7628 font-size: 500%;
7629 line-height: normal;
7630 }
7631 div.error > p {
7632 font-size: 200%;
7633 line-height: normal;
7634 }
7635 div.traceback-wrapper {
7636 text-align: left;
7637 max-width: 800px;
7638 margin: auto;
7639 }
7640 /**
7641 * Primary styles
7642 *
7643 * Author: IPython Development Team
7644 */
7645 body {
7646 background-color: white;
7647 /* This makes sure that the body covers the entire window and needs to
7648 be in a different element than the display: box in wrapper below */
7649 position: absolute;
7650 left: 0px;
7651 right: 0px;
7652 top: 0px;
7653 bottom: 0px;
7654 overflow: visible;
7655 }
7656 div#header {
7657 /* Initially hidden to prevent FLOUC */
7658 display: none;
7659 margin-bottom: 0px;
7660 padding-left: 30px;
7661 padding-bottom: 5px;
7662 border-bottom: 1px solid #e7e7e7;
7663 box-sizing: border-box;
7664 -moz-box-sizing: border-box;
7665 -webkit-box-sizing: border-box;
7666 }
7667 #ipython_notebook {
7668 padding-left: 0px;
7669 }
7670 #noscript {
7671 width: auto;
7672 padding-top: 16px;
7673 padding-bottom: 16px;
7674 text-align: center;
7675 font-size: 22px;
7676 color: red;
7677 font-weight: bold;
7678 }
7679 #ipython_notebook img {
7680 font-family: Verdana, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
7681 height: 24px;
7682 text-decoration: none;
7683 color: black;
7684 }
7685 #site {
7686 width: 100%;
7687 display: none;
7688 box-sizing: border-box;
7689 -moz-box-sizing: border-box;
7690 -webkit-box-sizing: border-box;
7691 }
7692 /* Smaller buttons */
7693 .ui-button .ui-button-text {
7694 padding: 0.2em 0.8em;
7695 font-size: 77%;
7696 }
7697 input.ui-button {
7698 padding: 0.3em 0.9em;
7699 }
7700 .navbar span {
7701 margin-top: 3px;
7702 }
7703 span#login_widget {
7704 float: right;
7705 }
7706 span#login_widget > .button,
7707 #logout {
7708 display: inline-block;
7709 margin-bottom: 0;
7710 font-weight: normal;
7711 text-align: center;
7712 vertical-align: middle;
7713 cursor: pointer;
7714 background-image: none;
7715 border: 1px solid transparent;
7716 white-space: nowrap;
7717 padding: 6px 12px;
7718 font-size: 13px;
7719 line-height: 1.42857143;
7720 border-radius: 4px;
7721 -webkit-user-select: none;
7722 -moz-user-select: none;
7723 -ms-user-select: none;
7724 user-select: none;
7725 color: #333333;
7726 background-color: #ffffff;
7727 border-color: #cccccc;
7728 padding: 5px 10px;
7729 font-size: 12px;
7730 line-height: 1.5;
7731 border-radius: 3px;
7732 }
7733 span#login_widget > .button:focus,
7734 #logout:focus,
7735 span#login_widget > .button:active:focus,
7736 #logout:active:focus,
7737 span#login_widget > .button.active:focus,
7738 #logout.active:focus {
7739 outline: thin dotted;
7740 outline: 5px auto -webkit-focus-ring-color;
7741 outline-offset: -2px;
7742 }
7743 span#login_widget > .button:hover,
7744 #logout:hover,
7745 span#login_widget > .button:focus,
7746 #logout:focus {
7747 color: #333333;
7748 text-decoration: none;
7749 }
7750 span#login_widget > .button:active,
7751 #logout:active,
7752 span#login_widget > .button.active,
7753 #logout.active {
7754 outline: 0;
7755 background-image: none;
7756 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7757 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
7758 }
7759 span#login_widget > .button.disabled,
7760 #logout.disabled,
7761 span#login_widget > .button[disabled],
7762 #logout[disabled],
7763 fieldset[disabled] span#login_widget > .button,
7764 fieldset[disabled] #logout {
7765 cursor: not-allowed;
7766 pointer-events: none;
7767 opacity: 0.65;
7768 filter: alpha(opacity=65);
7769 -webkit-box-shadow: none;
7770 box-shadow: none;
7771 }
7772 span#login_widget > .button:hover,
7773 #logout:hover,
7774 span#login_widget > .button:focus,
7775 #logout:focus,
7776 span#login_widget > .button:active,
7777 #logout:active,
7778 span#login_widget > .button.active,
7779 #logout.active,
7780 .open .dropdown-togglespan#login_widget > .button,
7781 .open .dropdown-toggle#logout {
7782 color: #333333;
7783 background-color: #ebebeb;
7784 border-color: #adadad;
7785 }
7786 span#login_widget > .button:active,
7787 #logout:active,
7788 span#login_widget > .button.active,
7789 #logout.active,
7790 .open .dropdown-togglespan#login_widget > .button,
7791 .open .dropdown-toggle#logout {
7792 background-image: none;
7793 }
7794 span#login_widget > .button.disabled,
7795 #logout.disabled,
7796 span#login_widget > .button[disabled],
7797 #logout[disabled],
7798 fieldset[disabled] span#login_widget > .button,
7799 fieldset[disabled] #logout,
7800 span#login_widget > .button.disabled:hover,
7801 #logout.disabled:hover,
7802 span#login_widget > .button[disabled]:hover,
7803 #logout[disabled]:hover,
7804 fieldset[disabled] span#login_widget > .button:hover,
7805 fieldset[disabled] #logout:hover,
7806 span#login_widget > .button.disabled:focus,
7807 #logout.disabled:focus,
7808 span#login_widget > .button[disabled]:focus,
7809 #logout[disabled]:focus,
7810 fieldset[disabled] span#login_widget > .button:focus,
7811 fieldset[disabled] #logout:focus,
7812 span#login_widget > .button.disabled:active,
7813 #logout.disabled:active,
7814 span#login_widget > .button[disabled]:active,
7815 #logout[disabled]:active,
7816 fieldset[disabled] span#login_widget > .button:active,
7817 fieldset[disabled] #logout:active,
7818 span#login_widget > .button.disabled.active,
7819 #logout.disabled.active,
7820 span#login_widget > .button[disabled].active,
7821 #logout[disabled].active,
7822 fieldset[disabled] span#login_widget > .button.active,
7823 fieldset[disabled] #logout.active {
7824 background-color: #ffffff;
7825 border-color: #cccccc;
7826 }
7827 span#login_widget > .button .badge,
7828 #logout .badge {
7829 color: #ffffff;
7830 background-color: #333333;
7831 }
7832 .nav-header {
7833 text-transform: none;
7834 }
7835 #header > span {
7836 margin-top: 10px;
7837 }
7838 .modal_stretch .modal-dialog {
7839 /* Old browsers */
7840 display: -webkit-box;
7841 -webkit-box-orient: vertical;
7842 -webkit-box-align: stretch;
7843 display: -moz-box;
7844 -moz-box-orient: vertical;
7845 -moz-box-align: stretch;
7846 display: box;
7847 box-orient: vertical;
7848 box-align: stretch;
7849 /* Modern browsers */
7850 display: flex;
7851 flex-direction: column;
7852 align-items: stretch;
7853 /* Old browsers */
7854 -webkit-box-flex: 0;
7855 -moz-box-flex: 0;
7856 box-flex: 0;
7857 /* Modern browsers */
7858 flex: none;
7859 min-height: 80%;
7860 }
7861 .modal_stretch .modal-dialog .modal-body {
7862 max-height: none;
7863 flex: 1;
7864 }
7865 @media (min-width: 768px) {
7866 .modal .modal-dialog {
7867 width: 700px;
7868 }
7869 }
7870 /*!
7871 *
7872 * IPython auth
7873 *
7874 */
7875 .center-nav {
7876 display: inline-block;
7877 margin-bottom: -4px;
7878 }
7879 /*!
7880 *
7881 * IPython tree view
7882 *
7883 */
7884 /* We need an invisible input field on top of the sentense*/
7885 /* "Drag file onto the list ..." */
7886 .alternate_upload {
7887 background-color: none;
7888 display: inline;
7889 }
7890 .alternate_upload.form {
7891 padding: 0;
7892 margin: 0;
7893 }
7894 .alternate_upload input.fileinput {
7895 background-color: red;
7896 position: relative;
7897 opacity: 0;
7898 z-index: 2;
7899 width: 295px;
7900 margin-left: 163px;
7901 cursor: pointer;
7902 height: 26px;
7903 }
7904 /**
7905 * Primary styles
7906 *
7907 * Author: IPython Development Team
7908 */
7909 ul#tabs {
7910 margin-bottom: 4px;
7911 }
7912 ul#tabs a {
7913 padding-top: 6px;
7914 padding-bottom: 4px;
7915 }
7916 ul.breadcrumb a:focus,
7917 ul.breadcrumb a:hover {
7918 text-decoration: none;
7919 }
7920 ul.breadcrumb i.icon-home {
7921 font-size: 16px;
7922 margin-right: 4px;
7923 }
7924 ul.breadcrumb span {
7925 color: #5e5e5e;
7926 }
7927 .list_toolbar {
7928 padding: 4px 0 4px 0;
7929 vertical-align: middle;
7930 }
7931 .list_toolbar .tree-buttons {
7932 padding-top: 2px;
7933 }
7934 .list_toolbar [class*="span"] {
7935 min-height: 24px;
7936 }
7937 .list_header {
7938 font-weight: bold;
7939 }
7940 .list_container {
7941 margin-top: 4px;
7942 margin-bottom: 20px;
7943 border: 1px solid #ababab;
7944 border-radius: 4px;
7945 }
7946 .list_container > div {
7947 border-bottom: 1px solid #ababab;
7948 }
7949 .list_container > div:hover .list-item {
7950 background-color: red;
7951 }
7952 .list_container > div:last-child {
7953 border: none;
7954 }
7955 .list_item:hover .list_item {
7956 background-color: #ddd;
7957 }
7958 .list_item a {
7959 text-decoration: none;
7960 }
7961 .action_col {
7962 text-align: right;
7963 }
7964 .list_header > div,
7965 .list_item > div {
7966 padding-top: 4px;
7967 padding-bottom: 4px;
7968 padding-left: 7px;
7969 padding-right: 7px;
7970 line-height: 22px;
7971 }
7972 .item_name {
7973 line-height: 22px;
7974 height: 24px;
7975 }
7976 .item_icon {
7977 font-size: 14px;
7978 color: #5e5e5e;
7979 margin-right: 7px;
7980 }
7981 .item_buttons {
7982 line-height: 1em;
7983 }
7984 .toolbar_info {
7985 height: 24px;
7986 line-height: 24px;
7987 }
7988 input.nbname_input,
7989 input.engine_num_input {
7990 padding-top: 3px;
7991 padding-bottom: 3px;
7992 height: 22px;
7993 line-height: 14px;
7994 margin: 0px;
7995 }
7996 input.engine_num_input {
7997 width: 60px;
7998 }
7999 .highlight_text {
8000 color: blue;
8001 }
8002 #project_name > .breadcrumb {
8003 padding: 0px;
8004 margin-bottom: 0px;
8005 background-color: transparent;
8006 font-weight: bold;
8007 }
8008 .tab-content .row {
8009 margin-left: 0px;
8010 margin-right: 0px;
8011 }
8012 .folder_icon:before {
8013 display: inline-block;
8014 font-family: FontAwesome;
8015 font-style: normal;
8016 font-weight: normal;
8017 line-height: 1;
8018 -webkit-font-smoothing: antialiased;
8019 -moz-osx-font-smoothing: grayscale;
8020 content: "\f114";
8021 }
8022 .folder_icon:before.pull-left {
8023 margin-right: .3em;
8024 }
8025 .folder_icon:before.pull-right {
8026 margin-left: .3em;
8027 }
8028 .notebook_icon:before {
8029 display: inline-block;
8030 font-family: FontAwesome;
8031 font-style: normal;
8032 font-weight: normal;
8033 line-height: 1;
8034 -webkit-font-smoothing: antialiased;
8035 -moz-osx-font-smoothing: grayscale;
8036 content: "\f02d";
8037 }
8038 .notebook_icon:before.pull-left {
8039 margin-right: .3em;
8040 }
8041 .notebook_icon:before.pull-right {
8042 margin-left: .3em;
8043 }
8044 .file_icon:before {
8045 display: inline-block;
8046 font-family: FontAwesome;
8047 font-style: normal;
8048 font-weight: normal;
8049 line-height: 1;
8050 -webkit-font-smoothing: antialiased;
8051 -moz-osx-font-smoothing: grayscale;
8052 content: "\f016";
8053 }
8054 .file_icon:before.pull-left {
8055 margin-right: .3em;
8056 }
8057 .file_icon:before.pull-right {
8058 margin-left: .3em;
8059 }
8060 /*!
8061 *
8062 * IPython notebook
8063 *
8064 */
8065 /* CSS font colors for translated ANSI colors. */
8066 .ansibold {
8067 font-weight: bold;
8068 }
8069 /* use dark versions for foreground, to improve visibility */
8070 .ansiblack {
8071 color: black;
8072 }
8073 .ansired {
8074 color: darkred;
8075 }
8076 .ansigreen {
8077 color: darkgreen;
8078 }
8079 .ansiyellow {
8080 color: brown;
8081 }
8082 .ansiblue {
8083 color: darkblue;
8084 }
8085 .ansipurple {
8086 color: darkviolet;
8087 }
8088 .ansicyan {
8089 color: steelblue;
8090 }
8091 .ansigray {
8092 color: gray;
8093 }
8094 /* and light for background, for the same reason */
8095 .ansibgblack {
8096 background-color: black;
8097 }
8098 .ansibgred {
8099 background-color: red;
8100 }
8101 .ansibggreen {
8102 background-color: green;
8103 }
8104 .ansibgyellow {
8105 background-color: yellow;
8106 }
8107 .ansibgblue {
8108 background-color: blue;
8109 }
8110 .ansibgpurple {
8111 background-color: magenta;
8112 }
8113 .ansibgcyan {
8114 background-color: cyan;
8115 }
8116 .ansibggray {
8117 background-color: gray;
8118 }
8119 div.cell {
8120 border: 1px solid transparent;
8121 /* Old browsers */
8122 display: -webkit-box;
8123 -webkit-box-orient: vertical;
8124 -webkit-box-align: stretch;
8125 display: -moz-box;
8126 -moz-box-orient: vertical;
8127 -moz-box-align: stretch;
8128 display: box;
8129 box-orient: vertical;
8130 box-align: stretch;
8131 /* Modern browsers */
8132 display: flex;
8133 flex-direction: column;
8134 align-items: stretch;
8135 /* Old browsers */
8136 -webkit-box-flex: 0;
8137 -moz-box-flex: 0;
8138 box-flex: 0;
8139 /* Modern browsers */
8140 flex: none;
8141 border-radius: 4px;
8142 box-sizing: border-box;
8143 -moz-box-sizing: border-box;
8144 -webkit-box-sizing: border-box;
8145 border-width: thin;
8146 border-style: solid;
8147 width: 100%;
8148 padding: 5px 5px 5px 0px;
8149 /* This acts as a spacer between cells, that is outside the border */
8150 margin: 0px;
8151 outline: none;
8152 }
8153 div.cell.selected {
8154 border-color: #ababab;
8155 }
8156 div.cell.edit_mode {
8157 border-color: green;
8158 }
8159 div.prompt {
8160 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
8161 min-width: 15ex;
8162 /* This padding is tuned to match the padding on the CodeMirror editor. */
8163 padding: 0.4em;
8164 margin: 0px;
8165 font-family: monospace;
8166 text-align: right;
8167 /* This has to match that of the the CodeMirror class line-height below */
8168 line-height: 1.21429em;
8169 }
8170 @media (max-width: 480px) {
8171 div.prompt {
8172 text-align: left;
8173 }
8174 }
8175 div.inner_cell {
8176 /* Old browsers */
8177 display: -webkit-box;
8178 -webkit-box-orient: vertical;
8179 -webkit-box-align: stretch;
8180 display: -moz-box;
8181 -moz-box-orient: vertical;
8182 -moz-box-align: stretch;
8183 display: box;
8184 box-orient: vertical;
8185 box-align: stretch;
8186 /* Modern browsers */
8187 display: flex;
8188 flex-direction: column;
8189 align-items: stretch;
8190 /* Old browsers */
8191 -webkit-box-flex: 0;
8192 -moz-box-flex: 0;
8193 box-flex: 0;
8194 /* Modern browsers */
8195 flex: none;
8196 /* Old browsers */
8197 -webkit-box-flex: 1;
8198 -moz-box-flex: 1;
8199 box-flex: 1;
8200 /* Modern browsers */
8201 flex: 1;
8202 }
8203 /* input_area and input_prompt must match in top border and margin for alignment */
8204 div.input_area {
8205 border: 1px solid #cfcfcf;
8206 border-radius: 4px;
8207 background: #f7f7f7;
8208 line-height: 1.21429em;
8209 }
8210 /* This is needed so that empty prompt areas can collapse to zero height when there
8211 is no content in the output_subarea and the prompt. The main purpose of this is
8212 to make sure that empty JavaScript output_subareas have no height. */
8213 div.prompt:empty {
8214 padding-top: 0;
8215 padding-bottom: 0;
8216 }
8217 /* any special styling for code cells that are currently running goes here */
8218 div.input {
8219 page-break-inside: avoid;
8220 /* Old browsers */
8221 display: -webkit-box;
8222 -webkit-box-orient: horizontal;
8223 -webkit-box-align: stretch;
8224 display: -moz-box;
8225 -moz-box-orient: horizontal;
8226 -moz-box-align: stretch;
8227 display: box;
8228 box-orient: horizontal;
8229 box-align: stretch;
8230 /* Modern browsers */
8231 display: flex;
8232 flex-direction: row;
8233 align-items: stretch;
8234 /* Old browsers */
8235 -webkit-box-flex: 0;
8236 -moz-box-flex: 0;
8237 box-flex: 0;
8238 /* Modern browsers */
8239 flex: none;
8240 }
8241 @media (max-width: 480px) {
8242 div.input {
8243 /* Old browsers */
8244 display: -webkit-box;
8245 -webkit-box-orient: vertical;
8246 -webkit-box-align: stretch;
8247 display: -moz-box;
8248 -moz-box-orient: vertical;
8249 -moz-box-align: stretch;
8250 display: box;
8251 box-orient: vertical;
8252 box-align: stretch;
8253 /* Modern browsers */
8254 display: flex;
8255 flex-direction: column;
8256 align-items: stretch;
8257 /* Old browsers */
8258 -webkit-box-flex: 0;
8259 -moz-box-flex: 0;
8260 box-flex: 0;
8261 /* Modern browsers */
8262 flex: none;
8263 }
8264 }
8265 /* input_area and input_prompt must match in top border and margin for alignment */
8266 div.input_prompt {
8267 color: #000080;
8268 border-top: 1px solid transparent;
8269 }
8270 div.input_area > div.highlight {
8271 margin: 0.4em;
8272 border: none;
8273 padding: 0px;
8274 background-color: transparent;
8275 }
8276 div.input_area > div.highlight > pre {
8277 margin: 0px;
8278 border: none;
8279 padding: 0px;
8280 background-color: transparent;
8281 }
8282 /* The following gets added to the <head> if it is detected that the user has a
8283 * monospace font with inconsistent normal/bold/italic height. See
8284 * notebookmain.js. Such fonts will have keywords vertically offset with
8285 * respect to the rest of the text. The user should select a better font.
8286 * See: https://github.com/ipython/ipython/issues/1503
8287 *
8288 * .CodeMirror span {
8289 * vertical-align: bottom;
8290 * }
8291 */
8292 .CodeMirror {
8293 line-height: 1.21429em;
8294 /* Changed from 1em to our global default */
8295 height: auto;
8296 /* Changed to auto to autogrow */
8297 background: none;
8298 /* Changed from white to allow our bg to show through */
8299 }
8300 .CodeMirror-scroll {
8301 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
8302 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
8303 overflow-y: hidden;
8304 overflow-x: auto;
8305 }
8306 .CodeMirror-lines {
8307 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
8308 /* we have set a different line-height and want this to scale with that. */
8309 padding: 0.4em;
8310 }
8311 .CodeMirror-linenumber {
8312 padding: 0 8px 0 4px;
8313 }
8314 .CodeMirror-gutters {
8315 border-bottom-left-radius: 4px;
8316 border-top-left-radius: 4px;
8317 }
8318 .CodeMirror pre {
8319 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
8320 /* .CodeMirror-lines */
8321 padding: 0;
8322 border: 0;
8323 border-radius: 0;
8324 }
8325 .CodeMirror-vscrollbar,
8326 .CodeMirror-hscrollbar {
8327 display: none !important;
8328 }
8329 /*
8330
8331 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
8332 Adapted from GitHub theme
8333
8334 */
8335 pre code {
8336 display: block;
8337 padding: 0.5em;
8338 }
8339 .highlight-base,
8340 pre code,
8341 pre .subst,
8342 pre .tag .title,
8343 pre .lisp .title,
8344 pre .clojure .built_in,
8345 pre .nginx .title {
8346 color: black;
8347 }
8348 .highlight-string,
8349 pre .string,
8350 pre .constant,
8351 pre .parent,
8352 pre .tag .value,
8353 pre .rules .value,
8354 pre .rules .value .number,
8355 pre .preprocessor,
8356 pre .ruby .symbol,
8357 pre .ruby .symbol .string,
8358 pre .aggregate,
8359 pre .template_tag,
8360 pre .django .variable,
8361 pre .smalltalk .class,
8362 pre .addition,
8363 pre .flow,
8364 pre .stream,
8365 pre .bash .variable,
8366 pre .apache .tag,
8367 pre .apache .cbracket,
8368 pre .tex .command,
8369 pre .tex .special,
8370 pre .erlang_repl .function_or_atom,
8371 pre .markdown .header {
8372 color: #BA2121;
8373 }
8374 .highlight-comment,
8375 pre .comment,
8376 pre .annotation,
8377 pre .template_comment,
8378 pre .diff .header,
8379 pre .chunk,
8380 pre .markdown .blockquote {
8381 color: #408080;
8382 font-style: italic;
8383 }
8384 .highlight-number,
8385 pre .number,
8386 pre .date,
8387 pre .regexp,
8388 pre .literal,
8389 pre .smalltalk .symbol,
8390 pre .smalltalk .char,
8391 pre .go .constant,
8392 pre .change,
8393 pre .markdown .bullet,
8394 pre .markdown .link_url {
8395 color: #080;
8396 }
8397 pre .label,
8398 pre .javadoc,
8399 pre .ruby .string,
8400 pre .decorator,
8401 pre .filter .argument,
8402 pre .localvars,
8403 pre .array,
8404 pre .attr_selector,
8405 pre .important,
8406 pre .pseudo,
8407 pre .pi,
8408 pre .doctype,
8409 pre .deletion,
8410 pre .envvar,
8411 pre .shebang,
8412 pre .apache .sqbracket,
8413 pre .nginx .built_in,
8414 pre .tex .formula,
8415 pre .erlang_repl .reserved,
8416 pre .prompt,
8417 pre .markdown .link_label,
8418 pre .vhdl .attribute,
8419 pre .clojure .attribute,
8420 pre .coffeescript .property {
8421 color: #8888ff;
8422 }
8423 .highlight-keyword,
8424 pre .keyword,
8425 pre .id,
8426 pre .phpdoc,
8427 pre .aggregate,
8428 pre .css .tag,
8429 pre .javadoctag,
8430 pre .phpdoc,
8431 pre .yardoctag,
8432 pre .smalltalk .class,
8433 pre .winutils,
8434 pre .bash .variable,
8435 pre .apache .tag,
8436 pre .go .typename,
8437 pre .tex .command,
8438 pre .markdown .strong,
8439 pre .request,
8440 pre .status {
8441 color: #008000;
8442 font-weight: bold;
8443 }
8444 .highlight-builtin,
8445 pre .built_in {
8446 color: #008000;
8447 }
8448 pre .markdown .emphasis {
8449 font-style: italic;
8450 }
8451 pre .nginx .built_in {
8452 font-weight: normal;
8453 }
8454 pre .coffeescript .javascript,
8455 pre .javascript .xml,
8456 pre .tex .formula,
8457 pre .xml .javascript,
8458 pre .xml .vbscript,
8459 pre .xml .css,
8460 pre .xml .cdata {
8461 opacity: 0.5;
8462 }
8463 /* apply the same style to codemirror */
8464 .cm-s-ipython span.cm-variable {
8465 color: black;
8466 }
8467 .cm-s-ipython span.cm-keyword {
8468 color: #008000;
8469 font-weight: bold;
8470 }
8471 .cm-s-ipython span.cm-number {
8472 color: #080;
8473 }
8474 .cm-s-ipython span.cm-comment {
8475 color: #408080;
8476 font-style: italic;
8477 }
8478 .cm-s-ipython span.cm-string {
8479 color: #BA2121;
8480 }
8481 .cm-s-ipython span.cm-builtin {
8482 color: #008000;
8483 }
8484 .cm-s-ipython span.cm-error {
8485 color: #f00;
8486 }
8487 .cm-s-ipython span.cm-operator {
8488 color: #AA22FF;
8489 font-weight: bold;
8490 }
8491 .cm-s-ipython span.cm-meta {
8492 color: #AA22FF;
8493 }
8494 .cm-s-ipython span.cm-tab {
8495 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
8496 background-position: right;
8497 background-repeat: no-repeat;
8498 }
8499 div.output_wrapper {
8500 /* this position must be relative to enable descendents to be absolute within it */
8501 position: relative;
8502 /* Old browsers */
8503 display: -webkit-box;
8504 -webkit-box-orient: vertical;
8505 -webkit-box-align: stretch;
8506 display: -moz-box;
8507 -moz-box-orient: vertical;
8508 -moz-box-align: stretch;
8509 display: box;
8510 box-orient: vertical;
8511 box-align: stretch;
8512 /* Modern browsers */
8513 display: flex;
8514 flex-direction: column;
8515 align-items: stretch;
8516 /* Old browsers */
8517 -webkit-box-flex: 0;
8518 -moz-box-flex: 0;
8519 box-flex: 0;
8520 /* Modern browsers */
8521 flex: none;
8522 }
8523 /* class for the output area when it should be height-limited */
8524 div.output_scroll {
8525 /* ideally, this would be max-height, but FF barfs all over that */
8526 height: 24em;
8527 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
8528 width: 100%;
8529 overflow: auto;
8530 border-radius: 4px;
8531 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8532 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
8533 display: block;
8534 }
8535 /* output div while it is collapsed */
8536 div.output_collapsed {
8537 margin: 0px;
8538 padding: 0px;
8539 /* Old browsers */
8540 display: -webkit-box;
8541 -webkit-box-orient: vertical;
8542 -webkit-box-align: stretch;
8543 display: -moz-box;
8544 -moz-box-orient: vertical;
8545 -moz-box-align: stretch;
8546 display: box;
8547 box-orient: vertical;
8548 box-align: stretch;
8549 /* Modern browsers */
8550 display: flex;
8551 flex-direction: column;
8552 align-items: stretch;
8553 /* Old browsers */
8554 -webkit-box-flex: 0;
8555 -moz-box-flex: 0;
8556 box-flex: 0;
8557 /* Modern browsers */
8558 flex: none;
8559 }
8560 div.out_prompt_overlay {
8561 height: 100%;
8562 padding: 0px 0.4em;
8563 position: absolute;
8564 border-radius: 4px;
8565 }
8566 div.out_prompt_overlay:hover {
8567 /* use inner shadow to get border that is computed the same on WebKit/FF */
8568 -webkit-box-shadow: inset 0 0 1px #000000;
8569 box-shadow: inset 0 0 1px #000000;
8570 background: rgba(240, 240, 240, 0.5);
8571 }
8572 div.output_prompt {
8573 color: #8b0000;
8574 }
8575 /* This class is the outer container of all output sections. */
8576 div.output_area {
8577 padding: 0px;
8578 page-break-inside: avoid;
8579 /* Old browsers */
8580 display: -webkit-box;
8581 -webkit-box-orient: horizontal;
8582 -webkit-box-align: stretch;
8583 display: -moz-box;
8584 -moz-box-orient: horizontal;
8585 -moz-box-align: stretch;
8586 display: box;
8587 box-orient: horizontal;
8588 box-align: stretch;
8589 /* Modern browsers */
8590 display: flex;
8591 flex-direction: row;
8592 align-items: stretch;
8593 /* Old browsers */
8594 -webkit-box-flex: 0;
8595 -moz-box-flex: 0;
8596 box-flex: 0;
8597 /* Modern browsers */
8598 flex: none;
8599 }
8600 div.output_area .MathJax_Display {
8601 text-align: left !important;
8602 }
8603 div.output_area .rendered_html table {
8604 margin-left: 0;
8605 margin-right: 0;
8606 }
8607 div.output_area .rendered_html img {
8608 margin-left: 0;
8609 margin-right: 0;
8610 }
8611 /* This is needed to protect the pre formating from global settings such
8612 as that of bootstrap */
8613 .output {
8614 /* Old browsers */
8615 display: -webkit-box;
8616 -webkit-box-orient: vertical;
8617 -webkit-box-align: stretch;
8618 display: -moz-box;
8619 -moz-box-orient: vertical;
8620 -moz-box-align: stretch;
8621 display: box;
8622 box-orient: vertical;
8623 box-align: stretch;
8624 /* Modern browsers */
8625 display: flex;
8626 flex-direction: column;
8627 align-items: stretch;
8628 /* Old browsers */
8629 -webkit-box-flex: 0;
8630 -moz-box-flex: 0;
8631 box-flex: 0;
8632 /* Modern browsers */
8633 flex: none;
8634 }
8635 @media (max-width: 480px) {
8636 div.output_area {
8637 /* Old browsers */
8638 display: -webkit-box;
8639 -webkit-box-orient: vertical;
8640 -webkit-box-align: stretch;
8641 display: -moz-box;
8642 -moz-box-orient: vertical;
8643 -moz-box-align: stretch;
8644 display: box;
8645 box-orient: vertical;
8646 box-align: stretch;
8647 /* Modern browsers */
8648 display: flex;
8649 flex-direction: column;
8650 align-items: stretch;
8651 /* Old browsers */
8652 -webkit-box-flex: 0;
8653 -moz-box-flex: 0;
8654 box-flex: 0;
8655 /* Modern browsers */
8656 flex: none;
8657 }
8658 }
8659 div.output_area pre {
8660 margin: 0;
8661 padding: 0;
8662 border: 0;
8663 vertical-align: baseline;
8664 color: #000000;
8665 background-color: transparent;
8666 border-radius: 0;
8667 }
8668 /* This class is for the output subarea inside the output_area and after
8669 the prompt div. */
8670 div.output_subarea {
8671 padding: 0.4em 0.4em 0em 0.4em;
8672 /* Old browsers */
8673 -webkit-box-flex: 1;
8674 -moz-box-flex: 1;
8675 box-flex: 1;
8676 /* Modern browsers */
8677 flex: 1;
8678 }
8679 /* The rest of the output_* classes are for special styling of the different
8680 output types */
8681 /* all text output has this class: */
8682 div.output_text {
8683 text-align: left;
8684 color: #000000;
8685 /* This has to match that of the the CodeMirror class line-height below */
8686 line-height: 1.21429em;
8687 }
8688 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
8689 div.output_stderr {
8690 background: #fdd;
8691 /* very light red background for stderr */
8692 }
8693 div.output_latex {
8694 text-align: left;
8695 }
8696 /* Empty output_javascript divs should have no height */
8697 div.output_javascript:empty {
8698 padding: 0;
8699 }
8700 .js-error {
8701 color: darkred;
8702 }
8703 /* raw_input styles */
8704 div.raw_input_container {
8705 font-family: monospace;
8706 padding-top: 5px;
8707 }
8708 span.raw_input_prompt {
8709 /* nothing needed here */
8710 }
8711 input.raw_input {
8712 font-family: inherit;
8713 font-size: inherit;
8714 color: inherit;
8715 width: auto;
8716 /* make sure input baseline aligns with prompt */
8717 vertical-align: baseline;
8718 /* padding + margin = 0.5em between prompt and cursor */
8719 padding: 0em 0.25em;
8720 margin: 0em 0.25em;
8721 }
8722 input.raw_input:focus {
8723 box-shadow: none;
8724 }
8725 p.p-space {
8726 margin-bottom: 10px;
8727 }
8728 .rendered_html {
8729 color: #000000;
8730 /* any extras will just be numbers: */
8731 }
8732 .rendered_html em {
8733 font-style: italic;
8734 }
8735 .rendered_html strong {
8736 font-weight: bold;
8737 }
8738 .rendered_html u {
8739 text-decoration: underline;
8740 }
8741 .rendered_html :link {
8742 text-decoration: underline;
8743 }
8744 .rendered_html :visited {
8745 text-decoration: underline;
8746 }
8747 .rendered_html h1 {
8748 font-size: 185.7%;
8749 margin: 1.08em 0 0 0;
8750 font-weight: bold;
8751 line-height: 1.0;
8752 }
8753 .rendered_html h2 {
8754 font-size: 157.1%;
8755 margin: 1.27em 0 0 0;
8756 font-weight: bold;
8757 line-height: 1.0;
8758 }
8759 .rendered_html h3 {
8760 font-size: 128.6%;
8761 margin: 1.55em 0 0 0;
8762 font-weight: bold;
8763 line-height: 1.0;
8764 }
8765 .rendered_html h4 {
8766 font-size: 100%;
8767 margin: 2em 0 0 0;
8768 font-weight: bold;
8769 line-height: 1.0;
8770 }
8771 .rendered_html h5 {
8772 font-size: 100%;
8773 margin: 2em 0 0 0;
8774 font-weight: bold;
8775 line-height: 1.0;
8776 font-style: italic;
8777 }
8778 .rendered_html h6 {
8779 font-size: 100%;
8780 margin: 2em 0 0 0;
8781 font-weight: bold;
8782 line-height: 1.0;
8783 font-style: italic;
8784 }
8785 .rendered_html h1:first-child {
8786 margin-top: 0.538em;
8787 }
8788 .rendered_html h2:first-child {
8789 margin-top: 0.636em;
8790 }
8791 .rendered_html h3:first-child {
8792 margin-top: 0.777em;
8793 }
8794 .rendered_html h4:first-child {
8795 margin-top: 1em;
8796 }
8797 .rendered_html h5:first-child {
8798 margin-top: 1em;
8799 }
8800 .rendered_html h6:first-child {
8801 margin-top: 1em;
8802 }
8803 .rendered_html ul {
8804 list-style: disc;
8805 margin: 0em 2em;
8806 padding-left: 0px;
8807 }
8808 .rendered_html ul ul {
8809 list-style: square;
8810 margin: 0em 2em;
8811 }
8812 .rendered_html ul ul ul {
8813 list-style: circle;
8814 margin: 0em 2em;
8815 }
8816 .rendered_html ol {
8817 list-style: decimal;
8818 margin: 0em 2em;
8819 padding-left: 0px;
8820 }
8821 .rendered_html ol ol {
8822 list-style: upper-alpha;
8823 margin: 0em 2em;
8824 }
8825 .rendered_html ol ol ol {
8826 list-style: lower-alpha;
8827 margin: 0em 2em;
8828 }
8829 .rendered_html ol ol ol ol {
8830 list-style: lower-roman;
8831 margin: 0em 2em;
8832 }
8833 .rendered_html ol ol ol ol ol {
8834 list-style: decimal;
8835 margin: 0em 2em;
8836 }
8837 .rendered_html * + ul {
8838 margin-top: 1em;
8839 }
8840 .rendered_html * + ol {
8841 margin-top: 1em;
8842 }
8843 .rendered_html hr {
8844 color: #000000;
8845 background-color: #000000;
8846 }
8847 .rendered_html pre {
8848 margin: 1em 2em;
8849 }
8850 .rendered_html pre,
8851 .rendered_html code {
8852 border: 0;
8853 background-color: #ffffff;
8854 color: #000000;
8855 font-size: 100%;
8856 padding: 0px;
8857 }
8858 .rendered_html blockquote {
8859 margin: 1em 2em;
8860 }
8861 .rendered_html table {
8862 margin-left: auto;
8863 margin-right: auto;
8864 border: 1px solid #000000;
8865 border-collapse: collapse;
8866 }
8867 .rendered_html tr,
8868 .rendered_html th,
8869 .rendered_html td {
8870 border: 1px solid #000000;
8871 border-collapse: collapse;
8872 margin: 1em 2em;
8873 }
8874 .rendered_html td,
8875 .rendered_html th {
8876 text-align: left;
8877 vertical-align: middle;
8878 padding: 4px;
8879 }
8880 .rendered_html th {
8881 font-weight: bold;
8882 }
8883 .rendered_html * + table {
8884 margin-top: 1em;
8885 }
8886 .rendered_html p {
8887 text-align: justify;
8888 }
8889 .rendered_html * + p {
8890 margin-top: 1em;
8891 }
8892 .rendered_html img {
8893 display: block;
8894 margin-left: auto;
8895 margin-right: auto;
8896 }
8897 .rendered_html * + img {
8898 margin-top: 1em;
8899 }
8900 div.text_cell {
8901 padding: 5px 5px 5px 0px;
8902 /* Old browsers */
8903 display: -webkit-box;
8904 -webkit-box-orient: horizontal;
8905 -webkit-box-align: stretch;
8906 display: -moz-box;
8907 -moz-box-orient: horizontal;
8908 -moz-box-align: stretch;
8909 display: box;
8910 box-orient: horizontal;
8911 box-align: stretch;
8912 /* Modern browsers */
8913 display: flex;
8914 flex-direction: row;
8915 align-items: stretch;
8916 /* Old browsers */
8917 -webkit-box-flex: 0;
8918 -moz-box-flex: 0;
8919 box-flex: 0;
8920 /* Modern browsers */
8921 flex: none;
8922 }
8923 @media (max-width: 480px) {
8924 div.text_cell > div.prompt {
8925 display: none;
8926 }
8927 }
8928 div.text_cell_render {
8929 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
8930 outline: none;
8931 resize: none;
8932 width: inherit;
8933 border-style: none;
8934 padding: 0.5em 0.5em 0.5em 0.4em;
8935 color: #000000;
8936 box-sizing: border-box;
8937 -moz-box-sizing: border-box;
8938 -webkit-box-sizing: border-box;
8939 }
8940 a.anchor-link:link {
8941 text-decoration: none;
8942 padding: 0px 20px;
8943 visibility: hidden;
8944 }
8945 h1:hover .anchor-link,
8946 h2:hover .anchor-link,
8947 h3:hover .anchor-link,
8948 h4:hover .anchor-link,
8949 h5:hover .anchor-link,
8950 h6:hover .anchor-link {
8951 visibility: visible;
8952 }
8953 div.cell.text_cell.rendered {
8954 padding: 0px;
8955 }
8956 .cm-s-heading-1,
8957 .cm-s-heading-2,
8958 .cm-s-heading-3,
8959 .cm-s-heading-4,
8960 .cm-s-heading-5,
8961 .cm-s-heading-6 {
8962 font-weight: bold;
8963 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
8964 }
8965 .cm-s-heading-1 {
8966 font-size: 150%;
8967 }
8968 .cm-s-heading-2 {
8969 font-size: 130%;
8970 }
8971 .cm-s-heading-3 {
8972 font-size: 120%;
8973 }
8974 .cm-s-heading-4 {
8975 font-size: 110%;
8976 }
8977 .cm-s-heading-5 {
8978 font-size: 100%;
8979 font-style: italic;
8980 }
8981 .cm-s-heading-6 {
8982 font-size: 90%;
8983 font-style: italic;
8984 }
8985 .widget-area {
8986 /*
8987 LESS file that styles IPython notebook widgets and the area they sit in.
8988
8989 The widget area typically looks something like this:
8990 +------------------------------------------+
8991 | widget-area |
8992 | +--------+---------------------------+ |
8993 | | prompt | widget-subarea | |
8994 | | | +--------+ +--------+ | |
8995 | | | | widget | | widget | | |
8996 | | | +--------+ +--------+ | |
8997 | +--------+---------------------------+ |
8998 +------------------------------------------+
8999 */
9000 page-break-inside: avoid;
9001 /* Old browsers */
9002 display: -webkit-box;
9003 -webkit-box-orient: horizontal;
9004 -webkit-box-align: stretch;
9005 display: -moz-box;
9006 -moz-box-orient: horizontal;
9007 -moz-box-align: stretch;
9008 display: box;
9009 box-orient: horizontal;
9010 box-align: stretch;
9011 /* Modern browsers */
9012 display: flex;
9013 flex-direction: row;
9014 align-items: stretch;
9015 /* Old browsers */
9016 -webkit-box-flex: 0;
9017 -moz-box-flex: 0;
9018 box-flex: 0;
9019 /* Modern browsers */
9020 flex: none;
9021 }
9022 .widget-area .widget-subarea {
9023 padding: 0.44em 0.4em 0.4em 1px;
9024 margin-left: 6px;
9025 box-sizing: border-box;
9026 -moz-box-sizing: border-box;
9027 -webkit-box-sizing: border-box;
9028 /* Old browsers */
9029 display: -webkit-box;
9030 -webkit-box-orient: vertical;
9031 -webkit-box-align: stretch;
9032 display: -moz-box;
9033 -moz-box-orient: vertical;
9034 -moz-box-align: stretch;
9035 display: box;
9036 box-orient: vertical;
9037 box-align: stretch;
9038 /* Modern browsers */
9039 display: flex;
9040 flex-direction: column;
9041 align-items: stretch;
9042 /* Old browsers */
9043 -webkit-box-flex: 0;
9044 -moz-box-flex: 0;
9045 box-flex: 0;
9046 /* Modern browsers */
9047 flex: none;
9048 /* Old browsers */
9049 -webkit-box-flex: 2;
9050 -moz-box-flex: 2;
9051 box-flex: 2;
9052 /* Modern browsers */
9053 flex: 2;
9054 /* Old browsers */
9055 -webkit-box-align: start;
9056 -moz-box-align: start;
9057 box-align: start;
9058 /* Modern browsers */
9059 align-items: flex-start;
9060 }
9061 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9062 THE WIDGET AREA). */
9063 .widget-hlabel {
9064 /* Horizontal Label */
9065 min-width: 10ex;
9066 padding-right: 8px;
9067 padding-top: 5px;
9068 text-align: right;
9069 vertical-align: text-top;
9070 }
9071 .widget-vlabel {
9072 /* Vertical Label */
9073 padding-bottom: 5px;
9074 text-align: center;
9075 vertical-align: text-bottom;
9076 }
9077 .widget-hreadout {
9078 padding-left: 8px;
9079 padding-top: 5px;
9080 text-align: left;
9081 vertical-align: text-top;
9082 }
9083 .widget-vreadout {
9084 /* Vertical Label */
9085 padding-top: 5px;
9086 text-align: center;
9087 vertical-align: text-top;
9088 }
9089 .slide-track {
9090 /* Slider Track */
9091 border: 1px solid #CCCCCC;
9092 background: #FFFFFF;
9093 border-radius: 4px;
9094 /* Round the corners of the slide track */
9095 }
9096 .widget-hslider {
9097 /* Horizontal jQuery Slider
9098
9099 Both the horizontal and vertical versions of the slider are characterized
9100 by a styled div that contains an invisible jQuery slide div which
9101 contains a visible slider handle div. This is requred so we can control
9102 how the slider is drawn and 'fix' the issue where the slide handle
9103 doesn't stop at the end of the slide.
9104
9105 Both horizontal and vertical sliders have this div nesting:
9106 +------------------------------------------+
9107 | widget-(h/v)slider |
9108 | +--------+---------------------------+ |
9109 | | ui-slider | |
9110 | | +------------------+ | |
9111 | | | ui-slider-handle | | |
9112 | | +------------------+ | |
9113 | +--------+---------------------------+ |
9114 +------------------------------------------+
9115 */
9116 /* Fix the padding of the slide track so the ui-slider is sized
9117 correctly. */
9118 padding-left: 8px;
9119 padding-right: 5px;
9120 overflow: visible;
9121 /* Default size of the slider */
9122 width: 350px;
9123 height: 5px;
9124 max-height: 5px;
9125 margin-top: 13px;
9126 margin-bottom: 10px;
9127 /* Style the slider track */
9128 /* Slider Track */
9129 border: 1px solid #CCCCCC;
9130 background: #FFFFFF;
9131 border-radius: 4px;
9132 /* Round the corners of the slide track */
9133 /* Make the div a flex box (makes FF behave correctly). */
9134 /* Old browsers */
9135 display: -webkit-box;
9136 -webkit-box-orient: horizontal;
9137 -webkit-box-align: stretch;
9138 display: -moz-box;
9139 -moz-box-orient: horizontal;
9140 -moz-box-align: stretch;
9141 display: box;
9142 box-orient: horizontal;
9143 box-align: stretch;
9144 /* Modern browsers */
9145 display: flex;
9146 flex-direction: row;
9147 align-items: stretch;
9148 /* Old browsers */
9149 -webkit-box-flex: 0;
9150 -moz-box-flex: 0;
9151 box-flex: 0;
9152 /* Modern browsers */
9153 flex: none;
9154 }
9155 .widget-hslider .ui-slider {
9156 /* Inner, invisible slide div */
9157 border: 0px !important;
9158 background: none !important;
9159 /* Old browsers */
9160 display: -webkit-box;
9161 -webkit-box-orient: horizontal;
9162 -webkit-box-align: stretch;
9163 display: -moz-box;
9164 -moz-box-orient: horizontal;
9165 -moz-box-align: stretch;
9166 display: box;
9167 box-orient: horizontal;
9168 box-align: stretch;
9169 /* Modern browsers */
9170 display: flex;
9171 flex-direction: row;
9172 align-items: stretch;
9173 /* Old browsers */
9174 -webkit-box-flex: 0;
9175 -moz-box-flex: 0;
9176 box-flex: 0;
9177 /* Modern browsers */
9178 flex: none;
9179 /* Old browsers */
9180 -webkit-box-flex: 1;
9181 -moz-box-flex: 1;
9182 box-flex: 1;
9183 /* Modern browsers */
9184 flex: 1;
9185 }
9186 .widget-hslider .ui-slider .ui-slider-handle {
9187 width: 14px !important;
9188 height: 28px !important;
9189 margin-top: -8px !important;
9190 }
9191 .widget-vslider {
9192 /* Vertical jQuery Slider */
9193 /* Fix the padding of the slide track so the ui-slider is sized
9194 correctly. */
9195 padding-bottom: 8px;
9196 overflow: visible;
9197 /* Default size of the slider */
9198 width: 5px;
9199 max-width: 5px;
9200 height: 250px;
9201 margin-left: 12px;
9202 /* Style the slider track */
9203 /* Slider Track */
9204 border: 1px solid #CCCCCC;
9205 background: #FFFFFF;
9206 border-radius: 4px;
9207 /* Round the corners of the slide track */
9208 /* Make the div a flex box (makes FF behave correctly). */
9209 /* Old browsers */
9210 display: -webkit-box;
9211 -webkit-box-orient: vertical;
9212 -webkit-box-align: stretch;
9213 display: -moz-box;
9214 -moz-box-orient: vertical;
9215 -moz-box-align: stretch;
9216 display: box;
9217 box-orient: vertical;
9218 box-align: stretch;
9219 /* Modern browsers */
9220 display: flex;
9221 flex-direction: column;
9222 align-items: stretch;
9223 /* Old browsers */
9224 -webkit-box-flex: 0;
9225 -moz-box-flex: 0;
9226 box-flex: 0;
9227 /* Modern browsers */
9228 flex: none;
9229 }
9230 .widget-vslider .ui-slider {
9231 /* Inner, invisible slide div */
9232 border: 0px !important;
9233 background: none !important;
9234 margin-left: -4px;
9235 margin-top: 5px;
9236 /* Old browsers */
9237 display: -webkit-box;
9238 -webkit-box-orient: vertical;
9239 -webkit-box-align: stretch;
9240 display: -moz-box;
9241 -moz-box-orient: vertical;
9242 -moz-box-align: stretch;
9243 display: box;
9244 box-orient: vertical;
9245 box-align: stretch;
9246 /* Modern browsers */
9247 display: flex;
9248 flex-direction: column;
9249 align-items: stretch;
9250 /* Old browsers */
9251 -webkit-box-flex: 0;
9252 -moz-box-flex: 0;
9253 box-flex: 0;
9254 /* Modern browsers */
9255 flex: none;
9256 /* Old browsers */
9257 -webkit-box-flex: 1;
9258 -moz-box-flex: 1;
9259 box-flex: 1;
9260 /* Modern browsers */
9261 flex: 1;
9262 }
9263 .widget-vslider .ui-slider .ui-slider-handle {
9264 width: 28px !important;
9265 height: 14px !important;
9266 margin-left: -9px;
9267 }
9268 .widget-text {
9269 /* String Textbox - used for TextBoxView and TextAreaView */
9270 width: 350px;
9271 margin: 0px !important;
9272 }
9273 .widget-listbox {
9274 /* Listbox */
9275 width: 350px;
9276 margin-bottom: 0px;
9277 }
9278 .widget-numeric-text {
9279 /* Single Line Textbox - used for IntTextView and FloatTextView */
9280 width: 150px;
9281 margin: 0px !important;
9282 }
9283 .widget-progress {
9284 /* Progress Bar */
9285 margin-top: 6px;
9286 width: 350px;
9287 }
9288 .widget-progress .progress-bar {
9289 /* Disable progress bar animation */
9290 -webkit-transition: none;
9291 -moz-transition: none;
9292 -ms-transition: none;
9293 -o-transition: none;
9294 transition: none;
9295 }
9296 .widget-combo-btn {
9297 /* ComboBox Main Button */
9298 min-width: 125px;
9299 }
9300 .widget_item .dropdown-menu li a {
9301 color: inherit;
9302 }
9303 .widget-box {
9304 /* The following section sets the style for the invisible div that
9305 hold widgets and their accompanying labels.
9306
9307 Looks like this:
9308 +-----------------------------+
9309 | widget-box (or similar) |
9310 | +-------+---------------+ |
9311 | | Label | Actual Widget | |
9312 | +-------+---------------+ |
9313 +-----------------------------+
9314 */
9315 margin: 5px;
9316 /* Old browsers */
9317 -webkit-box-pack: start;
9318 -moz-box-pack: start;
9319 box-pack: start;
9320 /* Modern browsers */
9321 justify-content: flex-start;
9322 /* Box */
9323 box-sizing: border-box;
9324 -moz-box-sizing: border-box;
9325 -webkit-box-sizing: border-box;
9326 /* Old browsers */
9327 -webkit-box-align: start;
9328 -moz-box-align: start;
9329 box-align: start;
9330 /* Modern browsers */
9331 align-items: flex-start;
9332 }
9333 .widget-hbox {
9334 /* Horizontal widgets */
9335 /* The following section sets the style for the invisible div that
9336 hold widgets and their accompanying labels.
9337
9338 Looks like this:
9339 +-----------------------------+
9340 | widget-box (or similar) |
9341 | +-------+---------------+ |
9342 | | Label | Actual Widget | |
9343 | +-------+---------------+ |
9344 +-----------------------------+
9345 */
9346 margin: 5px;
9347 /* Old browsers */
9348 -webkit-box-pack: start;
9349 -moz-box-pack: start;
9350 box-pack: start;
9351 /* Modern browsers */
9352 justify-content: flex-start;
9353 /* Box */
9354 /* Old browsers */
9355 /* Modern browsers */
9356 /* Box */
9357 box-sizing: border-box;
9358 -moz-box-sizing: border-box;
9359 -webkit-box-sizing: border-box;
9360 /* Old browsers */
9361 -webkit-box-align: start;
9362 -moz-box-align: start;
9363 box-align: start;
9364 /* Modern browsers */
9365 align-items: flex-start;
9366 /* Old browsers */
9367 display: -webkit-box;
9368 -webkit-box-orient: horizontal;
9369 -webkit-box-align: stretch;
9370 display: -moz-box;
9371 -moz-box-orient: horizontal;
9372 -moz-box-align: stretch;
9373 display: box;
9374 box-orient: horizontal;
9375 box-align: stretch;
9376 /* Modern browsers */
9377 display: flex;
9378 flex-direction: row;
9379 align-items: stretch;
9380 /* Old browsers */
9381 -webkit-box-flex: 0;
9382 -moz-box-flex: 0;
9383 box-flex: 0;
9384 /* Modern browsers */
9385 flex: none;
9386 }
9387 .widget-hbox-single {
9388 /* Single line horizontal widgets */
9389 /* Horizontal widgets */
9390 /* The following section sets the style for the invisible div that
9391 hold widgets and their accompanying labels.
9392
9393 Looks like this:
9394 +-----------------------------+
9395 | widget-box (or similar) |
9396 | +-------+---------------+ |
9397 | | Label | Actual Widget | |
9398 | +-------+---------------+ |
9399 +-----------------------------+
9400 */
9401 margin: 5px;
9402 /* Old browsers */
9403 -webkit-box-pack: start;
9404 -moz-box-pack: start;
9405 box-pack: start;
9406 /* Modern browsers */
9407 justify-content: flex-start;
9408 /* Box */
9409 /* Old browsers */
9410 /* Modern browsers */
9411 /* Box */
9412 box-sizing: border-box;
9413 -moz-box-sizing: border-box;
9414 -webkit-box-sizing: border-box;
9415 /* Old browsers */
9416 -webkit-box-align: start;
9417 -moz-box-align: start;
9418 box-align: start;
9419 /* Modern browsers */
9420 align-items: flex-start;
9421 /* Old browsers */
9422 display: -webkit-box;
9423 -webkit-box-orient: horizontal;
9424 -webkit-box-align: stretch;
9425 display: -moz-box;
9426 -moz-box-orient: horizontal;
9427 -moz-box-align: stretch;
9428 display: box;
9429 box-orient: horizontal;
9430 box-align: stretch;
9431 /* Modern browsers */
9432 display: flex;
9433 flex-direction: row;
9434 align-items: stretch;
9435 /* Old browsers */
9436 -webkit-box-flex: 0;
9437 -moz-box-flex: 0;
9438 box-flex: 0;
9439 /* Modern browsers */
9440 flex: none;
9441 }
9442 .widget-hbox-single input[type="checkbox"] {
9443 margin-top: 9px;
9444 }
9445 .widget-vbox {
9446 /* Vertical widgets */
9447 /* The following section sets the style for the invisible div that
9448 hold widgets and their accompanying labels.
9449
9450 Looks like this:
9451 +-----------------------------+
9452 | widget-box (or similar) |
9453 | +-------+---------------+ |
9454 | | Label | Actual Widget | |
9455 | +-------+---------------+ |
9456 +-----------------------------+
9457 */
9458 margin: 5px;
9459 /* Old browsers */
9460 -webkit-box-pack: start;
9461 -moz-box-pack: start;
9462 box-pack: start;
9463 /* Modern browsers */
9464 justify-content: flex-start;
9465 /* Box */
9466 /* Old browsers */
9467 /* Modern browsers */
9468 /* Box */
9469 box-sizing: border-box;
9470 -moz-box-sizing: border-box;
9471 -webkit-box-sizing: border-box;
9472 /* Old browsers */
9473 -webkit-box-align: start;
9474 -moz-box-align: start;
9475 box-align: start;
9476 /* Modern browsers */
9477 align-items: flex-start;
9478 /* Old browsers */
9479 display: -webkit-box;
9480 -webkit-box-orient: vertical;
9481 -webkit-box-align: stretch;
9482 display: -moz-box;
9483 -moz-box-orient: vertical;
9484 -moz-box-align: stretch;
9485 display: box;
9486 box-orient: vertical;
9487 box-align: stretch;
9488 /* Modern browsers */
9489 display: flex;
9490 flex-direction: column;
9491 align-items: stretch;
9492 /* Old browsers */
9493 -webkit-box-flex: 0;
9494 -moz-box-flex: 0;
9495 box-flex: 0;
9496 /* Modern browsers */
9497 flex: none;
9498 }
9499 .widget-modal {
9500 /* Box - ModalView */
9501 overflow: hidden;
9502 position: absolute !important;
9503 top: 0px;
9504 left: 0px;
9505 margin-left: 0px !important;
9506 }
9507 .widget-modal-body {
9508 /* Box - ModalView Body */
9509 max-height: none !important;
9510 }
9511 .widget-box {
9512 /* Box */
9513 box-sizing: border-box;
9514 -moz-box-sizing: border-box;
9515 -webkit-box-sizing: border-box;
9516 /* Old browsers */
9517 -webkit-box-align: start;
9518 -moz-box-align: start;
9519 box-align: start;
9520 /* Modern browsers */
9521 align-items: flex-start;
9522 }
9523 .widget-radio-box {
9524 /* Contains RadioButtonsWidget */
9525 /* Old browsers */
9526 display: -webkit-box;
9527 -webkit-box-orient: vertical;
9528 -webkit-box-align: stretch;
9529 display: -moz-box;
9530 -moz-box-orient: vertical;
9531 -moz-box-align: stretch;
9532 display: box;
9533 box-orient: vertical;
9534 box-align: stretch;
9535 /* Modern browsers */
9536 display: flex;
9537 flex-direction: column;
9538 align-items: stretch;
9539 /* Old browsers */
9540 -webkit-box-flex: 0;
9541 -moz-box-flex: 0;
9542 box-flex: 0;
9543 /* Modern browsers */
9544 flex: none;
9545 box-sizing: border-box;
9546 -moz-box-sizing: border-box;
9547 -webkit-box-sizing: border-box;
9548 padding-top: 4px;
9549 }
9550 .widget-radio-box label {
9551 margin-top: 0px;
9552 }
9553 .docked-widget-modal {
9554 /* Horizontal Label */
9555 overflow: hidden;
9556 position: relative !important;
9557 top: 0px !important;
9558 left: 0px !important;
9559 margin-left: 0px !important;
9560 }
9561 /*!
9562 *
9563 * IPython notebook webapp
9564 *
9565 */
9566 body {
9567 background-color: #ffffff;
9568 }
9569 body.notebook_app {
9570 overflow: hidden;
9571 }
9572 @media (max-width: 767px) {
9573 body.notebook_app {
9574 padding-left: 0px;
9575 padding-right: 0px;
9576 }
9577 }
9578 #ipython-main-app {
9579 box-sizing: border-box;
9580 -moz-box-sizing: border-box;
9581 -webkit-box-sizing: border-box;
9582 }
9583 span#notebook_name {
9584 height: 1em;
9585 line-height: 1em;
9586 padding: 3px;
9587 border: none;
9588 font-size: 146.5%;
9589 }
9590 div#notebook_panel {
9591 margin: 0px 0px 0px 0px;
9592 padding: 0px;
9593 -webkit-box-shadow: inset 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9594 box-shadow: inset 1px 4px 9px -6px rgba(0, 0, 0, 0.25);
9595 box-sizing: border-box;
9596 -moz-box-sizing: border-box;
9597 -webkit-box-sizing: border-box;
9598 }
9599 div#notebook {
9600 font-size: 14px;
9601 line-height: 20px;
9602 overflow-y: scroll;
9603 overflow-x: auto;
9604 width: 100%;
9605 /* This spaces the cell away from the edge of the notebook area */
9606 padding: 1em 0 1em 0;
9607 margin: 0px;
9608 border-top: 1px solid #e7e7e7;
9609 outline: none;
9610 box-sizing: border-box;
9611 -moz-box-sizing: border-box;
9612 -webkit-box-sizing: border-box;
9613 }
9614 div.ui-widget-content {
9615 border: 1px solid #ababab;
9616 outline: none;
9617 }
9618 pre.dialog {
9619 background-color: #f7f7f7;
9620 border: 1px solid #ddd;
9621 border-radius: 4px;
9622 padding: 0.4em;
9623 padding-left: 2em;
9624 }
9625 p.dialog {
9626 padding: 0.2em;
9627 }
9628 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
9629 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
9630 */
9631 pre,
9632 code,
9633 kbd,
9634 samp {
9635 white-space: pre-wrap;
9636 }
9637 #fonttest {
9638 font-family: monospace;
9639 }
9640 p {
9641 margin-bottom: 0;
9642 }
9643 .end_space {
9644 height: 200px;
9645 }
9646 /* CSS for the cell toolbar */
9647 .celltoolbar {
9648 border: thin solid #CFCFCF;
9649 border-bottom: none;
9650 background: #EEE;
9651 border-radius: 3px 3px 0px 0px;
9652 width: 100%;
9653 -webkit-box-pack: end;
9654 height: 29px;
9655 padding-right: 4px;
9656 /* Old browsers */
9657 display: -webkit-box;
9658 -webkit-box-orient: horizontal;
9659 -webkit-box-align: stretch;
9660 display: -moz-box;
9661 -moz-box-orient: horizontal;
9662 -moz-box-align: stretch;
9663 display: box;
9664 box-orient: horizontal;
9665 box-align: stretch;
9666 /* Modern browsers */
9667 display: flex;
9668 flex-direction: row;
9669 align-items: stretch;
9670 /* Old browsers */
9671 -webkit-box-flex: 0;
9672 -moz-box-flex: 0;
9673 box-flex: 0;
9674 /* Modern browsers */
9675 flex: none;
9676 /* Old browsers */
9677 -webkit-box-direction: reverse;
9678 -moz-box-direction: reverse;
9679 box-direction: reverse;
9680 /* Modern browsers */
9681 flex-direction: row-reverse;
9682 }
9683 .ctb_hideshow {
9684 display: none;
9685 vertical-align: bottom;
9686 }
9687 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
9688 Cell toolbars are only shown when the ctb_global_show class is also set.
9689 */
9690 .ctb_global_show .ctb_show.ctb_hideshow {
9691 display: block;
9692 }
9693 .ctb_global_show .ctb_show + .input_area,
9694 .ctb_global_show .ctb_show + div.text_cell_input {
9695 border-top-right-radius: 0px;
9696 border-top-left-radius: 0px;
9697 }
9698 .celltoolbar {
9699 font-size: 87%;
9700 padding-top: 3px;
9701 }
9702 .celltoolbar select {
9703 font-size: 87%;
9704 height: 22px;
9705 }
9706 .celltoolbar label {
9707 margin-left: 5px;
9708 margin-right: 5px;
9709 }
9710 .completions {
9711 position: absolute;
9712 z-index: 10;
9713 overflow: hidden;
9714 border: 1px solid #ababab;
9715 border-radius: 4px;
9716 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
9717 box-shadow: 0px 6px 10px -1px #adadad;
9718 }
9719 .completions select {
9720 background: white;
9721 outline: none;
9722 border: none;
9723 padding: 0px;
9724 margin: 0px;
9725 overflow: auto;
9726 font-family: monospace;
9727 font-size: 110%;
9728 color: #000000;
9729 width: auto;
9730 }
9731 .completions select option.context {
9732 color: #3071a9;
9733 }
9734 #kernel_selector_widget {
9735 margin-right: 1em;
9736 float: right;
9737 }
9738 #kernel_selector_widget > button {
9739 display: inline-block;
9740 margin-bottom: 0;
9741 font-weight: normal;
9742 text-align: center;
9743 vertical-align: middle;
9744 cursor: pointer;
9745 background-image: none;
9746 border: 1px solid transparent;
9747 white-space: nowrap;
9748 padding: 6px 12px;
9749 font-size: 13px;
9750 line-height: 1.42857143;
9751 border-radius: 4px;
9752 -webkit-user-select: none;
9753 -moz-user-select: none;
9754 -ms-user-select: none;
9755 user-select: none;
9756 color: #333333;
9757 background-color: #ffffff;
9758 border-color: #cccccc;
9759 padding: 5px 10px;
9760 font-size: 12px;
9761 line-height: 1.5;
9762 border-radius: 3px;
9763 }
9764 #kernel_selector_widget > button:focus,
9765 #kernel_selector_widget > button:active:focus,
9766 #kernel_selector_widget > button.active:focus {
9767 outline: thin dotted;
9768 outline: 5px auto -webkit-focus-ring-color;
9769 outline-offset: -2px;
9770 }
9771 #kernel_selector_widget > button:hover,
9772 #kernel_selector_widget > button:focus {
9773 color: #333333;
9774 text-decoration: none;
9775 }
9776 #kernel_selector_widget > button:active,
9777 #kernel_selector_widget > button.active {
9778 outline: 0;
9779 background-image: none;
9780 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9781 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
9782 }
9783 #kernel_selector_widget > button.disabled,
9784 #kernel_selector_widget > button[disabled],
9785 fieldset[disabled] #kernel_selector_widget > button {
9786 cursor: not-allowed;
9787 pointer-events: none;
9788 opacity: 0.65;
9789 filter: alpha(opacity=65);
9790 -webkit-box-shadow: none;
9791 box-shadow: none;
9792 }
9793 #kernel_selector_widget > button:hover,
9794 #kernel_selector_widget > button:focus,
9795 #kernel_selector_widget > button:active,
9796 #kernel_selector_widget > button.active,
9797 .open .dropdown-toggle#kernel_selector_widget > button {
9798 color: #333333;
9799 background-color: #ebebeb;
9800 border-color: #adadad;
9801 }
9802 #kernel_selector_widget > button:active,
9803 #kernel_selector_widget > button.active,
9804 .open .dropdown-toggle#kernel_selector_widget > button {
9805 background-image: none;
9806 }
9807 #kernel_selector_widget > button.disabled,
9808 #kernel_selector_widget > button[disabled],
9809 fieldset[disabled] #kernel_selector_widget > button,
9810 #kernel_selector_widget > button.disabled:hover,
9811 #kernel_selector_widget > button[disabled]:hover,
9812 fieldset[disabled] #kernel_selector_widget > button:hover,
9813 #kernel_selector_widget > button.disabled:focus,
9814 #kernel_selector_widget > button[disabled]:focus,
9815 fieldset[disabled] #kernel_selector_widget > button:focus,
9816 #kernel_selector_widget > button.disabled:active,
9817 #kernel_selector_widget > button[disabled]:active,
9818 fieldset[disabled] #kernel_selector_widget > button:active,
9819 #kernel_selector_widget > button.disabled.active,
9820 #kernel_selector_widget > button[disabled].active,
9821 fieldset[disabled] #kernel_selector_widget > button.active {
9822 background-color: #ffffff;
9823 border-color: #cccccc;
9824 }
9825 #kernel_selector_widget > button .badge {
9826 color: #ffffff;
9827 background-color: #333333;
9828 }
9829 #kernel_selector_widget > button > span.caret {
9830 margin-top: 0px;
9831 }
9832 #menubar {
9833 margin-top: 0px;
9834 margin-bottom: -19px;
9835 position: relative;
9836 box-sizing: border-box;
9837 -moz-box-sizing: border-box;
9838 -webkit-box-sizing: border-box;
9839 }
9840 #menubar .navbar {
9841 border-top: 1px;
9842 border-radius: 0px 0px 4px 4px;
9843 }
9844 #menubar li.dropdown {
9845 line-height: 12px;
9846 }
9847 #menubar li.dropdown a {
9848 padding-top: 6px;
9849 padding-bottom: 5px;
9850 }
9851 #menubar ul.navbar-right {
9852 padding-top: 2px;
9853 }
9854 .nav-wrapper {
9855 border-bottom: 1px solid #e7e7e7;
9856 }
9857 i.menu-icon {
9858 padding-top: 4px;
9859 }
9860 ul#help_menu li a {
9861 overflow: hidden;
9862 padding-right: 2.2em;
9863 }
9864 ul#help_menu li a i {
9865 margin-right: -1.2em;
9866 }
9867 #menus {
9868 min-height: 30px;
9869 }
9870 .dropdown-submenu {
9871 position: relative;
9872 }
9873 .dropdown-submenu > .dropdown-menu {
9874 top: 0;
9875 left: 100%;
9876 margin-top: -6px;
9877 margin-left: -1px;
9878 -webkit-border-radius: 0 6px 6px 6px;
9879 -moz-border-radius: 0 6px 6px 6px;
9880 border-radius: 0 6px 6px 6px;
9881 }
9882 .dropdown-submenu:hover > .dropdown-menu {
9883 display: block;
9884 }
9885 .dropdown-submenu > a:after {
9886 display: block;
9887 content: " ";
9888 float: right;
9889 width: 0;
9890 height: 0;
9891 border-color: transparent;
9892 border-style: solid;
9893 border-width: 5px 0 5px 5px;
9894 border-left-color: #cccccc;
9895 margin-top: 5px;
9896 margin-right: -10px;
9897 }
9898 .dropdown-submenu:hover > a:after {
9899 border-left-color: #ffffff;
9900 }
9901 .dropdown-submenu.pull-left {
9902 float: none;
9903 }
9904 .dropdown-submenu.pull-left > .dropdown-menu {
9905 left: -100%;
9906 margin-left: 10px;
9907 -webkit-border-radius: 6px 0 6px 6px;
9908 -moz-border-radius: 6px 0 6px 6px;
9909 border-radius: 6px 0 6px 6px;
9910 }
9911 #notification_area {
9912 float: right !important;
9913 float: right;
9914 z-index: 10;
9915 }
9916 .indicator_area {
9917 color: #777777;
9918 padding: 4px 3px;
9919 margin: 0px;
9920 width: 11px;
9921 z-index: 10;
9922 text-align: center;
9923 }
9924 #kernel_indicator {
9925 float: right !important;
9926 float: right;
9927 color: #777777;
9928 padding: 4px 3px;
9929 margin: 0px;
9930 width: 11px;
9931 z-index: 10;
9932 text-align: center;
9933 margin-right: 12px;
9934 }
9935 #modal_indicator {
9936 float: right !important;
9937 float: right;
9938 color: #777777;
9939 padding: 4px 3px;
9940 margin: 0px;
9941 width: 11px;
9942 z-index: 10;
9943 text-align: center;
9944 margin-right: 5px;
9945 }
9946 .edit_mode_icon:before {
9947 display: inline-block;
9948 font-family: FontAwesome;
9949 font-style: normal;
9950 font-weight: normal;
9951 line-height: 1;
9952 -webkit-font-smoothing: antialiased;
9953 -moz-osx-font-smoothing: grayscale;
9954 content: "\f040";
9955 }
9956 .edit_mode_icon:before.pull-left {
9957 margin-right: .3em;
9958 }
9959 .edit_mode_icon:before.pull-right {
9960 margin-left: .3em;
9961 }
9962 .command_mode_icon:before {
9963 display: inline-block;
9964 font-family: FontAwesome;
9965 font-style: normal;
9966 font-weight: normal;
9967 line-height: 1;
9968 -webkit-font-smoothing: antialiased;
9969 -moz-osx-font-smoothing: grayscale;
9970 content: ' ';
9971 }
9972 .command_mode_icon:before.pull-left {
9973 margin-right: .3em;
9974 }
9975 .command_mode_icon:before.pull-right {
9976 margin-left: .3em;
9977 }
9978 .kernel_idle_icon:before {
9979 display: inline-block;
9980 font-family: FontAwesome;
9981 font-style: normal;
9982 font-weight: normal;
9983 line-height: 1;
9984 -webkit-font-smoothing: antialiased;
9985 -moz-osx-font-smoothing: grayscale;
9986 content: "\f10c";
9987 }
9988 .kernel_idle_icon:before.pull-left {
9989 margin-right: .3em;
9990 }
9991 .kernel_idle_icon:before.pull-right {
9992 margin-left: .3em;
9993 }
9994 .kernel_busy_icon:before {
9995 display: inline-block;
9996 font-family: FontAwesome;
9997 font-style: normal;
9998 font-weight: normal;
9999 line-height: 1;
10000 -webkit-font-smoothing: antialiased;
10001 -moz-osx-font-smoothing: grayscale;
10002 content: "\f111";
10003 }
10004 .kernel_busy_icon:before.pull-left {
10005 margin-right: .3em;
10006 }
10007 .kernel_busy_icon:before.pull-right {
10008 margin-left: .3em;
10009 }
10010 .kernel_dead_icon:before {
10011 display: inline-block;
10012 font-family: FontAwesome;
10013 font-style: normal;
10014 font-weight: normal;
10015 line-height: 1;
10016 -webkit-font-smoothing: antialiased;
10017 -moz-osx-font-smoothing: grayscale;
10018 content: "\f1e2";
10019 }
10020 .kernel_dead_icon:before.pull-left {
10021 margin-right: .3em;
10022 }
10023 .kernel_dead_icon:before.pull-right {
10024 margin-left: .3em;
10025 }
10026 .kernel_disconnected_icon:before {
10027 display: inline-block;
10028 font-family: FontAwesome;
10029 font-style: normal;
10030 font-weight: normal;
10031 line-height: 1;
10032 -webkit-font-smoothing: antialiased;
10033 -moz-osx-font-smoothing: grayscale;
10034 content: "\f127";
10035 }
10036 .kernel_disconnected_icon:before.pull-left {
10037 margin-right: .3em;
10038 }
10039 .kernel_disconnected_icon:before.pull-right {
10040 margin-left: .3em;
10041 }
10042 .notification_widget {
10043 color: #777777;
10044 padding: 1px 12px;
10045 margin: 2px 4px;
10046 z-index: 10;
10047 background: rgba(240, 240, 240, 0.5);
10048 float: right !important;
10049 float: right;
10050 box-sizing: border-box;
10051 -moz-box-sizing: border-box;
10052 -webkit-box-sizing: border-box;
10053 display: inline-block;
10054 margin-bottom: 0;
10055 font-weight: normal;
10056 text-align: center;
10057 vertical-align: middle;
10058 cursor: pointer;
10059 background-image: none;
10060 border: 1px solid transparent;
10061 white-space: nowrap;
10062 padding: 6px 12px;
10063 font-size: 13px;
10064 line-height: 1.42857143;
10065 border-radius: 4px;
10066 -webkit-user-select: none;
10067 -moz-user-select: none;
10068 -ms-user-select: none;
10069 user-select: none;
10070 color: #333333;
10071 background-color: #ffffff;
10072 border-color: #cccccc;
10073 padding: 1px 5px;
10074 font-size: 12px;
10075 line-height: 1.5;
10076 border-radius: 3px;
10077 }
10078 .notification_widget:focus,
10079 .notification_widget:active:focus,
10080 .notification_widget.active:focus {
10081 outline: thin dotted;
10082 outline: 5px auto -webkit-focus-ring-color;
10083 outline-offset: -2px;
10084 }
10085 .notification_widget:hover,
10086 .notification_widget:focus {
10087 color: #333333;
10088 text-decoration: none;
10089 }
10090 .notification_widget:active,
10091 .notification_widget.active {
10092 outline: 0;
10093 background-image: none;
10094 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10095 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
10096 }
10097 .notification_widget.disabled,
10098 .notification_widget[disabled],
10099 fieldset[disabled] .notification_widget {
10100 cursor: not-allowed;
10101 pointer-events: none;
10102 opacity: 0.65;
10103 filter: alpha(opacity=65);
10104 -webkit-box-shadow: none;
10105 box-shadow: none;
10106 }
10107 .notification_widget:hover,
10108 .notification_widget:focus,
10109 .notification_widget:active,
10110 .notification_widget.active,
10111 .open .dropdown-toggle.notification_widget {
10112 color: #333333;
10113 background-color: #ebebeb;
10114 border-color: #adadad;
10115 }
10116 .notification_widget:active,
10117 .notification_widget.active,
10118 .open .dropdown-toggle.notification_widget {
10119 background-image: none;
10120 }
10121 .notification_widget.disabled,
10122 .notification_widget[disabled],
10123 fieldset[disabled] .notification_widget,
10124 .notification_widget.disabled:hover,
10125 .notification_widget[disabled]:hover,
10126 fieldset[disabled] .notification_widget:hover,
10127 .notification_widget.disabled:focus,
10128 .notification_widget[disabled]:focus,
10129 fieldset[disabled] .notification_widget:focus,
10130 .notification_widget.disabled:active,
10131 .notification_widget[disabled]:active,
10132 fieldset[disabled] .notification_widget:active,
10133 .notification_widget.disabled.active,
10134 .notification_widget[disabled].active,
10135 fieldset[disabled] .notification_widget.active {
10136 background-color: #ffffff;
10137 border-color: #cccccc;
10138 }
10139 .notification_widget .badge {
10140 color: #ffffff;
10141 background-color: #333333;
10142 }
10143 .notification_widget.span {
10144 padding-right: 2px;
10145 }
10146 .notification_widget.warning {
10147 color: #ffffff;
10148 background-color: #f0ad4e;
10149 border-color: #eea236;
10150 }
10151 .notification_widget.warning:hover,
10152 .notification_widget.warning:focus,
10153 .notification_widget.warning:active,
10154 .notification_widget.warning.active,
10155 .open .dropdown-toggle.notification_widget.warning {
10156 color: #ffffff;
10157 background-color: #ed9c28;
10158 border-color: #d58512;
10159 }
10160 .notification_widget.warning:active,
10161 .notification_widget.warning.active,
10162 .open .dropdown-toggle.notification_widget.warning {
10163 background-image: none;
10164 }
10165 .notification_widget.warning.disabled,
10166 .notification_widget.warning[disabled],
10167 fieldset[disabled] .notification_widget.warning,
10168 .notification_widget.warning.disabled:hover,
10169 .notification_widget.warning[disabled]:hover,
10170 fieldset[disabled] .notification_widget.warning:hover,
10171 .notification_widget.warning.disabled:focus,
10172 .notification_widget.warning[disabled]:focus,
10173 fieldset[disabled] .notification_widget.warning:focus,
10174 .notification_widget.warning.disabled:active,
10175 .notification_widget.warning[disabled]:active,
10176 fieldset[disabled] .notification_widget.warning:active,
10177 .notification_widget.warning.disabled.active,
10178 .notification_widget.warning[disabled].active,
10179 fieldset[disabled] .notification_widget.warning.active {
10180 background-color: #f0ad4e;
10181 border-color: #eea236;
10182 }
10183 .notification_widget.warning .badge {
10184 color: #f0ad4e;
10185 background-color: #ffffff;
10186 }
10187 .notification_widget.success {
10188 color: #ffffff;
10189 background-color: #5cb85c;
10190 border-color: #4cae4c;
10191 }
10192 .notification_widget.success:hover,
10193 .notification_widget.success:focus,
10194 .notification_widget.success:active,
10195 .notification_widget.success.active,
10196 .open .dropdown-toggle.notification_widget.success {
10197 color: #ffffff;
10198 background-color: #47a447;
10199 border-color: #398439;
10200 }
10201 .notification_widget.success:active,
10202 .notification_widget.success.active,
10203 .open .dropdown-toggle.notification_widget.success {
10204 background-image: none;
10205 }
10206 .notification_widget.success.disabled,
10207 .notification_widget.success[disabled],
10208 fieldset[disabled] .notification_widget.success,
10209 .notification_widget.success.disabled:hover,
10210 .notification_widget.success[disabled]:hover,
10211 fieldset[disabled] .notification_widget.success:hover,
10212 .notification_widget.success.disabled:focus,
10213 .notification_widget.success[disabled]:focus,
10214 fieldset[disabled] .notification_widget.success:focus,
10215 .notification_widget.success.disabled:active,
10216 .notification_widget.success[disabled]:active,
10217 fieldset[disabled] .notification_widget.success:active,
10218 .notification_widget.success.disabled.active,
10219 .notification_widget.success[disabled].active,
10220 fieldset[disabled] .notification_widget.success.active {
10221 background-color: #5cb85c;
10222 border-color: #4cae4c;
10223 }
10224 .notification_widget.success .badge {
10225 color: #5cb85c;
10226 background-color: #ffffff;
10227 }
10228 .notification_widget.info {
10229 color: #ffffff;
10230 background-color: #5bc0de;
10231 border-color: #46b8da;
10232 }
10233 .notification_widget.info:hover,
10234 .notification_widget.info:focus,
10235 .notification_widget.info:active,
10236 .notification_widget.info.active,
10237 .open .dropdown-toggle.notification_widget.info {
10238 color: #ffffff;
10239 background-color: #39b3d7;
10240 border-color: #269abc;
10241 }
10242 .notification_widget.info:active,
10243 .notification_widget.info.active,
10244 .open .dropdown-toggle.notification_widget.info {
10245 background-image: none;
10246 }
10247 .notification_widget.info.disabled,
10248 .notification_widget.info[disabled],
10249 fieldset[disabled] .notification_widget.info,
10250 .notification_widget.info.disabled:hover,
10251 .notification_widget.info[disabled]:hover,
10252 fieldset[disabled] .notification_widget.info:hover,
10253 .notification_widget.info.disabled:focus,
10254 .notification_widget.info[disabled]:focus,
10255 fieldset[disabled] .notification_widget.info:focus,
10256 .notification_widget.info.disabled:active,
10257 .notification_widget.info[disabled]:active,
10258 fieldset[disabled] .notification_widget.info:active,
10259 .notification_widget.info.disabled.active,
10260 .notification_widget.info[disabled].active,
10261 fieldset[disabled] .notification_widget.info.active {
10262 background-color: #5bc0de;
10263 border-color: #46b8da;
10264 }
10265 .notification_widget.info .badge {
10266 color: #5bc0de;
10267 background-color: #ffffff;
10268 }
10269 .notification_widget.danger {
10270 color: #ffffff;
10271 background-color: #d9534f;
10272 border-color: #d43f3a;
10273 }
10274 .notification_widget.danger:hover,
10275 .notification_widget.danger:focus,
10276 .notification_widget.danger:active,
10277 .notification_widget.danger.active,
10278 .open .dropdown-toggle.notification_widget.danger {
10279 color: #ffffff;
10280 background-color: #d2322d;
10281 border-color: #ac2925;
10282 }
10283 .notification_widget.danger:active,
10284 .notification_widget.danger.active,
10285 .open .dropdown-toggle.notification_widget.danger {
10286 background-image: none;
10287 }
10288 .notification_widget.danger.disabled,
10289 .notification_widget.danger[disabled],
10290 fieldset[disabled] .notification_widget.danger,
10291 .notification_widget.danger.disabled:hover,
10292 .notification_widget.danger[disabled]:hover,
10293 fieldset[disabled] .notification_widget.danger:hover,
10294 .notification_widget.danger.disabled:focus,
10295 .notification_widget.danger[disabled]:focus,
10296 fieldset[disabled] .notification_widget.danger:focus,
10297 .notification_widget.danger.disabled:active,
10298 .notification_widget.danger[disabled]:active,
10299 fieldset[disabled] .notification_widget.danger:active,
10300 .notification_widget.danger.disabled.active,
10301 .notification_widget.danger[disabled].active,
10302 fieldset[disabled] .notification_widget.danger.active {
10303 background-color: #d9534f;
10304 border-color: #d43f3a;
10305 }
10306 .notification_widget.danger .badge {
10307 color: #d9534f;
10308 background-color: #ffffff;
10309 }
10310 div#pager_splitter {
10311 height: 8px;
10312 box-sizing: border-box;
10313 -moz-box-sizing: border-box;
10314 -webkit-box-sizing: border-box;
10315 }
10316 #pager-container {
10317 position: relative;
10318 padding: 15px 0px;
10319 box-sizing: border-box;
10320 -moz-box-sizing: border-box;
10321 -webkit-box-sizing: border-box;
10322 }
10323 div#pager {
10324 font-size: 14px;
10325 line-height: 20px;
10326 overflow: auto;
10327 display: none;
10328 box-sizing: border-box;
10329 -moz-box-sizing: border-box;
10330 -webkit-box-sizing: border-box;
10331 }
10332 div#pager pre {
10333 line-height: 1.21429em;
10334 color: #000000;
10335 background-color: #f7f7f7;
10336 padding: 0.4em;
10337 }
10338 .quickhelp {
10339 /* Old browsers */
10340 display: -webkit-box;
10341 -webkit-box-orient: horizontal;
10342 -webkit-box-align: stretch;
10343 display: -moz-box;
10344 -moz-box-orient: horizontal;
10345 -moz-box-align: stretch;
10346 display: box;
10347 box-orient: horizontal;
10348 box-align: stretch;
10349 /* Modern browsers */
10350 display: flex;
10351 flex-direction: row;
10352 align-items: stretch;
10353 /* Old browsers */
10354 -webkit-box-flex: 0;
10355 -moz-box-flex: 0;
10356 box-flex: 0;
10357 /* Modern browsers */
10358 flex: none;
10359 }
10360 .shortcut_key {
10361 display: inline-block;
10362 width: 20ex;
10363 text-align: right;
10364 font-family: monospace;
10365 }
10366 .shortcut_descr {
10367 display: inline-block;
10368 /* Old browsers */
10369 -webkit-box-flex: 1;
10370 -moz-box-flex: 1;
10371 box-flex: 1;
10372 /* Modern browsers */
10373 flex: 1;
10374 }
10375 span#save_widget {
10376 padding: 0px 5px;
10377 margin-top: 12px;
10378 }
10379 span#checkpoint_status,
10380 span#autosave_status {
10381 font-size: small;
10382 }
10383 @media (max-width: 767px) {
10384 span#save_widget {
10385 font-size: small;
10386 }
10387 span#checkpoint_status,
10388 span#autosave_status {
10389 font-size: x-small;
10390 }
10391 }
10392 @media (max-width: 767px) {
10393 span#checkpoint_status,
10394 span#autosave_status {
10395 display: none;
10396 }
10397 }
10398 @media (min-width: 768px) and (max-width: 979px) {
10399 span#checkpoint_status {
10400 display: none;
10401 }
10402 span#autosave_status {
10403 font-size: x-small;
10404 }
10405 }
10406 .toolbar {
10407 padding: 0px;
10408 margin-left: -5px;
10409 margin-top: -5px;
10410 box-sizing: border-box;
10411 -moz-box-sizing: border-box;
10412 -webkit-box-sizing: border-box;
10413 }
10414 .toolbar select,
10415 .toolbar label {
10416 width: auto;
10417 vertical-align: middle;
10418 margin-right: 2px;
10419 margin-bottom: 0px;
10420 display: inline;
10421 font-size: 92%;
10422 margin-left: 0.3em;
10423 margin-right: 0.3em;
10424 padding: 0px;
10425 padding-top: 3px;
10426 }
10427 .toolbar .btn {
10428 padding: 2px 8px;
10429 }
10430 .toolbar .btn-group {
10431 margin-top: 0px;
10432 margin-left: 5px;
10433 }
10434 #maintoolbar {
10435 margin-bottom: -3px;
10436 margin-top: -8px;
10437 border: 0px;
10438 min-height: 27px;
10439 margin-left: 32px;
10440 padding-top: 6px;
10441 padding-bottom: 8px;
10442 }
10443 #maintoolbar .navbar-text {
10444 float: none;
10445 vertical-align: middle;
10446 text-align: right;
10447 margin-left: 5px;
10448 margin-right: 0px;
10449 margin-top: 0px;
10450 }
10451 #maintoolbar .toolbar {
10452 margin-top: 0px;
10453 }
10454 .select-xs {
10455 height: 24px;
10456 }
10457 /**
10458 * Primary styles
10459 *
10460 * Author: IPython Development Team
10461 */
10462 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
10463 * of chance of beeing generated from the ../less/[samename].less file, you can
10464 * try to get back the less file by reverting somme commit in history
10465 **/
10466 /*
10467 * We'll try to get something pretty, so we
10468 * have some strange css to have the scroll bar on
10469 * the left with fix button on the top right of the tooltip
10470 */
10471 @-moz-keyframes fadeOut {
10472 from {
10473 opacity: 1;
10474 }
10475 to {
10476 opacity: 0;
10477 }
10478 }
10479 @-webkit-keyframes fadeOut {
10480 from {
10481 opacity: 1;
10482 }
10483 to {
10484 opacity: 0;
10485 }
10486 }
10487 @-moz-keyframes fadeIn {
10488 from {
10489 opacity: 0;
10490 }
10491 to {
10492 opacity: 1;
10493 }
10494 }
10495 @-webkit-keyframes fadeIn {
10496 from {
10497 opacity: 0;
10498 }
10499 to {
10500 opacity: 1;
10501 }
10502 }
10503 /*properties of tooltip after "expand"*/
10504 .bigtooltip {
10505 overflow: auto;
10506 height: 200px;
10507 -webkit-transition-property: height;
10508 -webkit-transition-duration: 500ms;
10509 -moz-transition-property: height;
10510 -moz-transition-duration: 500ms;
10511 transition-property: height;
10512 transition-duration: 500ms;
10513 }
10514 /*properties of tooltip before "expand"*/
10515 .smalltooltip {
10516 -webkit-transition-property: height;
10517 -webkit-transition-duration: 500ms;
10518 -moz-transition-property: height;
10519 -moz-transition-duration: 500ms;
10520 transition-property: height;
10521 transition-duration: 500ms;
10522 text-overflow: ellipsis;
10523 overflow: hidden;
10524 height: 80px;
10525 }
10526 .tooltipbuttons {
10527 position: absolute;
10528 padding-right: 15px;
10529 top: 0px;
10530 right: 0px;
10531 }
10532 .tooltiptext {
10533 /*avoid the button to overlap on some docstring*/
10534 padding-right: 30px;
10535 }
10536 .ipython_tooltip {
10537 max-width: 700px;
10538 /*fade-in animation when inserted*/
10539 -webkit-animation: fadeOut 400ms;
10540 -moz-animation: fadeOut 400ms;
10541 animation: fadeOut 400ms;
10542 -webkit-animation: fadeIn 400ms;
10543 -moz-animation: fadeIn 400ms;
10544 animation: fadeIn 400ms;
10545 vertical-align: middle;
10546 background-color: #f7f7f7;
10547 overflow: visible;
10548 border: #ababab 1px solid;
10549 outline: none;
10550 padding: 3px;
10551 margin: 0px;
10552 padding-left: 7px;
10553 font-family: monospace;
10554 min-height: 50px;
10555 -moz-box-shadow: 0px 6px 10px -1px #adadad;
10556 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10557 box-shadow: 0px 6px 10px -1px #adadad;
10558 border-radius: 4px;
10559 position: absolute;
10560 z-index: 1000;
10561 }
10562 .ipython_tooltip a {
10563 float: right;
10564 }
10565 .ipython_tooltip .tooltiptext pre {
10566 border: 0;
10567 border-radius: 0;
10568 font-size: 100%;
10569 background-color: #f7f7f7;
10570 }
10571 .pretooltiparrow {
10572 left: 0px;
10573 margin: 0px;
10574 top: -16px;
10575 width: 40px;
10576 height: 16px;
10577 overflow: hidden;
10578 position: absolute;
10579 }
10580 .pretooltiparrow:before {
10581 background-color: #f7f7f7;
10582 border: 1px #ababab solid;
10583 z-index: 11;
10584 content: "";
10585 position: absolute;
10586 left: 15px;
10587 top: 10px;
10588 width: 25px;
10589 height: 25px;
10590 -webkit-transform: rotate(45deg);
10591 -moz-transform: rotate(45deg);
10592 -ms-transform: rotate(45deg);
10593 -o-transform: rotate(45deg);
10594 }
10595 /*# sourceMappingURL=../style/style.min.css.map */
10596 </style>
10597 <style type="text/css">
10598 .highlight .hll { background-color: #ffffcc }
10599 .highlight { background: #f8f8f8; }
10600 .highlight .c { color: #408080; font-style: italic } /* Comment */
10601 .highlight .err { border: 1px solid #FF0000 } /* Error */
10602 .highlight .k { color: #008000; font-weight: bold } /* Keyword */
10603 .highlight .o { color: #666666 } /* Operator */
10604 .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
10605 .highlight .cp { color: #BC7A00 } /* Comment.Preproc */
10606 .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
10607 .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
10608 .highlight .gd { color: #A00000 } /* Generic.Deleted */
10609 .highlight .ge { font-style: italic } /* Generic.Emph */
10610 .highlight .gr { color: #FF0000 } /* Generic.Error */
10611 .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
10612 .highlight .gi { color: #00A000 } /* Generic.Inserted */
10613 .highlight .go { color: #888888 } /* Generic.Output */
10614 .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
10615 .highlight .gs { font-weight: bold } /* Generic.Strong */
10616 .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
10617 .highlight .gt { color: #0044DD } /* Generic.Traceback */
10618 .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
10619 .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
10620 .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
10621 .highlight .kp { color: #008000 } /* Keyword.Pseudo */
10622 .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
10623 .highlight .kt { color: #B00040 } /* Keyword.Type */
10624 .highlight .m { color: #666666 } /* Literal.Number */
10625 .highlight .s { color: #BA2121 } /* Literal.String */
10626 .highlight .na { color: #7D9029 } /* Name.Attribute */
10627 .highlight .nb { color: #008000 } /* Name.Builtin */
10628 .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
10629 .highlight .no { color: #880000 } /* Name.Constant */
10630 .highlight .nd { color: #AA22FF } /* Name.Decorator */
10631 .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
10632 .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
10633 .highlight .nf { color: #0000FF } /* Name.Function */
10634 .highlight .nl { color: #A0A000 } /* Name.Label */
10635 .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
10636 .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
10637 .highlight .nv { color: #19177C } /* Name.Variable */
10638 .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
10639 .highlight .w { color: #bbbbbb } /* Text.Whitespace */
10640 .highlight .mf { color: #666666 } /* Literal.Number.Float */
10641 .highlight .mh { color: #666666 } /* Literal.Number.Hex */
10642 .highlight .mi { color: #666666 } /* Literal.Number.Integer */
10643 .highlight .mo { color: #666666 } /* Literal.Number.Oct */
10644 .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
10645 .highlight .sc { color: #BA2121 } /* Literal.String.Char */
10646 .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
10647 .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
10648 .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
10649 .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
10650 .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
10651 .highlight .sx { color: #008000 } /* Literal.String.Other */
10652 .highlight .sr { color: #BB6688 } /* Literal.String.Regex */
10653 .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
10654 .highlight .ss { color: #19177C } /* Literal.String.Symbol */
10655 .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
10656 .highlight .vc { color: #19177C } /* Name.Variable.Class */
10657 .highlight .vg { color: #19177C } /* Name.Variable.Global */
10658 .highlight .vi { color: #19177C } /* Name.Variable.Instance */
10659 .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
10660 </style>
10661
10662
10663 <style type="text/css">
10664 /* Overrides of notebook CSS for static HTML export */
10665 body {
10666 overflow: visible;
10667 padding: 8px;
10668 }
10669
10670 div#notebook {
10671 overflow: visible;
10672 border-top: none;
10673 }
10674
10675 @media print {
10676 div.cell {
10677 display: block;
10678 page-break-inside: avoid;
10679 }
10680 div.output_wrapper {
10681 display: block;
10682 page-break-inside: avoid;
10683 }
10684 div.output {
10685 display: block;
10686 page-break-inside: avoid;
10687 }
10688 }
10689 </style>
10690
10691 <!-- Custom stylesheet, it must be in the same directory as the html file -->
10692 <link rel="stylesheet" href="custom.css">
10693
10694 <!-- Loading mathjax macro -->
10695 <!-- Load mathjax -->
10696 <script src="https://c328740.ssl.cf1.rackcdn.com/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
10697 <!-- MathJax configuration -->
10698 <script type="text/x-mathjax-config">
10699 MathJax.Hub.Config({
10700 tex2jax: {
10701 inlineMath: [ ['$','$'], ["\\(","\\)"] ],
10702 displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
10703 processEscapes: true,
10704 processEnvironments: true
10705 },
10706 // Center justify equations in code and markdown cells. Elsewhere
10707 // we use CSS to left justify single line equations in code cells.
10708 displayAlign: 'center',
10709 "HTML-CSS": {
10710 styles: {'.MathJax_Display': {"margin": 0}},
10711 linebreaks: { automatic: true }
10712 }
10713 });
10714 </script>
10715 <!-- End of mathjax configuration -->
10716
10717 </head>
10718 <body>
10719 <div tabindex="-1" id="notebook" class="border-box-sizing">
10720 <div class="container" id="notebook-container">
10721
10722 <div class="cell border-box-sizing code_cell rendered">
10723 <div class="input">
10724 <div class="prompt input_prompt">
10725 In&nbsp;[2]:
10726 </div>
10727 <div class="inner_cell">
10728 <div class="input_area">
10729 <div class=" highlight hl-ipython"><pre><span class="c"># Widget related imports</span>
10730 <span class="kn">from</span> <span class="nn">IPython.html</span> <span class="kn">import</span> <span class="n">widgets</span>
10731 <span class="kn">from</span> <span class="nn">IPython.display</span> <span class="kn">import</span> <span class="n">display</span><span class="p">,</span> <span class="n">clear_output</span><span class="p">,</span> <span class="n">Javascript</span>
10732 <span class="kn">from</span> <span class="nn">IPython.utils.traitlets</span> <span class="kn">import</span> <span class="n">Unicode</span>
10733
10734 <span class="c"># nbconvert related imports</span>
10735 <span class="kn">from</span> <span class="nn">IPython.nbconvert</span> <span class="kn">import</span> <span class="n">get_export_names</span><span class="p">,</span> <span class="n">export_by_name</span>
10736 <span class="kn">from</span> <span class="nn">IPython.nbconvert.writers</span> <span class="kn">import</span> <span class="n">FilesWriter</span>
10737 <span class="kn">from</span> <span class="nn">IPython.nbformat</span> <span class="kn">import</span> <span class="n">current</span>
10738 <span class="kn">from</span> <span class="nn">IPython.nbconvert.utils.exceptions</span> <span class="kn">import</span> <span class="n">ConversionException</span>
10739 </pre></div>
10740
10741 </div>
10742 </div>
10743 </div>
10744
10745 </div>
10746 <div class="cell border-box-sizing text_cell rendered">
10747 <div class="prompt input_prompt">
10748 </div>
10749 <div class="inner_cell">
10750 <div class="text_cell_render border-box-sizing rendered_html">
10751 <p>Create a text Widget without displaying it. The widget will be used to store the notebook's name which is otherwise only available in the front-end.</p>
10752
10753 </div>
10754 </div>
10755 </div>
10756 <div class="cell border-box-sizing code_cell rendered">
10757 <div class="input">
10758 <div class="prompt input_prompt">
10759 In&nbsp;[3]:
10760 </div>
10761 <div class="inner_cell">
10762 <div class="input_area">
10763 <div class=" highlight hl-ipython"><pre><span class="n">notebook_name</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">TextWidget</span><span class="p">()</span>
10764 </pre></div>
10765
10766 </div>
10767 </div>
10768 </div>
10769
10770 <div class="output_wrapper">
10771 <div class="output">
10772
10773
10774 <div class="output_area"><div class="prompt"></div>
10775 <div class="output_subarea output_stream output_stderr output_text">
10776 <pre>WARNING: &quot;TextWidget&quot; is deprecated, please use &quot;Text&quot; instead.
10777 </pre>
10778 </div>
10779 </div>
10780
10781 </div>
10782 </div>
10783
10784 </div>
10785 <div class="cell border-box-sizing text_cell rendered">
10786 <div class="prompt input_prompt">
10787 </div>
10788 <div class="inner_cell">
10789 <div class="text_cell_render border-box-sizing rendered_html">
10790 <p>Get the current notebook's name by pushing JavaScript to the browser that sets the notebook name in a string widget.</p>
10791
10792 </div>
10793 </div>
10794 </div>
10795 <div class="cell border-box-sizing code_cell rendered">
10796 <div class="input">
10797 <div class="prompt input_prompt">
10798 In&nbsp;[3]:
10799 </div>
10800 <div class="inner_cell">
10801 <div class="input_area">
10802 <div class=" highlight hl-ipython"><pre><span class="n">js</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;var model = IPython.notebook.kernel.widget_manager.get_model(&#39;{model_id}&#39;);</span>
10803 <span class="s">model.set(&#39;value&#39;, IPython.notebook.notebook_name);</span>
10804 <span class="s">model.save();&quot;&quot;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="n">notebook_name</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span>
10805 <span class="n">display</span><span class="p">(</span><span class="n">Javascript</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">js</span><span class="p">))</span>
10806 </pre></div>
10807
10808 </div>
10809 </div>
10810 </div>
10811
10812 <div class="output_wrapper">
10813 <div class="output">
10814
10815
10816 <div class="output_area"><div class="prompt"></div>
10817
10818
10819 <div class="output_subarea output_javascript ">
10820 <script type="text/javascript">
10821 var model = IPython.notebook.kernel.widget_manager.get_model('8c6583524eb3422c99491730a3e1ce6c');
10822 model.set('value', IPython.notebook.notebook_name);
10823 model.save();
10824 </script>
10825 </div>
10826
10827 </div>
10828
10829 </div>
10830 </div>
10831
10832 </div>
10833 <div class="cell border-box-sizing code_cell rendered">
10834 <div class="input">
10835 <div class="prompt input_prompt">
10836 In&nbsp;[4]:
10837 </div>
10838 <div class="inner_cell">
10839 <div class="input_area">
10840 <div class=" highlight hl-ipython"><pre><span class="n">filename</span> <span class="o">=</span> <span class="n">notebook_name</span><span class="o">.</span><span class="n">value</span>
10841 <span class="n">filename</span>
10842 </pre></div>
10843
10844 </div>
10845 </div>
10846 </div>
10847
10848 <div class="output_wrapper">
10849 <div class="output">
10850
10851
10852 <div class="output_area"><div class="prompt output_prompt">
10853 Out[4]:</div>
10854
10855
10856 <div class="output_text output_subarea output_pyout">
10857 <pre>u&apos;Export As (nbconvert).ipynb&apos;</pre>
10858 </div>
10859
10860 </div>
10861
10862 </div>
10863 </div>
10864
10865 </div>
10866 <div class="cell border-box-sizing text_cell rendered">
10867 <div class="prompt input_prompt">
10868 </div>
10869 <div class="inner_cell">
10870 <div class="text_cell_render border-box-sizing rendered_html">
10871 <p>Create the widget that will allow the user to Export the current notebook.</p>
10872
10873 </div>
10874 </div>
10875 </div>
10876 <div class="cell border-box-sizing code_cell rendered">
10877 <div class="input">
10878 <div class="prompt input_prompt">
10879 In&nbsp;[5]:
10880 </div>
10881 <div class="inner_cell">
10882 <div class="input_area">
10883 <div class=" highlight hl-ipython"><pre><span class="n">exporter_names</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">DropdownWidget</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="n">get_export_names</span><span class="p">(),</span> <span class="n">value</span><span class="o">=</span><span class="s">&#39;html&#39;</span><span class="p">)</span>
10884 <span class="n">export_button</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">ButtonWidget</span><span class="p">(</span><span class="n">description</span><span class="o">=</span><span class="s">&quot;Export&quot;</span><span class="p">)</span>
10885 <span class="n">download_link</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">HTMLWidget</span><span class="p">(</span><span class="n">visible</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
10886 </pre></div>
10887
10888 </div>
10889 </div>
10890 </div>
10891
10892 </div>
10893 <div class="cell border-box-sizing text_cell rendered">
10894 <div class="prompt input_prompt">
10895 </div>
10896 <div class="inner_cell">
10897 <div class="text_cell_render border-box-sizing rendered_html">
10898 <p>Export the notebook when the export button is clicked.</p>
10899
10900 </div>
10901 </div>
10902 </div>
10903 <div class="cell border-box-sizing code_cell rendered">
10904 <div class="input">
10905 <div class="prompt input_prompt">
10906 In&nbsp;[6]:
10907 </div>
10908 <div class="inner_cell">
10909 <div class="input_area">
10910 <div class=" highlight hl-ipython"><pre><span class="n">file_writer</span> <span class="o">=</span> <span class="n">FilesWriter</span><span class="p">()</span>
10911
10912 <span class="k">def</span> <span class="nf">export</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">nb</span><span class="p">):</span>
10913
10914 <span class="c"># Get a unique key for the notebook and set it in the resources object.</span>
10915 <span class="n">notebook_name</span> <span class="o">=</span> <span class="n">name</span><span class="p">[:</span><span class="n">name</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">&#39;.&#39;</span><span class="p">)]</span>
10916 <span class="n">resources</span> <span class="o">=</span> <span class="p">{}</span>
10917 <span class="n">resources</span><span class="p">[</span><span class="s">&#39;unique_key&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">notebook_name</span>
10918 <span class="n">resources</span><span class="p">[</span><span class="s">&#39;output_files_dir&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">_files&#39;</span> <span class="o">%</span> <span class="n">notebook_name</span>
10919
10920 <span class="c"># Try to export</span>
10921 <span class="k">try</span><span class="p">:</span>
10922 <span class="n">output</span><span class="p">,</span> <span class="n">resources</span> <span class="o">=</span> <span class="n">export_by_name</span><span class="p">(</span><span class="n">exporter_names</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">nb</span><span class="p">)</span>
10923 <span class="k">except</span> <span class="n">ConversionException</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
10924 <span class="n">download_link</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s">&quot;&lt;br&gt;Could not export notebook!&quot;</span>
10925 <span class="k">else</span><span class="p">:</span>
10926 <span class="n">write_results</span> <span class="o">=</span> <span class="n">file_writer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="n">resources</span><span class="p">,</span> <span class="n">notebook_name</span><span class="o">=</span><span class="n">notebook_name</span><span class="p">)</span>
10927
10928 <span class="n">download_link</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="s">&quot;&lt;br&gt;Results: &lt;a href=&#39;files/{filename}&#39;&gt;&lt;i&gt;</span><span class="se">\&quot;</span><span class="s">{filename}</span><span class="se">\&quot;</span><span class="s">&lt;/i&gt;&lt;/a&gt;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="n">write_results</span><span class="p">)</span>
10929 <span class="n">download_link</span><span class="o">.</span><span class="n">visible</span> <span class="o">=</span> <span class="bp">True</span>
10930
10931 <span class="k">def</span> <span class="nf">handle_export</span><span class="p">(</span><span class="n">widget</span><span class="p">):</span>
10932 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
10933 <span class="n">export</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">current</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="s">&#39;json&#39;</span><span class="p">))</span>
10934 <span class="n">export_button</span><span class="o">.</span><span class="n">on_click</span><span class="p">(</span><span class="n">handle_export</span><span class="p">)</span>
10935 </pre></div>
10936
10937 </div>
10938 </div>
10939 </div>
10940
10941 </div>
10942 <div class="cell border-box-sizing text_cell rendered">
10943 <div class="prompt input_prompt">
10944 </div>
10945 <div class="inner_cell">
10946 <div class="text_cell_render border-box-sizing rendered_html">
10947 <p>Display the controls.</p>
10948
10949 </div>
10950 </div>
10951 </div>
10952 <div class="cell border-box-sizing code_cell rendered">
10953 <div class="input">
10954 <div class="prompt input_prompt">
10955 In&nbsp;[7]:
10956 </div>
10957 <div class="inner_cell">
10958 <div class="input_area">
10959 <div class=" highlight hl-ipython"><pre><span class="n">display</span><span class="p">(</span><span class="n">exporter_names</span><span class="p">,</span> <span class="n">export_button</span><span class="p">,</span> <span class="n">download_link</span><span class="p">)</span>
10960 </pre></div>
10961
10962 </div>
10963 </div>
10964 </div>
10965
10966 </div>
10967 </div>
10968 </div>
10969 </body>
10970 </html>
@@ -1277,32 +1277,6 b' div.cell.text_cell.rendered {'
1277 }
1277 }
1278 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
1278 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
1279 THE WIDGET AREA). */
1279 THE WIDGET AREA). */
1280 .widget-hlabel {
1281 /* Horizontal Label */
1282 min-width: 10ex;
1283 padding-right: 8px;
1284 padding-top: 5px;
1285 text-align: right;
1286 vertical-align: text-top;
1287 }
1288 .widget-vlabel {
1289 /* Vertical Label */
1290 padding-bottom: 5px;
1291 text-align: center;
1292 vertical-align: text-bottom;
1293 }
1294 .widget-hreadout {
1295 padding-left: 8px;
1296 padding-top: 5px;
1297 text-align: left;
1298 vertical-align: text-top;
1299 }
1300 .widget-vreadout {
1301 /* Vertical Label */
1302 padding-top: 5px;
1303 text-align: center;
1304 vertical-align: text-top;
1305 }
1306 .slide-track {
1280 .slide-track {
1307 /* Slider Track */
1281 /* Slider Track */
1308 border: 1px solid #CCCCCC;
1282 border: 1px solid #CCCCCC;
@@ -1522,69 +1496,11 b' div.cell.text_cell.rendered {'
1522 /* ComboBox Main Button */
1496 /* ComboBox Main Button */
1523 min-width: 125px;
1497 min-width: 125px;
1524 }
1498 }
1525 .widget-box {
1499 .widget_item .dropdown-menu li a {
1526 /* The following section sets the style for the invisible div that
1500 color: inherit;
1527 hold widgets and their accompanying labels.
1528
1529 Looks like this:
1530 +-----------------------------+
1531 | widget-box (or similar) |
1532 | +-------+---------------+ |
1533 | | Label | Actual Widget | |
1534 | +-------+---------------+ |
1535 +-----------------------------+
1536 */
1537 margin: 5px;
1538 /* Old browsers */
1539 -webkit-box-pack: start;
1540 -moz-box-pack: start;
1541 box-pack: start;
1542 /* Modern browsers */
1543 justify-content: flex-start;
1544 /* Box */
1545 box-sizing: border-box;
1546 -moz-box-sizing: border-box;
1547 -webkit-box-sizing: border-box;
1548 /* Old browsers */
1549 -webkit-box-align: start;
1550 -moz-box-align: start;
1551 box-align: start;
1552 /* Modern browsers */
1553 align-items: flex-start;
1554 }
1501 }
1555 .widget-hbox {
1502 .widget-hbox {
1556 /* Horizontal widgets */
1503 /* Horizontal widgets */
1557 /* The following section sets the style for the invisible div that
1558 hold widgets and their accompanying labels.
1559
1560 Looks like this:
1561 +-----------------------------+
1562 | widget-box (or similar) |
1563 | +-------+---------------+ |
1564 | | Label | Actual Widget | |
1565 | +-------+---------------+ |
1566 +-----------------------------+
1567 */
1568 margin: 5px;
1569 /* Old browsers */
1570 -webkit-box-pack: start;
1571 -moz-box-pack: start;
1572 box-pack: start;
1573 /* Modern browsers */
1574 justify-content: flex-start;
1575 /* Box */
1576 /* Old browsers */
1577 /* Modern browsers */
1578 /* Box */
1579 box-sizing: border-box;
1580 -moz-box-sizing: border-box;
1581 -webkit-box-sizing: border-box;
1582 /* Old browsers */
1583 -webkit-box-align: start;
1584 -moz-box-align: start;
1585 box-align: start;
1586 /* Modern browsers */
1587 align-items: flex-start;
1588 /* Old browsers */
1504 /* Old browsers */
1589 display: -webkit-box;
1505 display: -webkit-box;
1590 -webkit-box-orient: horizontal;
1506 -webkit-box-orient: horizontal;
@@ -1605,99 +1521,27 b' div.cell.text_cell.rendered {'
1605 box-flex: 0;
1521 box-flex: 0;
1606 /* Modern browsers */
1522 /* Modern browsers */
1607 flex: none;
1523 flex: none;
1608 }
1609 .widget-hbox-single {
1610 /* Single line horizontal widgets */
1611 /* Horizontal widgets */
1612 /* The following section sets the style for the invisible div that
1613 hold widgets and their accompanying labels.
1614
1615 Looks like this:
1616 +-----------------------------+
1617 | widget-box (or similar) |
1618 | +-------+---------------+ |
1619 | | Label | Actual Widget | |
1620 | +-------+---------------+ |
1621 +-----------------------------+
1622 */
1623 margin: 5px;
1524 margin: 5px;
1624 /* Old browsers */
1625 -webkit-box-pack: start;
1626 -moz-box-pack: start;
1627 box-pack: start;
1628 /* Modern browsers */
1629 justify-content: flex-start;
1630 /* Box */
1631 /* Old browsers */
1632 /* Modern browsers */
1633 /* Box */
1634 box-sizing: border-box;
1635 -moz-box-sizing: border-box;
1636 -webkit-box-sizing: border-box;
1637 /* Old browsers */
1638 -webkit-box-align: start;
1639 -moz-box-align: start;
1640 box-align: start;
1641 /* Modern browsers */
1642 align-items: flex-start;
1643 /* Old browsers */
1644 display: -webkit-box;
1645 -webkit-box-orient: horizontal;
1646 -webkit-box-align: stretch;
1647 display: -moz-box;
1648 -moz-box-orient: horizontal;
1649 -moz-box-align: stretch;
1650 display: box;
1651 box-orient: horizontal;
1652 box-align: stretch;
1653 /* Modern browsers */
1654 display: flex;
1655 flex-direction: row;
1656 align-items: stretch;
1657 /* Old browsers */
1658 -webkit-box-flex: 0;
1659 -moz-box-flex: 0;
1660 box-flex: 0;
1661 /* Modern browsers */
1662 flex: none;
1663 height: 30px;
1664 }
1525 }
1665 .widget-hbox-single input[type="checkbox"] {
1526 .widget-hbox input[type="checkbox"] {
1666 margin-top: 9px;
1527 margin-top: 9px;
1667 }
1528 }
1529 .widget-hbox .widget-label {
1530 /* Horizontal Label */
1531 min-width: 10ex;
1532 padding-right: 8px;
1533 padding-top: 5px;
1534 text-align: right;
1535 vertical-align: text-top;
1536 }
1537 .widget-hbox .widget-readout {
1538 padding-left: 8px;
1539 padding-top: 5px;
1540 text-align: left;
1541 vertical-align: text-top;
1542 }
1668 .widget-vbox {
1543 .widget-vbox {
1669 /* Vertical widgets */
1544 /* Vertical widgets */
1670 /* The following section sets the style for the invisible div that
1671 hold widgets and their accompanying labels.
1672
1673 Looks like this:
1674 +-----------------------------+
1675 | widget-box (or similar) |
1676 | +-------+---------------+ |
1677 | | Label | Actual Widget | |
1678 | +-------+---------------+ |
1679 +-----------------------------+
1680 */
1681 margin: 5px;
1682 /* Old browsers */
1683 -webkit-box-pack: start;
1684 -moz-box-pack: start;
1685 box-pack: start;
1686 /* Modern browsers */
1687 justify-content: flex-start;
1688 /* Box */
1689 /* Old browsers */
1690 /* Modern browsers */
1691 /* Box */
1692 box-sizing: border-box;
1693 -moz-box-sizing: border-box;
1694 -webkit-box-sizing: border-box;
1695 /* Old browsers */
1696 -webkit-box-align: start;
1697 -moz-box-align: start;
1698 box-align: start;
1699 /* Modern browsers */
1700 align-items: flex-start;
1701 /* Old browsers */
1545 /* Old browsers */
1702 display: -webkit-box;
1546 display: -webkit-box;
1703 -webkit-box-orient: vertical;
1547 -webkit-box-orient: vertical;
@@ -1719,61 +1563,17 b' div.cell.text_cell.rendered {'
1719 /* Modern browsers */
1563 /* Modern browsers */
1720 flex: none;
1564 flex: none;
1721 }
1565 }
1722 .widget-vbox-single {
1566 .widget-vbox .widget-label {
1723 /* For vertical slides */
1567 /* Vertical Label */
1724 /* Vertical widgets */
1568 padding-bottom: 5px;
1725 /* The following section sets the style for the invisible div that
1569 text-align: center;
1726 hold widgets and their accompanying labels.
1570 vertical-align: text-bottom;
1727
1571 }
1728 Looks like this:
1572 .widget-vbox .widget-readout {
1729 +-----------------------------+
1573 /* Vertical Label */
1730 | widget-box (or similar) |
1574 padding-top: 5px;
1731 | +-------+---------------+ |
1575 text-align: center;
1732 | | Label | Actual Widget | |
1576 vertical-align: text-top;
1733 | +-------+---------------+ |
1734 +-----------------------------+
1735 */
1736 margin: 5px;
1737 /* Old browsers */
1738 -webkit-box-pack: start;
1739 -moz-box-pack: start;
1740 box-pack: start;
1741 /* Modern browsers */
1742 justify-content: flex-start;
1743 /* Box */
1744 /* Old browsers */
1745 /* Modern browsers */
1746 /* Box */
1747 box-sizing: border-box;
1748 -moz-box-sizing: border-box;
1749 -webkit-box-sizing: border-box;
1750 /* Old browsers */
1751 -webkit-box-align: start;
1752 -moz-box-align: start;
1753 box-align: start;
1754 /* Modern browsers */
1755 align-items: flex-start;
1756 /* Old browsers */
1757 display: -webkit-box;
1758 -webkit-box-orient: vertical;
1759 -webkit-box-align: stretch;
1760 display: -moz-box;
1761 -moz-box-orient: vertical;
1762 -moz-box-align: stretch;
1763 display: box;
1764 box-orient: vertical;
1765 box-align: stretch;
1766 /* Modern browsers */
1767 display: flex;
1768 flex-direction: column;
1769 align-items: stretch;
1770 /* Old browsers */
1771 -webkit-box-flex: 0;
1772 -moz-box-flex: 0;
1773 box-flex: 0;
1774 /* Modern browsers */
1775 flex: none;
1776 width: 30px;
1777 }
1577 }
1778 .widget-modal {
1578 .widget-modal {
1779 /* Box - ModalView */
1579 /* Box - ModalView */
@@ -9049,32 +9049,6 b' div.cell.text_cell.rendered {'
9049 }
9049 }
9050 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9050 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
9051 THE WIDGET AREA). */
9051 THE WIDGET AREA). */
9052 .widget-hlabel {
9053 /* Horizontal Label */
9054 min-width: 10ex;
9055 padding-right: 8px;
9056 padding-top: 5px;
9057 text-align: right;
9058 vertical-align: text-top;
9059 }
9060 .widget-vlabel {
9061 /* Vertical Label */
9062 padding-bottom: 5px;
9063 text-align: center;
9064 vertical-align: text-bottom;
9065 }
9066 .widget-hreadout {
9067 padding-left: 8px;
9068 padding-top: 5px;
9069 text-align: left;
9070 vertical-align: text-top;
9071 }
9072 .widget-vreadout {
9073 /* Vertical Label */
9074 padding-top: 5px;
9075 text-align: center;
9076 vertical-align: text-top;
9077 }
9078 .slide-track {
9052 .slide-track {
9079 /* Slider Track */
9053 /* Slider Track */
9080 border: 1px solid #CCCCCC;
9054 border: 1px solid #CCCCCC;
@@ -9294,69 +9268,11 b' div.cell.text_cell.rendered {'
9294 /* ComboBox Main Button */
9268 /* ComboBox Main Button */
9295 min-width: 125px;
9269 min-width: 125px;
9296 }
9270 }
9297 .widget-box {
9271 .widget_item .dropdown-menu li a {
9298 /* The following section sets the style for the invisible div that
9272 color: inherit;
9299 hold widgets and their accompanying labels.
9300
9301 Looks like this:
9302 +-----------------------------+
9303 | widget-box (or similar) |
9304 | +-------+---------------+ |
9305 | | Label | Actual Widget | |
9306 | +-------+---------------+ |
9307 +-----------------------------+
9308 */
9309 margin: 5px;
9310 /* Old browsers */
9311 -webkit-box-pack: start;
9312 -moz-box-pack: start;
9313 box-pack: start;
9314 /* Modern browsers */
9315 justify-content: flex-start;
9316 /* Box */
9317 box-sizing: border-box;
9318 -moz-box-sizing: border-box;
9319 -webkit-box-sizing: border-box;
9320 /* Old browsers */
9321 -webkit-box-align: start;
9322 -moz-box-align: start;
9323 box-align: start;
9324 /* Modern browsers */
9325 align-items: flex-start;
9326 }
9273 }
9327 .widget-hbox {
9274 .widget-hbox {
9328 /* Horizontal widgets */
9275 /* Horizontal widgets */
9329 /* The following section sets the style for the invisible div that
9330 hold widgets and their accompanying labels.
9331
9332 Looks like this:
9333 +-----------------------------+
9334 | widget-box (or similar) |
9335 | +-------+---------------+ |
9336 | | Label | Actual Widget | |
9337 | +-------+---------------+ |
9338 +-----------------------------+
9339 */
9340 margin: 5px;
9341 /* Old browsers */
9342 -webkit-box-pack: start;
9343 -moz-box-pack: start;
9344 box-pack: start;
9345 /* Modern browsers */
9346 justify-content: flex-start;
9347 /* Box */
9348 /* Old browsers */
9349 /* Modern browsers */
9350 /* Box */
9351 box-sizing: border-box;
9352 -moz-box-sizing: border-box;
9353 -webkit-box-sizing: border-box;
9354 /* Old browsers */
9355 -webkit-box-align: start;
9356 -moz-box-align: start;
9357 box-align: start;
9358 /* Modern browsers */
9359 align-items: flex-start;
9360 /* Old browsers */
9276 /* Old browsers */
9361 display: -webkit-box;
9277 display: -webkit-box;
9362 -webkit-box-orient: horizontal;
9278 -webkit-box-orient: horizontal;
@@ -9377,99 +9293,27 b' div.cell.text_cell.rendered {'
9377 box-flex: 0;
9293 box-flex: 0;
9378 /* Modern browsers */
9294 /* Modern browsers */
9379 flex: none;
9295 flex: none;
9380 }
9381 .widget-hbox-single {
9382 /* Single line horizontal widgets */
9383 /* Horizontal widgets */
9384 /* The following section sets the style for the invisible div that
9385 hold widgets and their accompanying labels.
9386
9387 Looks like this:
9388 +-----------------------------+
9389 | widget-box (or similar) |
9390 | +-------+---------------+ |
9391 | | Label | Actual Widget | |
9392 | +-------+---------------+ |
9393 +-----------------------------+
9394 */
9395 margin: 5px;
9296 margin: 5px;
9396 /* Old browsers */
9397 -webkit-box-pack: start;
9398 -moz-box-pack: start;
9399 box-pack: start;
9400 /* Modern browsers */
9401 justify-content: flex-start;
9402 /* Box */
9403 /* Old browsers */
9404 /* Modern browsers */
9405 /* Box */
9406 box-sizing: border-box;
9407 -moz-box-sizing: border-box;
9408 -webkit-box-sizing: border-box;
9409 /* Old browsers */
9410 -webkit-box-align: start;
9411 -moz-box-align: start;
9412 box-align: start;
9413 /* Modern browsers */
9414 align-items: flex-start;
9415 /* Old browsers */
9416 display: -webkit-box;
9417 -webkit-box-orient: horizontal;
9418 -webkit-box-align: stretch;
9419 display: -moz-box;
9420 -moz-box-orient: horizontal;
9421 -moz-box-align: stretch;
9422 display: box;
9423 box-orient: horizontal;
9424 box-align: stretch;
9425 /* Modern browsers */
9426 display: flex;
9427 flex-direction: row;
9428 align-items: stretch;
9429 /* Old browsers */
9430 -webkit-box-flex: 0;
9431 -moz-box-flex: 0;
9432 box-flex: 0;
9433 /* Modern browsers */
9434 flex: none;
9435 height: 30px;
9436 }
9297 }
9437 .widget-hbox-single input[type="checkbox"] {
9298 .widget-hbox input[type="checkbox"] {
9438 margin-top: 9px;
9299 margin-top: 9px;
9439 }
9300 }
9301 .widget-hbox .widget-label {
9302 /* Horizontal Label */
9303 min-width: 10ex;
9304 padding-right: 8px;
9305 padding-top: 5px;
9306 text-align: right;
9307 vertical-align: text-top;
9308 }
9309 .widget-hbox .widget-readout {
9310 padding-left: 8px;
9311 padding-top: 5px;
9312 text-align: left;
9313 vertical-align: text-top;
9314 }
9440 .widget-vbox {
9315 .widget-vbox {
9441 /* Vertical widgets */
9316 /* Vertical widgets */
9442 /* The following section sets the style for the invisible div that
9443 hold widgets and their accompanying labels.
9444
9445 Looks like this:
9446 +-----------------------------+
9447 | widget-box (or similar) |
9448 | +-------+---------------+ |
9449 | | Label | Actual Widget | |
9450 | +-------+---------------+ |
9451 +-----------------------------+
9452 */
9453 margin: 5px;
9454 /* Old browsers */
9455 -webkit-box-pack: start;
9456 -moz-box-pack: start;
9457 box-pack: start;
9458 /* Modern browsers */
9459 justify-content: flex-start;
9460 /* Box */
9461 /* Old browsers */
9462 /* Modern browsers */
9463 /* Box */
9464 box-sizing: border-box;
9465 -moz-box-sizing: border-box;
9466 -webkit-box-sizing: border-box;
9467 /* Old browsers */
9468 -webkit-box-align: start;
9469 -moz-box-align: start;
9470 box-align: start;
9471 /* Modern browsers */
9472 align-items: flex-start;
9473 /* Old browsers */
9317 /* Old browsers */
9474 display: -webkit-box;
9318 display: -webkit-box;
9475 -webkit-box-orient: vertical;
9319 -webkit-box-orient: vertical;
@@ -9491,61 +9335,17 b' div.cell.text_cell.rendered {'
9491 /* Modern browsers */
9335 /* Modern browsers */
9492 flex: none;
9336 flex: none;
9493 }
9337 }
9494 .widget-vbox-single {
9338 .widget-vbox .widget-label {
9495 /* For vertical slides */
9339 /* Vertical Label */
9496 /* Vertical widgets */
9340 padding-bottom: 5px;
9497 /* The following section sets the style for the invisible div that
9341 text-align: center;
9498 hold widgets and their accompanying labels.
9342 vertical-align: text-bottom;
9499
9343 }
9500 Looks like this:
9344 .widget-vbox .widget-readout {
9501 +-----------------------------+
9345 /* Vertical Label */
9502 | widget-box (or similar) |
9346 padding-top: 5px;
9503 | +-------+---------------+ |
9347 text-align: center;
9504 | | Label | Actual Widget | |
9348 vertical-align: text-top;
9505 | +-------+---------------+ |
9506 +-----------------------------+
9507 */
9508 margin: 5px;
9509 /* Old browsers */
9510 -webkit-box-pack: start;
9511 -moz-box-pack: start;
9512 box-pack: start;
9513 /* Modern browsers */
9514 justify-content: flex-start;
9515 /* Box */
9516 /* Old browsers */
9517 /* Modern browsers */
9518 /* Box */
9519 box-sizing: border-box;
9520 -moz-box-sizing: border-box;
9521 -webkit-box-sizing: border-box;
9522 /* Old browsers */
9523 -webkit-box-align: start;
9524 -moz-box-align: start;
9525 box-align: start;
9526 /* Modern browsers */
9527 align-items: flex-start;
9528 /* Old browsers */
9529 display: -webkit-box;
9530 -webkit-box-orient: vertical;
9531 -webkit-box-align: stretch;
9532 display: -moz-box;
9533 -moz-box-orient: vertical;
9534 -moz-box-align: stretch;
9535 display: box;
9536 box-orient: vertical;
9537 box-align: stretch;
9538 /* Modern browsers */
9539 display: flex;
9540 flex-direction: column;
9541 align-items: stretch;
9542 /* Old browsers */
9543 -webkit-box-flex: 0;
9544 -moz-box-flex: 0;
9545 box-flex: 0;
9546 /* Modern browsers */
9547 flex: none;
9548 width: 30px;
9549 }
9349 }
9550 .widget-modal {
9350 .widget-modal {
9551 /* Box - ModalView */
9351 /* Box - ModalView */
@@ -258,12 +258,12 b' define(["widgets/js/manager",'
258 return unpacked;
258 return unpacked;
259
259
260 } else if (typeof value === 'string' && value.slice(0,10) === "IPY_MODEL_") {
260 } else if (typeof value === 'string' && value.slice(0,10) === "IPY_MODEL_") {
261 var model = this.widget_manager.get_model(value.slice(10, value.length));
261 var model = this.widget_manager.get_model(value.slice(10, value.length));
262 if (model) {
262 if (model) {
263 return model;
263 return model;
264 } else {
264 } else {
265 return value;
265 return value;
266 }
266 }
267 } else {
267 } else {
268 return value;
268 return value;
269 }
269 }
@@ -427,35 +427,89 b' define(["widgets/js/manager",'
427 // Public constructor
427 // Public constructor
428 DOMWidgetView.__super__.initialize.apply(this, [parameters]);
428 DOMWidgetView.__super__.initialize.apply(this, [parameters]);
429 this.on('displayed', this.show, this);
429 this.on('displayed', this.show, this);
430 this.model.on('change:visible', this.update_visible, this);
431 this.model.on('change:_css', this.update_css, this);
432
433 this.model.on('change:_dom_classes', function(model, new_classes) {
434 var old_classes = model.previous('_dom_classes');
435 this.update_classes(old_classes, new_classes);
436 }, this);
437
438 this.model.on('change:color', function (model, value) {
439 this.update_attr('color', value); }, this);
440
441 this.model.on('change:background_color', function (model, value) {
442 this.update_attr('background', value); }, this);
443
444 this.model.on('change:width', function (model, value) {
445 this.update_attr('width', value); }, this);
446
447 this.model.on('change:height', function (model, value) {
448 this.update_attr('height', value); }, this);
449
450 this.model.on('change:border_color', function (model, value) {
451 this.update_attr('border-color', value); }, this);
452
453 this.model.on('change:border_width', function (model, value) {
454 this.update_attr('border-width', value); }, this);
455
456 this.model.on('change:border_style', function (model, value) {
457 this.update_attr('border-style', value); }, this);
458
459 this.model.on('change:font_style', function (model, value) {
460 this.update_attr('font-style', value); }, this);
461
462 this.model.on('change:font_weight', function (model, value) {
463 this.update_attr('font-weight', value); }, this);
464
465 this.model.on('change:font_size', function (model, value) {
466 this.update_attr('font-size', this._default_px(value)); }, this);
467
468 this.model.on('change:font_family', function (model, value) {
469 this.update_attr('font-family', value); }, this);
470
471 this.model.on('change:padding', function (model, value) {
472 this.update_attr('padding', value); }, this);
473
474 this.model.on('change:margin', function (model, value) {
475 this.update_attr('margin', this._default_px(value)); }, this);
476
477 this.model.on('change:border_radius', function (model, value) {
478 this.update_attr('border-radius', this._default_px(value)); }, this);
479
430 this.after_displayed(function() {
480 this.after_displayed(function() {
431 this.update_visible(this.model, this.model.get("visible"));
481 this.update_visible(this.model, this.model.get("visible"));
432 this.update_css(this.model, this.model.get("_css"));
482 this.update_css(this.model, this.model.get("_css"));
483
484 this.update_classes([], this.model.get('_dom_classes'));
485 this.update_attr('color', this.model.get('color'));
486 this.update_attr('background', this.model.get('background_color'));
487 this.update_attr('width', this.model.get('width'));
488 this.update_attr('height', this.model.get('height'));
489 this.update_attr('border-color', this.model.get('border_color'));
490 this.update_attr('border-width', this.model.get('border_width'));
491 this.update_attr('border-style', this.model.get('border_style'));
492 this.update_attr('font-style', this.model.get('font_style'));
493 this.update_attr('font-weight', this.model.get('font_weight'));
494 this.update_attr('font-size', this.model.get('font_size'));
495 this.update_attr('font-family', this.model.get('font_family'));
496 this.update_attr('padding', this.model.get('padding'));
497 this.update_attr('margin', this.model.get('margin'));
498 this.update_attr('border-radius', this.model.get('border_radius'));
433 }, this);
499 }, this);
434 this.model.on('msg:custom', this.on_msg, this);
435 this.model.on('change:visible', this.update_visible, this);
436 this.model.on('change:_css', this.update_css, this);
437 },
500 },
438
501
439 on_msg: function(msg) {
502 _default_px: function(value) {
440 // Handle DOM specific msgs.
503 // Makes browser interpret a numerical string as a pixel value.
441 switch(msg.msg_type) {
504 if (/^\d+\.?(\d+)?$/.test(value.trim())) {
442 case 'add_class':
505 return value.trim() + 'px';
443 this.add_class(msg.selector, msg.class_list);
444 break;
445 case 'remove_class':
446 this.remove_class(msg.selector, msg.class_list);
447 break;
448 }
506 }
507 return value;
449 },
508 },
450
509
451 add_class: function (selector, class_list) {
510 update_attr: function(name, value) {
452 // Add a DOM class to an element.
511 // Set a css attr of the widget view.
453 this._get_selector_element(selector).addClass(class_list);
512 this.$el.css(name, value);
454 },
455
456 remove_class: function (selector, class_list) {
457 // Remove a DOM class from an element.
458 this._get_selector_element(selector).removeClass(class_list);
459 },
513 },
460
514
461 update_visible: function(model, value) {
515 update_visible: function(model, value) {
@@ -479,6 +533,54 b' define(["widgets/js/manager",'
479 }
533 }
480 },
534 },
481
535
536 update_classes: function (old_classes, new_classes, $el) {
537 // Update the DOM classes applied to an element, default to this.$el.
538 if ($el===undefined) {
539 $el = this.$el;
540 }
541 this.do_diff(old_classes, new_classes, function(removed) {
542 $el.removeClass(removed);
543 }, function(added) {
544 $el.addClass(added);
545 });
546 },
547
548 update_mapped_classes: function(class_map, trait_name, previous_trait_value, $el) {
549 // Update the DOM classes applied to the widget based on a single
550 // trait's value.
551 //
552 // Given a trait value classes map, this function automatically
553 // handles applying the appropriate classes to the widget element
554 // and removing classes that are no longer valid.
555 //
556 // Parameters
557 // ----------
558 // class_map: dictionary
559 // Dictionary of trait values to class lists.
560 // Example:
561 // {
562 // success: ['alert', 'alert-success'],
563 // info: ['alert', 'alert-info'],
564 // warning: ['alert', 'alert-warning'],
565 // danger: ['alert', 'alert-danger']
566 // };
567 // trait_name: string
568 // Name of the trait to check the value of.
569 // previous_trait_value: optional string, default ''
570 // Last trait value
571 // $el: optional jQuery element handle, defaults to this.$el
572 // Element that the classes are applied to.
573 var key = previous_trait_value;
574 if (key === undefined) {
575 key = this.model.previous(trait_name);
576 }
577 var old_classes = class_map[key] ? class_map[key] : [];
578 key = this.model.get(trait_name);
579 var new_classes = class_map[key] ? class_map[key] : [];
580
581 this.update_classes(old_classes, new_classes, $el || this.$el);
582 },
583
482 _get_selector_element: function (selector) {
584 _get_selector_element: function (selector) {
483 // Get the elements via the css selector.
585 // Get the elements via the css selector.
484 var elements;
586 var elements;
@@ -11,9 +11,9 b' define(['
11 render : function(){
11 render : function(){
12 // Called when view is rendered.
12 // Called when view is rendered.
13 this.$el
13 this.$el
14 .addClass('widget-hbox-single');
14 .addClass('widget-hbox');
15 this.$label = $('<div />')
15 this.$label = $('<div />')
16 .addClass('widget-hlabel')
16 .addClass('widget-label')
17 .appendTo(this.$el)
17 .appendTo(this.$el)
18 .hide();
18 .hide();
19 this.$checkbox = $('<input />')
19 this.$checkbox = $('<input />')
@@ -24,6 +24,11 b' define(['
24 this.update(); // Set defaults.
24 this.update(); // Set defaults.
25 },
25 },
26
26
27 update_attr: function(name, value) {
28 // Set a css attr of the widget view.
29 this.$checkbox.css(name, value);
30 },
31
27 handle_click: function() {
32 handle_click: function() {
28 // Handles when the checkbox is clicked.
33 // Handles when the checkbox is clicked.
29
34
@@ -72,8 +77,24 b' define(['
72 that.handle_click();
77 that.handle_click();
73 }));
78 }));
74
79
80 this.model.on('change:button_style', function(model, value) {
81 this.update_button_style();
82 }, this);
83 this.update_button_style('');
84
75 this.update(); // Set defaults.
85 this.update(); // Set defaults.
76 },
86 },
87
88 update_button_style: function(previous_trait_value) {
89 var class_map = {
90 primary: ['btn-primary'],
91 success: ['btn-success'],
92 info: ['btn-info'],
93 warning: ['btn-warning'],
94 danger: ['btn-danger']
95 };
96 this.update_mapped_classes(class_map, 'button_style', previous_trait_value);
97 },
77
98
78 update : function(options){
99 update : function(options){
79 // Update the contents of this view
100 // Update the contents of this view
@@ -14,6 +14,20 b' define(['
14 this.model.on('change:children', function(model, value) {
14 this.model.on('change:children', function(model, value) {
15 this.update_children(model.previous('children'), value);
15 this.update_children(model.previous('children'), value);
16 }, this);
16 }, this);
17 this.model.on('change:overflow_x', function(model, value) {
18 this.update_overflow_x();
19 }, this);
20 this.model.on('change:overflow_y', function(model, value) {
21 this.update_overflow_y();
22 }, this);
23 this.model.on('change:box_style', function(model, value) {
24 this.update_box_style();
25 }, this);
26 },
27
28 update_attr: function(name, value) {
29 // Set a css attr of the widget view.
30 this.$box.css(name, value);
17 },
31 },
18
32
19 render: function(){
33 render: function(){
@@ -21,6 +35,29 b' define(['
21 this.$box = this.$el;
35 this.$box = this.$el;
22 this.$box.addClass('widget-box');
36 this.$box.addClass('widget-box');
23 this.update_children([], this.model.get('children'));
37 this.update_children([], this.model.get('children'));
38 this.update_overflow_x();
39 this.update_overflow_y();
40 this.update_box_style('');
41 },
42
43 update_overflow_x: function() {
44 // Called when the x-axis overflow setting is changed.
45 this.$box.css('overflow-x', this.model.get('overflow_x'));
46 },
47
48 update_overflow_y: function() {
49 // Called when the y-axis overflow setting is changed.
50 this.$box.css('overflow-y', this.model.get('overflow_y'));
51 },
52
53 update_box_style: function(previous_trait_value) {
54 var class_map = {
55 success: ['alert', 'alert-success'],
56 info: ['alert', 'alert-info'],
57 warning: ['alert', 'alert-warning'],
58 danger: ['alert', 'alert-danger']
59 };
60 this.update_mapped_classes(class_map, 'box_style', previous_trait_value, this.$box);
24 },
61 },
25
62
26 update_children: function(old_list, new_list) {
63 update_children: function(old_list, new_list) {
@@ -142,8 +179,8 b' define(['
142 that.popped_out = !that.popped_out;
179 that.popped_out = !that.popped_out;
143 if (!that.popped_out) {
180 if (!that.popped_out) {
144 that.$minimize
181 that.$minimize
145 .removeClass('fa fa-arrow-down')
182 .removeClass('fa-arrow-down')
146 .addClass('fa fa-arrow-up');
183 .addClass('fa-arrow-up');
147
184
148 that.$window
185 that.$window
149 .draggable('destroy')
186 .draggable('destroy')
@@ -156,8 +193,8 b' define(['
156 that.$close.hide();
193 that.$close.hide();
157 } else {
194 } else {
158 that.$minimize
195 that.$minimize
159 .addClass('fa fa-arrow-down')
196 .addClass('fa-arrow-down')
160 .removeClass('fa fa-arrow-up');
197 .removeClass('fa-arrow-up');
161
198
162 that.$window
199 that.$window
163 .removeClass('docked-widget-modal')
200 .removeClass('docked-widget-modal')
@@ -13,6 +13,11 b' define(['
13 this.setElement($("<button />")
13 this.setElement($("<button />")
14 .addClass('btn btn-default'));
14 .addClass('btn btn-default'));
15
15
16 this.model.on('change:button_style', function(model, value) {
17 this.update_button_style();
18 }, this);
19 this.update_button_style('');
20
16 this.update(); // Set defaults.
21 this.update(); // Set defaults.
17 },
22 },
18
23
@@ -37,6 +42,17 b' define(['
37 return ButtonView.__super__.update.apply(this);
42 return ButtonView.__super__.update.apply(this);
38 },
43 },
39
44
45 update_button_style: function(previous_trait_value) {
46 var class_map = {
47 primary: ['btn-primary'],
48 success: ['btn-success'],
49 info: ['btn-info'],
50 warning: ['btn-warning'],
51 danger: ['btn-danger']
52 };
53 this.update_mapped_classes(class_map, 'button_style', previous_trait_value);
54 },
55
40 events: {
56 events: {
41 // Dictionary of events and their handlers.
57 // Dictionary of events and their handlers.
42 'click': '_handle_click',
58 'click': '_handle_click',
@@ -11,10 +11,10 b' define(['
11 render : function(){
11 render : function(){
12 // Called when view is rendered.
12 // Called when view is rendered.
13 this.$el
13 this.$el
14 .addClass('widget-hbox-single');
14 .addClass('widget-hbox');
15 this.$label = $('<div />')
15 this.$label = $('<div />')
16 .appendTo(this.$el)
16 .appendTo(this.$el)
17 .addClass('widget-hlabel')
17 .addClass('widget-label')
18 .hide();
18 .hide();
19
19
20 this.$slider = $('<div />')
20 this.$slider = $('<div />')
@@ -28,12 +28,33 b' define(['
28
28
29 this.$readout = $('<div/>')
29 this.$readout = $('<div/>')
30 .appendTo(this.$el)
30 .appendTo(this.$el)
31 .addClass('widget-hreadout')
31 .addClass('widget-readout')
32 .hide();
32 .hide();
33
34 this.model.on('change:slider_color', function(sender, value) {
35 this.$slider.find('a').css('background', value);
36 }, this);
37 this.$slider.find('a').css('background', this.model.get('slider_color'));
33
38
34 // Set defaults.
39 // Set defaults.
35 this.update();
40 this.update();
36 },
41 },
42
43 update_attr: function(name, value) {
44 // Set a css attr of the widget view.
45 if (name == 'color') {
46 this.$readout.css(name, value);
47 } else if (name.substring(0, 4) == 'font') {
48 this.$readout.css(name, value);
49 } else if (name.substring(0, 6) == 'border') {
50 this.$slider.find('a').css(name, value);
51 this.$slider_container.css(name, value);
52 } else if (name == 'width' || name == 'height' || name == 'background') {
53 this.$slider_container.css(name, value);
54 } else {
55 this.$slider.css(name, value);
56 }
57 },
37
58
38 update : function(options){
59 update : function(options){
39 // Update the contents of this view
60 // Update the contents of this view
@@ -102,28 +123,16 b' define(['
102 .removeClass('widget-hslider')
123 .removeClass('widget-hslider')
103 .addClass('widget-vslider');
124 .addClass('widget-vslider');
104 this.$el
125 this.$el
105 .removeClass('widget-hbox-single')
126 .removeClass('widget-hbox')
106 .addClass('widget-vbox-single');
127 .addClass('widget-vbox');
107 this.$label
108 .removeClass('widget-hlabel')
109 .addClass('widget-vlabel');
110 this.$readout
111 .removeClass('widget-hreadout')
112 .addClass('widget-vreadout');
113
128
114 } else {
129 } else {
115 this.$slider_container
130 this.$slider_container
116 .removeClass('widget-vslider')
131 .removeClass('widget-vslider')
117 .addClass('widget-hslider');
132 .addClass('widget-hslider');
118 this.$el
133 this.$el
119 .removeClass('widget-vbox-single')
134 .removeClass('widget-vbox')
120 .addClass('widget-hbox-single');
135 .addClass('widget-hbox');
121 this.$label
122 .removeClass('widget-vlabel')
123 .addClass('widget-hlabel');
124 this.$readout
125 .removeClass('widget-vreadout')
126 .addClass('widget-hreadout');
127 }
136 }
128
137
129 var description = this.model.get('description');
138 var description = this.model.get('description');
@@ -180,10 +189,10 b' define(['
180 render : function(){
189 render : function(){
181 // Called when view is rendered.
190 // Called when view is rendered.
182 this.$el
191 this.$el
183 .addClass('widget-hbox-single');
192 .addClass('widget-hbox');
184 this.$label = $('<div />')
193 this.$label = $('<div />')
185 .appendTo(this.$el)
194 .appendTo(this.$el)
186 .addClass('widget-hlabel')
195 .addClass('widget-label')
187 .hide();
196 .hide();
188 this.$textbox = $('<input type="text" />')
197 this.$textbox = $('<input type="text" />')
189 .addClass('form-control')
198 .addClass('form-control')
@@ -221,6 +230,11 b' define(['
221 return IntTextView.__super__.update.apply(this);
230 return IntTextView.__super__.update.apply(this);
222 },
231 },
223
232
233 update_attr: function(name, value) {
234 // Set a css attr of the widget view.
235 this.$textbox.css(name, value);
236 },
237
224 events: {
238 events: {
225 // Dictionary of events and their handlers.
239 // Dictionary of events and their handlers.
226 "keyup input" : "handleChanging",
240 "keyup input" : "handleChanging",
@@ -283,10 +297,10 b' define(['
283 render : function(){
297 render : function(){
284 // Called when view is rendered.
298 // Called when view is rendered.
285 this.$el
299 this.$el
286 .addClass('widget-hbox-single');
300 .addClass('widget-hbox');
287 this.$label = $('<div />')
301 this.$label = $('<div />')
288 .appendTo(this.$el)
302 .appendTo(this.$el)
289 .addClass('widget-hlabel')
303 .addClass('widget-label')
290 .hide();
304 .hide();
291 this.$progress = $('<div />')
305 this.$progress = $('<div />')
292 .addClass('progress')
306 .addClass('progress')
@@ -297,6 +311,11 b' define(['
297 .css('width', '50%')
311 .css('width', '50%')
298 .appendTo(this.$progress);
312 .appendTo(this.$progress);
299 this.update(); // Set defaults.
313 this.update(); // Set defaults.
314
315 this.model.on('change:bar_style', function(model, value) {
316 this.update_bar_style();
317 }, this);
318 this.update_bar_style('');
300 },
319 },
301
320
302 update : function(){
321 update : function(){
@@ -320,6 +339,30 b' define(['
320 }
339 }
321 return ProgressView.__super__.update.apply(this);
340 return ProgressView.__super__.update.apply(this);
322 },
341 },
342
343 update_bar_style: function(previous_trait_value) {
344 var class_map = {
345 success: ['progress-bar-success'],
346 info: ['progress-bar-info'],
347 warning: ['progress-bar-warning'],
348 danger: ['progress-bar-danger']
349 };
350 this.update_mapped_classes(class_map, 'bar_style', previous_trait_value, this.$bar);
351 },
352
353 update_attr: function(name, value) {
354 // Set a css attr of the widget view.
355 if (name.substring(0, 6) == 'border' || name == 'width' ||
356 name == 'height' || name == 'background' || name == 'margin' ||
357 name == 'padding') {
358
359 this.$progress.css(name, value);
360 } else if (name == 'color') {
361 this.$bar.css('background', value);
362 } else {
363 this.$bar.css(name, value);
364 }
365 },
323 });
366 });
324
367
325 return {
368 return {
@@ -12,10 +12,10 b' define(['
12 render : function(){
12 render : function(){
13 // Called when view is rendered.
13 // Called when view is rendered.
14 this.$el
14 this.$el
15 .addClass('widget-hbox-single');
15 .addClass('widget-hbox');
16 this.$label = $('<div />')
16 this.$label = $('<div />')
17 .appendTo(this.$el)
17 .appendTo(this.$el)
18 .addClass('widget-hlabel')
18 .addClass('widget-label')
19 .hide();
19 .hide();
20 this.$buttongroup = $('<div />')
20 this.$buttongroup = $('<div />')
21 .addClass('widget_item')
21 .addClass('widget_item')
@@ -36,6 +36,11 b' define(['
36 this.$droplist = $('<ul />')
36 this.$droplist = $('<ul />')
37 .addClass('dropdown-menu')
37 .addClass('dropdown-menu')
38 .appendTo(this.$buttongroup);
38 .appendTo(this.$buttongroup);
39
40 this.model.on('change:button_style', function(model, value) {
41 this.update_button_style();
42 }, this);
43 this.update_button_style('');
39
44
40 // Set defaults.
45 // Set defaults.
41 this.update();
46 this.update();
@@ -58,6 +63,8 b' define(['
58 var items = this.model.get('value_names');
63 var items = this.model.get('value_names');
59 var $replace_droplist = $('<ul />')
64 var $replace_droplist = $('<ul />')
60 .addClass('dropdown-menu');
65 .addClass('dropdown-menu');
66 // Copy the style
67 $replace_droplist.attr('style', this.$droplist.attr('style'));
61 var that = this;
68 var that = this;
62 _.each(items, function(item, i) {
69 _.each(items, function(item, i) {
63 var item_button = $('<a href="#"/>')
70 var item_button = $('<a href="#"/>')
@@ -94,6 +101,41 b' define(['
94 return DropdownView.__super__.update.apply(this);
101 return DropdownView.__super__.update.apply(this);
95 },
102 },
96
103
104 update_button_style: function(previous_trait_value) {
105 var class_map = {
106 primary: ['btn-primary'],
107 success: ['btn-success'],
108 info: ['btn-info'],
109 warning: ['btn-warning'],
110 danger: ['btn-danger']
111 };
112 this.update_mapped_classes(class_map, 'button_style', previous_trait_value, this.$droplabel);
113 this.update_mapped_classes(class_map, 'button_style', previous_trait_value, this.$dropbutton);
114 },
115
116 update_attr: function(name, value) {
117 // Set a css attr of the widget view.
118 if (name.substring(0, 6) == 'border' || name == 'background' || name == 'color') {
119 this.$droplabel.css(name, value);
120 this.$dropbutton.css(name, value);
121 this.$droplist.css(name, value);
122 } else if (name == 'width') {
123 this.$droplist.css(name, value);
124 this.$droplabel.css(name, value);
125 } else if (name == 'padding') {
126 this.$droplist.css(name, value);
127 this.$buttongroup.css(name, value);
128 } else if (name == 'margin') {
129 this.$buttongroup.css(name, value);
130 } else if (name == 'height') {
131 this.$droplabel.css(name, value);
132 this.$dropbutton.css(name, value);
133 } else {
134 this.$droplist.css(name, value);
135 this.$droplabel.css(name, value);
136 }
137 },
138
97 handle_click: function (e) {
139 handle_click: function (e) {
98 // Handle when a value is clicked.
140 // Handle when a value is clicked.
99
141
@@ -113,7 +155,7 b' define(['
113 .addClass('widget-hbox');
155 .addClass('widget-hbox');
114 this.$label = $('<div />')
156 this.$label = $('<div />')
115 .appendTo(this.$el)
157 .appendTo(this.$el)
116 .addClass('widget-hlabel')
158 .addClass('widget-label')
117 .hide();
159 .hide();
118 this.$container = $('<div />')
160 this.$container = $('<div />')
119 .appendTo(this.$el)
161 .appendTo(this.$el)
@@ -184,6 +226,11 b' define(['
184 return RadioButtonsView.__super__.update.apply(this);
226 return RadioButtonsView.__super__.update.apply(this);
185 },
227 },
186
228
229 update_attr: function(name, value) {
230 // Set a css attr of the widget view.
231 this.$container.css(name, value);
232 },
233
187 handle_click: function (e) {
234 handle_click: function (e) {
188 // Handle when a value is clicked.
235 // Handle when a value is clicked.
189
236
@@ -196,18 +243,28 b' define(['
196
243
197
244
198 var ToggleButtonsView = widget.DOMWidgetView.extend({
245 var ToggleButtonsView = widget.DOMWidgetView.extend({
199 render : function(){
246 initialize: function() {
247 this._css_state = {};
248 ToggleButtonsView.__super__.initialize.apply(this, arguments);
249 },
250
251 render: function() {
200 // Called when view is rendered.
252 // Called when view is rendered.
201 this.$el
253 this.$el
202 .addClass('widget-hbox-single');
254 .addClass('widget-hbox');
203 this.$label = $('<div />')
255 this.$label = $('<div />')
204 .appendTo(this.$el)
256 .appendTo(this.$el)
205 .addClass('widget-hlabel')
257 .addClass('widget-label')
206 .hide();
258 .hide();
207 this.$buttongroup = $('<div />')
259 this.$buttongroup = $('<div />')
208 .addClass('btn-group')
260 .addClass('btn-group')
209 .attr('data-toggle', 'buttons-radio')
261 .attr('data-toggle', 'buttons-radio')
210 .appendTo(this.$el);
262 .appendTo(this.$el);
263
264 this.model.on('change:button_style', function(model, value) {
265 this.update_button_style();
266 }, this);
267 this.update_button_style('');
211 this.update();
268 this.update();
212 },
269 },
213
270
@@ -238,6 +295,7 b' define(['
238 .appendTo(that.$buttongroup)
295 .appendTo(that.$buttongroup)
239 .attr('data-value', item)
296 .attr('data-value', item)
240 .on('click', $.proxy(that.handle_click, that));
297 .on('click', $.proxy(that.handle_click, that));
298 that.update_style_traits($item_element);
241 }
299 }
242 if (that.model.get('value_name') == item) {
300 if (that.model.get('value_name') == item) {
243 $item_element.addClass('active');
301 $item_element.addClass('active');
@@ -275,6 +333,39 b' define(['
275 return ToggleButtonsView.__super__.update.apply(this);
333 return ToggleButtonsView.__super__.update.apply(this);
276 },
334 },
277
335
336 update_attr: function(name, value) {
337 // Set a css attr of the widget view.
338 this._css_state[name] = value;
339 this.update_style_traits();
340 },
341
342 update_style_traits: function(button) {
343 for (var name in this._css_state) {
344 if (this._css_state.hasOwnProperty(name)) {
345 if (name == 'margin') {
346 this.$buttongroup.css(name, this._css_state[name]);
347 } else if (name != 'width') {
348 if (button) {
349 button.css(name, this._css_state[name]);
350 } else {
351 this.$buttongroup.find('button').css(name, this._css_state[name]);
352 }
353 }
354 }
355 }
356 },
357
358 update_button_style: function(previous_trait_value) {
359 var class_map = {
360 primary: ['btn-primary'],
361 success: ['btn-success'],
362 info: ['btn-info'],
363 warning: ['btn-warning'],
364 danger: ['btn-danger']
365 };
366 this.update_mapped_classes(class_map, 'button_style', previous_trait_value, this.$buttongroup.find('button'));
367 },
368
278 handle_click: function (e) {
369 handle_click: function (e) {
279 // Handle when a value is clicked.
370 // Handle when a value is clicked.
280
371
@@ -293,7 +384,7 b' define(['
293 .addClass('widget-hbox');
384 .addClass('widget-hbox');
294 this.$label = $('<div />')
385 this.$label = $('<div />')
295 .appendTo(this.$el)
386 .appendTo(this.$el)
296 .addClass('widget-hlabel')
387 .addClass('widget-label')
297 .hide();
388 .hide();
298 this.$listbox = $('<select />')
389 this.$listbox = $('<select />')
299 .addClass('widget-listbox form-control')
390 .addClass('widget-listbox form-control')
@@ -357,6 +448,11 b' define(['
357 return SelectView.__super__.update.apply(this);
448 return SelectView.__super__.update.apply(this);
358 },
449 },
359
450
451 update_attr: function(name, value) {
452 // Set a css attr of the widget view.
453 this.$listbox.css(name, value);
454 },
455
360 handle_click: function (e) {
456 handle_click: function (e) {
361 // Handle when a value is clicked.
457 // Handle when a value is clicked.
362
458
@@ -152,6 +152,11 b' define(['
152 }, this);
152 }, this);
153 },
153 },
154
154
155 update_attr: function(name, value) {
156 // Set a css attr of the widget view.
157 this.$tabs.css(name, value);
158 },
159
155 update_children: function(old_list, new_list) {
160 update_children: function(old_list, new_list) {
156 // Called when the children list is modified.
161 // Called when the children list is modified.
157 this.do_diff(old_list,
162 this.do_diff(old_list,
@@ -50,7 +50,7 b' define(['
50 .addClass('widget-hbox');
50 .addClass('widget-hbox');
51 this.$label = $('<div />')
51 this.$label = $('<div />')
52 .appendTo(this.$el)
52 .appendTo(this.$el)
53 .addClass('widget-hlabel')
53 .addClass('widget-label')
54 .hide();
54 .hide();
55 this.$textbox = $('<textarea />')
55 this.$textbox = $('<textarea />')
56 .attr('rows', 5)
56 .attr('rows', 5)
@@ -107,6 +107,11 b' define(['
107 }
107 }
108 return TextareaView.__super__.update.apply(this);
108 return TextareaView.__super__.update.apply(this);
109 },
109 },
110
111 update_attr: function(name, value) {
112 // Set a css attr of the widget view.
113 this.$textbox.css(name, value);
114 },
110
115
111 events: {
116 events: {
112 // Dictionary of events and their handlers.
117 // Dictionary of events and their handlers.
@@ -130,9 +135,9 b' define(['
130 render: function(){
135 render: function(){
131 // Called when view is rendered.
136 // Called when view is rendered.
132 this.$el
137 this.$el
133 .addClass('widget-hbox-single');
138 .addClass('widget-hbox');
134 this.$label = $('<div />')
139 this.$label = $('<div />')
135 .addClass('widget-hlabel')
140 .addClass('widget-label')
136 .appendTo(this.$el)
141 .appendTo(this.$el)
137 .hide();
142 .hide();
138 this.$textbox = $('<input type="text" />')
143 this.$textbox = $('<input type="text" />')
@@ -178,6 +183,11 b' define(['
178 }
183 }
179 return TextView.__super__.update.apply(this);
184 return TextView.__super__.update.apply(this);
180 },
185 },
186
187 update_attr: function(name, value) {
188 // Set a css attr of the widget view.
189 this.$textbox.css(name, value);
190 },
181
191
182 events: {
192 events: {
183 // Dictionary of events and their handlers.
193 // Dictionary of events and their handlers.
@@ -31,36 +31,6 b''
31 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
31 /* THE CLASSES BELOW CAN APPEAR ANYWHERE IN THE DOM (POSSIBLEY OUTSIDE OF
32 THE WIDGET AREA). */
32 THE WIDGET AREA). */
33
33
34 .widget-hlabel {
35 /* Horizontal Label */
36 min-width : 10ex;
37 padding-right : 8px;
38 padding-top : 5px;
39 text-align : right;
40 vertical-align : text-top;
41 }
42
43 .widget-vlabel {
44 /* Vertical Label */
45 padding-bottom : 5px;
46 text-align : center;
47 vertical-align : text-bottom;
48 }
49
50 .widget-hreadout {
51 padding-left : 8px;
52 padding-top : 5px;
53 text-align : left;
54 vertical-align : text-top;
55 }
56
57 .widget-vreadout {
58 /* Vertical Label */
59 padding-top : 5px;
60 text-align : center;
61 vertical-align : text-top;
62 }
63
64 .slide-track {
34 .slide-track {
65 /* Slider Track */
35 /* Slider Track */
66 border : 1px solid #CCCCCC;
36 border : 1px solid #CCCCCC;
@@ -211,50 +181,55 b''
211 min-width : 125px;
181 min-width : 125px;
212 }
182 }
213
183
214 .widget-box {
184 .widget_item .dropdown-menu li a {
215 /* The following section sets the style for the invisible div that
185 color: inherit;
216 hold widgets and their accompanying labels.
217
218 Looks like this:
219 +-----------------------------+
220 | widget-box (or similar) |
221 | +-------+---------------+ |
222 | | Label | Actual Widget | |
223 | +-------+---------------+ |
224 +-----------------------------+
225 */
226 margin : 5px;
227
228 .start();
229 .widget-box();
230 }
186 }
231
187
232 .widget-hbox {
188 .widget-hbox {
233 /* Horizontal widgets */
189 /* Horizontal widgets */
234 .widget-box();
235 .hbox();
190 .hbox();
236 }
191 margin: 5px;
237
238 .widget-hbox-single {
239 /* Single line horizontal widgets */
240 .widget-hbox();
241 height : 30px;
242
192
243 input[type="checkbox"] {
193 input[type="checkbox"] {
244 margin-top: 9px;
194 margin-top: 9px;
245 }
195 }
196
197 .widget-label {
198 /* Horizontal Label */
199 min-width : 10ex;
200 padding-right : 8px;
201 padding-top : 5px;
202 text-align : right;
203 vertical-align : text-top;
204 }
205
206 .widget-readout {
207 padding-left : 8px;
208 padding-top : 5px;
209 text-align : left;
210 vertical-align : text-top;
211 }
246 }
212 }
247
213
248 .widget-vbox {
214 .widget-vbox {
249 /* Vertical widgets */
215 /* Vertical widgets */
250 .widget-box();
251 .vbox();
216 .vbox();
252 }
253
217
254 .widget-vbox-single {
218
255 /* For vertical slides */
219 .widget-label {
256 .widget-vbox();
220 /* Vertical Label */
257 width : 30px;
221 padding-bottom : 5px;
222 text-align : center;
223 vertical-align : text-bottom;
224 }
225
226 .widget-readout {
227 /* Vertical Label */
228 padding-top : 5px;
229 text-align : center;
230 vertical-align : text-top;
231 }
232
258 }
233 }
259
234
260 .widget-modal {
235 .widget-modal {
@@ -296,4 +271,4 b''
296 top: 0px !important;
271 top: 0px !important;
297 left: 0px !important;
272 left: 0px !important;
298 margin-left: 0px !important;
273 margin-left: 0px !important;
299 } No newline at end of file
274 }
@@ -149,7 +149,7 b' casper.notebook_test(function () {'
149 'import time\n' +
149 'import time\n' +
150 'textbox = widgets.Text()\n' +
150 'textbox = widgets.Text()\n' +
151 'display(textbox)\n' +
151 'display(textbox)\n' +
152 'textbox.add_class("my-throttle-textbox", selector="input")\n' +
152 'textbox._dom_classes = ["my-throttle-textbox"]\n' +
153 'def handle_change(name, old, new):\n' +
153 'def handle_change(name, old, new):\n' +
154 ' display(len(new))\n' +
154 ' display(len(new))\n' +
155 ' time.sleep(0.5)\n' +
155 ' time.sleep(0.5)\n' +
@@ -166,7 +166,7 b' casper.notebook_test(function () {'
166 '.my-throttle-textbox'), 'Textbox exists.');
166 '.my-throttle-textbox'), 'Textbox exists.');
167
167
168 // Send 20 characters
168 // Send 20 characters
169 this.sendKeys('.my-throttle-textbox', '....................');
169 this.sendKeys('.my-throttle-textbox input', '....................');
170 });
170 });
171
171
172 this.wait_for_widget(textbox);
172 this.wait_for_widget(textbox);
@@ -22,19 +22,19 b' casper.notebook_test(function () {'
22 'Widget subarea exists.');
22 'Widget subarea exists.');
23
23
24 this.test.assert(this.cell_element_exists(index,
24 this.test.assert(this.cell_element_exists(index,
25 '.widget-area .widget-subarea .widget-hbox-single input'),
25 '.widget-area .widget-subarea .widget-hbox input'),
26 'Checkbox exists.');
26 'Checkbox exists.');
27
27
28 this.test.assert(this.cell_element_function(index,
28 this.test.assert(this.cell_element_function(index,
29 '.widget-area .widget-subarea .widget-hbox-single input', 'prop', ['checked']),
29 '.widget-area .widget-subarea .widget-hbox input', 'prop', ['checked']),
30 'Checkbox is checked.');
30 'Checkbox is checked.');
31
31
32 this.test.assert(this.cell_element_exists(index,
32 this.test.assert(this.cell_element_exists(index,
33 '.widget-area .widget-subarea .widget-hbox-single .widget-hlabel'),
33 '.widget-area .widget-subarea .widget-hbox .widget-label'),
34 'Checkbox label exists.');
34 'Checkbox label exists.');
35
35
36 this.test.assert(this.cell_element_function(index,
36 this.test.assert(this.cell_element_function(index,
37 '.widget-area .widget-subarea .widget-hbox-single .widget-hlabel', 'html')=="Title",
37 '.widget-area .widget-subarea .widget-hbox .widget-label', 'html')=="Title",
38 'Checkbox labeled correctly.');
38 'Checkbox labeled correctly.');
39
39
40 this.test.assert(this.cell_element_exists(index,
40 this.test.assert(this.cell_element_exists(index,
@@ -61,7 +61,7 b' casper.notebook_test(function () {'
61 'Change bool widget value cell executed with correct output.');
61 'Change bool widget value cell executed with correct output.');
62
62
63 this.test.assert(! this.cell_element_function(bool_index,
63 this.test.assert(! this.cell_element_function(bool_index,
64 '.widget-area .widget-subarea .widget-hbox-single input', 'prop', ['checked']),
64 '.widget-area .widget-subarea .widget-hbox input', 'prop', ['checked']),
65 'Checkbox is not checked. (1)');
65 'Checkbox is not checked. (1)');
66
66
67 this.test.assert(! this.cell_element_function(bool_index,
67 this.test.assert(! this.cell_element_function(bool_index,
@@ -69,10 +69,10 b' casper.notebook_test(function () {'
69 'Toggle button is not toggled. (1)');
69 'Toggle button is not toggled. (1)');
70
70
71 // Try toggling the bool by clicking on the checkbox.
71 // Try toggling the bool by clicking on the checkbox.
72 this.cell_element_function(bool_index, '.widget-area .widget-subarea .widget-hbox-single input', 'click');
72 this.cell_element_function(bool_index, '.widget-area .widget-subarea .widget-hbox input', 'click');
73
73
74 this.test.assert(this.cell_element_function(bool_index,
74 this.test.assert(this.cell_element_function(bool_index,
75 '.widget-area .widget-subarea .widget-hbox-single input', 'prop', ['checked']),
75 '.widget-area .widget-subarea .widget-hbox input', 'prop', ['checked']),
76 'Checkbox is checked. (2)');
76 'Checkbox is checked. (2)');
77
77
78 // Try toggling the bool by clicking on the toggle button.
78 // Try toggling the bool by clicking on the toggle button.
@@ -11,7 +11,7 b' casper.notebook_test(function () {'
11 'button = widgets.Button()\n'+
11 'button = widgets.Button()\n'+
12 'container.children = [button]\n'+
12 'container.children = [button]\n'+
13 'display(container)\n'+
13 'display(container)\n'+
14 'container.add_class("my-test-class")\n'+
14 'container._dom_classes = ["my-test-class"]\n'+
15 'print("Success")\n');
15 'print("Success")\n');
16 this.execute_cell_then(container_index, function(index){
16 this.execute_cell_then(container_index, function(index){
17
17
@@ -28,7 +28,7 b' casper.notebook_test(function () {'
28
28
29 this.test.assert(this.cell_element_exists(index,
29 this.test.assert(this.cell_element_exists(index,
30 '.widget-area .widget-subarea .my-test-class'),
30 '.widget-area .widget-subarea .my-test-class'),
31 'add_class works.');
31 '_dom_classes works.');
32
32
33 this.test.assert(this.cell_element_exists(index,
33 this.test.assert(this.cell_element_exists(index,
34 '.widget-area .widget-subarea .my-test-class button'),
34 '.widget-area .widget-subarea .my-test-class button'),
@@ -36,20 +36,20 b' casper.notebook_test(function () {'
36 });
36 });
37
37
38 index = this.append_cell(
38 index = this.append_cell(
39 'container.set_css("float", "right")\n'+
39 'container.box_style = "success"\n'+
40 'print("Success")\n');
40 'print("Success")\n');
41 this.execute_cell_then(index, function(index){
41 this.execute_cell_then(index, function(index){
42
42
43 this.test.assertEquals(this.get_output_cell(index).text, 'Success\n',
43 this.test.assertEquals(this.get_output_cell(index).text, 'Success\n',
44 'Set container class CSS cell executed with correct output.');
44 'Set box_style cell executed with correct output.');
45
45
46 this.test.assert(this.cell_element_function(container_index,
46 this.test.assert(this.cell_element_exists(container_index,
47 '.widget-area .widget-subarea .my-test-class', 'css', ['float'])=='right',
47 '.widget-box.alert-success'),
48 'set_css works.');
48 'Set box_style works.');
49 });
49 });
50
50
51 index = this.append_cell(
51 index = this.append_cell(
52 'container.remove_class("my-test-class")\n'+
52 'container._dom_classes = []\n'+
53 'print("Success")\n');
53 'print("Success")\n');
54 this.execute_cell_then(index, function(index){
54 this.execute_cell_then(index, function(index){
55
55
@@ -58,7 +58,7 b' casper.notebook_test(function () {'
58
58
59 this.test.assert(! this.cell_element_exists(container_index,
59 this.test.assert(! this.cell_element_exists(container_index,
60 '.widget-area .widget-subarea .my-test-class'),
60 '.widget-area .widget-subarea .my-test-class'),
61 'remove_class works.');
61 '_dom_classes can be used to remove a class.');
62 });
62 });
63
63
64 index = this.append_cell(
64 index = this.append_cell(
@@ -7,11 +7,11 b' casper.notebook_test(function () {'
7 this.execute_cell_then(index);
7 this.execute_cell_then(index);
8
8
9 var float_text = {};
9 var float_text = {};
10 float_text.query = '.widget-area .widget-subarea .widget-hbox-single .my-second-float-text';
10 float_text.query = '.widget-area .widget-subarea .my-second-float-text input';
11 float_text.index = this.append_cell(
11 float_text.index = this.append_cell(
12 'float_widget = widgets.FloatText()\n' +
12 'float_widget = widgets.FloatText()\n' +
13 'display(float_widget)\n' +
13 'display(float_widget)\n' +
14 'float_widget.add_class("my-second-float-text", selector="input")\n' +
14 'float_widget._dom_classes = ["my-second-float-text"]\n' +
15 'print(float_widget.model_id)\n');
15 'print(float_widget.model_id)\n');
16 this.execute_cell_then(float_text.index, function(index){
16 this.execute_cell_then(float_text.index, function(index){
17 float_text.model_id = this.get_output_cell(index).text.trim();
17 float_text.model_id = this.get_output_cell(index).text.trim();
@@ -55,9 +55,9 b' casper.notebook_test(function () {'
55 'Invald float textbox value caught and filtered.');
55 'Invald float textbox value caught and filtered.');
56 });
56 });
57
57
58 var float_text_query = '.widget-area .widget-subarea .widget-hbox-single .widget-numeric-text';
58 var float_text_query = '.widget-area .widget-subarea .widget-numeric-text';
59 var slider = {};
59 var slider = {};
60 slider.query = '.widget-area .widget-subarea .widget-hbox-single .slider';
60 slider.query = '.widget-area .widget-subarea .slider';
61 slider.index = this.append_cell(
61 slider.index = this.append_cell(
62 'floatrange = [widgets.BoundedFloatText(), \n' +
62 'floatrange = [widgets.BoundedFloatText(), \n' +
63 ' widgets.FloatSlider()]\n' +
63 ' widgets.FloatSlider()]\n' +
@@ -23,11 +23,7 b' casper.notebook_test(function () {'
23 'image.value = data\n' +
23 'image.value = data\n' +
24 'image.width = "50px"\n' +
24 'image.width = "50px"\n' +
25 'image.height = "50px"\n' +
25 'image.height = "50px"\n' +
26 // Set css that will make the image render within the PhantomJS visible
27 // window. If we don't do this, the captured image will be black.
28 'image.set_css({"background": "blue", "z-index": "9999", "position": "fixed", "top": "0px", "left": "0px"})\n' +
29 'display(image)\n' +
26 'display(image)\n' +
30 'image.add_class("my-test-image")\n' +
31 'print("Success")\n');
27 'print("Success")\n');
32 this.execute_cell_then(image_index, function(index){
28 this.execute_cell_then(image_index, function(index){
33
29
@@ -7,11 +7,11 b' casper.notebook_test(function () {'
7 this.execute_cell_then(index);
7 this.execute_cell_then(index);
8
8
9 var int_text = {};
9 var int_text = {};
10 int_text.query = '.widget-area .widget-subarea .widget-hbox-single .my-second-int-text';
10 int_text.query = '.widget-area .widget-subarea .my-second-int-text input';
11 int_text.index = this.append_cell(
11 int_text.index = this.append_cell(
12 'int_widget = widgets.IntText()\n' +
12 'int_widget = widgets.IntText()\n' +
13 'display(int_widget)\n' +
13 'display(int_widget)\n' +
14 'int_widget.add_class("my-second-int-text", selector="input")\n' +
14 'int_widget._dom_classes = ["my-second-int-text"]\n' +
15 'print(int_widget.model_id)\n');
15 'print(int_widget.model_id)\n');
16 this.execute_cell_then(int_text.index, function(index){
16 this.execute_cell_then(int_text.index, function(index){
17 int_text.model_id = this.get_output_cell(index).text.trim();
17 int_text.model_id = this.get_output_cell(index).text.trim();
@@ -62,14 +62,14 b' casper.notebook_test(function () {'
62 this.execute_cell_then(index);
62 this.execute_cell_then(index);
63
63
64
64
65 var slider_query = '.widget-area .widget-subarea .widget-hbox-single .slider';
65 var slider_query = '.widget-area .widget-subarea .slider';
66 var int_text2 = {};
66 var int_text2 = {};
67 int_text2.query = '.widget-area .widget-subarea .widget-hbox-single .my-second-num-test-text';
67 int_text2.query = '.widget-area .widget-subarea .my-second-num-test-text input';
68 int_text2.index = this.append_cell(
68 int_text2.index = this.append_cell(
69 'intrange = [widgets.BoundedIntTextWidget(),\n' +
69 'intrange = [widgets.BoundedIntTextWidget(),\n' +
70 ' widgets.IntSliderWidget()]\n' +
70 ' widgets.IntSliderWidget()]\n' +
71 '[display(intrange[i]) for i in range(2)]\n' +
71 '[display(intrange[i]) for i in range(2)]\n' +
72 'intrange[0].add_class("my-second-num-test-text", selector="input")\n' +
72 'intrange[0]._dom_classes = ["my-second-num-test-text"]\n' +
73 'print(intrange[0].model_id)\n');
73 'print(intrange[0].model_id)\n');
74 this.execute_cell_then(int_text2.index, function(index){
74 this.execute_cell_then(int_text2.index, function(index){
75 int_text2.model_id = this.get_output_cell(index).text.trim();
75 int_text2.model_id = this.get_output_cell(index).text.trim();
@@ -6,8 +6,8 b' casper.notebook_test(function () {'
6 'print("Success")');
6 'print("Success")');
7 this.execute_cell_then(index);
7 this.execute_cell_then(index);
8
8
9 var combo_selector = '.widget-area .widget-subarea .widget-hbox-single .btn-group .widget-combo-btn';
9 var combo_selector = '.widget-area .widget-subarea .widget-hbox .btn-group .widget-combo-btn';
10 var multibtn_selector = '.widget-area .widget-subarea .widget-hbox-single .btn-group[data-toggle="buttons-radio"]';
10 var multibtn_selector = '.widget-area .widget-subarea .widget-hbox .btn-group[data-toggle="buttons-radio"]';
11 var radio_selector = '.widget-area .widget-subarea .widget-hbox .widget-radio-box';
11 var radio_selector = '.widget-area .widget-subarea .widget-hbox .widget-radio-box';
12 var list_selector = '.widget-area .widget-subarea .widget-hbox .widget-listbox';
12 var list_selector = '.widget-area .widget-subarea .widget-hbox .widget-listbox';
13
13
@@ -115,7 +115,7 b' casper.notebook_test(function () {'
115 this.test.assert(verify_selection(this, 3), 'Multibutton selection updated view states correctly.');
115 this.test.assert(verify_selection(this, 3), 'Multibutton selection updated view states correctly.');
116
116
117 // Verify that selecting a combobox option updates all of the others.
117 // Verify that selecting a combobox option updates all of the others.
118 this.cell_element_function(selection_index, '.widget-area .widget-subarea .widget-hbox-single .btn-group ul.dropdown-menu li:nth-child(3) a', 'click');
118 this.cell_element_function(selection_index, '.widget-area .widget-subarea .widget-hbox .btn-group ul.dropdown-menu li:nth-child(3) a', 'click');
119 });
119 });
120 this.wait_for_idle();
120 this.wait_for_idle();
121 this.then(function () {
121 this.then(function () {
@@ -23,7 +23,7 b' casper.notebook_test(function () {'
23 'Widget subarea exists.');
23 'Widget subarea exists.');
24
24
25 this.test.assert(this.cell_element_exists(index,
25 this.test.assert(this.cell_element_exists(index,
26 '.widget-area .widget-subarea .widget-hbox-single input[type=text]'),
26 '.widget-area .widget-subarea .widget-hbox input[type=text]'),
27 'Textbox exists.');
27 'Textbox exists.');
28
28
29 this.test.assert(this.cell_element_exists(index,
29 this.test.assert(this.cell_element_exists(index,
@@ -35,7 +35,7 b' casper.notebook_test(function () {'
35 'Python set textarea value.');
35 'Python set textarea value.');
36
36
37 this.test.assert(this.cell_element_function(index,
37 this.test.assert(this.cell_element_function(index,
38 '.widget-area .widget-subarea .widget-hbox-single input[type=text]', 'val')=='xyz',
38 '.widget-area .widget-subarea .widget-hbox input[type=text]', 'val')=='xyz',
39 'Python set textbox value.');
39 'Python set textbox value.');
40
40
41 this.test.assert(this.cell_element_exists(string_index,
41 this.test.assert(this.cell_element_exists(string_index,
@@ -47,7 +47,7 b' casper.notebook_test(function () {'
47 'Python set textarea placeholder.');
47 'Python set textarea placeholder.');
48
48
49 this.test.assert(this.cell_element_function(index,
49 this.test.assert(this.cell_element_function(index,
50 '.widget-area .widget-subarea .widget-hbox-single input[type=text]', 'attr', ['placeholder'])=='abc',
50 '.widget-area .widget-subarea .widget-hbox input[type=text]', 'attr', ['placeholder'])=='abc',
51 'Python set textbox placehoder.');
51 'Python set textbox placehoder.');
52 });
52 });
53 });
53 });
@@ -18,7 +18,8 b' import collections'
18 from IPython.core.getipython import get_ipython
18 from IPython.core.getipython import get_ipython
19 from IPython.kernel.comm import Comm
19 from IPython.kernel.comm import Comm
20 from IPython.config import LoggingConfigurable
20 from IPython.config import LoggingConfigurable
21 from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, Tuple, Int, Set
21 from IPython.utils.traitlets import Unicode, Dict, Instance, Bool, List, \
22 CaselessStrEnum, Tuple, CUnicode, Int, Set
22 from IPython.utils.py3compat import string_types
23 from IPython.utils.py3compat import string_types
23
24
24 #-----------------------------------------------------------------------------
25 #-----------------------------------------------------------------------------
@@ -379,100 +380,60 b' class Widget(LoggingConfigurable):'
379
380
380 class DOMWidget(Widget):
381 class DOMWidget(Widget):
381 visible = Bool(True, help="Whether the widget is visible.", sync=True)
382 visible = Bool(True, help="Whether the widget is visible.", sync=True)
382 _css = List(sync=True) # Internal CSS property list: (selector, key, value)
383 _css = Tuple(sync=True, help="CSS property list: (selector, key, value)")
383
384 _dom_classes = Tuple(sync=True, help="DOM classes applied to widget.$el.")
384 def get_css(self, key, selector=""):
385
385 """Get a CSS property of the widget.
386 width = CUnicode(sync=True)
386
387 height = CUnicode(sync=True)
387 Note: This function does not actually request the CSS from the
388 padding = CUnicode(sync=True)
388 front-end; Only properties that have been set with set_css can be read.
389 margin = CUnicode(sync=True)
389
390
390 Parameters
391 color = Unicode(sync=True)
391 ----------
392 background_color = Unicode(sync=True)
392 key: unicode
393 border_color = Unicode(sync=True)
393 CSS key
394
394 selector: unicode (optional)
395 border_width = CUnicode(sync=True)
395 JQuery selector used when the CSS key/value was set.
396 border_radius = CUnicode(sync=True)
396 """
397 border_style = CaselessStrEnum(values=[ # http://www.w3schools.com/cssref/pr_border-style.asp
397 if selector in self._css and key in self._css[selector]:
398 'none',
398 return self._css[selector][key]
399 'hidden',
399 else:
400 'dotted',
400 return None
401 'dashed',
401
402 'solid',
402 def set_css(self, dict_or_key, value=None, selector=''):
403 'double',
403 """Set one or more CSS properties of the widget.
404 'groove',
404
405 'ridge',
405 This function has two signatures:
406 'inset',
406 - set_css(css_dict, selector='')
407 'outset',
407 - set_css(key, value, selector='')
408 'initial',
408
409 'inherit', ''],
409 Parameters
410 default_value='', sync=True)
410 ----------
411
411 css_dict : dict
412 font_style = CaselessStrEnum(values=[ # http://www.w3schools.com/cssref/pr_font_font-style.asp
412 CSS key/value pairs to apply
413 'normal',
413 key: unicode
414 'italic',
414 CSS key
415 'oblique',
415 value:
416 'initial',
416 CSS value
417 'inherit', ''],
417 selector: unicode (optional, kwarg only)
418 default_value='', sync=True)
418 JQuery selector to use to apply the CSS key/value. If no selector
419 font_weight = CaselessStrEnum(values=[ # http://www.w3schools.com/cssref/pr_font_weight.asp
419 is provided, an empty selector is used. An empty selector makes the
420 'normal',
420 front-end try to apply the css to a default element. The default
421 'bold',
421 element is an attribute unique to each view, which is a DOM element
422 'bolder',
422 of the view that should be styled with common CSS (see
423 'lighter',
423 `$el_to_style` in the Javascript code).
424 'initial',
424 """
425 'inherit', ''] + [str(100 * (i+1)) for i in range(9)],
425 if value is None:
426 default_value='', sync=True)
426 css_dict = dict_or_key
427 font_size = CUnicode(sync=True)
427 else:
428 font_family = Unicode(sync=True)
428 css_dict = {dict_or_key: value}
429
429
430 def __init__(self, *pargs, **kwargs):
430 for (key, value) in css_dict.items():
431 super(DOMWidget, self).__init__(*pargs, **kwargs)
431 # First remove the selector/key pair from the css list if it exists.
432
432 # Then add the selector/key pair and new value to the bottom of the
433 def _validate_border(name, old, new):
433 # list.
434 if new is not None and new != '':
434 self._css = [x for x in self._css if not (x[0]==selector and x[1]==key)]
435 if name != 'border_width' and not self.border_width:
435 self._css += [(selector, key, value)]
436 self.border_width = 1
436 self.send_state('_css')
437 if name != 'border_style' and self.border_style == '':
437
438 self.border_style = 'solid'
438 def add_class(self, class_names, selector=""):
439 self.on_trait_change(_validate_border, ['border_width', 'border_style', 'border_color'])
439 """Add class[es] to a DOM element.
440
441 Parameters
442 ----------
443 class_names: unicode or list
444 Class name(s) to add to the DOM element(s).
445 selector: unicode (optional)
446 JQuery selector to select the DOM element(s) that the class(es) will
447 be added to.
448 """
449 class_list = class_names
450 if isinstance(class_list, (list, tuple)):
451 class_list = ' '.join(class_list)
452
453 self.send({
454 "msg_type" : "add_class",
455 "class_list" : class_list,
456 "selector" : selector
457 })
458
459 def remove_class(self, class_names, selector=""):
460 """Remove class[es] from a DOM element.
461
462 Parameters
463 ----------
464 class_names: unicode or list
465 Class name(s) to remove from the DOM element(s).
466 selector: unicode (optional)
467 JQuery selector to select the DOM element(s) that the class(es) will
468 be removed from.
469 """
470 class_list = class_names
471 if isinstance(class_list, (list, tuple)):
472 class_list = ' '.join(class_list)
473
474 self.send({
475 "msg_type" : "remove_class",
476 "class_list" : class_list,
477 "selector" : selector,
478 })
@@ -14,7 +14,7 b' Represents a boolean using a widget.'
14 # Imports
14 # Imports
15 #-----------------------------------------------------------------------------
15 #-----------------------------------------------------------------------------
16 from .widget import DOMWidget
16 from .widget import DOMWidget
17 from IPython.utils.traitlets import Unicode, Bool
17 from IPython.utils.traitlets import Unicode, Bool, CaselessStrEnum
18 from IPython.utils.warn import DeprecatedClass
18 from IPython.utils.warn import DeprecatedClass
19
19
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
@@ -37,6 +37,11 b' class ToggleButton(_Bool):'
37
37
38 _view_name = Unicode('ToggleButtonView', sync=True)
38 _view_name = Unicode('ToggleButtonView', sync=True)
39
39
40 button_style = CaselessStrEnum(
41 values=['primary', 'success', 'info', 'warning', 'danger', ''],
42 default_value='', allow_none=True, sync=True, help="""Use a
43 predefined styling for the button.""")
44
40
45
41 # Remove in IPython 4.0
46 # Remove in IPython 4.0
42 CheckboxWidget = DeprecatedClass(Checkbox, 'CheckboxWidget')
47 CheckboxWidget = DeprecatedClass(Checkbox, 'CheckboxWidget')
@@ -18,6 +18,21 b' class Box(DOMWidget):'
18 # Using a tuple here to force reassignment to update the list.
18 # Using a tuple here to force reassignment to update the list.
19 # When a proper notifying-list trait exists, that is what should be used here.
19 # When a proper notifying-list trait exists, that is what should be used here.
20 children = Tuple(sync=True, allow_none=False)
20 children = Tuple(sync=True, allow_none=False)
21
22 _overflow_values = ['visible', 'hidden', 'scroll', 'auto', 'initial', 'inherit', '']
23 overflow_x = CaselessStrEnum(
24 values=_overflow_values,
25 default_value='', allow_none=False, sync=True, help="""Specifies what
26 happens to content that is too large for the rendered region.""")
27 overflow_y = CaselessStrEnum(
28 values=_overflow_values,
29 default_value='', allow_none=False, sync=True, help="""Specifies what
30 happens to content that is too large for the rendered region.""")
31
32 box_style = CaselessStrEnum(
33 values=['success', 'info', 'warning', 'danger', ''],
34 default_value='', allow_none=True, sync=True, help="""Use a
35 predefined styling for the box.""")
21
36
22 def __init__(self, children = (), **kwargs):
37 def __init__(self, children = (), **kwargs):
23 kwargs['children'] = children
38 kwargs['children'] = children
@@ -15,7 +15,7 b' click events on the button and trigger backend code when the clicks are fired.'
15 # Imports
15 # Imports
16 #-----------------------------------------------------------------------------
16 #-----------------------------------------------------------------------------
17 from .widget import DOMWidget, CallbackDispatcher
17 from .widget import DOMWidget, CallbackDispatcher
18 from IPython.utils.traitlets import Unicode, Bool
18 from IPython.utils.traitlets import Unicode, Bool, CaselessStrEnum
19 from IPython.utils.warn import DeprecatedClass
19 from IPython.utils.warn import DeprecatedClass
20
20
21 #-----------------------------------------------------------------------------
21 #-----------------------------------------------------------------------------
@@ -31,6 +31,11 b' class Button(DOMWidget):'
31 # Keys
31 # Keys
32 description = Unicode('', help="Description of the button (label).", sync=True)
32 description = Unicode('', help="Description of the button (label).", sync=True)
33 disabled = Bool(False, help="Enable or disable user changes.", sync=True)
33 disabled = Bool(False, help="Enable or disable user changes.", sync=True)
34
35 button_style = CaselessStrEnum(
36 values=['primary', 'success', 'info', 'warning', 'danger', ''],
37 default_value='', allow_none=True, sync=True, help="""Use a
38 predefined styling for the button.""")
34
39
35 def __init__(self, **kwargs):
40 def __init__(self, **kwargs):
36 """Constructor"""
41 """Constructor"""
@@ -14,7 +14,7 b' Represents an unbounded float using a widget.'
14 # Imports
14 # Imports
15 #-----------------------------------------------------------------------------
15 #-----------------------------------------------------------------------------
16 from .widget import DOMWidget
16 from .widget import DOMWidget
17 from IPython.utils.traitlets import Unicode, CFloat, Bool, Enum, Tuple
17 from IPython.utils.traitlets import Unicode, CFloat, Bool, CaselessStrEnum, Tuple
18 from IPython.utils.warn import DeprecatedClass
18 from IPython.utils.warn import DeprecatedClass
19
19
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
@@ -53,15 +53,22 b' class BoundedFloatText(_BoundedFloat):'
53
53
54 class FloatSlider(_BoundedFloat):
54 class FloatSlider(_BoundedFloat):
55 _view_name = Unicode('FloatSliderView', sync=True)
55 _view_name = Unicode('FloatSliderView', sync=True)
56 orientation = Enum([u'horizontal', u'vertical'], u'horizontal',
56 orientation = CaselessStrEnum(values=['horizontal', 'vertical'],
57 help="Vertical or horizontal.", sync=True)
57 default_value='horizontal',
58 help="Vertical or horizontal.", allow_none=False, sync=True)
58 _range = Bool(False, help="Display a range selector", sync=True)
59 _range = Bool(False, help="Display a range selector", sync=True)
59 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
60 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
61 slider_color = Unicode(sync=True)
60
62
61
63
62 class FloatProgress(_BoundedFloat):
64 class FloatProgress(_BoundedFloat):
63 _view_name = Unicode('ProgressView', sync=True)
65 _view_name = Unicode('ProgressView', sync=True)
64
66
67 bar_style = CaselessStrEnum(
68 values=['success', 'info', 'warning', 'danger', ''],
69 default_value='', allow_none=True, sync=True, help="""Use a
70 predefined styling for the progess bar.""")
71
65 class _FloatRange(_Float):
72 class _FloatRange(_Float):
66 value = Tuple(CFloat, CFloat, default_value=(0.0, 1.0), help="Tuple of (lower, upper) bounds", sync=True)
73 value = Tuple(CFloat, CFloat, default_value=(0.0, 1.0), help="Tuple of (lower, upper) bounds", sync=True)
67 lower = CFloat(0.0, help="Lower bound", sync=False)
74 lower = CFloat(0.0, help="Lower bound", sync=False)
@@ -158,10 +165,12 b' class _BoundedFloatRange(_FloatRange):'
158
165
159 class FloatRangeSlider(_BoundedFloatRange):
166 class FloatRangeSlider(_BoundedFloatRange):
160 _view_name = Unicode('FloatSliderView', sync=True)
167 _view_name = Unicode('FloatSliderView', sync=True)
161 orientation = Enum([u'horizontal', u'vertical'], u'horizontal',
168 orientation = CaselessStrEnum(values=['horizontal', 'vertical'],
169 default_value='horizontal', allow_none=False,
162 help="Vertical or horizontal.", sync=True)
170 help="Vertical or horizontal.", sync=True)
163 _range = Bool(True, help="Display a range selector", sync=True)
171 _range = Bool(True, help="Display a range selector", sync=True)
164 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
172 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
173 slider_color = Unicode(sync=True)
165
174
166 # Remove in IPython 4.0
175 # Remove in IPython 4.0
167 FloatTextWidget = DeprecatedClass(FloatText, 'FloatTextWidget')
176 FloatTextWidget = DeprecatedClass(FloatText, 'FloatTextWidget')
@@ -14,7 +14,7 b' Represents an unbounded int using a widget.'
14 # Imports
14 # Imports
15 #-----------------------------------------------------------------------------
15 #-----------------------------------------------------------------------------
16 from .widget import DOMWidget
16 from .widget import DOMWidget
17 from IPython.utils.traitlets import Unicode, CInt, Bool, Enum, Tuple
17 from IPython.utils.traitlets import Unicode, CInt, Bool, CaselessStrEnum, Tuple
18 from IPython.utils.warn import DeprecatedClass
18 from IPython.utils.warn import DeprecatedClass
19
19
20 #-----------------------------------------------------------------------------
20 #-----------------------------------------------------------------------------
@@ -58,16 +58,23 b' class BoundedIntText(_BoundedInt):'
58 class IntSlider(_BoundedInt):
58 class IntSlider(_BoundedInt):
59 """Slider widget that represents a int bounded by a minimum and maximum value."""
59 """Slider widget that represents a int bounded by a minimum and maximum value."""
60 _view_name = Unicode('IntSliderView', sync=True)
60 _view_name = Unicode('IntSliderView', sync=True)
61 orientation = Enum([u'horizontal', u'vertical'], u'horizontal',
61 orientation = CaselessStrEnum(values=['horizontal', 'vertical'],
62 default_value='horizontal', allow_none=False,
62 help="Vertical or horizontal.", sync=True)
63 help="Vertical or horizontal.", sync=True)
63 _range = Bool(False, help="Display a range selector", sync=True)
64 _range = Bool(False, help="Display a range selector", sync=True)
64 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
65 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
66 slider_color = Unicode(sync=True)
65
67
66
68
67 class IntProgress(_BoundedInt):
69 class IntProgress(_BoundedInt):
68 """Progress bar that represents a int bounded by a minimum and maximum value."""
70 """Progress bar that represents a int bounded by a minimum and maximum value."""
69 _view_name = Unicode('ProgressView', sync=True)
71 _view_name = Unicode('ProgressView', sync=True)
70
72
73 bar_style = CaselessStrEnum(
74 values=['success', 'info', 'warning', 'danger', ''],
75 default_value='', allow_none=True, sync=True, help="""Use a
76 predefined styling for the progess bar.""")
77
71 class _IntRange(_Int):
78 class _IntRange(_Int):
72 value = Tuple(CInt, CInt, default_value=(0, 1), help="Tuple of (lower, upper) bounds", sync=True)
79 value = Tuple(CInt, CInt, default_value=(0, 1), help="Tuple of (lower, upper) bounds", sync=True)
73 lower = CInt(0, help="Lower bound", sync=False)
80 lower = CInt(0, help="Lower bound", sync=False)
@@ -162,10 +169,12 b' class _BoundedIntRange(_IntRange):'
162
169
163 class IntRangeSlider(_BoundedIntRange):
170 class IntRangeSlider(_BoundedIntRange):
164 _view_name = Unicode('IntSliderView', sync=True)
171 _view_name = Unicode('IntSliderView', sync=True)
165 orientation = Enum([u'horizontal', u'vertical'], u'horizontal',
172 orientation = CaselessStrEnum(values=['horizontal', 'vertical'],
173 default_value='horizontal', allow_none=False,
166 help="Vertical or horizontal.", sync=True)
174 help="Vertical or horizontal.", sync=True)
167 _range = Bool(True, help="Display a range selector", sync=True)
175 _range = Bool(True, help="Display a range selector", sync=True)
168 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
176 readout = Bool(True, help="Display the current value of the slider next to it.", sync=True)
177 slider_color = Unicode(sync=True)
169
178
170 # Remove in IPython 4.0
179 # Remove in IPython 4.0
171 IntTextWidget = DeprecatedClass(IntText, 'IntTextWidget')
180 IntTextWidget = DeprecatedClass(IntText, 'IntTextWidget')
@@ -18,7 +18,7 b' from collections import OrderedDict'
18 from threading import Lock
18 from threading import Lock
19
19
20 from .widget import DOMWidget
20 from .widget import DOMWidget
21 from IPython.utils.traitlets import Unicode, List, Bool, Any, Dict, TraitError
21 from IPython.utils.traitlets import Unicode, List, Bool, Any, Dict, TraitError, CaselessStrEnum
22 from IPython.utils.py3compat import unicode_type
22 from IPython.utils.py3compat import unicode_type
23 from IPython.utils.warn import DeprecatedClass
23 from IPython.utils.warn import DeprecatedClass
24
24
@@ -115,11 +115,21 b' class ToggleButtons(_Selection):'
115 button can be toggled at any point in time."""
115 button can be toggled at any point in time."""
116 _view_name = Unicode('ToggleButtonsView', sync=True)
116 _view_name = Unicode('ToggleButtonsView', sync=True)
117
117
118 button_style = CaselessStrEnum(
119 values=['primary', 'success', 'info', 'warning', 'danger', ''],
120 default_value='', allow_none=True, sync=True, help="""Use a
121 predefined styling for the buttons.""")
122
118
123
119 class Dropdown(_Selection):
124 class Dropdown(_Selection):
120 """Allows you to select a single item from a dropdown."""
125 """Allows you to select a single item from a dropdown."""
121 _view_name = Unicode('DropdownView', sync=True)
126 _view_name = Unicode('DropdownView', sync=True)
122
127
128 button_style = CaselessStrEnum(
129 values=['primary', 'success', 'info', 'warning', 'danger', ''],
130 default_value='', allow_none=True, sync=True, help="""Use a
131 predefined styling for the buttons.""")
132
123
133
124 class RadioButtons(_Selection):
134 class RadioButtons(_Selection):
125 """Group of radio buttons that represent an enumeration. Only one radio
135 """Group of radio buttons that represent an enumeration. Only one radio
@@ -1,8 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "celltoolbar": "Slideshow",
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
4 "name": "",
12 "name": "",
5 "signature": "sha256:32ada55b57f8674a38435bae581b0f53caefd829dca5c5a7931ab3d04a7d86bb"
13 "signature": "sha256:608e0df06fe91ef1c013fd236dda33f7ae11019453f72ae446e8ce15bce82eb2"
6 },
14 },
7 "nbformat": 3,
15 "nbformat": 3,
8 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -240,7 +248,7 b''
240 "cell_type": "markdown",
248 "cell_type": "markdown",
241 "metadata": {},
249 "metadata": {},
242 "source": [
250 "source": [
243 "You first need to **import the WidgetManager**. You will use it later to register your view by name (the same name you used in the back-end). To import the widget manager, use the `require` method of [require.js](http://requirejs.org/) (as seen below)."
251 "You first need to **import the `widget` and `manager` modules**. You will use it later to register your view by name (the same name you used in the back-end). To import the modules, use the `require` method of [require.js](http://requirejs.org/) (as seen below)."
244 ]
252 ]
245 },
253 },
246 {
254 {
@@ -248,8 +256,7 b''
248 "collapsed": false,
256 "collapsed": false,
249 "input": [
257 "input": [
250 "%%javascript\n",
258 "%%javascript\n",
251 "\n",
259 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
252 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
253 " \n",
260 " \n",
254 "});"
261 "});"
255 ],
262 ],
@@ -281,16 +288,15 b''
281 "collapsed": false,
288 "collapsed": false,
282 "input": [
289 "input": [
283 "%%javascript\n",
290 "%%javascript\n",
284 "\n",
291 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
285 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
286 " \n",
292 " \n",
287 " // Define the HelloView\n",
293 " // Define the HelloView\n",
288 " var HelloView = IPython.DOMWidgetView.extend({\n",
294 " var HelloView = widget.DOMWidgetView.extend({\n",
289 " \n",
295 " \n",
290 " });\n",
296 " });\n",
291 " \n",
297 " \n",
292 " // Register the HelloView with the widget manager.\n",
298 " // Register the HelloView with the widget manager.\n",
293 " WidgetManager.register_widget_view('HelloView', HelloView);\n",
299 " manager.WidgetManager.register_widget_view('HelloView', HelloView);\n",
294 "});"
300 "});"
295 ],
301 ],
296 "language": "python",
302 "language": "python",
@@ -321,10 +327,9 b''
321 "collapsed": false,
327 "collapsed": false,
322 "input": [
328 "input": [
323 "%%javascript\n",
329 "%%javascript\n",
324 "\n",
330 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
325 "require([\"widgets/js/widget\"], function(WidgetManager){ \n",
326 " \n",
331 " \n",
327 " var HelloView = IPython.DOMWidgetView.extend({\n",
332 " var HelloView = widget.DOMWidgetView.extend({\n",
328 " \n",
333 " \n",
329 " // Render the view.\n",
334 " // Render the view.\n",
330 " render: function(){ \n",
335 " render: function(){ \n",
@@ -332,7 +337,7 b''
332 " },\n",
337 " },\n",
333 " });\n",
338 " });\n",
334 " \n",
339 " \n",
335 " WidgetManager.register_widget_view('HelloView', HelloView);\n",
340 " manager.WidgetManager.register_widget_view('HelloView', HelloView);\n",
336 "});"
341 "});"
337 ],
342 ],
338 "language": "python",
343 "language": "python",
@@ -442,17 +447,16 b''
442 "collapsed": false,
447 "collapsed": false,
443 "input": [
448 "input": [
444 "%%javascript\n",
449 "%%javascript\n",
445 "\n",
450 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
446 "require([\"widgets/js/widget\"], function(WidgetManager){ \n",
447 " \n",
451 " \n",
448 " var HelloView = IPython.DOMWidgetView.extend({\n",
452 " var HelloView = widget.DOMWidgetView.extend({\n",
449 " \n",
453 " \n",
450 " render: function(){ \n",
454 " render: function(){ \n",
451 " this.$el.text(this.model.get('value')); \n",
455 " this.$el.text(this.model.get('value')); \n",
452 " },\n",
456 " },\n",
453 " });\n",
457 " });\n",
454 " \n",
458 " \n",
455 " WidgetManager.register_widget_view('HelloView', HelloView);\n",
459 " manager.WidgetManager.register_widget_view('HelloView', HelloView);\n",
456 "});"
460 "});"
457 ],
461 ],
458 "language": "python",
462 "language": "python",
@@ -483,11 +487,9 b''
483 "collapsed": false,
487 "collapsed": false,
484 "input": [
488 "input": [
485 "%%javascript\n",
489 "%%javascript\n",
486 "\n",
490 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
487 "require([\"widgets/js/widget\"], function(WidgetManager){ \n",
488 " \n",
491 " \n",
489 " var HelloView = IPython.DOMWidgetView.extend({\n",
492 " var HelloView = widget.DOMWidgetView.extend({\n",
490 " \n",
491 " \n",
493 " \n",
492 " render: function(){ \n",
494 " render: function(){ \n",
493 " this.value_changed();\n",
495 " this.value_changed();\n",
@@ -499,7 +501,7 b''
499 " },\n",
501 " },\n",
500 " });\n",
502 " });\n",
501 " \n",
503 " \n",
502 " WidgetManager.register_widget_view('HelloView', HelloView);\n",
504 " manager.WidgetManager.register_widget_view('HelloView', HelloView);\n",
503 "});"
505 "});"
504 ],
506 ],
505 "language": "python",
507 "language": "python",
@@ -622,10 +624,9 b''
622 "collapsed": false,
624 "collapsed": false,
623 "input": [
625 "input": [
624 "%%javascript\n",
626 "%%javascript\n",
625 "\n",
627 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
626 "require([\"widgets/js/widget\"], function(WidgetManager){ \n",
627 " \n",
628 " \n",
628 " var SpinnerView = IPython.DOMWidgetView.extend({\n",
629 " var SpinnerView = widget.DOMWidgetView.extend({\n",
629 " \n",
630 " \n",
630 " render: function(){ \n",
631 " render: function(){ \n",
631 " \n",
632 " \n",
@@ -645,7 +646,7 b''
645 " },\n",
646 " },\n",
646 " });\n",
647 " });\n",
647 " \n",
648 " \n",
648 " WidgetManager.register_widget_view('SpinnerView', SpinnerView);\n",
649 " manager.WidgetManager.register_widget_view('SpinnerView', SpinnerView);\n",
649 "});"
650 "});"
650 ],
651 ],
651 "language": "python",
652 "language": "python",
@@ -676,10 +677,9 b''
676 "collapsed": false,
677 "collapsed": false,
677 "input": [
678 "input": [
678 "%%javascript\n",
679 "%%javascript\n",
679 "\n",
680 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
680 "require([\"widgets/js/widget\"], function(WidgetManager){ \n",
681 " \n",
681 " \n",
682 " var SpinnerView = IPython.DOMWidgetView.extend({\n",
682 " var SpinnerView = widget.DOMWidgetView.extend({\n",
683 " \n",
683 " \n",
684 " render: function(){ \n",
684 " render: function(){ \n",
685 "\n",
685 "\n",
@@ -709,7 +709,7 b''
709 " },\n",
709 " },\n",
710 " });\n",
710 " });\n",
711 " \n",
711 " \n",
712 " WidgetManager.register_widget_view('SpinnerView', SpinnerView);\n",
712 " manager.WidgetManager.register_widget_view('SpinnerView', SpinnerView);\n",
713 "});"
713 "});"
714 ],
714 ],
715 "language": "python",
715 "language": "python",
@@ -772,7 +772,7 b''
772 "input": [
772 "input": [
773 "from IPython.display import display\n",
773 "from IPython.display import display\n",
774 "w1 = SpinnerWidget(value=0)\n",
774 "w1 = SpinnerWidget(value=0)\n",
775 "w2 = widgets.IntSliderWidget()\n",
775 "w2 = widgets.IntSlider()\n",
776 "display(w1,w2)\n",
776 "display(w1,w2)\n",
777 "\n",
777 "\n",
778 "from IPython.utils.traitlets import link\n",
778 "from IPython.utils.traitlets import link\n",
@@ -1,6 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": ""
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
12 "name": "",
13 "signature": "sha256:dc519f61f8a484b3a8f0b05ad1891fad701324c837325b12d31cce4f31647c2f"
4 },
14 },
5 "nbformat": 3,
15 "nbformat": 3,
6 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -24,8 +34,7 b''
24 ],
34 ],
25 "language": "python",
35 "language": "python",
26 "metadata": {},
36 "metadata": {},
27 "outputs": [],
37 "outputs": []
28 "prompt_number": 1
29 },
38 },
30 {
39 {
31 "cell_type": "markdown",
40 "cell_type": "markdown",
@@ -38,12 +47,11 b''
38 "cell_type": "code",
47 "cell_type": "code",
39 "collapsed": false,
48 "collapsed": false,
40 "input": [
49 "input": [
41 "notebook_name = widgets.TextWidget()"
50 "notebook_name = widgets.Text()"
42 ],
51 ],
43 "language": "python",
52 "language": "python",
44 "metadata": {},
53 "metadata": {},
45 "outputs": [],
54 "outputs": []
46 "prompt_number": 2
47 },
55 },
48 {
56 {
49 "cell_type": "markdown",
57 "cell_type": "markdown",
@@ -63,21 +71,7 b''
63 ],
71 ],
64 "language": "python",
72 "language": "python",
65 "metadata": {},
73 "metadata": {},
66 "outputs": [
74 "outputs": []
67 {
68 "javascript": [
69 "var model = IPython.notebook.kernel.widget_manager.get_model('8c6583524eb3422c99491730a3e1ce6c');\n",
70 "model.set('value', IPython.notebook.notebook_name);\n",
71 "model.save();"
72 ],
73 "metadata": {},
74 "output_type": "display_data",
75 "text": [
76 "<IPython.core.display.Javascript at 0x164ea50>"
77 ]
78 }
79 ],
80 "prompt_number": 3
81 },
75 },
82 {
76 {
83 "cell_type": "code",
77 "cell_type": "code",
@@ -88,17 +82,7 b''
88 ],
82 ],
89 "language": "python",
83 "language": "python",
90 "metadata": {},
84 "metadata": {},
91 "outputs": [
85 "outputs": []
92 {
93 "metadata": {},
94 "output_type": "pyout",
95 "prompt_number": 4,
96 "text": [
97 "u'Export As (nbconvert).ipynb'"
98 ]
99 }
100 ],
101 "prompt_number": 4
102 },
86 },
103 {
87 {
104 "cell_type": "markdown",
88 "cell_type": "markdown",
@@ -111,14 +95,13 b''
111 "cell_type": "code",
95 "cell_type": "code",
112 "collapsed": false,
96 "collapsed": false,
113 "input": [
97 "input": [
114 "exporter_names = widgets.DropdownWidget(values=get_export_names(), value='html')\n",
98 "exporter_names = widgets.Dropdown(values=get_export_names(), value='html')\n",
115 "export_button = widgets.ButtonWidget(description=\"Export\")\n",
99 "export_button = widgets.Button(description=\"Export\")\n",
116 "download_link = widgets.HTMLWidget(visible=False)"
100 "download_link = widgets.HTML(visible=False)"
117 ],
101 ],
118 "language": "python",
102 "language": "python",
119 "metadata": {},
103 "metadata": {},
120 "outputs": [],
104 "outputs": []
121 "prompt_number": 5
122 },
105 },
123 {
106 {
124 "cell_type": "markdown",
107 "cell_type": "markdown",
@@ -159,8 +142,7 b''
159 ],
142 ],
160 "language": "python",
143 "language": "python",
161 "metadata": {},
144 "metadata": {},
162 "outputs": [],
145 "outputs": []
163 "prompt_number": 6
164 },
146 },
165 {
147 {
166 "cell_type": "markdown",
148 "cell_type": "markdown",
@@ -177,11 +159,10 b''
177 ],
159 ],
178 "language": "python",
160 "language": "python",
179 "metadata": {},
161 "metadata": {},
180 "outputs": [],
162 "outputs": []
181 "prompt_number": 7
182 }
163 }
183 ],
164 ],
184 "metadata": {}
165 "metadata": {}
185 }
166 }
186 ]
167 ]
187 }
168 } No newline at end of file
@@ -6,7 +6,17 b''
6 null
6 null
7 ]
7 ]
8 ],
8 ],
9 "name": ""
9 "kernelspec": {
10 "codemirror_mode": {
11 "name": "python",
12 "version": 2
13 },
14 "display_name": "Python 2",
15 "language": "python",
16 "name": "python2"
17 },
18 "name": "",
19 "signature": "sha256:25c43e4f530e049319d587a7e47734cab5b4b4f608f71aa234e821f43076afe8"
10 },
20 },
11 "nbformat": 3,
21 "nbformat": 3,
12 "nbformat_minor": 0,
22 "nbformat_minor": 0,
@@ -24,8 +34,7 b''
24 ],
34 ],
25 "language": "python",
35 "language": "python",
26 "metadata": {},
36 "metadata": {},
27 "outputs": [],
37 "outputs": []
28 "prompt_number": 1
29 },
38 },
30 {
39 {
31 "cell_type": "markdown",
40 "cell_type": "markdown",
@@ -69,8 +78,7 b''
69 ],
78 ],
70 "language": "python",
79 "language": "python",
71 "metadata": {},
80 "metadata": {},
72 "outputs": [],
81 "outputs": []
73 "prompt_number": 2
74 },
82 },
75 {
83 {
76 "cell_type": "code",
84 "cell_type": "code",
@@ -78,9 +86,9 b''
78 "input": [
86 "input": [
79 "%%javascript\n",
87 "%%javascript\n",
80 "\n",
88 "\n",
81 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
89 "require([\"widgets/js/widget\", \"widgets/js/manager\"], function(widget, manager){\n",
82 "\n",
90 "\n",
83 " var FilePickerView = IPython.WidgetView.extend({\n",
91 " var FilePickerView = widget.DOMWidgetView.extend({\n",
84 " render: function(){\n",
92 " render: function(){\n",
85 " // Render the view.\n",
93 " // Render the view.\n",
86 " this.setElement($('<input />')\n",
94 " this.setElement($('<input />')\n",
@@ -121,69 +129,12 b''
121 " });\n",
129 " });\n",
122 " \n",
130 " \n",
123 " // Register the DatePickerView with the widget manager.\n",
131 " // Register the DatePickerView with the widget manager.\n",
124 " WidgetManager.register_widget_view('FilePickerView', FilePickerView);\n",
132 " manager.WidgetManager.register_widget_view('FilePickerView', FilePickerView);\n",
125 "});"
133 "});"
126 ],
134 ],
127 "language": "python",
135 "language": "python",
128 "metadata": {},
136 "metadata": {},
129 "outputs": [
137 "outputs": []
130 {
131 "javascript": [
132 "\n",
133 "require([\"widgets/js/widget\"], function(WidgetManager){\n",
134 "\n",
135 " var FilePickerView = IPython.WidgetView.extend({\n",
136 " render: function(){\n",
137 " // Render the view.\n",
138 " this.setElement($('<input />')\n",
139 " .attr('type', 'file'));\n",
140 " },\n",
141 " \n",
142 " events: {\n",
143 " // List of events and their handlers.\n",
144 " 'change': 'handle_file_change',\n",
145 " },\n",
146 " \n",
147 " handle_file_change: function(evt) { \n",
148 " // Handle when the user has changed the file.\n",
149 " \n",
150 " // Retrieve the first (and only!) File from the FileList object\n",
151 " var file = evt.target.files[0];\n",
152 " if (file) {\n",
153 "\n",
154 " // Read the file's textual content and set value to those contents.\n",
155 " var that = this;\n",
156 " var file_reader = new FileReader();\n",
157 " file_reader.onload = function(e) {\n",
158 " that.model.set('value', e.target.result);\n",
159 " that.touch();\n",
160 " }\n",
161 " file_reader.readAsText(file);\n",
162 " } else {\n",
163 "\n",
164 " // The file couldn't be opened. Send an error msg to the\n",
165 " // back-end.\n",
166 " this.send({ 'event': 'error' });\n",
167 " }\n",
168 "\n",
169 " // Set the filename of the file.\n",
170 " this.model.set('filename', file.name);\n",
171 " this.touch();\n",
172 " },\n",
173 " });\n",
174 " \n",
175 " // Register the DatePickerView with the widget manager.\n",
176 " WidgetManager.register_widget_view('FilePickerView', FilePickerView);\n",
177 "});"
178 ],
179 "metadata": {},
180 "output_type": "display_data",
181 "text": [
182 "<IPython.core.display.Javascript at 0x36df2d0>"
183 ]
184 }
185 ],
186 "prompt_number": 3
187 },
138 },
188 {
139 {
189 "cell_type": "markdown",
140 "cell_type": "markdown",
@@ -222,27 +173,10 b''
222 ],
173 ],
223 "language": "python",
174 "language": "python",
224 "metadata": {},
175 "metadata": {},
225 "outputs": [
176 "outputs": []
226 {
227 "output_type": "stream",
228 "stream": "stdout",
229 "text": [
230 "Loading test.txt\n"
231 ]
232 },
233 {
234 "output_type": "stream",
235 "stream": "stdout",
236 "text": [
237 "Loaded, file contents: Hello World!\n",
238 "\n"
239 ]
240 }
241 ],
242 "prompt_number": 4
243 }
177 }
244 ],
178 ],
245 "metadata": {}
179 "metadata": {}
246 }
180 }
247 ]
181 ]
248 }
182 } No newline at end of file
@@ -1,7 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
3 "name": "",
12 "name": "",
4 "signature": "sha256:6873fce87f9a4123795746d3857404b83e1bb099cc5a968aa85100dade070c41"
13 "signature": "sha256:8e469f292b096d750dc8eeb71caa8c08b26bc722708314a26a7684c380ccd20f"
5 },
14 },
6 "nbformat": 3,
15 "nbformat": 3,
7 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -53,9 +62,8 b''
53 "- [Widget Basics](Widget Basics.ipynb) \n",
62 "- [Widget Basics](Widget Basics.ipynb) \n",
54 "- [Widget Events](Widget Events.ipynb) \n",
63 "- [Widget Events](Widget Events.ipynb) \n",
55 "- [Widget Placement](Widget Placement.ipynb) \n",
64 "- [Widget Placement](Widget Placement.ipynb) \n",
56 "- [Widget Styles](Widget Styles.ipynb) \n",
65 "- [Widget Styling](Widget Styling.ipynb) \n",
57 "- [Widget Alignment](Widget Alignment.ipynb) \n",
66 "- [Custom Widget](Custom Widget - Hello World.ipynb)"
58 "- [Custom Widgets](Custom Widgets.ipynb)"
59 ]
67 ]
60 },
68 },
61 {
69 {
@@ -1,6 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "name": ""
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
12 "name": "",
13 "signature": "sha256:3dfbc0dcb1fefc9ef028022760916b0300e14f71bf8e27589e61800841d5839c"
4 },
14 },
5 "nbformat": 3,
15 "nbformat": 3,
6 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -13,7 +23,6 b''
13 "input": [
23 "input": [
14 "# Console related imports.\n",
24 "# Console related imports.\n",
15 "from subprocess import Popen, PIPE\n",
25 "from subprocess import Popen, PIPE\n",
16 "import fcntl\n",
17 "import os\n",
26 "import os\n",
18 "from IPython.utils.py3compat import bytes_to_str, string_types\n",
27 "from IPython.utils.py3compat import bytes_to_str, string_types\n",
19 "\n",
28 "\n",
@@ -23,8 +32,7 b''
23 ],
32 ],
24 "language": "python",
33 "language": "python",
25 "metadata": {},
34 "metadata": {},
26 "outputs": [],
35 "outputs": []
27 "prompt_number": 1
28 },
36 },
29 {
37 {
30 "cell_type": "markdown",
38 "cell_type": "markdown",
@@ -65,9 +73,12 b''
65 "\n",
73 "\n",
66 "def set_pipe_nonblocking(pipe):\n",
74 "def set_pipe_nonblocking(pipe):\n",
67 " \"\"\"Set a pipe as non-blocking\"\"\"\n",
75 " \"\"\"Set a pipe as non-blocking\"\"\"\n",
68 " fl = fcntl.fcntl(pipe, fcntl.F_GETFL)\n",
76 " try:\n",
69 " fcntl.fcntl(pipe, fcntl.F_SETFL, fl | os.O_NONBLOCK)\n",
77 " import fcntl\n",
70 "\n",
78 " fl = fcntl.fcntl(pipe, fcntl.F_GETFL)\n",
79 " fcntl.fcntl(pipe, fcntl.F_SETFL, fl | os.O_NONBLOCK)\n",
80 " except:\n",
81 " pass\n",
71 "\n",
82 "\n",
72 "kernel = get_ipython().kernel\n",
83 "kernel = get_ipython().kernel\n",
73 "def run_command(command, append_output, has_user_exited=None):\n",
84 "def run_command(command, append_output, has_user_exited=None):\n",
@@ -112,8 +123,7 b''
112 ],
123 ],
113 "language": "python",
124 "language": "python",
114 "metadata": {},
125 "metadata": {},
115 "outputs": [],
126 "outputs": []
116 "prompt_number": 2
117 },
127 },
118 {
128 {
119 "cell_type": "markdown",
129 "cell_type": "markdown",
@@ -126,29 +136,27 b''
126 "cell_type": "code",
136 "cell_type": "code",
127 "collapsed": false,
137 "collapsed": false,
128 "input": [
138 "input": [
129 "console_container = widgets.ContainerWidget(visible=False)\n",
139 "console_container = widgets.VBox(visible=False)\n",
130 "console_container.set_css('padding', '10px')\n",
140 "console_container.padding = '10px'\n",
131 "\n",
132 "console_style = {\n",
133 " 'font-family': 'monospace',\n",
134 " 'color': '#AAAAAA',\n",
135 " 'background': 'black',\n",
136 " 'width': '800px',\n",
137 "}\n",
138 "\n",
141 "\n",
139 "output_box = widgets.TextareaWidget()\n",
142 "output_box = widgets.Textarea()\n",
140 "output_box.set_css(console_style)\n",
143 "output_box.height = '400px'\n",
141 "output_box.set_css('height', '400px')\n",
144 "output_box.font_family = 'monospace'\n",
145 "output_box.color = '#AAAAAA'\n",
146 "output_box.background_color = 'black'\n",
147 "output_box.width = '800px'\n",
142 "\n",
148 "\n",
143 "input_box = widgets.TextWidget()\n",
149 "input_box = widgets.Text()\n",
144 "input_box.set_css(console_style)\n",
150 "input_box.font_family = 'monospace'\n",
151 "input_box.color = '#AAAAAA'\n",
152 "input_box.background_color = 'black'\n",
153 "input_box.width = '800px'\n",
145 "\n",
154 "\n",
146 "console_container.children = [output_box, input_box]"
155 "console_container.children = [output_box, input_box]"
147 ],
156 ],
148 "language": "python",
157 "language": "python",
149 "metadata": {},
158 "metadata": {},
150 "outputs": [],
159 "outputs": []
151 "prompt_number": 3
152 },
160 },
153 {
161 {
154 "cell_type": "markdown",
162 "cell_type": "markdown",
@@ -188,8 +196,7 b''
188 ],
196 ],
189 "language": "python",
197 "language": "python",
190 "metadata": {},
198 "metadata": {},
191 "outputs": [],
199 "outputs": []
192 "prompt_number": 4
193 },
200 },
194 {
201 {
195 "cell_type": "markdown",
202 "cell_type": "markdown",
@@ -202,7 +209,7 b''
202 "cell_type": "code",
209 "cell_type": "code",
203 "collapsed": false,
210 "collapsed": false,
204 "input": [
211 "input": [
205 "toggle_button = widgets.ButtonWidget(description=\"Start Console\")\n",
212 "toggle_button = widgets.Button(description=\"Start Console\")\n",
206 "def toggle_console(sender):\n",
213 "def toggle_console(sender):\n",
207 " console_container.visible = not console_container.visible\n",
214 " console_container.visible = not console_container.visible\n",
208 " if console_container.visible:\n",
215 " if console_container.visible:\n",
@@ -217,8 +224,7 b''
217 ],
224 ],
218 "language": "python",
225 "language": "python",
219 "metadata": {},
226 "metadata": {},
220 "outputs": [],
227 "outputs": []
221 "prompt_number": 5
222 }
228 }
223 ],
229 ],
224 "metadata": {}
230 "metadata": {}
@@ -1,7 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
3 "name": "",
12 "name": "",
4 "signature": "sha256:7b872a09743460a3ce0358e9010c3b4baf5136b79a2a075964dea2c2fd85c82e"
13 "signature": "sha256:474731659fb14b86672d1dafb2b497fa280082ab40a8a82fe2cde1b6d9b88a6e"
5 },
14 },
6 "nbformat": 3,
15 "nbformat": 3,
7 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -44,8 +53,7 b''
44 ],
53 ],
45 "language": "python",
54 "language": "python",
46 "metadata": {},
55 "metadata": {},
47 "outputs": [],
56 "outputs": []
48 "prompt_number": 1
49 },
57 },
50 {
58 {
51 "cell_type": "code",
59 "cell_type": "code",
@@ -67,14 +75,14 b''
67 " self.namespace = NamespaceMagics()\n",
75 " self.namespace = NamespaceMagics()\n",
68 " self.namespace.shell = ipython.kernel.shell\n",
76 " self.namespace.shell = ipython.kernel.shell\n",
69 " \n",
77 " \n",
70 " self._popout = widgets.PopupWidget()\n",
78 " self._popout = widgets.Popup()\n",
71 " self._popout.description = \"Variable Inspector\"\n",
79 " self._popout.description = \"Variable Inspector\"\n",
72 " self._popout.button_text = self._popout.description\n",
80 " self._popout.button_text = self._popout.description\n",
73 "\n",
81 "\n",
74 " self._modal_body = widgets.ContainerWidget()\n",
82 " self._modal_body = widgets.VBox()\n",
75 " self._modal_body.set_css('overflow-y', 'scroll')\n",
83 " self._modal_body.overflow_y = 'scroll'\n",
76 "\n",
84 "\n",
77 " self._modal_body_label = widgets.HTMLWidget(value = 'Not hooked')\n",
85 " self._modal_body_label = widgets.HTML(value = 'Not hooked')\n",
78 " self._modal_body.children = [self._modal_body_label]\n",
86 " self._modal_body.children = [self._modal_body_label]\n",
79 "\n",
87 "\n",
80 " self._popout.children = [\n",
88 " self._popout.children = [\n",
@@ -82,12 +90,12 b''
82 " ]\n",
90 " ]\n",
83 " \n",
91 " \n",
84 " self._ipython = ipython\n",
92 " self._ipython = ipython\n",
85 " self._ipython.register_post_execute(self._fill)\n",
93 " self._ipython.events.register('post_run_cell', self._fill)\n",
86 "\n",
94 " \n",
87 " def close(self):\n",
95 " def close(self):\n",
88 " \"\"\"Close and remove hooks.\"\"\"\n",
96 " \"\"\"Close and remove hooks.\"\"\"\n",
89 " if not self.closed:\n",
97 " if not self.closed:\n",
90 " del self._ipython._post_execute[self._fill]\n",
98 " self._ipython.events.unregister('post_run_cell', self._fill)\n",
91 " self._popout.close()\n",
99 " self._popout.close()\n",
92 " self.closed = True\n",
100 " self.closed = True\n",
93 " VariableInspectorWindow.instance = None\n",
101 " VariableInspectorWindow.instance = None\n",
@@ -102,14 +110,11 b''
102 " def _ipython_display_(self):\n",
110 " def _ipython_display_(self):\n",
103 " \"\"\"Called when display() or pyout is used to display the Variable \n",
111 " \"\"\"Called when display() or pyout is used to display the Variable \n",
104 " Inspector.\"\"\"\n",
112 " Inspector.\"\"\"\n",
105 " self._popout._ipython_display_()\n",
113 " self._popout._ipython_display_()\n"
106 " self._popout.add_class('vbox')\n",
107 " self._modal_body.add_class('box-flex1')\n"
108 ],
114 ],
109 "language": "python",
115 "language": "python",
110 "metadata": {},
116 "metadata": {},
111 "outputs": [],
117 "outputs": []
112 "prompt_number": 2
113 },
118 },
114 {
119 {
115 "cell_type": "code",
120 "cell_type": "code",
@@ -120,8 +125,7 b''
120 ],
125 ],
121 "language": "python",
126 "language": "python",
122 "metadata": {},
127 "metadata": {},
123 "outputs": [],
128 "outputs": []
124 "prompt_number": 3
125 },
129 },
126 {
130 {
127 "cell_type": "heading",
131 "cell_type": "heading",
@@ -139,8 +143,7 b''
139 ],
143 ],
140 "language": "python",
144 "language": "python",
141 "metadata": {},
145 "metadata": {},
142 "outputs": [],
146 "outputs": []
143 "prompt_number": 4
144 },
147 },
145 {
148 {
146 "cell_type": "code",
149 "cell_type": "code",
@@ -150,8 +153,7 b''
150 ],
153 ],
151 "language": "python",
154 "language": "python",
152 "metadata": {},
155 "metadata": {},
153 "outputs": [],
156 "outputs": []
154 "prompt_number": 5
155 },
157 },
156 {
158 {
157 "cell_type": "code",
159 "cell_type": "code",
@@ -161,8 +163,7 b''
161 ],
163 ],
162 "language": "python",
164 "language": "python",
163 "metadata": {},
165 "metadata": {},
164 "outputs": [],
166 "outputs": []
165 "prompt_number": 6
166 },
167 },
167 {
168 {
168 "cell_type": "code",
169 "cell_type": "code",
@@ -172,8 +173,7 b''
172 ],
173 ],
173 "language": "python",
174 "language": "python",
174 "metadata": {},
175 "metadata": {},
175 "outputs": [],
176 "outputs": []
176 "prompt_number": 7
177 },
177 },
178 {
178 {
179 "cell_type": "code",
179 "cell_type": "code",
@@ -183,8 +183,17 b''
183 ],
183 ],
184 "language": "python",
184 "language": "python",
185 "metadata": {},
185 "metadata": {},
186 "outputs": [],
186 "outputs": []
187 "prompt_number": 8
187 },
188 {
189 "cell_type": "code",
190 "collapsed": false,
191 "input": [
192 "inspector.close()"
193 ],
194 "language": "python",
195 "metadata": {},
196 "outputs": []
188 }
197 }
189 ],
198 ],
190 "metadata": {}
199 "metadata": {}
@@ -1,8 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "celltoolbar": "Slideshow",
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
4 "name": "",
12 "name": "",
5 "signature": "sha256:916b80c91b959f78d7e5a9d5c9c7d371d3aa2b4476fdb19a7cb5cf9666d68d5b"
13 "signature": "sha256:c8af7f5d30b29ee52fe6a79cf0d573c9c2d5b2f522b04731249e3208671741d3"
6 },
14 },
7 "nbformat": 3,
15 "nbformat": 3,
8 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -110,14 +118,14 b''
110 "cell_type": "markdown",
118 "cell_type": "markdown",
111 "metadata": {},
119 "metadata": {},
112 "source": [
120 "source": [
113 "Widgets have their own display `repr` which allows them to be displayed using IPython's display framework. Constructing and returning an `IntSliderWidget` automatically displays the widget (as seen below). Widgets are **displayed inside the `widget area`**, which sits between the code cell and output. **You can hide all of the widgets** in the `widget area` by clicking the grey *x* in the margin."
121 "Widgets have their own display `repr` which allows them to be displayed using IPython's display framework. Constructing and returning an `IntSlider` automatically displays the widget (as seen below). Widgets are **displayed inside the `widget area`**, which sits between the code cell and output. **You can hide all of the widgets** in the `widget area` by clicking the grey *x* in the margin."
114 ]
122 ]
115 },
123 },
116 {
124 {
117 "cell_type": "code",
125 "cell_type": "code",
118 "collapsed": false,
126 "collapsed": false,
119 "input": [
127 "input": [
120 "IntSliderWidget()"
128 "IntSlider()"
121 ],
129 ],
122 "language": "python",
130 "language": "python",
123 "metadata": {},
131 "metadata": {},
@@ -147,7 +155,7 b''
147 "collapsed": false,
155 "collapsed": false,
148 "input": [
156 "input": [
149 "from IPython.display import display\n",
157 "from IPython.display import display\n",
150 "w = IntSliderWidget()\n",
158 "w = IntSlider()\n",
151 "display(w)"
159 "display(w)"
152 ],
160 ],
153 "language": "python",
161 "language": "python",
@@ -266,7 +274,7 b''
266 "cell_type": "code",
274 "cell_type": "code",
267 "collapsed": false,
275 "collapsed": false,
268 "input": [
276 "input": [
269 "w = IntSliderWidget()\n",
277 "w = IntSlider()\n",
270 "display(w)"
278 "display(w)"
271 ],
279 ],
272 "language": "python",
280 "language": "python",
@@ -352,7 +360,7 b''
352 "cell_type": "code",
360 "cell_type": "code",
353 "collapsed": false,
361 "collapsed": false,
354 "input": [
362 "input": [
355 "TextWidget(value='Hello World!', disabled=True)"
363 "Text(value='Hello World!', disabled=True)"
356 ],
364 ],
357 "language": "python",
365 "language": "python",
358 "metadata": {},
366 "metadata": {},
@@ -382,9 +390,9 b''
382 "collapsed": false,
390 "collapsed": false,
383 "input": [
391 "input": [
384 "from IPython.utils.traitlets import link\n",
392 "from IPython.utils.traitlets import link\n",
385 "a = FloatTextWidget()\n",
393 "a = FloatText()\n",
386 "b = FloatSliderWidget()\n",
394 "b = FloatSlider()\n",
387 "c = FloatProgressWidget()\n",
395 "c = FloatProgress()\n",
388 "display(a,b,c)\n",
396 "display(a,b,c)\n",
389 "\n",
397 "\n",
390 "\n",
398 "\n",
@@ -6,9 +6,17 b''
6 null
6 null
7 ]
7 ]
8 ],
8 ],
9 "celltoolbar": "Slideshow",
9 "kernelspec": {
10 "codemirror_mode": {
11 "name": "python",
12 "version": 2
13 },
14 "display_name": "Python 2",
15 "language": "python",
16 "name": "python2"
17 },
10 "name": "",
18 "name": "",
11 "signature": "sha256:43e4910dd01111e1206f4f7940a201d6d5e69485df79de96e0ad927eb0046226"
19 "signature": "sha256:05a3e92089b37f68e3134587ffef6ef73830e5f8b3c515ba24640d7c803820c3"
12 },
20 },
13 "nbformat": 3,
21 "nbformat": 3,
14 "nbformat_minor": 0,
22 "nbformat_minor": 0,
@@ -56,7 +64,7 b''
56 "cell_type": "markdown",
64 "cell_type": "markdown",
57 "metadata": {},
65 "metadata": {},
58 "source": [
66 "source": [
59 "The `ButtonWidget` is not used to represent a data type. Instead the button widget is used to **handle mouse clicks**. The **`on_click` method** of the `ButtonWidget` can be used to register function to be called when the button is clicked. The doc string of the `on_click` can be seen below."
67 "The `Button` is not used to represent a data type. Instead the button widget is used to **handle mouse clicks**. The **`on_click` method** of the `Button` can be used to register function to be called when the button is clicked. The doc string of the `on_click` can be seen below."
60 ]
68 ]
61 },
69 },
62 {
70 {
@@ -64,7 +72,7 b''
64 "collapsed": false,
72 "collapsed": false,
65 "input": [
73 "input": [
66 "from IPython.html import widgets\n",
74 "from IPython.html import widgets\n",
67 "print(widgets.ButtonWidget.on_click.__doc__)"
75 "print(widgets.Button.on_click.__doc__)"
68 ],
76 ],
69 "language": "python",
77 "language": "python",
70 "metadata": {},
78 "metadata": {},
@@ -94,7 +102,7 b''
94 "collapsed": false,
102 "collapsed": false,
95 "input": [
103 "input": [
96 "from IPython.display import display\n",
104 "from IPython.display import display\n",
97 "button = widgets.ButtonWidget(description=\"Click Me!\")\n",
105 "button = widgets.Button(description=\"Click Me!\")\n",
98 "display(button)\n",
106 "display(button)\n",
99 "\n",
107 "\n",
100 "def on_button_clicked(b):\n",
108 "def on_button_clicked(b):\n",
@@ -122,14 +130,14 b''
122 "cell_type": "markdown",
130 "cell_type": "markdown",
123 "metadata": {},
131 "metadata": {},
124 "source": [
132 "source": [
125 "The **`TextWidget`** also has a special **`on_submit` event**. The `on_submit` event **fires when the user hits return**."
133 "The **`Text`** also has a special **`on_submit` event**. The `on_submit` event **fires when the user hits return**."
126 ]
134 ]
127 },
135 },
128 {
136 {
129 "cell_type": "code",
137 "cell_type": "code",
130 "collapsed": false,
138 "collapsed": false,
131 "input": [
139 "input": [
132 "text = widgets.TextWidget()\n",
140 "text = widgets.Text()\n",
133 "display(text)\n",
141 "display(text)\n",
134 "\n",
142 "\n",
135 "def handle_submit(sender):\n",
143 "def handle_submit(sender):\n",
@@ -193,14 +201,14 b''
193 "- callback(trait_name, new_value)\n",
201 "- callback(trait_name, new_value)\n",
194 "- callback(trait_name, old_value, new_value)\n",
202 "- callback(trait_name, old_value, new_value)\n",
195 "\n",
203 "\n",
196 "Using this method, an example of how to output an IntSliderWiget's value as it is changed can be seen below."
204 "Using this method, an example of how to output an `IntSlider`'s value as it is changed can be seen below."
197 ]
205 ]
198 },
206 },
199 {
207 {
200 "cell_type": "code",
208 "cell_type": "code",
201 "collapsed": false,
209 "collapsed": false,
202 "input": [
210 "input": [
203 "int_range = widgets.IntSliderWidget()\n",
211 "int_range = widgets.IntSlider()\n",
204 "display(int_range)\n",
212 "display(int_range)\n",
205 "\n",
213 "\n",
206 "def on_value_change(name, value):\n",
214 "def on_value_change(name, value):\n",
@@ -1,8 +1,16 b''
1 {
1 {
2 "metadata": {
2 "metadata": {
3 "celltoolbar": "Slideshow",
3 "kernelspec": {
4 "codemirror_mode": {
5 "name": "python",
6 "version": 2
7 },
8 "display_name": "Python 2",
9 "language": "python",
10 "name": "python2"
11 },
4 "name": "",
12 "name": "",
5 "signature": "sha256:f8284581eb29fde72c434a9a414fcb60837302177ebaa4af6ff219dd2b726381"
13 "signature": "sha256:83b39d018a7a6ae0a324b9f3d38debafbfb2ed0a114e4bbd357fb318f8f23438"
6 },
14 },
7 "nbformat": 3,
15 "nbformat": 3,
8 "nbformat_minor": 0,
16 "nbformat_minor": 0,
@@ -40,7 +48,7 b''
40 }
48 }
41 },
49 },
42 "source": [
50 "source": [
43 "For a complete list of the widgets available to you, you can list the classes in the widget namespace (as seen below). Classes with the suffix `Widget` are widgets. `Widget` and `DOMWidget` are base classes."
51 "For a complete list of the widgets available to you, you can list the classes in the widget namespace (as seen below). `Widget` and `DOMWidget`, not listed below, are base classes."
44 ]
52 ]
45 },
53 },
46 {
54 {
@@ -48,7 +56,7 b''
48 "collapsed": false,
56 "collapsed": false,
49 "input": [
57 "input": [
50 "from IPython.html import widgets\n",
58 "from IPython.html import widgets\n",
51 "[w for w in dir(widgets) if w.endswith('Widget')]"
59 "[n for n in dir(widgets) if not n.endswith('Widget') and n[0] == n[0].upper() and not n[0] == '_']"
52 ],
60 ],
53 "language": "python",
61 "language": "python",
54 "metadata": {},
62 "metadata": {},
@@ -82,14 +90,14 b''
82 }
90 }
83 },
91 },
84 "source": [
92 "source": [
85 "FloatSliderWidget"
93 "FloatSlider"
86 ]
94 ]
87 },
95 },
88 {
96 {
89 "cell_type": "code",
97 "cell_type": "code",
90 "collapsed": false,
98 "collapsed": false,
91 "input": [
99 "input": [
92 "widgets.FloatSliderWidget(\n",
100 "widgets.FloatSlider(\n",
93 " value=7.5,\n",
101 " value=7.5,\n",
94 " min=5.0,\n",
102 " min=5.0,\n",
95 " max=10.0,\n",
103 " max=10.0,\n",
@@ -112,7 +120,7 b''
112 "cell_type": "code",
120 "cell_type": "code",
113 "collapsed": false,
121 "collapsed": false,
114 "input": [
122 "input": [
115 "widgets.FloatSliderWidget(\n",
123 "widgets.FloatSlider(\n",
116 " value=7.5,\n",
124 " value=7.5,\n",
117 " min=5.0,\n",
125 " min=5.0,\n",
118 " max=10.0,\n",
126 " max=10.0,\n",
@@ -134,14 +142,14 b''
134 }
142 }
135 },
143 },
136 "source": [
144 "source": [
137 "FloatProgressWidget"
145 "FloatProgress"
138 ]
146 ]
139 },
147 },
140 {
148 {
141 "cell_type": "code",
149 "cell_type": "code",
142 "collapsed": false,
150 "collapsed": false,
143 "input": [
151 "input": [
144 "widgets.FloatProgressWidget(\n",
152 "widgets.FloatProgress(\n",
145 " value=7.5,\n",
153 " value=7.5,\n",
146 " min=5.0,\n",
154 " min=5.0,\n",
147 " max=10.0,\n",
155 " max=10.0,\n",
@@ -162,14 +170,14 b''
162 }
170 }
163 },
171 },
164 "source": [
172 "source": [
165 "BoundedFloatTextWidget"
173 "BoundedFloatText"
166 ]
174 ]
167 },
175 },
168 {
176 {
169 "cell_type": "code",
177 "cell_type": "code",
170 "collapsed": false,
178 "collapsed": false,
171 "input": [
179 "input": [
172 "widgets.BoundedFloatTextWidget(\n",
180 "widgets.BoundedFloatText(\n",
173 " value=7.5,\n",
181 " value=7.5,\n",
174 " min=5.0,\n",
182 " min=5.0,\n",
175 " max=10.0,\n",
183 " max=10.0,\n",
@@ -189,14 +197,14 b''
189 }
197 }
190 },
198 },
191 "source": [
199 "source": [
192 "FloatTextWidget"
200 "FloatText"
193 ]
201 ]
194 },
202 },
195 {
203 {
196 "cell_type": "code",
204 "cell_type": "code",
197 "collapsed": false,
205 "collapsed": false,
198 "input": [
206 "input": [
199 "widgets.FloatTextWidget(\n",
207 "widgets.FloatText(\n",
200 " value=7.5,\n",
208 " value=7.5,\n",
201 " description='Any:',\n",
209 " description='Any:',\n",
202 ")"
210 ")"
@@ -229,14 +237,14 b''
229 "level": 3,
237 "level": 3,
230 "metadata": {},
238 "metadata": {},
231 "source": [
239 "source": [
232 "ToggleButtonWidget"
240 "ToggleButton"
233 ]
241 ]
234 },
242 },
235 {
243 {
236 "cell_type": "code",
244 "cell_type": "code",
237 "collapsed": false,
245 "collapsed": false,
238 "input": [
246 "input": [
239 "widgets.ToggleButtonWidget(\n",
247 "widgets.ToggleButton(\n",
240 " description='Click me',\n",
248 " description='Click me',\n",
241 " value=False,\n",
249 " value=False,\n",
242 ")"
250 ")"
@@ -254,14 +262,14 b''
254 }
262 }
255 },
263 },
256 "source": [
264 "source": [
257 "CheckboxWidget"
265 "Checkbox"
258 ]
266 ]
259 },
267 },
260 {
268 {
261 "cell_type": "code",
269 "cell_type": "code",
262 "collapsed": false,
270 "collapsed": false,
263 "input": [
271 "input": [
264 "widgets.CheckboxWidget(\n",
272 "widgets.Checkbox(\n",
265 " description='Check me',\n",
273 " description='Check me',\n",
266 " value=True,\n",
274 " value=True,\n",
267 ")"
275 ")"
@@ -298,7 +306,7 b''
298 }
306 }
299 },
307 },
300 "source": [
308 "source": [
301 "DropdownWidget"
309 "Dropdown"
302 ]
310 ]
303 },
311 },
304 {
312 {
@@ -306,7 +314,7 b''
306 "collapsed": false,
314 "collapsed": false,
307 "input": [
315 "input": [
308 "from IPython.display import display\n",
316 "from IPython.display import display\n",
309 "w = widgets.DropdownWidget(\n",
317 "w = widgets.Dropdown(\n",
310 " values=[1, 2, 3],\n",
318 " values=[1, 2, 3],\n",
311 " value=2,\n",
319 " value=2,\n",
312 " description='Number:',\n",
320 " description='Number:',\n",
@@ -338,7 +346,7 b''
338 "cell_type": "code",
346 "cell_type": "code",
339 "collapsed": false,
347 "collapsed": false,
340 "input": [
348 "input": [
341 "w = widgets.DropdownWidget(\n",
349 "w = widgets.Dropdown(\n",
342 " values={'One': 1, 'Two': 2, 'Three': 3},\n",
350 " values={'One': 1, 'Two': 2, 'Three': 3},\n",
343 " value=2,\n",
351 " value=2,\n",
344 " description='Number:',\n",
352 " description='Number:',\n",
@@ -368,14 +376,14 b''
368 }
376 }
369 },
377 },
370 "source": [
378 "source": [
371 "RadioButtonsWidget"
379 "RadioButtons"
372 ]
380 ]
373 },
381 },
374 {
382 {
375 "cell_type": "code",
383 "cell_type": "code",
376 "collapsed": false,
384 "collapsed": false,
377 "input": [
385 "input": [
378 "widgets.RadioButtonsWidget(\n",
386 "widgets.RadioButtons(\n",
379 " description='Pizza topping:',\n",
387 " description='Pizza topping:',\n",
380 " values=['pepperoni', 'pineapple', 'anchovies'],\n",
388 " values=['pepperoni', 'pineapple', 'anchovies'],\n",
381 ")"
389 ")"
@@ -393,14 +401,14 b''
393 }
401 }
394 },
402 },
395 "source": [
403 "source": [
396 "SelectWidget"
404 "Select"
397 ]
405 ]
398 },
406 },
399 {
407 {
400 "cell_type": "code",
408 "cell_type": "code",
401 "collapsed": false,
409 "collapsed": false,
402 "input": [
410 "input": [
403 "widgets.SelectWidget(\n",
411 "widgets.Select(\n",
404 " description='OS:',\n",
412 " description='OS:',\n",
405 " values=['Linux', 'Windows', 'OSX'],\n",
413 " values=['Linux', 'Windows', 'OSX'],\n",
406 ")"
414 ")"
@@ -418,14 +426,14 b''
418 }
426 }
419 },
427 },
420 "source": [
428 "source": [
421 "ToggleButtonsWidget"
429 "ToggleButtons"
422 ]
430 ]
423 },
431 },
424 {
432 {
425 "cell_type": "code",
433 "cell_type": "code",
426 "collapsed": false,
434 "collapsed": false,
427 "input": [
435 "input": [
428 "widgets.ToggleButtonsWidget(\n",
436 "widgets.ToggleButtons(\n",
429 " description='Speed:',\n",
437 " description='Speed:',\n",
430 " values=['Slow', 'Regular', 'Fast'],\n",
438 " values=['Slow', 'Regular', 'Fast'],\n",
431 ")"
439 ")"
@@ -450,7 +458,7 b''
450 "cell_type": "markdown",
458 "cell_type": "markdown",
451 "metadata": {},
459 "metadata": {},
452 "source": [
460 "source": [
453 "There are 4 widgets that can be used to display a string value. Of those, the **`TextWidget` and `TextareaWidget` accept input**. The **`LatexWidget` and `HTMLWidget` display the string** as either Latex or HTML respectively, but **do not accept input**."
461 "There are 4 widgets that can be used to display a string value. Of those, the **`Text` and `Textarea` widgets accept input**. The **`Latex` and `HTML` widgets display the string** as either Latex or HTML respectively, but **do not accept input**."
454 ]
462 ]
455 },
463 },
456 {
464 {
@@ -462,14 +470,14 b''
462 }
470 }
463 },
471 },
464 "source": [
472 "source": [
465 "TextWidget"
473 "Text"
466 ]
474 ]
467 },
475 },
468 {
476 {
469 "cell_type": "code",
477 "cell_type": "code",
470 "collapsed": false,
478 "collapsed": false,
471 "input": [
479 "input": [
472 "widgets.TextWidget(\n",
480 "widgets.Text(\n",
473 " description='String:',\n",
481 " description='String:',\n",
474 " value='Hello World',\n",
482 " value='Hello World',\n",
475 ")"
483 ")"
@@ -483,14 +491,14 b''
483 "level": 3,
491 "level": 3,
484 "metadata": {},
492 "metadata": {},
485 "source": [
493 "source": [
486 "TextareaWidget"
494 "Textarea"
487 ]
495 ]
488 },
496 },
489 {
497 {
490 "cell_type": "code",
498 "cell_type": "code",
491 "collapsed": false,
499 "collapsed": false,
492 "input": [
500 "input": [
493 "widgets.TextareaWidget(\n",
501 "widgets.Textarea(\n",
494 " description='String:',\n",
502 " description='String:',\n",
495 " value='Hello World',\n",
503 " value='Hello World',\n",
496 ")"
504 ")"
@@ -508,14 +516,14 b''
508 }
516 }
509 },
517 },
510 "source": [
518 "source": [
511 "LatexWidget"
519 "Latex"
512 ]
520 ]
513 },
521 },
514 {
522 {
515 "cell_type": "code",
523 "cell_type": "code",
516 "collapsed": false,
524 "collapsed": false,
517 "input": [
525 "input": [
518 "widgets.LatexWidget(\n",
526 "widgets.Latex(\n",
519 " value=\"$$\\\\frac{n!}{k!(n-k)!} = \\\\binom{n}{k}$$\",\n",
527 " value=\"$$\\\\frac{n!}{k!(n-k)!} = \\\\binom{n}{k}$$\",\n",
520 ")"
528 ")"
521 ],
529 ],
@@ -528,14 +536,14 b''
528 "level": 3,
536 "level": 3,
529 "metadata": {},
537 "metadata": {},
530 "source": [
538 "source": [
531 "HTMLWidget"
539 "HTML"
532 ]
540 ]
533 },
541 },
534 {
542 {
535 "cell_type": "code",
543 "cell_type": "code",
536 "collapsed": false,
544 "collapsed": false,
537 "input": [
545 "input": [
538 "widgets.HTMLWidget(\n",
546 "widgets.HTML(\n",
539 " value=\"Hello <b>World</b>\"\n",
547 " value=\"Hello <b>World</b>\"\n",
540 ")"
548 ")"
541 ],
549 ],
@@ -552,14 +560,14 b''
552 }
560 }
553 },
561 },
554 "source": [
562 "source": [
555 "ButtonWidget"
563 "Button"
556 ]
564 ]
557 },
565 },
558 {
566 {
559 "cell_type": "code",
567 "cell_type": "code",
560 "collapsed": false,
568 "collapsed": false,
561 "input": [
569 "input": [
562 "widgets.ButtonWidget(description='Click me')"
570 "widgets.Button(description='Click me')"
563 ],
571 ],
564 "language": "python",
572 "language": "python",
565 "metadata": {},
573 "metadata": {},
This diff has been collapsed as it changes many lines, (854 lines changed) Show them Hide them
@@ -6,9 +6,17 b''
6 null
6 null
7 ]
7 ]
8 ],
8 ],
9 "celltoolbar": "Slideshow",
9 "kernelspec": {
10 "codemirror_mode": {
11 "name": "python",
12 "version": 2
13 },
14 "display_name": "Python 2",
15 "language": "python",
16 "name": "python2"
17 },
10 "name": "",
18 "name": "",
11 "signature": "sha256:b5501a34b2148c57201625da06989ae31e2d22f429b786170c96fb703e08bc58"
19 "signature": "sha256:8bb091be85fd5e7f76082b1b4b98cddec92a856334935ac2c702fe5ec03f6eff"
12 },
20 },
13 "nbformat": 3,
21 "nbformat": 3,
14 "nbformat_minor": 0,
22 "nbformat_minor": 0,
@@ -40,69 +48,11 b''
40 "outputs": []
48 "outputs": []
41 },
49 },
42 {
50 {
43 "cell_type": "heading",
44 "level": 1,
45 "metadata": {
46 "slideshow": {
47 "slide_type": "slide"
48 }
49 },
50 "source": [
51 "Widget Styling"
52 ]
53 },
54 {
55 "cell_type": "heading",
56 "level": 2,
57 "metadata": {},
58 "source": [
59 "CSS"
60 ]
61 },
62 {
63 "cell_type": "markdown",
64 "metadata": {},
65 "source": [
66 "Since the representation of the widget you see is a **browser element**, **Cascading Style Sheets (CSS)** are used for styling. Widgets have a **`set_css` method** that allows you to **add and remove CSS properties** from your elements. The following example shows had `set_css` **can be used to set the background color** of a `TextWidget`."
67 ]
68 },
69 {
70 "cell_type": "code",
51 "cell_type": "code",
71 "collapsed": false,
52 "collapsed": false,
72 "input": [
53 "input": [
73 "from IPython.html import widgets\n",
54 "from IPython.html import widgets\n",
74 "text = widgets.TextWidget(value=\"Hello World!\")\n",
55 "from IPython.display import display"
75 "text.set_css('background', 'lime')\n",
76 "text "
77 ],
78 "language": "python",
79 "metadata": {},
80 "outputs": []
81 },
82 {
83 "cell_type": "heading",
84 "level": 3,
85 "metadata": {
86 "slideshow": {
87 "slide_type": "slide"
88 }
89 },
90 "source": [
91 "Color codes"
92 ]
93 },
94 {
95 "cell_type": "markdown",
96 "metadata": {},
97 "source": [
98 "In the example above, **the color `lime` is specified by name**. CSS also supports specifying colors by a **3 byte hexadecimal string**. The first byte is red, second green, and third blue (**RGB**). The following example sets the `TextWidget`'s background to blue."
99 ]
100 },
101 {
102 "cell_type": "code",
103 "collapsed": false,
104 "input": [
105 "text.set_css('background', '#0000FF')"
106 ],
56 ],
107 "language": "python",
57 "language": "python",
108 "metadata": {},
58 "metadata": {},
@@ -110,105 +60,63 b''
110 },
60 },
111 {
61 {
112 "cell_type": "heading",
62 "cell_type": "heading",
113 "level": 3,
63 "level": 1,
114 "metadata": {
64 "metadata": {
115 "slideshow": {
65 "slideshow": {
116 "slide_type": "slide"
66 "slide_type": "slide"
117 }
67 }
118 },
68 },
119 "source": [
69 "source": [
120 "Forecolor"
70 "Widget Styling"
121 ]
122 },
123 {
124 "cell_type": "markdown",
125 "metadata": {},
126 "source": [
127 "In CSS the **font color is `color`.**"
128 ]
71 ]
129 },
72 },
130 {
73 {
131 "cell_type": "code",
132 "collapsed": false,
133 "input": [
134 "text.set_css('color', '#FFFFFF')"
135 ],
136 "language": "python",
137 "metadata": {},
138 "outputs": []
139 },
140 {
141 "cell_type": "heading",
74 "cell_type": "heading",
142 "level": 3,
75 "level": 2,
143 "metadata": {
144 "slideshow": {
145 "slide_type": "slide"
146 }
147 },
148 "source": [
149 "Size"
150 ]
151 },
152 {
153 "cell_type": "markdown",
154 "metadata": {},
155 "source": [
156 "CSS is also used to set the **height and width** of controls. The `set_css` method also **can accept a single dictionary with multiple CSS properties** (as seen below)."
157 ]
158 },
159 {
160 "cell_type": "code",
161 "collapsed": false,
162 "input": [
163 "btn = widgets.ButtonWidget()\n",
164 "btn.set_css({\n",
165 " 'width': '100px',\n",
166 " 'height': '100px',\n",
167 " 'background': 'red',\n",
168 "})\n",
169 "btn"
170 ],
171 "language": "python",
172 "metadata": {},
76 "metadata": {},
173 "outputs": []
174 },
175 {
176 "cell_type": "heading",
177 "level": 3,
178 "metadata": {
179 "slideshow": {
180 "slide_type": "slide"
181 }
182 },
183 "source": [
77 "source": [
184 "Removing"
78 "Basic styling"
185 ]
79 ]
186 },
80 },
187 {
81 {
188 "cell_type": "markdown",
82 "cell_type": "markdown",
189 "metadata": {},
83 "metadata": {},
190 "source": [
84 "source": [
191 "To remove the styling, you can call `set_css` again, but use an empty string instead of a color value."
85 "The widgets distributed with IPython can be styled by setting the following traits:\n",
86 "\n",
87 "- width \n",
88 "- height \n",
89 "- fore_color \n",
90 "- back_color \n",
91 "- border_color \n",
92 "- border_width \n",
93 "- border_style \n",
94 "- font_style \n",
95 "- font_weight \n",
96 "- font_size \n",
97 "- font_family \n",
98 "\n",
99 "The example below shows how a `Button` widget can be styled:"
192 ]
100 ]
193 },
101 },
194 {
102 {
195 "cell_type": "code",
103 "cell_type": "code",
196 "collapsed": false,
104 "collapsed": false,
197 "input": [
105 "input": [
198 "btn.set_css('background', '')"
106 "button = widgets.Button(\n",
107 " description='Hello World!',\n",
108 " width=100, # Integers are interpreted as pixel measurements.\n",
109 " height='2em', # em is valid HTML unit of measurement.\n",
110 " color='lime', # Colors can be set by name,\n",
111 " background_color='#0022FF', # and also by color code.\n",
112 " border_color='red')\n",
113 "display(button)"
199 ],
114 ],
200 "language": "python",
115 "language": "python",
201 "metadata": {},
116 "metadata": {},
202 "outputs": []
117 "outputs": []
203 },
118 },
204 {
119 {
205 "cell_type": "markdown",
206 "metadata": {},
207 "source": [
208 "For more information about what can be done with CSS, please refer to the [Mozilla Developer Network's series on it](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started).\n"
209 ]
210 },
211 {
212 "cell_type": "heading",
120 "cell_type": "heading",
213 "level": 2,
121 "level": 2,
214 "metadata": {
122 "metadata": {
@@ -224,9 +132,7 b''
224 "cell_type": "markdown",
132 "cell_type": "markdown",
225 "metadata": {},
133 "metadata": {},
226 "source": [
134 "source": [
227 "To display widget A inside widget B, widget A must be a child of widget B. **Only one instance of any particular widget can be child of another (this limitation will be removed in IPython 3.0).** In other words, *widget A* cannot have *widget B* listed twice in it's list of children.\n",
135 "To display widget A inside widget B, widget A must be a child of widget B. Widgets that can contain other widgets have a **`children` attribute**. This attribute can be **set via a keyword argument** in the widget's constructor **or after construction**. Calling display on an **object with children automatically displays those children**, too."
228 "\n",
229 "Widgets that can contain other widgets have a **`children` attribute**. This attribute can be **set via a keyword argument** in the widget's constructor **or after construction**. Calling display on an **object with children automatically displays those children**, too."
230 ]
136 ]
231 },
137 },
232 {
138 {
@@ -235,11 +141,13 b''
235 "input": [
141 "input": [
236 "from IPython.display import display\n",
142 "from IPython.display import display\n",
237 "\n",
143 "\n",
238 "float_range = widgets.FloatSliderWidget()\n",
144 "float_range = widgets.FloatSlider()\n",
239 "string = widgets.TextWidget(value='hi')\n",
145 "string = widgets.Text(value='hi')\n",
240 "container = widgets.ContainerWidget(children=[float_range, string])\n",
146 "container = widgets.Box(children=[float_range, string])\n",
241 "\n",
147 "\n",
242 "container.set_css('border', '3px dotted red')\n",
148 "container.border_color = 'red'\n",
149 "container.border_style = 'dotted'\n",
150 "container.border_width = 3\n",
243 "display(container) # Displays the `container` and all of it's children."
151 "display(container) # Displays the `container` and all of it's children."
244 ],
152 ],
245 "language": "python",
153 "language": "python",
@@ -269,11 +177,13 b''
269 "cell_type": "code",
177 "cell_type": "code",
270 "collapsed": false,
178 "collapsed": false,
271 "input": [
179 "input": [
272 "container = widgets.ContainerWidget()\n",
180 "container = widgets.Box()\n",
273 "container.set_css('border', '3px dotted red')\n",
181 "container.border_color = 'red'\n",
182 "container.border_style = 'dotted'\n",
183 "container.border_width = 3\n",
274 "display(container)\n",
184 "display(container)\n",
275 "\n",
185 "\n",
276 "int_range = widgets.IntSliderWidget()\n",
186 "int_range = widgets.IntSlider()\n",
277 "container.children=[int_range]"
187 "container.children=[int_range]"
278 ],
188 ],
279 "language": "python",
189 "language": "python",
@@ -289,14 +199,14 b''
289 }
199 }
290 },
200 },
291 "source": [
201 "source": [
292 "Fancy containers"
202 "Fancy boxes"
293 ]
203 ]
294 },
204 },
295 {
205 {
296 "cell_type": "markdown",
206 "cell_type": "markdown",
297 "metadata": {},
207 "metadata": {},
298 "source": [
208 "source": [
299 "If you need to display a more complicated set of widgets, there are **specialized containers** that you can use. To display **multiple sets of widgets**, you can use an **`AccordionWidget` or a `TabWidget` in combination with one `ContainerWidget` per set of widgets** (as seen below). The \"pages\" of these widgets are their children. To set the titles of the pages, one must **call `set_title` after the widget has been displayed**."
209 "If you need to display a more complicated set of widgets, there are **specialized containers** that you can use. To display **multiple sets of widgets**, you can use an **`Accordion` or a `Tab` in combination with one `Box` per set of widgets** (as seen below). The \"pages\" of these widgets are their children. To set the titles of the pages, one must **call `set_title` after the widget has been displayed**."
300 ]
210 ]
301 },
211 },
302 {
212 {
@@ -304,22 +214,22 b''
304 "level": 3,
214 "level": 3,
305 "metadata": {},
215 "metadata": {},
306 "source": [
216 "source": [
307 "AccordionWidget"
217 "Accordion"
308 ]
218 ]
309 },
219 },
310 {
220 {
311 "cell_type": "code",
221 "cell_type": "code",
312 "collapsed": false,
222 "collapsed": false,
313 "input": [
223 "input": [
314 "name1 = widgets.TextWidget(description='Location:')\n",
224 "name1 = widgets.Text(description='Location:')\n",
315 "zip1 = widgets.BoundedIntTextWidget(description='Zip:', min=0, max=99999)\n",
225 "zip1 = widgets.BoundedIntText(description='Zip:', min=0, max=99999)\n",
316 "page1 = widgets.ContainerWidget(children=[name1, zip1])\n",
226 "page1 = widgets.Box(children=[name1, zip1])\n",
317 "\n",
227 "\n",
318 "name2 = widgets.TextWidget(description='Location:')\n",
228 "name2 = widgets.Text(description='Location:')\n",
319 "zip2 = widgets.BoundedIntTextWidget(description='Zip:', min=0, max=99999)\n",
229 "zip2 = widgets.BoundedIntText(description='Zip:', min=0, max=99999)\n",
320 "page2 = widgets.ContainerWidget(children=[name2, zip2])\n",
230 "page2 = widgets.Box(children=[name2, zip2])\n",
321 "\n",
231 "\n",
322 "accord = widgets.AccordionWidget(children=[page1, page2])\n",
232 "accord = widgets.Accordion(children=[page1, page2])\n",
323 "display(accord)\n",
233 "display(accord)\n",
324 "\n",
234 "\n",
325 "accord.set_title(0, 'From')\n",
235 "accord.set_title(0, 'From')\n",
@@ -345,15 +255,15 b''
345 "cell_type": "code",
255 "cell_type": "code",
346 "collapsed": false,
256 "collapsed": false,
347 "input": [
257 "input": [
348 "name = widgets.TextWidget(description='Name:')\n",
258 "name = widgets.Text(description='Name:')\n",
349 "color = widgets.DropdownWidget(description='Color:', values=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\n",
259 "color = widgets.Dropdown(description='Color:', values=['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'])\n",
350 "page1 = widgets.ContainerWidget(children=[name, color])\n",
260 "page1 = widgets.Box(children=[name, color])\n",
351 "\n",
261 "\n",
352 "age = widgets.IntSliderWidget(description='Age:', min=0, max=120, value=50)\n",
262 "age = widgets.IntSlider(description='Age:', min=0, max=120, value=50)\n",
353 "gender = widgets.RadioButtonsWidget(description='Gender:', values=['male', 'female'])\n",
263 "gender = widgets.RadioButtons(description='Gender:', values=['male', 'female'])\n",
354 "page2 = widgets.ContainerWidget(children=[age, gender])\n",
264 "page2 = widgets.Box(children=[age, gender])\n",
355 "\n",
265 "\n",
356 "tabs = widgets.TabWidget(children=[page1, page2])\n",
266 "tabs = widgets.Tab(children=[page1, page2])\n",
357 "display(tabs)\n",
267 "display(tabs)\n",
358 "\n",
268 "\n",
359 "tabs.set_title(0, 'Name')\n",
269 "tabs.set_title(0, 'Name')\n",
@@ -372,22 +282,22 b''
372 }
282 }
373 },
283 },
374 "source": [
284 "source": [
375 "PopupWidget"
285 "Popup"
376 ]
286 ]
377 },
287 },
378 {
288 {
379 "cell_type": "markdown",
289 "cell_type": "markdown",
380 "metadata": {},
290 "metadata": {},
381 "source": [
291 "source": [
382 "Unlike the other two special containers, the `PopupWidget` is only **designed to display one set of widgets**. The `PopupWidget` can be used to **display widgets outside of the widget area**. "
292 "Unlike the other two special containers, the `Popup` is only **designed to display one set of widgets**. The `Popup` can be used to **display widgets outside of the widget area**. "
383 ]
293 ]
384 },
294 },
385 {
295 {
386 "cell_type": "code",
296 "cell_type": "code",
387 "collapsed": false,
297 "collapsed": false,
388 "input": [
298 "input": [
389 "counter = widgets.IntTextWidget(description='Counter:')\n",
299 "counter = widgets.IntText(description='Counter:')\n",
390 "popup = widgets.PopupWidget(children=[counter], description='Popup Demo', button_text='Popup Button')\n",
300 "popup = widgets.Popup(children=[counter], description='Popup Demo', button_text='Popup Button')\n",
391 "display(popup)"
301 "display(popup)"
392 ],
302 ],
393 "language": "python",
303 "language": "python",
@@ -561,9 +471,9 b''
561 "cell_type": "code",
471 "cell_type": "code",
562 "collapsed": false,
472 "collapsed": false,
563 "input": [
473 "input": [
564 "display(widgets.TextWidget(description=\"a:\"))\n",
474 "display(widgets.Text(description=\"a:\"))\n",
565 "display(widgets.TextWidget(description=\"aa:\"))\n",
475 "display(widgets.Text(description=\"aa:\"))\n",
566 "display(widgets.TextWidget(description=\"aaa:\"))"
476 "display(widgets.Text(description=\"aaa:\"))"
567 ],
477 ],
568 "language": "python",
478 "language": "python",
569 "metadata": {},
479 "metadata": {},
@@ -584,10 +494,10 b''
584 "cell_type": "code",
494 "cell_type": "code",
585 "collapsed": false,
495 "collapsed": false,
586 "input": [
496 "input": [
587 "display(widgets.TextWidget(description=\"a:\"))\n",
497 "display(widgets.Text(description=\"a:\"))\n",
588 "display(widgets.TextWidget(description=\"aa:\"))\n",
498 "display(widgets.Text(description=\"aa:\"))\n",
589 "display(widgets.TextWidget(description=\"aaa:\"))\n",
499 "display(widgets.Text(description=\"aaa:\"))\n",
590 "display(widgets.TextWidget(description=\"aaaaaaaaaaaaaaaaaa:\"))"
500 "display(widgets.Text(description=\"aaaaaaaaaaaaaaaaaa:\"))"
591 ],
501 ],
592 "language": "python",
502 "language": "python",
593 "metadata": {},
503 "metadata": {},
@@ -608,107 +518,10 b''
608 "cell_type": "code",
518 "cell_type": "code",
609 "collapsed": false,
519 "collapsed": false,
610 "input": [
520 "input": [
611 "display(widgets.TextWidget(description=\"a:\"))\n",
521 "display(widgets.Text(description=\"a:\"))\n",
612 "display(widgets.TextWidget(description=\"aa:\"))\n",
522 "display(widgets.Text(description=\"aa:\"))\n",
613 "display(widgets.TextWidget(description=\"aaa:\"))\n",
523 "display(widgets.Text(description=\"aaa:\"))\n",
614 "display(widgets.TextWidget())"
524 "display(widgets.Text())"
615 ],
616 "language": "python",
617 "metadata": {},
618 "outputs": []
619 },
620 {
621 "cell_type": "heading",
622 "level": 1,
623 "metadata": {
624 "slideshow": {
625 "slide_type": "slide"
626 }
627 },
628 "source": [
629 "DOM Classes"
630 ]
631 },
632 {
633 "cell_type": "markdown",
634 "metadata": {},
635 "source": [
636 "IPython defines a large number of **DOM (document object model) classes** that you can apply to your widgets. Applying a DOM class causes all of the **CSS associated with that class** to be applied to the element. Classes can be applied and removed using the **`add_class` and `remove_class`** methods **after a widget has been displayed**. The majority of DOM classes defined by IPython are actually **Bootstrap classes**. For more information on Bootstrap classes and CSS, please refer to [Bootstrap's website](http://getbootstrap.com/2.3.2/)."
637 ]
638 },
639 {
640 "cell_type": "heading",
641 "level": 2,
642 "metadata": {
643 "slideshow": {
644 "slide_type": "slide"
645 }
646 },
647 "source": [
648 "Path dependent"
649 ]
650 },
651 {
652 "cell_type": "markdown",
653 "metadata": {},
654 "source": [
655 "Both `add_class` and `remove_class` allow you to use **CSS selectors** to pick which sub elements of your widget get styled. Because of this, the `add_class` and `remove_class` methods are **path dependent (order specific)**. The following example shows the **same three calls** made in three **different orders** and the resulting output. **All three differ.**"
656 ]
657 },
658 {
659 "cell_type": "code",
660 "collapsed": false,
661 "input": [
662 "%%html\n",
663 "<style>\n",
664 " div.cube { display: inline; padding: 5px; }\n",
665 " div.red { background: red; }\n",
666 " div.blue { background: blue; }\n",
667 "</style>"
668 ],
669 "language": "python",
670 "metadata": {},
671 "outputs": []
672 },
673 {
674 "cell_type": "code",
675 "collapsed": false,
676 "input": [
677 "from IPython.html import widgets\n",
678 "from IPython.display import display\n",
679 "html = '<br />'.join([''.join(['<div class=\"cube\">x</div>' for i in range(8)]) for j in range(8)])\n",
680 "widget = [widgets.HTMLWidget(value=html) for i in range(3)]\n",
681 "\n",
682 "display(widget[0])\n",
683 "widget[0].add_class('red', 'div.cube:nth-child(even)')\n",
684 "widget[0].remove_class('red', 'div.red:nth-child(7n+1)')\n",
685 "widget[0].add_class('blue', 'div.red:nth-child(3n+1)')"
686 ],
687 "language": "python",
688 "metadata": {},
689 "outputs": []
690 },
691 {
692 "cell_type": "code",
693 "collapsed": false,
694 "input": [
695 "display(widget[1])\n",
696 "widget[1].remove_class('red', 'div.red:nth-child(7n+1)')\n",
697 "widget[1].add_class('blue', 'div.red:nth-child(3n+1)')\n",
698 "widget[1].add_class('red', 'div.cube:nth-child(even)')"
699 ],
700 "language": "python",
701 "metadata": {},
702 "outputs": []
703 },
704 {
705 "cell_type": "code",
706 "collapsed": false,
707 "input": [
708 "display(widget[2])\n",
709 "widget[2].add_class('red', 'div.cube:nth-child(even)')\n",
710 "widget[2].add_class('blue', 'div.red:nth-child(3n+1)')\n",
711 "widget[2].remove_class('red', 'div.red:nth-child(7n+1)')"
712 ],
525 ],
713 "language": "python",
526 "language": "python",
714 "metadata": {},
527 "metadata": {},
@@ -723,346 +536,14 b''
723 }
536 }
724 },
537 },
725 "source": [
538 "source": [
726 "Alignment classes"
539 "Flex boxes"
727 ]
540 ]
728 },
541 },
729 {
542 {
730 "cell_type": "markdown",
543 "cell_type": "markdown",
731 "metadata": {},
544 "metadata": {},
732 "source": [
545 "source": [
733 "Widgets can be aligned using IPython **alignment classes**. These classes should work with most widgets, but were **designed to be applied to `ContainerWidget`s**. Examples of these classes follow:"
546 "Widgets can be aligned using the `FlexBox`, `HBox`, and `VBox` widgets."
734 ]
735 },
736 {
737 "cell_type": "heading",
738 "level": 3,
739 "metadata": {},
740 "source": [
741 "Orientation classes"
742 ]
743 },
744 {
745 "cell_type": "heading",
746 "level": 4,
747 "metadata": {},
748 "source": [
749 "\"vbox\""
750 ]
751 },
752 {
753 "cell_type": "markdown",
754 "metadata": {},
755 "source": [
756 "Widget containers default to this orientation.\n",
757 "<div class=\"example-container vbox\">\n",
758 "<div class=\"example-box\">A</div>\n",
759 "<div class=\"example-box med\">B</div>\n",
760 "<div class=\"example-box lrg\">C</div>\n",
761 "</div>"
762 ]
763 },
764 {
765 "cell_type": "heading",
766 "level": 4,
767 "metadata": {},
768 "source": [
769 "\"hbox\""
770 ]
771 },
772 {
773 "cell_type": "markdown",
774 "metadata": {},
775 "source": [
776 "<div class=\"example-container hbox\">\n",
777 "<div class=\"example-box\">A</div>\n",
778 "<div class=\"example-box med\">B</div>\n",
779 "<div class=\"example-box lrg\">C</div>\n",
780 "</div>"
781 ]
782 },
783 {
784 "cell_type": "heading",
785 "level": 3,
786 "metadata": {},
787 "source": [
788 "Packing classes"
789 ]
790 },
791 {
792 "cell_type": "markdown",
793 "metadata": {},
794 "source": [
795 "These examples use the **hbox layout** to show packing. Packing is the alignment of the widgets along the the **axis that they are displayed on**."
796 ]
797 },
798 {
799 "cell_type": "heading",
800 "level": 4,
801 "metadata": {},
802 "source": [
803 "\"start\""
804 ]
805 },
806 {
807 "cell_type": "markdown",
808 "metadata": {},
809 "source": [
810 "<div class=\"example-container hbox start\">\n",
811 "<div class=\"example-box\">A</div>\n",
812 "<div class=\"example-box med\">B</div>\n",
813 "<div class=\"example-box lrg\">C</div>\n",
814 "</div>"
815 ]
816 },
817 {
818 "cell_type": "heading",
819 "level": 4,
820 "metadata": {},
821 "source": [
822 "\"center\""
823 ]
824 },
825 {
826 "cell_type": "markdown",
827 "metadata": {},
828 "source": [
829 "<div class=\"example-container hbox center\">\n",
830 "<div class=\"example-box\">A</div>\n",
831 "<div class=\"example-box med\">B</div>\n",
832 "<div class=\"example-box lrg\">C</div>\n",
833 "</div>"
834 ]
835 },
836 {
837 "cell_type": "heading",
838 "level": 4,
839 "metadata": {},
840 "source": [
841 "\"end\""
842 ]
843 },
844 {
845 "cell_type": "markdown",
846 "metadata": {
847 "slideshow": {
848 "slide_type": "slide"
849 }
850 },
851 "source": [
852 "<div class=\"example-container hbox end\">\n",
853 "<div class=\"example-box\">A</div>\n",
854 "<div class=\"example-box med\">B</div>\n",
855 "<div class=\"example-box lrg\">C</div>\n",
856 "</div>"
857 ]
858 },
859 {
860 "cell_type": "heading",
861 "level": 3,
862 "metadata": {},
863 "source": [
864 "Aligning classes"
865 ]
866 },
867 {
868 "cell_type": "markdown",
869 "metadata": {},
870 "source": [
871 "These examples use the **hbox layout** to show alignment. Packing is the alignment of the widgets along the the **axis perpendicular to the one that they are displayed on**."
872 ]
873 },
874 {
875 "cell_type": "heading",
876 "level": 4,
877 "metadata": {},
878 "source": [
879 "\"align-start\""
880 ]
881 },
882 {
883 "cell_type": "markdown",
884 "metadata": {},
885 "source": [
886 "<div class=\"example-container hbox align-start\">\n",
887 "<div class=\"example-box\">A</div>\n",
888 "<div class=\"example-box med\">B</div>\n",
889 "<div class=\"example-box lrg\">C</div>\n",
890 "</div>"
891 ]
892 },
893 {
894 "cell_type": "heading",
895 "level": 4,
896 "metadata": {},
897 "source": [
898 "\"align-center\""
899 ]
900 },
901 {
902 "cell_type": "markdown",
903 "metadata": {},
904 "source": [
905 "<div class=\"example-container hbox align-center\">\n",
906 "<div class=\"example-box\">A</div>\n",
907 "<div class=\"example-box med\">B</div>\n",
908 "<div class=\"example-box lrg\">C</div>\n",
909 "</div>"
910 ]
911 },
912 {
913 "cell_type": "heading",
914 "level": 4,
915 "metadata": {},
916 "source": [
917 "\"align-end\""
918 ]
919 },
920 {
921 "cell_type": "markdown",
922 "metadata": {
923 "slideshow": {
924 "slide_type": "slide"
925 }
926 },
927 "source": [
928 "<div class=\"example-container hbox align-end\">\n",
929 "<div class=\"example-box\">A</div>\n",
930 "<div class=\"example-box med\">B</div>\n",
931 "<div class=\"example-box lrg\">C</div>\n",
932 "</div>"
933 ]
934 },
935 {
936 "cell_type": "heading",
937 "level": 3,
938 "metadata": {},
939 "source": [
940 "Flex classes"
941 ]
942 },
943 {
944 "cell_type": "markdown",
945 "metadata": {},
946 "source": [
947 "To specify **how \"greedy\" a container is** when filling in the remaining space of its parent, the **`box-flexN`** classes are used (where N is 0, 1, or 2). The **higher the value of N, the more greedy** the child is. **`box-flex0` is the default behavior**, which is to not fill the parent."
948 ]
949 },
950 {
951 "cell_type": "heading",
952 "level": 4,
953 "metadata": {},
954 "source": [
955 "Example 1"
956 ]
957 },
958 {
959 "cell_type": "markdown",
960 "metadata": {},
961 "source": [
962 "<div class=\"example-container sm hbox center\">\n",
963 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
964 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
965 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
966 "</div>"
967 ]
968 },
969 {
970 "cell_type": "heading",
971 "level": 4,
972 "metadata": {},
973 "source": [
974 "Example 2"
975 ]
976 },
977 {
978 "cell_type": "markdown",
979 "metadata": {},
980 "source": [
981 "<div class=\"example-container sm hbox center\">\n",
982 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
983 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
984 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
985 "</div>"
986 ]
987 },
988 {
989 "cell_type": "heading",
990 "level": 4,
991 "metadata": {},
992 "source": [
993 "Example 3"
994 ]
995 },
996 {
997 "cell_type": "markdown",
998 "metadata": {},
999 "source": [
1000 "<div class=\"example-container sm hbox center\">\n",
1001 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
1002 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1003 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1004 "</div>"
1005 ]
1006 },
1007 {
1008 "cell_type": "heading",
1009 "level": 4,
1010 "metadata": {},
1011 "source": [
1012 "Example 4"
1013 ]
1014 },
1015 {
1016 "cell_type": "markdown",
1017 "metadata": {},
1018 "source": [
1019 "<div class=\"example-container sm hbox center\">\n",
1020 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1021 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1022 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1023 "</div>"
1024 ]
1025 },
1026 {
1027 "cell_type": "heading",
1028 "level": 4,
1029 "metadata": {},
1030 "source": [
1031 "Example 5"
1032 ]
1033 },
1034 {
1035 "cell_type": "markdown",
1036 "metadata": {},
1037 "source": [
1038 "<div class=\"example-container sm hbox center\">\n",
1039 "<div class=\"example-box box-flex2\">box-flex2</div>\n",
1040 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1041 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1042 "</div>"
1043 ]
1044 },
1045 {
1046 "cell_type": "heading",
1047 "level": 4,
1048 "metadata": {},
1049 "source": [
1050 "Example 6"
1051 ]
1052 },
1053 {
1054 "cell_type": "markdown",
1055 "metadata": {
1056 "slideshow": {
1057 "slide_type": "slide"
1058 }
1059 },
1060 "source": [
1061 "<div class=\"example-container sm hbox center\">\n",
1062 "<div class=\"example-box box-flex0\">box-flex0</div>\n",
1063 "<div class=\"example-box box-flex1\">box-flex1</div>\n",
1064 "<div class=\"example-box box-flex2\">box-flex2</div>\n",
1065 "</div>"
1066 ]
547 ]
1067 },
548 },
1068 {
549 {
@@ -1081,17 +562,15 b''
1081 "cell_type": "markdown",
562 "cell_type": "markdown",
1082 "metadata": {},
563 "metadata": {},
1083 "source": [
564 "source": [
1084 "Widget containers **default to vbox** alignment."
565 "Widgets display vertically by default:"
1085 ]
566 ]
1086 },
567 },
1087 {
568 {
1088 "cell_type": "code",
569 "cell_type": "code",
1089 "collapsed": false,
570 "collapsed": false,
1090 "input": [
571 "input": [
1091 "buttons = [widgets.ButtonWidget(description=str(i)) for i in range(3)]\n",
572 "buttons = [widgets.Button(description=str(i)) for i in range(3)]\n",
1092 "\n",
573 "display(*buttons)"
1093 "container = widgets.ContainerWidget(children=buttons)\n",
1094 "display(container)"
1095 ],
574 ],
1096 "language": "python",
575 "language": "python",
1097 "metadata": {},
576 "metadata": {},
@@ -1113,17 +592,15 b''
1113 "cell_type": "markdown",
592 "cell_type": "markdown",
1114 "metadata": {},
593 "metadata": {},
1115 "source": [
594 "source": [
1116 "To make a widget container display its widgets horizontally, you need to **remove the `vbox` class** from the container and **add the `hbox` class** in its place."
595 "To make widgets display horizontally, you need to **child them to a `HBox` widget**."
1117 ]
596 ]
1118 },
597 },
1119 {
598 {
1120 "cell_type": "code",
599 "cell_type": "code",
1121 "collapsed": false,
600 "collapsed": false,
1122 "input": [
601 "input": [
1123 "container = widgets.ContainerWidget(children=buttons)\n",
602 "container = widgets.HBox(children=buttons)\n",
1124 "display(container)\n",
603 "display(container)"
1125 "container.remove_class('vbox')\n",
1126 "container.add_class('hbox')"
1127 ],
604 ],
1128 "language": "python",
605 "language": "python",
1129 "metadata": {},
606 "metadata": {},
@@ -1133,142 +610,15 b''
1133 "cell_type": "markdown",
610 "cell_type": "markdown",
1134 "metadata": {},
611 "metadata": {},
1135 "source": [
612 "source": [
1136 "By setting the width of the container to 100% and adding the `center` class to it, you can center the buttons."
613 "By setting the width of the container to 100% and its `pack` to `center`, you can center the buttons."
1137 ]
1138 },
1139 {
1140 "cell_type": "code",
1141 "collapsed": false,
1142 "input": [
1143 "container.set_css('width', '100%')\n",
1144 "container.add_class('center')"
1145 ],
1146 "language": "python",
1147 "metadata": {},
1148 "outputs": []
1149 },
1150 {
1151 "cell_type": "heading",
1152 "level": 2,
1153 "metadata": {
1154 "slideshow": {
1155 "slide_type": "slide"
1156 }
1157 },
1158 "source": [
1159 "Style classes"
1160 ]
1161 },
1162 {
1163 "cell_type": "markdown",
1164 "metadata": {},
1165 "source": [
1166 "In addition to alignment classes, the classes defined by Bootstrap can also be used. This tutorial will only cover a few of the most common classes. For a full list of Bootstrap classes, please refer to [Bootstrap's website](http://getbootstrap.com/2.3.2/)."
1167 ]
1168 },
1169 {
1170 "cell_type": "heading",
1171 "level": 3,
1172 "metadata": {},
1173 "source": [
1174 "ButtonWidgets"
1175 ]
1176 },
1177 {
1178 "cell_type": "code",
1179 "collapsed": false,
1180 "input": [
1181 "# List of the bootstrap button styles\n",
1182 "classes = [\n",
1183 " 'btn', \n",
1184 " 'btn-primary', \n",
1185 " 'btn-info', \n",
1186 " 'btn-success', \n",
1187 " 'btn-warning', \n",
1188 " 'btn-danger', \n",
1189 " 'btn-inverse', \n",
1190 " 'btn-link'\n",
1191 "]\n",
1192 "\n",
1193 "# Display the buttons in a hbox\n",
1194 "container = widgets.ContainerWidget(children=[widgets.ButtonWidget(description=c) for c in classes])\n",
1195 "display(container)\n",
1196 "\n",
1197 "# Apply classes after display\n",
1198 "container.remove_class('vbox')\n",
1199 "container.add_class('hbox')\n",
1200 "ret = [container.children[i].add_class(c) for i, c in enumerate(classes)]"
1201 ],
1202 "language": "python",
1203 "metadata": {},
1204 "outputs": []
1205 },
1206 {
1207 "cell_type": "heading",
1208 "level": 3,
1209 "metadata": {
1210 "slideshow": {
1211 "slide_type": "slide"
1212 }
1213 },
1214 "source": [
1215 "ContainerWidgets"
1216 ]
1217 },
1218 {
1219 "cell_type": "code",
1220 "collapsed": false,
1221 "input": [
1222 "def create_label(cls):\n",
1223 " class_name = widgets.HTMLWidget(value=cls)\n",
1224 " container = widgets.ContainerWidget(children=[class_name])\n",
1225 " display(container)\n",
1226 " container.add_class(cls)\n",
1227 "\n",
1228 "ret = [create_label(c) for c in [\n",
1229 " 'alert', \n",
1230 " 'alert alert-error', \n",
1231 " 'alert alert-success', \n",
1232 " 'alert alert-info'\n",
1233 "]]"
1234 ],
1235 "language": "python",
1236 "metadata": {},
1237 "outputs": []
1238 },
1239 {
1240 "cell_type": "heading",
1241 "level": 3,
1242 "metadata": {
1243 "slideshow": {
1244 "slide_type": "slide"
1245 }
1246 },
1247 "source": [
1248 "ProgressWidgets"
1249 ]
614 ]
1250 },
615 },
1251 {
616 {
1252 "cell_type": "code",
617 "cell_type": "code",
1253 "collapsed": false,
618 "collapsed": false,
1254 "input": [
619 "input": [
1255 "classes = [\n",
620 "container.width = '100%'\n",
1256 " 'progress-info', \n",
621 "container.pack = 'center'"
1257 " 'progress-success', \n",
1258 " 'progress-warning', \n",
1259 " 'progress-danger',\n",
1260 " 'progress-info progress-striped', \n",
1261 " 'progress-success progress-striped', \n",
1262 " 'progress-warning progress-striped', \n",
1263 " 'progress-danger progress-striped',\n",
1264 " 'active progress-info progress-striped', \n",
1265 " 'active progress-success progress-striped', \n",
1266 " 'active progress-warning progress-striped', \n",
1267 " 'active progress-danger progress-striped',\n",
1268 "]\n",
1269 "ws = [widgets.IntProgressWidget(value=50, description=c) for c in classes]\n",
1270 "ret = [display(w) for w in ws]\n",
1271 "ret = [ws[i].add_class(c) for i, cs in enumerate(classes) for c in cs.split(' ')]"
1272 ],
622 ],
1273 "language": "python",
623 "language": "python",
1274 "metadata": {},
624 "metadata": {},
@@ -1298,7 +648,7 b''
1298 "cell_type": "code",
648 "cell_type": "code",
1299 "collapsed": false,
649 "collapsed": false,
1300 "input": [
650 "input": [
1301 "string = widgets.LatexWidget(value=\"Hello World!\")\n",
651 "string = widgets.Latex(value=\"Hello World!\")\n",
1302 "display(string) "
652 "display(string) "
1303 ],
653 ],
1304 "language": "python",
654 "language": "python",
@@ -1348,17 +698,17 b''
1348 "cell_type": "code",
698 "cell_type": "code",
1349 "collapsed": false,
699 "collapsed": false,
1350 "input": [
700 "input": [
1351 "form = widgets.ContainerWidget()\n",
701 "form = widgets.VBox()\n",
1352 "first = widgets.TextWidget(description=\"First Name:\")\n",
702 "first = widgets.Text(description=\"First Name:\")\n",
1353 "last = widgets.TextWidget(description=\"Last Name:\")\n",
703 "last = widgets.Text(description=\"Last Name:\")\n",
1354 "\n",
704 "\n",
1355 "student = widgets.CheckboxWidget(description=\"Student:\", value=False)\n",
705 "student = widgets.Checkbox(description=\"Student:\", value=False)\n",
1356 "school_info = widgets.ContainerWidget(visible=False, children=[\n",
706 "school_info = widgets.VBox(visible=False, children=[\n",
1357 " widgets.TextWidget(description=\"School:\"),\n",
707 " widgets.Text(description=\"School:\"),\n",
1358 " widgets.IntTextWidget(description=\"Grade:\", min=0, max=12)\n",
708 " widgets.IntText(description=\"Grade:\", min=0, max=12)\n",
1359 " ])\n",
709 " ])\n",
1360 "\n",
710 "\n",
1361 "pet = widgets.TextWidget(description=\"Pet's Name:\")\n",
711 "pet = widgets.Text(description=\"Pet's Name:\")\n",
1362 "form.children = [first, last, student, school_info, pet]\n",
712 "form.children = [first, last, student, school_info, pet]\n",
1363 "display(form)\n",
713 "display(form)\n",
1364 "\n",
714 "\n",
General Comments 0
You need to be logged in to leave comments. Login now