3 <head><meta charset="utf-8" />
4 <title>Advent_of_Code_2017_December_3rd</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
5 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
7 <style type="text/css">
14 * Bootstrap v3.3.7 (http://getbootstrap.com)
15 * Copyright 2011-2016 Twitter, Inc.
16 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
18 /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
20 font-family: sans-serif;
21 -ms-text-size-adjust: 100%;
22 -webkit-text-size-adjust: 100%;
46 display: inline-block;
47 vertical-align: baseline;
49 audio:not([controls]) {
58 background-color: transparent;
65 border-bottom: 1px dotted;
90 vertical-align: baseline;
108 box-sizing: content-box;
118 font-family: monospace, monospace;
135 text-transform: none;
138 html input[type="button"],
140 input[type="submit"] {
141 -webkit-appearance: button;
145 html input[disabled] {
148 button::-moz-focus-inner,
149 input::-moz-focus-inner {
156 input[type="checkbox"],
157 input[type="radio"] {
158 box-sizing: border-box;
161 input[type="number"]::-webkit-inner-spin-button,
162 input[type="number"]::-webkit-outer-spin-button {
165 input[type="search"] {
166 -webkit-appearance: textfield;
167 box-sizing: content-box;
169 input[type="search"]::-webkit-search-cancel-button,
170 input[type="search"]::-webkit-search-decoration {
171 -webkit-appearance: none;
174 border: 1px solid #c0c0c0;
176 padding: 0.35em 0.625em 0.75em;
189 border-collapse: collapse;
196 /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
201 background: transparent !important;
202 color: #000 !important;
203 box-shadow: none !important;
204 text-shadow: none !important;
208 text-decoration: underline;
211 content: " (" attr(href) ")";
214 content: " (" attr(title) ")";
217 a[href^="javascript:"]:after {
222 border: 1px solid #999;
223 page-break-inside: avoid;
226 display: table-header-group;
230 page-break-inside: avoid;
233 max-width: 100% !important;
243 page-break-after: avoid;
249 .dropup > .btn > .caret {
250 border-top-color: #000 !important;
253 border: 1px solid #000;
256 border-collapse: collapse !important;
260 background-color: #fff !important;
264 border: 1px solid #ddd !important;
268 font-family: 'Glyphicons Halflings';
269 src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
270 src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
275 display: inline-block;
276 font-family: 'Glyphicons Halflings';
280 -webkit-font-smoothing: antialiased;
281 -moz-osx-font-smoothing: grayscale;
283 .glyphicon-asterisk:before {
286 .glyphicon-plus:before {
289 .glyphicon-euro:before,
290 .glyphicon-eur:before {
293 .glyphicon-minus:before {
296 .glyphicon-cloud:before {
299 .glyphicon-envelope:before {
302 .glyphicon-pencil:before {
305 .glyphicon-glass:before {
308 .glyphicon-music:before {
311 .glyphicon-search:before {
314 .glyphicon-heart:before {
317 .glyphicon-star:before {
320 .glyphicon-star-empty:before {
323 .glyphicon-user:before {
326 .glyphicon-film:before {
329 .glyphicon-th-large:before {
332 .glyphicon-th:before {
335 .glyphicon-th-list:before {
338 .glyphicon-ok:before {
341 .glyphicon-remove:before {
344 .glyphicon-zoom-in:before {
347 .glyphicon-zoom-out:before {
350 .glyphicon-off:before {
353 .glyphicon-signal:before {
356 .glyphicon-cog:before {
359 .glyphicon-trash:before {
362 .glyphicon-home:before {
365 .glyphicon-file:before {
368 .glyphicon-time:before {
371 .glyphicon-road:before {
374 .glyphicon-download-alt:before {
377 .glyphicon-download:before {
380 .glyphicon-upload:before {
383 .glyphicon-inbox:before {
386 .glyphicon-play-circle:before {
389 .glyphicon-repeat:before {
392 .glyphicon-refresh:before {
395 .glyphicon-list-alt:before {
398 .glyphicon-lock:before {
401 .glyphicon-flag:before {
404 .glyphicon-headphones:before {
407 .glyphicon-volume-off:before {
410 .glyphicon-volume-down:before {
413 .glyphicon-volume-up:before {
416 .glyphicon-qrcode:before {
419 .glyphicon-barcode:before {
422 .glyphicon-tag:before {
425 .glyphicon-tags:before {
428 .glyphicon-book:before {
431 .glyphicon-bookmark:before {
434 .glyphicon-print:before {
437 .glyphicon-camera:before {
440 .glyphicon-font:before {
443 .glyphicon-bold:before {
446 .glyphicon-italic:before {
449 .glyphicon-text-height:before {
452 .glyphicon-text-width:before {
455 .glyphicon-align-left:before {
458 .glyphicon-align-center:before {
461 .glyphicon-align-right:before {
464 .glyphicon-align-justify:before {
467 .glyphicon-list:before {
470 .glyphicon-indent-left:before {
473 .glyphicon-indent-right:before {
476 .glyphicon-facetime-video:before {
479 .glyphicon-picture:before {
482 .glyphicon-map-marker:before {
485 .glyphicon-adjust:before {
488 .glyphicon-tint:before {
491 .glyphicon-edit:before {
494 .glyphicon-share:before {
497 .glyphicon-check:before {
500 .glyphicon-move:before {
503 .glyphicon-step-backward:before {
506 .glyphicon-fast-backward:before {
509 .glyphicon-backward:before {
512 .glyphicon-play:before {
515 .glyphicon-pause:before {
518 .glyphicon-stop:before {
521 .glyphicon-forward:before {
524 .glyphicon-fast-forward:before {
527 .glyphicon-step-forward:before {
530 .glyphicon-eject:before {
533 .glyphicon-chevron-left:before {
536 .glyphicon-chevron-right:before {
539 .glyphicon-plus-sign:before {
542 .glyphicon-minus-sign:before {
545 .glyphicon-remove-sign:before {
548 .glyphicon-ok-sign:before {
551 .glyphicon-question-sign:before {
554 .glyphicon-info-sign:before {
557 .glyphicon-screenshot:before {
560 .glyphicon-remove-circle:before {
563 .glyphicon-ok-circle:before {
566 .glyphicon-ban-circle:before {
569 .glyphicon-arrow-left:before {
572 .glyphicon-arrow-right:before {
575 .glyphicon-arrow-up:before {
578 .glyphicon-arrow-down:before {
581 .glyphicon-share-alt:before {
584 .glyphicon-resize-full:before {
587 .glyphicon-resize-small:before {
590 .glyphicon-exclamation-sign:before {
593 .glyphicon-gift:before {
596 .glyphicon-leaf:before {
599 .glyphicon-fire:before {
602 .glyphicon-eye-open:before {
605 .glyphicon-eye-close:before {
608 .glyphicon-warning-sign:before {
611 .glyphicon-plane:before {
614 .glyphicon-calendar:before {
617 .glyphicon-random:before {
620 .glyphicon-comment:before {
623 .glyphicon-magnet:before {
626 .glyphicon-chevron-up:before {
629 .glyphicon-chevron-down:before {
632 .glyphicon-retweet:before {
635 .glyphicon-shopping-cart:before {
638 .glyphicon-folder-close:before {
641 .glyphicon-folder-open:before {
644 .glyphicon-resize-vertical:before {
647 .glyphicon-resize-horizontal:before {
650 .glyphicon-hdd:before {
653 .glyphicon-bullhorn:before {
656 .glyphicon-bell:before {
659 .glyphicon-certificate:before {
662 .glyphicon-thumbs-up:before {
665 .glyphicon-thumbs-down:before {
668 .glyphicon-hand-right:before {
671 .glyphicon-hand-left:before {
674 .glyphicon-hand-up:before {
677 .glyphicon-hand-down:before {
680 .glyphicon-circle-arrow-right:before {
683 .glyphicon-circle-arrow-left:before {
686 .glyphicon-circle-arrow-up:before {
689 .glyphicon-circle-arrow-down:before {
692 .glyphicon-globe:before {
695 .glyphicon-wrench:before {
698 .glyphicon-tasks:before {
701 .glyphicon-filter:before {
704 .glyphicon-briefcase:before {
707 .glyphicon-fullscreen:before {
710 .glyphicon-dashboard:before {
713 .glyphicon-paperclip:before {
716 .glyphicon-heart-empty:before {
719 .glyphicon-link:before {
722 .glyphicon-phone:before {
725 .glyphicon-pushpin:before {
728 .glyphicon-usd:before {
731 .glyphicon-gbp:before {
734 .glyphicon-sort:before {
737 .glyphicon-sort-by-alphabet:before {
740 .glyphicon-sort-by-alphabet-alt:before {
743 .glyphicon-sort-by-order:before {
746 .glyphicon-sort-by-order-alt:before {
749 .glyphicon-sort-by-attributes:before {
752 .glyphicon-sort-by-attributes-alt:before {
755 .glyphicon-unchecked:before {
758 .glyphicon-expand:before {
761 .glyphicon-collapse-down:before {
764 .glyphicon-collapse-up:before {
767 .glyphicon-log-in:before {
770 .glyphicon-flash:before {
773 .glyphicon-log-out:before {
776 .glyphicon-new-window:before {
779 .glyphicon-record:before {
782 .glyphicon-save:before {
785 .glyphicon-open:before {
788 .glyphicon-saved:before {
791 .glyphicon-import:before {
794 .glyphicon-export:before {
797 .glyphicon-send:before {
800 .glyphicon-floppy-disk:before {
803 .glyphicon-floppy-saved:before {
806 .glyphicon-floppy-remove:before {
809 .glyphicon-floppy-save:before {
812 .glyphicon-floppy-open:before {
815 .glyphicon-credit-card:before {
818 .glyphicon-transfer:before {
821 .glyphicon-cutlery:before {
824 .glyphicon-header:before {
827 .glyphicon-compressed:before {
830 .glyphicon-earphone:before {
833 .glyphicon-phone-alt:before {
836 .glyphicon-tower:before {
839 .glyphicon-stats:before {
842 .glyphicon-sd-video:before {
845 .glyphicon-hd-video:before {
848 .glyphicon-subtitles:before {
851 .glyphicon-sound-stereo:before {
854 .glyphicon-sound-dolby:before {
857 .glyphicon-sound-5-1:before {
860 .glyphicon-sound-6-1:before {
863 .glyphicon-sound-7-1:before {
866 .glyphicon-copyright-mark:before {
869 .glyphicon-registration-mark:before {
872 .glyphicon-cloud-download:before {
875 .glyphicon-cloud-upload:before {
878 .glyphicon-tree-conifer:before {
881 .glyphicon-tree-deciduous:before {
884 .glyphicon-cd:before {
887 .glyphicon-save-file:before {
890 .glyphicon-open-file:before {
893 .glyphicon-level-up:before {
896 .glyphicon-copy:before {
899 .glyphicon-paste:before {
902 .glyphicon-alert:before {
905 .glyphicon-equalizer:before {
908 .glyphicon-king:before {
911 .glyphicon-queen:before {
914 .glyphicon-pawn:before {
917 .glyphicon-bishop:before {
920 .glyphicon-knight:before {
923 .glyphicon-baby-formula:before {
926 .glyphicon-tent:before {
929 .glyphicon-blackboard:before {
932 .glyphicon-bed:before {
935 .glyphicon-apple:before {
938 .glyphicon-erase:before {
941 .glyphicon-hourglass:before {
944 .glyphicon-lamp:before {
947 .glyphicon-duplicate:before {
950 .glyphicon-piggy-bank:before {
953 .glyphicon-scissors:before {
956 .glyphicon-bitcoin:before {
959 .glyphicon-btc:before {
962 .glyphicon-xbt:before {
965 .glyphicon-yen:before {
968 .glyphicon-jpy:before {
971 .glyphicon-ruble:before {
974 .glyphicon-rub:before {
977 .glyphicon-scale:before {
980 .glyphicon-ice-lolly:before {
983 .glyphicon-ice-lolly-tasted:before {
986 .glyphicon-education:before {
989 .glyphicon-option-horizontal:before {
992 .glyphicon-option-vertical:before {
995 .glyphicon-menu-hamburger:before {
998 .glyphicon-modal-window:before {
1001 .glyphicon-oil:before {
1004 .glyphicon-grain:before {
1007 .glyphicon-sunglasses:before {
1010 .glyphicon-text-size:before {
1013 .glyphicon-text-color:before {
1016 .glyphicon-text-background:before {
1019 .glyphicon-object-align-top:before {
1022 .glyphicon-object-align-bottom:before {
1025 .glyphicon-object-align-horizontal:before {
1028 .glyphicon-object-align-left:before {
1031 .glyphicon-object-align-vertical:before {
1034 .glyphicon-object-align-right:before {
1037 .glyphicon-triangle-right:before {
1040 .glyphicon-triangle-left:before {
1043 .glyphicon-triangle-bottom:before {
1046 .glyphicon-triangle-top:before {
1049 .glyphicon-console:before {
1052 .glyphicon-superscript:before {
1055 .glyphicon-subscript:before {
1058 .glyphicon-menu-left:before {
1061 .glyphicon-menu-right:before {
1064 .glyphicon-menu-down:before {
1067 .glyphicon-menu-up:before {
1071 -webkit-box-sizing: border-box;
1072 -moz-box-sizing: border-box;
1073 box-sizing: border-box;
1077 -webkit-box-sizing: border-box;
1078 -moz-box-sizing: border-box;
1079 box-sizing: border-box;
1083 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
1086 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
1088 line-height: 1.42857143;
1090 background-color: #fff;
1096 font-family: inherit;
1098 line-height: inherit;
1102 text-decoration: none;
1107 text-decoration: underline;
1110 outline: 5px auto -webkit-focus-ring-color;
1111 outline-offset: -2px;
1117 vertical-align: middle;
1122 .carousel-inner > .item > img,
1123 .carousel-inner > .item > a > img {
1133 line-height: 1.42857143;
1134 background-color: #fff;
1135 border: 1px solid #ddd;
1137 -webkit-transition: all 0.2s ease-in-out;
1138 -o-transition: all 0.2s ease-in-out;
1139 transition: all 0.2s ease-in-out;
1140 display: inline-block;
1149 margin-bottom: 18px;
1151 border-top: 1px solid #eeeeee;
1160 clip: rect(0, 0, 0, 0);
1163 .sr-only-focusable:active,
1164 .sr-only-focusable:focus {
1187 font-family: inherit;
1216 font-weight: normal;
1294 margin-bottom: 18px;
1299 @media (min-width: 768px) {
1310 background-color: #fcf8e3;
1323 text-align: justify;
1326 white-space: nowrap;
1329 text-transform: lowercase;
1332 text-transform: uppercase;
1335 text-transform: capitalize;
1343 a.text-primary:hover,
1344 a.text-primary:focus {
1350 a.text-success:hover,
1351 a.text-success:focus {
1364 a.text-warning:hover,
1365 a.text-warning:focus {
1371 a.text-danger:hover,
1372 a.text-danger:focus {
1377 background-color: #337ab7;
1380 a.bg-primary:focus {
1381 background-color: #286090;
1384 background-color: #dff0d8;
1387 a.bg-success:focus {
1388 background-color: #c1e2b3;
1391 background-color: #d9edf7;
1395 background-color: #afd9ee;
1398 background-color: #fcf8e3;
1401 a.bg-warning:focus {
1402 background-color: #f7ecb5;
1405 background-color: #f2dede;
1409 background-color: #e4b9b9;
1412 padding-bottom: 8px;
1413 margin: 36px 0 18px;
1414 border-bottom: 1px solid #eeeeee;
1437 display: inline-block;
1443 margin-bottom: 18px;
1447 line-height: 1.42857143;
1455 @media (min-width: 541px) {
1462 text-overflow: ellipsis;
1463 white-space: nowrap;
1470 abbr[data-original-title] {
1472 border-bottom: 1px dotted #777777;
1476 text-transform: uppercase;
1482 border-left: 5px solid #eeeeee;
1484 blockquote p:last-child,
1485 blockquote ul:last-child,
1486 blockquote ol:last-child {
1494 line-height: 1.42857143;
1497 blockquote footer:before,
1498 blockquote small:before,
1499 blockquote .small:before {
1500 content: '\2014 \00A0';
1502 .blockquote-reverse,
1503 blockquote.pull-right {
1504 padding-right: 15px;
1506 border-right: 5px solid #eeeeee;
1510 .blockquote-reverse footer:before,
1511 blockquote.pull-right footer:before,
1512 .blockquote-reverse small:before,
1513 blockquote.pull-right small:before,
1514 .blockquote-reverse .small:before,
1515 blockquote.pull-right .small:before {
1518 .blockquote-reverse footer:after,
1519 blockquote.pull-right footer:after,
1520 .blockquote-reverse small:after,
1521 blockquote.pull-right small:after,
1522 .blockquote-reverse .small:after,
1523 blockquote.pull-right .small:after {
1524 content: '\00A0 \2014';
1527 margin-bottom: 18px;
1529 line-height: 1.42857143;
1535 font-family: monospace;
1541 background-color: #f9f2f4;
1548 background-color: transparent;
1550 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
1563 line-height: 1.42857143;
1564 word-break: break-all;
1565 word-wrap: break-word;
1567 background-color: #f5f5f5;
1568 border: 1px solid #ccc;
1575 white-space: pre-wrap;
1576 background-color: transparent;
1589 @media (min-width: 768px) {
1594 @media (min-width: 992px) {
1599 @media (min-width: 1200px) {
1614 .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 {
1620 .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 {
1627 width: 91.66666667%;
1630 width: 83.33333333%;
1636 width: 66.66666667%;
1639 width: 58.33333333%;
1645 width: 41.66666667%;
1648 width: 33.33333333%;
1654 width: 16.66666667%;
1663 right: 91.66666667%;
1666 right: 83.33333333%;
1672 right: 66.66666667%;
1675 right: 58.33333333%;
1681 right: 41.66666667%;
1684 right: 33.33333333%;
1690 right: 16.66666667%;
1741 margin-left: 91.66666667%;
1744 margin-left: 83.33333333%;
1750 margin-left: 66.66666667%;
1753 margin-left: 58.33333333%;
1759 margin-left: 41.66666667%;
1762 margin-left: 33.33333333%;
1768 margin-left: 16.66666667%;
1771 margin-left: 8.33333333%;
1776 @media (min-width: 768px) {
1777 .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 {
1784 width: 91.66666667%;
1787 width: 83.33333333%;
1793 width: 66.66666667%;
1796 width: 58.33333333%;
1802 width: 41.66666667%;
1805 width: 33.33333333%;
1811 width: 16.66666667%;
1820 right: 91.66666667%;
1823 right: 83.33333333%;
1829 right: 66.66666667%;
1832 right: 58.33333333%;
1838 right: 41.66666667%;
1841 right: 33.33333333%;
1847 right: 16.66666667%;
1898 margin-left: 91.66666667%;
1901 margin-left: 83.33333333%;
1907 margin-left: 66.66666667%;
1910 margin-left: 58.33333333%;
1916 margin-left: 41.66666667%;
1919 margin-left: 33.33333333%;
1925 margin-left: 16.66666667%;
1928 margin-left: 8.33333333%;
1934 @media (min-width: 992px) {
1935 .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 {
1942 width: 91.66666667%;
1945 width: 83.33333333%;
1951 width: 66.66666667%;
1954 width: 58.33333333%;
1960 width: 41.66666667%;
1963 width: 33.33333333%;
1969 width: 16.66666667%;
1978 right: 91.66666667%;
1981 right: 83.33333333%;
1987 right: 66.66666667%;
1990 right: 58.33333333%;
1996 right: 41.66666667%;
1999 right: 33.33333333%;
2005 right: 16.66666667%;
2056 margin-left: 91.66666667%;
2059 margin-left: 83.33333333%;
2065 margin-left: 66.66666667%;
2068 margin-left: 58.33333333%;
2074 margin-left: 41.66666667%;
2077 margin-left: 33.33333333%;
2083 margin-left: 16.66666667%;
2086 margin-left: 8.33333333%;
2092 @media (min-width: 1200px) {
2093 .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 {
2100 width: 91.66666667%;
2103 width: 83.33333333%;
2109 width: 66.66666667%;
2112 width: 58.33333333%;
2118 width: 41.66666667%;
2121 width: 33.33333333%;
2127 width: 16.66666667%;
2136 right: 91.66666667%;
2139 right: 83.33333333%;
2145 right: 66.66666667%;
2148 right: 58.33333333%;
2154 right: 41.66666667%;
2157 right: 33.33333333%;
2163 right: 16.66666667%;
2214 margin-left: 91.66666667%;
2217 margin-left: 83.33333333%;
2223 margin-left: 66.66666667%;
2226 margin-left: 58.33333333%;
2232 margin-left: 41.66666667%;
2235 margin-left: 33.33333333%;
2241 margin-left: 16.66666667%;
2244 margin-left: 8.33333333%;
2251 background-color: transparent;
2255 padding-bottom: 8px;
2265 margin-bottom: 18px;
2267 .table > thead > tr > th,
2268 .table > tbody > tr > th,
2269 .table > tfoot > tr > th,
2270 .table > thead > tr > td,
2271 .table > tbody > tr > td,
2272 .table > tfoot > tr > td {
2274 line-height: 1.42857143;
2275 vertical-align: top;
2276 border-top: 1px solid #ddd;
2278 .table > thead > tr > th {
2279 vertical-align: bottom;
2280 border-bottom: 2px solid #ddd;
2282 .table > caption + thead > tr:first-child > th,
2283 .table > colgroup + thead > tr:first-child > th,
2284 .table > thead:first-child > tr:first-child > th,
2285 .table > caption + thead > tr:first-child > td,
2286 .table > colgroup + thead > tr:first-child > td,
2287 .table > thead:first-child > tr:first-child > td {
2290 .table > tbody + tbody {
2291 border-top: 2px solid #ddd;
2294 background-color: #fff;
2296 .table-condensed > thead > tr > th,
2297 .table-condensed > tbody > tr > th,
2298 .table-condensed > tfoot > tr > th,
2299 .table-condensed > thead > tr > td,
2300 .table-condensed > tbody > tr > td,
2301 .table-condensed > tfoot > tr > td {
2305 border: 1px solid #ddd;
2307 .table-bordered > thead > tr > th,
2308 .table-bordered > tbody > tr > th,
2309 .table-bordered > tfoot > tr > th,
2310 .table-bordered > thead > tr > td,
2311 .table-bordered > tbody > tr > td,
2312 .table-bordered > tfoot > tr > td {
2313 border: 1px solid #ddd;
2315 .table-bordered > thead > tr > th,
2316 .table-bordered > thead > tr > td {
2317 border-bottom-width: 2px;
2319 .table-striped > tbody > tr:nth-of-type(odd) {
2320 background-color: #f9f9f9;
2322 .table-hover > tbody > tr:hover {
2323 background-color: #f5f5f5;
2325 table col[class*="col-"] {
2328 display: table-column;
2330 table td[class*="col-"],
2331 table th[class*="col-"] {
2334 display: table-cell;
2336 .table > thead > tr > td.active,
2337 .table > tbody > tr > td.active,
2338 .table > tfoot > tr > td.active,
2339 .table > thead > tr > th.active,
2340 .table > tbody > tr > th.active,
2341 .table > tfoot > tr > th.active,
2342 .table > thead > tr.active > td,
2343 .table > tbody > tr.active > td,
2344 .table > tfoot > tr.active > td,
2345 .table > thead > tr.active > th,
2346 .table > tbody > tr.active > th,
2347 .table > tfoot > tr.active > th {
2348 background-color: #f5f5f5;
2350 .table-hover > tbody > tr > td.active:hover,
2351 .table-hover > tbody > tr > th.active:hover,
2352 .table-hover > tbody > tr.active:hover > td,
2353 .table-hover > tbody > tr:hover > .active,
2354 .table-hover > tbody > tr.active:hover > th {
2355 background-color: #e8e8e8;
2357 .table > thead > tr > td.success,
2358 .table > tbody > tr > td.success,
2359 .table > tfoot > tr > td.success,
2360 .table > thead > tr > th.success,
2361 .table > tbody > tr > th.success,
2362 .table > tfoot > tr > th.success,
2363 .table > thead > tr.success > td,
2364 .table > tbody > tr.success > td,
2365 .table > tfoot > tr.success > td,
2366 .table > thead > tr.success > th,
2367 .table > tbody > tr.success > th,
2368 .table > tfoot > tr.success > th {
2369 background-color: #dff0d8;
2371 .table-hover > tbody > tr > td.success:hover,
2372 .table-hover > tbody > tr > th.success:hover,
2373 .table-hover > tbody > tr.success:hover > td,
2374 .table-hover > tbody > tr:hover > .success,
2375 .table-hover > tbody > tr.success:hover > th {
2376 background-color: #d0e9c6;
2378 .table > thead > tr > td.info,
2379 .table > tbody > tr > td.info,
2380 .table > tfoot > tr > td.info,
2381 .table > thead > tr > th.info,
2382 .table > tbody > tr > th.info,
2383 .table > tfoot > tr > th.info,
2384 .table > thead > tr.info > td,
2385 .table > tbody > tr.info > td,
2386 .table > tfoot > tr.info > td,
2387 .table > thead > tr.info > th,
2388 .table > tbody > tr.info > th,
2389 .table > tfoot > tr.info > th {
2390 background-color: #d9edf7;
2392 .table-hover > tbody > tr > td.info:hover,
2393 .table-hover > tbody > tr > th.info:hover,
2394 .table-hover > tbody > tr.info:hover > td,
2395 .table-hover > tbody > tr:hover > .info,
2396 .table-hover > tbody > tr.info:hover > th {
2397 background-color: #c4e3f3;
2399 .table > thead > tr > td.warning,
2400 .table > tbody > tr > td.warning,
2401 .table > tfoot > tr > td.warning,
2402 .table > thead > tr > th.warning,
2403 .table > tbody > tr > th.warning,
2404 .table > tfoot > tr > th.warning,
2405 .table > thead > tr.warning > td,
2406 .table > tbody > tr.warning > td,
2407 .table > tfoot > tr.warning > td,
2408 .table > thead > tr.warning > th,
2409 .table > tbody > tr.warning > th,
2410 .table > tfoot > tr.warning > th {
2411 background-color: #fcf8e3;
2413 .table-hover > tbody > tr > td.warning:hover,
2414 .table-hover > tbody > tr > th.warning:hover,
2415 .table-hover > tbody > tr.warning:hover > td,
2416 .table-hover > tbody > tr:hover > .warning,
2417 .table-hover > tbody > tr.warning:hover > th {
2418 background-color: #faf2cc;
2420 .table > thead > tr > td.danger,
2421 .table > tbody > tr > td.danger,
2422 .table > tfoot > tr > td.danger,
2423 .table > thead > tr > th.danger,
2424 .table > tbody > tr > th.danger,
2425 .table > tfoot > tr > th.danger,
2426 .table > thead > tr.danger > td,
2427 .table > tbody > tr.danger > td,
2428 .table > tfoot > tr.danger > td,
2429 .table > thead > tr.danger > th,
2430 .table > tbody > tr.danger > th,
2431 .table > tfoot > tr.danger > th {
2432 background-color: #f2dede;
2434 .table-hover > tbody > tr > td.danger:hover,
2435 .table-hover > tbody > tr > th.danger:hover,
2436 .table-hover > tbody > tr.danger:hover > td,
2437 .table-hover > tbody > tr:hover > .danger,
2438 .table-hover > tbody > tr.danger:hover > th {
2439 background-color: #ebcccc;
2445 @media screen and (max-width: 767px) {
2448 margin-bottom: 13.5px;
2450 -ms-overflow-style: -ms-autohiding-scrollbar;
2451 border: 1px solid #ddd;
2453 .table-responsive > .table {
2456 .table-responsive > .table > thead > tr > th,
2457 .table-responsive > .table > tbody > tr > th,
2458 .table-responsive > .table > tfoot > tr > th,
2459 .table-responsive > .table > thead > tr > td,
2460 .table-responsive > .table > tbody > tr > td,
2461 .table-responsive > .table > tfoot > tr > td {
2462 white-space: nowrap;
2464 .table-responsive > .table-bordered {
2467 .table-responsive > .table-bordered > thead > tr > th:first-child,
2468 .table-responsive > .table-bordered > tbody > tr > th:first-child,
2469 .table-responsive > .table-bordered > tfoot > tr > th:first-child,
2470 .table-responsive > .table-bordered > thead > tr > td:first-child,
2471 .table-responsive > .table-bordered > tbody > tr > td:first-child,
2472 .table-responsive > .table-bordered > tfoot > tr > td:first-child {
2475 .table-responsive > .table-bordered > thead > tr > th:last-child,
2476 .table-responsive > .table-bordered > tbody > tr > th:last-child,
2477 .table-responsive > .table-bordered > tfoot > tr > th:last-child,
2478 .table-responsive > .table-bordered > thead > tr > td:last-child,
2479 .table-responsive > .table-bordered > tbody > tr > td:last-child,
2480 .table-responsive > .table-bordered > tfoot > tr > td:last-child {
2483 .table-responsive > .table-bordered > tbody > tr:last-child > th,
2484 .table-responsive > .table-bordered > tfoot > tr:last-child > th,
2485 .table-responsive > .table-bordered > tbody > tr:last-child > td,
2486 .table-responsive > .table-bordered > tfoot > tr:last-child > td {
2500 margin-bottom: 18px;
2502 line-height: inherit;
2505 border-bottom: 1px solid #e5e5e5;
2508 display: inline-block;
2513 input[type="search"] {
2514 -webkit-box-sizing: border-box;
2515 -moz-box-sizing: border-box;
2516 box-sizing: border-box;
2518 input[type="radio"],
2519 input[type="checkbox"] {
2522 line-height: normal;
2524 input[type="file"] {
2527 input[type="range"] {
2535 input[type="file"]:focus,
2536 input[type="radio"]:focus,
2537 input[type="checkbox"]:focus {
2538 outline: 5px auto -webkit-focus-ring-color;
2539 outline-offset: -2px;
2545 line-height: 1.42857143;
2554 line-height: 1.42857143;
2556 background-color: #fff;
2557 background-image: none;
2558 border: 1px solid #ccc;
2560 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2561 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2562 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2563 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2564 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
2566 .form-control:focus {
2567 border-color: #66afe9;
2569 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2570 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
2572 .form-control::-moz-placeholder {
2576 .form-control:-ms-input-placeholder {
2579 .form-control::-webkit-input-placeholder {
2582 .form-control::-ms-expand {
2584 background-color: transparent;
2586 .form-control[disabled],
2587 .form-control[readonly],
2588 fieldset[disabled] .form-control {
2589 background-color: #eeeeee;
2592 .form-control[disabled],
2593 fieldset[disabled] .form-control {
2594 cursor: not-allowed;
2596 textarea.form-control {
2599 input[type="search"] {
2600 -webkit-appearance: none;
2602 @media screen and (-webkit-min-device-pixel-ratio: 0) {
2603 input[type="date"].form-control,
2604 input[type="time"].form-control,
2605 input[type="datetime-local"].form-control,
2606 input[type="month"].form-control {
2609 input[type="date"].input-sm,
2610 input[type="time"].input-sm,
2611 input[type="datetime-local"].input-sm,
2612 input[type="month"].input-sm,
2613 .input-group-sm input[type="date"],
2614 .input-group-sm input[type="time"],
2615 .input-group-sm input[type="datetime-local"],
2616 .input-group-sm input[type="month"] {
2619 input[type="date"].input-lg,
2620 input[type="time"].input-lg,
2621 input[type="datetime-local"].input-lg,
2622 input[type="month"].input-lg,
2623 .input-group-lg input[type="date"],
2624 .input-group-lg input[type="time"],
2625 .input-group-lg input[type="datetime-local"],
2626 .input-group-lg input[type="month"] {
2631 margin-bottom: 15px;
2638 margin-bottom: 10px;
2645 font-weight: normal;
2648 .radio input[type="radio"],
2649 .radio-inline input[type="radio"],
2650 .checkbox input[type="checkbox"],
2651 .checkbox-inline input[type="checkbox"] {
2657 .checkbox + .checkbox {
2663 display: inline-block;
2666 vertical-align: middle;
2667 font-weight: normal;
2670 .radio-inline + .radio-inline,
2671 .checkbox-inline + .checkbox-inline {
2675 input[type="radio"][disabled],
2676 input[type="checkbox"][disabled],
2677 input[type="radio"].disabled,
2678 input[type="checkbox"].disabled,
2679 fieldset[disabled] input[type="radio"],
2680 fieldset[disabled] input[type="checkbox"] {
2681 cursor: not-allowed;
2683 .radio-inline.disabled,
2684 .checkbox-inline.disabled,
2685 fieldset[disabled] .radio-inline,
2686 fieldset[disabled] .checkbox-inline {
2687 cursor: not-allowed;
2689 .radio.disabled label,
2690 .checkbox.disabled label,
2691 fieldset[disabled] .radio label,
2692 fieldset[disabled] .checkbox label {
2693 cursor: not-allowed;
2695 .form-control-static {
2697 padding-bottom: 7px;
2701 .form-control-static.input-lg,
2702 .form-control-static.input-sm {
2718 select[multiple].input-sm {
2721 .form-group-sm .form-control {
2728 .form-group-sm select.form-control {
2732 .form-group-sm textarea.form-control,
2733 .form-group-sm select[multiple].form-control {
2736 .form-group-sm .form-control-static {
2747 line-height: 1.3333333;
2755 select[multiple].input-lg {
2758 .form-group-lg .form-control {
2762 line-height: 1.3333333;
2765 .form-group-lg select.form-control {
2769 .form-group-lg textarea.form-control,
2770 .form-group-lg select[multiple].form-control {
2773 .form-group-lg .form-control-static {
2778 line-height: 1.3333333;
2783 .has-feedback .form-control {
2784 padding-right: 40px;
2786 .form-control-feedback {
2796 pointer-events: none;
2798 .input-lg + .form-control-feedback,
2799 .input-group-lg + .form-control-feedback,
2800 .form-group-lg .form-control + .form-control-feedback {
2805 .input-sm + .form-control-feedback,
2806 .input-group-sm + .form-control-feedback,
2807 .form-group-sm .form-control + .form-control-feedback {
2812 .has-success .help-block,
2813 .has-success .control-label,
2814 .has-success .radio,
2815 .has-success .checkbox,
2816 .has-success .radio-inline,
2817 .has-success .checkbox-inline,
2818 .has-success.radio label,
2819 .has-success.checkbox label,
2820 .has-success.radio-inline label,
2821 .has-success.checkbox-inline label {
2824 .has-success .form-control {
2825 border-color: #3c763d;
2826 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2827 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2829 .has-success .form-control:focus {
2830 border-color: #2b542c;
2831 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2832 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
2834 .has-success .input-group-addon {
2836 border-color: #3c763d;
2837 background-color: #dff0d8;
2839 .has-success .form-control-feedback {
2842 .has-warning .help-block,
2843 .has-warning .control-label,
2844 .has-warning .radio,
2845 .has-warning .checkbox,
2846 .has-warning .radio-inline,
2847 .has-warning .checkbox-inline,
2848 .has-warning.radio label,
2849 .has-warning.checkbox label,
2850 .has-warning.radio-inline label,
2851 .has-warning.checkbox-inline label {
2854 .has-warning .form-control {
2855 border-color: #8a6d3b;
2856 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2857 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2859 .has-warning .form-control:focus {
2860 border-color: #66512c;
2861 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2862 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
2864 .has-warning .input-group-addon {
2866 border-color: #8a6d3b;
2867 background-color: #fcf8e3;
2869 .has-warning .form-control-feedback {
2872 .has-error .help-block,
2873 .has-error .control-label,
2875 .has-error .checkbox,
2876 .has-error .radio-inline,
2877 .has-error .checkbox-inline,
2878 .has-error.radio label,
2879 .has-error.checkbox label,
2880 .has-error.radio-inline label,
2881 .has-error.checkbox-inline label {
2884 .has-error .form-control {
2885 border-color: #a94442;
2886 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2887 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
2889 .has-error .form-control:focus {
2890 border-color: #843534;
2891 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2892 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
2894 .has-error .input-group-addon {
2896 border-color: #a94442;
2897 background-color: #f2dede;
2899 .has-error .form-control-feedback {
2902 .has-feedback label ~ .form-control-feedback {
2905 .has-feedback label.sr-only ~ .form-control-feedback {
2911 margin-bottom: 10px;
2914 @media (min-width: 768px) {
2915 .form-inline .form-group {
2916 display: inline-block;
2918 vertical-align: middle;
2920 .form-inline .form-control {
2921 display: inline-block;
2923 vertical-align: middle;
2925 .form-inline .form-control-static {
2926 display: inline-block;
2928 .form-inline .input-group {
2929 display: inline-table;
2930 vertical-align: middle;
2932 .form-inline .input-group .input-group-addon,
2933 .form-inline .input-group .input-group-btn,
2934 .form-inline .input-group .form-control {
2937 .form-inline .input-group > .form-control {
2940 .form-inline .control-label {
2942 vertical-align: middle;
2944 .form-inline .radio,
2945 .form-inline .checkbox {
2946 display: inline-block;
2949 vertical-align: middle;
2951 .form-inline .radio label,
2952 .form-inline .checkbox label {
2955 .form-inline .radio input[type="radio"],
2956 .form-inline .checkbox input[type="checkbox"] {
2960 .form-inline .has-feedback .form-control-feedback {
2964 .form-horizontal .radio,
2965 .form-horizontal .checkbox,
2966 .form-horizontal .radio-inline,
2967 .form-horizontal .checkbox-inline {
2972 .form-horizontal .radio,
2973 .form-horizontal .checkbox {
2976 .form-horizontal .form-group {
2980 @media (min-width: 768px) {
2981 .form-horizontal .control-label {
2987 .form-horizontal .has-feedback .form-control-feedback {
2990 @media (min-width: 768px) {
2991 .form-horizontal .form-group-lg .control-label {
2996 @media (min-width: 768px) {
2997 .form-horizontal .form-group-sm .control-label {
3003 display: inline-block;
3005 font-weight: normal;
3007 vertical-align: middle;
3008 touch-action: manipulation;
3010 background-image: none;
3011 border: 1px solid transparent;
3012 white-space: nowrap;
3015 line-height: 1.42857143;
3017 -webkit-user-select: none;
3018 -moz-user-select: none;
3019 -ms-user-select: none;
3028 outline: 5px auto -webkit-focus-ring-color;
3029 outline-offset: -2px;
3035 text-decoration: none;
3040 background-image: none;
3041 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3042 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3046 fieldset[disabled] .btn {
3047 cursor: not-allowed;
3049 filter: alpha(opacity=65);
3050 -webkit-box-shadow: none;
3054 fieldset[disabled] a.btn {
3055 pointer-events: none;
3059 background-color: #fff;
3063 .btn-default.focus {
3065 background-color: #e6e6e6;
3066 border-color: #8c8c8c;
3068 .btn-default:hover {
3070 background-color: #e6e6e6;
3071 border-color: #adadad;
3073 .btn-default:active,
3074 .btn-default.active,
3075 .open > .dropdown-toggle.btn-default {
3077 background-color: #e6e6e6;
3078 border-color: #adadad;
3080 .btn-default:active:hover,
3081 .btn-default.active:hover,
3082 .open > .dropdown-toggle.btn-default:hover,
3083 .btn-default:active:focus,
3084 .btn-default.active:focus,
3085 .open > .dropdown-toggle.btn-default:focus,
3086 .btn-default:active.focus,
3087 .btn-default.active.focus,
3088 .open > .dropdown-toggle.btn-default.focus {
3090 background-color: #d4d4d4;
3091 border-color: #8c8c8c;
3093 .btn-default:active,
3094 .btn-default.active,
3095 .open > .dropdown-toggle.btn-default {
3096 background-image: none;
3098 .btn-default.disabled:hover,
3099 .btn-default[disabled]:hover,
3100 fieldset[disabled] .btn-default:hover,
3101 .btn-default.disabled:focus,
3102 .btn-default[disabled]:focus,
3103 fieldset[disabled] .btn-default:focus,
3104 .btn-default.disabled.focus,
3105 .btn-default[disabled].focus,
3106 fieldset[disabled] .btn-default.focus {
3107 background-color: #fff;
3110 .btn-default .badge {
3112 background-color: #333;
3116 background-color: #337ab7;
3117 border-color: #2e6da4;
3120 .btn-primary.focus {
3122 background-color: #286090;
3123 border-color: #122b40;
3125 .btn-primary:hover {
3127 background-color: #286090;
3128 border-color: #204d74;
3130 .btn-primary:active,
3131 .btn-primary.active,
3132 .open > .dropdown-toggle.btn-primary {
3134 background-color: #286090;
3135 border-color: #204d74;
3137 .btn-primary:active:hover,
3138 .btn-primary.active:hover,
3139 .open > .dropdown-toggle.btn-primary:hover,
3140 .btn-primary:active:focus,
3141 .btn-primary.active:focus,
3142 .open > .dropdown-toggle.btn-primary:focus,
3143 .btn-primary:active.focus,
3144 .btn-primary.active.focus,
3145 .open > .dropdown-toggle.btn-primary.focus {
3147 background-color: #204d74;
3148 border-color: #122b40;
3150 .btn-primary:active,
3151 .btn-primary.active,
3152 .open > .dropdown-toggle.btn-primary {
3153 background-image: none;
3155 .btn-primary.disabled:hover,
3156 .btn-primary[disabled]:hover,
3157 fieldset[disabled] .btn-primary:hover,
3158 .btn-primary.disabled:focus,
3159 .btn-primary[disabled]:focus,
3160 fieldset[disabled] .btn-primary:focus,
3161 .btn-primary.disabled.focus,
3162 .btn-primary[disabled].focus,
3163 fieldset[disabled] .btn-primary.focus {
3164 background-color: #337ab7;
3165 border-color: #2e6da4;
3167 .btn-primary .badge {
3169 background-color: #fff;
3173 background-color: #5cb85c;
3174 border-color: #4cae4c;
3177 .btn-success.focus {
3179 background-color: #449d44;
3180 border-color: #255625;
3182 .btn-success:hover {
3184 background-color: #449d44;
3185 border-color: #398439;
3187 .btn-success:active,
3188 .btn-success.active,
3189 .open > .dropdown-toggle.btn-success {
3191 background-color: #449d44;
3192 border-color: #398439;
3194 .btn-success:active:hover,
3195 .btn-success.active:hover,
3196 .open > .dropdown-toggle.btn-success:hover,
3197 .btn-success:active:focus,
3198 .btn-success.active:focus,
3199 .open > .dropdown-toggle.btn-success:focus,
3200 .btn-success:active.focus,
3201 .btn-success.active.focus,
3202 .open > .dropdown-toggle.btn-success.focus {
3204 background-color: #398439;
3205 border-color: #255625;
3207 .btn-success:active,
3208 .btn-success.active,
3209 .open > .dropdown-toggle.btn-success {
3210 background-image: none;
3212 .btn-success.disabled:hover,
3213 .btn-success[disabled]:hover,
3214 fieldset[disabled] .btn-success:hover,
3215 .btn-success.disabled:focus,
3216 .btn-success[disabled]:focus,
3217 fieldset[disabled] .btn-success:focus,
3218 .btn-success.disabled.focus,
3219 .btn-success[disabled].focus,
3220 fieldset[disabled] .btn-success.focus {
3221 background-color: #5cb85c;
3222 border-color: #4cae4c;
3224 .btn-success .badge {
3226 background-color: #fff;
3230 background-color: #5bc0de;
3231 border-color: #46b8da;
3236 background-color: #31b0d5;
3237 border-color: #1b6d85;
3241 background-color: #31b0d5;
3242 border-color: #269abc;
3246 .open > .dropdown-toggle.btn-info {
3248 background-color: #31b0d5;
3249 border-color: #269abc;
3251 .btn-info:active:hover,
3252 .btn-info.active:hover,
3253 .open > .dropdown-toggle.btn-info:hover,
3254 .btn-info:active:focus,
3255 .btn-info.active:focus,
3256 .open > .dropdown-toggle.btn-info:focus,
3257 .btn-info:active.focus,
3258 .btn-info.active.focus,
3259 .open > .dropdown-toggle.btn-info.focus {
3261 background-color: #269abc;
3262 border-color: #1b6d85;
3266 .open > .dropdown-toggle.btn-info {
3267 background-image: none;
3269 .btn-info.disabled:hover,
3270 .btn-info[disabled]:hover,
3271 fieldset[disabled] .btn-info:hover,
3272 .btn-info.disabled:focus,
3273 .btn-info[disabled]:focus,
3274 fieldset[disabled] .btn-info:focus,
3275 .btn-info.disabled.focus,
3276 .btn-info[disabled].focus,
3277 fieldset[disabled] .btn-info.focus {
3278 background-color: #5bc0de;
3279 border-color: #46b8da;
3283 background-color: #fff;
3287 background-color: #f0ad4e;
3288 border-color: #eea236;
3291 .btn-warning.focus {
3293 background-color: #ec971f;
3294 border-color: #985f0d;
3296 .btn-warning:hover {
3298 background-color: #ec971f;
3299 border-color: #d58512;
3301 .btn-warning:active,
3302 .btn-warning.active,
3303 .open > .dropdown-toggle.btn-warning {
3305 background-color: #ec971f;
3306 border-color: #d58512;
3308 .btn-warning:active:hover,
3309 .btn-warning.active:hover,
3310 .open > .dropdown-toggle.btn-warning:hover,
3311 .btn-warning:active:focus,
3312 .btn-warning.active:focus,
3313 .open > .dropdown-toggle.btn-warning:focus,
3314 .btn-warning:active.focus,
3315 .btn-warning.active.focus,
3316 .open > .dropdown-toggle.btn-warning.focus {
3318 background-color: #d58512;
3319 border-color: #985f0d;
3321 .btn-warning:active,
3322 .btn-warning.active,
3323 .open > .dropdown-toggle.btn-warning {
3324 background-image: none;
3326 .btn-warning.disabled:hover,
3327 .btn-warning[disabled]:hover,
3328 fieldset[disabled] .btn-warning:hover,
3329 .btn-warning.disabled:focus,
3330 .btn-warning[disabled]:focus,
3331 fieldset[disabled] .btn-warning:focus,
3332 .btn-warning.disabled.focus,
3333 .btn-warning[disabled].focus,
3334 fieldset[disabled] .btn-warning.focus {
3335 background-color: #f0ad4e;
3336 border-color: #eea236;
3338 .btn-warning .badge {
3340 background-color: #fff;
3344 background-color: #d9534f;
3345 border-color: #d43f3a;
3350 background-color: #c9302c;
3351 border-color: #761c19;
3355 background-color: #c9302c;
3356 border-color: #ac2925;
3360 .open > .dropdown-toggle.btn-danger {
3362 background-color: #c9302c;
3363 border-color: #ac2925;
3365 .btn-danger:active:hover,
3366 .btn-danger.active:hover,
3367 .open > .dropdown-toggle.btn-danger:hover,
3368 .btn-danger:active:focus,
3369 .btn-danger.active:focus,
3370 .open > .dropdown-toggle.btn-danger:focus,
3371 .btn-danger:active.focus,
3372 .btn-danger.active.focus,
3373 .open > .dropdown-toggle.btn-danger.focus {
3375 background-color: #ac2925;
3376 border-color: #761c19;
3380 .open > .dropdown-toggle.btn-danger {
3381 background-image: none;
3383 .btn-danger.disabled:hover,
3384 .btn-danger[disabled]:hover,
3385 fieldset[disabled] .btn-danger:hover,
3386 .btn-danger.disabled:focus,
3387 .btn-danger[disabled]:focus,
3388 fieldset[disabled] .btn-danger:focus,
3389 .btn-danger.disabled.focus,
3390 .btn-danger[disabled].focus,
3391 fieldset[disabled] .btn-danger.focus {
3392 background-color: #d9534f;
3393 border-color: #d43f3a;
3395 .btn-danger .badge {
3397 background-color: #fff;
3401 font-weight: normal;
3407 .btn-link[disabled],
3408 fieldset[disabled] .btn-link {
3409 background-color: transparent;
3410 -webkit-box-shadow: none;
3417 border-color: transparent;
3422 text-decoration: underline;
3423 background-color: transparent;
3425 .btn-link[disabled]:hover,
3426 fieldset[disabled] .btn-link:hover,
3427 .btn-link[disabled]:focus,
3428 fieldset[disabled] .btn-link:focus {
3430 text-decoration: none;
3433 .btn-group-lg > .btn {
3436 line-height: 1.3333333;
3440 .btn-group-sm > .btn {
3447 .btn-group-xs > .btn {
3457 .btn-block + .btn-block {
3460 input[type="submit"].btn-block,
3461 input[type="reset"].btn-block,
3462 input[type="button"].btn-block {
3467 -webkit-transition: opacity 0.15s linear;
3468 -o-transition: opacity 0.15s linear;
3469 transition: opacity 0.15s linear;
3484 display: table-row-group;
3490 -webkit-transition-property: height, visibility;
3491 transition-property: height, visibility;
3492 -webkit-transition-duration: 0.35s;
3493 transition-duration: 0.35s;
3494 -webkit-transition-timing-function: ease;
3495 transition-timing-function: ease;
3498 display: inline-block;
3502 vertical-align: middle;
3503 border-top: 4px dashed;
3504 border-top: 4px solid \9;
3505 border-right: 4px solid transparent;
3506 border-left: 4px solid transparent;
3512 .dropdown-toggle:focus {
3528 background-color: #fff;
3529 border: 1px solid #ccc;
3530 border: 1px solid rgba(0, 0, 0, 0.15);
3532 -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3533 box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3534 background-clip: padding-box;
3536 .dropdown-menu.pull-right {
3540 .dropdown-menu .divider {
3544 background-color: #e5e5e5;
3546 .dropdown-menu > li > a {
3550 font-weight: normal;
3551 line-height: 1.42857143;
3553 white-space: nowrap;
3555 .dropdown-menu > li > a:hover,
3556 .dropdown-menu > li > a:focus {
3557 text-decoration: none;
3559 background-color: #f5f5f5;
3561 .dropdown-menu > .active > a,
3562 .dropdown-menu > .active > a:hover,
3563 .dropdown-menu > .active > a:focus {
3565 text-decoration: none;
3567 background-color: #337ab7;
3569 .dropdown-menu > .disabled > a,
3570 .dropdown-menu > .disabled > a:hover,
3571 .dropdown-menu > .disabled > a:focus {
3574 .dropdown-menu > .disabled > a:hover,
3575 .dropdown-menu > .disabled > a:focus {
3576 text-decoration: none;
3577 background-color: transparent;
3578 background-image: none;
3579 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
3580 cursor: not-allowed;
3582 .open > .dropdown-menu {
3588 .dropdown-menu-right {
3592 .dropdown-menu-left {
3600 line-height: 1.42857143;
3602 white-space: nowrap;
3604 .dropdown-backdrop {
3612 .pull-right > .dropdown-menu {
3617 .navbar-fixed-bottom .dropdown .caret {
3619 border-bottom: 4px dashed;
3620 border-bottom: 4px solid \9;
3623 .dropup .dropdown-menu,
3624 .navbar-fixed-bottom .dropdown .dropdown-menu {
3629 @media (min-width: 541px) {
3630 .navbar-right .dropdown-menu {
3634 .navbar-right .dropdown-menu-left {
3640 .btn-group-vertical {
3642 display: inline-block;
3643 vertical-align: middle;
3646 .btn-group-vertical > .btn {
3650 .btn-group > .btn:hover,
3651 .btn-group-vertical > .btn:hover,
3652 .btn-group > .btn:focus,
3653 .btn-group-vertical > .btn:focus,
3654 .btn-group > .btn:active,
3655 .btn-group-vertical > .btn:active,
3656 .btn-group > .btn.active,
3657 .btn-group-vertical > .btn.active {
3660 .btn-group .btn + .btn,
3661 .btn-group .btn + .btn-group,
3662 .btn-group .btn-group + .btn,
3663 .btn-group .btn-group + .btn-group {
3670 .btn-toolbar .btn-group,
3671 .btn-toolbar .input-group {
3674 .btn-toolbar > .btn,
3675 .btn-toolbar > .btn-group,
3676 .btn-toolbar > .input-group {
3679 .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
3682 .btn-group > .btn:first-child {
3685 .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
3686 border-bottom-right-radius: 0;
3687 border-top-right-radius: 0;
3689 .btn-group > .btn:last-child:not(:first-child),
3690 .btn-group > .dropdown-toggle:not(:first-child) {
3691 border-bottom-left-radius: 0;
3692 border-top-left-radius: 0;
3694 .btn-group > .btn-group {
3697 .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
3700 .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
3701 .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3702 border-bottom-right-radius: 0;
3703 border-top-right-radius: 0;
3705 .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
3706 border-bottom-left-radius: 0;
3707 border-top-left-radius: 0;
3709 .btn-group .dropdown-toggle:active,
3710 .btn-group.open .dropdown-toggle {
3713 .btn-group > .btn + .dropdown-toggle {
3717 .btn-group > .btn-lg + .dropdown-toggle {
3719 padding-right: 12px;
3721 .btn-group.open .dropdown-toggle {
3722 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3723 box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
3725 .btn-group.open .dropdown-toggle.btn-link {
3726 -webkit-box-shadow: none;
3733 border-width: 5px 5px 0;
3734 border-bottom-width: 0;
3736 .dropup .btn-lg .caret {
3737 border-width: 0 5px 5px;
3739 .btn-group-vertical > .btn,
3740 .btn-group-vertical > .btn-group,
3741 .btn-group-vertical > .btn-group > .btn {
3747 .btn-group-vertical > .btn-group > .btn {
3750 .btn-group-vertical > .btn + .btn,
3751 .btn-group-vertical > .btn + .btn-group,
3752 .btn-group-vertical > .btn-group + .btn,
3753 .btn-group-vertical > .btn-group + .btn-group {
3757 .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
3760 .btn-group-vertical > .btn:first-child:not(:last-child) {
3761 border-top-right-radius: 2px;
3762 border-top-left-radius: 2px;
3763 border-bottom-right-radius: 0;
3764 border-bottom-left-radius: 0;
3766 .btn-group-vertical > .btn:last-child:not(:first-child) {
3767 border-top-right-radius: 0;
3768 border-top-left-radius: 0;
3769 border-bottom-right-radius: 2px;
3770 border-bottom-left-radius: 2px;
3772 .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
3775 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
3776 .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
3777 border-bottom-right-radius: 0;
3778 border-bottom-left-radius: 0;
3780 .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
3781 border-top-right-radius: 0;
3782 border-top-left-radius: 0;
3784 .btn-group-justified {
3787 table-layout: fixed;
3788 border-collapse: separate;
3790 .btn-group-justified > .btn,
3791 .btn-group-justified > .btn-group {
3793 display: table-cell;
3796 .btn-group-justified > .btn-group .btn {
3799 .btn-group-justified > .btn-group .dropdown-menu {
3802 [data-toggle="buttons"] > .btn input[type="radio"],
3803 [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
3804 [data-toggle="buttons"] > .btn input[type="checkbox"],
3805 [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
3807 clip: rect(0, 0, 0, 0);
3808 pointer-events: none;
3813 border-collapse: separate;
3815 .input-group[class*="col-"] {
3820 .input-group .form-control {
3827 .input-group .form-control:focus {
3830 .input-group-lg > .form-control,
3831 .input-group-lg > .input-group-addon,
3832 .input-group-lg > .input-group-btn > .btn {
3836 line-height: 1.3333333;
3839 select.input-group-lg > .form-control,
3840 select.input-group-lg > .input-group-addon,
3841 select.input-group-lg > .input-group-btn > .btn {
3845 textarea.input-group-lg > .form-control,
3846 textarea.input-group-lg > .input-group-addon,
3847 textarea.input-group-lg > .input-group-btn > .btn,
3848 select[multiple].input-group-lg > .form-control,
3849 select[multiple].input-group-lg > .input-group-addon,
3850 select[multiple].input-group-lg > .input-group-btn > .btn {
3853 .input-group-sm > .form-control,
3854 .input-group-sm > .input-group-addon,
3855 .input-group-sm > .input-group-btn > .btn {
3862 select.input-group-sm > .form-control,
3863 select.input-group-sm > .input-group-addon,
3864 select.input-group-sm > .input-group-btn > .btn {
3868 textarea.input-group-sm > .form-control,
3869 textarea.input-group-sm > .input-group-addon,
3870 textarea.input-group-sm > .input-group-btn > .btn,
3871 select[multiple].input-group-sm > .form-control,
3872 select[multiple].input-group-sm > .input-group-addon,
3873 select[multiple].input-group-sm > .input-group-btn > .btn {
3878 .input-group .form-control {
3879 display: table-cell;
3881 .input-group-addon:not(:first-child):not(:last-child),
3882 .input-group-btn:not(:first-child):not(:last-child),
3883 .input-group .form-control:not(:first-child):not(:last-child) {
3889 white-space: nowrap;
3890 vertical-align: middle;
3892 .input-group-addon {
3895 font-weight: normal;
3899 background-color: #eeeeee;
3900 border: 1px solid #ccc;
3903 .input-group-addon.input-sm {
3908 .input-group-addon.input-lg {
3913 .input-group-addon input[type="radio"],
3914 .input-group-addon input[type="checkbox"] {
3917 .input-group .form-control:first-child,
3918 .input-group-addon:first-child,
3919 .input-group-btn:first-child > .btn,
3920 .input-group-btn:first-child > .btn-group > .btn,
3921 .input-group-btn:first-child > .dropdown-toggle,
3922 .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
3923 .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
3924 border-bottom-right-radius: 0;
3925 border-top-right-radius: 0;
3927 .input-group-addon:first-child {
3930 .input-group .form-control:last-child,
3931 .input-group-addon:last-child,
3932 .input-group-btn:last-child > .btn,
3933 .input-group-btn:last-child > .btn-group > .btn,
3934 .input-group-btn:last-child > .dropdown-toggle,
3935 .input-group-btn:first-child > .btn:not(:first-child),
3936 .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
3937 border-bottom-left-radius: 0;
3938 border-top-left-radius: 0;
3940 .input-group-addon:last-child {
3946 white-space: nowrap;
3948 .input-group-btn > .btn {
3951 .input-group-btn > .btn + .btn {
3954 .input-group-btn > .btn:hover,
3955 .input-group-btn > .btn:focus,
3956 .input-group-btn > .btn:active {
3959 .input-group-btn:first-child > .btn,
3960 .input-group-btn:first-child > .btn-group {
3963 .input-group-btn:last-child > .btn,
3964 .input-group-btn:last-child > .btn-group {
3982 .nav > li > a:hover,
3983 .nav > li > a:focus {
3984 text-decoration: none;
3985 background-color: #eeeeee;
3987 .nav > li.disabled > a {
3990 .nav > li.disabled > a:hover,
3991 .nav > li.disabled > a:focus {
3993 text-decoration: none;
3994 background-color: transparent;
3995 cursor: not-allowed;
3998 .nav .open > a:hover,
3999 .nav .open > a:focus {
4000 background-color: #eeeeee;
4001 border-color: #337ab7;
4007 background-color: #e5e5e5;
4009 .nav > li > a > img {
4013 border-bottom: 1px solid #ddd;
4017 margin-bottom: -1px;
4019 .nav-tabs > li > a {
4021 line-height: 1.42857143;
4022 border: 1px solid transparent;
4023 border-radius: 2px 2px 0 0;
4025 .nav-tabs > li > a:hover {
4026 border-color: #eeeeee #eeeeee #ddd;
4028 .nav-tabs > li.active > a,
4029 .nav-tabs > li.active > a:hover,
4030 .nav-tabs > li.active > a:focus {
4032 background-color: #fff;
4033 border: 1px solid #ddd;
4034 border-bottom-color: transparent;
4037 .nav-tabs.nav-justified {
4041 .nav-tabs.nav-justified > li {
4044 .nav-tabs.nav-justified > li > a {
4048 .nav-tabs.nav-justified > .dropdown .dropdown-menu {
4052 @media (min-width: 768px) {
4053 .nav-tabs.nav-justified > li {
4054 display: table-cell;
4057 .nav-tabs.nav-justified > li > a {
4061 .nav-tabs.nav-justified > li > a {
4065 .nav-tabs.nav-justified > .active > a,
4066 .nav-tabs.nav-justified > .active > a:hover,
4067 .nav-tabs.nav-justified > .active > a:focus {
4068 border: 1px solid #ddd;
4070 @media (min-width: 768px) {
4071 .nav-tabs.nav-justified > li > a {
4072 border-bottom: 1px solid #ddd;
4073 border-radius: 2px 2px 0 0;
4075 .nav-tabs.nav-justified > .active > a,
4076 .nav-tabs.nav-justified > .active > a:hover,
4077 .nav-tabs.nav-justified > .active > a:focus {
4078 border-bottom-color: #fff;
4084 .nav-pills > li > a {
4087 .nav-pills > li + li {
4090 .nav-pills > li.active > a,
4091 .nav-pills > li.active > a:hover,
4092 .nav-pills > li.active > a:focus {
4094 background-color: #337ab7;
4099 .nav-stacked > li + li {
4106 .nav-justified > li {
4109 .nav-justified > li > a {
4113 .nav-justified > .dropdown .dropdown-menu {
4117 @media (min-width: 768px) {
4118 .nav-justified > li {
4119 display: table-cell;
4122 .nav-justified > li > a {
4126 .nav-tabs-justified {
4129 .nav-tabs-justified > li > a {
4133 .nav-tabs-justified > .active > a,
4134 .nav-tabs-justified > .active > a:hover,
4135 .nav-tabs-justified > .active > a:focus {
4136 border: 1px solid #ddd;
4138 @media (min-width: 768px) {
4139 .nav-tabs-justified > li > a {
4140 border-bottom: 1px solid #ddd;
4141 border-radius: 2px 2px 0 0;
4143 .nav-tabs-justified > .active > a,
4144 .nav-tabs-justified > .active > a:hover,
4145 .nav-tabs-justified > .active > a:focus {
4146 border-bottom-color: #fff;
4149 .tab-content > .tab-pane {
4152 .tab-content > .active {
4155 .nav-tabs .dropdown-menu {
4157 border-top-right-radius: 0;
4158 border-top-left-radius: 0;
4163 margin-bottom: 18px;
4164 border: 1px solid transparent;
4166 @media (min-width: 541px) {
4171 @media (min-width: 541px) {
4177 overflow-x: visible;
4180 border-top: 1px solid transparent;
4181 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
4182 -webkit-overflow-scrolling: touch;
4184 .navbar-collapse.in {
4187 @media (min-width: 541px) {
4193 .navbar-collapse.collapse {
4194 display: block !important;
4195 height: auto !important;
4197 overflow: visible !important;
4199 .navbar-collapse.in {
4200 overflow-y: visible;
4202 .navbar-fixed-top .navbar-collapse,
4203 .navbar-static-top .navbar-collapse,
4204 .navbar-fixed-bottom .navbar-collapse {
4209 .navbar-fixed-top .navbar-collapse,
4210 .navbar-fixed-bottom .navbar-collapse {
4213 @media (max-device-width: 540px) and (orientation: landscape) {
4214 .navbar-fixed-top .navbar-collapse,
4215 .navbar-fixed-bottom .navbar-collapse {
4219 .container > .navbar-header,
4220 .container-fluid > .navbar-header,
4221 .container > .navbar-collapse,
4222 .container-fluid > .navbar-collapse {
4226 @media (min-width: 541px) {
4227 .container > .navbar-header,
4228 .container-fluid > .navbar-header,
4229 .container > .navbar-collapse,
4230 .container-fluid > .navbar-collapse {
4235 .navbar-static-top {
4237 border-width: 0 0 1px;
4239 @media (min-width: 541px) {
4240 .navbar-static-top {
4245 .navbar-fixed-bottom {
4251 @media (min-width: 541px) {
4253 .navbar-fixed-bottom {
4259 border-width: 0 0 1px;
4261 .navbar-fixed-bottom {
4264 border-width: 1px 0 0;
4273 .navbar-brand:hover,
4274 .navbar-brand:focus {
4275 text-decoration: none;
4277 .navbar-brand > img {
4280 @media (min-width: 541px) {
4281 .navbar > .container .navbar-brand,
4282 .navbar > .container-fluid .navbar-brand {
4292 margin-bottom: -2px;
4293 background-color: transparent;
4294 background-image: none;
4295 border: 1px solid transparent;
4298 .navbar-toggle:focus {
4301 .navbar-toggle .icon-bar {
4307 .navbar-toggle .icon-bar + .icon-bar {
4310 @media (min-width: 541px) {
4318 .navbar-nav > li > a {
4320 padding-bottom: 10px;
4323 @media (max-width: 540px) {
4324 .navbar-nav .open .dropdown-menu {
4329 background-color: transparent;
4333 .navbar-nav .open .dropdown-menu > li > a,
4334 .navbar-nav .open .dropdown-menu .dropdown-header {
4335 padding: 5px 15px 5px 25px;
4337 .navbar-nav .open .dropdown-menu > li > a {
4340 .navbar-nav .open .dropdown-menu > li > a:hover,
4341 .navbar-nav .open .dropdown-menu > li > a:focus {
4342 background-image: none;
4345 @media (min-width: 541px) {
4353 .navbar-nav > li > a {
4355 padding-bottom: 6px;
4362 border-top: 1px solid transparent;
4363 border-bottom: 1px solid transparent;
4364 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4365 box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
4367 margin-bottom: -1px;
4369 @media (min-width: 768px) {
4370 .navbar-form .form-group {
4371 display: inline-block;
4373 vertical-align: middle;
4375 .navbar-form .form-control {
4376 display: inline-block;
4378 vertical-align: middle;
4380 .navbar-form .form-control-static {
4381 display: inline-block;
4383 .navbar-form .input-group {
4384 display: inline-table;
4385 vertical-align: middle;
4387 .navbar-form .input-group .input-group-addon,
4388 .navbar-form .input-group .input-group-btn,
4389 .navbar-form .input-group .form-control {
4392 .navbar-form .input-group > .form-control {
4395 .navbar-form .control-label {
4397 vertical-align: middle;
4399 .navbar-form .radio,
4400 .navbar-form .checkbox {
4401 display: inline-block;
4404 vertical-align: middle;
4406 .navbar-form .radio label,
4407 .navbar-form .checkbox label {
4410 .navbar-form .radio input[type="radio"],
4411 .navbar-form .checkbox input[type="checkbox"] {
4415 .navbar-form .has-feedback .form-control-feedback {
4419 @media (max-width: 540px) {
4420 .navbar-form .form-group {
4423 .navbar-form .form-group:last-child {
4427 @media (min-width: 541px) {
4435 -webkit-box-shadow: none;
4439 .navbar-nav > li > .dropdown-menu {
4441 border-top-right-radius: 0;
4442 border-top-left-radius: 0;
4444 .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
4446 border-top-right-radius: 2px;
4447 border-top-left-radius: 2px;
4448 border-bottom-right-radius: 0;
4449 border-bottom-left-radius: 0;
4453 margin-bottom: -1px;
4455 .navbar-btn.btn-sm {
4459 .navbar-btn.btn-xs {
4467 @media (min-width: 541px) {
4474 @media (min-width: 541px) {
4476 float: left !important;
4480 float: right !important;
4484 .navbar-right ~ .navbar-right {
4489 background-color: #f8f8f8;
4490 border-color: #e7e7e7;
4492 .navbar-default .navbar-brand {
4495 .navbar-default .navbar-brand:hover,
4496 .navbar-default .navbar-brand:focus {
4498 background-color: transparent;
4500 .navbar-default .navbar-text {
4503 .navbar-default .navbar-nav > li > a {
4506 .navbar-default .navbar-nav > li > a:hover,
4507 .navbar-default .navbar-nav > li > a:focus {
4509 background-color: transparent;
4511 .navbar-default .navbar-nav > .active > a,
4512 .navbar-default .navbar-nav > .active > a:hover,
4513 .navbar-default .navbar-nav > .active > a:focus {
4515 background-color: #e7e7e7;
4517 .navbar-default .navbar-nav > .disabled > a,
4518 .navbar-default .navbar-nav > .disabled > a:hover,
4519 .navbar-default .navbar-nav > .disabled > a:focus {
4521 background-color: transparent;
4523 .navbar-default .navbar-toggle {
4526 .navbar-default .navbar-toggle:hover,
4527 .navbar-default .navbar-toggle:focus {
4528 background-color: #ddd;
4530 .navbar-default .navbar-toggle .icon-bar {
4531 background-color: #888;
4533 .navbar-default .navbar-collapse,
4534 .navbar-default .navbar-form {
4535 border-color: #e7e7e7;
4537 .navbar-default .navbar-nav > .open > a,
4538 .navbar-default .navbar-nav > .open > a:hover,
4539 .navbar-default .navbar-nav > .open > a:focus {
4540 background-color: #e7e7e7;
4543 @media (max-width: 540px) {
4544 .navbar-default .navbar-nav .open .dropdown-menu > li > a {
4547 .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
4548 .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
4550 background-color: transparent;
4552 .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
4553 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
4554 .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
4556 background-color: #e7e7e7;
4558 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
4559 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4560 .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4562 background-color: transparent;
4565 .navbar-default .navbar-link {
4568 .navbar-default .navbar-link:hover {
4571 .navbar-default .btn-link {
4574 .navbar-default .btn-link:hover,
4575 .navbar-default .btn-link:focus {
4578 .navbar-default .btn-link[disabled]:hover,
4579 fieldset[disabled] .navbar-default .btn-link:hover,
4580 .navbar-default .btn-link[disabled]:focus,
4581 fieldset[disabled] .navbar-default .btn-link:focus {
4585 background-color: #222;
4586 border-color: #080808;
4588 .navbar-inverse .navbar-brand {
4591 .navbar-inverse .navbar-brand:hover,
4592 .navbar-inverse .navbar-brand:focus {
4594 background-color: transparent;
4596 .navbar-inverse .navbar-text {
4599 .navbar-inverse .navbar-nav > li > a {
4602 .navbar-inverse .navbar-nav > li > a:hover,
4603 .navbar-inverse .navbar-nav > li > a:focus {
4605 background-color: transparent;
4607 .navbar-inverse .navbar-nav > .active > a,
4608 .navbar-inverse .navbar-nav > .active > a:hover,
4609 .navbar-inverse .navbar-nav > .active > a:focus {
4611 background-color: #080808;
4613 .navbar-inverse .navbar-nav > .disabled > a,
4614 .navbar-inverse .navbar-nav > .disabled > a:hover,
4615 .navbar-inverse .navbar-nav > .disabled > a:focus {
4617 background-color: transparent;
4619 .navbar-inverse .navbar-toggle {
4622 .navbar-inverse .navbar-toggle:hover,
4623 .navbar-inverse .navbar-toggle:focus {
4624 background-color: #333;
4626 .navbar-inverse .navbar-toggle .icon-bar {
4627 background-color: #fff;
4629 .navbar-inverse .navbar-collapse,
4630 .navbar-inverse .navbar-form {
4631 border-color: #101010;
4633 .navbar-inverse .navbar-nav > .open > a,
4634 .navbar-inverse .navbar-nav > .open > a:hover,
4635 .navbar-inverse .navbar-nav > .open > a:focus {
4636 background-color: #080808;
4639 @media (max-width: 540px) {
4640 .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
4641 border-color: #080808;
4643 .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
4644 background-color: #080808;
4646 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
4649 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
4650 .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
4652 background-color: transparent;
4654 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
4655 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
4656 .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
4658 background-color: #080808;
4660 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
4661 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
4662 .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
4664 background-color: transparent;
4667 .navbar-inverse .navbar-link {
4670 .navbar-inverse .navbar-link:hover {
4673 .navbar-inverse .btn-link {
4676 .navbar-inverse .btn-link:hover,
4677 .navbar-inverse .btn-link:focus {
4680 .navbar-inverse .btn-link[disabled]:hover,
4681 fieldset[disabled] .navbar-inverse .btn-link:hover,
4682 .navbar-inverse .btn-link[disabled]:focus,
4683 fieldset[disabled] .navbar-inverse .btn-link:focus {
4688 margin-bottom: 18px;
4690 background-color: #f5f5f5;
4694 display: inline-block;
4696 .breadcrumb > li + li:before {
4701 .breadcrumb > .active {
4705 display: inline-block;
4713 .pagination > li > a,
4714 .pagination > li > span {
4718 line-height: 1.42857143;
4719 text-decoration: none;
4721 background-color: #fff;
4722 border: 1px solid #ddd;
4725 .pagination > li:first-child > a,
4726 .pagination > li:first-child > span {
4728 border-bottom-left-radius: 2px;
4729 border-top-left-radius: 2px;
4731 .pagination > li:last-child > a,
4732 .pagination > li:last-child > span {
4733 border-bottom-right-radius: 2px;
4734 border-top-right-radius: 2px;
4736 .pagination > li > a:hover,
4737 .pagination > li > span:hover,
4738 .pagination > li > a:focus,
4739 .pagination > li > span:focus {
4742 background-color: #eeeeee;
4745 .pagination > .active > a,
4746 .pagination > .active > span,
4747 .pagination > .active > a:hover,
4748 .pagination > .active > span:hover,
4749 .pagination > .active > a:focus,
4750 .pagination > .active > span:focus {
4753 background-color: #337ab7;
4754 border-color: #337ab7;
4757 .pagination > .disabled > span,
4758 .pagination > .disabled > span:hover,
4759 .pagination > .disabled > span:focus,
4760 .pagination > .disabled > a,
4761 .pagination > .disabled > a:hover,
4762 .pagination > .disabled > a:focus {
4764 background-color: #fff;
4766 cursor: not-allowed;
4768 .pagination-lg > li > a,
4769 .pagination-lg > li > span {
4772 line-height: 1.3333333;
4774 .pagination-lg > li:first-child > a,
4775 .pagination-lg > li:first-child > span {
4776 border-bottom-left-radius: 3px;
4777 border-top-left-radius: 3px;
4779 .pagination-lg > li:last-child > a,
4780 .pagination-lg > li:last-child > span {
4781 border-bottom-right-radius: 3px;
4782 border-top-right-radius: 3px;
4784 .pagination-sm > li > a,
4785 .pagination-sm > li > span {
4790 .pagination-sm > li:first-child > a,
4791 .pagination-sm > li:first-child > span {
4792 border-bottom-left-radius: 1px;
4793 border-top-left-radius: 1px;
4795 .pagination-sm > li:last-child > a,
4796 .pagination-sm > li:last-child > span {
4797 border-bottom-right-radius: 1px;
4798 border-top-right-radius: 1px;
4811 display: inline-block;
4813 background-color: #fff;
4814 border: 1px solid #ddd;
4815 border-radius: 15px;
4817 .pager li > a:hover,
4818 .pager li > a:focus {
4819 text-decoration: none;
4820 background-color: #eeeeee;
4823 .pager .next > span {
4826 .pager .previous > a,
4827 .pager .previous > span {
4830 .pager .disabled > a,
4831 .pager .disabled > a:hover,
4832 .pager .disabled > a:focus,
4833 .pager .disabled > span {
4835 background-color: #fff;
4836 cursor: not-allowed;
4840 padding: .2em .6em .3em;
4846 white-space: nowrap;
4847 vertical-align: baseline;
4848 border-radius: .25em;
4853 text-decoration: none;
4864 background-color: #777777;
4866 .label-default[href]:hover,
4867 .label-default[href]:focus {
4868 background-color: #5e5e5e;
4871 background-color: #337ab7;
4873 .label-primary[href]:hover,
4874 .label-primary[href]:focus {
4875 background-color: #286090;
4878 background-color: #5cb85c;
4880 .label-success[href]:hover,
4881 .label-success[href]:focus {
4882 background-color: #449d44;
4885 background-color: #5bc0de;
4887 .label-info[href]:hover,
4888 .label-info[href]:focus {
4889 background-color: #31b0d5;
4892 background-color: #f0ad4e;
4894 .label-warning[href]:hover,
4895 .label-warning[href]:focus {
4896 background-color: #ec971f;
4899 background-color: #d9534f;
4901 .label-danger[href]:hover,
4902 .label-danger[href]:focus {
4903 background-color: #c9302c;
4906 display: inline-block;
4913 vertical-align: middle;
4914 white-space: nowrap;
4916 background-color: #777777;
4917 border-radius: 10px;
4927 .btn-group-xs > .btn .badge {
4934 text-decoration: none;
4937 .list-group-item.active > .badge,
4938 .nav-pills > .active > a > .badge {
4940 background-color: #fff;
4942 .list-group-item > .badge {
4945 .list-group-item > .badge + .badge {
4948 .nav-pills > li > a > .badge {
4953 padding-bottom: 30px;
4954 margin-bottom: 30px;
4956 background-color: #eeeeee;
4963 margin-bottom: 15px;
4968 border-top-color: #d5d5d5;
4970 .container .jumbotron,
4971 .container-fluid .jumbotron {
4976 .jumbotron .container {
4979 @media screen and (min-width: 768px) {
4982 padding-bottom: 48px;
4984 .container .jumbotron,
4985 .container-fluid .jumbotron {
4987 padding-right: 60px;
4997 margin-bottom: 18px;
4998 line-height: 1.42857143;
4999 background-color: #fff;
5000 border: 1px solid #ddd;
5002 -webkit-transition: border 0.2s ease-in-out;
5003 -o-transition: border 0.2s ease-in-out;
5004 transition: border 0.2s ease-in-out;
5007 .thumbnail a > img {
5013 a.thumbnail.active {
5014 border-color: #337ab7;
5016 .thumbnail .caption {
5022 margin-bottom: 18px;
5023 border: 1px solid transparent;
5030 .alert .alert-link {
5041 .alert-dismissible {
5042 padding-right: 35px;
5044 .alert-dismissable .close,
5045 .alert-dismissible .close {
5052 background-color: #dff0d8;
5053 border-color: #d6e9c6;
5057 border-top-color: #c9e2b3;
5059 .alert-success .alert-link {
5063 background-color: #d9edf7;
5064 border-color: #bce8f1;
5068 border-top-color: #a6e1ec;
5070 .alert-info .alert-link {
5074 background-color: #fcf8e3;
5075 border-color: #faebcc;
5079 border-top-color: #f7e1b5;
5081 .alert-warning .alert-link {
5085 background-color: #f2dede;
5086 border-color: #ebccd1;
5090 border-top-color: #e4b9c0;
5092 .alert-danger .alert-link {
5095 @-webkit-keyframes progress-bar-stripes {
5097 background-position: 40px 0;
5100 background-position: 0 0;
5103 @keyframes progress-bar-stripes {
5105 background-position: 40px 0;
5108 background-position: 0 0;
5114 margin-bottom: 18px;
5115 background-color: #f5f5f5;
5117 -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5118 box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
5128 background-color: #337ab7;
5129 -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5130 box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
5131 -webkit-transition: width 0.6s ease;
5132 -o-transition: width 0.6s ease;
5133 transition: width 0.6s ease;
5135 .progress-striped .progress-bar,
5136 .progress-bar-striped {
5137 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);
5138 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5139 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);
5140 background-size: 40px 40px;
5142 .progress.active .progress-bar,
5143 .progress-bar.active {
5144 -webkit-animation: progress-bar-stripes 2s linear infinite;
5145 -o-animation: progress-bar-stripes 2s linear infinite;
5146 animation: progress-bar-stripes 2s linear infinite;
5148 .progress-bar-success {
5149 background-color: #5cb85c;
5151 .progress-striped .progress-bar-success {
5152 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);
5153 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5154 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);
5156 .progress-bar-info {
5157 background-color: #5bc0de;
5159 .progress-striped .progress-bar-info {
5160 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);
5161 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5162 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);
5164 .progress-bar-warning {
5165 background-color: #f0ad4e;
5167 .progress-striped .progress-bar-warning {
5168 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);
5169 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5170 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);
5172 .progress-bar-danger {
5173 background-color: #d9534f;
5175 .progress-striped .progress-bar-danger {
5176 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);
5177 background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
5178 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);
5183 .media:first-child {
5197 .media-object.img-thumbnail {
5201 .media > .pull-right {
5205 .media > .pull-left {
5206 padding-right: 10px;
5211 display: table-cell;
5212 vertical-align: top;
5215 vertical-align: middle;
5218 vertical-align: bottom;
5229 margin-bottom: 20px;
5236 margin-bottom: -1px;
5237 background-color: #fff;
5238 border: 1px solid #ddd;
5240 .list-group-item:first-child {
5241 border-top-right-radius: 2px;
5242 border-top-left-radius: 2px;
5244 .list-group-item:last-child {
5246 border-bottom-right-radius: 2px;
5247 border-bottom-left-radius: 2px;
5250 button.list-group-item {
5253 a.list-group-item .list-group-item-heading,
5254 button.list-group-item .list-group-item-heading {
5257 a.list-group-item:hover,
5258 button.list-group-item:hover,
5259 a.list-group-item:focus,
5260 button.list-group-item:focus {
5261 text-decoration: none;
5263 background-color: #f5f5f5;
5265 button.list-group-item {
5269 .list-group-item.disabled,
5270 .list-group-item.disabled:hover,
5271 .list-group-item.disabled:focus {
5272 background-color: #eeeeee;
5274 cursor: not-allowed;
5276 .list-group-item.disabled .list-group-item-heading,
5277 .list-group-item.disabled:hover .list-group-item-heading,
5278 .list-group-item.disabled:focus .list-group-item-heading {
5281 .list-group-item.disabled .list-group-item-text,
5282 .list-group-item.disabled:hover .list-group-item-text,
5283 .list-group-item.disabled:focus .list-group-item-text {
5286 .list-group-item.active,
5287 .list-group-item.active:hover,
5288 .list-group-item.active:focus {
5291 background-color: #337ab7;
5292 border-color: #337ab7;
5294 .list-group-item.active .list-group-item-heading,
5295 .list-group-item.active:hover .list-group-item-heading,
5296 .list-group-item.active:focus .list-group-item-heading,
5297 .list-group-item.active .list-group-item-heading > small,
5298 .list-group-item.active:hover .list-group-item-heading > small,
5299 .list-group-item.active:focus .list-group-item-heading > small,
5300 .list-group-item.active .list-group-item-heading > .small,
5301 .list-group-item.active:hover .list-group-item-heading > .small,
5302 .list-group-item.active:focus .list-group-item-heading > .small {
5305 .list-group-item.active .list-group-item-text,
5306 .list-group-item.active:hover .list-group-item-text,
5307 .list-group-item.active:focus .list-group-item-text {
5310 .list-group-item-success {
5312 background-color: #dff0d8;
5314 a.list-group-item-success,
5315 button.list-group-item-success {
5318 a.list-group-item-success .list-group-item-heading,
5319 button.list-group-item-success .list-group-item-heading {
5322 a.list-group-item-success:hover,
5323 button.list-group-item-success:hover,
5324 a.list-group-item-success:focus,
5325 button.list-group-item-success:focus {
5327 background-color: #d0e9c6;
5329 a.list-group-item-success.active,
5330 button.list-group-item-success.active,
5331 a.list-group-item-success.active:hover,
5332 button.list-group-item-success.active:hover,
5333 a.list-group-item-success.active:focus,
5334 button.list-group-item-success.active:focus {
5336 background-color: #3c763d;
5337 border-color: #3c763d;
5339 .list-group-item-info {
5341 background-color: #d9edf7;
5343 a.list-group-item-info,
5344 button.list-group-item-info {
5347 a.list-group-item-info .list-group-item-heading,
5348 button.list-group-item-info .list-group-item-heading {
5351 a.list-group-item-info:hover,
5352 button.list-group-item-info:hover,
5353 a.list-group-item-info:focus,
5354 button.list-group-item-info:focus {
5356 background-color: #c4e3f3;
5358 a.list-group-item-info.active,
5359 button.list-group-item-info.active,
5360 a.list-group-item-info.active:hover,
5361 button.list-group-item-info.active:hover,
5362 a.list-group-item-info.active:focus,
5363 button.list-group-item-info.active:focus {
5365 background-color: #31708f;
5366 border-color: #31708f;
5368 .list-group-item-warning {
5370 background-color: #fcf8e3;
5372 a.list-group-item-warning,
5373 button.list-group-item-warning {
5376 a.list-group-item-warning .list-group-item-heading,
5377 button.list-group-item-warning .list-group-item-heading {
5380 a.list-group-item-warning:hover,
5381 button.list-group-item-warning:hover,
5382 a.list-group-item-warning:focus,
5383 button.list-group-item-warning:focus {
5385 background-color: #faf2cc;
5387 a.list-group-item-warning.active,
5388 button.list-group-item-warning.active,
5389 a.list-group-item-warning.active:hover,
5390 button.list-group-item-warning.active:hover,
5391 a.list-group-item-warning.active:focus,
5392 button.list-group-item-warning.active:focus {
5394 background-color: #8a6d3b;
5395 border-color: #8a6d3b;
5397 .list-group-item-danger {
5399 background-color: #f2dede;
5401 a.list-group-item-danger,
5402 button.list-group-item-danger {
5405 a.list-group-item-danger .list-group-item-heading,
5406 button.list-group-item-danger .list-group-item-heading {
5409 a.list-group-item-danger:hover,
5410 button.list-group-item-danger:hover,
5411 a.list-group-item-danger:focus,
5412 button.list-group-item-danger:focus {
5414 background-color: #ebcccc;
5416 a.list-group-item-danger.active,
5417 button.list-group-item-danger.active,
5418 a.list-group-item-danger.active:hover,
5419 button.list-group-item-danger.active:hover,
5420 a.list-group-item-danger.active:focus,
5421 button.list-group-item-danger.active:focus {
5423 background-color: #a94442;
5424 border-color: #a94442;
5426 .list-group-item-heading {
5430 .list-group-item-text {
5435 margin-bottom: 18px;
5436 background-color: #fff;
5437 border: 1px solid transparent;
5439 -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5440 box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
5447 border-bottom: 1px solid transparent;
5448 border-top-right-radius: 1px;
5449 border-top-left-radius: 1px;
5451 .panel-heading > .dropdown .dropdown-toggle {
5461 .panel-title > small,
5462 .panel-title > .small,
5463 .panel-title > small > a,
5464 .panel-title > .small > a {
5469 background-color: #f5f5f5;
5470 border-top: 1px solid #ddd;
5471 border-bottom-right-radius: 1px;
5472 border-bottom-left-radius: 1px;
5474 .panel > .list-group,
5475 .panel > .panel-collapse > .list-group {
5478 .panel > .list-group .list-group-item,
5479 .panel > .panel-collapse > .list-group .list-group-item {
5480 border-width: 1px 0;
5483 .panel > .list-group:first-child .list-group-item:first-child,
5484 .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
5486 border-top-right-radius: 1px;
5487 border-top-left-radius: 1px;
5489 .panel > .list-group:last-child .list-group-item:last-child,
5490 .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
5492 border-bottom-right-radius: 1px;
5493 border-bottom-left-radius: 1px;
5495 .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
5496 border-top-right-radius: 0;
5497 border-top-left-radius: 0;
5499 .panel-heading + .list-group .list-group-item:first-child {
5500 border-top-width: 0;
5502 .list-group + .panel-footer {
5503 border-top-width: 0;
5506 .panel > .table-responsive > .table,
5507 .panel > .panel-collapse > .table {
5510 .panel > .table caption,
5511 .panel > .table-responsive > .table caption,
5512 .panel > .panel-collapse > .table caption {
5514 padding-right: 15px;
5516 .panel > .table:first-child,
5517 .panel > .table-responsive:first-child > .table:first-child {
5518 border-top-right-radius: 1px;
5519 border-top-left-radius: 1px;
5521 .panel > .table:first-child > thead:first-child > tr:first-child,
5522 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
5523 .panel > .table:first-child > tbody:first-child > tr:first-child,
5524 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
5525 border-top-left-radius: 1px;
5526 border-top-right-radius: 1px;
5528 .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
5529 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
5530 .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5531 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
5532 .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
5533 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
5534 .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
5535 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
5536 border-top-left-radius: 1px;
5538 .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
5539 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
5540 .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5541 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
5542 .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
5543 .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
5544 .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
5545 .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
5546 border-top-right-radius: 1px;
5548 .panel > .table:last-child,
5549 .panel > .table-responsive:last-child > .table:last-child {
5550 border-bottom-right-radius: 1px;
5551 border-bottom-left-radius: 1px;
5553 .panel > .table:last-child > tbody:last-child > tr:last-child,
5554 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
5555 .panel > .table:last-child > tfoot:last-child > tr:last-child,
5556 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
5557 border-bottom-left-radius: 1px;
5558 border-bottom-right-radius: 1px;
5560 .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5561 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
5562 .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5563 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
5564 .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5565 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
5566 .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
5567 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
5568 border-bottom-left-radius: 1px;
5570 .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5571 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
5572 .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5573 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
5574 .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5575 .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
5576 .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
5577 .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
5578 border-bottom-right-radius: 1px;
5580 .panel > .panel-body + .table,
5581 .panel > .panel-body + .table-responsive,
5582 .panel > .table + .panel-body,
5583 .panel > .table-responsive + .panel-body {
5584 border-top: 1px solid #ddd;
5586 .panel > .table > tbody:first-child > tr:first-child th,
5587 .panel > .table > tbody:first-child > tr:first-child td {
5590 .panel > .table-bordered,
5591 .panel > .table-responsive > .table-bordered {
5594 .panel > .table-bordered > thead > tr > th:first-child,
5595 .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
5596 .panel > .table-bordered > tbody > tr > th:first-child,
5597 .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
5598 .panel > .table-bordered > tfoot > tr > th:first-child,
5599 .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
5600 .panel > .table-bordered > thead > tr > td:first-child,
5601 .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
5602 .panel > .table-bordered > tbody > tr > td:first-child,
5603 .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
5604 .panel > .table-bordered > tfoot > tr > td:first-child,
5605 .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
5608 .panel > .table-bordered > thead > tr > th:last-child,
5609 .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
5610 .panel > .table-bordered > tbody > tr > th:last-child,
5611 .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
5612 .panel > .table-bordered > tfoot > tr > th:last-child,
5613 .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
5614 .panel > .table-bordered > thead > tr > td:last-child,
5615 .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
5616 .panel > .table-bordered > tbody > tr > td:last-child,
5617 .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
5618 .panel > .table-bordered > tfoot > tr > td:last-child,
5619 .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
5622 .panel > .table-bordered > thead > tr:first-child > td,
5623 .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
5624 .panel > .table-bordered > tbody > tr:first-child > td,
5625 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
5626 .panel > .table-bordered > thead > tr:first-child > th,
5627 .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
5628 .panel > .table-bordered > tbody > tr:first-child > th,
5629 .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
5632 .panel > .table-bordered > tbody > tr:last-child > td,
5633 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
5634 .panel > .table-bordered > tfoot > tr:last-child > td,
5635 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
5636 .panel > .table-bordered > tbody > tr:last-child > th,
5637 .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
5638 .panel > .table-bordered > tfoot > tr:last-child > th,
5639 .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
5642 .panel > .table-responsive {
5647 margin-bottom: 18px;
5649 .panel-group .panel {
5653 .panel-group .panel + .panel {
5656 .panel-group .panel-heading {
5659 .panel-group .panel-heading + .panel-collapse > .panel-body,
5660 .panel-group .panel-heading + .panel-collapse > .list-group {
5661 border-top: 1px solid #ddd;
5663 .panel-group .panel-footer {
5666 .panel-group .panel-footer + .panel-collapse .panel-body {
5667 border-bottom: 1px solid #ddd;
5672 .panel-default > .panel-heading {
5674 background-color: #f5f5f5;
5677 .panel-default > .panel-heading + .panel-collapse > .panel-body {
5678 border-top-color: #ddd;
5680 .panel-default > .panel-heading .badge {
5682 background-color: #333333;
5684 .panel-default > .panel-footer + .panel-collapse > .panel-body {
5685 border-bottom-color: #ddd;
5688 border-color: #337ab7;
5690 .panel-primary > .panel-heading {
5692 background-color: #337ab7;
5693 border-color: #337ab7;
5695 .panel-primary > .panel-heading + .panel-collapse > .panel-body {
5696 border-top-color: #337ab7;
5698 .panel-primary > .panel-heading .badge {
5700 background-color: #fff;
5702 .panel-primary > .panel-footer + .panel-collapse > .panel-body {
5703 border-bottom-color: #337ab7;
5706 border-color: #d6e9c6;
5708 .panel-success > .panel-heading {
5710 background-color: #dff0d8;
5711 border-color: #d6e9c6;
5713 .panel-success > .panel-heading + .panel-collapse > .panel-body {
5714 border-top-color: #d6e9c6;
5716 .panel-success > .panel-heading .badge {
5718 background-color: #3c763d;
5720 .panel-success > .panel-footer + .panel-collapse > .panel-body {
5721 border-bottom-color: #d6e9c6;
5724 border-color: #bce8f1;
5726 .panel-info > .panel-heading {
5728 background-color: #d9edf7;
5729 border-color: #bce8f1;
5731 .panel-info > .panel-heading + .panel-collapse > .panel-body {
5732 border-top-color: #bce8f1;
5734 .panel-info > .panel-heading .badge {
5736 background-color: #31708f;
5738 .panel-info > .panel-footer + .panel-collapse > .panel-body {
5739 border-bottom-color: #bce8f1;
5742 border-color: #faebcc;
5744 .panel-warning > .panel-heading {
5746 background-color: #fcf8e3;
5747 border-color: #faebcc;
5749 .panel-warning > .panel-heading + .panel-collapse > .panel-body {
5750 border-top-color: #faebcc;
5752 .panel-warning > .panel-heading .badge {
5754 background-color: #8a6d3b;
5756 .panel-warning > .panel-footer + .panel-collapse > .panel-body {
5757 border-bottom-color: #faebcc;
5760 border-color: #ebccd1;
5762 .panel-danger > .panel-heading {
5764 background-color: #f2dede;
5765 border-color: #ebccd1;
5767 .panel-danger > .panel-heading + .panel-collapse > .panel-body {
5768 border-top-color: #ebccd1;
5770 .panel-danger > .panel-heading .badge {
5772 background-color: #a94442;
5774 .panel-danger > .panel-footer + .panel-collapse > .panel-body {
5775 border-bottom-color: #ebccd1;
5784 .embed-responsive .embed-responsive-item,
5785 .embed-responsive iframe,
5786 .embed-responsive embed,
5787 .embed-responsive object,
5788 .embed-responsive video {
5797 .embed-responsive-16by9 {
5798 padding-bottom: 56.25%;
5800 .embed-responsive-4by3 {
5801 padding-bottom: 75%;
5806 margin-bottom: 20px;
5807 background-color: #f5f5f5;
5808 border: 1px solid #e3e3e3;
5810 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5811 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
5815 border-color: rgba(0, 0, 0, 0.15);
5831 text-shadow: 0 1px 0 #fff;
5833 filter: alpha(opacity=20);
5838 text-decoration: none;
5841 filter: alpha(opacity=50);
5846 background: transparent;
5848 -webkit-appearance: none;
5862 -webkit-overflow-scrolling: touch;
5865 .modal.fade .modal-dialog {
5866 -webkit-transform: translate(0, -25%);
5867 -ms-transform: translate(0, -25%);
5868 -o-transform: translate(0, -25%);
5869 transform: translate(0, -25%);
5870 -webkit-transition: -webkit-transform 0.3s ease-out;
5871 -moz-transition: -moz-transform 0.3s ease-out;
5872 -o-transition: -o-transform 0.3s ease-out;
5873 transition: transform 0.3s ease-out;
5875 .modal.in .modal-dialog {
5876 -webkit-transform: translate(0, 0);
5877 -ms-transform: translate(0, 0);
5878 -o-transform: translate(0, 0);
5879 transform: translate(0, 0);
5881 .modal-open .modal {
5892 background-color: #fff;
5893 border: 1px solid #999;
5894 border: 1px solid rgba(0, 0, 0, 0.2);
5896 -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5897 box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
5898 background-clip: padding-box;
5908 background-color: #000;
5910 .modal-backdrop.fade {
5912 filter: alpha(opacity=0);
5914 .modal-backdrop.in {
5916 filter: alpha(opacity=50);
5920 border-bottom: 1px solid #e5e5e5;
5922 .modal-header .close {
5927 line-height: 1.42857143;
5936 border-top: 1px solid #e5e5e5;
5938 .modal-footer .btn + .btn {
5942 .modal-footer .btn-group .btn + .btn {
5945 .modal-footer .btn-block + .btn-block {
5948 .modal-scrollbar-measure {
5955 @media (min-width: 768px) {
5961 -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5962 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
5968 @media (min-width: 992px) {
5977 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
5979 font-weight: normal;
5980 letter-spacing: normal;
5982 line-height: 1.42857143;
5985 text-decoration: none;
5987 text-transform: none;
5988 white-space: normal;
5990 word-spacing: normal;
5994 filter: alpha(opacity=0);
5998 filter: alpha(opacity=90);
6021 background-color: #000;
6028 border-color: transparent;
6029 border-style: solid;
6031 .tooltip.top .tooltip-arrow {
6035 border-width: 5px 5px 0;
6036 border-top-color: #000;
6038 .tooltip.top-left .tooltip-arrow {
6041 margin-bottom: -5px;
6042 border-width: 5px 5px 0;
6043 border-top-color: #000;
6045 .tooltip.top-right .tooltip-arrow {
6048 margin-bottom: -5px;
6049 border-width: 5px 5px 0;
6050 border-top-color: #000;
6052 .tooltip.right .tooltip-arrow {
6056 border-width: 5px 5px 5px 0;
6057 border-right-color: #000;
6059 .tooltip.left .tooltip-arrow {
6063 border-width: 5px 0 5px 5px;
6064 border-left-color: #000;
6066 .tooltip.bottom .tooltip-arrow {
6070 border-width: 0 5px 5px;
6071 border-bottom-color: #000;
6073 .tooltip.bottom-left .tooltip-arrow {
6077 border-width: 0 5px 5px;
6078 border-bottom-color: #000;
6080 .tooltip.bottom-right .tooltip-arrow {
6084 border-width: 0 5px 5px;
6085 border-bottom-color: #000;
6095 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6097 font-weight: normal;
6098 letter-spacing: normal;
6100 line-height: 1.42857143;
6103 text-decoration: none;
6105 text-transform: none;
6106 white-space: normal;
6108 word-spacing: normal;
6111 background-color: #fff;
6112 background-clip: padding-box;
6113 border: 1px solid #ccc;
6114 border: 1px solid rgba(0, 0, 0, 0.2);
6116 -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6117 box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
6135 background-color: #f7f7f7;
6136 border-bottom: 1px solid #ebebeb;
6137 border-radius: 2px 2px 0 0;
6143 .popover > .arrow:after {
6148 border-color: transparent;
6149 border-style: solid;
6154 .popover > .arrow:after {
6158 .popover.top > .arrow {
6161 border-bottom-width: 0;
6162 border-top-color: #999999;
6163 border-top-color: rgba(0, 0, 0, 0.25);
6166 .popover.top > .arrow:after {
6170 border-bottom-width: 0;
6171 border-top-color: #fff;
6173 .popover.right > .arrow {
6177 border-left-width: 0;
6178 border-right-color: #999999;
6179 border-right-color: rgba(0, 0, 0, 0.25);
6181 .popover.right > .arrow:after {
6185 border-left-width: 0;
6186 border-right-color: #fff;
6188 .popover.bottom > .arrow {
6191 border-top-width: 0;
6192 border-bottom-color: #999999;
6193 border-bottom-color: rgba(0, 0, 0, 0.25);
6196 .popover.bottom > .arrow:after {
6200 border-top-width: 0;
6201 border-bottom-color: #fff;
6203 .popover.left > .arrow {
6207 border-right-width: 0;
6208 border-left-color: #999999;
6209 border-left-color: rgba(0, 0, 0, 0.25);
6211 .popover.left > .arrow:after {
6214 border-right-width: 0;
6215 border-left-color: #fff;
6226 .carousel-inner > .item {
6229 -webkit-transition: 0.6s ease-in-out left;
6230 -o-transition: 0.6s ease-in-out left;
6231 transition: 0.6s ease-in-out left;
6233 .carousel-inner > .item > img,
6234 .carousel-inner > .item > a > img {
6237 @media all and (transform-3d), (-webkit-transform-3d) {
6238 .carousel-inner > .item {
6239 -webkit-transition: -webkit-transform 0.6s ease-in-out;
6240 -moz-transition: -moz-transform 0.6s ease-in-out;
6241 -o-transition: -o-transform 0.6s ease-in-out;
6242 transition: transform 0.6s ease-in-out;
6243 -webkit-backface-visibility: hidden;
6244 -moz-backface-visibility: hidden;
6245 backface-visibility: hidden;
6246 -webkit-perspective: 1000px;
6247 -moz-perspective: 1000px;
6248 perspective: 1000px;
6250 .carousel-inner > .item.next,
6251 .carousel-inner > .item.active.right {
6252 -webkit-transform: translate3d(100%, 0, 0);
6253 transform: translate3d(100%, 0, 0);
6256 .carousel-inner > .item.prev,
6257 .carousel-inner > .item.active.left {
6258 -webkit-transform: translate3d(-100%, 0, 0);
6259 transform: translate3d(-100%, 0, 0);
6262 .carousel-inner > .item.next.left,
6263 .carousel-inner > .item.prev.right,
6264 .carousel-inner > .item.active {
6265 -webkit-transform: translate3d(0, 0, 0);
6266 transform: translate3d(0, 0, 0);
6270 .carousel-inner > .active,
6271 .carousel-inner > .next,
6272 .carousel-inner > .prev {
6275 .carousel-inner > .active {
6278 .carousel-inner > .next,
6279 .carousel-inner > .prev {
6284 .carousel-inner > .next {
6287 .carousel-inner > .prev {
6290 .carousel-inner > .next.left,
6291 .carousel-inner > .prev.right {
6294 .carousel-inner > .active.left {
6297 .carousel-inner > .active.right {
6307 filter: alpha(opacity=50);
6311 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6312 background-color: rgba(0, 0, 0, 0);
6314 .carousel-control.left {
6315 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6316 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6317 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
6318 background-repeat: repeat-x;
6319 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
6321 .carousel-control.right {
6324 background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6325 background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6326 background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
6327 background-repeat: repeat-x;
6328 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
6330 .carousel-control:hover,
6331 .carousel-control:focus {
6334 text-decoration: none;
6336 filter: alpha(opacity=90);
6338 .carousel-control .icon-prev,
6339 .carousel-control .icon-next,
6340 .carousel-control .glyphicon-chevron-left,
6341 .carousel-control .glyphicon-chevron-right {
6346 display: inline-block;
6348 .carousel-control .icon-prev,
6349 .carousel-control .glyphicon-chevron-left {
6353 .carousel-control .icon-next,
6354 .carousel-control .glyphicon-chevron-right {
6356 margin-right: -10px;
6358 .carousel-control .icon-prev,
6359 .carousel-control .icon-next {
6365 .carousel-control .icon-prev:before {
6368 .carousel-control .icon-next:before {
6371 .carousel-indicators {
6382 .carousel-indicators li {
6383 display: inline-block;
6387 text-indent: -999px;
6388 border: 1px solid #fff;
6389 border-radius: 10px;
6391 background-color: #000 \9;
6392 background-color: rgba(0, 0, 0, 0);
6394 .carousel-indicators .active {
6398 background-color: #fff;
6407 padding-bottom: 20px;
6410 text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
6412 .carousel-caption .btn {
6415 @media screen and (min-width: 768px) {
6416 .carousel-control .glyphicon-chevron-left,
6417 .carousel-control .glyphicon-chevron-right,
6418 .carousel-control .icon-prev,
6419 .carousel-control .icon-next {
6425 .carousel-control .glyphicon-chevron-left,
6426 .carousel-control .icon-prev {
6429 .carousel-control .glyphicon-chevron-right,
6430 .carousel-control .icon-next {
6431 margin-right: -10px;
6436 padding-bottom: 30px;
6438 .carousel-indicators {
6444 .dl-horizontal dd:before,
6445 .dl-horizontal dd:after,
6448 .container-fluid:before,
6449 .container-fluid:after,
6452 .form-horizontal .form-group:before,
6453 .form-horizontal .form-group:after,
6454 .btn-toolbar:before,
6456 .btn-group-vertical > .btn-group:before,
6457 .btn-group-vertical > .btn-group:after,
6462 .navbar-header:before,
6463 .navbar-header:after,
6464 .navbar-collapse:before,
6465 .navbar-collapse:after,
6470 .modal-header:before,
6471 .modal-header:after,
6472 .modal-footer:before,
6473 .modal-footer:after,
6474 .item_buttons:before,
6475 .item_buttons:after {
6480 .dl-horizontal dd:after,
6482 .container-fluid:after,
6484 .form-horizontal .form-group:after,
6486 .btn-group-vertical > .btn-group:after,
6489 .navbar-header:after,
6490 .navbar-collapse:after,
6493 .modal-header:after,
6494 .modal-footer:after,
6495 .item_buttons:after {
6504 float: right !important;
6507 float: left !important;
6510 display: none !important;
6513 display: block !important;
6522 background-color: transparent;
6526 display: none !important;
6532 width: device-width;
6538 display: none !important;
6542 .visible-xs-inline-block,
6545 .visible-sm-inline-block,
6548 .visible-md-inline-block,
6551 .visible-lg-inline-block {
6552 display: none !important;
6554 @media (max-width: 767px) {
6556 display: block !important;
6559 display: table !important;
6562 display: table-row !important;
6566 display: table-cell !important;
6569 @media (max-width: 767px) {
6571 display: block !important;
6574 @media (max-width: 767px) {
6575 .visible-xs-inline {
6576 display: inline !important;
6579 @media (max-width: 767px) {
6580 .visible-xs-inline-block {
6581 display: inline-block !important;
6584 @media (min-width: 768px) and (max-width: 991px) {
6586 display: block !important;
6589 display: table !important;
6592 display: table-row !important;
6596 display: table-cell !important;
6599 @media (min-width: 768px) and (max-width: 991px) {
6601 display: block !important;
6604 @media (min-width: 768px) and (max-width: 991px) {
6605 .visible-sm-inline {
6606 display: inline !important;
6609 @media (min-width: 768px) and (max-width: 991px) {
6610 .visible-sm-inline-block {
6611 display: inline-block !important;
6614 @media (min-width: 992px) and (max-width: 1199px) {
6616 display: block !important;
6619 display: table !important;
6622 display: table-row !important;
6626 display: table-cell !important;
6629 @media (min-width: 992px) and (max-width: 1199px) {
6631 display: block !important;
6634 @media (min-width: 992px) and (max-width: 1199px) {
6635 .visible-md-inline {
6636 display: inline !important;
6639 @media (min-width: 992px) and (max-width: 1199px) {
6640 .visible-md-inline-block {
6641 display: inline-block !important;
6644 @media (min-width: 1200px) {
6646 display: block !important;
6649 display: table !important;
6652 display: table-row !important;
6656 display: table-cell !important;
6659 @media (min-width: 1200px) {
6661 display: block !important;
6664 @media (min-width: 1200px) {
6665 .visible-lg-inline {
6666 display: inline !important;
6669 @media (min-width: 1200px) {
6670 .visible-lg-inline-block {
6671 display: inline-block !important;
6674 @media (max-width: 767px) {
6676 display: none !important;
6679 @media (min-width: 768px) and (max-width: 991px) {
6681 display: none !important;
6684 @media (min-width: 992px) and (max-width: 1199px) {
6686 display: none !important;
6689 @media (min-width: 1200px) {
6691 display: none !important;
6695 display: none !important;
6699 display: block !important;
6701 table.visible-print {
6702 display: table !important;
6705 display: table-row !important;
6709 display: table-cell !important;
6712 .visible-print-block {
6713 display: none !important;
6716 .visible-print-block {
6717 display: block !important;
6720 .visible-print-inline {
6721 display: none !important;
6724 .visible-print-inline {
6725 display: inline !important;
6728 .visible-print-inline-block {
6729 display: none !important;
6732 .visible-print-inline-block {
6733 display: inline-block !important;
6738 display: none !important;
6747 * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
6748 * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
6751 * -------------------------- */
6753 font-family: 'FontAwesome';
6754 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
6755 src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
6756 font-weight: normal;
6760 display: inline-block;
6761 font: normal normal normal 14px/1 FontAwesome;
6763 text-rendering: auto;
6764 -webkit-font-smoothing: antialiased;
6765 -moz-osx-font-smoothing: grayscale;
6767 /* makes the font 33% larger relative to the icon container */
6769 font-size: 1.33333333em;
6770 line-height: 0.75em;
6771 vertical-align: -15%;
6786 width: 1.28571429em;
6791 margin-left: 2.14285714em;
6792 list-style-type: none;
6799 left: -2.14285714em;
6800 width: 2.14285714em;
6805 left: -1.85714286em;
6808 padding: .2em .25em .15em;
6809 border: solid 0.08em #eee;
6810 border-radius: .1em;
6825 -webkit-animation: fa-spin 2s infinite linear;
6826 animation: fa-spin 2s infinite linear;
6828 @-webkit-keyframes fa-spin {
6830 -webkit-transform: rotate(0deg);
6831 transform: rotate(0deg);
6834 -webkit-transform: rotate(359deg);
6835 transform: rotate(359deg);
6838 @keyframes fa-spin {
6840 -webkit-transform: rotate(0deg);
6841 transform: rotate(0deg);
6844 -webkit-transform: rotate(359deg);
6845 transform: rotate(359deg);
6849 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
6850 -webkit-transform: rotate(90deg);
6851 -ms-transform: rotate(90deg);
6852 transform: rotate(90deg);
6855 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
6856 -webkit-transform: rotate(180deg);
6857 -ms-transform: rotate(180deg);
6858 transform: rotate(180deg);
6861 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
6862 -webkit-transform: rotate(270deg);
6863 -ms-transform: rotate(270deg);
6864 transform: rotate(270deg);
6866 .fa-flip-horizontal {
6867 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
6868 -webkit-transform: scale(-1, 1);
6869 -ms-transform: scale(-1, 1);
6870 transform: scale(-1, 1);
6873 filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
6874 -webkit-transform: scale(1, -1);
6875 -ms-transform: scale(1, -1);
6876 transform: scale(1, -1);
6878 :root .fa-rotate-90,
6879 :root .fa-rotate-180,
6880 :root .fa-rotate-270,
6881 :root .fa-flip-horizontal,
6882 :root .fa-flip-vertical {
6887 display: inline-block;
6891 vertical-align: middle;
6901 line-height: inherit;
6909 /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
6910 readers do not read off random characters that represent icons */
6920 .fa-envelope-o:before {
6938 .fa-th-large:before {
6944 .fa-th-list:before {
6955 .fa-search-plus:before {
6958 .fa-search-minus:before {
6961 .fa-power-off:before {
6971 .fa-trash-o:before {
6980 .fa-clock-o:before {
6986 .fa-download:before {
6989 .fa-arrow-circle-o-down:before {
6992 .fa-arrow-circle-o-up:before {
6998 .fa-play-circle-o:before {
7001 .fa-rotate-right:before,
7005 .fa-refresh:before {
7008 .fa-list-alt:before {
7017 .fa-headphones:before {
7020 .fa-volume-off:before {
7023 .fa-volume-down:before {
7026 .fa-volume-up:before {
7032 .fa-barcode:before {
7044 .fa-bookmark:before {
7062 .fa-text-height:before {
7065 .fa-text-width:before {
7068 .fa-align-left:before {
7071 .fa-align-center:before {
7074 .fa-align-right:before {
7077 .fa-align-justify:before {
7084 .fa-outdent:before {
7090 .fa-video-camera:before {
7095 .fa-picture-o:before {
7101 .fa-map-marker:before {
7111 .fa-pencil-square-o:before {
7114 .fa-share-square-o:before {
7117 .fa-check-square-o:before {
7123 .fa-step-backward:before {
7126 .fa-fast-backward:before {
7129 .fa-backward:before {
7141 .fa-forward:before {
7144 .fa-fast-forward:before {
7147 .fa-step-forward:before {
7153 .fa-chevron-left:before {
7156 .fa-chevron-right:before {
7159 .fa-plus-circle:before {
7162 .fa-minus-circle:before {
7165 .fa-times-circle:before {
7168 .fa-check-circle:before {
7171 .fa-question-circle:before {
7174 .fa-info-circle:before {
7177 .fa-crosshairs:before {
7180 .fa-times-circle-o:before {
7183 .fa-check-circle-o:before {
7189 .fa-arrow-left:before {
7192 .fa-arrow-right:before {
7195 .fa-arrow-up:before {
7198 .fa-arrow-down:before {
7201 .fa-mail-forward:before,
7208 .fa-compress:before {
7217 .fa-asterisk:before {
7220 .fa-exclamation-circle:before {
7235 .fa-eye-slash:before {
7239 .fa-exclamation-triangle:before {
7245 .fa-calendar:before {
7251 .fa-comment:before {
7257 .fa-chevron-up:before {
7260 .fa-chevron-down:before {
7263 .fa-retweet:before {
7266 .fa-shopping-cart:before {
7272 .fa-folder-open:before {
7275 .fa-arrows-v:before {
7278 .fa-arrows-h:before {
7281 .fa-bar-chart-o:before,
7282 .fa-bar-chart:before {
7285 .fa-twitter-square:before {
7288 .fa-facebook-square:before {
7291 .fa-camera-retro:before {
7301 .fa-comments:before {
7304 .fa-thumbs-o-up:before {
7307 .fa-thumbs-o-down:before {
7310 .fa-star-half:before {
7313 .fa-heart-o:before {
7316 .fa-sign-out:before {
7319 .fa-linkedin-square:before {
7322 .fa-thumb-tack:before {
7325 .fa-external-link:before {
7328 .fa-sign-in:before {
7334 .fa-github-square:before {
7340 .fa-lemon-o:before {
7346 .fa-square-o:before {
7349 .fa-bookmark-o:before {
7352 .fa-phone-square:before {
7355 .fa-twitter:before {
7358 .fa-facebook:before {
7367 .fa-credit-card:before {
7376 .fa-bullhorn:before {
7382 .fa-certificate:before {
7385 .fa-hand-o-right:before {
7388 .fa-hand-o-left:before {
7391 .fa-hand-o-up:before {
7394 .fa-hand-o-down:before {
7397 .fa-arrow-circle-left:before {
7400 .fa-arrow-circle-right:before {
7403 .fa-arrow-circle-up:before {
7406 .fa-arrow-circle-down:before {
7421 .fa-briefcase:before {
7424 .fa-arrows-alt:before {
7442 .fa-scissors:before {
7446 .fa-files-o:before {
7449 .fa-paperclip:before {
7453 .fa-floppy-o:before {
7464 .fa-list-ul:before {
7467 .fa-list-ol:before {
7470 .fa-strikethrough:before {
7473 .fa-underline:before {
7485 .fa-pinterest:before {
7488 .fa-pinterest-square:before {
7491 .fa-google-plus-square:before {
7494 .fa-google-plus:before {
7500 .fa-caret-down:before {
7503 .fa-caret-up:before {
7506 .fa-caret-left:before {
7509 .fa-caret-right:before {
7512 .fa-columns:before {
7515 .fa-unsorted:before,
7519 .fa-sort-down:before,
7520 .fa-sort-desc:before {
7524 .fa-sort-asc:before {
7527 .fa-envelope:before {
7530 .fa-linkedin:before {
7533 .fa-rotate-left:before,
7541 .fa-dashboard:before,
7542 .fa-tachometer:before {
7545 .fa-comment-o:before {
7548 .fa-comments-o:before {
7555 .fa-sitemap:before {
7558 .fa-umbrella:before {
7562 .fa-clipboard:before {
7565 .fa-lightbulb-o:before {
7568 .fa-exchange:before {
7571 .fa-cloud-download:before {
7574 .fa-cloud-upload:before {
7577 .fa-user-md:before {
7580 .fa-stethoscope:before {
7583 .fa-suitcase:before {
7592 .fa-cutlery:before {
7595 .fa-file-text-o:before {
7598 .fa-building-o:before {
7601 .fa-hospital-o:before {
7604 .fa-ambulance:before {
7610 .fa-fighter-jet:before {
7616 .fa-h-square:before {
7619 .fa-plus-square:before {
7622 .fa-angle-double-left:before {
7625 .fa-angle-double-right:before {
7628 .fa-angle-double-up:before {
7631 .fa-angle-double-down:before {
7634 .fa-angle-left:before {
7637 .fa-angle-right:before {
7640 .fa-angle-up:before {
7643 .fa-angle-down:before {
7646 .fa-desktop:before {
7655 .fa-mobile-phone:before,
7659 .fa-circle-o:before {
7662 .fa-quote-left:before {
7665 .fa-quote-right:before {
7668 .fa-spinner:before {
7674 .fa-mail-reply:before,
7678 .fa-github-alt:before {
7681 .fa-folder-o:before {
7684 .fa-folder-open-o:before {
7687 .fa-smile-o:before {
7690 .fa-frown-o:before {
7696 .fa-gamepad:before {
7699 .fa-keyboard-o:before {
7705 .fa-flag-checkered:before {
7708 .fa-terminal:before {
7714 .fa-mail-reply-all:before,
7715 .fa-reply-all:before {
7718 .fa-star-half-empty:before,
7719 .fa-star-half-full:before,
7720 .fa-star-half-o:before {
7723 .fa-location-arrow:before {
7729 .fa-code-fork:before {
7733 .fa-chain-broken:before {
7736 .fa-question:before {
7742 .fa-exclamation:before {
7745 .fa-superscript:before {
7748 .fa-subscript:before {
7754 .fa-puzzle-piece:before {
7757 .fa-microphone:before {
7760 .fa-microphone-slash:before {
7766 .fa-calendar-o:before {
7769 .fa-fire-extinguisher:before {
7778 .fa-chevron-circle-left:before {
7781 .fa-chevron-circle-right:before {
7784 .fa-chevron-circle-up:before {
7787 .fa-chevron-circle-down:before {
7799 .fa-unlock-alt:before {
7802 .fa-bullseye:before {
7805 .fa-ellipsis-h:before {
7808 .fa-ellipsis-v:before {
7811 .fa-rss-square:before {
7814 .fa-play-circle:before {
7820 .fa-minus-square:before {
7823 .fa-minus-square-o:before {
7826 .fa-level-up:before {
7829 .fa-level-down:before {
7832 .fa-check-square:before {
7835 .fa-pencil-square:before {
7838 .fa-external-link-square:before {
7841 .fa-share-square:before {
7844 .fa-compass:before {
7847 .fa-toggle-down:before,
7848 .fa-caret-square-o-down:before {
7851 .fa-toggle-up:before,
7852 .fa-caret-square-o-up:before {
7855 .fa-toggle-right:before,
7856 .fa-caret-square-o-right:before {
7896 .fa-file-text:before {
7899 .fa-sort-alpha-asc:before {
7902 .fa-sort-alpha-desc:before {
7905 .fa-sort-amount-asc:before {
7908 .fa-sort-amount-desc:before {
7911 .fa-sort-numeric-asc:before {
7914 .fa-sort-numeric-desc:before {
7917 .fa-thumbs-up:before {
7920 .fa-thumbs-down:before {
7923 .fa-youtube-square:before {
7926 .fa-youtube:before {
7932 .fa-xing-square:before {
7935 .fa-youtube-play:before {
7938 .fa-dropbox:before {
7941 .fa-stack-overflow:before {
7944 .fa-instagram:before {
7953 .fa-bitbucket:before {
7956 .fa-bitbucket-square:before {
7962 .fa-tumblr-square:before {
7965 .fa-long-arrow-down:before {
7968 .fa-long-arrow-up:before {
7971 .fa-long-arrow-left:before {
7974 .fa-long-arrow-right:before {
7980 .fa-windows:before {
7983 .fa-android:before {
7989 .fa-dribbble:before {
7995 .fa-foursquare:before {
8016 .fa-archive:before {
8031 .fa-pagelines:before {
8034 .fa-stack-exchange:before {
8037 .fa-arrow-circle-o-right:before {
8040 .fa-arrow-circle-o-left:before {
8043 .fa-toggle-left:before,
8044 .fa-caret-square-o-left:before {
8047 .fa-dot-circle-o:before {
8050 .fa-wheelchair:before {
8053 .fa-vimeo-square:before {
8056 .fa-turkish-lira:before,
8060 .fa-plus-square-o:before {
8063 .fa-space-shuttle:before {
8069 .fa-envelope-square:before {
8072 .fa-wordpress:before {
8078 .fa-institution:before,
8080 .fa-university:before {
8083 .fa-mortar-board:before,
8084 .fa-graduation-cap:before {
8096 .fa-reddit-square:before {
8099 .fa-stumbleupon-circle:before {
8102 .fa-stumbleupon:before {
8105 .fa-delicious:before {
8111 .fa-pied-piper:before {
8114 .fa-pied-piper-alt:before {
8123 .fa-language:before {
8129 .fa-building:before {
8147 .fa-behance:before {
8150 .fa-behance-square:before {
8156 .fa-steam-square:before {
8159 .fa-recycle:before {
8162 .fa-automobile:before,
8173 .fa-spotify:before {
8176 .fa-deviantart:before {
8179 .fa-soundcloud:before {
8182 .fa-database:before {
8185 .fa-file-pdf-o:before {
8188 .fa-file-word-o:before {
8191 .fa-file-excel-o:before {
8194 .fa-file-powerpoint-o:before {
8197 .fa-file-photo-o:before,
8198 .fa-file-picture-o:before,
8199 .fa-file-image-o:before {
8202 .fa-file-zip-o:before,
8203 .fa-file-archive-o:before {
8206 .fa-file-sound-o:before,
8207 .fa-file-audio-o:before {
8210 .fa-file-movie-o:before,
8211 .fa-file-video-o:before {
8214 .fa-file-code-o:before {
8220 .fa-codepen:before {
8223 .fa-jsfiddle:before {
8226 .fa-life-bouy:before,
8227 .fa-life-buoy:before,
8228 .fa-life-saver:before,
8230 .fa-life-ring:before {
8233 .fa-circle-o-notch:before {
8244 .fa-git-square:before {
8250 .fa-hacker-news:before {
8253 .fa-tencent-weibo:before {
8264 .fa-paper-plane:before {
8268 .fa-paper-plane-o:before {
8271 .fa-history:before {
8274 .fa-circle-thin:before {
8280 .fa-paragraph:before {
8283 .fa-sliders:before {
8286 .fa-share-alt:before {
8289 .fa-share-alt-square:before {
8295 .fa-soccer-ball-o:before,
8296 .fa-futbol-o:before {
8302 .fa-binoculars:before {
8308 .fa-slideshare:before {
8317 .fa-newspaper-o:before {
8323 .fa-calculator:before {
8329 .fa-google-wallet:before {
8332 .fa-cc-visa:before {
8335 .fa-cc-mastercard:before {
8338 .fa-cc-discover:before {
8341 .fa-cc-amex:before {
8344 .fa-cc-paypal:before {
8347 .fa-cc-stripe:before {
8350 .fa-bell-slash:before {
8353 .fa-bell-slash-o:before {
8359 .fa-copyright:before {
8365 .fa-eyedropper:before {
8368 .fa-paint-brush:before {
8371 .fa-birthday-cake:before {
8374 .fa-area-chart:before {
8377 .fa-pie-chart:before {
8380 .fa-line-chart:before {
8386 .fa-lastfm-square:before {
8389 .fa-toggle-off:before {
8392 .fa-toggle-on:before {
8395 .fa-bicycle:before {
8401 .fa-ioxhost:before {
8404 .fa-angellist:before {
8415 .fa-meanpath:before {
8423 .modal.fade .modal-dialog {
8424 -webkit-transform: translate(0, 0);
8425 -ms-transform: translate(0, 0);
8426 -o-transform: translate(0, 0);
8427 transform: translate(0, 0);
8434 line-height: inherit;
8437 font-weight: normal;
8439 /* Make the page background atleast 100% the height of the view port */
8440 /* Make the page itself atleast 70% the height of the view port */
8441 .border-box-sizing {
8442 box-sizing: border-box;
8443 -moz-box-sizing: border-box;
8444 -webkit-box-sizing: border-box;
8452 /* Flexible box model classes */
8453 /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
8454 /* This file is a compatability layer. It allows the usage of flexible box
8455 model layouts accross multiple browsers, including older browsers. The newest,
8456 universal implementation of the flexible box model is used when available (see
8457 `Modern browsers` comments below). Browsers that are known to implement this
8458 new spec completely include:
8462 Internet Explorer 11+
8465 Browsers not listed, including Safari, are supported via the styling under the
8466 `Old browsers` comments below.
8470 display: -webkit-box;
8471 -webkit-box-orient: horizontal;
8472 -webkit-box-align: stretch;
8474 -moz-box-orient: horizontal;
8475 -moz-box-align: stretch;
8477 box-orient: horizontal;
8479 /* Modern browsers */
8481 flex-direction: row;
8482 align-items: stretch;
8486 -webkit-box-flex: 0;
8489 /* Modern browsers */
8494 display: -webkit-box;
8495 -webkit-box-orient: vertical;
8496 -webkit-box-align: stretch;
8498 -moz-box-orient: vertical;
8499 -moz-box-align: stretch;
8501 box-orient: vertical;
8503 /* Modern browsers */
8505 flex-direction: column;
8506 align-items: stretch;
8510 -webkit-box-flex: 0;
8513 /* Modern browsers */
8520 -webkit-box-direction: reverse;
8521 -moz-box-direction: reverse;
8522 box-direction: reverse;
8523 /* Modern browsers */
8524 flex-direction: row-reverse;
8530 -webkit-box-flex: 0;
8533 /* Modern browsers */
8541 -webkit-box-flex: 1;
8544 /* Modern browsers */
8552 -webkit-box-flex: 1;
8555 /* Modern browsers */
8562 -webkit-box-flex: 2;
8565 /* Modern browsers */
8570 -webkit-box-flex-group: 1;
8571 -moz-box-flex-group: 1;
8576 -webkit-box-flex-group: 2;
8577 -moz-box-flex-group: 2;
8584 -webkit-box-pack: start;
8585 -moz-box-pack: start;
8587 /* Modern browsers */
8588 justify-content: flex-start;
8594 -webkit-box-pack: end;
8597 /* Modern browsers */
8598 justify-content: flex-end;
8604 -webkit-box-pack: center;
8605 -moz-box-pack: center;
8607 /* Modern browsers */
8608 justify-content: center;
8614 -webkit-box-pack: baseline;
8615 -moz-box-pack: baseline;
8617 /* Modern browsers */
8618 justify-content: baseline;
8624 -webkit-box-pack: stretch;
8625 -moz-box-pack: stretch;
8627 /* Modern browsers */
8628 justify-content: stretch;
8634 -webkit-box-align: start;
8635 -moz-box-align: start;
8637 /* Modern browsers */
8638 align-items: flex-start;
8644 -webkit-box-align: end;
8645 -moz-box-align: end;
8647 /* Modern browsers */
8648 align-items: flex-end;
8654 -webkit-box-align: center;
8655 -moz-box-align: center;
8657 /* Modern browsers */
8658 align-items: center;
8660 .hbox.align-baseline,
8661 .vbox.align-baseline,
8664 -webkit-box-align: baseline;
8665 -moz-box-align: baseline;
8666 box-align: baseline;
8667 /* Modern browsers */
8668 align-items: baseline;
8670 .hbox.align-stretch,
8671 .vbox.align-stretch,
8674 -webkit-box-align: stretch;
8675 -moz-box-align: stretch;
8677 /* Modern browsers */
8678 align-items: stretch;
8686 line-height: normal;
8690 line-height: normal;
8692 div.traceback-wrapper {
8700 * Author: Jupyter Development Team
8703 background-color: #fff;
8704 /* This makes sure that the body covers the entire window and needs to
8705 be in a different element than the display: box in wrapper below */
8714 /* Initially hidden to prevent FLOUC */
8716 background-color: #fff;
8717 /* Display over codemirror */
8721 body > #header #header-container {
8722 padding-bottom: 5px;
8724 box-sizing: border-box;
8725 -moz-box-sizing: border-box;
8726 -webkit-box-sizing: border-box;
8728 body > #header .header-bar {
8731 background: #e7e7e7;
8732 margin-bottom: -1px;
8736 display: none !important;
8751 padding-bottom: 1px;
8753 @media (max-width: 991px) {
8758 [dir="rtl"] #ipython_notebook {
8759 float: right !important;
8764 padding-bottom: 16px;
8770 #ipython_notebook img {
8776 box-sizing: border-box;
8777 -moz-box-sizing: border-box;
8778 -webkit-box-sizing: border-box;
8783 height: auto !important;
8786 /* Smaller buttons */
8787 .ui-button .ui-button-text {
8788 padding: 0.2em 0.8em;
8792 padding: 0.3em 0.9em;
8797 span#login_widget > .button,
8800 background-color: #fff;
8803 span#login_widget > .button:focus,
8805 span#login_widget > .button.focus,
8808 background-color: #e6e6e6;
8809 border-color: #8c8c8c;
8811 span#login_widget > .button:hover,
8814 background-color: #e6e6e6;
8815 border-color: #adadad;
8817 span#login_widget > .button:active,
8819 span#login_widget > .button.active,
8821 .open > .dropdown-togglespan#login_widget > .button,
8822 .open > .dropdown-toggle#logout {
8824 background-color: #e6e6e6;
8825 border-color: #adadad;
8827 span#login_widget > .button:active:hover,
8828 #logout:active:hover,
8829 span#login_widget > .button.active:hover,
8830 #logout.active:hover,
8831 .open > .dropdown-togglespan#login_widget > .button:hover,
8832 .open > .dropdown-toggle#logout:hover,
8833 span#login_widget > .button:active:focus,
8834 #logout:active:focus,
8835 span#login_widget > .button.active:focus,
8836 #logout.active:focus,
8837 .open > .dropdown-togglespan#login_widget > .button:focus,
8838 .open > .dropdown-toggle#logout:focus,
8839 span#login_widget > .button:active.focus,
8840 #logout:active.focus,
8841 span#login_widget > .button.active.focus,
8842 #logout.active.focus,
8843 .open > .dropdown-togglespan#login_widget > .button.focus,
8844 .open > .dropdown-toggle#logout.focus {
8846 background-color: #d4d4d4;
8847 border-color: #8c8c8c;
8849 span#login_widget > .button:active,
8851 span#login_widget > .button.active,
8853 .open > .dropdown-togglespan#login_widget > .button,
8854 .open > .dropdown-toggle#logout {
8855 background-image: none;
8857 span#login_widget > .button.disabled:hover,
8858 #logout.disabled:hover,
8859 span#login_widget > .button[disabled]:hover,
8860 #logout[disabled]:hover,
8861 fieldset[disabled] span#login_widget > .button:hover,
8862 fieldset[disabled] #logout:hover,
8863 span#login_widget > .button.disabled:focus,
8864 #logout.disabled:focus,
8865 span#login_widget > .button[disabled]:focus,
8866 #logout[disabled]:focus,
8867 fieldset[disabled] span#login_widget > .button:focus,
8868 fieldset[disabled] #logout:focus,
8869 span#login_widget > .button.disabled.focus,
8870 #logout.disabled.focus,
8871 span#login_widget > .button[disabled].focus,
8872 #logout[disabled].focus,
8873 fieldset[disabled] span#login_widget > .button.focus,
8874 fieldset[disabled] #logout.focus {
8875 background-color: #fff;
8878 span#login_widget > .button .badge,
8881 background-color: #333;
8884 text-transform: none;
8889 .modal_stretch .modal-dialog {
8891 display: -webkit-box;
8892 -webkit-box-orient: vertical;
8893 -webkit-box-align: stretch;
8895 -moz-box-orient: vertical;
8896 -moz-box-align: stretch;
8898 box-orient: vertical;
8900 /* Modern browsers */
8902 flex-direction: column;
8903 align-items: stretch;
8906 .modal_stretch .modal-dialog .modal-body {
8907 max-height: calc(100vh - 200px);
8911 @media (min-width: 768px) {
8912 .modal .modal-dialog {
8916 @media (min-width: 768px) {
8917 select.form-control {
8928 display: inline-block;
8929 margin-bottom: -4px;
8936 /* We need an invisible input field on top of the sentense*/
8937 /* "Drag file onto the list ..." */
8939 background-color: none;
8942 .alternate_upload.form {
8946 .alternate_upload input.fileinput {
8948 vertical-align: middle;
8953 margin-right: -12ex;
8955 .alternate_upload .btn-upload {
8961 * Author: Jupyter Development Team
8963 [dir="rtl"] #tabs li {
8969 [dir="rtl"] ul#tabs {
8974 padding-bottom: 4px;
8976 ul.breadcrumb a:focus,
8977 ul.breadcrumb a:hover {
8978 text-decoration: none;
8980 ul.breadcrumb i.icon-home {
8984 ul.breadcrumb span {
8988 padding: 4px 0 4px 0;
8989 vertical-align: middle;
8991 .list_toolbar .tree-buttons {
8994 [dir="rtl"] .list_toolbar .tree-buttons {
8995 float: left !important;
8997 [dir="rtl"] .list_toolbar .pull-right {
8999 float: left !important;
9001 [dir="rtl"] .list_toolbar .pull-left {
9002 float: right !important;
9006 display: inline-block;
9008 .list_toolbar [class*="span"] {
9013 background-color: #EEE;
9018 padding-bottom: 4px;
9024 margin-bottom: 20px;
9025 border: 1px solid #ddd;
9028 .list_container > div {
9029 border-bottom: 1px solid #ddd;
9031 .list_container > div:hover .list-item {
9032 background-color: red;
9034 .list_container > div:last-child {
9037 .list_item:hover .list_item {
9038 background-color: #ddd;
9041 text-decoration: none;
9044 background-color: #fafafa;
9049 padding-bottom: 4px;
9054 .list_header > div input,
9055 .list_item > div input {
9058 vertical-align: baseline;
9063 .list_header > div .item_link,
9064 .list_item > div .item_link {
9066 vertical-align: baseline;
9069 .new-file input[type=checkbox] {
9082 vertical-align: baseline;
9089 .item_buttons .btn-group,
9090 .item_buttons .input-group {
9093 .item_buttons > .btn,
9094 .item_buttons > .btn-group,
9095 .item_buttons > .input-group {
9098 .item_buttons .btn {
9101 .item_buttons .running-indicator {
9105 .item_buttons .kernel-name {
9115 .list_item input:not([type=checkbox]) {
9117 padding-bottom: 3px;
9126 display: inline-block;
9130 #project_name > .breadcrumb {
9133 background-color: transparent;
9139 [dir="rtl"] #tree-selector a {
9142 #button-select-all {
9156 .folder_icon:before {
9157 display: inline-block;
9158 font: normal normal normal 14px/1 FontAwesome;
9160 text-rendering: auto;
9161 -webkit-font-smoothing: antialiased;
9162 -moz-osx-font-smoothing: grayscale;
9165 .folder_icon:before.pull-left {
9168 .folder_icon:before.pull-right {
9171 .notebook_icon:before {
9172 display: inline-block;
9173 font: normal normal normal 14px/1 FontAwesome;
9175 text-rendering: auto;
9176 -webkit-font-smoothing: antialiased;
9177 -moz-osx-font-smoothing: grayscale;
9182 .notebook_icon:before.pull-left {
9185 .notebook_icon:before.pull-right {
9188 .running_notebook_icon:before {
9189 display: inline-block;
9190 font: normal normal normal 14px/1 FontAwesome;
9192 text-rendering: auto;
9193 -webkit-font-smoothing: antialiased;
9194 -moz-osx-font-smoothing: grayscale;
9200 .running_notebook_icon:before.pull-left {
9203 .running_notebook_icon:before.pull-right {
9207 display: inline-block;
9208 font: normal normal normal 14px/1 FontAwesome;
9210 text-rendering: auto;
9211 -webkit-font-smoothing: antialiased;
9212 -moz-osx-font-smoothing: grayscale;
9217 .file_icon:before.pull-left {
9220 .file_icon:before.pull-right {
9223 #notebook_toolbar .pull-right {
9231 [dir="rtl"] #new-menu {
9235 padding-right: 12px;
9239 .kernel-menu-icon:before {
9242 .kernel-menu-icon-current:before {
9248 #running .panel-group .panel {
9252 #running .panel-group .panel .panel-heading {
9253 background-color: #EEE;
9255 padding-bottom: 4px;
9260 #running .panel-group .panel .panel-heading a:focus,
9261 #running .panel-group .panel .panel-heading a:hover {
9262 text-decoration: none;
9264 #running .panel-group .panel .panel-body {
9267 #running .panel-group .panel .panel-body .list_container {
9273 #running .panel-group .panel .panel-body .list_container .list_item {
9274 border-bottom: 1px solid #ddd;
9276 #running .panel-group .panel .panel-body .list_container .list_item:last-child {
9279 [dir="rtl"] #running .col-sm-8 {
9280 float: right !important;
9294 .dynamic-instructions {
9295 display: inline-block;
9300 * IPython text editor webapp
9303 .selected-keymap i.fa {
9306 .selected-keymap i.fa:before {
9314 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
9315 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
9317 .edit_app #menubar .navbar {
9318 /* Use a negative 1 bottom margin, so the border overlaps the border of the
9320 margin-bottom: -1px;
9323 display: inline-block;
9324 font: normal normal normal 14px/1 FontAwesome;
9326 text-rendering: auto;
9327 -webkit-font-smoothing: antialiased;
9328 -moz-osx-font-smoothing: grayscale;
9331 .dirty-indicator.pull-left {
9334 .dirty-indicator.pull-right {
9337 .dirty-indicator-dirty {
9338 display: inline-block;
9339 font: normal normal normal 14px/1 FontAwesome;
9341 text-rendering: auto;
9342 -webkit-font-smoothing: antialiased;
9343 -moz-osx-font-smoothing: grayscale;
9346 .dirty-indicator-dirty.pull-left {
9349 .dirty-indicator-dirty.pull-right {
9352 .dirty-indicator-clean {
9353 display: inline-block;
9354 font: normal normal normal 14px/1 FontAwesome;
9356 text-rendering: auto;
9357 -webkit-font-smoothing: antialiased;
9358 -moz-osx-font-smoothing: grayscale;
9361 .dirty-indicator-clean.pull-left {
9364 .dirty-indicator-clean.pull-right {
9367 .dirty-indicator-clean:before {
9368 display: inline-block;
9369 font: normal normal normal 14px/1 FontAwesome;
9371 text-rendering: auto;
9372 -webkit-font-smoothing: antialiased;
9373 -moz-osx-font-smoothing: grayscale;
9376 .dirty-indicator-clean:before.pull-left {
9379 .dirty-indicator-clean:before.pull-right {
9391 #texteditor-backdrop {
9393 padding-bottom: 20px;
9396 #texteditor-backdrop {
9397 background-color: #EEE;
9401 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
9402 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
9403 background-color: #fff;
9407 #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
9408 #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
9409 background-color: #fff;
9413 #texteditor-backdrop #texteditor-container {
9415 background-color: #fff;
9416 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
9417 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
9425 /* CSS font colors for translated ANSI colors. */
9429 /* use dark versions for foreground, to improve visibility */
9454 /* and light for background, for the same reason */
9456 background-color: black;
9459 background-color: red;
9462 background-color: green;
9465 background-color: yellow;
9468 background-color: blue;
9471 background-color: magenta;
9474 background-color: cyan;
9477 background-color: gray;
9481 display: -webkit-box;
9482 -webkit-box-orient: vertical;
9483 -webkit-box-align: stretch;
9485 -moz-box-orient: vertical;
9486 -moz-box-align: stretch;
9488 box-orient: vertical;
9490 /* Modern browsers */
9492 flex-direction: column;
9493 align-items: stretch;
9495 box-sizing: border-box;
9496 -moz-box-sizing: border-box;
9497 -webkit-box-sizing: border-box;
9499 border-style: solid;
9500 border-color: transparent;
9503 /* This acts as a spacer between cells, that is outside the border */
9506 border-left-width: 1px;
9508 background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
9510 div.cell.jupyter-soft-selected {
9511 border-left-color: #90CAF9;
9512 border-left-color: #E3F2FD;
9513 border-left-width: 1px;
9515 border-right-color: #E3F2FD;
9516 border-right-width: 1px;
9517 background: #E3F2FD;
9520 div.cell.jupyter-soft-selected {
9521 border-color: transparent;
9525 border-color: #ababab;
9526 border-left-width: 0px;
9528 background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
9532 border-color: transparent;
9535 div.cell.selected.jupyter-soft-selected {
9536 border-left-width: 0;
9538 background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
9540 .edit_mode div.cell.selected {
9541 border-color: #66BB6A;
9542 border-left-width: 0px;
9544 background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
9547 .edit_mode div.cell.selected {
9548 border-color: transparent;
9552 /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
9554 /* This padding is tuned to match the padding on the CodeMirror editor. */
9557 font-family: monospace;
9559 /* This has to match that of the the CodeMirror class line-height below */
9560 line-height: 1.21429em;
9561 /* Don't highlight prompt number selection */
9562 -webkit-touch-callout: none;
9563 -webkit-user-select: none;
9564 -khtml-user-select: none;
9565 -moz-user-select: none;
9566 -ms-user-select: none;
9568 /* Use default cursor */
9571 @media (max-width: 540px) {
9579 display: -webkit-box;
9580 -webkit-box-orient: vertical;
9581 -webkit-box-align: stretch;
9583 -moz-box-orient: vertical;
9584 -moz-box-align: stretch;
9586 box-orient: vertical;
9588 /* Modern browsers */
9590 flex-direction: column;
9591 align-items: stretch;
9593 -webkit-box-flex: 1;
9596 /* Modern browsers */
9599 /* input_area and input_prompt must match in top border and margin for alignment */
9601 border: 1px solid #cfcfcf;
9603 background: #f7f7f7;
9604 line-height: 1.21429em;
9606 /* This is needed so that empty prompt areas can collapse to zero height when there
9607 is no content in the output_subarea and the prompt. The main purpose of this is
9608 to make sure that empty JavaScript output_subareas have no height. */
9613 div.unrecognized_cell {
9614 padding: 5px 5px 5px 0px;
9616 display: -webkit-box;
9617 -webkit-box-orient: horizontal;
9618 -webkit-box-align: stretch;
9620 -moz-box-orient: horizontal;
9621 -moz-box-align: stretch;
9623 box-orient: horizontal;
9625 /* Modern browsers */
9627 flex-direction: row;
9628 align-items: stretch;
9630 div.unrecognized_cell .inner_cell {
9635 border: 1px solid #cfcfcf;
9636 background: #eaeaea;
9638 div.unrecognized_cell .inner_cell a {
9640 text-decoration: none;
9642 div.unrecognized_cell .inner_cell a:hover {
9644 text-decoration: none;
9646 @media (max-width: 540px) {
9647 div.unrecognized_cell > div.prompt {
9652 /* avoid page breaking on code cells when printing */
9656 page-break-inside: avoid;
9659 /* any special styling for code cells that are currently running goes here */
9661 page-break-inside: avoid;
9663 display: -webkit-box;
9664 -webkit-box-orient: horizontal;
9665 -webkit-box-align: stretch;
9667 -moz-box-orient: horizontal;
9668 -moz-box-align: stretch;
9670 box-orient: horizontal;
9672 /* Modern browsers */
9674 flex-direction: row;
9675 align-items: stretch;
9677 @media (max-width: 540px) {
9680 display: -webkit-box;
9681 -webkit-box-orient: vertical;
9682 -webkit-box-align: stretch;
9684 -moz-box-orient: vertical;
9685 -moz-box-align: stretch;
9687 box-orient: vertical;
9689 /* Modern browsers */
9691 flex-direction: column;
9692 align-items: stretch;
9695 /* input_area and input_prompt must match in top border and margin for alignment */
9698 border-top: 1px solid transparent;
9700 div.input_area > div.highlight {
9704 background-color: transparent;
9706 div.input_area > div.highlight > pre {
9710 background-color: transparent;
9712 /* The following gets added to the <head> if it is detected that the user has a
9713 * monospace font with inconsistent normal/bold/italic height. See
9714 * notebookmain.js. Such fonts will have keywords vertically offset with
9715 * respect to the rest of the text. The user should select a better font.
9716 * See: https://github.com/ipython/ipython/issues/1503
9718 * .CodeMirror span {
9719 * vertical-align: bottom;
9723 line-height: 1.21429em;
9724 /* Changed from 1em to our global default */
9727 /* Changed to auto to autogrow */
9729 /* Changed from white to allow our bg to show through */
9731 .CodeMirror-scroll {
9732 /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
9733 /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
9738 /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
9739 /* we have set a different line-height and want this to scale with that. */
9742 .CodeMirror-linenumber {
9743 padding: 0 8px 0 4px;
9745 .CodeMirror-gutters {
9746 border-bottom-left-radius: 2px;
9747 border-top-left-radius: 2px;
9750 /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
9751 /* .CodeMirror-lines */
9758 Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
9759 Adapted from GitHub theme
9765 .highlight-variable {
9768 .highlight-variable-2 {
9771 .highlight-variable-3 {
9777 .highlight-comment {
9787 .highlight-keyword {
9791 .highlight-builtin {
9797 .highlight-operator {
9804 /* previously not defined, copying from default codemirror */
9808 .highlight-string-2 {
9811 .highlight-qualifier {
9814 .highlight-bracket {
9820 .highlight-attribute {
9832 /* apply the same style to codemirror */
9833 .cm-s-ipython span.cm-keyword {
9837 .cm-s-ipython span.cm-atom {
9840 .cm-s-ipython span.cm-number {
9843 .cm-s-ipython span.cm-def {
9846 .cm-s-ipython span.cm-variable {
9849 .cm-s-ipython span.cm-operator {
9853 .cm-s-ipython span.cm-variable-2 {
9856 .cm-s-ipython span.cm-variable-3 {
9859 .cm-s-ipython span.cm-comment {
9863 .cm-s-ipython span.cm-string {
9866 .cm-s-ipython span.cm-string-2 {
9869 .cm-s-ipython span.cm-meta {
9872 .cm-s-ipython span.cm-qualifier {
9875 .cm-s-ipython span.cm-builtin {
9878 .cm-s-ipython span.cm-bracket {
9881 .cm-s-ipython span.cm-tag {
9884 .cm-s-ipython span.cm-attribute {
9887 .cm-s-ipython span.cm-header {
9890 .cm-s-ipython span.cm-quote {
9893 .cm-s-ipython span.cm-link {
9896 .cm-s-ipython span.cm-error {
9899 .cm-s-ipython span.cm-tab {
9900 background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
9901 background-position: right;
9902 background-repeat: no-repeat;
9904 div.output_wrapper {
9905 /* this position must be relative to enable descendents to be absolute within it */
9908 display: -webkit-box;
9909 -webkit-box-orient: vertical;
9910 -webkit-box-align: stretch;
9912 -moz-box-orient: vertical;
9913 -moz-box-align: stretch;
9915 box-orient: vertical;
9917 /* Modern browsers */
9919 flex-direction: column;
9920 align-items: stretch;
9923 /* class for the output area when it should be height-limited */
9925 /* ideally, this would be max-height, but FF barfs all over that */
9927 /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
9931 -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9932 box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
9935 /* output div while it is collapsed */
9936 div.output_collapsed {
9940 display: -webkit-box;
9941 -webkit-box-orient: vertical;
9942 -webkit-box-align: stretch;
9944 -moz-box-orient: vertical;
9945 -moz-box-align: stretch;
9947 box-orient: vertical;
9949 /* Modern browsers */
9951 flex-direction: column;
9952 align-items: stretch;
9954 div.out_prompt_overlay {
9960 div.out_prompt_overlay:hover {
9961 /* use inner shadow to get border that is computed the same on WebKit/FF */
9962 -webkit-box-shadow: inset 0 0 1px #000;
9963 box-shadow: inset 0 0 1px #000;
9964 background: rgba(240, 240, 240, 0.5);
9969 /* This class is the outer container of all output sections. */
9972 page-break-inside: avoid;
9974 display: -webkit-box;
9975 -webkit-box-orient: horizontal;
9976 -webkit-box-align: stretch;
9978 -moz-box-orient: horizontal;
9979 -moz-box-align: stretch;
9981 box-orient: horizontal;
9983 /* Modern browsers */
9985 flex-direction: row;
9986 align-items: stretch;
9988 div.output_area .MathJax_Display {
9989 text-align: left !important;
9991 div.output_area .rendered_html table {
9995 div.output_area .rendered_html img {
9999 div.output_area img,
10000 div.output_area svg {
10004 div.output_area img.unconfined,
10005 div.output_area svg.unconfined {
10008 /* This is needed to protect the pre formating from global settings such
10009 as that of bootstrap */
10012 display: -webkit-box;
10013 -webkit-box-orient: vertical;
10014 -webkit-box-align: stretch;
10016 -moz-box-orient: vertical;
10017 -moz-box-align: stretch;
10019 box-orient: vertical;
10020 box-align: stretch;
10021 /* Modern browsers */
10023 flex-direction: column;
10024 align-items: stretch;
10026 @media (max-width: 540px) {
10029 display: -webkit-box;
10030 -webkit-box-orient: vertical;
10031 -webkit-box-align: stretch;
10033 -moz-box-orient: vertical;
10034 -moz-box-align: stretch;
10036 box-orient: vertical;
10037 box-align: stretch;
10038 /* Modern browsers */
10040 flex-direction: column;
10041 align-items: stretch;
10044 div.output_area pre {
10048 vertical-align: baseline;
10050 background-color: transparent;
10053 /* This class is for the output subarea inside the output_area and after
10055 div.output_subarea {
10059 -webkit-box-flex: 1;
10062 /* Modern browsers */
10064 max-width: calc(100% - 14ex);
10066 div.output_scroll div.output_subarea {
10067 overflow-x: visible;
10069 /* The rest of the output_* classes are for special styling of the different
10071 /* all text output has this class: */
10075 /* This has to match that of the the CodeMirror class line-height below */
10076 line-height: 1.21429em;
10078 /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
10079 div.output_stderr {
10081 /* very light red background for stderr */
10086 /* Empty output_javascript divs should have no height */
10087 div.output_javascript:empty {
10093 /* raw_input styles */
10094 div.raw_input_container {
10095 line-height: 1.21429em;
10098 pre.raw_input_prompt {
10099 /* nothing needed here. */
10102 font-family: monospace;
10103 font-size: inherit;
10106 /* make sure input baseline aligns with prompt */
10107 vertical-align: baseline;
10108 /* padding + margin = 0.5em between prompt and cursor */
10109 padding: 0em 0.25em;
10110 margin: 0em 0.25em;
10112 input.raw_input:focus {
10116 margin-bottom: 10px;
10118 div.output_unrecognized {
10123 div.output_unrecognized a {
10125 text-decoration: none;
10127 div.output_unrecognized a:hover {
10129 text-decoration: none;
10133 /* any extras will just be numbers: */
10135 .rendered_html em {
10136 font-style: italic;
10138 .rendered_html strong {
10142 text-decoration: underline;
10144 .rendered_html :link {
10145 text-decoration: underline;
10147 .rendered_html :visited {
10148 text-decoration: underline;
10150 .rendered_html h1 {
10152 margin: 1.08em 0 0 0;
10156 .rendered_html h2 {
10158 margin: 1.27em 0 0 0;
10162 .rendered_html h3 {
10164 margin: 1.55em 0 0 0;
10168 .rendered_html h4 {
10174 .rendered_html h5 {
10179 font-style: italic;
10181 .rendered_html h6 {
10186 font-style: italic;
10188 .rendered_html h1:first-child {
10189 margin-top: 0.538em;
10191 .rendered_html h2:first-child {
10192 margin-top: 0.636em;
10194 .rendered_html h3:first-child {
10195 margin-top: 0.777em;
10197 .rendered_html h4:first-child {
10200 .rendered_html h5:first-child {
10203 .rendered_html h6:first-child {
10206 .rendered_html ul {
10211 .rendered_html ul ul {
10212 list-style: square;
10215 .rendered_html ul ul ul {
10216 list-style: circle;
10219 .rendered_html ol {
10220 list-style: decimal;
10224 .rendered_html ol ol {
10225 list-style: upper-alpha;
10228 .rendered_html ol ol ol {
10229 list-style: lower-alpha;
10232 .rendered_html ol ol ol ol {
10233 list-style: lower-roman;
10236 .rendered_html ol ol ol ol ol {
10237 list-style: decimal;
10240 .rendered_html * + ul {
10243 .rendered_html * + ol {
10246 .rendered_html hr {
10248 background-color: black;
10250 .rendered_html pre {
10253 .rendered_html pre,
10254 .rendered_html code {
10256 background-color: #fff;
10261 .rendered_html blockquote {
10264 .rendered_html table {
10266 margin-right: auto;
10267 border: 1px solid black;
10268 border-collapse: collapse;
10272 .rendered_html td {
10273 border: 1px solid black;
10274 border-collapse: collapse;
10278 .rendered_html th {
10280 vertical-align: middle;
10283 .rendered_html th {
10286 .rendered_html * + table {
10292 .rendered_html * + p {
10295 .rendered_html img {
10298 margin-right: auto;
10300 .rendered_html * + img {
10303 .rendered_html img,
10304 .rendered_html svg {
10308 .rendered_html img.unconfined,
10309 .rendered_html svg.unconfined {
10314 display: -webkit-box;
10315 -webkit-box-orient: horizontal;
10316 -webkit-box-align: stretch;
10318 -moz-box-orient: horizontal;
10319 -moz-box-align: stretch;
10321 box-orient: horizontal;
10322 box-align: stretch;
10323 /* Modern browsers */
10325 flex-direction: row;
10326 align-items: stretch;
10328 @media (max-width: 540px) {
10329 div.text_cell > div.prompt {
10333 div.text_cell_render {
10334 /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
10338 border-style: none;
10339 padding: 0.5em 0.5em 0.5em 0.4em;
10341 box-sizing: border-box;
10342 -moz-box-sizing: border-box;
10343 -webkit-box-sizing: border-box;
10345 a.anchor-link:link {
10346 text-decoration: none;
10348 visibility: hidden;
10350 h1:hover .anchor-link,
10351 h2:hover .anchor-link,
10352 h3:hover .anchor-link,
10353 h4:hover .anchor-link,
10354 h5:hover .anchor-link,
10355 h6:hover .anchor-link {
10356 visibility: visible;
10358 .text_cell.rendered .input_area {
10361 .text_cell.rendered .rendered_html {
10363 overflow-y: hidden;
10365 .text_cell.unrendered .text_cell_render {
10375 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
10391 font-style: italic;
10395 font-style: italic;
10399 * IPython notebook webapp
10402 @media (max-width: 767px) {
10405 padding-right: 0px;
10408 #ipython-main-app {
10409 box-sizing: border-box;
10410 -moz-box-sizing: border-box;
10411 -webkit-box-sizing: border-box;
10414 div#notebook_panel {
10417 box-sizing: border-box;
10418 -moz-box-sizing: border-box;
10419 -webkit-box-sizing: border-box;
10425 overflow-y: hidden;
10428 /* This spaces the page away from the edge of the notebook area */
10432 box-sizing: border-box;
10433 -moz-box-sizing: border-box;
10434 -webkit-box-sizing: border-box;
10438 #notebook-container {
10440 background-color: #fff;
10442 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10443 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10447 #notebook-container {
10451 div.ui-widget-content {
10452 border: 1px solid #ababab;
10456 background-color: #f7f7f7;
10457 border: 1px solid #ddd;
10458 border-radius: 2px;
10465 /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
10466 to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
10472 white-space: pre-wrap;
10475 font-family: monospace;
10482 transition: height .2s ease;
10484 .notebook_app > #header {
10485 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10486 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
10490 background-color: #EEE;
10494 border-style: solid;
10499 padding-right: 2px;
10501 padding-bottom: 1px;
10503 /* CSS for the cell toolbar */
10505 border: thin solid #CFCFCF;
10506 border-bottom: none;
10508 border-radius: 2px 2px 0px 0px;
10511 padding-right: 4px;
10513 display: -webkit-box;
10514 -webkit-box-orient: horizontal;
10515 -webkit-box-align: stretch;
10517 -moz-box-orient: horizontal;
10518 -moz-box-align: stretch;
10520 box-orient: horizontal;
10521 box-align: stretch;
10522 /* Modern browsers */
10524 flex-direction: row;
10525 align-items: stretch;
10527 -webkit-box-pack: end;
10528 -moz-box-pack: end;
10530 /* Modern browsers */
10531 justify-content: flex-end;
10532 display: -webkit-flex;
10541 vertical-align: bottom;
10543 /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
10544 Cell toolbars are only shown when the ctb_global_show class is also set.
10546 .ctb_global_show .ctb_show.ctb_hideshow {
10549 .ctb_global_show .ctb_show + .input_area,
10550 .ctb_global_show .ctb_show + div.text_cell_input,
10551 .ctb_global_show .ctb_show ~ div.text_cell_render {
10552 border-top-right-radius: 0px;
10553 border-top-left-radius: 0px;
10555 .ctb_global_show .ctb_show ~ div.text_cell_render {
10556 border: 1px solid #cfcfcf;
10562 .celltoolbar select {
10568 line-height: 1.42857143;
10570 background-color: #fff;
10571 background-image: none;
10572 border: 1px solid #ccc;
10573 border-radius: 2px;
10574 -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10575 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
10576 -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10577 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10578 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
10583 border-radius: 1px;
10585 font-size: inherit;
10588 display: inline-block;
10590 .celltoolbar select:focus {
10591 border-color: #66afe9;
10593 -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10594 box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
10596 .celltoolbar select::-moz-placeholder {
10600 .celltoolbar select:-ms-input-placeholder {
10603 .celltoolbar select::-webkit-input-placeholder {
10606 .celltoolbar select::-ms-expand {
10608 background-color: transparent;
10610 .celltoolbar select[disabled],
10611 .celltoolbar select[readonly],
10612 fieldset[disabled] .celltoolbar select {
10613 background-color: #eeeeee;
10616 .celltoolbar select[disabled],
10617 fieldset[disabled] .celltoolbar select {
10618 cursor: not-allowed;
10620 textarea.celltoolbar select {
10623 select.celltoolbar select {
10627 textarea.celltoolbar select,
10628 select[multiple].celltoolbar select {
10631 .celltoolbar label {
10636 position: absolute;
10639 border: 1px solid #ababab;
10640 border-radius: 2px;
10641 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
10642 box-shadow: 0px 6px 10px -1px #adadad;
10645 .completions select {
10652 font-family: monospace;
10657 .completions select option.context {
10660 #kernel_logo_widget {
10661 float: right !important;
10664 #kernel_logo_widget .current_kernel_logo {
10667 margin-bottom: -1px;
10672 box-sizing: border-box;
10673 -moz-box-sizing: border-box;
10674 -webkit-box-sizing: border-box;
10679 border-radius: 0px 0px 2px 2px;
10680 margin-bottom: 0px;
10682 #menubar .navbar-toggle {
10685 padding-bottom: 7px;
10688 #menubar .navbar-collapse {
10692 border-bottom: 1px solid #e7e7e7;
10697 ul#help_menu li a {
10699 padding-right: 2.2em;
10701 ul#help_menu li a i {
10702 margin-right: -1.2em;
10704 .dropdown-submenu {
10705 position: relative;
10707 .dropdown-submenu > .dropdown-menu {
10713 .dropdown-submenu:hover > .dropdown-menu {
10716 .dropdown-submenu > a:after {
10717 display: inline-block;
10718 font: normal normal normal 14px/1 FontAwesome;
10719 font-size: inherit;
10720 text-rendering: auto;
10721 -webkit-font-smoothing: antialiased;
10722 -moz-osx-font-smoothing: grayscale;
10728 margin-right: -10px;
10730 .dropdown-submenu > a:after.pull-left {
10731 margin-right: .3em;
10733 .dropdown-submenu > a:after.pull-right {
10736 .dropdown-submenu:hover > a:after {
10739 .dropdown-submenu.pull-left {
10742 .dropdown-submenu.pull-left > .dropdown-menu {
10746 #notification_area {
10747 float: right !important;
10752 float: right !important;
10759 text-align: center;
10762 #kernel_indicator {
10763 float: right !important;
10770 text-align: center;
10772 border-left: 1px solid;
10774 #kernel_indicator .kernel_indicator_name {
10776 padding-right: 5px;
10779 float: right !important;
10786 text-align: center;
10789 #readonly-indicator {
10790 float: right !important;
10797 text-align: center;
10800 margin-bottom: 0px;
10805 .modal_indicator:before {
10806 width: 1.28571429em;
10807 text-align: center;
10809 .edit_mode .modal_indicator:before {
10810 display: inline-block;
10811 font: normal normal normal 14px/1 FontAwesome;
10812 font-size: inherit;
10813 text-rendering: auto;
10814 -webkit-font-smoothing: antialiased;
10815 -moz-osx-font-smoothing: grayscale;
10818 .edit_mode .modal_indicator:before.pull-left {
10819 margin-right: .3em;
10821 .edit_mode .modal_indicator:before.pull-right {
10824 .command_mode .modal_indicator:before {
10825 display: inline-block;
10826 font: normal normal normal 14px/1 FontAwesome;
10827 font-size: inherit;
10828 text-rendering: auto;
10829 -webkit-font-smoothing: antialiased;
10830 -moz-osx-font-smoothing: grayscale;
10833 .command_mode .modal_indicator:before.pull-left {
10834 margin-right: .3em;
10836 .command_mode .modal_indicator:before.pull-right {
10839 .kernel_idle_icon:before {
10840 display: inline-block;
10841 font: normal normal normal 14px/1 FontAwesome;
10842 font-size: inherit;
10843 text-rendering: auto;
10844 -webkit-font-smoothing: antialiased;
10845 -moz-osx-font-smoothing: grayscale;
10848 .kernel_idle_icon:before.pull-left {
10849 margin-right: .3em;
10851 .kernel_idle_icon:before.pull-right {
10854 .kernel_busy_icon:before {
10855 display: inline-block;
10856 font: normal normal normal 14px/1 FontAwesome;
10857 font-size: inherit;
10858 text-rendering: auto;
10859 -webkit-font-smoothing: antialiased;
10860 -moz-osx-font-smoothing: grayscale;
10863 .kernel_busy_icon:before.pull-left {
10864 margin-right: .3em;
10866 .kernel_busy_icon:before.pull-right {
10869 .kernel_dead_icon:before {
10870 display: inline-block;
10871 font: normal normal normal 14px/1 FontAwesome;
10872 font-size: inherit;
10873 text-rendering: auto;
10874 -webkit-font-smoothing: antialiased;
10875 -moz-osx-font-smoothing: grayscale;
10878 .kernel_dead_icon:before.pull-left {
10879 margin-right: .3em;
10881 .kernel_dead_icon:before.pull-right {
10884 .kernel_disconnected_icon:before {
10885 display: inline-block;
10886 font: normal normal normal 14px/1 FontAwesome;
10887 font-size: inherit;
10888 text-rendering: auto;
10889 -webkit-font-smoothing: antialiased;
10890 -moz-osx-font-smoothing: grayscale;
10893 .kernel_disconnected_icon:before.pull-left {
10894 margin-right: .3em;
10896 .kernel_disconnected_icon:before.pull-right {
10899 .notification_widget {
10902 background: rgba(240, 240, 240, 0.5);
10905 background-color: #fff;
10906 border-color: #ccc;
10908 .notification_widget:focus,
10909 .notification_widget.focus {
10911 background-color: #e6e6e6;
10912 border-color: #8c8c8c;
10914 .notification_widget:hover {
10916 background-color: #e6e6e6;
10917 border-color: #adadad;
10919 .notification_widget:active,
10920 .notification_widget.active,
10921 .open > .dropdown-toggle.notification_widget {
10923 background-color: #e6e6e6;
10924 border-color: #adadad;
10926 .notification_widget:active:hover,
10927 .notification_widget.active:hover,
10928 .open > .dropdown-toggle.notification_widget:hover,
10929 .notification_widget:active:focus,
10930 .notification_widget.active:focus,
10931 .open > .dropdown-toggle.notification_widget:focus,
10932 .notification_widget:active.focus,
10933 .notification_widget.active.focus,
10934 .open > .dropdown-toggle.notification_widget.focus {
10936 background-color: #d4d4d4;
10937 border-color: #8c8c8c;
10939 .notification_widget:active,
10940 .notification_widget.active,
10941 .open > .dropdown-toggle.notification_widget {
10942 background-image: none;
10944 .notification_widget.disabled:hover,
10945 .notification_widget[disabled]:hover,
10946 fieldset[disabled] .notification_widget:hover,
10947 .notification_widget.disabled:focus,
10948 .notification_widget[disabled]:focus,
10949 fieldset[disabled] .notification_widget:focus,
10950 .notification_widget.disabled.focus,
10951 .notification_widget[disabled].focus,
10952 fieldset[disabled] .notification_widget.focus {
10953 background-color: #fff;
10954 border-color: #ccc;
10956 .notification_widget .badge {
10958 background-color: #333;
10960 .notification_widget.warning {
10962 background-color: #f0ad4e;
10963 border-color: #eea236;
10965 .notification_widget.warning:focus,
10966 .notification_widget.warning.focus {
10968 background-color: #ec971f;
10969 border-color: #985f0d;
10971 .notification_widget.warning:hover {
10973 background-color: #ec971f;
10974 border-color: #d58512;
10976 .notification_widget.warning:active,
10977 .notification_widget.warning.active,
10978 .open > .dropdown-toggle.notification_widget.warning {
10980 background-color: #ec971f;
10981 border-color: #d58512;
10983 .notification_widget.warning:active:hover,
10984 .notification_widget.warning.active:hover,
10985 .open > .dropdown-toggle.notification_widget.warning:hover,
10986 .notification_widget.warning:active:focus,
10987 .notification_widget.warning.active:focus,
10988 .open > .dropdown-toggle.notification_widget.warning:focus,
10989 .notification_widget.warning:active.focus,
10990 .notification_widget.warning.active.focus,
10991 .open > .dropdown-toggle.notification_widget.warning.focus {
10993 background-color: #d58512;
10994 border-color: #985f0d;
10996 .notification_widget.warning:active,
10997 .notification_widget.warning.active,
10998 .open > .dropdown-toggle.notification_widget.warning {
10999 background-image: none;
11001 .notification_widget.warning.disabled:hover,
11002 .notification_widget.warning[disabled]:hover,
11003 fieldset[disabled] .notification_widget.warning:hover,
11004 .notification_widget.warning.disabled:focus,
11005 .notification_widget.warning[disabled]:focus,
11006 fieldset[disabled] .notification_widget.warning:focus,
11007 .notification_widget.warning.disabled.focus,
11008 .notification_widget.warning[disabled].focus,
11009 fieldset[disabled] .notification_widget.warning.focus {
11010 background-color: #f0ad4e;
11011 border-color: #eea236;
11013 .notification_widget.warning .badge {
11015 background-color: #fff;
11017 .notification_widget.success {
11019 background-color: #5cb85c;
11020 border-color: #4cae4c;
11022 .notification_widget.success:focus,
11023 .notification_widget.success.focus {
11025 background-color: #449d44;
11026 border-color: #255625;
11028 .notification_widget.success:hover {
11030 background-color: #449d44;
11031 border-color: #398439;
11033 .notification_widget.success:active,
11034 .notification_widget.success.active,
11035 .open > .dropdown-toggle.notification_widget.success {
11037 background-color: #449d44;
11038 border-color: #398439;
11040 .notification_widget.success:active:hover,
11041 .notification_widget.success.active:hover,
11042 .open > .dropdown-toggle.notification_widget.success:hover,
11043 .notification_widget.success:active:focus,
11044 .notification_widget.success.active:focus,
11045 .open > .dropdown-toggle.notification_widget.success:focus,
11046 .notification_widget.success:active.focus,
11047 .notification_widget.success.active.focus,
11048 .open > .dropdown-toggle.notification_widget.success.focus {
11050 background-color: #398439;
11051 border-color: #255625;
11053 .notification_widget.success:active,
11054 .notification_widget.success.active,
11055 .open > .dropdown-toggle.notification_widget.success {
11056 background-image: none;
11058 .notification_widget.success.disabled:hover,
11059 .notification_widget.success[disabled]:hover,
11060 fieldset[disabled] .notification_widget.success:hover,
11061 .notification_widget.success.disabled:focus,
11062 .notification_widget.success[disabled]:focus,
11063 fieldset[disabled] .notification_widget.success:focus,
11064 .notification_widget.success.disabled.focus,
11065 .notification_widget.success[disabled].focus,
11066 fieldset[disabled] .notification_widget.success.focus {
11067 background-color: #5cb85c;
11068 border-color: #4cae4c;
11070 .notification_widget.success .badge {
11072 background-color: #fff;
11074 .notification_widget.info {
11076 background-color: #5bc0de;
11077 border-color: #46b8da;
11079 .notification_widget.info:focus,
11080 .notification_widget.info.focus {
11082 background-color: #31b0d5;
11083 border-color: #1b6d85;
11085 .notification_widget.info:hover {
11087 background-color: #31b0d5;
11088 border-color: #269abc;
11090 .notification_widget.info:active,
11091 .notification_widget.info.active,
11092 .open > .dropdown-toggle.notification_widget.info {
11094 background-color: #31b0d5;
11095 border-color: #269abc;
11097 .notification_widget.info:active:hover,
11098 .notification_widget.info.active:hover,
11099 .open > .dropdown-toggle.notification_widget.info:hover,
11100 .notification_widget.info:active:focus,
11101 .notification_widget.info.active:focus,
11102 .open > .dropdown-toggle.notification_widget.info:focus,
11103 .notification_widget.info:active.focus,
11104 .notification_widget.info.active.focus,
11105 .open > .dropdown-toggle.notification_widget.info.focus {
11107 background-color: #269abc;
11108 border-color: #1b6d85;
11110 .notification_widget.info:active,
11111 .notification_widget.info.active,
11112 .open > .dropdown-toggle.notification_widget.info {
11113 background-image: none;
11115 .notification_widget.info.disabled:hover,
11116 .notification_widget.info[disabled]:hover,
11117 fieldset[disabled] .notification_widget.info:hover,
11118 .notification_widget.info.disabled:focus,
11119 .notification_widget.info[disabled]:focus,
11120 fieldset[disabled] .notification_widget.info:focus,
11121 .notification_widget.info.disabled.focus,
11122 .notification_widget.info[disabled].focus,
11123 fieldset[disabled] .notification_widget.info.focus {
11124 background-color: #5bc0de;
11125 border-color: #46b8da;
11127 .notification_widget.info .badge {
11129 background-color: #fff;
11131 .notification_widget.danger {
11133 background-color: #d9534f;
11134 border-color: #d43f3a;
11136 .notification_widget.danger:focus,
11137 .notification_widget.danger.focus {
11139 background-color: #c9302c;
11140 border-color: #761c19;
11142 .notification_widget.danger:hover {
11144 background-color: #c9302c;
11145 border-color: #ac2925;
11147 .notification_widget.danger:active,
11148 .notification_widget.danger.active,
11149 .open > .dropdown-toggle.notification_widget.danger {
11151 background-color: #c9302c;
11152 border-color: #ac2925;
11154 .notification_widget.danger:active:hover,
11155 .notification_widget.danger.active:hover,
11156 .open > .dropdown-toggle.notification_widget.danger:hover,
11157 .notification_widget.danger:active:focus,
11158 .notification_widget.danger.active:focus,
11159 .open > .dropdown-toggle.notification_widget.danger:focus,
11160 .notification_widget.danger:active.focus,
11161 .notification_widget.danger.active.focus,
11162 .open > .dropdown-toggle.notification_widget.danger.focus {
11164 background-color: #ac2925;
11165 border-color: #761c19;
11167 .notification_widget.danger:active,
11168 .notification_widget.danger.active,
11169 .open > .dropdown-toggle.notification_widget.danger {
11170 background-image: none;
11172 .notification_widget.danger.disabled:hover,
11173 .notification_widget.danger[disabled]:hover,
11174 fieldset[disabled] .notification_widget.danger:hover,
11175 .notification_widget.danger.disabled:focus,
11176 .notification_widget.danger[disabled]:focus,
11177 fieldset[disabled] .notification_widget.danger:focus,
11178 .notification_widget.danger.disabled.focus,
11179 .notification_widget.danger[disabled].focus,
11180 fieldset[disabled] .notification_widget.danger.focus {
11181 background-color: #d9534f;
11182 border-color: #d43f3a;
11184 .notification_widget.danger .badge {
11186 background-color: #fff;
11189 background-color: #fff;
11199 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11200 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11201 /* Display over codemirror */
11203 /* Hack which prevents jquery ui resizable from changing top. */
11204 top: auto !important;
11207 line-height: 1.21429em;
11209 background-color: #f7f7f7;
11212 div#pager #pager-button-area {
11213 position: absolute;
11217 div#pager #pager-contents {
11218 position: relative;
11223 div#pager #pager-contents #pager-container {
11224 position: relative;
11226 box-sizing: border-box;
11227 -moz-box-sizing: border-box;
11228 -webkit-box-sizing: border-box;
11230 div#pager .ui-resizable-handle {
11233 background: #f7f7f7;
11234 border-top: 1px solid #cfcfcf;
11235 border-bottom: 1px solid #cfcfcf;
11236 /* This injects handle bars (a short, wide = symbol) for
11237 the resize handle. */
11239 div#pager .ui-resizable-handle::after {
11245 margin-left: -15px;
11246 position: absolute;
11247 border-top: 1px solid #cfcfcf;
11251 display: -webkit-box;
11252 -webkit-box-orient: horizontal;
11253 -webkit-box-align: stretch;
11255 -moz-box-orient: horizontal;
11256 -moz-box-align: stretch;
11258 box-orient: horizontal;
11259 box-align: stretch;
11260 /* Modern browsers */
11262 flex-direction: row;
11263 align-items: stretch;
11264 line-height: 1.8em;
11267 display: inline-block;
11270 font-family: monospace;
11273 display: inline-block;
11275 -webkit-box-flex: 1;
11278 /* Modern browsers */
11284 span.save_widget span.filename {
11291 border-radius: 2px;
11293 span.save_widget span.filename:hover {
11294 background-color: #e6e6e6;
11296 span.checkpoint_status,
11297 span.autosave_status {
11300 @media (max-width: 767px) {
11304 span.checkpoint_status,
11305 span.autosave_status {
11309 @media (min-width: 768px) and (max-width: 991px) {
11310 span.checkpoint_status {
11313 span.autosave_status {
11314 font-size: x-small;
11321 margin-bottom: 5px;
11322 box-sizing: border-box;
11323 -moz-box-sizing: border-box;
11324 -webkit-box-sizing: border-box;
11329 vertical-align: middle;
11331 margin-bottom: 0px;
11334 margin-left: 0.3em;
11335 margin-right: 0.3em;
11342 .toolbar .btn-group {
11347 margin-bottom: -3px;
11353 padding-bottom: 3px;
11355 #maintoolbar .navbar-text {
11357 vertical-align: middle;
11367 .dropdown-menu > li > a.pulse,
11368 li.pulse > a.dropdown-toggle,
11369 li.pulse.open > a.dropdown-toggle {
11370 background-color: #F37626;
11376 * Author: Jupyter Development Team
11378 /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
11379 * of chance of beeing generated from the ../less/[samename].less file, you can
11380 * try to get back the less file by reverting somme commit in history
11383 * We'll try to get something pretty, so we
11384 * have some strange css to have the scroll bar on
11385 * the left with fix button on the top right of the tooltip
11387 @-moz-keyframes fadeOut {
11395 @-webkit-keyframes fadeOut {
11403 @-moz-keyframes fadeIn {
11411 @-webkit-keyframes fadeIn {
11419 /*properties of tooltip after "expand"*/
11423 -webkit-transition-property: height;
11424 -webkit-transition-duration: 500ms;
11425 -moz-transition-property: height;
11426 -moz-transition-duration: 500ms;
11427 transition-property: height;
11428 transition-duration: 500ms;
11430 /*properties of tooltip before "expand"*/
11432 -webkit-transition-property: height;
11433 -webkit-transition-duration: 500ms;
11434 -moz-transition-property: height;
11435 -moz-transition-duration: 500ms;
11436 transition-property: height;
11437 transition-duration: 500ms;
11438 text-overflow: ellipsis;
11443 position: absolute;
11444 padding-right: 15px;
11449 /*avoid the button to overlap on some docstring*/
11450 padding-right: 30px;
11454 /*fade-in animation when inserted*/
11455 -webkit-animation: fadeOut 400ms;
11456 -moz-animation: fadeOut 400ms;
11457 animation: fadeOut 400ms;
11458 -webkit-animation: fadeIn 400ms;
11459 -moz-animation: fadeIn 400ms;
11460 animation: fadeIn 400ms;
11461 vertical-align: middle;
11462 background-color: #f7f7f7;
11464 border: #ababab 1px solid;
11469 font-family: monospace;
11471 -moz-box-shadow: 0px 6px 10px -1px #adadad;
11472 -webkit-box-shadow: 0px 6px 10px -1px #adadad;
11473 box-shadow: 0px 6px 10px -1px #adadad;
11474 border-radius: 2px;
11475 position: absolute;
11478 .ipython_tooltip a {
11481 .ipython_tooltip .tooltiptext pre {
11485 background-color: #f7f7f7;
11494 position: absolute;
11496 .pretooltiparrow:before {
11497 background-color: #f7f7f7;
11498 border: 1px #ababab solid;
11501 position: absolute;
11506 -webkit-transform: rotate(45deg);
11507 -moz-transform: rotate(45deg);
11508 -ms-transform: rotate(45deg);
11509 -o-transform: rotate(45deg);
11511 ul.typeahead-list i {
11512 margin-left: -10px;
11515 ul.typeahead-list {
11519 ul.typeahead-list > li > a {
11520 /** Firefox bug **/
11521 /* see https://github.com/jupyter/notebook/issues/559 */
11522 white-space: normal;
11524 .cmd-palette .modal-body {
11527 .cmd-palette form {
11530 .cmd-palette input {
11536 .command-shortcut:before {
11537 content: "(command)";
11538 padding-right: 3px;
11541 .edit-shortcut:before {
11543 padding-right: 3px;
11546 #find-and-replace #replace-preview .match,
11547 #find-and-replace #replace-preview .insert {
11548 background-color: #BBDEFB;
11549 border-color: #90CAF9;
11550 border-style: solid;
11552 border-radius: 0px;
11554 #find-and-replace #replace-preview .replace .match {
11555 background-color: #FFCDD2;
11556 border-color: #EF9A9A;
11557 border-radius: 0px;
11559 #find-and-replace #replace-preview .replace .insert {
11560 background-color: #C8E6C9;
11561 border-color: #A5D6A7;
11562 border-radius: 0px;
11564 #find-and-replace #replace-preview {
11568 #find-and-replace #replace-preview pre {
11574 .terminal-app #header {
11576 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11577 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
11579 .terminal-app .terminal {
11582 font-family: monospace;
11586 border-radius: 2px;
11587 -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11588 box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
11590 .terminal-app .terminal,
11591 .terminal-app .terminal dummy-screen {
11595 .terminal-app .terminal .xterm-rows {
11598 .terminal-app .terminal-cursor {
11602 .terminal-app #terminado-container {
11605 /*# sourceMappingURL=style.min.css.map */
11607 <style type="text/css">
11608 .highlight .hll { background-color: #ffffcc }
11609 .highlight { background: #f8f8f8; }
11610 .highlight .c { color: #408080; font-style: italic } /* Comment */
11611 .highlight .err { border: 1px solid #FF0000 } /* Error */
11612 .highlight .k { color: #008000; font-weight: bold } /* Keyword */
11613 .highlight .o { color: #666666 } /* Operator */
11614 .highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
11615 .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
11616 .highlight .cp { color: #BC7A00 } /* Comment.Preproc */
11617 .highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
11618 .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
11619 .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
11620 .highlight .gd { color: #A00000 } /* Generic.Deleted */
11621 .highlight .ge { font-style: italic } /* Generic.Emph */
11622 .highlight .gr { color: #FF0000 } /* Generic.Error */
11623 .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
11624 .highlight .gi { color: #00A000 } /* Generic.Inserted */
11625 .highlight .go { color: #888888 } /* Generic.Output */
11626 .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
11627 .highlight .gs { font-weight: bold } /* Generic.Strong */
11628 .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
11629 .highlight .gt { color: #0044DD } /* Generic.Traceback */
11630 .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
11631 .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
11632 .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
11633 .highlight .kp { color: #008000 } /* Keyword.Pseudo */
11634 .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
11635 .highlight .kt { color: #B00040 } /* Keyword.Type */
11636 .highlight .m { color: #666666 } /* Literal.Number */
11637 .highlight .s { color: #BA2121 } /* Literal.String */
11638 .highlight .na { color: #7D9029 } /* Name.Attribute */
11639 .highlight .nb { color: #008000 } /* Name.Builtin */
11640 .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
11641 .highlight .no { color: #880000 } /* Name.Constant */
11642 .highlight .nd { color: #AA22FF } /* Name.Decorator */
11643 .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
11644 .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
11645 .highlight .nf { color: #0000FF } /* Name.Function */
11646 .highlight .nl { color: #A0A000 } /* Name.Label */
11647 .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
11648 .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
11649 .highlight .nv { color: #19177C } /* Name.Variable */
11650 .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
11651 .highlight .w { color: #bbbbbb } /* Text.Whitespace */
11652 .highlight .mb { color: #666666 } /* Literal.Number.Bin */
11653 .highlight .mf { color: #666666 } /* Literal.Number.Float */
11654 .highlight .mh { color: #666666 } /* Literal.Number.Hex */
11655 .highlight .mi { color: #666666 } /* Literal.Number.Integer */
11656 .highlight .mo { color: #666666 } /* Literal.Number.Oct */
11657 .highlight .sa { color: #BA2121 } /* Literal.String.Affix */
11658 .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
11659 .highlight .sc { color: #BA2121 } /* Literal.String.Char */
11660 .highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
11661 .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
11662 .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
11663 .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
11664 .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
11665 .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
11666 .highlight .sx { color: #008000 } /* Literal.String.Other */
11667 .highlight .sr { color: #BB6688 } /* Literal.String.Regex */
11668 .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
11669 .highlight .ss { color: #19177C } /* Literal.String.Symbol */
11670 .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
11671 .highlight .fm { color: #0000FF } /* Name.Function.Magic */
11672 .highlight .vc { color: #19177C } /* Name.Variable.Class */
11673 .highlight .vg { color: #19177C } /* Name.Variable.Global */
11674 .highlight .vi { color: #19177C } /* Name.Variable.Instance */
11675 .highlight .vm { color: #19177C } /* Name.Variable.Magic */
11676 .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
11678 <style type="text/css">
11680 /* Temporary definitions which will become obsolete with Notebook release 5.0 */
11681 .ansi-black-fg { color: #3E424D; }
11682 .ansi-black-bg { background-color: #3E424D; }
11683 .ansi-black-intense-fg { color: #282C36; }
11684 .ansi-black-intense-bg { background-color: #282C36; }
11685 .ansi-red-fg { color: #E75C58; }
11686 .ansi-red-bg { background-color: #E75C58; }
11687 .ansi-red-intense-fg { color: #B22B31; }
11688 .ansi-red-intense-bg { background-color: #B22B31; }
11689 .ansi-green-fg { color: #00A250; }
11690 .ansi-green-bg { background-color: #00A250; }
11691 .ansi-green-intense-fg { color: #007427; }
11692 .ansi-green-intense-bg { background-color: #007427; }
11693 .ansi-yellow-fg { color: #DDB62B; }
11694 .ansi-yellow-bg { background-color: #DDB62B; }
11695 .ansi-yellow-intense-fg { color: #B27D12; }
11696 .ansi-yellow-intense-bg { background-color: #B27D12; }
11697 .ansi-blue-fg { color: #208FFB; }
11698 .ansi-blue-bg { background-color: #208FFB; }
11699 .ansi-blue-intense-fg { color: #0065CA; }
11700 .ansi-blue-intense-bg { background-color: #0065CA; }
11701 .ansi-magenta-fg { color: #D160C4; }
11702 .ansi-magenta-bg { background-color: #D160C4; }
11703 .ansi-magenta-intense-fg { color: #A03196; }
11704 .ansi-magenta-intense-bg { background-color: #A03196; }
11705 .ansi-cyan-fg { color: #60C6C8; }
11706 .ansi-cyan-bg { background-color: #60C6C8; }
11707 .ansi-cyan-intense-fg { color: #258F8F; }
11708 .ansi-cyan-intense-bg { background-color: #258F8F; }
11709 .ansi-white-fg { color: #C5C1B4; }
11710 .ansi-white-bg { background-color: #C5C1B4; }
11711 .ansi-white-intense-fg { color: #A1A6B2; }
11712 .ansi-white-intense-bg { background-color: #A1A6B2; }
11714 .ansi-bold { font-weight: bold; }
11719 <style type="text/css">
11720 /* Overrides of notebook CSS for static HTML export */
11732 page-break-inside: avoid;
11734 div.output_wrapper {
11736 page-break-inside: avoid;
11740 page-break-inside: avoid;
11745 <!-- Custom stylesheet, it must be in the same directory as the html file -->
11746 <link rel="stylesheet" href="custom.css">
11748 <!-- Loading mathjax macro -->
11749 <!-- Load mathjax -->
11750 <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_HTML"></script>
11751 <!-- MathJax configuration -->
11752 <script type="text/x-mathjax-config">
11753 MathJax.Hub.Config({
11755 inlineMath: [ ['$','$'], ["\\(","\\)"] ],
11756 displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
11757 processEscapes: true,
11758 processEnvironments: true
11760 // Center justify equations in code and markdown cells. Elsewhere
11761 // we use CSS to left justify single line equations in code cells.
11762 displayAlign: 'center',
11764 styles: {'.MathJax_Display': {"margin": 0}},
11765 linebreaks: { automatic: true }
11769 <!-- End of mathjax configuration --></head>
11771 <div tabindex="-1" id="notebook" class="border-box-sizing">
11772 <div class="container" id="notebook-container">
11774 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11776 <div class="inner_cell">
11777 <div class="text_cell_render border-box-sizing rendered_html">
11778 <h1 id="Advent-of-Code-2017">Advent of Code 2017<a class="anchor-link" href="#Advent-of-Code-2017">¶</a></h1><h2 id="December-3rd">December 3rd<a class="anchor-link" href="#December-3rd">¶</a></h2><p>You come across an experimental new kind of memory stored on an infinite two-dimensional grid.</p>
11779 <p>Each square on the grid is allocated in a spiral pattern starting at a location marked 1 and then counting up while spiraling outward. For example, the first few squares are allocated like this:</p>
11781 <pre><code>17 16 15 14 13
11785 21 22 23---> ...
11788 <p>While this is very space-efficient (no squares are skipped), requested data must be carried back to square 1 (the location of the only access port for this memory system) by programs that can only move up, down, left, or right. They always take the shortest path: the Manhattan Distance between the location of the data and square 1.</p>
11789 <p>For example:</p>
11791 <li>Data from square 1 is carried 0 steps, since it's at the access port.</li>
11792 <li>Data from square 12 is carried 3 steps, such as: down, left, left.</li>
11793 <li>Data from square 23 is carried only 2 steps: up twice.</li>
11794 <li>Data from square 1024 must be carried 31 steps.</li>
11796 <p>How many steps are required to carry the data from the square identified in your puzzle input all the way to the access port?</p>
11801 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11803 <div class="inner_cell">
11804 <div class="text_cell_render border-box-sizing rendered_html">
11805 <h3 id="Analysis">Analysis<a class="anchor-link" href="#Analysis">¶</a></h3><p>I freely admit that I worked out the program I wanted to write using graph paper and some Python doodles. There's no point in trying to write a Joy program until I'm sure I understand the problem well enough.</p>
11806 <p>The first thing I did was to write a column of numbers from 1 to n (32 as it happens) and next to them the desired output number, to look for patterns directly:</p>
11844 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11846 <div class="inner_cell">
11847 <div class="text_cell_render border-box-sizing rendered_html">
11848 <p>There are four groups repeating for a given "rank", then the pattern enlarges and four groups repeat again, etc.</p>
11854 9 8 7 6 5 6 7 8 9 10
11857 <p>Four of this pyramid interlock to tile the plane extending from the initial "1" square.</p>
11859 <pre><code> 2 3 | 4 5 | 6 7 | 8 9
11860 10 11 12 13|14 15 16 17|18 19 20 21|22 23 24 25
11868 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11870 <div class="inner_cell">
11871 <div class="text_cell_render border-box-sizing rendered_html">
11872 <p>We can figure out the pattern for a row of the pyramid at a given "rank" $k$:</p>
11873 <p>$2k - 1, 2k - 2, ..., k, k + 1, k + 2, ..., 2k$</p>
11875 <p>$k + (k - 1), k + (k - 2), ..., k, k + 1, k + 2, ..., k + k$</p>
11876 <p>This shows that the series consists at each place of $k$ plus some number that begins at $k - 1$, decreases to zero, then increases to $k$. Each row has $2k$ members.</p>
11881 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11883 <div class="inner_cell">
11884 <div class="text_cell_render border-box-sizing rendered_html">
11885 <p>Let's figure out how, given an index into a row, we can calculate the value there. The index will be from 0 to $k - 1$.</p>
11886 <p>Let's look at an example, with $k = 4$:</p>
11888 <pre><code>0 1 2 3 4 5 6 7
11889 7 6 5 4 5 6 7 8</code></pre>
11894 <div class="cell border-box-sizing code_cell rendered">
11895 <div class="input">
11896 <div class="prompt input_prompt">In [1]:</div>
11897 <div class="inner_cell">
11898 <div class="input_area">
11899 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">k</span> <span class="o">=</span> <span class="mi">4</span>
11907 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11909 <div class="inner_cell">
11910 <div class="text_cell_render border-box-sizing rendered_html">
11911 <p>Subtract $k$ from the index and take the absolute value:</p>
11916 <div class="cell border-box-sizing code_cell rendered">
11917 <div class="input">
11918 <div class="prompt input_prompt">In [2]:</div>
11919 <div class="inner_cell">
11920 <div class="input_area">
11921 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">):</span>
11922 <span class="k">print</span> <span class="nb">abs</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="n">k</span><span class="p">),</span>
11929 <div class="output_wrapper">
11930 <div class="output">
11933 <div class="output_area">
11935 <div class="prompt"></div>
11938 <div class="output_subarea output_stream output_stdout output_text">
11939 <pre>4 3 2 1 0 1 2 3
11948 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11950 <div class="inner_cell">
11951 <div class="text_cell_render border-box-sizing rendered_html">
11952 <p>Not quite. Subtract $k - 1$ from the index and take the absolute value:</p>
11957 <div class="cell border-box-sizing code_cell rendered">
11958 <div class="input">
11959 <div class="prompt input_prompt">In [3]:</div>
11960 <div class="inner_cell">
11961 <div class="input_area">
11962 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">):</span>
11963 <span class="k">print</span> <span class="nb">abs</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)),</span>
11970 <div class="output_wrapper">
11971 <div class="output">
11974 <div class="output_area">
11976 <div class="prompt"></div>
11979 <div class="output_subarea output_stream output_stdout output_text">
11980 <pre>3 2 1 0 1 2 3 4
11989 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
11991 <div class="inner_cell">
11992 <div class="text_cell_render border-box-sizing rendered_html">
11993 <p>Great, now add $k$...</p>
11998 <div class="cell border-box-sizing code_cell rendered">
11999 <div class="input">
12000 <div class="prompt input_prompt">In [4]:</div>
12001 <div class="inner_cell">
12002 <div class="input_area">
12003 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">):</span>
12004 <span class="k">print</span> <span class="nb">abs</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">+</span> <span class="n">k</span><span class="p">,</span>
12011 <div class="output_wrapper">
12012 <div class="output">
12015 <div class="output_area">
12017 <div class="prompt"></div>
12020 <div class="output_subarea output_stream output_stdout output_text">
12021 <pre>7 6 5 4 5 6 7 8
12030 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12032 <div class="inner_cell">
12033 <div class="text_cell_render border-box-sizing rendered_html">
12034 <p>So to write a function that can give us the value of a row at a given index:</p>
12039 <div class="cell border-box-sizing code_cell rendered">
12040 <div class="input">
12041 <div class="prompt input_prompt">In [5]:</div>
12042 <div class="inner_cell">
12043 <div class="input_area">
12044 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
12045 <span class="n">i</span> <span class="o">%=</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">)</span> <span class="c1"># wrap the index at the row boundary.</span>
12046 <span class="k">return</span> <span class="nb">abs</span><span class="p">(</span><span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">+</span> <span class="n">k</span>
12054 <div class="cell border-box-sizing code_cell rendered">
12055 <div class="input">
12056 <div class="prompt input_prompt">In [6]:</div>
12057 <div class="inner_cell">
12058 <div class="input_area">
12059 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">k</span> <span class="o">=</span> <span class="mi">5</span>
12060 <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">):</span>
12061 <span class="k">print</span> <span class="n">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">),</span>
12068 <div class="output_wrapper">
12069 <div class="output">
12072 <div class="output_area">
12074 <div class="prompt"></div>
12077 <div class="output_subarea output_stream output_stdout output_text">
12078 <pre>9 8 7 6 5 6 7 8 9 10
12087 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12089 <div class="inner_cell">
12090 <div class="text_cell_render border-box-sizing rendered_html">
12091 <p>(I'm leaving out details of how I figured this all out and just giving the relevent bits. It took a little while to zero in of the aspects of the pattern that were important for the task.)</p>
12096 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12098 <div class="inner_cell">
12099 <div class="text_cell_render border-box-sizing rendered_html">
12100 <h3 id="Finding-the-rank-and-offset-of-a-number.">Finding the rank and offset of a number.<a class="anchor-link" href="#Finding-the-rank-and-offset-of-a-number.">¶</a></h3><p>Now that we can compute the desired output value for a given rank and the offset (index) into that rank, we need to determine how to find the rank and offset of a number.</p>
12101 <p>The rank is easy to find by iteratively stripping off the amount already covered by previous ranks until you find the one that brackets the target number. Because each row is $2k$ places and there are $4$ per rank each rank contains $8k$ places. Counting the initial square we have:</p>
12102 <p>$corner_k = 1 + \sum_{n=1}^k 8n$</p>
12103 <p>I'm not mathematically sophisticated enough to turn this directly into a formula (but Sympy is, see below.) I'm going to write a simple Python function to iterate and search:</p>
12108 <div class="cell border-box-sizing code_cell rendered">
12109 <div class="input">
12110 <div class="prompt input_prompt">In [7]:</div>
12111 <div class="inner_cell">
12112 <div class="input_area">
12113 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">rank_and_offset</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
12114 <span class="k">assert</span> <span class="n">n</span> <span class="o">>=</span> <span class="mi">2</span> <span class="c1"># Guard the domain.</span>
12115 <span class="n">n</span> <span class="o">-=</span> <span class="mi">2</span> <span class="c1"># Subtract two,</span>
12116 <span class="c1"># one for the initial square,</span>
12117 <span class="c1"># and one because we are counting from 1 instead of 0.</span>
12118 <span class="n">k</span> <span class="o">=</span> <span class="mi">1</span>
12119 <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
12120 <span class="n">m</span> <span class="o">=</span> <span class="mi">8</span> <span class="o">*</span> <span class="n">k</span> <span class="c1"># The number of places total in this rank, 4(2k).</span>
12121 <span class="k">if</span> <span class="n">n</span> <span class="o"><</span> <span class="n">m</span><span class="p">:</span>
12122 <span class="k">return</span> <span class="n">k</span><span class="p">,</span> <span class="n">n</span> <span class="o">%</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">)</span>
12123 <span class="n">n</span> <span class="o">-=</span> <span class="n">m</span> <span class="c1"># Remove this rank's worth.</span>
12124 <span class="n">k</span> <span class="o">+=</span> <span class="mi">1</span>
12132 <div class="cell border-box-sizing code_cell rendered">
12133 <div class="input">
12134 <div class="prompt input_prompt">In [8]:</div>
12135 <div class="inner_cell">
12136 <div class="input_area">
12137 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">51</span><span class="p">):</span>
12138 <span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="n">rank_and_offset</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
12145 <div class="output_wrapper">
12146 <div class="output">
12149 <div class="output_area">
12151 <div class="prompt"></div>
12154 <div class="output_subarea output_stream output_stdout output_text">
12212 <div class="cell border-box-sizing code_cell rendered">
12213 <div class="input">
12214 <div class="prompt input_prompt">In [9]:</div>
12215 <div class="inner_cell">
12216 <div class="input_area">
12217 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">51</span><span class="p">):</span>
12218 <span class="n">k</span><span class="p">,</span> <span class="n">i</span> <span class="o">=</span> <span class="n">rank_and_offset</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
12219 <span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="n">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
12226 <div class="output_wrapper">
12227 <div class="output">
12230 <div class="output_area">
12232 <div class="prompt"></div>
12235 <div class="output_subarea output_stream output_stdout output_text">
12293 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12295 <div class="inner_cell">
12296 <div class="text_cell_render border-box-sizing rendered_html">
12297 <h3 id="Putting-it-all-together">Putting it all together<a class="anchor-link" href="#Putting-it-all-together">¶</a></h3>
12301 <div class="cell border-box-sizing code_cell rendered">
12302 <div class="input">
12303 <div class="prompt input_prompt">In [10]:</div>
12304 <div class="inner_cell">
12305 <div class="input_area">
12306 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
12307 <span class="k">return</span> <span class="nb">abs</span><span class="p">(</span><span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">+</span> <span class="n">k</span>
12310 <span class="k">def</span> <span class="nf">rank_and_offset</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
12311 <span class="n">n</span> <span class="o">-=</span> <span class="mi">2</span> <span class="c1"># Subtract two,</span>
12312 <span class="c1"># one for the initial square,</span>
12313 <span class="c1"># and one because we are counting from 1 instead of 0.</span>
12314 <span class="n">k</span> <span class="o">=</span> <span class="mi">1</span>
12315 <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
12316 <span class="n">m</span> <span class="o">=</span> <span class="mi">8</span> <span class="o">*</span> <span class="n">k</span> <span class="c1"># The number of places total in this rank, 4(2k).</span>
12317 <span class="k">if</span> <span class="n">n</span> <span class="o"><</span> <span class="n">m</span><span class="p">:</span>
12318 <span class="k">return</span> <span class="n">k</span><span class="p">,</span> <span class="n">n</span> <span class="o">%</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">)</span>
12319 <span class="n">n</span> <span class="o">-=</span> <span class="n">m</span> <span class="c1"># Remove this rank's worth.</span>
12320 <span class="n">k</span> <span class="o">+=</span> <span class="mi">1</span>
12323 <span class="k">def</span> <span class="nf">aoc20173</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
12324 <span class="k">if</span> <span class="n">n</span> <span class="o"><=</span> <span class="mi">1</span><span class="p">:</span>
12325 <span class="k">return</span> <span class="mi">0</span>
12326 <span class="n">k</span><span class="p">,</span> <span class="n">i</span> <span class="o">=</span> <span class="n">rank_and_offset</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
12327 <span class="k">return</span> <span class="n">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
12335 <div class="cell border-box-sizing code_cell rendered">
12336 <div class="input">
12337 <div class="prompt input_prompt">In [11]:</div>
12338 <div class="inner_cell">
12339 <div class="input_area">
12340 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23</span><span class="p">)</span>
12347 <div class="output_wrapper">
12348 <div class="output">
12351 <div class="output_area">
12353 <div class="prompt output_prompt">Out[11]:</div>
12358 <div class="output_text output_subarea output_execute_result">
12368 <div class="cell border-box-sizing code_cell rendered">
12369 <div class="input">
12370 <div class="prompt input_prompt">In [12]:</div>
12371 <div class="inner_cell">
12372 <div class="input_area">
12373 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23000</span><span class="p">)</span>
12380 <div class="output_wrapper">
12381 <div class="output">
12384 <div class="output_area">
12386 <div class="prompt output_prompt">Out[12]:</div>
12391 <div class="output_text output_subarea output_execute_result">
12401 <div class="cell border-box-sizing code_cell rendered">
12402 <div class="input">
12403 <div class="prompt input_prompt">In [13]:</div>
12404 <div class="inner_cell">
12405 <div class="input_area">
12406 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23000000000000</span><span class="p">)</span>
12413 <div class="output_wrapper">
12414 <div class="output">
12417 <div class="output_area">
12419 <div class="prompt output_prompt">Out[13]:</div>
12424 <div class="output_text output_subarea output_execute_result">
12434 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12436 <div class="inner_cell">
12437 <div class="text_cell_render border-box-sizing rendered_html">
12438 <h1 id="Sympy-to-the-Rescue">Sympy to the Rescue<a class="anchor-link" href="#Sympy-to-the-Rescue">¶</a></h1><h3 id="Find-the-rank-for-large-numbers">Find the rank for large numbers<a class="anchor-link" href="#Find-the-rank-for-large-numbers">¶</a></h3><p>Using e.g. Sympy we can find the rank directly by solving for the roots of an equation. For large numbers this will (eventually) be faster than iterating as <code>rank_and_offset()</code> does.</p>
12443 <div class="cell border-box-sizing code_cell rendered">
12444 <div class="input">
12445 <div class="prompt input_prompt">In [14]:</div>
12446 <div class="inner_cell">
12447 <div class="input_area">
12448 <div class=" highlight hl-ipython2"><pre><span></span><span class="kn">from</span> <span class="nn">sympy</span> <span class="kn">import</span> <span class="n">floor</span><span class="p">,</span> <span class="n">lambdify</span><span class="p">,</span> <span class="n">solve</span><span class="p">,</span> <span class="n">symbols</span>
12449 <span class="kn">from</span> <span class="nn">sympy</span> <span class="kn">import</span> <span class="n">init_printing</span>
12450 <span class="n">init_printing</span><span class="p">()</span>
12458 <div class="cell border-box-sizing code_cell rendered">
12459 <div class="input">
12460 <div class="prompt input_prompt">In [15]:</div>
12461 <div class="inner_cell">
12462 <div class="input_area">
12463 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">k</span> <span class="o">=</span> <span class="n">symbols</span><span class="p">(</span><span class="s1">'k'</span><span class="p">)</span>
12471 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12473 <div class="inner_cell">
12474 <div class="text_cell_render border-box-sizing rendered_html">
12476 <p>$1 + 2 + 3 + ... + N = \frac{N(N + 1)}{2}$</p>
12478 <p>$\sum_{n=1}^k 8n = 8(\sum_{n=1}^k n) = 8\frac{k(k + 1)}{2}$</p>
12484 <div class="cell border-box-sizing code_cell rendered">
12485 <div class="input">
12486 <div class="prompt input_prompt">In [16]:</div>
12487 <div class="inner_cell">
12488 <div class="input_area">
12489 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">E</span> <span class="o">=</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">8</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">k</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="c1"># For the reason for adding 2 see above.</span>
12491 <span class="n">E</span>
12498 <div class="output_wrapper">
12499 <div class="output">
12502 <div class="output_area">
12504 <div class="prompt output_prompt">Out[16]:</div>
12509 <div class="output_latex output_subarea output_execute_result">
12510 $$4 k \left(k + 1\right) + 2$$
12519 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12521 <div class="inner_cell">
12522 <div class="text_cell_render border-box-sizing rendered_html">
12523 <p>We can write a function to solve for $k$ given some $n$...</p>
12528 <div class="cell border-box-sizing code_cell rendered">
12529 <div class="input">
12530 <div class="prompt input_prompt">In [17]:</div>
12531 <div class="inner_cell">
12532 <div class="input_area">
12533 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">rank_of</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
12534 <span class="k">return</span> <span class="n">floor</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">solve</span><span class="p">(</span><span class="n">E</span> <span class="o">-</span> <span class="n">n</span><span class="p">,</span> <span class="n">k</span><span class="p">)))</span> <span class="o">+</span> <span class="mi">1</span>
12542 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12544 <div class="inner_cell">
12545 <div class="text_cell_render border-box-sizing rendered_html">
12546 <p>First <code>solve()</code> for $E - n = 0$ which has two solutions (because the equation is quadratic so it has two roots) and since we only care about the larger one we use <code>max()</code> to select it. It will generally not be a nice integer (unless $n$ is the number of an end-corner of a rank) so we take the <code>floor()</code> and add 1 to get the integer rank of $n$. (Taking the <code>ceiling()</code> gives off-by-one errors on the rank boundaries. I don't know why. I'm basically like a monkey doing math here.) =-D</p>
12547 <p>It gives correct answers:</p>
12552 <div class="cell border-box-sizing code_cell rendered">
12553 <div class="input">
12554 <div class="prompt input_prompt">In [18]:</div>
12555 <div class="inner_cell">
12556 <div class="input_area">
12557 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">25</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="mi">49</span><span class="p">,</span> <span class="mi">50</span><span class="p">):</span>
12558 <span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="n">rank_of</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
12565 <div class="output_wrapper">
12566 <div class="output">
12569 <div class="output_area">
12571 <div class="prompt"></div>
12574 <div class="output_subarea output_stream output_stdout output_text">
12589 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12591 <div class="inner_cell">
12592 <div class="text_cell_render border-box-sizing rendered_html">
12593 <p>And it runs much faster (at least for large numbers):</p>
12598 <div class="cell border-box-sizing code_cell rendered">
12599 <div class="input">
12600 <div class="prompt input_prompt">In [19]:</div>
12601 <div class="inner_cell">
12602 <div class="input_area">
12603 <div class=" highlight hl-ipython2"><pre><span></span><span class="o">%</span><span class="k">time</span> rank_of(23000000000000) # Compare runtime with rank_and_offset()!
12610 <div class="output_wrapper">
12611 <div class="output">
12614 <div class="output_area">
12616 <div class="prompt"></div>
12619 <div class="output_subarea output_stream output_stdout output_text">
12620 <pre>CPU times: user 68 ms, sys: 8 ms, total: 76 ms
12626 <div class="output_area">
12628 <div class="prompt output_prompt">Out[19]:</div>
12633 <div class="output_latex output_subarea output_execute_result">
12643 <div class="cell border-box-sizing code_cell rendered">
12644 <div class="input">
12645 <div class="prompt input_prompt">In [20]:</div>
12646 <div class="inner_cell">
12647 <div class="input_area">
12648 <div class=" highlight hl-ipython2"><pre><span></span><span class="o">%</span><span class="k">time</span> rank_and_offset(23000000000000)
12655 <div class="output_wrapper">
12656 <div class="output">
12659 <div class="output_area">
12661 <div class="prompt"></div>
12664 <div class="output_subarea output_stream output_stdout output_text">
12665 <pre>CPU times: user 308 ms, sys: 0 ns, total: 308 ms
12671 <div class="output_area">
12673 <div class="prompt output_prompt">Out[20]:</div>
12678 <div class="output_latex output_subarea output_execute_result">
12679 $$\left ( 2397916, \quad 223606\right )$$
12688 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12690 <div class="inner_cell">
12691 <div class="text_cell_render border-box-sizing rendered_html">
12692 <p>After finding the rank you would still have to find the actual value of the rank's first corner and subtract it (plus 2) from the number and compute the offset as above and then the final output, but this overhead is partially shared by the other method, and overshadowed by the time it (the other iterative method) would take for really big inputs.</p>
12693 <p>The fun thing to do here would be to graph the actual runtime of both methods against each other to find the trade-off point.</p>
12698 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12700 <div class="inner_cell">
12701 <div class="text_cell_render border-box-sizing rendered_html">
12702 <h3 id="It-took-me-a-second-to-realize-I-could-do-this...">It took me a second to realize I could do this...<a class="anchor-link" href="#It-took-me-a-second-to-realize-I-could-do-this...">¶</a></h3><p>Sympy is a <em>symbolic</em> math library, and it supports symbolic manipulation of equations. I can put in $y$ (instead of a value) and ask it to solve for $k$.</p>
12707 <div class="cell border-box-sizing code_cell rendered">
12708 <div class="input">
12709 <div class="prompt input_prompt">In [21]:</div>
12710 <div class="inner_cell">
12711 <div class="input_area">
12712 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">y</span> <span class="o">=</span> <span class="n">symbols</span><span class="p">(</span><span class="s1">'y'</span><span class="p">)</span>
12720 <div class="cell border-box-sizing code_cell rendered">
12721 <div class="input">
12722 <div class="prompt input_prompt">In [22]:</div>
12723 <div class="inner_cell">
12724 <div class="input_area">
12725 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">g</span><span class="p">,</span> <span class="n">f</span> <span class="o">=</span> <span class="n">solve</span><span class="p">(</span><span class="n">E</span> <span class="o">-</span> <span class="n">y</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
12733 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12735 <div class="inner_cell">
12736 <div class="text_cell_render border-box-sizing rendered_html">
12737 <p>The equation is quadratic so there are two roots, we are interested in the greater one...</p>
12742 <div class="cell border-box-sizing code_cell rendered">
12743 <div class="input">
12744 <div class="prompt input_prompt">In [23]:</div>
12745 <div class="inner_cell">
12746 <div class="input_area">
12747 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">g</span>
12754 <div class="output_wrapper">
12755 <div class="output">
12758 <div class="output_area">
12760 <div class="prompt output_prompt">Out[23]:</div>
12765 <div class="output_latex output_subarea output_execute_result">
12766 $$- \frac{1}{2} \sqrt{y - 1} - \frac{1}{2}$$
12775 <div class="cell border-box-sizing code_cell rendered">
12776 <div class="input">
12777 <div class="prompt input_prompt">In [24]:</div>
12778 <div class="inner_cell">
12779 <div class="input_area">
12780 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">f</span>
12787 <div class="output_wrapper">
12788 <div class="output">
12791 <div class="output_area">
12793 <div class="prompt output_prompt">Out[24]:</div>
12798 <div class="output_latex output_subarea output_execute_result">
12799 $$\frac{1}{2} \sqrt{y - 1} - \frac{1}{2}$$
12808 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12810 <div class="inner_cell">
12811 <div class="text_cell_render border-box-sizing rendered_html">
12812 <p>Now we can take the <code>floor()</code>, add 1, and <code>lambdify()</code> the equation to get a Python function that calculates the rank directly.</p>
12817 <div class="cell border-box-sizing code_cell rendered">
12818 <div class="input">
12819 <div class="prompt input_prompt">In [25]:</div>
12820 <div class="inner_cell">
12821 <div class="input_area">
12822 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">floor</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span>
12829 <div class="output_wrapper">
12830 <div class="output">
12833 <div class="output_area">
12835 <div class="prompt output_prompt">Out[25]:</div>
12840 <div class="output_latex output_subarea output_execute_result">
12841 $$\lfloor{\frac{1}{2} \sqrt{y - 1} - \frac{1}{2}}\rfloor + 1$$
12850 <div class="cell border-box-sizing code_cell rendered">
12851 <div class="input">
12852 <div class="prompt input_prompt">In [26]:</div>
12853 <div class="inner_cell">
12854 <div class="input_area">
12855 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">F</span> <span class="o">=</span> <span class="n">lambdify</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">floor</span><span class="p">(</span><span class="n">f</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
12863 <div class="cell border-box-sizing code_cell rendered">
12864 <div class="input">
12865 <div class="prompt input_prompt">In [27]:</div>
12866 <div class="inner_cell">
12867 <div class="input_area">
12868 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">25</span><span class="p">,</span> <span class="mi">26</span><span class="p">,</span> <span class="mi">49</span><span class="p">,</span> <span class="mi">50</span><span class="p">):</span>
12869 <span class="k">print</span> <span class="n">n</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">F</span><span class="p">(</span><span class="n">n</span><span class="p">))</span>
12876 <div class="output_wrapper">
12877 <div class="output">
12880 <div class="output_area">
12882 <div class="prompt"></div>
12885 <div class="output_subarea output_stream output_stdout output_text">
12900 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12902 <div class="inner_cell">
12903 <div class="text_cell_render border-box-sizing rendered_html">
12904 <p>It's pretty fast.</p>
12909 <div class="cell border-box-sizing code_cell rendered">
12910 <div class="input">
12911 <div class="prompt input_prompt">In [28]:</div>
12912 <div class="inner_cell">
12913 <div class="input_area">
12914 <div class=" highlight hl-ipython2"><pre><span></span><span class="o">%</span><span class="k">time</span> int(F(23000000000000)) # The clear winner.
12921 <div class="output_wrapper">
12922 <div class="output">
12925 <div class="output_area">
12927 <div class="prompt"></div>
12930 <div class="output_subarea output_stream output_stdout output_text">
12931 <pre>CPU times: user 0 ns, sys: 0 ns, total: 0 ns
12932 Wall time: 11.9 µs
12937 <div class="output_area">
12939 <div class="prompt output_prompt">Out[28]:</div>
12944 <div class="output_latex output_subarea output_execute_result">
12954 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
12956 <div class="inner_cell">
12957 <div class="text_cell_render border-box-sizing rendered_html">
12958 <p>Knowing the equation we could write our own function manually, but the speed is no better.</p>
12963 <div class="cell border-box-sizing code_cell rendered">
12964 <div class="input">
12965 <div class="prompt input_prompt">In [29]:</div>
12966 <div class="inner_cell">
12967 <div class="input_area">
12968 <div class=" highlight hl-ipython2"><pre><span></span><span class="kn">from</span> <span class="nn">math</span> <span class="kn">import</span> <span class="n">floor</span> <span class="k">as</span> <span class="n">mfloor</span><span class="p">,</span> <span class="n">sqrt</span>
12970 <span class="k">def</span> <span class="nf">mrank_of</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
12971 <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">mfloor</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="mi">23000000000000</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
12979 <div class="cell border-box-sizing code_cell rendered">
12980 <div class="input">
12981 <div class="prompt input_prompt">In [30]:</div>
12982 <div class="inner_cell">
12983 <div class="input_area">
12984 <div class=" highlight hl-ipython2"><pre><span></span><span class="o">%</span><span class="k">time</span> mrank_of(23000000000000)
12991 <div class="output_wrapper">
12992 <div class="output">
12995 <div class="output_area">
12997 <div class="prompt"></div>
13000 <div class="output_subarea output_stream output_stdout output_text">
13001 <pre>CPU times: user 0 ns, sys: 0 ns, total: 0 ns
13002 Wall time: 12.9 µs
13007 <div class="output_area">
13009 <div class="prompt output_prompt">Out[30]:</div>
13014 <div class="output_latex output_subarea output_execute_result">
13024 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13026 <div class="inner_cell">
13027 <div class="text_cell_render border-box-sizing rendered_html">
13028 <h3 id="Given-$n$-and-a-rank,-compute-the-offset.">Given $n$ and a rank, compute the offset.<a class="anchor-link" href="#Given-$n$-and-a-rank,-compute-the-offset.">¶</a></h3><p>Now that we have a fast way to get the rank, we still need to use it to compute the offset into a pyramid row.</p>
13033 <div class="cell border-box-sizing code_cell rendered">
13034 <div class="input">
13035 <div class="prompt input_prompt">In [31]:</div>
13036 <div class="inner_cell">
13037 <div class="input_area">
13038 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">offset_of</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
13039 <span class="k">return</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">4</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">%</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">)</span>
13047 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13049 <div class="inner_cell">
13050 <div class="text_cell_render border-box-sizing rendered_html">
13051 <p>(Note the sneaky way the sign changes from $k(k + 1)$ to $k(k - 1)$. This is because we want to subract the $(k - 1)$th rank's total places (its own and those of lesser rank) from our $n$ of rank $k$. Substituting $k - 1$ for $k$ in $k(k + 1)$ gives $(k - 1)(k - 1 + 1)$, which of course simplifies to $k(k - 1)$.)</p>
13056 <div class="cell border-box-sizing code_cell rendered">
13057 <div class="input">
13058 <div class="prompt input_prompt">In [32]:</div>
13059 <div class="inner_cell">
13060 <div class="input_area">
13061 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">offset_of</span><span class="p">(</span><span class="mi">23000000000000</span><span class="p">,</span> <span class="mi">2397916</span><span class="p">)</span>
13068 <div class="output_wrapper">
13069 <div class="output">
13072 <div class="output_area">
13074 <div class="prompt output_prompt">Out[32]:</div>
13079 <div class="output_latex output_subarea output_execute_result">
13089 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13091 <div class="inner_cell">
13092 <div class="text_cell_render border-box-sizing rendered_html">
13093 <p>So, we can compute the rank, then the offset, then the row value.</p>
13098 <div class="cell border-box-sizing code_cell rendered">
13099 <div class="input">
13100 <div class="prompt input_prompt">In [33]:</div>
13101 <div class="inner_cell">
13102 <div class="input_area">
13103 <div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">rank_of</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
13104 <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">mfloor</span><span class="p">(</span><span class="n">sqrt</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
13107 <span class="k">def</span> <span class="nf">offset_of</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
13108 <span class="k">return</span> <span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">4</span> <span class="o">*</span> <span class="n">k</span> <span class="o">*</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">%</span> <span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">k</span><span class="p">)</span>
13111 <span class="k">def</span> <span class="nf">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
13112 <span class="k">return</span> <span class="nb">abs</span><span class="p">(</span><span class="n">i</span> <span class="o">-</span> <span class="p">(</span><span class="n">k</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span> <span class="o">+</span> <span class="n">k</span>
13115 <span class="k">def</span> <span class="nf">aoc20173</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
13116 <span class="n">k</span> <span class="o">=</span> <span class="n">rank_of</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
13117 <span class="n">i</span> <span class="o">=</span> <span class="n">offset_of</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
13118 <span class="k">return</span> <span class="n">row_value</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
13126 <div class="cell border-box-sizing code_cell rendered">
13127 <div class="input">
13128 <div class="prompt input_prompt">In [34]:</div>
13129 <div class="inner_cell">
13130 <div class="input_area">
13131 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23</span><span class="p">)</span>
13138 <div class="output_wrapper">
13139 <div class="output">
13142 <div class="output_area">
13144 <div class="prompt output_prompt">Out[34]:</div>
13149 <div class="output_latex output_subarea output_execute_result">
13159 <div class="cell border-box-sizing code_cell rendered">
13160 <div class="input">
13161 <div class="prompt input_prompt">In [35]:</div>
13162 <div class="inner_cell">
13163 <div class="input_area">
13164 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23000</span><span class="p">)</span>
13171 <div class="output_wrapper">
13172 <div class="output">
13175 <div class="output_area">
13177 <div class="prompt output_prompt">Out[35]:</div>
13182 <div class="output_latex output_subarea output_execute_result">
13192 <div class="cell border-box-sizing code_cell rendered">
13193 <div class="input">
13194 <div class="prompt input_prompt">In [36]:</div>
13195 <div class="inner_cell">
13196 <div class="input_area">
13197 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">aoc20173</span><span class="p">(</span><span class="mi">23000000000000</span><span class="p">)</span>
13204 <div class="output_wrapper">
13205 <div class="output">
13208 <div class="output_area">
13210 <div class="prompt output_prompt">Out[36]:</div>
13215 <div class="output_latex output_subarea output_execute_result">
13225 <div class="cell border-box-sizing code_cell rendered">
13226 <div class="input">
13227 <div class="prompt input_prompt">In [37]:</div>
13228 <div class="inner_cell">
13229 <div class="input_area">
13230 <div class=" highlight hl-ipython2"><pre><span></span><span class="o">%</span><span class="k">time</span> aoc20173(23000000000000000000000000) # Fast for large values.
13237 <div class="output_wrapper">
13238 <div class="output">
13241 <div class="output_area">
13243 <div class="prompt"></div>
13246 <div class="output_subarea output_stream output_stdout output_text">
13247 <pre>CPU times: user 0 ns, sys: 0 ns, total: 0 ns
13253 <div class="output_area">
13255 <div class="prompt output_prompt">Out[37]:</div>
13260 <div class="output_latex output_subarea output_execute_result">
13270 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13272 <div class="inner_cell">
13273 <div class="text_cell_render border-box-sizing rendered_html">
13274 <h1 id="A-Joy-Version">A Joy Version<a class="anchor-link" href="#A-Joy-Version">¶</a></h1><p>At this point I feel confident that I can implement a concise version of this code in Joy. ;-)</p>
13279 <div class="cell border-box-sizing code_cell rendered">
13280 <div class="input">
13281 <div class="prompt input_prompt">In [38]:</div>
13282 <div class="inner_cell">
13283 <div class="input_area">
13284 <div class=" highlight hl-ipython2"><pre><span></span><span class="kn">from</span> <span class="nn">notebook_preamble</span> <span class="kn">import</span> <span class="n">J</span><span class="p">,</span> <span class="n">V</span><span class="p">,</span> <span class="n">define</span>
13292 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13294 <div class="inner_cell">
13295 <div class="text_cell_render border-box-sizing rendered_html">
13296 <h3 id="rank_of"><code>rank_of</code><a class="anchor-link" href="#rank_of">¶</a></h3>
13297 <pre><code> n rank_of
13302 <p>The translation is straightforward.</p>
13304 <pre><code>int(floor(sqrt(n - 1) / 2 - 0.5) + 1)
13306 rank_of == -- sqrt 2 / 0.5 - floor ++</code></pre>
13311 <div class="cell border-box-sizing code_cell rendered">
13312 <div class="input">
13313 <div class="prompt input_prompt">In [39]:</div>
13314 <div class="inner_cell">
13315 <div class="input_area">
13316 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">define</span><span class="p">(</span><span class="s1">'rank_of == -- sqrt 2 / 0.5 - floor ++'</span><span class="p">)</span>
13324 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13326 <div class="inner_cell">
13327 <div class="text_cell_render border-box-sizing rendered_html">
13328 <h3 id="offset_of"><code>offset_of</code><a class="anchor-link" href="#offset_of">¶</a></h3>
13329 <pre><code> n k offset_of
13330 -------------------
13333 (n - 2 + 4 * k * (k - 1)) % (2 * k)
13336 <p>A little tricky...</p>
13338 <pre><code>n k dup 2 *
13345 n k k-1 4 * * 2 + -
13356 <pre><code>offset_of == dup 2 * [dup -- 4 * * 2 + -] dip %</code></pre>
13361 <div class="cell border-box-sizing code_cell rendered">
13362 <div class="input">
13363 <div class="prompt input_prompt">In [40]:</div>
13364 <div class="inner_cell">
13365 <div class="input_area">
13366 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">define</span><span class="p">(</span><span class="s1">'offset_of == dup 2 * [dup -- 4 * * 2 + -] dip %'</span><span class="p">)</span>
13374 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13376 <div class="inner_cell">
13377 <div class="text_cell_render border-box-sizing rendered_html">
13378 <h3 id="row_value"><code>row_value</code><a class="anchor-link" href="#row_value">¶</a></h3>
13379 <pre><code> k i row_value
13380 -------------------
13383 abs(i - (k - 1)) + k
13385 k i over -- - abs +
13390 k+|i-k-1|</code></pre>
13395 <div class="cell border-box-sizing code_cell rendered">
13396 <div class="input">
13397 <div class="prompt input_prompt">In [41]:</div>
13398 <div class="inner_cell">
13399 <div class="input_area">
13400 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">define</span><span class="p">(</span><span class="s1">'row_value == over -- - abs +'</span><span class="p">)</span>
13408 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13410 <div class="inner_cell">
13411 <div class="text_cell_render border-box-sizing rendered_html">
13412 <h3 id="aoc2017.3"><code>aoc2017.3</code><a class="anchor-link" href="#aoc2017.3">¶</a></h3>
13413 <pre><code> n aoc2017.3
13418 n k [offset_of] dupdip
13427 <div class="cell border-box-sizing code_cell rendered">
13428 <div class="input">
13429 <div class="prompt input_prompt">In [42]:</div>
13430 <div class="inner_cell">
13431 <div class="input_area">
13432 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">define</span><span class="p">(</span><span class="s1">'aoc2017.3 == dup rank_of [offset_of] dupdip swap row_value'</span><span class="p">)</span>
13440 <div class="cell border-box-sizing code_cell rendered">
13441 <div class="input">
13442 <div class="prompt input_prompt">In [43]:</div>
13443 <div class="inner_cell">
13444 <div class="input_area">
13445 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23 aoc2017.3'</span><span class="p">)</span>
13452 <div class="output_wrapper">
13453 <div class="output">
13456 <div class="output_area">
13458 <div class="prompt"></div>
13461 <div class="output_subarea output_stream output_stdout output_text">
13471 <div class="cell border-box-sizing code_cell rendered">
13472 <div class="input">
13473 <div class="prompt input_prompt">In [44]:</div>
13474 <div class="inner_cell">
13475 <div class="input_area">
13476 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">J</span><span class="p">(</span><span class="s1">'23000 aoc2017.3'</span><span class="p">)</span>
13483 <div class="output_wrapper">
13484 <div class="output">
13487 <div class="output_area">
13489 <div class="prompt"></div>
13492 <div class="output_subarea output_stream output_stdout output_text">
13502 <div class="cell border-box-sizing code_cell rendered">
13503 <div class="input">
13504 <div class="prompt input_prompt">In [45]:</div>
13505 <div class="inner_cell">
13506 <div class="input_area">
13507 <div class=" highlight hl-ipython2"><pre><span></span><span class="n">V</span><span class="p">(</span><span class="s1">'23000000000000 aoc2017.3'</span><span class="p">)</span>
13514 <div class="output_wrapper">
13515 <div class="output">
13518 <div class="output_area">
13520 <div class="prompt"></div>
13523 <div class="output_subarea output_stream output_stdout output_text">
13524 <pre> . 23000000000000 aoc2017.3
13525 23000000000000 . aoc2017.3
13526 23000000000000 . dup rank_of [offset_of] dupdip swap row_value
13527 23000000000000 23000000000000 . rank_of [offset_of] dupdip swap row_value
13528 23000000000000 23000000000000 . -- sqrt 2 / 0.5 - floor ++ [offset_of] dupdip swap row_value
13529 23000000000000 22999999999999 . sqrt 2 / 0.5 - floor ++ [offset_of] dupdip swap row_value
13530 23000000000000 4795831.523312615 . 2 / 0.5 - floor ++ [offset_of] dupdip swap row_value
13531 23000000000000 4795831.523312615 2 . / 0.5 - floor ++ [offset_of] dupdip swap row_value
13532 23000000000000 2397915.7616563076 . 0.5 - floor ++ [offset_of] dupdip swap row_value
13533 23000000000000 2397915.7616563076 0.5 . - floor ++ [offset_of] dupdip swap row_value
13534 23000000000000 2397915.2616563076 . floor ++ [offset_of] dupdip swap row_value
13535 23000000000000 2397915 . ++ [offset_of] dupdip swap row_value
13536 23000000000000 2397916 . [offset_of] dupdip swap row_value
13537 23000000000000 2397916 [offset_of] . dupdip swap row_value
13538 23000000000000 2397916 . offset_of 2397916 swap row_value
13539 23000000000000 2397916 . dup 2 * [dup -- 4 * * 2 + -] dip % 2397916 swap row_value
13540 23000000000000 2397916 2397916 . 2 * [dup -- 4 * * 2 + -] dip % 2397916 swap row_value
13541 23000000000000 2397916 2397916 2 . * [dup -- 4 * * 2 + -] dip % 2397916 swap row_value
13542 23000000000000 2397916 4795832 . [dup -- 4 * * 2 + -] dip % 2397916 swap row_value
13543 23000000000000 2397916 4795832 [dup -- 4 * * 2 + -] . dip % 2397916 swap row_value
13544 23000000000000 2397916 . dup -- 4 * * 2 + - 4795832 % 2397916 swap row_value
13545 23000000000000 2397916 2397916 . -- 4 * * 2 + - 4795832 % 2397916 swap row_value
13546 23000000000000 2397916 2397915 . 4 * * 2 + - 4795832 % 2397916 swap row_value
13547 23000000000000 2397916 2397915 4 . * * 2 + - 4795832 % 2397916 swap row_value
13548 23000000000000 2397916 9591660 . * 2 + - 4795832 % 2397916 swap row_value
13549 23000000000000 22999994980560 . 2 + - 4795832 % 2397916 swap row_value
13550 23000000000000 22999994980560 2 . + - 4795832 % 2397916 swap row_value
13551 23000000000000 22999994980562 . - 4795832 % 2397916 swap row_value
13552 5019438 . 4795832 % 2397916 swap row_value
13553 5019438 4795832 . % 2397916 swap row_value
13554 223606 . 2397916 swap row_value
13555 223606 2397916 . swap row_value
13556 2397916 223606 . row_value
13557 2397916 223606 . over -- - abs +
13558 2397916 223606 2397916 . -- - abs +
13559 2397916 223606 2397915 . - abs +
13560 2397916 -2174309 . abs +
13561 2397916 2174309 . +
13571 <div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
13573 <div class="inner_cell">
13574 <div class="text_cell_render border-box-sizing rendered_html">
13576 <pre><code> rank_of == -- sqrt 2 / 0.5 - floor ++
13577 offset_of == dup 2 * [dup -- 4 * * 2 + -] dip %
13578 row_value == over -- - abs +
13580 aoc2017.3 == dup rank_of [offset_of] dupdip swap row_value</code></pre>